// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: caffe.proto
// Protobuf C++ Version: 7.36.1

#include "caffe.pb.h"

#include <algorithm>
#include <type_traits>
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/generated_message_tctable_impl.h"
#include "google/protobuf/internal_visibility.h"
#include "google/protobuf/extension_set.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/wire_format_lite.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/reflection_ops.h"
#include "google/protobuf/wire_format.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::google::protobuf;
namespace _pbi = ::google::protobuf::internal;
namespace _fl = ::google::protobuf::internal::field_layout;
#ifdef PROTOBUF_MESSAGE_GLOBALS
namespace {
PROTOBUF_CONSTINIT ::google::protobuf::internal::ReflectionData
    file_reflection_data[] = {
        // ::caffe::BlobShape
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::BlobProto
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::BlobProtoVector
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::Datum
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::FillerParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::NetParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SolverParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SolverState
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::NetState
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::NetStateRule
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ParamSpec
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::LayerParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::TransformationParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ResizeParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::LossParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::AccuracyParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ArgMaxParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ConcatParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::BatchNormParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::BiasParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::BNParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ContrastiveLossParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ConvolutionParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::CropParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::DataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::NonMaximumSuppressionParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SaveOutputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::DetectionOutputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::YoloDetectionOutputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::Yolov3DetectionOutputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::DropoutParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::DummyDataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::EltwiseParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ELUParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::EmbedParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ExpParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::FlattenParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::HDF5DataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::HDF5OutputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::HingeLossParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ImageDataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::InfogainLossParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::InnerProductParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::InputParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::InterpParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::LogParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::LRNParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::MemoryDataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::MVNParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::NormalizeParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PermuteParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PoolingParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PowerParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PriorBoxParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PSROIPoolingParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PythonParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::RecurrentParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ReductionParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ReLUParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ReorgParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ReshapeParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ROIAlignParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ROIPoolingParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ScaleParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ShuffleChannelParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SigmoidParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SmoothL1LossParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SliceParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SoftmaxParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::TanHParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::TileParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::ThresholdParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::WindowDataParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::SPPParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::V1LayerParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::V0LayerParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
        // ::caffe::PReLUParameter
        {&::_pbi::kDescriptorMethods, &::descriptor_table_caffe_2eproto, /* tracker*/ nullptr,},
};
}  // namespace
#endif
namespace caffe {
class Yolov3DetectionOutputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<Yolov3DetectionOutputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_._has_bits_);
};

constexpr Yolov3DetectionOutputParameter::ParseTableT_ Yolov3DetectionOutputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_._has_bits_),
      0, // no _extensions_
      8, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967040,  // skipmap
      offsetof(ParseTableT_, field_entries),
      8,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::Yolov3DetectionOutputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated uint32 mask = 8;
      {::_pbi::TcParser::FastV32R1,
       {64, 2, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.mask_)}},
      // optional uint32 num_classes = 1 [default = 20];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Yolov3DetectionOutputParameter, _impl_.num_classes_), 3>(),
       {8, 3, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.num_classes_)}},
      // optional uint32 num_box = 2 [default = 3];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Yolov3DetectionOutputParameter, _impl_.num_box_), 4>(),
       {16, 4, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.num_box_)}},
      // optional float confidence_threshold = 3 [default = 0.01];
      {::_pbi::TcParser::FastF32S1,
       {29, 5, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.confidence_threshold_)}},
      // optional float nms_threshold = 4 [default = 0.45];
      {::_pbi::TcParser::FastF32S1,
       {37, 6, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.nms_threshold_)}},
      // repeated float biases = 5;
      {::_pbi::TcParser::FastF32R1,
       {45, 0, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.biases_)}},
      // repeated uint32 anchors_scale = 6;
      {::_pbi::TcParser::FastV32R1,
       {48, 1, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.anchors_scale_)}},
      // optional uint32 mask_group_num = 7 [default = 2];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Yolov3DetectionOutputParameter, _impl_.mask_group_num_), 7>(),
       {56, 7, 0,
        PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.mask_group_num_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_classes = 1 [default = 20];
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.num_classes_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 num_box = 2 [default = 3];
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.num_box_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float confidence_threshold = 3 [default = 0.01];
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.confidence_threshold_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float nms_threshold = 4 [default = 0.45];
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.nms_threshold_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // repeated float biases = 5;
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.biases_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated uint32 anchors_scale = 6;
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.anchors_scale_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // optional uint32 mask_group_num = 7 [default = 2];
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.mask_group_num_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // repeated uint32 mask = 8;
      {PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.mask_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr Yolov3DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : biases_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.biases_)>()
         }
        ,
        anchors_scale_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.anchors_scale_)>()
         }
        ,
        mask_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.mask_)>()
         }
        ,
        num_classes_{20u},
        num_box_{3u},
        confidence_threshold_{0.01f},
        nms_threshold_{0.45f},
        mask_group_num_{2u} {}

template <typename>
constexpr Yolov3DetectionOutputParameter::Yolov3DetectionOutputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL Yolov3DetectionOutputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) Yolov3DetectionOutputParameter(arena);
}
constexpr auto Yolov3DetectionOutputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(Yolov3DetectionOutputParameter), alignof(Yolov3DetectionOutputParameter));
}
constexpr auto Yolov3DetectionOutputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &Yolov3DetectionOutputParameter::MergeImpl,
          Super_::GetNewImpl<Yolov3DetectionOutputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &Yolov3DetectionOutputParameter::SharedDtor,
          Super_::GetClearImpl<Yolov3DetectionOutputParameter>(), &Yolov3DetectionOutputParameter::ByteSizeLong,
              &Yolov3DetectionOutputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[29],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct Yolov3DetectionOutputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr Yolov3DetectionOutputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 Yolov3DetectionOutputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(Yolov3DetectionOutputParameter::InternalGenerateClassData_(
            _default, &Yolov3DetectionOutputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<Yolov3DetectionOutputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~Yolov3DetectionOutputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) Yolov3DetectionOutputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<Yolov3DetectionOutputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST Yolov3DetectionOutputParameterGlobalsTypeInternal Yolov3DetectionOutputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* Yolov3DetectionOutputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return Yolov3DetectionOutputParameter_globals_.GetClassData();
#else
  return Yolov3DetectionOutputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class YoloDetectionOutputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<YoloDetectionOutputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_._has_bits_);
};

constexpr YoloDetectionOutputParameter::ParseTableT_ YoloDetectionOutputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_._has_bits_),
      0, // no _extensions_
      8, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967040,  // skipmap
      offsetof(ParseTableT_, field_entries),
      8,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::YoloDetectionOutputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional string label_map_file = 8;
      {::_pbi::TcParser::FastBS1,
       {66, 1, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.label_map_file_)}},
      // optional uint32 side = 1 [default = 13];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(YoloDetectionOutputParameter, _impl_.side_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.side_)}},
      // optional uint32 num_classes = 2 [default = 20];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(YoloDetectionOutputParameter, _impl_.num_classes_), 3>(),
       {16, 3, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.num_classes_)}},
      // optional uint32 num_box = 3 [default = 5];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(YoloDetectionOutputParameter, _impl_.num_box_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.num_box_)}},
      // optional uint32 coords = 4 [default = 4];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(YoloDetectionOutputParameter, _impl_.coords_), 5>(),
       {32, 5, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.coords_)}},
      // optional float confidence_threshold = 5 [default = 0.01];
      {::_pbi::TcParser::FastF32S1,
       {45, 6, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.confidence_threshold_)}},
      // optional float nms_threshold = 6 [default = 0.45];
      {::_pbi::TcParser::FastF32S1,
       {53, 7, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.nms_threshold_)}},
      // repeated float biases = 7;
      {::_pbi::TcParser::FastF32R1,
       {61, 0, 0,
        PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.biases_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 side = 1 [default = 13];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.side_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 num_classes = 2 [default = 20];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.num_classes_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 num_box = 3 [default = 5];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.num_box_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 coords = 4 [default = 4];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.coords_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float confidence_threshold = 5 [default = 0.01];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.confidence_threshold_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float nms_threshold = 6 [default = 0.45];
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.nms_threshold_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // repeated float biases = 7;
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.biases_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional string label_map_file = 8;
      {PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.label_map_file_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr YoloDetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : biases_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::YoloDetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.biases_)>()
         }
        ,
        label_map_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        side_{13u},
        num_classes_{20u},
        num_box_{5u},
        coords_{4u},
        confidence_threshold_{0.01f},
        nms_threshold_{0.45f} {}

template <typename>
constexpr YoloDetectionOutputParameter::YoloDetectionOutputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL YoloDetectionOutputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) YoloDetectionOutputParameter(arena);
}
constexpr auto YoloDetectionOutputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(YoloDetectionOutputParameter), alignof(YoloDetectionOutputParameter));
}
constexpr auto YoloDetectionOutputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &YoloDetectionOutputParameter::MergeImpl,
          Super_::GetNewImpl<YoloDetectionOutputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &YoloDetectionOutputParameter::SharedDtor,
          Super_::GetClearImpl<YoloDetectionOutputParameter>(), &YoloDetectionOutputParameter::ByteSizeLong,
              &YoloDetectionOutputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[28],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct YoloDetectionOutputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr YoloDetectionOutputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 YoloDetectionOutputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(YoloDetectionOutputParameter::InternalGenerateClassData_(
            _default, &YoloDetectionOutputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<YoloDetectionOutputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~YoloDetectionOutputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) YoloDetectionOutputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<YoloDetectionOutputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST YoloDetectionOutputParameterGlobalsTypeInternal YoloDetectionOutputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* YoloDetectionOutputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return YoloDetectionOutputParameter_globals_.GetClassData();
#else
  return YoloDetectionOutputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class WindowDataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<WindowDataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_._has_bits_);
};

constexpr WindowDataParameter::ParseTableT_ WindowDataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_._has_bits_),
      0, // no _extensions_
      13, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294959104,  // skipmap
      offsetof(ParseTableT_, field_entries),
      13,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::WindowDataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string source = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.source_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 9, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.scale_)}},
      // optional string mean_file = 3;
      {::_pbi::TcParser::FastBS1,
       {26, 1, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.mean_file_)}},
      // optional uint32 batch_size = 4;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowDataParameter, _impl_.batch_size_), 4>(),
       {32, 4, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.batch_size_)}},
      // optional uint32 crop_size = 5 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowDataParameter, _impl_.crop_size_), 5>(),
       {40, 5, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.crop_size_)}},
      // optional bool mirror = 6 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(WindowDataParameter, _impl_.mirror_), 6>(),
       {48, 6, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.mirror_)}},
      // optional float fg_threshold = 7 [default = 0.5];
      {::_pbi::TcParser::FastF32S1,
       {61, 10, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.fg_threshold_)}},
      // optional float bg_threshold = 8 [default = 0.5];
      {::_pbi::TcParser::FastF32S1,
       {69, 11, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.bg_threshold_)}},
      // optional float fg_fraction = 9 [default = 0.25];
      {::_pbi::TcParser::FastF32S1,
       {77, 12, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.fg_fraction_)}},
      // optional uint32 context_pad = 10 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WindowDataParameter, _impl_.context_pad_), 8>(),
       {80, 8, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.context_pad_)}},
      // optional string crop_mode = 11 [default = "warp"];
      {::_pbi::TcParser::FastBS1,
       {90, 2, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.crop_mode_)}},
      // optional bool cache_images = 12 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(WindowDataParameter, _impl_.cache_images_), 7>(),
       {96, 7, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.cache_images_)}},
      // optional string root_folder = 13 [default = ""];
      {::_pbi::TcParser::FastBS1,
       {106, 3, 0,
        PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.root_folder_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string source = 1;
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.scale_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string mean_file = 3;
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.mean_file_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 batch_size = 4;
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.batch_size_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 crop_size = 5 [default = 0];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.crop_size_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool mirror = 6 [default = false];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.mirror_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float fg_threshold = 7 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.fg_threshold_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float bg_threshold = 8 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.bg_threshold_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float fg_fraction = 9 [default = 0.25];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.fg_fraction_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional uint32 context_pad = 10 [default = 0];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.context_pad_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional string crop_mode = 11 [default = "warp"];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.crop_mode_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional bool cache_images = 12 [default = false];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.cache_images_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional string root_folder = 13 [default = ""];
      {PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.root_folder_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr WindowDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        mean_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        crop_mode_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        root_folder_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        batch_size_{0u},
        crop_size_{0u},
        mirror_{false},
        cache_images_{false},
        context_pad_{0u},
        scale_{1},
        fg_threshold_{0.5f},
        bg_threshold_{0.5f},
        fg_fraction_{0.25f} {}

template <typename>
constexpr WindowDataParameter::WindowDataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL WindowDataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) WindowDataParameter(arena);
}
constexpr auto WindowDataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(WindowDataParameter), alignof(WindowDataParameter));
}
constexpr auto WindowDataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &WindowDataParameter::MergeImpl,
          Super_::GetNewImpl<WindowDataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &WindowDataParameter::SharedDtor,
          Super_::GetClearImpl<WindowDataParameter>(), &WindowDataParameter::ByteSizeLong,
              &WindowDataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[72],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct WindowDataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr WindowDataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 WindowDataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(WindowDataParameter::InternalGenerateClassData_(
            _default, &WindowDataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<WindowDataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~WindowDataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) WindowDataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<WindowDataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(WindowDataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST WindowDataParameterGlobalsTypeInternal WindowDataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* WindowDataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return WindowDataParameter_globals_.GetClassData();
#else
  return WindowDataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class TransformationParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<TransformationParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_._has_bits_);
};

constexpr TransformationParameter::ParseTableT_ TransformationParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_._has_bits_),
      0, // no _extensions_
      7, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967168,  // skipmap
      offsetof(ParseTableT_, field_entries),
      7,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::TransformationParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float scale = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 6, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.scale_)}},
      // optional bool mirror = 2 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(TransformationParameter, _impl_.mirror_), 3>(),
       {16, 3, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mirror_)}},
      // optional uint32 crop_size = 3 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TransformationParameter, _impl_.crop_size_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.crop_size_)}},
      // optional string mean_file = 4;
      {::_pbi::TcParser::FastBS1,
       {34, 1, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mean_file_)}},
      // repeated float mean_value = 5;
      {::_pbi::TcParser::FastF32R1,
       {45, 0, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mean_value_)}},
      // optional bool force_color = 6 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(TransformationParameter, _impl_.force_color_), 4>(),
       {48, 4, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.force_color_)}},
      // optional bool force_gray = 7 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(TransformationParameter, _impl_.force_gray_), 5>(),
       {56, 5, 0,
        PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.force_gray_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float scale = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.scale_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional bool mirror = 2 [default = false];
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mirror_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 crop_size = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.crop_size_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional string mean_file = 4;
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mean_file_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // repeated float mean_value = 5;
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.mean_value_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional bool force_color = 6 [default = false];
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.force_color_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional bool force_gray = 7 [default = false];
      {PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.force_gray_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr TransformationParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : mean_value_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::TransformationParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mean_value_)>()
         }
        ,
        mean_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        crop_size_{0u},
        mirror_{false},
        force_color_{false},
        force_gray_{false},
        scale_{1} {}

template <typename>
constexpr TransformationParameter::TransformationParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL TransformationParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) TransformationParameter(arena);
}
constexpr auto TransformationParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(TransformationParameter), alignof(TransformationParameter));
}
constexpr auto TransformationParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &TransformationParameter::MergeImpl,
          Super_::GetNewImpl<TransformationParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &TransformationParameter::SharedDtor,
          Super_::GetClearImpl<TransformationParameter>(), &TransformationParameter::ByteSizeLong,
              &TransformationParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[12],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct TransformationParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr TransformationParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 TransformationParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(TransformationParameter::InternalGenerateClassData_(
            _default, &TransformationParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<TransformationParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~TransformationParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) TransformationParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<TransformationParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(TransformationParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST TransformationParameterGlobalsTypeInternal TransformationParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* TransformationParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return TransformationParameter_globals_.GetClassData();
#else
  return TransformationParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class TileParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<TileParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(TileParameter, _impl_._has_bits_);
};

constexpr TileParameter::ParseTableT_ TileParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(TileParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::TileParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional int32 tiles = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TileParameter, _impl_.tiles_), 0>(),
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.tiles_)}},
      // optional int32 axis = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TileParameter, _impl_.axis_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.axis_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 axis = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 tiles = 2;
      {PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.tiles_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr TileParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : tiles_{0},
        axis_{1} {}

template <typename>
constexpr TileParameter::TileParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL TileParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) TileParameter(arena);
}
constexpr auto TileParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(TileParameter), alignof(TileParameter));
}
constexpr auto TileParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &TileParameter::MergeImpl,
          Super_::GetNewImpl<TileParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &TileParameter::SharedDtor,
          Super_::GetClearImpl<TileParameter>(), &TileParameter::ByteSizeLong,
              &TileParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(TileParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[70],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct TileParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr TileParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 TileParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(TileParameter::InternalGenerateClassData_(
            _default, &TileParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<TileParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~TileParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) TileParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<TileParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(TileParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST TileParameterGlobalsTypeInternal TileParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* TileParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return TileParameter_globals_.GetClassData();
#else
  return TileParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ThresholdParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ThresholdParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ThresholdParameter, _impl_._has_bits_);
};

constexpr ThresholdParameter::ParseTableT_ ThresholdParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ThresholdParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ThresholdParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional float threshold = 1 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(ThresholdParameter, _impl_.threshold_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float threshold = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ThresholdParameter, _impl_.threshold_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ThresholdParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : threshold_{0} {}

template <typename>
constexpr ThresholdParameter::ThresholdParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ThresholdParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ThresholdParameter(arena);
}
constexpr auto ThresholdParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(ThresholdParameter), alignof(ThresholdParameter));
}
constexpr auto ThresholdParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ThresholdParameter::MergeImpl,
          Super_::GetNewImpl<ThresholdParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ThresholdParameter::SharedDtor,
          Super_::GetClearImpl<ThresholdParameter>(), &ThresholdParameter::ByteSizeLong,
              &ThresholdParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ThresholdParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[71],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ThresholdParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ThresholdParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ThresholdParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ThresholdParameter::InternalGenerateClassData_(
            _default, &ThresholdParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ThresholdParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ThresholdParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ThresholdParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ThresholdParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ThresholdParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ThresholdParameterGlobalsTypeInternal ThresholdParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ThresholdParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ThresholdParameter_globals_.GetClassData();
#else
  return ThresholdParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class TanHParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<TanHParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(TanHParameter, _impl_._has_bits_);
};

constexpr TanHParameter::ParseTableT_ TanHParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(TanHParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::TanHParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.TanHParameter.Engine engine = 1 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {8, 0, 2,
        PROTOBUF_FIELD_OFFSET(TanHParameter, _impl_.engine_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.TanHParameter.Engine engine = 1 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(TanHParameter, _impl_.engine_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr TanHParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : engine_{static_cast< ::caffe::TanHParameter_Engine >(0)} {}

template <typename>
constexpr TanHParameter::TanHParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL TanHParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) TanHParameter(arena);
}
constexpr auto TanHParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(TanHParameter), alignof(TanHParameter));
}
constexpr auto TanHParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &TanHParameter::MergeImpl,
          Super_::GetNewImpl<TanHParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &TanHParameter::SharedDtor,
          Super_::GetClearImpl<TanHParameter>(), &TanHParameter::ByteSizeLong,
              &TanHParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(TanHParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[69],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct TanHParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr TanHParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 TanHParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(TanHParameter::InternalGenerateClassData_(
            _default, &TanHParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<TanHParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~TanHParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) TanHParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<TanHParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(TanHParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST TanHParameterGlobalsTypeInternal TanHParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* TanHParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return TanHParameter_globals_.GetClassData();
#else
  return TanHParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SoftmaxParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SoftmaxParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_._has_bits_);
};

constexpr SoftmaxParameter::ParseTableT_ SoftmaxParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SoftmaxParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional int32 axis = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SoftmaxParameter, _impl_.axis_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.axis_)}},
      // optional .caffe.SoftmaxParameter.Engine engine = 1 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {8, 0, 2,
        PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.engine_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.SoftmaxParameter.Engine engine = 1 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.engine_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 axis = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr SoftmaxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : engine_{static_cast< ::caffe::SoftmaxParameter_Engine >(0)},
        axis_{1} {}

template <typename>
constexpr SoftmaxParameter::SoftmaxParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SoftmaxParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SoftmaxParameter(arena);
}
constexpr auto SoftmaxParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SoftmaxParameter), alignof(SoftmaxParameter));
}
constexpr auto SoftmaxParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SoftmaxParameter::MergeImpl,
          Super_::GetNewImpl<SoftmaxParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SoftmaxParameter::SharedDtor,
          Super_::GetClearImpl<SoftmaxParameter>(), &SoftmaxParameter::ByteSizeLong,
              &SoftmaxParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[68],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SoftmaxParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SoftmaxParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SoftmaxParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SoftmaxParameter::InternalGenerateClassData_(
            _default, &SoftmaxParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SoftmaxParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SoftmaxParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SoftmaxParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SoftmaxParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SoftmaxParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SoftmaxParameterGlobalsTypeInternal SoftmaxParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SoftmaxParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SoftmaxParameter_globals_.GetClassData();
#else
  return SoftmaxParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SmoothL1LossParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SmoothL1LossParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SmoothL1LossParameter, _impl_._has_bits_);
};

constexpr SmoothL1LossParameter::ParseTableT_ SmoothL1LossParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SmoothL1LossParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SmoothL1LossParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional float sigma = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(SmoothL1LossParameter, _impl_.sigma_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float sigma = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SmoothL1LossParameter, _impl_.sigma_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr SmoothL1LossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : sigma_{1} {}

template <typename>
constexpr SmoothL1LossParameter::SmoothL1LossParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SmoothL1LossParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SmoothL1LossParameter(arena);
}
constexpr auto SmoothL1LossParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SmoothL1LossParameter), alignof(SmoothL1LossParameter));
}
constexpr auto SmoothL1LossParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SmoothL1LossParameter::MergeImpl,
          Super_::GetNewImpl<SmoothL1LossParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SmoothL1LossParameter::SharedDtor,
          Super_::GetClearImpl<SmoothL1LossParameter>(), &SmoothL1LossParameter::ByteSizeLong,
              &SmoothL1LossParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SmoothL1LossParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[66],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SmoothL1LossParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SmoothL1LossParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SmoothL1LossParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SmoothL1LossParameter::InternalGenerateClassData_(
            _default, &SmoothL1LossParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SmoothL1LossParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SmoothL1LossParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SmoothL1LossParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SmoothL1LossParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SmoothL1LossParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SmoothL1LossParameterGlobalsTypeInternal SmoothL1LossParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SmoothL1LossParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SmoothL1LossParameter_globals_.GetClassData();
#else
  return SmoothL1LossParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SliceParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SliceParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_._has_bits_);
};

constexpr SliceParameter::ParseTableT_ SliceParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SliceParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 slice_dim = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SliceParameter, _impl_.slice_dim_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.slice_dim_)}},
      // repeated uint32 slice_point = 2;
      {::_pbi::TcParser::FastV32R1,
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.slice_point_)}},
      // optional int32 axis = 3 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SliceParameter, _impl_.axis_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.axis_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 slice_dim = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.slice_dim_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // repeated uint32 slice_point = 2;
      {PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.slice_point_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // optional int32 axis = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.axis_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr SliceParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : slice_point_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SliceParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.slice_point_)>()
         }
        ,
        slice_dim_{1u},
        axis_{1} {}

template <typename>
constexpr SliceParameter::SliceParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SliceParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SliceParameter(arena);
}
constexpr auto SliceParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SliceParameter), alignof(SliceParameter));
}
constexpr auto SliceParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SliceParameter::MergeImpl,
          Super_::GetNewImpl<SliceParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SliceParameter::SharedDtor,
          Super_::GetClearImpl<SliceParameter>(), &SliceParameter::ByteSizeLong,
              &SliceParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[67],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SliceParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SliceParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SliceParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SliceParameter::InternalGenerateClassData_(
            _default, &SliceParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SliceParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SliceParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SliceParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SliceParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SliceParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SliceParameterGlobalsTypeInternal SliceParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SliceParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SliceParameter_globals_.GetClassData();
#else
  return SliceParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SigmoidParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SigmoidParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SigmoidParameter, _impl_._has_bits_);
};

constexpr SigmoidParameter::ParseTableT_ SigmoidParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SigmoidParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SigmoidParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.SigmoidParameter.Engine engine = 1 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {8, 0, 2,
        PROTOBUF_FIELD_OFFSET(SigmoidParameter, _impl_.engine_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.SigmoidParameter.Engine engine = 1 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(SigmoidParameter, _impl_.engine_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr SigmoidParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : engine_{static_cast< ::caffe::SigmoidParameter_Engine >(0)} {}

template <typename>
constexpr SigmoidParameter::SigmoidParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SigmoidParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SigmoidParameter(arena);
}
constexpr auto SigmoidParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(SigmoidParameter), alignof(SigmoidParameter));
}
constexpr auto SigmoidParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SigmoidParameter::MergeImpl,
          Super_::GetNewImpl<SigmoidParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SigmoidParameter::SharedDtor,
          Super_::GetClearImpl<SigmoidParameter>(), &SigmoidParameter::ByteSizeLong,
              &SigmoidParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SigmoidParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[65],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SigmoidParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SigmoidParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SigmoidParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SigmoidParameter::InternalGenerateClassData_(
            _default, &SigmoidParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SigmoidParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SigmoidParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SigmoidParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SigmoidParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SigmoidParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SigmoidParameterGlobalsTypeInternal SigmoidParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SigmoidParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SigmoidParameter_globals_.GetClassData();
#else
  return SigmoidParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ShuffleChannelParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ShuffleChannelParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ShuffleChannelParameter, _impl_._has_bits_);
};

constexpr ShuffleChannelParameter::ParseTableT_ ShuffleChannelParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ShuffleChannelParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ShuffleChannelParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional uint32 group = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ShuffleChannelParameter, _impl_.group_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ShuffleChannelParameter, _impl_.group_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 group = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ShuffleChannelParameter, _impl_.group_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ShuffleChannelParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : group_{1u} {}

template <typename>
constexpr ShuffleChannelParameter::ShuffleChannelParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ShuffleChannelParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ShuffleChannelParameter(arena);
}
constexpr auto ShuffleChannelParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ShuffleChannelParameter), alignof(ShuffleChannelParameter));
}
constexpr auto ShuffleChannelParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ShuffleChannelParameter::MergeImpl,
          Super_::GetNewImpl<ShuffleChannelParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ShuffleChannelParameter::SharedDtor,
          Super_::GetClearImpl<ShuffleChannelParameter>(), &ShuffleChannelParameter::ByteSizeLong,
              &ShuffleChannelParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ShuffleChannelParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[64],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ShuffleChannelParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ShuffleChannelParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ShuffleChannelParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ShuffleChannelParameter::InternalGenerateClassData_(
            _default, &ShuffleChannelParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ShuffleChannelParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ShuffleChannelParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ShuffleChannelParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ShuffleChannelParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ShuffleChannelParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ShuffleChannelParameterGlobalsTypeInternal ShuffleChannelParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ShuffleChannelParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ShuffleChannelParameter_globals_.GetClassData();
#else
  return ShuffleChannelParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SPPParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SPPParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_._has_bits_);
};

constexpr SPPParameter::ParseTableT_ SPPParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_._has_bits_),
      0, // no _extensions_
      6, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967260,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SPPParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.SPPParameter.PoolMethod pool = 2 [default = MAX];
      {::_pbi::TcParser::FastEr0S1,
       {16, 1, 2,
        PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.pool_)}},
      // optional uint32 pyramid_height = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SPPParameter, _impl_.pyramid_height_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.pyramid_height_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 pyramid_height = 1;
      {PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.pyramid_height_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.SPPParameter.PoolMethod pool = 2 [default = MAX];
      {PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.pool_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional .caffe.SPPParameter.Engine engine = 6 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.engine_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 2},
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr SPPParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pyramid_height_{0u},
        pool_{static_cast< ::caffe::SPPParameter_PoolMethod >(0)},
        engine_{static_cast< ::caffe::SPPParameter_Engine >(0)} {}

template <typename>
constexpr SPPParameter::SPPParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SPPParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SPPParameter(arena);
}
constexpr auto SPPParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(SPPParameter), alignof(SPPParameter));
}
constexpr auto SPPParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SPPParameter::MergeImpl,
          Super_::GetNewImpl<SPPParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SPPParameter::SharedDtor,
          Super_::GetClearImpl<SPPParameter>(), &SPPParameter::ByteSizeLong,
              &SPPParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[73],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SPPParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SPPParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SPPParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SPPParameter::InternalGenerateClassData_(
            _default, &SPPParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SPPParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SPPParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SPPParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SPPParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SPPParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SPPParameterGlobalsTypeInternal SPPParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SPPParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SPPParameter_globals_.GetClassData();
#else
  return SPPParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ResizeParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ResizeParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_._has_bits_);
};

constexpr ResizeParameter::ParseTableT_ ResizeParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_._has_bits_),
      0, // no _extensions_
      9, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294966784,  // skipmap
      offsetof(ParseTableT_, field_entries),
      9,  // num_field_entries
      3,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ResizeParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float prob = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 6, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.prob_)}},
      // optional .caffe.ResizeParameter.Resize_mode resize_mode = 2 [default = WARP];
      {::_pbi::TcParser::FastEr1S1,
       {16, 7, 3,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.resize_mode_)}},
      // optional uint32 height = 3 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ResizeParameter, _impl_.height_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.height_)}},
      // optional uint32 width = 4 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ResizeParameter, _impl_.width_), 3>(),
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.width_)}},
      // optional .caffe.ResizeParameter.Pad_mode pad_mode = 5 [default = CONSTANT];
      {::_pbi::TcParser::FastEr1S1,
       {40, 8, 3,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.pad_mode_)}},
      // repeated float pad_value = 6;
      {::_pbi::TcParser::FastF32R1,
       {53, 0, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.pad_value_)}},
      // repeated .caffe.ResizeParameter.Interp_mode interp_mode = 7;
      {::_pbi::TcParser::FastEr1R1,
       {56, 1, 5,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.interp_mode_)}},
      // optional uint32 height_scale = 8 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ResizeParameter, _impl_.height_scale_), 4>(),
       {64, 4, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.height_scale_)}},
      // optional uint32 width_scale = 9 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ResizeParameter, _impl_.width_scale_), 5>(),
       {72, 5, 0,
        PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.width_scale_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float prob = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.prob_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional .caffe.ResizeParameter.Resize_mode resize_mode = 2 [default = WARP];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.resize_mode_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional uint32 height = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.height_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 width = 4 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.width_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.ResizeParameter.Pad_mode pad_mode = 5 [default = CONSTANT];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.pad_mode_), _Internal::kHasBitsOffset + 8, 1, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // repeated float pad_value = 6;
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.pad_value_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated .caffe.ResizeParameter.Interp_mode interp_mode = 7;
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.interp_mode_), _Internal::kHasBitsOffset + 1, 2, (0 | ::_fl::kFcRepeated | ::_fl::kEnumRange)},
      // optional uint32 height_scale = 8 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.height_scale_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 width_scale = 9 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.width_scale_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
    }},
    {{
        {1, 3},
        {1, 3},
        {1, 5},
    }},
    {{
    }},
  };
}


inline constexpr ResizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pad_value_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ResizeParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.pad_value_)>()
         }
        ,
        interp_mode_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ResizeParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.interp_mode_)>()
         }
        ,
        height_{0u},
        width_{0u},
        height_scale_{0u},
        width_scale_{0u},
        prob_{1},
        resize_mode_{static_cast< ::caffe::ResizeParameter_Resize_mode >(1)},
        pad_mode_{static_cast< ::caffe::ResizeParameter_Pad_mode >(1)} {}

template <typename>
constexpr ResizeParameter::ResizeParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ResizeParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ResizeParameter(arena);
}
constexpr auto ResizeParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ResizeParameter), alignof(ResizeParameter));
}
constexpr auto ResizeParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ResizeParameter::MergeImpl,
          Super_::GetNewImpl<ResizeParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ResizeParameter::SharedDtor,
          Super_::GetClearImpl<ResizeParameter>(), &ResizeParameter::ByteSizeLong,
              &ResizeParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[13],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ResizeParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ResizeParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ResizeParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ResizeParameter::InternalGenerateClassData_(
            _default, &ResizeParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ResizeParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ResizeParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ResizeParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ResizeParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ResizeParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ResizeParameterGlobalsTypeInternal ResizeParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ResizeParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ResizeParameter_globals_.GetClassData();
#else
  return ResizeParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ReorgParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ReorgParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_._has_bits_);
};

constexpr ReorgParameter::ParseTableT_ ReorgParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ReorgParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional bool reverse = 2 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ReorgParameter, _impl_.reverse_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.reverse_)}},
      // optional uint32 stride = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ReorgParameter, _impl_.stride_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.stride_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 stride = 1;
      {PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.stride_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool reverse = 2 [default = false];
      {PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.reverse_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ReorgParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : stride_{0u},
        reverse_{false} {}

template <typename>
constexpr ReorgParameter::ReorgParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ReorgParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ReorgParameter(arena);
}
constexpr auto ReorgParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(ReorgParameter), alignof(ReorgParameter));
}
constexpr auto ReorgParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ReorgParameter::MergeImpl,
          Super_::GetNewImpl<ReorgParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ReorgParameter::SharedDtor,
          Super_::GetClearImpl<ReorgParameter>(), &ReorgParameter::ByteSizeLong,
              &ReorgParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[59],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ReorgParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ReorgParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ReorgParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ReorgParameter::InternalGenerateClassData_(
            _default, &ReorgParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ReorgParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ReorgParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ReorgParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ReorgParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ReorgParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ReorgParameterGlobalsTypeInternal ReorgParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ReorgParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ReorgParameter_globals_.GetClassData();
#else
  return ReorgParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ReductionParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ReductionParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_._has_bits_);
};

constexpr ReductionParameter::ParseTableT_ ReductionParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ReductionParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.ReductionParameter.ReductionOp operation = 1 [default = SUM];
      {::_pbi::TcParser::FastEr1S1,
       {8, 1, 4,
        PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.operation_)}},
      // optional int32 axis = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ReductionParameter, _impl_.axis_), 0>(),
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.axis_)}},
      // optional float coeff = 3 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.coeff_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.ReductionParameter.ReductionOp operation = 1 [default = SUM];
      {PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.operation_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 axis = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.axis_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional float coeff = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.coeff_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    {{
        {1, 4},
    }},
    {{
    }},
  };
}


inline constexpr ReductionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : axis_{0},
        operation_{static_cast< ::caffe::ReductionParameter_ReductionOp >(1)},
        coeff_{1} {}

template <typename>
constexpr ReductionParameter::ReductionParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ReductionParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ReductionParameter(arena);
}
constexpr auto ReductionParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ReductionParameter), alignof(ReductionParameter));
}
constexpr auto ReductionParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ReductionParameter::MergeImpl,
          Super_::GetNewImpl<ReductionParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ReductionParameter::SharedDtor,
          Super_::GetClearImpl<ReductionParameter>(), &ReductionParameter::ByteSizeLong,
              &ReductionParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[57],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ReductionParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ReductionParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ReductionParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ReductionParameter::InternalGenerateClassData_(
            _default, &ReductionParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ReductionParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ReductionParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ReductionParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ReductionParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ReductionParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ReductionParameterGlobalsTypeInternal ReductionParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ReductionParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ReductionParameter_globals_.GetClassData();
#else
  return ReductionParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ReLUParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ReLUParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_._has_bits_);
};

constexpr ReLUParameter::ParseTableT_ ReLUParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ReLUParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.ReLUParameter.Engine engine = 2 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {16, 1, 2,
        PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.engine_)}},
      // optional float negative_slope = 1 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.negative_slope_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float negative_slope = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.negative_slope_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional .caffe.ReLUParameter.Engine engine = 2 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.engine_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr ReLUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : negative_slope_{0},
        engine_{static_cast< ::caffe::ReLUParameter_Engine >(0)} {}

template <typename>
constexpr ReLUParameter::ReLUParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ReLUParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ReLUParameter(arena);
}
constexpr auto ReLUParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(ReLUParameter), alignof(ReLUParameter));
}
constexpr auto ReLUParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ReLUParameter::MergeImpl,
          Super_::GetNewImpl<ReLUParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ReLUParameter::SharedDtor,
          Super_::GetClearImpl<ReLUParameter>(), &ReLUParameter::ByteSizeLong,
              &ReLUParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[58],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ReLUParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ReLUParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ReLUParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ReLUParameter::InternalGenerateClassData_(
            _default, &ReLUParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ReLUParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ReLUParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ReLUParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ReLUParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ReLUParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ReLUParameterGlobalsTypeInternal ReLUParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ReLUParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ReLUParameter_globals_.GetClassData();
#else
  return ReLUParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ROIPoolingParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ROIPoolingParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_._has_bits_);
};

constexpr ROIPoolingParameter::ParseTableT_ ROIPoolingParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ROIPoolingParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 pooled_h = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ROIPoolingParameter, _impl_.pooled_h_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.pooled_h_)}},
      // optional uint32 pooled_w = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ROIPoolingParameter, _impl_.pooled_w_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.pooled_w_)}},
      // optional float spatial_scale = 3 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.spatial_scale_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 pooled_h = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.pooled_h_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pooled_w = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.pooled_w_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float spatial_scale = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.spatial_scale_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ROIPoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pooled_h_{0u},
        pooled_w_{0u},
        spatial_scale_{1} {}

template <typename>
constexpr ROIPoolingParameter::ROIPoolingParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ROIPoolingParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ROIPoolingParameter(arena);
}
constexpr auto ROIPoolingParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ROIPoolingParameter), alignof(ROIPoolingParameter));
}
constexpr auto ROIPoolingParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ROIPoolingParameter::MergeImpl,
          Super_::GetNewImpl<ROIPoolingParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ROIPoolingParameter::SharedDtor,
          Super_::GetClearImpl<ROIPoolingParameter>(), &ROIPoolingParameter::ByteSizeLong,
              &ROIPoolingParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[62],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ROIPoolingParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ROIPoolingParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ROIPoolingParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ROIPoolingParameter::InternalGenerateClassData_(
            _default, &ROIPoolingParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ROIPoolingParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ROIPoolingParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ROIPoolingParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ROIPoolingParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ROIPoolingParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ROIPoolingParameterGlobalsTypeInternal ROIPoolingParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ROIPoolingParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ROIPoolingParameter_globals_.GetClassData();
#else
  return ROIPoolingParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ROIAlignParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ROIAlignParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_._has_bits_);
};

constexpr ROIAlignParameter::ParseTableT_ ROIAlignParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ROIAlignParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 pooled_h = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ROIAlignParameter, _impl_.pooled_h_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.pooled_h_)}},
      // optional uint32 pooled_w = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ROIAlignParameter, _impl_.pooled_w_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.pooled_w_)}},
      // optional float spatial_scale = 3 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.spatial_scale_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 pooled_h = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.pooled_h_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pooled_w = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.pooled_w_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float spatial_scale = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.spatial_scale_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ROIAlignParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pooled_h_{0u},
        pooled_w_{0u},
        spatial_scale_{1} {}

template <typename>
constexpr ROIAlignParameter::ROIAlignParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ROIAlignParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ROIAlignParameter(arena);
}
constexpr auto ROIAlignParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ROIAlignParameter), alignof(ROIAlignParameter));
}
constexpr auto ROIAlignParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ROIAlignParameter::MergeImpl,
          Super_::GetNewImpl<ROIAlignParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ROIAlignParameter::SharedDtor,
          Super_::GetClearImpl<ROIAlignParameter>(), &ROIAlignParameter::ByteSizeLong,
              &ROIAlignParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[61],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ROIAlignParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ROIAlignParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ROIAlignParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ROIAlignParameter::InternalGenerateClassData_(
            _default, &ROIAlignParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ROIAlignParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ROIAlignParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ROIAlignParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ROIAlignParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ROIAlignParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ROIAlignParameterGlobalsTypeInternal ROIAlignParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ROIAlignParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ROIAlignParameter_globals_.GetClassData();
#else
  return ROIAlignParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PythonParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PythonParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_._has_bits_);
};

constexpr PythonParameter::ParseTableT_ PythonParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_._has_bits_),
      0, // no _extensions_
      4, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967280,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PythonParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional bool share_in_parallel = 4 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PythonParameter, _impl_.share_in_parallel_), 3>(),
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.share_in_parallel_)}},
      // optional string module = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.module_)}},
      // optional string layer = 2;
      {::_pbi::TcParser::FastBS1,
       {18, 1, 0,
        PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.layer_)}},
      // optional string param_str = 3 [default = ""];
      {::_pbi::TcParser::FastBS1,
       {26, 2, 0,
        PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.param_str_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string module = 1;
      {PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.module_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string layer = 2;
      {PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.layer_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string param_str = 3 [default = ""];
      {PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.param_str_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional bool share_in_parallel = 4 [default = false];
      {PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_.share_in_parallel_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr PythonParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : module_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        layer_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        param_str_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        share_in_parallel_{false} {}

template <typename>
constexpr PythonParameter::PythonParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PythonParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PythonParameter(arena);
}
constexpr auto PythonParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(PythonParameter), alignof(PythonParameter));
}
constexpr auto PythonParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PythonParameter::MergeImpl,
          Super_::GetNewImpl<PythonParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PythonParameter::SharedDtor,
          Super_::GetClearImpl<PythonParameter>(), &PythonParameter::ByteSizeLong,
              &PythonParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PythonParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[55],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PythonParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PythonParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PythonParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PythonParameter::InternalGenerateClassData_(
            _default, &PythonParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PythonParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PythonParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PythonParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PythonParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PythonParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PythonParameterGlobalsTypeInternal PythonParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PythonParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PythonParameter_globals_.GetClassData();
#else
  return PythonParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PriorBoxParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PriorBoxParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_._has_bits_);
};

constexpr PriorBoxParameter::ParseTableT_ PriorBoxParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_._has_bits_),
      0, // no _extensions_
      13, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294959104,  // skipmap
      offsetof(ParseTableT_, field_entries),
      13,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PriorBoxParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // repeated float min_size = 1;
      {::_pbi::TcParser::FastF32R1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.min_size_)}},
      // repeated float max_size = 2;
      {::_pbi::TcParser::FastF32R1,
       {21, 1, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.max_size_)}},
      // repeated float aspect_ratio = 3;
      {::_pbi::TcParser::FastF32R1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.aspect_ratio_)}},
      // optional bool flip = 4 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PriorBoxParameter, _impl_.flip_), 11>(),
       {32, 11, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.flip_)}},
      // optional bool clip = 5 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PriorBoxParameter, _impl_.clip_), 4>(),
       {40, 4, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.clip_)}},
      // repeated float variance = 6;
      {::_pbi::TcParser::FastF32R1,
       {53, 3, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.variance_)}},
      // optional uint32 img_size = 7;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PriorBoxParameter, _impl_.img_size_), 5>(),
       {56, 5, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_size_)}},
      // optional uint32 img_h = 8;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PriorBoxParameter, _impl_.img_h_), 6>(),
       {64, 6, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_h_)}},
      // optional uint32 img_w = 9;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PriorBoxParameter, _impl_.img_w_), 7>(),
       {72, 7, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_w_)}},
      // optional float step = 10;
      {::_pbi::TcParser::FastF32S1,
       {85, 8, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_)}},
      // optional float step_h = 11;
      {::_pbi::TcParser::FastF32S1,
       {93, 9, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_h_)}},
      // optional float step_w = 12;
      {::_pbi::TcParser::FastF32S1,
       {101, 10, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_w_)}},
      // optional float offset = 13 [default = 0.5];
      {::_pbi::TcParser::FastF32S1,
       {109, 12, 0,
        PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.offset_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated float min_size = 1;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.min_size_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated float max_size = 2;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.max_size_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated float aspect_ratio = 3;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.aspect_ratio_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional bool flip = 4 [default = true];
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.flip_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional bool clip = 5 [default = false];
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.clip_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // repeated float variance = 6;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.variance_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional uint32 img_size = 7;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_size_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 img_h = 8;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_h_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 img_w = 9;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.img_w_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float step = 10;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float step_h = 11;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_h_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float step_w = 12;
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.step_w_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float offset = 13 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.offset_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr PriorBoxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : min_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.min_size_)>()
         }
        ,
        max_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.max_size_)>()
         }
        ,
        aspect_ratio_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.aspect_ratio_)>()
         }
        ,
        variance_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.variance_)>()
         }
        ,
        clip_{false},
        img_size_{0u},
        img_h_{0u},
        img_w_{0u},
        step_{0},
        step_h_{0},
        step_w_{0},
        flip_{true},
        offset_{0.5f} {}

template <typename>
constexpr PriorBoxParameter::PriorBoxParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PriorBoxParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PriorBoxParameter(arena);
}
constexpr auto PriorBoxParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(PriorBoxParameter), alignof(PriorBoxParameter));
}
constexpr auto PriorBoxParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PriorBoxParameter::MergeImpl,
          Super_::GetNewImpl<PriorBoxParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PriorBoxParameter::SharedDtor,
          Super_::GetClearImpl<PriorBoxParameter>(), &PriorBoxParameter::ByteSizeLong,
              &PriorBoxParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[53],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PriorBoxParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PriorBoxParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PriorBoxParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PriorBoxParameter::InternalGenerateClassData_(
            _default, &PriorBoxParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PriorBoxParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PriorBoxParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PriorBoxParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PriorBoxParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PriorBoxParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PriorBoxParameterGlobalsTypeInternal PriorBoxParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PriorBoxParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PriorBoxParameter_globals_.GetClassData();
#else
  return PriorBoxParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PowerParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PowerParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_._has_bits_);
};

constexpr PowerParameter::ParseTableT_ PowerParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PowerParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float power = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 1, 0,
        PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.power_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 2, 0,
        PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.scale_)}},
      // optional float shift = 3 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {29, 0, 0,
        PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.shift_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float power = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.power_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.scale_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float shift = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.shift_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr PowerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : shift_{0},
        power_{1},
        scale_{1} {}

template <typename>
constexpr PowerParameter::PowerParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PowerParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PowerParameter(arena);
}
constexpr auto PowerParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(PowerParameter), alignof(PowerParameter));
}
constexpr auto PowerParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PowerParameter::MergeImpl,
          Super_::GetNewImpl<PowerParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PowerParameter::SharedDtor,
          Super_::GetClearImpl<PowerParameter>(), &PowerParameter::ByteSizeLong,
              &PowerParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[52],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PowerParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PowerParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PowerParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PowerParameter::InternalGenerateClassData_(
            _default, &PowerParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PowerParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PowerParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PowerParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PowerParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PowerParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PowerParameterGlobalsTypeInternal PowerParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PowerParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PowerParameter_globals_.GetClassData();
#else
  return PowerParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PoolingParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PoolingParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_._has_bits_);
};

constexpr PoolingParameter::ParseTableT_ PoolingParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_._has_bits_),
      0, // no _extensions_
      12, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294963200,  // skipmap
      offsetof(ParseTableT_, field_entries),
      12,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PoolingParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.PoolingParameter.PoolMethod pool = 1 [default = MAX];
      {::_pbi::TcParser::FastEr0S1,
       {8, 0, 2,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pool_)}},
      // optional uint32 kernel_size = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.kernel_size_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_size_)}},
      // optional uint32 stride = 3 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.stride_), 11>(),
       {24, 11, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_)}},
      // optional uint32 pad = 4 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.pad_), 2>(),
       {32, 2, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_)}},
      // optional uint32 kernel_h = 5;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.kernel_h_), 3>(),
       {40, 3, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_h_)}},
      // optional uint32 kernel_w = 6;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.kernel_w_), 4>(),
       {48, 4, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_w_)}},
      // optional uint32 stride_h = 7;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.stride_h_), 5>(),
       {56, 5, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_h_)}},
      // optional uint32 stride_w = 8;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.stride_w_), 6>(),
       {64, 6, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_w_)}},
      // optional uint32 pad_h = 9 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.pad_h_), 7>(),
       {72, 7, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_h_)}},
      // optional uint32 pad_w = 10 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PoolingParameter, _impl_.pad_w_), 8>(),
       {80, 8, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_w_)}},
      // optional .caffe.PoolingParameter.Engine engine = 11 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {88, 9, 2,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.engine_)}},
      // optional bool global_pooling = 12 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PoolingParameter, _impl_.global_pooling_), 10>(),
       {96, 10, 0,
        PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.global_pooling_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.PoolingParameter.PoolMethod pool = 1 [default = MAX];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pool_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional uint32 kernel_size = 2;
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_size_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pad = 4 [default = 0];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 kernel_h = 5;
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_h_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 kernel_w = 6;
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.kernel_w_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride_h = 7;
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_h_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride_w = 8;
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_w_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pad_h = 9 [default = 0];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_h_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pad_w = 10 [default = 0];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pad_w_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.PoolingParameter.Engine engine = 11 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.engine_), _Internal::kHasBitsOffset + 9, 1, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional bool global_pooling = 12 [default = false];
      {PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.global_pooling_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    {{
        {0, 2},
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr PoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pool_{static_cast< ::caffe::PoolingParameter_PoolMethod >(0)},
        kernel_size_{0u},
        pad_{0u},
        kernel_h_{0u},
        kernel_w_{0u},
        stride_h_{0u},
        stride_w_{0u},
        pad_h_{0u},
        pad_w_{0u},
        engine_{static_cast< ::caffe::PoolingParameter_Engine >(0)},
        global_pooling_{false},
        stride_{1u} {}

template <typename>
constexpr PoolingParameter::PoolingParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PoolingParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PoolingParameter(arena);
}
constexpr auto PoolingParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(PoolingParameter), alignof(PoolingParameter));
}
constexpr auto PoolingParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PoolingParameter::MergeImpl,
          Super_::GetNewImpl<PoolingParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PoolingParameter::SharedDtor,
          Super_::GetClearImpl<PoolingParameter>(), &PoolingParameter::ByteSizeLong,
              &PoolingParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[51],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PoolingParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PoolingParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PoolingParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PoolingParameter::InternalGenerateClassData_(
            _default, &PoolingParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PoolingParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PoolingParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PoolingParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PoolingParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PoolingParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PoolingParameterGlobalsTypeInternal PoolingParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PoolingParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PoolingParameter_globals_.GetClassData();
#else
  return PoolingParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PermuteParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PermuteParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PermuteParameter, _impl_._has_bits_);
};

constexpr PermuteParameter::ParseTableT_ PermuteParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PermuteParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PermuteParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated uint32 order = 1;
      {::_pbi::TcParser::FastV32R1,
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(PermuteParameter, _impl_.order_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated uint32 order = 1;
      {PROTOBUF_FIELD_OFFSET(PermuteParameter, _impl_.order_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr PermuteParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : order_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PermuteParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PermuteParameter, _impl_.order_)>()
         }
     {}

template <typename>
constexpr PermuteParameter::PermuteParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PermuteParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PermuteParameter(arena);
}
constexpr auto PermuteParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(PermuteParameter), alignof(PermuteParameter));
}
constexpr auto PermuteParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PermuteParameter::MergeImpl,
          Super_::GetNewImpl<PermuteParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PermuteParameter::SharedDtor,
          Super_::GetClearImpl<PermuteParameter>(), &PermuteParameter::ByteSizeLong,
              &PermuteParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PermuteParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[50],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PermuteParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PermuteParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PermuteParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PermuteParameter::InternalGenerateClassData_(
            _default, &PermuteParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PermuteParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PermuteParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PermuteParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PermuteParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PermuteParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PermuteParameterGlobalsTypeInternal PermuteParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PermuteParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PermuteParameter_globals_.GetClassData();
#else
  return PermuteParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ParamSpec::_Internal {
 public:
  using HasBits = decltype(::std::declval<ParamSpec>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._has_bits_);
};

constexpr ParamSpec::ParseTableT_ ParamSpec::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._has_bits_),
      0, // no _extensions_
      4, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967280,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ParamSpec>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional float decay_mult = 4 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {37, 3, 0,
        PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.decay_mult_)}},
      // optional string name = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.name_)}},
      // optional .caffe.ParamSpec.DimCheckMode share_mode = 2;
      {::_pbi::TcParser::FastEr0S1,
       {16, 1, 1,
        PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.share_mode_)}},
      // optional float lr_mult = 3 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.lr_mult_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string name = 1;
      {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional .caffe.ParamSpec.DimCheckMode share_mode = 2;
      {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.share_mode_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional float lr_mult = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.lr_mult_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float decay_mult = 4 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.decay_mult_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    {{
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr ParamSpec::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        share_mode_{static_cast< ::caffe::ParamSpec_DimCheckMode >(0)},
        lr_mult_{1},
        decay_mult_{1} {}

template <typename>
constexpr ParamSpec::ParamSpec(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ParamSpec::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ParamSpec(arena);
}
constexpr auto ParamSpec::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ParamSpec), alignof(ParamSpec));
}
constexpr auto ParamSpec::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ParamSpec::MergeImpl,
          Super_::GetNewImpl<ParamSpec>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ParamSpec::SharedDtor,
          Super_::GetClearImpl<ParamSpec>(), &ParamSpec::ByteSizeLong,
              &ParamSpec::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[10],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ParamSpecGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ParamSpecGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ParamSpec_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ParamSpec::InternalGenerateClassData_(
            _default, &ParamSpec_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ParamSpec>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ParamSpecGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ParamSpec _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ParamSpec>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ParamSpecGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ParamSpecGlobalsTypeInternal ParamSpec_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ParamSpec_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ParamSpec_globals_.GetClassData();
#else
  return ParamSpec_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PSROIPoolingParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PSROIPoolingParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_._has_bits_);
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000007) ^ 0x00000007) != 0;
  }
};

constexpr PSROIPoolingParameter::ParseTableT_ PSROIPoolingParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PSROIPoolingParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // required float spatial_scale = 1;
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.spatial_scale_)}},
      // required int32 output_dim = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PSROIPoolingParameter, _impl_.output_dim_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.output_dim_)}},
      // required int32 group_size = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PSROIPoolingParameter, _impl_.group_size_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.group_size_)}},
    }}, {{
      65535, 65535
    }}, {{
      // required float spatial_scale = 1;
      {PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.spatial_scale_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // required int32 output_dim = 2;
      {PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.output_dim_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // required int32 group_size = 3;
      {PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.group_size_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr PSROIPoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : spatial_scale_{0},
        output_dim_{0},
        group_size_{0} {}

template <typename>
constexpr PSROIPoolingParameter::PSROIPoolingParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PSROIPoolingParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PSROIPoolingParameter(arena);
}
constexpr auto PSROIPoolingParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(PSROIPoolingParameter), alignof(PSROIPoolingParameter));
}
constexpr auto PSROIPoolingParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          PSROIPoolingParameter::IsInitializedImpl,
          &PSROIPoolingParameter::MergeImpl,
          Super_::GetNewImpl<PSROIPoolingParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PSROIPoolingParameter::SharedDtor,
          Super_::GetClearImpl<PSROIPoolingParameter>(), &PSROIPoolingParameter::ByteSizeLong,
              &PSROIPoolingParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[54],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PSROIPoolingParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PSROIPoolingParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PSROIPoolingParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PSROIPoolingParameter::InternalGenerateClassData_(
            _default, &PSROIPoolingParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PSROIPoolingParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PSROIPoolingParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PSROIPoolingParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PSROIPoolingParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PSROIPoolingParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PSROIPoolingParameterGlobalsTypeInternal PSROIPoolingParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PSROIPoolingParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PSROIPoolingParameter_globals_.GetClassData();
#else
  return PSROIPoolingParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class NonMaximumSuppressionParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<NonMaximumSuppressionParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_._has_bits_);
};

constexpr NonMaximumSuppressionParameter::ParseTableT_ NonMaximumSuppressionParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::NonMaximumSuppressionParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float nms_threshold = 1 [default = 0.3];
      {::_pbi::TcParser::FastF32S1,
       {13, 1, 0,
        PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.nms_threshold_)}},
      // optional int32 top_k = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NonMaximumSuppressionParameter, _impl_.top_k_), 0>(),
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.top_k_)}},
      // optional float eta = 3 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.eta_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float nms_threshold = 1 [default = 0.3];
      {PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.nms_threshold_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional int32 top_k = 2;
      {PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.top_k_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional float eta = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.eta_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr NonMaximumSuppressionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : top_k_{0},
        nms_threshold_{0.3f},
        eta_{1} {}

template <typename>
constexpr NonMaximumSuppressionParameter::NonMaximumSuppressionParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL NonMaximumSuppressionParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) NonMaximumSuppressionParameter(arena);
}
constexpr auto NonMaximumSuppressionParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(NonMaximumSuppressionParameter), alignof(NonMaximumSuppressionParameter));
}
constexpr auto NonMaximumSuppressionParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &NonMaximumSuppressionParameter::MergeImpl,
          Super_::GetNewImpl<NonMaximumSuppressionParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &NonMaximumSuppressionParameter::SharedDtor,
          Super_::GetClearImpl<NonMaximumSuppressionParameter>(), &NonMaximumSuppressionParameter::ByteSizeLong,
              &NonMaximumSuppressionParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[25],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct NonMaximumSuppressionParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr NonMaximumSuppressionParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 NonMaximumSuppressionParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(NonMaximumSuppressionParameter::InternalGenerateClassData_(
            _default, &NonMaximumSuppressionParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<NonMaximumSuppressionParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~NonMaximumSuppressionParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) NonMaximumSuppressionParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<NonMaximumSuppressionParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST NonMaximumSuppressionParameterGlobalsTypeInternal NonMaximumSuppressionParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* NonMaximumSuppressionParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return NonMaximumSuppressionParameter_globals_.GetClassData();
#else
  return NonMaximumSuppressionParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class NetStateRule::_Internal {
 public:
  using HasBits = decltype(::std::declval<NetStateRule>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_._has_bits_);
};

constexpr NetStateRule::ParseTableT_ NetStateRule::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_._has_bits_),
      0, // no _extensions_
      5, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967264,  // skipmap
      offsetof(ParseTableT_, field_entries),
      5,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::NetStateRule>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.Phase phase = 1;
      {::_pbi::TcParser::FastEr0S1,
       {8, 2, 1,
        PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.phase_)}},
      // optional int32 min_level = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NetStateRule, _impl_.min_level_), 3>(),
       {16, 3, 0,
        PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.min_level_)}},
      // optional int32 max_level = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NetStateRule, _impl_.max_level_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.max_level_)}},
      // repeated string stage = 4;
      {::_pbi::TcParser::FastBR1,
       {34, 0, 0,
        PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.stage_)}},
      // repeated string not_stage = 5;
      {::_pbi::TcParser::FastBR1,
       {42, 1, 0,
        PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.not_stage_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.Phase phase = 1;
      {PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.phase_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 min_level = 2;
      {PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.min_level_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 max_level = 3;
      {PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.max_level_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated string stage = 4;
      {PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.stage_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated string not_stage = 5;
      {PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.not_stage_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
    }},
    {{
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr NetStateRule::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetStateRule,
            PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.stage_)>()
         }
        ,
        not_stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetStateRule,
            PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.not_stage_)>()
         }
        ,
        phase_{static_cast< ::caffe::Phase >(0)},
        min_level_{0},
        max_level_{0} {}

template <typename>
constexpr NetStateRule::NetStateRule(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL NetStateRule::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) NetStateRule(arena);
}
constexpr auto NetStateRule::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(NetStateRule), alignof(NetStateRule));
}
constexpr auto NetStateRule::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &NetStateRule::MergeImpl,
          Super_::GetNewImpl<NetStateRule>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &NetStateRule::SharedDtor,
          Super_::GetClearImpl<NetStateRule>(), &NetStateRule::ByteSizeLong,
              &NetStateRule::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[9],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct NetStateRuleGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr NetStateRuleGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 NetStateRule_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(NetStateRule::InternalGenerateClassData_(
            _default, &NetStateRule_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<NetStateRule>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~NetStateRuleGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) NetStateRule _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<NetStateRule>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(NetStateRuleGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST NetStateRuleGlobalsTypeInternal NetStateRule_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* NetStateRule_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return NetStateRule_globals_.GetClassData();
#else
  return NetStateRule_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class NetState::_Internal {
 public:
  using HasBits = decltype(::std::declval<NetState>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(NetState, _impl_._has_bits_);
};

constexpr NetState::ParseTableT_ NetState::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(NetState, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::NetState>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.Phase phase = 1 [default = TEST];
      {::_pbi::TcParser::FastEr0S1,
       {8, 2, 1,
        PROTOBUF_FIELD_OFFSET(NetState, _impl_.phase_)}},
      // optional int32 level = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(NetState, _impl_.level_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(NetState, _impl_.level_)}},
      // repeated string stage = 3;
      {::_pbi::TcParser::FastBR1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(NetState, _impl_.stage_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.Phase phase = 1 [default = TEST];
      {PROTOBUF_FIELD_OFFSET(NetState, _impl_.phase_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 level = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(NetState, _impl_.level_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated string stage = 3;
      {PROTOBUF_FIELD_OFFSET(NetState, _impl_.stage_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
    }},
    {{
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr NetState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetState,
            PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.stage_)>()
         }
        ,
        level_{0},
        phase_{static_cast< ::caffe::Phase >(1)} {}

template <typename>
constexpr NetState::NetState(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL NetState::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) NetState(arena);
}
constexpr auto NetState::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(NetState), alignof(NetState));
}
constexpr auto NetState::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &NetState::MergeImpl,
          Super_::GetNewImpl<NetState>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &NetState::SharedDtor,
          Super_::GetClearImpl<NetState>(), &NetState::ByteSizeLong,
              &NetState::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(NetState, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[8],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct NetStateGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr NetStateGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 NetState_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(NetState::InternalGenerateClassData_(
            _default, &NetState_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<NetState>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~NetStateGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) NetState _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<NetState>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(NetStateGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST NetStateGlobalsTypeInternal NetState_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* NetState_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return NetState_globals_.GetClassData();
#else
  return NetState_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class MemoryDataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<MemoryDataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_._has_bits_);
};

constexpr MemoryDataParameter::ParseTableT_ MemoryDataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_._has_bits_),
      0, // no _extensions_
      4, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967280,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::MemoryDataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional uint32 width = 4;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MemoryDataParameter, _impl_.width_), 3>(),
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.width_)}},
      // optional uint32 batch_size = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MemoryDataParameter, _impl_.batch_size_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.batch_size_)}},
      // optional uint32 channels = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MemoryDataParameter, _impl_.channels_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.channels_)}},
      // optional uint32 height = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(MemoryDataParameter, _impl_.height_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.height_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 batch_size = 1;
      {PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.batch_size_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 channels = 2;
      {PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.channels_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 height = 3;
      {PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.height_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 width = 4;
      {PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.width_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr MemoryDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : batch_size_{0u},
        channels_{0u},
        height_{0u},
        width_{0u} {}

template <typename>
constexpr MemoryDataParameter::MemoryDataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL MemoryDataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) MemoryDataParameter(arena);
}
constexpr auto MemoryDataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(MemoryDataParameter), alignof(MemoryDataParameter));
}
constexpr auto MemoryDataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &MemoryDataParameter::MergeImpl,
          Super_::GetNewImpl<MemoryDataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &MemoryDataParameter::SharedDtor,
          Super_::GetClearImpl<MemoryDataParameter>(), &MemoryDataParameter::ByteSizeLong,
              &MemoryDataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[47],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct MemoryDataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr MemoryDataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 MemoryDataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(MemoryDataParameter::InternalGenerateClassData_(
            _default, &MemoryDataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<MemoryDataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~MemoryDataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) MemoryDataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<MemoryDataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(MemoryDataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST MemoryDataParameterGlobalsTypeInternal MemoryDataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* MemoryDataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return MemoryDataParameter_globals_.GetClassData();
#else
  return MemoryDataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class MVNParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<MVNParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_._has_bits_);
};

constexpr MVNParameter::ParseTableT_ MVNParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::MVNParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional bool normalize_variance = 1 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(MVNParameter, _impl_.normalize_variance_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.normalize_variance_)}},
      // optional bool across_channels = 2 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(MVNParameter, _impl_.across_channels_), 0>(),
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.across_channels_)}},
      // optional float eps = 3 [default = 1e-09];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.eps_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional bool normalize_variance = 1 [default = true];
      {PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.normalize_variance_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional bool across_channels = 2 [default = false];
      {PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.across_channels_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float eps = 3 [default = 1e-09];
      {PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.eps_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr MVNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : across_channels_{false},
        normalize_variance_{true},
        eps_{1e-09f} {}

template <typename>
constexpr MVNParameter::MVNParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL MVNParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) MVNParameter(arena);
}
constexpr auto MVNParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MVNParameter), alignof(MVNParameter));
}
constexpr auto MVNParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &MVNParameter::MergeImpl,
          Super_::GetNewImpl<MVNParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &MVNParameter::SharedDtor,
          Super_::GetClearImpl<MVNParameter>(), &MVNParameter::ByteSizeLong,
              &MVNParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[48],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct MVNParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr MVNParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 MVNParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(MVNParameter::InternalGenerateClassData_(
            _default, &MVNParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<MVNParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~MVNParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) MVNParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<MVNParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(MVNParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST MVNParameterGlobalsTypeInternal MVNParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* MVNParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return MVNParameter_globals_.GetClassData();
#else
  return MVNParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class LossParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<LossParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(LossParameter, _impl_._has_bits_);
};

constexpr LossParameter::ParseTableT_ LossParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(LossParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::LossParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 ignore_label = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(LossParameter, _impl_.ignore_label_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.ignore_label_)}},
      // optional bool normalize = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(LossParameter, _impl_.normalize_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.normalize_)}},
      // optional .caffe.LossParameter.NormalizationMode normalization = 3 [default = VALID];
      {::_pbi::TcParser::FastEr0S1,
       {24, 2, 3,
        PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.normalization_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 ignore_label = 1;
      {PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.ignore_label_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool normalize = 2;
      {PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.normalize_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.LossParameter.NormalizationMode normalization = 3 [default = VALID];
      {PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.normalization_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 3},
    }},
    {{
    }},
  };
}


inline constexpr LossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : ignore_label_{0},
        normalize_{false},
        normalization_{static_cast< ::caffe::LossParameter_NormalizationMode >(1)} {}

template <typename>
constexpr LossParameter::LossParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL LossParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) LossParameter(arena);
}
constexpr auto LossParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(LossParameter), alignof(LossParameter));
}
constexpr auto LossParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &LossParameter::MergeImpl,
          Super_::GetNewImpl<LossParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &LossParameter::SharedDtor,
          Super_::GetClearImpl<LossParameter>(), &LossParameter::ByteSizeLong,
              &LossParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(LossParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[14],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct LossParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr LossParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 LossParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(LossParameter::InternalGenerateClassData_(
            _default, &LossParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<LossParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~LossParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) LossParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<LossParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(LossParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST LossParameterGlobalsTypeInternal LossParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* LossParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return LossParameter_globals_.GetClassData();
#else
  return LossParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class LogParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<LogParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(LogParameter, _impl_._has_bits_);
};

constexpr LogParameter::ParseTableT_ LogParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(LogParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::LogParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float base = 1 [default = -1];
      {::_pbi::TcParser::FastF32S1,
       {13, 1, 0,
        PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.base_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 2, 0,
        PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.scale_)}},
      // optional float shift = 3 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {29, 0, 0,
        PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.shift_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float base = 1 [default = -1];
      {PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.base_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.scale_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float shift = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.shift_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr LogParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : shift_{0},
        base_{-1},
        scale_{1} {}

template <typename>
constexpr LogParameter::LogParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL LogParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) LogParameter(arena);
}
constexpr auto LogParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(LogParameter), alignof(LogParameter));
}
constexpr auto LogParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &LogParameter::MergeImpl,
          Super_::GetNewImpl<LogParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &LogParameter::SharedDtor,
          Super_::GetClearImpl<LogParameter>(), &LogParameter::ByteSizeLong,
              &LogParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(LogParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[45],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct LogParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr LogParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 LogParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(LogParameter::InternalGenerateClassData_(
            _default, &LogParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<LogParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~LogParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) LogParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<LogParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(LogParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST LogParameterGlobalsTypeInternal LogParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* LogParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return LogParameter_globals_.GetClassData();
#else
  return LogParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class LRNParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<LRNParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_._has_bits_);
};

constexpr LRNParameter::ParseTableT_ LRNParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_._has_bits_),
      0, // no _extensions_
      6, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967232,  // skipmap
      offsetof(ParseTableT_, field_entries),
      6,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::LRNParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 local_size = 1 [default = 5];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(LRNParameter, _impl_.local_size_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.local_size_)}},
      // optional float alpha = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 3, 0,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.alpha_)}},
      // optional float beta = 3 [default = 0.75];
      {::_pbi::TcParser::FastF32S1,
       {29, 4, 0,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.beta_)}},
      // optional .caffe.LRNParameter.NormRegion norm_region = 4 [default = ACROSS_CHANNELS];
      {::_pbi::TcParser::FastEr0S1,
       {32, 0, 1,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.norm_region_)}},
      // optional float k = 5 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {45, 5, 0,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.k_)}},
      // optional .caffe.LRNParameter.Engine engine = 6 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {48, 1, 2,
        PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.engine_)}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 local_size = 1 [default = 5];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.local_size_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float alpha = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.alpha_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float beta = 3 [default = 0.75];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.beta_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional .caffe.LRNParameter.NormRegion norm_region = 4 [default = ACROSS_CHANNELS];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.norm_region_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional float k = 5 [default = 1];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.k_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional .caffe.LRNParameter.Engine engine = 6 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.engine_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 1},
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr LRNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : norm_region_{static_cast< ::caffe::LRNParameter_NormRegion >(0)},
        engine_{static_cast< ::caffe::LRNParameter_Engine >(0)},
        local_size_{5u},
        alpha_{1},
        beta_{0.75f},
        k_{1} {}

template <typename>
constexpr LRNParameter::LRNParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL LRNParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) LRNParameter(arena);
}
constexpr auto LRNParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(LRNParameter), alignof(LRNParameter));
}
constexpr auto LRNParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &LRNParameter::MergeImpl,
          Super_::GetNewImpl<LRNParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &LRNParameter::SharedDtor,
          Super_::GetClearImpl<LRNParameter>(), &LRNParameter::ByteSizeLong,
              &LRNParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[46],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct LRNParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr LRNParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 LRNParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(LRNParameter::InternalGenerateClassData_(
            _default, &LRNParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<LRNParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~LRNParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) LRNParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<LRNParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(LRNParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST LRNParameterGlobalsTypeInternal LRNParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* LRNParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return LRNParameter_globals_.GetClassData();
#else
  return LRNParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class InterpParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<InterpParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_._has_bits_);
};

constexpr InterpParameter::ParseTableT_ InterpParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_._has_bits_),
      0, // no _extensions_
      6, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967232,  // skipmap
      offsetof(ParseTableT_, field_entries),
      6,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::InterpParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 height = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.height_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.height_)}},
      // optional int32 width = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.width_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.width_)}},
      // optional int32 zoom_factor = 3 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.zoom_factor_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.zoom_factor_)}},
      // optional int32 shrink_factor = 4 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.shrink_factor_), 5>(),
       {32, 5, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.shrink_factor_)}},
      // optional int32 pad_beg = 5 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.pad_beg_), 2>(),
       {40, 2, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.pad_beg_)}},
      // optional int32 pad_end = 6 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InterpParameter, _impl_.pad_end_), 3>(),
       {48, 3, 0,
        PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.pad_end_)}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 height = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.height_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 width = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.width_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 zoom_factor = 3 [default = 1];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.zoom_factor_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 shrink_factor = 4 [default = 1];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.shrink_factor_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 pad_beg = 5 [default = 0];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.pad_beg_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 pad_end = 6 [default = 0];
      {PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.pad_end_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr InterpParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : height_{0},
        width_{0},
        pad_beg_{0},
        pad_end_{0},
        zoom_factor_{1},
        shrink_factor_{1} {}

template <typename>
constexpr InterpParameter::InterpParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL InterpParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) InterpParameter(arena);
}
constexpr auto InterpParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(InterpParameter), alignof(InterpParameter));
}
constexpr auto InterpParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &InterpParameter::MergeImpl,
          Super_::GetNewImpl<InterpParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &InterpParameter::SharedDtor,
          Super_::GetClearImpl<InterpParameter>(), &InterpParameter::ByteSizeLong,
              &InterpParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[44],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct InterpParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr InterpParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 InterpParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(InterpParameter::InternalGenerateClassData_(
            _default, &InterpParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<InterpParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~InterpParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) InterpParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<InterpParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(InterpParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST InterpParameterGlobalsTypeInternal InterpParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* InterpParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return InterpParameter_globals_.GetClassData();
#else
  return InterpParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class InfogainLossParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<InfogainLossParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(InfogainLossParameter, _impl_._has_bits_);
};

constexpr InfogainLossParameter::ParseTableT_ InfogainLossParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(InfogainLossParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::InfogainLossParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional string source = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(InfogainLossParameter, _impl_.source_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string source = 1;
      {PROTOBUF_FIELD_OFFSET(InfogainLossParameter, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr InfogainLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()) {}

template <typename>
constexpr InfogainLossParameter::InfogainLossParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL InfogainLossParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) InfogainLossParameter(arena);
}
constexpr auto InfogainLossParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(InfogainLossParameter), alignof(InfogainLossParameter));
}
constexpr auto InfogainLossParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &InfogainLossParameter::MergeImpl,
          Super_::GetNewImpl<InfogainLossParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &InfogainLossParameter::SharedDtor,
          Super_::GetClearImpl<InfogainLossParameter>(), &InfogainLossParameter::ByteSizeLong,
              &InfogainLossParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(InfogainLossParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[41],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct InfogainLossParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr InfogainLossParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 InfogainLossParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(InfogainLossParameter::InternalGenerateClassData_(
            _default, &InfogainLossParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<InfogainLossParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~InfogainLossParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) InfogainLossParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<InfogainLossParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(InfogainLossParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST InfogainLossParameterGlobalsTypeInternal InfogainLossParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* InfogainLossParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return InfogainLossParameter_globals_.GetClassData();
#else
  return InfogainLossParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ImageDataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ImageDataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_._has_bits_);
};

constexpr ImageDataParameter::ParseTableT_ ImageDataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_._has_bits_),
      0, // no _extensions_
      12, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294963200,  // skipmap
      offsetof(ParseTableT_, field_entries),
      12,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ImageDataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string source = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.source_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 10, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.scale_)}},
      // optional string mean_file = 3;
      {::_pbi::TcParser::FastBS1,
       {26, 1, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.mean_file_)}},
      // optional uint32 batch_size = 4 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImageDataParameter, _impl_.batch_size_), 11>(),
       {32, 11, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.batch_size_)}},
      // optional uint32 crop_size = 5 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImageDataParameter, _impl_.crop_size_), 3>(),
       {40, 3, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.crop_size_)}},
      // optional bool mirror = 6 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ImageDataParameter, _impl_.mirror_), 5>(),
       {48, 5, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.mirror_)}},
      // optional uint32 rand_skip = 7 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImageDataParameter, _impl_.rand_skip_), 4>(),
       {56, 4, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.rand_skip_)}},
      // optional bool shuffle = 8 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ImageDataParameter, _impl_.shuffle_), 6>(),
       {64, 6, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.shuffle_)}},
      // optional uint32 new_height = 9 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImageDataParameter, _impl_.new_height_), 7>(),
       {72, 7, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.new_height_)}},
      // optional uint32 new_width = 10 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ImageDataParameter, _impl_.new_width_), 8>(),
       {80, 8, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.new_width_)}},
      // optional bool is_color = 11 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ImageDataParameter, _impl_.is_color_), 9>(),
       {88, 9, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.is_color_)}},
      // optional string root_folder = 12 [default = ""];
      {::_pbi::TcParser::FastBS1,
       {98, 2, 0,
        PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.root_folder_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string source = 1;
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.scale_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string mean_file = 3;
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.mean_file_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 batch_size = 4 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.batch_size_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 crop_size = 5 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.crop_size_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool mirror = 6 [default = false];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.mirror_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 rand_skip = 7 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.rand_skip_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool shuffle = 8 [default = false];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.shuffle_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 new_height = 9 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.new_height_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 new_width = 10 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.new_width_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool is_color = 11 [default = true];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.is_color_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional string root_folder = 12 [default = ""];
      {PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.root_folder_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ImageDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        mean_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        root_folder_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        crop_size_{0u},
        rand_skip_{0u},
        mirror_{false},
        shuffle_{false},
        new_height_{0u},
        new_width_{0u},
        is_color_{true},
        scale_{1},
        batch_size_{1u} {}

template <typename>
constexpr ImageDataParameter::ImageDataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ImageDataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ImageDataParameter(arena);
}
constexpr auto ImageDataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ImageDataParameter), alignof(ImageDataParameter));
}
constexpr auto ImageDataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ImageDataParameter::MergeImpl,
          Super_::GetNewImpl<ImageDataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ImageDataParameter::SharedDtor,
          Super_::GetClearImpl<ImageDataParameter>(), &ImageDataParameter::ByteSizeLong,
              &ImageDataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[40],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ImageDataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ImageDataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ImageDataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ImageDataParameter::InternalGenerateClassData_(
            _default, &ImageDataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ImageDataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ImageDataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ImageDataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ImageDataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ImageDataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ImageDataParameterGlobalsTypeInternal ImageDataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ImageDataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ImageDataParameter_globals_.GetClassData();
#else
  return ImageDataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class HingeLossParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<HingeLossParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(HingeLossParameter, _impl_._has_bits_);
};

constexpr HingeLossParameter::ParseTableT_ HingeLossParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(HingeLossParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::HingeLossParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.HingeLossParameter.Norm norm = 1 [default = L1];
      {::_pbi::TcParser::FastEr1S1,
       {8, 0, 2,
        PROTOBUF_FIELD_OFFSET(HingeLossParameter, _impl_.norm_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.HingeLossParameter.Norm norm = 1 [default = L1];
      {PROTOBUF_FIELD_OFFSET(HingeLossParameter, _impl_.norm_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {1, 2},
    }},
    {{
    }},
  };
}


inline constexpr HingeLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : norm_{static_cast< ::caffe::HingeLossParameter_Norm >(1)} {}

template <typename>
constexpr HingeLossParameter::HingeLossParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL HingeLossParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) HingeLossParameter(arena);
}
constexpr auto HingeLossParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(HingeLossParameter), alignof(HingeLossParameter));
}
constexpr auto HingeLossParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &HingeLossParameter::MergeImpl,
          Super_::GetNewImpl<HingeLossParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &HingeLossParameter::SharedDtor,
          Super_::GetClearImpl<HingeLossParameter>(), &HingeLossParameter::ByteSizeLong,
              &HingeLossParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(HingeLossParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[39],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct HingeLossParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr HingeLossParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 HingeLossParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(HingeLossParameter::InternalGenerateClassData_(
            _default, &HingeLossParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<HingeLossParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~HingeLossParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) HingeLossParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<HingeLossParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(HingeLossParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST HingeLossParameterGlobalsTypeInternal HingeLossParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* HingeLossParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return HingeLossParameter_globals_.GetClassData();
#else
  return HingeLossParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class HDF5OutputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<HDF5OutputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(HDF5OutputParameter, _impl_._has_bits_);
};

constexpr HDF5OutputParameter::ParseTableT_ HDF5OutputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(HDF5OutputParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::HDF5OutputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional string file_name = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(HDF5OutputParameter, _impl_.file_name_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string file_name = 1;
      {PROTOBUF_FIELD_OFFSET(HDF5OutputParameter, _impl_.file_name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr HDF5OutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : file_name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()) {}

template <typename>
constexpr HDF5OutputParameter::HDF5OutputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL HDF5OutputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) HDF5OutputParameter(arena);
}
constexpr auto HDF5OutputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(HDF5OutputParameter), alignof(HDF5OutputParameter));
}
constexpr auto HDF5OutputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &HDF5OutputParameter::MergeImpl,
          Super_::GetNewImpl<HDF5OutputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &HDF5OutputParameter::SharedDtor,
          Super_::GetClearImpl<HDF5OutputParameter>(), &HDF5OutputParameter::ByteSizeLong,
              &HDF5OutputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(HDF5OutputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[38],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct HDF5OutputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr HDF5OutputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 HDF5OutputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(HDF5OutputParameter::InternalGenerateClassData_(
            _default, &HDF5OutputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<HDF5OutputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~HDF5OutputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) HDF5OutputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<HDF5OutputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(HDF5OutputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST HDF5OutputParameterGlobalsTypeInternal HDF5OutputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* HDF5OutputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return HDF5OutputParameter_globals_.GetClassData();
#else
  return HDF5OutputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class HDF5DataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<HDF5DataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_._has_bits_);
};

constexpr HDF5DataParameter::ParseTableT_ HDF5DataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::HDF5DataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string source = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.source_)}},
      // optional uint32 batch_size = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(HDF5DataParameter, _impl_.batch_size_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.batch_size_)}},
      // optional bool shuffle = 3 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(HDF5DataParameter, _impl_.shuffle_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.shuffle_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string source = 1;
      {PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 batch_size = 2;
      {PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.batch_size_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool shuffle = 3 [default = false];
      {PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.shuffle_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr HDF5DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        batch_size_{0u},
        shuffle_{false} {}

template <typename>
constexpr HDF5DataParameter::HDF5DataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL HDF5DataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) HDF5DataParameter(arena);
}
constexpr auto HDF5DataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(HDF5DataParameter), alignof(HDF5DataParameter));
}
constexpr auto HDF5DataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &HDF5DataParameter::MergeImpl,
          Super_::GetNewImpl<HDF5DataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &HDF5DataParameter::SharedDtor,
          Super_::GetClearImpl<HDF5DataParameter>(), &HDF5DataParameter::ByteSizeLong,
              &HDF5DataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[37],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct HDF5DataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr HDF5DataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 HDF5DataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(HDF5DataParameter::InternalGenerateClassData_(
            _default, &HDF5DataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<HDF5DataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~HDF5DataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) HDF5DataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<HDF5DataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(HDF5DataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST HDF5DataParameterGlobalsTypeInternal HDF5DataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* HDF5DataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return HDF5DataParameter_globals_.GetClassData();
#else
  return HDF5DataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class FlattenParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<FlattenParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_._has_bits_);
};

constexpr FlattenParameter::ParseTableT_ FlattenParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::FlattenParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional int32 end_axis = 2 [default = -1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FlattenParameter, _impl_.end_axis_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.end_axis_)}},
      // optional int32 axis = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FlattenParameter, _impl_.axis_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.axis_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 axis = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.axis_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 end_axis = 2 [default = -1];
      {PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.end_axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr FlattenParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : axis_{1},
        end_axis_{-1} {}

template <typename>
constexpr FlattenParameter::FlattenParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL FlattenParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) FlattenParameter(arena);
}
constexpr auto FlattenParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FlattenParameter), alignof(FlattenParameter));
}
constexpr auto FlattenParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &FlattenParameter::MergeImpl,
          Super_::GetNewImpl<FlattenParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &FlattenParameter::SharedDtor,
          Super_::GetClearImpl<FlattenParameter>(), &FlattenParameter::ByteSizeLong,
              &FlattenParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[36],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct FlattenParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr FlattenParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 FlattenParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(FlattenParameter::InternalGenerateClassData_(
            _default, &FlattenParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<FlattenParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~FlattenParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) FlattenParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<FlattenParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(FlattenParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST FlattenParameterGlobalsTypeInternal FlattenParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* FlattenParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return FlattenParameter_globals_.GetClassData();
#else
  return FlattenParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class FillerParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<FillerParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_._has_bits_);
};

constexpr FillerParameter::ParseTableT_ FillerParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_._has_bits_),
      0, // no _extensions_
      8, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967040,  // skipmap
      offsetof(ParseTableT_, field_entries),
      8,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::FillerParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional .caffe.FillerParameter.VarianceNorm variance_norm = 8 [default = FAN_IN];
      {::_pbi::TcParser::FastEr0S1,
       {64, 4, 2,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.variance_norm_)}},
      // optional string type = 1 [default = "constant"];
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.type_)}},
      // optional float value = 2 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {21, 1, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.value_)}},
      // optional float min = 3 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.min_)}},
      // optional float max = 4 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {37, 5, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.max_)}},
      // optional float mean = 5 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {45, 3, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.mean_)}},
      // optional float std = 6 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {53, 6, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.std_)}},
      // optional int32 sparse = 7 [default = -1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(FillerParameter, _impl_.sparse_), 7>(),
       {56, 7, 0,
        PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.sparse_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string type = 1 [default = "constant"];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.type_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float value = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.value_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float min = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.min_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float max = 4 [default = 1];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.max_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float mean = 5 [default = 0];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.mean_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float std = 6 [default = 1];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.std_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional int32 sparse = 7 [default = -1];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.sparse_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .caffe.FillerParameter.VarianceNorm variance_norm = 8 [default = FAN_IN];
      {PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.variance_norm_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr FillerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : type_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        value_{0},
        min_{0},
        mean_{0},
        variance_norm_{static_cast< ::caffe::FillerParameter_VarianceNorm >(0)},
        max_{1},
        std_{1},
        sparse_{-1} {}

template <typename>
constexpr FillerParameter::FillerParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL FillerParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) FillerParameter(arena);
}
constexpr auto FillerParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(FillerParameter), alignof(FillerParameter));
}
constexpr auto FillerParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &FillerParameter::MergeImpl,
          Super_::GetNewImpl<FillerParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &FillerParameter::SharedDtor,
          Super_::GetClearImpl<FillerParameter>(), &FillerParameter::ByteSizeLong,
              &FillerParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[4],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct FillerParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr FillerParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 FillerParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(FillerParameter::InternalGenerateClassData_(
            _default, &FillerParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<FillerParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~FillerParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) FillerParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<FillerParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(FillerParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST FillerParameterGlobalsTypeInternal FillerParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* FillerParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return FillerParameter_globals_.GetClassData();
#else
  return FillerParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ExpParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ExpParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_._has_bits_);
};

constexpr ExpParameter::ParseTableT_ ExpParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ExpParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional float base = 1 [default = -1];
      {::_pbi::TcParser::FastF32S1,
       {13, 1, 0,
        PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.base_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 2, 0,
        PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.scale_)}},
      // optional float shift = 3 [default = 0];
      {::_pbi::TcParser::FastF32S1,
       {29, 0, 0,
        PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.shift_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float base = 1 [default = -1];
      {PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.base_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.scale_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float shift = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.shift_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ExpParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : shift_{0},
        base_{-1},
        scale_{1} {}

template <typename>
constexpr ExpParameter::ExpParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ExpParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ExpParameter(arena);
}
constexpr auto ExpParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ExpParameter), alignof(ExpParameter));
}
constexpr auto ExpParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ExpParameter::MergeImpl,
          Super_::GetNewImpl<ExpParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ExpParameter::SharedDtor,
          Super_::GetClearImpl<ExpParameter>(), &ExpParameter::ByteSizeLong,
              &ExpParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[35],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ExpParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ExpParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ExpParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ExpParameter::InternalGenerateClassData_(
            _default, &ExpParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ExpParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ExpParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ExpParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ExpParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ExpParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ExpParameterGlobalsTypeInternal ExpParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ExpParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ExpParameter_globals_.GetClassData();
#else
  return ExpParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class EltwiseParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<EltwiseParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_._has_bits_);
};

constexpr EltwiseParameter::ParseTableT_ EltwiseParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::EltwiseParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.EltwiseParameter.EltwiseOp operation = 1 [default = SUM];
      {::_pbi::TcParser::FastEr0S1,
       {8, 1, 2,
        PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.operation_)}},
      // repeated float coeff = 2;
      {::_pbi::TcParser::FastF32R1,
       {21, 0, 0,
        PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.coeff_)}},
      // optional bool stable_prod_grad = 3 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(EltwiseParameter, _impl_.stable_prod_grad_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.stable_prod_grad_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.EltwiseParameter.EltwiseOp operation = 1 [default = SUM];
      {PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.operation_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // repeated float coeff = 2;
      {PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.coeff_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional bool stable_prod_grad = 3 [default = true];
      {PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.stable_prod_grad_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    {{
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr EltwiseParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : coeff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::EltwiseParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.coeff_)>()
         }
        ,
        operation_{static_cast< ::caffe::EltwiseParameter_EltwiseOp >(1)},
        stable_prod_grad_{true} {}

template <typename>
constexpr EltwiseParameter::EltwiseParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL EltwiseParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) EltwiseParameter(arena);
}
constexpr auto EltwiseParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EltwiseParameter), alignof(EltwiseParameter));
}
constexpr auto EltwiseParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &EltwiseParameter::MergeImpl,
          Super_::GetNewImpl<EltwiseParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &EltwiseParameter::SharedDtor,
          Super_::GetClearImpl<EltwiseParameter>(), &EltwiseParameter::ByteSizeLong,
              &EltwiseParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[32],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct EltwiseParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr EltwiseParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 EltwiseParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(EltwiseParameter::InternalGenerateClassData_(
            _default, &EltwiseParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<EltwiseParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~EltwiseParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) EltwiseParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<EltwiseParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(EltwiseParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST EltwiseParameterGlobalsTypeInternal EltwiseParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* EltwiseParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return EltwiseParameter_globals_.GetClassData();
#else
  return EltwiseParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ELUParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ELUParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ELUParameter, _impl_._has_bits_);
};

constexpr ELUParameter::ParseTableT_ ELUParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ELUParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ELUParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional float alpha = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(ELUParameter, _impl_.alpha_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float alpha = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ELUParameter, _impl_.alpha_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ELUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : alpha_{1} {}

template <typename>
constexpr ELUParameter::ELUParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ELUParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ELUParameter(arena);
}
constexpr auto ELUParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ELUParameter), alignof(ELUParameter));
}
constexpr auto ELUParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ELUParameter::MergeImpl,
          Super_::GetNewImpl<ELUParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ELUParameter::SharedDtor,
          Super_::GetClearImpl<ELUParameter>(), &ELUParameter::ByteSizeLong,
              &ELUParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ELUParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[33],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ELUParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ELUParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ELUParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ELUParameter::InternalGenerateClassData_(
            _default, &ELUParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ELUParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ELUParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ELUParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ELUParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ELUParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ELUParameterGlobalsTypeInternal ELUParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ELUParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ELUParameter_globals_.GetClassData();
#else
  return ELUParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class DropoutParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<DropoutParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_._has_bits_);
};

constexpr DropoutParameter::ParseTableT_ DropoutParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::DropoutParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional bool scale_train = 2 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DropoutParameter, _impl_.scale_train_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.scale_train_)}},
      // optional float dropout_ratio = 1 [default = 0.5];
      {::_pbi::TcParser::FastF32S1,
       {13, 0, 0,
        PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.dropout_ratio_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float dropout_ratio = 1 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.dropout_ratio_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional bool scale_train = 2 [default = true];
      {PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.scale_train_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr DropoutParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : dropout_ratio_{0.5f},
        scale_train_{true} {}

template <typename>
constexpr DropoutParameter::DropoutParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL DropoutParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) DropoutParameter(arena);
}
constexpr auto DropoutParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(DropoutParameter), alignof(DropoutParameter));
}
constexpr auto DropoutParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &DropoutParameter::MergeImpl,
          Super_::GetNewImpl<DropoutParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &DropoutParameter::SharedDtor,
          Super_::GetClearImpl<DropoutParameter>(), &DropoutParameter::ByteSizeLong,
              &DropoutParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[30],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct DropoutParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr DropoutParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 DropoutParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(DropoutParameter::InternalGenerateClassData_(
            _default, &DropoutParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<DropoutParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~DropoutParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) DropoutParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<DropoutParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(DropoutParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST DropoutParameterGlobalsTypeInternal DropoutParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* DropoutParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return DropoutParameter_globals_.GetClassData();
#else
  return DropoutParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class Datum::_Internal {
 public:
  using HasBits = decltype(::std::declval<Datum>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(Datum, _impl_._has_bits_);
};

constexpr Datum::ParseTableT_ Datum::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(Datum, _impl_._has_bits_),
      0, // no _extensions_
      7, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967168,  // skipmap
      offsetof(ParseTableT_, field_entries),
      7,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::Datum>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 channels = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Datum, _impl_.channels_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.channels_)}},
      // optional int32 height = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Datum, _impl_.height_), 3>(),
       {16, 3, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.height_)}},
      // optional int32 width = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Datum, _impl_.width_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.width_)}},
      // optional bytes data = 4;
      {::_pbi::TcParser::FastBS1,
       {34, 1, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.data_)}},
      // optional int32 label = 5;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Datum, _impl_.label_), 5>(),
       {40, 5, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.label_)}},
      // repeated float float_data = 6;
      {::_pbi::TcParser::FastF32R1,
       {53, 0, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.float_data_)}},
      // optional bool encoded = 7 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(Datum, _impl_.encoded_), 6>(),
       {56, 6, 0,
        PROTOBUF_FIELD_OFFSET(Datum, _impl_.encoded_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 channels = 1;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.channels_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 height = 2;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.height_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 width = 3;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.width_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bytes data = 4;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.data_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional int32 label = 5;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.label_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated float float_data = 6;
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.float_data_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional bool encoded = 7 [default = false];
      {PROTOBUF_FIELD_OFFSET(Datum, _impl_.encoded_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr Datum::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : float_data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Datum,
            PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.float_data_)>()
         }
        ,
        data_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        channels_{0},
        height_{0},
        width_{0},
        label_{0},
        encoded_{false} {}

template <typename>
constexpr Datum::Datum(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL Datum::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) Datum(arena);
}
constexpr auto Datum::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(Datum), alignof(Datum));
}
constexpr auto Datum::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &Datum::MergeImpl,
          Super_::GetNewImpl<Datum>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &Datum::SharedDtor,
          Super_::GetClearImpl<Datum>(), &Datum::ByteSizeLong,
              &Datum::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(Datum, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[3],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct DatumGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr DatumGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 Datum_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(Datum::InternalGenerateClassData_(
            _default, &Datum_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<Datum>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~DatumGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) Datum _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<Datum>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(DatumGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST DatumGlobalsTypeInternal Datum_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* Datum_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return Datum_globals_.GetClassData();
#else
  return Datum_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class DataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<DataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(DataParameter, _impl_._has_bits_);
};

constexpr DataParameter::ParseTableT_ DataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(DataParameter, _impl_._has_bits_),
      0, // no _extensions_
      10, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294966272,  // skipmap
      offsetof(ParseTableT_, field_entries),
      10,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::DataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string source = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.source_)}},
      // optional float scale = 2 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {21, 8, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.scale_)}},
      // optional string mean_file = 3;
      {::_pbi::TcParser::FastBS1,
       {26, 1, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.mean_file_)}},
      // optional uint32 batch_size = 4;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DataParameter, _impl_.batch_size_), 2>(),
       {32, 2, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.batch_size_)}},
      // optional uint32 crop_size = 5 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DataParameter, _impl_.crop_size_), 3>(),
       {40, 3, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.crop_size_)}},
      // optional bool mirror = 6 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DataParameter, _impl_.mirror_), 5>(),
       {48, 5, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.mirror_)}},
      // optional uint32 rand_skip = 7 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DataParameter, _impl_.rand_skip_), 4>(),
       {56, 4, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.rand_skip_)}},
      // optional .caffe.DataParameter.DB backend = 8 [default = LEVELDB];
      {::_pbi::TcParser::FastEr0S1,
       {64, 7, 1,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.backend_)}},
      // optional bool force_encoded_color = 9 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DataParameter, _impl_.force_encoded_color_), 6>(),
       {72, 6, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.force_encoded_color_)}},
      // optional uint32 prefetch = 10 [default = 4];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DataParameter, _impl_.prefetch_), 9>(),
       {80, 9, 0,
        PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.prefetch_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string source = 1;
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.source_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float scale = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.scale_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string mean_file = 3;
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.mean_file_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 batch_size = 4;
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.batch_size_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 crop_size = 5 [default = 0];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.crop_size_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool mirror = 6 [default = false];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.mirror_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 rand_skip = 7 [default = 0];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.rand_skip_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.DataParameter.DB backend = 8 [default = LEVELDB];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.backend_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional bool force_encoded_color = 9 [default = false];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.force_encoded_color_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 prefetch = 10 [default = 4];
      {PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.prefetch_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
    }},
    {{
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        mean_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        batch_size_{0u},
        crop_size_{0u},
        rand_skip_{0u},
        mirror_{false},
        force_encoded_color_{false},
        backend_{static_cast< ::caffe::DataParameter_DB >(0)},
        scale_{1},
        prefetch_{4u} {}

template <typename>
constexpr DataParameter::DataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL DataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) DataParameter(arena);
}
constexpr auto DataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(DataParameter), alignof(DataParameter));
}
constexpr auto DataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &DataParameter::MergeImpl,
          Super_::GetNewImpl<DataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &DataParameter::SharedDtor,
          Super_::GetClearImpl<DataParameter>(), &DataParameter::ByteSizeLong,
              &DataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(DataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[24],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct DataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr DataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 DataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(DataParameter::InternalGenerateClassData_(
            _default, &DataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<DataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~DataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) DataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<DataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(DataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST DataParameterGlobalsTypeInternal DataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* DataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return DataParameter_globals_.GetClassData();
#else
  return DataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class CropParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<CropParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(CropParameter, _impl_._has_bits_);
};

constexpr CropParameter::ParseTableT_ CropParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(CropParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::CropParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated uint32 offset = 2;
      {::_pbi::TcParser::FastV32R1,
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(CropParameter, _impl_.offset_)}},
      // optional int32 axis = 1 [default = 2];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(CropParameter, _impl_.axis_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(CropParameter, _impl_.axis_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 axis = 1 [default = 2];
      {PROTOBUF_FIELD_OFFSET(CropParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated uint32 offset = 2;
      {PROTOBUF_FIELD_OFFSET(CropParameter, _impl_.offset_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr CropParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : offset_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::CropParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_.offset_)>()
         }
        ,
        axis_{2} {}

template <typename>
constexpr CropParameter::CropParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL CropParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) CropParameter(arena);
}
constexpr auto CropParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(CropParameter), alignof(CropParameter));
}
constexpr auto CropParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &CropParameter::MergeImpl,
          Super_::GetNewImpl<CropParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &CropParameter::SharedDtor,
          Super_::GetClearImpl<CropParameter>(), &CropParameter::ByteSizeLong,
              &CropParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(CropParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[23],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct CropParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr CropParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 CropParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(CropParameter::InternalGenerateClassData_(
            _default, &CropParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<CropParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~CropParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) CropParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<CropParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(CropParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST CropParameterGlobalsTypeInternal CropParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* CropParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return CropParameter_globals_.GetClassData();
#else
  return CropParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ContrastiveLossParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ContrastiveLossParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_._has_bits_);
};

constexpr ContrastiveLossParameter::ParseTableT_ ContrastiveLossParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ContrastiveLossParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional bool legacy_version = 2 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ContrastiveLossParameter, _impl_.legacy_version_), 0>(),
       {16, 0, 0,
        PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.legacy_version_)}},
      // optional float margin = 1 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {13, 1, 0,
        PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.margin_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional float margin = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.margin_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional bool legacy_version = 2 [default = false];
      {PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.legacy_version_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ContrastiveLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : legacy_version_{false},
        margin_{1} {}

template <typename>
constexpr ContrastiveLossParameter::ContrastiveLossParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ContrastiveLossParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ContrastiveLossParameter(arena);
}
constexpr auto ContrastiveLossParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ContrastiveLossParameter), alignof(ContrastiveLossParameter));
}
constexpr auto ContrastiveLossParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ContrastiveLossParameter::MergeImpl,
          Super_::GetNewImpl<ContrastiveLossParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ContrastiveLossParameter::SharedDtor,
          Super_::GetClearImpl<ContrastiveLossParameter>(), &ContrastiveLossParameter::ByteSizeLong,
              &ContrastiveLossParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[21],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ContrastiveLossParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ContrastiveLossParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ContrastiveLossParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ContrastiveLossParameter::InternalGenerateClassData_(
            _default, &ContrastiveLossParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ContrastiveLossParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ContrastiveLossParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ContrastiveLossParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ContrastiveLossParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ContrastiveLossParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ContrastiveLossParameterGlobalsTypeInternal ContrastiveLossParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ContrastiveLossParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ContrastiveLossParameter_globals_.GetClassData();
#else
  return ContrastiveLossParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ConcatParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ConcatParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_._has_bits_);
};

constexpr ConcatParameter::ParseTableT_ ConcatParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ConcatParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional int32 axis = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConcatParameter, _impl_.axis_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.axis_)}},
      // optional uint32 concat_dim = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConcatParameter, _impl_.concat_dim_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.concat_dim_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 concat_dim = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.concat_dim_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional int32 axis = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ConcatParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : concat_dim_{1u},
        axis_{1} {}

template <typename>
constexpr ConcatParameter::ConcatParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ConcatParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ConcatParameter(arena);
}
constexpr auto ConcatParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ConcatParameter), alignof(ConcatParameter));
}
constexpr auto ConcatParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ConcatParameter::MergeImpl,
          Super_::GetNewImpl<ConcatParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ConcatParameter::SharedDtor,
          Super_::GetClearImpl<ConcatParameter>(), &ConcatParameter::ByteSizeLong,
              &ConcatParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[17],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ConcatParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ConcatParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ConcatParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ConcatParameter::InternalGenerateClassData_(
            _default, &ConcatParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ConcatParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ConcatParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ConcatParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ConcatParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ConcatParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ConcatParameterGlobalsTypeInternal ConcatParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ConcatParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ConcatParameter_globals_.GetClassData();
#else
  return ConcatParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BlobShape::_Internal {
 public:
  using HasBits = decltype(::std::declval<BlobShape>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BlobShape, _impl_._has_bits_);
};

constexpr BlobShape::ParseTableT_ BlobShape::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BlobShape, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BlobShape>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated int64 dim = 1 [packed = true];
      {::_pbi::TcParser::FastV64P1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(BlobShape, _impl_.dim_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated int64 dim = 1 [packed = true];
      {PROTOBUF_FIELD_OFFSET(BlobShape, _impl_.dim_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt64)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr BlobShape::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : dim_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobShape,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobShape, _impl_.dim_)>()
         }
     {}

template <typename>
constexpr BlobShape::BlobShape(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BlobShape::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BlobShape(arena);
}
constexpr auto BlobShape::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(BlobShape), alignof(BlobShape));
}
constexpr auto BlobShape::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BlobShape::MergeImpl,
          Super_::GetNewImpl<BlobShape>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BlobShape::SharedDtor,
          Super_::GetClearImpl<BlobShape>(), &BlobShape::ByteSizeLong,
              &BlobShape::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BlobShape, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[0],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BlobShapeGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BlobShapeGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BlobShape_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BlobShape::InternalGenerateClassData_(
            _default, &BlobShape_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BlobShape>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BlobShapeGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BlobShape _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BlobShape>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BlobShapeGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BlobShapeGlobalsTypeInternal BlobShape_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BlobShape_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BlobShape_globals_.GetClassData();
#else
  return BlobShape_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BatchNormParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<BatchNormParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_._has_bits_);
};

constexpr BatchNormParameter::ParseTableT_ BatchNormParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BatchNormParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional bool use_global_stats = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(BatchNormParameter, _impl_.use_global_stats_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.use_global_stats_)}},
      // optional float moving_average_fraction = 2 [default = 0.999];
      {::_pbi::TcParser::FastF32S1,
       {21, 1, 0,
        PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.moving_average_fraction_)}},
      // optional float eps = 3 [default = 1e-05];
      {::_pbi::TcParser::FastF32S1,
       {29, 2, 0,
        PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.eps_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional bool use_global_stats = 1;
      {PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.use_global_stats_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float moving_average_fraction = 2 [default = 0.999];
      {PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.moving_average_fraction_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float eps = 3 [default = 1e-05];
      {PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.eps_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr BatchNormParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : use_global_stats_{false},
        moving_average_fraction_{0.999f},
        eps_{1e-05f} {}

template <typename>
constexpr BatchNormParameter::BatchNormParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BatchNormParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BatchNormParameter(arena);
}
constexpr auto BatchNormParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(BatchNormParameter), alignof(BatchNormParameter));
}
constexpr auto BatchNormParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BatchNormParameter::MergeImpl,
          Super_::GetNewImpl<BatchNormParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BatchNormParameter::SharedDtor,
          Super_::GetClearImpl<BatchNormParameter>(), &BatchNormParameter::ByteSizeLong,
              &BatchNormParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[18],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BatchNormParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BatchNormParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BatchNormParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BatchNormParameter::InternalGenerateClassData_(
            _default, &BatchNormParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BatchNormParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BatchNormParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BatchNormParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BatchNormParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BatchNormParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BatchNormParameterGlobalsTypeInternal BatchNormParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BatchNormParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BatchNormParameter_globals_.GetClassData();
#else
  return BatchNormParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ArgMaxParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ArgMaxParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_._has_bits_);
};

constexpr ArgMaxParameter::ParseTableT_ ArgMaxParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ArgMaxParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional bool out_max_val = 1 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ArgMaxParameter, _impl_.out_max_val_), 0>(),
       {8, 0, 0,
        PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.out_max_val_)}},
      // optional uint32 top_k = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArgMaxParameter, _impl_.top_k_), 2>(),
       {16, 2, 0,
        PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.top_k_)}},
      // optional int32 axis = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ArgMaxParameter, _impl_.axis_), 1>(),
       {24, 1, 0,
        PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.axis_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional bool out_max_val = 1 [default = false];
      {PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.out_max_val_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 top_k = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.top_k_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional int32 axis = 3;
      {PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr ArgMaxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : out_max_val_{false},
        axis_{0},
        top_k_{1u} {}

template <typename>
constexpr ArgMaxParameter::ArgMaxParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ArgMaxParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ArgMaxParameter(arena);
}
constexpr auto ArgMaxParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ArgMaxParameter), alignof(ArgMaxParameter));
}
constexpr auto ArgMaxParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ArgMaxParameter::MergeImpl,
          Super_::GetNewImpl<ArgMaxParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ArgMaxParameter::SharedDtor,
          Super_::GetClearImpl<ArgMaxParameter>(), &ArgMaxParameter::ByteSizeLong,
              &ArgMaxParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[16],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ArgMaxParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ArgMaxParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ArgMaxParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ArgMaxParameter::InternalGenerateClassData_(
            _default, &ArgMaxParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ArgMaxParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ArgMaxParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ArgMaxParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ArgMaxParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ArgMaxParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ArgMaxParameterGlobalsTypeInternal ArgMaxParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ArgMaxParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ArgMaxParameter_globals_.GetClassData();
#else
  return ArgMaxParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class AccuracyParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<AccuracyParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_._has_bits_);
};

constexpr AccuracyParameter::ParseTableT_ AccuracyParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      0,  // num_aux_entries
      offsetof(ParseTableT_, field_names),  // no aux_entries
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::AccuracyParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 top_k = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AccuracyParameter, _impl_.top_k_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.top_k_)}},
      // optional int32 axis = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AccuracyParameter, _impl_.axis_), 2>(),
       {16, 2, 0,
        PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.axis_)}},
      // optional int32 ignore_label = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(AccuracyParameter, _impl_.ignore_label_), 0>(),
       {24, 0, 0,
        PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.ignore_label_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 top_k = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.top_k_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional int32 axis = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.axis_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 ignore_label = 3;
      {PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.ignore_label_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    // no aux_entries
    {{
    }},
  };
}


inline constexpr AccuracyParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : ignore_label_{0},
        top_k_{1u},
        axis_{1} {}

template <typename>
constexpr AccuracyParameter::AccuracyParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL AccuracyParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) AccuracyParameter(arena);
}
constexpr auto AccuracyParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(AccuracyParameter), alignof(AccuracyParameter));
}
constexpr auto AccuracyParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &AccuracyParameter::MergeImpl,
          Super_::GetNewImpl<AccuracyParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &AccuracyParameter::SharedDtor,
          Super_::GetClearImpl<AccuracyParameter>(), &AccuracyParameter::ByteSizeLong,
              &AccuracyParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[15],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct AccuracyParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr AccuracyParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 AccuracyParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(AccuracyParameter::InternalGenerateClassData_(
            _default, &AccuracyParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<AccuracyParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~AccuracyParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) AccuracyParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<AccuracyParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(AccuracyParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST AccuracyParameterGlobalsTypeInternal AccuracyParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* AccuracyParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return AccuracyParameter_globals_.GetClassData();
#else
  return AccuracyParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ScaleParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ScaleParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_._has_bits_);
};

constexpr ScaleParameter::ParseTableT_ ScaleParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_._has_bits_),
      0, // no _extensions_
      5, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967264,  // skipmap
      offsetof(ParseTableT_, field_entries),
      5,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ScaleParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 axis = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScaleParameter, _impl_.axis_), 3>(),
       {8, 3, 0,
        PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.axis_)}},
      // optional int32 num_axes = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ScaleParameter, _impl_.num_axes_), 4>(),
       {16, 4, 0,
        PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.num_axes_)}},
      // optional .caffe.FillerParameter filler = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.filler_)}},
      // optional bool bias_term = 4 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ScaleParameter, _impl_.bias_term_), 2>(),
       {32, 2, 0,
        PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.bias_term_)}},
      // optional .caffe.FillerParameter bias_filler = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 1, 1,
        PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.bias_filler_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 axis = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.axis_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 num_axes = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.num_axes_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .caffe.FillerParameter filler = 3;
      {PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool bias_term = 4 [default = false];
      {PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.bias_term_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.FillerParameter bias_filler = 5;
      {PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr ScaleParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : filler_{nullptr},
        bias_filler_{nullptr},
        bias_term_{false},
        axis_{1},
        num_axes_{1} {}

template <typename>
constexpr ScaleParameter::ScaleParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ScaleParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ScaleParameter(arena);
}
constexpr auto ScaleParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ScaleParameter), alignof(ScaleParameter));
}
constexpr auto ScaleParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ScaleParameter::MergeImpl,
          Super_::GetNewImpl<ScaleParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ScaleParameter::SharedDtor,
          Super_::GetClearImpl<ScaleParameter>(), &ScaleParameter::ByteSizeLong,
              &ScaleParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[63],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ScaleParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ScaleParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ScaleParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ScaleParameter::InternalGenerateClassData_(
            _default, &ScaleParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ScaleParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ScaleParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ScaleParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ScaleParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ScaleParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ScaleParameterGlobalsTypeInternal ScaleParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ScaleParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ScaleParameter_globals_.GetClassData();
#else
  return ScaleParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SaveOutputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SaveOutputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_._has_bits_);
};

constexpr SaveOutputParameter::ParseTableT_ SaveOutputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_._has_bits_),
      0, // no _extensions_
      7, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967168,  // skipmap
      offsetof(ParseTableT_, field_entries),
      7,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SaveOutputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string output_directory = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_directory_)}},
      // optional string output_name_prefix = 2;
      {::_pbi::TcParser::FastBS1,
       {18, 1, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_name_prefix_)}},
      // optional string output_format = 3;
      {::_pbi::TcParser::FastBS1,
       {26, 2, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_format_)}},
      // optional string label_map_file = 4;
      {::_pbi::TcParser::FastBS1,
       {34, 3, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.label_map_file_)}},
      // optional string name_size_file = 5;
      {::_pbi::TcParser::FastBS1,
       {42, 4, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.name_size_file_)}},
      // optional uint32 num_test_image = 6;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SaveOutputParameter, _impl_.num_test_image_), 6>(),
       {48, 6, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.num_test_image_)}},
      // optional .caffe.ResizeParameter resize_param = 7;
      {::_pbi::TcParser::FastMtS1,
       {58, 5, 0,
        PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.resize_param_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional string output_directory = 1;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_directory_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string output_name_prefix = 2;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_name_prefix_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string output_format = 3;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.output_format_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string label_map_file = 4;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.label_map_file_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string name_size_file = 5;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.name_size_file_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 num_test_image = 6;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.num_test_image_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.ResizeParameter resize_param = 7;
      {PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.resize_param_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ResizeParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ResizeParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr SaveOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : output_directory_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        output_name_prefix_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        output_format_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        label_map_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        name_size_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        resize_param_{nullptr},
        num_test_image_{0u} {}

template <typename>
constexpr SaveOutputParameter::SaveOutputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SaveOutputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SaveOutputParameter(arena);
}
constexpr auto SaveOutputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SaveOutputParameter), alignof(SaveOutputParameter));
}
constexpr auto SaveOutputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SaveOutputParameter::MergeImpl,
          Super_::GetNewImpl<SaveOutputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SaveOutputParameter::SharedDtor,
          Super_::GetClearImpl<SaveOutputParameter>(), &SaveOutputParameter::ByteSizeLong,
              &SaveOutputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[26],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SaveOutputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SaveOutputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SaveOutputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SaveOutputParameter::InternalGenerateClassData_(
            _default, &SaveOutputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SaveOutputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SaveOutputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SaveOutputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SaveOutputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SaveOutputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SaveOutputParameterGlobalsTypeInternal SaveOutputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SaveOutputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SaveOutputParameter_globals_.GetClassData();
#else
  return SaveOutputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ReshapeParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ReshapeParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_._has_bits_);
};

constexpr ReshapeParameter::ParseTableT_ ReshapeParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ReshapeParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.BlobShape shape = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.shape_)}},
      // optional int32 axis = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ReshapeParameter, _impl_.axis_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.axis_)}},
      // optional int32 num_axes = 3 [default = -1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ReshapeParameter, _impl_.num_axes_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.num_axes_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.BlobShape shape = 1;
      {PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.shape_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 axis = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 num_axes = 3 [default = -1];
      {PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.num_axes_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobShape>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobShape_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr ReshapeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : shape_{nullptr},
        axis_{0},
        num_axes_{-1} {}

template <typename>
constexpr ReshapeParameter::ReshapeParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ReshapeParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ReshapeParameter(arena);
}
constexpr auto ReshapeParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ReshapeParameter), alignof(ReshapeParameter));
}
constexpr auto ReshapeParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ReshapeParameter::MergeImpl,
          Super_::GetNewImpl<ReshapeParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ReshapeParameter::SharedDtor,
          Super_::GetClearImpl<ReshapeParameter>(), &ReshapeParameter::ByteSizeLong,
              &ReshapeParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[60],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ReshapeParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ReshapeParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ReshapeParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ReshapeParameter::InternalGenerateClassData_(
            _default, &ReshapeParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ReshapeParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ReshapeParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ReshapeParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ReshapeParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ReshapeParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ReshapeParameterGlobalsTypeInternal ReshapeParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ReshapeParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ReshapeParameter_globals_.GetClassData();
#else
  return ReshapeParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class RecurrentParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<RecurrentParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_._has_bits_);
};

constexpr RecurrentParameter::ParseTableT_ RecurrentParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_._has_bits_),
      0, // no _extensions_
      5, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967264,  // skipmap
      offsetof(ParseTableT_, field_entries),
      5,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::RecurrentParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 num_output = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RecurrentParameter, _impl_.num_output_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.num_output_)}},
      // optional .caffe.FillerParameter weight_filler = 2;
      {::_pbi::TcParser::FastMtS1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.weight_filler_)}},
      // optional .caffe.FillerParameter bias_filler = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 1, 1,
        PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.bias_filler_)}},
      // optional bool debug_info = 4 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RecurrentParameter, _impl_.debug_info_), 3>(),
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.debug_info_)}},
      // optional bool expose_hidden = 5 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RecurrentParameter, _impl_.expose_hidden_), 4>(),
       {40, 4, 0,
        PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.expose_hidden_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_output = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.num_output_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.FillerParameter weight_filler = 2;
      {PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.weight_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter bias_filler = 3;
      {PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool debug_info = 4 [default = false];
      {PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.debug_info_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional bool expose_hidden = 5 [default = false];
      {PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.expose_hidden_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr RecurrentParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : weight_filler_{nullptr},
        bias_filler_{nullptr},
        num_output_{0u},
        debug_info_{false},
        expose_hidden_{false} {}

template <typename>
constexpr RecurrentParameter::RecurrentParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL RecurrentParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) RecurrentParameter(arena);
}
constexpr auto RecurrentParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(RecurrentParameter), alignof(RecurrentParameter));
}
constexpr auto RecurrentParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &RecurrentParameter::MergeImpl,
          Super_::GetNewImpl<RecurrentParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &RecurrentParameter::SharedDtor,
          Super_::GetClearImpl<RecurrentParameter>(), &RecurrentParameter::ByteSizeLong,
              &RecurrentParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[56],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct RecurrentParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr RecurrentParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 RecurrentParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(RecurrentParameter::InternalGenerateClassData_(
            _default, &RecurrentParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<RecurrentParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~RecurrentParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) RecurrentParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<RecurrentParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(RecurrentParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST RecurrentParameterGlobalsTypeInternal RecurrentParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* RecurrentParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return RecurrentParameter_globals_.GetClassData();
#else
  return RecurrentParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class PReLUParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<PReLUParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_._has_bits_);
};

constexpr PReLUParameter::ParseTableT_ PReLUParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_._has_bits_),
      0, // no _extensions_
      2, 8,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967292,  // skipmap
      offsetof(ParseTableT_, field_entries),
      2,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::PReLUParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional bool channel_shared = 2 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PReLUParameter, _impl_.channel_shared_), 1>(),
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.channel_shared_)}},
      // optional .caffe.FillerParameter filler = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.filler_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.FillerParameter filler = 1;
      {PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool channel_shared = 2 [default = false];
      {PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.channel_shared_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr PReLUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : filler_{nullptr},
        channel_shared_{false} {}

template <typename>
constexpr PReLUParameter::PReLUParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL PReLUParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) PReLUParameter(arena);
}
constexpr auto PReLUParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(PReLUParameter), alignof(PReLUParameter));
}
constexpr auto PReLUParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &PReLUParameter::MergeImpl,
          Super_::GetNewImpl<PReLUParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &PReLUParameter::SharedDtor,
          Super_::GetClearImpl<PReLUParameter>(), &PReLUParameter::ByteSizeLong,
              &PReLUParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[76],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct PReLUParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr PReLUParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 PReLUParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(PReLUParameter::InternalGenerateClassData_(
            _default, &PReLUParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<PReLUParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~PReLUParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) PReLUParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<PReLUParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(PReLUParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST PReLUParameterGlobalsTypeInternal PReLUParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* PReLUParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return PReLUParameter_globals_.GetClassData();
#else
  return PReLUParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class NormalizeParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<NormalizeParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_._has_bits_);
};

constexpr NormalizeParameter::ParseTableT_ NormalizeParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_._has_bits_),
      0, // no _extensions_
      4, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967280,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::NormalizeParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional float eps = 4 [default = 1e-10];
      {::_pbi::TcParser::FastF32S1,
       {37, 3, 0,
        PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.eps_)}},
      // optional bool across_spatial = 1 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(NormalizeParameter, _impl_.across_spatial_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.across_spatial_)}},
      // optional .caffe.FillerParameter scale_filler = 2;
      {::_pbi::TcParser::FastMtS1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.scale_filler_)}},
      // optional bool channel_shared = 3 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(NormalizeParameter, _impl_.channel_shared_), 2>(),
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.channel_shared_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional bool across_spatial = 1 [default = true];
      {PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.across_spatial_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.FillerParameter scale_filler = 2;
      {PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.scale_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool channel_shared = 3 [default = true];
      {PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.channel_shared_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float eps = 4 [default = 1e-10];
      {PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.eps_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr NormalizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : scale_filler_{nullptr},
        across_spatial_{true},
        channel_shared_{true},
        eps_{1e-10f} {}

template <typename>
constexpr NormalizeParameter::NormalizeParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL NormalizeParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) NormalizeParameter(arena);
}
constexpr auto NormalizeParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(NormalizeParameter), alignof(NormalizeParameter));
}
constexpr auto NormalizeParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &NormalizeParameter::MergeImpl,
          Super_::GetNewImpl<NormalizeParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &NormalizeParameter::SharedDtor,
          Super_::GetClearImpl<NormalizeParameter>(), &NormalizeParameter::ByteSizeLong,
              &NormalizeParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[49],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct NormalizeParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr NormalizeParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 NormalizeParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(NormalizeParameter::InternalGenerateClassData_(
            _default, &NormalizeParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<NormalizeParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~NormalizeParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) NormalizeParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<NormalizeParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(NormalizeParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST NormalizeParameterGlobalsTypeInternal NormalizeParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* NormalizeParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return NormalizeParameter_globals_.GetClassData();
#else
  return NormalizeParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class InputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<InputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(InputParameter, _impl_._has_bits_);
};

constexpr InputParameter::ParseTableT_ InputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(InputParameter, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::InputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated .caffe.BlobShape shape = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(InputParameter, _impl_.shape_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .caffe.BlobShape shape = 1;
      {PROTOBUF_FIELD_OFFSET(InputParameter, _impl_.shape_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobShape>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobShape_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr InputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::InputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::InputParameter, _impl_.shape_)>()
         }
     {}

template <typename>
constexpr InputParameter::InputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL InputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) InputParameter(arena);
}
constexpr auto InputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(InputParameter), alignof(InputParameter));
}
constexpr auto InputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &InputParameter::MergeImpl,
          Super_::GetNewImpl<InputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &InputParameter::SharedDtor,
          Super_::GetClearImpl<InputParameter>(), &InputParameter::ByteSizeLong,
              &InputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(InputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[43],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct InputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr InputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 InputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(InputParameter::InternalGenerateClassData_(
            _default, &InputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<InputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~InputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) InputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<InputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(InputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST InputParameterGlobalsTypeInternal InputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* InputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return InputParameter_globals_.GetClassData();
#else
  return InputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class InnerProductParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<InnerProductParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_._has_bits_);
};

constexpr InnerProductParameter::ParseTableT_ InnerProductParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_._has_bits_),
      0, // no _extensions_
      6, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967232,  // skipmap
      offsetof(ParseTableT_, field_entries),
      6,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::InnerProductParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 num_output = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InnerProductParameter, _impl_.num_output_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.num_output_)}},
      // optional bool bias_term = 2 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(InnerProductParameter, _impl_.bias_term_), 4>(),
       {16, 4, 0,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.bias_term_)}},
      // optional .caffe.FillerParameter weight_filler = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.weight_filler_)}},
      // optional .caffe.FillerParameter bias_filler = 4;
      {::_pbi::TcParser::FastMtS1,
       {34, 1, 1,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.bias_filler_)}},
      // optional int32 axis = 5 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(InnerProductParameter, _impl_.axis_), 5>(),
       {40, 5, 0,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.axis_)}},
      // optional bool transpose = 6 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(InnerProductParameter, _impl_.transpose_), 3>(),
       {48, 3, 0,
        PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.transpose_)}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_output = 1;
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.num_output_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool bias_term = 2 [default = true];
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.bias_term_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.FillerParameter weight_filler = 3;
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.weight_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter bias_filler = 4;
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 axis = 5 [default = 1];
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.axis_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool transpose = 6 [default = false];
      {PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.transpose_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr InnerProductParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : weight_filler_{nullptr},
        bias_filler_{nullptr},
        num_output_{0u},
        transpose_{false},
        bias_term_{true},
        axis_{1} {}

template <typename>
constexpr InnerProductParameter::InnerProductParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL InnerProductParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) InnerProductParameter(arena);
}
constexpr auto InnerProductParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(InnerProductParameter), alignof(InnerProductParameter));
}
constexpr auto InnerProductParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &InnerProductParameter::MergeImpl,
          Super_::GetNewImpl<InnerProductParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &InnerProductParameter::SharedDtor,
          Super_::GetClearImpl<InnerProductParameter>(), &InnerProductParameter::ByteSizeLong,
              &InnerProductParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[42],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct InnerProductParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr InnerProductParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 InnerProductParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(InnerProductParameter::InternalGenerateClassData_(
            _default, &InnerProductParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<InnerProductParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~InnerProductParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) InnerProductParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<InnerProductParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(InnerProductParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST InnerProductParameterGlobalsTypeInternal InnerProductParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* InnerProductParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return InnerProductParameter_globals_.GetClassData();
#else
  return InnerProductParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class EmbedParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<EmbedParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_._has_bits_);
};

constexpr EmbedParameter::ParseTableT_ EmbedParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_._has_bits_),
      0, // no _extensions_
      5, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967264,  // skipmap
      offsetof(ParseTableT_, field_entries),
      5,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::EmbedParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 num_output = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(EmbedParameter, _impl_.num_output_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.num_output_)}},
      // optional uint32 input_dim = 2;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(EmbedParameter, _impl_.input_dim_), 3>(),
       {16, 3, 0,
        PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.input_dim_)}},
      // optional bool bias_term = 3 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(EmbedParameter, _impl_.bias_term_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.bias_term_)}},
      // optional .caffe.FillerParameter weight_filler = 4;
      {::_pbi::TcParser::FastMtS1,
       {34, 0, 0,
        PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.weight_filler_)}},
      // optional .caffe.FillerParameter bias_filler = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 1, 1,
        PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.bias_filler_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_output = 1;
      {PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.num_output_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 input_dim = 2;
      {PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.input_dim_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool bias_term = 3 [default = true];
      {PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.bias_term_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.FillerParameter weight_filler = 4;
      {PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.weight_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter bias_filler = 5;
      {PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr EmbedParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : weight_filler_{nullptr},
        bias_filler_{nullptr},
        num_output_{0u},
        input_dim_{0u},
        bias_term_{true} {}

template <typename>
constexpr EmbedParameter::EmbedParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL EmbedParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) EmbedParameter(arena);
}
constexpr auto EmbedParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(EmbedParameter), alignof(EmbedParameter));
}
constexpr auto EmbedParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &EmbedParameter::MergeImpl,
          Super_::GetNewImpl<EmbedParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &EmbedParameter::SharedDtor,
          Super_::GetClearImpl<EmbedParameter>(), &EmbedParameter::ByteSizeLong,
              &EmbedParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[34],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct EmbedParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr EmbedParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 EmbedParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(EmbedParameter::InternalGenerateClassData_(
            _default, &EmbedParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<EmbedParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~EmbedParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) EmbedParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<EmbedParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(EmbedParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST EmbedParameterGlobalsTypeInternal EmbedParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* EmbedParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return EmbedParameter_globals_.GetClassData();
#else
  return EmbedParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class DummyDataParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<DummyDataParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_._has_bits_);
};

constexpr DummyDataParameter::ParseTableT_ DummyDataParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_._has_bits_),
      0, // no _extensions_
      6, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967232,  // skipmap
      offsetof(ParseTableT_, field_entries),
      6,  // num_field_entries
      2,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::DummyDataParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // repeated .caffe.FillerParameter data_filler = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.data_filler_)}},
      // repeated uint32 num = 2;
      {::_pbi::TcParser::FastV32R1,
       {16, 1, 0,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.num_)}},
      // repeated uint32 channels = 3;
      {::_pbi::TcParser::FastV32R1,
       {24, 2, 0,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.channels_)}},
      // repeated uint32 height = 4;
      {::_pbi::TcParser::FastV32R1,
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.height_)}},
      // repeated uint32 width = 5;
      {::_pbi::TcParser::FastV32R1,
       {40, 4, 0,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.width_)}},
      // repeated .caffe.BlobShape shape = 6;
      {::_pbi::TcParser::FastMtR1,
       {50, 5, 1,
        PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.shape_)}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .caffe.FillerParameter data_filler = 1;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.data_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated uint32 num = 2;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.num_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // repeated uint32 channels = 3;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.channels_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // repeated uint32 height = 4;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.height_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // repeated uint32 width = 5;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.width_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // repeated .caffe.BlobShape shape = 6;
      {PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_.shape_), _Internal::kHasBitsOffset + 5, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobShape>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobShape_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr DummyDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : data_filler_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.data_filler_)>()
         }
        ,
        num_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.num_)>()
         }
        ,
        channels_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.channels_)>()
         }
        ,
        height_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.height_)>()
         }
        ,
        width_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.width_)>()
         }
        ,
        shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.shape_)>()
         }
     {}

template <typename>
constexpr DummyDataParameter::DummyDataParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL DummyDataParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) DummyDataParameter(arena);
}
constexpr auto DummyDataParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(DummyDataParameter), alignof(DummyDataParameter));
}
constexpr auto DummyDataParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &DummyDataParameter::MergeImpl,
          Super_::GetNewImpl<DummyDataParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &DummyDataParameter::SharedDtor,
          Super_::GetClearImpl<DummyDataParameter>(), &DummyDataParameter::ByteSizeLong,
              &DummyDataParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(DummyDataParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[31],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct DummyDataParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr DummyDataParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 DummyDataParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(DummyDataParameter::InternalGenerateClassData_(
            _default, &DummyDataParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<DummyDataParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~DummyDataParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) DummyDataParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<DummyDataParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(DummyDataParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST DummyDataParameterGlobalsTypeInternal DummyDataParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* DummyDataParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return DummyDataParameter_globals_.GetClassData();
#else
  return DummyDataParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class ConvolutionParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<ConvolutionParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_._has_bits_);
};

constexpr ConvolutionParameter::ParseTableT_ ConvolutionParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_._has_bits_),
      0, // no _extensions_
      18, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294705152,  // skipmap
      offsetof(ParseTableT_, field_entries),
      18,  // num_field_entries
      3,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::ConvolutionParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 num_output = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.num_output_), 6>(),
       {8, 6, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.num_output_)}},
      // optional bool bias_term = 2 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(ConvolutionParameter, _impl_.bias_term_), 16>(),
       {16, 16, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.bias_term_)}},
      // repeated uint32 pad = 3;
      {::_pbi::TcParser::FastV32R1,
       {24, 0, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_)}},
      // repeated uint32 kernel_size = 4;
      {::_pbi::TcParser::FastV32R1,
       {32, 1, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_size_)}},
      // optional uint32 group = 5 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.group_), 17>(),
       {40, 17, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.group_)}},
      // repeated uint32 stride = 6;
      {::_pbi::TcParser::FastV32R1,
       {48, 2, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_)}},
      // optional .caffe.FillerParameter weight_filler = 7;
      {::_pbi::TcParser::FastMtS1,
       {58, 4, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.weight_filler_)}},
      // optional .caffe.FillerParameter bias_filler = 8;
      {::_pbi::TcParser::FastMtS1,
       {66, 5, 1,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.bias_filler_)}},
      // optional uint32 pad_h = 9 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.pad_h_), 7>(),
       {72, 7, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_h_)}},
      // optional uint32 pad_w = 10 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.pad_w_), 8>(),
       {80, 8, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_w_)}},
      // optional uint32 kernel_h = 11;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.kernel_h_), 9>(),
       {88, 9, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_h_)}},
      // optional uint32 kernel_w = 12;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.kernel_w_), 10>(),
       {96, 10, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_w_)}},
      // optional uint32 stride_h = 13;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.stride_h_), 11>(),
       {104, 11, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_h_)}},
      // optional uint32 stride_w = 14;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConvolutionParameter, _impl_.stride_w_), 12>(),
       {112, 12, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_w_)}},
      // optional .caffe.ConvolutionParameter.Engine engine = 15 [default = DEFAULT];
      {::_pbi::TcParser::FastEr0S1,
       {120, 13, 2,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.engine_)}},
      // optional int32 axis = 16 [default = 1];
      {::_pbi::TcParser::FastV32S2,
       {384, 15, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.axis_)}},
      // optional bool force_nd_im2col = 17 [default = false];
      {::_pbi::TcParser::FastV8S2,
       {392, 14, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.force_nd_im2col_)}},
      // repeated uint32 dilation = 18;
      {::_pbi::TcParser::FastV32R2,
       {400, 3, 0,
        PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.dilation_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_output = 1;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.num_output_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool bias_term = 2 [default = true];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.bias_term_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // repeated uint32 pad = 3;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // repeated uint32 kernel_size = 4;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_size_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // optional uint32 group = 5 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.group_), _Internal::kHasBitsOffset + 17, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // repeated uint32 stride = 6;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
      // optional .caffe.FillerParameter weight_filler = 7;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.weight_filler_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter bias_filler = 8;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 5, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional uint32 pad_h = 9 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_h_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 pad_w = 10 [default = 0];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.pad_w_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 kernel_h = 11;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_h_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 kernel_w = 12;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.kernel_w_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride_h = 13;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_h_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride_w = 14;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.stride_w_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.ConvolutionParameter.Engine engine = 15 [default = DEFAULT];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.engine_), _Internal::kHasBitsOffset + 13, 2, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 axis = 16 [default = 1];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.axis_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool force_nd_im2col = 17 [default = false];
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.force_nd_im2col_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // repeated uint32 dilation = 18;
      {PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.dilation_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kUInt32)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr ConvolutionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : pad_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_)>()
         }
        ,
        kernel_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_size_)>()
         }
        ,
        stride_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_)>()
         }
        ,
        dilation_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.dilation_)>()
         }
        ,
        weight_filler_{nullptr},
        bias_filler_{nullptr},
        num_output_{0u},
        pad_h_{0u},
        pad_w_{0u},
        kernel_h_{0u},
        kernel_w_{0u},
        stride_h_{0u},
        stride_w_{0u},
        engine_{static_cast< ::caffe::ConvolutionParameter_Engine >(0)},
        force_nd_im2col_{false},
        axis_{1},
        bias_term_{true},
        group_{1u} {}

template <typename>
constexpr ConvolutionParameter::ConvolutionParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL ConvolutionParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) ConvolutionParameter(arena);
}
constexpr auto ConvolutionParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(ConvolutionParameter), alignof(ConvolutionParameter));
}
constexpr auto ConvolutionParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &ConvolutionParameter::MergeImpl,
          Super_::GetNewImpl<ConvolutionParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &ConvolutionParameter::SharedDtor,
          Super_::GetClearImpl<ConvolutionParameter>(), &ConvolutionParameter::ByteSizeLong,
              &ConvolutionParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[22],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct ConvolutionParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr ConvolutionParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 ConvolutionParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(ConvolutionParameter::InternalGenerateClassData_(
            _default, &ConvolutionParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<ConvolutionParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~ConvolutionParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) ConvolutionParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<ConvolutionParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(ConvolutionParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST ConvolutionParameterGlobalsTypeInternal ConvolutionParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* ConvolutionParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return ConvolutionParameter_globals_.GetClassData();
#else
  return ConvolutionParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BlobProto::_Internal {
 public:
  using HasBits = decltype(::std::declval<BlobProto>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BlobProto, _impl_._has_bits_);
};

constexpr BlobProto::ParseTableT_ BlobProto::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BlobProto, _impl_._has_bits_),
      0, // no _extensions_
      9, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294966784,  // skipmap
      offsetof(ParseTableT_, field_entries),
      9,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BlobProto>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 num = 1 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BlobProto, _impl_.num_), 5>(),
       {8, 5, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.num_)}},
      // optional int32 channels = 2 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BlobProto, _impl_.channels_), 6>(),
       {16, 6, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.channels_)}},
      // optional int32 height = 3 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BlobProto, _impl_.height_), 7>(),
       {24, 7, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.height_)}},
      // optional int32 width = 4 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BlobProto, _impl_.width_), 8>(),
       {32, 8, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.width_)}},
      // repeated float data = 5 [packed = true];
      {::_pbi::TcParser::FastF32P1,
       {42, 0, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.data_)}},
      // repeated float diff = 6 [packed = true];
      {::_pbi::TcParser::FastF32P1,
       {50, 1, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.diff_)}},
      // optional .caffe.BlobShape shape = 7;
      {::_pbi::TcParser::FastMtS1,
       {58, 4, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.shape_)}},
      // repeated double double_data = 8 [packed = true];
      {::_pbi::TcParser::FastF64P1,
       {66, 2, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.double_data_)}},
      // repeated double double_diff = 9 [packed = true];
      {::_pbi::TcParser::FastF64P1,
       {74, 3, 0,
        PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.double_diff_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 num = 1 [default = 0];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.num_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 channels = 2 [default = 0];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.channels_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 height = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.height_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 width = 4 [default = 0];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.width_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated float data = 5 [packed = true];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.data_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedFloat)},
      // repeated float diff = 6 [packed = true];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.diff_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedFloat)},
      // optional .caffe.BlobShape shape = 7;
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.shape_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated double double_data = 8 [packed = true];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.double_data_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedDouble)},
      // repeated double double_diff = 9 [packed = true];
      {PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.double_diff_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedDouble)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobShape>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobShape_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr BlobProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.data_)>()
         }
        ,
        diff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.diff_)>()
         }
        ,
        double_data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_data_)>()
         }
        ,
        double_diff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_diff_)>()
         }
        ,
        shape_{nullptr},
        num_{0},
        channels_{0},
        height_{0},
        width_{0} {}

template <typename>
constexpr BlobProto::BlobProto(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BlobProto::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BlobProto(arena);
}
constexpr auto BlobProto::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(BlobProto), alignof(BlobProto));
}
constexpr auto BlobProto::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BlobProto::MergeImpl,
          Super_::GetNewImpl<BlobProto>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BlobProto::SharedDtor,
          Super_::GetClearImpl<BlobProto>(), &BlobProto::ByteSizeLong,
              &BlobProto::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BlobProto, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[1],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BlobProtoGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BlobProtoGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BlobProto_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BlobProto::InternalGenerateClassData_(
            _default, &BlobProto_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BlobProto>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BlobProtoGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BlobProto _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BlobProto>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BlobProtoGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BlobProtoGlobalsTypeInternal BlobProto_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BlobProto_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BlobProto_globals_.GetClassData();
#else
  return BlobProto_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BiasParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<BiasParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_._has_bits_);
};

constexpr BiasParameter::ParseTableT_ BiasParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BiasParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional int32 axis = 1 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BiasParameter, _impl_.axis_), 1>(),
       {8, 1, 0,
        PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.axis_)}},
      // optional int32 num_axes = 2 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(BiasParameter, _impl_.num_axes_), 2>(),
       {16, 2, 0,
        PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.num_axes_)}},
      // optional .caffe.FillerParameter filler = 3;
      {::_pbi::TcParser::FastMtS1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.filler_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 axis = 1 [default = 1];
      {PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.axis_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 num_axes = 2 [default = 1];
      {PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.num_axes_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .caffe.FillerParameter filler = 3;
      {PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr BiasParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : filler_{nullptr},
        axis_{1},
        num_axes_{1} {}

template <typename>
constexpr BiasParameter::BiasParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BiasParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BiasParameter(arena);
}
constexpr auto BiasParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(BiasParameter), alignof(BiasParameter));
}
constexpr auto BiasParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BiasParameter::MergeImpl,
          Super_::GetNewImpl<BiasParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BiasParameter::SharedDtor,
          Super_::GetClearImpl<BiasParameter>(), &BiasParameter::ByteSizeLong,
              &BiasParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[19],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BiasParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BiasParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BiasParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BiasParameter::InternalGenerateClassData_(
            _default, &BiasParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BiasParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BiasParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BiasParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BiasParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BiasParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BiasParameterGlobalsTypeInternal BiasParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BiasParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BiasParameter_globals_.GetClassData();
#else
  return BiasParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BNParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<BNParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BNParameter, _impl_._has_bits_);
};

constexpr BNParameter::ParseTableT_ BNParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BNParameter, _impl_._has_bits_),
      0, // no _extensions_
      3, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967288,  // skipmap
      offsetof(ParseTableT_, field_entries),
      3,  // num_field_entries
      3,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BNParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.FillerParameter scale_filler = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.scale_filler_)}},
      // optional .caffe.FillerParameter shift_filler = 2;
      {::_pbi::TcParser::FastMtS1,
       {18, 1, 1,
        PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.shift_filler_)}},
      // optional .caffe.BNParameter.BNMode bn_mode = 3 [default = LEARN];
      {::_pbi::TcParser::FastEr0S1,
       {24, 2, 1,
        PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.bn_mode_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional .caffe.FillerParameter scale_filler = 1;
      {PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.scale_filler_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter shift_filler = 2;
      {PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.shift_filler_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.BNParameter.BNMode bn_mode = 3 [default = LEARN];
      {PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.bn_mode_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr BNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : scale_filler_{nullptr},
        shift_filler_{nullptr},
        bn_mode_{static_cast< ::caffe::BNParameter_BNMode >(0)} {}

template <typename>
constexpr BNParameter::BNParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BNParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BNParameter(arena);
}
constexpr auto BNParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(BNParameter), alignof(BNParameter));
}
constexpr auto BNParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BNParameter::MergeImpl,
          Super_::GetNewImpl<BNParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BNParameter::SharedDtor,
          Super_::GetClearImpl<BNParameter>(), &BNParameter::ByteSizeLong,
              &BNParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BNParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[20],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BNParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BNParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BNParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BNParameter::InternalGenerateClassData_(
            _default, &BNParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BNParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BNParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BNParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BNParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BNParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BNParameterGlobalsTypeInternal BNParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BNParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BNParameter_globals_.GetClassData();
#else
  return BNParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class V0LayerParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<V0LayerParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_._has_bits_);
};

constexpr V0LayerParameter::ParseTableT_ V0LayerParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_._has_bits_),
      0, // no _extensions_
      1001, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4290772992,  // skipmap
      offsetof(ParseTableT_, field_entries),
      38,  // num_field_entries
      5,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::V0LayerParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string name = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.name_)}},
      // optional string type = 2;
      {::_pbi::TcParser::FastBS1,
       {18, 1, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.type_)}},
      // optional uint32 num_output = 3;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.num_output_), 8>(),
       {24, 8, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.num_output_)}},
      // optional bool biasterm = 4 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(V0LayerParameter, _impl_.biasterm_), 20>(),
       {32, 20, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.biasterm_)}},
      // optional .caffe.FillerParameter weight_filler = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 5, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.weight_filler_)}},
      // optional .caffe.FillerParameter bias_filler = 6;
      {::_pbi::TcParser::FastMtS1,
       {50, 6, 1,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.bias_filler_)}},
      // optional uint32 pad = 7 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.pad_), 9>(),
       {56, 9, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.pad_)}},
      // optional uint32 kernelsize = 8;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.kernelsize_), 10>(),
       {64, 10, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.kernelsize_)}},
      // optional uint32 group = 9 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.group_), 21>(),
       {72, 21, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.group_)}},
      // optional uint32 stride = 10 [default = 1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.stride_), 22>(),
       {80, 22, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.stride_)}},
      // optional .caffe.V0LayerParameter.PoolMethod pool = 11 [default = MAX];
      {::_pbi::TcParser::FastEr0S1,
       {88, 11, 2,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.pool_)}},
      // optional float dropout_ratio = 12 [default = 0.5];
      {::_pbi::TcParser::FastF32S1,
       {101, 23, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.dropout_ratio_)}},
      // optional uint32 local_size = 13 [default = 5];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(V0LayerParameter, _impl_.local_size_), 24>(),
       {104, 24, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.local_size_)}},
      // optional float alpha = 14 [default = 1];
      {::_pbi::TcParser::FastF32S1,
       {117, 25, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.alpha_)}},
      // optional float beta = 15 [default = 0.75];
      {::_pbi::TcParser::FastF32S1,
       {125, 26, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.beta_)}},
      // optional string source = 16;
      {::_pbi::TcParser::FastBS2,
       {386, 2, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.source_)}},
      // optional float scale = 17 [default = 1];
      {::_pbi::TcParser::FastF32S2,
       {397, 27, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.scale_)}},
      // optional string meanfile = 18;
      {::_pbi::TcParser::FastBS2,
       {402, 3, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.meanfile_)}},
      // optional uint32 batchsize = 19;
      {::_pbi::TcParser::FastV32S2,
       {408, 12, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.batchsize_)}},
      // optional uint32 cropsize = 20 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {416, 13, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.cropsize_)}},
      // optional bool mirror = 21 [default = false];
      {::_pbi::TcParser::FastV8S2,
       {424, 14, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.mirror_)}},
      // optional float k = 22 [default = 1];
      {::_pbi::TcParser::FastF32S2,
       {437, 28, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.k_)}},
      // optional float det_bg_threshold = 55 [default = 0.5];
      {::_pbi::TcParser::FastF32S2,
       {957, 29, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_bg_threshold_)}},
      // optional float det_fg_fraction = 56 [default = 0.25];
      {::_pbi::TcParser::FastF32S2,
       {965, 30, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_fg_fraction_)}},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 1001;
      {::_pbi::TcParser::FastMtS2,
       {16074, 7, 3,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.hdf5_output_param_)}},
      // optional uint32 det_context_pad = 58 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {976, 15, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_context_pad_)}},
      // optional string det_crop_mode = 59 [default = "warp"];
      {::_pbi::TcParser::FastBS2,
       {986, 4, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_crop_mode_)}},
      // optional int32 new_num = 60 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {992, 16, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_num_)}},
      // optional int32 new_channels = 61 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {1000, 17, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_channels_)}},
      // optional int32 new_height = 62 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {1008, 18, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_height_)}},
      // optional int32 new_width = 63 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {1016, 19, 0,
        PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_width_)}},
    }}, {{
      50, 0, 1,
      128, 22,
      1001, 0, 1,
      65534, 37,
      65535, 65535
    }}, {{
      // optional string name = 1;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.name_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string type = 2;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.type_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 num_output = 3;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.num_output_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool biasterm = 4 [default = true];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.biasterm_), _Internal::kHasBitsOffset + 20, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.FillerParameter weight_filler = 5;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.weight_filler_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FillerParameter bias_filler = 6;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.bias_filler_), _Internal::kHasBitsOffset + 6, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional uint32 pad = 7 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.pad_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 kernelsize = 8;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.kernelsize_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 group = 9 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.group_), _Internal::kHasBitsOffset + 21, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 stride = 10 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.stride_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.V0LayerParameter.PoolMethod pool = 11 [default = MAX];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.pool_), _Internal::kHasBitsOffset + 11, 4, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional float dropout_ratio = 12 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.dropout_ratio_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional uint32 local_size = 13 [default = 5];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.local_size_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float alpha = 14 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.alpha_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float beta = 15 [default = 0.75];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.beta_), _Internal::kHasBitsOffset + 26, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string source = 16;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.source_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float scale = 17 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.scale_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string meanfile = 18;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.meanfile_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional uint32 batchsize = 19;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.batchsize_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional uint32 cropsize = 20 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.cropsize_), _Internal::kHasBitsOffset + 13, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool mirror = 21 [default = false];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.mirror_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float k = 22 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.k_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // repeated .caffe.BlobProto blobs = 50;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.blobs_), _Internal::kHasBitsOffset + 31, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated float blobs_lr = 51;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.blobs_lr_), _Internal::kHasBitsOffset + 32, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated float weight_decay = 52;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.weight_decay_), _Internal::kHasBitsOffset + 33, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional uint32 rand_skip = 53 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.rand_skip_), _Internal::kHasBitsOffset + 34, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional float det_fg_threshold = 54 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_fg_threshold_), _Internal::kHasBitsOffset + 36, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float det_bg_threshold = 55 [default = 0.5];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_bg_threshold_), _Internal::kHasBitsOffset + 29, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float det_fg_fraction = 56 [default = 0.25];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_fg_fraction_), _Internal::kHasBitsOffset + 30, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional uint32 det_context_pad = 58 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_context_pad_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional string det_crop_mode = 59 [default = "warp"];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_crop_mode_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional int32 new_num = 60 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_num_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 new_channels = 61 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_channels_), _Internal::kHasBitsOffset + 17, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 new_height = 62 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_height_), _Internal::kHasBitsOffset + 18, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 new_width = 63 [default = 0];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.new_width_), _Internal::kHasBitsOffset + 19, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool shuffle_images = 64 [default = false];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.shuffle_images_), _Internal::kHasBitsOffset + 35, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional uint32 concat_dim = 65 [default = 1];
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.concat_dim_), _Internal::kHasBitsOffset + 37, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 1001;
      {PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.hdf5_output_param_), _Internal::kHasBitsOffset + 7, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FillerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FillerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HDF5OutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HDF5OutputParameter_globals_},
        #endif
        {0, 2},
    }},
    {{
    }},
  };
}


inline constexpr V0LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        type_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        source_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        meanfile_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        det_crop_mode_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        weight_filler_{nullptr},
        bias_filler_{nullptr},
        hdf5_output_param_{nullptr},
        num_output_{0u},
        pad_{0u},
        kernelsize_{0u},
        pool_{static_cast< ::caffe::V0LayerParameter_PoolMethod >(0)},
        batchsize_{0u},
        cropsize_{0u},
        mirror_{false},
        det_context_pad_{0u},
        new_num_{0},
        new_channels_{0},
        new_height_{0},
        new_width_{0},
        biasterm_{true},
        group_{1u},
        stride_{1u},
        dropout_ratio_{0.5f},
        local_size_{5u},
        alpha_{1},
        beta_{0.75f},
        scale_{1},
        k_{1},
        det_bg_threshold_{0.5f},
        det_fg_fraction_{0.25f},
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_)>()
         }
        ,
        blobs_lr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_lr_)>()
         }
        ,
        weight_decay_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.weight_decay_)>()
         }
        ,
        rand_skip_{0u},
        shuffle_images_{false},
        det_fg_threshold_{0.5f},
        concat_dim_{1u} {}

template <typename>
constexpr V0LayerParameter::V0LayerParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL V0LayerParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) V0LayerParameter(arena);
}
constexpr auto V0LayerParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(V0LayerParameter), alignof(V0LayerParameter));
}
constexpr auto V0LayerParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &V0LayerParameter::MergeImpl,
          Super_::GetNewImpl<V0LayerParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &V0LayerParameter::SharedDtor,
          Super_::GetClearImpl<V0LayerParameter>(), &V0LayerParameter::ByteSizeLong,
              &V0LayerParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[75],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct V0LayerParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr V0LayerParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 V0LayerParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(V0LayerParameter::InternalGenerateClassData_(
            _default, &V0LayerParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<V0LayerParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~V0LayerParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) V0LayerParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<V0LayerParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(V0LayerParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST V0LayerParameterGlobalsTypeInternal V0LayerParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* V0LayerParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return V0LayerParameter_globals_.GetClassData();
#else
  return V0LayerParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SolverState::_Internal {
 public:
  using HasBits = decltype(::std::declval<SolverState>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SolverState, _impl_._has_bits_);
};

constexpr SolverState::ParseTableT_ SolverState::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SolverState, _impl_._has_bits_),
      0, // no _extensions_
      4, 24,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967280,  // skipmap
      offsetof(ParseTableT_, field_entries),
      4,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SolverState>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // optional int32 current_step = 4 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverState, _impl_.current_step_), 3>(),
       {32, 3, 0,
        PROTOBUF_FIELD_OFFSET(SolverState, _impl_.current_step_)}},
      // optional int32 iter = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverState, _impl_.iter_), 2>(),
       {8, 2, 0,
        PROTOBUF_FIELD_OFFSET(SolverState, _impl_.iter_)}},
      // optional string learned_net = 2;
      {::_pbi::TcParser::FastBS1,
       {18, 1, 0,
        PROTOBUF_FIELD_OFFSET(SolverState, _impl_.learned_net_)}},
      // repeated .caffe.BlobProto history = 3;
      {::_pbi::TcParser::FastMtR1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(SolverState, _impl_.history_)}},
    }}, {{
      65535, 65535
    }}, {{
      // optional int32 iter = 1;
      {PROTOBUF_FIELD_OFFSET(SolverState, _impl_.iter_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional string learned_net = 2;
      {PROTOBUF_FIELD_OFFSET(SolverState, _impl_.learned_net_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // repeated .caffe.BlobProto history = 3;
      {PROTOBUF_FIELD_OFFSET(SolverState, _impl_.history_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional int32 current_step = 4 [default = 0];
      {PROTOBUF_FIELD_OFFSET(SolverState, _impl_.current_step_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobProto_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr SolverState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : history_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverState,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.history_)>()
         }
        ,
        learned_net_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        iter_{0},
        current_step_{0} {}

template <typename>
constexpr SolverState::SolverState(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SolverState::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SolverState(arena);
}
constexpr auto SolverState::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SolverState), alignof(SolverState));
}
constexpr auto SolverState::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &SolverState::MergeImpl,
          Super_::GetNewImpl<SolverState>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SolverState::SharedDtor,
          Super_::GetClearImpl<SolverState>(), &SolverState::ByteSizeLong,
              &SolverState::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SolverState, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[7],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SolverStateGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SolverStateGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SolverState_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SolverState::InternalGenerateClassData_(
            _default, &SolverState_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SolverState>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SolverStateGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SolverState _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SolverState>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SolverStateGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SolverStateGlobalsTypeInternal SolverState_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SolverState_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SolverState_globals_.GetClassData();
#else
  return SolverState_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class DetectionOutputParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<DetectionOutputParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_._has_bits_);
};

constexpr DetectionOutputParameter::ParseTableT_ DetectionOutputParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_._has_bits_),
      0, // no _extensions_
      12, 120,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294963200,  // skipmap
      offsetof(ParseTableT_, field_entries),
      12,  // num_field_entries
      3,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::DetectionOutputParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional uint32 num_classes = 1;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DetectionOutputParameter, _impl_.num_classes_), 3>(),
       {8, 3, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.num_classes_)}},
      // optional bool share_location = 2 [default = true];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DetectionOutputParameter, _impl_.share_location_), 10>(),
       {16, 10, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.share_location_)}},
      // optional int32 background_label_id = 3 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DetectionOutputParameter, _impl_.background_label_id_), 4>(),
       {24, 4, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.background_label_id_)}},
      // optional .caffe.NonMaximumSuppressionParameter nms_param = 4;
      {::_pbi::TcParser::FastMtS1,
       {34, 1, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.nms_param_)}},
      // optional .caffe.SaveOutputParameter save_output_param = 5;
      {::_pbi::TcParser::FastMtS1,
       {42, 2, 1,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.save_output_param_)}},
      // optional .caffe.PriorBoxParameter.CodeType code_type = 6 [default = CORNER];
      {::_pbi::TcParser::FastEr1S1,
       {48, 11, 3,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.code_type_)}},
      // optional int32 keep_top_k = 7 [default = -1];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(DetectionOutputParameter, _impl_.keep_top_k_), 9>(),
       {56, 9, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.keep_top_k_)}},
      // optional bool variance_encoded_in_target = 8 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DetectionOutputParameter, _impl_.variance_encoded_in_target_), 6>(),
       {64, 6, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.variance_encoded_in_target_)}},
      // optional float confidence_threshold = 9;
      {::_pbi::TcParser::FastF32S1,
       {77, 5, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.confidence_threshold_)}},
      // optional bool visualize = 10 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(DetectionOutputParameter, _impl_.visualize_), 7>(),
       {80, 7, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.visualize_)}},
      // optional float visualize_threshold = 11;
      {::_pbi::TcParser::FastF32S1,
       {93, 8, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.visualize_threshold_)}},
      // optional string save_file = 12;
      {::_pbi::TcParser::FastBS1,
       {98, 0, 0,
        PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.save_file_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
    }}, {{
      65535, 65535
    }}, {{
      // optional uint32 num_classes = 1;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.num_classes_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
      // optional bool share_location = 2 [default = true];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.share_location_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional int32 background_label_id = 3 [default = 0];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.background_label_id_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .caffe.NonMaximumSuppressionParameter nms_param = 4;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.nms_param_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SaveOutputParameter save_output_param = 5;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.save_output_param_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PriorBoxParameter.CodeType code_type = 6 [default = CORNER];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.code_type_), _Internal::kHasBitsOffset + 11, 2, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 keep_top_k = 7 [default = -1];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.keep_top_k_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool variance_encoded_in_target = 8 [default = false];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.variance_encoded_in_target_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float confidence_threshold = 9;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.confidence_threshold_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional bool visualize = 10 [default = false];
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.visualize_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional float visualize_threshold = 11;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.visualize_threshold_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string save_file = 12;
      {PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.save_file_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NonMaximumSuppressionParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NonMaximumSuppressionParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SaveOutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SaveOutputParameter_globals_},
        #endif
        {1, 3},
    }},
    {{
    }},
  };
}


inline constexpr DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : save_file_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        nms_param_{nullptr},
        save_output_param_{nullptr},
        num_classes_{0u},
        background_label_id_{0},
        confidence_threshold_{0},
        variance_encoded_in_target_{false},
        visualize_{false},
        visualize_threshold_{0},
        keep_top_k_{-1},
        share_location_{true},
        code_type_{static_cast< ::caffe::PriorBoxParameter_CodeType >(1)} {}

template <typename>
constexpr DetectionOutputParameter::DetectionOutputParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL DetectionOutputParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) DetectionOutputParameter(arena);
}
constexpr auto DetectionOutputParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(DetectionOutputParameter), alignof(DetectionOutputParameter));
}
constexpr auto DetectionOutputParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &DetectionOutputParameter::MergeImpl,
          Super_::GetNewImpl<DetectionOutputParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &DetectionOutputParameter::SharedDtor,
          Super_::GetClearImpl<DetectionOutputParameter>(), &DetectionOutputParameter::ByteSizeLong,
              &DetectionOutputParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[27],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct DetectionOutputParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr DetectionOutputParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 DetectionOutputParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(DetectionOutputParameter::InternalGenerateClassData_(
            _default, &DetectionOutputParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<DetectionOutputParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~DetectionOutputParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) DetectionOutputParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<DetectionOutputParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(DetectionOutputParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST DetectionOutputParameterGlobalsTypeInternal DetectionOutputParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* DetectionOutputParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return DetectionOutputParameter_globals_.GetClassData();
#else
  return DetectionOutputParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class BlobProtoVector::_Internal {
 public:
  using HasBits = decltype(::std::declval<BlobProtoVector>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(BlobProtoVector, _impl_._has_bits_);
};

constexpr BlobProtoVector::ParseTableT_ BlobProtoVector::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(BlobProtoVector, _impl_._has_bits_),
      0, // no _extensions_
      1, 0,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967294,  // skipmap
      offsetof(ParseTableT_, field_entries),
      1,  // num_field_entries
      1,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::BlobProtoVector>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated .caffe.BlobProto blobs = 1;
      {::_pbi::TcParser::FastMtR1,
       {10, 0, 0,
        PROTOBUF_FIELD_OFFSET(BlobProtoVector, _impl_.blobs_)}},
    }}, {{
      65535, 65535
    }}, {{
      // repeated .caffe.BlobProto blobs = 1;
      {PROTOBUF_FIELD_OFFSET(BlobProtoVector, _impl_.blobs_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobProto_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr BlobProtoVector::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProtoVector,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProtoVector, _impl_.blobs_)>()
         }
     {}

template <typename>
constexpr BlobProtoVector::BlobProtoVector(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL BlobProtoVector::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) BlobProtoVector(arena);
}
constexpr auto BlobProtoVector::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(BlobProtoVector), alignof(BlobProtoVector));
}
constexpr auto BlobProtoVector::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &BlobProtoVector::MergeImpl,
          Super_::GetNewImpl<BlobProtoVector>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &BlobProtoVector::SharedDtor,
          Super_::GetClearImpl<BlobProtoVector>(), &BlobProtoVector::ByteSizeLong,
              &BlobProtoVector::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(BlobProtoVector, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[2],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct BlobProtoVectorGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr BlobProtoVectorGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 BlobProtoVector_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(BlobProtoVector::InternalGenerateClassData_(
            _default, &BlobProtoVector_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<BlobProtoVector>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~BlobProtoVectorGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) BlobProtoVector _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<BlobProtoVector>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(BlobProtoVectorGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST BlobProtoVectorGlobalsTypeInternal BlobProtoVector_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* BlobProtoVector_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return BlobProtoVector_globals_.GetClassData();
#else
  return BlobProtoVector_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class V1LayerParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<V1LayerParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_._has_bits_);
};

constexpr V1LayerParameter::ParseTableT_ V1LayerParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_._has_bits_),
      0, // no _extensions_
      1002, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      134217728,  // skipmap
      offsetof(ParseTableT_, field_entries),
      43,  // num_field_entries
      36,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::V1LayerParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.V0LayerParameter layer = 1;
      {::_pbi::TcParser::FastMtS1,
       {10, 6, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.layer_)}},
      // repeated string bottom = 2;
      {::_pbi::TcParser::FastBR1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.bottom_)}},
      // repeated string top = 3;
      {::_pbi::TcParser::FastBR1,
       {26, 1, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.top_)}},
      // optional string name = 4;
      {::_pbi::TcParser::FastBS1,
       {34, 5, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.name_)}},
      // optional .caffe.V1LayerParameter.LayerType type = 5;
      {::_pbi::TcParser::FastEr0S1,
       {40, 29, 39,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.type_)}},
      // repeated .caffe.BlobProto blobs = 6;
      {::_pbi::TcParser::FastMtR1,
       {50, 2, 1,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.blobs_)}},
      // repeated float blobs_lr = 7;
      {::_pbi::TcParser::FastF32R1,
       {61, 3, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.blobs_lr_)}},
      // repeated float weight_decay = 8;
      {::_pbi::TcParser::FastF32R1,
       {69, 4, 0,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.weight_decay_)}},
      // optional .caffe.ConcatParameter concat_param = 9;
      {::_pbi::TcParser::FastMtS1,
       {74, 7, 2,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.concat_param_)}},
      // optional .caffe.ConvolutionParameter convolution_param = 10;
      {::_pbi::TcParser::FastMtS1,
       {82, 8, 3,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.convolution_param_)}},
      // optional .caffe.DataParameter data_param = 11;
      {::_pbi::TcParser::FastMtS1,
       {90, 9, 4,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.data_param_)}},
      // optional .caffe.DropoutParameter dropout_param = 12;
      {::_pbi::TcParser::FastMtS1,
       {98, 10, 5,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.dropout_param_)}},
      // optional .caffe.HDF5DataParameter hdf5_data_param = 13;
      {::_pbi::TcParser::FastMtS1,
       {106, 11, 6,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hdf5_data_param_)}},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 14;
      {::_pbi::TcParser::FastMtS1,
       {114, 12, 7,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hdf5_output_param_)}},
      // optional .caffe.ImageDataParameter image_data_param = 15;
      {::_pbi::TcParser::FastMtS1,
       {122, 13, 8,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.image_data_param_)}},
      // optional .caffe.InfogainLossParameter infogain_loss_param = 16;
      {::_pbi::TcParser::FastMtS2,
       {386, 14, 9,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.infogain_loss_param_)}},
      // optional .caffe.InnerProductParameter inner_product_param = 17;
      {::_pbi::TcParser::FastMtS2,
       {394, 15, 10,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.inner_product_param_)}},
      // optional .caffe.LRNParameter lrn_param = 18;
      {::_pbi::TcParser::FastMtS2,
       {402, 16, 11,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.lrn_param_)}},
      // optional .caffe.PoolingParameter pooling_param = 19;
      {::_pbi::TcParser::FastMtS2,
       {410, 17, 12,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.pooling_param_)}},
      // optional .caffe.WindowDataParameter window_data_param = 20;
      {::_pbi::TcParser::FastMtS2,
       {418, 18, 13,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.window_data_param_)}},
      // optional .caffe.PowerParameter power_param = 21;
      {::_pbi::TcParser::FastMtS2,
       {426, 19, 14,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.power_param_)}},
      // optional .caffe.MemoryDataParameter memory_data_param = 22;
      {::_pbi::TcParser::FastMtS2,
       {434, 20, 15,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.memory_data_param_)}},
      // optional .caffe.ArgMaxParameter argmax_param = 23;
      {::_pbi::TcParser::FastMtS2,
       {442, 21, 16,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.argmax_param_)}},
      // optional .caffe.EltwiseParameter eltwise_param = 24;
      {::_pbi::TcParser::FastMtS2,
       {450, 22, 17,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.eltwise_param_)}},
      // optional .caffe.ThresholdParameter threshold_param = 25;
      {::_pbi::TcParser::FastMtS2,
       {458, 23, 18,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.threshold_param_)}},
      // optional .caffe.DummyDataParameter dummy_data_param = 26;
      {::_pbi::TcParser::FastMtS2,
       {466, 24, 19,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.dummy_data_param_)}},
      // optional .caffe.AccuracyParameter accuracy_param = 27;
      {::_pbi::TcParser::FastMtS2,
       {474, 25, 20,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.accuracy_param_)}},
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.HingeLossParameter hinge_loss_param = 29;
      {::_pbi::TcParser::FastMtS2,
       {490, 26, 21,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hinge_loss_param_)}},
      // optional .caffe.ReLUParameter relu_param = 30;
      {::_pbi::TcParser::FastMtS2,
       {498, 27, 22,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.relu_param_)}},
      // optional .caffe.SliceParameter slice_param = 31;
      {::_pbi::TcParser::FastMtS2,
       {506, 28, 23,
        PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.slice_param_)}},
    }}, {{
      33, 0, 1,
      64512, 31,
      1001, 0, 1,
      65532, 41,
      65535, 65535
    }}, {{
      // optional .caffe.V0LayerParameter layer = 1;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.layer_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated string bottom = 2;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.bottom_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated string top = 3;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.top_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // optional string name = 4;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.name_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional .caffe.V1LayerParameter.LayerType type = 5;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.type_), _Internal::kHasBitsOffset + 29, 34, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // repeated .caffe.BlobProto blobs = 6;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.blobs_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated float blobs_lr = 7;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.blobs_lr_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated float weight_decay = 8;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.weight_decay_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional .caffe.ConcatParameter concat_param = 9;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.concat_param_), _Internal::kHasBitsOffset + 7, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ConvolutionParameter convolution_param = 10;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.convolution_param_), _Internal::kHasBitsOffset + 8, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DataParameter data_param = 11;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.data_param_), _Internal::kHasBitsOffset + 9, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DropoutParameter dropout_param = 12;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.dropout_param_), _Internal::kHasBitsOffset + 10, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HDF5DataParameter hdf5_data_param = 13;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hdf5_data_param_), _Internal::kHasBitsOffset + 11, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 14;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hdf5_output_param_), _Internal::kHasBitsOffset + 12, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ImageDataParameter image_data_param = 15;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.image_data_param_), _Internal::kHasBitsOffset + 13, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InfogainLossParameter infogain_loss_param = 16;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.infogain_loss_param_), _Internal::kHasBitsOffset + 14, 9, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InnerProductParameter inner_product_param = 17;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.inner_product_param_), _Internal::kHasBitsOffset + 15, 10, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.LRNParameter lrn_param = 18;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.lrn_param_), _Internal::kHasBitsOffset + 16, 11, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PoolingParameter pooling_param = 19;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.pooling_param_), _Internal::kHasBitsOffset + 17, 12, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.WindowDataParameter window_data_param = 20;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.window_data_param_), _Internal::kHasBitsOffset + 18, 13, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PowerParameter power_param = 21;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.power_param_), _Internal::kHasBitsOffset + 19, 14, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.MemoryDataParameter memory_data_param = 22;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.memory_data_param_), _Internal::kHasBitsOffset + 20, 15, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ArgMaxParameter argmax_param = 23;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.argmax_param_), _Internal::kHasBitsOffset + 21, 16, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.EltwiseParameter eltwise_param = 24;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.eltwise_param_), _Internal::kHasBitsOffset + 22, 17, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ThresholdParameter threshold_param = 25;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.threshold_param_), _Internal::kHasBitsOffset + 23, 18, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DummyDataParameter dummy_data_param = 26;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.dummy_data_param_), _Internal::kHasBitsOffset + 24, 19, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.AccuracyParameter accuracy_param = 27;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.accuracy_param_), _Internal::kHasBitsOffset + 25, 20, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HingeLossParameter hinge_loss_param = 29;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.hinge_loss_param_), _Internal::kHasBitsOffset + 26, 21, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ReLUParameter relu_param = 30;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.relu_param_), _Internal::kHasBitsOffset + 27, 22, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SliceParameter slice_param = 31;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.slice_param_), _Internal::kHasBitsOffset + 28, 23, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetStateRule include = 32;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.include_), _Internal::kHasBitsOffset + 30, 24, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetStateRule exclude = 33;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.exclude_), _Internal::kHasBitsOffset + 31, 25, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.MVNParameter mvn_param = 34;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.mvn_param_), _Internal::kHasBitsOffset + 35, 26, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated float loss_weight = 35;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.loss_weight_), _Internal::kHasBitsOffset + 32, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // optional .caffe.TransformationParameter transform_param = 36;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.transform_param_), _Internal::kHasBitsOffset + 36, 27, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.TanHParameter tanh_param = 37;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.tanh_param_), _Internal::kHasBitsOffset + 37, 28, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SigmoidParameter sigmoid_param = 38;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.sigmoid_param_), _Internal::kHasBitsOffset + 38, 29, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SoftmaxParameter softmax_param = 39;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.softmax_param_), _Internal::kHasBitsOffset + 39, 30, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 40;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.contrastive_loss_param_), _Internal::kHasBitsOffset + 40, 31, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ExpParameter exp_param = 41;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.exp_param_), _Internal::kHasBitsOffset + 41, 32, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.LossParameter loss_param = 42;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.loss_param_), _Internal::kHasBitsOffset + 42, 33, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated string param = 1001;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.param_), _Internal::kHasBitsOffset + 33, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated .caffe.V1LayerParameter.DimCheckMode blob_share_mode = 1002;
      {PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.blob_share_mode_), _Internal::kHasBitsOffset + 34, 35, (0 | ::_fl::kFcRepeated | ::_fl::kEnumRange)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::V0LayerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::V0LayerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ConcatParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ConcatParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ConvolutionParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ConvolutionParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DropoutParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DropoutParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HDF5DataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HDF5DataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HDF5OutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HDF5OutputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ImageDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ImageDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InfogainLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InfogainLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InnerProductParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InnerProductParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LRNParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LRNParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PoolingParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PoolingParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::WindowDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::WindowDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PowerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PowerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::MemoryDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::MemoryDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ArgMaxParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ArgMaxParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::EltwiseParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::EltwiseParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ThresholdParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ThresholdParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DummyDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DummyDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::AccuracyParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::AccuracyParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HingeLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HingeLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ReLUParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ReLUParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SliceParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SliceParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetStateRule>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetStateRule_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetStateRule>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetStateRule_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::MVNParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::MVNParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::TransformationParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::TransformationParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::TanHParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::TanHParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SigmoidParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SigmoidParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SoftmaxParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SoftmaxParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ContrastiveLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ContrastiveLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ExpParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ExpParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LossParameter_globals_},
        #endif
        {0, 39},
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr V1LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : bottom_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.bottom_)>()
         }
        ,
        top_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.top_)>()
         }
        ,
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_)>()
         }
        ,
        blobs_lr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_lr_)>()
         }
        ,
        weight_decay_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.weight_decay_)>()
         }
        ,
        name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        layer_{nullptr},
        concat_param_{nullptr},
        convolution_param_{nullptr},
        data_param_{nullptr},
        dropout_param_{nullptr},
        hdf5_data_param_{nullptr},
        hdf5_output_param_{nullptr},
        image_data_param_{nullptr},
        infogain_loss_param_{nullptr},
        inner_product_param_{nullptr},
        lrn_param_{nullptr},
        pooling_param_{nullptr},
        window_data_param_{nullptr},
        power_param_{nullptr},
        memory_data_param_{nullptr},
        argmax_param_{nullptr},
        eltwise_param_{nullptr},
        threshold_param_{nullptr},
        dummy_data_param_{nullptr},
        accuracy_param_{nullptr},
        hinge_loss_param_{nullptr},
        relu_param_{nullptr},
        slice_param_{nullptr},
        type_{static_cast< ::caffe::V1LayerParameter_LayerType >(0)},
        include_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.include_)>()
         }
        ,
        exclude_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.exclude_)>()
         }
        ,
        loss_weight_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.loss_weight_)>()
         }
        ,
        param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.param_)>()
         }
        ,
        blob_share_mode_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blob_share_mode_)>()
         }
        ,
        mvn_param_{nullptr},
        transform_param_{nullptr},
        tanh_param_{nullptr},
        sigmoid_param_{nullptr},
        softmax_param_{nullptr},
        contrastive_loss_param_{nullptr},
        exp_param_{nullptr},
        loss_param_{nullptr} {}

template <typename>
constexpr V1LayerParameter::V1LayerParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL V1LayerParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) V1LayerParameter(arena);
}
constexpr auto V1LayerParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(V1LayerParameter), alignof(V1LayerParameter));
}
constexpr auto V1LayerParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          nullptr,  // IsInitialized
          &V1LayerParameter::MergeImpl,
          Super_::GetNewImpl<V1LayerParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &V1LayerParameter::SharedDtor,
          Super_::GetClearImpl<V1LayerParameter>(), &V1LayerParameter::ByteSizeLong,
              &V1LayerParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[74],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct V1LayerParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr V1LayerParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 V1LayerParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(V1LayerParameter::InternalGenerateClassData_(
            _default, &V1LayerParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<V1LayerParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~V1LayerParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) V1LayerParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<V1LayerParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(V1LayerParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST V1LayerParameterGlobalsTypeInternal V1LayerParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* V1LayerParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return V1LayerParameter_globals_.GetClassData();
#else
  return V1LayerParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class LayerParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<LayerParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_._has_bits_);
};

constexpr LayerParameter::ParseTableT_ LayerParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_._has_bits_),
      0, // no _extensions_
      8266712, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294965248,  // skipmap
      offsetof(ParseTableT_, field_entries),
      71,  // num_field_entries
      65,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::LayerParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string name = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 8, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.name_)}},
      // optional string type = 2;
      {::_pbi::TcParser::FastBS1,
       {18, 9, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.type_)}},
      // repeated string bottom = 3;
      {::_pbi::TcParser::FastBR1,
       {26, 0, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bottom_)}},
      // repeated string top = 4;
      {::_pbi::TcParser::FastBR1,
       {34, 1, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.top_)}},
      // repeated float loss_weight = 5;
      {::_pbi::TcParser::FastF32R1,
       {45, 2, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.loss_weight_)}},
      // repeated .caffe.ParamSpec param = 6;
      {::_pbi::TcParser::FastMtR1,
       {50, 3, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.param_)}},
      // repeated .caffe.BlobProto blobs = 7;
      {::_pbi::TcParser::FastMtR1,
       {58, 4, 1,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.blobs_)}},
      // repeated .caffe.NetStateRule include = 8;
      {::_pbi::TcParser::FastMtR1,
       {66, 5, 2,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.include_)}},
      // repeated .caffe.NetStateRule exclude = 9;
      {::_pbi::TcParser::FastMtR1,
       {74, 6, 3,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.exclude_)}},
      // optional .caffe.Phase phase = 10;
      {::_pbi::TcParser::FastEr0S1,
       {80, 26, 1,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.phase_)}},
      // repeated bool propagate_down = 11;
      {::_pbi::TcParser::FastV8R1,
       {88, 7, 0,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.propagate_down_)}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      {::_pbi::TcParser::MiniParse, {}},
      // optional .caffe.HDF5DataParameter hdf5_data_param = 112;
      {::_pbi::TcParser::FastMtS2,
       {1922, 22, 17,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hdf5_data_param_)}},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 113;
      {::_pbi::TcParser::FastMtS2,
       {1930, 23, 18,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hdf5_output_param_)}},
      // optional .caffe.HingeLossParameter hinge_loss_param = 114;
      {::_pbi::TcParser::FastMtS2,
       {1938, 24, 19,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hinge_loss_param_)}},
      // optional .caffe.ImageDataParameter image_data_param = 115;
      {::_pbi::TcParser::FastMtS2,
       {1946, 25, 20,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.image_data_param_)}},
      // optional .caffe.TransformationParameter transform_param = 100;
      {::_pbi::TcParser::FastMtS2,
       {1698, 11, 5,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.transform_param_)}},
      // optional .caffe.LossParameter loss_param = 101;
      {::_pbi::TcParser::FastMtS2,
       {1706, 12, 6,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.loss_param_)}},
      // optional .caffe.AccuracyParameter accuracy_param = 102;
      {::_pbi::TcParser::FastMtS2,
       {1714, 13, 7,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.accuracy_param_)}},
      // optional .caffe.ArgMaxParameter argmax_param = 103;
      {::_pbi::TcParser::FastMtS2,
       {1722, 14, 8,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.argmax_param_)}},
      // optional .caffe.ConcatParameter concat_param = 104;
      {::_pbi::TcParser::FastMtS2,
       {1730, 15, 9,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.concat_param_)}},
      // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 105;
      {::_pbi::TcParser::FastMtS2,
       {1738, 16, 10,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.contrastive_loss_param_)}},
      // optional .caffe.ConvolutionParameter convolution_param = 106;
      {::_pbi::TcParser::FastMtS2,
       {1746, 17, 11,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.convolution_param_)}},
      // optional .caffe.DataParameter data_param = 107;
      {::_pbi::TcParser::FastMtS2,
       {1754, 18, 12,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.data_param_)}},
      // optional .caffe.DropoutParameter dropout_param = 108;
      {::_pbi::TcParser::FastMtS2,
       {1762, 19, 13,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.dropout_param_)}},
      // optional .caffe.BNParameter bn_param = 45;
      {::_pbi::TcParser::FastMtS2,
       {746, 10, 4,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bn_param_)}},
      // optional .caffe.EltwiseParameter eltwise_param = 110;
      {::_pbi::TcParser::FastMtS2,
       {1778, 20, 15,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.eltwise_param_)}},
      // optional .caffe.ExpParameter exp_param = 111;
      {::_pbi::TcParser::FastMtS2,
       {1786, 21, 16,
        PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.exp_param_)}},
    }}, {{
      45, 0, 11,
      65534, 11,
      65535, 12,
      65535, 12,
      127, 12,
      0, 21,
      0, 37,
      65024, 53,
      65535, 62,
      65535, 62,
      8191, 62,
      65532, 65,
      601, 0, 1,
      65530, 67,
      9175, 126, 1,
      65532, 69,
      65535, 65535
    }}, {{
      // optional string name = 1;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.name_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional string type = 2;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.type_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // repeated string bottom = 3;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bottom_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated string top = 4;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.top_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated float loss_weight = 5;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.loss_weight_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kFloat)},
      // repeated .caffe.ParamSpec param = 6;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.param_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.BlobProto blobs = 7;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.blobs_), _Internal::kHasBitsOffset + 4, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetStateRule include = 8;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.include_), _Internal::kHasBitsOffset + 5, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetStateRule exclude = 9;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.exclude_), _Internal::kHasBitsOffset + 6, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.Phase phase = 10;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.phase_), _Internal::kHasBitsOffset + 26, 64, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // repeated bool propagate_down = 11;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.propagate_down_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBool)},
      // optional .caffe.BNParameter bn_param = 45;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bn_param_), _Internal::kHasBitsOffset + 10, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.TransformationParameter transform_param = 100;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.transform_param_), _Internal::kHasBitsOffset + 11, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.LossParameter loss_param = 101;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.loss_param_), _Internal::kHasBitsOffset + 12, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.AccuracyParameter accuracy_param = 102;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.accuracy_param_), _Internal::kHasBitsOffset + 13, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ArgMaxParameter argmax_param = 103;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.argmax_param_), _Internal::kHasBitsOffset + 14, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ConcatParameter concat_param = 104;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.concat_param_), _Internal::kHasBitsOffset + 15, 9, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 105;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.contrastive_loss_param_), _Internal::kHasBitsOffset + 16, 10, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ConvolutionParameter convolution_param = 106;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.convolution_param_), _Internal::kHasBitsOffset + 17, 11, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DataParameter data_param = 107;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.data_param_), _Internal::kHasBitsOffset + 18, 12, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DropoutParameter dropout_param = 108;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.dropout_param_), _Internal::kHasBitsOffset + 19, 13, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DummyDataParameter dummy_data_param = 109;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.dummy_data_param_), _Internal::kHasBitsOffset + 27, 14, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.EltwiseParameter eltwise_param = 110;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.eltwise_param_), _Internal::kHasBitsOffset + 20, 15, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ExpParameter exp_param = 111;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.exp_param_), _Internal::kHasBitsOffset + 21, 16, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HDF5DataParameter hdf5_data_param = 112;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hdf5_data_param_), _Internal::kHasBitsOffset + 22, 17, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HDF5OutputParameter hdf5_output_param = 113;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hdf5_output_param_), _Internal::kHasBitsOffset + 23, 18, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.HingeLossParameter hinge_loss_param = 114;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.hinge_loss_param_), _Internal::kHasBitsOffset + 24, 19, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ImageDataParameter image_data_param = 115;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.image_data_param_), _Internal::kHasBitsOffset + 25, 20, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InfogainLossParameter infogain_loss_param = 116;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.infogain_loss_param_), _Internal::kHasBitsOffset + 28, 21, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InnerProductParameter inner_product_param = 117;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.inner_product_param_), _Internal::kHasBitsOffset + 29, 22, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.LRNParameter lrn_param = 118;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.lrn_param_), _Internal::kHasBitsOffset + 30, 23, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.MemoryDataParameter memory_data_param = 119;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.memory_data_param_), _Internal::kHasBitsOffset + 31, 24, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.MVNParameter mvn_param = 120;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.mvn_param_), _Internal::kHasBitsOffset + 32, 25, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PoolingParameter pooling_param = 121;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.pooling_param_), _Internal::kHasBitsOffset + 33, 26, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PowerParameter power_param = 122;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.power_param_), _Internal::kHasBitsOffset + 34, 27, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ReLUParameter relu_param = 123;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.relu_param_), _Internal::kHasBitsOffset + 35, 28, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SigmoidParameter sigmoid_param = 124;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.sigmoid_param_), _Internal::kHasBitsOffset + 36, 29, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SoftmaxParameter softmax_param = 125;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.softmax_param_), _Internal::kHasBitsOffset + 37, 30, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SliceParameter slice_param = 126;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.slice_param_), _Internal::kHasBitsOffset + 38, 31, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.TanHParameter tanh_param = 127;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.tanh_param_), _Internal::kHasBitsOffset + 39, 32, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ThresholdParameter threshold_param = 128;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.threshold_param_), _Internal::kHasBitsOffset + 40, 33, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.WindowDataParameter window_data_param = 129;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.window_data_param_), _Internal::kHasBitsOffset + 41, 34, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PythonParameter python_param = 130;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.python_param_), _Internal::kHasBitsOffset + 42, 35, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PReLUParameter prelu_param = 131;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.prelu_param_), _Internal::kHasBitsOffset + 43, 36, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SPPParameter spp_param = 132;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.spp_param_), _Internal::kHasBitsOffset + 44, 37, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ReshapeParameter reshape_param = 133;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.reshape_param_), _Internal::kHasBitsOffset + 45, 38, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.LogParameter log_param = 134;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.log_param_), _Internal::kHasBitsOffset + 46, 39, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.FlattenParameter flatten_param = 135;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.flatten_param_), _Internal::kHasBitsOffset + 47, 40, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ReductionParameter reduction_param = 136;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.reduction_param_), _Internal::kHasBitsOffset + 48, 41, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.EmbedParameter embed_param = 137;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.embed_param_), _Internal::kHasBitsOffset + 49, 42, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.TileParameter tile_param = 138;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.tile_param_), _Internal::kHasBitsOffset + 50, 43, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.BatchNormParameter batch_norm_param = 139;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.batch_norm_param_), _Internal::kHasBitsOffset + 51, 44, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ELUParameter elu_param = 140;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.elu_param_), _Internal::kHasBitsOffset + 52, 45, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.BiasParameter bias_param = 141;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bias_param_), _Internal::kHasBitsOffset + 53, 46, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ScaleParameter scale_param = 142;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.scale_param_), _Internal::kHasBitsOffset + 54, 47, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InputParameter input_param = 143;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.input_param_), _Internal::kHasBitsOffset + 55, 48, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.CropParameter crop_param = 144;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.crop_param_), _Internal::kHasBitsOffset + 56, 49, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ShuffleChannelParameter shuffle_channel_param = 145;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.shuffle_channel_param_), _Internal::kHasBitsOffset + 57, 50, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.RecurrentParameter recurrent_param = 146;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.recurrent_param_), _Internal::kHasBitsOffset + 58, 51, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ReorgParameter reorg_param = 147;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.reorg_param_), _Internal::kHasBitsOffset + 59, 52, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ROIAlignParameter roi_align_param = 148;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.roi_align_param_), _Internal::kHasBitsOffset + 60, 53, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PSROIPoolingParameter psroi_pooling_param = 149;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.psroi_pooling_param_), _Internal::kHasBitsOffset + 61, 54, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PermuteParameter permute_param = 202;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.permute_param_), _Internal::kHasBitsOffset + 62, 55, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.PriorBoxParameter prior_box_param = 203;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.prior_box_param_), _Internal::kHasBitsOffset + 63, 56, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.DetectionOutputParameter detection_output_param = 204;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.detection_output_param_), _Internal::kHasBitsOffset + 64, 57, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.InterpParameter interp_param = 205;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.interp_param_), _Internal::kHasBitsOffset + 65, 58, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.NormalizeParameter norm_param = 206;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.norm_param_), _Internal::kHasBitsOffset + 66, 59, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.YoloDetectionOutputParameter yolo_detection_output_param = 601;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.yolo_detection_output_param_), _Internal::kHasBitsOffset + 67, 60, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.Yolov3DetectionOutputParameter yolov3_detection_output_param = 603;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.yolov3_detection_output_param_), _Internal::kHasBitsOffset + 68, 61, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.ROIPoolingParameter roi_pooling_param = 8266711;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.roi_pooling_param_), _Internal::kHasBitsOffset + 69, 62, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.SmoothL1LossParameter smooth_l1_loss_param = 8266712;
      {PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.smooth_l1_loss_param_), _Internal::kHasBitsOffset + 70, 63, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ParamSpec>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ParamSpec_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobProto>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobProto_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetStateRule>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetStateRule_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetStateRule>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetStateRule_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BNParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BNParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::TransformationParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::TransformationParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::AccuracyParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::AccuracyParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ArgMaxParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ArgMaxParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ConcatParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ConcatParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ContrastiveLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ContrastiveLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ConvolutionParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ConvolutionParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DropoutParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DropoutParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DummyDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DummyDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::EltwiseParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::EltwiseParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ExpParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ExpParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HDF5DataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HDF5DataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HDF5OutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HDF5OutputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::HingeLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::HingeLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ImageDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ImageDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InfogainLossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InfogainLossParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InnerProductParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InnerProductParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LRNParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LRNParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::MemoryDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::MemoryDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::MVNParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::MVNParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PoolingParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PoolingParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PowerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PowerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ReLUParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ReLUParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SigmoidParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SigmoidParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SoftmaxParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SoftmaxParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SliceParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SliceParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::TanHParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::TanHParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ThresholdParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ThresholdParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::WindowDataParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::WindowDataParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PythonParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PythonParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PReLUParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PReLUParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SPPParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SPPParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ReshapeParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ReshapeParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LogParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LogParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::FlattenParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::FlattenParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ReductionParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ReductionParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::EmbedParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::EmbedParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::TileParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::TileParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BatchNormParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BatchNormParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ELUParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ELUParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BiasParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BiasParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ScaleParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ScaleParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::CropParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::CropParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ShuffleChannelParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ShuffleChannelParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::RecurrentParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::RecurrentParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ReorgParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ReorgParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ROIAlignParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ROIAlignParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PSROIPoolingParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PSROIPoolingParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PermuteParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PermuteParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::PriorBoxParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::PriorBoxParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::DetectionOutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::DetectionOutputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::InterpParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::InterpParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NormalizeParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NormalizeParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::YoloDetectionOutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::YoloDetectionOutputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::Yolov3DetectionOutputParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::Yolov3DetectionOutputParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::ROIPoolingParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::ROIPoolingParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::SmoothL1LossParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::SmoothL1LossParameter_globals_},
        #endif
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : bottom_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bottom_)>()
         }
        ,
        top_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.top_)>()
         }
        ,
        loss_weight_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.loss_weight_)>()
         }
        ,
        param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.param_)>()
         }
        ,
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.blobs_)>()
         }
        ,
        include_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.include_)>()
         }
        ,
        exclude_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.exclude_)>()
         }
        ,
        propagate_down_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.propagate_down_)>()
         }
        ,
        name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        type_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        bn_param_{nullptr},
        transform_param_{nullptr},
        loss_param_{nullptr},
        accuracy_param_{nullptr},
        argmax_param_{nullptr},
        concat_param_{nullptr},
        contrastive_loss_param_{nullptr},
        convolution_param_{nullptr},
        data_param_{nullptr},
        dropout_param_{nullptr},
        eltwise_param_{nullptr},
        exp_param_{nullptr},
        hdf5_data_param_{nullptr},
        hdf5_output_param_{nullptr},
        hinge_loss_param_{nullptr},
        image_data_param_{nullptr},
        phase_{static_cast< ::caffe::Phase >(0)},
        dummy_data_param_{nullptr},
        infogain_loss_param_{nullptr},
        inner_product_param_{nullptr},
        lrn_param_{nullptr},
        memory_data_param_{nullptr},
        mvn_param_{nullptr},
        pooling_param_{nullptr},
        power_param_{nullptr},
        relu_param_{nullptr},
        sigmoid_param_{nullptr},
        softmax_param_{nullptr},
        slice_param_{nullptr},
        tanh_param_{nullptr},
        threshold_param_{nullptr},
        window_data_param_{nullptr},
        python_param_{nullptr},
        prelu_param_{nullptr},
        spp_param_{nullptr},
        reshape_param_{nullptr},
        log_param_{nullptr},
        flatten_param_{nullptr},
        reduction_param_{nullptr},
        embed_param_{nullptr},
        tile_param_{nullptr},
        batch_norm_param_{nullptr},
        elu_param_{nullptr},
        bias_param_{nullptr},
        scale_param_{nullptr},
        input_param_{nullptr},
        crop_param_{nullptr},
        shuffle_channel_param_{nullptr},
        recurrent_param_{nullptr},
        reorg_param_{nullptr},
        roi_align_param_{nullptr},
        psroi_pooling_param_{nullptr},
        permute_param_{nullptr},
        prior_box_param_{nullptr},
        detection_output_param_{nullptr},
        interp_param_{nullptr},
        norm_param_{nullptr},
        yolo_detection_output_param_{nullptr},
        yolov3_detection_output_param_{nullptr},
        roi_pooling_param_{nullptr},
        smooth_l1_loss_param_{nullptr} {}

template <typename>
constexpr LayerParameter::LayerParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL LayerParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) LayerParameter(arena);
}
constexpr auto LayerParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(LayerParameter), alignof(LayerParameter));
}
constexpr auto LayerParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          LayerParameter::IsInitializedImpl,
          &LayerParameter::MergeImpl,
          Super_::GetNewImpl<LayerParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &LayerParameter::SharedDtor,
          Super_::GetClearImpl<LayerParameter>(), &LayerParameter::ByteSizeLong,
              &LayerParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[11],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct LayerParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr LayerParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 LayerParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(LayerParameter::InternalGenerateClassData_(
            _default, &LayerParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<LayerParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~LayerParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) LayerParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<LayerParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(LayerParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST LayerParameterGlobalsTypeInternal LayerParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* LayerParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return LayerParameter_globals_.GetClassData();
#else
  return LayerParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class NetParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<NetParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(NetParameter, _impl_._has_bits_);
};

constexpr NetParameter::ParseTableT_ NetParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(NetParameter, _impl_._has_bits_),
      0, // no _extensions_
      100, 56,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      4294967040,  // skipmap
      offsetof(ParseTableT_, field_entries),
      9,  // num_field_entries
      4,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::NetParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      // repeated .caffe.BlobShape input_shape = 8;
      {::_pbi::TcParser::FastMtR1,
       {66, 3, 2,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_shape_)}},
      // optional string name = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 4, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.name_)}},
      // repeated .caffe.V1LayerParameter layers = 2;
      {::_pbi::TcParser::FastMtR1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.layers_)}},
      // repeated string input = 3;
      {::_pbi::TcParser::FastBR1,
       {26, 1, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_)}},
      // repeated int32 input_dim = 4;
      {::_pbi::TcParser::FastV32R1,
       {32, 2, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_dim_)}},
      // optional bool force_backward = 5 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(NetParameter, _impl_.force_backward_), 6>(),
       {40, 6, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.force_backward_)}},
      // optional .caffe.NetState state = 6;
      {::_pbi::TcParser::FastMtS1,
       {50, 5, 1,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.state_)}},
      // optional bool debug_info = 7 [default = false];
      {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(NetParameter, _impl_.debug_info_), 7>(),
       {56, 7, 0,
        PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.debug_info_)}},
    }}, {{
      100, 0, 1,
      65534, 8,
      65535, 65535
    }}, {{
      // optional string name = 1;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.name_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // repeated .caffe.V1LayerParameter layers = 2;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.layers_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated string input = 3;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated int32 input_dim = 4;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_dim_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcRepeated | ::_fl::kInt32)},
      // optional bool force_backward = 5 [default = false];
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.force_backward_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.NetState state = 6;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.state_), _Internal::kHasBitsOffset + 5, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool debug_info = 7 [default = false];
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.debug_info_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // repeated .caffe.BlobShape input_shape = 8;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.input_shape_), _Internal::kHasBitsOffset + 3, 2, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.LayerParameter layer = 100;
      {PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.layer_), _Internal::kHasBitsOffset + 8, 3, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::V1LayerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::V1LayerParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetState>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetState_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::BlobShape>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::BlobShape_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::LayerParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::LayerParameter_globals_},
        #endif
    }},
    {{
    }},
  };
}


inline constexpr NetParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : layers_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layers_)>()
         }
        ,
        input_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_)>()
         }
        ,
        input_dim_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_dim_)>()
         }
        ,
        input_shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_shape_)>()
         }
        ,
        name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        state_{nullptr},
        force_backward_{false},
        debug_info_{false},
        layer_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layer_)>()
         }
     {}

template <typename>
constexpr NetParameter::NetParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL NetParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) NetParameter(arena);
}
constexpr auto NetParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(NetParameter), alignof(NetParameter));
}
constexpr auto NetParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          NetParameter::IsInitializedImpl,
          &NetParameter::MergeImpl,
          Super_::GetNewImpl<NetParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &NetParameter::SharedDtor,
          Super_::GetClearImpl<NetParameter>(), &NetParameter::ByteSizeLong,
              &NetParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(NetParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[5],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct NetParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr NetParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 NetParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(NetParameter::InternalGenerateClassData_(
            _default, &NetParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<NetParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~NetParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) NetParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<NetParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(NetParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST NetParameterGlobalsTypeInternal NetParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* NetParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return NetParameter_globals_.GetClassData();
#else
  return NetParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
class SolverParameter::_Internal {
 public:
  using HasBits = decltype(::std::declval<SolverParameter>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
      8 * PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_._has_bits_);
};

constexpr SolverParameter::ParseTableT_ SolverParameter::InternalGenerateParseTable_(const ::_pbi::ClassData* class_data) {
  return ParseTableT_{
    {
      PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_._has_bits_),
      0, // no _extensions_
      40, 248,  // max_field_number, fast_idx_mask
      offsetof(ParseTableT_, field_lookup_table),
      0,  // skipmap
      offsetof(ParseTableT_, field_entries),
      40,  // num_field_entries
      8,  // num_aux_entries
      offsetof(ParseTableT_, aux_entries),
      class_data,
      nullptr,  // post_loop_handler
      ::_pbi::TcParser::MpUnknownFields,  // fallback
      #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
      ::_pbi::TcParser::GetTable<::caffe::SolverParameter>(),  // to_prefetch
      #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
    }, {{
      {::_pbi::TcParser::MiniParse, {}},
      // optional string train_net = 1;
      {::_pbi::TcParser::FastBS1,
       {10, 4, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_net_)}},
      // repeated string test_net = 2;
      {::_pbi::TcParser::FastBR1,
       {18, 0, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_net_)}},
      // repeated int32 test_iter = 3;
      {::_pbi::TcParser::FastV32R1,
       {24, 1, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_iter_)}},
      // optional int32 test_interval = 4 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverParameter, _impl_.test_interval_), 12>(),
       {32, 12, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_interval_)}},
      // optional float base_lr = 5;
      {::_pbi::TcParser::FastF32S1,
       {45, 13, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.base_lr_)}},
      // optional int32 display = 6;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverParameter, _impl_.display_), 14>(),
       {48, 14, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.display_)}},
      // optional int32 max_iter = 7;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverParameter, _impl_.max_iter_), 15>(),
       {56, 15, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.max_iter_)}},
      // optional string lr_policy = 8;
      {::_pbi::TcParser::FastBS1,
       {66, 5, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.lr_policy_)}},
      // optional float gamma = 9;
      {::_pbi::TcParser::FastF32S1,
       {77, 16, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.gamma_)}},
      // optional float power = 10;
      {::_pbi::TcParser::FastF32S1,
       {85, 17, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.power_)}},
      // optional float momentum = 11;
      {::_pbi::TcParser::FastF32S1,
       {93, 18, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.momentum_)}},
      // optional float weight_decay = 12;
      {::_pbi::TcParser::FastF32S1,
       {101, 19, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.weight_decay_)}},
      // optional int32 stepsize = 13;
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverParameter, _impl_.stepsize_), 20>(),
       {104, 20, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.stepsize_)}},
      // optional int32 snapshot = 14 [default = 0];
      {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(SolverParameter, _impl_.snapshot_), 21>(),
       {112, 21, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_)}},
      // optional string snapshot_prefix = 15;
      {::_pbi::TcParser::FastBS1,
       {122, 6, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_prefix_)}},
      // optional bool snapshot_diff = 16 [default = false];
      {::_pbi::TcParser::FastV8S2,
       {384, 23, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_diff_)}},
      // optional .caffe.SolverParameter.SolverMode solver_mode = 17 [default = GPU];
      {::_pbi::TcParser::FastEr0S2,
       {392, 29, 1,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.solver_mode_)}},
      // optional int32 device_id = 18 [default = 0];
      {::_pbi::TcParser::FastV32S2,
       {400, 22, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.device_id_)}},
      // optional bool test_compute_loss = 19 [default = false];
      {::_pbi::TcParser::FastV8S2,
       {408, 24, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_compute_loss_)}},
      // optional int64 random_seed = 20 [default = -1];
      {::_pbi::TcParser::FastV64S2,
       {416, 28, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.random_seed_)}},
      // optional .caffe.NetParameter train_net_param = 21;
      {::_pbi::TcParser::FastMtS2,
       {426, 9, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_net_param_)}},
      // repeated .caffe.NetParameter test_net_param = 22;
      {::_pbi::TcParser::FastMtR2,
       {434, 2, 1,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_net_param_)}},
      // optional bool debug_info = 23 [default = false];
      {::_pbi::TcParser::FastV8S2,
       {440, 25, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.debug_info_)}},
      // optional string net = 24;
      {::_pbi::TcParser::FastBS2,
       {450, 7, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.net_)}},
      // optional .caffe.NetParameter net_param = 25;
      {::_pbi::TcParser::FastMtS2,
       {458, 10, 2,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.net_param_)}},
      // optional .caffe.NetState train_state = 26;
      {::_pbi::TcParser::FastMtS2,
       {466, 11, 3,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_state_)}},
      // repeated .caffe.NetState test_state = 27;
      {::_pbi::TcParser::FastMtR2,
       {474, 3, 4,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_state_)}},
      // optional bool snapshot_after_train = 28 [default = true];
      {::_pbi::TcParser::FastV8S2,
       {480, 30, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_after_train_)}},
      // optional string regularization_type = 29 [default = "L2"];
      {::_pbi::TcParser::FastBS2,
       {490, 8, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.regularization_type_)}},
      // optional .caffe.SolverParameter.SolverType solver_type = 30 [default = SGD];
      {::_pbi::TcParser::FastEr0S2,
       {496, 26, 5,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.solver_type_)}},
      // optional float delta = 31 [default = 1e-08];
      {::_pbi::TcParser::FastF32S2,
       {509, 27, 0,
        PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.delta_)}},
    }}, {{
      33, 0, 1,
      65280, 32,
      65535, 65535
    }}, {{
      // optional string train_net = 1;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_net_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // repeated string test_net = 2;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_net_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcRepeated | ::_fl::kBytes | ::_fl::kRepSString)},
      // repeated int32 test_iter = 3;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_iter_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcRepeated | ::_fl::kInt32)},
      // optional int32 test_interval = 4 [default = 0];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_interval_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional float base_lr = 5;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.base_lr_), _Internal::kHasBitsOffset + 13, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional int32 display = 6;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.display_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 max_iter = 7;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.max_iter_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional string lr_policy = 8;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.lr_policy_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional float gamma = 9;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.gamma_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float power = 10;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.power_), _Internal::kHasBitsOffset + 17, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float momentum = 11;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.momentum_), _Internal::kHasBitsOffset + 18, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float weight_decay = 12;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.weight_decay_), _Internal::kHasBitsOffset + 19, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional int32 stepsize = 13;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.stepsize_), _Internal::kHasBitsOffset + 20, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional int32 snapshot = 14 [default = 0];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_), _Internal::kHasBitsOffset + 21, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional string snapshot_prefix = 15;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_prefix_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional bool snapshot_diff = 16 [default = false];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_diff_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional .caffe.SolverParameter.SolverMode solver_mode = 17 [default = GPU];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.solver_mode_), _Internal::kHasBitsOffset + 29, 5, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional int32 device_id = 18 [default = 0];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.device_id_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional bool test_compute_loss = 19 [default = false];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_compute_loss_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional int64 random_seed = 20 [default = -1];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.random_seed_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt64)},
      // optional .caffe.NetParameter train_net_param = 21;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_net_param_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetParameter test_net_param = 22;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_net_param_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool debug_info = 23 [default = false];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.debug_info_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional string net = 24;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.net_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional .caffe.NetParameter net_param = 25;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.net_param_), _Internal::kHasBitsOffset + 10, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional .caffe.NetState train_state = 26;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_state_), _Internal::kHasBitsOffset + 11, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
      // repeated .caffe.NetState test_state = 27;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_state_), _Internal::kHasBitsOffset + 3, 4, (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
      // optional bool snapshot_after_train = 28 [default = true];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_after_train_), _Internal::kHasBitsOffset + 30, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional string regularization_type = 29 [default = "L2"];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.regularization_type_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
      // optional .caffe.SolverParameter.SolverType solver_type = 30 [default = SGD];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.solver_type_), _Internal::kHasBitsOffset + 26, 6, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional float delta = 31 [default = 1e-08];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.delta_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional bool test_initialization = 32 [default = true];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.test_initialization_), _Internal::kHasBitsOffset + 34, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
      // optional int32 average_loss = 33 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.average_loss_), _Internal::kHasBitsOffset + 35, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // repeated int32 stepvalue = 34;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.stepvalue_), _Internal::kHasBitsOffset + 31, 0, (0 | ::_fl::kFcRepeated | ::_fl::kInt32)},
      // optional float clip_gradients = 35 [default = -1];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.clip_gradients_), _Internal::kHasBitsOffset + 36, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional int32 iter_size = 36 [default = 1];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.iter_size_), _Internal::kHasBitsOffset + 37, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
      // optional .caffe.SolverParameter.SnapshotFormat snapshot_format = 37 [default = BINARYPROTO];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_format_), _Internal::kHasBitsOffset + 38, 7, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
      // optional float rms_decay = 38;
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.rms_decay_), _Internal::kHasBitsOffset + 33, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional float momentum2 = 39 [default = 0.999];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.momentum2_), _Internal::kHasBitsOffset + 39, 0, (0 | ::_fl::kFcOptional | ::_fl::kFloat)},
      // optional string type = 40 [default = "SGD"];
      {PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.type_), _Internal::kHasBitsOffset + 32, 0, (0 | ::_fl::kFcOptional | ::_fl::kBytes | ::_fl::kRepAString)},
    }},
    {{
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetParameter>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetParameter_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetState>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetState_globals_},
        #endif
        #ifndef PROTOBUF_MESSAGE_GLOBALS
        {::_pbi::TcParser::GetTable<::caffe::NetState>()},
        #else
        {::_pbi::FieldAuxMessageGlobals(), &::caffe::NetState_globals_},
        #endif
        {0, 1},
        {0, 5},
        {0, 1},
    }},
    {{
    }},
  };
}


inline constexpr SolverParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    ::_pbi::ConstantInitialized) noexcept
      : test_net_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_)>()
         }
        ,
        test_iter_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_iter_)>()
         }
        ,
        test_net_param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_param_)>()
         }
        ,
        test_state_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_state_)>()
         }
        ,
        train_net_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        lr_policy_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        snapshot_prefix_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        net_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        regularization_type_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        train_net_param_{nullptr},
        net_param_{nullptr},
        train_state_{nullptr},
        test_interval_{0},
        base_lr_{0},
        display_{0},
        max_iter_{0},
        gamma_{0},
        power_{0},
        momentum_{0},
        weight_decay_{0},
        stepsize_{0},
        snapshot_{0},
        device_id_{0},
        snapshot_diff_{false},
        test_compute_loss_{false},
        debug_info_{false},
        solver_type_{static_cast< ::caffe::SolverParameter_SolverType >(0)},
        delta_{1e-08f},
        random_seed_{::int64_t{-1}},
        solver_mode_{static_cast< ::caffe::SolverParameter_SolverMode >(1)},
        snapshot_after_train_{true},
        stepvalue_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.stepvalue_)>()
         }
        ,
        type_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        rms_decay_{0},
        test_initialization_{true},
        average_loss_{1},
        clip_gradients_{-1},
        iter_size_{1},
        snapshot_format_{static_cast< ::caffe::SolverParameter_SnapshotFormat >(1)},
        momentum2_{0.999f} {}

template <typename>
constexpr SolverParameter::SolverParameter(::_pbi::ConstantInitialized,
                       const ::_pbi::ClassData* PROTOBUF_NONNULL class_data)
    : Super_(
#if defined(PROTOBUF_CUSTOM_VTABLE)
          class_data
#endif  // PROTOBUF_CUSTOM_VTABLE
          ),
      _impl_(internal_visibility(), ::_pbi::ConstantInitialized()) {
}
inline void* PROTOBUF_NONNULL SolverParameter::PlacementNew_(
    const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
  return ::new (mem) SolverParameter(arena);
}
constexpr auto SolverParameter::InternalNewImpl_() {
  return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(SolverParameter), alignof(SolverParameter));
}
constexpr auto SolverParameter::InternalGenerateClassData_(
    const MessageLite& prototype,
    const ::google::protobuf::internal::TcParseTableBase* tc_table) {
  return ::google::protobuf::internal::ClassDataFull{
      ::google::protobuf::internal::ClassData{
          &prototype,
#ifndef PROTOBUF_MESSAGE_GLOBALS
          &_table_.header,
#else
          tc_table,
#endif
          SolverParameter::IsInitializedImpl,
          &SolverParameter::MergeImpl,
          Super_::GetNewImpl<SolverParameter>(),
#if defined(PROTOBUF_CUSTOM_VTABLE)
          &SolverParameter::SharedDtor,
          Super_::GetClearImpl<SolverParameter>(), &SolverParameter::ByteSizeLong,
              &SolverParameter::_InternalSerialize,
#endif  // PROTOBUF_CUSTOM_VTABLE
          PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_._cached_size_),
          false,
      },
#ifdef PROTOBUF_MESSAGE_GLOBALS
      &file_reflection_data[6],
#else   // !PROTOBUF_MESSAGE_GLOBALS
      &::_pbi::kDescriptorMethods,
      &descriptor_table_caffe_2eproto,
      nullptr,  // tracker
#endif  // PROTOBUF_MESSAGE_GLOBALS
  };
}
struct SolverParameterGlobalsTypeInternal : ::_pbi::MessageGlobalsBase {
  constexpr SolverParameterGlobalsTypeInternal()
      :
#ifndef PROTOBUF_MESSAGE_GLOBALS
        _default(::_pbi::ConstantInitialized{},
                 SolverParameter_class_data_.base())
#else   // !PROTOBUF_MESSAGE_GLOBALS
        MessageGlobalsBase(SolverParameter::InternalGenerateClassData_(
            _default, &SolverParameter_globals_._table.header)),
        _default(::_pbi::ConstantInitialized{}, GetClassData()),
        _table(::_pbi::PrivateAccess::GenerateParseTable<SolverParameter>(
            GetClassData()))
#endif  // PROTOBUF_MESSAGE_GLOBALS
  {
  }
  ~SolverParameterGlobalsTypeInternal() {}
  union {
    alignas(::_pbi::kMaxMessageAlignment) SolverParameter _default;
  };
#ifdef PROTOBUF_MESSAGE_GLOBALS
  decltype(::_pbi::PrivateAccess::GenerateParseTable<SolverParameter>(
      ::std::declval<const ::_pbi::ClassData*>())) _table;
#endif
};
#ifdef PROTOBUF_MESSAGE_GLOBALS
static_assert(PROTOBUF_FIELD_OFFSET(SolverParameterGlobalsTypeInternal, _default) ==
              ::_pbi::MessageGlobalsBase::OffsetToDefault());
#endif  // PROTOBUF_MESSAGE_GLOBALS

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PROTOBUF_MESSAGE_GLOBALS_CONST SolverParameterGlobalsTypeInternal SolverParameter_globals_
        PROTOBUF_MESSAGE_GLOBALS_SECTION(.data.rel.ro);
#if defined(PROTOBUF_CUSTOM_VTABLE)
namespace {
const ::_pbi::ClassData* SolverParameter_get_class_data() {
#ifdef PROTOBUF_MESSAGE_GLOBALS
  return SolverParameter_globals_.GetClassData();
#else
  return SolverParameter_class_data_.base();
#endif  // PROTOBUF_MESSAGE_GLOBALS
}
}  // namespace
#endif  // PROTOBUF_CUSTOM_VTABLE
}  // namespace caffe
static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL
    file_level_enum_descriptors_caffe_2eproto[30];
static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
    file_level_service_descriptors_caffe_2eproto = nullptr;
const ::uint32_t
    TableStruct_caffe_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
        protodesc_cold) = {
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BlobShape, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BlobShape, _impl_.dim_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_._has_bits_),
        12, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.shape_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.data_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.diff_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_data_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_diff_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.num_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.width_),
        4,
        0,
        1,
        2,
        3,
        5,
        6,
        7,
        8,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProtoVector, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BlobProtoVector, _impl_.blobs_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_._has_bits_),
        10, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.width_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.data_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.label_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.float_data_),
        PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.encoded_),
        2,
        3,
        4,
        1,
        5,
        0,
        6,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_._has_bits_),
        11, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.type_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.value_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.min_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.max_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.mean_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.std_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.sparse_),
        PROTOBUF_FIELD_OFFSET(::caffe::FillerParameter, _impl_.variance_norm_),
        0,
        1,
        2,
        5,
        3,
        6,
        7,
        4,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_._has_bits_),
        12, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.name_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_shape_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_dim_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.force_backward_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.state_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.debug_info_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layer_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layers_),
        4,
        1,
        3,
        2,
        6,
        5,
        7,
        8,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_._has_bits_),
        43, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.net_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.net_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.train_net_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.train_net_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.train_state_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_state_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_iter_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_interval_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_compute_loss_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_initialization_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.base_lr_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.display_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.average_loss_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.max_iter_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.iter_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.lr_policy_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.gamma_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.power_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.momentum_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.weight_decay_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.regularization_type_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.stepsize_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.stepvalue_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.clip_gradients_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.snapshot_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.snapshot_prefix_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.snapshot_diff_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.snapshot_format_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.solver_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.device_id_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.random_seed_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.type_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.delta_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.momentum2_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.rms_decay_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.debug_info_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.snapshot_after_train_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.solver_type_),
        7,
        10,
        4,
        0,
        9,
        2,
        11,
        3,
        1,
        12,
        24,
        34,
        13,
        14,
        35,
        15,
        37,
        5,
        16,
        17,
        18,
        19,
        8,
        20,
        31,
        36,
        21,
        6,
        23,
        38,
        29,
        22,
        28,
        32,
        27,
        39,
        33,
        25,
        30,
        26,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_._has_bits_),
        7, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.iter_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.learned_net_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.history_),
        PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.current_step_),
        2,
        1,
        0,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.phase_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.level_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.stage_),
        2,
        1,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_._has_bits_),
        8, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.phase_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.min_level_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.max_level_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.stage_),
        PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.not_stage_),
        2,
        3,
        4,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ParamSpec, _impl_._has_bits_),
        7, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ParamSpec, _impl_.name_),
        PROTOBUF_FIELD_OFFSET(::caffe::ParamSpec, _impl_.share_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::ParamSpec, _impl_.lr_mult_),
        PROTOBUF_FIELD_OFFSET(::caffe::ParamSpec, _impl_.decay_mult_),
        0,
        1,
        2,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_._has_bits_),
        74, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.name_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.type_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bottom_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.top_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.phase_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.loss_weight_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.blobs_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.propagate_down_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.include_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.exclude_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.transform_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.accuracy_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.argmax_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.batch_norm_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bias_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bn_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.concat_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.contrastive_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.convolution_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.crop_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.detection_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.yolo_detection_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.yolov3_detection_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.dropout_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.dummy_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.eltwise_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.elu_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.embed_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.exp_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.flatten_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.hdf5_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.hdf5_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.hinge_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.image_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.infogain_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.inner_product_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.input_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.interp_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.log_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.lrn_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.memory_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.mvn_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.norm_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.pooling_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.permute_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.power_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.prelu_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.prior_box_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.psroi_pooling_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.python_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.recurrent_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.reduction_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.relu_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.reorg_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.reshape_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.roi_align_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.roi_pooling_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.scale_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.shuffle_channel_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.sigmoid_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.smooth_l1_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.softmax_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.spp_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.slice_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.tanh_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.threshold_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.tile_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.window_data_param_),
        8,
        9,
        0,
        1,
        26,
        2,
        3,
        4,
        7,
        5,
        6,
        11,
        12,
        13,
        14,
        51,
        53,
        10,
        15,
        16,
        17,
        56,
        18,
        64,
        67,
        68,
        19,
        27,
        20,
        52,
        49,
        21,
        47,
        22,
        23,
        24,
        25,
        28,
        29,
        55,
        65,
        46,
        30,
        31,
        32,
        66,
        33,
        62,
        34,
        43,
        63,
        61,
        42,
        58,
        48,
        35,
        59,
        45,
        60,
        69,
        54,
        57,
        36,
        70,
        37,
        44,
        38,
        39,
        40,
        50,
        41,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_._has_bits_),
        10, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mirror_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.crop_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mean_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mean_value_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.force_color_),
        PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.force_gray_),
        6,
        3,
        2,
        1,
        0,
        4,
        5,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_._has_bits_),
        12, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.prob_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.resize_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.width_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.height_scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.width_scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.pad_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.pad_value_),
        PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.interp_mode_),
        6,
        7,
        2,
        3,
        4,
        5,
        8,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::LossParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::LossParameter, _impl_.ignore_label_),
        PROTOBUF_FIELD_OFFSET(::caffe::LossParameter, _impl_.normalization_),
        PROTOBUF_FIELD_OFFSET(::caffe::LossParameter, _impl_.normalize_),
        0,
        2,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::AccuracyParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::AccuracyParameter, _impl_.top_k_),
        PROTOBUF_FIELD_OFFSET(::caffe::AccuracyParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::AccuracyParameter, _impl_.ignore_label_),
        1,
        2,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ArgMaxParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ArgMaxParameter, _impl_.out_max_val_),
        PROTOBUF_FIELD_OFFSET(::caffe::ArgMaxParameter, _impl_.top_k_),
        PROTOBUF_FIELD_OFFSET(::caffe::ArgMaxParameter, _impl_.axis_),
        0,
        2,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ConcatParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ConcatParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConcatParameter, _impl_.concat_dim_),
        1,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BatchNormParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BatchNormParameter, _impl_.use_global_stats_),
        PROTOBUF_FIELD_OFFSET(::caffe::BatchNormParameter, _impl_.moving_average_fraction_),
        PROTOBUF_FIELD_OFFSET(::caffe::BatchNormParameter, _impl_.eps_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BiasParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BiasParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::BiasParameter, _impl_.num_axes_),
        PROTOBUF_FIELD_OFFSET(::caffe::BiasParameter, _impl_.filler_),
        1,
        2,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::BNParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::BNParameter, _impl_.bn_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::BNParameter, _impl_.scale_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::BNParameter, _impl_.shift_filler_),
        2,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ContrastiveLossParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ContrastiveLossParameter, _impl_.margin_),
        PROTOBUF_FIELD_OFFSET(::caffe::ContrastiveLossParameter, _impl_.legacy_version_),
        1,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_._has_bits_),
        21, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.num_output_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.bias_term_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.dilation_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.group_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.weight_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.bias_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.engine_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.force_nd_im2col_),
        6,
        16,
        0,
        1,
        2,
        3,
        7,
        8,
        9,
        10,
        11,
        12,
        17,
        4,
        5,
        13,
        15,
        14,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_.offset_),
        1,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_._has_bits_),
        13, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.source_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.batch_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.rand_skip_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.backend_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.mean_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.crop_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.mirror_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.force_encoded_color_),
        PROTOBUF_FIELD_OFFSET(::caffe::DataParameter, _impl_.prefetch_),
        0,
        2,
        4,
        7,
        8,
        1,
        3,
        5,
        6,
        9,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::NonMaximumSuppressionParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::NonMaximumSuppressionParameter, _impl_.nms_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::NonMaximumSuppressionParameter, _impl_.top_k_),
        PROTOBUF_FIELD_OFFSET(::caffe::NonMaximumSuppressionParameter, _impl_.eta_),
        1,
        0,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_._has_bits_),
        10, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.output_directory_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.output_name_prefix_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.output_format_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.label_map_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.name_size_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.num_test_image_),
        PROTOBUF_FIELD_OFFSET(::caffe::SaveOutputParameter, _impl_.resize_param_),
        0,
        1,
        2,
        3,
        4,
        6,
        5,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_._has_bits_),
        15, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.num_classes_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.share_location_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.background_label_id_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.nms_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.save_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.code_type_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.variance_encoded_in_target_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.keep_top_k_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.confidence_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.visualize_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.visualize_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::DetectionOutputParameter, _impl_.save_file_),
        3,
        10,
        4,
        1,
        2,
        11,
        6,
        9,
        5,
        7,
        8,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_._has_bits_),
        11, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.side_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.num_classes_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.num_box_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.coords_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.confidence_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.nms_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.biases_),
        PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.label_map_file_),
        2,
        3,
        4,
        5,
        6,
        7,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_._has_bits_),
        11, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.num_classes_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.num_box_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.confidence_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.nms_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.biases_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.anchors_scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.mask_group_num_),
        PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.mask_),
        3,
        4,
        5,
        6,
        0,
        1,
        7,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::DropoutParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::DropoutParameter, _impl_.dropout_ratio_),
        PROTOBUF_FIELD_OFFSET(::caffe::DropoutParameter, _impl_.scale_train_),
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_._has_bits_),
        9, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.data_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.shape_),
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.num_),
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.width_),
        0,
        5,
        1,
        2,
        3,
        4,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.operation_),
        PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.coeff_),
        PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.stable_prod_grad_),
        1,
        0,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ELUParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ELUParameter, _impl_.alpha_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_._has_bits_),
        8, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_.num_output_),
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_.input_dim_),
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_.bias_term_),
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_.weight_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::EmbedParameter, _impl_.bias_filler_),
        2,
        3,
        4,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ExpParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ExpParameter, _impl_.base_),
        PROTOBUF_FIELD_OFFSET(::caffe::ExpParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::ExpParameter, _impl_.shift_),
        1,
        2,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::FlattenParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::FlattenParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::FlattenParameter, _impl_.end_axis_),
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5DataParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5DataParameter, _impl_.source_),
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5DataParameter, _impl_.batch_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5DataParameter, _impl_.shuffle_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5OutputParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::HDF5OutputParameter, _impl_.file_name_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::HingeLossParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::HingeLossParameter, _impl_.norm_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_._has_bits_),
        15, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.source_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.batch_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.rand_skip_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.shuffle_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.new_height_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.new_width_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.is_color_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.mean_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.crop_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.mirror_),
        PROTOBUF_FIELD_OFFSET(::caffe::ImageDataParameter, _impl_.root_folder_),
        0,
        11,
        4,
        6,
        7,
        8,
        9,
        10,
        1,
        3,
        5,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::InfogainLossParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::InfogainLossParameter, _impl_.source_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_._has_bits_),
        9, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.num_output_),
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.bias_term_),
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.weight_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.bias_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::InnerProductParameter, _impl_.transpose_),
        2,
        4,
        0,
        1,
        5,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::InputParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::InputParameter, _impl_.shape_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_._has_bits_),
        9, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.width_),
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.zoom_factor_),
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.shrink_factor_),
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.pad_beg_),
        PROTOBUF_FIELD_OFFSET(::caffe::InterpParameter, _impl_.pad_end_),
        0,
        1,
        4,
        5,
        2,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::LogParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::LogParameter, _impl_.base_),
        PROTOBUF_FIELD_OFFSET(::caffe::LogParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::LogParameter, _impl_.shift_),
        1,
        2,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_._has_bits_),
        9, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.local_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.alpha_),
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.beta_),
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.norm_region_),
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.k_),
        PROTOBUF_FIELD_OFFSET(::caffe::LRNParameter, _impl_.engine_),
        2,
        3,
        4,
        0,
        5,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::MemoryDataParameter, _impl_._has_bits_),
        7, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::MemoryDataParameter, _impl_.batch_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::MemoryDataParameter, _impl_.channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::MemoryDataParameter, _impl_.height_),
        PROTOBUF_FIELD_OFFSET(::caffe::MemoryDataParameter, _impl_.width_),
        0,
        1,
        2,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::MVNParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::MVNParameter, _impl_.normalize_variance_),
        PROTOBUF_FIELD_OFFSET(::caffe::MVNParameter, _impl_.across_channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::MVNParameter, _impl_.eps_),
        1,
        0,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::NormalizeParameter, _impl_._has_bits_),
        7, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::NormalizeParameter, _impl_.across_spatial_),
        PROTOBUF_FIELD_OFFSET(::caffe::NormalizeParameter, _impl_.scale_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::NormalizeParameter, _impl_.channel_shared_),
        PROTOBUF_FIELD_OFFSET(::caffe::NormalizeParameter, _impl_.eps_),
        1,
        0,
        2,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PermuteParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PermuteParameter, _impl_.order_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_._has_bits_),
        15, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.pool_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.pad_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.pad_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.pad_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.kernel_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.kernel_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.kernel_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.stride_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.stride_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.stride_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.engine_),
        PROTOBUF_FIELD_OFFSET(::caffe::PoolingParameter, _impl_.global_pooling_),
        0,
        2,
        7,
        8,
        1,
        3,
        4,
        11,
        5,
        6,
        9,
        10,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PowerParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PowerParameter, _impl_.power_),
        PROTOBUF_FIELD_OFFSET(::caffe::PowerParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::PowerParameter, _impl_.shift_),
        1,
        2,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_._has_bits_),
        16, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.min_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.max_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.aspect_ratio_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.flip_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.clip_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.variance_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.img_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.img_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.img_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.step_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.step_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.step_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.offset_),
        0,
        1,
        2,
        11,
        4,
        3,
        5,
        6,
        7,
        8,
        9,
        10,
        12,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PSROIPoolingParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PSROIPoolingParameter, _impl_.spatial_scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::PSROIPoolingParameter, _impl_.output_dim_),
        PROTOBUF_FIELD_OFFSET(::caffe::PSROIPoolingParameter, _impl_.group_size_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PythonParameter, _impl_._has_bits_),
        7, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PythonParameter, _impl_.module_),
        PROTOBUF_FIELD_OFFSET(::caffe::PythonParameter, _impl_.layer_),
        PROTOBUF_FIELD_OFFSET(::caffe::PythonParameter, _impl_.param_str_),
        PROTOBUF_FIELD_OFFSET(::caffe::PythonParameter, _impl_.share_in_parallel_),
        0,
        1,
        2,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_._has_bits_),
        8, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_.num_output_),
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_.weight_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_.bias_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_.debug_info_),
        PROTOBUF_FIELD_OFFSET(::caffe::RecurrentParameter, _impl_.expose_hidden_),
        2,
        0,
        1,
        3,
        4,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ReductionParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ReductionParameter, _impl_.operation_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReductionParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReductionParameter, _impl_.coeff_),
        1,
        0,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ReLUParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ReLUParameter, _impl_.negative_slope_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReLUParameter, _impl_.engine_),
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ReorgParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ReorgParameter, _impl_.stride_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReorgParameter, _impl_.reverse_),
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ReshapeParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ReshapeParameter, _impl_.shape_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReshapeParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::ReshapeParameter, _impl_.num_axes_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ROIAlignParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ROIAlignParameter, _impl_.pooled_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::ROIAlignParameter, _impl_.pooled_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::ROIAlignParameter, _impl_.spatial_scale_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ROIPoolingParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ROIPoolingParameter, _impl_.pooled_h_),
        PROTOBUF_FIELD_OFFSET(::caffe::ROIPoolingParameter, _impl_.pooled_w_),
        PROTOBUF_FIELD_OFFSET(::caffe::ROIPoolingParameter, _impl_.spatial_scale_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_._has_bits_),
        8, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_.num_axes_),
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_.filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_.bias_term_),
        PROTOBUF_FIELD_OFFSET(::caffe::ScaleParameter, _impl_.bias_filler_),
        3,
        4,
        0,
        2,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ShuffleChannelParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ShuffleChannelParameter, _impl_.group_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SigmoidParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SigmoidParameter, _impl_.engine_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SmoothL1LossParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SmoothL1LossParameter, _impl_.sigma_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.slice_point_),
        PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.slice_dim_),
        2,
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SoftmaxParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SoftmaxParameter, _impl_.engine_),
        PROTOBUF_FIELD_OFFSET(::caffe::SoftmaxParameter, _impl_.axis_),
        0,
        1,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::TanHParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::TanHParameter, _impl_.engine_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::TileParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::TileParameter, _impl_.axis_),
        PROTOBUF_FIELD_OFFSET(::caffe::TileParameter, _impl_.tiles_),
        1,
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::ThresholdParameter, _impl_._has_bits_),
        4, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::ThresholdParameter, _impl_.threshold_),
        0,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_._has_bits_),
        16, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.source_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.mean_file_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.batch_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.crop_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.mirror_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.fg_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.bg_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.fg_fraction_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.context_pad_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.crop_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.cache_images_),
        PROTOBUF_FIELD_OFFSET(::caffe::WindowDataParameter, _impl_.root_folder_),
        0,
        9,
        1,
        4,
        5,
        6,
        10,
        11,
        12,
        8,
        2,
        7,
        3,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::SPPParameter, _impl_._has_bits_),
        6, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::SPPParameter, _impl_.pyramid_height_),
        PROTOBUF_FIELD_OFFSET(::caffe::SPPParameter, _impl_.pool_),
        PROTOBUF_FIELD_OFFSET(::caffe::SPPParameter, _impl_.engine_),
        0,
        1,
        2,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_._has_bits_),
        46, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.bottom_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.top_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.name_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.include_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.exclude_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.type_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blob_share_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_lr_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.weight_decay_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.loss_weight_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.accuracy_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.argmax_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.concat_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.contrastive_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.convolution_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.dropout_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.dummy_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.eltwise_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.exp_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.hdf5_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.hdf5_output_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.hinge_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.image_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.infogain_loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.inner_product_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.lrn_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.memory_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.mvn_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.pooling_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.power_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.relu_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.sigmoid_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.softmax_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.slice_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.tanh_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.threshold_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.window_data_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.transform_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.loss_param_),
        PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.layer_),
        0,
        1,
        5,
        30,
        31,
        29,
        2,
        33,
        34,
        3,
        4,
        32,
        25,
        21,
        7,
        40,
        8,
        9,
        10,
        24,
        22,
        41,
        11,
        12,
        26,
        13,
        14,
        15,
        16,
        20,
        35,
        17,
        19,
        27,
        38,
        39,
        28,
        37,
        23,
        18,
        36,
        42,
        6,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_._has_bits_),
        41, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.name_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.type_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.num_output_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.biasterm_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.weight_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.bias_filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.pad_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.kernelsize_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.group_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.stride_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.pool_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.dropout_ratio_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.local_size_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.alpha_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.beta_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.k_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.source_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.scale_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.meanfile_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.batchsize_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.cropsize_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.mirror_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_lr_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.weight_decay_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.rand_skip_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.det_fg_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.det_bg_threshold_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.det_fg_fraction_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.det_context_pad_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.det_crop_mode_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.new_num_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.new_channels_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.new_height_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.new_width_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.shuffle_images_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.concat_dim_),
        PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.hdf5_output_param_),
        0,
        1,
        8,
        20,
        5,
        6,
        9,
        10,
        21,
        22,
        11,
        23,
        24,
        25,
        26,
        28,
        2,
        27,
        3,
        12,
        13,
        14,
        31,
        32,
        33,
        34,
        36,
        29,
        30,
        15,
        4,
        16,
        17,
        18,
        19,
        35,
        37,
        7,
        0x081, // bitmap
        PROTOBUF_FIELD_OFFSET(::caffe::PReLUParameter, _impl_._has_bits_),
        5, // hasbit index offset
        PROTOBUF_FIELD_OFFSET(::caffe::PReLUParameter, _impl_.filler_),
        PROTOBUF_FIELD_OFFSET(::caffe::PReLUParameter, _impl_.channel_shared_),
        0,
        1,
};

static const ::_pbi::MigrationSchema
    schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        {0, sizeof(::caffe::BlobShape)},
        {5, sizeof(::caffe::BlobProto)},
        {26, sizeof(::caffe::BlobProtoVector)},
        {31, sizeof(::caffe::Datum)},
        {48, sizeof(::caffe::FillerParameter)},
        {67, sizeof(::caffe::NetParameter)},
        {88, sizeof(::caffe::SolverParameter)},
        {171, sizeof(::caffe::SolverState)},
        {182, sizeof(::caffe::NetState)},
        {191, sizeof(::caffe::NetStateRule)},
        {204, sizeof(::caffe::ParamSpec)},
        {215, sizeof(::caffe::LayerParameter)},
        {360, sizeof(::caffe::TransformationParameter)},
        {377, sizeof(::caffe::ResizeParameter)},
        {398, sizeof(::caffe::LossParameter)},
        {407, sizeof(::caffe::AccuracyParameter)},
        {416, sizeof(::caffe::ArgMaxParameter)},
        {425, sizeof(::caffe::ConcatParameter)},
        {432, sizeof(::caffe::BatchNormParameter)},
        {441, sizeof(::caffe::BiasParameter)},
        {450, sizeof(::caffe::BNParameter)},
        {459, sizeof(::caffe::ContrastiveLossParameter)},
        {466, sizeof(::caffe::ConvolutionParameter)},
        {505, sizeof(::caffe::CropParameter)},
        {512, sizeof(::caffe::DataParameter)},
        {535, sizeof(::caffe::NonMaximumSuppressionParameter)},
        {544, sizeof(::caffe::SaveOutputParameter)},
        {561, sizeof(::caffe::DetectionOutputParameter)},
        {588, sizeof(::caffe::YoloDetectionOutputParameter)},
        {607, sizeof(::caffe::Yolov3DetectionOutputParameter)},
        {626, sizeof(::caffe::DropoutParameter)},
        {633, sizeof(::caffe::DummyDataParameter)},
        {648, sizeof(::caffe::EltwiseParameter)},
        {657, sizeof(::caffe::ELUParameter)},
        {662, sizeof(::caffe::EmbedParameter)},
        {675, sizeof(::caffe::ExpParameter)},
        {684, sizeof(::caffe::FlattenParameter)},
        {691, sizeof(::caffe::HDF5DataParameter)},
        {700, sizeof(::caffe::HDF5OutputParameter)},
        {705, sizeof(::caffe::HingeLossParameter)},
        {710, sizeof(::caffe::ImageDataParameter)},
        {737, sizeof(::caffe::InfogainLossParameter)},
        {742, sizeof(::caffe::InnerProductParameter)},
        {757, sizeof(::caffe::InputParameter)},
        {762, sizeof(::caffe::InterpParameter)},
        {777, sizeof(::caffe::LogParameter)},
        {786, sizeof(::caffe::LRNParameter)},
        {801, sizeof(::caffe::MemoryDataParameter)},
        {812, sizeof(::caffe::MVNParameter)},
        {821, sizeof(::caffe::NormalizeParameter)},
        {832, sizeof(::caffe::PermuteParameter)},
        {837, sizeof(::caffe::PoolingParameter)},
        {864, sizeof(::caffe::PowerParameter)},
        {873, sizeof(::caffe::PriorBoxParameter)},
        {902, sizeof(::caffe::PSROIPoolingParameter)},
        {911, sizeof(::caffe::PythonParameter)},
        {922, sizeof(::caffe::RecurrentParameter)},
        {935, sizeof(::caffe::ReductionParameter)},
        {944, sizeof(::caffe::ReLUParameter)},
        {951, sizeof(::caffe::ReorgParameter)},
        {958, sizeof(::caffe::ReshapeParameter)},
        {967, sizeof(::caffe::ROIAlignParameter)},
        {976, sizeof(::caffe::ROIPoolingParameter)},
        {985, sizeof(::caffe::ScaleParameter)},
        {998, sizeof(::caffe::ShuffleChannelParameter)},
        {1003, sizeof(::caffe::SigmoidParameter)},
        {1008, sizeof(::caffe::SmoothL1LossParameter)},
        {1013, sizeof(::caffe::SliceParameter)},
        {1022, sizeof(::caffe::SoftmaxParameter)},
        {1029, sizeof(::caffe::TanHParameter)},
        {1034, sizeof(::caffe::TileParameter)},
        {1041, sizeof(::caffe::ThresholdParameter)},
        {1046, sizeof(::caffe::WindowDataParameter)},
        {1075, sizeof(::caffe::SPPParameter)},
        {1084, sizeof(::caffe::V1LayerParameter)},
        {1173, sizeof(::caffe::V0LayerParameter)},
        {1252, sizeof(::caffe::PReLUParameter)},
};
static const ::_pbi::MessageGlobalsBase* PROTOBUF_NONNULL const
    file_message_globals[] = {
        &::caffe::BlobShape_globals_,
        &::caffe::BlobProto_globals_,
        &::caffe::BlobProtoVector_globals_,
        &::caffe::Datum_globals_,
        &::caffe::FillerParameter_globals_,
        &::caffe::NetParameter_globals_,
        &::caffe::SolverParameter_globals_,
        &::caffe::SolverState_globals_,
        &::caffe::NetState_globals_,
        &::caffe::NetStateRule_globals_,
        &::caffe::ParamSpec_globals_,
        &::caffe::LayerParameter_globals_,
        &::caffe::TransformationParameter_globals_,
        &::caffe::ResizeParameter_globals_,
        &::caffe::LossParameter_globals_,
        &::caffe::AccuracyParameter_globals_,
        &::caffe::ArgMaxParameter_globals_,
        &::caffe::ConcatParameter_globals_,
        &::caffe::BatchNormParameter_globals_,
        &::caffe::BiasParameter_globals_,
        &::caffe::BNParameter_globals_,
        &::caffe::ContrastiveLossParameter_globals_,
        &::caffe::ConvolutionParameter_globals_,
        &::caffe::CropParameter_globals_,
        &::caffe::DataParameter_globals_,
        &::caffe::NonMaximumSuppressionParameter_globals_,
        &::caffe::SaveOutputParameter_globals_,
        &::caffe::DetectionOutputParameter_globals_,
        &::caffe::YoloDetectionOutputParameter_globals_,
        &::caffe::Yolov3DetectionOutputParameter_globals_,
        &::caffe::DropoutParameter_globals_,
        &::caffe::DummyDataParameter_globals_,
        &::caffe::EltwiseParameter_globals_,
        &::caffe::ELUParameter_globals_,
        &::caffe::EmbedParameter_globals_,
        &::caffe::ExpParameter_globals_,
        &::caffe::FlattenParameter_globals_,
        &::caffe::HDF5DataParameter_globals_,
        &::caffe::HDF5OutputParameter_globals_,
        &::caffe::HingeLossParameter_globals_,
        &::caffe::ImageDataParameter_globals_,
        &::caffe::InfogainLossParameter_globals_,
        &::caffe::InnerProductParameter_globals_,
        &::caffe::InputParameter_globals_,
        &::caffe::InterpParameter_globals_,
        &::caffe::LogParameter_globals_,
        &::caffe::LRNParameter_globals_,
        &::caffe::MemoryDataParameter_globals_,
        &::caffe::MVNParameter_globals_,
        &::caffe::NormalizeParameter_globals_,
        &::caffe::PermuteParameter_globals_,
        &::caffe::PoolingParameter_globals_,
        &::caffe::PowerParameter_globals_,
        &::caffe::PriorBoxParameter_globals_,
        &::caffe::PSROIPoolingParameter_globals_,
        &::caffe::PythonParameter_globals_,
        &::caffe::RecurrentParameter_globals_,
        &::caffe::ReductionParameter_globals_,
        &::caffe::ReLUParameter_globals_,
        &::caffe::ReorgParameter_globals_,
        &::caffe::ReshapeParameter_globals_,
        &::caffe::ROIAlignParameter_globals_,
        &::caffe::ROIPoolingParameter_globals_,
        &::caffe::ScaleParameter_globals_,
        &::caffe::ShuffleChannelParameter_globals_,
        &::caffe::SigmoidParameter_globals_,
        &::caffe::SmoothL1LossParameter_globals_,
        &::caffe::SliceParameter_globals_,
        &::caffe::SoftmaxParameter_globals_,
        &::caffe::TanHParameter_globals_,
        &::caffe::TileParameter_globals_,
        &::caffe::ThresholdParameter_globals_,
        &::caffe::WindowDataParameter_globals_,
        &::caffe::SPPParameter_globals_,
        &::caffe::V1LayerParameter_globals_,
        &::caffe::V0LayerParameter_globals_,
        &::caffe::PReLUParameter_globals_,
};
const char descriptor_table_protodef_caffe_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
    protodesc_cold) = {
    "\n\013caffe.proto\022\005caffe\"\034\n\tBlobShape\022\017\n\003dim"
    "\030\001 \003(\003B\002\020\001\"\314\001\n\tBlobProto\022\037\n\005shape\030\007 \001(\0132"
    "\020.caffe.BlobShape\022\020\n\004data\030\005 \003(\002B\002\020\001\022\020\n\004d"
    "iff\030\006 \003(\002B\002\020\001\022\027\n\013double_data\030\010 \003(\001B\002\020\001\022\027"
    "\n\013double_diff\030\t \003(\001B\002\020\001\022\016\n\003num\030\001 \001(\005:\0010\022"
    "\023\n\010channels\030\002 \001(\005:\0010\022\021\n\006height\030\003 \001(\005:\0010\022"
    "\020\n\005width\030\004 \001(\005:\0010\"2\n\017BlobProtoVector\022\037\n\005"
    "blobs\030\001 \003(\0132\020.caffe.BlobProto\"\201\001\n\005Datum\022"
    "\020\n\010channels\030\001 \001(\005\022\016\n\006height\030\002 \001(\005\022\r\n\005wid"
    "th\030\003 \001(\005\022\014\n\004data\030\004 \001(\014\022\r\n\005label\030\005 \001(\005\022\022\n"
    "\nfloat_data\030\006 \003(\002\022\026\n\007encoded\030\007 \001(\010:\005fals"
    "e\"\212\002\n\017FillerParameter\022\026\n\004type\030\001 \001(\t:\010con"
    "stant\022\020\n\005value\030\002 \001(\002:\0010\022\016\n\003min\030\003 \001(\002:\0010\022"
    "\016\n\003max\030\004 \001(\002:\0011\022\017\n\004mean\030\005 \001(\002:\0010\022\016\n\003std\030"
    "\006 \001(\002:\0011\022\022\n\006sparse\030\007 \001(\005:\002-1\022B\n\rvariance"
    "_norm\030\010 \001(\0162#.caffe.FillerParameter.Vari"
    "anceNorm:\006FAN_IN\"4\n\014VarianceNorm\022\n\n\006FAN_"
    "IN\020\000\022\013\n\007FAN_OUT\020\001\022\013\n\007AVERAGE\020\002\"\216\002\n\014NetPa"
    "rameter\022\014\n\004name\030\001 \001(\t\022\r\n\005input\030\003 \003(\t\022%\n\013"
    "input_shape\030\010 \003(\0132\020.caffe.BlobShape\022\021\n\ti"
    "nput_dim\030\004 \003(\005\022\035\n\016force_backward\030\005 \001(\010:\005"
    "false\022\036\n\005state\030\006 \001(\0132\017.caffe.NetState\022\031\n"
    "\ndebug_info\030\007 \001(\010:\005false\022$\n\005layer\030d \003(\0132"
    "\025.caffe.LayerParameter\022\'\n\006layers\030\002 \003(\0132\027"
    ".caffe.V1LayerParameter\"\234\n\n\017SolverParame"
    "ter\022\013\n\003net\030\030 \001(\t\022&\n\tnet_param\030\031 \001(\0132\023.ca"
    "ffe.NetParameter\022\021\n\ttrain_net\030\001 \001(\t\022\020\n\010t"
    "est_net\030\002 \003(\t\022,\n\017train_net_param\030\025 \001(\0132\023"
    ".caffe.NetParameter\022+\n\016test_net_param\030\026 "
    "\003(\0132\023.caffe.NetParameter\022$\n\013train_state\030"
    "\032 \001(\0132\017.caffe.NetState\022#\n\ntest_state\030\033 \003"
    "(\0132\017.caffe.NetState\022\021\n\ttest_iter\030\003 \003(\005\022\030"
    "\n\rtest_interval\030\004 \001(\005:\0010\022 \n\021test_compute"
    "_loss\030\023 \001(\010:\005false\022!\n\023test_initializatio"
    "n\030  \001(\010:\004true\022\017\n\007base_lr\030\005 \001(\002\022\017\n\007displa"
    "y\030\006 \001(\005\022\027\n\014average_loss\030! \001(\005:\0011\022\020\n\010max_"
    "iter\030\007 \001(\005\022\024\n\titer_size\030$ \001(\005:\0011\022\021\n\tlr_p"
    "olicy\030\010 \001(\t\022\r\n\005gamma\030\t \001(\002\022\r\n\005power\030\n \001("
    "\002\022\020\n\010momentum\030\013 \001(\002\022\024\n\014weight_decay\030\014 \001("
    "\002\022\037\n\023regularization_type\030\035 \001(\t:\002L2\022\020\n\010st"
    "epsize\030\r \001(\005\022\021\n\tstepvalue\030\" \003(\005\022\032\n\016clip_"
    "gradients\030# \001(\002:\002-1\022\023\n\010snapshot\030\016 \001(\005:\0010"
    "\022\027\n\017snapshot_prefix\030\017 \001(\t\022\034\n\rsnapshot_di"
    "ff\030\020 \001(\010:\005false\022K\n\017snapshot_format\030% \001(\016"
    "2%.caffe.SolverParameter.SnapshotFormat:"
    "\013BINARYPROTO\022;\n\013solver_mode\030\021 \001(\0162!.caff"
    "e.SolverParameter.SolverMode:\003GPU\022\024\n\tdev"
    "ice_id\030\022 \001(\005:\0010\022\027\n\013random_seed\030\024 \001(\003:\002-1"
    "\022\021\n\004type\030( \001(\t:\003SGD\022\024\n\005delta\030\037 \001(\002:\0051e-0"
    "8\022\030\n\tmomentum2\030\' \001(\002:\0050.999\022\021\n\trms_decay"
    "\030& \001(\002\022\031\n\ndebug_info\030\027 \001(\010:\005false\022\"\n\024sna"
    "pshot_after_train\030\034 \001(\010:\004true\022;\n\013solver_"
    "type\030\036 \001(\0162!.caffe.SolverParameter.Solve"
    "rType:\003SGD\"+\n\016SnapshotFormat\022\010\n\004HDF5\020\000\022\017"
    "\n\013BINARYPROTO\020\001\"\036\n\nSolverMode\022\007\n\003CPU\020\000\022\007"
    "\n\003GPU\020\001\"U\n\nSolverType\022\007\n\003SGD\020\000\022\014\n\010NESTER"
    "OV\020\001\022\013\n\007ADAGRAD\020\002\022\013\n\007RMSPROP\020\003\022\014\n\010ADADEL"
    "TA\020\004\022\010\n\004ADAM\020\005\"l\n\013SolverState\022\014\n\004iter\030\001 "
    "\001(\005\022\023\n\013learned_net\030\002 \001(\t\022!\n\007history\030\003 \003("
    "\0132\020.caffe.BlobProto\022\027\n\014current_step\030\004 \001("
    "\005:\0010\"N\n\010NetState\022!\n\005phase\030\001 \001(\0162\014.caffe."
    "Phase:\004TEST\022\020\n\005level\030\002 \001(\005:\0010\022\r\n\005stage\030\003"
    " \003(\t\"s\n\014NetStateRule\022\033\n\005phase\030\001 \001(\0162\014.ca"
    "ffe.Phase\022\021\n\tmin_level\030\002 \001(\005\022\021\n\tmax_leve"
    "l\030\003 \001(\005\022\r\n\005stage\030\004 \003(\t\022\021\n\tnot_stage\030\005 \003("
    "\t\"\243\001\n\tParamSpec\022\014\n\004name\030\001 \001(\t\0221\n\nshare_m"
    "ode\030\002 \001(\0162\035.caffe.ParamSpec.DimCheckMode"
    "\022\022\n\007lr_mult\030\003 \001(\002:\0011\022\025\n\ndecay_mult\030\004 \001(\002"
    ":\0011\"*\n\014DimCheckMode\022\n\n\006STRICT\020\000\022\016\n\nPERMI"
    "SSIVE\020\001\"\351\031\n\016LayerParameter\022\014\n\004name\030\001 \001(\t"
    "\022\014\n\004type\030\002 \001(\t\022\016\n\006bottom\030\003 \003(\t\022\013\n\003top\030\004 "
    "\003(\t\022\033\n\005phase\030\n \001(\0162\014.caffe.Phase\022\023\n\013loss"
    "_weight\030\005 \003(\002\022\037\n\005param\030\006 \003(\0132\020.caffe.Par"
    "amSpec\022\037\n\005blobs\030\007 \003(\0132\020.caffe.BlobProto\022"
    "\026\n\016propagate_down\030\013 \003(\010\022$\n\007include\030\010 \003(\013"
    "2\023.caffe.NetStateRule\022$\n\007exclude\030\t \003(\0132\023"
    ".caffe.NetStateRule\0227\n\017transform_param\030d"
    " \001(\0132\036.caffe.TransformationParameter\022(\n\n"
    "loss_param\030e \001(\0132\024.caffe.LossParameter\0220"
    "\n\016accuracy_param\030f \001(\0132\030.caffe.AccuracyP"
    "arameter\022,\n\014argmax_param\030g \001(\0132\026.caffe.A"
    "rgMaxParameter\0224\n\020batch_norm_param\030\213\001 \001("
    "\0132\031.caffe.BatchNormParameter\022)\n\nbias_par"
    "am\030\215\001 \001(\0132\024.caffe.BiasParameter\022$\n\010bn_pa"
    "ram\030- \001(\0132\022.caffe.BNParameter\022,\n\014concat_"
    "param\030h \001(\0132\026.caffe.ConcatParameter\022\?\n\026c"
    "ontrastive_loss_param\030i \001(\0132\037.caffe.Cont"
    "rastiveLossParameter\0226\n\021convolution_para"
    "m\030j \001(\0132\033.caffe.ConvolutionParameter\022)\n\n"
    "crop_param\030\220\001 \001(\0132\024.caffe.CropParameter\022"
    "(\n\ndata_param\030k \001(\0132\024.caffe.DataParamete"
    "r\022@\n\026detection_output_param\030\314\001 \001(\0132\037.caf"
    "fe.DetectionOutputParameter\022I\n\033yolo_dete"
    "ction_output_param\030\331\004 \001(\0132#.caffe.YoloDe"
    "tectionOutputParameter\022M\n\035yolov3_detecti"
    "on_output_param\030\333\004 \001(\0132%.caffe.Yolov3Det"
    "ectionOutputParameter\022.\n\rdropout_param\030l"
    " \001(\0132\027.caffe.DropoutParameter\0223\n\020dummy_d"
    "ata_param\030m \001(\0132\031.caffe.DummyDataParamet"
    "er\022.\n\reltwise_param\030n \001(\0132\027.caffe.Eltwis"
    "eParameter\022\'\n\telu_param\030\214\001 \001(\0132\023.caffe.E"
    "LUParameter\022+\n\013embed_param\030\211\001 \001(\0132\025.caff"
    "e.EmbedParameter\022&\n\texp_param\030o \001(\0132\023.ca"
    "ffe.ExpParameter\022/\n\rflatten_param\030\207\001 \001(\013"
    "2\027.caffe.FlattenParameter\0221\n\017hdf5_data_p"
    "aram\030p \001(\0132\030.caffe.HDF5DataParameter\0225\n\021"
    "hdf5_output_param\030q \001(\0132\032.caffe.HDF5Outp"
    "utParameter\0223\n\020hinge_loss_param\030r \001(\0132\031."
    "caffe.HingeLossParameter\0223\n\020image_data_p"
    "aram\030s \001(\0132\031.caffe.ImageDataParameter\0229\n"
    "\023infogain_loss_param\030t \001(\0132\034.caffe.Infog"
    "ainLossParameter\0229\n\023inner_product_param\030"
    "u \001(\0132\034.caffe.InnerProductParameter\022+\n\013i"
    "nput_param\030\217\001 \001(\0132\025.caffe.InputParameter"
    "\022-\n\014interp_param\030\315\001 \001(\0132\026.caffe.InterpPa"
    "rameter\022\'\n\tlog_param\030\206\001 \001(\0132\023.caffe.LogP"
    "arameter\022&\n\tlrn_param\030v \001(\0132\023.caffe.LRNP"
    "arameter\0225\n\021memory_data_param\030w \001(\0132\032.ca"
    "ffe.MemoryDataParameter\022&\n\tmvn_param\030x \001"
    "(\0132\023.caffe.MVNParameter\022.\n\nnorm_param\030\316\001"
    " \001(\0132\031.caffe.NormalizeParameter\022.\n\rpooli"
    "ng_param\030y \001(\0132\027.caffe.PoolingParameter\022"
    "/\n\rpermute_param\030\312\001 \001(\0132\027.caffe.PermuteP"
    "arameter\022*\n\013power_param\030z \001(\0132\025.caffe.Po"
    "werParameter\022+\n\013prelu_param\030\203\001 \001(\0132\025.caf"
    "fe.PReLUParameter\0222\n\017prior_box_param\030\313\001 "
    "\001(\0132\030.caffe.PriorBoxParameter\022:\n\023psroi_p"
    "ooling_param\030\225\001 \001(\0132\034.caffe.PSROIPooling"
    "Parameter\022-\n\014python_param\030\202\001 \001(\0132\026.caffe"
    ".PythonParameter\0223\n\017recurrent_param\030\222\001 \001"
    "(\0132\031.caffe.RecurrentParameter\0223\n\017reducti"
    "on_param\030\210\001 \001(\0132\031.caffe.ReductionParamet"
    "er\022(\n\nrelu_param\030{ \001(\0132\024.caffe.ReLUParam"
    "eter\022+\n\013reorg_param\030\223\001 \001(\0132\025.caffe.Reorg"
    "Parameter\022/\n\rreshape_param\030\205\001 \001(\0132\027.caff"
    "e.ReshapeParameter\0222\n\017roi_align_param\030\224\001"
    " \001(\0132\030.caffe.ROIAlignParameter\0228\n\021roi_po"
    "oling_param\030\327\307\370\003 \001(\0132\032.caffe.ROIPoolingP"
    "arameter\022+\n\013scale_param\030\216\001 \001(\0132\025.caffe.S"
    "caleParameter\022>\n\025shuffle_channel_param\030\221"
    "\001 \001(\0132\036.caffe.ShuffleChannelParameter\022.\n"
    "\rsigmoid_param\030| \001(\0132\027.caffe.SigmoidPara"
    "meter\022=\n\024smooth_l1_loss_param\030\330\307\370\003 \001(\0132\034"
    ".caffe.SmoothL1LossParameter\022.\n\rsoftmax_"
    "param\030} \001(\0132\027.caffe.SoftmaxParameter\022\'\n\t"
    "spp_param\030\204\001 \001(\0132\023.caffe.SPPParameter\022*\n"
    "\013slice_param\030~ \001(\0132\025.caffe.SliceParamete"
    "r\022(\n\ntanh_param\030\177 \001(\0132\024.caffe.TanHParame"
    "ter\0223\n\017threshold_param\030\200\001 \001(\0132\031.caffe.Th"
    "resholdParameter\022)\n\ntile_param\030\212\001 \001(\0132\024."
    "caffe.TileParameter\0226\n\021window_data_param"
    "\030\201\001 \001(\0132\032.caffe.WindowDataParameter\"\266\001\n\027"
    "TransformationParameter\022\020\n\005scale\030\001 \001(\002:\001"
    "1\022\025\n\006mirror\030\002 \001(\010:\005false\022\024\n\tcrop_size\030\003 "
    "\001(\r:\0010\022\021\n\tmean_file\030\004 \001(\t\022\022\n\nmean_value\030"
    "\005 \003(\002\022\032\n\013force_color\030\006 \001(\010:\005false\022\031\n\nfor"
    "ce_gray\030\007 \001(\010:\005false\"\220\004\n\017ResizeParameter"
    "\022\017\n\004prob\030\001 \001(\002:\0011\022=\n\013resize_mode\030\002 \001(\0162\""
    ".caffe.ResizeParameter.Resize_mode:\004WARP"
    "\022\021\n\006height\030\003 \001(\r:\0010\022\020\n\005width\030\004 \001(\r:\0010\022\027\n"
    "\014height_scale\030\010 \001(\r:\0010\022\026\n\013width_scale\030\t "
    "\001(\r:\0010\022;\n\010pad_mode\030\005 \001(\0162\037.caffe.ResizeP"
    "arameter.Pad_mode:\010CONSTANT\022\021\n\tpad_value"
    "\030\006 \003(\002\0227\n\013interp_mode\030\007 \003(\0162\".caffe.Resi"
    "zeParameter.Interp_mode\"G\n\013Resize_mode\022\010"
    "\n\004WARP\020\001\022\022\n\016FIT_SMALL_SIZE\020\002\022\032\n\026FIT_LARG"
    "E_SIZE_AND_PAD\020\003\":\n\010Pad_mode\022\014\n\010CONSTANT"
    "\020\001\022\014\n\010MIRRORED\020\002\022\022\n\016REPEAT_NEAREST\020\003\"I\n\013"
    "Interp_mode\022\n\n\006LINEAR\020\001\022\010\n\004AREA\020\002\022\013\n\007NEA"
    "REST\020\003\022\t\n\005CUBIC\020\004\022\014\n\010LANCZOS4\020\005\"\302\001\n\rLoss"
    "Parameter\022\024\n\014ignore_label\030\001 \001(\005\022D\n\rnorma"
    "lization\030\003 \001(\0162&.caffe.LossParameter.Nor"
    "malizationMode:\005VALID\022\021\n\tnormalize\030\002 \001(\010"
    "\"B\n\021NormalizationMode\022\010\n\004FULL\020\000\022\t\n\005VALID"
    "\020\001\022\016\n\nBATCH_SIZE\020\002\022\010\n\004NONE\020\003\"L\n\021Accuracy"
    "Parameter\022\020\n\005top_k\030\001 \001(\r:\0011\022\017\n\004axis\030\002 \001("
    "\005:\0011\022\024\n\014ignore_label\030\003 \001(\005\"M\n\017ArgMaxPara"
    "meter\022\032\n\013out_max_val\030\001 \001(\010:\005false\022\020\n\005top"
    "_k\030\002 \001(\r:\0011\022\014\n\004axis\030\003 \001(\005\"9\n\017ConcatParam"
    "eter\022\017\n\004axis\030\002 \001(\005:\0011\022\025\n\nconcat_dim\030\001 \001("
    "\r:\0011\"j\n\022BatchNormParameter\022\030\n\020use_global"
    "_stats\030\001 \001(\010\022&\n\027moving_average_fraction\030"
    "\002 \001(\002:\0050.999\022\022\n\003eps\030\003 \001(\002:\0051e-05\"]\n\rBias"
    "Parameter\022\017\n\004axis\030\001 \001(\005:\0011\022\023\n\010num_axes\030\002"
    " \001(\005:\0011\022&\n\006filler\030\003 \001(\0132\026.caffe.FillerPa"
    "rameter\"\300\001\n\013BNParameter\0221\n\007bn_mode\030\003 \001(\016"
    "2\031.caffe.BNParameter.BNMode:\005LEARN\022,\n\014sc"
    "ale_filler\030\001 \001(\0132\026.caffe.FillerParameter"
    "\022,\n\014shift_filler\030\002 \001(\0132\026.caffe.FillerPar"
    "ameter\"\"\n\006BNMode\022\t\n\005LEARN\020\000\022\r\n\tINFERENCE"
    "\020\001\"L\n\030ContrastiveLossParameter\022\021\n\006margin"
    "\030\001 \001(\002:\0011\022\035\n\016legacy_version\030\002 \001(\010:\005false"
    "\"\374\003\n\024ConvolutionParameter\022\022\n\nnum_output\030"
    "\001 \001(\r\022\027\n\tbias_term\030\002 \001(\010:\004true\022\013\n\003pad\030\003 "
    "\003(\r\022\023\n\013kernel_size\030\004 \003(\r\022\016\n\006stride\030\006 \003(\r"
    "\022\020\n\010dilation\030\022 \003(\r\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005"
    "pad_w\030\n \001(\r:\0010\022\020\n\010kernel_h\030\013 \001(\r\022\020\n\010kern"
    "el_w\030\014 \001(\r\022\020\n\010stride_h\030\r \001(\r\022\020\n\010stride_w"
    "\030\016 \001(\r\022\020\n\005group\030\005 \001(\r:\0011\022-\n\rweight_fille"
    "r\030\007 \001(\0132\026.caffe.FillerParameter\022+\n\013bias_"
    "filler\030\010 \001(\0132\026.caffe.FillerParameter\022;\n\006"
    "engine\030\017 \001(\0162\".caffe.ConvolutionParamete"
    "r.Engine:\007DEFAULT\022\017\n\004axis\030\020 \001(\005:\0011\022\036\n\017fo"
    "rce_nd_im2col\030\021 \001(\010:\005false\"+\n\006Engine\022\013\n\007"
    "DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"0\n\rCropP"
    "arameter\022\017\n\004axis\030\001 \001(\005:\0012\022\016\n\006offset\030\002 \003("
    "\r\"\244\002\n\rDataParameter\022\016\n\006source\030\001 \001(\t\022\022\n\nb"
    "atch_size\030\004 \001(\r\022\024\n\trand_skip\030\007 \001(\r:\0010\0221\n"
    "\007backend\030\010 \001(\0162\027.caffe.DataParameter.DB:"
    "\007LEVELDB\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_file\030"
    "\003 \001(\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 "
    "\001(\010:\005false\022\"\n\023force_encoded_color\030\t \001(\010:"
    "\005false\022\023\n\010prefetch\030\n \001(\r:\0014\"\033\n\002DB\022\013\n\007LEV"
    "ELDB\020\000\022\010\n\004LMDB\020\001\"[\n\036NonMaximumSuppressio"
    "nParameter\022\032\n\rnms_threshold\030\001 \001(\002:\0030.3\022\r"
    "\n\005top_k\030\002 \001(\005\022\016\n\003eta\030\003 \001(\002:\0011\"\330\001\n\023SaveOu"
    "tputParameter\022\030\n\020output_directory\030\001 \001(\t\022"
    "\032\n\022output_name_prefix\030\002 \001(\t\022\025\n\routput_fo"
    "rmat\030\003 \001(\t\022\026\n\016label_map_file\030\004 \001(\t\022\026\n\016na"
    "me_size_file\030\005 \001(\t\022\026\n\016num_test_image\030\006 \001"
    "(\r\022,\n\014resize_param\030\007 \001(\0132\026.caffe.ResizeP"
    "arameter\"\307\003\n\030DetectionOutputParameter\022\023\n"
    "\013num_classes\030\001 \001(\r\022\034\n\016share_location\030\002 \001"
    "(\010:\004true\022\036\n\023background_label_id\030\003 \001(\005:\0010"
    "\0228\n\tnms_param\030\004 \001(\0132%.caffe.NonMaximumSu"
    "ppressionParameter\0225\n\021save_output_param\030"
    "\005 \001(\0132\032.caffe.SaveOutputParameter\022<\n\tcod"
    "e_type\030\006 \001(\0162!.caffe.PriorBoxParameter.C"
    "odeType:\006CORNER\022)\n\032variance_encoded_in_t"
    "arget\030\010 \001(\010:\005false\022\026\n\nkeep_top_k\030\007 \001(\005:\002"
    "-1\022\034\n\024confidence_threshold\030\t \001(\002\022\030\n\tvisu"
    "alize\030\n \001(\010:\005false\022\033\n\023visualize_threshol"
    "d\030\013 \001(\002\022\021\n\tsave_file\030\014 \001(\t\"\331\001\n\034YoloDetec"
    "tionOutputParameter\022\020\n\004side\030\001 \001(\r:\00213\022\027\n"
    "\013num_classes\030\002 \001(\r:\00220\022\022\n\007num_box\030\003 \001(\r:"
    "\0015\022\021\n\006coords\030\004 \001(\r:\0014\022\"\n\024confidence_thre"
    "shold\030\005 \001(\002:\0040.01\022\033\n\rnms_threshold\030\006 \001(\002"
    ":\0040.45\022\016\n\006biases\030\007 \003(\002\022\026\n\016label_map_file"
    "\030\010 \001(\t\"\336\001\n\036Yolov3DetectionOutputParamete"
    "r\022\027\n\013num_classes\030\001 \001(\r:\00220\022\022\n\007num_box\030\002 "
    "\001(\r:\0013\022\"\n\024confidence_threshold\030\003 \001(\002:\0040."
    "01\022\033\n\rnms_threshold\030\004 \001(\002:\0040.45\022\016\n\006biase"
    "s\030\005 \003(\002\022\025\n\ranchors_scale\030\006 \003(\r\022\031\n\016mask_g"
    "roup_num\030\007 \001(\r:\0012\022\014\n\004mask\030\010 \003(\r\"I\n\020Dropo"
    "utParameter\022\032\n\rdropout_ratio\030\001 \001(\002:\0030.5\022"
    "\031\n\013scale_train\030\002 \001(\010:\004true\"\240\001\n\022DummyData"
    "Parameter\022+\n\013data_filler\030\001 \003(\0132\026.caffe.F"
    "illerParameter\022\037\n\005shape\030\006 \003(\0132\020.caffe.Bl"
    "obShape\022\013\n\003num\030\002 \003(\r\022\020\n\010channels\030\003 \003(\r\022\016"
    "\n\006height\030\004 \003(\r\022\r\n\005width\030\005 \003(\r\"\245\001\n\020Eltwis"
    "eParameter\0229\n\toperation\030\001 \001(\0162!.caffe.El"
    "twiseParameter.EltwiseOp:\003SUM\022\r\n\005coeff\030\002"
    " \003(\002\022\036\n\020stable_prod_grad\030\003 \001(\010:\004true\"\'\n\t"
    "EltwiseOp\022\010\n\004PROD\020\000\022\007\n\003SUM\020\001\022\007\n\003MAX\020\002\" \n"
    "\014ELUParameter\022\020\n\005alpha\030\001 \001(\002:\0011\"\254\001\n\016Embe"
    "dParameter\022\022\n\nnum_output\030\001 \001(\r\022\021\n\tinput_"
    "dim\030\002 \001(\r\022\027\n\tbias_term\030\003 \001(\010:\004true\022-\n\rwe"
    "ight_filler\030\004 \001(\0132\026.caffe.FillerParamete"
    "r\022+\n\013bias_filler\030\005 \001(\0132\026.caffe.FillerPar"
    "ameter\"D\n\014ExpParameter\022\020\n\004base\030\001 \001(\002:\002-1"
    "\022\020\n\005scale\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"9\n\020"
    "FlattenParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\024\n\010end"
    "_axis\030\002 \001(\005:\002-1\"O\n\021HDF5DataParameter\022\016\n\006"
    "source\030\001 \001(\t\022\022\n\nbatch_size\030\002 \001(\r\022\026\n\007shuf"
    "fle\030\003 \001(\010:\005false\"(\n\023HDF5OutputParameter\022"
    "\021\n\tfile_name\030\001 \001(\t\"^\n\022HingeLossParameter"
    "\0220\n\004norm\030\001 \001(\0162\036.caffe.HingeLossParamete"
    "r.Norm:\002L1\"\026\n\004Norm\022\006\n\002L1\020\001\022\006\n\002L2\020\002\"\227\002\n\022I"
    "mageDataParameter\022\016\n\006source\030\001 \001(\t\022\025\n\nbat"
    "ch_size\030\004 \001(\r:\0011\022\024\n\trand_skip\030\007 \001(\r:\0010\022\026"
    "\n\007shuffle\030\010 \001(\010:\005false\022\025\n\nnew_height\030\t \001"
    "(\r:\0010\022\024\n\tnew_width\030\n \001(\r:\0010\022\026\n\010is_color\030"
    "\013 \001(\010:\004true\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_fi"
    "le\030\003 \001(\t\022\024\n\tcrop_size\030\005 \001(\r:\0010\022\025\n\006mirror"
    "\030\006 \001(\010:\005false\022\025\n\013root_folder\030\014 \001(\t:\000\"\'\n\025"
    "InfogainLossParameter\022\016\n\006source\030\001 \001(\t\"\313\001"
    "\n\025InnerProductParameter\022\022\n\nnum_output\030\001 "
    "\001(\r\022\027\n\tbias_term\030\002 \001(\010:\004true\022-\n\rweight_f"
    "iller\030\003 \001(\0132\026.caffe.FillerParameter\022+\n\013b"
    "ias_filler\030\004 \001(\0132\026.caffe.FillerParameter"
    "\022\017\n\004axis\030\005 \001(\005:\0011\022\030\n\ttranspose\030\006 \001(\010:\005fa"
    "lse\"1\n\016InputParameter\022\037\n\005shape\030\001 \003(\0132\020.c"
    "affe.BlobShape\"\220\001\n\017InterpParameter\022\021\n\006he"
    "ight\030\001 \001(\005:\0010\022\020\n\005width\030\002 \001(\005:\0010\022\026\n\013zoom_"
    "factor\030\003 \001(\005:\0011\022\030\n\rshrink_factor\030\004 \001(\005:\001"
    "1\022\022\n\007pad_beg\030\005 \001(\005:\0010\022\022\n\007pad_end\030\006 \001(\005:\001"
    "0\"D\n\014LogParameter\022\020\n\004base\030\001 \001(\002:\002-1\022\020\n\005s"
    "cale\030\002 \001(\002:\0011\022\020\n\005shift\030\003 \001(\002:\0010\"\270\002\n\014LRNP"
    "arameter\022\025\n\nlocal_size\030\001 \001(\r:\0015\022\020\n\005alpha"
    "\030\002 \001(\002:\0011\022\022\n\004beta\030\003 \001(\002:\0040.75\022D\n\013norm_re"
    "gion\030\004 \001(\0162\036.caffe.LRNParameter.NormRegi"
    "on:\017ACROSS_CHANNELS\022\014\n\001k\030\005 \001(\002:\0011\0223\n\006eng"
    "ine\030\006 \001(\0162\032.caffe.LRNParameter.Engine:\007D"
    "EFAULT\"5\n\nNormRegion\022\023\n\017ACROSS_CHANNELS\020"
    "\000\022\022\n\016WITHIN_CHANNEL\020\001\"+\n\006Engine\022\013\n\007DEFAU"
    "LT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"Z\n\023MemoryData"
    "Parameter\022\022\n\nbatch_size\030\001 \001(\r\022\020\n\010channel"
    "s\030\002 \001(\r\022\016\n\006height\030\003 \001(\r\022\r\n\005width\030\004 \001(\r\"d"
    "\n\014MVNParameter\022 \n\022normalize_variance\030\001 \001"
    "(\010:\004true\022\036\n\017across_channels\030\002 \001(\010:\005false"
    "\022\022\n\003eps\030\003 \001(\002:\0051e-09\"\222\001\n\022NormalizeParame"
    "ter\022\034\n\016across_spatial\030\001 \001(\010:\004true\022,\n\014sca"
    "le_filler\030\002 \001(\0132\026.caffe.FillerParameter\022"
    "\034\n\016channel_shared\030\003 \001(\010:\004true\022\022\n\003eps\030\004 \001"
    "(\002:\0051e-10\"!\n\020PermuteParameter\022\r\n\005order\030\001"
    " \003(\r\"\242\003\n\020PoolingParameter\0225\n\004pool\030\001 \001(\0162"
    "\".caffe.PoolingParameter.PoolMethod:\003MAX"
    "\022\016\n\003pad\030\004 \001(\r:\0010\022\020\n\005pad_h\030\t \001(\r:\0010\022\020\n\005pa"
    "d_w\030\n \001(\r:\0010\022\023\n\013kernel_size\030\002 \001(\r\022\020\n\010ker"
    "nel_h\030\005 \001(\r\022\020\n\010kernel_w\030\006 \001(\r\022\021\n\006stride\030"
    "\003 \001(\r:\0011\022\020\n\010stride_h\030\007 \001(\r\022\020\n\010stride_w\030\010"
    " \001(\r\0227\n\006engine\030\013 \001(\0162\036.caffe.PoolingPara"
    "meter.Engine:\007DEFAULT\022\035\n\016global_pooling\030"
    "\014 \001(\010:\005false\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003A"
    "VE\020\001\022\016\n\nSTOCHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAUL"
    "T\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"F\n\016PowerParame"
    "ter\022\020\n\005power\030\001 \001(\002:\0011\022\020\n\005scale\030\002 \001(\002:\0011\022"
    "\020\n\005shift\030\003 \001(\002:\0010\"\265\002\n\021PriorBoxParameter\022"
    "\020\n\010min_size\030\001 \003(\002\022\020\n\010max_size\030\002 \003(\002\022\024\n\014a"
    "spect_ratio\030\003 \003(\002\022\022\n\004flip\030\004 \001(\010:\004true\022\023\n"
    "\004clip\030\005 \001(\010:\005false\022\020\n\010variance\030\006 \003(\002\022\020\n\010"
    "img_size\030\007 \001(\r\022\r\n\005img_h\030\010 \001(\r\022\r\n\005img_w\030\t"
    " \001(\r\022\014\n\004step\030\n \001(\002\022\016\n\006step_h\030\013 \001(\002\022\016\n\006st"
    "ep_w\030\014 \001(\002\022\023\n\006offset\030\r \001(\002:\0030.5\"8\n\010CodeT"
    "ype\022\n\n\006CORNER\020\001\022\017\n\013CENTER_SIZE\020\002\022\017\n\013CORN"
    "ER_SIZE\020\003\"V\n\025PSROIPoolingParameter\022\025\n\rsp"
    "atial_scale\030\001 \002(\002\022\022\n\noutput_dim\030\002 \002(\005\022\022\n"
    "\ngroup_size\030\003 \002(\005\"g\n\017PythonParameter\022\016\n\006"
    "module\030\001 \001(\t\022\r\n\005layer\030\002 \001(\t\022\023\n\tparam_str"
    "\030\003 \001(\t:\000\022 \n\021share_in_parallel\030\004 \001(\010:\005fal"
    "se\"\300\001\n\022RecurrentParameter\022\025\n\nnum_output\030"
    "\001 \001(\r:\0010\022-\n\rweight_filler\030\002 \001(\0132\026.caffe."
    "FillerParameter\022+\n\013bias_filler\030\003 \001(\0132\026.c"
    "affe.FillerParameter\022\031\n\ndebug_info\030\004 \001(\010"
    ":\005false\022\034\n\rexpose_hidden\030\005 \001(\010:\005false\"\255\001"
    "\n\022ReductionParameter\022=\n\toperation\030\001 \001(\0162"
    "%.caffe.ReductionParameter.ReductionOp:\003"
    "SUM\022\017\n\004axis\030\002 \001(\005:\0010\022\020\n\005coeff\030\003 \001(\002:\0011\"5"
    "\n\013ReductionOp\022\007\n\003SUM\020\001\022\010\n\004ASUM\020\002\022\t\n\005SUMS"
    "Q\020\003\022\010\n\004MEAN\020\004\"\215\001\n\rReLUParameter\022\031\n\016negat"
    "ive_slope\030\001 \001(\002:\0010\0224\n\006engine\030\002 \001(\0162\033.caf"
    "fe.ReLUParameter.Engine:\007DEFAULT\"+\n\006Engi"
    "ne\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\"8\n"
    "\016ReorgParameter\022\016\n\006stride\030\001 \001(\r\022\026\n\007rever"
    "se\030\002 \001(\010:\005false\"Z\n\020ReshapeParameter\022\037\n\005s"
    "hape\030\001 \001(\0132\020.caffe.BlobShape\022\017\n\004axis\030\002 \001"
    "(\005:\0010\022\024\n\010num_axes\030\003 \001(\005:\002-1\"W\n\021ROIAlignP"
    "arameter\022\023\n\010pooled_h\030\001 \001(\r:\0010\022\023\n\010pooled_"
    "w\030\002 \001(\r:\0010\022\030\n\rspatial_scale\030\003 \001(\002:\0011\"Y\n\023"
    "ROIPoolingParameter\022\023\n\010pooled_h\030\001 \001(\r:\0010"
    "\022\023\n\010pooled_w\030\002 \001(\r:\0010\022\030\n\rspatial_scale\030\003"
    " \001(\002:\0011\"\245\001\n\016ScaleParameter\022\017\n\004axis\030\001 \001(\005"
    ":\0011\022\023\n\010num_axes\030\002 \001(\005:\0011\022&\n\006filler\030\003 \001(\013"
    "2\026.caffe.FillerParameter\022\030\n\tbias_term\030\004 "
    "\001(\010:\005false\022+\n\013bias_filler\030\005 \001(\0132\026.caffe."
    "FillerParameter\"+\n\027ShuffleChannelParamet"
    "er\022\020\n\005group\030\001 \001(\r:\0011\"x\n\020SigmoidParameter"
    "\0227\n\006engine\030\001 \001(\0162\036.caffe.SigmoidParamete"
    "r.Engine:\007DEFAULT\"+\n\006Engine\022\013\n\007DEFAULT\020\000"
    "\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\")\n\025SmoothL1LossPa"
    "rameter\022\020\n\005sigma\030\001 \001(\002:\0011\"L\n\016SliceParame"
    "ter\022\017\n\004axis\030\003 \001(\005:\0011\022\023\n\013slice_point\030\002 \003("
    "\r\022\024\n\tslice_dim\030\001 \001(\r:\0011\"\211\001\n\020SoftmaxParam"
    "eter\0227\n\006engine\030\001 \001(\0162\036.caffe.SoftmaxPara"
    "meter.Engine:\007DEFAULT\022\017\n\004axis\030\002 \001(\005:\0011\"+"
    "\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDN"
    "N\020\002\"r\n\rTanHParameter\0224\n\006engine\030\001 \001(\0162\033.c"
    "affe.TanHParameter.Engine:\007DEFAULT\"+\n\006En"
    "gine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFFE\020\001\022\t\n\005CUDNN\020\002\""
    "/\n\rTileParameter\022\017\n\004axis\030\001 \001(\005:\0011\022\r\n\005til"
    "es\030\002 \001(\005\"*\n\022ThresholdParameter\022\024\n\tthresh"
    "old\030\001 \001(\002:\0010\"\301\002\n\023WindowDataParameter\022\016\n\006"
    "source\030\001 \001(\t\022\020\n\005scale\030\002 \001(\002:\0011\022\021\n\tmean_f"
    "ile\030\003 \001(\t\022\022\n\nbatch_size\030\004 \001(\r\022\024\n\tcrop_si"
    "ze\030\005 \001(\r:\0010\022\025\n\006mirror\030\006 \001(\010:\005false\022\031\n\014fg"
    "_threshold\030\007 \001(\002:\0030.5\022\031\n\014bg_threshold\030\010 "
    "\001(\002:\0030.5\022\031\n\013fg_fraction\030\t \001(\002:\0040.25\022\026\n\013c"
    "ontext_pad\030\n \001(\r:\0010\022\027\n\tcrop_mode\030\013 \001(\t:\004"
    "warp\022\033\n\014cache_images\030\014 \001(\010:\005false\022\025\n\013roo"
    "t_folder\030\r \001(\t:\000\"\353\001\n\014SPPParameter\022\026\n\016pyr"
    "amid_height\030\001 \001(\r\0221\n\004pool\030\002 \001(\0162\036.caffe."
    "SPPParameter.PoolMethod:\003MAX\0223\n\006engine\030\006"
    " \001(\0162\032.caffe.SPPParameter.Engine:\007DEFAUL"
    "T\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTO"
    "CHASTIC\020\002\"+\n\006Engine\022\013\n\007DEFAULT\020\000\022\t\n\005CAFF"
    "E\020\001\022\t\n\005CUDNN\020\002\"\340\023\n\020V1LayerParameter\022\016\n\006b"
    "ottom\030\002 \003(\t\022\013\n\003top\030\003 \003(\t\022\014\n\004name\030\004 \001(\t\022$"
    "\n\007include\030  \003(\0132\023.caffe.NetStateRule\022$\n\007"
    "exclude\030! \003(\0132\023.caffe.NetStateRule\022/\n\004ty"
    "pe\030\005 \001(\0162!.caffe.V1LayerParameter.LayerT"
    "ype\022\037\n\005blobs\030\006 \003(\0132\020.caffe.BlobProto\022\016\n\005"
    "param\030\351\007 \003(\t\022>\n\017blob_share_mode\030\352\007 \003(\0162$"
    ".caffe.V1LayerParameter.DimCheckMode\022\020\n\010"
    "blobs_lr\030\007 \003(\002\022\024\n\014weight_decay\030\010 \003(\002\022\023\n\013"
    "loss_weight\030# \003(\002\0220\n\016accuracy_param\030\033 \001("
    "\0132\030.caffe.AccuracyParameter\022,\n\014argmax_pa"
    "ram\030\027 \001(\0132\026.caffe.ArgMaxParameter\022,\n\014con"
    "cat_param\030\t \001(\0132\026.caffe.ConcatParameter\022"
    "\?\n\026contrastive_loss_param\030( \001(\0132\037.caffe."
    "ContrastiveLossParameter\0226\n\021convolution_"
    "param\030\n \001(\0132\033.caffe.ConvolutionParameter"
    "\022(\n\ndata_param\030\013 \001(\0132\024.caffe.DataParamet"
    "er\022.\n\rdropout_param\030\014 \001(\0132\027.caffe.Dropou"
    "tParameter\0223\n\020dummy_data_param\030\032 \001(\0132\031.c"
    "affe.DummyDataParameter\022.\n\reltwise_param"
    "\030\030 \001(\0132\027.caffe.EltwiseParameter\022&\n\texp_p"
    "aram\030) \001(\0132\023.caffe.ExpParameter\0221\n\017hdf5_"
    "data_param\030\r \001(\0132\030.caffe.HDF5DataParamet"
    "er\0225\n\021hdf5_output_param\030\016 \001(\0132\032.caffe.HD"
    "F5OutputParameter\0223\n\020hinge_loss_param\030\035 "
    "\001(\0132\031.caffe.HingeLossParameter\0223\n\020image_"
    "data_param\030\017 \001(\0132\031.caffe.ImageDataParame"
    "ter\0229\n\023infogain_loss_param\030\020 \001(\0132\034.caffe"
    ".InfogainLossParameter\0229\n\023inner_product_"
    "param\030\021 \001(\0132\034.caffe.InnerProductParamete"
    "r\022&\n\tlrn_param\030\022 \001(\0132\023.caffe.LRNParamete"
    "r\0225\n\021memory_data_param\030\026 \001(\0132\032.caffe.Mem"
    "oryDataParameter\022&\n\tmvn_param\030\" \001(\0132\023.ca"
    "ffe.MVNParameter\022.\n\rpooling_param\030\023 \001(\0132"
    "\027.caffe.PoolingParameter\022*\n\013power_param\030"
    "\025 \001(\0132\025.caffe.PowerParameter\022(\n\nrelu_par"
    "am\030\036 \001(\0132\024.caffe.ReLUParameter\022.\n\rsigmoi"
    "d_param\030& \001(\0132\027.caffe.SigmoidParameter\022."
    "\n\rsoftmax_param\030\' \001(\0132\027.caffe.SoftmaxPar"
    "ameter\022*\n\013slice_param\030\037 \001(\0132\025.caffe.Slic"
    "eParameter\022(\n\ntanh_param\030% \001(\0132\024.caffe.T"
    "anHParameter\0222\n\017threshold_param\030\031 \001(\0132\031."
    "caffe.ThresholdParameter\0225\n\021window_data_"
    "param\030\024 \001(\0132\032.caffe.WindowDataParameter\022"
    "7\n\017transform_param\030$ \001(\0132\036.caffe.Transfo"
    "rmationParameter\022(\n\nloss_param\030* \001(\0132\024.c"
    "affe.LossParameter\022&\n\005layer\030\001 \001(\0132\027.caff"
    "e.V0LayerParameter\"\330\004\n\tLayerType\022\010\n\004NONE"
    "\020\000\022\n\n\006ABSVAL\020#\022\014\n\010ACCURACY\020\001\022\n\n\006ARGMAX\020\036"
    "\022\010\n\004BNLL\020\002\022\n\n\006CONCAT\020\003\022\024\n\020CONTRASTIVE_LO"
    "SS\020%\022\017\n\013CONVOLUTION\020\004\022\010\n\004DATA\020\005\022\021\n\rDECON"
    "VOLUTION\020\'\022\013\n\007DROPOUT\020\006\022\016\n\nDUMMY_DATA\020 \022"
    "\022\n\016EUCLIDEAN_LOSS\020\007\022\013\n\007ELTWISE\020\031\022\007\n\003EXP\020"
    "&\022\013\n\007FLATTEN\020\010\022\r\n\tHDF5_DATA\020\t\022\017\n\013HDF5_OU"
    "TPUT\020\n\022\016\n\nHINGE_LOSS\020\034\022\n\n\006IM2COL\020\013\022\016\n\nIM"
    "AGE_DATA\020\014\022\021\n\rINFOGAIN_LOSS\020\r\022\021\n\rINNER_P"
    "RODUCT\020\016\022\007\n\003LRN\020\017\022\017\n\013MEMORY_DATA\020\035\022\035\n\031MU"
    "LTINOMIAL_LOGISTIC_LOSS\020\020\022\007\n\003MVN\020\"\022\013\n\007PO"
    "OLING\020\021\022\t\n\005POWER\020\032\022\010\n\004RELU\020\022\022\013\n\007SIGMOID\020"
    "\023\022\036\n\032SIGMOID_CROSS_ENTROPY_LOSS\020\033\022\013\n\007SIL"
    "ENCE\020$\022\013\n\007SOFTMAX\020\024\022\020\n\014SOFTMAX_LOSS\020\025\022\t\n"
    "\005SPLIT\020\026\022\t\n\005SLICE\020!\022\010\n\004TANH\020\027\022\017\n\013WINDOW_"
    "DATA\020\030\022\r\n\tTHRESHOLD\020\037\"*\n\014DimCheckMode\022\n\n"
    "\006STRICT\020\000\022\016\n\nPERMISSIVE\020\001\"\375\007\n\020V0LayerPar"
    "ameter\022\014\n\004name\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\022\n\nnu"
    "m_output\030\003 \001(\r\022\026\n\010biasterm\030\004 \001(\010:\004true\022-"
    "\n\rweight_filler\030\005 \001(\0132\026.caffe.FillerPara"
    "meter\022+\n\013bias_filler\030\006 \001(\0132\026.caffe.Fille"
    "rParameter\022\016\n\003pad\030\007 \001(\r:\0010\022\022\n\nkernelsize"
    "\030\010 \001(\r\022\020\n\005group\030\t \001(\r:\0011\022\021\n\006stride\030\n \001(\r"
    ":\0011\0225\n\004pool\030\013 \001(\0162\".caffe.V0LayerParamet"
    "er.PoolMethod:\003MAX\022\032\n\rdropout_ratio\030\014 \001("
    "\002:\0030.5\022\025\n\nlocal_size\030\r \001(\r:\0015\022\020\n\005alpha\030\016"
    " \001(\002:\0011\022\022\n\004beta\030\017 \001(\002:\0040.75\022\014\n\001k\030\026 \001(\002:\001"
    "1\022\016\n\006source\030\020 \001(\t\022\020\n\005scale\030\021 \001(\002:\0011\022\020\n\010m"
    "eanfile\030\022 \001(\t\022\021\n\tbatchsize\030\023 \001(\r\022\023\n\010crop"
    "size\030\024 \001(\r:\0010\022\025\n\006mirror\030\025 \001(\010:\005false\022\037\n\005"
    "blobs\0302 \003(\0132\020.caffe.BlobProto\022\020\n\010blobs_l"
    "r\0303 \003(\002\022\024\n\014weight_decay\0304 \003(\002\022\024\n\trand_sk"
    "ip\0305 \001(\r:\0010\022\035\n\020det_fg_threshold\0306 \001(\002:\0030"
    ".5\022\035\n\020det_bg_threshold\0307 \001(\002:\0030.5\022\035\n\017det"
    "_fg_fraction\0308 \001(\002:\0040.25\022\032\n\017det_context_"
    "pad\030: \001(\r:\0010\022\033\n\rdet_crop_mode\030; \001(\t:\004war"
    "p\022\022\n\007new_num\030< \001(\005:\0010\022\027\n\014new_channels\030= "
    "\001(\005:\0010\022\025\n\nnew_height\030> \001(\005:\0010\022\024\n\tnew_wid"
    "th\030\? \001(\005:\0010\022\035\n\016shuffle_images\030@ \001(\010:\005fal"
    "se\022\025\n\nconcat_dim\030A \001(\r:\0011\0226\n\021hdf5_output"
    "_param\030\351\007 \001(\0132\032.caffe.HDF5OutputParamete"
    "r\".\n\nPoolMethod\022\007\n\003MAX\020\000\022\007\n\003AVE\020\001\022\016\n\nSTO"
    "CHASTIC\020\002\"W\n\016PReLUParameter\022&\n\006filler\030\001 "
    "\001(\0132\026.caffe.FillerParameter\022\035\n\016channel_s"
    "hared\030\002 \001(\010:\005false*\034\n\005Phase\022\t\n\005TRAIN\020\000\022\010"
    "\n\004TEST\020\001"
};
static ::absl::once_flag descriptor_table_caffe_2eproto_once;
PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_caffe_2eproto = {
    false,
    false,
    19088,
    descriptor_table_protodef_caffe_2eproto,
    "caffe.proto",
    &descriptor_table_caffe_2eproto_once,
    nullptr,
    0,
    77,
    schemas,
    file_message_globals,
    TableStruct_caffe_2eproto::offsets,
    file_level_enum_descriptors_caffe_2eproto,
    file_level_service_descriptors_caffe_2eproto,
};
namespace caffe {
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
FillerParameter_VarianceNorm_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[0];
}
PROTOBUF_CONSTINIT const uint32_t FillerParameter_VarianceNorm_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SolverParameter_SnapshotFormat_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[1];
}
PROTOBUF_CONSTINIT const uint32_t SolverParameter_SnapshotFormat_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SolverParameter_SolverMode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[2];
}
PROTOBUF_CONSTINIT const uint32_t SolverParameter_SolverMode_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SolverParameter_SolverType_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[3];
}
PROTOBUF_CONSTINIT const uint32_t SolverParameter_SolverType_internal_data_[] = {
    393216u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ParamSpec_DimCheckMode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[4];
}
PROTOBUF_CONSTINIT const uint32_t ParamSpec_DimCheckMode_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ResizeParameter_Resize_mode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[5];
}
PROTOBUF_CONSTINIT const uint32_t ResizeParameter_Resize_mode_internal_data_[] = {
    196609u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ResizeParameter_Pad_mode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[6];
}
PROTOBUF_CONSTINIT const uint32_t ResizeParameter_Pad_mode_internal_data_[] = {
    196609u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ResizeParameter_Interp_mode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[7];
}
PROTOBUF_CONSTINIT const uint32_t ResizeParameter_Interp_mode_internal_data_[] = {
    327681u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LossParameter_NormalizationMode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[8];
}
PROTOBUF_CONSTINIT const uint32_t LossParameter_NormalizationMode_internal_data_[] = {
    262144u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
BNParameter_BNMode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[9];
}
PROTOBUF_CONSTINIT const uint32_t BNParameter_BNMode_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ConvolutionParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[10];
}
PROTOBUF_CONSTINIT const uint32_t ConvolutionParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
DataParameter_DB_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[11];
}
PROTOBUF_CONSTINIT const uint32_t DataParameter_DB_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
EltwiseParameter_EltwiseOp_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[12];
}
PROTOBUF_CONSTINIT const uint32_t EltwiseParameter_EltwiseOp_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
HingeLossParameter_Norm_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[13];
}
PROTOBUF_CONSTINIT const uint32_t HingeLossParameter_Norm_internal_data_[] = {
    131073u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LRNParameter_NormRegion_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[14];
}
PROTOBUF_CONSTINIT const uint32_t LRNParameter_NormRegion_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LRNParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[15];
}
PROTOBUF_CONSTINIT const uint32_t LRNParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
PoolingParameter_PoolMethod_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[16];
}
PROTOBUF_CONSTINIT const uint32_t PoolingParameter_PoolMethod_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
PoolingParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[17];
}
PROTOBUF_CONSTINIT const uint32_t PoolingParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
PriorBoxParameter_CodeType_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[18];
}
PROTOBUF_CONSTINIT const uint32_t PriorBoxParameter_CodeType_internal_data_[] = {
    196609u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ReductionParameter_ReductionOp_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[19];
}
PROTOBUF_CONSTINIT const uint32_t ReductionParameter_ReductionOp_internal_data_[] = {
    262145u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ReLUParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[20];
}
PROTOBUF_CONSTINIT const uint32_t ReLUParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SigmoidParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[21];
}
PROTOBUF_CONSTINIT const uint32_t SigmoidParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SoftmaxParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[22];
}
PROTOBUF_CONSTINIT const uint32_t SoftmaxParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
TanHParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[23];
}
PROTOBUF_CONSTINIT const uint32_t TanHParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SPPParameter_PoolMethod_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[24];
}
PROTOBUF_CONSTINIT const uint32_t SPPParameter_PoolMethod_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SPPParameter_Engine_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[25];
}
PROTOBUF_CONSTINIT const uint32_t SPPParameter_Engine_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
V1LayerParameter_LayerType_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[26];
}
PROTOBUF_CONSTINIT const uint32_t V1LayerParameter_LayerType_internal_data_[] = {
    2621440u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
V1LayerParameter_DimCheckMode_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[27];
}
PROTOBUF_CONSTINIT const uint32_t V1LayerParameter_DimCheckMode_internal_data_[] = {
    131072u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
V0LayerParameter_PoolMethod_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[28];
}
PROTOBUF_CONSTINIT const uint32_t V0LayerParameter_PoolMethod_internal_data_[] = {
    196608u, 0u, };
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
Phase_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_caffe_2eproto);
  return file_level_enum_descriptors_caffe_2eproto[29];
}
PROTOBUF_CONSTINIT const uint32_t Phase_internal_data_[] = {
    131072u, 0u, };
// ===================================================================

BlobShape::BlobShape(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobShape_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BlobShape)
}
PROTOBUF_NDEBUG_INLINE BlobShape::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::BlobShape& from_msg)
      : _has_bits_{from._has_bits_},
        dim_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobShape,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobShape, _impl_.dim_)>()
          , arena, from.dim_
        }
     {}

BlobShape::BlobShape(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const BlobShape& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobShape_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  BlobShape* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.BlobShape)
}
PROTOBUF_NDEBUG_INLINE BlobShape::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : dim_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobShape,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobShape, _impl_.dim_)>()
         }
     {}

inline void BlobShape::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
BlobShape::~BlobShape() {
  // @@protoc_insertion_point(destructor:caffe.BlobShape)
  SharedDtor(*this);
}
inline void BlobShape::SharedDtor(MessageLite& self) {
  BlobShape& this_ = static_cast<BlobShape&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BlobShape_class_data_ =
        BlobShape::InternalGenerateClassData_(BlobShape_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobShape::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobShape_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BlobShape_class_data_.tc_table);
  return BlobShape_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobShape::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobShape_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BlobShape_globals_));
  return BlobShape_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BlobShape::ParseTableT_
    BlobShape::_table_ =
        BlobShape::InternalGenerateParseTable_(BlobShape_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BlobShape::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BlobShape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.dim_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BlobShape::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BlobShape& this_ = static_cast<const BlobShape&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BlobShape::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BlobShape& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BlobShape)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated int64 dim = 1 [packed = true];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    {
      int byte_size = this_._impl_._dim_cached_byte_size_.Get();
      if (byte_size > 0) {
        target = stream->WriteInt64Packed(
            1, this_._internal_dim(), byte_size, target);
      }
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BlobShape)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BlobShape::ByteSizeLong(const MessageLite& base) {
  const BlobShape& this_ = static_cast<const BlobShape&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BlobShape::ByteSizeLong() const {
  const BlobShape& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BlobShape)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated int64 dim = 1 [packed = true];
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          ::_pbi::WireFormatLite::Int64SizeWithPackedTagSize(
              this_._internal_dim(), 1,
              this_._impl_._dim_cached_byte_size_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BlobShape::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BlobShape*>(&to_msg);
  auto& from = static_cast<const BlobShape&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BlobShape)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_dim()->MergeFrom(from._internal_dim());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BlobShape::InternalSwap(BlobShape* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.dim_.InternalSwap(&other->_impl_.dim_);
}

::google::protobuf::Metadata BlobShape::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

BlobProto::BlobProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobProto_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BlobProto)
}
PROTOBUF_NDEBUG_INLINE BlobProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::BlobProto& from_msg)
      : _has_bits_{from._has_bits_},
        data_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobProto,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.data_)>()
          , arena, from.data_
        }
        ,
        diff_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobProto,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.diff_)>()
          , arena, from.diff_
        }
        ,
        double_data_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobProto,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_data_)>()
          , arena, from.double_data_
        }
        ,
        double_diff_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobProto,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_diff_)>()
          , arena, from.double_diff_
        }
     {}

BlobProto::BlobProto(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const BlobProto& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobProto_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  BlobProto* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.shape_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.shape_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_),
           offsetof(Impl_, width_) -
               offsetof(Impl_, num_) +
               sizeof(Impl_::width_));

  // @@protoc_insertion_point(copy_constructor:caffe.BlobProto)
}
PROTOBUF_NDEBUG_INLINE BlobProto::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.data_)>()
         }
        ,
        diff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.diff_)>()
         }
        ,
        double_data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_data_)>()
         }
        ,
        double_diff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProto,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProto, _impl_.double_diff_)>()
         }
     {}

inline void BlobProto::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, shape_),
           0,
           offsetof(Impl_, width_) -
               offsetof(Impl_, shape_) +
               sizeof(Impl_::width_));
}
BlobProto::~BlobProto() {
  // @@protoc_insertion_point(destructor:caffe.BlobProto)
  SharedDtor(*this);
}
inline void BlobProto::SharedDtor(MessageLite& self) {
  BlobProto& this_ = static_cast<BlobProto&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.shape_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BlobProto_class_data_ =
        BlobProto::InternalGenerateClassData_(BlobProto_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobProto_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BlobProto_class_data_.tc_table);
  return BlobProto_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobProto::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobProto_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BlobProto_globals_));
  return BlobProto_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BlobProto::ParseTableT_
    BlobProto::_table_ =
        BlobProto::InternalGenerateParseTable_(BlobProto_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BlobProto::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BlobProto)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.data_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.diff_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.double_data_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.double_diff_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.shape_ != nullptr);
      this_._impl_.shape_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000e0U)) {
    ::memset(&this_._impl_.num_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.height_) -
                 reinterpret_cast<char*>(&this_._impl_.num_)) +
                 sizeof(_impl_.height_));
  }
  this_._impl_.width_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BlobProto::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BlobProto& this_ = static_cast<const BlobProto&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BlobProto::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BlobProto& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BlobProto)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 num = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_num(), target);
  }

  // optional int32 channels = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_channels(), target);
  }

  // optional int32 height = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_height(), target);
  }

  // optional int32 width = 4 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<4>(
            stream, this_._internal_width(), target);
  }

  // repeated float data = 5 [packed = true];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    if (this_._internal_data_size() > 0) {
      target = stream->WriteFixedPacked(5, this_._internal_data(), target);
    }
  }

  // repeated float diff = 6 [packed = true];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    if (this_._internal_diff_size() > 0) {
      target = stream->WriteFixedPacked(6, this_._internal_diff(), target);
    }
  }

  // optional .caffe.BlobShape shape = 7;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        7, *this_._impl_.shape_, this_._impl_.shape_->GetCachedSize(), target,
        stream);
  }

  // repeated double double_data = 8 [packed = true];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    if (this_._internal_double_data_size() > 0) {
      target = stream->WriteFixedPacked(8, this_._internal_double_data(), target);
    }
  }

  // repeated double double_diff = 9 [packed = true];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    if (this_._internal_double_diff_size() > 0) {
      target = stream->WriteFixedPacked(9, this_._internal_double_diff(), target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BlobProto)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BlobProto::ByteSizeLong(const MessageLite& base) {
  const BlobProto& this_ = static_cast<const BlobProto&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BlobProto::ByteSizeLong() const {
  const BlobProto& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BlobProto)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated float data = 5 [packed = true];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_data_size());
      ::size_t tag_size = data_size == 0
          ? 0
          : 1 + ::_pbi::WireFormatLite::Int32Size(
                              static_cast<::int32_t>(data_size));
      total_size += tag_size + data_size;
    }
    // repeated float diff = 6 [packed = true];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_diff_size());
      ::size_t tag_size = data_size == 0
          ? 0
          : 1 + ::_pbi::WireFormatLite::Int32Size(
                              static_cast<::int32_t>(data_size));
      total_size += tag_size + data_size;
    }
    // repeated double double_data = 8 [packed = true];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::size_t{8} *
          ::_pbi::FromIntSize(this_._internal_double_data_size());
      ::size_t tag_size = data_size == 0
          ? 0
          : 1 + ::_pbi::WireFormatLite::Int32Size(
                              static_cast<::int32_t>(data_size));
      total_size += tag_size + data_size;
    }
    // repeated double double_diff = 9 [packed = true];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ::size_t data_size = ::size_t{8} *
          ::_pbi::FromIntSize(this_._internal_double_diff_size());
      ::size_t tag_size = data_size == 0
          ? 0
          : 1 + ::_pbi::WireFormatLite::Int32Size(
                              static_cast<::int32_t>(data_size));
      total_size += tag_size + data_size;
    }
    // optional .caffe.BlobShape shape = 7;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.shape_);
    }
    // optional int32 num = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_num());
    }
    // optional int32 channels = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_channels());
    }
    // optional int32 height = 3 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_height());
    }
  }
   {
    // optional int32 width = 4 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_width());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BlobProto::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BlobProto*>(&to_msg);
  auto& from = static_cast<const BlobProto&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BlobProto)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_data()->MergeFrom(from._internal_data());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_diff()->MergeFrom(from._internal_diff());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_double_data()->MergeFrom(from._internal_double_data());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_double_diff()->MergeFrom(from._internal_double_diff());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.shape_ != nullptr);
      if (_this->_impl_.shape_ == nullptr) {
        _this->_impl_.shape_ = Super_::CopyConstruct(arena, *from._impl_.shape_);
      } else {
        _this->_impl_.shape_->MergeFrom(*from._impl_.shape_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.num_ = from._impl_.num_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.channels_ = from._impl_.channels_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.height_ = from._impl_.height_;
    }
  }
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    _this->_impl_.width_ = from._impl_.width_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BlobProto::InternalSwap(BlobProto* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.data_.InternalSwap(&other->_impl_.data_);
  _impl_.diff_.InternalSwap(&other->_impl_.diff_);
  _impl_.double_data_.InternalSwap(&other->_impl_.double_data_);
  _impl_.double_diff_.InternalSwap(&other->_impl_.double_diff_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.width_)
      + sizeof(BlobProto::_impl_.width_)
      - PROTOBUF_FIELD_OFFSET(BlobProto, _impl_.shape_)>(
          reinterpret_cast<char*>(&_impl_.shape_),
          reinterpret_cast<char*>(&other->_impl_.shape_));
}

::google::protobuf::Metadata BlobProto::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

BlobProtoVector::BlobProtoVector(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobProtoVector_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BlobProtoVector)
}
PROTOBUF_NDEBUG_INLINE BlobProtoVector::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::BlobProtoVector& from_msg)
      : _has_bits_{from._has_bits_},
        blobs_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::BlobProtoVector,
              PROTOBUF_FIELD_OFFSET(::caffe::BlobProtoVector, _impl_.blobs_)>()
          , arena, from.blobs_
        }
     {}

BlobProtoVector::BlobProtoVector(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const BlobProtoVector& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BlobProtoVector_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  BlobProtoVector* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.BlobProtoVector)
}
PROTOBUF_NDEBUG_INLINE BlobProtoVector::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::BlobProtoVector,
            PROTOBUF_FIELD_OFFSET(::caffe::BlobProtoVector, _impl_.blobs_)>()
         }
     {}

inline void BlobProtoVector::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
BlobProtoVector::~BlobProtoVector() {
  // @@protoc_insertion_point(destructor:caffe.BlobProtoVector)
  SharedDtor(*this);
}
inline void BlobProtoVector::SharedDtor(MessageLite& self) {
  BlobProtoVector& this_ = static_cast<BlobProtoVector&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BlobProtoVector_class_data_ =
        BlobProtoVector::InternalGenerateClassData_(BlobProtoVector_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobProtoVector::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobProtoVector_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BlobProtoVector_class_data_.tc_table);
  return BlobProtoVector_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BlobProtoVector::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BlobProtoVector_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BlobProtoVector_globals_));
  return BlobProtoVector_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BlobProtoVector::ParseTableT_
    BlobProtoVector::_table_ =
        BlobProtoVector::InternalGenerateParseTable_(BlobProtoVector_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BlobProtoVector::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BlobProtoVector)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.blobs_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BlobProtoVector::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BlobProtoVector& this_ = static_cast<const BlobProtoVector&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BlobProtoVector::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BlobProtoVector& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BlobProtoVector)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .caffe.BlobProto blobs = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_blobs_size());
         i < n; i++) {
      const auto& repfield = this_._internal_blobs().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BlobProtoVector)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BlobProtoVector::ByteSizeLong(const MessageLite& base) {
  const BlobProtoVector& this_ = static_cast<const BlobProtoVector&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BlobProtoVector::ByteSizeLong() const {
  const BlobProtoVector& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BlobProtoVector)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated .caffe.BlobProto blobs = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_blobs_size();
      for (const auto& msg : this_._internal_blobs()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BlobProtoVector::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BlobProtoVector*>(&to_msg);
  auto& from = static_cast<const BlobProtoVector&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BlobProtoVector)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_blobs()->InternalMergeFromWithArena(
        ::google::protobuf::MessageLite::internal_visibility(), arena,
        from._internal_blobs());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BlobProtoVector::InternalSwap(BlobProtoVector* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.blobs_.InternalSwap(&other->_impl_.blobs_);
}

::google::protobuf::Metadata BlobProtoVector::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

Datum::Datum(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, Datum_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.Datum)
}
PROTOBUF_NDEBUG_INLINE Datum::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::Datum& from_msg)
      : _has_bits_{from._has_bits_},
        float_data_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::Datum,
              PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.float_data_)>()
          , arena, from.float_data_
        }
        ,
        data_(arena, from.data_) {}

Datum::Datum(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const Datum& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, Datum_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  Datum* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, channels_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, channels_),
           offsetof(Impl_, encoded_) -
               offsetof(Impl_, channels_) +
               sizeof(Impl_::encoded_));

  // @@protoc_insertion_point(copy_constructor:caffe.Datum)
}
PROTOBUF_NDEBUG_INLINE Datum::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : float_data_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Datum,
            PROTOBUF_FIELD_OFFSET(::caffe::Datum, _impl_.float_data_)>()
         }
        ,
        data_(arena) {}

inline void Datum::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, channels_),
           0,
           offsetof(Impl_, encoded_) -
               offsetof(Impl_, channels_) +
               sizeof(Impl_::encoded_));
}
Datum::~Datum() {
  // @@protoc_insertion_point(destructor:caffe.Datum)
  SharedDtor(*this);
}
inline void Datum::SharedDtor(MessageLite& self) {
  Datum& this_ = static_cast<Datum&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.data_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull Datum_class_data_ =
        Datum::InternalGenerateClassData_(Datum_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Datum::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&Datum_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(Datum_class_data_.tc_table);
  return Datum_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Datum::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&Datum_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&Datum_globals_));
  return Datum_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const Datum::ParseTableT_
    Datum::_table_ =
        Datum::InternalGenerateParseTable_(Datum_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void Datum::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.Datum)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.float_data_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.data_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000007cU)) {
    ::memset(&this_._impl_.channels_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.encoded_) -
                 reinterpret_cast<char*>(&this_._impl_.channels_)) +
                 sizeof(_impl_.encoded_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL Datum::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const Datum& this_ = static_cast<const Datum&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL Datum::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const Datum& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.Datum)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 channels = 1;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_channels(), target);
  }

  // optional int32 height = 2;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_height(), target);
  }

  // optional int32 width = 3;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_width(), target);
  }

  // optional bytes data = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_data();
    target = stream->WriteBytesMaybeAliased(4, _s, target);
  }

  // optional int32 label = 5;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<5>(
            stream, this_._internal_label(), target);
  }

  // repeated float float_data = 6;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_float_data_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          6, this_._internal_float_data().Get(i), target);
    }
  }

  // optional bool encoded = 7 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        7, this_._internal_encoded(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.Datum)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t Datum::ByteSizeLong(const MessageLite& base) {
  const Datum& this_ = static_cast<const Datum&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t Datum::ByteSizeLong() const {
  const Datum& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.Datum)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000040U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // repeated float float_data = 6;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_float_data_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_float_data_size());
      total_size += tag_size + data_size;
    }
    // optional bytes data = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                      this_._internal_data());
    }
    // optional int32 channels = 1;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_channels());
    }
    // optional int32 height = 2;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_height());
    }
    // optional int32 width = 3;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_width());
    }
    // optional int32 label = 5;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_label());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void Datum::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<Datum*>(&to_msg);
  auto& from = static_cast<const Datum&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.Datum)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_float_data()->MergeFrom(from._internal_float_data());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_data(from._internal_data());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.channels_ = from._impl_.channels_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.height_ = from._impl_.height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.width_ = from._impl_.width_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.label_ = from._impl_.label_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.encoded_ = from._impl_.encoded_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void Datum::InternalSwap(Datum* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.float_data_.InternalSwap(&other->_impl_.float_data_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.data_, &other->_impl_.data_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Datum, _impl_.encoded_)
      + sizeof(Datum::_impl_.encoded_)
      - PROTOBUF_FIELD_OFFSET(Datum, _impl_.channels_)>(
          reinterpret_cast<char*>(&_impl_.channels_),
          reinterpret_cast<char*>(&other->_impl_.channels_));
}

::google::protobuf::Metadata Datum::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

/*static*/ const ::_pbi::LazyString FillerParameter::Impl_::_i_give_permission_to_break_this_code_default_type_{
    {{"constant", 8}},
    {nullptr},
};
FillerParameter::FillerParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, FillerParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.FillerParameter)
}
PROTOBUF_NDEBUG_INLINE FillerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::FillerParameter& from_msg)
      : _has_bits_{from._has_bits_},
        type_(arena, from.type_, _i_give_permission_to_break_this_code_default_type_) {}

FillerParameter::FillerParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const FillerParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, FillerParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  FillerParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, value_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, value_),
           offsetof(Impl_, sparse_) -
               offsetof(Impl_, value_) +
               sizeof(Impl_::sparse_));

  // @@protoc_insertion_point(copy_constructor:caffe.FillerParameter)
}
PROTOBUF_NDEBUG_INLINE FillerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : type_(arena, Impl_::_i_give_permission_to_break_this_code_default_type_),
        max_{1},
        std_{1},
        sparse_{-1} {}

inline void FillerParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, value_),
           0,
           offsetof(Impl_, variance_norm_) -
               offsetof(Impl_, value_) +
               sizeof(Impl_::variance_norm_));
}
FillerParameter::~FillerParameter() {
  // @@protoc_insertion_point(destructor:caffe.FillerParameter)
  SharedDtor(*this);
}
inline void FillerParameter::SharedDtor(MessageLite& self) {
  FillerParameter& this_ = static_cast<FillerParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.type_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull FillerParameter_class_data_ =
        FillerParameter::InternalGenerateClassData_(FillerParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
FillerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&FillerParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(FillerParameter_class_data_.tc_table);
  return FillerParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
FillerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&FillerParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FillerParameter_globals_));
  return FillerParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const FillerParameter::ParseTableT_
    FillerParameter::_table_ =
        FillerParameter::InternalGenerateParseTable_(FillerParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void FillerParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.FillerParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.type_.ClearToDefault(::caffe::FillerParameter::Impl_::_i_give_permission_to_break_this_code_default_type_, this_.GetArena());
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000feU)) {
    ::memset(&this_._impl_.value_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.variance_norm_) -
                 reinterpret_cast<char*>(&this_._impl_.value_)) +
                 sizeof(_impl_.variance_norm_));
    this_._impl_.max_ = 1;
    this_._impl_.std_ = 1;
    this_._impl_.sparse_ = -1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL FillerParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const FillerParameter& this_ = static_cast<const FillerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL FillerParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const FillerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.FillerParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string type = 1 [default = "constant"];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_type();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional float value = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_value(), target);
  }

  // optional float min = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_min(), target);
  }

  // optional float max = 4 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        4, this_._internal_max(), target);
  }

  // optional float mean = 5 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        5, this_._internal_mean(), target);
  }

  // optional float std = 6 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        6, this_._internal_std(), target);
  }

  // optional int32 sparse = 7 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<7>(
            stream, this_._internal_sparse(), target);
  }

  // optional .caffe.FillerParameter.VarianceNorm variance_norm = 8 [default = FAN_IN];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        8, this_._internal_variance_norm(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.FillerParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t FillerParameter::ByteSizeLong(const MessageLite& base) {
  const FillerParameter& this_ = static_cast<const FillerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t FillerParameter::ByteSizeLong() const {
  const FillerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.FillerParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x0000006eU & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000091U)) {
    // optional string type = 1 [default = "constant"];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_type());
    }
    // optional .caffe.FillerParameter.VarianceNorm variance_norm = 8 [default = FAN_IN];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_variance_norm());
    }
    // optional int32 sparse = 7 [default = -1];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_sparse());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void FillerParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<FillerParameter*>(&to_msg);
  auto& from = static_cast<const FillerParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.FillerParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_type(from._internal_type());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.value_ = from._impl_.value_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.min_ = from._impl_.min_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.mean_ = from._impl_.mean_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.variance_norm_ = from._impl_.variance_norm_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.max_ = from._impl_.max_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.std_ = from._impl_.std_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.sparse_ = from._impl_.sparse_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void FillerParameter::InternalSwap(FillerParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.sparse_)
      + sizeof(FillerParameter::_impl_.sparse_)
      - PROTOBUF_FIELD_OFFSET(FillerParameter, _impl_.value_)>(
          reinterpret_cast<char*>(&_impl_.value_),
          reinterpret_cast<char*>(&other->_impl_.value_));
}

::google::protobuf::Metadata FillerParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

NetParameter::NetParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.NetParameter)
}
PROTOBUF_NDEBUG_INLINE NetParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::NetParameter& from_msg)
      : _has_bits_{from._has_bits_},
        layers_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layers_)>()
          , arena, from.layers_
        }
        ,
        input_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_)>()
          , arena, from.input_
        }
        ,
        input_dim_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_dim_)>()
          , arena, from.input_dim_
        }
        ,
        input_shape_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_shape_)>()
          , arena, from.input_shape_
        }
        ,
        name_(arena, from.name_),
        layer_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layer_)>()
          , arena, from.layer_
        }
     {}

NetParameter::NetParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const NetParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  NetParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.state_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.state_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, force_backward_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, force_backward_),
           offsetof(Impl_, debug_info_) -
               offsetof(Impl_, force_backward_) +
               sizeof(Impl_::debug_info_));

  // @@protoc_insertion_point(copy_constructor:caffe.NetParameter)
}
PROTOBUF_NDEBUG_INLINE NetParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : layers_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layers_)>()
         }
        ,
        input_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_)>()
         }
        ,
        input_dim_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_dim_)>()
         }
        ,
        input_shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.input_shape_)>()
         }
        ,
        name_(arena),
        layer_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::NetParameter, _impl_.layer_)>()
         }
     {}

inline void NetParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, state_),
           0,
           offsetof(Impl_, debug_info_) -
               offsetof(Impl_, state_) +
               sizeof(Impl_::debug_info_));
}
NetParameter::~NetParameter() {
  // @@protoc_insertion_point(destructor:caffe.NetParameter)
  SharedDtor(*this);
}
inline void NetParameter::SharedDtor(MessageLite& self) {
  NetParameter& this_ = static_cast<NetParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.name_.Destroy();
  delete this_._impl_.state_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull NetParameter_class_data_ =
        NetParameter::InternalGenerateClassData_(NetParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(NetParameter_class_data_.tc_table);
  return NetParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&NetParameter_globals_));
  return NetParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const NetParameter::ParseTableT_
    NetParameter::_table_ =
        NetParameter::InternalGenerateParseTable_(NetParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void NetParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.NetParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.layers_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.input_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.input_dim_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.input_shape_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      this_._impl_.name_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.state_ != nullptr);
      this_._impl_.state_->Clear();
    }
  }
  ::memset(&this_._impl_.force_backward_, 0,
           static_cast<::size_t>(
               reinterpret_cast<char*>(&this_._impl_.debug_info_) -
               reinterpret_cast<char*>(&this_._impl_.force_backward_)) +
               sizeof(_impl_.debug_info_));
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    _impl_.layer_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL NetParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const NetParameter& this_ = static_cast<const NetParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL NetParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const NetParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.NetParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string name = 1;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    const ::std::string& _s = this_._internal_name();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // repeated .caffe.V1LayerParameter layers = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_layers_size());
         i < n; i++) {
      const auto& repfield = this_._internal_layers().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          2, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated string input = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_input_size(); i < n; ++i) {
      const auto& s = this_._internal_input().Get(i);
      target = stream->WriteString(3, s, target);
    }
  }

  // repeated int32 input_dim = 4;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_input_dim_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteInt32ToArray(
          4, this_._internal_input_dim().Get(i), target);
    }
  }

  // optional bool force_backward = 5 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        5, this_._internal_force_backward(), target);
  }

  // optional .caffe.NetState state = 6;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *this_._impl_.state_, this_._impl_.state_->GetCachedSize(), target,
        stream);
  }

  // optional bool debug_info = 7 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        7, this_._internal_debug_info(), target);
  }

  // repeated .caffe.BlobShape input_shape = 8;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_input_shape_size());
         i < n; i++) {
      const auto& repfield = this_._internal_input_shape().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          8, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated .caffe.LayerParameter layer = 100;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_layer_size());
         i < n; i++) {
      const auto& repfield = this_._internal_layer().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          100, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.NetParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t NetParameter::ByteSizeLong(const MessageLite& base) {
  const NetParameter& this_ = static_cast<const NetParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t NetParameter::ByteSizeLong() const {
  const NetParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.NetParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x000000c0U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // repeated .caffe.V1LayerParameter layers = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_layers_size();
      for (const auto& msg : this_._internal_layers()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated string input = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_input().size());
      for (int i = 0, n = this_._internal_input().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_input().Get(i));
      }
    }
    // repeated int32 input_dim = 4;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
          this_._internal_input_dim());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_input_dim_size());
      total_size += tag_size + data_size;
    }
    // repeated .caffe.BlobShape input_shape = 8;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1UL * this_._internal_input_shape_size();
      for (const auto& msg : this_._internal_input_shape()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional string name = 1;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name());
    }
    // optional .caffe.NetState state = 6;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.state_);
    }
  }
   {
    // repeated .caffe.LayerParameter layer = 100;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 2UL * this_._internal_layer_size();
      for (const auto& msg : this_._internal_layer()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void NetParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<NetParameter*>(&to_msg);
  auto& from = static_cast<const NetParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.NetParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_layers()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_layers());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_input()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_input());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_input_dim()->MergeFrom(from._internal_input_dim());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_input_shape()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_input_shape());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_set_name(from._internal_name());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.state_ != nullptr);
      if (_this->_impl_.state_ == nullptr) {
        _this->_impl_.state_ = Super_::CopyConstruct(arena, *from._impl_.state_);
      } else {
        _this->_impl_.state_->MergeFrom(*from._impl_.state_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.force_backward_ = from._impl_.force_backward_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.debug_info_ = from._impl_.debug_info_;
    }
  }
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    _this->_internal_mutable_layer()->InternalMergeFromWithArena(
        ::google::protobuf::MessageLite::internal_visibility(), arena,
        from._internal_layer());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool NetParameter::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const NetParameter&>(msg);
  if (!::google::protobuf::internal::AllAreInitialized(this_._internal_layer()))
    return false;
  return true;
}

void NetParameter::InternalSwap(NetParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.layers_.InternalSwap(&other->_impl_.layers_);
  _impl_.input_.InternalSwap(&other->_impl_.input_);
  _impl_.input_dim_.InternalSwap(&other->_impl_.input_dim_);
  _impl_.input_shape_.InternalSwap(&other->_impl_.input_shape_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.debug_info_)
      + sizeof(NetParameter::_impl_.debug_info_)
      - PROTOBUF_FIELD_OFFSET(NetParameter, _impl_.state_)>(
          reinterpret_cast<char*>(&_impl_.state_),
          reinterpret_cast<char*>(&other->_impl_.state_));
  _impl_.layer_.InternalSwap(&other->_impl_.layer_);
}

::google::protobuf::Metadata NetParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

/*static*/ const ::_pbi::LazyString SolverParameter::Impl_::_i_give_permission_to_break_this_code_default_regularization_type_{
    {{"L2", 2}},
    {nullptr},
};
/*static*/ const ::_pbi::LazyString SolverParameter::Impl_::_i_give_permission_to_break_this_code_default_type_{
    {{"SGD", 3}},
    {nullptr},
};
SolverParameter::SolverParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SolverParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SolverParameter)
}
PROTOBUF_NDEBUG_INLINE SolverParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::SolverParameter& from_msg)
      : _has_bits_{from._has_bits_},
        test_net_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_)>()
          , arena, from.test_net_
        }
        ,
        test_iter_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_iter_)>()
          , arena, from.test_iter_
        }
        ,
        test_net_param_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_param_)>()
          , arena, from.test_net_param_
        }
        ,
        test_state_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_state_)>()
          , arena, from.test_state_
        }
        ,
        train_net_(arena, from.train_net_),
        lr_policy_(arena, from.lr_policy_),
        snapshot_prefix_(arena, from.snapshot_prefix_),
        net_(arena, from.net_),
        regularization_type_(arena, from.regularization_type_, _i_give_permission_to_break_this_code_default_regularization_type_),
        stepvalue_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.stepvalue_)>()
          , arena, from.stepvalue_
        }
        ,
        type_(arena, from.type_, _i_give_permission_to_break_this_code_default_type_) {}

SolverParameter::SolverParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const SolverParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SolverParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SolverParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.train_net_param_ = (CheckHasBit(cached_has_bits, 0x00000200U))
                 ? Super_::CopyConstruct(arena, *from._impl_.train_net_param_)
                 : nullptr;
  _impl_.net_param_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.net_param_)
                 : nullptr;
  _impl_.train_state_ = (CheckHasBit(cached_has_bits, 0x00000800U))
                 ? Super_::CopyConstruct(arena, *from._impl_.train_state_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, test_interval_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, test_interval_),
           offsetof(Impl_, snapshot_after_train_) -
               offsetof(Impl_, test_interval_) +
               sizeof(Impl_::snapshot_after_train_));
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, rms_decay_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, rms_decay_),
           offsetof(Impl_, momentum2_) -
               offsetof(Impl_, rms_decay_) +
               sizeof(Impl_::momentum2_));

  // @@protoc_insertion_point(copy_constructor:caffe.SolverParameter)
}
PROTOBUF_NDEBUG_INLINE SolverParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : test_net_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_)>()
         }
        ,
        test_iter_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_iter_)>()
         }
        ,
        test_net_param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_net_param_)>()
         }
        ,
        test_state_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.test_state_)>()
         }
        ,
        train_net_(arena),
        lr_policy_(arena),
        snapshot_prefix_(arena),
        net_(arena),
        regularization_type_(arena, Impl_::_i_give_permission_to_break_this_code_default_regularization_type_),
        delta_{1e-08f},
        random_seed_{::int64_t{-1}},
        solver_mode_{static_cast< ::caffe::SolverParameter_SolverMode >(1)},
        snapshot_after_train_{true},
        stepvalue_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverParameter, _impl_.stepvalue_)>()
         }
        ,
        type_(arena, Impl_::_i_give_permission_to_break_this_code_default_type_),
        test_initialization_{true},
        average_loss_{1},
        clip_gradients_{-1},
        iter_size_{1},
        snapshot_format_{static_cast< ::caffe::SolverParameter_SnapshotFormat >(1)},
        momentum2_{0.999f} {}

inline void SolverParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, train_net_param_),
           0,
           offsetof(Impl_, solver_type_) -
               offsetof(Impl_, train_net_param_) +
               sizeof(Impl_::solver_type_));
  _impl_.rms_decay_ = {};
}
SolverParameter::~SolverParameter() {
  // @@protoc_insertion_point(destructor:caffe.SolverParameter)
  SharedDtor(*this);
}
inline void SolverParameter::SharedDtor(MessageLite& self) {
  SolverParameter& this_ = static_cast<SolverParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.train_net_.Destroy();
  this_._impl_.lr_policy_.Destroy();
  this_._impl_.snapshot_prefix_.Destroy();
  this_._impl_.net_.Destroy();
  this_._impl_.regularization_type_.Destroy();
  delete this_._impl_.train_net_param_;
  delete this_._impl_.net_param_;
  delete this_._impl_.train_state_;
  this_._impl_.type_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SolverParameter_class_data_ =
        SolverParameter::InternalGenerateClassData_(SolverParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SolverParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SolverParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SolverParameter_class_data_.tc_table);
  return SolverParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SolverParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SolverParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SolverParameter_globals_));
  return SolverParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SolverParameter::ParseTableT_
    SolverParameter::_table_ =
        SolverParameter::InternalGenerateParseTable_(SolverParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SolverParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SolverParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.test_net_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.test_iter_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.test_net_param_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.test_state_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      this_._impl_.train_net_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      this_._impl_.lr_policy_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      this_._impl_.snapshot_prefix_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      this_._impl_.net_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      this_._impl_.regularization_type_.ClearToDefault(::caffe::SolverParameter::Impl_::_i_give_permission_to_break_this_code_default_regularization_type_, this_.GetArena());
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(this_._impl_.train_net_param_ != nullptr);
      this_._impl_.train_net_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.net_param_ != nullptr);
      this_._impl_.net_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(this_._impl_.train_state_ != nullptr);
      this_._impl_.train_state_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000f000U)) {
    ::memset(&this_._impl_.test_interval_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.max_iter_) -
                 reinterpret_cast<char*>(&this_._impl_.test_interval_)) +
                 sizeof(_impl_.max_iter_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    ::memset(&this_._impl_.gamma_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.snapshot_diff_) -
                 reinterpret_cast<char*>(&this_._impl_.gamma_)) +
                 sizeof(_impl_.snapshot_diff_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    ::memset(&this_._impl_.test_compute_loss_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.solver_type_) -
                 reinterpret_cast<char*>(&this_._impl_.test_compute_loss_)) +
                 sizeof(_impl_.solver_type_));
    this_._impl_.delta_ = 1e-08f;
    this_._impl_.random_seed_ = ::int64_t{-1};
    this_._impl_.solver_mode_ = 1;
    this_._impl_.snapshot_after_train_ = true;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _impl_.stepvalue_.Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.type_.ClearToDefault(::caffe::SolverParameter::Impl_::_i_give_permission_to_break_this_code_default_type_, this_.GetArena());
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000feU)) {
    this_._impl_.rms_decay_ = 0;
    this_._impl_.test_initialization_ = true;
    this_._impl_.average_loss_ = 1;
    this_._impl_.clip_gradients_ = -1;
    this_._impl_.iter_size_ = 1;
    this_._impl_.snapshot_format_ = 1;
    this_._impl_.momentum2_ = 0.999f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SolverParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SolverParameter& this_ = static_cast<const SolverParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SolverParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SolverParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SolverParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string train_net = 1;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    const ::std::string& _s = this_._internal_train_net();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // repeated string test_net = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_test_net_size(); i < n; ++i) {
      const auto& s = this_._internal_test_net().Get(i);
      target = stream->WriteString(2, s, target);
    }
  }

  // repeated int32 test_iter = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_test_iter_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteInt32ToArray(
          3, this_._internal_test_iter().Get(i), target);
    }
  }

  // optional int32 test_interval = 4 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<4>(
            stream, this_._internal_test_interval(), target);
  }

  // optional float base_lr = 5;
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        5, this_._internal_base_lr(), target);
  }

  // optional int32 display = 6;
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<6>(
            stream, this_._internal_display(), target);
  }

  // optional int32 max_iter = 7;
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<7>(
            stream, this_._internal_max_iter(), target);
  }

  // optional string lr_policy = 8;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    const ::std::string& _s = this_._internal_lr_policy();
    target = stream->WriteStringMaybeAliased(8, _s, target);
  }

  // optional float gamma = 9;
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        9, this_._internal_gamma(), target);
  }

  // optional float power = 10;
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        10, this_._internal_power(), target);
  }

  // optional float momentum = 11;
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        11, this_._internal_momentum(), target);
  }

  // optional float weight_decay = 12;
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        12, this_._internal_weight_decay(), target);
  }

  // optional int32 stepsize = 13;
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<13>(
            stream, this_._internal_stepsize(), target);
  }

  // optional int32 snapshot = 14 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<14>(
            stream, this_._internal_snapshot(), target);
  }

  // optional string snapshot_prefix = 15;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    const ::std::string& _s = this_._internal_snapshot_prefix();
    target = stream->WriteStringMaybeAliased(15, _s, target);
  }

  // optional bool snapshot_diff = 16 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        16, this_._internal_snapshot_diff(), target);
  }

  // optional .caffe.SolverParameter.SolverMode solver_mode = 17 [default = GPU];
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        17, this_._internal_solver_mode(), target);
  }

  // optional int32 device_id = 18 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        18, this_._internal_device_id(), target);
  }

  // optional bool test_compute_loss = 19 [default = false];
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        19, this_._internal_test_compute_loss(), target);
  }

  // optional int64 random_seed = 20 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(
        20, this_._internal_random_seed(), target);
  }

  // optional .caffe.NetParameter train_net_param = 21;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        21, *this_._impl_.train_net_param_, this_._impl_.train_net_param_->GetCachedSize(), target,
        stream);
  }

  // repeated .caffe.NetParameter test_net_param = 22;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_test_net_param_size());
         i < n; i++) {
      const auto& repfield = this_._internal_test_net_param().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          22, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // optional bool debug_info = 23 [default = false];
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        23, this_._internal_debug_info(), target);
  }

  // optional string net = 24;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    const ::std::string& _s = this_._internal_net();
    target = stream->WriteStringMaybeAliased(24, _s, target);
  }

  // optional .caffe.NetParameter net_param = 25;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        25, *this_._impl_.net_param_, this_._impl_.net_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.NetState train_state = 26;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        26, *this_._impl_.train_state_, this_._impl_.train_state_->GetCachedSize(), target,
        stream);
  }

  // repeated .caffe.NetState test_state = 27;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_test_state_size());
         i < n; i++) {
      const auto& repfield = this_._internal_test_state().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          27, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // optional bool snapshot_after_train = 28 [default = true];
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        28, this_._internal_snapshot_after_train(), target);
  }

  // optional string regularization_type = 29 [default = "L2"];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    const ::std::string& _s = this_._internal_regularization_type();
    target = stream->WriteStringMaybeAliased(29, _s, target);
  }

  // optional .caffe.SolverParameter.SolverType solver_type = 30 [default = SGD];
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        30, this_._internal_solver_type(), target);
  }

  // optional float delta = 31 [default = 1e-08];
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        31, this_._internal_delta(), target);
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional bool test_initialization = 32 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        32, this_._internal_test_initialization(), target);
  }

  // optional int32 average_loss = 33 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        33, this_._internal_average_loss(), target);
  }

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated int32 stepvalue = 34;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    for (int i = 0, n = this_._internal_stepvalue_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteInt32ToArray(
          34, this_._internal_stepvalue().Get(i), target);
    }
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional float clip_gradients = 35 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        35, this_._internal_clip_gradients(), target);
  }

  // optional int32 iter_size = 36 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        36, this_._internal_iter_size(), target);
  }

  // optional .caffe.SolverParameter.SnapshotFormat snapshot_format = 37 [default = BINARYPROTO];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        37, this_._internal_snapshot_format(), target);
  }

  // optional float rms_decay = 38;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        38, this_._internal_rms_decay(), target);
  }

  // optional float momentum2 = 39 [default = 0.999];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        39, this_._internal_momentum2(), target);
  }

  // optional string type = 40 [default = "SGD"];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_type();
    target = stream->WriteStringMaybeAliased(40, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SolverParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SolverParameter::ByteSizeLong(const MessageLite& base) {
  const SolverParameter& this_ = static_cast<const SolverParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SolverParameter::ByteSizeLong() const {
  const SolverParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SolverParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x08000000U & cached_has_bits) * 6;
  total_size += ::absl::popcount(0x000f2000U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x43800000U & cached_has_bits) * 3;
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated string test_net = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_net().size());
      for (int i = 0, n = this_._internal_test_net().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_test_net().Get(i));
      }
    }
    // repeated int32 test_iter = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
          this_._internal_test_iter());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_test_iter_size());
      total_size += tag_size + data_size;
    }
    // repeated .caffe.NetParameter test_net_param = 22;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2UL * this_._internal_test_net_param_size();
      for (const auto& msg : this_._internal_test_net_param()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .caffe.NetState test_state = 27;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2UL * this_._internal_test_state_size();
      for (const auto& msg : this_._internal_test_state()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional string train_net = 1;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_train_net());
    }
    // optional string lr_policy = 8;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_lr_policy());
    }
    // optional string snapshot_prefix = 15;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_snapshot_prefix());
    }
    // optional string net = 24;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_net());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000df00U)) {
    // optional string regularization_type = 29 [default = "L2"];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_regularization_type());
    }
    // optional .caffe.NetParameter train_net_param = 21;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.train_net_param_);
    }
    // optional .caffe.NetParameter net_param = 25;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.net_param_);
    }
    // optional .caffe.NetState train_state = 26;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.train_state_);
    }
    // optional int32 test_interval = 4 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_test_interval());
    }
    // optional int32 display = 6;
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_display());
    }
    // optional int32 max_iter = 7;
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_max_iter());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00700000U)) {
    // optional int32 stepsize = 13;
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_stepsize());
    }
    // optional int32 snapshot = 14 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_snapshot());
    }
    // optional int32 device_id = 18 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_device_id());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xb4000000U)) {
    // optional .caffe.SolverParameter.SolverType solver_type = 30 [default = SGD];
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      total_size += 2 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_solver_type());
    }
    // optional int64 random_seed = 20 [default = -1];
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int64Size(
                                      this_._internal_random_seed());
    }
    // optional .caffe.SolverParameter.SolverMode solver_mode = 17 [default = GPU];
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      total_size += 2 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_solver_mode());
    }
    // repeated int32 stepvalue = 34;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
          this_._internal_stepvalue());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_stepvalue_size());
      total_size += tag_size + data_size;
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  total_size += ::absl::popcount(0x00000092U & cached_has_bits) * 6;
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 3;
  if (BatchCheckHasBit(cached_has_bits, 0x00000069U)) {
    // optional string type = 40 [default = "SGD"];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_type());
    }
    // optional int32 average_loss = 33 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_average_loss());
    }
    // optional int32 iter_size = 36 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_iter_size());
    }
    // optional .caffe.SolverParameter.SnapshotFormat snapshot_format = 37 [default = BINARYPROTO];
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 2 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_snapshot_format());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SolverParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SolverParameter*>(&to_msg);
  auto& from = static_cast<const SolverParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SolverParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_test_net()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_test_net());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_test_iter()->MergeFrom(from._internal_test_iter());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_test_net_param()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_test_net_param());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_test_state()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_test_state());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_set_train_net(from._internal_train_net());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_internal_set_lr_policy(from._internal_lr_policy());
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_internal_set_snapshot_prefix(from._internal_snapshot_prefix());
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_internal_set_net(from._internal_net());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_internal_set_regularization_type(from._internal_regularization_type());
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(from._impl_.train_net_param_ != nullptr);
      if (_this->_impl_.train_net_param_ == nullptr) {
        _this->_impl_.train_net_param_ = Super_::CopyConstruct(arena, *from._impl_.train_net_param_);
      } else {
        _this->_impl_.train_net_param_->MergeFrom(*from._impl_.train_net_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.net_param_ != nullptr);
      if (_this->_impl_.net_param_ == nullptr) {
        _this->_impl_.net_param_ = Super_::CopyConstruct(arena, *from._impl_.net_param_);
      } else {
        _this->_impl_.net_param_->MergeFrom(*from._impl_.net_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(from._impl_.train_state_ != nullptr);
      if (_this->_impl_.train_state_ == nullptr) {
        _this->_impl_.train_state_ = Super_::CopyConstruct(arena, *from._impl_.train_state_);
      } else {
        _this->_impl_.train_state_->MergeFrom(*from._impl_.train_state_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.test_interval_ = from._impl_.test_interval_;
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      _this->_impl_.base_lr_ = from._impl_.base_lr_;
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      _this->_impl_.display_ = from._impl_.display_;
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      _this->_impl_.max_iter_ = from._impl_.max_iter_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      _this->_impl_.gamma_ = from._impl_.gamma_;
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      _this->_impl_.power_ = from._impl_.power_;
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      _this->_impl_.momentum_ = from._impl_.momentum_;
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      _this->_impl_.weight_decay_ = from._impl_.weight_decay_;
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      _this->_impl_.stepsize_ = from._impl_.stepsize_;
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      _this->_impl_.snapshot_ = from._impl_.snapshot_;
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      _this->_impl_.device_id_ = from._impl_.device_id_;
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      _this->_impl_.snapshot_diff_ = from._impl_.snapshot_diff_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      _this->_impl_.test_compute_loss_ = from._impl_.test_compute_loss_;
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      _this->_impl_.debug_info_ = from._impl_.debug_info_;
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      _this->_impl_.solver_type_ = from._impl_.solver_type_;
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      _this->_impl_.delta_ = from._impl_.delta_;
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      _this->_impl_.random_seed_ = from._impl_.random_seed_;
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      _this->_impl_.solver_mode_ = from._impl_.solver_mode_;
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      _this->_impl_.snapshot_after_train_ = from._impl_.snapshot_after_train_;
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _this->_internal_mutable_stepvalue()->MergeFrom(from._internal_stepvalue());
    }
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_type(from._internal_type());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.rms_decay_ = from._impl_.rms_decay_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.test_initialization_ = from._impl_.test_initialization_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.average_loss_ = from._impl_.average_loss_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.clip_gradients_ = from._impl_.clip_gradients_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.iter_size_ = from._impl_.iter_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.snapshot_format_ = from._impl_.snapshot_format_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.momentum2_ = from._impl_.momentum2_;
    }
  }
  _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool SolverParameter::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const SolverParameter&>(msg);
  if (!::google::protobuf::internal::AllAreInitialized(this_._internal_test_net_param()))
    return false;
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000200U)) {
    if (!this_._impl_.train_net_param_->IsInitialized()) return false;
  }
  if (CheckHasBit(this_._impl_._has_bits_[0], 0x00000400U)) {
    if (!this_._impl_.net_param_->IsInitialized()) return false;
  }
  return true;
}

void SolverParameter::InternalSwap(SolverParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  _impl_.test_net_.InternalSwap(&other->_impl_.test_net_);
  _impl_.test_iter_.InternalSwap(&other->_impl_.test_iter_);
  _impl_.test_net_param_.InternalSwap(&other->_impl_.test_net_param_);
  _impl_.test_state_.InternalSwap(&other->_impl_.test_state_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.train_net_, &other->_impl_.train_net_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.lr_policy_, &other->_impl_.lr_policy_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.snapshot_prefix_, &other->_impl_.snapshot_prefix_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.net_, &other->_impl_.net_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.regularization_type_, &other->_impl_.regularization_type_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.snapshot_after_train_)
      + sizeof(SolverParameter::_impl_.snapshot_after_train_)
      - PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.train_net_param_)>(
          reinterpret_cast<char*>(&_impl_.train_net_param_),
          reinterpret_cast<char*>(&other->_impl_.train_net_param_));
  _impl_.stepvalue_.InternalSwap(&other->_impl_.stepvalue_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.momentum2_)
      + sizeof(SolverParameter::_impl_.momentum2_)
      - PROTOBUF_FIELD_OFFSET(SolverParameter, _impl_.rms_decay_)>(
          reinterpret_cast<char*>(&_impl_.rms_decay_),
          reinterpret_cast<char*>(&other->_impl_.rms_decay_));
}

::google::protobuf::Metadata SolverParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SolverState::SolverState(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SolverState_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SolverState)
}
PROTOBUF_NDEBUG_INLINE SolverState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::SolverState& from_msg)
      : _has_bits_{from._has_bits_},
        history_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SolverState,
              PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.history_)>()
          , arena, from.history_
        }
        ,
        learned_net_(arena, from.learned_net_) {}

SolverState::SolverState(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const SolverState& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SolverState_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SolverState* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, iter_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, iter_),
           offsetof(Impl_, current_step_) -
               offsetof(Impl_, iter_) +
               sizeof(Impl_::current_step_));

  // @@protoc_insertion_point(copy_constructor:caffe.SolverState)
}
PROTOBUF_NDEBUG_INLINE SolverState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : history_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SolverState,
            PROTOBUF_FIELD_OFFSET(::caffe::SolverState, _impl_.history_)>()
         }
        ,
        learned_net_(arena) {}

inline void SolverState::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, iter_),
           0,
           offsetof(Impl_, current_step_) -
               offsetof(Impl_, iter_) +
               sizeof(Impl_::current_step_));
}
SolverState::~SolverState() {
  // @@protoc_insertion_point(destructor:caffe.SolverState)
  SharedDtor(*this);
}
inline void SolverState::SharedDtor(MessageLite& self) {
  SolverState& this_ = static_cast<SolverState&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.learned_net_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SolverState_class_data_ =
        SolverState::InternalGenerateClassData_(SolverState_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SolverState::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SolverState_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SolverState_class_data_.tc_table);
  return SolverState_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SolverState::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SolverState_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SolverState_globals_));
  return SolverState_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SolverState::ParseTableT_
    SolverState::_table_ =
        SolverState::InternalGenerateParseTable_(SolverState_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SolverState::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SolverState)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.history_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.learned_net_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000000cU)) {
    ::memset(&this_._impl_.iter_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.current_step_) -
                 reinterpret_cast<char*>(&this_._impl_.iter_)) +
                 sizeof(_impl_.current_step_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SolverState::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SolverState& this_ = static_cast<const SolverState&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SolverState::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SolverState& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SolverState)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 iter = 1;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_iter(), target);
  }

  // optional string learned_net = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_learned_net();
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  // repeated .caffe.BlobProto history = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_history_size());
         i < n; i++) {
      const auto& repfield = this_._internal_history().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          3, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // optional int32 current_step = 4 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<4>(
            stream, this_._internal_current_step(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SolverState)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SolverState::ByteSizeLong(const MessageLite& base) {
  const SolverState& this_ = static_cast<const SolverState&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SolverState::ByteSizeLong() const {
  const SolverState& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SolverState)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    // repeated .caffe.BlobProto history = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_history_size();
      for (const auto& msg : this_._internal_history()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // optional string learned_net = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_learned_net());
    }
    // optional int32 iter = 1;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_iter());
    }
    // optional int32 current_step = 4 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_current_step());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SolverState::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SolverState*>(&to_msg);
  auto& from = static_cast<const SolverState&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SolverState)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_history()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_history());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_learned_net(from._internal_learned_net());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.iter_ = from._impl_.iter_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.current_step_ = from._impl_.current_step_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SolverState::InternalSwap(SolverState* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.history_.InternalSwap(&other->_impl_.history_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.learned_net_, &other->_impl_.learned_net_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SolverState, _impl_.current_step_)
      + sizeof(SolverState::_impl_.current_step_)
      - PROTOBUF_FIELD_OFFSET(SolverState, _impl_.iter_)>(
          reinterpret_cast<char*>(&_impl_.iter_),
          reinterpret_cast<char*>(&other->_impl_.iter_));
}

::google::protobuf::Metadata SolverState::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

NetState::NetState(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetState_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.NetState)
}
PROTOBUF_NDEBUG_INLINE NetState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::NetState& from_msg)
      : _has_bits_{from._has_bits_},
        stage_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetState,
              PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.stage_)>()
          , arena, from.stage_
        }
     {}

NetState::NetState(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const NetState& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetState_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  NetState* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, level_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, level_),
           offsetof(Impl_, phase_) -
               offsetof(Impl_, level_) +
               sizeof(Impl_::phase_));

  // @@protoc_insertion_point(copy_constructor:caffe.NetState)
}
PROTOBUF_NDEBUG_INLINE NetState::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetState,
            PROTOBUF_FIELD_OFFSET(::caffe::NetState, _impl_.stage_)>()
         }
        ,
        phase_{static_cast< ::caffe::Phase >(1)} {}

inline void NetState::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.level_ = {};
}
NetState::~NetState() {
  // @@protoc_insertion_point(destructor:caffe.NetState)
  SharedDtor(*this);
}
inline void NetState::SharedDtor(MessageLite& self) {
  NetState& this_ = static_cast<NetState&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull NetState_class_data_ =
        NetState::InternalGenerateClassData_(NetState_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetState::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetState_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(NetState_class_data_.tc_table);
  return NetState_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetState::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetState_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&NetState_globals_));
  return NetState_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const NetState::ParseTableT_
    NetState::_table_ =
        NetState::InternalGenerateParseTable_(NetState_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void NetState::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.NetState)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.stage_.Clear();
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
    this_._impl_.level_ = 0;
    this_._impl_.phase_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL NetState::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const NetState& this_ = static_cast<const NetState&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL NetState::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const NetState& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.NetState)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.Phase phase = 1 [default = TEST];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_phase(), target);
  }

  // optional int32 level = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_level(), target);
  }

  // repeated string stage = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_stage_size(); i < n; ++i) {
      const auto& s = this_._internal_stage().Get(i);
      target = stream->WriteString(3, s, target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.NetState)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t NetState::ByteSizeLong(const MessageLite& base) {
  const NetState& this_ = static_cast<const NetState&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t NetState::ByteSizeLong() const {
  const NetState& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.NetState)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // repeated string stage = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_stage().size());
      for (int i = 0, n = this_._internal_stage().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_stage().Get(i));
      }
    }
    // optional int32 level = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_level());
    }
    // optional .caffe.Phase phase = 1 [default = TEST];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_phase());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void NetState::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<NetState*>(&to_msg);
  auto& from = static_cast<const NetState&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.NetState)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_stage()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_stage());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.level_ = from._impl_.level_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.phase_ = from._impl_.phase_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void NetState::InternalSwap(NetState* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.stage_.InternalSwap(&other->_impl_.stage_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NetState, _impl_.phase_)
      + sizeof(NetState::_impl_.phase_)
      - PROTOBUF_FIELD_OFFSET(NetState, _impl_.level_)>(
          reinterpret_cast<char*>(&_impl_.level_),
          reinterpret_cast<char*>(&other->_impl_.level_));
}

::google::protobuf::Metadata NetState::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

NetStateRule::NetStateRule(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetStateRule_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.NetStateRule)
}
PROTOBUF_NDEBUG_INLINE NetStateRule::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::NetStateRule& from_msg)
      : _has_bits_{from._has_bits_},
        stage_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetStateRule,
              PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.stage_)>()
          , arena, from.stage_
        }
        ,
        not_stage_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::NetStateRule,
              PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.not_stage_)>()
          , arena, from.not_stage_
        }
     {}

NetStateRule::NetStateRule(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const NetStateRule& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NetStateRule_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  NetStateRule* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, phase_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, phase_),
           offsetof(Impl_, max_level_) -
               offsetof(Impl_, phase_) +
               sizeof(Impl_::max_level_));

  // @@protoc_insertion_point(copy_constructor:caffe.NetStateRule)
}
PROTOBUF_NDEBUG_INLINE NetStateRule::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetStateRule,
            PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.stage_)>()
         }
        ,
        not_stage_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::NetStateRule,
            PROTOBUF_FIELD_OFFSET(::caffe::NetStateRule, _impl_.not_stage_)>()
         }
     {}

inline void NetStateRule::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, phase_),
           0,
           offsetof(Impl_, max_level_) -
               offsetof(Impl_, phase_) +
               sizeof(Impl_::max_level_));
}
NetStateRule::~NetStateRule() {
  // @@protoc_insertion_point(destructor:caffe.NetStateRule)
  SharedDtor(*this);
}
inline void NetStateRule::SharedDtor(MessageLite& self) {
  NetStateRule& this_ = static_cast<NetStateRule&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull NetStateRule_class_data_ =
        NetStateRule::InternalGenerateClassData_(NetStateRule_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetStateRule::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetStateRule_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(NetStateRule_class_data_.tc_table);
  return NetStateRule_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NetStateRule::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NetStateRule_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&NetStateRule_globals_));
  return NetStateRule_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const NetStateRule::ParseTableT_
    NetStateRule::_table_ =
        NetStateRule::InternalGenerateParseTable_(NetStateRule_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void NetStateRule::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.NetStateRule)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.stage_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.not_stage_.Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000001cU)) {
    ::memset(&this_._impl_.phase_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.max_level_) -
                 reinterpret_cast<char*>(&this_._impl_.phase_)) +
                 sizeof(_impl_.max_level_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL NetStateRule::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const NetStateRule& this_ = static_cast<const NetStateRule&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL NetStateRule::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const NetStateRule& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.NetStateRule)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.Phase phase = 1;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_phase(), target);
  }

  // optional int32 min_level = 2;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_min_level(), target);
  }

  // optional int32 max_level = 3;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_max_level(), target);
  }

  // repeated string stage = 4;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_stage_size(); i < n; ++i) {
      const auto& s = this_._internal_stage().Get(i);
      target = stream->WriteString(4, s, target);
    }
  }

  // repeated string not_stage = 5;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_not_stage_size(); i < n; ++i) {
      const auto& s = this_._internal_not_stage().Get(i);
      target = stream->WriteString(5, s, target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.NetStateRule)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t NetStateRule::ByteSizeLong(const MessageLite& base) {
  const NetStateRule& this_ = static_cast<const NetStateRule&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t NetStateRule::ByteSizeLong() const {
  const NetStateRule& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.NetStateRule)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    // repeated string stage = 4;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_stage().size());
      for (int i = 0, n = this_._internal_stage().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_stage().Get(i));
      }
    }
    // repeated string not_stage = 5;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_not_stage().size());
      for (int i = 0, n = this_._internal_not_stage().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_not_stage().Get(i));
      }
    }
    // optional .caffe.Phase phase = 1;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_phase());
    }
    // optional int32 min_level = 2;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_min_level());
    }
    // optional int32 max_level = 3;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_max_level());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void NetStateRule::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<NetStateRule*>(&to_msg);
  auto& from = static_cast<const NetStateRule&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.NetStateRule)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_stage()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_stage());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_not_stage()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_not_stage());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.phase_ = from._impl_.phase_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.min_level_ = from._impl_.min_level_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.max_level_ = from._impl_.max_level_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void NetStateRule::InternalSwap(NetStateRule* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.stage_.InternalSwap(&other->_impl_.stage_);
  _impl_.not_stage_.InternalSwap(&other->_impl_.not_stage_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.max_level_)
      + sizeof(NetStateRule::_impl_.max_level_)
      - PROTOBUF_FIELD_OFFSET(NetStateRule, _impl_.phase_)>(
          reinterpret_cast<char*>(&_impl_.phase_),
          reinterpret_cast<char*>(&other->_impl_.phase_));
}

::google::protobuf::Metadata NetStateRule::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ParamSpec::ParamSpec(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ParamSpec_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ParamSpec)
}
PROTOBUF_NDEBUG_INLINE ParamSpec::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ParamSpec& from_msg)
      : _has_bits_{from._has_bits_},
        name_(arena, from.name_) {}

ParamSpec::ParamSpec(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ParamSpec& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ParamSpec_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ParamSpec* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, share_mode_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, share_mode_),
           offsetof(Impl_, decay_mult_) -
               offsetof(Impl_, share_mode_) +
               sizeof(Impl_::decay_mult_));

  // @@protoc_insertion_point(copy_constructor:caffe.ParamSpec)
}
PROTOBUF_NDEBUG_INLINE ParamSpec::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : name_(arena),
        lr_mult_{1},
        decay_mult_{1} {}

inline void ParamSpec::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.share_mode_ = {};
}
ParamSpec::~ParamSpec() {
  // @@protoc_insertion_point(destructor:caffe.ParamSpec)
  SharedDtor(*this);
}
inline void ParamSpec::SharedDtor(MessageLite& self) {
  ParamSpec& this_ = static_cast<ParamSpec&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.name_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ParamSpec_class_data_ =
        ParamSpec::InternalGenerateClassData_(ParamSpec_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ParamSpec::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ParamSpec_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ParamSpec_class_data_.tc_table);
  return ParamSpec_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ParamSpec::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ParamSpec_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ParamSpec_globals_));
  return ParamSpec_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ParamSpec::ParseTableT_
    ParamSpec::_table_ =
        ParamSpec::InternalGenerateParseTable_(ParamSpec_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ParamSpec::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ParamSpec)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.name_.ClearNonDefaultToEmpty();
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000000eU)) {
    this_._impl_.share_mode_ = 0;
    this_._impl_.lr_mult_ = 1;
    this_._impl_.decay_mult_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ParamSpec::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ParamSpec& this_ = static_cast<const ParamSpec&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ParamSpec::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ParamSpec& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ParamSpec)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string name = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_name();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional .caffe.ParamSpec.DimCheckMode share_mode = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this_._internal_share_mode(), target);
  }

  // optional float lr_mult = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_lr_mult(), target);
  }

  // optional float decay_mult = 4 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        4, this_._internal_decay_mult(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ParamSpec)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ParamSpec::ByteSizeLong(const MessageLite& base) {
  const ParamSpec& this_ = static_cast<const ParamSpec&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ParamSpec::ByteSizeLong() const {
  const ParamSpec& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ParamSpec)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x0000000cU & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional string name = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name());
    }
    // optional .caffe.ParamSpec.DimCheckMode share_mode = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_share_mode());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ParamSpec::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ParamSpec*>(&to_msg);
  auto& from = static_cast<const ParamSpec&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ParamSpec)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_name(from._internal_name());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.share_mode_ = from._impl_.share_mode_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.lr_mult_ = from._impl_.lr_mult_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.decay_mult_ = from._impl_.decay_mult_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ParamSpec::InternalSwap(ParamSpec* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.decay_mult_)
      + sizeof(ParamSpec::_impl_.decay_mult_)
      - PROTOBUF_FIELD_OFFSET(ParamSpec, _impl_.share_mode_)>(
          reinterpret_cast<char*>(&_impl_.share_mode_),
          reinterpret_cast<char*>(&other->_impl_.share_mode_));
}

::google::protobuf::Metadata ParamSpec::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

LayerParameter::LayerParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LayerParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.LayerParameter)
}
PROTOBUF_NDEBUG_INLINE LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::LayerParameter& from_msg)
      : _has_bits_{from._has_bits_},
        bottom_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bottom_)>()
          , arena, from.bottom_
        }
        ,
        top_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.top_)>()
          , arena, from.top_
        }
        ,
        loss_weight_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.loss_weight_)>()
          , arena, from.loss_weight_
        }
        ,
        param_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.param_)>()
          , arena, from.param_
        }
        ,
        blobs_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.blobs_)>()
          , arena, from.blobs_
        }
        ,
        include_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.include_)>()
          , arena, from.include_
        }
        ,
        exclude_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.exclude_)>()
          , arena, from.exclude_
        }
        ,
        propagate_down_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.propagate_down_)>()
          , arena, from.propagate_down_
        }
        ,
        name_(arena, from.name_),
        type_(arena, from.type_) {}

LayerParameter::LayerParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const LayerParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LayerParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  LayerParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.bn_param_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bn_param_)
                 : nullptr;
  _impl_.transform_param_ = (CheckHasBit(cached_has_bits, 0x00000800U))
                 ? Super_::CopyConstruct(arena, *from._impl_.transform_param_)
                 : nullptr;
  _impl_.loss_param_ = (CheckHasBit(cached_has_bits, 0x00001000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.loss_param_)
                 : nullptr;
  _impl_.accuracy_param_ = (CheckHasBit(cached_has_bits, 0x00002000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.accuracy_param_)
                 : nullptr;
  _impl_.argmax_param_ = (CheckHasBit(cached_has_bits, 0x00004000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.argmax_param_)
                 : nullptr;
  _impl_.concat_param_ = (CheckHasBit(cached_has_bits, 0x00008000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.concat_param_)
                 : nullptr;
  _impl_.contrastive_loss_param_ = (CheckHasBit(cached_has_bits, 0x00010000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.contrastive_loss_param_)
                 : nullptr;
  _impl_.convolution_param_ = (CheckHasBit(cached_has_bits, 0x00020000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.convolution_param_)
                 : nullptr;
  _impl_.data_param_ = (CheckHasBit(cached_has_bits, 0x00040000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.data_param_)
                 : nullptr;
  _impl_.dropout_param_ = (CheckHasBit(cached_has_bits, 0x00080000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.dropout_param_)
                 : nullptr;
  _impl_.eltwise_param_ = (CheckHasBit(cached_has_bits, 0x00100000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.eltwise_param_)
                 : nullptr;
  _impl_.exp_param_ = (CheckHasBit(cached_has_bits, 0x00200000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.exp_param_)
                 : nullptr;
  _impl_.hdf5_data_param_ = (CheckHasBit(cached_has_bits, 0x00400000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hdf5_data_param_)
                 : nullptr;
  _impl_.hdf5_output_param_ = (CheckHasBit(cached_has_bits, 0x00800000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_)
                 : nullptr;
  _impl_.hinge_loss_param_ = (CheckHasBit(cached_has_bits, 0x01000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hinge_loss_param_)
                 : nullptr;
  _impl_.image_data_param_ = (CheckHasBit(cached_has_bits, 0x02000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.image_data_param_)
                 : nullptr;
  _impl_.phase_ = from._impl_.phase_;
  _impl_.dummy_data_param_ = (CheckHasBit(cached_has_bits, 0x08000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.dummy_data_param_)
                 : nullptr;
  _impl_.infogain_loss_param_ = (CheckHasBit(cached_has_bits, 0x10000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.infogain_loss_param_)
                 : nullptr;
  _impl_.inner_product_param_ = (CheckHasBit(cached_has_bits, 0x20000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.inner_product_param_)
                 : nullptr;
  _impl_.lrn_param_ = (CheckHasBit(cached_has_bits, 0x40000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.lrn_param_)
                 : nullptr;
  _impl_.memory_data_param_ = (CheckHasBit(cached_has_bits, 0x80000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.memory_data_param_)
                 : nullptr;
  cached_has_bits = _impl_._has_bits_[1];
  _impl_.mvn_param_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.mvn_param_)
                 : nullptr;
  _impl_.pooling_param_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.pooling_param_)
                 : nullptr;
  _impl_.power_param_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                 ? Super_::CopyConstruct(arena, *from._impl_.power_param_)
                 : nullptr;
  _impl_.relu_param_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                 ? Super_::CopyConstruct(arena, *from._impl_.relu_param_)
                 : nullptr;
  _impl_.sigmoid_param_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.sigmoid_param_)
                 : nullptr;
  _impl_.softmax_param_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.softmax_param_)
                 : nullptr;
  _impl_.slice_param_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.slice_param_)
                 : nullptr;
  _impl_.tanh_param_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.tanh_param_)
                 : nullptr;
  _impl_.threshold_param_ = (CheckHasBit(cached_has_bits, 0x00000100U))
                 ? Super_::CopyConstruct(arena, *from._impl_.threshold_param_)
                 : nullptr;
  _impl_.window_data_param_ = (CheckHasBit(cached_has_bits, 0x00000200U))
                 ? Super_::CopyConstruct(arena, *from._impl_.window_data_param_)
                 : nullptr;
  _impl_.python_param_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.python_param_)
                 : nullptr;
  _impl_.prelu_param_ = (CheckHasBit(cached_has_bits, 0x00000800U))
                 ? Super_::CopyConstruct(arena, *from._impl_.prelu_param_)
                 : nullptr;
  _impl_.spp_param_ = (CheckHasBit(cached_has_bits, 0x00001000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.spp_param_)
                 : nullptr;
  _impl_.reshape_param_ = (CheckHasBit(cached_has_bits, 0x00002000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.reshape_param_)
                 : nullptr;
  _impl_.log_param_ = (CheckHasBit(cached_has_bits, 0x00004000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.log_param_)
                 : nullptr;
  _impl_.flatten_param_ = (CheckHasBit(cached_has_bits, 0x00008000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.flatten_param_)
                 : nullptr;
  _impl_.reduction_param_ = (CheckHasBit(cached_has_bits, 0x00010000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.reduction_param_)
                 : nullptr;
  _impl_.embed_param_ = (CheckHasBit(cached_has_bits, 0x00020000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.embed_param_)
                 : nullptr;
  _impl_.tile_param_ = (CheckHasBit(cached_has_bits, 0x00040000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.tile_param_)
                 : nullptr;
  _impl_.batch_norm_param_ = (CheckHasBit(cached_has_bits, 0x00080000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.batch_norm_param_)
                 : nullptr;
  _impl_.elu_param_ = (CheckHasBit(cached_has_bits, 0x00100000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.elu_param_)
                 : nullptr;
  _impl_.bias_param_ = (CheckHasBit(cached_has_bits, 0x00200000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_param_)
                 : nullptr;
  _impl_.scale_param_ = (CheckHasBit(cached_has_bits, 0x00400000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.scale_param_)
                 : nullptr;
  _impl_.input_param_ = (CheckHasBit(cached_has_bits, 0x00800000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.input_param_)
                 : nullptr;
  _impl_.crop_param_ = (CheckHasBit(cached_has_bits, 0x01000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.crop_param_)
                 : nullptr;
  _impl_.shuffle_channel_param_ = (CheckHasBit(cached_has_bits, 0x02000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.shuffle_channel_param_)
                 : nullptr;
  _impl_.recurrent_param_ = (CheckHasBit(cached_has_bits, 0x04000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.recurrent_param_)
                 : nullptr;
  _impl_.reorg_param_ = (CheckHasBit(cached_has_bits, 0x08000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.reorg_param_)
                 : nullptr;
  _impl_.roi_align_param_ = (CheckHasBit(cached_has_bits, 0x10000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.roi_align_param_)
                 : nullptr;
  _impl_.psroi_pooling_param_ = (CheckHasBit(cached_has_bits, 0x20000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.psroi_pooling_param_)
                 : nullptr;
  _impl_.permute_param_ = (CheckHasBit(cached_has_bits, 0x40000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.permute_param_)
                 : nullptr;
  _impl_.prior_box_param_ = (CheckHasBit(cached_has_bits, 0x80000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.prior_box_param_)
                 : nullptr;
  cached_has_bits = _impl_._has_bits_[2];
  _impl_.detection_output_param_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.detection_output_param_)
                 : nullptr;
  _impl_.interp_param_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.interp_param_)
                 : nullptr;
  _impl_.norm_param_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                 ? Super_::CopyConstruct(arena, *from._impl_.norm_param_)
                 : nullptr;
  _impl_.yolo_detection_output_param_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                 ? Super_::CopyConstruct(arena, *from._impl_.yolo_detection_output_param_)
                 : nullptr;
  _impl_.yolov3_detection_output_param_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.yolov3_detection_output_param_)
                 : nullptr;
  _impl_.roi_pooling_param_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.roi_pooling_param_)
                 : nullptr;
  _impl_.smooth_l1_loss_param_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.smooth_l1_loss_param_)
                 : nullptr;

  // @@protoc_insertion_point(copy_constructor:caffe.LayerParameter)
}
PROTOBUF_NDEBUG_INLINE LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : bottom_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.bottom_)>()
         }
        ,
        top_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.top_)>()
         }
        ,
        loss_weight_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.loss_weight_)>()
         }
        ,
        param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.param_)>()
         }
        ,
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.blobs_)>()
         }
        ,
        include_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.include_)>()
         }
        ,
        exclude_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.exclude_)>()
         }
        ,
        propagate_down_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::LayerParameter, _impl_.propagate_down_)>()
         }
        ,
        name_(arena),
        type_(arena) {}

inline void LayerParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, bn_param_),
           0,
           offsetof(Impl_, smooth_l1_loss_param_) -
               offsetof(Impl_, bn_param_) +
               sizeof(Impl_::smooth_l1_loss_param_));
}
LayerParameter::~LayerParameter() {
  // @@protoc_insertion_point(destructor:caffe.LayerParameter)
  SharedDtor(*this);
}
inline void LayerParameter::SharedDtor(MessageLite& self) {
  LayerParameter& this_ = static_cast<LayerParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.name_.Destroy();
  this_._impl_.type_.Destroy();
  delete this_._impl_.bn_param_;
  delete this_._impl_.transform_param_;
  delete this_._impl_.loss_param_;
  delete this_._impl_.accuracy_param_;
  delete this_._impl_.argmax_param_;
  delete this_._impl_.concat_param_;
  delete this_._impl_.contrastive_loss_param_;
  delete this_._impl_.convolution_param_;
  delete this_._impl_.data_param_;
  delete this_._impl_.dropout_param_;
  delete this_._impl_.eltwise_param_;
  delete this_._impl_.exp_param_;
  delete this_._impl_.hdf5_data_param_;
  delete this_._impl_.hdf5_output_param_;
  delete this_._impl_.hinge_loss_param_;
  delete this_._impl_.image_data_param_;
  delete this_._impl_.dummy_data_param_;
  delete this_._impl_.infogain_loss_param_;
  delete this_._impl_.inner_product_param_;
  delete this_._impl_.lrn_param_;
  delete this_._impl_.memory_data_param_;
  delete this_._impl_.mvn_param_;
  delete this_._impl_.pooling_param_;
  delete this_._impl_.power_param_;
  delete this_._impl_.relu_param_;
  delete this_._impl_.sigmoid_param_;
  delete this_._impl_.softmax_param_;
  delete this_._impl_.slice_param_;
  delete this_._impl_.tanh_param_;
  delete this_._impl_.threshold_param_;
  delete this_._impl_.window_data_param_;
  delete this_._impl_.python_param_;
  delete this_._impl_.prelu_param_;
  delete this_._impl_.spp_param_;
  delete this_._impl_.reshape_param_;
  delete this_._impl_.log_param_;
  delete this_._impl_.flatten_param_;
  delete this_._impl_.reduction_param_;
  delete this_._impl_.embed_param_;
  delete this_._impl_.tile_param_;
  delete this_._impl_.batch_norm_param_;
  delete this_._impl_.elu_param_;
  delete this_._impl_.bias_param_;
  delete this_._impl_.scale_param_;
  delete this_._impl_.input_param_;
  delete this_._impl_.crop_param_;
  delete this_._impl_.shuffle_channel_param_;
  delete this_._impl_.recurrent_param_;
  delete this_._impl_.reorg_param_;
  delete this_._impl_.roi_align_param_;
  delete this_._impl_.psroi_pooling_param_;
  delete this_._impl_.permute_param_;
  delete this_._impl_.prior_box_param_;
  delete this_._impl_.detection_output_param_;
  delete this_._impl_.interp_param_;
  delete this_._impl_.norm_param_;
  delete this_._impl_.yolo_detection_output_param_;
  delete this_._impl_.yolov3_detection_output_param_;
  delete this_._impl_.roi_pooling_param_;
  delete this_._impl_.smooth_l1_loss_param_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull LayerParameter_class_data_ =
        LayerParameter::InternalGenerateClassData_(LayerParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LayerParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(LayerParameter_class_data_.tc_table);
  return LayerParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LayerParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&LayerParameter_globals_));
  return LayerParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const LayerParameter::ParseTableT_
    LayerParameter::_table_ =
        LayerParameter::InternalGenerateParseTable_(LayerParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void LayerParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.LayerParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.bottom_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.top_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.loss_weight_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.param_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _impl_.blobs_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _impl_.include_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _impl_.exclude_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _impl_.propagate_down_.Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      this_._impl_.name_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      this_._impl_.type_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.bn_param_ != nullptr);
      this_._impl_.bn_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(this_._impl_.transform_param_ != nullptr);
      this_._impl_.transform_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(this_._impl_.loss_param_ != nullptr);
      this_._impl_.loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(this_._impl_.accuracy_param_ != nullptr);
      this_._impl_.accuracy_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(this_._impl_.argmax_param_ != nullptr);
      this_._impl_.argmax_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(this_._impl_.concat_param_ != nullptr);
      this_._impl_.concat_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(this_._impl_.contrastive_loss_param_ != nullptr);
      this_._impl_.contrastive_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(this_._impl_.convolution_param_ != nullptr);
      this_._impl_.convolution_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(this_._impl_.data_param_ != nullptr);
      this_._impl_.data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(this_._impl_.dropout_param_ != nullptr);
      this_._impl_.dropout_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(this_._impl_.eltwise_param_ != nullptr);
      this_._impl_.eltwise_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(this_._impl_.exp_param_ != nullptr);
      this_._impl_.exp_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(this_._impl_.hdf5_data_param_ != nullptr);
      this_._impl_.hdf5_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(this_._impl_.hdf5_output_param_ != nullptr);
      this_._impl_.hdf5_output_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x03000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(this_._impl_.hinge_loss_param_ != nullptr);
      this_._impl_.hinge_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(this_._impl_.image_data_param_ != nullptr);
      this_._impl_.image_data_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xfc000000U)) {
    this_._impl_.phase_ = 0;
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(this_._impl_.dummy_data_param_ != nullptr);
      this_._impl_.dummy_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(this_._impl_.infogain_loss_param_ != nullptr);
      this_._impl_.infogain_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      ABSL_DCHECK(this_._impl_.inner_product_param_ != nullptr);
      this_._impl_.inner_product_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(this_._impl_.lrn_param_ != nullptr);
      this_._impl_.lrn_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(this_._impl_.memory_data_param_ != nullptr);
      this_._impl_.memory_data_param_->Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.mvn_param_ != nullptr);
      this_._impl_.mvn_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.pooling_param_ != nullptr);
      this_._impl_.pooling_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(this_._impl_.power_param_ != nullptr);
      this_._impl_.power_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(this_._impl_.relu_param_ != nullptr);
      this_._impl_.relu_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.sigmoid_param_ != nullptr);
      this_._impl_.sigmoid_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.softmax_param_ != nullptr);
      this_._impl_.softmax_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.slice_param_ != nullptr);
      this_._impl_.slice_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.tanh_param_ != nullptr);
      this_._impl_.tanh_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(this_._impl_.threshold_param_ != nullptr);
      this_._impl_.threshold_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(this_._impl_.window_data_param_ != nullptr);
      this_._impl_.window_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.python_param_ != nullptr);
      this_._impl_.python_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(this_._impl_.prelu_param_ != nullptr);
      this_._impl_.prelu_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(this_._impl_.spp_param_ != nullptr);
      this_._impl_.spp_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(this_._impl_.reshape_param_ != nullptr);
      this_._impl_.reshape_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(this_._impl_.log_param_ != nullptr);
      this_._impl_.log_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(this_._impl_.flatten_param_ != nullptr);
      this_._impl_.flatten_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(this_._impl_.reduction_param_ != nullptr);
      this_._impl_.reduction_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(this_._impl_.embed_param_ != nullptr);
      this_._impl_.embed_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(this_._impl_.tile_param_ != nullptr);
      this_._impl_.tile_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(this_._impl_.batch_norm_param_ != nullptr);
      this_._impl_.batch_norm_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(this_._impl_.elu_param_ != nullptr);
      this_._impl_.elu_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(this_._impl_.bias_param_ != nullptr);
      this_._impl_.bias_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(this_._impl_.scale_param_ != nullptr);
      this_._impl_.scale_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(this_._impl_.input_param_ != nullptr);
      this_._impl_.input_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(this_._impl_.crop_param_ != nullptr);
      this_._impl_.crop_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(this_._impl_.shuffle_channel_param_ != nullptr);
      this_._impl_.shuffle_channel_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      ABSL_DCHECK(this_._impl_.recurrent_param_ != nullptr);
      this_._impl_.recurrent_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(this_._impl_.reorg_param_ != nullptr);
      this_._impl_.reorg_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(this_._impl_.roi_align_param_ != nullptr);
      this_._impl_.roi_align_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      ABSL_DCHECK(this_._impl_.psroi_pooling_param_ != nullptr);
      this_._impl_.psroi_pooling_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(this_._impl_.permute_param_ != nullptr);
      this_._impl_.permute_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(this_._impl_.prior_box_param_ != nullptr);
      this_._impl_.prior_box_param_->Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[2];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.detection_output_param_ != nullptr);
      this_._impl_.detection_output_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.interp_param_ != nullptr);
      this_._impl_.interp_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(this_._impl_.norm_param_ != nullptr);
      this_._impl_.norm_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(this_._impl_.yolo_detection_output_param_ != nullptr);
      this_._impl_.yolo_detection_output_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.yolov3_detection_output_param_ != nullptr);
      this_._impl_.yolov3_detection_output_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.roi_pooling_param_ != nullptr);
      this_._impl_.roi_pooling_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.smooth_l1_loss_param_ != nullptr);
      this_._impl_.smooth_l1_loss_param_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL LayerParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const LayerParameter& this_ = static_cast<const LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL LayerParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.LayerParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string name = 1;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    const ::std::string& _s = this_._internal_name();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional string type = 2;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    const ::std::string& _s = this_._internal_type();
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  // repeated string bottom = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_bottom_size(); i < n; ++i) {
      const auto& s = this_._internal_bottom().Get(i);
      target = stream->WriteString(3, s, target);
    }
  }

  // repeated string top = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_top_size(); i < n; ++i) {
      const auto& s = this_._internal_top().Get(i);
      target = stream->WriteString(4, s, target);
    }
  }

  // repeated float loss_weight = 5;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_loss_weight_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          5, this_._internal_loss_weight().Get(i), target);
    }
  }

  // repeated .caffe.ParamSpec param = 6;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_param_size());
         i < n; i++) {
      const auto& repfield = this_._internal_param().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          6, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated .caffe.BlobProto blobs = 7;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_blobs_size());
         i < n; i++) {
      const auto& repfield = this_._internal_blobs().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          7, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated .caffe.NetStateRule include = 8;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_include_size());
         i < n; i++) {
      const auto& repfield = this_._internal_include().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          8, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated .caffe.NetStateRule exclude = 9;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_exclude_size());
         i < n; i++) {
      const auto& repfield = this_._internal_exclude().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          9, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // optional .caffe.Phase phase = 10;
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        10, this_._internal_phase(), target);
  }

  // repeated bool propagate_down = 11;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    for (int i = 0, n = this_._internal_propagate_down_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteBoolToArray(
          11, this_._internal_propagate_down().Get(i), target);
    }
  }

  // optional .caffe.BNParameter bn_param = 45;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        45, *this_._impl_.bn_param_, this_._impl_.bn_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.TransformationParameter transform_param = 100;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        100, *this_._impl_.transform_param_, this_._impl_.transform_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.LossParameter loss_param = 101;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        101, *this_._impl_.loss_param_, this_._impl_.loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.AccuracyParameter accuracy_param = 102;
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        102, *this_._impl_.accuracy_param_, this_._impl_.accuracy_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ArgMaxParameter argmax_param = 103;
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        103, *this_._impl_.argmax_param_, this_._impl_.argmax_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ConcatParameter concat_param = 104;
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        104, *this_._impl_.concat_param_, this_._impl_.concat_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 105;
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        105, *this_._impl_.contrastive_loss_param_, this_._impl_.contrastive_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ConvolutionParameter convolution_param = 106;
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        106, *this_._impl_.convolution_param_, this_._impl_.convolution_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DataParameter data_param = 107;
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        107, *this_._impl_.data_param_, this_._impl_.data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DropoutParameter dropout_param = 108;
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        108, *this_._impl_.dropout_param_, this_._impl_.dropout_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DummyDataParameter dummy_data_param = 109;
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        109, *this_._impl_.dummy_data_param_, this_._impl_.dummy_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.EltwiseParameter eltwise_param = 110;
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        110, *this_._impl_.eltwise_param_, this_._impl_.eltwise_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ExpParameter exp_param = 111;
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        111, *this_._impl_.exp_param_, this_._impl_.exp_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HDF5DataParameter hdf5_data_param = 112;
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        112, *this_._impl_.hdf5_data_param_, this_._impl_.hdf5_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HDF5OutputParameter hdf5_output_param = 113;
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        113, *this_._impl_.hdf5_output_param_, this_._impl_.hdf5_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HingeLossParameter hinge_loss_param = 114;
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        114, *this_._impl_.hinge_loss_param_, this_._impl_.hinge_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ImageDataParameter image_data_param = 115;
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        115, *this_._impl_.image_data_param_, this_._impl_.image_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InfogainLossParameter infogain_loss_param = 116;
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        116, *this_._impl_.infogain_loss_param_, this_._impl_.infogain_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InnerProductParameter inner_product_param = 117;
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        117, *this_._impl_.inner_product_param_, this_._impl_.inner_product_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.LRNParameter lrn_param = 118;
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        118, *this_._impl_.lrn_param_, this_._impl_.lrn_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.MemoryDataParameter memory_data_param = 119;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        119, *this_._impl_.memory_data_param_, this_._impl_.memory_data_param_->GetCachedSize(), target,
        stream);
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional .caffe.MVNParameter mvn_param = 120;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        120, *this_._impl_.mvn_param_, this_._impl_.mvn_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PoolingParameter pooling_param = 121;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        121, *this_._impl_.pooling_param_, this_._impl_.pooling_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PowerParameter power_param = 122;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        122, *this_._impl_.power_param_, this_._impl_.power_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ReLUParameter relu_param = 123;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        123, *this_._impl_.relu_param_, this_._impl_.relu_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SigmoidParameter sigmoid_param = 124;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        124, *this_._impl_.sigmoid_param_, this_._impl_.sigmoid_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SoftmaxParameter softmax_param = 125;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        125, *this_._impl_.softmax_param_, this_._impl_.softmax_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SliceParameter slice_param = 126;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        126, *this_._impl_.slice_param_, this_._impl_.slice_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.TanHParameter tanh_param = 127;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        127, *this_._impl_.tanh_param_, this_._impl_.tanh_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ThresholdParameter threshold_param = 128;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        128, *this_._impl_.threshold_param_, this_._impl_.threshold_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.WindowDataParameter window_data_param = 129;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        129, *this_._impl_.window_data_param_, this_._impl_.window_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PythonParameter python_param = 130;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        130, *this_._impl_.python_param_, this_._impl_.python_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PReLUParameter prelu_param = 131;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        131, *this_._impl_.prelu_param_, this_._impl_.prelu_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SPPParameter spp_param = 132;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        132, *this_._impl_.spp_param_, this_._impl_.spp_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ReshapeParameter reshape_param = 133;
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        133, *this_._impl_.reshape_param_, this_._impl_.reshape_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.LogParameter log_param = 134;
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        134, *this_._impl_.log_param_, this_._impl_.log_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FlattenParameter flatten_param = 135;
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        135, *this_._impl_.flatten_param_, this_._impl_.flatten_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ReductionParameter reduction_param = 136;
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        136, *this_._impl_.reduction_param_, this_._impl_.reduction_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.EmbedParameter embed_param = 137;
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        137, *this_._impl_.embed_param_, this_._impl_.embed_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.TileParameter tile_param = 138;
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        138, *this_._impl_.tile_param_, this_._impl_.tile_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.BatchNormParameter batch_norm_param = 139;
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        139, *this_._impl_.batch_norm_param_, this_._impl_.batch_norm_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ELUParameter elu_param = 140;
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        140, *this_._impl_.elu_param_, this_._impl_.elu_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.BiasParameter bias_param = 141;
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        141, *this_._impl_.bias_param_, this_._impl_.bias_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ScaleParameter scale_param = 142;
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        142, *this_._impl_.scale_param_, this_._impl_.scale_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InputParameter input_param = 143;
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        143, *this_._impl_.input_param_, this_._impl_.input_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.CropParameter crop_param = 144;
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        144, *this_._impl_.crop_param_, this_._impl_.crop_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ShuffleChannelParameter shuffle_channel_param = 145;
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        145, *this_._impl_.shuffle_channel_param_, this_._impl_.shuffle_channel_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.RecurrentParameter recurrent_param = 146;
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        146, *this_._impl_.recurrent_param_, this_._impl_.recurrent_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ReorgParameter reorg_param = 147;
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        147, *this_._impl_.reorg_param_, this_._impl_.reorg_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ROIAlignParameter roi_align_param = 148;
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        148, *this_._impl_.roi_align_param_, this_._impl_.roi_align_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PSROIPoolingParameter psroi_pooling_param = 149;
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        149, *this_._impl_.psroi_pooling_param_, this_._impl_.psroi_pooling_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PermuteParameter permute_param = 202;
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        202, *this_._impl_.permute_param_, this_._impl_.permute_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PriorBoxParameter prior_box_param = 203;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        203, *this_._impl_.prior_box_param_, this_._impl_.prior_box_param_->GetCachedSize(), target,
        stream);
  }

  cached_has_bits = this_._impl_._has_bits_[2];
  // optional .caffe.DetectionOutputParameter detection_output_param = 204;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        204, *this_._impl_.detection_output_param_, this_._impl_.detection_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InterpParameter interp_param = 205;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        205, *this_._impl_.interp_param_, this_._impl_.interp_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.NormalizeParameter norm_param = 206;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        206, *this_._impl_.norm_param_, this_._impl_.norm_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.YoloDetectionOutputParameter yolo_detection_output_param = 601;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        601, *this_._impl_.yolo_detection_output_param_, this_._impl_.yolo_detection_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.Yolov3DetectionOutputParameter yolov3_detection_output_param = 603;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        603, *this_._impl_.yolov3_detection_output_param_, this_._impl_.yolov3_detection_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ROIPoolingParameter roi_pooling_param = 8266711;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        8266711, *this_._impl_.roi_pooling_param_, this_._impl_.roi_pooling_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SmoothL1LossParameter smooth_l1_loss_param = 8266712;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        8266712, *this_._impl_.smooth_l1_loss_param_, this_._impl_.smooth_l1_loss_param_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.LayerParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t LayerParameter::ByteSizeLong(const MessageLite& base) {
  const LayerParameter& this_ = static_cast<const LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t LayerParameter::ByteSizeLong() const {
  const LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.LayerParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated string bottom = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_bottom().size());
      for (int i = 0, n = this_._internal_bottom().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_bottom().Get(i));
      }
    }
    // repeated string top = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_top().size());
      for (int i = 0, n = this_._internal_top().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_top().Get(i));
      }
    }
    // repeated float loss_weight = 5;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_loss_weight_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_loss_weight_size());
      total_size += tag_size + data_size;
    }
    // repeated .caffe.ParamSpec param = 6;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1UL * this_._internal_param_size();
      for (const auto& msg : this_._internal_param()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .caffe.BlobProto blobs = 7;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1UL * this_._internal_blobs_size();
      for (const auto& msg : this_._internal_blobs()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .caffe.NetStateRule include = 8;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1UL * this_._internal_include_size();
      for (const auto& msg : this_._internal_include()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .caffe.NetStateRule exclude = 9;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1UL * this_._internal_exclude_size();
      for (const auto& msg : this_._internal_exclude()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated bool propagate_down = 11;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ::size_t data_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_propagate_down_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_propagate_down_size());
      total_size += tag_size + data_size;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    // optional string name = 1;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name());
    }
    // optional string type = 2;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_type());
    }
    // optional .caffe.BNParameter bn_param = 45;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bn_param_);
    }
    // optional .caffe.TransformationParameter transform_param = 100;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.transform_param_);
    }
    // optional .caffe.LossParameter loss_param = 101;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.loss_param_);
    }
    // optional .caffe.AccuracyParameter accuracy_param = 102;
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.accuracy_param_);
    }
    // optional .caffe.ArgMaxParameter argmax_param = 103;
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.argmax_param_);
    }
    // optional .caffe.ConcatParameter concat_param = 104;
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.concat_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 105;
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.contrastive_loss_param_);
    }
    // optional .caffe.ConvolutionParameter convolution_param = 106;
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convolution_param_);
    }
    // optional .caffe.DataParameter data_param = 107;
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.data_param_);
    }
    // optional .caffe.DropoutParameter dropout_param = 108;
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dropout_param_);
    }
    // optional .caffe.EltwiseParameter eltwise_param = 110;
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.eltwise_param_);
    }
    // optional .caffe.ExpParameter exp_param = 111;
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.exp_param_);
    }
    // optional .caffe.HDF5DataParameter hdf5_data_param = 112;
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hdf5_data_param_);
    }
    // optional .caffe.HDF5OutputParameter hdf5_output_param = 113;
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hdf5_output_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    // optional .caffe.HingeLossParameter hinge_loss_param = 114;
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hinge_loss_param_);
    }
    // optional .caffe.ImageDataParameter image_data_param = 115;
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.image_data_param_);
    }
    // optional .caffe.Phase phase = 10;
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_phase());
    }
    // optional .caffe.DummyDataParameter dummy_data_param = 109;
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dummy_data_param_);
    }
    // optional .caffe.InfogainLossParameter infogain_loss_param = 116;
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.infogain_loss_param_);
    }
    // optional .caffe.InnerProductParameter inner_product_param = 117;
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.inner_product_param_);
    }
    // optional .caffe.LRNParameter lrn_param = 118;
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.lrn_param_);
    }
    // optional .caffe.MemoryDataParameter memory_data_param = 119;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.memory_data_param_);
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // optional .caffe.MVNParameter mvn_param = 120;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.mvn_param_);
    }
    // optional .caffe.PoolingParameter pooling_param = 121;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.pooling_param_);
    }
    // optional .caffe.PowerParameter power_param = 122;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.power_param_);
    }
    // optional .caffe.ReLUParameter relu_param = 123;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.relu_param_);
    }
    // optional .caffe.SigmoidParameter sigmoid_param = 124;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.sigmoid_param_);
    }
    // optional .caffe.SoftmaxParameter softmax_param = 125;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.softmax_param_);
    }
    // optional .caffe.SliceParameter slice_param = 126;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.slice_param_);
    }
    // optional .caffe.TanHParameter tanh_param = 127;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.tanh_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    // optional .caffe.ThresholdParameter threshold_param = 128;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.threshold_param_);
    }
    // optional .caffe.WindowDataParameter window_data_param = 129;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.window_data_param_);
    }
    // optional .caffe.PythonParameter python_param = 130;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.python_param_);
    }
    // optional .caffe.PReLUParameter prelu_param = 131;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.prelu_param_);
    }
    // optional .caffe.SPPParameter spp_param = 132;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.spp_param_);
    }
    // optional .caffe.ReshapeParameter reshape_param = 133;
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.reshape_param_);
    }
    // optional .caffe.LogParameter log_param = 134;
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.log_param_);
    }
    // optional .caffe.FlattenParameter flatten_param = 135;
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.flatten_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    // optional .caffe.ReductionParameter reduction_param = 136;
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.reduction_param_);
    }
    // optional .caffe.EmbedParameter embed_param = 137;
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.embed_param_);
    }
    // optional .caffe.TileParameter tile_param = 138;
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.tile_param_);
    }
    // optional .caffe.BatchNormParameter batch_norm_param = 139;
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.batch_norm_param_);
    }
    // optional .caffe.ELUParameter elu_param = 140;
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.elu_param_);
    }
    // optional .caffe.BiasParameter bias_param = 141;
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_param_);
    }
    // optional .caffe.ScaleParameter scale_param = 142;
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.scale_param_);
    }
    // optional .caffe.InputParameter input_param = 143;
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.input_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    // optional .caffe.CropParameter crop_param = 144;
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.crop_param_);
    }
    // optional .caffe.ShuffleChannelParameter shuffle_channel_param = 145;
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.shuffle_channel_param_);
    }
    // optional .caffe.RecurrentParameter recurrent_param = 146;
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.recurrent_param_);
    }
    // optional .caffe.ReorgParameter reorg_param = 147;
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.reorg_param_);
    }
    // optional .caffe.ROIAlignParameter roi_align_param = 148;
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.roi_align_param_);
    }
    // optional .caffe.PSROIPoolingParameter psroi_pooling_param = 149;
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.psroi_pooling_param_);
    }
    // optional .caffe.PermuteParameter permute_param = 202;
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.permute_param_);
    }
    // optional .caffe.PriorBoxParameter prior_box_param = 203;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.prior_box_param_);
    }
  }
  cached_has_bits = this_._impl_._has_bits_[2];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    // optional .caffe.DetectionOutputParameter detection_output_param = 204;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.detection_output_param_);
    }
    // optional .caffe.InterpParameter interp_param = 205;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.interp_param_);
    }
    // optional .caffe.NormalizeParameter norm_param = 206;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.norm_param_);
    }
    // optional .caffe.YoloDetectionOutputParameter yolo_detection_output_param = 601;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.yolo_detection_output_param_);
    }
    // optional .caffe.Yolov3DetectionOutputParameter yolov3_detection_output_param = 603;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.yolov3_detection_output_param_);
    }
    // optional .caffe.ROIPoolingParameter roi_pooling_param = 8266711;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 4 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.roi_pooling_param_);
    }
    // optional .caffe.SmoothL1LossParameter smooth_l1_loss_param = 8266712;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 4 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.smooth_l1_loss_param_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void LayerParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<LayerParameter*>(&to_msg);
  auto& from = static_cast<const LayerParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.LayerParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_bottom()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_bottom());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_top()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_top());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_loss_weight()->MergeFrom(from._internal_loss_weight());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_param()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_param());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_mutable_blobs()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_blobs());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_internal_mutable_include()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_include());
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_internal_mutable_exclude()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_exclude());
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_internal_mutable_propagate_down()->MergeFrom(from._internal_propagate_down());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_internal_set_name(from._internal_name());
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_internal_set_type(from._internal_type());
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.bn_param_ != nullptr);
      if (_this->_impl_.bn_param_ == nullptr) {
        _this->_impl_.bn_param_ = Super_::CopyConstruct(arena, *from._impl_.bn_param_);
      } else {
        _this->_impl_.bn_param_->MergeFrom(*from._impl_.bn_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(from._impl_.transform_param_ != nullptr);
      if (_this->_impl_.transform_param_ == nullptr) {
        _this->_impl_.transform_param_ = Super_::CopyConstruct(arena, *from._impl_.transform_param_);
      } else {
        _this->_impl_.transform_param_->MergeFrom(*from._impl_.transform_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(from._impl_.loss_param_ != nullptr);
      if (_this->_impl_.loss_param_ == nullptr) {
        _this->_impl_.loss_param_ = Super_::CopyConstruct(arena, *from._impl_.loss_param_);
      } else {
        _this->_impl_.loss_param_->MergeFrom(*from._impl_.loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(from._impl_.accuracy_param_ != nullptr);
      if (_this->_impl_.accuracy_param_ == nullptr) {
        _this->_impl_.accuracy_param_ = Super_::CopyConstruct(arena, *from._impl_.accuracy_param_);
      } else {
        _this->_impl_.accuracy_param_->MergeFrom(*from._impl_.accuracy_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(from._impl_.argmax_param_ != nullptr);
      if (_this->_impl_.argmax_param_ == nullptr) {
        _this->_impl_.argmax_param_ = Super_::CopyConstruct(arena, *from._impl_.argmax_param_);
      } else {
        _this->_impl_.argmax_param_->MergeFrom(*from._impl_.argmax_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(from._impl_.concat_param_ != nullptr);
      if (_this->_impl_.concat_param_ == nullptr) {
        _this->_impl_.concat_param_ = Super_::CopyConstruct(arena, *from._impl_.concat_param_);
      } else {
        _this->_impl_.concat_param_->MergeFrom(*from._impl_.concat_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(from._impl_.contrastive_loss_param_ != nullptr);
      if (_this->_impl_.contrastive_loss_param_ == nullptr) {
        _this->_impl_.contrastive_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.contrastive_loss_param_);
      } else {
        _this->_impl_.contrastive_loss_param_->MergeFrom(*from._impl_.contrastive_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(from._impl_.convolution_param_ != nullptr);
      if (_this->_impl_.convolution_param_ == nullptr) {
        _this->_impl_.convolution_param_ = Super_::CopyConstruct(arena, *from._impl_.convolution_param_);
      } else {
        _this->_impl_.convolution_param_->MergeFrom(*from._impl_.convolution_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(from._impl_.data_param_ != nullptr);
      if (_this->_impl_.data_param_ == nullptr) {
        _this->_impl_.data_param_ = Super_::CopyConstruct(arena, *from._impl_.data_param_);
      } else {
        _this->_impl_.data_param_->MergeFrom(*from._impl_.data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(from._impl_.dropout_param_ != nullptr);
      if (_this->_impl_.dropout_param_ == nullptr) {
        _this->_impl_.dropout_param_ = Super_::CopyConstruct(arena, *from._impl_.dropout_param_);
      } else {
        _this->_impl_.dropout_param_->MergeFrom(*from._impl_.dropout_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(from._impl_.eltwise_param_ != nullptr);
      if (_this->_impl_.eltwise_param_ == nullptr) {
        _this->_impl_.eltwise_param_ = Super_::CopyConstruct(arena, *from._impl_.eltwise_param_);
      } else {
        _this->_impl_.eltwise_param_->MergeFrom(*from._impl_.eltwise_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(from._impl_.exp_param_ != nullptr);
      if (_this->_impl_.exp_param_ == nullptr) {
        _this->_impl_.exp_param_ = Super_::CopyConstruct(arena, *from._impl_.exp_param_);
      } else {
        _this->_impl_.exp_param_->MergeFrom(*from._impl_.exp_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(from._impl_.hdf5_data_param_ != nullptr);
      if (_this->_impl_.hdf5_data_param_ == nullptr) {
        _this->_impl_.hdf5_data_param_ = Super_::CopyConstruct(arena, *from._impl_.hdf5_data_param_);
      } else {
        _this->_impl_.hdf5_data_param_->MergeFrom(*from._impl_.hdf5_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(from._impl_.hdf5_output_param_ != nullptr);
      if (_this->_impl_.hdf5_output_param_ == nullptr) {
        _this->_impl_.hdf5_output_param_ = Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_);
      } else {
        _this->_impl_.hdf5_output_param_->MergeFrom(*from._impl_.hdf5_output_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(from._impl_.hinge_loss_param_ != nullptr);
      if (_this->_impl_.hinge_loss_param_ == nullptr) {
        _this->_impl_.hinge_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.hinge_loss_param_);
      } else {
        _this->_impl_.hinge_loss_param_->MergeFrom(*from._impl_.hinge_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(from._impl_.image_data_param_ != nullptr);
      if (_this->_impl_.image_data_param_ == nullptr) {
        _this->_impl_.image_data_param_ = Super_::CopyConstruct(arena, *from._impl_.image_data_param_);
      } else {
        _this->_impl_.image_data_param_->MergeFrom(*from._impl_.image_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      _this->_impl_.phase_ = from._impl_.phase_;
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(from._impl_.dummy_data_param_ != nullptr);
      if (_this->_impl_.dummy_data_param_ == nullptr) {
        _this->_impl_.dummy_data_param_ = Super_::CopyConstruct(arena, *from._impl_.dummy_data_param_);
      } else {
        _this->_impl_.dummy_data_param_->MergeFrom(*from._impl_.dummy_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(from._impl_.infogain_loss_param_ != nullptr);
      if (_this->_impl_.infogain_loss_param_ == nullptr) {
        _this->_impl_.infogain_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.infogain_loss_param_);
      } else {
        _this->_impl_.infogain_loss_param_->MergeFrom(*from._impl_.infogain_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      ABSL_DCHECK(from._impl_.inner_product_param_ != nullptr);
      if (_this->_impl_.inner_product_param_ == nullptr) {
        _this->_impl_.inner_product_param_ = Super_::CopyConstruct(arena, *from._impl_.inner_product_param_);
      } else {
        _this->_impl_.inner_product_param_->MergeFrom(*from._impl_.inner_product_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(from._impl_.lrn_param_ != nullptr);
      if (_this->_impl_.lrn_param_ == nullptr) {
        _this->_impl_.lrn_param_ = Super_::CopyConstruct(arena, *from._impl_.lrn_param_);
      } else {
        _this->_impl_.lrn_param_->MergeFrom(*from._impl_.lrn_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(from._impl_.memory_data_param_ != nullptr);
      if (_this->_impl_.memory_data_param_ == nullptr) {
        _this->_impl_.memory_data_param_ = Super_::CopyConstruct(arena, *from._impl_.memory_data_param_);
      } else {
        _this->_impl_.memory_data_param_->MergeFrom(*from._impl_.memory_data_param_);
      }
    }
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.mvn_param_ != nullptr);
      if (_this->_impl_.mvn_param_ == nullptr) {
        _this->_impl_.mvn_param_ = Super_::CopyConstruct(arena, *from._impl_.mvn_param_);
      } else {
        _this->_impl_.mvn_param_->MergeFrom(*from._impl_.mvn_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.pooling_param_ != nullptr);
      if (_this->_impl_.pooling_param_ == nullptr) {
        _this->_impl_.pooling_param_ = Super_::CopyConstruct(arena, *from._impl_.pooling_param_);
      } else {
        _this->_impl_.pooling_param_->MergeFrom(*from._impl_.pooling_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.power_param_ != nullptr);
      if (_this->_impl_.power_param_ == nullptr) {
        _this->_impl_.power_param_ = Super_::CopyConstruct(arena, *from._impl_.power_param_);
      } else {
        _this->_impl_.power_param_->MergeFrom(*from._impl_.power_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.relu_param_ != nullptr);
      if (_this->_impl_.relu_param_ == nullptr) {
        _this->_impl_.relu_param_ = Super_::CopyConstruct(arena, *from._impl_.relu_param_);
      } else {
        _this->_impl_.relu_param_->MergeFrom(*from._impl_.relu_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.sigmoid_param_ != nullptr);
      if (_this->_impl_.sigmoid_param_ == nullptr) {
        _this->_impl_.sigmoid_param_ = Super_::CopyConstruct(arena, *from._impl_.sigmoid_param_);
      } else {
        _this->_impl_.sigmoid_param_->MergeFrom(*from._impl_.sigmoid_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.softmax_param_ != nullptr);
      if (_this->_impl_.softmax_param_ == nullptr) {
        _this->_impl_.softmax_param_ = Super_::CopyConstruct(arena, *from._impl_.softmax_param_);
      } else {
        _this->_impl_.softmax_param_->MergeFrom(*from._impl_.softmax_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.slice_param_ != nullptr);
      if (_this->_impl_.slice_param_ == nullptr) {
        _this->_impl_.slice_param_ = Super_::CopyConstruct(arena, *from._impl_.slice_param_);
      } else {
        _this->_impl_.slice_param_->MergeFrom(*from._impl_.slice_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.tanh_param_ != nullptr);
      if (_this->_impl_.tanh_param_ == nullptr) {
        _this->_impl_.tanh_param_ = Super_::CopyConstruct(arena, *from._impl_.tanh_param_);
      } else {
        _this->_impl_.tanh_param_->MergeFrom(*from._impl_.tanh_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(from._impl_.threshold_param_ != nullptr);
      if (_this->_impl_.threshold_param_ == nullptr) {
        _this->_impl_.threshold_param_ = Super_::CopyConstruct(arena, *from._impl_.threshold_param_);
      } else {
        _this->_impl_.threshold_param_->MergeFrom(*from._impl_.threshold_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(from._impl_.window_data_param_ != nullptr);
      if (_this->_impl_.window_data_param_ == nullptr) {
        _this->_impl_.window_data_param_ = Super_::CopyConstruct(arena, *from._impl_.window_data_param_);
      } else {
        _this->_impl_.window_data_param_->MergeFrom(*from._impl_.window_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.python_param_ != nullptr);
      if (_this->_impl_.python_param_ == nullptr) {
        _this->_impl_.python_param_ = Super_::CopyConstruct(arena, *from._impl_.python_param_);
      } else {
        _this->_impl_.python_param_->MergeFrom(*from._impl_.python_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(from._impl_.prelu_param_ != nullptr);
      if (_this->_impl_.prelu_param_ == nullptr) {
        _this->_impl_.prelu_param_ = Super_::CopyConstruct(arena, *from._impl_.prelu_param_);
      } else {
        _this->_impl_.prelu_param_->MergeFrom(*from._impl_.prelu_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(from._impl_.spp_param_ != nullptr);
      if (_this->_impl_.spp_param_ == nullptr) {
        _this->_impl_.spp_param_ = Super_::CopyConstruct(arena, *from._impl_.spp_param_);
      } else {
        _this->_impl_.spp_param_->MergeFrom(*from._impl_.spp_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(from._impl_.reshape_param_ != nullptr);
      if (_this->_impl_.reshape_param_ == nullptr) {
        _this->_impl_.reshape_param_ = Super_::CopyConstruct(arena, *from._impl_.reshape_param_);
      } else {
        _this->_impl_.reshape_param_->MergeFrom(*from._impl_.reshape_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(from._impl_.log_param_ != nullptr);
      if (_this->_impl_.log_param_ == nullptr) {
        _this->_impl_.log_param_ = Super_::CopyConstruct(arena, *from._impl_.log_param_);
      } else {
        _this->_impl_.log_param_->MergeFrom(*from._impl_.log_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(from._impl_.flatten_param_ != nullptr);
      if (_this->_impl_.flatten_param_ == nullptr) {
        _this->_impl_.flatten_param_ = Super_::CopyConstruct(arena, *from._impl_.flatten_param_);
      } else {
        _this->_impl_.flatten_param_->MergeFrom(*from._impl_.flatten_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(from._impl_.reduction_param_ != nullptr);
      if (_this->_impl_.reduction_param_ == nullptr) {
        _this->_impl_.reduction_param_ = Super_::CopyConstruct(arena, *from._impl_.reduction_param_);
      } else {
        _this->_impl_.reduction_param_->MergeFrom(*from._impl_.reduction_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(from._impl_.embed_param_ != nullptr);
      if (_this->_impl_.embed_param_ == nullptr) {
        _this->_impl_.embed_param_ = Super_::CopyConstruct(arena, *from._impl_.embed_param_);
      } else {
        _this->_impl_.embed_param_->MergeFrom(*from._impl_.embed_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(from._impl_.tile_param_ != nullptr);
      if (_this->_impl_.tile_param_ == nullptr) {
        _this->_impl_.tile_param_ = Super_::CopyConstruct(arena, *from._impl_.tile_param_);
      } else {
        _this->_impl_.tile_param_->MergeFrom(*from._impl_.tile_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(from._impl_.batch_norm_param_ != nullptr);
      if (_this->_impl_.batch_norm_param_ == nullptr) {
        _this->_impl_.batch_norm_param_ = Super_::CopyConstruct(arena, *from._impl_.batch_norm_param_);
      } else {
        _this->_impl_.batch_norm_param_->MergeFrom(*from._impl_.batch_norm_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(from._impl_.elu_param_ != nullptr);
      if (_this->_impl_.elu_param_ == nullptr) {
        _this->_impl_.elu_param_ = Super_::CopyConstruct(arena, *from._impl_.elu_param_);
      } else {
        _this->_impl_.elu_param_->MergeFrom(*from._impl_.elu_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(from._impl_.bias_param_ != nullptr);
      if (_this->_impl_.bias_param_ == nullptr) {
        _this->_impl_.bias_param_ = Super_::CopyConstruct(arena, *from._impl_.bias_param_);
      } else {
        _this->_impl_.bias_param_->MergeFrom(*from._impl_.bias_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(from._impl_.scale_param_ != nullptr);
      if (_this->_impl_.scale_param_ == nullptr) {
        _this->_impl_.scale_param_ = Super_::CopyConstruct(arena, *from._impl_.scale_param_);
      } else {
        _this->_impl_.scale_param_->MergeFrom(*from._impl_.scale_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(from._impl_.input_param_ != nullptr);
      if (_this->_impl_.input_param_ == nullptr) {
        _this->_impl_.input_param_ = Super_::CopyConstruct(arena, *from._impl_.input_param_);
      } else {
        _this->_impl_.input_param_->MergeFrom(*from._impl_.input_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(from._impl_.crop_param_ != nullptr);
      if (_this->_impl_.crop_param_ == nullptr) {
        _this->_impl_.crop_param_ = Super_::CopyConstruct(arena, *from._impl_.crop_param_);
      } else {
        _this->_impl_.crop_param_->MergeFrom(*from._impl_.crop_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(from._impl_.shuffle_channel_param_ != nullptr);
      if (_this->_impl_.shuffle_channel_param_ == nullptr) {
        _this->_impl_.shuffle_channel_param_ = Super_::CopyConstruct(arena, *from._impl_.shuffle_channel_param_);
      } else {
        _this->_impl_.shuffle_channel_param_->MergeFrom(*from._impl_.shuffle_channel_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      ABSL_DCHECK(from._impl_.recurrent_param_ != nullptr);
      if (_this->_impl_.recurrent_param_ == nullptr) {
        _this->_impl_.recurrent_param_ = Super_::CopyConstruct(arena, *from._impl_.recurrent_param_);
      } else {
        _this->_impl_.recurrent_param_->MergeFrom(*from._impl_.recurrent_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(from._impl_.reorg_param_ != nullptr);
      if (_this->_impl_.reorg_param_ == nullptr) {
        _this->_impl_.reorg_param_ = Super_::CopyConstruct(arena, *from._impl_.reorg_param_);
      } else {
        _this->_impl_.reorg_param_->MergeFrom(*from._impl_.reorg_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(from._impl_.roi_align_param_ != nullptr);
      if (_this->_impl_.roi_align_param_ == nullptr) {
        _this->_impl_.roi_align_param_ = Super_::CopyConstruct(arena, *from._impl_.roi_align_param_);
      } else {
        _this->_impl_.roi_align_param_->MergeFrom(*from._impl_.roi_align_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      ABSL_DCHECK(from._impl_.psroi_pooling_param_ != nullptr);
      if (_this->_impl_.psroi_pooling_param_ == nullptr) {
        _this->_impl_.psroi_pooling_param_ = Super_::CopyConstruct(arena, *from._impl_.psroi_pooling_param_);
      } else {
        _this->_impl_.psroi_pooling_param_->MergeFrom(*from._impl_.psroi_pooling_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      ABSL_DCHECK(from._impl_.permute_param_ != nullptr);
      if (_this->_impl_.permute_param_ == nullptr) {
        _this->_impl_.permute_param_ = Super_::CopyConstruct(arena, *from._impl_.permute_param_);
      } else {
        _this->_impl_.permute_param_->MergeFrom(*from._impl_.permute_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      ABSL_DCHECK(from._impl_.prior_box_param_ != nullptr);
      if (_this->_impl_.prior_box_param_ == nullptr) {
        _this->_impl_.prior_box_param_ = Super_::CopyConstruct(arena, *from._impl_.prior_box_param_);
      } else {
        _this->_impl_.prior_box_param_->MergeFrom(*from._impl_.prior_box_param_);
      }
    }
  }
  cached_has_bits = from._impl_._has_bits_[2];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.detection_output_param_ != nullptr);
      if (_this->_impl_.detection_output_param_ == nullptr) {
        _this->_impl_.detection_output_param_ = Super_::CopyConstruct(arena, *from._impl_.detection_output_param_);
      } else {
        _this->_impl_.detection_output_param_->MergeFrom(*from._impl_.detection_output_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.interp_param_ != nullptr);
      if (_this->_impl_.interp_param_ == nullptr) {
        _this->_impl_.interp_param_ = Super_::CopyConstruct(arena, *from._impl_.interp_param_);
      } else {
        _this->_impl_.interp_param_->MergeFrom(*from._impl_.interp_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.norm_param_ != nullptr);
      if (_this->_impl_.norm_param_ == nullptr) {
        _this->_impl_.norm_param_ = Super_::CopyConstruct(arena, *from._impl_.norm_param_);
      } else {
        _this->_impl_.norm_param_->MergeFrom(*from._impl_.norm_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.yolo_detection_output_param_ != nullptr);
      if (_this->_impl_.yolo_detection_output_param_ == nullptr) {
        _this->_impl_.yolo_detection_output_param_ = Super_::CopyConstruct(arena, *from._impl_.yolo_detection_output_param_);
      } else {
        _this->_impl_.yolo_detection_output_param_->MergeFrom(*from._impl_.yolo_detection_output_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.yolov3_detection_output_param_ != nullptr);
      if (_this->_impl_.yolov3_detection_output_param_ == nullptr) {
        _this->_impl_.yolov3_detection_output_param_ = Super_::CopyConstruct(arena, *from._impl_.yolov3_detection_output_param_);
      } else {
        _this->_impl_.yolov3_detection_output_param_->MergeFrom(*from._impl_.yolov3_detection_output_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.roi_pooling_param_ != nullptr);
      if (_this->_impl_.roi_pooling_param_ == nullptr) {
        _this->_impl_.roi_pooling_param_ = Super_::CopyConstruct(arena, *from._impl_.roi_pooling_param_);
      } else {
        _this->_impl_.roi_pooling_param_->MergeFrom(*from._impl_.roi_pooling_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.smooth_l1_loss_param_ != nullptr);
      if (_this->_impl_.smooth_l1_loss_param_ == nullptr) {
        _this->_impl_.smooth_l1_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.smooth_l1_loss_param_);
      } else {
        _this->_impl_.smooth_l1_loss_param_->MergeFrom(*from._impl_.smooth_l1_loss_param_);
      }
    }
  }
  _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool LayerParameter::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const LayerParameter&>(msg);
  if (CheckHasBit(this_._impl_._has_bits_[1], 0x20000000U)) {
    if (!this_._impl_.psroi_pooling_param_->IsInitialized()) return false;
  }
  return true;
}

void LayerParameter::InternalSwap(LayerParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  swap(_impl_._has_bits_[2], other->_impl_._has_bits_[2]);
  _impl_.bottom_.InternalSwap(&other->_impl_.bottom_);
  _impl_.top_.InternalSwap(&other->_impl_.top_);
  _impl_.loss_weight_.InternalSwap(&other->_impl_.loss_weight_);
  _impl_.param_.InternalSwap(&other->_impl_.param_);
  _impl_.blobs_.InternalSwap(&other->_impl_.blobs_);
  _impl_.include_.InternalSwap(&other->_impl_.include_);
  _impl_.exclude_.InternalSwap(&other->_impl_.exclude_);
  _impl_.propagate_down_.InternalSwap(&other->_impl_.propagate_down_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.smooth_l1_loss_param_)
      + sizeof(LayerParameter::_impl_.smooth_l1_loss_param_)
      - PROTOBUF_FIELD_OFFSET(LayerParameter, _impl_.bn_param_)>(
          reinterpret_cast<char*>(&_impl_.bn_param_),
          reinterpret_cast<char*>(&other->_impl_.bn_param_));
}

::google::protobuf::Metadata LayerParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

TransformationParameter::TransformationParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TransformationParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.TransformationParameter)
}
PROTOBUF_NDEBUG_INLINE TransformationParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::TransformationParameter& from_msg)
      : _has_bits_{from._has_bits_},
        mean_value_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::TransformationParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mean_value_)>()
          , arena, from.mean_value_
        }
        ,
        mean_file_(arena, from.mean_file_) {}

TransformationParameter::TransformationParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const TransformationParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TransformationParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  TransformationParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, crop_size_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, crop_size_),
           offsetof(Impl_, scale_) -
               offsetof(Impl_, crop_size_) +
               sizeof(Impl_::scale_));

  // @@protoc_insertion_point(copy_constructor:caffe.TransformationParameter)
}
PROTOBUF_NDEBUG_INLINE TransformationParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : mean_value_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::TransformationParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::TransformationParameter, _impl_.mean_value_)>()
         }
        ,
        mean_file_(arena),
        scale_{1} {}

inline void TransformationParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, crop_size_),
           0,
           offsetof(Impl_, force_gray_) -
               offsetof(Impl_, crop_size_) +
               sizeof(Impl_::force_gray_));
}
TransformationParameter::~TransformationParameter() {
  // @@protoc_insertion_point(destructor:caffe.TransformationParameter)
  SharedDtor(*this);
}
inline void TransformationParameter::SharedDtor(MessageLite& self) {
  TransformationParameter& this_ = static_cast<TransformationParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.mean_file_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull TransformationParameter_class_data_ =
        TransformationParameter::InternalGenerateClassData_(TransformationParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TransformationParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TransformationParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(TransformationParameter_class_data_.tc_table);
  return TransformationParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TransformationParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TransformationParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&TransformationParameter_globals_));
  return TransformationParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const TransformationParameter::ParseTableT_
    TransformationParameter::_table_ =
        TransformationParameter::InternalGenerateParseTable_(TransformationParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void TransformationParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.TransformationParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.mean_value_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.mean_file_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000007cU)) {
    ::memset(&this_._impl_.crop_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.force_gray_) -
                 reinterpret_cast<char*>(&this_._impl_.crop_size_)) +
                 sizeof(_impl_.force_gray_));
    this_._impl_.scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL TransformationParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const TransformationParameter& this_ = static_cast<const TransformationParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL TransformationParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const TransformationParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.TransformationParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float scale = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_scale(), target);
  }

  // optional bool mirror = 2 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_mirror(), target);
  }

  // optional uint32 crop_size = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_crop_size(), target);
  }

  // optional string mean_file = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_mean_file();
    target = stream->WriteStringMaybeAliased(4, _s, target);
  }

  // repeated float mean_value = 5;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_mean_value_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          5, this_._internal_mean_value().Get(i), target);
    }
  }

  // optional bool force_color = 6 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        6, this_._internal_force_color(), target);
  }

  // optional bool force_gray = 7 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        7, this_._internal_force_gray(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.TransformationParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t TransformationParameter::ByteSizeLong(const MessageLite& base) {
  const TransformationParameter& this_ = static_cast<const TransformationParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t TransformationParameter::ByteSizeLong() const {
  const TransformationParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.TransformationParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000040U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000038U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // repeated float mean_value = 5;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_mean_value_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_mean_value_size());
      total_size += tag_size + data_size;
    }
    // optional string mean_file = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_mean_file());
    }
    // optional uint32 crop_size = 3 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_crop_size());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void TransformationParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<TransformationParameter*>(&to_msg);
  auto& from = static_cast<const TransformationParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.TransformationParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_mean_value()->MergeFrom(from._internal_mean_value());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_mean_file(from._internal_mean_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.crop_size_ = from._impl_.crop_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.mirror_ = from._impl_.mirror_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.force_color_ = from._impl_.force_color_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.force_gray_ = from._impl_.force_gray_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void TransformationParameter::InternalSwap(TransformationParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.mean_value_.InternalSwap(&other->_impl_.mean_value_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mean_file_, &other->_impl_.mean_file_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.scale_)
      + sizeof(TransformationParameter::_impl_.scale_)
      - PROTOBUF_FIELD_OFFSET(TransformationParameter, _impl_.crop_size_)>(
          reinterpret_cast<char*>(&_impl_.crop_size_),
          reinterpret_cast<char*>(&other->_impl_.crop_size_));
}

::google::protobuf::Metadata TransformationParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ResizeParameter::ResizeParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ResizeParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ResizeParameter)
}
PROTOBUF_NDEBUG_INLINE ResizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ResizeParameter& from_msg)
      : _has_bits_{from._has_bits_},
        pad_value_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ResizeParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.pad_value_)>()
          , arena, from.pad_value_
        }
        ,
        interp_mode_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ResizeParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.interp_mode_)>()
          , arena, from.interp_mode_
        }
     {}

ResizeParameter::ResizeParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ResizeParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ResizeParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ResizeParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, height_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, height_),
           offsetof(Impl_, pad_mode_) -
               offsetof(Impl_, height_) +
               sizeof(Impl_::pad_mode_));

  // @@protoc_insertion_point(copy_constructor:caffe.ResizeParameter)
}
PROTOBUF_NDEBUG_INLINE ResizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : pad_value_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ResizeParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.pad_value_)>()
         }
        ,
        interp_mode_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ResizeParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ResizeParameter, _impl_.interp_mode_)>()
         }
        ,
        prob_{1},
        resize_mode_{static_cast< ::caffe::ResizeParameter_Resize_mode >(1)},
        pad_mode_{static_cast< ::caffe::ResizeParameter_Pad_mode >(1)} {}

inline void ResizeParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, height_),
           0,
           offsetof(Impl_, width_scale_) -
               offsetof(Impl_, height_) +
               sizeof(Impl_::width_scale_));
}
ResizeParameter::~ResizeParameter() {
  // @@protoc_insertion_point(destructor:caffe.ResizeParameter)
  SharedDtor(*this);
}
inline void ResizeParameter::SharedDtor(MessageLite& self) {
  ResizeParameter& this_ = static_cast<ResizeParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ResizeParameter_class_data_ =
        ResizeParameter::InternalGenerateClassData_(ResizeParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ResizeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ResizeParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ResizeParameter_class_data_.tc_table);
  return ResizeParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ResizeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ResizeParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ResizeParameter_globals_));
  return ResizeParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ResizeParameter::ParseTableT_
    ResizeParameter::_table_ =
        ResizeParameter::InternalGenerateParseTable_(ResizeParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ResizeParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ResizeParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.pad_value_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.interp_mode_.Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000fcU)) {
    ::memset(&this_._impl_.height_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.width_scale_) -
                 reinterpret_cast<char*>(&this_._impl_.height_)) +
                 sizeof(_impl_.width_scale_));
    this_._impl_.prob_ = 1;
    this_._impl_.resize_mode_ = 1;
  }
  this_._impl_.pad_mode_ = 1;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ResizeParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ResizeParameter& this_ = static_cast<const ResizeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ResizeParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ResizeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ResizeParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float prob = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_prob(), target);
  }

  // optional .caffe.ResizeParameter.Resize_mode resize_mode = 2 [default = WARP];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this_._internal_resize_mode(), target);
  }

  // optional uint32 height = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_height(), target);
  }

  // optional uint32 width = 4 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_width(), target);
  }

  // optional .caffe.ResizeParameter.Pad_mode pad_mode = 5 [default = CONSTANT];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        5, this_._internal_pad_mode(), target);
  }

  // repeated float pad_value = 6;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_pad_value_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          6, this_._internal_pad_value().Get(i), target);
    }
  }

  // repeated .caffe.ResizeParameter.Interp_mode interp_mode = 7;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_interp_mode_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteEnumToArray(
          7, static_cast<::caffe::ResizeParameter_Interp_mode>(this_._internal_interp_mode().Get(i)),
          target);
    }
  }

  // optional uint32 height_scale = 8 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        8, this_._internal_height_scale(), target);
  }

  // optional uint32 width_scale = 9 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_width_scale(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ResizeParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ResizeParameter::ByteSizeLong(const MessageLite& base) {
  const ResizeParameter& this_ = static_cast<const ResizeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ResizeParameter::ByteSizeLong() const {
  const ResizeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ResizeParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000040U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x000000bfU)) {
    // repeated float pad_value = 6;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_pad_value_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_pad_value_size());
      total_size += tag_size + data_size;
    }
    // repeated .caffe.ResizeParameter.Interp_mode interp_mode = 7;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size =
          ::_pbi::WireFormatLite::EnumSize(this_._internal_interp_mode());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_interp_mode_size());
      total_size += data_size + tag_size;
    }
    // optional uint32 height = 3 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_height());
    }
    // optional uint32 width = 4 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_width());
    }
    // optional uint32 height_scale = 8 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_height_scale());
    }
    // optional uint32 width_scale = 9 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_width_scale());
    }
    // optional .caffe.ResizeParameter.Resize_mode resize_mode = 2 [default = WARP];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_resize_mode());
    }
  }
   {
    // optional .caffe.ResizeParameter.Pad_mode pad_mode = 5 [default = CONSTANT];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_pad_mode());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ResizeParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ResizeParameter*>(&to_msg);
  auto& from = static_cast<const ResizeParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ResizeParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_pad_value()->MergeFrom(from._internal_pad_value());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_interp_mode()->MergeFrom(from._internal_interp_mode());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.height_ = from._impl_.height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.width_ = from._impl_.width_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.height_scale_ = from._impl_.height_scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.width_scale_ = from._impl_.width_scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.prob_ = from._impl_.prob_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.resize_mode_ = from._impl_.resize_mode_;
    }
  }
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    _this->_impl_.pad_mode_ = from._impl_.pad_mode_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ResizeParameter::InternalSwap(ResizeParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.pad_value_.InternalSwap(&other->_impl_.pad_value_);
  _impl_.interp_mode_.InternalSwap(&other->_impl_.interp_mode_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.pad_mode_)
      + sizeof(ResizeParameter::_impl_.pad_mode_)
      - PROTOBUF_FIELD_OFFSET(ResizeParameter, _impl_.height_)>(
          reinterpret_cast<char*>(&_impl_.height_),
          reinterpret_cast<char*>(&other->_impl_.height_));
}

::google::protobuf::Metadata ResizeParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

LossParameter::LossParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LossParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.LossParameter)
}
LossParameter::LossParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LossParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LossParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE LossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : normalization_{static_cast< ::caffe::LossParameter_NormalizationMode >(1)} {}

inline void LossParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, ignore_label_),
           0,
           offsetof(Impl_, normalize_) -
               offsetof(Impl_, ignore_label_) +
               sizeof(Impl_::normalize_));
}
LossParameter::~LossParameter() {
  // @@protoc_insertion_point(destructor:caffe.LossParameter)
  SharedDtor(*this);
}
inline void LossParameter::SharedDtor(MessageLite& self) {
  LossParameter& this_ = static_cast<LossParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull LossParameter_class_data_ =
        LossParameter::InternalGenerateClassData_(LossParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LossParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(LossParameter_class_data_.tc_table);
  return LossParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LossParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&LossParameter_globals_));
  return LossParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const LossParameter::ParseTableT_
    LossParameter::_table_ =
        LossParameter::InternalGenerateParseTable_(LossParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void LossParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.LossParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.ignore_label_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.normalize_) -
                 reinterpret_cast<char*>(&this_._impl_.ignore_label_)) +
                 sizeof(_impl_.normalize_));
    this_._impl_.normalization_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL LossParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const LossParameter& this_ = static_cast<const LossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL LossParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const LossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.LossParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 ignore_label = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_ignore_label(), target);
  }

  // optional bool normalize = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_normalize(), target);
  }

  // optional .caffe.LossParameter.NormalizationMode normalization = 3 [default = VALID];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        3, this_._internal_normalization(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.LossParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t LossParameter::ByteSizeLong(const MessageLite& base) {
  const LossParameter& this_ = static_cast<const LossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t LossParameter::ByteSizeLong() const {
  const LossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.LossParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000002U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000005U)) {
    // optional int32 ignore_label = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_ignore_label());
    }
    // optional .caffe.LossParameter.NormalizationMode normalization = 3 [default = VALID];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_normalization());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void LossParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<LossParameter*>(&to_msg);
  auto& from = static_cast<const LossParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.LossParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.ignore_label_ = from._impl_.ignore_label_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.normalize_ = from._impl_.normalize_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.normalization_ = from._impl_.normalization_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void LossParameter::InternalSwap(LossParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.normalization_)
      + sizeof(LossParameter::_impl_.normalization_)
      - PROTOBUF_FIELD_OFFSET(LossParameter, _impl_.ignore_label_)>(
          reinterpret_cast<char*>(&_impl_.ignore_label_),
          reinterpret_cast<char*>(&other->_impl_.ignore_label_));
}

::google::protobuf::Metadata LossParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

AccuracyParameter::AccuracyParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, AccuracyParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.AccuracyParameter)
}
AccuracyParameter::AccuracyParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AccuracyParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, AccuracyParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE AccuracyParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : top_k_{1u},
        axis_{1} {}

inline void AccuracyParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.ignore_label_ = {};
}
AccuracyParameter::~AccuracyParameter() {
  // @@protoc_insertion_point(destructor:caffe.AccuracyParameter)
  SharedDtor(*this);
}
inline void AccuracyParameter::SharedDtor(MessageLite& self) {
  AccuracyParameter& this_ = static_cast<AccuracyParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull AccuracyParameter_class_data_ =
        AccuracyParameter::InternalGenerateClassData_(AccuracyParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
AccuracyParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&AccuracyParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(AccuracyParameter_class_data_.tc_table);
  return AccuracyParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
AccuracyParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&AccuracyParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&AccuracyParameter_globals_));
  return AccuracyParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const AccuracyParameter::ParseTableT_
    AccuracyParameter::_table_ =
        AccuracyParameter::InternalGenerateParseTable_(AccuracyParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void AccuracyParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.AccuracyParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.ignore_label_ = 0;
    this_._impl_.top_k_ = 1u;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL AccuracyParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const AccuracyParameter& this_ = static_cast<const AccuracyParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL AccuracyParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const AccuracyParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.AccuracyParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 top_k = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_top_k(), target);
  }

  // optional int32 axis = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 ignore_label = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_ignore_label(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.AccuracyParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t AccuracyParameter::ByteSizeLong(const MessageLite& base) {
  const AccuracyParameter& this_ = static_cast<const AccuracyParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t AccuracyParameter::ByteSizeLong() const {
  const AccuracyParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.AccuracyParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional int32 ignore_label = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_ignore_label());
    }
    // optional uint32 top_k = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_top_k());
    }
    // optional int32 axis = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void AccuracyParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<AccuracyParameter*>(&to_msg);
  auto& from = static_cast<const AccuracyParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.AccuracyParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.ignore_label_ = from._impl_.ignore_label_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.top_k_ = from._impl_.top_k_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void AccuracyParameter::InternalSwap(AccuracyParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.axis_)
      + sizeof(AccuracyParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(AccuracyParameter, _impl_.ignore_label_)>(
          reinterpret_cast<char*>(&_impl_.ignore_label_),
          reinterpret_cast<char*>(&other->_impl_.ignore_label_));
}

::google::protobuf::Metadata AccuracyParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ArgMaxParameter::ArgMaxParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ArgMaxParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ArgMaxParameter)
}
ArgMaxParameter::ArgMaxParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArgMaxParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ArgMaxParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ArgMaxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : top_k_{1u} {}

inline void ArgMaxParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, out_max_val_),
           0,
           offsetof(Impl_, axis_) -
               offsetof(Impl_, out_max_val_) +
               sizeof(Impl_::axis_));
}
ArgMaxParameter::~ArgMaxParameter() {
  // @@protoc_insertion_point(destructor:caffe.ArgMaxParameter)
  SharedDtor(*this);
}
inline void ArgMaxParameter::SharedDtor(MessageLite& self) {
  ArgMaxParameter& this_ = static_cast<ArgMaxParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ArgMaxParameter_class_data_ =
        ArgMaxParameter::InternalGenerateClassData_(ArgMaxParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ArgMaxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ArgMaxParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ArgMaxParameter_class_data_.tc_table);
  return ArgMaxParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ArgMaxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ArgMaxParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ArgMaxParameter_globals_));
  return ArgMaxParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ArgMaxParameter::ParseTableT_
    ArgMaxParameter::_table_ =
        ArgMaxParameter::InternalGenerateParseTable_(ArgMaxParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ArgMaxParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ArgMaxParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.out_max_val_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.axis_) -
                 reinterpret_cast<char*>(&this_._impl_.out_max_val_)) +
                 sizeof(_impl_.axis_));
    this_._impl_.top_k_ = 1u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ArgMaxParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ArgMaxParameter& this_ = static_cast<const ArgMaxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ArgMaxParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ArgMaxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ArgMaxParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional bool out_max_val = 1 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        1, this_._internal_out_max_val(), target);
  }

  // optional uint32 top_k = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_top_k(), target);
  }

  // optional int32 axis = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_axis(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ArgMaxParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ArgMaxParameter::ByteSizeLong(const MessageLite& base) {
  const ArgMaxParameter& this_ = static_cast<const ArgMaxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ArgMaxParameter::ByteSizeLong() const {
  const ArgMaxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ArgMaxParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
    // optional int32 axis = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional uint32 top_k = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_top_k());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ArgMaxParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ArgMaxParameter*>(&to_msg);
  auto& from = static_cast<const ArgMaxParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ArgMaxParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.out_max_val_ = from._impl_.out_max_val_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.top_k_ = from._impl_.top_k_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ArgMaxParameter::InternalSwap(ArgMaxParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.top_k_)
      + sizeof(ArgMaxParameter::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(ArgMaxParameter, _impl_.out_max_val_)>(
          reinterpret_cast<char*>(&_impl_.out_max_val_),
          reinterpret_cast<char*>(&other->_impl_.out_max_val_));
}

::google::protobuf::Metadata ArgMaxParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ConcatParameter::ConcatParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ConcatParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ConcatParameter)
}
ConcatParameter::ConcatParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ConcatParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ConcatParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ConcatParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : concat_dim_{1u},
        axis_{1} {}

inline void ConcatParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ConcatParameter::~ConcatParameter() {
  // @@protoc_insertion_point(destructor:caffe.ConcatParameter)
  SharedDtor(*this);
}
inline void ConcatParameter::SharedDtor(MessageLite& self) {
  ConcatParameter& this_ = static_cast<ConcatParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ConcatParameter_class_data_ =
        ConcatParameter::InternalGenerateClassData_(ConcatParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ConcatParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ConcatParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ConcatParameter_class_data_.tc_table);
  return ConcatParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ConcatParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ConcatParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ConcatParameter_globals_));
  return ConcatParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ConcatParameter::ParseTableT_
    ConcatParameter::_table_ =
        ConcatParameter::InternalGenerateParseTable_(ConcatParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ConcatParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ConcatParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.concat_dim_ = 1u;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ConcatParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ConcatParameter& this_ = static_cast<const ConcatParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ConcatParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ConcatParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ConcatParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 concat_dim = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_concat_dim(), target);
  }

  // optional int32 axis = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_axis(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ConcatParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ConcatParameter::ByteSizeLong(const MessageLite& base) {
  const ConcatParameter& this_ = static_cast<const ConcatParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ConcatParameter::ByteSizeLong() const {
  const ConcatParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ConcatParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional uint32 concat_dim = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_concat_dim());
    }
    // optional int32 axis = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ConcatParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ConcatParameter*>(&to_msg);
  auto& from = static_cast<const ConcatParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ConcatParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.concat_dim_ = from._impl_.concat_dim_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ConcatParameter::InternalSwap(ConcatParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.axis_)
      + sizeof(ConcatParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(ConcatParameter, _impl_.concat_dim_)>(
          reinterpret_cast<char*>(&_impl_.concat_dim_),
          reinterpret_cast<char*>(&other->_impl_.concat_dim_));
}

::google::protobuf::Metadata ConcatParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

BatchNormParameter::BatchNormParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BatchNormParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BatchNormParameter)
}
BatchNormParameter::BatchNormParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const BatchNormParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BatchNormParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE BatchNormParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : moving_average_fraction_{0.999f},
        eps_{1e-05f} {}

inline void BatchNormParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.use_global_stats_ = {};
}
BatchNormParameter::~BatchNormParameter() {
  // @@protoc_insertion_point(destructor:caffe.BatchNormParameter)
  SharedDtor(*this);
}
inline void BatchNormParameter::SharedDtor(MessageLite& self) {
  BatchNormParameter& this_ = static_cast<BatchNormParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BatchNormParameter_class_data_ =
        BatchNormParameter::InternalGenerateClassData_(BatchNormParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BatchNormParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BatchNormParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BatchNormParameter_class_data_.tc_table);
  return BatchNormParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BatchNormParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BatchNormParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BatchNormParameter_globals_));
  return BatchNormParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BatchNormParameter::ParseTableT_
    BatchNormParameter::_table_ =
        BatchNormParameter::InternalGenerateParseTable_(BatchNormParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BatchNormParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BatchNormParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.use_global_stats_ = false;
    this_._impl_.moving_average_fraction_ = 0.999f;
    this_._impl_.eps_ = 1e-05f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BatchNormParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BatchNormParameter& this_ = static_cast<const BatchNormParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BatchNormParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BatchNormParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BatchNormParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional bool use_global_stats = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        1, this_._internal_use_global_stats(), target);
  }

  // optional float moving_average_fraction = 2 [default = 0.999];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_moving_average_fraction(), target);
  }

  // optional float eps = 3 [default = 1e-05];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_eps(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BatchNormParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BatchNormParameter::ByteSizeLong(const MessageLite& base) {
  const BatchNormParameter& this_ = static_cast<const BatchNormParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BatchNormParameter::ByteSizeLong() const {
  const BatchNormParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BatchNormParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000006U & cached_has_bits) * 5;
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 2;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BatchNormParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BatchNormParameter*>(&to_msg);
  auto& from = static_cast<const BatchNormParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BatchNormParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.use_global_stats_ = from._impl_.use_global_stats_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.moving_average_fraction_ = from._impl_.moving_average_fraction_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.eps_ = from._impl_.eps_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BatchNormParameter::InternalSwap(BatchNormParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.eps_)
      + sizeof(BatchNormParameter::_impl_.eps_)
      - PROTOBUF_FIELD_OFFSET(BatchNormParameter, _impl_.use_global_stats_)>(
          reinterpret_cast<char*>(&_impl_.use_global_stats_),
          reinterpret_cast<char*>(&other->_impl_.use_global_stats_));
}

::google::protobuf::Metadata BatchNormParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

BiasParameter::BiasParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BiasParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BiasParameter)
}
PROTOBUF_NDEBUG_INLINE BiasParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::BiasParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

BiasParameter::BiasParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const BiasParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BiasParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  BiasParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, axis_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, axis_),
           offsetof(Impl_, num_axes_) -
               offsetof(Impl_, axis_) +
               sizeof(Impl_::num_axes_));

  // @@protoc_insertion_point(copy_constructor:caffe.BiasParameter)
}
PROTOBUF_NDEBUG_INLINE BiasParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : axis_{1},
        num_axes_{1} {}

inline void BiasParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.filler_ = {};
}
BiasParameter::~BiasParameter() {
  // @@protoc_insertion_point(destructor:caffe.BiasParameter)
  SharedDtor(*this);
}
inline void BiasParameter::SharedDtor(MessageLite& self) {
  BiasParameter& this_ = static_cast<BiasParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BiasParameter_class_data_ =
        BiasParameter::InternalGenerateClassData_(BiasParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BiasParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BiasParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BiasParameter_class_data_.tc_table);
  return BiasParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BiasParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BiasParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BiasParameter_globals_));
  return BiasParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BiasParameter::ParseTableT_
    BiasParameter::_table_ =
        BiasParameter::InternalGenerateParseTable_(BiasParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BiasParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BiasParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.filler_ != nullptr);
      this_._impl_.filler_->Clear();
    }
    this_._impl_.axis_ = 1;
    this_._impl_.num_axes_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BiasParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BiasParameter& this_ = static_cast<const BiasParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BiasParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BiasParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BiasParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 axis = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 num_axes = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_num_axes(), target);
  }

  // optional .caffe.FillerParameter filler = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.filler_, this_._impl_.filler_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BiasParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BiasParameter::ByteSizeLong(const MessageLite& base) {
  const BiasParameter& this_ = static_cast<const BiasParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BiasParameter::ByteSizeLong() const {
  const BiasParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BiasParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .caffe.FillerParameter filler = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.filler_);
    }
    // optional int32 axis = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional int32 num_axes = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_num_axes());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BiasParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BiasParameter*>(&to_msg);
  auto& from = static_cast<const BiasParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BiasParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.filler_ != nullptr);
      if (_this->_impl_.filler_ == nullptr) {
        _this->_impl_.filler_ = Super_::CopyConstruct(arena, *from._impl_.filler_);
      } else {
        _this->_impl_.filler_->MergeFrom(*from._impl_.filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.num_axes_ = from._impl_.num_axes_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BiasParameter::InternalSwap(BiasParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.num_axes_)
      + sizeof(BiasParameter::_impl_.num_axes_)
      - PROTOBUF_FIELD_OFFSET(BiasParameter, _impl_.filler_)>(
          reinterpret_cast<char*>(&_impl_.filler_),
          reinterpret_cast<char*>(&other->_impl_.filler_));
}

::google::protobuf::Metadata BiasParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

BNParameter::BNParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BNParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.BNParameter)
}
PROTOBUF_NDEBUG_INLINE BNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::BNParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

BNParameter::BNParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const BNParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, BNParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  BNParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.scale_filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.scale_filler_)
                 : nullptr;
  _impl_.shift_filler_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.shift_filler_)
                 : nullptr;
  _impl_.bn_mode_ = from._impl_.bn_mode_;

  // @@protoc_insertion_point(copy_constructor:caffe.BNParameter)
}
PROTOBUF_NDEBUG_INLINE BNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void BNParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, scale_filler_),
           0,
           offsetof(Impl_, bn_mode_) -
               offsetof(Impl_, scale_filler_) +
               sizeof(Impl_::bn_mode_));
}
BNParameter::~BNParameter() {
  // @@protoc_insertion_point(destructor:caffe.BNParameter)
  SharedDtor(*this);
}
inline void BNParameter::SharedDtor(MessageLite& self) {
  BNParameter& this_ = static_cast<BNParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.scale_filler_;
  delete this_._impl_.shift_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull BNParameter_class_data_ =
        BNParameter::InternalGenerateClassData_(BNParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BNParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(BNParameter_class_data_.tc_table);
  return BNParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
BNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&BNParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&BNParameter_globals_));
  return BNParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const BNParameter::ParseTableT_
    BNParameter::_table_ =
        BNParameter::InternalGenerateParseTable_(BNParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void BNParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.BNParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.scale_filler_ != nullptr);
      this_._impl_.scale_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.shift_filler_ != nullptr);
      this_._impl_.shift_filler_->Clear();
    }
  }
  this_._impl_.bn_mode_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL BNParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const BNParameter& this_ = static_cast<const BNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL BNParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const BNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.BNParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.FillerParameter scale_filler = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1, *this_._impl_.scale_filler_, this_._impl_.scale_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter shift_filler = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *this_._impl_.shift_filler_, this_._impl_.shift_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.BNParameter.BNMode bn_mode = 3 [default = LEARN];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        3, this_._internal_bn_mode(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.BNParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t BNParameter::ByteSizeLong(const MessageLite& base) {
  const BNParameter& this_ = static_cast<const BNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t BNParameter::ByteSizeLong() const {
  const BNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.BNParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .caffe.FillerParameter scale_filler = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.scale_filler_);
    }
    // optional .caffe.FillerParameter shift_filler = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.shift_filler_);
    }
    // optional .caffe.BNParameter.BNMode bn_mode = 3 [default = LEARN];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_bn_mode());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void BNParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<BNParameter*>(&to_msg);
  auto& from = static_cast<const BNParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.BNParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.scale_filler_ != nullptr);
      if (_this->_impl_.scale_filler_ == nullptr) {
        _this->_impl_.scale_filler_ = Super_::CopyConstruct(arena, *from._impl_.scale_filler_);
      } else {
        _this->_impl_.scale_filler_->MergeFrom(*from._impl_.scale_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.shift_filler_ != nullptr);
      if (_this->_impl_.shift_filler_ == nullptr) {
        _this->_impl_.shift_filler_ = Super_::CopyConstruct(arena, *from._impl_.shift_filler_);
      } else {
        _this->_impl_.shift_filler_->MergeFrom(*from._impl_.shift_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.bn_mode_ = from._impl_.bn_mode_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void BNParameter::InternalSwap(BNParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.bn_mode_)
      + sizeof(BNParameter::_impl_.bn_mode_)
      - PROTOBUF_FIELD_OFFSET(BNParameter, _impl_.scale_filler_)>(
          reinterpret_cast<char*>(&_impl_.scale_filler_),
          reinterpret_cast<char*>(&other->_impl_.scale_filler_));
}

::google::protobuf::Metadata BNParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ContrastiveLossParameter::ContrastiveLossParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ContrastiveLossParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ContrastiveLossParameter)
}
ContrastiveLossParameter::ContrastiveLossParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ContrastiveLossParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ContrastiveLossParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ContrastiveLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : margin_{1} {}

inline void ContrastiveLossParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.legacy_version_ = {};
}
ContrastiveLossParameter::~ContrastiveLossParameter() {
  // @@protoc_insertion_point(destructor:caffe.ContrastiveLossParameter)
  SharedDtor(*this);
}
inline void ContrastiveLossParameter::SharedDtor(MessageLite& self) {
  ContrastiveLossParameter& this_ = static_cast<ContrastiveLossParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ContrastiveLossParameter_class_data_ =
        ContrastiveLossParameter::InternalGenerateClassData_(ContrastiveLossParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ContrastiveLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ContrastiveLossParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ContrastiveLossParameter_class_data_.tc_table);
  return ContrastiveLossParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ContrastiveLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ContrastiveLossParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ContrastiveLossParameter_globals_));
  return ContrastiveLossParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ContrastiveLossParameter::ParseTableT_
    ContrastiveLossParameter::_table_ =
        ContrastiveLossParameter::InternalGenerateParseTable_(ContrastiveLossParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ContrastiveLossParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ContrastiveLossParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.legacy_version_ = false;
    this_._impl_.margin_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ContrastiveLossParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ContrastiveLossParameter& this_ = static_cast<const ContrastiveLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ContrastiveLossParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ContrastiveLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ContrastiveLossParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float margin = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_margin(), target);
  }

  // optional bool legacy_version = 2 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_legacy_version(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ContrastiveLossParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ContrastiveLossParameter::ByteSizeLong(const MessageLite& base) {
  const ContrastiveLossParameter& this_ = static_cast<const ContrastiveLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ContrastiveLossParameter::ByteSizeLong() const {
  const ContrastiveLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ContrastiveLossParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000002U & cached_has_bits) * 5;
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 2;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ContrastiveLossParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ContrastiveLossParameter*>(&to_msg);
  auto& from = static_cast<const ContrastiveLossParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ContrastiveLossParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.legacy_version_ = from._impl_.legacy_version_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.margin_ = from._impl_.margin_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ContrastiveLossParameter::InternalSwap(ContrastiveLossParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.margin_)
      + sizeof(ContrastiveLossParameter::_impl_.margin_)
      - PROTOBUF_FIELD_OFFSET(ContrastiveLossParameter, _impl_.legacy_version_)>(
          reinterpret_cast<char*>(&_impl_.legacy_version_),
          reinterpret_cast<char*>(&other->_impl_.legacy_version_));
}

::google::protobuf::Metadata ContrastiveLossParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ConvolutionParameter::ConvolutionParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ConvolutionParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ConvolutionParameter)
}
PROTOBUF_NDEBUG_INLINE ConvolutionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ConvolutionParameter& from_msg)
      : _has_bits_{from._has_bits_},
        pad_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ConvolutionParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_)>()
          , arena, from.pad_
        }
        ,
        kernel_size_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ConvolutionParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_size_)>()
          , arena, from.kernel_size_
        }
        ,
        stride_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ConvolutionParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_)>()
          , arena, from.stride_
        }
        ,
        dilation_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::ConvolutionParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.dilation_)>()
          , arena, from.dilation_
        }
     {}

ConvolutionParameter::ConvolutionParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ConvolutionParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ConvolutionParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ConvolutionParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.weight_filler_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.weight_filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_output_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_output_),
           offsetof(Impl_, group_) -
               offsetof(Impl_, num_output_) +
               sizeof(Impl_::group_));

  // @@protoc_insertion_point(copy_constructor:caffe.ConvolutionParameter)
}
PROTOBUF_NDEBUG_INLINE ConvolutionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : pad_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.pad_)>()
         }
        ,
        kernel_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.kernel_size_)>()
         }
        ,
        stride_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.stride_)>()
         }
        ,
        dilation_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::ConvolutionParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::ConvolutionParameter, _impl_.dilation_)>()
         }
        ,
        axis_{1},
        bias_term_{true},
        group_{1u} {}

inline void ConvolutionParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, weight_filler_),
           0,
           offsetof(Impl_, force_nd_im2col_) -
               offsetof(Impl_, weight_filler_) +
               sizeof(Impl_::force_nd_im2col_));
}
ConvolutionParameter::~ConvolutionParameter() {
  // @@protoc_insertion_point(destructor:caffe.ConvolutionParameter)
  SharedDtor(*this);
}
inline void ConvolutionParameter::SharedDtor(MessageLite& self) {
  ConvolutionParameter& this_ = static_cast<ConvolutionParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.weight_filler_;
  delete this_._impl_.bias_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ConvolutionParameter_class_data_ =
        ConvolutionParameter::InternalGenerateClassData_(ConvolutionParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ConvolutionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ConvolutionParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ConvolutionParameter_class_data_.tc_table);
  return ConvolutionParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ConvolutionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ConvolutionParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ConvolutionParameter_globals_));
  return ConvolutionParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ConvolutionParameter::ParseTableT_
    ConvolutionParameter::_table_ =
        ConvolutionParameter::InternalGenerateParseTable_(ConvolutionParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ConvolutionParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ConvolutionParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.pad_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.kernel_size_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.stride_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.dilation_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.weight_filler_ != nullptr);
      this_._impl_.weight_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000c0U)) {
    ::memset(&this_._impl_.num_output_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.pad_h_) -
                 reinterpret_cast<char*>(&this_._impl_.num_output_)) +
                 sizeof(_impl_.pad_h_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    ::memset(&this_._impl_.pad_w_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.force_nd_im2col_) -
                 reinterpret_cast<char*>(&this_._impl_.pad_w_)) +
                 sizeof(_impl_.force_nd_im2col_));
    this_._impl_.axis_ = 1;
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00030000U)) {
    this_._impl_.bias_term_ = true;
    this_._impl_.group_ = 1u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ConvolutionParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ConvolutionParameter& this_ = static_cast<const ConvolutionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ConvolutionParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ConvolutionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ConvolutionParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_output = 1;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_output(), target);
  }

  // optional bool bias_term = 2 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_bias_term(), target);
  }

  // repeated uint32 pad = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_pad_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          3, this_._internal_pad().Get(i), target);
    }
  }

  // repeated uint32 kernel_size = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_kernel_size_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          4, this_._internal_kernel_size().Get(i), target);
    }
  }

  // optional uint32 group = 5 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        5, this_._internal_group(), target);
  }

  // repeated uint32 stride = 6;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_stride_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          6, this_._internal_stride().Get(i), target);
    }
  }

  // optional .caffe.FillerParameter weight_filler = 7;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        7, *this_._impl_.weight_filler_, this_._impl_.weight_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter bias_filler = 8;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        8, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  // optional uint32 pad_h = 9 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_pad_h(), target);
  }

  // optional uint32 pad_w = 10 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_pad_w(), target);
  }

  // optional uint32 kernel_h = 11;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        11, this_._internal_kernel_h(), target);
  }

  // optional uint32 kernel_w = 12;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        12, this_._internal_kernel_w(), target);
  }

  // optional uint32 stride_h = 13;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        13, this_._internal_stride_h(), target);
  }

  // optional uint32 stride_w = 14;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        14, this_._internal_stride_w(), target);
  }

  // optional .caffe.ConvolutionParameter.Engine engine = 15 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        15, this_._internal_engine(), target);
  }

  // optional int32 axis = 16 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        16, this_._internal_axis(), target);
  }

  // optional bool force_nd_im2col = 17 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        17, this_._internal_force_nd_im2col(), target);
  }

  // repeated uint32 dilation = 18;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (int i = 0, n = this_._internal_dilation_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          18, this_._internal_dilation().Get(i), target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ConvolutionParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ConvolutionParameter::ByteSizeLong(const MessageLite& base) {
  const ConvolutionParameter& this_ = static_cast<const ConvolutionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ConvolutionParameter::ByteSizeLong() const {
  const ConvolutionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ConvolutionParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00004000U & cached_has_bits) * 3;
  total_size += static_cast<bool>(0x00010000U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated uint32 pad = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_pad());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_pad_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 kernel_size = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_kernel_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_kernel_size_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 stride = 6;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_stride());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_stride_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 dilation = 18;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_dilation());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_dilation_size());
      total_size += tag_size + data_size;
    }
    // optional .caffe.FillerParameter weight_filler = 7;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.weight_filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 8;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional uint32 num_output = 1;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_output());
    }
    // optional uint32 pad_h = 9 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad_h());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000bf00U)) {
    // optional uint32 pad_w = 10 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad_w());
    }
    // optional uint32 kernel_h = 11;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernel_h());
    }
    // optional uint32 kernel_w = 12;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernel_w());
    }
    // optional uint32 stride_h = 13;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride_h());
    }
    // optional uint32 stride_w = 14;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride_w());
    }
    // optional .caffe.ConvolutionParameter.Engine engine = 15 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
    // optional int32 axis = 16 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_axis());
    }
  }
   {
    // optional uint32 group = 5 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_group());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ConvolutionParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ConvolutionParameter*>(&to_msg);
  auto& from = static_cast<const ConvolutionParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ConvolutionParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_pad()->MergeFrom(from._internal_pad());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_kernel_size()->MergeFrom(from._internal_kernel_size());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_stride()->MergeFrom(from._internal_stride());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_dilation()->MergeFrom(from._internal_dilation());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.weight_filler_ != nullptr);
      if (_this->_impl_.weight_filler_ == nullptr) {
        _this->_impl_.weight_filler_ = Super_::CopyConstruct(arena, *from._impl_.weight_filler_);
      } else {
        _this->_impl_.weight_filler_->MergeFrom(*from._impl_.weight_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.num_output_ = from._impl_.num_output_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.pad_h_ = from._impl_.pad_h_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.pad_w_ = from._impl_.pad_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.kernel_h_ = from._impl_.kernel_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.kernel_w_ = from._impl_.kernel_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.stride_h_ = from._impl_.stride_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.stride_w_ = from._impl_.stride_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      _this->_impl_.force_nd_im2col_ = from._impl_.force_nd_im2col_;
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00030000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      _this->_impl_.bias_term_ = from._impl_.bias_term_;
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      _this->_impl_.group_ = from._impl_.group_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ConvolutionParameter::InternalSwap(ConvolutionParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.pad_.InternalSwap(&other->_impl_.pad_);
  _impl_.kernel_size_.InternalSwap(&other->_impl_.kernel_size_);
  _impl_.stride_.InternalSwap(&other->_impl_.stride_);
  _impl_.dilation_.InternalSwap(&other->_impl_.dilation_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.group_)
      + sizeof(ConvolutionParameter::_impl_.group_)
      - PROTOBUF_FIELD_OFFSET(ConvolutionParameter, _impl_.weight_filler_)>(
          reinterpret_cast<char*>(&_impl_.weight_filler_),
          reinterpret_cast<char*>(&other->_impl_.weight_filler_));
}

::google::protobuf::Metadata ConvolutionParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

CropParameter::CropParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, CropParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.CropParameter)
}
PROTOBUF_NDEBUG_INLINE CropParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::CropParameter& from_msg)
      : _has_bits_{from._has_bits_},
        offset_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::CropParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_.offset_)>()
          , arena, from.offset_
        }
     {}

CropParameter::CropParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const CropParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, CropParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  CropParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  _impl_.axis_ = from._impl_.axis_;

  // @@protoc_insertion_point(copy_constructor:caffe.CropParameter)
}
PROTOBUF_NDEBUG_INLINE CropParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : offset_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::CropParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::CropParameter, _impl_.offset_)>()
         }
        ,
        axis_{2} {}

inline void CropParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
CropParameter::~CropParameter() {
  // @@protoc_insertion_point(destructor:caffe.CropParameter)
  SharedDtor(*this);
}
inline void CropParameter::SharedDtor(MessageLite& self) {
  CropParameter& this_ = static_cast<CropParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull CropParameter_class_data_ =
        CropParameter::InternalGenerateClassData_(CropParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
CropParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&CropParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(CropParameter_class_data_.tc_table);
  return CropParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
CropParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&CropParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&CropParameter_globals_));
  return CropParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const CropParameter::ParseTableT_
    CropParameter::_table_ =
        CropParameter::InternalGenerateParseTable_(CropParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void CropParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.CropParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.offset_.Clear();
    }
    this_._impl_.axis_ = 2;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL CropParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const CropParameter& this_ = static_cast<const CropParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL CropParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const CropParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.CropParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 axis = 1 [default = 2];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_axis(), target);
  }

  // repeated uint32 offset = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_offset_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          2, this_._internal_offset().Get(i), target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.CropParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t CropParameter::ByteSizeLong(const MessageLite& base) {
  const CropParameter& this_ = static_cast<const CropParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t CropParameter::ByteSizeLong() const {
  const CropParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.CropParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // repeated uint32 offset = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_offset());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_offset_size());
      total_size += tag_size + data_size;
    }
    // optional int32 axis = 1 [default = 2];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void CropParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<CropParameter*>(&to_msg);
  auto& from = static_cast<const CropParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.CropParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_offset()->MergeFrom(from._internal_offset());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void CropParameter::InternalSwap(CropParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.offset_.InternalSwap(&other->_impl_.offset_);
  swap(_impl_.axis_, other->_impl_.axis_);
}

::google::protobuf::Metadata CropParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

DataParameter::DataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.DataParameter)
}
PROTOBUF_NDEBUG_INLINE DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::DataParameter& from_msg)
      : _has_bits_{from._has_bits_},
        source_(arena, from.source_),
        mean_file_(arena, from.mean_file_) {}

DataParameter::DataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const DataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DataParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  DataParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, batch_size_),
           offsetof(Impl_, prefetch_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::prefetch_));

  // @@protoc_insertion_point(copy_constructor:caffe.DataParameter)
}
PROTOBUF_NDEBUG_INLINE DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : source_(arena),
        mean_file_(arena),
        scale_{1},
        prefetch_{4u} {}

inline void DataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           0,
           offsetof(Impl_, backend_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::backend_));
}
DataParameter::~DataParameter() {
  // @@protoc_insertion_point(destructor:caffe.DataParameter)
  SharedDtor(*this);
}
inline void DataParameter::SharedDtor(MessageLite& self) {
  DataParameter& this_ = static_cast<DataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.source_.Destroy();
  this_._impl_.mean_file_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull DataParameter_class_data_ =
        DataParameter::InternalGenerateClassData_(DataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(DataParameter_class_data_.tc_table);
  return DataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DataParameter_globals_));
  return DataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const DataParameter::ParseTableT_
    DataParameter::_table_ =
        DataParameter::InternalGenerateParseTable_(DataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void DataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.DataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.source_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.mean_file_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000fcU)) {
    ::memset(&this_._impl_.batch_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.backend_) -
                 reinterpret_cast<char*>(&this_._impl_.batch_size_)) +
                 sizeof(_impl_.backend_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000300U)) {
    this_._impl_.scale_ = 1;
    this_._impl_.prefetch_ = 4u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL DataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const DataParameter& this_ = static_cast<const DataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL DataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const DataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.DataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string source = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional string mean_file = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_mean_file();
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // optional uint32 batch_size = 4;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_batch_size(), target);
  }

  // optional uint32 crop_size = 5 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        5, this_._internal_crop_size(), target);
  }

  // optional bool mirror = 6 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        6, this_._internal_mirror(), target);
  }

  // optional uint32 rand_skip = 7 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_rand_skip(), target);
  }

  // optional .caffe.DataParameter.DB backend = 8 [default = LEVELDB];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        8, this_._internal_backend(), target);
  }

  // optional bool force_encoded_color = 9 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        9, this_._internal_force_encoded_color(), target);
  }

  // optional uint32 prefetch = 10 [default = 4];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_prefetch(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.DataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t DataParameter::ByteSizeLong(const MessageLite& base) {
  const DataParameter& this_ = static_cast<const DataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t DataParameter::ByteSizeLong() const {
  const DataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.DataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000100U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000060U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000009fU)) {
    // optional string source = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
    // optional string mean_file = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_mean_file());
    }
    // optional uint32 batch_size = 4;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_batch_size());
    }
    // optional uint32 crop_size = 5 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_crop_size());
    }
    // optional uint32 rand_skip = 7 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_rand_skip());
    }
    // optional .caffe.DataParameter.DB backend = 8 [default = LEVELDB];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_backend());
    }
  }
   {
    // optional uint32 prefetch = 10 [default = 4];
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_prefetch());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void DataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<DataParameter*>(&to_msg);
  auto& from = static_cast<const DataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.DataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_source(from._internal_source());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_mean_file(from._internal_mean_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.batch_size_ = from._impl_.batch_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.crop_size_ = from._impl_.crop_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.rand_skip_ = from._impl_.rand_skip_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.mirror_ = from._impl_.mirror_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.force_encoded_color_ = from._impl_.force_encoded_color_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.backend_ = from._impl_.backend_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000300U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.prefetch_ = from._impl_.prefetch_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void DataParameter::InternalSwap(DataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mean_file_, &other->_impl_.mean_file_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.prefetch_)
      + sizeof(DataParameter::_impl_.prefetch_)
      - PROTOBUF_FIELD_OFFSET(DataParameter, _impl_.batch_size_)>(
          reinterpret_cast<char*>(&_impl_.batch_size_),
          reinterpret_cast<char*>(&other->_impl_.batch_size_));
}

::google::protobuf::Metadata DataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

NonMaximumSuppressionParameter::NonMaximumSuppressionParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NonMaximumSuppressionParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.NonMaximumSuppressionParameter)
}
NonMaximumSuppressionParameter::NonMaximumSuppressionParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const NonMaximumSuppressionParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NonMaximumSuppressionParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE NonMaximumSuppressionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : nms_threshold_{0.3f},
        eta_{1} {}

inline void NonMaximumSuppressionParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.top_k_ = {};
}
NonMaximumSuppressionParameter::~NonMaximumSuppressionParameter() {
  // @@protoc_insertion_point(destructor:caffe.NonMaximumSuppressionParameter)
  SharedDtor(*this);
}
inline void NonMaximumSuppressionParameter::SharedDtor(MessageLite& self) {
  NonMaximumSuppressionParameter& this_ = static_cast<NonMaximumSuppressionParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull NonMaximumSuppressionParameter_class_data_ =
        NonMaximumSuppressionParameter::InternalGenerateClassData_(NonMaximumSuppressionParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NonMaximumSuppressionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NonMaximumSuppressionParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(NonMaximumSuppressionParameter_class_data_.tc_table);
  return NonMaximumSuppressionParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NonMaximumSuppressionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NonMaximumSuppressionParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&NonMaximumSuppressionParameter_globals_));
  return NonMaximumSuppressionParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const NonMaximumSuppressionParameter::ParseTableT_
    NonMaximumSuppressionParameter::_table_ =
        NonMaximumSuppressionParameter::InternalGenerateParseTable_(NonMaximumSuppressionParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void NonMaximumSuppressionParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.NonMaximumSuppressionParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.top_k_ = 0;
    this_._impl_.nms_threshold_ = 0.3f;
    this_._impl_.eta_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL NonMaximumSuppressionParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const NonMaximumSuppressionParameter& this_ = static_cast<const NonMaximumSuppressionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL NonMaximumSuppressionParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const NonMaximumSuppressionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.NonMaximumSuppressionParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float nms_threshold = 1 [default = 0.3];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_nms_threshold(), target);
  }

  // optional int32 top_k = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_top_k(), target);
  }

  // optional float eta = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_eta(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.NonMaximumSuppressionParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t NonMaximumSuppressionParameter::ByteSizeLong(const MessageLite& base) {
  const NonMaximumSuppressionParameter& this_ = static_cast<const NonMaximumSuppressionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t NonMaximumSuppressionParameter::ByteSizeLong() const {
  const NonMaximumSuppressionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.NonMaximumSuppressionParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000006U & cached_has_bits) * 5;
   {
    // optional int32 top_k = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_top_k());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void NonMaximumSuppressionParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<NonMaximumSuppressionParameter*>(&to_msg);
  auto& from = static_cast<const NonMaximumSuppressionParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.NonMaximumSuppressionParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.top_k_ = from._impl_.top_k_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.nms_threshold_ = from._impl_.nms_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.eta_ = from._impl_.eta_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void NonMaximumSuppressionParameter::InternalSwap(NonMaximumSuppressionParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.eta_)
      + sizeof(NonMaximumSuppressionParameter::_impl_.eta_)
      - PROTOBUF_FIELD_OFFSET(NonMaximumSuppressionParameter, _impl_.top_k_)>(
          reinterpret_cast<char*>(&_impl_.top_k_),
          reinterpret_cast<char*>(&other->_impl_.top_k_));
}

::google::protobuf::Metadata NonMaximumSuppressionParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SaveOutputParameter::SaveOutputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SaveOutputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SaveOutputParameter)
}
PROTOBUF_NDEBUG_INLINE SaveOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::SaveOutputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        output_directory_(arena, from.output_directory_),
        output_name_prefix_(arena, from.output_name_prefix_),
        output_format_(arena, from.output_format_),
        label_map_file_(arena, from.label_map_file_),
        name_size_file_(arena, from.name_size_file_) {}

SaveOutputParameter::SaveOutputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const SaveOutputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SaveOutputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SaveOutputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.resize_param_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.resize_param_)
                 : nullptr;
  _impl_.num_test_image_ = from._impl_.num_test_image_;

  // @@protoc_insertion_point(copy_constructor:caffe.SaveOutputParameter)
}
PROTOBUF_NDEBUG_INLINE SaveOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : output_directory_(arena),
        output_name_prefix_(arena),
        output_format_(arena),
        label_map_file_(arena),
        name_size_file_(arena) {}

inline void SaveOutputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, resize_param_),
           0,
           offsetof(Impl_, num_test_image_) -
               offsetof(Impl_, resize_param_) +
               sizeof(Impl_::num_test_image_));
}
SaveOutputParameter::~SaveOutputParameter() {
  // @@protoc_insertion_point(destructor:caffe.SaveOutputParameter)
  SharedDtor(*this);
}
inline void SaveOutputParameter::SharedDtor(MessageLite& self) {
  SaveOutputParameter& this_ = static_cast<SaveOutputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.output_directory_.Destroy();
  this_._impl_.output_name_prefix_.Destroy();
  this_._impl_.output_format_.Destroy();
  this_._impl_.label_map_file_.Destroy();
  this_._impl_.name_size_file_.Destroy();
  delete this_._impl_.resize_param_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SaveOutputParameter_class_data_ =
        SaveOutputParameter::InternalGenerateClassData_(SaveOutputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SaveOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SaveOutputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SaveOutputParameter_class_data_.tc_table);
  return SaveOutputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SaveOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SaveOutputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SaveOutputParameter_globals_));
  return SaveOutputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SaveOutputParameter::ParseTableT_
    SaveOutputParameter::_table_ =
        SaveOutputParameter::InternalGenerateParseTable_(SaveOutputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SaveOutputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SaveOutputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.output_directory_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.output_name_prefix_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      this_._impl_.output_format_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      this_._impl_.label_map_file_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      this_._impl_.name_size_file_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.resize_param_ != nullptr);
      this_._impl_.resize_param_->Clear();
    }
  }
  this_._impl_.num_test_image_ = 0u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SaveOutputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SaveOutputParameter& this_ = static_cast<const SaveOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SaveOutputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SaveOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SaveOutputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string output_directory = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_output_directory();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional string output_name_prefix = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_output_name_prefix();
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  // optional string output_format = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    const ::std::string& _s = this_._internal_output_format();
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // optional string label_map_file = 4;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    const ::std::string& _s = this_._internal_label_map_file();
    target = stream->WriteStringMaybeAliased(4, _s, target);
  }

  // optional string name_size_file = 5;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    const ::std::string& _s = this_._internal_name_size_file();
    target = stream->WriteStringMaybeAliased(5, _s, target);
  }

  // optional uint32 num_test_image = 6;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        6, this_._internal_num_test_image(), target);
  }

  // optional .caffe.ResizeParameter resize_param = 7;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        7, *this_._impl_.resize_param_, this_._impl_.resize_param_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SaveOutputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SaveOutputParameter::ByteSizeLong(const MessageLite& base) {
  const SaveOutputParameter& this_ = static_cast<const SaveOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SaveOutputParameter::ByteSizeLong() const {
  const SaveOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SaveOutputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    // optional string output_directory = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_output_directory());
    }
    // optional string output_name_prefix = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_output_name_prefix());
    }
    // optional string output_format = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_output_format());
    }
    // optional string label_map_file = 4;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_label_map_file());
    }
    // optional string name_size_file = 5;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name_size_file());
    }
    // optional .caffe.ResizeParameter resize_param = 7;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.resize_param_);
    }
    // optional uint32 num_test_image = 6;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_test_image());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SaveOutputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SaveOutputParameter*>(&to_msg);
  auto& from = static_cast<const SaveOutputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SaveOutputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000007fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_output_directory(from._internal_output_directory());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_output_name_prefix(from._internal_output_name_prefix());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_set_output_format(from._internal_output_format());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_set_label_map_file(from._internal_label_map_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_set_name_size_file(from._internal_name_size_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.resize_param_ != nullptr);
      if (_this->_impl_.resize_param_ == nullptr) {
        _this->_impl_.resize_param_ = Super_::CopyConstruct(arena, *from._impl_.resize_param_);
      } else {
        _this->_impl_.resize_param_->MergeFrom(*from._impl_.resize_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.num_test_image_ = from._impl_.num_test_image_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SaveOutputParameter::InternalSwap(SaveOutputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.output_directory_, &other->_impl_.output_directory_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.output_name_prefix_, &other->_impl_.output_name_prefix_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.output_format_, &other->_impl_.output_format_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.label_map_file_, &other->_impl_.label_map_file_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_size_file_, &other->_impl_.name_size_file_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.num_test_image_)
      + sizeof(SaveOutputParameter::_impl_.num_test_image_)
      - PROTOBUF_FIELD_OFFSET(SaveOutputParameter, _impl_.resize_param_)>(
          reinterpret_cast<char*>(&_impl_.resize_param_),
          reinterpret_cast<char*>(&other->_impl_.resize_param_));
}

::google::protobuf::Metadata SaveOutputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

DetectionOutputParameter::DetectionOutputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DetectionOutputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.DetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::DetectionOutputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        save_file_(arena, from.save_file_) {}

DetectionOutputParameter::DetectionOutputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const DetectionOutputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DetectionOutputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  DetectionOutputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.nms_param_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.nms_param_)
                 : nullptr;
  _impl_.save_output_param_ = (CheckHasBit(cached_has_bits, 0x00000004U))
                 ? Super_::CopyConstruct(arena, *from._impl_.save_output_param_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_classes_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_classes_),
           offsetof(Impl_, code_type_) -
               offsetof(Impl_, num_classes_) +
               sizeof(Impl_::code_type_));

  // @@protoc_insertion_point(copy_constructor:caffe.DetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : save_file_(arena),
        keep_top_k_{-1},
        share_location_{true},
        code_type_{static_cast< ::caffe::PriorBoxParameter_CodeType >(1)} {}

inline void DetectionOutputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, nms_param_),
           0,
           offsetof(Impl_, visualize_threshold_) -
               offsetof(Impl_, nms_param_) +
               sizeof(Impl_::visualize_threshold_));
}
DetectionOutputParameter::~DetectionOutputParameter() {
  // @@protoc_insertion_point(destructor:caffe.DetectionOutputParameter)
  SharedDtor(*this);
}
inline void DetectionOutputParameter::SharedDtor(MessageLite& self) {
  DetectionOutputParameter& this_ = static_cast<DetectionOutputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.save_file_.Destroy();
  delete this_._impl_.nms_param_;
  delete this_._impl_.save_output_param_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull DetectionOutputParameter_class_data_ =
        DetectionOutputParameter::InternalGenerateClassData_(DetectionOutputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DetectionOutputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(DetectionOutputParameter_class_data_.tc_table);
  return DetectionOutputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DetectionOutputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DetectionOutputParameter_globals_));
  return DetectionOutputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const DetectionOutputParameter::ParseTableT_
    DetectionOutputParameter::_table_ =
        DetectionOutputParameter::InternalGenerateParseTable_(DetectionOutputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void DetectionOutputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.DetectionOutputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.save_file_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.nms_param_ != nullptr);
      this_._impl_.nms_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(this_._impl_.save_output_param_ != nullptr);
      this_._impl_.save_output_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000f8U)) {
    ::memset(&this_._impl_.num_classes_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.visualize_) -
                 reinterpret_cast<char*>(&this_._impl_.num_classes_)) +
                 sizeof(_impl_.visualize_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    this_._impl_.visualize_threshold_ = 0;
    this_._impl_.keep_top_k_ = -1;
    this_._impl_.share_location_ = true;
    this_._impl_.code_type_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL DetectionOutputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const DetectionOutputParameter& this_ = static_cast<const DetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL DetectionOutputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const DetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.DetectionOutputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_classes = 1;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_classes(), target);
  }

  // optional bool share_location = 2 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_share_location(), target);
  }

  // optional int32 background_label_id = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_background_label_id(), target);
  }

  // optional .caffe.NonMaximumSuppressionParameter nms_param = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        4, *this_._impl_.nms_param_, this_._impl_.nms_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SaveOutputParameter save_output_param = 5;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.save_output_param_, this_._impl_.save_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PriorBoxParameter.CodeType code_type = 6 [default = CORNER];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        6, this_._internal_code_type(), target);
  }

  // optional int32 keep_top_k = 7 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<7>(
            stream, this_._internal_keep_top_k(), target);
  }

  // optional bool variance_encoded_in_target = 8 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        8, this_._internal_variance_encoded_in_target(), target);
  }

  // optional float confidence_threshold = 9;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        9, this_._internal_confidence_threshold(), target);
  }

  // optional bool visualize = 10 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        10, this_._internal_visualize(), target);
  }

  // optional float visualize_threshold = 11;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        11, this_._internal_visualize_threshold(), target);
  }

  // optional string save_file = 12;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_save_file();
    target = stream->WriteStringMaybeAliased(12, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.DetectionOutputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t DetectionOutputParameter::ByteSizeLong(const MessageLite& base) {
  const DetectionOutputParameter& this_ = static_cast<const DetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t DetectionOutputParameter::ByteSizeLong() const {
  const DetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.DetectionOutputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000120U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x000004c0U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    // optional string save_file = 12;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_save_file());
    }
    // optional .caffe.NonMaximumSuppressionParameter nms_param = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.nms_param_);
    }
    // optional .caffe.SaveOutputParameter save_output_param = 5;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.save_output_param_);
    }
    // optional uint32 num_classes = 1;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_classes());
    }
    // optional int32 background_label_id = 3 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_background_label_id());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000a00U)) {
    // optional int32 keep_top_k = 7 [default = -1];
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_keep_top_k());
    }
    // optional .caffe.PriorBoxParameter.CodeType code_type = 6 [default = CORNER];
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_code_type());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void DetectionOutputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<DetectionOutputParameter*>(&to_msg);
  auto& from = static_cast<const DetectionOutputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.DetectionOutputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_save_file(from._internal_save_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.nms_param_ != nullptr);
      if (_this->_impl_.nms_param_ == nullptr) {
        _this->_impl_.nms_param_ = Super_::CopyConstruct(arena, *from._impl_.nms_param_);
      } else {
        _this->_impl_.nms_param_->MergeFrom(*from._impl_.nms_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ABSL_DCHECK(from._impl_.save_output_param_ != nullptr);
      if (_this->_impl_.save_output_param_ == nullptr) {
        _this->_impl_.save_output_param_ = Super_::CopyConstruct(arena, *from._impl_.save_output_param_);
      } else {
        _this->_impl_.save_output_param_->MergeFrom(*from._impl_.save_output_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.num_classes_ = from._impl_.num_classes_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.background_label_id_ = from._impl_.background_label_id_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.confidence_threshold_ = from._impl_.confidence_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.variance_encoded_in_target_ = from._impl_.variance_encoded_in_target_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.visualize_ = from._impl_.visualize_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.visualize_threshold_ = from._impl_.visualize_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.keep_top_k_ = from._impl_.keep_top_k_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.share_location_ = from._impl_.share_location_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.code_type_ = from._impl_.code_type_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void DetectionOutputParameter::InternalSwap(DetectionOutputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.save_file_, &other->_impl_.save_file_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.code_type_)
      + sizeof(DetectionOutputParameter::_impl_.code_type_)
      - PROTOBUF_FIELD_OFFSET(DetectionOutputParameter, _impl_.nms_param_)>(
          reinterpret_cast<char*>(&_impl_.nms_param_),
          reinterpret_cast<char*>(&other->_impl_.nms_param_));
}

::google::protobuf::Metadata DetectionOutputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

YoloDetectionOutputParameter::YoloDetectionOutputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, YoloDetectionOutputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.YoloDetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE YoloDetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::YoloDetectionOutputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        biases_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::YoloDetectionOutputParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.biases_)>()
          , arena, from.biases_
        }
        ,
        label_map_file_(arena, from.label_map_file_) {}

YoloDetectionOutputParameter::YoloDetectionOutputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const YoloDetectionOutputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, YoloDetectionOutputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  YoloDetectionOutputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, side_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, side_),
           offsetof(Impl_, nms_threshold_) -
               offsetof(Impl_, side_) +
               sizeof(Impl_::nms_threshold_));

  // @@protoc_insertion_point(copy_constructor:caffe.YoloDetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE YoloDetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : biases_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::YoloDetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::YoloDetectionOutputParameter, _impl_.biases_)>()
         }
        ,
        label_map_file_(arena),
        side_{13u},
        num_classes_{20u},
        num_box_{5u},
        coords_{4u},
        confidence_threshold_{0.01f},
        nms_threshold_{0.45f} {}

inline void YoloDetectionOutputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
YoloDetectionOutputParameter::~YoloDetectionOutputParameter() {
  // @@protoc_insertion_point(destructor:caffe.YoloDetectionOutputParameter)
  SharedDtor(*this);
}
inline void YoloDetectionOutputParameter::SharedDtor(MessageLite& self) {
  YoloDetectionOutputParameter& this_ = static_cast<YoloDetectionOutputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.label_map_file_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull YoloDetectionOutputParameter_class_data_ =
        YoloDetectionOutputParameter::InternalGenerateClassData_(YoloDetectionOutputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
YoloDetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&YoloDetectionOutputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(YoloDetectionOutputParameter_class_data_.tc_table);
  return YoloDetectionOutputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
YoloDetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&YoloDetectionOutputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&YoloDetectionOutputParameter_globals_));
  return YoloDetectionOutputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const YoloDetectionOutputParameter::ParseTableT_
    YoloDetectionOutputParameter::_table_ =
        YoloDetectionOutputParameter::InternalGenerateParseTable_(YoloDetectionOutputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void YoloDetectionOutputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.YoloDetectionOutputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.biases_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.label_map_file_.ClearNonDefaultToEmpty();
    }
    this_._impl_.side_ = 13u;
    this_._impl_.num_classes_ = 20u;
    this_._impl_.num_box_ = 5u;
    this_._impl_.coords_ = 4u;
    this_._impl_.confidence_threshold_ = 0.01f;
    this_._impl_.nms_threshold_ = 0.45f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL YoloDetectionOutputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const YoloDetectionOutputParameter& this_ = static_cast<const YoloDetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL YoloDetectionOutputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const YoloDetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.YoloDetectionOutputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 side = 1 [default = 13];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_side(), target);
  }

  // optional uint32 num_classes = 2 [default = 20];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_num_classes(), target);
  }

  // optional uint32 num_box = 3 [default = 5];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_num_box(), target);
  }

  // optional uint32 coords = 4 [default = 4];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_coords(), target);
  }

  // optional float confidence_threshold = 5 [default = 0.01];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        5, this_._internal_confidence_threshold(), target);
  }

  // optional float nms_threshold = 6 [default = 0.45];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        6, this_._internal_nms_threshold(), target);
  }

  // repeated float biases = 7;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_biases_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          7, this_._internal_biases().Get(i), target);
    }
  }

  // optional string label_map_file = 8;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_label_map_file();
    target = stream->WriteStringMaybeAliased(8, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.YoloDetectionOutputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t YoloDetectionOutputParameter::ByteSizeLong(const MessageLite& base) {
  const YoloDetectionOutputParameter& this_ = static_cast<const YoloDetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t YoloDetectionOutputParameter::ByteSizeLong() const {
  const YoloDetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.YoloDetectionOutputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x000000c0U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // repeated float biases = 7;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_biases_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_biases_size());
      total_size += tag_size + data_size;
    }
    // optional string label_map_file = 8;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_label_map_file());
    }
    // optional uint32 side = 1 [default = 13];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_side());
    }
    // optional uint32 num_classes = 2 [default = 20];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_classes());
    }
    // optional uint32 num_box = 3 [default = 5];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_box());
    }
    // optional uint32 coords = 4 [default = 4];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_coords());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void YoloDetectionOutputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<YoloDetectionOutputParameter*>(&to_msg);
  auto& from = static_cast<const YoloDetectionOutputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.YoloDetectionOutputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_biases()->MergeFrom(from._internal_biases());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_label_map_file(from._internal_label_map_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.side_ = from._impl_.side_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.num_classes_ = from._impl_.num_classes_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.num_box_ = from._impl_.num_box_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.coords_ = from._impl_.coords_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.confidence_threshold_ = from._impl_.confidence_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.nms_threshold_ = from._impl_.nms_threshold_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void YoloDetectionOutputParameter::InternalSwap(YoloDetectionOutputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.biases_.InternalSwap(&other->_impl_.biases_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.label_map_file_, &other->_impl_.label_map_file_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.nms_threshold_)
      + sizeof(YoloDetectionOutputParameter::_impl_.nms_threshold_)
      - PROTOBUF_FIELD_OFFSET(YoloDetectionOutputParameter, _impl_.side_)>(
          reinterpret_cast<char*>(&_impl_.side_),
          reinterpret_cast<char*>(&other->_impl_.side_));
}

::google::protobuf::Metadata YoloDetectionOutputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

Yolov3DetectionOutputParameter::Yolov3DetectionOutputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, Yolov3DetectionOutputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.Yolov3DetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE Yolov3DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::Yolov3DetectionOutputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        biases_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::Yolov3DetectionOutputParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.biases_)>()
          , arena, from.biases_
        }
        ,
        anchors_scale_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::Yolov3DetectionOutputParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.anchors_scale_)>()
          , arena, from.anchors_scale_
        }
        ,
        mask_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::Yolov3DetectionOutputParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.mask_)>()
          , arena, from.mask_
        }
     {}

Yolov3DetectionOutputParameter::Yolov3DetectionOutputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const Yolov3DetectionOutputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, Yolov3DetectionOutputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  Yolov3DetectionOutputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_classes_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_classes_),
           offsetof(Impl_, mask_group_num_) -
               offsetof(Impl_, num_classes_) +
               sizeof(Impl_::mask_group_num_));

  // @@protoc_insertion_point(copy_constructor:caffe.Yolov3DetectionOutputParameter)
}
PROTOBUF_NDEBUG_INLINE Yolov3DetectionOutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : biases_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.biases_)>()
         }
        ,
        anchors_scale_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.anchors_scale_)>()
         }
        ,
        mask_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::Yolov3DetectionOutputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::Yolov3DetectionOutputParameter, _impl_.mask_)>()
         }
        ,
        num_classes_{20u},
        num_box_{3u},
        confidence_threshold_{0.01f},
        nms_threshold_{0.45f},
        mask_group_num_{2u} {}

inline void Yolov3DetectionOutputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
Yolov3DetectionOutputParameter::~Yolov3DetectionOutputParameter() {
  // @@protoc_insertion_point(destructor:caffe.Yolov3DetectionOutputParameter)
  SharedDtor(*this);
}
inline void Yolov3DetectionOutputParameter::SharedDtor(MessageLite& self) {
  Yolov3DetectionOutputParameter& this_ = static_cast<Yolov3DetectionOutputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull Yolov3DetectionOutputParameter_class_data_ =
        Yolov3DetectionOutputParameter::InternalGenerateClassData_(Yolov3DetectionOutputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Yolov3DetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&Yolov3DetectionOutputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(Yolov3DetectionOutputParameter_class_data_.tc_table);
  return Yolov3DetectionOutputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
Yolov3DetectionOutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&Yolov3DetectionOutputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&Yolov3DetectionOutputParameter_globals_));
  return Yolov3DetectionOutputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const Yolov3DetectionOutputParameter::ParseTableT_
    Yolov3DetectionOutputParameter::_table_ =
        Yolov3DetectionOutputParameter::InternalGenerateParseTable_(Yolov3DetectionOutputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void Yolov3DetectionOutputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.Yolov3DetectionOutputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.biases_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.anchors_scale_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.mask_.Clear();
    }
    this_._impl_.num_classes_ = 20u;
    this_._impl_.num_box_ = 3u;
    this_._impl_.confidence_threshold_ = 0.01f;
    this_._impl_.nms_threshold_ = 0.45f;
    this_._impl_.mask_group_num_ = 2u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL Yolov3DetectionOutputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const Yolov3DetectionOutputParameter& this_ = static_cast<const Yolov3DetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL Yolov3DetectionOutputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const Yolov3DetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.Yolov3DetectionOutputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_classes = 1 [default = 20];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_classes(), target);
  }

  // optional uint32 num_box = 2 [default = 3];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_num_box(), target);
  }

  // optional float confidence_threshold = 3 [default = 0.01];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_confidence_threshold(), target);
  }

  // optional float nms_threshold = 4 [default = 0.45];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        4, this_._internal_nms_threshold(), target);
  }

  // repeated float biases = 5;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_biases_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          5, this_._internal_biases().Get(i), target);
    }
  }

  // repeated uint32 anchors_scale = 6;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_anchors_scale_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          6, this_._internal_anchors_scale().Get(i), target);
    }
  }

  // optional uint32 mask_group_num = 7 [default = 2];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_mask_group_num(), target);
  }

  // repeated uint32 mask = 8;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_mask_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          8, this_._internal_mask().Get(i), target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.Yolov3DetectionOutputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t Yolov3DetectionOutputParameter::ByteSizeLong(const MessageLite& base) {
  const Yolov3DetectionOutputParameter& this_ = static_cast<const Yolov3DetectionOutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t Yolov3DetectionOutputParameter::ByteSizeLong() const {
  const Yolov3DetectionOutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.Yolov3DetectionOutputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000060U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x0000009fU)) {
    // repeated float biases = 5;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_biases_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_biases_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 anchors_scale = 6;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_anchors_scale());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_anchors_scale_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 mask = 8;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_mask());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_mask_size());
      total_size += tag_size + data_size;
    }
    // optional uint32 num_classes = 1 [default = 20];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_classes());
    }
    // optional uint32 num_box = 2 [default = 3];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_box());
    }
    // optional uint32 mask_group_num = 7 [default = 2];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_mask_group_num());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void Yolov3DetectionOutputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<Yolov3DetectionOutputParameter*>(&to_msg);
  auto& from = static_cast<const Yolov3DetectionOutputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.Yolov3DetectionOutputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_biases()->MergeFrom(from._internal_biases());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_anchors_scale()->MergeFrom(from._internal_anchors_scale());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_mask()->MergeFrom(from._internal_mask());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.num_classes_ = from._impl_.num_classes_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.num_box_ = from._impl_.num_box_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.confidence_threshold_ = from._impl_.confidence_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.nms_threshold_ = from._impl_.nms_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.mask_group_num_ = from._impl_.mask_group_num_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void Yolov3DetectionOutputParameter::InternalSwap(Yolov3DetectionOutputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.biases_.InternalSwap(&other->_impl_.biases_);
  _impl_.anchors_scale_.InternalSwap(&other->_impl_.anchors_scale_);
  _impl_.mask_.InternalSwap(&other->_impl_.mask_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.mask_group_num_)
      + sizeof(Yolov3DetectionOutputParameter::_impl_.mask_group_num_)
      - PROTOBUF_FIELD_OFFSET(Yolov3DetectionOutputParameter, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::google::protobuf::Metadata Yolov3DetectionOutputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

DropoutParameter::DropoutParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DropoutParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.DropoutParameter)
}
DropoutParameter::DropoutParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DropoutParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DropoutParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE DropoutParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : dropout_ratio_{0.5f},
        scale_train_{true} {}

inline void DropoutParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
DropoutParameter::~DropoutParameter() {
  // @@protoc_insertion_point(destructor:caffe.DropoutParameter)
  SharedDtor(*this);
}
inline void DropoutParameter::SharedDtor(MessageLite& self) {
  DropoutParameter& this_ = static_cast<DropoutParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull DropoutParameter_class_data_ =
        DropoutParameter::InternalGenerateClassData_(DropoutParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DropoutParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DropoutParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(DropoutParameter_class_data_.tc_table);
  return DropoutParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DropoutParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DropoutParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DropoutParameter_globals_));
  return DropoutParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const DropoutParameter::ParseTableT_
    DropoutParameter::_table_ =
        DropoutParameter::InternalGenerateParseTable_(DropoutParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void DropoutParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.DropoutParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.dropout_ratio_ = 0.5f;
    this_._impl_.scale_train_ = true;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL DropoutParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const DropoutParameter& this_ = static_cast<const DropoutParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL DropoutParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const DropoutParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.DropoutParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float dropout_ratio = 1 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_dropout_ratio(), target);
  }

  // optional bool scale_train = 2 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_scale_train(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.DropoutParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t DropoutParameter::ByteSizeLong(const MessageLite& base) {
  const DropoutParameter& this_ = static_cast<const DropoutParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t DropoutParameter::ByteSizeLong() const {
  const DropoutParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.DropoutParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
  total_size += static_cast<bool>(0x00000002U & cached_has_bits) * 2;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void DropoutParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<DropoutParameter*>(&to_msg);
  auto& from = static_cast<const DropoutParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.DropoutParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.dropout_ratio_ = from._impl_.dropout_ratio_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.scale_train_ = from._impl_.scale_train_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void DropoutParameter::InternalSwap(DropoutParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.scale_train_)
      + sizeof(DropoutParameter::_impl_.scale_train_)
      - PROTOBUF_FIELD_OFFSET(DropoutParameter, _impl_.dropout_ratio_)>(
          reinterpret_cast<char*>(&_impl_.dropout_ratio_),
          reinterpret_cast<char*>(&other->_impl_.dropout_ratio_));
}

::google::protobuf::Metadata DropoutParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

DummyDataParameter::DummyDataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DummyDataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.DummyDataParameter)
}
PROTOBUF_NDEBUG_INLINE DummyDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::DummyDataParameter& from_msg)
      : _has_bits_{from._has_bits_},
        data_filler_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.data_filler_)>()
          , arena, from.data_filler_
        }
        ,
        num_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.num_)>()
          , arena, from.num_
        }
        ,
        channels_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.channels_)>()
          , arena, from.channels_
        }
        ,
        height_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.height_)>()
          , arena, from.height_
        }
        ,
        width_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.width_)>()
          , arena, from.width_
        }
        ,
        shape_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::DummyDataParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.shape_)>()
          , arena, from.shape_
        }
     {}

DummyDataParameter::DummyDataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const DummyDataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, DummyDataParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  DummyDataParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.DummyDataParameter)
}
PROTOBUF_NDEBUG_INLINE DummyDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : data_filler_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.data_filler_)>()
         }
        ,
        num_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.num_)>()
         }
        ,
        channels_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.channels_)>()
         }
        ,
        height_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.height_)>()
         }
        ,
        width_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.width_)>()
         }
        ,
        shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::DummyDataParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::DummyDataParameter, _impl_.shape_)>()
         }
     {}

inline void DummyDataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
DummyDataParameter::~DummyDataParameter() {
  // @@protoc_insertion_point(destructor:caffe.DummyDataParameter)
  SharedDtor(*this);
}
inline void DummyDataParameter::SharedDtor(MessageLite& self) {
  DummyDataParameter& this_ = static_cast<DummyDataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull DummyDataParameter_class_data_ =
        DummyDataParameter::InternalGenerateClassData_(DummyDataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DummyDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DummyDataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(DummyDataParameter_class_data_.tc_table);
  return DummyDataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
DummyDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&DummyDataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&DummyDataParameter_globals_));
  return DummyDataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const DummyDataParameter::ParseTableT_
    DummyDataParameter::_table_ =
        DummyDataParameter::InternalGenerateParseTable_(DummyDataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void DummyDataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.DummyDataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.data_filler_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.num_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.channels_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.height_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _impl_.width_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _impl_.shape_.Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL DummyDataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const DummyDataParameter& this_ = static_cast<const DummyDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL DummyDataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const DummyDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.DummyDataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .caffe.FillerParameter data_filler = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_data_filler_size());
         i < n; i++) {
      const auto& repfield = this_._internal_data_filler().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated uint32 num = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_num_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          2, this_._internal_num().Get(i), target);
    }
  }

  // repeated uint32 channels = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_channels_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          3, this_._internal_channels().Get(i), target);
    }
  }

  // repeated uint32 height = 4;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (int i = 0, n = this_._internal_height_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          4, this_._internal_height().Get(i), target);
    }
  }

  // repeated uint32 width = 5;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    for (int i = 0, n = this_._internal_width_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          5, this_._internal_width().Get(i), target);
    }
  }

  // repeated .caffe.BlobShape shape = 6;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_shape_size());
         i < n; i++) {
      const auto& repfield = this_._internal_shape().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          6, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.DummyDataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t DummyDataParameter::ByteSizeLong(const MessageLite& base) {
  const DummyDataParameter& this_ = static_cast<const DummyDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t DummyDataParameter::ByteSizeLong() const {
  const DummyDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.DummyDataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // repeated .caffe.FillerParameter data_filler = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_data_filler_size();
      for (const auto& msg : this_._internal_data_filler()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated uint32 num = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_num());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_num_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 channels = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_channels());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_channels_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 height = 4;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_height());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_height_size());
      total_size += tag_size + data_size;
    }
    // repeated uint32 width = 5;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_width());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_width_size());
      total_size += tag_size + data_size;
    }
    // repeated .caffe.BlobShape shape = 6;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1UL * this_._internal_shape_size();
      for (const auto& msg : this_._internal_shape()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void DummyDataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<DummyDataParameter*>(&to_msg);
  auto& from = static_cast<const DummyDataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.DummyDataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_data_filler()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_data_filler());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_num()->MergeFrom(from._internal_num());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_channels()->MergeFrom(from._internal_channels());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_height()->MergeFrom(from._internal_height());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_mutable_width()->MergeFrom(from._internal_width());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_internal_mutable_shape()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_shape());
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void DummyDataParameter::InternalSwap(DummyDataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.data_filler_.InternalSwap(&other->_impl_.data_filler_);
  _impl_.num_.InternalSwap(&other->_impl_.num_);
  _impl_.channels_.InternalSwap(&other->_impl_.channels_);
  _impl_.height_.InternalSwap(&other->_impl_.height_);
  _impl_.width_.InternalSwap(&other->_impl_.width_);
  _impl_.shape_.InternalSwap(&other->_impl_.shape_);
}

::google::protobuf::Metadata DummyDataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

EltwiseParameter::EltwiseParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, EltwiseParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.EltwiseParameter)
}
PROTOBUF_NDEBUG_INLINE EltwiseParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::EltwiseParameter& from_msg)
      : _has_bits_{from._has_bits_},
        coeff_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::EltwiseParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.coeff_)>()
          , arena, from.coeff_
        }
     {}

EltwiseParameter::EltwiseParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const EltwiseParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, EltwiseParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  EltwiseParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, operation_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, operation_),
           offsetof(Impl_, stable_prod_grad_) -
               offsetof(Impl_, operation_) +
               sizeof(Impl_::stable_prod_grad_));

  // @@protoc_insertion_point(copy_constructor:caffe.EltwiseParameter)
}
PROTOBUF_NDEBUG_INLINE EltwiseParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : coeff_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::EltwiseParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::EltwiseParameter, _impl_.coeff_)>()
         }
        ,
        operation_{static_cast< ::caffe::EltwiseParameter_EltwiseOp >(1)},
        stable_prod_grad_{true} {}

inline void EltwiseParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
EltwiseParameter::~EltwiseParameter() {
  // @@protoc_insertion_point(destructor:caffe.EltwiseParameter)
  SharedDtor(*this);
}
inline void EltwiseParameter::SharedDtor(MessageLite& self) {
  EltwiseParameter& this_ = static_cast<EltwiseParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull EltwiseParameter_class_data_ =
        EltwiseParameter::InternalGenerateClassData_(EltwiseParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
EltwiseParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&EltwiseParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(EltwiseParameter_class_data_.tc_table);
  return EltwiseParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
EltwiseParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&EltwiseParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EltwiseParameter_globals_));
  return EltwiseParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const EltwiseParameter::ParseTableT_
    EltwiseParameter::_table_ =
        EltwiseParameter::InternalGenerateParseTable_(EltwiseParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void EltwiseParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.EltwiseParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.coeff_.Clear();
    }
    this_._impl_.operation_ = 1;
    this_._impl_.stable_prod_grad_ = true;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL EltwiseParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const EltwiseParameter& this_ = static_cast<const EltwiseParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL EltwiseParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const EltwiseParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.EltwiseParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.EltwiseParameter.EltwiseOp operation = 1 [default = SUM];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_operation(), target);
  }

  // repeated float coeff = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_coeff_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          2, this_._internal_coeff().Get(i), target);
    }
  }

  // optional bool stable_prod_grad = 3 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        3, this_._internal_stable_prod_grad(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.EltwiseParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t EltwiseParameter::ByteSizeLong(const MessageLite& base) {
  const EltwiseParameter& this_ = static_cast<const EltwiseParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t EltwiseParameter::ByteSizeLong() const {
  const EltwiseParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.EltwiseParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // repeated float coeff = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_coeff_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_coeff_size());
      total_size += tag_size + data_size;
    }
    // optional .caffe.EltwiseParameter.EltwiseOp operation = 1 [default = SUM];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_operation());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void EltwiseParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<EltwiseParameter*>(&to_msg);
  auto& from = static_cast<const EltwiseParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.EltwiseParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_coeff()->MergeFrom(from._internal_coeff());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.operation_ = from._impl_.operation_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.stable_prod_grad_ = from._impl_.stable_prod_grad_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void EltwiseParameter::InternalSwap(EltwiseParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.coeff_.InternalSwap(&other->_impl_.coeff_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.stable_prod_grad_)
      + sizeof(EltwiseParameter::_impl_.stable_prod_grad_)
      - PROTOBUF_FIELD_OFFSET(EltwiseParameter, _impl_.operation_)>(
          reinterpret_cast<char*>(&_impl_.operation_),
          reinterpret_cast<char*>(&other->_impl_.operation_));
}

::google::protobuf::Metadata EltwiseParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ELUParameter::ELUParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ELUParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ELUParameter)
}
ELUParameter::ELUParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ELUParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ELUParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ELUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : alpha_{1} {}

inline void ELUParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ELUParameter::~ELUParameter() {
  // @@protoc_insertion_point(destructor:caffe.ELUParameter)
  SharedDtor(*this);
}
inline void ELUParameter::SharedDtor(MessageLite& self) {
  ELUParameter& this_ = static_cast<ELUParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ELUParameter_class_data_ =
        ELUParameter::InternalGenerateClassData_(ELUParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ELUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ELUParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ELUParameter_class_data_.tc_table);
  return ELUParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ELUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ELUParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ELUParameter_globals_));
  return ELUParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ELUParameter::ParseTableT_
    ELUParameter::_table_ =
        ELUParameter::InternalGenerateParseTable_(ELUParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ELUParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ELUParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.alpha_ = 1;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ELUParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ELUParameter& this_ = static_cast<const ELUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ELUParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ELUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ELUParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float alpha = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_alpha(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ELUParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ELUParameter::ByteSizeLong(const MessageLite& base) {
  const ELUParameter& this_ = static_cast<const ELUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ELUParameter::ByteSizeLong() const {
  const ELUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ELUParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ELUParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ELUParameter*>(&to_msg);
  auto& from = static_cast<const ELUParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ELUParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.alpha_ = from._impl_.alpha_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ELUParameter::InternalSwap(ELUParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.alpha_, other->_impl_.alpha_);
}

::google::protobuf::Metadata ELUParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

EmbedParameter::EmbedParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, EmbedParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.EmbedParameter)
}
PROTOBUF_NDEBUG_INLINE EmbedParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::EmbedParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

EmbedParameter::EmbedParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const EmbedParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, EmbedParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  EmbedParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.weight_filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.weight_filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_output_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_output_),
           offsetof(Impl_, bias_term_) -
               offsetof(Impl_, num_output_) +
               sizeof(Impl_::bias_term_));

  // @@protoc_insertion_point(copy_constructor:caffe.EmbedParameter)
}
PROTOBUF_NDEBUG_INLINE EmbedParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : bias_term_{true} {}

inline void EmbedParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, weight_filler_),
           0,
           offsetof(Impl_, input_dim_) -
               offsetof(Impl_, weight_filler_) +
               sizeof(Impl_::input_dim_));
}
EmbedParameter::~EmbedParameter() {
  // @@protoc_insertion_point(destructor:caffe.EmbedParameter)
  SharedDtor(*this);
}
inline void EmbedParameter::SharedDtor(MessageLite& self) {
  EmbedParameter& this_ = static_cast<EmbedParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.weight_filler_;
  delete this_._impl_.bias_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull EmbedParameter_class_data_ =
        EmbedParameter::InternalGenerateClassData_(EmbedParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
EmbedParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&EmbedParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(EmbedParameter_class_data_.tc_table);
  return EmbedParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
EmbedParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&EmbedParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&EmbedParameter_globals_));
  return EmbedParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const EmbedParameter::ParseTableT_
    EmbedParameter::_table_ =
        EmbedParameter::InternalGenerateParseTable_(EmbedParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void EmbedParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.EmbedParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.weight_filler_ != nullptr);
      this_._impl_.weight_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000001cU)) {
    ::memset(&this_._impl_.num_output_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.input_dim_) -
                 reinterpret_cast<char*>(&this_._impl_.num_output_)) +
                 sizeof(_impl_.input_dim_));
    this_._impl_.bias_term_ = true;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL EmbedParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const EmbedParameter& this_ = static_cast<const EmbedParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL EmbedParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const EmbedParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.EmbedParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_output = 1;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_output(), target);
  }

  // optional uint32 input_dim = 2;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_input_dim(), target);
  }

  // optional bool bias_term = 3 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        3, this_._internal_bias_term(), target);
  }

  // optional .caffe.FillerParameter weight_filler = 4;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        4, *this_._impl_.weight_filler_, this_._impl_.weight_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter bias_filler = 5;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.EmbedParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t EmbedParameter::ByteSizeLong(const MessageLite& base) {
  const EmbedParameter& this_ = static_cast<const EmbedParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t EmbedParameter::ByteSizeLong() const {
  const EmbedParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.EmbedParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000010U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    // optional .caffe.FillerParameter weight_filler = 4;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.weight_filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 5;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional uint32 num_output = 1;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_output());
    }
    // optional uint32 input_dim = 2;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_input_dim());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void EmbedParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<EmbedParameter*>(&to_msg);
  auto& from = static_cast<const EmbedParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.EmbedParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.weight_filler_ != nullptr);
      if (_this->_impl_.weight_filler_ == nullptr) {
        _this->_impl_.weight_filler_ = Super_::CopyConstruct(arena, *from._impl_.weight_filler_);
      } else {
        _this->_impl_.weight_filler_->MergeFrom(*from._impl_.weight_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.num_output_ = from._impl_.num_output_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.input_dim_ = from._impl_.input_dim_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.bias_term_ = from._impl_.bias_term_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void EmbedParameter::InternalSwap(EmbedParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.bias_term_)
      + sizeof(EmbedParameter::_impl_.bias_term_)
      - PROTOBUF_FIELD_OFFSET(EmbedParameter, _impl_.weight_filler_)>(
          reinterpret_cast<char*>(&_impl_.weight_filler_),
          reinterpret_cast<char*>(&other->_impl_.weight_filler_));
}

::google::protobuf::Metadata EmbedParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ExpParameter::ExpParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ExpParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ExpParameter)
}
ExpParameter::ExpParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ExpParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ExpParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ExpParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : base_{-1},
        scale_{1} {}

inline void ExpParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.shift_ = {};
}
ExpParameter::~ExpParameter() {
  // @@protoc_insertion_point(destructor:caffe.ExpParameter)
  SharedDtor(*this);
}
inline void ExpParameter::SharedDtor(MessageLite& self) {
  ExpParameter& this_ = static_cast<ExpParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ExpParameter_class_data_ =
        ExpParameter::InternalGenerateClassData_(ExpParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExpParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExpParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ExpParameter_class_data_.tc_table);
  return ExpParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ExpParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ExpParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ExpParameter_globals_));
  return ExpParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ExpParameter::ParseTableT_
    ExpParameter::_table_ =
        ExpParameter::InternalGenerateParseTable_(ExpParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ExpParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ExpParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.shift_ = 0;
    this_._impl_.base_ = -1;
    this_._impl_.scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ExpParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ExpParameter& this_ = static_cast<const ExpParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ExpParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ExpParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ExpParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float base = 1 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_base(), target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional float shift = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_shift(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ExpParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ExpParameter::ByteSizeLong(const MessageLite& base) {
  const ExpParameter& this_ = static_cast<const ExpParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ExpParameter::ByteSizeLong() const {
  const ExpParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ExpParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000007U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ExpParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ExpParameter*>(&to_msg);
  auto& from = static_cast<const ExpParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ExpParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.shift_ = from._impl_.shift_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.base_ = from._impl_.base_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ExpParameter::InternalSwap(ExpParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.scale_)
      + sizeof(ExpParameter::_impl_.scale_)
      - PROTOBUF_FIELD_OFFSET(ExpParameter, _impl_.shift_)>(
          reinterpret_cast<char*>(&_impl_.shift_),
          reinterpret_cast<char*>(&other->_impl_.shift_));
}

::google::protobuf::Metadata ExpParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

FlattenParameter::FlattenParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, FlattenParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.FlattenParameter)
}
FlattenParameter::FlattenParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlattenParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, FlattenParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE FlattenParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : axis_{1},
        end_axis_{-1} {}

inline void FlattenParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
FlattenParameter::~FlattenParameter() {
  // @@protoc_insertion_point(destructor:caffe.FlattenParameter)
  SharedDtor(*this);
}
inline void FlattenParameter::SharedDtor(MessageLite& self) {
  FlattenParameter& this_ = static_cast<FlattenParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull FlattenParameter_class_data_ =
        FlattenParameter::InternalGenerateClassData_(FlattenParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
FlattenParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&FlattenParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(FlattenParameter_class_data_.tc_table);
  return FlattenParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
FlattenParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&FlattenParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&FlattenParameter_globals_));
  return FlattenParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const FlattenParameter::ParseTableT_
    FlattenParameter::_table_ =
        FlattenParameter::InternalGenerateParseTable_(FlattenParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void FlattenParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.FlattenParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.axis_ = 1;
    this_._impl_.end_axis_ = -1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL FlattenParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const FlattenParameter& this_ = static_cast<const FlattenParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL FlattenParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const FlattenParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.FlattenParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 axis = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 end_axis = 2 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_end_axis(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.FlattenParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t FlattenParameter::ByteSizeLong(const MessageLite& base) {
  const FlattenParameter& this_ = static_cast<const FlattenParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t FlattenParameter::ByteSizeLong() const {
  const FlattenParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.FlattenParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional int32 axis = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional int32 end_axis = 2 [default = -1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_end_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void FlattenParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<FlattenParameter*>(&to_msg);
  auto& from = static_cast<const FlattenParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.FlattenParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.end_axis_ = from._impl_.end_axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void FlattenParameter::InternalSwap(FlattenParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.end_axis_)
      + sizeof(FlattenParameter::_impl_.end_axis_)
      - PROTOBUF_FIELD_OFFSET(FlattenParameter, _impl_.axis_)>(
          reinterpret_cast<char*>(&_impl_.axis_),
          reinterpret_cast<char*>(&other->_impl_.axis_));
}

::google::protobuf::Metadata FlattenParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

HDF5DataParameter::HDF5DataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HDF5DataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.HDF5DataParameter)
}
PROTOBUF_NDEBUG_INLINE HDF5DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::HDF5DataParameter& from_msg)
      : _has_bits_{from._has_bits_},
        source_(arena, from.source_) {}

HDF5DataParameter::HDF5DataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const HDF5DataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HDF5DataParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  HDF5DataParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, batch_size_),
           offsetof(Impl_, shuffle_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::shuffle_));

  // @@protoc_insertion_point(copy_constructor:caffe.HDF5DataParameter)
}
PROTOBUF_NDEBUG_INLINE HDF5DataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : source_(arena) {}

inline void HDF5DataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           0,
           offsetof(Impl_, shuffle_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::shuffle_));
}
HDF5DataParameter::~HDF5DataParameter() {
  // @@protoc_insertion_point(destructor:caffe.HDF5DataParameter)
  SharedDtor(*this);
}
inline void HDF5DataParameter::SharedDtor(MessageLite& self) {
  HDF5DataParameter& this_ = static_cast<HDF5DataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.source_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull HDF5DataParameter_class_data_ =
        HDF5DataParameter::InternalGenerateClassData_(HDF5DataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HDF5DataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HDF5DataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(HDF5DataParameter_class_data_.tc_table);
  return HDF5DataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HDF5DataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HDF5DataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&HDF5DataParameter_globals_));
  return HDF5DataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const HDF5DataParameter::ParseTableT_
    HDF5DataParameter::_table_ =
        HDF5DataParameter::InternalGenerateParseTable_(HDF5DataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void HDF5DataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.HDF5DataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.source_.ClearNonDefaultToEmpty();
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
    ::memset(&this_._impl_.batch_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.shuffle_) -
                 reinterpret_cast<char*>(&this_._impl_.batch_size_)) +
                 sizeof(_impl_.shuffle_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL HDF5DataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const HDF5DataParameter& this_ = static_cast<const HDF5DataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL HDF5DataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const HDF5DataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.HDF5DataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string source = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional uint32 batch_size = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_batch_size(), target);
  }

  // optional bool shuffle = 3 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        3, this_._internal_shuffle(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.HDF5DataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t HDF5DataParameter::ByteSizeLong(const MessageLite& base) {
  const HDF5DataParameter& this_ = static_cast<const HDF5DataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t HDF5DataParameter::ByteSizeLong() const {
  const HDF5DataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.HDF5DataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional string source = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
    // optional uint32 batch_size = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_batch_size());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void HDF5DataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<HDF5DataParameter*>(&to_msg);
  auto& from = static_cast<const HDF5DataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.HDF5DataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_source(from._internal_source());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.batch_size_ = from._impl_.batch_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.shuffle_ = from._impl_.shuffle_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void HDF5DataParameter::InternalSwap(HDF5DataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.shuffle_)
      + sizeof(HDF5DataParameter::_impl_.shuffle_)
      - PROTOBUF_FIELD_OFFSET(HDF5DataParameter, _impl_.batch_size_)>(
          reinterpret_cast<char*>(&_impl_.batch_size_),
          reinterpret_cast<char*>(&other->_impl_.batch_size_));
}

::google::protobuf::Metadata HDF5DataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

HDF5OutputParameter::HDF5OutputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HDF5OutputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.HDF5OutputParameter)
}
PROTOBUF_NDEBUG_INLINE HDF5OutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::HDF5OutputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        file_name_(arena, from.file_name_) {}

HDF5OutputParameter::HDF5OutputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const HDF5OutputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HDF5OutputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  HDF5OutputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.HDF5OutputParameter)
}
PROTOBUF_NDEBUG_INLINE HDF5OutputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : file_name_(arena) {}

inline void HDF5OutputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
HDF5OutputParameter::~HDF5OutputParameter() {
  // @@protoc_insertion_point(destructor:caffe.HDF5OutputParameter)
  SharedDtor(*this);
}
inline void HDF5OutputParameter::SharedDtor(MessageLite& self) {
  HDF5OutputParameter& this_ = static_cast<HDF5OutputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.file_name_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull HDF5OutputParameter_class_data_ =
        HDF5OutputParameter::InternalGenerateClassData_(HDF5OutputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HDF5OutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HDF5OutputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(HDF5OutputParameter_class_data_.tc_table);
  return HDF5OutputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HDF5OutputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HDF5OutputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&HDF5OutputParameter_globals_));
  return HDF5OutputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const HDF5OutputParameter::ParseTableT_
    HDF5OutputParameter::_table_ =
        HDF5OutputParameter::InternalGenerateParseTable_(HDF5OutputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void HDF5OutputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.HDF5OutputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.file_name_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL HDF5OutputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const HDF5OutputParameter& this_ = static_cast<const HDF5OutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL HDF5OutputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const HDF5OutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.HDF5OutputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string file_name = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_file_name();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.HDF5OutputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t HDF5OutputParameter::ByteSizeLong(const MessageLite& base) {
  const HDF5OutputParameter& this_ = static_cast<const HDF5OutputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t HDF5OutputParameter::ByteSizeLong() const {
  const HDF5OutputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.HDF5OutputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional string file_name = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_file_name());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void HDF5OutputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<HDF5OutputParameter*>(&to_msg);
  auto& from = static_cast<const HDF5OutputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.HDF5OutputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_set_file_name(from._internal_file_name());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void HDF5OutputParameter::InternalSwap(HDF5OutputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.file_name_, &other->_impl_.file_name_, arena);
}

::google::protobuf::Metadata HDF5OutputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

HingeLossParameter::HingeLossParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HingeLossParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.HingeLossParameter)
}
HingeLossParameter::HingeLossParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const HingeLossParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, HingeLossParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE HingeLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : norm_{static_cast< ::caffe::HingeLossParameter_Norm >(1)} {}

inline void HingeLossParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
HingeLossParameter::~HingeLossParameter() {
  // @@protoc_insertion_point(destructor:caffe.HingeLossParameter)
  SharedDtor(*this);
}
inline void HingeLossParameter::SharedDtor(MessageLite& self) {
  HingeLossParameter& this_ = static_cast<HingeLossParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull HingeLossParameter_class_data_ =
        HingeLossParameter::InternalGenerateClassData_(HingeLossParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HingeLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HingeLossParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(HingeLossParameter_class_data_.tc_table);
  return HingeLossParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
HingeLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&HingeLossParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&HingeLossParameter_globals_));
  return HingeLossParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const HingeLossParameter::ParseTableT_
    HingeLossParameter::_table_ =
        HingeLossParameter::InternalGenerateParseTable_(HingeLossParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void HingeLossParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.HingeLossParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.norm_ = 1;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL HingeLossParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const HingeLossParameter& this_ = static_cast<const HingeLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL HingeLossParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const HingeLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.HingeLossParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.HingeLossParameter.Norm norm = 1 [default = L1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_norm(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.HingeLossParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t HingeLossParameter::ByteSizeLong(const MessageLite& base) {
  const HingeLossParameter& this_ = static_cast<const HingeLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t HingeLossParameter::ByteSizeLong() const {
  const HingeLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.HingeLossParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional .caffe.HingeLossParameter.Norm norm = 1 [default = L1];
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_norm());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void HingeLossParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<HingeLossParameter*>(&to_msg);
  auto& from = static_cast<const HingeLossParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.HingeLossParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.norm_ = from._impl_.norm_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void HingeLossParameter::InternalSwap(HingeLossParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.norm_, other->_impl_.norm_);
}

::google::protobuf::Metadata HingeLossParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ImageDataParameter::ImageDataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ImageDataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ImageDataParameter)
}
PROTOBUF_NDEBUG_INLINE ImageDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ImageDataParameter& from_msg)
      : _has_bits_{from._has_bits_},
        source_(arena, from.source_),
        mean_file_(arena, from.mean_file_),
        root_folder_(arena, from.root_folder_) {}

ImageDataParameter::ImageDataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ImageDataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ImageDataParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ImageDataParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, crop_size_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, crop_size_),
           offsetof(Impl_, batch_size_) -
               offsetof(Impl_, crop_size_) +
               sizeof(Impl_::batch_size_));

  // @@protoc_insertion_point(copy_constructor:caffe.ImageDataParameter)
}
PROTOBUF_NDEBUG_INLINE ImageDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : source_(arena),
        mean_file_(arena),
        root_folder_(arena),
        is_color_{true},
        scale_{1},
        batch_size_{1u} {}

inline void ImageDataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, crop_size_),
           0,
           offsetof(Impl_, new_width_) -
               offsetof(Impl_, crop_size_) +
               sizeof(Impl_::new_width_));
}
ImageDataParameter::~ImageDataParameter() {
  // @@protoc_insertion_point(destructor:caffe.ImageDataParameter)
  SharedDtor(*this);
}
inline void ImageDataParameter::SharedDtor(MessageLite& self) {
  ImageDataParameter& this_ = static_cast<ImageDataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.source_.Destroy();
  this_._impl_.mean_file_.Destroy();
  this_._impl_.root_folder_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ImageDataParameter_class_data_ =
        ImageDataParameter::InternalGenerateClassData_(ImageDataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ImageDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ImageDataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ImageDataParameter_class_data_.tc_table);
  return ImageDataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ImageDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ImageDataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ImageDataParameter_globals_));
  return ImageDataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ImageDataParameter::ParseTableT_
    ImageDataParameter::_table_ =
        ImageDataParameter::InternalGenerateParseTable_(ImageDataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ImageDataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ImageDataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.source_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.mean_file_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      this_._impl_.root_folder_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000f8U)) {
    ::memset(&this_._impl_.crop_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.new_height_) -
                 reinterpret_cast<char*>(&this_._impl_.crop_size_)) +
                 sizeof(_impl_.new_height_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    this_._impl_.new_width_ = 0u;
    this_._impl_.is_color_ = true;
    this_._impl_.scale_ = 1;
    this_._impl_.batch_size_ = 1u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ImageDataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ImageDataParameter& this_ = static_cast<const ImageDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ImageDataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ImageDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ImageDataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string source = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional string mean_file = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_mean_file();
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // optional uint32 batch_size = 4 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_batch_size(), target);
  }

  // optional uint32 crop_size = 5 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        5, this_._internal_crop_size(), target);
  }

  // optional bool mirror = 6 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        6, this_._internal_mirror(), target);
  }

  // optional uint32 rand_skip = 7 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_rand_skip(), target);
  }

  // optional bool shuffle = 8 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        8, this_._internal_shuffle(), target);
  }

  // optional uint32 new_height = 9 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_new_height(), target);
  }

  // optional uint32 new_width = 10 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_new_width(), target);
  }

  // optional bool is_color = 11 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        11, this_._internal_is_color(), target);
  }

  // optional string root_folder = 12 [default = ""];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    const ::std::string& _s = this_._internal_root_folder();
    target = stream->WriteStringMaybeAliased(12, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ImageDataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ImageDataParameter::ByteSizeLong(const MessageLite& base) {
  const ImageDataParameter& this_ = static_cast<const ImageDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ImageDataParameter::ByteSizeLong() const {
  const ImageDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ImageDataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000400U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000260U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000009fU)) {
    // optional string source = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
    // optional string mean_file = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_mean_file());
    }
    // optional string root_folder = 12 [default = ""];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_root_folder());
    }
    // optional uint32 crop_size = 5 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_crop_size());
    }
    // optional uint32 rand_skip = 7 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_rand_skip());
    }
    // optional uint32 new_height = 9 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_new_height());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000900U)) {
    // optional uint32 new_width = 10 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_new_width());
    }
    // optional uint32 batch_size = 4 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_batch_size());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ImageDataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ImageDataParameter*>(&to_msg);
  auto& from = static_cast<const ImageDataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ImageDataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_source(from._internal_source());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_mean_file(from._internal_mean_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_set_root_folder(from._internal_root_folder());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.crop_size_ = from._impl_.crop_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.rand_skip_ = from._impl_.rand_skip_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.mirror_ = from._impl_.mirror_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.shuffle_ = from._impl_.shuffle_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.new_height_ = from._impl_.new_height_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.new_width_ = from._impl_.new_width_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.is_color_ = from._impl_.is_color_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.batch_size_ = from._impl_.batch_size_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ImageDataParameter::InternalSwap(ImageDataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mean_file_, &other->_impl_.mean_file_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.root_folder_, &other->_impl_.root_folder_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.batch_size_)
      + sizeof(ImageDataParameter::_impl_.batch_size_)
      - PROTOBUF_FIELD_OFFSET(ImageDataParameter, _impl_.crop_size_)>(
          reinterpret_cast<char*>(&_impl_.crop_size_),
          reinterpret_cast<char*>(&other->_impl_.crop_size_));
}

::google::protobuf::Metadata ImageDataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

InfogainLossParameter::InfogainLossParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InfogainLossParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.InfogainLossParameter)
}
PROTOBUF_NDEBUG_INLINE InfogainLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::InfogainLossParameter& from_msg)
      : _has_bits_{from._has_bits_},
        source_(arena, from.source_) {}

InfogainLossParameter::InfogainLossParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const InfogainLossParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InfogainLossParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  InfogainLossParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.InfogainLossParameter)
}
PROTOBUF_NDEBUG_INLINE InfogainLossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : source_(arena) {}

inline void InfogainLossParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
InfogainLossParameter::~InfogainLossParameter() {
  // @@protoc_insertion_point(destructor:caffe.InfogainLossParameter)
  SharedDtor(*this);
}
inline void InfogainLossParameter::SharedDtor(MessageLite& self) {
  InfogainLossParameter& this_ = static_cast<InfogainLossParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.source_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull InfogainLossParameter_class_data_ =
        InfogainLossParameter::InternalGenerateClassData_(InfogainLossParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InfogainLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InfogainLossParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(InfogainLossParameter_class_data_.tc_table);
  return InfogainLossParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InfogainLossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InfogainLossParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&InfogainLossParameter_globals_));
  return InfogainLossParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const InfogainLossParameter::ParseTableT_
    InfogainLossParameter::_table_ =
        InfogainLossParameter::InternalGenerateParseTable_(InfogainLossParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void InfogainLossParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.InfogainLossParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    this_._impl_.source_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL InfogainLossParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const InfogainLossParameter& this_ = static_cast<const InfogainLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL InfogainLossParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const InfogainLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.InfogainLossParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string source = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.InfogainLossParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t InfogainLossParameter::ByteSizeLong(const MessageLite& base) {
  const InfogainLossParameter& this_ = static_cast<const InfogainLossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t InfogainLossParameter::ByteSizeLong() const {
  const InfogainLossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.InfogainLossParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional string source = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void InfogainLossParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<InfogainLossParameter*>(&to_msg);
  auto& from = static_cast<const InfogainLossParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.InfogainLossParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_set_source(from._internal_source());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void InfogainLossParameter::InternalSwap(InfogainLossParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
}

::google::protobuf::Metadata InfogainLossParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

InnerProductParameter::InnerProductParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InnerProductParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.InnerProductParameter)
}
PROTOBUF_NDEBUG_INLINE InnerProductParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::InnerProductParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

InnerProductParameter::InnerProductParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const InnerProductParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InnerProductParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  InnerProductParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.weight_filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.weight_filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_output_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_output_),
           offsetof(Impl_, axis_) -
               offsetof(Impl_, num_output_) +
               sizeof(Impl_::axis_));

  // @@protoc_insertion_point(copy_constructor:caffe.InnerProductParameter)
}
PROTOBUF_NDEBUG_INLINE InnerProductParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : bias_term_{true},
        axis_{1} {}

inline void InnerProductParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, weight_filler_),
           0,
           offsetof(Impl_, transpose_) -
               offsetof(Impl_, weight_filler_) +
               sizeof(Impl_::transpose_));
}
InnerProductParameter::~InnerProductParameter() {
  // @@protoc_insertion_point(destructor:caffe.InnerProductParameter)
  SharedDtor(*this);
}
inline void InnerProductParameter::SharedDtor(MessageLite& self) {
  InnerProductParameter& this_ = static_cast<InnerProductParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.weight_filler_;
  delete this_._impl_.bias_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull InnerProductParameter_class_data_ =
        InnerProductParameter::InternalGenerateClassData_(InnerProductParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InnerProductParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InnerProductParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(InnerProductParameter_class_data_.tc_table);
  return InnerProductParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InnerProductParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InnerProductParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&InnerProductParameter_globals_));
  return InnerProductParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const InnerProductParameter::ParseTableT_
    InnerProductParameter::_table_ =
        InnerProductParameter::InternalGenerateParseTable_(InnerProductParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void InnerProductParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.InnerProductParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.weight_filler_ != nullptr);
      this_._impl_.weight_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000003cU)) {
    ::memset(&this_._impl_.num_output_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.transpose_) -
                 reinterpret_cast<char*>(&this_._impl_.num_output_)) +
                 sizeof(_impl_.transpose_));
    this_._impl_.bias_term_ = true;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL InnerProductParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const InnerProductParameter& this_ = static_cast<const InnerProductParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL InnerProductParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const InnerProductParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.InnerProductParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_output = 1;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_output(), target);
  }

  // optional bool bias_term = 2 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_bias_term(), target);
  }

  // optional .caffe.FillerParameter weight_filler = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.weight_filler_, this_._impl_.weight_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter bias_filler = 4;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        4, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  // optional int32 axis = 5 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<5>(
            stream, this_._internal_axis(), target);
  }

  // optional bool transpose = 6 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        6, this_._internal_transpose(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.InnerProductParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t InnerProductParameter::ByteSizeLong(const MessageLite& base) {
  const InnerProductParameter& this_ = static_cast<const InnerProductParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t InnerProductParameter::ByteSizeLong() const {
  const InnerProductParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.InnerProductParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000018U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000027U)) {
    // optional .caffe.FillerParameter weight_filler = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.weight_filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 4;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional uint32 num_output = 1;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_output());
    }
    // optional int32 axis = 5 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void InnerProductParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<InnerProductParameter*>(&to_msg);
  auto& from = static_cast<const InnerProductParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.InnerProductParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.weight_filler_ != nullptr);
      if (_this->_impl_.weight_filler_ == nullptr) {
        _this->_impl_.weight_filler_ = Super_::CopyConstruct(arena, *from._impl_.weight_filler_);
      } else {
        _this->_impl_.weight_filler_->MergeFrom(*from._impl_.weight_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.num_output_ = from._impl_.num_output_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.transpose_ = from._impl_.transpose_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.bias_term_ = from._impl_.bias_term_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void InnerProductParameter::InternalSwap(InnerProductParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.axis_)
      + sizeof(InnerProductParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(InnerProductParameter, _impl_.weight_filler_)>(
          reinterpret_cast<char*>(&_impl_.weight_filler_),
          reinterpret_cast<char*>(&other->_impl_.weight_filler_));
}

::google::protobuf::Metadata InnerProductParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

InputParameter::InputParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InputParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.InputParameter)
}
PROTOBUF_NDEBUG_INLINE InputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::InputParameter& from_msg)
      : _has_bits_{from._has_bits_},
        shape_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::InputParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::InputParameter, _impl_.shape_)>()
          , arena, from.shape_
        }
     {}

InputParameter::InputParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const InputParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InputParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  InputParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.InputParameter)
}
PROTOBUF_NDEBUG_INLINE InputParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : shape_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::InputParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::InputParameter, _impl_.shape_)>()
         }
     {}

inline void InputParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
InputParameter::~InputParameter() {
  // @@protoc_insertion_point(destructor:caffe.InputParameter)
  SharedDtor(*this);
}
inline void InputParameter::SharedDtor(MessageLite& self) {
  InputParameter& this_ = static_cast<InputParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull InputParameter_class_data_ =
        InputParameter::InternalGenerateClassData_(InputParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InputParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(InputParameter_class_data_.tc_table);
  return InputParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InputParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InputParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&InputParameter_globals_));
  return InputParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const InputParameter::ParseTableT_
    InputParameter::_table_ =
        InputParameter::InternalGenerateParseTable_(InputParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void InputParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.InputParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.shape_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL InputParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const InputParameter& this_ = static_cast<const InputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL InputParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const InputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.InputParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated .caffe.BlobShape shape = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_shape_size());
         i < n; i++) {
      const auto& repfield = this_._internal_shape().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.InputParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t InputParameter::ByteSizeLong(const MessageLite& base) {
  const InputParameter& this_ = static_cast<const InputParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t InputParameter::ByteSizeLong() const {
  const InputParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.InputParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated .caffe.BlobShape shape = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1UL * this_._internal_shape_size();
      for (const auto& msg : this_._internal_shape()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void InputParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<InputParameter*>(&to_msg);
  auto& from = static_cast<const InputParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.InputParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_shape()->InternalMergeFromWithArena(
        ::google::protobuf::MessageLite::internal_visibility(), arena,
        from._internal_shape());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void InputParameter::InternalSwap(InputParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.shape_.InternalSwap(&other->_impl_.shape_);
}

::google::protobuf::Metadata InputParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

InterpParameter::InterpParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InterpParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.InterpParameter)
}
InterpParameter::InterpParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const InterpParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, InterpParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE InterpParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : zoom_factor_{1},
        shrink_factor_{1} {}

inline void InterpParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, height_),
           0,
           offsetof(Impl_, pad_end_) -
               offsetof(Impl_, height_) +
               sizeof(Impl_::pad_end_));
}
InterpParameter::~InterpParameter() {
  // @@protoc_insertion_point(destructor:caffe.InterpParameter)
  SharedDtor(*this);
}
inline void InterpParameter::SharedDtor(MessageLite& self) {
  InterpParameter& this_ = static_cast<InterpParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull InterpParameter_class_data_ =
        InterpParameter::InternalGenerateClassData_(InterpParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InterpParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InterpParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(InterpParameter_class_data_.tc_table);
  return InterpParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
InterpParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&InterpParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&InterpParameter_globals_));
  return InterpParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const InterpParameter::ParseTableT_
    InterpParameter::_table_ =
        InterpParameter::InternalGenerateParseTable_(InterpParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void InterpParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.InterpParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    ::memset(&this_._impl_.height_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.pad_end_) -
                 reinterpret_cast<char*>(&this_._impl_.height_)) +
                 sizeof(_impl_.pad_end_));
    this_._impl_.zoom_factor_ = 1;
    this_._impl_.shrink_factor_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL InterpParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const InterpParameter& this_ = static_cast<const InterpParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL InterpParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const InterpParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.InterpParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 height = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_height(), target);
  }

  // optional int32 width = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_width(), target);
  }

  // optional int32 zoom_factor = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_zoom_factor(), target);
  }

  // optional int32 shrink_factor = 4 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<4>(
            stream, this_._internal_shrink_factor(), target);
  }

  // optional int32 pad_beg = 5 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<5>(
            stream, this_._internal_pad_beg(), target);
  }

  // optional int32 pad_end = 6 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<6>(
            stream, this_._internal_pad_end(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.InterpParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t InterpParameter::ByteSizeLong(const MessageLite& base) {
  const InterpParameter& this_ = static_cast<const InterpParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t InterpParameter::ByteSizeLong() const {
  const InterpParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.InterpParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // optional int32 height = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_height());
    }
    // optional int32 width = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_width());
    }
    // optional int32 pad_beg = 5 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_pad_beg());
    }
    // optional int32 pad_end = 6 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_pad_end());
    }
    // optional int32 zoom_factor = 3 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_zoom_factor());
    }
    // optional int32 shrink_factor = 4 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_shrink_factor());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void InterpParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<InterpParameter*>(&to_msg);
  auto& from = static_cast<const InterpParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.InterpParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.height_ = from._impl_.height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.width_ = from._impl_.width_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.pad_beg_ = from._impl_.pad_beg_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.pad_end_ = from._impl_.pad_end_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.zoom_factor_ = from._impl_.zoom_factor_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.shrink_factor_ = from._impl_.shrink_factor_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void InterpParameter::InternalSwap(InterpParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.shrink_factor_)
      + sizeof(InterpParameter::_impl_.shrink_factor_)
      - PROTOBUF_FIELD_OFFSET(InterpParameter, _impl_.height_)>(
          reinterpret_cast<char*>(&_impl_.height_),
          reinterpret_cast<char*>(&other->_impl_.height_));
}

::google::protobuf::Metadata InterpParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

LogParameter::LogParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LogParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.LogParameter)
}
LogParameter::LogParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LogParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LogParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE LogParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : base_{-1},
        scale_{1} {}

inline void LogParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.shift_ = {};
}
LogParameter::~LogParameter() {
  // @@protoc_insertion_point(destructor:caffe.LogParameter)
  SharedDtor(*this);
}
inline void LogParameter::SharedDtor(MessageLite& self) {
  LogParameter& this_ = static_cast<LogParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull LogParameter_class_data_ =
        LogParameter::InternalGenerateClassData_(LogParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LogParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LogParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(LogParameter_class_data_.tc_table);
  return LogParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LogParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LogParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&LogParameter_globals_));
  return LogParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const LogParameter::ParseTableT_
    LogParameter::_table_ =
        LogParameter::InternalGenerateParseTable_(LogParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void LogParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.LogParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.shift_ = 0;
    this_._impl_.base_ = -1;
    this_._impl_.scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL LogParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const LogParameter& this_ = static_cast<const LogParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL LogParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const LogParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.LogParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float base = 1 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_base(), target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional float shift = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_shift(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.LogParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t LogParameter::ByteSizeLong(const MessageLite& base) {
  const LogParameter& this_ = static_cast<const LogParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t LogParameter::ByteSizeLong() const {
  const LogParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.LogParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000007U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void LogParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<LogParameter*>(&to_msg);
  auto& from = static_cast<const LogParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.LogParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.shift_ = from._impl_.shift_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.base_ = from._impl_.base_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void LogParameter::InternalSwap(LogParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.scale_)
      + sizeof(LogParameter::_impl_.scale_)
      - PROTOBUF_FIELD_OFFSET(LogParameter, _impl_.shift_)>(
          reinterpret_cast<char*>(&_impl_.shift_),
          reinterpret_cast<char*>(&other->_impl_.shift_));
}

::google::protobuf::Metadata LogParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

LRNParameter::LRNParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LRNParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.LRNParameter)
}
LRNParameter::LRNParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LRNParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, LRNParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE LRNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : local_size_{5u},
        alpha_{1},
        beta_{0.75f},
        k_{1} {}

inline void LRNParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, norm_region_),
           0,
           offsetof(Impl_, engine_) -
               offsetof(Impl_, norm_region_) +
               sizeof(Impl_::engine_));
}
LRNParameter::~LRNParameter() {
  // @@protoc_insertion_point(destructor:caffe.LRNParameter)
  SharedDtor(*this);
}
inline void LRNParameter::SharedDtor(MessageLite& self) {
  LRNParameter& this_ = static_cast<LRNParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull LRNParameter_class_data_ =
        LRNParameter::InternalGenerateClassData_(LRNParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LRNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LRNParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(LRNParameter_class_data_.tc_table);
  return LRNParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
LRNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&LRNParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&LRNParameter_globals_));
  return LRNParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const LRNParameter::ParseTableT_
    LRNParameter::_table_ =
        LRNParameter::InternalGenerateParseTable_(LRNParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void LRNParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.LRNParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    ::memset(&this_._impl_.norm_region_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.engine_) -
                 reinterpret_cast<char*>(&this_._impl_.norm_region_)) +
                 sizeof(_impl_.engine_));
    this_._impl_.local_size_ = 5u;
    this_._impl_.alpha_ = 1;
    this_._impl_.beta_ = 0.75f;
    this_._impl_.k_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL LRNParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const LRNParameter& this_ = static_cast<const LRNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL LRNParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const LRNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.LRNParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 local_size = 1 [default = 5];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_local_size(), target);
  }

  // optional float alpha = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_alpha(), target);
  }

  // optional float beta = 3 [default = 0.75];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_beta(), target);
  }

  // optional .caffe.LRNParameter.NormRegion norm_region = 4 [default = ACROSS_CHANNELS];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        4, this_._internal_norm_region(), target);
  }

  // optional float k = 5 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        5, this_._internal_k(), target);
  }

  // optional .caffe.LRNParameter.Engine engine = 6 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        6, this_._internal_engine(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.LRNParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t LRNParameter::ByteSizeLong(const MessageLite& base) {
  const LRNParameter& this_ = static_cast<const LRNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t LRNParameter::ByteSizeLong() const {
  const LRNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.LRNParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000038U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .caffe.LRNParameter.NormRegion norm_region = 4 [default = ACROSS_CHANNELS];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_norm_region());
    }
    // optional .caffe.LRNParameter.Engine engine = 6 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
    // optional uint32 local_size = 1 [default = 5];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_local_size());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void LRNParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<LRNParameter*>(&to_msg);
  auto& from = static_cast<const LRNParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.LRNParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.norm_region_ = from._impl_.norm_region_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.local_size_ = from._impl_.local_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.alpha_ = from._impl_.alpha_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.beta_ = from._impl_.beta_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.k_ = from._impl_.k_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void LRNParameter::InternalSwap(LRNParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.k_)
      + sizeof(LRNParameter::_impl_.k_)
      - PROTOBUF_FIELD_OFFSET(LRNParameter, _impl_.norm_region_)>(
          reinterpret_cast<char*>(&_impl_.norm_region_),
          reinterpret_cast<char*>(&other->_impl_.norm_region_));
}

::google::protobuf::Metadata LRNParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

MemoryDataParameter::MemoryDataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MemoryDataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.MemoryDataParameter)
}
MemoryDataParameter::MemoryDataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MemoryDataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MemoryDataParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE MemoryDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void MemoryDataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           0,
           offsetof(Impl_, width_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::width_));
}
MemoryDataParameter::~MemoryDataParameter() {
  // @@protoc_insertion_point(destructor:caffe.MemoryDataParameter)
  SharedDtor(*this);
}
inline void MemoryDataParameter::SharedDtor(MessageLite& self) {
  MemoryDataParameter& this_ = static_cast<MemoryDataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull MemoryDataParameter_class_data_ =
        MemoryDataParameter::InternalGenerateClassData_(MemoryDataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MemoryDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MemoryDataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(MemoryDataParameter_class_data_.tc_table);
  return MemoryDataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MemoryDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MemoryDataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MemoryDataParameter_globals_));
  return MemoryDataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const MemoryDataParameter::ParseTableT_
    MemoryDataParameter::_table_ =
        MemoryDataParameter::InternalGenerateParseTable_(MemoryDataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void MemoryDataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.MemoryDataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    ::memset(&this_._impl_.batch_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.width_) -
                 reinterpret_cast<char*>(&this_._impl_.batch_size_)) +
                 sizeof(_impl_.width_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL MemoryDataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const MemoryDataParameter& this_ = static_cast<const MemoryDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL MemoryDataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const MemoryDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.MemoryDataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 batch_size = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_batch_size(), target);
  }

  // optional uint32 channels = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_channels(), target);
  }

  // optional uint32 height = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_height(), target);
  }

  // optional uint32 width = 4;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_width(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.MemoryDataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t MemoryDataParameter::ByteSizeLong(const MessageLite& base) {
  const MemoryDataParameter& this_ = static_cast<const MemoryDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t MemoryDataParameter::ByteSizeLong() const {
  const MemoryDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.MemoryDataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    // optional uint32 batch_size = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_batch_size());
    }
    // optional uint32 channels = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_channels());
    }
    // optional uint32 height = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_height());
    }
    // optional uint32 width = 4;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_width());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void MemoryDataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<MemoryDataParameter*>(&to_msg);
  auto& from = static_cast<const MemoryDataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.MemoryDataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.batch_size_ = from._impl_.batch_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.channels_ = from._impl_.channels_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.height_ = from._impl_.height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.width_ = from._impl_.width_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void MemoryDataParameter::InternalSwap(MemoryDataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.width_)
      + sizeof(MemoryDataParameter::_impl_.width_)
      - PROTOBUF_FIELD_OFFSET(MemoryDataParameter, _impl_.batch_size_)>(
          reinterpret_cast<char*>(&_impl_.batch_size_),
          reinterpret_cast<char*>(&other->_impl_.batch_size_));
}

::google::protobuf::Metadata MemoryDataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

MVNParameter::MVNParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MVNParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.MVNParameter)
}
MVNParameter::MVNParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MVNParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, MVNParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE MVNParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : normalize_variance_{true},
        eps_{1e-09f} {}

inline void MVNParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.across_channels_ = {};
}
MVNParameter::~MVNParameter() {
  // @@protoc_insertion_point(destructor:caffe.MVNParameter)
  SharedDtor(*this);
}
inline void MVNParameter::SharedDtor(MessageLite& self) {
  MVNParameter& this_ = static_cast<MVNParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull MVNParameter_class_data_ =
        MVNParameter::InternalGenerateClassData_(MVNParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MVNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MVNParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(MVNParameter_class_data_.tc_table);
  return MVNParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
MVNParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&MVNParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&MVNParameter_globals_));
  return MVNParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const MVNParameter::ParseTableT_
    MVNParameter::_table_ =
        MVNParameter::InternalGenerateParseTable_(MVNParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void MVNParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.MVNParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.across_channels_ = false;
    this_._impl_.normalize_variance_ = true;
    this_._impl_.eps_ = 1e-09f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL MVNParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const MVNParameter& this_ = static_cast<const MVNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL MVNParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const MVNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.MVNParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional bool normalize_variance = 1 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        1, this_._internal_normalize_variance(), target);
  }

  // optional bool across_channels = 2 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_across_channels(), target);
  }

  // optional float eps = 3 [default = 1e-09];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_eps(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.MVNParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t MVNParameter::ByteSizeLong(const MessageLite& base) {
  const MVNParameter& this_ = static_cast<const MVNParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t MVNParameter::ByteSizeLong() const {
  const MVNParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.MVNParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000003U & cached_has_bits) * 2;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void MVNParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<MVNParameter*>(&to_msg);
  auto& from = static_cast<const MVNParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.MVNParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.across_channels_ = from._impl_.across_channels_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.normalize_variance_ = from._impl_.normalize_variance_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.eps_ = from._impl_.eps_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void MVNParameter::InternalSwap(MVNParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.eps_)
      + sizeof(MVNParameter::_impl_.eps_)
      - PROTOBUF_FIELD_OFFSET(MVNParameter, _impl_.across_channels_)>(
          reinterpret_cast<char*>(&_impl_.across_channels_),
          reinterpret_cast<char*>(&other->_impl_.across_channels_));
}

::google::protobuf::Metadata MVNParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

NormalizeParameter::NormalizeParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NormalizeParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.NormalizeParameter)
}
PROTOBUF_NDEBUG_INLINE NormalizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::NormalizeParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

NormalizeParameter::NormalizeParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const NormalizeParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, NormalizeParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  NormalizeParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.scale_filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.scale_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, across_spatial_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, across_spatial_),
           offsetof(Impl_, eps_) -
               offsetof(Impl_, across_spatial_) +
               sizeof(Impl_::eps_));

  // @@protoc_insertion_point(copy_constructor:caffe.NormalizeParameter)
}
PROTOBUF_NDEBUG_INLINE NormalizeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : across_spatial_{true},
        channel_shared_{true},
        eps_{1e-10f} {}

inline void NormalizeParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.scale_filler_ = {};
}
NormalizeParameter::~NormalizeParameter() {
  // @@protoc_insertion_point(destructor:caffe.NormalizeParameter)
  SharedDtor(*this);
}
inline void NormalizeParameter::SharedDtor(MessageLite& self) {
  NormalizeParameter& this_ = static_cast<NormalizeParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.scale_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull NormalizeParameter_class_data_ =
        NormalizeParameter::InternalGenerateClassData_(NormalizeParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NormalizeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NormalizeParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(NormalizeParameter_class_data_.tc_table);
  return NormalizeParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
NormalizeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&NormalizeParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&NormalizeParameter_globals_));
  return NormalizeParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const NormalizeParameter::ParseTableT_
    NormalizeParameter::_table_ =
        NormalizeParameter::InternalGenerateParseTable_(NormalizeParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void NormalizeParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.NormalizeParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.scale_filler_ != nullptr);
      this_._impl_.scale_filler_->Clear();
    }
    this_._impl_.across_spatial_ = true;
    this_._impl_.channel_shared_ = true;
    this_._impl_.eps_ = 1e-10f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL NormalizeParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const NormalizeParameter& this_ = static_cast<const NormalizeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL NormalizeParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const NormalizeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.NormalizeParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional bool across_spatial = 1 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        1, this_._internal_across_spatial(), target);
  }

  // optional .caffe.FillerParameter scale_filler = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *this_._impl_.scale_filler_, this_._impl_.scale_filler_->GetCachedSize(), target,
        stream);
  }

  // optional bool channel_shared = 3 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        3, this_._internal_channel_shared(), target);
  }

  // optional float eps = 4 [default = 1e-10];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        4, this_._internal_eps(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.NormalizeParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t NormalizeParameter::ByteSizeLong(const MessageLite& base) {
  const NormalizeParameter& this_ = static_cast<const NormalizeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t NormalizeParameter::ByteSizeLong() const {
  const NormalizeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.NormalizeParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000008U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000006U & cached_has_bits) * 2;
   {
    // optional .caffe.FillerParameter scale_filler = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.scale_filler_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void NormalizeParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<NormalizeParameter*>(&to_msg);
  auto& from = static_cast<const NormalizeParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.NormalizeParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.scale_filler_ != nullptr);
      if (_this->_impl_.scale_filler_ == nullptr) {
        _this->_impl_.scale_filler_ = Super_::CopyConstruct(arena, *from._impl_.scale_filler_);
      } else {
        _this->_impl_.scale_filler_->MergeFrom(*from._impl_.scale_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.across_spatial_ = from._impl_.across_spatial_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.channel_shared_ = from._impl_.channel_shared_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.eps_ = from._impl_.eps_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void NormalizeParameter::InternalSwap(NormalizeParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.eps_)
      + sizeof(NormalizeParameter::_impl_.eps_)
      - PROTOBUF_FIELD_OFFSET(NormalizeParameter, _impl_.scale_filler_)>(
          reinterpret_cast<char*>(&_impl_.scale_filler_),
          reinterpret_cast<char*>(&other->_impl_.scale_filler_));
}

::google::protobuf::Metadata NormalizeParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PermuteParameter::PermuteParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PermuteParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PermuteParameter)
}
PROTOBUF_NDEBUG_INLINE PermuteParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::PermuteParameter& from_msg)
      : _has_bits_{from._has_bits_},
        order_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::PermuteParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::PermuteParameter, _impl_.order_)>()
          , arena, from.order_
        }
     {}

PermuteParameter::PermuteParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const PermuteParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PermuteParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  PermuteParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);

  // @@protoc_insertion_point(copy_constructor:caffe.PermuteParameter)
}
PROTOBUF_NDEBUG_INLINE PermuteParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : order_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PermuteParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PermuteParameter, _impl_.order_)>()
         }
     {}

inline void PermuteParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
PermuteParameter::~PermuteParameter() {
  // @@protoc_insertion_point(destructor:caffe.PermuteParameter)
  SharedDtor(*this);
}
inline void PermuteParameter::SharedDtor(MessageLite& self) {
  PermuteParameter& this_ = static_cast<PermuteParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PermuteParameter_class_data_ =
        PermuteParameter::InternalGenerateClassData_(PermuteParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PermuteParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PermuteParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PermuteParameter_class_data_.tc_table);
  return PermuteParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PermuteParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PermuteParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PermuteParameter_globals_));
  return PermuteParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PermuteParameter::ParseTableT_
    PermuteParameter::_table_ =
        PermuteParameter::InternalGenerateParseTable_(PermuteParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PermuteParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PermuteParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _impl_.order_.Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PermuteParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PermuteParameter& this_ = static_cast<const PermuteParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PermuteParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PermuteParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PermuteParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated uint32 order = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_order_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          1, this_._internal_order().Get(i), target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PermuteParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PermuteParameter::ByteSizeLong(const MessageLite& base) {
  const PermuteParameter& this_ = static_cast<const PermuteParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PermuteParameter::ByteSizeLong() const {
  const PermuteParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PermuteParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
   {
    // repeated uint32 order = 1;
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_order());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_order_size());
      total_size += tag_size + data_size;
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PermuteParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PermuteParameter*>(&to_msg);
  auto& from = static_cast<const PermuteParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PermuteParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_internal_mutable_order()->MergeFrom(from._internal_order());
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PermuteParameter::InternalSwap(PermuteParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.order_.InternalSwap(&other->_impl_.order_);
}

::google::protobuf::Metadata PermuteParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PoolingParameter::PoolingParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PoolingParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PoolingParameter)
}
PoolingParameter::PoolingParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PoolingParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PoolingParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE PoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : stride_{1u} {}

inline void PoolingParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, pool_),
           0,
           offsetof(Impl_, global_pooling_) -
               offsetof(Impl_, pool_) +
               sizeof(Impl_::global_pooling_));
}
PoolingParameter::~PoolingParameter() {
  // @@protoc_insertion_point(destructor:caffe.PoolingParameter)
  SharedDtor(*this);
}
inline void PoolingParameter::SharedDtor(MessageLite& self) {
  PoolingParameter& this_ = static_cast<PoolingParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PoolingParameter_class_data_ =
        PoolingParameter::InternalGenerateClassData_(PoolingParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PoolingParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PoolingParameter_class_data_.tc_table);
  return PoolingParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PoolingParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PoolingParameter_globals_));
  return PoolingParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PoolingParameter::ParseTableT_
    PoolingParameter::_table_ =
        PoolingParameter::InternalGenerateParseTable_(PoolingParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PoolingParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PoolingParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    ::memset(&this_._impl_.pool_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.pad_h_) -
                 reinterpret_cast<char*>(&this_._impl_.pool_)) +
                 sizeof(_impl_.pad_h_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    ::memset(&this_._impl_.pad_w_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.global_pooling_) -
                 reinterpret_cast<char*>(&this_._impl_.pad_w_)) +
                 sizeof(_impl_.global_pooling_));
    this_._impl_.stride_ = 1u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PoolingParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PoolingParameter& this_ = static_cast<const PoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PoolingParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PoolingParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.PoolingParameter.PoolMethod pool = 1 [default = MAX];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_pool(), target);
  }

  // optional uint32 kernel_size = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_kernel_size(), target);
  }

  // optional uint32 stride = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_stride(), target);
  }

  // optional uint32 pad = 4 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_pad(), target);
  }

  // optional uint32 kernel_h = 5;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        5, this_._internal_kernel_h(), target);
  }

  // optional uint32 kernel_w = 6;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        6, this_._internal_kernel_w(), target);
  }

  // optional uint32 stride_h = 7;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_stride_h(), target);
  }

  // optional uint32 stride_w = 8;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        8, this_._internal_stride_w(), target);
  }

  // optional uint32 pad_h = 9 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_pad_h(), target);
  }

  // optional uint32 pad_w = 10 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_pad_w(), target);
  }

  // optional .caffe.PoolingParameter.Engine engine = 11 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        11, this_._internal_engine(), target);
  }

  // optional bool global_pooling = 12 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        12, this_._internal_global_pooling(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PoolingParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PoolingParameter::ByteSizeLong(const MessageLite& base) {
  const PoolingParameter& this_ = static_cast<const PoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PoolingParameter::ByteSizeLong() const {
  const PoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PoolingParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000400U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // optional .caffe.PoolingParameter.PoolMethod pool = 1 [default = MAX];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_pool());
    }
    // optional uint32 kernel_size = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernel_size());
    }
    // optional uint32 pad = 4 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad());
    }
    // optional uint32 kernel_h = 5;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernel_h());
    }
    // optional uint32 kernel_w = 6;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernel_w());
    }
    // optional uint32 stride_h = 7;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride_h());
    }
    // optional uint32 stride_w = 8;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride_w());
    }
    // optional uint32 pad_h = 9 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad_h());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000b00U)) {
    // optional uint32 pad_w = 10 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad_w());
    }
    // optional .caffe.PoolingParameter.Engine engine = 11 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
    // optional uint32 stride = 3 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PoolingParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PoolingParameter*>(&to_msg);
  auto& from = static_cast<const PoolingParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PoolingParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.pool_ = from._impl_.pool_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.kernel_size_ = from._impl_.kernel_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.pad_ = from._impl_.pad_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.kernel_h_ = from._impl_.kernel_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.kernel_w_ = from._impl_.kernel_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.stride_h_ = from._impl_.stride_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.stride_w_ = from._impl_.stride_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.pad_h_ = from._impl_.pad_h_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.pad_w_ = from._impl_.pad_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.global_pooling_ = from._impl_.global_pooling_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.stride_ = from._impl_.stride_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PoolingParameter::InternalSwap(PoolingParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.stride_)
      + sizeof(PoolingParameter::_impl_.stride_)
      - PROTOBUF_FIELD_OFFSET(PoolingParameter, _impl_.pool_)>(
          reinterpret_cast<char*>(&_impl_.pool_),
          reinterpret_cast<char*>(&other->_impl_.pool_));
}

::google::protobuf::Metadata PoolingParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PowerParameter::PowerParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PowerParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PowerParameter)
}
PowerParameter::PowerParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PowerParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PowerParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE PowerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : power_{1},
        scale_{1} {}

inline void PowerParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.shift_ = {};
}
PowerParameter::~PowerParameter() {
  // @@protoc_insertion_point(destructor:caffe.PowerParameter)
  SharedDtor(*this);
}
inline void PowerParameter::SharedDtor(MessageLite& self) {
  PowerParameter& this_ = static_cast<PowerParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PowerParameter_class_data_ =
        PowerParameter::InternalGenerateClassData_(PowerParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PowerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PowerParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PowerParameter_class_data_.tc_table);
  return PowerParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PowerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PowerParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PowerParameter_globals_));
  return PowerParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PowerParameter::ParseTableT_
    PowerParameter::_table_ =
        PowerParameter::InternalGenerateParseTable_(PowerParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PowerParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PowerParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.shift_ = 0;
    this_._impl_.power_ = 1;
    this_._impl_.scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PowerParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PowerParameter& this_ = static_cast<const PowerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PowerParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PowerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PowerParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float power = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_power(), target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional float shift = 3 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_shift(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PowerParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PowerParameter::ByteSizeLong(const MessageLite& base) {
  const PowerParameter& this_ = static_cast<const PowerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PowerParameter::ByteSizeLong() const {
  const PowerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PowerParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000007U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PowerParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PowerParameter*>(&to_msg);
  auto& from = static_cast<const PowerParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PowerParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.shift_ = from._impl_.shift_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.power_ = from._impl_.power_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PowerParameter::InternalSwap(PowerParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.scale_)
      + sizeof(PowerParameter::_impl_.scale_)
      - PROTOBUF_FIELD_OFFSET(PowerParameter, _impl_.shift_)>(
          reinterpret_cast<char*>(&_impl_.shift_),
          reinterpret_cast<char*>(&other->_impl_.shift_));
}

::google::protobuf::Metadata PowerParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PriorBoxParameter::PriorBoxParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PriorBoxParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PriorBoxParameter)
}
PROTOBUF_NDEBUG_INLINE PriorBoxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::PriorBoxParameter& from_msg)
      : _has_bits_{from._has_bits_},
        min_size_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::PriorBoxParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.min_size_)>()
          , arena, from.min_size_
        }
        ,
        max_size_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::PriorBoxParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.max_size_)>()
          , arena, from.max_size_
        }
        ,
        aspect_ratio_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::PriorBoxParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.aspect_ratio_)>()
          , arena, from.aspect_ratio_
        }
        ,
        variance_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::PriorBoxParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.variance_)>()
          , arena, from.variance_
        }
     {}

PriorBoxParameter::PriorBoxParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const PriorBoxParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PriorBoxParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  PriorBoxParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, clip_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, clip_),
           offsetof(Impl_, offset_) -
               offsetof(Impl_, clip_) +
               sizeof(Impl_::offset_));

  // @@protoc_insertion_point(copy_constructor:caffe.PriorBoxParameter)
}
PROTOBUF_NDEBUG_INLINE PriorBoxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : min_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.min_size_)>()
         }
        ,
        max_size_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.max_size_)>()
         }
        ,
        aspect_ratio_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.aspect_ratio_)>()
         }
        ,
        variance_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::PriorBoxParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::PriorBoxParameter, _impl_.variance_)>()
         }
        ,
        flip_{true},
        offset_{0.5f} {}

inline void PriorBoxParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, clip_),
           0,
           offsetof(Impl_, step_w_) -
               offsetof(Impl_, clip_) +
               sizeof(Impl_::step_w_));
}
PriorBoxParameter::~PriorBoxParameter() {
  // @@protoc_insertion_point(destructor:caffe.PriorBoxParameter)
  SharedDtor(*this);
}
inline void PriorBoxParameter::SharedDtor(MessageLite& self) {
  PriorBoxParameter& this_ = static_cast<PriorBoxParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PriorBoxParameter_class_data_ =
        PriorBoxParameter::InternalGenerateClassData_(PriorBoxParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PriorBoxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PriorBoxParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PriorBoxParameter_class_data_.tc_table);
  return PriorBoxParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PriorBoxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PriorBoxParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PriorBoxParameter_globals_));
  return PriorBoxParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PriorBoxParameter::ParseTableT_
    PriorBoxParameter::_table_ =
        PriorBoxParameter::InternalGenerateParseTable_(PriorBoxParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PriorBoxParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PriorBoxParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.min_size_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.max_size_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.aspect_ratio_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.variance_.Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000f0U)) {
    ::memset(&this_._impl_.clip_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.img_w_) -
                 reinterpret_cast<char*>(&this_._impl_.clip_)) +
                 sizeof(_impl_.img_w_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    ::memset(&this_._impl_.step_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.step_w_) -
                 reinterpret_cast<char*>(&this_._impl_.step_)) +
                 sizeof(_impl_.step_w_));
    this_._impl_.flip_ = true;
    this_._impl_.offset_ = 0.5f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PriorBoxParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PriorBoxParameter& this_ = static_cast<const PriorBoxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PriorBoxParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PriorBoxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PriorBoxParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // repeated float min_size = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_min_size_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          1, this_._internal_min_size().Get(i), target);
    }
  }

  // repeated float max_size = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_max_size_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          2, this_._internal_max_size().Get(i), target);
    }
  }

  // repeated float aspect_ratio = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_aspect_ratio_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          3, this_._internal_aspect_ratio().Get(i), target);
    }
  }

  // optional bool flip = 4 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        4, this_._internal_flip(), target);
  }

  // optional bool clip = 5 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        5, this_._internal_clip(), target);
  }

  // repeated float variance = 6;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (int i = 0, n = this_._internal_variance_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          6, this_._internal_variance().Get(i), target);
    }
  }

  // optional uint32 img_size = 7;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_img_size(), target);
  }

  // optional uint32 img_h = 8;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        8, this_._internal_img_h(), target);
  }

  // optional uint32 img_w = 9;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_img_w(), target);
  }

  // optional float step = 10;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        10, this_._internal_step(), target);
  }

  // optional float step_h = 11;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        11, this_._internal_step_h(), target);
  }

  // optional float step_w = 12;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        12, this_._internal_step_w(), target);
  }

  // optional float offset = 13 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        13, this_._internal_offset(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PriorBoxParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PriorBoxParameter::ByteSizeLong(const MessageLite& base) {
  const PriorBoxParameter& this_ = static_cast<const PriorBoxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PriorBoxParameter::ByteSizeLong() const {
  const PriorBoxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PriorBoxParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00001700U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x00000810U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x000000efU)) {
    // repeated float min_size = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_min_size_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_min_size_size());
      total_size += tag_size + data_size;
    }
    // repeated float max_size = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_max_size_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_max_size_size());
      total_size += tag_size + data_size;
    }
    // repeated float aspect_ratio = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_aspect_ratio_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_aspect_ratio_size());
      total_size += tag_size + data_size;
    }
    // repeated float variance = 6;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_variance_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_variance_size());
      total_size += tag_size + data_size;
    }
    // optional uint32 img_size = 7;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_img_size());
    }
    // optional uint32 img_h = 8;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_img_h());
    }
    // optional uint32 img_w = 9;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_img_w());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PriorBoxParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PriorBoxParameter*>(&to_msg);
  auto& from = static_cast<const PriorBoxParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PriorBoxParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_min_size()->MergeFrom(from._internal_min_size());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_max_size()->MergeFrom(from._internal_max_size());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_aspect_ratio()->MergeFrom(from._internal_aspect_ratio());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_variance()->MergeFrom(from._internal_variance());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.clip_ = from._impl_.clip_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.img_size_ = from._impl_.img_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.img_h_ = from._impl_.img_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.img_w_ = from._impl_.img_w_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.step_ = from._impl_.step_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.step_h_ = from._impl_.step_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.step_w_ = from._impl_.step_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.flip_ = from._impl_.flip_;
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.offset_ = from._impl_.offset_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PriorBoxParameter::InternalSwap(PriorBoxParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.min_size_.InternalSwap(&other->_impl_.min_size_);
  _impl_.max_size_.InternalSwap(&other->_impl_.max_size_);
  _impl_.aspect_ratio_.InternalSwap(&other->_impl_.aspect_ratio_);
  _impl_.variance_.InternalSwap(&other->_impl_.variance_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.offset_)
      + sizeof(PriorBoxParameter::_impl_.offset_)
      - PROTOBUF_FIELD_OFFSET(PriorBoxParameter, _impl_.clip_)>(
          reinterpret_cast<char*>(&_impl_.clip_),
          reinterpret_cast<char*>(&other->_impl_.clip_));
}

::google::protobuf::Metadata PriorBoxParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PSROIPoolingParameter::PSROIPoolingParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PSROIPoolingParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PSROIPoolingParameter)
}
PSROIPoolingParameter::PSROIPoolingParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PSROIPoolingParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PSROIPoolingParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE PSROIPoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void PSROIPoolingParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, spatial_scale_),
           0,
           offsetof(Impl_, group_size_) -
               offsetof(Impl_, spatial_scale_) +
               sizeof(Impl_::group_size_));
}
PSROIPoolingParameter::~PSROIPoolingParameter() {
  // @@protoc_insertion_point(destructor:caffe.PSROIPoolingParameter)
  SharedDtor(*this);
}
inline void PSROIPoolingParameter::SharedDtor(MessageLite& self) {
  PSROIPoolingParameter& this_ = static_cast<PSROIPoolingParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PSROIPoolingParameter_class_data_ =
        PSROIPoolingParameter::InternalGenerateClassData_(PSROIPoolingParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PSROIPoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PSROIPoolingParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PSROIPoolingParameter_class_data_.tc_table);
  return PSROIPoolingParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PSROIPoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PSROIPoolingParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PSROIPoolingParameter_globals_));
  return PSROIPoolingParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PSROIPoolingParameter::ParseTableT_
    PSROIPoolingParameter::_table_ =
        PSROIPoolingParameter::InternalGenerateParseTable_(PSROIPoolingParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PSROIPoolingParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PSROIPoolingParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.spatial_scale_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.group_size_) -
                 reinterpret_cast<char*>(&this_._impl_.spatial_scale_)) +
                 sizeof(_impl_.group_size_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PSROIPoolingParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PSROIPoolingParameter& this_ = static_cast<const PSROIPoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PSROIPoolingParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PSROIPoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PSROIPoolingParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // required float spatial_scale = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_spatial_scale(), target);
  }

  // required int32 output_dim = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_output_dim(), target);
  }

  // required int32 group_size = 3;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_group_size(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PSROIPoolingParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PSROIPoolingParameter::ByteSizeLong(const MessageLite& base) {
  const PSROIPoolingParameter& this_ = static_cast<const PSROIPoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PSROIPoolingParameter::ByteSizeLong() const {
  const PSROIPoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PSROIPoolingParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
    // required int32 output_dim = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_output_dim());
    }
    // required int32 group_size = 3;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_group_size());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PSROIPoolingParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PSROIPoolingParameter*>(&to_msg);
  auto& from = static_cast<const PSROIPoolingParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PSROIPoolingParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.spatial_scale_ = from._impl_.spatial_scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.output_dim_ = from._impl_.output_dim_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.group_size_ = from._impl_.group_size_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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

PROTOBUF_NOINLINE bool PSROIPoolingParameter::IsInitializedImpl(
    const MessageLite& msg) {
  auto& this_ = static_cast<const PSROIPoolingParameter&>(msg);
  if (_Internal::MissingRequiredFields(this_._impl_._has_bits_)) {
    return false;
  }
  return true;
}

void PSROIPoolingParameter::InternalSwap(PSROIPoolingParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.group_size_)
      + sizeof(PSROIPoolingParameter::_impl_.group_size_)
      - PROTOBUF_FIELD_OFFSET(PSROIPoolingParameter, _impl_.spatial_scale_)>(
          reinterpret_cast<char*>(&_impl_.spatial_scale_),
          reinterpret_cast<char*>(&other->_impl_.spatial_scale_));
}

::google::protobuf::Metadata PSROIPoolingParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PythonParameter::PythonParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PythonParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PythonParameter)
}
PROTOBUF_NDEBUG_INLINE PythonParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::PythonParameter& from_msg)
      : _has_bits_{from._has_bits_},
        module_(arena, from.module_),
        layer_(arena, from.layer_),
        param_str_(arena, from.param_str_) {}

PythonParameter::PythonParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const PythonParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PythonParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  PythonParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  _impl_.share_in_parallel_ = from._impl_.share_in_parallel_;

  // @@protoc_insertion_point(copy_constructor:caffe.PythonParameter)
}
PROTOBUF_NDEBUG_INLINE PythonParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : module_(arena),
        layer_(arena),
        param_str_(arena) {}

inline void PythonParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.share_in_parallel_ = {};
}
PythonParameter::~PythonParameter() {
  // @@protoc_insertion_point(destructor:caffe.PythonParameter)
  SharedDtor(*this);
}
inline void PythonParameter::SharedDtor(MessageLite& self) {
  PythonParameter& this_ = static_cast<PythonParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.module_.Destroy();
  this_._impl_.layer_.Destroy();
  this_._impl_.param_str_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PythonParameter_class_data_ =
        PythonParameter::InternalGenerateClassData_(PythonParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PythonParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PythonParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PythonParameter_class_data_.tc_table);
  return PythonParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PythonParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PythonParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PythonParameter_globals_));
  return PythonParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PythonParameter::ParseTableT_
    PythonParameter::_table_ =
        PythonParameter::InternalGenerateParseTable_(PythonParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PythonParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PythonParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.module_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.layer_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      this_._impl_.param_str_.ClearNonDefaultToEmpty();
    }
  }
  this_._impl_.share_in_parallel_ = false;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PythonParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PythonParameter& this_ = static_cast<const PythonParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PythonParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PythonParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PythonParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string module = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_module();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional string layer = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_layer();
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  // optional string param_str = 3 [default = ""];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    const ::std::string& _s = this_._internal_param_str();
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // optional bool share_in_parallel = 4 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        4, this_._internal_share_in_parallel(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PythonParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PythonParameter::ByteSizeLong(const MessageLite& base) {
  const PythonParameter& this_ = static_cast<const PythonParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PythonParameter::ByteSizeLong() const {
  const PythonParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PythonParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000008U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional string module = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_module());
    }
    // optional string layer = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_layer());
    }
    // optional string param_str = 3 [default = ""];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_param_str());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PythonParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PythonParameter*>(&to_msg);
  auto& from = static_cast<const PythonParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PythonParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_module(from._internal_module());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_layer(from._internal_layer());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_set_param_str(from._internal_param_str());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.share_in_parallel_ = from._impl_.share_in_parallel_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PythonParameter::InternalSwap(PythonParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.module_, &other->_impl_.module_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.layer_, &other->_impl_.layer_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.param_str_, &other->_impl_.param_str_, arena);
  swap(_impl_.share_in_parallel_, other->_impl_.share_in_parallel_);
}

::google::protobuf::Metadata PythonParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

RecurrentParameter::RecurrentParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, RecurrentParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.RecurrentParameter)
}
PROTOBUF_NDEBUG_INLINE RecurrentParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::RecurrentParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

RecurrentParameter::RecurrentParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const RecurrentParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, RecurrentParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  RecurrentParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.weight_filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.weight_filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_output_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_output_),
           offsetof(Impl_, expose_hidden_) -
               offsetof(Impl_, num_output_) +
               sizeof(Impl_::expose_hidden_));

  // @@protoc_insertion_point(copy_constructor:caffe.RecurrentParameter)
}
PROTOBUF_NDEBUG_INLINE RecurrentParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void RecurrentParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, weight_filler_),
           0,
           offsetof(Impl_, expose_hidden_) -
               offsetof(Impl_, weight_filler_) +
               sizeof(Impl_::expose_hidden_));
}
RecurrentParameter::~RecurrentParameter() {
  // @@protoc_insertion_point(destructor:caffe.RecurrentParameter)
  SharedDtor(*this);
}
inline void RecurrentParameter::SharedDtor(MessageLite& self) {
  RecurrentParameter& this_ = static_cast<RecurrentParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.weight_filler_;
  delete this_._impl_.bias_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull RecurrentParameter_class_data_ =
        RecurrentParameter::InternalGenerateClassData_(RecurrentParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
RecurrentParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&RecurrentParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(RecurrentParameter_class_data_.tc_table);
  return RecurrentParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
RecurrentParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&RecurrentParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&RecurrentParameter_globals_));
  return RecurrentParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const RecurrentParameter::ParseTableT_
    RecurrentParameter::_table_ =
        RecurrentParameter::InternalGenerateParseTable_(RecurrentParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void RecurrentParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.RecurrentParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.weight_filler_ != nullptr);
      this_._impl_.weight_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000001cU)) {
    ::memset(&this_._impl_.num_output_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.expose_hidden_) -
                 reinterpret_cast<char*>(&this_._impl_.num_output_)) +
                 sizeof(_impl_.expose_hidden_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL RecurrentParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const RecurrentParameter& this_ = static_cast<const RecurrentParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL RecurrentParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const RecurrentParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.RecurrentParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 num_output = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_num_output(), target);
  }

  // optional .caffe.FillerParameter weight_filler = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *this_._impl_.weight_filler_, this_._impl_.weight_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter bias_filler = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  // optional bool debug_info = 4 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        4, this_._internal_debug_info(), target);
  }

  // optional bool expose_hidden = 5 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        5, this_._internal_expose_hidden(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.RecurrentParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t RecurrentParameter::ByteSizeLong(const MessageLite& base) {
  const RecurrentParameter& this_ = static_cast<const RecurrentParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t RecurrentParameter::ByteSizeLong() const {
  const RecurrentParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.RecurrentParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00000018U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .caffe.FillerParameter weight_filler = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.weight_filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional uint32 num_output = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_output());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void RecurrentParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<RecurrentParameter*>(&to_msg);
  auto& from = static_cast<const RecurrentParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.RecurrentParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.weight_filler_ != nullptr);
      if (_this->_impl_.weight_filler_ == nullptr) {
        _this->_impl_.weight_filler_ = Super_::CopyConstruct(arena, *from._impl_.weight_filler_);
      } else {
        _this->_impl_.weight_filler_->MergeFrom(*from._impl_.weight_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.num_output_ = from._impl_.num_output_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.debug_info_ = from._impl_.debug_info_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.expose_hidden_ = from._impl_.expose_hidden_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void RecurrentParameter::InternalSwap(RecurrentParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.expose_hidden_)
      + sizeof(RecurrentParameter::_impl_.expose_hidden_)
      - PROTOBUF_FIELD_OFFSET(RecurrentParameter, _impl_.weight_filler_)>(
          reinterpret_cast<char*>(&_impl_.weight_filler_),
          reinterpret_cast<char*>(&other->_impl_.weight_filler_));
}

::google::protobuf::Metadata RecurrentParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ReductionParameter::ReductionParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReductionParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ReductionParameter)
}
ReductionParameter::ReductionParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ReductionParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReductionParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ReductionParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : operation_{static_cast< ::caffe::ReductionParameter_ReductionOp >(1)},
        coeff_{1} {}

inline void ReductionParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.axis_ = {};
}
ReductionParameter::~ReductionParameter() {
  // @@protoc_insertion_point(destructor:caffe.ReductionParameter)
  SharedDtor(*this);
}
inline void ReductionParameter::SharedDtor(MessageLite& self) {
  ReductionParameter& this_ = static_cast<ReductionParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ReductionParameter_class_data_ =
        ReductionParameter::InternalGenerateClassData_(ReductionParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReductionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReductionParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ReductionParameter_class_data_.tc_table);
  return ReductionParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReductionParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReductionParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ReductionParameter_globals_));
  return ReductionParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ReductionParameter::ParseTableT_
    ReductionParameter::_table_ =
        ReductionParameter::InternalGenerateParseTable_(ReductionParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ReductionParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ReductionParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    this_._impl_.axis_ = 0;
    this_._impl_.operation_ = 1;
    this_._impl_.coeff_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ReductionParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ReductionParameter& this_ = static_cast<const ReductionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ReductionParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ReductionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ReductionParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.ReductionParameter.ReductionOp operation = 1 [default = SUM];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_operation(), target);
  }

  // optional int32 axis = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_axis(), target);
  }

  // optional float coeff = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_coeff(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ReductionParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ReductionParameter::ByteSizeLong(const MessageLite& base) {
  const ReductionParameter& this_ = static_cast<const ReductionParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ReductionParameter::ByteSizeLong() const {
  const ReductionParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ReductionParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional int32 axis = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional .caffe.ReductionParameter.ReductionOp operation = 1 [default = SUM];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_operation());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ReductionParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ReductionParameter*>(&to_msg);
  auto& from = static_cast<const ReductionParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ReductionParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.operation_ = from._impl_.operation_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.coeff_ = from._impl_.coeff_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ReductionParameter::InternalSwap(ReductionParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.coeff_)
      + sizeof(ReductionParameter::_impl_.coeff_)
      - PROTOBUF_FIELD_OFFSET(ReductionParameter, _impl_.axis_)>(
          reinterpret_cast<char*>(&_impl_.axis_),
          reinterpret_cast<char*>(&other->_impl_.axis_));
}

::google::protobuf::Metadata ReductionParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ReLUParameter::ReLUParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReLUParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ReLUParameter)
}
ReLUParameter::ReLUParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ReLUParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReLUParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ReLUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void ReLUParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, negative_slope_),
           0,
           offsetof(Impl_, engine_) -
               offsetof(Impl_, negative_slope_) +
               sizeof(Impl_::engine_));
}
ReLUParameter::~ReLUParameter() {
  // @@protoc_insertion_point(destructor:caffe.ReLUParameter)
  SharedDtor(*this);
}
inline void ReLUParameter::SharedDtor(MessageLite& self) {
  ReLUParameter& this_ = static_cast<ReLUParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ReLUParameter_class_data_ =
        ReLUParameter::InternalGenerateClassData_(ReLUParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReLUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReLUParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ReLUParameter_class_data_.tc_table);
  return ReLUParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReLUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReLUParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ReLUParameter_globals_));
  return ReLUParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ReLUParameter::ParseTableT_
    ReLUParameter::_table_ =
        ReLUParameter::InternalGenerateParseTable_(ReLUParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ReLUParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ReLUParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    ::memset(&this_._impl_.negative_slope_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.engine_) -
                 reinterpret_cast<char*>(&this_._impl_.negative_slope_)) +
                 sizeof(_impl_.engine_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ReLUParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ReLUParameter& this_ = static_cast<const ReLUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ReLUParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ReLUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ReLUParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float negative_slope = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_negative_slope(), target);
  }

  // optional .caffe.ReLUParameter.Engine engine = 2 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this_._internal_engine(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ReLUParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ReLUParameter::ByteSizeLong(const MessageLite& base) {
  const ReLUParameter& this_ = static_cast<const ReLUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ReLUParameter::ByteSizeLong() const {
  const ReLUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ReLUParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
   {
    // optional .caffe.ReLUParameter.Engine engine = 2 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ReLUParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ReLUParameter*>(&to_msg);
  auto& from = static_cast<const ReLUParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ReLUParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.negative_slope_ = from._impl_.negative_slope_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ReLUParameter::InternalSwap(ReLUParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.engine_)
      + sizeof(ReLUParameter::_impl_.engine_)
      - PROTOBUF_FIELD_OFFSET(ReLUParameter, _impl_.negative_slope_)>(
          reinterpret_cast<char*>(&_impl_.negative_slope_),
          reinterpret_cast<char*>(&other->_impl_.negative_slope_));
}

::google::protobuf::Metadata ReLUParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ReorgParameter::ReorgParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReorgParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ReorgParameter)
}
ReorgParameter::ReorgParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ReorgParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReorgParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ReorgParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void ReorgParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, stride_),
           0,
           offsetof(Impl_, reverse_) -
               offsetof(Impl_, stride_) +
               sizeof(Impl_::reverse_));
}
ReorgParameter::~ReorgParameter() {
  // @@protoc_insertion_point(destructor:caffe.ReorgParameter)
  SharedDtor(*this);
}
inline void ReorgParameter::SharedDtor(MessageLite& self) {
  ReorgParameter& this_ = static_cast<ReorgParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ReorgParameter_class_data_ =
        ReorgParameter::InternalGenerateClassData_(ReorgParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReorgParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReorgParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ReorgParameter_class_data_.tc_table);
  return ReorgParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReorgParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReorgParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ReorgParameter_globals_));
  return ReorgParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ReorgParameter::ParseTableT_
    ReorgParameter::_table_ =
        ReorgParameter::InternalGenerateParseTable_(ReorgParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ReorgParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ReorgParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    ::memset(&this_._impl_.stride_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.reverse_) -
                 reinterpret_cast<char*>(&this_._impl_.stride_)) +
                 sizeof(_impl_.reverse_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ReorgParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ReorgParameter& this_ = static_cast<const ReorgParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ReorgParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ReorgParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ReorgParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 stride = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_stride(), target);
  }

  // optional bool reverse = 2 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_reverse(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ReorgParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ReorgParameter::ByteSizeLong(const MessageLite& base) {
  const ReorgParameter& this_ = static_cast<const ReorgParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ReorgParameter::ByteSizeLong() const {
  const ReorgParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ReorgParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000002U & cached_has_bits) * 2;
   {
    // optional uint32 stride = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ReorgParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ReorgParameter*>(&to_msg);
  auto& from = static_cast<const ReorgParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ReorgParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.stride_ = from._impl_.stride_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.reverse_ = from._impl_.reverse_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ReorgParameter::InternalSwap(ReorgParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.reverse_)
      + sizeof(ReorgParameter::_impl_.reverse_)
      - PROTOBUF_FIELD_OFFSET(ReorgParameter, _impl_.stride_)>(
          reinterpret_cast<char*>(&_impl_.stride_),
          reinterpret_cast<char*>(&other->_impl_.stride_));
}

::google::protobuf::Metadata ReorgParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ReshapeParameter::ReshapeParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReshapeParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ReshapeParameter)
}
PROTOBUF_NDEBUG_INLINE ReshapeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ReshapeParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

ReshapeParameter::ReshapeParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ReshapeParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ReshapeParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ReshapeParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.shape_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.shape_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, axis_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, axis_),
           offsetof(Impl_, num_axes_) -
               offsetof(Impl_, axis_) +
               sizeof(Impl_::num_axes_));

  // @@protoc_insertion_point(copy_constructor:caffe.ReshapeParameter)
}
PROTOBUF_NDEBUG_INLINE ReshapeParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : num_axes_{-1} {}

inline void ReshapeParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, shape_),
           0,
           offsetof(Impl_, axis_) -
               offsetof(Impl_, shape_) +
               sizeof(Impl_::axis_));
}
ReshapeParameter::~ReshapeParameter() {
  // @@protoc_insertion_point(destructor:caffe.ReshapeParameter)
  SharedDtor(*this);
}
inline void ReshapeParameter::SharedDtor(MessageLite& self) {
  ReshapeParameter& this_ = static_cast<ReshapeParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.shape_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ReshapeParameter_class_data_ =
        ReshapeParameter::InternalGenerateClassData_(ReshapeParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReshapeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReshapeParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ReshapeParameter_class_data_.tc_table);
  return ReshapeParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ReshapeParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ReshapeParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ReshapeParameter_globals_));
  return ReshapeParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ReshapeParameter::ParseTableT_
    ReshapeParameter::_table_ =
        ReshapeParameter::InternalGenerateParseTable_(ReshapeParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ReshapeParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ReshapeParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    ABSL_DCHECK(this_._impl_.shape_ != nullptr);
    this_._impl_.shape_->Clear();
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
    this_._impl_.axis_ = 0;
    this_._impl_.num_axes_ = -1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ReshapeParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ReshapeParameter& this_ = static_cast<const ReshapeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ReshapeParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ReshapeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ReshapeParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.BlobShape shape = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1, *this_._impl_.shape_, this_._impl_.shape_->GetCachedSize(), target,
        stream);
  }

  // optional int32 axis = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 num_axes = 3 [default = -1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_num_axes(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ReshapeParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ReshapeParameter::ByteSizeLong(const MessageLite& base) {
  const ReshapeParameter& this_ = static_cast<const ReshapeParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ReshapeParameter::ByteSizeLong() const {
  const ReshapeParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ReshapeParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional .caffe.BlobShape shape = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.shape_);
    }
    // optional int32 axis = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional int32 num_axes = 3 [default = -1];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_num_axes());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ReshapeParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ReshapeParameter*>(&to_msg);
  auto& from = static_cast<const ReshapeParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ReshapeParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.shape_ != nullptr);
      if (_this->_impl_.shape_ == nullptr) {
        _this->_impl_.shape_ = Super_::CopyConstruct(arena, *from._impl_.shape_);
      } else {
        _this->_impl_.shape_->MergeFrom(*from._impl_.shape_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.num_axes_ = from._impl_.num_axes_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ReshapeParameter::InternalSwap(ReshapeParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.num_axes_)
      + sizeof(ReshapeParameter::_impl_.num_axes_)
      - PROTOBUF_FIELD_OFFSET(ReshapeParameter, _impl_.shape_)>(
          reinterpret_cast<char*>(&_impl_.shape_),
          reinterpret_cast<char*>(&other->_impl_.shape_));
}

::google::protobuf::Metadata ReshapeParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ROIAlignParameter::ROIAlignParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ROIAlignParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ROIAlignParameter)
}
ROIAlignParameter::ROIAlignParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ROIAlignParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ROIAlignParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ROIAlignParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : spatial_scale_{1} {}

inline void ROIAlignParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, pooled_h_),
           0,
           offsetof(Impl_, pooled_w_) -
               offsetof(Impl_, pooled_h_) +
               sizeof(Impl_::pooled_w_));
}
ROIAlignParameter::~ROIAlignParameter() {
  // @@protoc_insertion_point(destructor:caffe.ROIAlignParameter)
  SharedDtor(*this);
}
inline void ROIAlignParameter::SharedDtor(MessageLite& self) {
  ROIAlignParameter& this_ = static_cast<ROIAlignParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ROIAlignParameter_class_data_ =
        ROIAlignParameter::InternalGenerateClassData_(ROIAlignParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ROIAlignParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ROIAlignParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ROIAlignParameter_class_data_.tc_table);
  return ROIAlignParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ROIAlignParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ROIAlignParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ROIAlignParameter_globals_));
  return ROIAlignParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ROIAlignParameter::ParseTableT_
    ROIAlignParameter::_table_ =
        ROIAlignParameter::InternalGenerateParseTable_(ROIAlignParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ROIAlignParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ROIAlignParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.pooled_h_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.pooled_w_) -
                 reinterpret_cast<char*>(&this_._impl_.pooled_h_)) +
                 sizeof(_impl_.pooled_w_));
    this_._impl_.spatial_scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ROIAlignParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ROIAlignParameter& this_ = static_cast<const ROIAlignParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ROIAlignParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ROIAlignParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ROIAlignParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 pooled_h = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_pooled_h(), target);
  }

  // optional uint32 pooled_w = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_pooled_w(), target);
  }

  // optional float spatial_scale = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_spatial_scale(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ROIAlignParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ROIAlignParameter::ByteSizeLong(const MessageLite& base) {
  const ROIAlignParameter& this_ = static_cast<const ROIAlignParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ROIAlignParameter::ByteSizeLong() const {
  const ROIAlignParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ROIAlignParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional uint32 pooled_h = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pooled_h());
    }
    // optional uint32 pooled_w = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pooled_w());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ROIAlignParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ROIAlignParameter*>(&to_msg);
  auto& from = static_cast<const ROIAlignParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ROIAlignParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.pooled_h_ = from._impl_.pooled_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.pooled_w_ = from._impl_.pooled_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.spatial_scale_ = from._impl_.spatial_scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ROIAlignParameter::InternalSwap(ROIAlignParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.spatial_scale_)
      + sizeof(ROIAlignParameter::_impl_.spatial_scale_)
      - PROTOBUF_FIELD_OFFSET(ROIAlignParameter, _impl_.pooled_h_)>(
          reinterpret_cast<char*>(&_impl_.pooled_h_),
          reinterpret_cast<char*>(&other->_impl_.pooled_h_));
}

::google::protobuf::Metadata ROIAlignParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ROIPoolingParameter::ROIPoolingParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ROIPoolingParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ROIPoolingParameter)
}
ROIPoolingParameter::ROIPoolingParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ROIPoolingParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ROIPoolingParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ROIPoolingParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : spatial_scale_{1} {}

inline void ROIPoolingParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, pooled_h_),
           0,
           offsetof(Impl_, pooled_w_) -
               offsetof(Impl_, pooled_h_) +
               sizeof(Impl_::pooled_w_));
}
ROIPoolingParameter::~ROIPoolingParameter() {
  // @@protoc_insertion_point(destructor:caffe.ROIPoolingParameter)
  SharedDtor(*this);
}
inline void ROIPoolingParameter::SharedDtor(MessageLite& self) {
  ROIPoolingParameter& this_ = static_cast<ROIPoolingParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ROIPoolingParameter_class_data_ =
        ROIPoolingParameter::InternalGenerateClassData_(ROIPoolingParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ROIPoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ROIPoolingParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ROIPoolingParameter_class_data_.tc_table);
  return ROIPoolingParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ROIPoolingParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ROIPoolingParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ROIPoolingParameter_globals_));
  return ROIPoolingParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ROIPoolingParameter::ParseTableT_
    ROIPoolingParameter::_table_ =
        ROIPoolingParameter::InternalGenerateParseTable_(ROIPoolingParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ROIPoolingParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ROIPoolingParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.pooled_h_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.pooled_w_) -
                 reinterpret_cast<char*>(&this_._impl_.pooled_h_)) +
                 sizeof(_impl_.pooled_w_));
    this_._impl_.spatial_scale_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ROIPoolingParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ROIPoolingParameter& this_ = static_cast<const ROIPoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ROIPoolingParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ROIPoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ROIPoolingParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 pooled_h = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_pooled_h(), target);
  }

  // optional uint32 pooled_w = 2 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this_._internal_pooled_w(), target);
  }

  // optional float spatial_scale = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        3, this_._internal_spatial_scale(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ROIPoolingParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ROIPoolingParameter::ByteSizeLong(const MessageLite& base) {
  const ROIPoolingParameter& this_ = static_cast<const ROIPoolingParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ROIPoolingParameter::ByteSizeLong() const {
  const ROIPoolingParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ROIPoolingParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 5;
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional uint32 pooled_h = 1 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pooled_h());
    }
    // optional uint32 pooled_w = 2 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pooled_w());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ROIPoolingParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ROIPoolingParameter*>(&to_msg);
  auto& from = static_cast<const ROIPoolingParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ROIPoolingParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.pooled_h_ = from._impl_.pooled_h_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.pooled_w_ = from._impl_.pooled_w_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.spatial_scale_ = from._impl_.spatial_scale_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ROIPoolingParameter::InternalSwap(ROIPoolingParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.spatial_scale_)
      + sizeof(ROIPoolingParameter::_impl_.spatial_scale_)
      - PROTOBUF_FIELD_OFFSET(ROIPoolingParameter, _impl_.pooled_h_)>(
          reinterpret_cast<char*>(&_impl_.pooled_h_),
          reinterpret_cast<char*>(&other->_impl_.pooled_h_));
}

::google::protobuf::Metadata ROIPoolingParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ScaleParameter::ScaleParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ScaleParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ScaleParameter)
}
PROTOBUF_NDEBUG_INLINE ScaleParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::ScaleParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

ScaleParameter::ScaleParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const ScaleParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ScaleParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  ScaleParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000002U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, bias_term_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, bias_term_),
           offsetof(Impl_, num_axes_) -
               offsetof(Impl_, bias_term_) +
               sizeof(Impl_::num_axes_));

  // @@protoc_insertion_point(copy_constructor:caffe.ScaleParameter)
}
PROTOBUF_NDEBUG_INLINE ScaleParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : axis_{1},
        num_axes_{1} {}

inline void ScaleParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, filler_),
           0,
           offsetof(Impl_, bias_term_) -
               offsetof(Impl_, filler_) +
               sizeof(Impl_::bias_term_));
}
ScaleParameter::~ScaleParameter() {
  // @@protoc_insertion_point(destructor:caffe.ScaleParameter)
  SharedDtor(*this);
}
inline void ScaleParameter::SharedDtor(MessageLite& self) {
  ScaleParameter& this_ = static_cast<ScaleParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.filler_;
  delete this_._impl_.bias_filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ScaleParameter_class_data_ =
        ScaleParameter::InternalGenerateClassData_(ScaleParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ScaleParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ScaleParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ScaleParameter_class_data_.tc_table);
  return ScaleParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ScaleParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ScaleParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ScaleParameter_globals_));
  return ScaleParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ScaleParameter::ParseTableT_
    ScaleParameter::_table_ =
        ScaleParameter::InternalGenerateParseTable_(ScaleParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ScaleParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ScaleParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(this_._impl_.filler_ != nullptr);
      this_._impl_.filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000001cU)) {
    this_._impl_.bias_term_ = false;
    this_._impl_.axis_ = 1;
    this_._impl_.num_axes_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ScaleParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ScaleParameter& this_ = static_cast<const ScaleParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ScaleParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ScaleParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ScaleParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 axis = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 num_axes = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_num_axes(), target);
  }

  // optional .caffe.FillerParameter filler = 3;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        3, *this_._impl_.filler_, this_._impl_.filler_->GetCachedSize(), target,
        stream);
  }

  // optional bool bias_term = 4 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        4, this_._internal_bias_term(), target);
  }

  // optional .caffe.FillerParameter bias_filler = 5;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ScaleParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ScaleParameter::ByteSizeLong(const MessageLite& base) {
  const ScaleParameter& this_ = static_cast<const ScaleParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ScaleParameter::ByteSizeLong() const {
  const ScaleParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ScaleParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000004U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000001bU)) {
    // optional .caffe.FillerParameter filler = 3;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 5;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional int32 axis = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
    // optional int32 num_axes = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_num_axes());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ScaleParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ScaleParameter*>(&to_msg);
  auto& from = static_cast<const ScaleParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ScaleParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.filler_ != nullptr);
      if (_this->_impl_.filler_ == nullptr) {
        _this->_impl_.filler_ = Super_::CopyConstruct(arena, *from._impl_.filler_);
      } else {
        _this->_impl_.filler_->MergeFrom(*from._impl_.filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.bias_term_ = from._impl_.bias_term_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.num_axes_ = from._impl_.num_axes_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ScaleParameter::InternalSwap(ScaleParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.num_axes_)
      + sizeof(ScaleParameter::_impl_.num_axes_)
      - PROTOBUF_FIELD_OFFSET(ScaleParameter, _impl_.filler_)>(
          reinterpret_cast<char*>(&_impl_.filler_),
          reinterpret_cast<char*>(&other->_impl_.filler_));
}

::google::protobuf::Metadata ScaleParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ShuffleChannelParameter::ShuffleChannelParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ShuffleChannelParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ShuffleChannelParameter)
}
ShuffleChannelParameter::ShuffleChannelParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShuffleChannelParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ShuffleChannelParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ShuffleChannelParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : group_{1u} {}

inline void ShuffleChannelParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ShuffleChannelParameter::~ShuffleChannelParameter() {
  // @@protoc_insertion_point(destructor:caffe.ShuffleChannelParameter)
  SharedDtor(*this);
}
inline void ShuffleChannelParameter::SharedDtor(MessageLite& self) {
  ShuffleChannelParameter& this_ = static_cast<ShuffleChannelParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ShuffleChannelParameter_class_data_ =
        ShuffleChannelParameter::InternalGenerateClassData_(ShuffleChannelParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ShuffleChannelParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ShuffleChannelParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ShuffleChannelParameter_class_data_.tc_table);
  return ShuffleChannelParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ShuffleChannelParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ShuffleChannelParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ShuffleChannelParameter_globals_));
  return ShuffleChannelParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ShuffleChannelParameter::ParseTableT_
    ShuffleChannelParameter::_table_ =
        ShuffleChannelParameter::InternalGenerateParseTable_(ShuffleChannelParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ShuffleChannelParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ShuffleChannelParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.group_ = 1u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ShuffleChannelParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ShuffleChannelParameter& this_ = static_cast<const ShuffleChannelParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ShuffleChannelParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ShuffleChannelParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ShuffleChannelParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 group = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_group(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ShuffleChannelParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ShuffleChannelParameter::ByteSizeLong(const MessageLite& base) {
  const ShuffleChannelParameter& this_ = static_cast<const ShuffleChannelParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ShuffleChannelParameter::ByteSizeLong() const {
  const ShuffleChannelParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ShuffleChannelParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional uint32 group = 1 [default = 1];
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_group());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ShuffleChannelParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ShuffleChannelParameter*>(&to_msg);
  auto& from = static_cast<const ShuffleChannelParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ShuffleChannelParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.group_ = from._impl_.group_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ShuffleChannelParameter::InternalSwap(ShuffleChannelParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.group_, other->_impl_.group_);
}

::google::protobuf::Metadata ShuffleChannelParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SigmoidParameter::SigmoidParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SigmoidParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SigmoidParameter)
}
SigmoidParameter::SigmoidParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SigmoidParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SigmoidParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE SigmoidParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void SigmoidParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.engine_ = {};
}
SigmoidParameter::~SigmoidParameter() {
  // @@protoc_insertion_point(destructor:caffe.SigmoidParameter)
  SharedDtor(*this);
}
inline void SigmoidParameter::SharedDtor(MessageLite& self) {
  SigmoidParameter& this_ = static_cast<SigmoidParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SigmoidParameter_class_data_ =
        SigmoidParameter::InternalGenerateClassData_(SigmoidParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SigmoidParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SigmoidParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SigmoidParameter_class_data_.tc_table);
  return SigmoidParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SigmoidParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SigmoidParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SigmoidParameter_globals_));
  return SigmoidParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SigmoidParameter::ParseTableT_
    SigmoidParameter::_table_ =
        SigmoidParameter::InternalGenerateParseTable_(SigmoidParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SigmoidParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SigmoidParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.engine_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SigmoidParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SigmoidParameter& this_ = static_cast<const SigmoidParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SigmoidParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SigmoidParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SigmoidParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.SigmoidParameter.Engine engine = 1 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_engine(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SigmoidParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SigmoidParameter::ByteSizeLong(const MessageLite& base) {
  const SigmoidParameter& this_ = static_cast<const SigmoidParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SigmoidParameter::ByteSizeLong() const {
  const SigmoidParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SigmoidParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional .caffe.SigmoidParameter.Engine engine = 1 [default = DEFAULT];
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SigmoidParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SigmoidParameter*>(&to_msg);
  auto& from = static_cast<const SigmoidParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SigmoidParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.engine_ = from._impl_.engine_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SigmoidParameter::InternalSwap(SigmoidParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.engine_, other->_impl_.engine_);
}

::google::protobuf::Metadata SigmoidParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SmoothL1LossParameter::SmoothL1LossParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SmoothL1LossParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SmoothL1LossParameter)
}
SmoothL1LossParameter::SmoothL1LossParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SmoothL1LossParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SmoothL1LossParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE SmoothL1LossParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : sigma_{1} {}

inline void SmoothL1LossParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
SmoothL1LossParameter::~SmoothL1LossParameter() {
  // @@protoc_insertion_point(destructor:caffe.SmoothL1LossParameter)
  SharedDtor(*this);
}
inline void SmoothL1LossParameter::SharedDtor(MessageLite& self) {
  SmoothL1LossParameter& this_ = static_cast<SmoothL1LossParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SmoothL1LossParameter_class_data_ =
        SmoothL1LossParameter::InternalGenerateClassData_(SmoothL1LossParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SmoothL1LossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SmoothL1LossParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SmoothL1LossParameter_class_data_.tc_table);
  return SmoothL1LossParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SmoothL1LossParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SmoothL1LossParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SmoothL1LossParameter_globals_));
  return SmoothL1LossParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SmoothL1LossParameter::ParseTableT_
    SmoothL1LossParameter::_table_ =
        SmoothL1LossParameter::InternalGenerateParseTable_(SmoothL1LossParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SmoothL1LossParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SmoothL1LossParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.sigma_ = 1;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SmoothL1LossParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SmoothL1LossParameter& this_ = static_cast<const SmoothL1LossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SmoothL1LossParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SmoothL1LossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SmoothL1LossParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float sigma = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_sigma(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SmoothL1LossParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SmoothL1LossParameter::ByteSizeLong(const MessageLite& base) {
  const SmoothL1LossParameter& this_ = static_cast<const SmoothL1LossParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SmoothL1LossParameter::ByteSizeLong() const {
  const SmoothL1LossParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SmoothL1LossParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SmoothL1LossParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SmoothL1LossParameter*>(&to_msg);
  auto& from = static_cast<const SmoothL1LossParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SmoothL1LossParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.sigma_ = from._impl_.sigma_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SmoothL1LossParameter::InternalSwap(SmoothL1LossParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.sigma_, other->_impl_.sigma_);
}

::google::protobuf::Metadata SmoothL1LossParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SliceParameter::SliceParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SliceParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SliceParameter)
}
PROTOBUF_NDEBUG_INLINE SliceParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::SliceParameter& from_msg)
      : _has_bits_{from._has_bits_},
        slice_point_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::SliceParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.slice_point_)>()
          , arena, from.slice_point_
        }
     {}

SliceParameter::SliceParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const SliceParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SliceParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SliceParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, slice_dim_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, slice_dim_),
           offsetof(Impl_, axis_) -
               offsetof(Impl_, slice_dim_) +
               sizeof(Impl_::axis_));

  // @@protoc_insertion_point(copy_constructor:caffe.SliceParameter)
}
PROTOBUF_NDEBUG_INLINE SliceParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : slice_point_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::SliceParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::SliceParameter, _impl_.slice_point_)>()
         }
        ,
        slice_dim_{1u},
        axis_{1} {}

inline void SliceParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
SliceParameter::~SliceParameter() {
  // @@protoc_insertion_point(destructor:caffe.SliceParameter)
  SharedDtor(*this);
}
inline void SliceParameter::SharedDtor(MessageLite& self) {
  SliceParameter& this_ = static_cast<SliceParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SliceParameter_class_data_ =
        SliceParameter::InternalGenerateClassData_(SliceParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SliceParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SliceParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SliceParameter_class_data_.tc_table);
  return SliceParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SliceParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SliceParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SliceParameter_globals_));
  return SliceParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SliceParameter::ParseTableT_
    SliceParameter::_table_ =
        SliceParameter::InternalGenerateParseTable_(SliceParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SliceParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SliceParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.slice_point_.Clear();
    }
    this_._impl_.slice_dim_ = 1u;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SliceParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SliceParameter& this_ = static_cast<const SliceParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SliceParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SliceParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SliceParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 slice_dim = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_slice_dim(), target);
  }

  // repeated uint32 slice_point = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_slice_point_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
          2, this_._internal_slice_point().Get(i), target);
    }
  }

  // optional int32 axis = 3 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
            stream, this_._internal_axis(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SliceParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SliceParameter::ByteSizeLong(const MessageLite& base) {
  const SliceParameter& this_ = static_cast<const SliceParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SliceParameter::ByteSizeLong() const {
  const SliceParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SliceParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // repeated uint32 slice_point = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::_pbi::WireFormatLite::UInt32Size(
          this_._internal_slice_point());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_slice_point_size());
      total_size += tag_size + data_size;
    }
    // optional uint32 slice_dim = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_slice_dim());
    }
    // optional int32 axis = 3 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SliceParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SliceParameter*>(&to_msg);
  auto& from = static_cast<const SliceParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SliceParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_slice_point()->MergeFrom(from._internal_slice_point());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.slice_dim_ = from._impl_.slice_dim_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SliceParameter::InternalSwap(SliceParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.slice_point_.InternalSwap(&other->_impl_.slice_point_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.axis_)
      + sizeof(SliceParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(SliceParameter, _impl_.slice_dim_)>(
          reinterpret_cast<char*>(&_impl_.slice_dim_),
          reinterpret_cast<char*>(&other->_impl_.slice_dim_));
}

::google::protobuf::Metadata SliceParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SoftmaxParameter::SoftmaxParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SoftmaxParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SoftmaxParameter)
}
SoftmaxParameter::SoftmaxParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SoftmaxParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SoftmaxParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE SoftmaxParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : axis_{1} {}

inline void SoftmaxParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.engine_ = {};
}
SoftmaxParameter::~SoftmaxParameter() {
  // @@protoc_insertion_point(destructor:caffe.SoftmaxParameter)
  SharedDtor(*this);
}
inline void SoftmaxParameter::SharedDtor(MessageLite& self) {
  SoftmaxParameter& this_ = static_cast<SoftmaxParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SoftmaxParameter_class_data_ =
        SoftmaxParameter::InternalGenerateClassData_(SoftmaxParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SoftmaxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SoftmaxParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SoftmaxParameter_class_data_.tc_table);
  return SoftmaxParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SoftmaxParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SoftmaxParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SoftmaxParameter_globals_));
  return SoftmaxParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SoftmaxParameter::ParseTableT_
    SoftmaxParameter::_table_ =
        SoftmaxParameter::InternalGenerateParseTable_(SoftmaxParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SoftmaxParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SoftmaxParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.engine_ = 0;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SoftmaxParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SoftmaxParameter& this_ = static_cast<const SoftmaxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SoftmaxParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SoftmaxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SoftmaxParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.SoftmaxParameter.Engine engine = 1 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_engine(), target);
  }

  // optional int32 axis = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_axis(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SoftmaxParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SoftmaxParameter::ByteSizeLong(const MessageLite& base) {
  const SoftmaxParameter& this_ = static_cast<const SoftmaxParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SoftmaxParameter::ByteSizeLong() const {
  const SoftmaxParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SoftmaxParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional .caffe.SoftmaxParameter.Engine engine = 1 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
    // optional int32 axis = 2 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SoftmaxParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SoftmaxParameter*>(&to_msg);
  auto& from = static_cast<const SoftmaxParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SoftmaxParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SoftmaxParameter::InternalSwap(SoftmaxParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.axis_)
      + sizeof(SoftmaxParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(SoftmaxParameter, _impl_.engine_)>(
          reinterpret_cast<char*>(&_impl_.engine_),
          reinterpret_cast<char*>(&other->_impl_.engine_));
}

::google::protobuf::Metadata SoftmaxParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

TanHParameter::TanHParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TanHParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.TanHParameter)
}
TanHParameter::TanHParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TanHParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TanHParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE TanHParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void TanHParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.engine_ = {};
}
TanHParameter::~TanHParameter() {
  // @@protoc_insertion_point(destructor:caffe.TanHParameter)
  SharedDtor(*this);
}
inline void TanHParameter::SharedDtor(MessageLite& self) {
  TanHParameter& this_ = static_cast<TanHParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull TanHParameter_class_data_ =
        TanHParameter::InternalGenerateClassData_(TanHParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TanHParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TanHParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(TanHParameter_class_data_.tc_table);
  return TanHParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TanHParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TanHParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&TanHParameter_globals_));
  return TanHParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const TanHParameter::ParseTableT_
    TanHParameter::_table_ =
        TanHParameter::InternalGenerateParseTable_(TanHParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void TanHParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.TanHParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.engine_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL TanHParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const TanHParameter& this_ = static_cast<const TanHParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL TanHParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const TanHParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.TanHParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.TanHParameter.Engine engine = 1 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this_._internal_engine(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.TanHParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t TanHParameter::ByteSizeLong(const MessageLite& base) {
  const TanHParameter& this_ = static_cast<const TanHParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t TanHParameter::ByteSizeLong() const {
  const TanHParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.TanHParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

   {
    // optional .caffe.TanHParameter.Engine engine = 1 [default = DEFAULT];
    cached_has_bits = this_._impl_._has_bits_[0];
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void TanHParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<TanHParameter*>(&to_msg);
  auto& from = static_cast<const TanHParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.TanHParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.engine_ = from._impl_.engine_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void TanHParameter::InternalSwap(TanHParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.engine_, other->_impl_.engine_);
}

::google::protobuf::Metadata TanHParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

TileParameter::TileParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TileParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.TileParameter)
}
TileParameter::TileParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TileParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, TileParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE TileParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : axis_{1} {}

inline void TileParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.tiles_ = {};
}
TileParameter::~TileParameter() {
  // @@protoc_insertion_point(destructor:caffe.TileParameter)
  SharedDtor(*this);
}
inline void TileParameter::SharedDtor(MessageLite& self) {
  TileParameter& this_ = static_cast<TileParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull TileParameter_class_data_ =
        TileParameter::InternalGenerateClassData_(TileParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TileParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TileParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(TileParameter_class_data_.tc_table);
  return TileParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
TileParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&TileParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&TileParameter_globals_));
  return TileParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const TileParameter::ParseTableT_
    TileParameter::_table_ =
        TileParameter::InternalGenerateParseTable_(TileParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void TileParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.TileParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    this_._impl_.tiles_ = 0;
    this_._impl_.axis_ = 1;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL TileParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const TileParameter& this_ = static_cast<const TileParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL TileParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const TileParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.TileParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional int32 axis = 1 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<1>(
            stream, this_._internal_axis(), target);
  }

  // optional int32 tiles = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target =
        ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
            stream, this_._internal_tiles(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.TileParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t TileParameter::ByteSizeLong(const MessageLite& base) {
  const TileParameter& this_ = static_cast<const TileParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t TileParameter::ByteSizeLong() const {
  const TileParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.TileParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    // optional int32 tiles = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_tiles());
    }
    // optional int32 axis = 1 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this_._internal_axis());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void TileParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<TileParameter*>(&to_msg);
  auto& from = static_cast<const TileParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.TileParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.tiles_ = from._impl_.tiles_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.axis_ = from._impl_.axis_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void TileParameter::InternalSwap(TileParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.axis_)
      + sizeof(TileParameter::_impl_.axis_)
      - PROTOBUF_FIELD_OFFSET(TileParameter, _impl_.tiles_)>(
          reinterpret_cast<char*>(&_impl_.tiles_),
          reinterpret_cast<char*>(&other->_impl_.tiles_));
}

::google::protobuf::Metadata TileParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

ThresholdParameter::ThresholdParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ThresholdParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.ThresholdParameter)
}
ThresholdParameter::ThresholdParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ThresholdParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, ThresholdParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE ThresholdParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void ThresholdParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.threshold_ = {};
}
ThresholdParameter::~ThresholdParameter() {
  // @@protoc_insertion_point(destructor:caffe.ThresholdParameter)
  SharedDtor(*this);
}
inline void ThresholdParameter::SharedDtor(MessageLite& self) {
  ThresholdParameter& this_ = static_cast<ThresholdParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull ThresholdParameter_class_data_ =
        ThresholdParameter::InternalGenerateClassData_(ThresholdParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ThresholdParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ThresholdParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(ThresholdParameter_class_data_.tc_table);
  return ThresholdParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
ThresholdParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&ThresholdParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&ThresholdParameter_globals_));
  return ThresholdParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const ThresholdParameter::ParseTableT_
    ThresholdParameter::_table_ =
        ThresholdParameter::InternalGenerateParseTable_(ThresholdParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void ThresholdParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.ThresholdParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  this_._impl_.threshold_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL ThresholdParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const ThresholdParameter& this_ = static_cast<const ThresholdParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL ThresholdParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const ThresholdParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.ThresholdParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float threshold = 1 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        1, this_._internal_threshold(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.ThresholdParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t ThresholdParameter::ByteSizeLong(const MessageLite& base) {
  const ThresholdParameter& this_ = static_cast<const ThresholdParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t ThresholdParameter::ByteSizeLong() const {
  const ThresholdParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.ThresholdParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000001U & cached_has_bits) * 5;
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void ThresholdParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<ThresholdParameter*>(&to_msg);
  auto& from = static_cast<const ThresholdParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.ThresholdParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    _this->_impl_.threshold_ = from._impl_.threshold_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void ThresholdParameter::InternalSwap(ThresholdParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.threshold_, other->_impl_.threshold_);
}

::google::protobuf::Metadata ThresholdParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

/*static*/ const ::_pbi::LazyString WindowDataParameter::Impl_::_i_give_permission_to_break_this_code_default_crop_mode_{
    {{"warp", 4}},
    {nullptr},
};
WindowDataParameter::WindowDataParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, WindowDataParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.WindowDataParameter)
}
PROTOBUF_NDEBUG_INLINE WindowDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::WindowDataParameter& from_msg)
      : _has_bits_{from._has_bits_},
        source_(arena, from.source_),
        mean_file_(arena, from.mean_file_),
        crop_mode_(arena, from.crop_mode_, _i_give_permission_to_break_this_code_default_crop_mode_),
        root_folder_(arena, from.root_folder_) {}

WindowDataParameter::WindowDataParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const WindowDataParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, WindowDataParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  WindowDataParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, batch_size_),
           offsetof(Impl_, fg_fraction_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::fg_fraction_));

  // @@protoc_insertion_point(copy_constructor:caffe.WindowDataParameter)
}
PROTOBUF_NDEBUG_INLINE WindowDataParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : source_(arena),
        mean_file_(arena),
        crop_mode_(arena, Impl_::_i_give_permission_to_break_this_code_default_crop_mode_),
        root_folder_(arena),
        scale_{1},
        fg_threshold_{0.5f},
        bg_threshold_{0.5f},
        fg_fraction_{0.25f} {}

inline void WindowDataParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, batch_size_),
           0,
           offsetof(Impl_, context_pad_) -
               offsetof(Impl_, batch_size_) +
               sizeof(Impl_::context_pad_));
}
WindowDataParameter::~WindowDataParameter() {
  // @@protoc_insertion_point(destructor:caffe.WindowDataParameter)
  SharedDtor(*this);
}
inline void WindowDataParameter::SharedDtor(MessageLite& self) {
  WindowDataParameter& this_ = static_cast<WindowDataParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.source_.Destroy();
  this_._impl_.mean_file_.Destroy();
  this_._impl_.crop_mode_.Destroy();
  this_._impl_.root_folder_.Destroy();
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull WindowDataParameter_class_data_ =
        WindowDataParameter::InternalGenerateClassData_(WindowDataParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
WindowDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&WindowDataParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(WindowDataParameter_class_data_.tc_table);
  return WindowDataParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
WindowDataParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&WindowDataParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&WindowDataParameter_globals_));
  return WindowDataParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const WindowDataParameter::ParseTableT_
    WindowDataParameter::_table_ =
        WindowDataParameter::InternalGenerateParseTable_(WindowDataParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void WindowDataParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.WindowDataParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.source_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.mean_file_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      this_._impl_.crop_mode_.ClearToDefault(::caffe::WindowDataParameter::Impl_::_i_give_permission_to_break_this_code_default_crop_mode_, this_.GetArena());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      this_._impl_.root_folder_.ClearNonDefaultToEmpty();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x000000f0U)) {
    ::memset(&this_._impl_.batch_size_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.cache_images_) -
                 reinterpret_cast<char*>(&this_._impl_.batch_size_)) +
                 sizeof(_impl_.cache_images_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    this_._impl_.context_pad_ = 0u;
    this_._impl_.scale_ = 1;
    this_._impl_.fg_threshold_ = 0.5f;
    this_._impl_.bg_threshold_ = 0.5f;
    this_._impl_.fg_fraction_ = 0.25f;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL WindowDataParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const WindowDataParameter& this_ = static_cast<const WindowDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL WindowDataParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const WindowDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.WindowDataParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string source = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional float scale = 2 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        2, this_._internal_scale(), target);
  }

  // optional string mean_file = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_mean_file();
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // optional uint32 batch_size = 4;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this_._internal_batch_size(), target);
  }

  // optional uint32 crop_size = 5 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        5, this_._internal_crop_size(), target);
  }

  // optional bool mirror = 6 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        6, this_._internal_mirror(), target);
  }

  // optional float fg_threshold = 7 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        7, this_._internal_fg_threshold(), target);
  }

  // optional float bg_threshold = 8 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        8, this_._internal_bg_threshold(), target);
  }

  // optional float fg_fraction = 9 [default = 0.25];
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        9, this_._internal_fg_fraction(), target);
  }

  // optional uint32 context_pad = 10 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_context_pad(), target);
  }

  // optional string crop_mode = 11 [default = "warp"];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    const ::std::string& _s = this_._internal_crop_mode();
    target = stream->WriteStringMaybeAliased(11, _s, target);
  }

  // optional bool cache_images = 12 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        12, this_._internal_cache_images(), target);
  }

  // optional string root_folder = 13 [default = ""];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    const ::std::string& _s = this_._internal_root_folder();
    target = stream->WriteStringMaybeAliased(13, _s, target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.WindowDataParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t WindowDataParameter::ByteSizeLong(const MessageLite& base) {
  const WindowDataParameter& this_ = static_cast<const WindowDataParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t WindowDataParameter::ByteSizeLong() const {
  const WindowDataParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.WindowDataParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x00001e00U & cached_has_bits) * 5;
  total_size += ::absl::popcount(0x000000c0U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    // optional string source = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
    // optional string mean_file = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_mean_file());
    }
    // optional string crop_mode = 11 [default = "warp"];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_crop_mode());
    }
    // optional string root_folder = 13 [default = ""];
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_root_folder());
    }
    // optional uint32 batch_size = 4;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_batch_size());
    }
    // optional uint32 crop_size = 5 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_crop_size());
    }
  }
   {
    // optional uint32 context_pad = 10 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_context_pad());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void WindowDataParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<WindowDataParameter*>(&to_msg);
  auto& from = static_cast<const WindowDataParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.WindowDataParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_source(from._internal_source());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_mean_file(from._internal_mean_file());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_set_crop_mode(from._internal_crop_mode());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_set_root_folder(from._internal_root_folder());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.batch_size_ = from._impl_.batch_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.crop_size_ = from._impl_.crop_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      _this->_impl_.mirror_ = from._impl_.mirror_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      _this->_impl_.cache_images_ = from._impl_.cache_images_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00001f00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.context_pad_ = from._impl_.context_pad_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.fg_threshold_ = from._impl_.fg_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.bg_threshold_ = from._impl_.bg_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.fg_fraction_ = from._impl_.fg_fraction_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void WindowDataParameter::InternalSwap(WindowDataParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.mean_file_, &other->_impl_.mean_file_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.crop_mode_, &other->_impl_.crop_mode_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.root_folder_, &other->_impl_.root_folder_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.fg_fraction_)
      + sizeof(WindowDataParameter::_impl_.fg_fraction_)
      - PROTOBUF_FIELD_OFFSET(WindowDataParameter, _impl_.batch_size_)>(
          reinterpret_cast<char*>(&_impl_.batch_size_),
          reinterpret_cast<char*>(&other->_impl_.batch_size_));
}

::google::protobuf::Metadata WindowDataParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

SPPParameter::SPPParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SPPParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.SPPParameter)
}
SPPParameter::SPPParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SPPParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, SPPParameter_get_class_data()),
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena),
#endif  // PROTOBUF_CUSTOM_VTABLE
      _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}
PROTOBUF_NDEBUG_INLINE SPPParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void SPPParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, pyramid_height_),
           0,
           offsetof(Impl_, engine_) -
               offsetof(Impl_, pyramid_height_) +
               sizeof(Impl_::engine_));
}
SPPParameter::~SPPParameter() {
  // @@protoc_insertion_point(destructor:caffe.SPPParameter)
  SharedDtor(*this);
}
inline void SPPParameter::SharedDtor(MessageLite& self) {
  SPPParameter& this_ = static_cast<SPPParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull SPPParameter_class_data_ =
        SPPParameter::InternalGenerateClassData_(SPPParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SPPParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SPPParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(SPPParameter_class_data_.tc_table);
  return SPPParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
SPPParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&SPPParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&SPPParameter_globals_));
  return SPPParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const SPPParameter::ParseTableT_
    SPPParameter::_table_ =
        SPPParameter::InternalGenerateParseTable_(SPPParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void SPPParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.SPPParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    ::memset(&this_._impl_.pyramid_height_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.engine_) -
                 reinterpret_cast<char*>(&this_._impl_.pyramid_height_)) +
                 sizeof(_impl_.engine_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL SPPParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const SPPParameter& this_ = static_cast<const SPPParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL SPPParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const SPPParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.SPPParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional uint32 pyramid_height = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this_._internal_pyramid_height(), target);
  }

  // optional .caffe.SPPParameter.PoolMethod pool = 2 [default = MAX];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this_._internal_pool(), target);
  }

  // optional .caffe.SPPParameter.Engine engine = 6 [default = DEFAULT];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        6, this_._internal_engine(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.SPPParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t SPPParameter::ByteSizeLong(const MessageLite& base) {
  const SPPParameter& this_ = static_cast<const SPPParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t SPPParameter::ByteSizeLong() const {
  const SPPParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.SPPParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    // optional uint32 pyramid_height = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pyramid_height());
    }
    // optional .caffe.SPPParameter.PoolMethod pool = 2 [default = MAX];
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_pool());
    }
    // optional .caffe.SPPParameter.Engine engine = 6 [default = DEFAULT];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_engine());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void SPPParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<SPPParameter*>(&to_msg);
  auto& from = static_cast<const SPPParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.SPPParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_impl_.pyramid_height_ = from._impl_.pyramid_height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.pool_ = from._impl_.pool_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.engine_ = from._impl_.engine_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void SPPParameter::InternalSwap(SPPParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.engine_)
      + sizeof(SPPParameter::_impl_.engine_)
      - PROTOBUF_FIELD_OFFSET(SPPParameter, _impl_.pyramid_height_)>(
          reinterpret_cast<char*>(&_impl_.pyramid_height_),
          reinterpret_cast<char*>(&other->_impl_.pyramid_height_));
}

::google::protobuf::Metadata SPPParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

V1LayerParameter::V1LayerParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, V1LayerParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.V1LayerParameter)
}
PROTOBUF_NDEBUG_INLINE V1LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::V1LayerParameter& from_msg)
      : _has_bits_{from._has_bits_},
        bottom_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.bottom_)>()
          , arena, from.bottom_
        }
        ,
        top_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.top_)>()
          , arena, from.top_
        }
        ,
        blobs_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_)>()
          , arena, from.blobs_
        }
        ,
        blobs_lr_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_lr_)>()
          , arena, from.blobs_lr_
        }
        ,
        weight_decay_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.weight_decay_)>()
          , arena, from.weight_decay_
        }
        ,
        name_(arena, from.name_),
        include_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.include_)>()
          , arena, from.include_
        }
        ,
        exclude_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.exclude_)>()
          , arena, from.exclude_
        }
        ,
        loss_weight_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.loss_weight_)>()
          , arena, from.loss_weight_
        }
        ,
        param_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.param_)>()
          , arena, from.param_
        }
        ,
        blob_share_mode_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V1LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blob_share_mode_)>()
          , arena, from.blob_share_mode_
        }
     {}

V1LayerParameter::V1LayerParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const V1LayerParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, V1LayerParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  V1LayerParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.layer_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.layer_)
                 : nullptr;
  _impl_.concat_param_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.concat_param_)
                 : nullptr;
  _impl_.convolution_param_ = (CheckHasBit(cached_has_bits, 0x00000100U))
                 ? Super_::CopyConstruct(arena, *from._impl_.convolution_param_)
                 : nullptr;
  _impl_.data_param_ = (CheckHasBit(cached_has_bits, 0x00000200U))
                 ? Super_::CopyConstruct(arena, *from._impl_.data_param_)
                 : nullptr;
  _impl_.dropout_param_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.dropout_param_)
                 : nullptr;
  _impl_.hdf5_data_param_ = (CheckHasBit(cached_has_bits, 0x00000800U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hdf5_data_param_)
                 : nullptr;
  _impl_.hdf5_output_param_ = (CheckHasBit(cached_has_bits, 0x00001000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_)
                 : nullptr;
  _impl_.image_data_param_ = (CheckHasBit(cached_has_bits, 0x00002000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.image_data_param_)
                 : nullptr;
  _impl_.infogain_loss_param_ = (CheckHasBit(cached_has_bits, 0x00004000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.infogain_loss_param_)
                 : nullptr;
  _impl_.inner_product_param_ = (CheckHasBit(cached_has_bits, 0x00008000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.inner_product_param_)
                 : nullptr;
  _impl_.lrn_param_ = (CheckHasBit(cached_has_bits, 0x00010000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.lrn_param_)
                 : nullptr;
  _impl_.pooling_param_ = (CheckHasBit(cached_has_bits, 0x00020000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.pooling_param_)
                 : nullptr;
  _impl_.window_data_param_ = (CheckHasBit(cached_has_bits, 0x00040000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.window_data_param_)
                 : nullptr;
  _impl_.power_param_ = (CheckHasBit(cached_has_bits, 0x00080000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.power_param_)
                 : nullptr;
  _impl_.memory_data_param_ = (CheckHasBit(cached_has_bits, 0x00100000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.memory_data_param_)
                 : nullptr;
  _impl_.argmax_param_ = (CheckHasBit(cached_has_bits, 0x00200000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.argmax_param_)
                 : nullptr;
  _impl_.eltwise_param_ = (CheckHasBit(cached_has_bits, 0x00400000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.eltwise_param_)
                 : nullptr;
  _impl_.threshold_param_ = (CheckHasBit(cached_has_bits, 0x00800000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.threshold_param_)
                 : nullptr;
  _impl_.dummy_data_param_ = (CheckHasBit(cached_has_bits, 0x01000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.dummy_data_param_)
                 : nullptr;
  _impl_.accuracy_param_ = (CheckHasBit(cached_has_bits, 0x02000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.accuracy_param_)
                 : nullptr;
  _impl_.hinge_loss_param_ = (CheckHasBit(cached_has_bits, 0x04000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hinge_loss_param_)
                 : nullptr;
  _impl_.relu_param_ = (CheckHasBit(cached_has_bits, 0x08000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.relu_param_)
                 : nullptr;
  _impl_.slice_param_ = (CheckHasBit(cached_has_bits, 0x10000000U))
                 ? Super_::CopyConstruct(arena, *from._impl_.slice_param_)
                 : nullptr;
  _impl_.type_ = from._impl_.type_;
  cached_has_bits = _impl_._has_bits_[1];
  _impl_.mvn_param_ = (CheckHasBit(cached_has_bits, 0x00000008U))
                 ? Super_::CopyConstruct(arena, *from._impl_.mvn_param_)
                 : nullptr;
  _impl_.transform_param_ = (CheckHasBit(cached_has_bits, 0x00000010U))
                 ? Super_::CopyConstruct(arena, *from._impl_.transform_param_)
                 : nullptr;
  _impl_.tanh_param_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.tanh_param_)
                 : nullptr;
  _impl_.sigmoid_param_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.sigmoid_param_)
                 : nullptr;
  _impl_.softmax_param_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.softmax_param_)
                 : nullptr;
  _impl_.contrastive_loss_param_ = (CheckHasBit(cached_has_bits, 0x00000100U))
                 ? Super_::CopyConstruct(arena, *from._impl_.contrastive_loss_param_)
                 : nullptr;
  _impl_.exp_param_ = (CheckHasBit(cached_has_bits, 0x00000200U))
                 ? Super_::CopyConstruct(arena, *from._impl_.exp_param_)
                 : nullptr;
  _impl_.loss_param_ = (CheckHasBit(cached_has_bits, 0x00000400U))
                 ? Super_::CopyConstruct(arena, *from._impl_.loss_param_)
                 : nullptr;

  // @@protoc_insertion_point(copy_constructor:caffe.V1LayerParameter)
}
PROTOBUF_NDEBUG_INLINE V1LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : bottom_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.bottom_)>()
         }
        ,
        top_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.top_)>()
         }
        ,
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_)>()
         }
        ,
        blobs_lr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blobs_lr_)>()
         }
        ,
        weight_decay_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.weight_decay_)>()
         }
        ,
        name_(arena),
        include_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.include_)>()
         }
        ,
        exclude_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.exclude_)>()
         }
        ,
        loss_weight_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.loss_weight_)>()
         }
        ,
        param_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.param_)>()
         }
        ,
        blob_share_mode_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V1LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V1LayerParameter, _impl_.blob_share_mode_)>()
         }
     {}

inline void V1LayerParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, layer_),
           0,
           offsetof(Impl_, type_) -
               offsetof(Impl_, layer_) +
               sizeof(Impl_::type_));
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, mvn_param_),
           0,
           offsetof(Impl_, loss_param_) -
               offsetof(Impl_, mvn_param_) +
               sizeof(Impl_::loss_param_));
}
V1LayerParameter::~V1LayerParameter() {
  // @@protoc_insertion_point(destructor:caffe.V1LayerParameter)
  SharedDtor(*this);
}
inline void V1LayerParameter::SharedDtor(MessageLite& self) {
  V1LayerParameter& this_ = static_cast<V1LayerParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.name_.Destroy();
  delete this_._impl_.layer_;
  delete this_._impl_.concat_param_;
  delete this_._impl_.convolution_param_;
  delete this_._impl_.data_param_;
  delete this_._impl_.dropout_param_;
  delete this_._impl_.hdf5_data_param_;
  delete this_._impl_.hdf5_output_param_;
  delete this_._impl_.image_data_param_;
  delete this_._impl_.infogain_loss_param_;
  delete this_._impl_.inner_product_param_;
  delete this_._impl_.lrn_param_;
  delete this_._impl_.pooling_param_;
  delete this_._impl_.window_data_param_;
  delete this_._impl_.power_param_;
  delete this_._impl_.memory_data_param_;
  delete this_._impl_.argmax_param_;
  delete this_._impl_.eltwise_param_;
  delete this_._impl_.threshold_param_;
  delete this_._impl_.dummy_data_param_;
  delete this_._impl_.accuracy_param_;
  delete this_._impl_.hinge_loss_param_;
  delete this_._impl_.relu_param_;
  delete this_._impl_.slice_param_;
  delete this_._impl_.mvn_param_;
  delete this_._impl_.transform_param_;
  delete this_._impl_.tanh_param_;
  delete this_._impl_.sigmoid_param_;
  delete this_._impl_.softmax_param_;
  delete this_._impl_.contrastive_loss_param_;
  delete this_._impl_.exp_param_;
  delete this_._impl_.loss_param_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull V1LayerParameter_class_data_ =
        V1LayerParameter::InternalGenerateClassData_(V1LayerParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
V1LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&V1LayerParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(V1LayerParameter_class_data_.tc_table);
  return V1LayerParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
V1LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&V1LayerParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&V1LayerParameter_globals_));
  return V1LayerParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const V1LayerParameter::ParseTableT_
    V1LayerParameter::_table_ =
        V1LayerParameter::InternalGenerateParseTable_(V1LayerParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void V1LayerParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.V1LayerParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.bottom_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.top_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.blobs_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _impl_.blobs_lr_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _impl_.weight_decay_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      this_._impl_.name_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.layer_ != nullptr);
      this_._impl_.layer_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.concat_param_ != nullptr);
      this_._impl_.concat_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(this_._impl_.convolution_param_ != nullptr);
      this_._impl_.convolution_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(this_._impl_.data_param_ != nullptr);
      this_._impl_.data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.dropout_param_ != nullptr);
      this_._impl_.dropout_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(this_._impl_.hdf5_data_param_ != nullptr);
      this_._impl_.hdf5_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(this_._impl_.hdf5_output_param_ != nullptr);
      this_._impl_.hdf5_output_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(this_._impl_.image_data_param_ != nullptr);
      this_._impl_.image_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(this_._impl_.infogain_loss_param_ != nullptr);
      this_._impl_.infogain_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(this_._impl_.inner_product_param_ != nullptr);
      this_._impl_.inner_product_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(this_._impl_.lrn_param_ != nullptr);
      this_._impl_.lrn_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(this_._impl_.pooling_param_ != nullptr);
      this_._impl_.pooling_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(this_._impl_.window_data_param_ != nullptr);
      this_._impl_.window_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(this_._impl_.power_param_ != nullptr);
      this_._impl_.power_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(this_._impl_.memory_data_param_ != nullptr);
      this_._impl_.memory_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(this_._impl_.argmax_param_ != nullptr);
      this_._impl_.argmax_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(this_._impl_.eltwise_param_ != nullptr);
      this_._impl_.eltwise_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(this_._impl_.threshold_param_ != nullptr);
      this_._impl_.threshold_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x1f000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(this_._impl_.dummy_data_param_ != nullptr);
      this_._impl_.dummy_data_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(this_._impl_.accuracy_param_ != nullptr);
      this_._impl_.accuracy_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      ABSL_DCHECK(this_._impl_.hinge_loss_param_ != nullptr);
      this_._impl_.hinge_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(this_._impl_.relu_param_ != nullptr);
      this_._impl_.relu_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(this_._impl_.slice_param_ != nullptr);
      this_._impl_.slice_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xe0000000U)) {
    this_._impl_.type_ = 0;
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      _impl_.include_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _impl_.exclude_.Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.loss_weight_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.param_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _impl_.blob_share_mode_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(this_._impl_.mvn_param_ != nullptr);
      this_._impl_.mvn_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(this_._impl_.transform_param_ != nullptr);
      this_._impl_.transform_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.tanh_param_ != nullptr);
      this_._impl_.tanh_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.sigmoid_param_ != nullptr);
      this_._impl_.sigmoid_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.softmax_param_ != nullptr);
      this_._impl_.softmax_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000700U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(this_._impl_.contrastive_loss_param_ != nullptr);
      this_._impl_.contrastive_loss_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(this_._impl_.exp_param_ != nullptr);
      this_._impl_.exp_param_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(this_._impl_.loss_param_ != nullptr);
      this_._impl_.loss_param_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL V1LayerParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const V1LayerParameter& this_ = static_cast<const V1LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL V1LayerParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const V1LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.V1LayerParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.V0LayerParameter layer = 1;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1, *this_._impl_.layer_, this_._impl_.layer_->GetCachedSize(), target,
        stream);
  }

  // repeated string bottom = 2;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_bottom_size(); i < n; ++i) {
      const auto& s = this_._internal_bottom().Get(i);
      target = stream->WriteString(2, s, target);
    }
  }

  // repeated string top = 3;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_top_size(); i < n; ++i) {
      const auto& s = this_._internal_top().Get(i);
      target = stream->WriteString(3, s, target);
    }
  }

  // optional string name = 4;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    const ::std::string& _s = this_._internal_name();
    target = stream->WriteStringMaybeAliased(4, _s, target);
  }

  // optional .caffe.V1LayerParameter.LayerType type = 5;
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        5, this_._internal_type(), target);
  }

  // repeated .caffe.BlobProto blobs = 6;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_blobs_size());
         i < n; i++) {
      const auto& repfield = this_._internal_blobs().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          6, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated float blobs_lr = 7;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    for (int i = 0, n = this_._internal_blobs_lr_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          7, this_._internal_blobs_lr().Get(i), target);
    }
  }

  // repeated float weight_decay = 8;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    for (int i = 0, n = this_._internal_weight_decay_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          8, this_._internal_weight_decay().Get(i), target);
    }
  }

  // optional .caffe.ConcatParameter concat_param = 9;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        9, *this_._impl_.concat_param_, this_._impl_.concat_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ConvolutionParameter convolution_param = 10;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        10, *this_._impl_.convolution_param_, this_._impl_.convolution_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DataParameter data_param = 11;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        11, *this_._impl_.data_param_, this_._impl_.data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DropoutParameter dropout_param = 12;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        12, *this_._impl_.dropout_param_, this_._impl_.dropout_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HDF5DataParameter hdf5_data_param = 13;
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        13, *this_._impl_.hdf5_data_param_, this_._impl_.hdf5_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HDF5OutputParameter hdf5_output_param = 14;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        14, *this_._impl_.hdf5_output_param_, this_._impl_.hdf5_output_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ImageDataParameter image_data_param = 15;
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        15, *this_._impl_.image_data_param_, this_._impl_.image_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InfogainLossParameter infogain_loss_param = 16;
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        16, *this_._impl_.infogain_loss_param_, this_._impl_.infogain_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.InnerProductParameter inner_product_param = 17;
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        17, *this_._impl_.inner_product_param_, this_._impl_.inner_product_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.LRNParameter lrn_param = 18;
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        18, *this_._impl_.lrn_param_, this_._impl_.lrn_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PoolingParameter pooling_param = 19;
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        19, *this_._impl_.pooling_param_, this_._impl_.pooling_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.WindowDataParameter window_data_param = 20;
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        20, *this_._impl_.window_data_param_, this_._impl_.window_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.PowerParameter power_param = 21;
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        21, *this_._impl_.power_param_, this_._impl_.power_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.MemoryDataParameter memory_data_param = 22;
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        22, *this_._impl_.memory_data_param_, this_._impl_.memory_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ArgMaxParameter argmax_param = 23;
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        23, *this_._impl_.argmax_param_, this_._impl_.argmax_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.EltwiseParameter eltwise_param = 24;
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        24, *this_._impl_.eltwise_param_, this_._impl_.eltwise_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ThresholdParameter threshold_param = 25;
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        25, *this_._impl_.threshold_param_, this_._impl_.threshold_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.DummyDataParameter dummy_data_param = 26;
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        26, *this_._impl_.dummy_data_param_, this_._impl_.dummy_data_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.AccuracyParameter accuracy_param = 27;
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        27, *this_._impl_.accuracy_param_, this_._impl_.accuracy_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.HingeLossParameter hinge_loss_param = 29;
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        29, *this_._impl_.hinge_loss_param_, this_._impl_.hinge_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ReLUParameter relu_param = 30;
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        30, *this_._impl_.relu_param_, this_._impl_.relu_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SliceParameter slice_param = 31;
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        31, *this_._impl_.slice_param_, this_._impl_.slice_param_->GetCachedSize(), target,
        stream);
  }

  // repeated .caffe.NetStateRule include = 32;
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_include_size());
         i < n; i++) {
      const auto& repfield = this_._internal_include().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          32, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  // repeated .caffe.NetStateRule exclude = 33;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_exclude_size());
         i < n; i++) {
      const auto& repfield = this_._internal_exclude().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          33, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional .caffe.MVNParameter mvn_param = 34;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        34, *this_._impl_.mvn_param_, this_._impl_.mvn_param_->GetCachedSize(), target,
        stream);
  }

  // repeated float loss_weight = 35;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_loss_weight_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          35, this_._internal_loss_weight().Get(i), target);
    }
  }

  // optional .caffe.TransformationParameter transform_param = 36;
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        36, *this_._impl_.transform_param_, this_._impl_.transform_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.TanHParameter tanh_param = 37;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        37, *this_._impl_.tanh_param_, this_._impl_.tanh_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SigmoidParameter sigmoid_param = 38;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        38, *this_._impl_.sigmoid_param_, this_._impl_.sigmoid_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.SoftmaxParameter softmax_param = 39;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        39, *this_._impl_.softmax_param_, this_._impl_.softmax_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 40;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        40, *this_._impl_.contrastive_loss_param_, this_._impl_.contrastive_loss_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.ExpParameter exp_param = 41;
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        41, *this_._impl_.exp_param_, this_._impl_.exp_param_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.LossParameter loss_param = 42;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        42, *this_._impl_.loss_param_, this_._impl_.loss_param_->GetCachedSize(), target,
        stream);
  }

  // repeated string param = 1001;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_param_size(); i < n; ++i) {
      const auto& s = this_._internal_param().Get(i);
      target = stream->WriteString(1001, s, target);
    }
  }

  // repeated .caffe.V1LayerParameter.DimCheckMode blob_share_mode = 1002;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    for (int i = 0, n = this_._internal_blob_share_mode_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteEnumToArray(
          1002, static_cast<::caffe::V1LayerParameter_DimCheckMode>(this_._internal_blob_share_mode().Get(i)),
          target);
    }
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.V1LayerParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t V1LayerParameter::ByteSizeLong(const MessageLite& base) {
  const V1LayerParameter& this_ = static_cast<const V1LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t V1LayerParameter::ByteSizeLong() const {
  const V1LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.V1LayerParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated string bottom = 2;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_bottom().size());
      for (int i = 0, n = this_._internal_bottom().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_bottom().Get(i));
      }
    }
    // repeated string top = 3;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          1 * ::google::protobuf::internal::FromIntSize(this_._internal_top().size());
      for (int i = 0, n = this_._internal_top().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_top().Get(i));
      }
    }
    // repeated .caffe.BlobProto blobs = 6;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 1UL * this_._internal_blobs_size();
      for (const auto& msg : this_._internal_blobs()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated float blobs_lr = 7;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_blobs_lr_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_blobs_lr_size());
      total_size += tag_size + data_size;
    }
    // repeated float weight_decay = 8;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_weight_decay_size());
      ::size_t tag_size = ::size_t{1} *
          ::_pbi::FromIntSize(this_._internal_weight_decay_size());
      total_size += tag_size + data_size;
    }
    // optional string name = 4;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name());
    }
    // optional .caffe.V0LayerParameter layer = 1;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.layer_);
    }
    // optional .caffe.ConcatParameter concat_param = 9;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.concat_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    // optional .caffe.ConvolutionParameter convolution_param = 10;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convolution_param_);
    }
    // optional .caffe.DataParameter data_param = 11;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.data_param_);
    }
    // optional .caffe.DropoutParameter dropout_param = 12;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dropout_param_);
    }
    // optional .caffe.HDF5DataParameter hdf5_data_param = 13;
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hdf5_data_param_);
    }
    // optional .caffe.HDF5OutputParameter hdf5_output_param = 14;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hdf5_output_param_);
    }
    // optional .caffe.ImageDataParameter image_data_param = 15;
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.image_data_param_);
    }
    // optional .caffe.InfogainLossParameter infogain_loss_param = 16;
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.infogain_loss_param_);
    }
    // optional .caffe.InnerProductParameter inner_product_param = 17;
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.inner_product_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    // optional .caffe.LRNParameter lrn_param = 18;
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.lrn_param_);
    }
    // optional .caffe.PoolingParameter pooling_param = 19;
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.pooling_param_);
    }
    // optional .caffe.WindowDataParameter window_data_param = 20;
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.window_data_param_);
    }
    // optional .caffe.PowerParameter power_param = 21;
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.power_param_);
    }
    // optional .caffe.MemoryDataParameter memory_data_param = 22;
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.memory_data_param_);
    }
    // optional .caffe.ArgMaxParameter argmax_param = 23;
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.argmax_param_);
    }
    // optional .caffe.EltwiseParameter eltwise_param = 24;
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.eltwise_param_);
    }
    // optional .caffe.ThresholdParameter threshold_param = 25;
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.threshold_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    // optional .caffe.DummyDataParameter dummy_data_param = 26;
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dummy_data_param_);
    }
    // optional .caffe.AccuracyParameter accuracy_param = 27;
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.accuracy_param_);
    }
    // optional .caffe.HingeLossParameter hinge_loss_param = 29;
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hinge_loss_param_);
    }
    // optional .caffe.ReLUParameter relu_param = 30;
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.relu_param_);
    }
    // optional .caffe.SliceParameter slice_param = 31;
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.slice_param_);
    }
    // optional .caffe.V1LayerParameter.LayerType type = 5;
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_type());
    }
    // repeated .caffe.NetStateRule include = 32;
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      total_size += 2UL * this_._internal_include_size();
      for (const auto& msg : this_._internal_include()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
    // repeated .caffe.NetStateRule exclude = 33;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      total_size += 2UL * this_._internal_exclude_size();
      for (const auto& msg : this_._internal_exclude()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // repeated float loss_weight = 35;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_loss_weight_size());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_loss_weight_size());
      total_size += tag_size + data_size;
    }
    // repeated string param = 1001;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size +=
          2 * ::google::protobuf::internal::FromIntSize(this_._internal_param().size());
      for (int i = 0, n = this_._internal_param().size(); i < n; ++i) {
        total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
            this_._internal_param().Get(i));
      }
    }
    // repeated .caffe.V1LayerParameter.DimCheckMode blob_share_mode = 1002;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      ::size_t data_size =
          ::_pbi::WireFormatLite::EnumSize(this_._internal_blob_share_mode());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_blob_share_mode_size());
      total_size += data_size + tag_size;
    }
    // optional .caffe.MVNParameter mvn_param = 34;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.mvn_param_);
    }
    // optional .caffe.TransformationParameter transform_param = 36;
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.transform_param_);
    }
    // optional .caffe.TanHParameter tanh_param = 37;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.tanh_param_);
    }
    // optional .caffe.SigmoidParameter sigmoid_param = 38;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.sigmoid_param_);
    }
    // optional .caffe.SoftmaxParameter softmax_param = 39;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.softmax_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000700U)) {
    // optional .caffe.ContrastiveLossParameter contrastive_loss_param = 40;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.contrastive_loss_param_);
    }
    // optional .caffe.ExpParameter exp_param = 41;
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.exp_param_);
    }
    // optional .caffe.LossParameter loss_param = 42;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.loss_param_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void V1LayerParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<V1LayerParameter*>(&to_msg);
  auto& from = static_cast<const V1LayerParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.V1LayerParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_bottom()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_bottom());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_top()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_top());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_blobs()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_blobs());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_mutable_blobs_lr()->MergeFrom(from._internal_blobs_lr());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_mutable_weight_decay()->MergeFrom(from._internal_weight_decay());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_internal_set_name(from._internal_name());
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.layer_ != nullptr);
      if (_this->_impl_.layer_ == nullptr) {
        _this->_impl_.layer_ = Super_::CopyConstruct(arena, *from._impl_.layer_);
      } else {
        _this->_impl_.layer_->MergeFrom(*from._impl_.layer_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.concat_param_ != nullptr);
      if (_this->_impl_.concat_param_ == nullptr) {
        _this->_impl_.concat_param_ = Super_::CopyConstruct(arena, *from._impl_.concat_param_);
      } else {
        _this->_impl_.concat_param_->MergeFrom(*from._impl_.concat_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(from._impl_.convolution_param_ != nullptr);
      if (_this->_impl_.convolution_param_ == nullptr) {
        _this->_impl_.convolution_param_ = Super_::CopyConstruct(arena, *from._impl_.convolution_param_);
      } else {
        _this->_impl_.convolution_param_->MergeFrom(*from._impl_.convolution_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(from._impl_.data_param_ != nullptr);
      if (_this->_impl_.data_param_ == nullptr) {
        _this->_impl_.data_param_ = Super_::CopyConstruct(arena, *from._impl_.data_param_);
      } else {
        _this->_impl_.data_param_->MergeFrom(*from._impl_.data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.dropout_param_ != nullptr);
      if (_this->_impl_.dropout_param_ == nullptr) {
        _this->_impl_.dropout_param_ = Super_::CopyConstruct(arena, *from._impl_.dropout_param_);
      } else {
        _this->_impl_.dropout_param_->MergeFrom(*from._impl_.dropout_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      ABSL_DCHECK(from._impl_.hdf5_data_param_ != nullptr);
      if (_this->_impl_.hdf5_data_param_ == nullptr) {
        _this->_impl_.hdf5_data_param_ = Super_::CopyConstruct(arena, *from._impl_.hdf5_data_param_);
      } else {
        _this->_impl_.hdf5_data_param_->MergeFrom(*from._impl_.hdf5_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      ABSL_DCHECK(from._impl_.hdf5_output_param_ != nullptr);
      if (_this->_impl_.hdf5_output_param_ == nullptr) {
        _this->_impl_.hdf5_output_param_ = Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_);
      } else {
        _this->_impl_.hdf5_output_param_->MergeFrom(*from._impl_.hdf5_output_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      ABSL_DCHECK(from._impl_.image_data_param_ != nullptr);
      if (_this->_impl_.image_data_param_ == nullptr) {
        _this->_impl_.image_data_param_ = Super_::CopyConstruct(arena, *from._impl_.image_data_param_);
      } else {
        _this->_impl_.image_data_param_->MergeFrom(*from._impl_.image_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      ABSL_DCHECK(from._impl_.infogain_loss_param_ != nullptr);
      if (_this->_impl_.infogain_loss_param_ == nullptr) {
        _this->_impl_.infogain_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.infogain_loss_param_);
      } else {
        _this->_impl_.infogain_loss_param_->MergeFrom(*from._impl_.infogain_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      ABSL_DCHECK(from._impl_.inner_product_param_ != nullptr);
      if (_this->_impl_.inner_product_param_ == nullptr) {
        _this->_impl_.inner_product_param_ = Super_::CopyConstruct(arena, *from._impl_.inner_product_param_);
      } else {
        _this->_impl_.inner_product_param_->MergeFrom(*from._impl_.inner_product_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      ABSL_DCHECK(from._impl_.lrn_param_ != nullptr);
      if (_this->_impl_.lrn_param_ == nullptr) {
        _this->_impl_.lrn_param_ = Super_::CopyConstruct(arena, *from._impl_.lrn_param_);
      } else {
        _this->_impl_.lrn_param_->MergeFrom(*from._impl_.lrn_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      ABSL_DCHECK(from._impl_.pooling_param_ != nullptr);
      if (_this->_impl_.pooling_param_ == nullptr) {
        _this->_impl_.pooling_param_ = Super_::CopyConstruct(arena, *from._impl_.pooling_param_);
      } else {
        _this->_impl_.pooling_param_->MergeFrom(*from._impl_.pooling_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      ABSL_DCHECK(from._impl_.window_data_param_ != nullptr);
      if (_this->_impl_.window_data_param_ == nullptr) {
        _this->_impl_.window_data_param_ = Super_::CopyConstruct(arena, *from._impl_.window_data_param_);
      } else {
        _this->_impl_.window_data_param_->MergeFrom(*from._impl_.window_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      ABSL_DCHECK(from._impl_.power_param_ != nullptr);
      if (_this->_impl_.power_param_ == nullptr) {
        _this->_impl_.power_param_ = Super_::CopyConstruct(arena, *from._impl_.power_param_);
      } else {
        _this->_impl_.power_param_->MergeFrom(*from._impl_.power_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      ABSL_DCHECK(from._impl_.memory_data_param_ != nullptr);
      if (_this->_impl_.memory_data_param_ == nullptr) {
        _this->_impl_.memory_data_param_ = Super_::CopyConstruct(arena, *from._impl_.memory_data_param_);
      } else {
        _this->_impl_.memory_data_param_->MergeFrom(*from._impl_.memory_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      ABSL_DCHECK(from._impl_.argmax_param_ != nullptr);
      if (_this->_impl_.argmax_param_ == nullptr) {
        _this->_impl_.argmax_param_ = Super_::CopyConstruct(arena, *from._impl_.argmax_param_);
      } else {
        _this->_impl_.argmax_param_->MergeFrom(*from._impl_.argmax_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      ABSL_DCHECK(from._impl_.eltwise_param_ != nullptr);
      if (_this->_impl_.eltwise_param_ == nullptr) {
        _this->_impl_.eltwise_param_ = Super_::CopyConstruct(arena, *from._impl_.eltwise_param_);
      } else {
        _this->_impl_.eltwise_param_->MergeFrom(*from._impl_.eltwise_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      ABSL_DCHECK(from._impl_.threshold_param_ != nullptr);
      if (_this->_impl_.threshold_param_ == nullptr) {
        _this->_impl_.threshold_param_ = Super_::CopyConstruct(arena, *from._impl_.threshold_param_);
      } else {
        _this->_impl_.threshold_param_->MergeFrom(*from._impl_.threshold_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      ABSL_DCHECK(from._impl_.dummy_data_param_ != nullptr);
      if (_this->_impl_.dummy_data_param_ == nullptr) {
        _this->_impl_.dummy_data_param_ = Super_::CopyConstruct(arena, *from._impl_.dummy_data_param_);
      } else {
        _this->_impl_.dummy_data_param_->MergeFrom(*from._impl_.dummy_data_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      ABSL_DCHECK(from._impl_.accuracy_param_ != nullptr);
      if (_this->_impl_.accuracy_param_ == nullptr) {
        _this->_impl_.accuracy_param_ = Super_::CopyConstruct(arena, *from._impl_.accuracy_param_);
      } else {
        _this->_impl_.accuracy_param_->MergeFrom(*from._impl_.accuracy_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      ABSL_DCHECK(from._impl_.hinge_loss_param_ != nullptr);
      if (_this->_impl_.hinge_loss_param_ == nullptr) {
        _this->_impl_.hinge_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.hinge_loss_param_);
      } else {
        _this->_impl_.hinge_loss_param_->MergeFrom(*from._impl_.hinge_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      ABSL_DCHECK(from._impl_.relu_param_ != nullptr);
      if (_this->_impl_.relu_param_ == nullptr) {
        _this->_impl_.relu_param_ = Super_::CopyConstruct(arena, *from._impl_.relu_param_);
      } else {
        _this->_impl_.relu_param_->MergeFrom(*from._impl_.relu_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      ABSL_DCHECK(from._impl_.slice_param_ != nullptr);
      if (_this->_impl_.slice_param_ == nullptr) {
        _this->_impl_.slice_param_ = Super_::CopyConstruct(arena, *from._impl_.slice_param_);
      } else {
        _this->_impl_.slice_param_->MergeFrom(*from._impl_.slice_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      _this->_impl_.type_ = from._impl_.type_;
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      _this->_internal_mutable_include()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_include());
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _this->_internal_mutable_exclude()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_exclude());
    }
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_loss_weight()->MergeFrom(from._internal_loss_weight());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_param()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_param());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_mutable_blob_share_mode()->MergeFrom(from._internal_blob_share_mode());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      ABSL_DCHECK(from._impl_.mvn_param_ != nullptr);
      if (_this->_impl_.mvn_param_ == nullptr) {
        _this->_impl_.mvn_param_ = Super_::CopyConstruct(arena, *from._impl_.mvn_param_);
      } else {
        _this->_impl_.mvn_param_->MergeFrom(*from._impl_.mvn_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      ABSL_DCHECK(from._impl_.transform_param_ != nullptr);
      if (_this->_impl_.transform_param_ == nullptr) {
        _this->_impl_.transform_param_ = Super_::CopyConstruct(arena, *from._impl_.transform_param_);
      } else {
        _this->_impl_.transform_param_->MergeFrom(*from._impl_.transform_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.tanh_param_ != nullptr);
      if (_this->_impl_.tanh_param_ == nullptr) {
        _this->_impl_.tanh_param_ = Super_::CopyConstruct(arena, *from._impl_.tanh_param_);
      } else {
        _this->_impl_.tanh_param_->MergeFrom(*from._impl_.tanh_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.sigmoid_param_ != nullptr);
      if (_this->_impl_.sigmoid_param_ == nullptr) {
        _this->_impl_.sigmoid_param_ = Super_::CopyConstruct(arena, *from._impl_.sigmoid_param_);
      } else {
        _this->_impl_.sigmoid_param_->MergeFrom(*from._impl_.sigmoid_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.softmax_param_ != nullptr);
      if (_this->_impl_.softmax_param_ == nullptr) {
        _this->_impl_.softmax_param_ = Super_::CopyConstruct(arena, *from._impl_.softmax_param_);
      } else {
        _this->_impl_.softmax_param_->MergeFrom(*from._impl_.softmax_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00000700U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      ABSL_DCHECK(from._impl_.contrastive_loss_param_ != nullptr);
      if (_this->_impl_.contrastive_loss_param_ == nullptr) {
        _this->_impl_.contrastive_loss_param_ = Super_::CopyConstruct(arena, *from._impl_.contrastive_loss_param_);
      } else {
        _this->_impl_.contrastive_loss_param_->MergeFrom(*from._impl_.contrastive_loss_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      ABSL_DCHECK(from._impl_.exp_param_ != nullptr);
      if (_this->_impl_.exp_param_ == nullptr) {
        _this->_impl_.exp_param_ = Super_::CopyConstruct(arena, *from._impl_.exp_param_);
      } else {
        _this->_impl_.exp_param_->MergeFrom(*from._impl_.exp_param_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      ABSL_DCHECK(from._impl_.loss_param_ != nullptr);
      if (_this->_impl_.loss_param_ == nullptr) {
        _this->_impl_.loss_param_ = Super_::CopyConstruct(arena, *from._impl_.loss_param_);
      } else {
        _this->_impl_.loss_param_->MergeFrom(*from._impl_.loss_param_);
      }
    }
  }
  _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void V1LayerParameter::InternalSwap(V1LayerParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  _impl_.bottom_.InternalSwap(&other->_impl_.bottom_);
  _impl_.top_.InternalSwap(&other->_impl_.top_);
  _impl_.blobs_.InternalSwap(&other->_impl_.blobs_);
  _impl_.blobs_lr_.InternalSwap(&other->_impl_.blobs_lr_);
  _impl_.weight_decay_.InternalSwap(&other->_impl_.weight_decay_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.type_)
      + sizeof(V1LayerParameter::_impl_.type_)
      - PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.layer_)>(
          reinterpret_cast<char*>(&_impl_.layer_),
          reinterpret_cast<char*>(&other->_impl_.layer_));
  _impl_.include_.InternalSwap(&other->_impl_.include_);
  _impl_.exclude_.InternalSwap(&other->_impl_.exclude_);
  _impl_.loss_weight_.InternalSwap(&other->_impl_.loss_weight_);
  _impl_.param_.InternalSwap(&other->_impl_.param_);
  _impl_.blob_share_mode_.InternalSwap(&other->_impl_.blob_share_mode_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.loss_param_)
      + sizeof(V1LayerParameter::_impl_.loss_param_)
      - PROTOBUF_FIELD_OFFSET(V1LayerParameter, _impl_.mvn_param_)>(
          reinterpret_cast<char*>(&_impl_.mvn_param_),
          reinterpret_cast<char*>(&other->_impl_.mvn_param_));
}

::google::protobuf::Metadata V1LayerParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

/*static*/ const ::_pbi::LazyString V0LayerParameter::Impl_::_i_give_permission_to_break_this_code_default_det_crop_mode_{
    {{"warp", 4}},
    {nullptr},
};
V0LayerParameter::V0LayerParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, V0LayerParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.V0LayerParameter)
}
PROTOBUF_NDEBUG_INLINE V0LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::V0LayerParameter& from_msg)
      : _has_bits_{from._has_bits_},
        name_(arena, from.name_),
        type_(arena, from.type_),
        source_(arena, from.source_),
        meanfile_(arena, from.meanfile_),
        det_crop_mode_(arena, from.det_crop_mode_, _i_give_permission_to_break_this_code_default_det_crop_mode_),
        blobs_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V0LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_)>()
          , arena, from.blobs_
        }
        ,
        blobs_lr_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V0LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_lr_)>()
          , arena, from.blobs_lr_
        }
        ,
        weight_decay_ {
          visibility, ::_pbi::InternalMetadataOffset::Build<
              ::caffe::V0LayerParameter,
              PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.weight_decay_)>()
          , arena, from.weight_decay_
        }
     {}

V0LayerParameter::V0LayerParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const V0LayerParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, V0LayerParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  V0LayerParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.weight_filler_ = (CheckHasBit(cached_has_bits, 0x00000020U))
                 ? Super_::CopyConstruct(arena, *from._impl_.weight_filler_)
                 : nullptr;
  _impl_.bias_filler_ = (CheckHasBit(cached_has_bits, 0x00000040U))
                 ? Super_::CopyConstruct(arena, *from._impl_.bias_filler_)
                 : nullptr;
  _impl_.hdf5_output_param_ = (CheckHasBit(cached_has_bits, 0x00000080U))
                 ? Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_)
                 : nullptr;
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, num_output_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, num_output_),
           offsetof(Impl_, det_fg_fraction_) -
               offsetof(Impl_, num_output_) +
               sizeof(Impl_::det_fg_fraction_));
  ::memcpy(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, rand_skip_),
           reinterpret_cast<const char*>(&from._impl_) +
               offsetof(Impl_, rand_skip_),
           offsetof(Impl_, concat_dim_) -
               offsetof(Impl_, rand_skip_) +
               sizeof(Impl_::concat_dim_));

  // @@protoc_insertion_point(copy_constructor:caffe.V0LayerParameter)
}
PROTOBUF_NDEBUG_INLINE V0LayerParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
      : name_(arena),
        type_(arena),
        source_(arena),
        meanfile_(arena),
        det_crop_mode_(arena, Impl_::_i_give_permission_to_break_this_code_default_det_crop_mode_),
        biasterm_{true},
        group_{1u},
        stride_{1u},
        dropout_ratio_{0.5f},
        local_size_{5u},
        alpha_{1},
        beta_{0.75f},
        scale_{1},
        k_{1},
        det_bg_threshold_{0.5f},
        det_fg_fraction_{0.25f},
        blobs_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_)>()
         }
        ,
        blobs_lr_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.blobs_lr_)>()
         }
        ,
        weight_decay_ { visibility, ::_pbi::InternalMetadataOffset::Build<
            ::caffe::V0LayerParameter,
            PROTOBUF_FIELD_OFFSET(::caffe::V0LayerParameter, _impl_.weight_decay_)>()
         }
        ,
        det_fg_threshold_{0.5f},
        concat_dim_{1u} {}

inline void V0LayerParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, weight_filler_),
           0,
           offsetof(Impl_, new_width_) -
               offsetof(Impl_, weight_filler_) +
               sizeof(Impl_::new_width_));
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, rand_skip_),
           0,
           offsetof(Impl_, shuffle_images_) -
               offsetof(Impl_, rand_skip_) +
               sizeof(Impl_::shuffle_images_));
}
V0LayerParameter::~V0LayerParameter() {
  // @@protoc_insertion_point(destructor:caffe.V0LayerParameter)
  SharedDtor(*this);
}
inline void V0LayerParameter::SharedDtor(MessageLite& self) {
  V0LayerParameter& this_ = static_cast<V0LayerParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  this_._impl_.name_.Destroy();
  this_._impl_.type_.Destroy();
  this_._impl_.source_.Destroy();
  this_._impl_.meanfile_.Destroy();
  this_._impl_.det_crop_mode_.Destroy();
  delete this_._impl_.weight_filler_;
  delete this_._impl_.bias_filler_;
  delete this_._impl_.hdf5_output_param_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull V0LayerParameter_class_data_ =
        V0LayerParameter::InternalGenerateClassData_(V0LayerParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
V0LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&V0LayerParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(V0LayerParameter_class_data_.tc_table);
  return V0LayerParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
V0LayerParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&V0LayerParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&V0LayerParameter_globals_));
  return V0LayerParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const V0LayerParameter::ParseTableT_
    V0LayerParameter::_table_ =
        V0LayerParameter::InternalGenerateParseTable_(V0LayerParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void V0LayerParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.V0LayerParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      this_._impl_.name_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      this_._impl_.type_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      this_._impl_.source_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      this_._impl_.meanfile_.ClearNonDefaultToEmpty();
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      this_._impl_.det_crop_mode_.ClearToDefault(::caffe::V0LayerParameter::Impl_::_i_give_permission_to_break_this_code_default_det_crop_mode_, this_.GetArena());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(this_._impl_.weight_filler_ != nullptr);
      this_._impl_.weight_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(this_._impl_.bias_filler_ != nullptr);
      this_._impl_.bias_filler_->Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(this_._impl_.hdf5_output_param_ != nullptr);
      this_._impl_.hdf5_output_param_->Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    ::memset(&this_._impl_.num_output_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.det_context_pad_) -
                 reinterpret_cast<char*>(&this_._impl_.num_output_)) +
                 sizeof(_impl_.det_context_pad_));
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    ::memset(&this_._impl_.new_num_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.new_width_) -
                 reinterpret_cast<char*>(&this_._impl_.new_num_)) +
                 sizeof(_impl_.new_width_));
    this_._impl_.biasterm_ = true;
    this_._impl_.group_ = 1u;
    this_._impl_.stride_ = 1u;
    this_._impl_.dropout_ratio_ = 0.5f;
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    this_._impl_.local_size_ = 5u;
    this_._impl_.alpha_ = 1;
    this_._impl_.beta_ = 0.75f;
    this_._impl_.scale_ = 1;
    this_._impl_.k_ = 1;
    this_._impl_.det_bg_threshold_ = 0.5f;
    this_._impl_.det_fg_fraction_ = 0.25f;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _impl_.blobs_.Clear();
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _impl_.blobs_lr_.Clear();
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _impl_.weight_decay_.Clear();
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000003cU)) {
    ::memset(&this_._impl_.rand_skip_, 0,
             static_cast<::size_t>(
                 reinterpret_cast<char*>(&this_._impl_.shuffle_images_) -
                 reinterpret_cast<char*>(&this_._impl_.rand_skip_)) +
                 sizeof(_impl_.shuffle_images_));
    this_._impl_.det_fg_threshold_ = 0.5f;
    this_._impl_.concat_dim_ = 1u;
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL V0LayerParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const V0LayerParameter& this_ = static_cast<const V0LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL V0LayerParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const V0LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.V0LayerParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional string name = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    const ::std::string& _s = this_._internal_name();
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // optional string type = 2;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    const ::std::string& _s = this_._internal_type();
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  // optional uint32 num_output = 3;
  if (CheckHasBit(cached_has_bits, 0x00000100U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        3, this_._internal_num_output(), target);
  }

  // optional bool biasterm = 4 [default = true];
  if (CheckHasBit(cached_has_bits, 0x00100000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        4, this_._internal_biasterm(), target);
  }

  // optional .caffe.FillerParameter weight_filler = 5;
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *this_._impl_.weight_filler_, this_._impl_.weight_filler_->GetCachedSize(), target,
        stream);
  }

  // optional .caffe.FillerParameter bias_filler = 6;
  if (CheckHasBit(cached_has_bits, 0x00000040U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *this_._impl_.bias_filler_, this_._impl_.bias_filler_->GetCachedSize(), target,
        stream);
  }

  // optional uint32 pad = 7 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000200U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        7, this_._internal_pad(), target);
  }

  // optional uint32 kernelsize = 8;
  if (CheckHasBit(cached_has_bits, 0x00000400U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        8, this_._internal_kernelsize(), target);
  }

  // optional uint32 group = 9 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00200000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        9, this_._internal_group(), target);
  }

  // optional uint32 stride = 10 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00400000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        10, this_._internal_stride(), target);
  }

  // optional .caffe.V0LayerParameter.PoolMethod pool = 11 [default = MAX];
  if (CheckHasBit(cached_has_bits, 0x00000800U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        11, this_._internal_pool(), target);
  }

  // optional float dropout_ratio = 12 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00800000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        12, this_._internal_dropout_ratio(), target);
  }

  // optional uint32 local_size = 13 [default = 5];
  if (CheckHasBit(cached_has_bits, 0x01000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        13, this_._internal_local_size(), target);
  }

  // optional float alpha = 14 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x02000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        14, this_._internal_alpha(), target);
  }

  // optional float beta = 15 [default = 0.75];
  if (CheckHasBit(cached_has_bits, 0x04000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        15, this_._internal_beta(), target);
  }

  // optional string source = 16;
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    const ::std::string& _s = this_._internal_source();
    target = stream->WriteStringMaybeAliased(16, _s, target);
  }

  // optional float scale = 17 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x08000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        17, this_._internal_scale(), target);
  }

  // optional string meanfile = 18;
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    const ::std::string& _s = this_._internal_meanfile();
    target = stream->WriteStringMaybeAliased(18, _s, target);
  }

  // optional uint32 batchsize = 19;
  if (CheckHasBit(cached_has_bits, 0x00001000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        19, this_._internal_batchsize(), target);
  }

  // optional uint32 cropsize = 20 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00002000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        20, this_._internal_cropsize(), target);
  }

  // optional bool mirror = 21 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00004000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        21, this_._internal_mirror(), target);
  }

  // optional float k = 22 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x10000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        22, this_._internal_k(), target);
  }

  // repeated .caffe.BlobProto blobs = 50;
  if (CheckHasBit(cached_has_bits, 0x80000000U)) {
    for (unsigned i = 0, n = static_cast<unsigned>(
                             this_._internal_blobs_size());
         i < n; i++) {
      const auto& repfield = this_._internal_blobs().Get(i);
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          50, repfield, repfield.GetCachedSize(), target,
          stream);
    }
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // repeated float blobs_lr = 51;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    for (int i = 0, n = this_._internal_blobs_lr_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          51, this_._internal_blobs_lr().Get(i), target);
    }
  }

  // repeated float weight_decay = 52;
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    for (int i = 0, n = this_._internal_weight_decay_size(); i < n; ++i) {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteFloatToArray(
          52, this_._internal_weight_decay().Get(i), target);
    }
  }

  // optional uint32 rand_skip = 53 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00000004U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        53, this_._internal_rand_skip(), target);
  }

  // optional float det_fg_threshold = 54 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        54, this_._internal_det_fg_threshold(), target);
  }

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional float det_bg_threshold = 55 [default = 0.5];
  if (CheckHasBit(cached_has_bits, 0x20000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        55, this_._internal_det_bg_threshold(), target);
  }

  // optional float det_fg_fraction = 56 [default = 0.25];
  if (CheckHasBit(cached_has_bits, 0x40000000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(
        56, this_._internal_det_fg_fraction(), target);
  }

  // optional uint32 det_context_pad = 58 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00008000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        58, this_._internal_det_context_pad(), target);
  }

  // optional string det_crop_mode = 59 [default = "warp"];
  if (CheckHasBit(cached_has_bits, 0x00000010U)) {
    const ::std::string& _s = this_._internal_det_crop_mode();
    target = stream->WriteStringMaybeAliased(59, _s, target);
  }

  // optional int32 new_num = 60 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00010000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        60, this_._internal_new_num(), target);
  }

  // optional int32 new_channels = 61 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00020000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        61, this_._internal_new_channels(), target);
  }

  // optional int32 new_height = 62 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00040000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        62, this_._internal_new_height(), target);
  }

  // optional int32 new_width = 63 [default = 0];
  if (CheckHasBit(cached_has_bits, 0x00080000U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        63, this_._internal_new_width(), target);
  }

  cached_has_bits = this_._impl_._has_bits_[1];
  // optional bool shuffle_images = 64 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000008U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        64, this_._internal_shuffle_images(), target);
  }

  // optional uint32 concat_dim = 65 [default = 1];
  if (CheckHasBit(cached_has_bits, 0x00000020U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        65, this_._internal_concat_dim(), target);
  }

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.HDF5OutputParameter hdf5_output_param = 1001;
  if (CheckHasBit(cached_has_bits, 0x00000080U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1001, *this_._impl_.hdf5_output_param_, this_._impl_.hdf5_output_param_->GetCachedSize(), target,
        stream);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.V0LayerParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t V0LayerParameter::ByteSizeLong(const MessageLite& base) {
  const V0LayerParameter& this_ = static_cast<const V0LayerParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t V0LayerParameter::ByteSizeLong() const {
  const V0LayerParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.V0LayerParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += ::absl::popcount(0x78000000U & cached_has_bits) * 6;
  total_size += ::absl::popcount(0x06800000U & cached_has_bits) * 5;
  total_size += static_cast<bool>(0x00004000U & cached_has_bits) * 3;
  total_size += static_cast<bool>(0x00100000U & cached_has_bits) * 2;
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    // optional string name = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_name());
    }
    // optional string type = 2;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_type());
    }
    // optional string source = 16;
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_source());
    }
    // optional string meanfile = 18;
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_meanfile());
    }
    // optional string det_crop_mode = 59 [default = "warp"];
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                      this_._internal_det_crop_mode());
    }
    // optional .caffe.FillerParameter weight_filler = 5;
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.weight_filler_);
    }
    // optional .caffe.FillerParameter bias_filler = 6;
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.bias_filler_);
    }
    // optional .caffe.HDF5OutputParameter hdf5_output_param = 1001;
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      total_size += 2 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.hdf5_output_param_);
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000bf00U)) {
    // optional uint32 num_output = 3;
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_num_output());
    }
    // optional uint32 pad = 7 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_pad());
    }
    // optional uint32 kernelsize = 8;
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_kernelsize());
    }
    // optional .caffe.V0LayerParameter.PoolMethod pool = 11 [default = MAX];
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      total_size += 1 +
                    ::_pbi::WireFormatLite::EnumSize(this_._internal_pool());
    }
    // optional uint32 batchsize = 19;
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
                                      this_._internal_batchsize());
    }
    // optional uint32 cropsize = 20 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
                                      this_._internal_cropsize());
    }
    // optional uint32 det_context_pad = 58 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
                                      this_._internal_det_context_pad());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x006f0000U)) {
    // optional int32 new_num = 60 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_new_num());
    }
    // optional int32 new_channels = 61 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_new_channels());
    }
    // optional int32 new_height = 62 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_new_height());
    }
    // optional int32 new_width = 63 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                      this_._internal_new_width());
    }
    // optional uint32 group = 9 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_group());
    }
    // optional uint32 stride = 10 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_stride());
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x81000000U)) {
    // optional uint32 local_size = 13 [default = 5];
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
          this_._internal_local_size());
    }
    // repeated .caffe.BlobProto blobs = 50;
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      total_size += 2UL * this_._internal_blobs_size();
      for (const auto& msg : this_._internal_blobs()) {
        total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
      }
    }
  }
  cached_has_bits = this_._impl_._has_bits_[1];
  total_size += static_cast<bool>(0x00000010U & cached_has_bits) * 6;
  total_size += static_cast<bool>(0x00000008U & cached_has_bits) * 3;
  if (BatchCheckHasBit(cached_has_bits, 0x00000027U)) {
    // repeated float blobs_lr = 51;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_blobs_lr_size());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_blobs_lr_size());
      total_size += tag_size + data_size;
    }
    // repeated float weight_decay = 52;
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      ::size_t data_size = ::size_t{4} *
          ::_pbi::FromIntSize(this_._internal_weight_decay_size());
      ::size_t tag_size = ::size_t{2} *
          ::_pbi::FromIntSize(this_._internal_weight_decay_size());
      total_size += tag_size + data_size;
    }
    // optional uint32 rand_skip = 53 [default = 0];
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
                                      this_._internal_rand_skip());
    }
    // optional uint32 concat_dim = 65 [default = 1];
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
                                      this_._internal_concat_dim());
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void V0LayerParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<V0LayerParameter*>(&to_msg);
  auto& from = static_cast<const V0LayerParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.V0LayerParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_set_name(from._internal_name());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_set_type(from._internal_type());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_internal_set_source(from._internal_source());
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_internal_set_meanfile(from._internal_meanfile());
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_internal_set_det_crop_mode(from._internal_det_crop_mode());
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      ABSL_DCHECK(from._impl_.weight_filler_ != nullptr);
      if (_this->_impl_.weight_filler_ == nullptr) {
        _this->_impl_.weight_filler_ = Super_::CopyConstruct(arena, *from._impl_.weight_filler_);
      } else {
        _this->_impl_.weight_filler_->MergeFrom(*from._impl_.weight_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000040U)) {
      ABSL_DCHECK(from._impl_.bias_filler_ != nullptr);
      if (_this->_impl_.bias_filler_ == nullptr) {
        _this->_impl_.bias_filler_ = Super_::CopyConstruct(arena, *from._impl_.bias_filler_);
      } else {
        _this->_impl_.bias_filler_->MergeFrom(*from._impl_.bias_filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000080U)) {
      ABSL_DCHECK(from._impl_.hdf5_output_param_ != nullptr);
      if (_this->_impl_.hdf5_output_param_ == nullptr) {
        _this->_impl_.hdf5_output_param_ = Super_::CopyConstruct(arena, *from._impl_.hdf5_output_param_);
      } else {
        _this->_impl_.hdf5_output_param_->MergeFrom(*from._impl_.hdf5_output_param_);
      }
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
    if (CheckHasBit(cached_has_bits, 0x00000100U)) {
      _this->_impl_.num_output_ = from._impl_.num_output_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000200U)) {
      _this->_impl_.pad_ = from._impl_.pad_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000400U)) {
      _this->_impl_.kernelsize_ = from._impl_.kernelsize_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000800U)) {
      _this->_impl_.pool_ = from._impl_.pool_;
    }
    if (CheckHasBit(cached_has_bits, 0x00001000U)) {
      _this->_impl_.batchsize_ = from._impl_.batchsize_;
    }
    if (CheckHasBit(cached_has_bits, 0x00002000U)) {
      _this->_impl_.cropsize_ = from._impl_.cropsize_;
    }
    if (CheckHasBit(cached_has_bits, 0x00004000U)) {
      _this->_impl_.mirror_ = from._impl_.mirror_;
    }
    if (CheckHasBit(cached_has_bits, 0x00008000U)) {
      _this->_impl_.det_context_pad_ = from._impl_.det_context_pad_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
    if (CheckHasBit(cached_has_bits, 0x00010000U)) {
      _this->_impl_.new_num_ = from._impl_.new_num_;
    }
    if (CheckHasBit(cached_has_bits, 0x00020000U)) {
      _this->_impl_.new_channels_ = from._impl_.new_channels_;
    }
    if (CheckHasBit(cached_has_bits, 0x00040000U)) {
      _this->_impl_.new_height_ = from._impl_.new_height_;
    }
    if (CheckHasBit(cached_has_bits, 0x00080000U)) {
      _this->_impl_.new_width_ = from._impl_.new_width_;
    }
    if (CheckHasBit(cached_has_bits, 0x00100000U)) {
      _this->_impl_.biasterm_ = from._impl_.biasterm_;
    }
    if (CheckHasBit(cached_has_bits, 0x00200000U)) {
      _this->_impl_.group_ = from._impl_.group_;
    }
    if (CheckHasBit(cached_has_bits, 0x00400000U)) {
      _this->_impl_.stride_ = from._impl_.stride_;
    }
    if (CheckHasBit(cached_has_bits, 0x00800000U)) {
      _this->_impl_.dropout_ratio_ = from._impl_.dropout_ratio_;
    }
  }
  if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
    if (CheckHasBit(cached_has_bits, 0x01000000U)) {
      _this->_impl_.local_size_ = from._impl_.local_size_;
    }
    if (CheckHasBit(cached_has_bits, 0x02000000U)) {
      _this->_impl_.alpha_ = from._impl_.alpha_;
    }
    if (CheckHasBit(cached_has_bits, 0x04000000U)) {
      _this->_impl_.beta_ = from._impl_.beta_;
    }
    if (CheckHasBit(cached_has_bits, 0x08000000U)) {
      _this->_impl_.scale_ = from._impl_.scale_;
    }
    if (CheckHasBit(cached_has_bits, 0x10000000U)) {
      _this->_impl_.k_ = from._impl_.k_;
    }
    if (CheckHasBit(cached_has_bits, 0x20000000U)) {
      _this->_impl_.det_bg_threshold_ = from._impl_.det_bg_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x40000000U)) {
      _this->_impl_.det_fg_fraction_ = from._impl_.det_fg_fraction_;
    }
    if (CheckHasBit(cached_has_bits, 0x80000000U)) {
      _this->_internal_mutable_blobs()->InternalMergeFromWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), arena,
          from._internal_blobs());
    }
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (BatchCheckHasBit(cached_has_bits, 0x0000003fU)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      _this->_internal_mutable_blobs_lr()->MergeFrom(from._internal_blobs_lr());
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_internal_mutable_weight_decay()->MergeFrom(from._internal_weight_decay());
    }
    if (CheckHasBit(cached_has_bits, 0x00000004U)) {
      _this->_impl_.rand_skip_ = from._impl_.rand_skip_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000008U)) {
      _this->_impl_.shuffle_images_ = from._impl_.shuffle_images_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000010U)) {
      _this->_impl_.det_fg_threshold_ = from._impl_.det_fg_threshold_;
    }
    if (CheckHasBit(cached_has_bits, 0x00000020U)) {
      _this->_impl_.concat_dim_ = from._impl_.concat_dim_;
    }
  }
  _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void V0LayerParameter::InternalSwap(V0LayerParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.name_, &other->_impl_.name_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.type_, &other->_impl_.type_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.source_, &other->_impl_.source_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.meanfile_, &other->_impl_.meanfile_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.det_crop_mode_, &other->_impl_.det_crop_mode_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.det_fg_fraction_)
      + sizeof(V0LayerParameter::_impl_.det_fg_fraction_)
      - PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.weight_filler_)>(
          reinterpret_cast<char*>(&_impl_.weight_filler_),
          reinterpret_cast<char*>(&other->_impl_.weight_filler_));
  _impl_.blobs_.InternalSwap(&other->_impl_.blobs_);
  _impl_.blobs_lr_.InternalSwap(&other->_impl_.blobs_lr_);
  _impl_.weight_decay_.InternalSwap(&other->_impl_.weight_decay_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.concat_dim_)
      + sizeof(V0LayerParameter::_impl_.concat_dim_)
      - PROTOBUF_FIELD_OFFSET(V0LayerParameter, _impl_.rand_skip_)>(
          reinterpret_cast<char*>(&_impl_.rand_skip_),
          reinterpret_cast<char*>(&other->_impl_.rand_skip_));
}

::google::protobuf::Metadata V0LayerParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// ===================================================================

PReLUParameter::PReLUParameter(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PReLUParameter_get_class_data()) {
#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:caffe.PReLUParameter)
}
PROTOBUF_NDEBUG_INLINE PReLUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
    [[maybe_unused]] const ::caffe::PReLUParameter& from_msg)
      : _has_bits_{from._has_bits_} {}

PReLUParameter::PReLUParameter(
    ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
    const PReLUParameter& from)
#if defined(PROTOBUF_CUSTOM_VTABLE)
    : Super_(arena, PReLUParameter_get_class_data()) {

#else   // PROTOBUF_CUSTOM_VTABLE
    : Super_(arena) {
#endif  // PROTOBUF_CUSTOM_VTABLE
  PReLUParameter* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.filler_ = (CheckHasBit(cached_has_bits, 0x00000001U))
                 ? Super_::CopyConstruct(arena, *from._impl_.filler_)
                 : nullptr;
  _impl_.channel_shared_ = from._impl_.channel_shared_;

  // @@protoc_insertion_point(copy_constructor:caffe.PReLUParameter)
}
PROTOBUF_NDEBUG_INLINE PReLUParameter::Impl_::Impl_(
    [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
    [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
     {}

inline void PReLUParameter::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char*>(&_impl_) +
               offsetof(Impl_, filler_),
           0,
           offsetof(Impl_, channel_shared_) -
               offsetof(Impl_, filler_) +
               sizeof(Impl_::channel_shared_));
}
PReLUParameter::~PReLUParameter() {
  // @@protoc_insertion_point(destructor:caffe.PReLUParameter)
  SharedDtor(*this);
}
inline void PReLUParameter::SharedDtor(MessageLite& self) {
  PReLUParameter& this_ = static_cast<PReLUParameter&>(self);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  ABSL_DCHECK(this_.GetArena() == nullptr);
  delete this_._impl_.filler_;
  this_._impl_.~Impl_();
}

#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
    ::google::protobuf::internal::ClassDataFull PReLUParameter_class_data_ =
        PReLUParameter::InternalGenerateClassData_(PReLUParameter_globals_._default);

PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PReLUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PReLUParameter_class_data_);
  ::google::protobuf::internal::PrefetchToLocalCache(PReLUParameter_class_data_.tc_table);
  return PReLUParameter_class_data_.base();
}
#else
PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
PReLUParameter::GetClassData() const {
  ::google::protobuf::internal::PrefetchToLocalCache(&PReLUParameter_globals_);
  ::google::protobuf::internal::PrefetchToLocalCache(
      ::google::protobuf::internal::MessageGlobalsBase::ToParseTableBase(&PReLUParameter_globals_));
  return PReLUParameter_globals_.GetClassData();
}
#endif  // !PROTOBUF_MESSAGE_GLOBALS
#ifndef PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_CONSTINIT
PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const PReLUParameter::ParseTableT_
    PReLUParameter::_table_ =
        PReLUParameter::InternalGenerateParseTable_(PReLUParameter_class_data_.base());
#endif  // !PROTOBUF_MESSAGE_GLOBALS
PROTOBUF_NOINLINE void PReLUParameter::Clear() {
  auto& this_ [[maybe_unused]] = *this;
  // @@protoc_insertion_point(message_clear_start:caffe.PReLUParameter)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  cached_has_bits = this_._impl_._has_bits_[0];
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    ABSL_DCHECK(this_._impl_.filler_ != nullptr);
    this_._impl_.filler_->Clear();
  }
  this_._impl_.channel_shared_ = false;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::uint8_t* PROTOBUF_NONNULL PReLUParameter::_InternalSerialize(
    const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
  const PReLUParameter& this_ = static_cast<const PReLUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::uint8_t* PROTOBUF_NONNULL PReLUParameter::_InternalSerialize(
    ::uint8_t* PROTOBUF_NONNULL target,
    ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
  const PReLUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    this_.CheckHasBitConsistency();
  }
  // @@protoc_insertion_point(serialize_to_array_start:caffe.PReLUParameter)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = this_._impl_._has_bits_[0];
  // optional .caffe.FillerParameter filler = 1;
  if (CheckHasBit(cached_has_bits, 0x00000001U)) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        1, *this_._impl_.filler_, this_._impl_.filler_->GetCachedSize(), target,
        stream);
  }

  // optional bool channel_shared = 2 [default = false];
  if (CheckHasBit(cached_has_bits, 0x00000002U)) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        2, this_._internal_channel_shared(), target);
  }

  if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:caffe.PReLUParameter)
  return target;
}

#if defined(PROTOBUF_CUSTOM_VTABLE)
::size_t PReLUParameter::ByteSizeLong(const MessageLite& base) {
  const PReLUParameter& this_ = static_cast<const PReLUParameter&>(base);
#else   // PROTOBUF_CUSTOM_VTABLE
::size_t PReLUParameter::ByteSizeLong() const {
  const PReLUParameter& this_ = *this;
#endif  // PROTOBUF_CUSTOM_VTABLE
  // @@protoc_insertion_point(message_byte_size_start:caffe.PReLUParameter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits [[maybe_unused]] = 0;

  ::_pbi::Prefetch5LinesFrom7Lines(&this_);
  cached_has_bits = this_._impl_._has_bits_[0];
  total_size += static_cast<bool>(0x00000002U & cached_has_bits) * 2;
   {
    // optional .caffe.FillerParameter filler = 1;
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      total_size += 1 +
                    ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.filler_);
    }
  }
  return this_.MaybeComputeUnknownFieldsSize(total_size,
                                             &this_._impl_._cached_size_);
}

void PReLUParameter::MergeImpl(::google::protobuf::MessageLite& to_msg,
                      const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast<PReLUParameter*>(&to_msg);
  auto& from = static_cast<const PReLUParameter&>(from_msg);
  if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
    from.CheckHasBitConsistency();
  }
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:caffe.PReLUParameter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
    if (CheckHasBit(cached_has_bits, 0x00000001U)) {
      ABSL_DCHECK(from._impl_.filler_ != nullptr);
      if (_this->_impl_.filler_ == nullptr) {
        _this->_impl_.filler_ = Super_::CopyConstruct(arena, *from._impl_.filler_);
      } else {
        _this->_impl_.filler_->MergeFrom(*from._impl_.filler_);
      }
    }
    if (CheckHasBit(cached_has_bits, 0x00000002U)) {
      _this->_impl_.channel_shared_ = from._impl_.channel_shared_;
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
}

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


void PReLUParameter::InternalSwap(PReLUParameter* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
  using ::std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.channel_shared_)
      + sizeof(PReLUParameter::_impl_.channel_shared_)
      - PROTOBUF_FIELD_OFFSET(PReLUParameter, _impl_.filler_)>(
          reinterpret_cast<char*>(&_impl_.filler_),
          reinterpret_cast<char*>(&other->_impl_.filler_));
}

::google::protobuf::Metadata PReLUParameter::GetMetadata() const {
  return Super_::GetMetadataImpl(GetClassData()->full());
}
// @@protoc_insertion_point(namespace_scope)
}  // namespace caffe
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google
// @@protoc_insertion_point(global_scope)
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
    _static_init2_ [[maybe_unused]] =
        (::_pbi::AddDescriptors(&descriptor_table_caffe_2eproto),
         ::std::false_type{});
#include "google/protobuf/port_undef.inc"
