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

#include "tagreadermessages.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 cpb {
namespace tagreader {
constexpr SongMetadata::SongMetadata(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : title_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , album_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , artist_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , albumartist_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , composer_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , genre_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , comment_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , url_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , basefilename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , art_automatic_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , etag_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , performer_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , grouping_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , lyrics_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , track_(0)
  , disc_(0)
  , bpm_(0)
  , year_(0)
  , valid_(false)
  , compilation_(false)
  , suspicious_tags_(false)
  , rating_(0)
  , playcount_(0)
  , skipcount_(0)
  , lastplayed_(0)
  , score_(0)
  , length_nanosec_(PROTOBUF_ULONGLONG(0))
  , bitrate_(0)
  , samplerate_(0)
  , mtime_(0)
  , ctime_(0)
  , filesize_(0)
  , type_(0)

  , originalyear_(0){}
struct SongMetadataDefaultTypeInternal {
  constexpr SongMetadataDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SongMetadataDefaultTypeInternal() {}
  union {
    SongMetadata _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SongMetadataDefaultTypeInternal _SongMetadata_default_instance_;
constexpr ReadFileRequest::ReadFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct ReadFileRequestDefaultTypeInternal {
  constexpr ReadFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ReadFileRequestDefaultTypeInternal() {}
  union {
    ReadFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ReadFileRequestDefaultTypeInternal _ReadFileRequest_default_instance_;
constexpr ReadFileResponse::ReadFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : metadata_(nullptr){}
struct ReadFileResponseDefaultTypeInternal {
  constexpr ReadFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ReadFileResponseDefaultTypeInternal() {}
  union {
    ReadFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ReadFileResponseDefaultTypeInternal _ReadFileResponse_default_instance_;
constexpr SaveFileRequest::SaveFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , metadata_(nullptr){}
struct SaveFileRequestDefaultTypeInternal {
  constexpr SaveFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveFileRequestDefaultTypeInternal() {}
  union {
    SaveFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveFileRequestDefaultTypeInternal _SaveFileRequest_default_instance_;
constexpr SaveFileResponse::SaveFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : success_(false){}
struct SaveFileResponseDefaultTypeInternal {
  constexpr SaveFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveFileResponseDefaultTypeInternal() {}
  union {
    SaveFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveFileResponseDefaultTypeInternal _SaveFileResponse_default_instance_;
constexpr IsMediaFileRequest::IsMediaFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct IsMediaFileRequestDefaultTypeInternal {
  constexpr IsMediaFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~IsMediaFileRequestDefaultTypeInternal() {}
  union {
    IsMediaFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT IsMediaFileRequestDefaultTypeInternal _IsMediaFileRequest_default_instance_;
constexpr IsMediaFileResponse::IsMediaFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : success_(false){}
struct IsMediaFileResponseDefaultTypeInternal {
  constexpr IsMediaFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~IsMediaFileResponseDefaultTypeInternal() {}
  union {
    IsMediaFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT IsMediaFileResponseDefaultTypeInternal _IsMediaFileResponse_default_instance_;
constexpr LoadEmbeddedArtRequest::LoadEmbeddedArtRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct LoadEmbeddedArtRequestDefaultTypeInternal {
  constexpr LoadEmbeddedArtRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~LoadEmbeddedArtRequestDefaultTypeInternal() {}
  union {
    LoadEmbeddedArtRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT LoadEmbeddedArtRequestDefaultTypeInternal _LoadEmbeddedArtRequest_default_instance_;
constexpr LoadEmbeddedArtResponse::LoadEmbeddedArtResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct LoadEmbeddedArtResponseDefaultTypeInternal {
  constexpr LoadEmbeddedArtResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~LoadEmbeddedArtResponseDefaultTypeInternal() {}
  union {
    LoadEmbeddedArtResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT LoadEmbeddedArtResponseDefaultTypeInternal _LoadEmbeddedArtResponse_default_instance_;
constexpr ReadCloudFileRequest::ReadCloudFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : download_url_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , title_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , authorisation_header_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , mime_type_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , size_(0){}
struct ReadCloudFileRequestDefaultTypeInternal {
  constexpr ReadCloudFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ReadCloudFileRequestDefaultTypeInternal() {}
  union {
    ReadCloudFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ReadCloudFileRequestDefaultTypeInternal _ReadCloudFileRequest_default_instance_;
constexpr ReadCloudFileResponse::ReadCloudFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : metadata_(nullptr){}
struct ReadCloudFileResponseDefaultTypeInternal {
  constexpr ReadCloudFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ReadCloudFileResponseDefaultTypeInternal() {}
  union {
    ReadCloudFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ReadCloudFileResponseDefaultTypeInternal _ReadCloudFileResponse_default_instance_;
constexpr SaveSongStatisticsToFileRequest::SaveSongStatisticsToFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , metadata_(nullptr){}
struct SaveSongStatisticsToFileRequestDefaultTypeInternal {
  constexpr SaveSongStatisticsToFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveSongStatisticsToFileRequestDefaultTypeInternal() {}
  union {
    SaveSongStatisticsToFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveSongStatisticsToFileRequestDefaultTypeInternal _SaveSongStatisticsToFileRequest_default_instance_;
constexpr SaveSongStatisticsToFileResponse::SaveSongStatisticsToFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : success_(false){}
struct SaveSongStatisticsToFileResponseDefaultTypeInternal {
  constexpr SaveSongStatisticsToFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveSongStatisticsToFileResponseDefaultTypeInternal() {}
  union {
    SaveSongStatisticsToFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveSongStatisticsToFileResponseDefaultTypeInternal _SaveSongStatisticsToFileResponse_default_instance_;
constexpr SaveSongRatingToFileRequest::SaveSongRatingToFileRequest(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : filename_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , metadata_(nullptr){}
struct SaveSongRatingToFileRequestDefaultTypeInternal {
  constexpr SaveSongRatingToFileRequestDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveSongRatingToFileRequestDefaultTypeInternal() {}
  union {
    SaveSongRatingToFileRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveSongRatingToFileRequestDefaultTypeInternal _SaveSongRatingToFileRequest_default_instance_;
constexpr SaveSongRatingToFileResponse::SaveSongRatingToFileResponse(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : success_(false){}
struct SaveSongRatingToFileResponseDefaultTypeInternal {
  constexpr SaveSongRatingToFileResponseDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SaveSongRatingToFileResponseDefaultTypeInternal() {}
  union {
    SaveSongRatingToFileResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SaveSongRatingToFileResponseDefaultTypeInternal _SaveSongRatingToFileResponse_default_instance_;
constexpr Message::Message(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : read_file_request_(nullptr)
  , read_file_response_(nullptr)
  , save_file_request_(nullptr)
  , save_file_response_(nullptr)
  , is_media_file_request_(nullptr)
  , is_media_file_response_(nullptr)
  , load_embedded_art_request_(nullptr)
  , load_embedded_art_response_(nullptr)
  , read_cloud_file_request_(nullptr)
  , read_cloud_file_response_(nullptr)
  , save_song_statistics_to_file_request_(nullptr)
  , save_song_statistics_to_file_response_(nullptr)
  , save_song_rating_to_file_request_(nullptr)
  , save_song_rating_to_file_response_(nullptr)
  , id_(0){}
struct MessageDefaultTypeInternal {
  constexpr MessageDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~MessageDefaultTypeInternal() {}
  union {
    Message _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageDefaultTypeInternal _Message_default_instance_;
}  // namespace tagreader
}  // namespace cpb
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_tagreadermessages_2eproto[16];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_tagreadermessages_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_tagreadermessages_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_tagreadermessages_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, valid_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, title_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, album_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, artist_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, albumartist_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, composer_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, track_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, disc_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, bpm_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, year_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, genre_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, comment_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, compilation_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, rating_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, playcount_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, skipcount_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, lastplayed_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, score_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, length_nanosec_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, bitrate_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, samplerate_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, url_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, basefilename_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, mtime_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, ctime_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, filesize_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, suspicious_tags_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, art_automatic_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, type_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, etag_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, performer_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, grouping_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, lyrics_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SongMetadata, originalyear_),
  18,
  0,
  1,
  2,
  3,
  4,
  14,
  15,
  16,
  17,
  5,
  6,
  19,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  7,
  8,
  29,
  30,
  31,
  20,
  9,
  32,
  10,
  11,
  12,
  13,
  33,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileRequest, filename_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadFileResponse, metadata_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileRequest, filename_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileRequest, metadata_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveFileResponse, success_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileRequest, filename_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::IsMediaFileResponse, success_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtRequest, filename_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::LoadEmbeddedArtResponse, data_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, download_url_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, title_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, size_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, authorisation_header_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileRequest, mime_type_),
  0,
  1,
  4,
  2,
  3,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::ReadCloudFileResponse, metadata_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileRequest, filename_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileRequest, metadata_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongStatisticsToFileResponse, success_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileRequest, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileRequest, filename_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileRequest, metadata_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileResponse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::SaveSongRatingToFileResponse, success_),
  0,
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, id_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, read_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, read_file_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_file_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, is_media_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, is_media_file_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, load_embedded_art_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, load_embedded_art_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, read_cloud_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, read_cloud_file_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_song_statistics_to_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_song_statistics_to_file_response_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_song_rating_to_file_request_),
  PROTOBUF_FIELD_OFFSET(::cpb::tagreader::Message, save_song_rating_to_file_response_),
  14,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 39, sizeof(::cpb::tagreader::SongMetadata)},
  { 73, 79, sizeof(::cpb::tagreader::ReadFileRequest)},
  { 80, 86, sizeof(::cpb::tagreader::ReadFileResponse)},
  { 87, 94, sizeof(::cpb::tagreader::SaveFileRequest)},
  { 96, 102, sizeof(::cpb::tagreader::SaveFileResponse)},
  { 103, 109, sizeof(::cpb::tagreader::IsMediaFileRequest)},
  { 110, 116, sizeof(::cpb::tagreader::IsMediaFileResponse)},
  { 117, 123, sizeof(::cpb::tagreader::LoadEmbeddedArtRequest)},
  { 124, 130, sizeof(::cpb::tagreader::LoadEmbeddedArtResponse)},
  { 131, 141, sizeof(::cpb::tagreader::ReadCloudFileRequest)},
  { 146, 152, sizeof(::cpb::tagreader::ReadCloudFileResponse)},
  { 153, 160, sizeof(::cpb::tagreader::SaveSongStatisticsToFileRequest)},
  { 162, 168, sizeof(::cpb::tagreader::SaveSongStatisticsToFileResponse)},
  { 169, 176, sizeof(::cpb::tagreader::SaveSongRatingToFileRequest)},
  { 178, 184, sizeof(::cpb::tagreader::SaveSongRatingToFileResponse)},
  { 185, 205, sizeof(::cpb::tagreader::Message)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SongMetadata_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_ReadFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_ReadFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_IsMediaFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_IsMediaFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_LoadEmbeddedArtRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_LoadEmbeddedArtResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_ReadCloudFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_ReadCloudFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveSongStatisticsToFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveSongStatisticsToFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveSongRatingToFileRequest_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_SaveSongRatingToFileResponse_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cpb::tagreader::_Message_default_instance_),
};

const char descriptor_table_protodef_tagreadermessages_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\027tagreadermessages.proto\022\rcpb.tagreader"
  "\"\335\006\n\014SongMetadata\022\r\n\005valid\030\001 \001(\010\022\r\n\005titl"
  "e\030\002 \001(\t\022\r\n\005album\030\003 \001(\t\022\016\n\006artist\030\004 \001(\t\022\023"
  "\n\013albumartist\030\005 \001(\t\022\020\n\010composer\030\006 \001(\t\022\r\n"
  "\005track\030\007 \001(\005\022\014\n\004disc\030\010 \001(\005\022\013\n\003bpm\030\t \001(\002\022"
  "\014\n\004year\030\n \001(\005\022\r\n\005genre\030\013 \001(\t\022\017\n\007comment\030"
  "\014 \001(\t\022\023\n\013compilation\030\r \001(\010\022\016\n\006rating\030\016 \001"
  "(\002\022\021\n\tplaycount\030\017 \001(\005\022\021\n\tskipcount\030\020 \001(\005"
  "\022\022\n\nlastplayed\030\021 \001(\005\022\r\n\005score\030\022 \001(\005\022\026\n\016l"
  "ength_nanosec\030\023 \001(\004\022\017\n\007bitrate\030\024 \001(\005\022\022\n\n"
  "samplerate\030\025 \001(\005\022\013\n\003url\030\026 \001(\t\022\024\n\014basefil"
  "ename\030\027 \001(\t\022\r\n\005mtime\030\030 \001(\005\022\r\n\005ctime\030\031 \001("
  "\005\022\020\n\010filesize\030\032 \001(\005\022\027\n\017suspicious_tags\030\033"
  " \001(\010\022\025\n\rart_automatic\030\034 \001(\t\022.\n\004type\030\035 \001("
  "\0162 .cpb.tagreader.SongMetadata.Type\022\014\n\004e"
  "tag\030\036 \001(\t\022\021\n\tperformer\030\037 \001(\t\022\020\n\010grouping"
  "\030  \001(\t\022\016\n\006lyrics\030! \001(\t\022\024\n\014originalyear\030\""
  " \001(\005\"\331\001\n\004Type\022\013\n\007UNKNOWN\020\000\022\007\n\003ASF\020\001\022\010\n\004F"
  "LAC\020\002\022\007\n\003MP4\020\003\022\007\n\003MPC\020\004\022\010\n\004MPEG\020\005\022\013\n\007OGG"
  "FLAC\020\006\022\014\n\010OGGSPEEX\020\007\022\r\n\tOGGVORBIS\020\010\022\010\n\004A"
  "IFF\020\t\022\007\n\003WAV\020\n\022\r\n\tTRUEAUDIO\020\013\022\010\n\004CDDA\020\014\022"
  "\013\n\007OGGOPUS\020\r\022\013\n\007WAVPACK\020\016\022\007\n\003SPC\020\017\022\007\n\003VG"
  "M\020\020\022\007\n\003APE\020\021\022\n\n\006STREAM\020c\"#\n\017ReadFileRequ"
  "est\022\020\n\010filename\030\001 \001(\t\"A\n\020ReadFileRespons"
  "e\022-\n\010metadata\030\001 \001(\0132\033.cpb.tagreader.Song"
  "Metadata\"R\n\017SaveFileRequest\022\020\n\010filename\030"
  "\001 \001(\t\022-\n\010metadata\030\002 \001(\0132\033.cpb.tagreader."
  "SongMetadata\"#\n\020SaveFileResponse\022\017\n\007succ"
  "ess\030\001 \001(\010\"&\n\022IsMediaFileRequest\022\020\n\010filen"
  "ame\030\001 \001(\t\"&\n\023IsMediaFileResponse\022\017\n\007succ"
  "ess\030\001 \001(\010\"*\n\026LoadEmbeddedArtRequest\022\020\n\010f"
  "ilename\030\001 \001(\t\"\'\n\027LoadEmbeddedArtResponse"
  "\022\014\n\004data\030\001 \001(\014\"z\n\024ReadCloudFileRequest\022\024"
  "\n\014download_url\030\001 \001(\t\022\r\n\005title\030\002 \001(\t\022\014\n\004s"
  "ize\030\003 \001(\005\022\034\n\024authorisation_header\030\004 \001(\t\022"
  "\021\n\tmime_type\030\005 \001(\t\"F\n\025ReadCloudFileRespo"
  "nse\022-\n\010metadata\030\001 \001(\0132\033.cpb.tagreader.So"
  "ngMetadata\"b\n\037SaveSongStatisticsToFileRe"
  "quest\022\020\n\010filename\030\001 \001(\t\022-\n\010metadata\030\002 \001("
  "\0132\033.cpb.tagreader.SongMetadata\"3\n SaveSo"
  "ngStatisticsToFileResponse\022\017\n\007success\030\001 "
  "\001(\010\"^\n\033SaveSongRatingToFileRequest\022\020\n\010fi"
  "lename\030\001 \001(\t\022-\n\010metadata\030\002 \001(\0132\033.cpb.tag"
  "reader.SongMetadata\"/\n\034SaveSongRatingToF"
  "ileResponse\022\017\n\007success\030\001 \001(\010\"\233\010\n\007Message"
  "\022\n\n\002id\030\001 \001(\005\0229\n\021read_file_request\030\002 \001(\0132"
  "\036.cpb.tagreader.ReadFileRequest\022;\n\022read_"
  "file_response\030\003 \001(\0132\037.cpb.tagreader.Read"
  "FileResponse\0229\n\021save_file_request\030\004 \001(\0132"
  "\036.cpb.tagreader.SaveFileRequest\022;\n\022save_"
  "file_response\030\005 \001(\0132\037.cpb.tagreader.Save"
  "FileResponse\022@\n\025is_media_file_request\030\006 "
  "\001(\0132!.cpb.tagreader.IsMediaFileRequest\022B"
  "\n\026is_media_file_response\030\007 \001(\0132\".cpb.tag"
  "reader.IsMediaFileResponse\022H\n\031load_embed"
  "ded_art_request\030\010 \001(\0132%.cpb.tagreader.Lo"
  "adEmbeddedArtRequest\022J\n\032load_embedded_ar"
  "t_response\030\t \001(\0132&.cpb.tagreader.LoadEmb"
  "eddedArtResponse\022D\n\027read_cloud_file_requ"
  "est\030\n \001(\0132#.cpb.tagreader.ReadCloudFileR"
  "equest\022F\n\030read_cloud_file_response\030\013 \001(\013"
  "2$.cpb.tagreader.ReadCloudFileResponse\022\\"
  "\n$save_song_statistics_to_file_request\030\014"
  " \001(\0132..cpb.tagreader.SaveSongStatisticsT"
  "oFileRequest\022^\n%save_song_statistics_to_"
  "file_response\030\r \001(\0132/.cpb.tagreader.Save"
  "SongStatisticsToFileResponse\022T\n save_son"
  "g_rating_to_file_request\030\016 \001(\0132*.cpb.tag"
  "reader.SaveSongRatingToFileRequest\022V\n!sa"
  "ve_song_rating_to_file_response\030\017 \001(\0132+."
  "cpb.tagreader.SaveSongRatingToFileRespon"
  "se"
  ;
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_tagreadermessages_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_tagreadermessages_2eproto = {
  false, false, 2842, descriptor_table_protodef_tagreadermessages_2eproto, "tagreadermessages.proto", 
  &descriptor_table_tagreadermessages_2eproto_once, nullptr, 0, 16,
  schemas, file_default_instances, TableStruct_tagreadermessages_2eproto::offsets,
  file_level_metadata_tagreadermessages_2eproto, file_level_enum_descriptors_tagreadermessages_2eproto, file_level_service_descriptors_tagreadermessages_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_tagreadermessages_2eproto_getter() {
  return &descriptor_table_tagreadermessages_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_tagreadermessages_2eproto(&descriptor_table_tagreadermessages_2eproto);
namespace cpb {
namespace tagreader {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SongMetadata_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_tagreadermessages_2eproto);
  return file_level_enum_descriptors_tagreadermessages_2eproto[0];
}
bool SongMetadata_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 99:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SongMetadata_Type SongMetadata::UNKNOWN;
constexpr SongMetadata_Type SongMetadata::ASF;
constexpr SongMetadata_Type SongMetadata::FLAC;
constexpr SongMetadata_Type SongMetadata::MP4;
constexpr SongMetadata_Type SongMetadata::MPC;
constexpr SongMetadata_Type SongMetadata::MPEG;
constexpr SongMetadata_Type SongMetadata::OGGFLAC;
constexpr SongMetadata_Type SongMetadata::OGGSPEEX;
constexpr SongMetadata_Type SongMetadata::OGGVORBIS;
constexpr SongMetadata_Type SongMetadata::AIFF;
constexpr SongMetadata_Type SongMetadata::WAV;
constexpr SongMetadata_Type SongMetadata::TRUEAUDIO;
constexpr SongMetadata_Type SongMetadata::CDDA;
constexpr SongMetadata_Type SongMetadata::OGGOPUS;
constexpr SongMetadata_Type SongMetadata::WAVPACK;
constexpr SongMetadata_Type SongMetadata::SPC;
constexpr SongMetadata_Type SongMetadata::VGM;
constexpr SongMetadata_Type SongMetadata::APE;
constexpr SongMetadata_Type SongMetadata::STREAM;
constexpr SongMetadata_Type SongMetadata::Type_MIN;
constexpr SongMetadata_Type SongMetadata::Type_MAX;
constexpr int SongMetadata::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

class SongMetadata::_Internal {
 public:
  using HasBits = decltype(std::declval<SongMetadata>()._has_bits_);
  static void set_has_valid(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_title(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_album(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_artist(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_albumartist(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_composer(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_track(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_disc(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_bpm(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_year(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_genre(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_comment(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_compilation(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_rating(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
  static void set_has_playcount(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static void set_has_skipcount(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static void set_has_lastplayed(HasBits* has_bits) {
    (*has_bits)[0] |= 16777216u;
  }
  static void set_has_score(HasBits* has_bits) {
    (*has_bits)[0] |= 33554432u;
  }
  static void set_has_length_nanosec(HasBits* has_bits) {
    (*has_bits)[0] |= 67108864u;
  }
  static void set_has_bitrate(HasBits* has_bits) {
    (*has_bits)[0] |= 134217728u;
  }
  static void set_has_samplerate(HasBits* has_bits) {
    (*has_bits)[0] |= 268435456u;
  }
  static void set_has_url(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_basefilename(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_mtime(HasBits* has_bits) {
    (*has_bits)[0] |= 536870912u;
  }
  static void set_has_ctime(HasBits* has_bits) {
    (*has_bits)[0] |= 1073741824u;
  }
  static void set_has_filesize(HasBits* has_bits) {
    (*has_bits)[0] |= 2147483648u;
  }
  static void set_has_suspicious_tags(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static void set_has_art_automatic(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_type(HasBits* has_bits) {
    (*has_bits)[1] |= 1u;
  }
  static void set_has_etag(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_performer(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_grouping(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_lyrics(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_originalyear(HasBits* has_bits) {
    (*has_bits)[1] |= 2u;
  }
};

SongMetadata::SongMetadata(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SongMetadata)
}
SongMetadata::SongMetadata(const SongMetadata& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  title_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_title()) {
    title_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_title(), 
      GetArena());
  }
  album_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_album()) {
    album_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_album(), 
      GetArena());
  }
  artist_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_artist()) {
    artist_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_artist(), 
      GetArena());
  }
  albumartist_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_albumartist()) {
    albumartist_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_albumartist(), 
      GetArena());
  }
  composer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_composer()) {
    composer_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_composer(), 
      GetArena());
  }
  genre_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_genre()) {
    genre_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_genre(), 
      GetArena());
  }
  comment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_comment()) {
    comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_comment(), 
      GetArena());
  }
  url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_url()) {
    url_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_url(), 
      GetArena());
  }
  basefilename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_basefilename()) {
    basefilename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_basefilename(), 
      GetArena());
  }
  art_automatic_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_art_automatic()) {
    art_automatic_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_art_automatic(), 
      GetArena());
  }
  etag_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_etag()) {
    etag_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_etag(), 
      GetArena());
  }
  performer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_performer()) {
    performer_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_performer(), 
      GetArena());
  }
  grouping_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_grouping()) {
    grouping_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_grouping(), 
      GetArena());
  }
  lyrics_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_lyrics()) {
    lyrics_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_lyrics(), 
      GetArena());
  }
  ::memcpy(&track_, &from.track_,
    static_cast<size_t>(reinterpret_cast<char*>(&originalyear_) -
    reinterpret_cast<char*>(&track_)) + sizeof(originalyear_));
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SongMetadata)
}

void SongMetadata::SharedCtor() {
title_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
album_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
artist_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
albumartist_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
composer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
genre_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
comment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
basefilename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
art_automatic_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
etag_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
performer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
grouping_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
lyrics_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&track_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&originalyear_) -
    reinterpret_cast<char*>(&track_)) + sizeof(originalyear_));
}

SongMetadata::~SongMetadata() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SongMetadata)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SongMetadata::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  title_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  album_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  artist_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  albumartist_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  composer_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  genre_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  comment_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  url_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  basefilename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  art_automatic_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  etag_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  performer_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  grouping_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  lyrics_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void SongMetadata::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SongMetadata)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      title_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      album_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      artist_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      albumartist_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      composer_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000020u) {
      genre_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000040u) {
      comment_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000080u) {
      url_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x00003f00u) {
    if (cached_has_bits & 0x00000100u) {
      basefilename_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000200u) {
      art_automatic_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000400u) {
      etag_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000800u) {
      performer_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00001000u) {
      grouping_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00002000u) {
      lyrics_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x0000c000u) {
    ::memset(&track_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&disc_) -
        reinterpret_cast<char*>(&track_)) + sizeof(disc_));
  }
  if (cached_has_bits & 0x00ff0000u) {
    ::memset(&bpm_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&skipcount_) -
        reinterpret_cast<char*>(&bpm_)) + sizeof(skipcount_));
  }
  if (cached_has_bits & 0xff000000u) {
    ::memset(&lastplayed_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&filesize_) -
        reinterpret_cast<char*>(&lastplayed_)) + sizeof(filesize_));
  }
  cached_has_bits = _has_bits_[1];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&type_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&originalyear_) -
        reinterpret_cast<char*>(&type_)) + sizeof(originalyear_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SongMetadata::_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) {
      // optional bool valid = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_valid(&_has_bits_);
          valid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string title = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          auto str = _internal_mutable_title();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.title");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string album = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          auto str = _internal_mutable_album();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.album");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string artist = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          auto str = _internal_mutable_artist();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.artist");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string albumartist = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          auto str = _internal_mutable_albumartist();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.albumartist");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string composer = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          auto str = _internal_mutable_composer();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.composer");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 track = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_track(&_has_bits_);
          track_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 disc = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          _Internal::set_has_disc(&_has_bits_);
          disc_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float bpm = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) {
          _Internal::set_has_bpm(&_has_bits_);
          bpm_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional int32 year = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) {
          _Internal::set_has_year(&_has_bits_);
          year_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string genre = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) {
          auto str = _internal_mutable_genre();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.genre");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string comment = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) {
          auto str = _internal_mutable_comment();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.comment");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool compilation = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) {
          _Internal::set_has_compilation(&_has_bits_);
          compilation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float rating = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 117)) {
          _Internal::set_has_rating(&_has_bits_);
          rating_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional int32 playcount = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 120)) {
          _Internal::set_has_playcount(&_has_bits_);
          playcount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 skipcount = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) {
          _Internal::set_has_skipcount(&_has_bits_);
          skipcount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 lastplayed = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) {
          _Internal::set_has_lastplayed(&_has_bits_);
          lastplayed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 score = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) {
          _Internal::set_has_score(&_has_bits_);
          score_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint64 length_nanosec = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) {
          _Internal::set_has_length_nanosec(&_has_bits_);
          length_nanosec_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 bitrate = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) {
          _Internal::set_has_bitrate(&_has_bits_);
          bitrate_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 samplerate = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 168)) {
          _Internal::set_has_samplerate(&_has_bits_);
          samplerate_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string url = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          auto str = _internal_mutable_url();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.url");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string basefilename = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) {
          auto str = _internal_mutable_basefilename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.basefilename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 mtime = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 192)) {
          _Internal::set_has_mtime(&_has_bits_);
          mtime_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 ctime = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 200)) {
          _Internal::set_has_ctime(&_has_bits_);
          ctime_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 filesize = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 208)) {
          _Internal::set_has_filesize(&_has_bits_);
          filesize_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool suspicious_tags = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 216)) {
          _Internal::set_has_suspicious_tags(&_has_bits_);
          suspicious_tags_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string art_automatic = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) {
          auto str = _internal_mutable_art_automatic();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.art_automatic");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SongMetadata.Type type = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 232)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::cpb::tagreader::SongMetadata_Type_IsValid(val))) {
            _internal_set_type(static_cast<::cpb::tagreader::SongMetadata_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(29, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional string etag = 30;
      case 30:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) {
          auto str = _internal_mutable_etag();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.etag");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string performer = 31;
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) {
          auto str = _internal_mutable_performer();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.performer");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string grouping = 32;
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) {
          auto str = _internal_mutable_grouping();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.grouping");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string lyrics = 33;
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_lyrics();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SongMetadata.lyrics");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 originalyear = 34;
      case 34:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_originalyear(&_has_bits_);
          originalyear_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bool valid = 1;
  if (cached_has_bits & 0x00040000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_valid(), target);
  }

  // optional string title = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_title().data(), static_cast<int>(this->_internal_title().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.title");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_title(), target);
  }

  // optional string album = 3;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_album().data(), static_cast<int>(this->_internal_album().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.album");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_album(), target);
  }

  // optional string artist = 4;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_artist().data(), static_cast<int>(this->_internal_artist().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.artist");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_artist(), target);
  }

  // optional string albumartist = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_albumartist().data(), static_cast<int>(this->_internal_albumartist().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.albumartist");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_albumartist(), target);
  }

  // optional string composer = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_composer().data(), static_cast<int>(this->_internal_composer().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.composer");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_composer(), target);
  }

  // optional int32 track = 7;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_track(), target);
  }

  // optional int32 disc = 8;
  if (cached_has_bits & 0x00008000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_disc(), target);
  }

  // optional float bpm = 9;
  if (cached_has_bits & 0x00010000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(9, this->_internal_bpm(), target);
  }

  // optional int32 year = 10;
  if (cached_has_bits & 0x00020000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_year(), target);
  }

  // optional string genre = 11;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_genre().data(), static_cast<int>(this->_internal_genre().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.genre");
    target = stream->WriteStringMaybeAliased(
        11, this->_internal_genre(), target);
  }

  // optional string comment = 12;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_comment().data(), static_cast<int>(this->_internal_comment().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.comment");
    target = stream->WriteStringMaybeAliased(
        12, this->_internal_comment(), target);
  }

  // optional bool compilation = 13;
  if (cached_has_bits & 0x00080000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_compilation(), target);
  }

  // optional float rating = 14;
  if (cached_has_bits & 0x00200000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(14, this->_internal_rating(), target);
  }

  // optional int32 playcount = 15;
  if (cached_has_bits & 0x00400000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(15, this->_internal_playcount(), target);
  }

  // optional int32 skipcount = 16;
  if (cached_has_bits & 0x00800000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(16, this->_internal_skipcount(), target);
  }

  // optional int32 lastplayed = 17;
  if (cached_has_bits & 0x01000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(17, this->_internal_lastplayed(), target);
  }

  // optional int32 score = 18;
  if (cached_has_bits & 0x02000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(18, this->_internal_score(), target);
  }

  // optional uint64 length_nanosec = 19;
  if (cached_has_bits & 0x04000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(19, this->_internal_length_nanosec(), target);
  }

  // optional int32 bitrate = 20;
  if (cached_has_bits & 0x08000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(20, this->_internal_bitrate(), target);
  }

  // optional int32 samplerate = 21;
  if (cached_has_bits & 0x10000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(21, this->_internal_samplerate(), target);
  }

  // optional string url = 22;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_url().data(), static_cast<int>(this->_internal_url().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.url");
    target = stream->WriteStringMaybeAliased(
        22, this->_internal_url(), target);
  }

  // optional string basefilename = 23;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_basefilename().data(), static_cast<int>(this->_internal_basefilename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.basefilename");
    target = stream->WriteStringMaybeAliased(
        23, this->_internal_basefilename(), target);
  }

  // optional int32 mtime = 24;
  if (cached_has_bits & 0x20000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(24, this->_internal_mtime(), target);
  }

  // optional int32 ctime = 25;
  if (cached_has_bits & 0x40000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(25, this->_internal_ctime(), target);
  }

  // optional int32 filesize = 26;
  if (cached_has_bits & 0x80000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(26, this->_internal_filesize(), target);
  }

  // optional bool suspicious_tags = 27;
  if (cached_has_bits & 0x00100000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(27, this->_internal_suspicious_tags(), target);
  }

  // optional string art_automatic = 28;
  if (cached_has_bits & 0x00000200u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_art_automatic().data(), static_cast<int>(this->_internal_art_automatic().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.art_automatic");
    target = stream->WriteStringMaybeAliased(
        28, this->_internal_art_automatic(), target);
  }

  cached_has_bits = _has_bits_[1];
  // optional .cpb.tagreader.SongMetadata.Type type = 29;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      29, this->_internal_type(), target);
  }

  cached_has_bits = _has_bits_[0];
  // optional string etag = 30;
  if (cached_has_bits & 0x00000400u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_etag().data(), static_cast<int>(this->_internal_etag().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.etag");
    target = stream->WriteStringMaybeAliased(
        30, this->_internal_etag(), target);
  }

  // optional string performer = 31;
  if (cached_has_bits & 0x00000800u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_performer().data(), static_cast<int>(this->_internal_performer().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.performer");
    target = stream->WriteStringMaybeAliased(
        31, this->_internal_performer(), target);
  }

  // optional string grouping = 32;
  if (cached_has_bits & 0x00001000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_grouping().data(), static_cast<int>(this->_internal_grouping().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.grouping");
    target = stream->WriteStringMaybeAliased(
        32, this->_internal_grouping(), target);
  }

  // optional string lyrics = 33;
  if (cached_has_bits & 0x00002000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_lyrics().data(), static_cast<int>(this->_internal_lyrics().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SongMetadata.lyrics");
    target = stream->WriteStringMaybeAliased(
        33, this->_internal_lyrics(), target);
  }

  cached_has_bits = _has_bits_[1];
  // optional int32 originalyear = 34;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(34, this->_internal_originalyear(), 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:cpb.tagreader.SongMetadata)
  return target;
}

size_t SongMetadata::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SongMetadata)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string title = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_title());
    }

    // optional string album = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_album());
    }

    // optional string artist = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_artist());
    }

    // optional string albumartist = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_albumartist());
    }

    // optional string composer = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_composer());
    }

    // optional string genre = 11;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_genre());
    }

    // optional string comment = 12;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_comment());
    }

    // optional string url = 22;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_url());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional string basefilename = 23;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_basefilename());
    }

    // optional string art_automatic = 28;
    if (cached_has_bits & 0x00000200u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_art_automatic());
    }

    // optional string etag = 30;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_etag());
    }

    // optional string performer = 31;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_performer());
    }

    // optional string grouping = 32;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_grouping());
    }

    // optional string lyrics = 33;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_lyrics());
    }

    // optional int32 track = 7;
    if (cached_has_bits & 0x00004000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_track());
    }

    // optional int32 disc = 8;
    if (cached_has_bits & 0x00008000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_disc());
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // optional float bpm = 9;
    if (cached_has_bits & 0x00010000u) {
      total_size += 1 + 4;
    }

    // optional int32 year = 10;
    if (cached_has_bits & 0x00020000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_year());
    }

    // optional bool valid = 1;
    if (cached_has_bits & 0x00040000u) {
      total_size += 1 + 1;
    }

    // optional bool compilation = 13;
    if (cached_has_bits & 0x00080000u) {
      total_size += 1 + 1;
    }

    // optional bool suspicious_tags = 27;
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 + 1;
    }

    // optional float rating = 14;
    if (cached_has_bits & 0x00200000u) {
      total_size += 1 + 4;
    }

    // optional int32 playcount = 15;
    if (cached_has_bits & 0x00400000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_playcount());
    }

    // optional int32 skipcount = 16;
    if (cached_has_bits & 0x00800000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_skipcount());
    }

  }
  if (cached_has_bits & 0xff000000u) {
    // optional int32 lastplayed = 17;
    if (cached_has_bits & 0x01000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_lastplayed());
    }

    // optional int32 score = 18;
    if (cached_has_bits & 0x02000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_score());
    }

    // optional uint64 length_nanosec = 19;
    if (cached_has_bits & 0x04000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_length_nanosec());
    }

    // optional int32 bitrate = 20;
    if (cached_has_bits & 0x08000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_bitrate());
    }

    // optional int32 samplerate = 21;
    if (cached_has_bits & 0x10000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_samplerate());
    }

    // optional int32 mtime = 24;
    if (cached_has_bits & 0x20000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_mtime());
    }

    // optional int32 ctime = 25;
    if (cached_has_bits & 0x40000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_ctime());
    }

    // optional int32 filesize = 26;
    if (cached_has_bits & 0x80000000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_filesize());
    }

  }
  cached_has_bits = _has_bits_[1];
  if (cached_has_bits & 0x00000003u) {
    // optional .cpb.tagreader.SongMetadata.Type type = 29;
    if (cached_has_bits & 0x00000001u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type());
    }

    // optional int32 originalyear = 34;
    if (cached_has_bits & 0x00000002u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_originalyear());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SongMetadata::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SongMetadata)
  GOOGLE_DCHECK_NE(&from, this);
  const SongMetadata* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SongMetadata>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SongMetadata)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SongMetadata)
    MergeFrom(*source);
  }
}

void SongMetadata::MergeFrom(const SongMetadata& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SongMetadata)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_title(from._internal_title());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_album(from._internal_album());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_artist(from._internal_artist());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_set_albumartist(from._internal_albumartist());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_set_composer(from._internal_composer());
    }
    if (cached_has_bits & 0x00000020u) {
      _internal_set_genre(from._internal_genre());
    }
    if (cached_has_bits & 0x00000040u) {
      _internal_set_comment(from._internal_comment());
    }
    if (cached_has_bits & 0x00000080u) {
      _internal_set_url(from._internal_url());
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _internal_set_basefilename(from._internal_basefilename());
    }
    if (cached_has_bits & 0x00000200u) {
      _internal_set_art_automatic(from._internal_art_automatic());
    }
    if (cached_has_bits & 0x00000400u) {
      _internal_set_etag(from._internal_etag());
    }
    if (cached_has_bits & 0x00000800u) {
      _internal_set_performer(from._internal_performer());
    }
    if (cached_has_bits & 0x00001000u) {
      _internal_set_grouping(from._internal_grouping());
    }
    if (cached_has_bits & 0x00002000u) {
      _internal_set_lyrics(from._internal_lyrics());
    }
    if (cached_has_bits & 0x00004000u) {
      track_ = from.track_;
    }
    if (cached_has_bits & 0x00008000u) {
      disc_ = from.disc_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      bpm_ = from.bpm_;
    }
    if (cached_has_bits & 0x00020000u) {
      year_ = from.year_;
    }
    if (cached_has_bits & 0x00040000u) {
      valid_ = from.valid_;
    }
    if (cached_has_bits & 0x00080000u) {
      compilation_ = from.compilation_;
    }
    if (cached_has_bits & 0x00100000u) {
      suspicious_tags_ = from.suspicious_tags_;
    }
    if (cached_has_bits & 0x00200000u) {
      rating_ = from.rating_;
    }
    if (cached_has_bits & 0x00400000u) {
      playcount_ = from.playcount_;
    }
    if (cached_has_bits & 0x00800000u) {
      skipcount_ = from.skipcount_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0xff000000u) {
    if (cached_has_bits & 0x01000000u) {
      lastplayed_ = from.lastplayed_;
    }
    if (cached_has_bits & 0x02000000u) {
      score_ = from.score_;
    }
    if (cached_has_bits & 0x04000000u) {
      length_nanosec_ = from.length_nanosec_;
    }
    if (cached_has_bits & 0x08000000u) {
      bitrate_ = from.bitrate_;
    }
    if (cached_has_bits & 0x10000000u) {
      samplerate_ = from.samplerate_;
    }
    if (cached_has_bits & 0x20000000u) {
      mtime_ = from.mtime_;
    }
    if (cached_has_bits & 0x40000000u) {
      ctime_ = from.ctime_;
    }
    if (cached_has_bits & 0x80000000u) {
      filesize_ = from.filesize_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  cached_has_bits = from._has_bits_[1];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      type_ = from.type_;
    }
    if (cached_has_bits & 0x00000002u) {
      originalyear_ = from.originalyear_;
    }
    _has_bits_[1] |= cached_has_bits;
  }
}

void SongMetadata::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SongMetadata)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SongMetadata::InternalSwap(SongMetadata* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(_has_bits_[1], other->_has_bits_[1]);
  title_.Swap(&other->title_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  album_.Swap(&other->album_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  artist_.Swap(&other->artist_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  albumartist_.Swap(&other->albumartist_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  composer_.Swap(&other->composer_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  genre_.Swap(&other->genre_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  comment_.Swap(&other->comment_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  url_.Swap(&other->url_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  basefilename_.Swap(&other->basefilename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  art_automatic_.Swap(&other->art_automatic_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  etag_.Swap(&other->etag_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  performer_.Swap(&other->performer_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  grouping_.Swap(&other->grouping_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  lyrics_.Swap(&other->lyrics_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SongMetadata, originalyear_)
      + sizeof(SongMetadata::originalyear_)
      - PROTOBUF_FIELD_OFFSET(SongMetadata, track_)>(
          reinterpret_cast<char*>(&track_),
          reinterpret_cast<char*>(&other->track_));
}

::PROTOBUF_NAMESPACE_ID::Metadata SongMetadata::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[0]);
}

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

class ReadFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<ReadFileRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

ReadFileRequest::ReadFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.ReadFileRequest)
}
ReadFileRequest::ReadFileRequest(const ReadFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.ReadFileRequest)
}

void ReadFileRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

ReadFileRequest::~ReadFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.ReadFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ReadFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void ReadFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.ReadFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    filename_.ClearNonDefaultToEmpty();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.ReadFileRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.ReadFileRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), 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:cpb.tagreader.ReadFileRequest)
  return target;
}

size_t ReadFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.ReadFileRequest)
  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;

  // optional string filename = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_filename());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ReadFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.ReadFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const ReadFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ReadFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.ReadFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.ReadFileRequest)
    MergeFrom(*source);
  }
}

void ReadFileRequest::MergeFrom(const ReadFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.ReadFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_filename()) {
    _internal_set_filename(from._internal_filename());
  }
}

void ReadFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.ReadFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ReadFileRequest::InternalSwap(ReadFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}

::PROTOBUF_NAMESPACE_ID::Metadata ReadFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[1]);
}

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

class ReadFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<ReadFileResponse>()._has_bits_);
  static const ::cpb::tagreader::SongMetadata& metadata(const ReadFileResponse* msg);
  static void set_has_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::cpb::tagreader::SongMetadata&
ReadFileResponse::_Internal::metadata(const ReadFileResponse* msg) {
  return *msg->metadata_;
}
ReadFileResponse::ReadFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.ReadFileResponse)
}
ReadFileResponse::ReadFileResponse(const ReadFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_metadata()) {
    metadata_ = new ::cpb::tagreader::SongMetadata(*from.metadata_);
  } else {
    metadata_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.ReadFileResponse)
}

void ReadFileResponse::SharedCtor() {
metadata_ = nullptr;
}

ReadFileResponse::~ReadFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.ReadFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ReadFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (this != internal_default_instance()) delete metadata_;
}

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

void ReadFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.ReadFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(metadata_ != nullptr);
    metadata_->Clear();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .cpb.tagreader.SongMetadata metadata = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_metadata(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional .cpb.tagreader.SongMetadata metadata = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::metadata(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:cpb.tagreader.ReadFileResponse)
  return target;
}

size_t ReadFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.ReadFileResponse)
  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;

  // optional .cpb.tagreader.SongMetadata metadata = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *metadata_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ReadFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.ReadFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const ReadFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ReadFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.ReadFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.ReadFileResponse)
    MergeFrom(*source);
  }
}

void ReadFileResponse::MergeFrom(const ReadFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.ReadFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_metadata()) {
    _internal_mutable_metadata()->::cpb::tagreader::SongMetadata::MergeFrom(from._internal_metadata());
  }
}

void ReadFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.ReadFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ReadFileResponse::InternalSwap(ReadFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(metadata_, other->metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReadFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[2]);
}

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

class SaveFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveFileRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::cpb::tagreader::SongMetadata& metadata(const SaveFileRequest* msg);
  static void set_has_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::cpb::tagreader::SongMetadata&
SaveFileRequest::_Internal::metadata(const SaveFileRequest* msg) {
  return *msg->metadata_;
}
SaveFileRequest::SaveFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveFileRequest)
}
SaveFileRequest::SaveFileRequest(const SaveFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  if (from._internal_has_metadata()) {
    metadata_ = new ::cpb::tagreader::SongMetadata(*from.metadata_);
  } else {
    metadata_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveFileRequest)
}

void SaveFileRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
metadata_ = nullptr;
}

SaveFileRequest::~SaveFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete metadata_;
}

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

void SaveFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      filename_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(metadata_ != nullptr);
      metadata_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SaveFileRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SongMetadata metadata = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_metadata(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SaveFileRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), target);
  }

  // optional .cpb.tagreader.SongMetadata metadata = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::metadata(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:cpb.tagreader.SaveFileRequest)
  return target;
}

size_t SaveFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveFileRequest)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string filename = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_filename());
    }

    // optional .cpb.tagreader.SongMetadata metadata = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *metadata_);
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveFileRequest)
    MergeFrom(*source);
  }
}

void SaveFileRequest::MergeFrom(const SaveFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_filename(from._internal_filename());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_metadata()->::cpb::tagreader::SongMetadata::MergeFrom(from._internal_metadata());
    }
  }
}

void SaveFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveFileRequest::InternalSwap(SaveFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  swap(metadata_, other->metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[3]);
}

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

class SaveFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveFileResponse>()._has_bits_);
  static void set_has_success(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

SaveFileResponse::SaveFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveFileResponse)
}
SaveFileResponse::SaveFileResponse(const SaveFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  success_ = from.success_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveFileResponse)
}

void SaveFileResponse::SharedCtor() {
success_ = false;
}

SaveFileResponse::~SaveFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

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

void SaveFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  success_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool success = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_success(&has_bits);
          success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bool success = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_success(), 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:cpb.tagreader.SaveFileResponse)
  return target;
}

size_t SaveFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveFileResponse)
  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;

  // optional bool success = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveFileResponse)
    MergeFrom(*source);
  }
}

void SaveFileResponse::MergeFrom(const SaveFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_success()) {
    _internal_set_success(from._internal_success());
  }
}

void SaveFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveFileResponse::InternalSwap(SaveFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(success_, other->success_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[4]);
}

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

class IsMediaFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<IsMediaFileRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

IsMediaFileRequest::IsMediaFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.IsMediaFileRequest)
}
IsMediaFileRequest::IsMediaFileRequest(const IsMediaFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.IsMediaFileRequest)
}

void IsMediaFileRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

IsMediaFileRequest::~IsMediaFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.IsMediaFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void IsMediaFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void IsMediaFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.IsMediaFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    filename_.ClearNonDefaultToEmpty();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* IsMediaFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.IsMediaFileRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.IsMediaFileRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), 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:cpb.tagreader.IsMediaFileRequest)
  return target;
}

size_t IsMediaFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.IsMediaFileRequest)
  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;

  // optional string filename = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_filename());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IsMediaFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.IsMediaFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const IsMediaFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<IsMediaFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.IsMediaFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.IsMediaFileRequest)
    MergeFrom(*source);
  }
}

void IsMediaFileRequest::MergeFrom(const IsMediaFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.IsMediaFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_filename()) {
    _internal_set_filename(from._internal_filename());
  }
}

void IsMediaFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.IsMediaFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void IsMediaFileRequest::InternalSwap(IsMediaFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}

::PROTOBUF_NAMESPACE_ID::Metadata IsMediaFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[5]);
}

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

class IsMediaFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<IsMediaFileResponse>()._has_bits_);
  static void set_has_success(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

IsMediaFileResponse::IsMediaFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.IsMediaFileResponse)
}
IsMediaFileResponse::IsMediaFileResponse(const IsMediaFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  success_ = from.success_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.IsMediaFileResponse)
}

void IsMediaFileResponse::SharedCtor() {
success_ = false;
}

IsMediaFileResponse::~IsMediaFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.IsMediaFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void IsMediaFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

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

void IsMediaFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.IsMediaFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  success_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* IsMediaFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool success = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_success(&has_bits);
          success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bool success = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_success(), 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:cpb.tagreader.IsMediaFileResponse)
  return target;
}

size_t IsMediaFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.IsMediaFileResponse)
  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;

  // optional bool success = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IsMediaFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.IsMediaFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const IsMediaFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<IsMediaFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.IsMediaFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.IsMediaFileResponse)
    MergeFrom(*source);
  }
}

void IsMediaFileResponse::MergeFrom(const IsMediaFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.IsMediaFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_success()) {
    _internal_set_success(from._internal_success());
  }
}

void IsMediaFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.IsMediaFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void IsMediaFileResponse::InternalSwap(IsMediaFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(success_, other->success_);
}

::PROTOBUF_NAMESPACE_ID::Metadata IsMediaFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[6]);
}

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

class LoadEmbeddedArtRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<LoadEmbeddedArtRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

LoadEmbeddedArtRequest::LoadEmbeddedArtRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.LoadEmbeddedArtRequest)
}
LoadEmbeddedArtRequest::LoadEmbeddedArtRequest(const LoadEmbeddedArtRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.LoadEmbeddedArtRequest)
}

void LoadEmbeddedArtRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

LoadEmbeddedArtRequest::~LoadEmbeddedArtRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.LoadEmbeddedArtRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void LoadEmbeddedArtRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void LoadEmbeddedArtRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.LoadEmbeddedArtRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    filename_.ClearNonDefaultToEmpty();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LoadEmbeddedArtRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.LoadEmbeddedArtRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.LoadEmbeddedArtRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), 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:cpb.tagreader.LoadEmbeddedArtRequest)
  return target;
}

size_t LoadEmbeddedArtRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.LoadEmbeddedArtRequest)
  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;

  // optional string filename = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_filename());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void LoadEmbeddedArtRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.LoadEmbeddedArtRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const LoadEmbeddedArtRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<LoadEmbeddedArtRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.LoadEmbeddedArtRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.LoadEmbeddedArtRequest)
    MergeFrom(*source);
  }
}

void LoadEmbeddedArtRequest::MergeFrom(const LoadEmbeddedArtRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.LoadEmbeddedArtRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_filename()) {
    _internal_set_filename(from._internal_filename());
  }
}

void LoadEmbeddedArtRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.LoadEmbeddedArtRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void LoadEmbeddedArtRequest::InternalSwap(LoadEmbeddedArtRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}

::PROTOBUF_NAMESPACE_ID::Metadata LoadEmbeddedArtRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[7]);
}

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

class LoadEmbeddedArtResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<LoadEmbeddedArtResponse>()._has_bits_);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

LoadEmbeddedArtResponse::LoadEmbeddedArtResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.LoadEmbeddedArtResponse)
}
LoadEmbeddedArtResponse::LoadEmbeddedArtResponse(const LoadEmbeddedArtResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_data()) {
    data_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_data(), 
      GetArena());
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.LoadEmbeddedArtResponse)
}

void LoadEmbeddedArtResponse::SharedCtor() {
data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

LoadEmbeddedArtResponse::~LoadEmbeddedArtResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.LoadEmbeddedArtResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void LoadEmbeddedArtResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  data_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void LoadEmbeddedArtResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.LoadEmbeddedArtResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    data_.ClearNonDefaultToEmpty();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LoadEmbeddedArtResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bytes data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_data();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bytes data = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        1, 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:cpb.tagreader.LoadEmbeddedArtResponse)
  return target;
}

size_t LoadEmbeddedArtResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.LoadEmbeddedArtResponse)
  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;

  // optional bytes data = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void LoadEmbeddedArtResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.LoadEmbeddedArtResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const LoadEmbeddedArtResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<LoadEmbeddedArtResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.LoadEmbeddedArtResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.LoadEmbeddedArtResponse)
    MergeFrom(*source);
  }
}

void LoadEmbeddedArtResponse::MergeFrom(const LoadEmbeddedArtResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.LoadEmbeddedArtResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_data()) {
    _internal_set_data(from._internal_data());
  }
}

void LoadEmbeddedArtResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.LoadEmbeddedArtResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void LoadEmbeddedArtResponse::InternalSwap(LoadEmbeddedArtResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  data_.Swap(&other->data_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}

::PROTOBUF_NAMESPACE_ID::Metadata LoadEmbeddedArtResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[8]);
}

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

class ReadCloudFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<ReadCloudFileRequest>()._has_bits_);
  static void set_has_download_url(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_title(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_size(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_authorisation_header(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_mime_type(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

ReadCloudFileRequest::ReadCloudFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.ReadCloudFileRequest)
}
ReadCloudFileRequest::ReadCloudFileRequest(const ReadCloudFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  download_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_download_url()) {
    download_url_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_download_url(), 
      GetArena());
  }
  title_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_title()) {
    title_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_title(), 
      GetArena());
  }
  authorisation_header_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_authorisation_header()) {
    authorisation_header_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_authorisation_header(), 
      GetArena());
  }
  mime_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_mime_type()) {
    mime_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_mime_type(), 
      GetArena());
  }
  size_ = from.size_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.ReadCloudFileRequest)
}

void ReadCloudFileRequest::SharedCtor() {
download_url_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
title_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
authorisation_header_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
mime_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
size_ = 0;
}

ReadCloudFileRequest::~ReadCloudFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.ReadCloudFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ReadCloudFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  download_url_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  title_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  authorisation_header_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  mime_type_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void ReadCloudFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.ReadCloudFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      download_url_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      title_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      authorisation_header_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      mime_type_.ClearNonDefaultToEmpty();
    }
  }
  size_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadCloudFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string download_url = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_download_url();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.ReadCloudFileRequest.download_url");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string title = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          auto str = _internal_mutable_title();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.ReadCloudFileRequest.title");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 size = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_size(&has_bits);
          size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string authorisation_header = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          auto str = _internal_mutable_authorisation_header();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.ReadCloudFileRequest.authorisation_header");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string mime_type = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          auto str = _internal_mutable_mime_type();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.ReadCloudFileRequest.mime_type");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string download_url = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_download_url().data(), static_cast<int>(this->_internal_download_url().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.ReadCloudFileRequest.download_url");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_download_url(), target);
  }

  // optional string title = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_title().data(), static_cast<int>(this->_internal_title().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.ReadCloudFileRequest.title");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_title(), target);
  }

  // optional int32 size = 3;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_size(), target);
  }

  // optional string authorisation_header = 4;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_authorisation_header().data(), static_cast<int>(this->_internal_authorisation_header().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.ReadCloudFileRequest.authorisation_header");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_authorisation_header(), target);
  }

  // optional string mime_type = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_mime_type().data(), static_cast<int>(this->_internal_mime_type().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.ReadCloudFileRequest.mime_type");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_mime_type(), 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:cpb.tagreader.ReadCloudFileRequest)
  return target;
}

size_t ReadCloudFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.ReadCloudFileRequest)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional string download_url = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_download_url());
    }

    // optional string title = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_title());
    }

    // optional string authorisation_header = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_authorisation_header());
    }

    // optional string mime_type = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_mime_type());
    }

    // optional int32 size = 3;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_size());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ReadCloudFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.ReadCloudFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const ReadCloudFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ReadCloudFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.ReadCloudFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.ReadCloudFileRequest)
    MergeFrom(*source);
  }
}

void ReadCloudFileRequest::MergeFrom(const ReadCloudFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.ReadCloudFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_download_url(from._internal_download_url());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_title(from._internal_title());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_authorisation_header(from._internal_authorisation_header());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_set_mime_type(from._internal_mime_type());
    }
    if (cached_has_bits & 0x00000010u) {
      size_ = from.size_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ReadCloudFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.ReadCloudFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ReadCloudFileRequest::InternalSwap(ReadCloudFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  download_url_.Swap(&other->download_url_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  title_.Swap(&other->title_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  authorisation_header_.Swap(&other->authorisation_header_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  mime_type_.Swap(&other->mime_type_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  swap(size_, other->size_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReadCloudFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[9]);
}

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

class ReadCloudFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<ReadCloudFileResponse>()._has_bits_);
  static const ::cpb::tagreader::SongMetadata& metadata(const ReadCloudFileResponse* msg);
  static void set_has_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::cpb::tagreader::SongMetadata&
ReadCloudFileResponse::_Internal::metadata(const ReadCloudFileResponse* msg) {
  return *msg->metadata_;
}
ReadCloudFileResponse::ReadCloudFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.ReadCloudFileResponse)
}
ReadCloudFileResponse::ReadCloudFileResponse(const ReadCloudFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_metadata()) {
    metadata_ = new ::cpb::tagreader::SongMetadata(*from.metadata_);
  } else {
    metadata_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.ReadCloudFileResponse)
}

void ReadCloudFileResponse::SharedCtor() {
metadata_ = nullptr;
}

ReadCloudFileResponse::~ReadCloudFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.ReadCloudFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void ReadCloudFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (this != internal_default_instance()) delete metadata_;
}

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

void ReadCloudFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.ReadCloudFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(metadata_ != nullptr);
    metadata_->Clear();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadCloudFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .cpb.tagreader.SongMetadata metadata = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_metadata(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional .cpb.tagreader.SongMetadata metadata = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::metadata(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:cpb.tagreader.ReadCloudFileResponse)
  return target;
}

size_t ReadCloudFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.ReadCloudFileResponse)
  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;

  // optional .cpb.tagreader.SongMetadata metadata = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *metadata_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ReadCloudFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.ReadCloudFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const ReadCloudFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ReadCloudFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.ReadCloudFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.ReadCloudFileResponse)
    MergeFrom(*source);
  }
}

void ReadCloudFileResponse::MergeFrom(const ReadCloudFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.ReadCloudFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_metadata()) {
    _internal_mutable_metadata()->::cpb::tagreader::SongMetadata::MergeFrom(from._internal_metadata());
  }
}

void ReadCloudFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.ReadCloudFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ReadCloudFileResponse::InternalSwap(ReadCloudFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(metadata_, other->metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReadCloudFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[10]);
}

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

class SaveSongStatisticsToFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveSongStatisticsToFileRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::cpb::tagreader::SongMetadata& metadata(const SaveSongStatisticsToFileRequest* msg);
  static void set_has_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::cpb::tagreader::SongMetadata&
SaveSongStatisticsToFileRequest::_Internal::metadata(const SaveSongStatisticsToFileRequest* msg) {
  return *msg->metadata_;
}
SaveSongStatisticsToFileRequest::SaveSongStatisticsToFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveSongStatisticsToFileRequest)
}
SaveSongStatisticsToFileRequest::SaveSongStatisticsToFileRequest(const SaveSongStatisticsToFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  if (from._internal_has_metadata()) {
    metadata_ = new ::cpb::tagreader::SongMetadata(*from.metadata_);
  } else {
    metadata_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveSongStatisticsToFileRequest)
}

void SaveSongStatisticsToFileRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
metadata_ = nullptr;
}

SaveSongStatisticsToFileRequest::~SaveSongStatisticsToFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveSongStatisticsToFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveSongStatisticsToFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete metadata_;
}

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

void SaveSongStatisticsToFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveSongStatisticsToFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      filename_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(metadata_ != nullptr);
      metadata_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveSongStatisticsToFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SaveSongStatisticsToFileRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SongMetadata metadata = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_metadata(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SaveSongStatisticsToFileRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), target);
  }

  // optional .cpb.tagreader.SongMetadata metadata = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::metadata(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:cpb.tagreader.SaveSongStatisticsToFileRequest)
  return target;
}

size_t SaveSongStatisticsToFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveSongStatisticsToFileRequest)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string filename = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_filename());
    }

    // optional .cpb.tagreader.SongMetadata metadata = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *metadata_);
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveSongStatisticsToFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveSongStatisticsToFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveSongStatisticsToFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveSongStatisticsToFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveSongStatisticsToFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveSongStatisticsToFileRequest)
    MergeFrom(*source);
  }
}

void SaveSongStatisticsToFileRequest::MergeFrom(const SaveSongStatisticsToFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveSongStatisticsToFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_filename(from._internal_filename());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_metadata()->::cpb::tagreader::SongMetadata::MergeFrom(from._internal_metadata());
    }
  }
}

void SaveSongStatisticsToFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveSongStatisticsToFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveSongStatisticsToFileRequest::InternalSwap(SaveSongStatisticsToFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  swap(metadata_, other->metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveSongStatisticsToFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[11]);
}

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

class SaveSongStatisticsToFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveSongStatisticsToFileResponse>()._has_bits_);
  static void set_has_success(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

SaveSongStatisticsToFileResponse::SaveSongStatisticsToFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveSongStatisticsToFileResponse)
}
SaveSongStatisticsToFileResponse::SaveSongStatisticsToFileResponse(const SaveSongStatisticsToFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  success_ = from.success_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveSongStatisticsToFileResponse)
}

void SaveSongStatisticsToFileResponse::SharedCtor() {
success_ = false;
}

SaveSongStatisticsToFileResponse::~SaveSongStatisticsToFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveSongStatisticsToFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveSongStatisticsToFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

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

void SaveSongStatisticsToFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveSongStatisticsToFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  success_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveSongStatisticsToFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool success = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_success(&has_bits);
          success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bool success = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_success(), 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:cpb.tagreader.SaveSongStatisticsToFileResponse)
  return target;
}

size_t SaveSongStatisticsToFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveSongStatisticsToFileResponse)
  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;

  // optional bool success = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveSongStatisticsToFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveSongStatisticsToFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveSongStatisticsToFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveSongStatisticsToFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveSongStatisticsToFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveSongStatisticsToFileResponse)
    MergeFrom(*source);
  }
}

void SaveSongStatisticsToFileResponse::MergeFrom(const SaveSongStatisticsToFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveSongStatisticsToFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_success()) {
    _internal_set_success(from._internal_success());
  }
}

void SaveSongStatisticsToFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveSongStatisticsToFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveSongStatisticsToFileResponse::InternalSwap(SaveSongStatisticsToFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(success_, other->success_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveSongStatisticsToFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[12]);
}

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

class SaveSongRatingToFileRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveSongRatingToFileRequest>()._has_bits_);
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::cpb::tagreader::SongMetadata& metadata(const SaveSongRatingToFileRequest* msg);
  static void set_has_metadata(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::cpb::tagreader::SongMetadata&
SaveSongRatingToFileRequest::_Internal::metadata(const SaveSongRatingToFileRequest* msg) {
  return *msg->metadata_;
}
SaveSongRatingToFileRequest::SaveSongRatingToFileRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveSongRatingToFileRequest)
}
SaveSongRatingToFileRequest::SaveSongRatingToFileRequest(const SaveSongRatingToFileRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_filename()) {
    filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), 
      GetArena());
  }
  if (from._internal_has_metadata()) {
    metadata_ = new ::cpb::tagreader::SongMetadata(*from.metadata_);
  } else {
    metadata_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveSongRatingToFileRequest)
}

void SaveSongRatingToFileRequest::SharedCtor() {
filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
metadata_ = nullptr;
}

SaveSongRatingToFileRequest::~SaveSongRatingToFileRequest() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveSongRatingToFileRequest)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveSongRatingToFileRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete metadata_;
}

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

void SaveSongRatingToFileRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveSongRatingToFileRequest)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      filename_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(metadata_ != nullptr);
      metadata_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveSongRatingToFileRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string filename = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          auto str = _internal_mutable_filename();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cpb.tagreader.SaveSongRatingToFileRequest.filename");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SongMetadata metadata = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_metadata(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional string filename = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_filename().data(), static_cast<int>(this->_internal_filename().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "cpb.tagreader.SaveSongRatingToFileRequest.filename");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filename(), target);
  }

  // optional .cpb.tagreader.SongMetadata metadata = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::metadata(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:cpb.tagreader.SaveSongRatingToFileRequest)
  return target;
}

size_t SaveSongRatingToFileRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveSongRatingToFileRequest)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string filename = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_filename());
    }

    // optional .cpb.tagreader.SongMetadata metadata = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *metadata_);
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveSongRatingToFileRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveSongRatingToFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveSongRatingToFileRequest* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveSongRatingToFileRequest>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveSongRatingToFileRequest)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveSongRatingToFileRequest)
    MergeFrom(*source);
  }
}

void SaveSongRatingToFileRequest::MergeFrom(const SaveSongRatingToFileRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveSongRatingToFileRequest)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_filename(from._internal_filename());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_metadata()->::cpb::tagreader::SongMetadata::MergeFrom(from._internal_metadata());
    }
  }
}

void SaveSongRatingToFileRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveSongRatingToFileRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveSongRatingToFileRequest::InternalSwap(SaveSongRatingToFileRequest* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
  swap(metadata_, other->metadata_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveSongRatingToFileRequest::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[13]);
}

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

class SaveSongRatingToFileResponse::_Internal {
 public:
  using HasBits = decltype(std::declval<SaveSongRatingToFileResponse>()._has_bits_);
  static void set_has_success(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

SaveSongRatingToFileResponse::SaveSongRatingToFileResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.SaveSongRatingToFileResponse)
}
SaveSongRatingToFileResponse::SaveSongRatingToFileResponse(const SaveSongRatingToFileResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  success_ = from.success_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.SaveSongRatingToFileResponse)
}

void SaveSongRatingToFileResponse::SharedCtor() {
success_ = false;
}

SaveSongRatingToFileResponse::~SaveSongRatingToFileResponse() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.SaveSongRatingToFileResponse)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void SaveSongRatingToFileResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
}

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

void SaveSongRatingToFileResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.SaveSongRatingToFileResponse)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  success_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SaveSongRatingToFileResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool success = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_success(&has_bits);
          success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional bool success = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_success(), 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:cpb.tagreader.SaveSongRatingToFileResponse)
  return target;
}

size_t SaveSongRatingToFileResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.SaveSongRatingToFileResponse)
  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;

  // optional bool success = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SaveSongRatingToFileResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.SaveSongRatingToFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  const SaveSongRatingToFileResponse* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SaveSongRatingToFileResponse>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.SaveSongRatingToFileResponse)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.SaveSongRatingToFileResponse)
    MergeFrom(*source);
  }
}

void SaveSongRatingToFileResponse::MergeFrom(const SaveSongRatingToFileResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.SaveSongRatingToFileResponse)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_success()) {
    _internal_set_success(from._internal_success());
  }
}

void SaveSongRatingToFileResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.SaveSongRatingToFileResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SaveSongRatingToFileResponse::InternalSwap(SaveSongRatingToFileResponse* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(success_, other->success_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SaveSongRatingToFileResponse::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[14]);
}

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

class Message::_Internal {
 public:
  using HasBits = decltype(std::declval<Message>()._has_bits_);
  static void set_has_id(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static const ::cpb::tagreader::ReadFileRequest& read_file_request(const Message* msg);
  static void set_has_read_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::cpb::tagreader::ReadFileResponse& read_file_response(const Message* msg);
  static void set_has_read_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::cpb::tagreader::SaveFileRequest& save_file_request(const Message* msg);
  static void set_has_save_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::cpb::tagreader::SaveFileResponse& save_file_response(const Message* msg);
  static void set_has_save_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::cpb::tagreader::IsMediaFileRequest& is_media_file_request(const Message* msg);
  static void set_has_is_media_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::cpb::tagreader::IsMediaFileResponse& is_media_file_response(const Message* msg);
  static void set_has_is_media_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::cpb::tagreader::LoadEmbeddedArtRequest& load_embedded_art_request(const Message* msg);
  static void set_has_load_embedded_art_request(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::cpb::tagreader::LoadEmbeddedArtResponse& load_embedded_art_response(const Message* msg);
  static void set_has_load_embedded_art_response(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::cpb::tagreader::ReadCloudFileRequest& read_cloud_file_request(const Message* msg);
  static void set_has_read_cloud_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static const ::cpb::tagreader::ReadCloudFileResponse& read_cloud_file_response(const Message* msg);
  static void set_has_read_cloud_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static const ::cpb::tagreader::SaveSongStatisticsToFileRequest& save_song_statistics_to_file_request(const Message* msg);
  static void set_has_save_song_statistics_to_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static const ::cpb::tagreader::SaveSongStatisticsToFileResponse& save_song_statistics_to_file_response(const Message* msg);
  static void set_has_save_song_statistics_to_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static const ::cpb::tagreader::SaveSongRatingToFileRequest& save_song_rating_to_file_request(const Message* msg);
  static void set_has_save_song_rating_to_file_request(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static const ::cpb::tagreader::SaveSongRatingToFileResponse& save_song_rating_to_file_response(const Message* msg);
  static void set_has_save_song_rating_to_file_response(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
};

const ::cpb::tagreader::ReadFileRequest&
Message::_Internal::read_file_request(const Message* msg) {
  return *msg->read_file_request_;
}
const ::cpb::tagreader::ReadFileResponse&
Message::_Internal::read_file_response(const Message* msg) {
  return *msg->read_file_response_;
}
const ::cpb::tagreader::SaveFileRequest&
Message::_Internal::save_file_request(const Message* msg) {
  return *msg->save_file_request_;
}
const ::cpb::tagreader::SaveFileResponse&
Message::_Internal::save_file_response(const Message* msg) {
  return *msg->save_file_response_;
}
const ::cpb::tagreader::IsMediaFileRequest&
Message::_Internal::is_media_file_request(const Message* msg) {
  return *msg->is_media_file_request_;
}
const ::cpb::tagreader::IsMediaFileResponse&
Message::_Internal::is_media_file_response(const Message* msg) {
  return *msg->is_media_file_response_;
}
const ::cpb::tagreader::LoadEmbeddedArtRequest&
Message::_Internal::load_embedded_art_request(const Message* msg) {
  return *msg->load_embedded_art_request_;
}
const ::cpb::tagreader::LoadEmbeddedArtResponse&
Message::_Internal::load_embedded_art_response(const Message* msg) {
  return *msg->load_embedded_art_response_;
}
const ::cpb::tagreader::ReadCloudFileRequest&
Message::_Internal::read_cloud_file_request(const Message* msg) {
  return *msg->read_cloud_file_request_;
}
const ::cpb::tagreader::ReadCloudFileResponse&
Message::_Internal::read_cloud_file_response(const Message* msg) {
  return *msg->read_cloud_file_response_;
}
const ::cpb::tagreader::SaveSongStatisticsToFileRequest&
Message::_Internal::save_song_statistics_to_file_request(const Message* msg) {
  return *msg->save_song_statistics_to_file_request_;
}
const ::cpb::tagreader::SaveSongStatisticsToFileResponse&
Message::_Internal::save_song_statistics_to_file_response(const Message* msg) {
  return *msg->save_song_statistics_to_file_response_;
}
const ::cpb::tagreader::SaveSongRatingToFileRequest&
Message::_Internal::save_song_rating_to_file_request(const Message* msg) {
  return *msg->save_song_rating_to_file_request_;
}
const ::cpb::tagreader::SaveSongRatingToFileResponse&
Message::_Internal::save_song_rating_to_file_response(const Message* msg) {
  return *msg->save_song_rating_to_file_response_;
}
Message::Message(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  SharedCtor();
  RegisterArenaDtor(arena);
  // @@protoc_insertion_point(arena_constructor:cpb.tagreader.Message)
}
Message::Message(const Message& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_read_file_request()) {
    read_file_request_ = new ::cpb::tagreader::ReadFileRequest(*from.read_file_request_);
  } else {
    read_file_request_ = nullptr;
  }
  if (from._internal_has_read_file_response()) {
    read_file_response_ = new ::cpb::tagreader::ReadFileResponse(*from.read_file_response_);
  } else {
    read_file_response_ = nullptr;
  }
  if (from._internal_has_save_file_request()) {
    save_file_request_ = new ::cpb::tagreader::SaveFileRequest(*from.save_file_request_);
  } else {
    save_file_request_ = nullptr;
  }
  if (from._internal_has_save_file_response()) {
    save_file_response_ = new ::cpb::tagreader::SaveFileResponse(*from.save_file_response_);
  } else {
    save_file_response_ = nullptr;
  }
  if (from._internal_has_is_media_file_request()) {
    is_media_file_request_ = new ::cpb::tagreader::IsMediaFileRequest(*from.is_media_file_request_);
  } else {
    is_media_file_request_ = nullptr;
  }
  if (from._internal_has_is_media_file_response()) {
    is_media_file_response_ = new ::cpb::tagreader::IsMediaFileResponse(*from.is_media_file_response_);
  } else {
    is_media_file_response_ = nullptr;
  }
  if (from._internal_has_load_embedded_art_request()) {
    load_embedded_art_request_ = new ::cpb::tagreader::LoadEmbeddedArtRequest(*from.load_embedded_art_request_);
  } else {
    load_embedded_art_request_ = nullptr;
  }
  if (from._internal_has_load_embedded_art_response()) {
    load_embedded_art_response_ = new ::cpb::tagreader::LoadEmbeddedArtResponse(*from.load_embedded_art_response_);
  } else {
    load_embedded_art_response_ = nullptr;
  }
  if (from._internal_has_read_cloud_file_request()) {
    read_cloud_file_request_ = new ::cpb::tagreader::ReadCloudFileRequest(*from.read_cloud_file_request_);
  } else {
    read_cloud_file_request_ = nullptr;
  }
  if (from._internal_has_read_cloud_file_response()) {
    read_cloud_file_response_ = new ::cpb::tagreader::ReadCloudFileResponse(*from.read_cloud_file_response_);
  } else {
    read_cloud_file_response_ = nullptr;
  }
  if (from._internal_has_save_song_statistics_to_file_request()) {
    save_song_statistics_to_file_request_ = new ::cpb::tagreader::SaveSongStatisticsToFileRequest(*from.save_song_statistics_to_file_request_);
  } else {
    save_song_statistics_to_file_request_ = nullptr;
  }
  if (from._internal_has_save_song_statistics_to_file_response()) {
    save_song_statistics_to_file_response_ = new ::cpb::tagreader::SaveSongStatisticsToFileResponse(*from.save_song_statistics_to_file_response_);
  } else {
    save_song_statistics_to_file_response_ = nullptr;
  }
  if (from._internal_has_save_song_rating_to_file_request()) {
    save_song_rating_to_file_request_ = new ::cpb::tagreader::SaveSongRatingToFileRequest(*from.save_song_rating_to_file_request_);
  } else {
    save_song_rating_to_file_request_ = nullptr;
  }
  if (from._internal_has_save_song_rating_to_file_response()) {
    save_song_rating_to_file_response_ = new ::cpb::tagreader::SaveSongRatingToFileResponse(*from.save_song_rating_to_file_response_);
  } else {
    save_song_rating_to_file_response_ = nullptr;
  }
  id_ = from.id_;
  // @@protoc_insertion_point(copy_constructor:cpb.tagreader.Message)
}

void Message::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&read_file_request_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&id_) -
    reinterpret_cast<char*>(&read_file_request_)) + sizeof(id_));
}

Message::~Message() {
  // @@protoc_insertion_point(destructor:cpb.tagreader.Message)
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

void Message::SharedDtor() {
  GOOGLE_DCHECK(GetArena() == nullptr);
  if (this != internal_default_instance()) delete read_file_request_;
  if (this != internal_default_instance()) delete read_file_response_;
  if (this != internal_default_instance()) delete save_file_request_;
  if (this != internal_default_instance()) delete save_file_response_;
  if (this != internal_default_instance()) delete is_media_file_request_;
  if (this != internal_default_instance()) delete is_media_file_response_;
  if (this != internal_default_instance()) delete load_embedded_art_request_;
  if (this != internal_default_instance()) delete load_embedded_art_response_;
  if (this != internal_default_instance()) delete read_cloud_file_request_;
  if (this != internal_default_instance()) delete read_cloud_file_response_;
  if (this != internal_default_instance()) delete save_song_statistics_to_file_request_;
  if (this != internal_default_instance()) delete save_song_statistics_to_file_response_;
  if (this != internal_default_instance()) delete save_song_rating_to_file_request_;
  if (this != internal_default_instance()) delete save_song_rating_to_file_response_;
}

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

void Message::Clear() {
// @@protoc_insertion_point(message_clear_start:cpb.tagreader.Message)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(read_file_request_ != nullptr);
      read_file_request_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(read_file_response_ != nullptr);
      read_file_response_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(save_file_request_ != nullptr);
      save_file_request_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(save_file_response_ != nullptr);
      save_file_response_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      GOOGLE_DCHECK(is_media_file_request_ != nullptr);
      is_media_file_request_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(is_media_file_response_ != nullptr);
      is_media_file_response_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      GOOGLE_DCHECK(load_embedded_art_request_ != nullptr);
      load_embedded_art_request_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      GOOGLE_DCHECK(load_embedded_art_response_ != nullptr);
      load_embedded_art_response_->Clear();
    }
  }
  if (cached_has_bits & 0x00003f00u) {
    if (cached_has_bits & 0x00000100u) {
      GOOGLE_DCHECK(read_cloud_file_request_ != nullptr);
      read_cloud_file_request_->Clear();
    }
    if (cached_has_bits & 0x00000200u) {
      GOOGLE_DCHECK(read_cloud_file_response_ != nullptr);
      read_cloud_file_response_->Clear();
    }
    if (cached_has_bits & 0x00000400u) {
      GOOGLE_DCHECK(save_song_statistics_to_file_request_ != nullptr);
      save_song_statistics_to_file_request_->Clear();
    }
    if (cached_has_bits & 0x00000800u) {
      GOOGLE_DCHECK(save_song_statistics_to_file_response_ != nullptr);
      save_song_statistics_to_file_response_->Clear();
    }
    if (cached_has_bits & 0x00001000u) {
      GOOGLE_DCHECK(save_song_rating_to_file_request_ != nullptr);
      save_song_rating_to_file_request_->Clear();
    }
    if (cached_has_bits & 0x00002000u) {
      GOOGLE_DCHECK(save_song_rating_to_file_response_ != nullptr);
      save_song_rating_to_file_response_->Clear();
    }
  }
  id_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Message::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_id(&has_bits);
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.ReadFileRequest read_file_request = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_read_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.ReadFileResponse read_file_response = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_read_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveFileRequest save_file_request = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveFileResponse save_file_response = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.IsMediaFileRequest is_media_file_request = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_is_media_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.IsMediaFileResponse is_media_file_response = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_is_media_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.LoadEmbeddedArtRequest load_embedded_art_request = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_load_embedded_art_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.LoadEmbeddedArtResponse load_embedded_art_response = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_load_embedded_art_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.ReadCloudFileRequest read_cloud_file_request = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_read_cloud_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.ReadCloudFileResponse read_cloud_file_response = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_read_cloud_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveSongStatisticsToFileRequest save_song_statistics_to_file_request = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_song_statistics_to_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveSongStatisticsToFileResponse save_song_statistics_to_file_response = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_song_statistics_to_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveSongRatingToFileRequest save_song_rating_to_file_request = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_song_rating_to_file_request(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .cpb.tagreader.SaveSongRatingToFileResponse save_song_rating_to_file_response = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_save_song_rating_to_file_response(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag == 0) || ((tag & 7) == 4)) {
          CHK_(ptr);
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag,
            _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
            ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

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

  cached_has_bits = _has_bits_[0];
  // optional int32 id = 1;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_id(), target);
  }

  // optional .cpb.tagreader.ReadFileRequest read_file_request = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::read_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.ReadFileResponse read_file_response = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::read_file_response(this), target, stream);
  }

  // optional .cpb.tagreader.SaveFileRequest save_file_request = 4;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        4, _Internal::save_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.SaveFileResponse save_file_response = 5;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        5, _Internal::save_file_response(this), target, stream);
  }

  // optional .cpb.tagreader.IsMediaFileRequest is_media_file_request = 6;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        6, _Internal::is_media_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.IsMediaFileResponse is_media_file_response = 7;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        7, _Internal::is_media_file_response(this), target, stream);
  }

  // optional .cpb.tagreader.LoadEmbeddedArtRequest load_embedded_art_request = 8;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        8, _Internal::load_embedded_art_request(this), target, stream);
  }

  // optional .cpb.tagreader.LoadEmbeddedArtResponse load_embedded_art_response = 9;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        9, _Internal::load_embedded_art_response(this), target, stream);
  }

  // optional .cpb.tagreader.ReadCloudFileRequest read_cloud_file_request = 10;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        10, _Internal::read_cloud_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.ReadCloudFileResponse read_cloud_file_response = 11;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        11, _Internal::read_cloud_file_response(this), target, stream);
  }

  // optional .cpb.tagreader.SaveSongStatisticsToFileRequest save_song_statistics_to_file_request = 12;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        12, _Internal::save_song_statistics_to_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.SaveSongStatisticsToFileResponse save_song_statistics_to_file_response = 13;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        13, _Internal::save_song_statistics_to_file_response(this), target, stream);
  }

  // optional .cpb.tagreader.SaveSongRatingToFileRequest save_song_rating_to_file_request = 14;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        14, _Internal::save_song_rating_to_file_request(this), target, stream);
  }

  // optional .cpb.tagreader.SaveSongRatingToFileResponse save_song_rating_to_file_response = 15;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        15, _Internal::save_song_rating_to_file_response(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:cpb.tagreader.Message)
  return target;
}

size_t Message::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cpb.tagreader.Message)
  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;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional .cpb.tagreader.ReadFileRequest read_file_request = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *read_file_request_);
    }

    // optional .cpb.tagreader.ReadFileResponse read_file_response = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *read_file_response_);
    }

    // optional .cpb.tagreader.SaveFileRequest save_file_request = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_file_request_);
    }

    // optional .cpb.tagreader.SaveFileResponse save_file_response = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_file_response_);
    }

    // optional .cpb.tagreader.IsMediaFileRequest is_media_file_request = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *is_media_file_request_);
    }

    // optional .cpb.tagreader.IsMediaFileResponse is_media_file_response = 7;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *is_media_file_response_);
    }

    // optional .cpb.tagreader.LoadEmbeddedArtRequest load_embedded_art_request = 8;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *load_embedded_art_request_);
    }

    // optional .cpb.tagreader.LoadEmbeddedArtResponse load_embedded_art_response = 9;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *load_embedded_art_response_);
    }

  }
  if (cached_has_bits & 0x00007f00u) {
    // optional .cpb.tagreader.ReadCloudFileRequest read_cloud_file_request = 10;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *read_cloud_file_request_);
    }

    // optional .cpb.tagreader.ReadCloudFileResponse read_cloud_file_response = 11;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *read_cloud_file_response_);
    }

    // optional .cpb.tagreader.SaveSongStatisticsToFileRequest save_song_statistics_to_file_request = 12;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_song_statistics_to_file_request_);
    }

    // optional .cpb.tagreader.SaveSongStatisticsToFileResponse save_song_statistics_to_file_response = 13;
    if (cached_has_bits & 0x00000800u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_song_statistics_to_file_response_);
    }

    // optional .cpb.tagreader.SaveSongRatingToFileRequest save_song_rating_to_file_request = 14;
    if (cached_has_bits & 0x00001000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_song_rating_to_file_request_);
    }

    // optional .cpb.tagreader.SaveSongRatingToFileResponse save_song_rating_to_file_response = 15;
    if (cached_has_bits & 0x00002000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *save_song_rating_to_file_response_);
    }

    // optional int32 id = 1;
    if (cached_has_bits & 0x00004000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_id());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Message::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:cpb.tagreader.Message)
  GOOGLE_DCHECK_NE(&from, this);
  const Message* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Message>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:cpb.tagreader.Message)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:cpb.tagreader.Message)
    MergeFrom(*source);
  }
}

void Message::MergeFrom(const Message& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cpb.tagreader.Message)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_read_file_request()->::cpb::tagreader::ReadFileRequest::MergeFrom(from._internal_read_file_request());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_read_file_response()->::cpb::tagreader::ReadFileResponse::MergeFrom(from._internal_read_file_response());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_mutable_save_file_request()->::cpb::tagreader::SaveFileRequest::MergeFrom(from._internal_save_file_request());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_mutable_save_file_response()->::cpb::tagreader::SaveFileResponse::MergeFrom(from._internal_save_file_response());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_mutable_is_media_file_request()->::cpb::tagreader::IsMediaFileRequest::MergeFrom(from._internal_is_media_file_request());
    }
    if (cached_has_bits & 0x00000020u) {
      _internal_mutable_is_media_file_response()->::cpb::tagreader::IsMediaFileResponse::MergeFrom(from._internal_is_media_file_response());
    }
    if (cached_has_bits & 0x00000040u) {
      _internal_mutable_load_embedded_art_request()->::cpb::tagreader::LoadEmbeddedArtRequest::MergeFrom(from._internal_load_embedded_art_request());
    }
    if (cached_has_bits & 0x00000080u) {
      _internal_mutable_load_embedded_art_response()->::cpb::tagreader::LoadEmbeddedArtResponse::MergeFrom(from._internal_load_embedded_art_response());
    }
  }
  if (cached_has_bits & 0x00007f00u) {
    if (cached_has_bits & 0x00000100u) {
      _internal_mutable_read_cloud_file_request()->::cpb::tagreader::ReadCloudFileRequest::MergeFrom(from._internal_read_cloud_file_request());
    }
    if (cached_has_bits & 0x00000200u) {
      _internal_mutable_read_cloud_file_response()->::cpb::tagreader::ReadCloudFileResponse::MergeFrom(from._internal_read_cloud_file_response());
    }
    if (cached_has_bits & 0x00000400u) {
      _internal_mutable_save_song_statistics_to_file_request()->::cpb::tagreader::SaveSongStatisticsToFileRequest::MergeFrom(from._internal_save_song_statistics_to_file_request());
    }
    if (cached_has_bits & 0x00000800u) {
      _internal_mutable_save_song_statistics_to_file_response()->::cpb::tagreader::SaveSongStatisticsToFileResponse::MergeFrom(from._internal_save_song_statistics_to_file_response());
    }
    if (cached_has_bits & 0x00001000u) {
      _internal_mutable_save_song_rating_to_file_request()->::cpb::tagreader::SaveSongRatingToFileRequest::MergeFrom(from._internal_save_song_rating_to_file_request());
    }
    if (cached_has_bits & 0x00002000u) {
      _internal_mutable_save_song_rating_to_file_response()->::cpb::tagreader::SaveSongRatingToFileResponse::MergeFrom(from._internal_save_song_rating_to_file_response());
    }
    if (cached_has_bits & 0x00004000u) {
      id_ = from.id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void Message::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:cpb.tagreader.Message)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void Message::InternalSwap(Message* other) {
  using std::swap;
  _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Message, id_)
      + sizeof(Message::id_)
      - PROTOBUF_FIELD_OFFSET(Message, read_file_request_)>(
          reinterpret_cast<char*>(&read_file_request_),
          reinterpret_cast<char*>(&other->read_file_request_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Message::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_tagreadermessages_2eproto_getter, &descriptor_table_tagreadermessages_2eproto_once,
      file_level_metadata_tagreadermessages_2eproto[15]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace tagreader
}  // namespace cpb
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SongMetadata* Arena::CreateMaybeMessage< ::cpb::tagreader::SongMetadata >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SongMetadata >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::ReadFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::ReadFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::ReadFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::ReadFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::ReadFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::ReadFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::IsMediaFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::IsMediaFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::IsMediaFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::IsMediaFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::IsMediaFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::IsMediaFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::LoadEmbeddedArtRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::LoadEmbeddedArtRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::LoadEmbeddedArtRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::LoadEmbeddedArtResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::LoadEmbeddedArtResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::LoadEmbeddedArtResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::ReadCloudFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::ReadCloudFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::ReadCloudFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::ReadCloudFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::ReadCloudFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::ReadCloudFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveSongStatisticsToFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveSongStatisticsToFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveSongStatisticsToFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveSongStatisticsToFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveSongStatisticsToFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveSongStatisticsToFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveSongRatingToFileRequest* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveSongRatingToFileRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveSongRatingToFileRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::SaveSongRatingToFileResponse* Arena::CreateMaybeMessage< ::cpb::tagreader::SaveSongRatingToFileResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::SaveSongRatingToFileResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::cpb::tagreader::Message* Arena::CreateMaybeMessage< ::cpb::tagreader::Message >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cpb::tagreader::Message >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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