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

#include "flwr/proto/recordset.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG
namespace flwr {
namespace proto {
constexpr DoubleList::DoubleList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : vals_(){}
struct DoubleListDefaultTypeInternal {
  constexpr DoubleListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~DoubleListDefaultTypeInternal() {}
  union {
    DoubleList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT DoubleListDefaultTypeInternal _DoubleList_default_instance_;
constexpr Sint64List::Sint64List(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : vals_()
  , _vals_cached_byte_size_(0){}
struct Sint64ListDefaultTypeInternal {
  constexpr Sint64ListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~Sint64ListDefaultTypeInternal() {}
  union {
    Sint64List _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Sint64ListDefaultTypeInternal _Sint64List_default_instance_;
constexpr BoolList::BoolList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : vals_(){}
struct BoolListDefaultTypeInternal {
  constexpr BoolListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~BoolListDefaultTypeInternal() {}
  union {
    BoolList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BoolListDefaultTypeInternal _BoolList_default_instance_;
constexpr StringList::StringList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : vals_(){}
struct StringListDefaultTypeInternal {
  constexpr StringListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~StringListDefaultTypeInternal() {}
  union {
    StringList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT StringListDefaultTypeInternal _StringList_default_instance_;
constexpr BytesList::BytesList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : vals_(){}
struct BytesListDefaultTypeInternal {
  constexpr BytesListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~BytesListDefaultTypeInternal() {}
  union {
    BytesList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BytesListDefaultTypeInternal _BytesList_default_instance_;
constexpr Array::Array(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : shape_()
  , _shape_cached_byte_size_(0)
  , dtype_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , stype_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , data_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct ArrayDefaultTypeInternal {
  constexpr ArrayDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ArrayDefaultTypeInternal() {}
  union {
    Array _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ArrayDefaultTypeInternal _Array_default_instance_;
constexpr MetricsRecordValue::MetricsRecordValue(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : _oneof_case_{}{}
struct MetricsRecordValueDefaultTypeInternal {
  constexpr MetricsRecordValueDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~MetricsRecordValueDefaultTypeInternal() {}
  union {
    MetricsRecordValue _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MetricsRecordValueDefaultTypeInternal _MetricsRecordValue_default_instance_;
constexpr ConfigsRecordValue::ConfigsRecordValue(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : _oneof_case_{}{}
struct ConfigsRecordValueDefaultTypeInternal {
  constexpr ConfigsRecordValueDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ConfigsRecordValueDefaultTypeInternal() {}
  union {
    ConfigsRecordValue _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ConfigsRecordValueDefaultTypeInternal _ConfigsRecordValue_default_instance_;
constexpr ParametersRecord::ParametersRecord(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_keys_()
  , data_values_(){}
struct ParametersRecordDefaultTypeInternal {
  constexpr ParametersRecordDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ParametersRecordDefaultTypeInternal() {}
  union {
    ParametersRecord _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ParametersRecordDefaultTypeInternal _ParametersRecord_default_instance_;
constexpr MetricsRecord_DataEntry_DoNotUse::MetricsRecord_DataEntry_DoNotUse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct MetricsRecord_DataEntry_DoNotUseDefaultTypeInternal {
  constexpr MetricsRecord_DataEntry_DoNotUseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~MetricsRecord_DataEntry_DoNotUseDefaultTypeInternal() {}
  union {
    MetricsRecord_DataEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MetricsRecord_DataEntry_DoNotUseDefaultTypeInternal _MetricsRecord_DataEntry_DoNotUse_default_instance_;
constexpr MetricsRecord::MetricsRecord(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}){}
struct MetricsRecordDefaultTypeInternal {
  constexpr MetricsRecordDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~MetricsRecordDefaultTypeInternal() {}
  union {
    MetricsRecord _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MetricsRecordDefaultTypeInternal _MetricsRecord_default_instance_;
constexpr ConfigsRecord_DataEntry_DoNotUse::ConfigsRecord_DataEntry_DoNotUse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct ConfigsRecord_DataEntry_DoNotUseDefaultTypeInternal {
  constexpr ConfigsRecord_DataEntry_DoNotUseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ConfigsRecord_DataEntry_DoNotUseDefaultTypeInternal() {}
  union {
    ConfigsRecord_DataEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ConfigsRecord_DataEntry_DoNotUseDefaultTypeInternal _ConfigsRecord_DataEntry_DoNotUse_default_instance_;
constexpr ConfigsRecord::ConfigsRecord(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}){}
struct ConfigsRecordDefaultTypeInternal {
  constexpr ConfigsRecordDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ConfigsRecordDefaultTypeInternal() {}
  union {
    ConfigsRecord _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ConfigsRecordDefaultTypeInternal _ConfigsRecord_default_instance_;
constexpr RecordSet_ParametersEntry_DoNotUse::RecordSet_ParametersEntry_DoNotUse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct RecordSet_ParametersEntry_DoNotUseDefaultTypeInternal {
  constexpr RecordSet_ParametersEntry_DoNotUseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~RecordSet_ParametersEntry_DoNotUseDefaultTypeInternal() {}
  union {
    RecordSet_ParametersEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RecordSet_ParametersEntry_DoNotUseDefaultTypeInternal _RecordSet_ParametersEntry_DoNotUse_default_instance_;
constexpr RecordSet_MetricsEntry_DoNotUse::RecordSet_MetricsEntry_DoNotUse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct RecordSet_MetricsEntry_DoNotUseDefaultTypeInternal {
  constexpr RecordSet_MetricsEntry_DoNotUseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~RecordSet_MetricsEntry_DoNotUseDefaultTypeInternal() {}
  union {
    RecordSet_MetricsEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RecordSet_MetricsEntry_DoNotUseDefaultTypeInternal _RecordSet_MetricsEntry_DoNotUse_default_instance_;
constexpr RecordSet_ConfigsEntry_DoNotUse::RecordSet_ConfigsEntry_DoNotUse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct RecordSet_ConfigsEntry_DoNotUseDefaultTypeInternal {
  constexpr RecordSet_ConfigsEntry_DoNotUseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~RecordSet_ConfigsEntry_DoNotUseDefaultTypeInternal() {}
  union {
    RecordSet_ConfigsEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RecordSet_ConfigsEntry_DoNotUseDefaultTypeInternal _RecordSet_ConfigsEntry_DoNotUse_default_instance_;
constexpr RecordSet::RecordSet(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : parameters_(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{})
  , metrics_(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{})
  , configs_(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}){}
struct RecordSetDefaultTypeInternal {
  constexpr RecordSetDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~RecordSetDefaultTypeInternal() {}
  union {
    RecordSet _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RecordSetDefaultTypeInternal _RecordSet_default_instance_;
}  // namespace proto
}  // namespace flwr
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_flwr_2fproto_2frecordset_2eproto[17];
static constexpr ::PROTOBUF_NAMESPACE_ID::EnumDescriptor const** file_level_enum_descriptors_flwr_2fproto_2frecordset_2eproto = nullptr;
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_flwr_2fproto_2frecordset_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_flwr_2fproto_2frecordset_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::DoubleList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::DoubleList, vals_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Sint64List, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Sint64List, vals_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::BoolList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::BoolList, vals_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::StringList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::StringList, vals_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::BytesList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::BytesList, vals_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Array, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Array, dtype_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Array, shape_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Array, stype_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::Array, data_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecordValue, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecordValue, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecordValue, value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecordValue, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecordValue, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecordValue, value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ParametersRecord, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ParametersRecord, data_keys_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ParametersRecord, data_values_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord_DataEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord_DataEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord_DataEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord_DataEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::MetricsRecord, data_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord_DataEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord_DataEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord_DataEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord_DataEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::ConfigsRecord, data_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ParametersEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ParametersEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ParametersEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ParametersEntry_DoNotUse, value_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_MetricsEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_MetricsEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_MetricsEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_MetricsEntry_DoNotUse, value_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ConfigsEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ConfigsEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ConfigsEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet_ConfigsEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet, parameters_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet, metrics_),
  PROTOBUF_FIELD_OFFSET(::flwr::proto::RecordSet, configs_),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::flwr::proto::DoubleList)},
  { 7, -1, -1, sizeof(::flwr::proto::Sint64List)},
  { 14, -1, -1, sizeof(::flwr::proto::BoolList)},
  { 21, -1, -1, sizeof(::flwr::proto::StringList)},
  { 28, -1, -1, sizeof(::flwr::proto::BytesList)},
  { 35, -1, -1, sizeof(::flwr::proto::Array)},
  { 45, -1, -1, sizeof(::flwr::proto::MetricsRecordValue)},
  { 56, -1, -1, sizeof(::flwr::proto::ConfigsRecordValue)},
  { 73, -1, -1, sizeof(::flwr::proto::ParametersRecord)},
  { 81, 89, -1, sizeof(::flwr::proto::MetricsRecord_DataEntry_DoNotUse)},
  { 91, -1, -1, sizeof(::flwr::proto::MetricsRecord)},
  { 98, 106, -1, sizeof(::flwr::proto::ConfigsRecord_DataEntry_DoNotUse)},
  { 108, -1, -1, sizeof(::flwr::proto::ConfigsRecord)},
  { 115, 123, -1, sizeof(::flwr::proto::RecordSet_ParametersEntry_DoNotUse)},
  { 125, 133, -1, sizeof(::flwr::proto::RecordSet_MetricsEntry_DoNotUse)},
  { 135, 143, -1, sizeof(::flwr::proto::RecordSet_ConfigsEntry_DoNotUse)},
  { 145, -1, -1, sizeof(::flwr::proto::RecordSet)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_DoubleList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_Sint64List_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_BoolList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_StringList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_BytesList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_Array_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_MetricsRecordValue_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_ConfigsRecordValue_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_ParametersRecord_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_MetricsRecord_DataEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_MetricsRecord_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_ConfigsRecord_DataEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_ConfigsRecord_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_RecordSet_ParametersEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_RecordSet_MetricsEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_RecordSet_ConfigsEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::flwr::proto::_RecordSet_default_instance_),
};

const char descriptor_table_protodef_flwr_2fproto_2frecordset_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\032flwr/proto/recordset.proto\022\nflwr.proto"
  "\"\032\n\nDoubleList\022\014\n\004vals\030\001 \003(\001\"\032\n\nSint64Li"
  "st\022\014\n\004vals\030\001 \003(\022\"\030\n\010BoolList\022\014\n\004vals\030\001 \003"
  "(\010\"\032\n\nStringList\022\014\n\004vals\030\001 \003(\t\"\031\n\tBytesL"
  "ist\022\014\n\004vals\030\001 \003(\014\"B\n\005Array\022\r\n\005dtype\030\001 \001("
  "\t\022\r\n\005shape\030\002 \003(\005\022\r\n\005stype\030\003 \001(\t\022\014\n\004data\030"
  "\004 \001(\014\"\237\001\n\022MetricsRecordValue\022\020\n\006double\030\001"
  " \001(\001H\000\022\020\n\006sint64\030\002 \001(\022H\000\022-\n\013double_list\030"
  "\025 \001(\0132\026.flwr.proto.DoubleListH\000\022-\n\013sint6"
  "4_list\030\026 \001(\0132\026.flwr.proto.Sint64ListH\000B\007"
  "\n\005value\"\331\002\n\022ConfigsRecordValue\022\020\n\006double"
  "\030\001 \001(\001H\000\022\020\n\006sint64\030\002 \001(\022H\000\022\016\n\004bool\030\003 \001(\010"
  "H\000\022\020\n\006string\030\004 \001(\tH\000\022\017\n\005bytes\030\005 \001(\014H\000\022-\n"
  "\013double_list\030\025 \001(\0132\026.flwr.proto.DoubleLi"
  "stH\000\022-\n\013sint64_list\030\026 \001(\0132\026.flwr.proto.S"
  "int64ListH\000\022)\n\tbool_list\030\027 \001(\0132\024.flwr.pr"
  "oto.BoolListH\000\022-\n\013string_list\030\030 \001(\0132\026.fl"
  "wr.proto.StringListH\000\022+\n\nbytes_list\030\031 \001("
  "\0132\025.flwr.proto.BytesListH\000B\007\n\005value\"M\n\020P"
  "arametersRecord\022\021\n\tdata_keys\030\001 \003(\t\022&\n\013da"
  "ta_values\030\002 \003(\0132\021.flwr.proto.Array\"\217\001\n\rM"
  "etricsRecord\0221\n\004data\030\001 \003(\0132#.flwr.proto."
  "MetricsRecord.DataEntry\032K\n\tDataEntry\022\013\n\003"
  "key\030\001 \001(\t\022-\n\005value\030\002 \001(\0132\036.flwr.proto.Me"
  "tricsRecordValue:\0028\001\"\217\001\n\rConfigsRecord\0221"
  "\n\004data\030\001 \003(\0132#.flwr.proto.ConfigsRecord."
  "DataEntry\032K\n\tDataEntry\022\013\n\003key\030\001 \001(\t\022-\n\005v"
  "alue\030\002 \001(\0132\036.flwr.proto.ConfigsRecordVal"
  "ue:\0028\001\"\227\003\n\tRecordSet\0229\n\nparameters\030\001 \003(\013"
  "2%.flwr.proto.RecordSet.ParametersEntry\022"
  "3\n\007metrics\030\002 \003(\0132\".flwr.proto.RecordSet."
  "MetricsEntry\0223\n\007configs\030\003 \003(\0132\".flwr.pro"
  "to.RecordSet.ConfigsEntry\032O\n\017ParametersE"
  "ntry\022\013\n\003key\030\001 \001(\t\022+\n\005value\030\002 \001(\0132\034.flwr."
  "proto.ParametersRecord:\0028\001\032I\n\014MetricsEnt"
  "ry\022\013\n\003key\030\001 \001(\t\022(\n\005value\030\002 \001(\0132\031.flwr.pr"
  "oto.MetricsRecord:\0028\001\032I\n\014ConfigsEntry\022\013\n"
  "\003key\030\001 \001(\t\022(\n\005value\030\002 \001(\0132\031.flwr.proto.C"
  "onfigsRecord:\0028\001b\006proto3"
  ;
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_flwr_2fproto_2frecordset_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_flwr_2fproto_2frecordset_2eproto = {
  false, false, 1544, descriptor_table_protodef_flwr_2fproto_2frecordset_2eproto, "flwr/proto/recordset.proto", 
  &descriptor_table_flwr_2fproto_2frecordset_2eproto_once, nullptr, 0, 17,
  schemas, file_default_instances, TableStruct_flwr_2fproto_2frecordset_2eproto::offsets,
  file_level_metadata_flwr_2fproto_2frecordset_2eproto, file_level_enum_descriptors_flwr_2fproto_2frecordset_2eproto, file_level_service_descriptors_flwr_2fproto_2frecordset_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_flwr_2fproto_2frecordset_2eproto_getter() {
  return &descriptor_table_flwr_2fproto_2frecordset_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_flwr_2fproto_2frecordset_2eproto(&descriptor_table_flwr_2fproto_2frecordset_2eproto);
namespace flwr {
namespace proto {

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

class DoubleList::_Internal {
 public:
};

DoubleList::DoubleList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  vals_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.DoubleList)
}
DoubleList::DoubleList(const DoubleList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      vals_(from.vals_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.DoubleList)
}

void DoubleList::SharedCtor() {
}

DoubleList::~DoubleList() {
  // @@protoc_insertion_point(destructor:flwr.proto.DoubleList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void DoubleList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void DoubleList::ArenaDtor(void* object) {
  DoubleList* _this = reinterpret_cast< DoubleList* >(object);
  (void)_this;
}
void DoubleList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void DoubleList::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void DoubleList::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.DoubleList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  vals_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DoubleList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated double vals = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedDoubleParser(_internal_mutable_vals(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 9) {
          _internal_add_vals(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* DoubleList::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.DoubleList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated double vals = 1;
  if (this->_internal_vals_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_vals(), target);
  }

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

size_t DoubleList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.DoubleList)
  size_t total_size = 0;

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

  // repeated double vals = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_vals_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
            static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
    }
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DoubleList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    DoubleList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DoubleList::GetClassData() const { return &_class_data_; }

void DoubleList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<DoubleList *>(to)->MergeFrom(
      static_cast<const DoubleList &>(from));
}


void DoubleList::MergeFrom(const DoubleList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.DoubleList)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  vals_.MergeFrom(from.vals_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void DoubleList::InternalSwap(DoubleList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  vals_.InternalSwap(&other->vals_);
}

::PROTOBUF_NAMESPACE_ID::Metadata DoubleList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[0]);
}

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

class Sint64List::_Internal {
 public:
};

Sint64List::Sint64List(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  vals_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.Sint64List)
}
Sint64List::Sint64List(const Sint64List& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      vals_(from.vals_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.Sint64List)
}

void Sint64List::SharedCtor() {
}

Sint64List::~Sint64List() {
  // @@protoc_insertion_point(destructor:flwr.proto.Sint64List)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Sint64List::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Sint64List::ArenaDtor(void* object) {
  Sint64List* _this = reinterpret_cast< Sint64List* >(object);
  (void)_this;
}
void Sint64List::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Sint64List::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Sint64List::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.Sint64List)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  vals_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Sint64List::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated sint64 vals = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedSInt64Parser(_internal_mutable_vals(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8) {
          _internal_add_vals(::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* Sint64List::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.Sint64List)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated sint64 vals = 1;
  {
    int byte_size = _vals_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteSInt64Packed(
          1, _internal_vals(), byte_size, target);
    }
  }

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

size_t Sint64List::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.Sint64List)
  size_t total_size = 0;

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

  // repeated sint64 vals = 1;
  {
    size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      SInt64Size(this->vals_);
    if (data_size > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
            static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size);
    _vals_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Sint64List::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Sint64List::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Sint64List::GetClassData() const { return &_class_data_; }

void Sint64List::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Sint64List *>(to)->MergeFrom(
      static_cast<const Sint64List &>(from));
}


void Sint64List::MergeFrom(const Sint64List& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.Sint64List)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  vals_.MergeFrom(from.vals_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Sint64List::InternalSwap(Sint64List* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  vals_.InternalSwap(&other->vals_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Sint64List::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[1]);
}

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

class BoolList::_Internal {
 public:
};

BoolList::BoolList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  vals_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.BoolList)
}
BoolList::BoolList(const BoolList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      vals_(from.vals_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.BoolList)
}

void BoolList::SharedCtor() {
}

BoolList::~BoolList() {
  // @@protoc_insertion_point(destructor:flwr.proto.BoolList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void BoolList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void BoolList::ArenaDtor(void* object) {
  BoolList* _this = reinterpret_cast< BoolList* >(object);
  (void)_this;
}
void BoolList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void BoolList::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void BoolList::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.BoolList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  vals_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BoolList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated bool vals = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedBoolParser(_internal_mutable_vals(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8) {
          _internal_add_vals(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* BoolList::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.BoolList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated bool vals = 1;
  if (this->_internal_vals_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_vals(), target);
  }

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

size_t BoolList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.BoolList)
  size_t total_size = 0;

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

  // repeated bool vals = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_vals_size());
    size_t data_size = 1UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
            static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
    }
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BoolList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    BoolList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BoolList::GetClassData() const { return &_class_data_; }

void BoolList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<BoolList *>(to)->MergeFrom(
      static_cast<const BoolList &>(from));
}


void BoolList::MergeFrom(const BoolList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.BoolList)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  vals_.MergeFrom(from.vals_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void BoolList::InternalSwap(BoolList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  vals_.InternalSwap(&other->vals_);
}

::PROTOBUF_NAMESPACE_ID::Metadata BoolList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[2]);
}

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

class StringList::_Internal {
 public:
};

StringList::StringList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  vals_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.StringList)
}
StringList::StringList(const StringList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      vals_(from.vals_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.StringList)
}

void StringList::SharedCtor() {
}

StringList::~StringList() {
  // @@protoc_insertion_point(destructor:flwr.proto.StringList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void StringList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void StringList::ArenaDtor(void* object) {
  StringList* _this = reinterpret_cast< StringList* >(object);
  (void)_this;
}
void StringList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void StringList::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void StringList::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.StringList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  vals_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* StringList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string vals = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_vals();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "flwr.proto.StringList.vals"));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* StringList::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.StringList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string vals = 1;
  for (int i = 0, n = this->_internal_vals_size(); i < n; i++) {
    const auto& s = this->_internal_vals(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "flwr.proto.StringList.vals");
    target = stream->WriteString(1, s, target);
  }

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

size_t StringList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.StringList)
  size_t total_size = 0;

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

  // repeated string vals = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(vals_.size());
  for (int i = 0, n = vals_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      vals_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData StringList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    StringList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*StringList::GetClassData() const { return &_class_data_; }

void StringList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<StringList *>(to)->MergeFrom(
      static_cast<const StringList &>(from));
}


void StringList::MergeFrom(const StringList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.StringList)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  vals_.MergeFrom(from.vals_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void StringList::InternalSwap(StringList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  vals_.InternalSwap(&other->vals_);
}

::PROTOBUF_NAMESPACE_ID::Metadata StringList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[3]);
}

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

class BytesList::_Internal {
 public:
};

BytesList::BytesList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  vals_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.BytesList)
}
BytesList::BytesList(const BytesList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      vals_(from.vals_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.BytesList)
}

void BytesList::SharedCtor() {
}

BytesList::~BytesList() {
  // @@protoc_insertion_point(destructor:flwr.proto.BytesList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void BytesList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void BytesList::ArenaDtor(void* object) {
  BytesList* _this = reinterpret_cast< BytesList* >(object);
  (void)_this;
}
void BytesList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void BytesList::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void BytesList::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.BytesList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  vals_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BytesList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated bytes vals = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_vals();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* BytesList::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.BytesList)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated bytes vals = 1;
  for (int i = 0, n = this->_internal_vals_size(); i < n; i++) {
    const auto& s = this->_internal_vals(i);
    target = stream->WriteBytes(1, s, target);
  }

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

size_t BytesList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.BytesList)
  size_t total_size = 0;

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

  // repeated bytes vals = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(vals_.size());
  for (int i = 0, n = vals_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
      vals_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BytesList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    BytesList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BytesList::GetClassData() const { return &_class_data_; }

void BytesList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<BytesList *>(to)->MergeFrom(
      static_cast<const BytesList &>(from));
}


void BytesList::MergeFrom(const BytesList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.BytesList)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  vals_.MergeFrom(from.vals_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void BytesList::InternalSwap(BytesList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  vals_.InternalSwap(&other->vals_);
}

::PROTOBUF_NAMESPACE_ID::Metadata BytesList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[4]);
}

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

class Array::_Internal {
 public:
};

Array::Array(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  shape_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.Array)
}
Array::Array(const Array& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      shape_(from.shape_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  dtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_dtype().empty()) {
    dtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_dtype(), 
      GetArenaForAllocation());
  }
  stype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_stype().empty()) {
    stype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_stype(), 
      GetArenaForAllocation());
  }
  data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_data().empty()) {
    data_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_data(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:flwr.proto.Array)
}

void Array::SharedCtor() {
dtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
stype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

Array::~Array() {
  // @@protoc_insertion_point(destructor:flwr.proto.Array)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Array::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  dtype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  stype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  data_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

void Array::ArenaDtor(void* object) {
  Array* _this = reinterpret_cast< Array* >(object);
  (void)_this;
}
void Array::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void Array::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Array::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.Array)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  shape_.Clear();
  dtype_.ClearToEmpty();
  stype_.ClearToEmpty();
  data_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Array::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string dtype = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_dtype();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "flwr.proto.Array.dtype"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 shape = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_shape(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16) {
          _internal_add_shape(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string stype = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          auto str = _internal_mutable_stype();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "flwr.proto.Array.stype"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes data = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          auto str = _internal_mutable_data();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* Array::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.Array)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string dtype = 1;
  if (!this->_internal_dtype().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_dtype().data(), static_cast<int>(this->_internal_dtype().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "flwr.proto.Array.dtype");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_dtype(), target);
  }

  // repeated int32 shape = 2;
  {
    int byte_size = _shape_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_shape(), byte_size, target);
    }
  }

  // string stype = 3;
  if (!this->_internal_stype().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_stype().data(), static_cast<int>(this->_internal_stype().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "flwr.proto.Array.stype");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_stype(), target);
  }

  // bytes data = 4;
  if (!this->_internal_data().empty()) {
    target = stream->WriteBytesMaybeAliased(
        4, this->_internal_data(), target);
  }

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

size_t Array::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.Array)
  size_t total_size = 0;

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

  // repeated int32 shape = 2;
  {
    size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      Int32Size(this->shape_);
    if (data_size > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
            static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size);
    _shape_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // string dtype = 1;
  if (!this->_internal_dtype().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_dtype());
  }

  // string stype = 3;
  if (!this->_internal_stype().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_stype());
  }

  // bytes data = 4;
  if (!this->_internal_data().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Array::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Array::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Array::GetClassData() const { return &_class_data_; }

void Array::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Array *>(to)->MergeFrom(
      static_cast<const Array &>(from));
}


void Array::MergeFrom(const Array& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.Array)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  shape_.MergeFrom(from.shape_);
  if (!from._internal_dtype().empty()) {
    _internal_set_dtype(from._internal_dtype());
  }
  if (!from._internal_stype().empty()) {
    _internal_set_stype(from._internal_stype());
  }
  if (!from._internal_data().empty()) {
    _internal_set_data(from._internal_data());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Array::InternalSwap(Array* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  shape_.InternalSwap(&other->shape_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &dtype_, lhs_arena,
      &other->dtype_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &stype_, lhs_arena,
      &other->stype_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &data_, lhs_arena,
      &other->data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata Array::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[5]);
}

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

class MetricsRecordValue::_Internal {
 public:
  static const ::flwr::proto::DoubleList& double_list(const MetricsRecordValue* msg);
  static const ::flwr::proto::Sint64List& sint64_list(const MetricsRecordValue* msg);
};

const ::flwr::proto::DoubleList&
MetricsRecordValue::_Internal::double_list(const MetricsRecordValue* msg) {
  return *msg->value_.double_list_;
}
const ::flwr::proto::Sint64List&
MetricsRecordValue::_Internal::sint64_list(const MetricsRecordValue* msg) {
  return *msg->value_.sint64_list_;
}
void MetricsRecordValue::set_allocated_double_list(::flwr::proto::DoubleList* double_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (double_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::DoubleList>::GetOwningArena(double_list);
    if (message_arena != submessage_arena) {
      double_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, double_list, submessage_arena);
    }
    set_has_double_list();
    value_.double_list_ = double_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.MetricsRecordValue.double_list)
}
void MetricsRecordValue::set_allocated_sint64_list(::flwr::proto::Sint64List* sint64_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (sint64_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::Sint64List>::GetOwningArena(sint64_list);
    if (message_arena != submessage_arena) {
      sint64_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, sint64_list, submessage_arena);
    }
    set_has_sint64_list();
    value_.sint64_list_ = sint64_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.MetricsRecordValue.sint64_list)
}
MetricsRecordValue::MetricsRecordValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.MetricsRecordValue)
}
MetricsRecordValue::MetricsRecordValue(const MetricsRecordValue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_value();
  switch (from.value_case()) {
    case kDouble: {
      _internal_set_double_(from._internal_double_());
      break;
    }
    case kSint64: {
      _internal_set_sint64(from._internal_sint64());
      break;
    }
    case kDoubleList: {
      _internal_mutable_double_list()->::flwr::proto::DoubleList::MergeFrom(from._internal_double_list());
      break;
    }
    case kSint64List: {
      _internal_mutable_sint64_list()->::flwr::proto::Sint64List::MergeFrom(from._internal_sint64_list());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:flwr.proto.MetricsRecordValue)
}

void MetricsRecordValue::SharedCtor() {
clear_has_value();
}

MetricsRecordValue::~MetricsRecordValue() {
  // @@protoc_insertion_point(destructor:flwr.proto.MetricsRecordValue)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void MetricsRecordValue::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_value()) {
    clear_value();
  }
}

void MetricsRecordValue::ArenaDtor(void* object) {
  MetricsRecordValue* _this = reinterpret_cast< MetricsRecordValue* >(object);
  (void)_this;
}
void MetricsRecordValue::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void MetricsRecordValue::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void MetricsRecordValue::clear_value() {
// @@protoc_insertion_point(one_of_clear_start:flwr.proto.MetricsRecordValue)
  switch (value_case()) {
    case kDouble: {
      // No need to clear
      break;
    }
    case kSint64: {
      // No need to clear
      break;
    }
    case kDoubleList: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.double_list_;
      }
      break;
    }
    case kSint64List: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.sint64_list_;
      }
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = VALUE_NOT_SET;
}


void MetricsRecordValue::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.MetricsRecordValue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_value();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MetricsRecordValue::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // double double = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 9)) {
          _internal_set_double_(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // sint64 sint64 = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _internal_set_sint64(::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.DoubleList double_list = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_double_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.Sint64List sint64_list = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_sint64_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* MetricsRecordValue::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.MetricsRecordValue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // double double = 1;
  if (_internal_has_double_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(1, this->_internal_double_(), target);
  }

  // sint64 sint64 = 2;
  if (_internal_has_sint64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteSInt64ToArray(2, this->_internal_sint64(), target);
  }

  // .flwr.proto.DoubleList double_list = 21;
  if (_internal_has_double_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        21, _Internal::double_list(this), target, stream);
  }

  // .flwr.proto.Sint64List sint64_list = 22;
  if (_internal_has_sint64_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        22, _Internal::sint64_list(this), target, stream);
  }

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

size_t MetricsRecordValue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.MetricsRecordValue)
  size_t total_size = 0;

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

  switch (value_case()) {
    // double double = 1;
    case kDouble: {
      total_size += 1 + 8;
      break;
    }
    // sint64 sint64 = 2;
    case kSint64: {
      total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SInt64SizePlusOne(this->_internal_sint64());
      break;
    }
    // .flwr.proto.DoubleList double_list = 21;
    case kDoubleList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.double_list_);
      break;
    }
    // .flwr.proto.Sint64List sint64_list = 22;
    case kSint64List: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.sint64_list_);
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MetricsRecordValue::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    MetricsRecordValue::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MetricsRecordValue::GetClassData() const { return &_class_data_; }

void MetricsRecordValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<MetricsRecordValue *>(to)->MergeFrom(
      static_cast<const MetricsRecordValue &>(from));
}


void MetricsRecordValue::MergeFrom(const MetricsRecordValue& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.MetricsRecordValue)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.value_case()) {
    case kDouble: {
      _internal_set_double_(from._internal_double_());
      break;
    }
    case kSint64: {
      _internal_set_sint64(from._internal_sint64());
      break;
    }
    case kDoubleList: {
      _internal_mutable_double_list()->::flwr::proto::DoubleList::MergeFrom(from._internal_double_list());
      break;
    }
    case kSint64List: {
      _internal_mutable_sint64_list()->::flwr::proto::Sint64List::MergeFrom(from._internal_sint64_list());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void MetricsRecordValue::InternalSwap(MetricsRecordValue* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(value_, other->value_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata MetricsRecordValue::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[6]);
}

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

class ConfigsRecordValue::_Internal {
 public:
  static const ::flwr::proto::DoubleList& double_list(const ConfigsRecordValue* msg);
  static const ::flwr::proto::Sint64List& sint64_list(const ConfigsRecordValue* msg);
  static const ::flwr::proto::BoolList& bool_list(const ConfigsRecordValue* msg);
  static const ::flwr::proto::StringList& string_list(const ConfigsRecordValue* msg);
  static const ::flwr::proto::BytesList& bytes_list(const ConfigsRecordValue* msg);
};

const ::flwr::proto::DoubleList&
ConfigsRecordValue::_Internal::double_list(const ConfigsRecordValue* msg) {
  return *msg->value_.double_list_;
}
const ::flwr::proto::Sint64List&
ConfigsRecordValue::_Internal::sint64_list(const ConfigsRecordValue* msg) {
  return *msg->value_.sint64_list_;
}
const ::flwr::proto::BoolList&
ConfigsRecordValue::_Internal::bool_list(const ConfigsRecordValue* msg) {
  return *msg->value_.bool_list_;
}
const ::flwr::proto::StringList&
ConfigsRecordValue::_Internal::string_list(const ConfigsRecordValue* msg) {
  return *msg->value_.string_list_;
}
const ::flwr::proto::BytesList&
ConfigsRecordValue::_Internal::bytes_list(const ConfigsRecordValue* msg) {
  return *msg->value_.bytes_list_;
}
void ConfigsRecordValue::set_allocated_double_list(::flwr::proto::DoubleList* double_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (double_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::DoubleList>::GetOwningArena(double_list);
    if (message_arena != submessage_arena) {
      double_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, double_list, submessage_arena);
    }
    set_has_double_list();
    value_.double_list_ = double_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.ConfigsRecordValue.double_list)
}
void ConfigsRecordValue::set_allocated_sint64_list(::flwr::proto::Sint64List* sint64_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (sint64_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::Sint64List>::GetOwningArena(sint64_list);
    if (message_arena != submessage_arena) {
      sint64_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, sint64_list, submessage_arena);
    }
    set_has_sint64_list();
    value_.sint64_list_ = sint64_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.ConfigsRecordValue.sint64_list)
}
void ConfigsRecordValue::set_allocated_bool_list(::flwr::proto::BoolList* bool_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (bool_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::BoolList>::GetOwningArena(bool_list);
    if (message_arena != submessage_arena) {
      bool_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bool_list, submessage_arena);
    }
    set_has_bool_list();
    value_.bool_list_ = bool_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.ConfigsRecordValue.bool_list)
}
void ConfigsRecordValue::set_allocated_string_list(::flwr::proto::StringList* string_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (string_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::StringList>::GetOwningArena(string_list);
    if (message_arena != submessage_arena) {
      string_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, string_list, submessage_arena);
    }
    set_has_string_list();
    value_.string_list_ = string_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.ConfigsRecordValue.string_list)
}
void ConfigsRecordValue::set_allocated_bytes_list(::flwr::proto::BytesList* bytes_list) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_value();
  if (bytes_list) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::flwr::proto::BytesList>::GetOwningArena(bytes_list);
    if (message_arena != submessage_arena) {
      bytes_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bytes_list, submessage_arena);
    }
    set_has_bytes_list();
    value_.bytes_list_ = bytes_list;
  }
  // @@protoc_insertion_point(field_set_allocated:flwr.proto.ConfigsRecordValue.bytes_list)
}
ConfigsRecordValue::ConfigsRecordValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.ConfigsRecordValue)
}
ConfigsRecordValue::ConfigsRecordValue(const ConfigsRecordValue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_value();
  switch (from.value_case()) {
    case kDouble: {
      _internal_set_double_(from._internal_double_());
      break;
    }
    case kSint64: {
      _internal_set_sint64(from._internal_sint64());
      break;
    }
    case kBool: {
      _internal_set_bool_(from._internal_bool_());
      break;
    }
    case kString: {
      _internal_set_string(from._internal_string());
      break;
    }
    case kBytes: {
      _internal_set_bytes(from._internal_bytes());
      break;
    }
    case kDoubleList: {
      _internal_mutable_double_list()->::flwr::proto::DoubleList::MergeFrom(from._internal_double_list());
      break;
    }
    case kSint64List: {
      _internal_mutable_sint64_list()->::flwr::proto::Sint64List::MergeFrom(from._internal_sint64_list());
      break;
    }
    case kBoolList: {
      _internal_mutable_bool_list()->::flwr::proto::BoolList::MergeFrom(from._internal_bool_list());
      break;
    }
    case kStringList: {
      _internal_mutable_string_list()->::flwr::proto::StringList::MergeFrom(from._internal_string_list());
      break;
    }
    case kBytesList: {
      _internal_mutable_bytes_list()->::flwr::proto::BytesList::MergeFrom(from._internal_bytes_list());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:flwr.proto.ConfigsRecordValue)
}

void ConfigsRecordValue::SharedCtor() {
clear_has_value();
}

ConfigsRecordValue::~ConfigsRecordValue() {
  // @@protoc_insertion_point(destructor:flwr.proto.ConfigsRecordValue)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ConfigsRecordValue::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_value()) {
    clear_value();
  }
}

void ConfigsRecordValue::ArenaDtor(void* object) {
  ConfigsRecordValue* _this = reinterpret_cast< ConfigsRecordValue* >(object);
  (void)_this;
}
void ConfigsRecordValue::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ConfigsRecordValue::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ConfigsRecordValue::clear_value() {
// @@protoc_insertion_point(one_of_clear_start:flwr.proto.ConfigsRecordValue)
  switch (value_case()) {
    case kDouble: {
      // No need to clear
      break;
    }
    case kSint64: {
      // No need to clear
      break;
    }
    case kBool: {
      // No need to clear
      break;
    }
    case kString: {
      value_.string_.Destroy(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
      break;
    }
    case kBytes: {
      value_.bytes_.Destroy(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
      break;
    }
    case kDoubleList: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.double_list_;
      }
      break;
    }
    case kSint64List: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.sint64_list_;
      }
      break;
    }
    case kBoolList: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.bool_list_;
      }
      break;
    }
    case kStringList: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.string_list_;
      }
      break;
    }
    case kBytesList: {
      if (GetArenaForAllocation() == nullptr) {
        delete value_.bytes_list_;
      }
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = VALUE_NOT_SET;
}


void ConfigsRecordValue::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.ConfigsRecordValue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_value();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ConfigsRecordValue::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // double double = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 9)) {
          _internal_set_double_(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // sint64 sint64 = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _internal_set_sint64(::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool bool = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _internal_set_bool_(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string string = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          auto str = _internal_mutable_string();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "flwr.proto.ConfigsRecordValue.string"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes bytes = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          auto str = _internal_mutable_bytes();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.DoubleList double_list = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_double_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.Sint64List sint64_list = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_sint64_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.BoolList bool_list = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_bool_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.StringList string_list = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_string_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .flwr.proto.BytesList bytes_list = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_bytes_list(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ConfigsRecordValue::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.ConfigsRecordValue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // double double = 1;
  if (_internal_has_double_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(1, this->_internal_double_(), target);
  }

  // sint64 sint64 = 2;
  if (_internal_has_sint64()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteSInt64ToArray(2, this->_internal_sint64(), target);
  }

  // bool bool = 3;
  if (_internal_has_bool_()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_bool_(), target);
  }

  // string string = 4;
  if (_internal_has_string()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_string().data(), static_cast<int>(this->_internal_string().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "flwr.proto.ConfigsRecordValue.string");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_string(), target);
  }

  // bytes bytes = 5;
  if (_internal_has_bytes()) {
    target = stream->WriteBytesMaybeAliased(
        5, this->_internal_bytes(), target);
  }

  // .flwr.proto.DoubleList double_list = 21;
  if (_internal_has_double_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        21, _Internal::double_list(this), target, stream);
  }

  // .flwr.proto.Sint64List sint64_list = 22;
  if (_internal_has_sint64_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        22, _Internal::sint64_list(this), target, stream);
  }

  // .flwr.proto.BoolList bool_list = 23;
  if (_internal_has_bool_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        23, _Internal::bool_list(this), target, stream);
  }

  // .flwr.proto.StringList string_list = 24;
  if (_internal_has_string_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        24, _Internal::string_list(this), target, stream);
  }

  // .flwr.proto.BytesList bytes_list = 25;
  if (_internal_has_bytes_list()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        25, _Internal::bytes_list(this), target, stream);
  }

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

size_t ConfigsRecordValue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.ConfigsRecordValue)
  size_t total_size = 0;

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

  switch (value_case()) {
    // double double = 1;
    case kDouble: {
      total_size += 1 + 8;
      break;
    }
    // sint64 sint64 = 2;
    case kSint64: {
      total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SInt64SizePlusOne(this->_internal_sint64());
      break;
    }
    // bool bool = 3;
    case kBool: {
      total_size += 1 + 1;
      break;
    }
    // string string = 4;
    case kString: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_string());
      break;
    }
    // bytes bytes = 5;
    case kBytes: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_bytes());
      break;
    }
    // .flwr.proto.DoubleList double_list = 21;
    case kDoubleList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.double_list_);
      break;
    }
    // .flwr.proto.Sint64List sint64_list = 22;
    case kSint64List: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.sint64_list_);
      break;
    }
    // .flwr.proto.BoolList bool_list = 23;
    case kBoolList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.bool_list_);
      break;
    }
    // .flwr.proto.StringList string_list = 24;
    case kStringList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.string_list_);
      break;
    }
    // .flwr.proto.BytesList bytes_list = 25;
    case kBytesList: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *value_.bytes_list_);
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ConfigsRecordValue::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ConfigsRecordValue::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ConfigsRecordValue::GetClassData() const { return &_class_data_; }

void ConfigsRecordValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ConfigsRecordValue *>(to)->MergeFrom(
      static_cast<const ConfigsRecordValue &>(from));
}


void ConfigsRecordValue::MergeFrom(const ConfigsRecordValue& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.ConfigsRecordValue)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.value_case()) {
    case kDouble: {
      _internal_set_double_(from._internal_double_());
      break;
    }
    case kSint64: {
      _internal_set_sint64(from._internal_sint64());
      break;
    }
    case kBool: {
      _internal_set_bool_(from._internal_bool_());
      break;
    }
    case kString: {
      _internal_set_string(from._internal_string());
      break;
    }
    case kBytes: {
      _internal_set_bytes(from._internal_bytes());
      break;
    }
    case kDoubleList: {
      _internal_mutable_double_list()->::flwr::proto::DoubleList::MergeFrom(from._internal_double_list());
      break;
    }
    case kSint64List: {
      _internal_mutable_sint64_list()->::flwr::proto::Sint64List::MergeFrom(from._internal_sint64_list());
      break;
    }
    case kBoolList: {
      _internal_mutable_bool_list()->::flwr::proto::BoolList::MergeFrom(from._internal_bool_list());
      break;
    }
    case kStringList: {
      _internal_mutable_string_list()->::flwr::proto::StringList::MergeFrom(from._internal_string_list());
      break;
    }
    case kBytesList: {
      _internal_mutable_bytes_list()->::flwr::proto::BytesList::MergeFrom(from._internal_bytes_list());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ConfigsRecordValue::InternalSwap(ConfigsRecordValue* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(value_, other->value_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ConfigsRecordValue::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[7]);
}

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

class ParametersRecord::_Internal {
 public:
};

ParametersRecord::ParametersRecord(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  data_keys_(arena),
  data_values_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.ParametersRecord)
}
ParametersRecord::ParametersRecord(const ParametersRecord& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      data_keys_(from.data_keys_),
      data_values_(from.data_values_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.ParametersRecord)
}

void ParametersRecord::SharedCtor() {
}

ParametersRecord::~ParametersRecord() {
  // @@protoc_insertion_point(destructor:flwr.proto.ParametersRecord)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ParametersRecord::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ParametersRecord::ArenaDtor(void* object) {
  ParametersRecord* _this = reinterpret_cast< ParametersRecord* >(object);
  (void)_this;
}
void ParametersRecord::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
}
void ParametersRecord::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ParametersRecord::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.ParametersRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  data_keys_.Clear();
  data_values_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ParametersRecord::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string data_keys = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_data_keys();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "flwr.proto.ParametersRecord.data_keys"));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .flwr.proto.Array data_values = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_data_values(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ParametersRecord::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.ParametersRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string data_keys = 1;
  for (int i = 0, n = this->_internal_data_keys_size(); i < n; i++) {
    const auto& s = this->_internal_data_keys(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "flwr.proto.ParametersRecord.data_keys");
    target = stream->WriteString(1, s, target);
  }

  // repeated .flwr.proto.Array data_values = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_data_values_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_data_values(i), target, stream);
  }

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

size_t ParametersRecord::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.ParametersRecord)
  size_t total_size = 0;

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

  // repeated string data_keys = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(data_keys_.size());
  for (int i = 0, n = data_keys_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      data_keys_.Get(i));
  }

  // repeated .flwr.proto.Array data_values = 2;
  total_size += 1UL * this->_internal_data_values_size();
  for (const auto& msg : this->data_values_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ParametersRecord::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ParametersRecord::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ParametersRecord::GetClassData() const { return &_class_data_; }

void ParametersRecord::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ParametersRecord *>(to)->MergeFrom(
      static_cast<const ParametersRecord &>(from));
}


void ParametersRecord::MergeFrom(const ParametersRecord& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.ParametersRecord)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  data_keys_.MergeFrom(from.data_keys_);
  data_values_.MergeFrom(from.data_values_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ParametersRecord::InternalSwap(ParametersRecord* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  data_keys_.InternalSwap(&other->data_keys_);
  data_values_.InternalSwap(&other->data_values_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ParametersRecord::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[8]);
}

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

MetricsRecord_DataEntry_DoNotUse::MetricsRecord_DataEntry_DoNotUse() {}
MetricsRecord_DataEntry_DoNotUse::MetricsRecord_DataEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
    : SuperType(arena) {}
void MetricsRecord_DataEntry_DoNotUse::MergeFrom(const MetricsRecord_DataEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::PROTOBUF_NAMESPACE_ID::Metadata MetricsRecord_DataEntry_DoNotUse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[9]);
}

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

class MetricsRecord::_Internal {
 public:
};

MetricsRecord::MetricsRecord(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  data_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.MetricsRecord)
}
MetricsRecord::MetricsRecord(const MetricsRecord& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  data_.MergeFrom(from.data_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.MetricsRecord)
}

void MetricsRecord::SharedCtor() {
}

MetricsRecord::~MetricsRecord() {
  // @@protoc_insertion_point(destructor:flwr.proto.MetricsRecord)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void MetricsRecord::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void MetricsRecord::ArenaDtor(void* object) {
  MetricsRecord* _this = reinterpret_cast< MetricsRecord* >(object);
  (void)_this;
  _this->data_. ~MapField();
}
inline void MetricsRecord::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena) {
  if (arena != nullptr) {
    arena->OwnCustomDestructor(this, &MetricsRecord::ArenaDtor);
  }
}
void MetricsRecord::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void MetricsRecord::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.MetricsRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  data_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MetricsRecord::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // map<string, .flwr.proto.MetricsRecordValue> data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&data_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* MetricsRecord::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.MetricsRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // map<string, .flwr.proto.MetricsRecordValue> data = 1;
  if (!this->_internal_data().empty()) {
    typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecordValue >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::PROTOBUF_NAMESPACE_ID::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
          "flwr.proto.MetricsRecord.DataEntry.key");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_data().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_data().size()]);
      typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecordValue >::size_type size_type;
      size_type n = 0;
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecordValue >::const_iterator
          it = this->_internal_data().begin();
          it != this->_internal_data().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = MetricsRecord_DataEntry_DoNotUse::Funcs::InternalSerialize(1, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecordValue >::const_iterator
          it = this->_internal_data().begin();
          it != this->_internal_data().end(); ++it) {
        target = MetricsRecord_DataEntry_DoNotUse::Funcs::InternalSerialize(1, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

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

size_t MetricsRecord::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.MetricsRecord)
  size_t total_size = 0;

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

  // map<string, .flwr.proto.MetricsRecordValue> data = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_data_size());
  for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecordValue >::const_iterator
      it = this->_internal_data().begin();
      it != this->_internal_data().end(); ++it) {
    total_size += MetricsRecord_DataEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MetricsRecord::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    MetricsRecord::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MetricsRecord::GetClassData() const { return &_class_data_; }

void MetricsRecord::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<MetricsRecord *>(to)->MergeFrom(
      static_cast<const MetricsRecord &>(from));
}


void MetricsRecord::MergeFrom(const MetricsRecord& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.MetricsRecord)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  data_.MergeFrom(from.data_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void MetricsRecord::InternalSwap(MetricsRecord* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  data_.InternalSwap(&other->data_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MetricsRecord::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[10]);
}

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

ConfigsRecord_DataEntry_DoNotUse::ConfigsRecord_DataEntry_DoNotUse() {}
ConfigsRecord_DataEntry_DoNotUse::ConfigsRecord_DataEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
    : SuperType(arena) {}
void ConfigsRecord_DataEntry_DoNotUse::MergeFrom(const ConfigsRecord_DataEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::PROTOBUF_NAMESPACE_ID::Metadata ConfigsRecord_DataEntry_DoNotUse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[11]);
}

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

class ConfigsRecord::_Internal {
 public:
};

ConfigsRecord::ConfigsRecord(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  data_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.ConfigsRecord)
}
ConfigsRecord::ConfigsRecord(const ConfigsRecord& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  data_.MergeFrom(from.data_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.ConfigsRecord)
}

void ConfigsRecord::SharedCtor() {
}

ConfigsRecord::~ConfigsRecord() {
  // @@protoc_insertion_point(destructor:flwr.proto.ConfigsRecord)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void ConfigsRecord::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ConfigsRecord::ArenaDtor(void* object) {
  ConfigsRecord* _this = reinterpret_cast< ConfigsRecord* >(object);
  (void)_this;
  _this->data_. ~MapField();
}
inline void ConfigsRecord::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena) {
  if (arena != nullptr) {
    arena->OwnCustomDestructor(this, &ConfigsRecord::ArenaDtor);
  }
}
void ConfigsRecord::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ConfigsRecord::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.ConfigsRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  data_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ConfigsRecord::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // map<string, .flwr.proto.ConfigsRecordValue> data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&data_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ConfigsRecord::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.ConfigsRecord)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // map<string, .flwr.proto.ConfigsRecordValue> data = 1;
  if (!this->_internal_data().empty()) {
    typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecordValue >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::PROTOBUF_NAMESPACE_ID::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
          "flwr.proto.ConfigsRecord.DataEntry.key");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_data().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_data().size()]);
      typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecordValue >::size_type size_type;
      size_type n = 0;
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecordValue >::const_iterator
          it = this->_internal_data().begin();
          it != this->_internal_data().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = ConfigsRecord_DataEntry_DoNotUse::Funcs::InternalSerialize(1, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecordValue >::const_iterator
          it = this->_internal_data().begin();
          it != this->_internal_data().end(); ++it) {
        target = ConfigsRecord_DataEntry_DoNotUse::Funcs::InternalSerialize(1, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

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

size_t ConfigsRecord::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.ConfigsRecord)
  size_t total_size = 0;

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

  // map<string, .flwr.proto.ConfigsRecordValue> data = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_data_size());
  for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecordValue >::const_iterator
      it = this->_internal_data().begin();
      it != this->_internal_data().end(); ++it) {
    total_size += ConfigsRecord_DataEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ConfigsRecord::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ConfigsRecord::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ConfigsRecord::GetClassData() const { return &_class_data_; }

void ConfigsRecord::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<ConfigsRecord *>(to)->MergeFrom(
      static_cast<const ConfigsRecord &>(from));
}


void ConfigsRecord::MergeFrom(const ConfigsRecord& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.ConfigsRecord)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  data_.MergeFrom(from.data_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ConfigsRecord::InternalSwap(ConfigsRecord* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  data_.InternalSwap(&other->data_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ConfigsRecord::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[12]);
}

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

RecordSet_ParametersEntry_DoNotUse::RecordSet_ParametersEntry_DoNotUse() {}
RecordSet_ParametersEntry_DoNotUse::RecordSet_ParametersEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
    : SuperType(arena) {}
void RecordSet_ParametersEntry_DoNotUse::MergeFrom(const RecordSet_ParametersEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::PROTOBUF_NAMESPACE_ID::Metadata RecordSet_ParametersEntry_DoNotUse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[13]);
}

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

RecordSet_MetricsEntry_DoNotUse::RecordSet_MetricsEntry_DoNotUse() {}
RecordSet_MetricsEntry_DoNotUse::RecordSet_MetricsEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
    : SuperType(arena) {}
void RecordSet_MetricsEntry_DoNotUse::MergeFrom(const RecordSet_MetricsEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::PROTOBUF_NAMESPACE_ID::Metadata RecordSet_MetricsEntry_DoNotUse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[14]);
}

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

RecordSet_ConfigsEntry_DoNotUse::RecordSet_ConfigsEntry_DoNotUse() {}
RecordSet_ConfigsEntry_DoNotUse::RecordSet_ConfigsEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
    : SuperType(arena) {}
void RecordSet_ConfigsEntry_DoNotUse::MergeFrom(const RecordSet_ConfigsEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::PROTOBUF_NAMESPACE_ID::Metadata RecordSet_ConfigsEntry_DoNotUse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[15]);
}

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

class RecordSet::_Internal {
 public:
};

RecordSet::RecordSet(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  parameters_(arena),
  metrics_(arena),
  configs_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:flwr.proto.RecordSet)
}
RecordSet::RecordSet(const RecordSet& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  parameters_.MergeFrom(from.parameters_);
  metrics_.MergeFrom(from.metrics_);
  configs_.MergeFrom(from.configs_);
  // @@protoc_insertion_point(copy_constructor:flwr.proto.RecordSet)
}

void RecordSet::SharedCtor() {
}

RecordSet::~RecordSet() {
  // @@protoc_insertion_point(destructor:flwr.proto.RecordSet)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void RecordSet::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void RecordSet::ArenaDtor(void* object) {
  RecordSet* _this = reinterpret_cast< RecordSet* >(object);
  (void)_this;
  _this->parameters_. ~MapField();
  _this->metrics_. ~MapField();
  _this->configs_. ~MapField();
}
inline void RecordSet::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena) {
  if (arena != nullptr) {
    arena->OwnCustomDestructor(this, &RecordSet::ArenaDtor);
  }
}
void RecordSet::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void RecordSet::Clear() {
// @@protoc_insertion_point(message_clear_start:flwr.proto.RecordSet)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  parameters_.Clear();
  metrics_.Clear();
  configs_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RecordSet::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // map<string, .flwr.proto.ParametersRecord> parameters = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&parameters_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // map<string, .flwr.proto.MetricsRecord> metrics = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&metrics_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // map<string, .flwr.proto.ConfigsRecord> configs = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&configs_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* RecordSet::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:flwr.proto.RecordSet)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // map<string, .flwr.proto.ParametersRecord> parameters = 1;
  if (!this->_internal_parameters().empty()) {
    typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ParametersRecord >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::PROTOBUF_NAMESPACE_ID::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
          "flwr.proto.RecordSet.ParametersEntry.key");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_parameters().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_parameters().size()]);
      typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ParametersRecord >::size_type size_type;
      size_type n = 0;
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ParametersRecord >::const_iterator
          it = this->_internal_parameters().begin();
          it != this->_internal_parameters().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = RecordSet_ParametersEntry_DoNotUse::Funcs::InternalSerialize(1, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ParametersRecord >::const_iterator
          it = this->_internal_parameters().begin();
          it != this->_internal_parameters().end(); ++it) {
        target = RecordSet_ParametersEntry_DoNotUse::Funcs::InternalSerialize(1, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

  // map<string, .flwr.proto.MetricsRecord> metrics = 2;
  if (!this->_internal_metrics().empty()) {
    typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecord >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::PROTOBUF_NAMESPACE_ID::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
          "flwr.proto.RecordSet.MetricsEntry.key");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_metrics().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_metrics().size()]);
      typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecord >::size_type size_type;
      size_type n = 0;
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecord >::const_iterator
          it = this->_internal_metrics().begin();
          it != this->_internal_metrics().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = RecordSet_MetricsEntry_DoNotUse::Funcs::InternalSerialize(2, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecord >::const_iterator
          it = this->_internal_metrics().begin();
          it != this->_internal_metrics().end(); ++it) {
        target = RecordSet_MetricsEntry_DoNotUse::Funcs::InternalSerialize(2, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

  // map<string, .flwr.proto.ConfigsRecord> configs = 3;
  if (!this->_internal_configs().empty()) {
    typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecord >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::PROTOBUF_NAMESPACE_ID::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
          "flwr.proto.RecordSet.ConfigsEntry.key");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_configs().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_configs().size()]);
      typedef ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecord >::size_type size_type;
      size_type n = 0;
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecord >::const_iterator
          it = this->_internal_configs().begin();
          it != this->_internal_configs().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = RecordSet_ConfigsEntry_DoNotUse::Funcs::InternalSerialize(3, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecord >::const_iterator
          it = this->_internal_configs().begin();
          it != this->_internal_configs().end(); ++it) {
        target = RecordSet_ConfigsEntry_DoNotUse::Funcs::InternalSerialize(3, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

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

size_t RecordSet::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:flwr.proto.RecordSet)
  size_t total_size = 0;

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

  // map<string, .flwr.proto.ParametersRecord> parameters = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_parameters_size());
  for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ParametersRecord >::const_iterator
      it = this->_internal_parameters().begin();
      it != this->_internal_parameters().end(); ++it) {
    total_size += RecordSet_ParametersEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  // map<string, .flwr.proto.MetricsRecord> metrics = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_metrics_size());
  for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::MetricsRecord >::const_iterator
      it = this->_internal_metrics().begin();
      it != this->_internal_metrics().end(); ++it) {
    total_size += RecordSet_MetricsEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  // map<string, .flwr.proto.ConfigsRecord> configs = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_configs_size());
  for (::PROTOBUF_NAMESPACE_ID::Map< std::string, ::flwr::proto::ConfigsRecord >::const_iterator
      it = this->_internal_configs().begin();
      it != this->_internal_configs().end(); ++it) {
    total_size += RecordSet_ConfigsEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RecordSet::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    RecordSet::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RecordSet::GetClassData() const { return &_class_data_; }

void RecordSet::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<RecordSet *>(to)->MergeFrom(
      static_cast<const RecordSet &>(from));
}


void RecordSet::MergeFrom(const RecordSet& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:flwr.proto.RecordSet)
  GOOGLE_DCHECK_NE(&from, this);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  parameters_.MergeFrom(from.parameters_);
  metrics_.MergeFrom(from.metrics_);
  configs_.MergeFrom(from.configs_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void RecordSet::InternalSwap(RecordSet* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  parameters_.InternalSwap(&other->parameters_);
  metrics_.InternalSwap(&other->metrics_);
  configs_.InternalSwap(&other->configs_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RecordSet::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_flwr_2fproto_2frecordset_2eproto_getter, &descriptor_table_flwr_2fproto_2frecordset_2eproto_once,
      file_level_metadata_flwr_2fproto_2frecordset_2eproto[16]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace proto
}  // namespace flwr
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::flwr::proto::DoubleList* Arena::CreateMaybeMessage< ::flwr::proto::DoubleList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::DoubleList >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::Sint64List* Arena::CreateMaybeMessage< ::flwr::proto::Sint64List >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::Sint64List >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::BoolList* Arena::CreateMaybeMessage< ::flwr::proto::BoolList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::BoolList >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::StringList* Arena::CreateMaybeMessage< ::flwr::proto::StringList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::StringList >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::BytesList* Arena::CreateMaybeMessage< ::flwr::proto::BytesList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::BytesList >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::Array* Arena::CreateMaybeMessage< ::flwr::proto::Array >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::Array >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::MetricsRecordValue* Arena::CreateMaybeMessage< ::flwr::proto::MetricsRecordValue >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::MetricsRecordValue >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::ConfigsRecordValue* Arena::CreateMaybeMessage< ::flwr::proto::ConfigsRecordValue >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::ConfigsRecordValue >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::ParametersRecord* Arena::CreateMaybeMessage< ::flwr::proto::ParametersRecord >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::ParametersRecord >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::MetricsRecord_DataEntry_DoNotUse* Arena::CreateMaybeMessage< ::flwr::proto::MetricsRecord_DataEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::MetricsRecord_DataEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::MetricsRecord* Arena::CreateMaybeMessage< ::flwr::proto::MetricsRecord >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::MetricsRecord >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::ConfigsRecord_DataEntry_DoNotUse* Arena::CreateMaybeMessage< ::flwr::proto::ConfigsRecord_DataEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::ConfigsRecord_DataEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::ConfigsRecord* Arena::CreateMaybeMessage< ::flwr::proto::ConfigsRecord >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::ConfigsRecord >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::RecordSet_ParametersEntry_DoNotUse* Arena::CreateMaybeMessage< ::flwr::proto::RecordSet_ParametersEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::RecordSet_ParametersEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::RecordSet_MetricsEntry_DoNotUse* Arena::CreateMaybeMessage< ::flwr::proto::RecordSet_MetricsEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::RecordSet_MetricsEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::RecordSet_ConfigsEntry_DoNotUse* Arena::CreateMaybeMessage< ::flwr::proto::RecordSet_ConfigsEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::RecordSet_ConfigsEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::flwr::proto::RecordSet* Arena::CreateMaybeMessage< ::flwr::proto::RecordSet >(Arena* arena) {
  return Arena::CreateMessageInternal< ::flwr::proto::RecordSet >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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