context: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: POGOProtos.Data.Player.proto
  #pragma warning disable 1591, 0612, 3021
  #region Designer generated code
  
  using pb = global::Google.Protobuf;
  using pbc = global::Google.Protobuf.Collections;
  using pbr = global::Google.Protobuf.Reflection;
  using scg = global::System.Collections.Generic;
  namespace POGOProtos.Data.Player {
  
    /// <summary>Holder for reflection information generated from POGOProtos.Data.Player.proto</summary>
    public static partial class POGOProtosDataPlayerReflection {
  
      #region Descriptor
      /// <summary>File descriptor for POGOProtos.Data.Player.proto</summary>
      public static pbr::FileDescriptor Descriptor {
        get { return descriptor; }
      }
      private static pbr::FileDescriptor descriptor;
  
      static POGOProtosDataPlayerReflection() {
        byte[] descriptorData = global::System.Convert.FromBase64String(
            string.Concat(
              "ChxQT0dPUHJvdG9zLkRhdGEuUGxheWVyLnByb3RvEhZQT0dPUHJvdG9zLkRh",
              "dGEuUGxheWVyGhZQT0dPUHJvdG9zLkVudW1zLnByb3RvIigKCEN1cnJlbmN5",
              "EgwKBG5hbWUYASABKAkSDgoGYW1vdW50GAIgASgFIu0ECgtQbGF5ZXJTdGF0",
              "cxINCgVsZXZlbBgBIAEoBRISCgpleHBlcmllbmNlGAIgASgDEhUKDXByZXZf",
              "bGV2ZWxfeHAYAyABKAMSFQoNbmV4dF9sZXZlbF94cBgEIAEoAxIRCglrbV93",
              "YWxrZWQYBSABKAISHAoUcG9rZW1vbnNfZW5jb3VudGVyZWQYBiABKAUSHgoW",
              "dW5pcXVlX3Bva2VkZXhfZW50cmllcxgHIAEoBRIZChFwb2tlbW9uc19jYXB0",
              "dXJlZBgIIAEoBRISCgpldm9sdXRpb25zGAkgASgFEhgKEHBva2Vfc3RvcF92",
              "aXNpdHMYCiABKAUSGAoQcG9rZWJhbGxzX3Rocm93bhgLIAEoBRIUCgxlZ2dz",
              "X2hhdGNoZWQYDCABKAUSGwoTYmlnX21hZ2lrYXJwX2NhdWdodBgNIAEoBRIZ",
              "ChFiYXR0bGVfYXR0YWNrX3dvbhgOIAEoBRIbChNiYXR0bGVfYXR0YWNrX3Rv",
              "dGFsGA8gASgFEhsKE2JhdHRsZV9kZWZlbmRlZF93b24YECABKAUSGwoTYmF0",
              "dGxlX3RyYWluaW5nX3dvbhgRIAEoBRIdChViYXR0bGVfdHJhaW5pbmdfdG90",
              "YWwYEiABKAUSHQoVcHJlc3RpZ2VfcmFpc2VkX3RvdGFsGBMgASgFEh4KFnBy",
              "ZXN0aWdlX2Ryb3BwZWRfdG90YWwYFCABKAUSGAoQcG9rZW1vbl9kZXBsb3ll",
              "ZBgVIAEoBRIeChZwb2tlbW9uX2NhdWdodF9ieV90eXBlGBYgASgMEhwKFHNt",
              "YWxsX3JhdHRhdGFfY2F1Z2h0GBcgASgFImMKCkRhaWx5Qm9udXMSIwobbmV4",
              "dF9jb2xsZWN0ZWRfdGltZXN0YW1wX21zGAEgASgDEjAKKG5leHRfZGVmZW5k",
              "ZXJfYm9udXNfY29sbGVjdF90aW1lc3RhbXBfbXMYAiABKAMiKQoMUGxheWVy",
              "Q2FtZXJhEhkKEWlzX2RlZmF1bHRfY2FtZXJhGAEgASgIIlEKD0NvbnRhY3RT",
              "ZXR0aW5ncxIdChVzZW5kX21hcmtldGluZ19lbWFpbHMYASABKAgSHwoXc2Vu",
              "ZF9wdXNoX25vdGlmaWNhdGlvbnMYAiABKAgiaAoTUGxheWVyUHVibGljUHJv",
              "ZmlsZRIMCgRuYW1lGAEgASgJEg0KBWxldmVsGAIgASgFEjQKBmF2YXRhchgD",
              "IAEoCzIkLlBPR09Qcm90b3MuRGF0YS5QbGF5ZXIuUGxheWVyQXZhdGFyIq4B",
              "CgxQbGF5ZXJBdmF0YXISDAoEc2tpbhgCIAEoBRIMCgRoYWlyGAMgASgFEg0K",
              "BXNoaXJ0GAQgASgFEg0KBXBhbnRzGAUgASgFEgsKA2hhdBgGIAEoBRINCgVz",
              "aG9lcxgHIAEoBRIoCgZnZW5kZXIYCCABKA4yGC5QT0dPUHJvdG9zLkVudW1z",
              "LkdlbmRlchIMCgRleWVzGAkgASgFEhAKCGJhY2twYWNrGAogASgFIn8KDUVx",
              "dWlwcGVkQmFkZ2USLwoKYmFkZ2VfdHlwZRgBIAEoDjIbLlBPR09Qcm90b3Mu",
              "RW51bXMuQmFkZ2VUeXBlEg0KBWxldmVsGAIgASgFEi4KJm5leHRfZXF1aXBf",
              "Y2hhbmdlX2FsbG93ZWRfdGltZXN0YW1wX21zGAMgASgDIh4KDlBsYXllckN1",
              "cnJlbmN5EgwKBGdlbXMYASABKAVQAGIGcHJvdG8z"));
        descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
            new pbr::FileDescriptor[] { global::POGOProtos.Enums.POGOProtosEnumsReflection.Descriptor, },
            new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.Currency), global::POGOProtos.Data.Player.Currency.Parser, new[]{ "Name", "Amount" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.PlayerStats), global::POGOProtos.Data.Player.PlayerStats.Parser, new[]{ "Level", "Experience", "PrevLevelXp", "NextLevelXp", "KmWalked", "PokemonsEncountered", "UniquePokedexEntries", "PokemonsCaptured", "Evolutions", "PokeStopVisits", "PokeballsThrown", "EggsHatched", "BigMagikarpCaught", "BattleAttackWon", "BattleAttackTotal", "BattleDefendedWon", "BattleTrainingWon", "BattleTrainingTotal", "PrestigeRaisedTotal", "PrestigeDroppedTotal", "PokemonDeployed", "PokemonCaughtByType", "SmallRattataCaught" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.DailyBonus), global::POGOProtos.Data.Player.DailyBonus.Parser, new[]{ "NextCollectedTimestampMs", "NextDefenderBonusCollectTimestampMs" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.PlayerCamera), global::POGOProtos.Data.Player.PlayerCamera.Parser, new[]{ "IsDefaultCamera" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.ContactSettings), global::POGOProtos.Data.Player.ContactSettings.Parser, new[]{ "SendMarketingEmails", "SendPushNotifications" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.PlayerPublicProfile), global::POGOProtos.Data.Player.PlayerPublicProfile.Parser, new[]{ "Name", "Level", "Avatar" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.PlayerAvatar), global::POGOProtos.Data.Player.PlayerAvatar.Parser, new[]{ "Skin", "Hair", "Shirt", "Pants", "Hat", "Shoes", "Gender", "Eyes", "Backpack" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.EquippedBadge), global::POGOProtos.Data.Player.EquippedBadge.Parser, new[]{ "BadgeType", "Level", "NextEquipChangeAllowedTimestampMs" }, null, null, null),
              new pbr::GeneratedClrTypeInfo(typeof(global::POGOProtos.Data.Player.PlayerCurrency), global::POGOProtos.Data.Player.PlayerCurrency.Parser, new[]{ "Gems" }, null, null, null)
            }));
      }
      #endregion
  
    }
    #region Messages
    public sealed partial class Currency : pb::IMessage<Currency> {
      private static readonly pb::MessageParser<Currency> _parser = new pb::MessageParser<Currency>(() => new Currency());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<Currency> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[0]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Currency() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Currency(Currency other) : this() {
        name_ = other.name_;
        amount_ = other.amount_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public Currency Clone() {
        return new Currency(this);
      }
  
      /// <summary>Field number for the "name" field.</summary>
      public const int NameFieldNumber = 1;
      private string name_ = "";
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public string Name {
        get { return name_; }
        set {
          name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        }
      }
  
      /// <summary>Field number for the "amount" field.</summary>
      public const int AmountFieldNumber = 2;
      private int amount_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Amount {
        get { return amount_; }
        set {
          amount_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as Currency);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(Currency other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Name != other.Name) return false;
        if (Amount != other.Amount) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Name.Length != 0) hash ^= Name.GetHashCode();
        if (Amount != 0) hash ^= Amount.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Name.Length != 0) {
          output.WriteRawTag(10);
          output.WriteString(Name);
        }
        if (Amount != 0) {
          output.WriteRawTag(16);
          output.WriteInt32(Amount);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Name.Length != 0) {
          size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
        }
        if (Amount != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Amount);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(Currency other) {
        if (other == null) {
          return;
        }
        if (other.Name.Length != 0) {
          Name = other.Name;
        }
        if (other.Amount != 0) {
          Amount = other.Amount;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 16: {
              Amount = input.ReadInt32();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PlayerStats : pb::IMessage<PlayerStats> {
      private static readonly pb::MessageParser<PlayerStats> _parser = new pb::MessageParser<PlayerStats>(() => new PlayerStats());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PlayerStats> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[1]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerStats() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerStats(PlayerStats other) : this() {
        level_ = other.level_;
        experience_ = other.experience_;
        prevLevelXp_ = other.prevLevelXp_;
        nextLevelXp_ = other.nextLevelXp_;
        kmWalked_ = other.kmWalked_;
        pokemonsEncountered_ = other.pokemonsEncountered_;
        uniquePokedexEntries_ = other.uniquePokedexEntries_;
        pokemonsCaptured_ = other.pokemonsCaptured_;
        evolutions_ = other.evolutions_;
        pokeStopVisits_ = other.pokeStopVisits_;
        pokeballsThrown_ = other.pokeballsThrown_;
        eggsHatched_ = other.eggsHatched_;
        bigMagikarpCaught_ = other.bigMagikarpCaught_;
        battleAttackWon_ = other.battleAttackWon_;
        battleAttackTotal_ = other.battleAttackTotal_;
        battleDefendedWon_ = other.battleDefendedWon_;
        battleTrainingWon_ = other.battleTrainingWon_;
        battleTrainingTotal_ = other.battleTrainingTotal_;
        prestigeRaisedTotal_ = other.prestigeRaisedTotal_;
        prestigeDroppedTotal_ = other.prestigeDroppedTotal_;
        pokemonDeployed_ = other.pokemonDeployed_;
        pokemonCaughtByType_ = other.pokemonCaughtByType_;
        smallRattataCaught_ = other.smallRattataCaught_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerStats Clone() {
        return new PlayerStats(this);
      }
  
      /// <summary>Field number for the "level" field.</summary>
      public const int LevelFieldNumber = 1;
      private int level_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Level {
        get { return level_; }
        set {
          level_ = value;
        }
      }
  
      /// <summary>Field number for the "experience" field.</summary>
      public const int ExperienceFieldNumber = 2;
      private long experience_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long Experience {
        get { return experience_; }
        set {
          experience_ = value;
        }
      }
  
      /// <summary>Field number for the "prev_level_xp" field.</summary>
      public const int PrevLevelXpFieldNumber = 3;
      private long prevLevelXp_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long PrevLevelXp {
        get { return prevLevelXp_; }
        set {
          prevLevelXp_ = value;
        }
      }
  
      /// <summary>Field number for the "next_level_xp" field.</summary>
      public const int NextLevelXpFieldNumber = 4;
      private long nextLevelXp_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long NextLevelXp {
        get { return nextLevelXp_; }
        set {
          nextLevelXp_ = value;
        }
      }
  
      /// <summary>Field number for the "km_walked" field.</summary>
      public const int KmWalkedFieldNumber = 5;
      private float kmWalked_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public float KmWalked {
        get { return kmWalked_; }
        set {
          kmWalked_ = value;
        }
      }
  
      /// <summary>Field number for the "pokemons_encountered" field.</summary>
      public const int PokemonsEncounteredFieldNumber = 6;
      private int pokemonsEncountered_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PokemonsEncountered {
        get { return pokemonsEncountered_; }
        set {
          pokemonsEncountered_ = value;
        }
      }
  
      /// <summary>Field number for the "unique_pokedex_entries" field.</summary>
      public const int UniquePokedexEntriesFieldNumber = 7;
      private int uniquePokedexEntries_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int UniquePokedexEntries {
        get { return uniquePokedexEntries_; }
        set {
          uniquePokedexEntries_ = value;
        }
      }
  
      /// <summary>Field number for the "pokemons_captured" field.</summary>
      public const int PokemonsCapturedFieldNumber = 8;
      private int pokemonsCaptured_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PokemonsCaptured {
        get { return pokemonsCaptured_; }
        set {
          pokemonsCaptured_ = value;
        }
      }
  
      /// <summary>Field number for the "evolutions" field.</summary>
      public const int EvolutionsFieldNumber = 9;
      private int evolutions_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Evolutions {
        get { return evolutions_; }
        set {
          evolutions_ = value;
        }
      }
  
      /// <summary>Field number for the "poke_stop_visits" field.</summary>
      public const int PokeStopVisitsFieldNumber = 10;
      private int pokeStopVisits_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PokeStopVisits {
        get { return pokeStopVisits_; }
        set {
          pokeStopVisits_ = value;
        }
      }
  
      /// <summary>Field number for the "pokeballs_thrown" field.</summary>
      public const int PokeballsThrownFieldNumber = 11;
      private int pokeballsThrown_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PokeballsThrown {
        get { return pokeballsThrown_; }
        set {
          pokeballsThrown_ = value;
        }
      }
  
      /// <summary>Field number for the "eggs_hatched" field.</summary>
      public const int EggsHatchedFieldNumber = 12;
      private int eggsHatched_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int EggsHatched {
        get { return eggsHatched_; }
        set {
          eggsHatched_ = value;
        }
      }
  
      /// <summary>Field number for the "big_magikarp_caught" field.</summary>
      public const int BigMagikarpCaughtFieldNumber = 13;
      private int bigMagikarpCaught_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BigMagikarpCaught {
        get { return bigMagikarpCaught_; }
        set {
          bigMagikarpCaught_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_attack_won" field.</summary>
      public const int BattleAttackWonFieldNumber = 14;
      private int battleAttackWon_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BattleAttackWon {
        get { return battleAttackWon_; }
        set {
          battleAttackWon_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_attack_total" field.</summary>
      public const int BattleAttackTotalFieldNumber = 15;
      private int battleAttackTotal_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BattleAttackTotal {
        get { return battleAttackTotal_; }
        set {
          battleAttackTotal_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_defended_won" field.</summary>
      public const int BattleDefendedWonFieldNumber = 16;
      private int battleDefendedWon_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BattleDefendedWon {
        get { return battleDefendedWon_; }
        set {
          battleDefendedWon_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_training_won" field.</summary>
      public const int BattleTrainingWonFieldNumber = 17;
      private int battleTrainingWon_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BattleTrainingWon {
        get { return battleTrainingWon_; }
        set {
          battleTrainingWon_ = value;
        }
      }
  
      /// <summary>Field number for the "battle_training_total" field.</summary>
      public const int BattleTrainingTotalFieldNumber = 18;
      private int battleTrainingTotal_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int BattleTrainingTotal {
        get { return battleTrainingTotal_; }
        set {
          battleTrainingTotal_ = value;
        }
      }
  
      /// <summary>Field number for the "prestige_raised_total" field.</summary>
      public const int PrestigeRaisedTotalFieldNumber = 19;
      private int prestigeRaisedTotal_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PrestigeRaisedTotal {
        get { return prestigeRaisedTotal_; }
        set {
          prestigeRaisedTotal_ = value;
        }
      }
  
      /// <summary>Field number for the "prestige_dropped_total" field.</summary>
      public const int PrestigeDroppedTotalFieldNumber = 20;
      private int prestigeDroppedTotal_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PrestigeDroppedTotal {
        get { return prestigeDroppedTotal_; }
        set {
          prestigeDroppedTotal_ = value;
        }
      }
  
      /// <summary>Field number for the "pokemon_deployed" field.</summary>
      public const int PokemonDeployedFieldNumber = 21;
      private int pokemonDeployed_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int PokemonDeployed {
        get { return pokemonDeployed_; }
        set {
          pokemonDeployed_ = value;
        }
      }
  
      /// <summary>Field number for the "pokemon_caught_by_type" field.</summary>
      public const int PokemonCaughtByTypeFieldNumber = 22;
      private pb::ByteString pokemonCaughtByType_ = pb::ByteString.Empty;
      /// <summary>
      ///  TODO: repeated PokemonType ??
      /// </summary>
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public pb::ByteString PokemonCaughtByType {
        get { return pokemonCaughtByType_; }
        set {
          pokemonCaughtByType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        }
      }
  
      /// <summary>Field number for the "small_rattata_caught" field.</summary>
      public const int SmallRattataCaughtFieldNumber = 23;
      private int smallRattataCaught_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int SmallRattataCaught {
        get { return smallRattataCaught_; }
        set {
          smallRattataCaught_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PlayerStats);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PlayerStats other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Level != other.Level) return false;
        if (Experience != other.Experience) return false;
        if (PrevLevelXp != other.PrevLevelXp) return false;
        if (NextLevelXp != other.NextLevelXp) return false;
        if (KmWalked != other.KmWalked) return false;
        if (PokemonsEncountered != other.PokemonsEncountered) return false;
        if (UniquePokedexEntries != other.UniquePokedexEntries) return false;
        if (PokemonsCaptured != other.PokemonsCaptured) return false;
        if (Evolutions != other.Evolutions) return false;
        if (PokeStopVisits != other.PokeStopVisits) return false;
        if (PokeballsThrown != other.PokeballsThrown) return false;
        if (EggsHatched != other.EggsHatched) return false;
        if (BigMagikarpCaught != other.BigMagikarpCaught) return false;
        if (BattleAttackWon != other.BattleAttackWon) return false;
        if (BattleAttackTotal != other.BattleAttackTotal) return false;
        if (BattleDefendedWon != other.BattleDefendedWon) return false;
        if (BattleTrainingWon != other.BattleTrainingWon) return false;
        if (BattleTrainingTotal != other.BattleTrainingTotal) return false;
        if (PrestigeRaisedTotal != other.PrestigeRaisedTotal) return false;
        if (PrestigeDroppedTotal != other.PrestigeDroppedTotal) return false;
        if (PokemonDeployed != other.PokemonDeployed) return false;
        if (PokemonCaughtByType != other.PokemonCaughtByType) return false;
        if (SmallRattataCaught != other.SmallRattataCaught) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Level != 0) hash ^= Level.GetHashCode();
        if (Experience != 0L) hash ^= Experience.GetHashCode();
        if (PrevLevelXp != 0L) hash ^= PrevLevelXp.GetHashCode();
        if (NextLevelXp != 0L) hash ^= NextLevelXp.GetHashCode();
        if (KmWalked != 0F) hash ^= KmWalked.GetHashCode();
        if (PokemonsEncountered != 0) hash ^= PokemonsEncountered.GetHashCode();
        if (UniquePokedexEntries != 0) hash ^= UniquePokedexEntries.GetHashCode();
        if (PokemonsCaptured != 0) hash ^= PokemonsCaptured.GetHashCode();
        if (Evolutions != 0) hash ^= Evolutions.GetHashCode();
        if (PokeStopVisits != 0) hash ^= PokeStopVisits.GetHashCode();
        if (PokeballsThrown != 0) hash ^= PokeballsThrown.GetHashCode();
        if (EggsHatched != 0) hash ^= EggsHatched.GetHashCode();
        if (BigMagikarpCaught != 0) hash ^= BigMagikarpCaught.GetHashCode();
        if (BattleAttackWon != 0) hash ^= BattleAttackWon.GetHashCode();
        if (BattleAttackTotal != 0) hash ^= BattleAttackTotal.GetHashCode();
        if (BattleDefendedWon != 0) hash ^= BattleDefendedWon.GetHashCode();
        if (BattleTrainingWon != 0) hash ^= BattleTrainingWon.GetHashCode();
        if (BattleTrainingTotal != 0) hash ^= BattleTrainingTotal.GetHashCode();
        if (PrestigeRaisedTotal != 0) hash ^= PrestigeRaisedTotal.GetHashCode();
        if (PrestigeDroppedTotal != 0) hash ^= PrestigeDroppedTotal.GetHashCode();
        if (PokemonDeployed != 0) hash ^= PokemonDeployed.GetHashCode();
        if (PokemonCaughtByType.Length != 0) hash ^= PokemonCaughtByType.GetHashCode();
        if (SmallRattataCaught != 0) hash ^= SmallRattataCaught.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Level != 0) {
          output.WriteRawTag(8);
          output.WriteInt32(Level);
        }
        if (Experience != 0L) {
          output.WriteRawTag(16);
          output.WriteInt64(Experience);
        }
        if (PrevLevelXp != 0L) {
          output.WriteRawTag(24);
          output.WriteInt64(PrevLevelXp);
        }
        if (NextLevelXp != 0L) {
          output.WriteRawTag(32);
          output.WriteInt64(NextLevelXp);
        }
        if (KmWalked != 0F) {
          output.WriteRawTag(45);
          output.WriteFloat(KmWalked);
        }
        if (PokemonsEncountered != 0) {
          output.WriteRawTag(48);
          output.WriteInt32(PokemonsEncountered);
        }
        if (UniquePokedexEntries != 0) {
          output.WriteRawTag(56);
          output.WriteInt32(UniquePokedexEntries);
        }
        if (PokemonsCaptured != 0) {
          output.WriteRawTag(64);
          output.WriteInt32(PokemonsCaptured);
        }
        if (Evolutions != 0) {
          output.WriteRawTag(72);
          output.WriteInt32(Evolutions);
        }
        if (PokeStopVisits != 0) {
          output.WriteRawTag(80);
          output.WriteInt32(PokeStopVisits);
        }
        if (PokeballsThrown != 0) {
          output.WriteRawTag(88);
          output.WriteInt32(PokeballsThrown);
        }
        if (EggsHatched != 0) {
          output.WriteRawTag(96);
          output.WriteInt32(EggsHatched);
        }
        if (BigMagikarpCaught != 0) {
          output.WriteRawTag(104);
          output.WriteInt32(BigMagikarpCaught);
        }
        if (BattleAttackWon != 0) {
          output.WriteRawTag(112);
          output.WriteInt32(BattleAttackWon);
        }
        if (BattleAttackTotal != 0) {
          output.WriteRawTag(120);
          output.WriteInt32(BattleAttackTotal);
        }
        if (BattleDefendedWon != 0) {
          output.WriteRawTag(128, 1);
          output.WriteInt32(BattleDefendedWon);
        }
        if (BattleTrainingWon != 0) {
          output.WriteRawTag(136, 1);
          output.WriteInt32(BattleTrainingWon);
        }
        if (BattleTrainingTotal != 0) {
          output.WriteRawTag(144, 1);
          output.WriteInt32(BattleTrainingTotal);
        }
        if (PrestigeRaisedTotal != 0) {
          output.WriteRawTag(152, 1);
          output.WriteInt32(PrestigeRaisedTotal);
        }
        if (PrestigeDroppedTotal != 0) {
          output.WriteRawTag(160, 1);
          output.WriteInt32(PrestigeDroppedTotal);
        }
        if (PokemonDeployed != 0) {
          output.WriteRawTag(168, 1);
          output.WriteInt32(PokemonDeployed);
        }
        if (PokemonCaughtByType.Length != 0) {
          output.WriteRawTag(178, 1);
          output.WriteBytes(PokemonCaughtByType);
        }
        if (SmallRattataCaught != 0) {
          output.WriteRawTag(184, 1);
          output.WriteInt32(SmallRattataCaught);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Level != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
        }
        if (Experience != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(Experience);
        }
        if (PrevLevelXp != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(PrevLevelXp);
        }
        if (NextLevelXp != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextLevelXp);
        }
        if (KmWalked != 0F) {
          size += 1 + 4;
        }
        if (PokemonsEncountered != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsEncountered);
        }
        if (UniquePokedexEntries != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(UniquePokedexEntries);
        }
        if (PokemonsCaptured != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokemonsCaptured);
        }
        if (Evolutions != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Evolutions);
        }
        if (PokeStopVisits != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStopVisits);
        }
        if (PokeballsThrown != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeballsThrown);
        }
        if (EggsHatched != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggsHatched);
        }
        if (BigMagikarpCaught != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(BigMagikarpCaught);
        }
        if (BattleAttackWon != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackWon);
        }
        if (BattleAttackTotal != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleAttackTotal);
        }
        if (BattleDefendedWon != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleDefendedWon);
        }
        if (BattleTrainingWon != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingWon);
        }
        if (BattleTrainingTotal != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattleTrainingTotal);
        }
        if (PrestigeRaisedTotal != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeRaisedTotal);
        }
        if (PrestigeDroppedTotal != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeDroppedTotal);
        }
        if (PokemonDeployed != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(PokemonDeployed);
        }
        if (PokemonCaughtByType.Length != 0) {
          size += 2 + pb::CodedOutputStream.ComputeBytesSize(PokemonCaughtByType);
        }
        if (SmallRattataCaught != 0) {
          size += 2 + pb::CodedOutputStream.ComputeInt32Size(SmallRattataCaught);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PlayerStats other) {
        if (other == null) {
          return;
        }
        if (other.Level != 0) {
          Level = other.Level;
        }
        if (other.Experience != 0L) {
          Experience = other.Experience;
        }
        if (other.PrevLevelXp != 0L) {
          PrevLevelXp = other.PrevLevelXp;
        }
        if (other.NextLevelXp != 0L) {
          NextLevelXp = other.NextLevelXp;
        }
        if (other.KmWalked != 0F) {
          KmWalked = other.KmWalked;
        }
        if (other.PokemonsEncountered != 0) {
          PokemonsEncountered = other.PokemonsEncountered;
        }
        if (other.UniquePokedexEntries != 0) {
          UniquePokedexEntries = other.UniquePokedexEntries;
        }
        if (other.PokemonsCaptured != 0) {
          PokemonsCaptured = other.PokemonsCaptured;
        }
        if (other.Evolutions != 0) {
          Evolutions = other.Evolutions;
        }
        if (other.PokeStopVisits != 0) {
          PokeStopVisits = other.PokeStopVisits;
        }
        if (other.PokeballsThrown != 0) {
          PokeballsThrown = other.PokeballsThrown;
        }
        if (other.EggsHatched != 0) {
          EggsHatched = other.EggsHatched;
        }
        if (other.BigMagikarpCaught != 0) {
          BigMagikarpCaught = other.BigMagikarpCaught;
        }
        if (other.BattleAttackWon != 0) {
          BattleAttackWon = other.BattleAttackWon;
        }
        if (other.BattleAttackTotal != 0) {
          BattleAttackTotal = other.BattleAttackTotal;
        }
        if (other.BattleDefendedWon != 0) {
          BattleDefendedWon = other.BattleDefendedWon;
        }
        if (other.BattleTrainingWon != 0) {
          BattleTrainingWon = other.BattleTrainingWon;
        }
        if (other.BattleTrainingTotal != 0) {
          BattleTrainingTotal = other.BattleTrainingTotal;
        }
        if (other.PrestigeRaisedTotal != 0) {
          PrestigeRaisedTotal = other.PrestigeRaisedTotal;
        }
        if (other.PrestigeDroppedTotal != 0) {
          PrestigeDroppedTotal = other.PrestigeDroppedTotal;
        }
        if (other.PokemonDeployed != 0) {
          PokemonDeployed = other.PokemonDeployed;
        }
        if (other.PokemonCaughtByType.Length != 0) {
          PokemonCaughtByType = other.PokemonCaughtByType;
        }
        if (other.SmallRattataCaught != 0) {
          SmallRattataCaught = other.SmallRattataCaught;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              Level = input.ReadInt32();
              break;
            }
            case 16: {
              Experience = input.ReadInt64();
              break;
            }
            case 24: {
              PrevLevelXp = input.ReadInt64();
              break;
            }
            case 32: {
              NextLevelXp = input.ReadInt64();
              break;
            }
            case 45: {
              KmWalked = input.ReadFloat();
              break;
            }
            case 48: {
              PokemonsEncountered = input.ReadInt32();
              break;
            }
            case 56: {
              UniquePokedexEntries = input.ReadInt32();
              break;
            }
            case 64: {
              PokemonsCaptured = input.ReadInt32();
              break;
            }
            case 72: {
              Evolutions = input.ReadInt32();
              break;
            }
            case 80: {
              PokeStopVisits = input.ReadInt32();
              break;
            }
            case 88: {
              PokeballsThrown = input.ReadInt32();
              break;
            }
            case 96: {
              EggsHatched = input.ReadInt32();
              break;
            }
            case 104: {
              BigMagikarpCaught = input.ReadInt32();
              break;
            }
            case 112: {
              BattleAttackWon = input.ReadInt32();
              break;
            }
            case 120: {
              BattleAttackTotal = input.ReadInt32();
              break;
            }
            case 128: {
              BattleDefendedWon = input.ReadInt32();
              break;
            }
            case 136: {
              BattleTrainingWon = input.ReadInt32();
              break;
            }
            case 144: {
              BattleTrainingTotal = input.ReadInt32();
              break;
            }
            case 152: {
              PrestigeRaisedTotal = input.ReadInt32();
              break;
            }
            case 160: {
              PrestigeDroppedTotal = input.ReadInt32();
              break;
            }
            case 168: {
              PokemonDeployed = input.ReadInt32();
              break;
            }
            case 178: {
              PokemonCaughtByType = input.ReadBytes();
              break;
            }
            case 184: {
              SmallRattataCaught = input.ReadInt32();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class DailyBonus : pb::IMessage<DailyBonus> {
      private static readonly pb::MessageParser<DailyBonus> _parser = new pb::MessageParser<DailyBonus>(() => new DailyBonus());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<DailyBonus> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[2]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public DailyBonus() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public DailyBonus(DailyBonus other) : this() {
        nextCollectedTimestampMs_ = other.nextCollectedTimestampMs_;
        nextDefenderBonusCollectTimestampMs_ = other.nextDefenderBonusCollectTimestampMs_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public DailyBonus Clone() {
        return new DailyBonus(this);
      }
  
      /// <summary>Field number for the "next_collected_timestamp_ms" field.</summary>
      public const int NextCollectedTimestampMsFieldNumber = 1;
      private long nextCollectedTimestampMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long NextCollectedTimestampMs {
        get { return nextCollectedTimestampMs_; }
        set {
          nextCollectedTimestampMs_ = value;
        }
      }
  
      /// <summary>Field number for the "next_defender_bonus_collect_timestamp_ms" field.</summary>
      public const int NextDefenderBonusCollectTimestampMsFieldNumber = 2;
      private long nextDefenderBonusCollectTimestampMs_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public long NextDefenderBonusCollectTimestampMs {
        get { return nextDefenderBonusCollectTimestampMs_; }
        set {
          nextDefenderBonusCollectTimestampMs_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as DailyBonus);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(DailyBonus other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (NextCollectedTimestampMs != other.NextCollectedTimestampMs) return false;
        if (NextDefenderBonusCollectTimestampMs != other.NextDefenderBonusCollectTimestampMs) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (NextCollectedTimestampMs != 0L) hash ^= NextCollectedTimestampMs.GetHashCode();
        if (NextDefenderBonusCollectTimestampMs != 0L) hash ^= NextDefenderBonusCollectTimestampMs.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (NextCollectedTimestampMs != 0L) {
          output.WriteRawTag(8);
          output.WriteInt64(NextCollectedTimestampMs);
        }
        if (NextDefenderBonusCollectTimestampMs != 0L) {
          output.WriteRawTag(16);
          output.WriteInt64(NextDefenderBonusCollectTimestampMs);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (NextCollectedTimestampMs != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextCollectedTimestampMs);
        }
        if (NextDefenderBonusCollectTimestampMs != 0L) {
          size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextDefenderBonusCollectTimestampMs);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(DailyBonus other) {
        if (other == null) {
          return;
        }
        if (other.NextCollectedTimestampMs != 0L) {
          NextCollectedTimestampMs = other.NextCollectedTimestampMs;
        }
        if (other.NextDefenderBonusCollectTimestampMs != 0L) {
          NextDefenderBonusCollectTimestampMs = other.NextDefenderBonusCollectTimestampMs;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              NextCollectedTimestampMs = input.ReadInt64();
              break;
            }
            case 16: {
              NextDefenderBonusCollectTimestampMs = input.ReadInt64();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PlayerCamera : pb::IMessage<PlayerCamera> {
      private static readonly pb::MessageParser<PlayerCamera> _parser = new pb::MessageParser<PlayerCamera>(() => new PlayerCamera());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PlayerCamera> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[3]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerCamera() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerCamera(PlayerCamera other) : this() {
        isDefaultCamera_ = other.isDefaultCamera_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerCamera Clone() {
        return new PlayerCamera(this);
      }
  
      /// <summary>Field number for the "is_default_camera" field.</summary>
      public const int IsDefaultCameraFieldNumber = 1;
      private bool isDefaultCamera_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool IsDefaultCamera {
        get { return isDefaultCamera_; }
        set {
          isDefaultCamera_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PlayerCamera);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PlayerCamera other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (IsDefaultCamera != other.IsDefaultCamera) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (IsDefaultCamera != false) hash ^= IsDefaultCamera.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (IsDefaultCamera != false) {
          output.WriteRawTag(8);
          output.WriteBool(IsDefaultCamera);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (IsDefaultCamera != false) {
          size += 1 + 1;
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PlayerCamera other) {
        if (other == null) {
          return;
        }
        if (other.IsDefaultCamera != false) {
          IsDefaultCamera = other.IsDefaultCamera;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              IsDefaultCamera = input.ReadBool();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class ContactSettings : pb::IMessage<ContactSettings> {
      private static readonly pb::MessageParser<ContactSettings> _parser = new pb::MessageParser<ContactSettings>(() => new ContactSettings());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<ContactSettings> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[4]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ContactSettings() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ContactSettings(ContactSettings other) : this() {
        sendMarketingEmails_ = other.sendMarketingEmails_;
        sendPushNotifications_ = other.sendPushNotifications_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public ContactSettings Clone() {
        return new ContactSettings(this);
      }
  
      /// <summary>Field number for the "send_marketing_emails" field.</summary>
      public const int SendMarketingEmailsFieldNumber = 1;
      private bool sendMarketingEmails_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool SendMarketingEmails {
        get { return sendMarketingEmails_; }
        set {
          sendMarketingEmails_ = value;
        }
      }
  
      /// <summary>Field number for the "send_push_notifications" field.</summary>
      public const int SendPushNotificationsFieldNumber = 2;
      private bool sendPushNotifications_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool SendPushNotifications {
        get { return sendPushNotifications_; }
        set {
          sendPushNotifications_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as ContactSettings);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(ContactSettings other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (SendMarketingEmails != other.SendMarketingEmails) return false;
        if (SendPushNotifications != other.SendPushNotifications) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (SendMarketingEmails != false) hash ^= SendMarketingEmails.GetHashCode();
        if (SendPushNotifications != false) hash ^= SendPushNotifications.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (SendMarketingEmails != false) {
          output.WriteRawTag(8);
          output.WriteBool(SendMarketingEmails);
        }
        if (SendPushNotifications != false) {
          output.WriteRawTag(16);
          output.WriteBool(SendPushNotifications);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (SendMarketingEmails != false) {
          size += 1 + 1;
        }
        if (SendPushNotifications != false) {
          size += 1 + 1;
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(ContactSettings other) {
        if (other == null) {
          return;
        }
        if (other.SendMarketingEmails != false) {
          SendMarketingEmails = other.SendMarketingEmails;
        }
        if (other.SendPushNotifications != false) {
          SendPushNotifications = other.SendPushNotifications;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 8: {
              SendMarketingEmails = input.ReadBool();
              break;
            }
            case 16: {
              SendPushNotifications = input.ReadBool();
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PlayerPublicProfile : pb::IMessage<PlayerPublicProfile> {
      private static readonly pb::MessageParser<PlayerPublicProfile> _parser = new pb::MessageParser<PlayerPublicProfile>(() => new PlayerPublicProfile());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PlayerPublicProfile> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[5]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerPublicProfile() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerPublicProfile(PlayerPublicProfile other) : this() {
        name_ = other.name_;
        level_ = other.level_;
        Avatar = other.avatar_ != null ? other.Avatar.Clone() : null;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerPublicProfile Clone() {
        return new PlayerPublicProfile(this);
      }
  
      /// <summary>Field number for the "name" field.</summary>
      public const int NameFieldNumber = 1;
      private string name_ = "";
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public string Name {
        get { return name_; }
        set {
          name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        }
      }
  
      /// <summary>Field number for the "level" field.</summary>
      public const int LevelFieldNumber = 2;
      private int level_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Level {
        get { return level_; }
        set {
          level_ = value;
        }
      }
  
      /// <summary>Field number for the "avatar" field.</summary>
      public const int AvatarFieldNumber = 3;
      private global::POGOProtos.Data.Player.PlayerAvatar avatar_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Data.Player.PlayerAvatar Avatar {
        get { return avatar_; }
        set {
          avatar_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PlayerPublicProfile);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PlayerPublicProfile other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Name != other.Name) return false;
        if (Level != other.Level) return false;
        if (!object.Equals(Avatar, other.Avatar)) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Name.Length != 0) hash ^= Name.GetHashCode();
        if (Level != 0) hash ^= Level.GetHashCode();
        if (avatar_ != null) hash ^= Avatar.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Name.Length != 0) {
          output.WriteRawTag(10);
          output.WriteString(Name);
        }
        if (Level != 0) {
          output.WriteRawTag(16);
          output.WriteInt32(Level);
        }
        if (avatar_ != null) {
          output.WriteRawTag(26);
          output.WriteMessage(Avatar);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Name.Length != 0) {
          size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
        }
        if (Level != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level);
        }
        if (avatar_ != null) {
          size += 1 + pb::CodedOutputStream.ComputeMessageSize(Avatar);
        }
        return size;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(PlayerPublicProfile other) {
        if (other == null) {
          return;
        }
        if (other.Name.Length != 0) {
          Name = other.Name;
        }
        if (other.Level != 0) {
          Level = other.Level;
        }
        if (other.avatar_ != null) {
          if (avatar_ == null) {
            avatar_ = new global::POGOProtos.Data.Player.PlayerAvatar();
          }
          Avatar.MergeFrom(other.Avatar);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void MergeFrom(pb::CodedInputStream input) {
        uint tag;
        while ((tag = input.ReadTag()) != 0) {
          switch(tag) {
            default:
              input.SkipLastField();
              break;
            case 10: {
              Name = input.ReadString();
              break;
            }
            case 16: {
              Level = input.ReadInt32();
              break;
            }
            case 26: {
              if (avatar_ == null) {
                avatar_ = new global::POGOProtos.Data.Player.PlayerAvatar();
              }
              input.ReadMessage(avatar_);
              break;
            }
          }
        }
      }
  
    }
  
    public sealed partial class PlayerAvatar : pb::IMessage<PlayerAvatar> {
      private static readonly pb::MessageParser<PlayerAvatar> _parser = new pb::MessageParser<PlayerAvatar>(() => new PlayerAvatar());
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pb::MessageParser<PlayerAvatar> Parser { get { return _parser; } }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public static pbr::MessageDescriptor Descriptor {
        get { return global::POGOProtos.Data.Player.POGOProtosDataPlayerReflection.Descriptor.MessageTypes[6]; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      pbr::MessageDescriptor pb::IMessage.Descriptor {
        get { return Descriptor; }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerAvatar() {
        OnConstruction();
      }
  
      partial void OnConstruction();
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerAvatar(PlayerAvatar other) : this() {
        skin_ = other.skin_;
        hair_ = other.hair_;
        shirt_ = other.shirt_;
        pants_ = other.pants_;
        hat_ = other.hat_;
        shoes_ = other.shoes_;
        gender_ = other.gender_;
        eyes_ = other.eyes_;
        backpack_ = other.backpack_;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public PlayerAvatar Clone() {
        return new PlayerAvatar(this);
      }
  
      /// <summary>Field number for the "skin" field.</summary>
      public const int SkinFieldNumber = 2;
      private int skin_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Skin {
        get { return skin_; }
        set {
          skin_ = value;
        }
      }
  
      /// <summary>Field number for the "hair" field.</summary>
      public const int HairFieldNumber = 3;
      private int hair_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Hair {
        get { return hair_; }
        set {
          hair_ = value;
        }
      }
  
      /// <summary>Field number for the "shirt" field.</summary>
      public const int ShirtFieldNumber = 4;
      private int shirt_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Shirt {
        get { return shirt_; }
        set {
          shirt_ = value;
        }
      }
  
      /// <summary>Field number for the "pants" field.</summary>
      public const int PantsFieldNumber = 5;
      private int pants_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Pants {
        get { return pants_; }
        set {
          pants_ = value;
        }
      }
  
      /// <summary>Field number for the "hat" field.</summary>
      public const int HatFieldNumber = 6;
      private int hat_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Hat {
        get { return hat_; }
        set {
          hat_ = value;
        }
      }
  
      /// <summary>Field number for the "shoes" field.</summary>
      public const int ShoesFieldNumber = 7;
      private int shoes_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Shoes {
        get { return shoes_; }
        set {
          shoes_ = value;
        }
      }
  
      /// <summary>Field number for the "gender" field.</summary>
      public const int GenderFieldNumber = 8;
      private global::POGOProtos.Enums.Gender gender_ = 0;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public global::POGOProtos.Enums.Gender Gender {
        get { return gender_; }
        set {
          gender_ = value;
        }
      }
  
      /// <summary>Field number for the "eyes" field.</summary>
      public const int EyesFieldNumber = 9;
      private int eyes_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Eyes {
        get { return eyes_; }
        set {
          eyes_ = value;
        }
      }
  
      /// <summary>Field number for the "backpack" field.</summary>
      public const int BackpackFieldNumber = 10;
      private int backpack_;
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int Backpack {
        get { return backpack_; }
        set {
          backpack_ = value;
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override bool Equals(object other) {
        return Equals(other as PlayerAvatar);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public bool Equals(PlayerAvatar other) {
        if (ReferenceEquals(other, null)) {
          return false;
        }
        if (ReferenceEquals(other, this)) {
          return true;
        }
        if (Skin != other.Skin) return false;
        if (Hair != other.Hair) return false;
        if (Shirt != other.Shirt) return false;
        if (Pants != other.Pants) return false;
        if (Hat != other.Hat) return false;
        if (Shoes != other.Shoes) return false;
        if (Gender != other.Gender) return false;
        if (Eyes != other.Eyes) return false;
        if (Backpack != other.Backpack) return false;
        return true;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override int GetHashCode() {
        int hash = 1;
        if (Skin != 0) hash ^= Skin.GetHashCode();
        if (Hair != 0) hash ^= Hair.GetHashCode();
        if (Shirt != 0) hash ^= Shirt.GetHashCode();
        if (Pants != 0) hash ^= Pants.GetHashCode();
        if (Hat != 0) hash ^= Hat.GetHashCode();
        if (Shoes != 0) hash ^= Shoes.GetHashCode();
        if (Gender != 0) hash ^= Gender.GetHashCode();
        if (Eyes != 0) hash ^= Eyes.GetHashCode();
        if (Backpack != 0) hash ^= Backpack.GetHashCode();
        return hash;
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public override string ToString() {
        return pb::JsonFormatter.ToDiagnosticString(this);
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public void WriteTo(pb::CodedOutputStream output) {
        if (Skin != 0) {
          output.WriteRawTag(16);
          output.WriteInt32(Skin);
        }
        if (Hair != 0) {
          output.WriteRawTag(24);
          output.WriteInt32(Hair);
        }
        if (Shirt != 0) {
          output.WriteRawTag(32);
          output.WriteInt32(Shirt);
        }
        if (Pants != 0) {
          output.WriteRawTag(40);
          output.WriteInt32(Pants);
        }
        if (Hat != 0) {
          output.WriteRawTag(48);
          output.WriteInt32(Hat);
        }
        if (Shoes != 0) {
          output.WriteRawTag(56);
          output.WriteInt32(Shoes);
        }
        if (Gender != 0) {
          output.WriteRawTag(64);
          output.WriteEnum((int) Gender);
        }
        if (Eyes != 0) {
          output.WriteRawTag(72);
          output.WriteInt32(Eyes);
        }
        if (Backpack != 0) {
          output.WriteRawTag(80);
          output.WriteInt32(Backpack);
        }
      }
  
      [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
      public int CalculateSize() {
        int size = 0;
        if (Skin != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Skin);
        }
        if (Hair != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hair);
        }
        if (Shirt != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Shirt);
        }
        if (Pants != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Pants);
        }
        if (Hat != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hat);
        }
        if (Shoes != 0) {
          size += 1 + pb::CodedOutputStream.ComputeInt32Size(Shoes);
        }
  
gt:       if (Gender != 0) {