Add GetInventory call

FeroxRev [2016-07-19 05:39:22]
Add GetInventory call
Filename
PokemonGo/RocketAPI/Client.cs
PokemonGo/RocketAPI/Console/Program.cs
PokemonGo/RocketAPI/Enums/MiscEnums.cs
PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
PokemonGo/RocketAPI/Proto/InventoryResponse.proto
README.md
diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
index db3837a..77df89a 100644
--- a/PokemonGo/RocketAPI/Client.cs
+++ b/PokemonGo/RocketAPI/Client.cs
@@ -44,11 +44,13 @@ namespace PokemonGo.RocketAPI
                 AllowAutoRedirect = false
             };
             _httpClient = new HttpClient(new RetryHandler(handler));
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Niantic App");//"Dalvik/2.1.0 (Linux; U; Android 5.1.1; SM-G900F Build/LMY48G)");
+            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Niantic App");
+                //"Dalvik/2.1.0 (Linux; U; Android 5.1.1; SM-G900F Build/LMY48G)");
             _httpClient.DefaultRequestHeaders.ExpectContinue = false;
             _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Connection", "keep-alive");
             _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "*/*");
-            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
+            _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type",
+                "application/x-www-form-urlencoded");
         }

         private void SetCoordinates(double lat, double lng)
@@ -85,7 +87,8 @@ namespace PokemonGo.RocketAPI
                             new KeyValuePair<string, string>("client_sig", Settings.ClientSig),
                             new KeyValuePair<string, string>("caller_sig", Settings.ClientSig),
                             new KeyValuePair<string, string>("Email", email),
-                            new KeyValuePair<string, string>("service", "audience:server:client_id:848232511240-7so421jotr2609rmqakceuu1luuq0ptb.apps.googleusercontent.com"),
+                            new KeyValuePair<string, string>("service",
+                                "audience:server:client_id:848232511240-7so421jotr2609rmqakceuu1luuq0ptb.apps.googleusercontent.com"),
                             new KeyValuePair<string, string>("app", "com.nianticlabs.pokemongo"),
                             new KeyValuePair<string, string>("check_email", "1"),
                             new KeyValuePair<string, string>("token_request_options", ""),
@@ -123,20 +126,22 @@ namespace PokemonGo.RocketAPI

             //Get tokenvar
             var tokenResp = await _httpClient.PostAsync(Resources.PtcLoginOauth,
-            new FormUrlEncodedContent(
-                new[]
-                {
+                new FormUrlEncodedContent(
+                    new[]
+                    {
                         new KeyValuePair<string, string>("client_id", "mobile-app_pokemon-go"),
                         new KeyValuePair<string, string>("redirect_uri", "https://www.nianticlabs.com/pokemongo/error"),
-                        new KeyValuePair<string, string>("client_secret", "w8ScCUXJQc6kXKw8FiOhd8Fixzht18Dq3PEVkUCP5ZPxtgyWsbTvWHFLm2wNY0JR"),
+                        new KeyValuePair<string, string>("client_secret",
+                            "w8ScCUXJQc6kXKw8FiOhd8Fixzht18Dq3PEVkUCP5ZPxtgyWsbTvWHFLm2wNY0JR"),
                         new KeyValuePair<string, string>("grant_type", "grant_type"),
                         new KeyValuePair<string, string>("code", ticketId),
-                }));
+                    }));

             var tokenData = await tokenResp.Content.ReadAsStringAsync();
             _accessToken = HttpUtility.ParseQueryString(tokenData)["access_token"];
             _authType = AuthType.Ptc;
         }
+
         public async Task<PlayerUpdateResponse> UpdatePlayerLocation(double lat, double lng)
         {
             this.SetCoordinates(lat, lng);
@@ -146,13 +151,22 @@ namespace PokemonGo.RocketAPI
                 Lng = Utils.FloatAsUlong(_currentLng)
             };

-            var updateRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10, new Request.Types.Requests() { Type = (int)RequestType.PLAYER_UPDATE, Message = customRequest.ToByteString()});
-            var updateResponse = await _httpClient.PostProto<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
+            var updateRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.PLAYER_UPDATE,
+                    Message = customRequest.ToByteString()
+                });
+            var updateResponse =
+                await _httpClient.PostProto<Request, PlayerUpdateResponse>($"https://{_apiUrl}/rpc", updateRequest);
             return updateResponse;
         }
+
         public async Task<ProfileResponse> GetServer()
         {
-            var serverRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10, RequestType.GET_PLAYER, RequestType.GET_HATCHED_OBJECTS, RequestType.GET_INVENTORY, RequestType.CHECK_AWARDED_BADGES, RequestType.DOWNLOAD_SETTINGS);
+            var serverRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10,
+                RequestType.GET_PLAYER, RequestType.GET_HATCHED_OBJECTS, RequestType.GET_INVENTORY,
+                RequestType.CHECK_AWARDED_BADGES, RequestType.DOWNLOAD_SETTINGS);
             var serverResponse = await _httpClient.PostProto<Request, ProfileResponse>(Resources.RpcUrl, serverRequest);
             _apiUrl = serverResponse.ApiUrl;
             return serverResponse;
@@ -160,8 +174,10 @@ namespace PokemonGo.RocketAPI

         public async Task<ProfileResponse> GetProfile()
         {
-            var profileRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10, new Request.Types.Requests() { Type = (int)RequestType.GET_PLAYER });
-            var profileResponse = await _httpClient.PostProto<Request, ProfileResponse>($"https://{_apiUrl}/rpc", profileRequest);
+            var profileRequest = RequestBuilder.GetInitialRequest(_accessToken, _authType, _currentLat, _currentLng, 10,
+                new Request.Types.Requests() {Type = (int) RequestType.GET_PLAYER});
+            var profileResponse =
+                await _httpClient.PostProto<Request, ProfileResponse>($"https://{_apiUrl}/rpc", profileRequest);
             _unknownAuth = new Request.Types.UnknownAuth()
             {
                 Unknown71 = profileResponse.Auth.Unknown71,
@@ -173,9 +189,11 @@ namespace PokemonGo.RocketAPI

         public async Task<SettingsResponse> GetSettings()
         {
-            var settingsRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10, RequestType.DOWNLOAD_SETTINGS);
+            var settingsRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
+                RequestType.DOWNLOAD_SETTINGS);
             return await _httpClient.PostProto<Request, SettingsResponse>($"https://{_apiUrl}/rpc", settingsRequest);
         }
+
         public async Task<MapObjectsResponse> GetMapObjects()
         {
             var customRequest = new Request.Types.MapObjectsRequest()
@@ -189,12 +207,28 @@ namespace PokemonGo.RocketAPI
                 Unknown14 = ByteString.CopyFromUtf8("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
             };

-            var mapRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
-                new Request.Types.Requests() { Type = (int)RequestType.GET_MAP_OBJECTS, Message = customRequest.ToByteString() },
-                new Request.Types.Requests() { Type = (int)RequestType.GET_HATCHED_OBJECTS },
-                new Request.Types.Requests() { Type = (int)RequestType.GET_INVENTORY, Message = new Request.Types.Time() { Time_ = DateTime.UtcNow.ToUnixTime() }.ToByteString() },
-                new Request.Types.Requests() { Type = (int)RequestType.CHECK_AWARDED_BADGES },
-                new Request.Types.Requests() { Type = (int)RequestType.DOWNLOAD_SETTINGS, Message = new Request.Types.SettingsGuid() { Guid = ByteString.CopyFromUtf8("4a2e9bc330dae60e7b74fc85b98868ab4700802e")}.ToByteString() });
+            var mapRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.GET_MAP_OBJECTS,
+                    Message = customRequest.ToByteString()
+                },
+                new Request.Types.Requests() {Type = (int) RequestType.GET_HATCHED_OBJECTS},
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.GET_INVENTORY,
+                    Message = new Request.Types.Time() {Time_ = DateTime.UtcNow.ToUnixTime()}.ToByteString()
+                },
+                new Request.Types.Requests() {Type = (int) RequestType.CHECK_AWARDED_BADGES},
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.DOWNLOAD_SETTINGS,
+                    Message =
+                        new Request.Types.SettingsGuid()
+                        {
+                            Guid = ByteString.CopyFromUtf8("4a2e9bc330dae60e7b74fc85b98868ab4700802e")
+                        }.ToByteString()
+                });

             return await _httpClient.PostProto<Request, MapObjectsResponse>($"https://{_apiUrl}/rpc", mapRequest);
         }
@@ -208,7 +242,12 @@ namespace PokemonGo.RocketAPI
                 Longitude = Utils.FloatAsUlong(fortLng),
             };

-            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10, new Request.Types.Requests() { Type = (int)RequestType.FORT_DETAILS, Message = customRequest.ToByteString() });
+            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 10,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.FORT_DETAILS,
+                    Message = customRequest.ToByteString()
+                });
             return await _httpClient.PostProto<Request, FortDetailResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
         }

@@ -219,6 +258,7 @@ namespace PokemonGo.RocketAPI
          IN_COOLDOWN_PERIOD = 3;
          INVENTORY_FULL = 4;
         }*/
+
         public async Task<FortSearchResponse> SearchFort(string fortId, double fortLat, double fortLng)
         {
             var customRequest = new Request.Types.FortSearchRequest()
@@ -230,7 +270,12 @@ namespace PokemonGo.RocketAPI
                 PlayerLngDegrees = Utils.FloatAsUlong(_currentLng)
             };

-            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests() { Type = (int)RequestType.FORT_SEARCH, Message = customRequest.ToByteString() });
+            var fortDetailRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.FORT_SEARCH,
+                    Message = customRequest.ToByteString()
+                });
             return await _httpClient.PostProto<Request, FortSearchResponse>($"https://{_apiUrl}/rpc", fortDetailRequest);
         }

@@ -244,11 +289,17 @@ namespace PokemonGo.RocketAPI
                 PlayerLngDegrees = Utils.FloatAsUlong(_currentLng)
             };

-            var encounterResponse = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests() { Type = (int)RequestType.ENCOUNTER, Message = customRequest.ToByteString() });
+            var encounterResponse = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.ENCOUNTER,
+                    Message = customRequest.ToByteString()
+                });
             return await _httpClient.PostProto<Request, EncounterResponse>($"https://{_apiUrl}/rpc", encounterResponse);
         }

-        public async Task<CatchPokemonResponse> CatchPokemon(ulong encounterId, string spawnPointGuid, double pokemonLat, double pokemonLng)
+        public async Task<CatchPokemonResponse> CatchPokemon(ulong encounterId, string spawnPointGuid, double pokemonLat,
+            double pokemonLng)
         {
             var customRequest = new Request.Types.CatchPokemonRequest()
             {
@@ -260,11 +311,22 @@ namespace PokemonGo.RocketAPI
                 SpinModifier = Utils.FloatAsUlong(0.00655560661107)
             };

-            var catchPokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests() { Type = (int)RequestType.CATCH_POKEMON, Message = customRequest.ToByteString() });
-            return await _httpClient.PostProto<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc", catchPokemonRequest);
+            var catchPokemonRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30,
+                new Request.Types.Requests()
+                {
+                    Type = (int) RequestType.CATCH_POKEMON,
+                    Message = customRequest.ToByteString()
+                });
+            return
+                await
+                    _httpClient.PostProto<Request, CatchPokemonResponse>($"https://{_apiUrl}/rpc", catchPokemonRequest);
         }


-
+        public async Task<InventoryResponse> GetInventory()
+        {
+            var inventoryRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, RequestType.GET_INVENTORY);
+            return await _httpClient.PostProto<Request, InventoryResponse>($"https://{_apiUrl}/rpc", inventoryRequest);
+        }
     }
 }
diff --git a/PokemonGo/RocketAPI/Console/Program.cs b/PokemonGo/RocketAPI/Console/Program.cs
index c03fac0..63108b8 100644
--- a/PokemonGo/RocketAPI/Console/Program.cs
+++ b/PokemonGo/RocketAPI/Console/Program.cs
@@ -30,7 +30,7 @@ namespace PokemonGo.RocketAPI.Console
             var profile = await client.GetProfile();
             var settings = await client.GetSettings();
             var mapObjects = await client.GetMapObjects();
-
+            var inventory = await client.GetInventory();
             await ExecuteFarmingPokestops(client);
             await ExecuteCatchAllNearbyPokemons(client);
         }
diff --git a/PokemonGo/RocketAPI/Enums/MiscEnums.cs b/PokemonGo/RocketAPI/Enums/MiscEnums.cs
index 8cb2890..52ab05e 100644
--- a/PokemonGo/RocketAPI/Enums/MiscEnums.cs
+++ b/PokemonGo/RocketAPI/Enums/MiscEnums.cs
@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

-namespace PokemonGo.RocketAPI.Enums
+namespace PokemonGo.RocketAPI.GeneratedCode
 {
     public class MiscEnums
     {
diff --git a/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs b/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
new file mode 100644
index 0000000..9ddbfad
--- /dev/null
+++ b/PokemonGo/RocketAPI/GeneratedCode/InventoryResponse.cs
@@ -0,0 +1,5259 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: InventoryResponse.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 PokemonGo.RocketAPI.GeneratedCode {
+
+  /// <summary>Holder for reflection information generated from InventoryResponse.proto</summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public static partial class InventoryResponseReflection {
+
+    #region Descriptor
+    /// <summary>File descriptor for InventoryResponse.proto</summary>
+    public static pbr::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbr::FileDescriptor descriptor;
+
+    static InventoryResponseReflection() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          string.Concat(
+            "ChdJbnZlbnRvcnlSZXNwb25zZS5wcm90bxIhUG9rZW1vbkdvLlJvY2tldEFQ",
+            "SS5HZW5lcmF0ZWRDb2RlItNDChFJbnZlbnRvcnlSZXNwb25zZRIQCgh1bmtu",
+            "b3duMRgBIAEoBRIQCgh1bmtub3duMhgCIAEoAxIPCgdhcGlfdXJsGAMgASgJ",
+            "Ek8KCHVua25vd242GAYgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5l",
+            "cmF0ZWRDb2RlLkludmVudG9yeVJlc3BvbnNlLlVua25vd242Ek8KCHVua25v",
+            "d243GAcgASgLMj0uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2Rl",
+            "LkludmVudG9yeVJlc3BvbnNlLlVua25vd243Ek0KB3BheWxvYWQYZCADKAsy",
+            "PC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5",
+            "UmVzcG9uc2UuUGF5bG9hZBIUCgxlcnJvck1lc3NhZ2UYZSABKAkalAEKCFVu",
+            "a25vd242EhAKCHVua25vd24xGAEgASgFElgKCHVua25vd24yGAIgASgLMkYu",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJl",
+            "c3BvbnNlLlVua25vd242LlVua25vd24yGhwKCFVua25vd24yEhAKCHVua25v",
+            "d24xGAEgASgMGkMKCFVua25vd243EhEKCXVua25vd243MRgBIAEoDBIRCgl1",
+            "bmtub3duNzIYAiABKAMSEQoJdW5rbm93bjczGAMgASgMGnMKB1BheWxvYWQS",
+            "DgoGU3RhdHVzGAEgASgFElgKA0JhZxgCIAEoCzJLLlBva2Vtb25Hby5Sb2Nr",
+            "ZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRv",
+            "cnlSZXNwb25zZVByb3RvGqsCChZJbnZlbnRvcnlSZXNwb25zZVByb3RvEhEK",
+            "CXRpbWVzdGFtcBgCIAEoAxJ1CgVpdGVtcxgDIAMoCzJmLlBva2Vtb25Hby5S",
+            "b2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZl",
+            "bnRvcnlSZXNwb25zZVByb3RvLkludmVudG9yeUl0ZW1SZXNwb25zZVByb3Rv",
+            "GoYBChpJbnZlbnRvcnlJdGVtUmVzcG9uc2VQcm90bxIRCgl0aW1lc3RhbXAY",
+            "ASABKAMSVQoEaXRlbRgDIAEoCzJHLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2Vu",
+            "ZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJv",
+            "dG8anxMKEkludmVudG9yeUl0ZW1Qcm90bxJSCgdQb2tlbW9uGAEgASgLMkEu",
+            "UG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJl",
+            "c3BvbnNlLlBva2Vtb25Qcm90bxJfCgRJdGVtGAIgASgLMlEuUG9rZW1vbkdv",
+            "LlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJlc3BvbnNlLklu",
+            "dmVudG9yeUl0ZW1Qcm90by5JdGVtUHJvdG8SbwoMUG9rZWRleEVudHJ5GAMg",
+            "ASgLMlkuUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVu",
+            "dG9yeVJlc3BvbnNlLkludmVudG9yeUl0ZW1Qcm90by5Qb2tlZGV4RW50cnlQ",
+            "cm90bxJtCgtQbGF5ZXJTdGF0cxgEIAEoCzJYLlBva2Vtb25Hby5Sb2NrZXRB",
+            "UEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJ",
+            "dGVtUHJvdG8uUGxheWVyU3RhdHNQcm90bxJzCg5QbGF5ZXJDdXJyZW5jeRgF",
+            "IAEoCzJbLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZl",
+            "bnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJvdG8uUGxheWVyQ3VycmVu",
+            "Y3lQcm90bxJvCgxQbGF5ZXJDYW1lcmEYBiABKAsyWS5Qb2tlbW9uR28uUm9j",
+            "a2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5UmVzcG9uc2UuSW52ZW50",
+            "b3J5SXRlbVByb3RvLlBsYXllckNhbWVyYVByb3RvEnkKEUludmVudG9yeVVw",
+            "Z3JhZGVzGAcgASgLMl4uUG9rZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRD",
+            "b2RlLkludmVudG9yeVJlc3BvbnNlLkludmVudG9yeUl0ZW1Qcm90by5JbnZl",
+            "bnRvcnlVcGdyYWRlc1Byb3RvEm0KC0FwcGxpZWRJdGVtGAggASgLMlguUG9r",
+            "ZW1vbkdvLlJvY2tldEFQSS5HZW5lcmF0ZWRDb2RlLkludmVudG9yeVJlc3Bv",
+            "bnNlLkludmVudG9yeUl0ZW1Qcm90by5BcHBsaWVkSXRlbVByb3RvEnAKDUVn",
+            "Z0luY3ViYXRvcnMYCSABKAsyWS5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVy",
+            "YXRlZENvZGUuSW52ZW50b3J5UmVzcG9uc2UuSW52ZW50b3J5SXRlbVByb3Rv",
+            "LkVnZ0luY3ViYXRvclByb3RvEnEKDVBva2Vtb25GYW1pbHkYCiABKAsyWi5Q",
+            "b2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52ZW50b3J5UmVz",
+            "cG9uc2UuSW52ZW50b3J5SXRlbVByb3RvLlBva2Vtb25GYW1pbHlQcm90bxo4",
+            "CglJdGVtUHJvdG8SDAoESXRlbRgBIAEoBRINCgVDb3VudBgCIAEoBRIOCgZV",
+            "bnNlZW4YAyABKAgalwEKEVBva2VkZXhFbnRyeVByb3RvEhoKElBva2VkZXhF",
+            "bnRyeU51bWJlchgBIAEoBRIYChBUaW1lc0VuY291bnRlcmVkGAIgASgFEhUK",
+            "DVRpbWVzQ2FwdHVyZWQYAyABKAUSHAoURXZvbHV0aW9uU3RvbmVQaWVjZXMY",
+            "BCABKAUSFwoPRXZvbHV0aW9uU3RvbmVzGAUgASgFGtoEChBQbGF5ZXJTdGF0",
+            "c1Byb3RvEg0KBUxldmVsGAEgASgFEhIKCkV4cGVyaWVuY2UYAiABKAMSFAoM",
+            "UHJldkxldmVsRXhwGAMgASgDEhQKDE5leHRMZXZlbEV4cBgEIAEoAxIQCghL",
+            "bVdhbGtlZBgFIAEoAhIdChVOdW1Qb2tlbW9uRW5jb3VudGVyZWQYBiABKAUS",
+            "HwoXTnVtVW5pcXVlUG9rZWRleEVudHJpZXMYByABKAUSGgoSTnVtUG9rZW1v",
+            "bkNhcHR1cmVkGAggASgFEhUKDU51bUV2b2x1dGlvbnMYCSABKAUSFgoOUG9r",
+            "ZVN0b3BWaXNpdHMYCiABKAUSHgoWTnVtYmVyT2ZQb2tlYmFsbFRocm93bhgL",
+            "IAEoBRIWCg5OdW1FZ2dzSGF0Y2hlZBgMIAEoBRIZChFCaWdNYWdpa2FycENh",
+            "dWdodBgNIAEoBRIaChJOdW1CYXR0bGVBdHRhY2tXb24YDiABKAUSHAoUTnVt",
+            "QmF0dGxlQXR0YWNrVG90YWwYDyABKAUSHAoUTnVtQmF0dGxlRGVmZW5kZWRX",
+            "b24YECABKAUSHAoUTnVtQmF0dGxlVHJhaW5pbmdXb24YESABKAUSHgoWTnVt",
+            "QmF0dGxlVHJhaW5pbmdUb3RhbBgSIAEoBRIbChNQcmVzdGlnZVJhaXNlZFRv",
+            "dGFsGBMgASgFEhwKFFByZXN0aWdlRHJvcHBlZFRvdGFsGBQgASgFEhoKEk51",
+            "bVBva2Vtb25EZXBsb3llZBgVIAEoBRIaChJTbWFsbFJhdHRhdGFDYXVnaHQY",
+            "FyABKAUaWwoQQXBwbGllZEl0ZW1Qcm90bxIMCgRJdGVtGAEgASgFEhAKCEl0",
+            "ZW1UeXBlGAIgASgFEhQKDEV4cGlyYXRpb25NcxgDIAEoAxIRCglBcHBsaWVk",
+            "TXMYBCABKAMaKgoRUGxheWVyQ2FtZXJhUHJvdG8SFQoNRGVmYXVsdENhbWVy",
+            "YRgBIAEoCBojChNQbGF5ZXJDdXJyZW5jeVByb3RvEgwKBEdlbXMYASABKAUa",
+            "MgoWSW52ZW50b3J5VXBncmFkZXNQcm90bxIYChBJbnZlbnRvcnlVcGdyYWRl",
+            "GAEgASgFGvQBChFFZ2dJbmN1YmF0b3JQcm90bxIOCgZJdGVtSWQYASABKAkS",
+            "XwoESXRlbRgCIAEoCzJRLlBva2Vtb25Hby5Sb2NrZXRBUEkuR2VuZXJhdGVk",
+            "Q29kZS5JbnZlbnRvcnlSZXNwb25zZS5JbnZlbnRvcnlJdGVtUHJvdG8uSXRl",
+            "bVByb3RvEhUKDUluY3ViYXRvclR5cGUYAyABKAUSFQoNVXNlc1JlbWFpbmlu",
+            "ZxgEIAEoBRIRCglQb2tlbW9uSWQYBSABKAMSFQoNU3RhcnRLbVdhbGtlZBgG",
+            "IAEoARIWCg5UYXJnZXRLbVdhbGtlZBgHIAEoARo1ChJQb2tlbW9uRmFtaWx5",
+            "UHJvdG8SEAoIRmFtaWx5SWQYASABKAUSDQoFQ2FuZHkYAiABKAUaKQoUVHJh",
+            "bnNmZXJQb2tlbW9uUHJvdG8SEQoJUG9rZW1vbklkGAEgASgGGj8KF1RyYW5z",
+            "ZmVyUG9rZW1vbk91dFByb3RvEg4KBlN0YXR1cxgBIAEoBRIUCgxDYW5keUF3",
+            "YXJkZWQYAiABKAUaJwoSRXZvbHZlUG9rZW1vblByb3RvEhEKCVBva2Vtb25J",
+            "ZBgBIAEoBhqsAQoVRXZvbHZlUG9rZW1vbk91dFByb3RvEg4KBlJlc3VsdBgB",
+            "IAEoBRJZCg5Fdm9sdmVkUG9rZW1vbhgCIAEoCzJBLlBva2Vtb25Hby5Sb2Nr",
+            "ZXRBUEkuR2VuZXJhdGVkQ29kZS5JbnZlbnRvcnlSZXNwb25zZS5Qb2tlbW9u",
+            "UHJvdG8SEgoKRXhwQXdhcmRlZBgDIAEoBRIUCgxDYW5keUF3YXJkZWQYBCAB",
+            "KAUanCYKDFBva2Vtb25Qcm90bxIKCgJJZBgBIAEoBRJfCglQb2tlbW9uSWQY",
+            "AiABKA4yTC5Qb2tlbW9uR28uUm9ja2V0QVBJLkdlbmVyYXRlZENvZGUuSW52",
+            "ZW50b3J5UmVzcG9uc2UuUG9rZW1vblByb3RvLlBva2Vtb25JZHMSCgoCQ3AY",
+            "AyABKAUSDwoHU3RhbWluYRgEIAEoBRISCgpNYXhTdGFtaW5hGAUgASgFEg0K",
+            "BU1vdmUxGAYgASgFEg0KBU1vdmUyGAcgASgFEhYKDkRlcGxveWVkRm9ydElk",
+            "GAggASgFEhEKCU93bmVyTmFtZRgJIAEoBRINCgVJc0VnZxgKIAEoBRIZChFF",
+            "Z2dLbVdhbGtlZFRhcmdldBgLIAEoBRIYChBFZ2dLbVdhbGtlZFN0YXJ0GAwg",
+            "ASgFEg4KBk9yaWdpbhgOIAEoBRIPCgdIZWlnaHRNGA8gASgHEhAKCFdlaWdo",
+            "dEtnGBAgASgHEhgKEEluZGl2aWR1YWxBdHRhY2sYESABKAUSGQoRSW5kaXZp",
+            "ZHVhbERlZmVuc2UYEiABKAUSGQoRSW5kaXZpZHVhbFN0YW1pbmEYEyABKAUS",
+            "FAoMQ3BNdWx0aXBsaWVyGBQgASgHEhAKCFBva2ViYWxsGBUgASgFEhgKEENh",
+            "cHR1cmVkUzJDZWxsSWQYFiABKAYSFwoPQmF0dGxlc0F0dGFja2VkGBcgASgF",
+            "EhcKD0JhdHRsZXNEZWZlbmRlZBgYIAEoBRIWCg5FZ2dJbmN1YmF0b3JJZBgZ",
+            "IAEoBRIWCg5DcmVhdGlvblRpbWVNcxgaIAEoAxITCgtOdW1VcGdyYWRlcxgb",
+            "IAEoBRIeChZBZGRpdGlvbmFsQ3BNdWx0aXBsaWVyGBwgASgFEhAKCEZhdm9y",
+            "aXRlGB0gASgFEhAKCE5pY2tuYW1lGB4gASgFEhAKCEZyb21Gb3J0GB8gASgF",
+            "Is4gCgpQb2tlbW9uSWRzEhEKDVBPS0VNT05fVU5TRVQQABIbChdWMDAwMV9Q",
+            "T0tFTU9OX0JVTEJBU0FVUhABEhkKFVYwMDAyX1BPS0VNT05fSVZZU0FVUhAC",
+            "EhoKFlYwMDAzX1BPS0VNT05fVkVOVVNBVVIQAxIcChhWMDAwNF9QT0tFTU9O",
+            "X0NIQVJNQU5ERVIQBBIcChhWMDAwNV9QT0tFTU9OX0NIQVJNRUxFT04QBRIb",
+            "ChdWMDAwNl9QT0tFTU9OX0NIQVJJWkFSRBAGEhoKFlYwMDA3X1BPS0VNT05f",
+            "U1FVSVJUTEUQBxIbChdWMDAwOF9QT0tFTU9OX1dBUlRPUlRMRRAIEhsKF1Yw",
+            "MDA5X1BPS0VNT05fQkxBU1RPSVNFEAkSGgoWVjAwMTBfUE9LRU1PTl9DQVRF",
+            "UlBJRRAKEhkKFVYwMDExX1BPS0VNT05fTUVUQVBPRBALEhwKGFYwMDEyX1BP",
+            "S0VNT05fQlVUVEVSRlJFRRAMEhgKFFYwMDEzX1BPS0VNT05fV0VFRExFEA0S",
+            "GAoUVjAwMTRfUE9LRU1PTl9LQUtVTkEQDhIaChZWMDAxNV9QT0tFTU9OX0JF",
+            "RURSSUxMEA8SGAoUVjAwMTZfUE9LRU1PTl9QSURHRVkQEBIbChdWMDAxN19Q",
+            "T0tFTU9OX1BJREdFT1RUTxAREhkKFVYwMDE4X1BPS0VNT05fUElER0VPVBAS",
+            "EhkKFVYwMDE5X1BPS0VNT05fUkFUVEFUQRATEhoKFlYwMDIwX1BPS0VNT05f",
+            "UkFUSUNBVEUQFBIZChVWMDAyMV9QT0tFTU9OX1NQRUFST1cQFRIYChRWMDAy",
+            "Ml9QT0tFTU9OX0ZFQVJPVxAWEhcKE1YwMDIzX1BPS0VNT05fRUtBTlMQFxIX",
+            "ChNWMDAyNF9QT0tFTU9OX0FSQk9LEBgSGQoVVjAwMjVfUE9LRU1PTl9QSUtB",
+            "Q0hVEBkSGAoUVjAwMjZfUE9LRU1PTl9SQUlDSFUQGhIbChdWMDAyN19QT0tF",
+            "TU9OX1NBTkRTSFJFVxAbEhsKF1YwMDI4X1BPS0VNT05fU0FORFNMQVNIEBwS",
+            "GQoVVjAwMjlfUE9LRU1PTl9OSURPUkFOEB0SGgoWVjAwMzBfUE9LRU1PTl9O",
+            "SURPUklOQRAeEhsKF1YwMDMxX1BPS0VNT05fTklET1FVRUVOEB8SGQoVVjAw",
+            "MzJfUE9LRU1PTl9OSURPUkFOECASGgoWVjAwMzNfUE9LRU1PTl9OSURPUklO",
+            "TxAhEhoKFlYwMDM0X1BPS0VNT05fTklET0tJTkcQIhIaChZWMDAzNV9QT0tF",
+            "TU9OX0NMRUZBSVJZECMSGgoWVjAwMzZfUE9LRU1PTl9DTEVGQUJMRRAkEhgK",
+            "FFYwMDM3X1BPS0VNT05fVlVMUElYECUSGwoXVjAwMzhfUE9LRU1PTl9OSU5F",
+            "VEFMRVMQJhIcChhWMDAzOV9QT0tFTU9OX0pJR0dMWVBVRkYQJxIcChhWMDA0",
+            "MF9QT0tFTU9OX1dJR0dMWVRVRkYQKBIXChNWMDA0MV9QT0tFTU9OX1pVQkFU",
+            "ECkSGAoUVjAwNDJfUE9LRU1PTl9HT0xCQVQQKhIYChRWMDA0M19QT0tFTU9O",
+            "X09ERElTSBArEhcKE1YwMDQ0X1BPS0VNT05fR0xPT00QLBIbChdWMDA0NV9Q",
+            "T0tFTU9OX1ZJTEVQTFVNRRAtEhcKE1YwMDQ2X1BPS0VNT05fUEFSQVMQLhIa",
+            "ChZWMDA0N19QT0tFTU9OX1BBUkFTRUNUEC8SGQoVVjAwNDhfUE9LRU1PTl9W",
+            "RU5PTkFUEDASGgoWVjAwNDlfUE9LRU1PTl9WRU5PTU9USBAxEhkKFVYwMDUw",
+            "X1BPS0VNT05fRElHTEVUVBAyEhkKFVYwMDUxX1BPS0VNT05fRFVHVFJJTxAz",
+            "EhgKFFYwMDUyX1BPS0VNT05fTUVPV1RIEDQSGQoVVjAwNTNfUE9LRU1PTl9Q",
+            "RVJTSUFOEDUSGQoVVjAwNTRfUE9LRU1PTl9QU1lEVUNLEDYSGQoVVjAwNTVf",
+            "UE9LRU1PTl9HT0xEVUNLEDcSGAoUVjAwNTZfUE9LRU1PTl9NQU5LRVkQOBIa",
+            "ChZWMDA1N19QT0tFTU9OX1BSSU1FQVBFEDkSGwoXVjAwNThfUE9LRU1PTl9H",
+            "Uk9XTElUSEUQOhIaChZWMDA1OV9QT0tFTU9OX0FSQ0FOSU5FEDsSGQoVVjAw",
+            "NjBfUE9LRU1PTl9QT0xJV0FHEDwSGwoXVjAwNjFfUE9LRU1PTl9QT0xJV0hJ",
+            "UkwQPRIbChdWMDA2Ml9QT0tFTU9OX1BPTElXUkFUSBA+EhYKElYwMDYzX1BP",
+            "S0VNT05fQUJSQRA/EhkKFVYwMDY0X1BPS0VNT05fS0FEQUJSQRBAEhoKFlYw",
+            "MDY1X1BPS0VNT05fQUxBS0FaQU0QQRIYChRWMDA2Nl9QT0tFTU9OX01BQ0hP",
+            "UBBCEhkKFVYwMDY3X1BPS0VNT05fTUFDSE9LRRBDEhkKFVYwMDY4X1BPS0VN",
+            "T05fTUFDSEFNUBBEEhwKGFYwMDY5X1BPS0VNT05fQkVMTFNQUk9VVBBFEhwK",
+            "GFYwMDcwX1BPS0VNT05fV0VFUElOQkVMTBBGEhwKGFYwMDcxX1BPS0VNT05f",
+            "VklDVFJFRUJFTBBHEhsKF1YwMDcyX1BPS0VNT05fVEVOVEFDT09MEEgSHAoY",
+            "VjAwNzNfUE9LRU1PTl9URU5UQUNSVUVMEEkSGQoVVjAwNzRfUE9LRU1PTl9H",
+            "RU9EVURFEEoSGgoWVjAwNzVfUE9LRU1PTl9HUkFWRUxFUhBLEhcKE1YwMDc2",
+            "X1BPS0VNT05fR09MRU0QTBIYChRWMDA3N19QT0tFTU9OX1BPTllUQRBNEhoK",
+            "FlYwMDc4X1BPS0VNT05fUkFQSURBU0gQThIaChZWMDA3OV9QT0tFTU9OX1NM",
+            "T1dQT0tFEE8SGQoVVjAwODBfUE9LRU1PTl9TTE9XQlJPEFASGwoXVjAwODFf",
+            "UE9LRU1PTl9NQUdORU1JVEUQURIaChZWMDA4Ml9QT0tFTU9OX01BR05FVE9O",
+            "EFISGwoXVjAwODNfUE9LRU1PTl9GQVJGRVRDSEQQUxIXChNWMDA4NF9QT0tF",
+            "TU9OX0RPRFVPEFQSGAoUVjAwODVfUE9LRU1PTl9ET0RSSU8QVRIWChJWMDA4",
+            "Nl9QT0tFTU9OX1NFRUwQVhIZChVWMDA4N19QT0tFTU9OX0RFV0dPTkcQVxIY",
+            "ChRWMDA4OF9QT0tFTU9OX0dSSU1FUhBYEhUKEVYwMDg5X1BPS0VNT05fTVVL",
+            "EFkSGgoWVjAwOTBfUE9LRU1PTl9TSEVMTERFUhBaEhoKFlYwMDkxX1BPS0VN",
+            "T05fQ0xPWVNURVIQWxIYChRWMDA5Ml9QT0tFTU9OX0dBU1RMWRBcEhkKFVYw",
+            "MDkzX1BPS0VNT05fSEFVTlRFUhBdEhgKFFYwMDk0X1BPS0VNT05fR0VOR0FS",
+            "EF4SFgoSVjAwOTVfUE9LRU1PTl9PTklYEF8SGQoVVjAwOTZfUE9LRU1PTl9E",
+            "Uk9XWkVFEGASFwoTVjAwOTdfUE9LRU1PTl9IWVBOTxBhEhgKFFYwMDk4X1BP",
+            "S0VNT05fS1JBQkJZEGISGQoVVjAwOTlfUE9LRU1PTl9LSU5HTEVSEGMSGQoV",
+            "VjAxMDBfUE9LRU1PTl9WT0xUT1JCEGQSGwoXVjAxMDFfUE9LRU1PTl9FTEVD",
+            "VFJPREUQZRIbChdWMDEwMl9QT0tFTU9OX0VYRUdHQ1VURRBmEhsKF1YwMTAz",
+            "X1BPS0VNT05fRVhFR0dVVE9SEGcSGAoUVjAxMDRfUE9LRU1PTl9DVUJPTkUQ",
+            "aBIZChVWMDEwNV9QT0tFTU9OX01BUk9XQUsQaRIbChdWMDEwNl9QT0tFTU9O",
+            "X0hJVE1PTkxFRRBqEhwKGFYwMTA3X1BPS0VNT05fSElUTU9OQ0hBThBrEhsK",
+            "F1YwMTA4X1BPS0VNT05fTElDS0lUVU5HEGwSGQoVVjAxMDlfUE9LRU1PTl9L",
+            "T0ZGSU5HEG0SGQoVVjAxMTBfUE9LRU1PTl9XRUVaSU5HEG4SGQoVVjAxMTFf",
+            "UE9LRU1PTl9SSFlIT1JOEG8SGAoUVjAxMTJfUE9LRU1PTl9SSFlET04QcBIZ",
+            "ChVWMDExM19QT0tFTU9OX0NIQU5TRVkQcRIZChVWMDExNF9QT0tFTU9OX1RB",
+            "TkdFTEEQchIcChhWMDExNV9QT0tFTU9OX0tBTkdBU0tIQU4QcxIYChRWMDEx",
+            "Nl9QT0tFTU9OX0hPUlNFQRB0EhgKFFYwMTE3X1BPS0VNT05fU0VBRFJBEHUS",
+            "GQoVVjAxMThfUE9LRU1PTl9HT0xERUVOEHYSGQoVVjAxMTlfUE9LRU1PTl9T",
+            "RUFLSU5HEHcSGAoUVjAxMjBfUE9LRU1PTl9TVEFSWVUQeBIZChVWMDEyMV9Q",
+            "T0tFTU9OX1NUQVJNSUUQeRIZChVWMDEyMl9QT0tFTU9OX01SX01JTUUQehIZ",
+            "ChVWMDEyM19QT0tFTU9OX1NDWVRIRVIQexIWChJWMDEyNF9QT0tFTU9OX0pZ",
+            "TlgQfBIcChhWMDEyNV9QT0tFTU9OX0VMRUNUQUJVWloQfRIYChRWMDEyNl9Q",
+            "T0tFTU9OX01BR01BUhB+EhgKFFYwMTI3X1BPS0VNT05fUElOU0lSEH8SGQoU",
+            "VjAxMjhfUE9LRU1PTl9UQVVST1MQgAESGwoWVjAxMjlfUE9LRU1PTl9NQUdJ",
+            "S0FSUBCBARIbChZWMDEzMF9QT0tFTU9OX0dZQVJBRE9TEIIBEhkKFFYwMTMx",
+            "X1BPS0VNT05fTEFQUkFTEIMBEhgKE1YwMTMyX1BPS0VNT05fRElUVE8QhAES",
+            "GAoTVjAxMzNfUE9LRU1PTl9FRVZFRRCFARIbChZWMDEzNF9QT0tFTU9OX1ZB",
+            "UE9SRU9OEIYBEhoKFVYwMTM1X1BPS0VNT05fSk9MVEVPThCHARIaChVWMDEz",
+            "Nl9QT0tFTU9OX0ZMQVJFT04QiAESGgoVVjAxMzdfUE9LRU1PTl9QT1JZR09O",
+            "EIkBEhoKFVYwMTM4X1BPS0VNT05fT01BTllURRCKARIaChVWMDEzOV9QT0tF",
+            "TU9OX09NQVNUQVIQiwESGQoUVjAxNDBfUE9LRU1PTl9LQUJVVE8QjAESGwoW",
+            "VjAxNDFfUE9LRU1PTl9LQUJVVE9QUxCNARIdChhWMDE0Ml9QT0tFTU9OX0FF",
+            "Uk9EQUNUWUwQjgESGgoVVjAxNDNfUE9LRU1PTl9TTk9STEFYEI8BEhsKFlYw",
+            "MTQ0X1BPS0VNT05fQVJUSUNVTk8QkAESGQoUVjAxNDVfUE9LRU1PTl9aQVBE",
+            "T1MQkQESGgoVVjAxNDZfUE9LRU1PTl9NT0xUUkVTEJIBEhoKFVYwMTQ3X1BP",
+            "S0VNT05fRFJBVElOSRCTARIcChdWMDE0OF9QT0tFTU9OX0RSQUdPTkFJUhCU",
+            "ARIcChdWMDE0OV9QT0tFTU9OX0RSQUdPTklURRCVARIZChRWMDE1MF9QT0tF",
+            "TU9OX01FV1RXTxCWARIWChFWMDE1MV9QT0tFTU9OX01FVxCXAWIGcHJvdG8z"));
+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+          new pbr::FileDescriptor[] { },
+          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Parser, new[]{ "Unknown1", "Unknown2", "ApiUrl", "Unknown6", "Unknown7", "Payload", "ErrorMessage" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Parser, new[]{ "Unknown1", "Unknown2" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2.Parser, new[]{ "Unknown1" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7.Parser, new[]{ "Unknown71", "Unknown72", "Unknown73" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload.Parser, new[]{ "Status", "Bag" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Parser, new[]{ "Timestamp", "Items" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto.Parser, new[]{ "Timestamp", "Item" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Parser, new[]{ "Pokemon", "Item", "PokedexEntry", "PlayerStats", "PlayerCurrency", "PlayerCamera", "InventoryUpgrades", "AppliedItem", "EggIncubators", "PokemonFamily" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto.Parser, new[]{ "Item", "Count", "Unseen" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto.Parser, new[]{ "PokedexEntryNumber", "TimesEncountered", "TimesCaptured", "EvolutionStonePieces", "EvolutionStones" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto.Parser, new[]{ "Level", "Experience", "PrevLevelExp", "NextLevelExp", "KmWalked", "NumPokemonEncountered", "NumUniquePokedexEntries", "NumPokemonCaptured", "NumEvolutions", "PokeStopVisits", "NumberOfPokeballThrown", "NumEggsHatched", "BigMagikarpCaught", "NumBattleAttackWon", "NumBattleAttackTotal", "NumBattleDefendedWon", "NumBattleTrainingWon", "NumBattleTrainingTotal", "PrestigeRaisedTotal", "PrestigeDroppedTotal", "NumPokemonDeployed", "SmallRattataCaught" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto.Parser, new[]{ "Item", "ItemType", "ExpirationMs", "AppliedMs" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto.Parser, new[]{ "DefaultCamera" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto.Parser, new[]{ "Gems" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto.Parser, new[]{ "InventoryUpgrade" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto.Parser, new[]{ "ItemId", "Item", "IncubatorType", "UsesRemaining", "PokemonId", "StartKmWalked", "TargetKmWalked" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto.Parser, new[]{ "FamilyId", "Candy" }, null, null, null)}),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonProto.Parser, new[]{ "PokemonId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonOutProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.TransferPokemonOutProto.Parser, new[]{ "Status", "CandyAwarded" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonProto.Parser, new[]{ "PokemonId" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonOutProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.EvolvePokemonOutProto.Parser, new[]{ "Result", "EvolvedPokemon", "ExpAwarded", "CandyAwarded" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto), global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Parser, new[]{ "Id", "PokemonId", "Cp", "Stamina", "MaxStamina", "Move1", "Move2", "DeployedFortId", "OwnerName", "IsEgg", "EggKmWalkedTarget", "EggKmWalkedStart", "Origin", "HeightM", "WeightKg", "IndividualAttack", "IndividualDefense", "IndividualStamina", "CpMultiplier", "Pokeball", "CapturedS2CellId", "BattlesAttacked", "BattlesDefended", "EggIncubatorId", "CreationTimeMs", "NumUpgrades", "AdditionalCpMultiplier", "Favorite", "Nickname", "FromFort" }, null, new[]{ typeof(global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonIds) }, null)})
+          }));
+    }
+    #endregion
+
+  }
+  #region Messages
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class InventoryResponse : pb::IMessage<InventoryResponse> {
+    private static readonly pb::MessageParser<InventoryResponse> _parser = new pb::MessageParser<InventoryResponse>(() => new InventoryResponse());
+    public static pb::MessageParser<InventoryResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponseReflection.Descriptor.MessageTypes[0]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public InventoryResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public InventoryResponse(InventoryResponse other) : this() {
+      unknown1_ = other.unknown1_;
+      unknown2_ = other.unknown2_;
+      apiUrl_ = other.apiUrl_;
+      Unknown6 = other.unknown6_ != null ? other.Unknown6.Clone() : null;
+      Unknown7 = other.unknown7_ != null ? other.Unknown7.Clone() : null;
+      payload_ = other.payload_.Clone();
+      errorMessage_ = other.errorMessage_;
+    }
+
+    public InventoryResponse Clone() {
+      return new InventoryResponse(this);
+    }
+
+    /// <summary>Field number for the "unknown1" field.</summary>
+    public const int Unknown1FieldNumber = 1;
+    private int unknown1_;
+    public int Unknown1 {
+      get { return unknown1_; }
+      set {
+        unknown1_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown2" field.</summary>
+    public const int Unknown2FieldNumber = 2;
+    private long unknown2_;
+    public long Unknown2 {
+      get { return unknown2_; }
+      set {
+        unknown2_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "api_url" field.</summary>
+    public const int ApiUrlFieldNumber = 3;
+    private string apiUrl_ = "";
+    public string ApiUrl {
+      get { return apiUrl_; }
+      set {
+        apiUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "unknown6" field.</summary>
+    public const int Unknown6FieldNumber = 6;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6 unknown6_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6 Unknown6 {
+      get { return unknown6_; }
+      set {
+        unknown6_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "unknown7" field.</summary>
+    public const int Unknown7FieldNumber = 7;
+    private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7 unknown7_;
+    public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7 Unknown7 {
+      get { return unknown7_; }
+      set {
+        unknown7_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "payload" field.</summary>
+    public const int PayloadFieldNumber = 100;
+    private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> _repeated_payload_codec
+        = pb::FieldCodec.ForMessage(802, global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload.Parser);
+    private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> payload_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload>();
+    public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Payload> Payload {
+      get { return payload_; }
+    }
+
+    /// <summary>Field number for the "errorMessage" field.</summary>
+    public const int ErrorMessageFieldNumber = 101;
+    private string errorMessage_ = "";
+    /// <summary>
+    /// Should be moved to an error-proto file if error is always 101 field
+    /// </summary>
+    public string ErrorMessage {
+      get { return errorMessage_; }
+      set {
+        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as InventoryResponse);
+    }
+
+    public bool Equals(InventoryResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Unknown1 != other.Unknown1) return false;
+      if (Unknown2 != other.Unknown2) return false;
+      if (ApiUrl != other.ApiUrl) return false;
+      if (!object.Equals(Unknown6, other.Unknown6)) return false;
+      if (!object.Equals(Unknown7, other.Unknown7)) return false;
+      if(!payload_.Equals(other.payload_)) return false;
+      if (ErrorMessage != other.ErrorMessage) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+      if (Unknown2 != 0L) hash ^= Unknown2.GetHashCode();
+      if (ApiUrl.Length != 0) hash ^= ApiUrl.GetHashCode();
+      if (unknown6_ != null) hash ^= Unknown6.GetHashCode();
+      if (unknown7_ != null) hash ^= Unknown7.GetHashCode();
+      hash ^= payload_.GetHashCode();
+      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Unknown1 != 0) {
+        output.WriteRawTag(8);
+        output.WriteInt32(Unknown1);
+      }
+      if (Unknown2 != 0L) {
+        output.WriteRawTag(16);
+        output.WriteInt64(Unknown2);
+      }
+      if (ApiUrl.Length != 0) {
+        output.WriteRawTag(26);
+        output.WriteString(ApiUrl);
+      }
+      if (unknown6_ != null) {
+        output.WriteRawTag(50);
+        output.WriteMessage(Unknown6);
+      }
+      if (unknown7_ != null) {
+        output.WriteRawTag(58);
+        output.WriteMessage(Unknown7);
+      }
+      payload_.WriteTo(output, _repeated_payload_codec);
+      if (ErrorMessage.Length != 0) {
+        output.WriteRawTag(170, 6);
+        output.WriteString(ErrorMessage);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Unknown1 != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+      }
+      if (Unknown2 != 0L) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown2);
+      }
+      if (ApiUrl.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiUrl);
+      }
+      if (unknown6_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown6);
+      }
+      if (unknown7_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown7);
+      }
+      size += payload_.CalculateSize(_repeated_payload_codec);
+      if (ErrorMessage.Length != 0) {
+        size += 2 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
+      }
+      return size;
+    }
+
+    public void MergeFrom(InventoryResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Unknown1 != 0) {
+        Unknown1 = other.Unknown1;
+      }
+      if (other.Unknown2 != 0L) {
+        Unknown2 = other.Unknown2;
+      }
+      if (other.ApiUrl.Length != 0) {
+        ApiUrl = other.ApiUrl;
+      }
+      if (other.unknown6_ != null) {
+        if (unknown6_ == null) {
+          unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6();
+        }
+        Unknown6.MergeFrom(other.Unknown6);
+      }
+      if (other.unknown7_ != null) {
+        if (unknown7_ == null) {
+          unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7();
+        }
+        Unknown7.MergeFrom(other.Unknown7);
+      }
+      payload_.Add(other.payload_);
+      if (other.ErrorMessage.Length != 0) {
+        ErrorMessage = other.ErrorMessage;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Unknown1 = input.ReadInt32();
+            break;
+          }
+          case 16: {
+            Unknown2 = input.ReadInt64();
+            break;
+          }
+          case 26: {
+            ApiUrl = input.ReadString();
+            break;
+          }
+          case 50: {
+            if (unknown6_ == null) {
+              unknown6_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6();
+            }
+            input.ReadMessage(unknown6_);
+            break;
+          }
+          case 58: {
+            if (unknown7_ == null) {
+              unknown7_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown7();
+            }
+            input.ReadMessage(unknown7_);
+            break;
+          }
+          case 802: {
+            payload_.AddEntriesFrom(input, _repeated_payload_codec);
+            break;
+          }
+          case 810: {
+            ErrorMessage = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+    #region Nested types
+    /// <summary>Container for nested types declared in the InventoryResponse message type.</summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    public static partial class Types {
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class Unknown6 : pb::IMessage<Unknown6> {
+        private static readonly pb::MessageParser<Unknown6> _parser = new pb::MessageParser<Unknown6>(() => new Unknown6());
+        public static pb::MessageParser<Unknown6> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[0]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public Unknown6() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public Unknown6(Unknown6 other) : this() {
+          unknown1_ = other.unknown1_;
+          Unknown2 = other.unknown2_ != null ? other.Unknown2.Clone() : null;
+        }
+
+        public Unknown6 Clone() {
+          return new Unknown6(this);
+        }
+
+        /// <summary>Field number for the "unknown1" field.</summary>
+        public const int Unknown1FieldNumber = 1;
+        private int unknown1_;
+        public int Unknown1 {
+          get { return unknown1_; }
+          set {
+            unknown1_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "unknown2" field.</summary>
+        public const int Unknown2FieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2 unknown2_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2 Unknown2 {
+          get { return unknown2_; }
+          set {
+            unknown2_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as Unknown6);
+        }
+
+        public bool Equals(Unknown6 other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Unknown1 != other.Unknown1) return false;
+          if (!object.Equals(Unknown2, other.Unknown2)) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Unknown1 != 0) hash ^= Unknown1.GetHashCode();
+          if (unknown2_ != null) hash ^= Unknown2.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Unknown1 != 0) {
+            output.WriteRawTag(8);
+            output.WriteInt32(Unknown1);
+          }
+          if (unknown2_ != null) {
+            output.WriteRawTag(18);
+            output.WriteMessage(Unknown2);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Unknown1 != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Unknown1);
+          }
+          if (unknown2_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unknown2);
+          }
+          return size;
+        }
+
+        public void MergeFrom(Unknown6 other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Unknown1 != 0) {
+            Unknown1 = other.Unknown1;
+          }
+          if (other.unknown2_ != null) {
+            if (unknown2_ == null) {
+              unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2();
+            }
+            Unknown2.MergeFrom(other.Unknown2);
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                Unknown1 = input.ReadInt32();
+                break;
+              }
+              case 18: {
+                if (unknown2_ == null) {
+                  unknown2_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Types.Unknown2();
+                }
+                input.ReadMessage(unknown2_);
+                break;
+              }
+            }
+          }
+        }
+
+        #region Nested types
+        /// <summary>Container for nested types declared in the Unknown6 message type.</summary>
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static partial class Types {
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class Unknown2 : pb::IMessage<Unknown2> {
+            private static readonly pb::MessageParser<Unknown2> _parser = new pb::MessageParser<Unknown2>(() => new Unknown2());
+            public static pb::MessageParser<Unknown2> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.Unknown6.Descriptor.NestedTypes[0]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public Unknown2() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public Unknown2(Unknown2 other) : this() {
+              unknown1_ = other.unknown1_;
+            }
+
+            public Unknown2 Clone() {
+              return new Unknown2(this);
+            }
+
+            /// <summary>Field number for the "unknown1" field.</summary>
+            public const int Unknown1FieldNumber = 1;
+            private pb::ByteString unknown1_ = pb::ByteString.Empty;
+            public pb::ByteString Unknown1 {
+              get { return unknown1_; }
+              set {
+                unknown1_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as Unknown2);
+            }
+
+            public bool Equals(Unknown2 other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (Unknown1 != other.Unknown1) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Unknown1.Length != 0) hash ^= Unknown1.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (Unknown1.Length != 0) {
+                output.WriteRawTag(10);
+                output.WriteBytes(Unknown1);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (Unknown1.Length != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown1);
+              }
+              return size;
+            }
+
+            public void MergeFrom(Unknown2 other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Unknown1.Length != 0) {
+                Unknown1 = other.Unknown1;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 10: {
+                    Unknown1 = input.ReadBytes();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+        }
+        #endregion
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class Unknown7 : pb::IMessage<Unknown7> {
+        private static readonly pb::MessageParser<Unknown7> _parser = new pb::MessageParser<Unknown7>(() => new Unknown7());
+        public static pb::MessageParser<Unknown7> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[1]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public Unknown7() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public Unknown7(Unknown7 other) : this() {
+          unknown71_ = other.unknown71_;
+          unknown72_ = other.unknown72_;
+          unknown73_ = other.unknown73_;
+        }
+
+        public Unknown7 Clone() {
+          return new Unknown7(this);
+        }
+
+        /// <summary>Field number for the "unknown71" field.</summary>
+        public const int Unknown71FieldNumber = 1;
+        private pb::ByteString unknown71_ = pb::ByteString.Empty;
+        public pb::ByteString Unknown71 {
+          get { return unknown71_; }
+          set {
+            unknown71_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+          }
+        }
+
+        /// <summary>Field number for the "unknown72" field.</summary>
+        public const int Unknown72FieldNumber = 2;
+        private long unknown72_;
+        public long Unknown72 {
+          get { return unknown72_; }
+          set {
+            unknown72_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "unknown73" field.</summary>
+        public const int Unknown73FieldNumber = 3;
+        private pb::ByteString unknown73_ = pb::ByteString.Empty;
+        public pb::ByteString Unknown73 {
+          get { return unknown73_; }
+          set {
+            unknown73_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as Unknown7);
+        }
+
+        public bool Equals(Unknown7 other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Unknown71 != other.Unknown71) return false;
+          if (Unknown72 != other.Unknown72) return false;
+          if (Unknown73 != other.Unknown73) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Unknown71.Length != 0) hash ^= Unknown71.GetHashCode();
+          if (Unknown72 != 0L) hash ^= Unknown72.GetHashCode();
+          if (Unknown73.Length != 0) hash ^= Unknown73.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Unknown71.Length != 0) {
+            output.WriteRawTag(10);
+            output.WriteBytes(Unknown71);
+          }
+          if (Unknown72 != 0L) {
+            output.WriteRawTag(16);
+            output.WriteInt64(Unknown72);
+          }
+          if (Unknown73.Length != 0) {
+            output.WriteRawTag(26);
+            output.WriteBytes(Unknown73);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Unknown71.Length != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown71);
+          }
+          if (Unknown72 != 0L) {
+            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Unknown72);
+          }
+          if (Unknown73.Length != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeBytesSize(Unknown73);
+          }
+          return size;
+        }
+
+        public void MergeFrom(Unknown7 other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Unknown71.Length != 0) {
+            Unknown71 = other.Unknown71;
+          }
+          if (other.Unknown72 != 0L) {
+            Unknown72 = other.Unknown72;
+          }
+          if (other.Unknown73.Length != 0) {
+            Unknown73 = other.Unknown73;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 10: {
+                Unknown71 = input.ReadBytes();
+                break;
+              }
+              case 16: {
+                Unknown72 = input.ReadInt64();
+                break;
+              }
+              case 26: {
+                Unknown73 = input.ReadBytes();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class Payload : pb::IMessage<Payload> {
+        private static readonly pb::MessageParser<Payload> _parser = new pb::MessageParser<Payload>(() => new Payload());
+        public static pb::MessageParser<Payload> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[2]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public Payload() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public Payload(Payload other) : this() {
+          status_ = other.status_;
+          Bag = other.bag_ != null ? other.Bag.Clone() : null;
+        }
+
+        public Payload Clone() {
+          return new Payload(this);
+        }
+
+        /// <summary>Field number for the "Status" field.</summary>
+        public const int StatusFieldNumber = 1;
+        private int status_;
+        public int Status {
+          get { return status_; }
+          set {
+            status_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Bag" field.</summary>
+        public const int BagFieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto bag_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto Bag {
+          get { return bag_; }
+          set {
+            bag_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as Payload);
+        }
+
+        public bool Equals(Payload other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Status != other.Status) return false;
+          if (!object.Equals(Bag, other.Bag)) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Status != 0) hash ^= Status.GetHashCode();
+          if (bag_ != null) hash ^= Bag.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Status != 0) {
+            output.WriteRawTag(8);
+            output.WriteInt32(Status);
+          }
+          if (bag_ != null) {
+            output.WriteRawTag(18);
+            output.WriteMessage(Bag);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Status != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
+          }
+          if (bag_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bag);
+          }
+          return size;
+        }
+
+        public void MergeFrom(Payload other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Status != 0) {
+            Status = other.Status;
+          }
+          if (other.bag_ != null) {
+            if (bag_ == null) {
+              bag_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto();
+            }
+            Bag.MergeFrom(other.Bag);
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                Status = input.ReadInt32();
+                break;
+              }
+              case 18: {
+                if (bag_ == null) {
+                  bag_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto();
+                }
+                input.ReadMessage(bag_);
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class InventoryResponseProto : pb::IMessage<InventoryResponseProto> {
+        private static readonly pb::MessageParser<InventoryResponseProto> _parser = new pb::MessageParser<InventoryResponseProto>(() => new InventoryResponseProto());
+        public static pb::MessageParser<InventoryResponseProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[3]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public InventoryResponseProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public InventoryResponseProto(InventoryResponseProto other) : this() {
+          timestamp_ = other.timestamp_;
+          items_ = other.items_.Clone();
+        }
+
+        public InventoryResponseProto Clone() {
+          return new InventoryResponseProto(this);
+        }
+
+        /// <summary>Field number for the "timestamp" field.</summary>
+        public const int TimestampFieldNumber = 2;
+        private long timestamp_;
+        public long Timestamp {
+          get { return timestamp_; }
+          set {
+            timestamp_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "items" field.</summary>
+        public const int ItemsFieldNumber = 3;
+        private static readonly pb::FieldCodec<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> _repeated_items_codec
+            = pb::FieldCodec.ForMessage(26, global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto.Parser);
+        private readonly pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> items_ = new pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto>();
+        public pbc::RepeatedField<global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Types.InventoryItemResponseProto> Items {
+          get { return items_; }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as InventoryResponseProto);
+        }
+
+        public bool Equals(InventoryResponseProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Timestamp != other.Timestamp) return false;
+          if(!items_.Equals(other.items_)) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
+          hash ^= items_.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Timestamp != 0L) {
+            output.WriteRawTag(16);
+            output.WriteInt64(Timestamp);
+          }
+          items_.WriteTo(output, _repeated_items_codec);
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Timestamp != 0L) {
+            size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
+          }
+          size += items_.CalculateSize(_repeated_items_codec);
+          return size;
+        }
+
+        public void MergeFrom(InventoryResponseProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Timestamp != 0L) {
+            Timestamp = other.Timestamp;
+          }
+          items_.Add(other.items_);
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 16: {
+                Timestamp = input.ReadInt64();
+                break;
+              }
+              case 26: {
+                items_.AddEntriesFrom(input, _repeated_items_codec);
+                break;
+              }
+            }
+          }
+        }
+
+        #region Nested types
+        /// <summary>Container for nested types declared in the InventoryResponseProto message type.</summary>
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static partial class Types {
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class InventoryItemResponseProto : pb::IMessage<InventoryItemResponseProto> {
+            private static readonly pb::MessageParser<InventoryItemResponseProto> _parser = new pb::MessageParser<InventoryItemResponseProto>(() => new InventoryItemResponseProto());
+            public static pb::MessageParser<InventoryItemResponseProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryResponseProto.Descriptor.NestedTypes[0]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public InventoryItemResponseProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public InventoryItemResponseProto(InventoryItemResponseProto other) : this() {
+              timestamp_ = other.timestamp_;
+              Item = other.item_ != null ? other.Item.Clone() : null;
+            }
+
+            public InventoryItemResponseProto Clone() {
+              return new InventoryItemResponseProto(this);
+            }
+
+            /// <summary>Field number for the "timestamp" field.</summary>
+            public const int TimestampFieldNumber = 1;
+            private long timestamp_;
+            public long Timestamp {
+              get { return timestamp_; }
+              set {
+                timestamp_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "item" field.</summary>
+            public const int ItemFieldNumber = 3;
+            private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto item_;
+            public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto Item {
+              get { return item_; }
+              set {
+                item_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as InventoryItemResponseProto);
+            }
+
+            public bool Equals(InventoryItemResponseProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (Timestamp != other.Timestamp) return false;
+              if (!object.Equals(Item, other.Item)) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
+              if (item_ != null) hash ^= Item.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (Timestamp != 0L) {
+                output.WriteRawTag(8);
+                output.WriteInt64(Timestamp);
+              }
+              if (item_ != null) {
+                output.WriteRawTag(26);
+                output.WriteMessage(Item);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (Timestamp != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
+              }
+              if (item_ != null) {
+                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
+              }
+              return size;
+            }
+
+            public void MergeFrom(InventoryItemResponseProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Timestamp != 0L) {
+                Timestamp = other.Timestamp;
+              }
+              if (other.item_ != null) {
+                if (item_ == null) {
+                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto();
+                }
+                Item.MergeFrom(other.Item);
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    Timestamp = input.ReadInt64();
+                    break;
+                  }
+                  case 26: {
+                    if (item_ == null) {
+                      item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto();
+                    }
+                    input.ReadMessage(item_);
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+        }
+        #endregion
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class InventoryItemProto : pb::IMessage<InventoryItemProto> {
+        private static readonly pb::MessageParser<InventoryItemProto> _parser = new pb::MessageParser<InventoryItemProto>(() => new InventoryItemProto());
+        public static pb::MessageParser<InventoryItemProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[4]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public InventoryItemProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public InventoryItemProto(InventoryItemProto other) : this() {
+          Pokemon = other.pokemon_ != null ? other.Pokemon.Clone() : null;
+          Item = other.item_ != null ? other.Item.Clone() : null;
+          PokedexEntry = other.pokedexEntry_ != null ? other.PokedexEntry.Clone() : null;
+          PlayerStats = other.playerStats_ != null ? other.PlayerStats.Clone() : null;
+          PlayerCurrency = other.playerCurrency_ != null ? other.PlayerCurrency.Clone() : null;
+          PlayerCamera = other.playerCamera_ != null ? other.PlayerCamera.Clone() : null;
+          InventoryUpgrades = other.inventoryUpgrades_ != null ? other.InventoryUpgrades.Clone() : null;
+          AppliedItem = other.appliedItem_ != null ? other.AppliedItem.Clone() : null;
+          EggIncubators = other.eggIncubators_ != null ? other.EggIncubators.Clone() : null;
+          PokemonFamily = other.pokemonFamily_ != null ? other.PokemonFamily.Clone() : null;
+        }
+
+        public InventoryItemProto Clone() {
+          return new InventoryItemProto(this);
+        }
+
+        /// <summary>Field number for the "Pokemon" field.</summary>
+        public const int PokemonFieldNumber = 1;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto pokemon_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto Pokemon {
+          get { return pokemon_; }
+          set {
+            pokemon_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Item" field.</summary>
+        public const int ItemFieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto item_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto Item {
+          get { return item_; }
+          set {
+            item_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PokedexEntry" field.</summary>
+        public const int PokedexEntryFieldNumber = 3;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto pokedexEntry_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto PokedexEntry {
+          get { return pokedexEntry_; }
+          set {
+            pokedexEntry_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PlayerStats" field.</summary>
+        public const int PlayerStatsFieldNumber = 4;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto playerStats_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto PlayerStats {
+          get { return playerStats_; }
+          set {
+            playerStats_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PlayerCurrency" field.</summary>
+        public const int PlayerCurrencyFieldNumber = 5;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto playerCurrency_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto PlayerCurrency {
+          get { return playerCurrency_; }
+          set {
+            playerCurrency_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PlayerCamera" field.</summary>
+        public const int PlayerCameraFieldNumber = 6;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto playerCamera_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto PlayerCamera {
+          get { return playerCamera_; }
+          set {
+            playerCamera_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "InventoryUpgrades" field.</summary>
+        public const int InventoryUpgradesFieldNumber = 7;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto inventoryUpgrades_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto InventoryUpgrades {
+          get { return inventoryUpgrades_; }
+          set {
+            inventoryUpgrades_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "AppliedItem" field.</summary>
+        public const int AppliedItemFieldNumber = 8;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto appliedItem_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto AppliedItem {
+          get { return appliedItem_; }
+          set {
+            appliedItem_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "EggIncubators" field.</summary>
+        public const int EggIncubatorsFieldNumber = 9;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto eggIncubators_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto EggIncubators {
+          get { return eggIncubators_; }
+          set {
+            eggIncubators_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PokemonFamily" field.</summary>
+        public const int PokemonFamilyFieldNumber = 10;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto pokemonFamily_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto PokemonFamily {
+          get { return pokemonFamily_; }
+          set {
+            pokemonFamily_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as InventoryItemProto);
+        }
+
+        public bool Equals(InventoryItemProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (!object.Equals(Pokemon, other.Pokemon)) return false;
+          if (!object.Equals(Item, other.Item)) return false;
+          if (!object.Equals(PokedexEntry, other.PokedexEntry)) return false;
+          if (!object.Equals(PlayerStats, other.PlayerStats)) return false;
+          if (!object.Equals(PlayerCurrency, other.PlayerCurrency)) return false;
+          if (!object.Equals(PlayerCamera, other.PlayerCamera)) return false;
+          if (!object.Equals(InventoryUpgrades, other.InventoryUpgrades)) return false;
+          if (!object.Equals(AppliedItem, other.AppliedItem)) return false;
+          if (!object.Equals(EggIncubators, other.EggIncubators)) return false;
+          if (!object.Equals(PokemonFamily, other.PokemonFamily)) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (pokemon_ != null) hash ^= Pokemon.GetHashCode();
+          if (item_ != null) hash ^= Item.GetHashCode();
+          if (pokedexEntry_ != null) hash ^= PokedexEntry.GetHashCode();
+          if (playerStats_ != null) hash ^= PlayerStats.GetHashCode();
+          if (playerCurrency_ != null) hash ^= PlayerCurrency.GetHashCode();
+          if (playerCamera_ != null) hash ^= PlayerCamera.GetHashCode();
+          if (inventoryUpgrades_ != null) hash ^= InventoryUpgrades.GetHashCode();
+          if (appliedItem_ != null) hash ^= AppliedItem.GetHashCode();
+          if (eggIncubators_ != null) hash ^= EggIncubators.GetHashCode();
+          if (pokemonFamily_ != null) hash ^= PokemonFamily.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (pokemon_ != null) {
+            output.WriteRawTag(10);
+            output.WriteMessage(Pokemon);
+          }
+          if (item_ != null) {
+            output.WriteRawTag(18);
+            output.WriteMessage(Item);
+          }
+          if (pokedexEntry_ != null) {
+            output.WriteRawTag(26);
+            output.WriteMessage(PokedexEntry);
+          }
+          if (playerStats_ != null) {
+            output.WriteRawTag(34);
+            output.WriteMessage(PlayerStats);
+          }
+          if (playerCurrency_ != null) {
+            output.WriteRawTag(42);
+            output.WriteMessage(PlayerCurrency);
+          }
+          if (playerCamera_ != null) {
+            output.WriteRawTag(50);
+            output.WriteMessage(PlayerCamera);
+          }
+          if (inventoryUpgrades_ != null) {
+            output.WriteRawTag(58);
+            output.WriteMessage(InventoryUpgrades);
+          }
+          if (appliedItem_ != null) {
+            output.WriteRawTag(66);
+            output.WriteMessage(AppliedItem);
+          }
+          if (eggIncubators_ != null) {
+            output.WriteRawTag(74);
+            output.WriteMessage(EggIncubators);
+          }
+          if (pokemonFamily_ != null) {
+            output.WriteRawTag(82);
+            output.WriteMessage(PokemonFamily);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (pokemon_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Pokemon);
+          }
+          if (item_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
+          }
+          if (pokedexEntry_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokedexEntry);
+          }
+          if (playerStats_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerStats);
+          }
+          if (playerCurrency_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCurrency);
+          }
+          if (playerCamera_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlayerCamera);
+          }
+          if (inventoryUpgrades_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(InventoryUpgrades);
+          }
+          if (appliedItem_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(AppliedItem);
+          }
+          if (eggIncubators_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EggIncubators);
+          }
+          if (pokemonFamily_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(PokemonFamily);
+          }
+          return size;
+        }
+
+        public void MergeFrom(InventoryItemProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.pokemon_ != null) {
+            if (pokemon_ == null) {
+              pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
+            }
+            Pokemon.MergeFrom(other.Pokemon);
+          }
+          if (other.item_ != null) {
+            if (item_ == null) {
+              item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
+            }
+            Item.MergeFrom(other.Item);
+          }
+          if (other.pokedexEntry_ != null) {
+            if (pokedexEntry_ == null) {
+              pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto();
+            }
+            PokedexEntry.MergeFrom(other.PokedexEntry);
+          }
+          if (other.playerStats_ != null) {
+            if (playerStats_ == null) {
+              playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto();
+            }
+            PlayerStats.MergeFrom(other.PlayerStats);
+          }
+          if (other.playerCurrency_ != null) {
+            if (playerCurrency_ == null) {
+              playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto();
+            }
+            PlayerCurrency.MergeFrom(other.PlayerCurrency);
+          }
+          if (other.playerCamera_ != null) {
+            if (playerCamera_ == null) {
+              playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto();
+            }
+            PlayerCamera.MergeFrom(other.PlayerCamera);
+          }
+          if (other.inventoryUpgrades_ != null) {
+            if (inventoryUpgrades_ == null) {
+              inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto();
+            }
+            InventoryUpgrades.MergeFrom(other.InventoryUpgrades);
+          }
+          if (other.appliedItem_ != null) {
+            if (appliedItem_ == null) {
+              appliedItem_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto();
+            }
+            AppliedItem.MergeFrom(other.AppliedItem);
+          }
+          if (other.eggIncubators_ != null) {
+            if (eggIncubators_ == null) {
+              eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto();
+            }
+            EggIncubators.MergeFrom(other.EggIncubators);
+          }
+          if (other.pokemonFamily_ != null) {
+            if (pokemonFamily_ == null) {
+              pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto();
+            }
+            PokemonFamily.MergeFrom(other.PokemonFamily);
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 10: {
+                if (pokemon_ == null) {
+                  pokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
+                }
+                input.ReadMessage(pokemon_);
+                break;
+              }
+              case 18: {
+                if (item_ == null) {
+                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
+                }
+                input.ReadMessage(item_);
+                break;
+              }
+              case 26: {
+                if (pokedexEntry_ == null) {
+                  pokedexEntry_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokedexEntryProto();
+                }
+                input.ReadMessage(pokedexEntry_);
+                break;
+              }
+              case 34: {
+                if (playerStats_ == null) {
+                  playerStats_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerStatsProto();
+                }
+                input.ReadMessage(playerStats_);
+                break;
+              }
+              case 42: {
+                if (playerCurrency_ == null) {
+                  playerCurrency_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCurrencyProto();
+                }
+                input.ReadMessage(playerCurrency_);
+                break;
+              }
+              case 50: {
+                if (playerCamera_ == null) {
+                  playerCamera_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PlayerCameraProto();
+                }
+                input.ReadMessage(playerCamera_);
+                break;
+              }
+              case 58: {
+                if (inventoryUpgrades_ == null) {
+                  inventoryUpgrades_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.InventoryUpgradesProto();
+                }
+                input.ReadMessage(inventoryUpgrades_);
+                break;
+              }
+              case 66: {
+                if (appliedItem_ == null) {
+                  appliedItem_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.AppliedItemProto();
+                }
+                input.ReadMessage(appliedItem_);
+                break;
+              }
+              case 74: {
+                if (eggIncubators_ == null) {
+                  eggIncubators_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.EggIncubatorProto();
+                }
+                input.ReadMessage(eggIncubators_);
+                break;
+              }
+              case 82: {
+                if (pokemonFamily_ == null) {
+                  pokemonFamily_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.PokemonFamilyProto();
+                }
+                input.ReadMessage(pokemonFamily_);
+                break;
+              }
+            }
+          }
+        }
+
+        #region Nested types
+        /// <summary>Container for nested types declared in the InventoryItemProto message type.</summary>
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static partial class Types {
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class ItemProto : pb::IMessage<ItemProto> {
+            private static readonly pb::MessageParser<ItemProto> _parser = new pb::MessageParser<ItemProto>(() => new ItemProto());
+            public static pb::MessageParser<ItemProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[0]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public ItemProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public ItemProto(ItemProto other) : this() {
+              item_ = other.item_;
+              count_ = other.count_;
+              unseen_ = other.unseen_;
+            }
+
+            public ItemProto Clone() {
+              return new ItemProto(this);
+            }
+
+            /// <summary>Field number for the "Item" field.</summary>
+            public const int ItemFieldNumber = 1;
+            private int item_;
+            public int Item {
+              get { return item_; }
+              set {
+                item_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "Count" field.</summary>
+            public const int CountFieldNumber = 2;
+            private int count_;
+            public int Count {
+              get { return count_; }
+              set {
+                count_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "Unseen" field.</summary>
+            public const int UnseenFieldNumber = 3;
+            private bool unseen_;
+            public bool Unseen {
+              get { return unseen_; }
+              set {
+                unseen_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as ItemProto);
+            }
+
+            public bool Equals(ItemProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (Item != other.Item) return false;
+              if (Count != other.Count) return false;
+              if (Unseen != other.Unseen) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Item != 0) hash ^= Item.GetHashCode();
+              if (Count != 0) hash ^= Count.GetHashCode();
+              if (Unseen != false) hash ^= Unseen.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (Item != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(Item);
+              }
+              if (Count != 0) {
+                output.WriteRawTag(16);
+                output.WriteInt32(Count);
+              }
+              if (Unseen != false) {
+                output.WriteRawTag(24);
+                output.WriteBool(Unseen);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (Item != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item);
+              }
+              if (Count != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Count);
+              }
+              if (Unseen != false) {
+                size += 1 + 1;
+              }
+              return size;
+            }
+
+            public void MergeFrom(ItemProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Item != 0) {
+                Item = other.Item;
+              }
+              if (other.Count != 0) {
+                Count = other.Count;
+              }
+              if (other.Unseen != false) {
+                Unseen = other.Unseen;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    Item = input.ReadInt32();
+                    break;
+                  }
+                  case 16: {
+                    Count = input.ReadInt32();
+                    break;
+                  }
+                  case 24: {
+                    Unseen = input.ReadBool();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class PokedexEntryProto : pb::IMessage<PokedexEntryProto> {
+            private static readonly pb::MessageParser<PokedexEntryProto> _parser = new pb::MessageParser<PokedexEntryProto>(() => new PokedexEntryProto());
+            public static pb::MessageParser<PokedexEntryProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[1]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public PokedexEntryProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public PokedexEntryProto(PokedexEntryProto other) : this() {
+              pokedexEntryNumber_ = other.pokedexEntryNumber_;
+              timesEncountered_ = other.timesEncountered_;
+              timesCaptured_ = other.timesCaptured_;
+              evolutionStonePieces_ = other.evolutionStonePieces_;
+              evolutionStones_ = other.evolutionStones_;
+            }
+
+            public PokedexEntryProto Clone() {
+              return new PokedexEntryProto(this);
+            }
+
+            /// <summary>Field number for the "PokedexEntryNumber" field.</summary>
+            public const int PokedexEntryNumberFieldNumber = 1;
+            private int pokedexEntryNumber_;
+            public int PokedexEntryNumber {
+              get { return pokedexEntryNumber_; }
+              set {
+                pokedexEntryNumber_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "TimesEncountered" field.</summary>
+            public const int TimesEncounteredFieldNumber = 2;
+            private int timesEncountered_;
+            public int TimesEncountered {
+              get { return timesEncountered_; }
+              set {
+                timesEncountered_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "TimesCaptured" field.</summary>
+            public const int TimesCapturedFieldNumber = 3;
+            private int timesCaptured_;
+            public int TimesCaptured {
+              get { return timesCaptured_; }
+              set {
+                timesCaptured_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "EvolutionStonePieces" field.</summary>
+            public const int EvolutionStonePiecesFieldNumber = 4;
+            private int evolutionStonePieces_;
+            public int EvolutionStonePieces {
+              get { return evolutionStonePieces_; }
+              set {
+                evolutionStonePieces_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "EvolutionStones" field.</summary>
+            public const int EvolutionStonesFieldNumber = 5;
+            private int evolutionStones_;
+            public int EvolutionStones {
+              get { return evolutionStones_; }
+              set {
+                evolutionStones_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as PokedexEntryProto);
+            }
+
+            public bool Equals(PokedexEntryProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (PokedexEntryNumber != other.PokedexEntryNumber) return false;
+              if (TimesEncountered != other.TimesEncountered) return false;
+              if (TimesCaptured != other.TimesCaptured) return false;
+              if (EvolutionStonePieces != other.EvolutionStonePieces) return false;
+              if (EvolutionStones != other.EvolutionStones) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (PokedexEntryNumber != 0) hash ^= PokedexEntryNumber.GetHashCode();
+              if (TimesEncountered != 0) hash ^= TimesEncountered.GetHashCode();
+              if (TimesCaptured != 0) hash ^= TimesCaptured.GetHashCode();
+              if (EvolutionStonePieces != 0) hash ^= EvolutionStonePieces.GetHashCode();
+              if (EvolutionStones != 0) hash ^= EvolutionStones.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (PokedexEntryNumber != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(PokedexEntryNumber);
+              }
+              if (TimesEncountered != 0) {
+                output.WriteRawTag(16);
+                output.WriteInt32(TimesEncountered);
+              }
+              if (TimesCaptured != 0) {
+                output.WriteRawTag(24);
+                output.WriteInt32(TimesCaptured);
+              }
+              if (EvolutionStonePieces != 0) {
+                output.WriteRawTag(32);
+                output.WriteInt32(EvolutionStonePieces);
+              }
+              if (EvolutionStones != 0) {
+                output.WriteRawTag(40);
+                output.WriteInt32(EvolutionStones);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (PokedexEntryNumber != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokedexEntryNumber);
+              }
+              if (TimesEncountered != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesEncountered);
+              }
+              if (TimesCaptured != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimesCaptured);
+              }
+              if (EvolutionStonePieces != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStonePieces);
+              }
+              if (EvolutionStones != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvolutionStones);
+              }
+              return size;
+            }
+
+            public void MergeFrom(PokedexEntryProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.PokedexEntryNumber != 0) {
+                PokedexEntryNumber = other.PokedexEntryNumber;
+              }
+              if (other.TimesEncountered != 0) {
+                TimesEncountered = other.TimesEncountered;
+              }
+              if (other.TimesCaptured != 0) {
+                TimesCaptured = other.TimesCaptured;
+              }
+              if (other.EvolutionStonePieces != 0) {
+                EvolutionStonePieces = other.EvolutionStonePieces;
+              }
+              if (other.EvolutionStones != 0) {
+                EvolutionStones = other.EvolutionStones;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    PokedexEntryNumber = input.ReadInt32();
+                    break;
+                  }
+                  case 16: {
+                    TimesEncountered = input.ReadInt32();
+                    break;
+                  }
+                  case 24: {
+                    TimesCaptured = input.ReadInt32();
+                    break;
+                  }
+                  case 32: {
+                    EvolutionStonePieces = input.ReadInt32();
+                    break;
+                  }
+                  case 40: {
+                    EvolutionStones = input.ReadInt32();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class PlayerStatsProto : pb::IMessage<PlayerStatsProto> {
+            private static readonly pb::MessageParser<PlayerStatsProto> _parser = new pb::MessageParser<PlayerStatsProto>(() => new PlayerStatsProto());
+            public static pb::MessageParser<PlayerStatsProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[2]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public PlayerStatsProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public PlayerStatsProto(PlayerStatsProto other) : this() {
+              level_ = other.level_;
+              experience_ = other.experience_;
+              prevLevelExp_ = other.prevLevelExp_;
+              nextLevelExp_ = other.nextLevelExp_;
+              kmWalked_ = other.kmWalked_;
+              numPokemonEncountered_ = other.numPokemonEncountered_;
+              numUniquePokedexEntries_ = other.numUniquePokedexEntries_;
+              numPokemonCaptured_ = other.numPokemonCaptured_;
+              numEvolutions_ = other.numEvolutions_;
+              pokeStopVisits_ = other.pokeStopVisits_;
+              numberOfPokeballThrown_ = other.numberOfPokeballThrown_;
+              numEggsHatched_ = other.numEggsHatched_;
+              bigMagikarpCaught_ = other.bigMagikarpCaught_;
+              numBattleAttackWon_ = other.numBattleAttackWon_;
+              numBattleAttackTotal_ = other.numBattleAttackTotal_;
+              numBattleDefendedWon_ = other.numBattleDefendedWon_;
+              numBattleTrainingWon_ = other.numBattleTrainingWon_;
+              numBattleTrainingTotal_ = other.numBattleTrainingTotal_;
+              prestigeRaisedTotal_ = other.prestigeRaisedTotal_;
+              prestigeDroppedTotal_ = other.prestigeDroppedTotal_;
+              numPokemonDeployed_ = other.numPokemonDeployed_;
+              smallRattataCaught_ = other.smallRattataCaught_;
+            }
+
+            public PlayerStatsProto Clone() {
+              return new PlayerStatsProto(this);
+            }
+
+            /// <summary>Field number for the "Level" field.</summary>
+            public const int LevelFieldNumber = 1;
+            private int level_;
+            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_;
+            public long Experience {
+              get { return experience_; }
+              set {
+                experience_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "PrevLevelExp" field.</summary>
+            public const int PrevLevelExpFieldNumber = 3;
+            private long prevLevelExp_;
+            public long PrevLevelExp {
+              get { return prevLevelExp_; }
+              set {
+                prevLevelExp_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NextLevelExp" field.</summary>
+            public const int NextLevelExpFieldNumber = 4;
+            private long nextLevelExp_;
+            public long NextLevelExp {
+              get { return nextLevelExp_; }
+              set {
+                nextLevelExp_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "KmWalked" field.</summary>
+            public const int KmWalkedFieldNumber = 5;
+            private float kmWalked_;
+            public float KmWalked {
+              get { return kmWalked_; }
+              set {
+                kmWalked_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumPokemonEncountered" field.</summary>
+            public const int NumPokemonEncounteredFieldNumber = 6;
+            private int numPokemonEncountered_;
+            public int NumPokemonEncountered {
+              get { return numPokemonEncountered_; }
+              set {
+                numPokemonEncountered_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumUniquePokedexEntries" field.</summary>
+            public const int NumUniquePokedexEntriesFieldNumber = 7;
+            private int numUniquePokedexEntries_;
+            public int NumUniquePokedexEntries {
+              get { return numUniquePokedexEntries_; }
+              set {
+                numUniquePokedexEntries_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumPokemonCaptured" field.</summary>
+            public const int NumPokemonCapturedFieldNumber = 8;
+            private int numPokemonCaptured_;
+            public int NumPokemonCaptured {
+              get { return numPokemonCaptured_; }
+              set {
+                numPokemonCaptured_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumEvolutions" field.</summary>
+            public const int NumEvolutionsFieldNumber = 9;
+            private int numEvolutions_;
+            public int NumEvolutions {
+              get { return numEvolutions_; }
+              set {
+                numEvolutions_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "PokeStopVisits" field.</summary>
+            public const int PokeStopVisitsFieldNumber = 10;
+            private int pokeStopVisits_;
+            public int PokeStopVisits {
+              get { return pokeStopVisits_; }
+              set {
+                pokeStopVisits_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumberOfPokeballThrown" field.</summary>
+            public const int NumberOfPokeballThrownFieldNumber = 11;
+            private int numberOfPokeballThrown_;
+            public int NumberOfPokeballThrown {
+              get { return numberOfPokeballThrown_; }
+              set {
+                numberOfPokeballThrown_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumEggsHatched" field.</summary>
+            public const int NumEggsHatchedFieldNumber = 12;
+            private int numEggsHatched_;
+            public int NumEggsHatched {
+              get { return numEggsHatched_; }
+              set {
+                numEggsHatched_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "BigMagikarpCaught" field.</summary>
+            public const int BigMagikarpCaughtFieldNumber = 13;
+            private int bigMagikarpCaught_;
+            public int BigMagikarpCaught {
+              get { return bigMagikarpCaught_; }
+              set {
+                bigMagikarpCaught_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumBattleAttackWon" field.</summary>
+            public const int NumBattleAttackWonFieldNumber = 14;
+            private int numBattleAttackWon_;
+            public int NumBattleAttackWon {
+              get { return numBattleAttackWon_; }
+              set {
+                numBattleAttackWon_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumBattleAttackTotal" field.</summary>
+            public const int NumBattleAttackTotalFieldNumber = 15;
+            private int numBattleAttackTotal_;
+            public int NumBattleAttackTotal {
+              get { return numBattleAttackTotal_; }
+              set {
+                numBattleAttackTotal_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumBattleDefendedWon" field.</summary>
+            public const int NumBattleDefendedWonFieldNumber = 16;
+            private int numBattleDefendedWon_;
+            public int NumBattleDefendedWon {
+              get { return numBattleDefendedWon_; }
+              set {
+                numBattleDefendedWon_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumBattleTrainingWon" field.</summary>
+            public const int NumBattleTrainingWonFieldNumber = 17;
+            private int numBattleTrainingWon_;
+            public int NumBattleTrainingWon {
+              get { return numBattleTrainingWon_; }
+              set {
+                numBattleTrainingWon_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumBattleTrainingTotal" field.</summary>
+            public const int NumBattleTrainingTotalFieldNumber = 18;
+            private int numBattleTrainingTotal_;
+            public int NumBattleTrainingTotal {
+              get { return numBattleTrainingTotal_; }
+              set {
+                numBattleTrainingTotal_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "PrestigeRaisedTotal" field.</summary>
+            public const int PrestigeRaisedTotalFieldNumber = 19;
+            private int prestigeRaisedTotal_;
+            public int PrestigeRaisedTotal {
+              get { return prestigeRaisedTotal_; }
+              set {
+                prestigeRaisedTotal_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "PrestigeDroppedTotal" field.</summary>
+            public const int PrestigeDroppedTotalFieldNumber = 20;
+            private int prestigeDroppedTotal_;
+            public int PrestigeDroppedTotal {
+              get { return prestigeDroppedTotal_; }
+              set {
+                prestigeDroppedTotal_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "NumPokemonDeployed" field.</summary>
+            public const int NumPokemonDeployedFieldNumber = 21;
+            private int numPokemonDeployed_;
+            public int NumPokemonDeployed {
+              get { return numPokemonDeployed_; }
+              set {
+                numPokemonDeployed_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "SmallRattataCaught" field.</summary>
+            public const int SmallRattataCaughtFieldNumber = 23;
+            private int smallRattataCaught_;
+            public int SmallRattataCaught {
+              get { return smallRattataCaught_; }
+              set {
+                smallRattataCaught_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as PlayerStatsProto);
+            }
+
+            public bool Equals(PlayerStatsProto 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 (PrevLevelExp != other.PrevLevelExp) return false;
+              if (NextLevelExp != other.NextLevelExp) return false;
+              if (KmWalked != other.KmWalked) return false;
+              if (NumPokemonEncountered != other.NumPokemonEncountered) return false;
+              if (NumUniquePokedexEntries != other.NumUniquePokedexEntries) return false;
+              if (NumPokemonCaptured != other.NumPokemonCaptured) return false;
+              if (NumEvolutions != other.NumEvolutions) return false;
+              if (PokeStopVisits != other.PokeStopVisits) return false;
+              if (NumberOfPokeballThrown != other.NumberOfPokeballThrown) return false;
+              if (NumEggsHatched != other.NumEggsHatched) return false;
+              if (BigMagikarpCaught != other.BigMagikarpCaught) return false;
+              if (NumBattleAttackWon != other.NumBattleAttackWon) return false;
+              if (NumBattleAttackTotal != other.NumBattleAttackTotal) return false;
+              if (NumBattleDefendedWon != other.NumBattleDefendedWon) return false;
+              if (NumBattleTrainingWon != other.NumBattleTrainingWon) return false;
+              if (NumBattleTrainingTotal != other.NumBattleTrainingTotal) return false;
+              if (PrestigeRaisedTotal != other.PrestigeRaisedTotal) return false;
+              if (PrestigeDroppedTotal != other.PrestigeDroppedTotal) return false;
+              if (NumPokemonDeployed != other.NumPokemonDeployed) return false;
+              if (SmallRattataCaught != other.SmallRattataCaught) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Level != 0) hash ^= Level.GetHashCode();
+              if (Experience != 0L) hash ^= Experience.GetHashCode();
+              if (PrevLevelExp != 0L) hash ^= PrevLevelExp.GetHashCode();
+              if (NextLevelExp != 0L) hash ^= NextLevelExp.GetHashCode();
+              if (KmWalked != 0F) hash ^= KmWalked.GetHashCode();
+              if (NumPokemonEncountered != 0) hash ^= NumPokemonEncountered.GetHashCode();
+              if (NumUniquePokedexEntries != 0) hash ^= NumUniquePokedexEntries.GetHashCode();
+              if (NumPokemonCaptured != 0) hash ^= NumPokemonCaptured.GetHashCode();
+              if (NumEvolutions != 0) hash ^= NumEvolutions.GetHashCode();
+              if (PokeStopVisits != 0) hash ^= PokeStopVisits.GetHashCode();
+              if (NumberOfPokeballThrown != 0) hash ^= NumberOfPokeballThrown.GetHashCode();
+              if (NumEggsHatched != 0) hash ^= NumEggsHatched.GetHashCode();
+              if (BigMagikarpCaught != 0) hash ^= BigMagikarpCaught.GetHashCode();
+              if (NumBattleAttackWon != 0) hash ^= NumBattleAttackWon.GetHashCode();
+              if (NumBattleAttackTotal != 0) hash ^= NumBattleAttackTotal.GetHashCode();
+              if (NumBattleDefendedWon != 0) hash ^= NumBattleDefendedWon.GetHashCode();
+              if (NumBattleTrainingWon != 0) hash ^= NumBattleTrainingWon.GetHashCode();
+              if (NumBattleTrainingTotal != 0) hash ^= NumBattleTrainingTotal.GetHashCode();
+              if (PrestigeRaisedTotal != 0) hash ^= PrestigeRaisedTotal.GetHashCode();
+              if (PrestigeDroppedTotal != 0) hash ^= PrestigeDroppedTotal.GetHashCode();
+              if (NumPokemonDeployed != 0) hash ^= NumPokemonDeployed.GetHashCode();
+              if (SmallRattataCaught != 0) hash ^= SmallRattataCaught.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            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 (PrevLevelExp != 0L) {
+                output.WriteRawTag(24);
+                output.WriteInt64(PrevLevelExp);
+              }
+              if (NextLevelExp != 0L) {
+                output.WriteRawTag(32);
+                output.WriteInt64(NextLevelExp);
+              }
+              if (KmWalked != 0F) {
+                output.WriteRawTag(45);
+                output.WriteFloat(KmWalked);
+              }
+              if (NumPokemonEncountered != 0) {
+                output.WriteRawTag(48);
+                output.WriteInt32(NumPokemonEncountered);
+              }
+              if (NumUniquePokedexEntries != 0) {
+                output.WriteRawTag(56);
+                output.WriteInt32(NumUniquePokedexEntries);
+              }
+              if (NumPokemonCaptured != 0) {
+                output.WriteRawTag(64);
+                output.WriteInt32(NumPokemonCaptured);
+              }
+              if (NumEvolutions != 0) {
+                output.WriteRawTag(72);
+                output.WriteInt32(NumEvolutions);
+              }
+              if (PokeStopVisits != 0) {
+                output.WriteRawTag(80);
+                output.WriteInt32(PokeStopVisits);
+              }
+              if (NumberOfPokeballThrown != 0) {
+                output.WriteRawTag(88);
+                output.WriteInt32(NumberOfPokeballThrown);
+              }
+              if (NumEggsHatched != 0) {
+                output.WriteRawTag(96);
+                output.WriteInt32(NumEggsHatched);
+              }
+              if (BigMagikarpCaught != 0) {
+                output.WriteRawTag(104);
+                output.WriteInt32(BigMagikarpCaught);
+              }
+              if (NumBattleAttackWon != 0) {
+                output.WriteRawTag(112);
+                output.WriteInt32(NumBattleAttackWon);
+              }
+              if (NumBattleAttackTotal != 0) {
+                output.WriteRawTag(120);
+                output.WriteInt32(NumBattleAttackTotal);
+              }
+              if (NumBattleDefendedWon != 0) {
+                output.WriteRawTag(128, 1);
+                output.WriteInt32(NumBattleDefendedWon);
+              }
+              if (NumBattleTrainingWon != 0) {
+                output.WriteRawTag(136, 1);
+                output.WriteInt32(NumBattleTrainingWon);
+              }
+              if (NumBattleTrainingTotal != 0) {
+                output.WriteRawTag(144, 1);
+                output.WriteInt32(NumBattleTrainingTotal);
+              }
+              if (PrestigeRaisedTotal != 0) {
+                output.WriteRawTag(152, 1);
+                output.WriteInt32(PrestigeRaisedTotal);
+              }
+              if (PrestigeDroppedTotal != 0) {
+                output.WriteRawTag(160, 1);
+                output.WriteInt32(PrestigeDroppedTotal);
+              }
+              if (NumPokemonDeployed != 0) {
+                output.WriteRawTag(168, 1);
+                output.WriteInt32(NumPokemonDeployed);
+              }
+              if (SmallRattataCaught != 0) {
+                output.WriteRawTag(184, 1);
+                output.WriteInt32(SmallRattataCaught);
+              }
+            }
+
+            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 (PrevLevelExp != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PrevLevelExp);
+              }
+              if (NextLevelExp != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(NextLevelExp);
+              }
+              if (KmWalked != 0F) {
+                size += 1 + 4;
+              }
+              if (NumPokemonEncountered != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonEncountered);
+              }
+              if (NumUniquePokedexEntries != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumUniquePokedexEntries);
+              }
+              if (NumPokemonCaptured != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonCaptured);
+              }
+              if (NumEvolutions != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumEvolutions);
+              }
+              if (PokeStopVisits != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(PokeStopVisits);
+              }
+              if (NumberOfPokeballThrown != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumberOfPokeballThrown);
+              }
+              if (NumEggsHatched != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumEggsHatched);
+              }
+              if (BigMagikarpCaught != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(BigMagikarpCaught);
+              }
+              if (NumBattleAttackWon != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumBattleAttackWon);
+              }
+              if (NumBattleAttackTotal != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(NumBattleAttackTotal);
+              }
+              if (NumBattleDefendedWon != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleDefendedWon);
+              }
+              if (NumBattleTrainingWon != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleTrainingWon);
+              }
+              if (NumBattleTrainingTotal != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumBattleTrainingTotal);
+              }
+              if (PrestigeRaisedTotal != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeRaisedTotal);
+              }
+              if (PrestigeDroppedTotal != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(PrestigeDroppedTotal);
+              }
+              if (NumPokemonDeployed != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumPokemonDeployed);
+              }
+              if (SmallRattataCaught != 0) {
+                size += 2 + pb::CodedOutputStream.ComputeInt32Size(SmallRattataCaught);
+              }
+              return size;
+            }
+
+            public void MergeFrom(PlayerStatsProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Level != 0) {
+                Level = other.Level;
+              }
+              if (other.Experience != 0L) {
+                Experience = other.Experience;
+              }
+              if (other.PrevLevelExp != 0L) {
+                PrevLevelExp = other.PrevLevelExp;
+              }
+              if (other.NextLevelExp != 0L) {
+                NextLevelExp = other.NextLevelExp;
+              }
+              if (other.KmWalked != 0F) {
+                KmWalked = other.KmWalked;
+              }
+              if (other.NumPokemonEncountered != 0) {
+                NumPokemonEncountered = other.NumPokemonEncountered;
+              }
+              if (other.NumUniquePokedexEntries != 0) {
+                NumUniquePokedexEntries = other.NumUniquePokedexEntries;
+              }
+              if (other.NumPokemonCaptured != 0) {
+                NumPokemonCaptured = other.NumPokemonCaptured;
+              }
+              if (other.NumEvolutions != 0) {
+                NumEvolutions = other.NumEvolutions;
+              }
+              if (other.PokeStopVisits != 0) {
+                PokeStopVisits = other.PokeStopVisits;
+              }
+              if (other.NumberOfPokeballThrown != 0) {
+                NumberOfPokeballThrown = other.NumberOfPokeballThrown;
+              }
+              if (other.NumEggsHatched != 0) {
+                NumEggsHatched = other.NumEggsHatched;
+              }
+              if (other.BigMagikarpCaught != 0) {
+                BigMagikarpCaught = other.BigMagikarpCaught;
+              }
+              if (other.NumBattleAttackWon != 0) {
+                NumBattleAttackWon = other.NumBattleAttackWon;
+              }
+              if (other.NumBattleAttackTotal != 0) {
+                NumBattleAttackTotal = other.NumBattleAttackTotal;
+              }
+              if (other.NumBattleDefendedWon != 0) {
+                NumBattleDefendedWon = other.NumBattleDefendedWon;
+              }
+              if (other.NumBattleTrainingWon != 0) {
+                NumBattleTrainingWon = other.NumBattleTrainingWon;
+              }
+              if (other.NumBattleTrainingTotal != 0) {
+                NumBattleTrainingTotal = other.NumBattleTrainingTotal;
+              }
+              if (other.PrestigeRaisedTotal != 0) {
+                PrestigeRaisedTotal = other.PrestigeRaisedTotal;
+              }
+              if (other.PrestigeDroppedTotal != 0) {
+                PrestigeDroppedTotal = other.PrestigeDroppedTotal;
+              }
+              if (other.NumPokemonDeployed != 0) {
+                NumPokemonDeployed = other.NumPokemonDeployed;
+              }
+              if (other.SmallRattataCaught != 0) {
+                SmallRattataCaught = other.SmallRattataCaught;
+              }
+            }
+
+            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: {
+                    PrevLevelExp = input.ReadInt64();
+                    break;
+                  }
+                  case 32: {
+                    NextLevelExp = input.ReadInt64();
+                    break;
+                  }
+                  case 45: {
+                    KmWalked = input.ReadFloat();
+                    break;
+                  }
+                  case 48: {
+                    NumPokemonEncountered = input.ReadInt32();
+                    break;
+                  }
+                  case 56: {
+                    NumUniquePokedexEntries = input.ReadInt32();
+                    break;
+                  }
+                  case 64: {
+                    NumPokemonCaptured = input.ReadInt32();
+                    break;
+                  }
+                  case 72: {
+                    NumEvolutions = input.ReadInt32();
+                    break;
+                  }
+                  case 80: {
+                    PokeStopVisits = input.ReadInt32();
+                    break;
+                  }
+                  case 88: {
+                    NumberOfPokeballThrown = input.ReadInt32();
+                    break;
+                  }
+                  case 96: {
+                    NumEggsHatched = input.ReadInt32();
+                    break;
+                  }
+                  case 104: {
+                    BigMagikarpCaught = input.ReadInt32();
+                    break;
+                  }
+                  case 112: {
+                    NumBattleAttackWon = input.ReadInt32();
+                    break;
+                  }
+                  case 120: {
+                    NumBattleAttackTotal = input.ReadInt32();
+                    break;
+                  }
+                  case 128: {
+                    NumBattleDefendedWon = input.ReadInt32();
+                    break;
+                  }
+                  case 136: {
+                    NumBattleTrainingWon = input.ReadInt32();
+                    break;
+                  }
+                  case 144: {
+                    NumBattleTrainingTotal = input.ReadInt32();
+                    break;
+                  }
+                  case 152: {
+                    PrestigeRaisedTotal = input.ReadInt32();
+                    break;
+                  }
+                  case 160: {
+                    PrestigeDroppedTotal = input.ReadInt32();
+                    break;
+                  }
+                  case 168: {
+                    NumPokemonDeployed = input.ReadInt32();
+                    break;
+                  }
+                  case 184: {
+                    SmallRattataCaught = input.ReadInt32();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class AppliedItemProto : pb::IMessage<AppliedItemProto> {
+            private static readonly pb::MessageParser<AppliedItemProto> _parser = new pb::MessageParser<AppliedItemProto>(() => new AppliedItemProto());
+            public static pb::MessageParser<AppliedItemProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[3]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public AppliedItemProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public AppliedItemProto(AppliedItemProto other) : this() {
+              item_ = other.item_;
+              itemType_ = other.itemType_;
+              expirationMs_ = other.expirationMs_;
+              appliedMs_ = other.appliedMs_;
+            }
+
+            public AppliedItemProto Clone() {
+              return new AppliedItemProto(this);
+            }
+
+            /// <summary>Field number for the "Item" field.</summary>
+            public const int ItemFieldNumber = 1;
+            private int item_;
+            public int Item {
+              get { return item_; }
+              set {
+                item_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "ItemType" field.</summary>
+            public const int ItemTypeFieldNumber = 2;
+            private int itemType_;
+            public int ItemType {
+              get { return itemType_; }
+              set {
+                itemType_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "ExpirationMs" field.</summary>
+            public const int ExpirationMsFieldNumber = 3;
+            private long expirationMs_;
+            public long ExpirationMs {
+              get { return expirationMs_; }
+              set {
+                expirationMs_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "AppliedMs" field.</summary>
+            public const int AppliedMsFieldNumber = 4;
+            private long appliedMs_;
+            public long AppliedMs {
+              get { return appliedMs_; }
+              set {
+                appliedMs_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as AppliedItemProto);
+            }
+
+            public bool Equals(AppliedItemProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (Item != other.Item) return false;
+              if (ItemType != other.ItemType) return false;
+              if (ExpirationMs != other.ExpirationMs) return false;
+              if (AppliedMs != other.AppliedMs) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Item != 0) hash ^= Item.GetHashCode();
+              if (ItemType != 0) hash ^= ItemType.GetHashCode();
+              if (ExpirationMs != 0L) hash ^= ExpirationMs.GetHashCode();
+              if (AppliedMs != 0L) hash ^= AppliedMs.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (Item != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(Item);
+              }
+              if (ItemType != 0) {
+                output.WriteRawTag(16);
+                output.WriteInt32(ItemType);
+              }
+              if (ExpirationMs != 0L) {
+                output.WriteRawTag(24);
+                output.WriteInt64(ExpirationMs);
+              }
+              if (AppliedMs != 0L) {
+                output.WriteRawTag(32);
+                output.WriteInt64(AppliedMs);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (Item != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item);
+              }
+              if (ItemType != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemType);
+              }
+              if (ExpirationMs != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(ExpirationMs);
+              }
+              if (AppliedMs != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(AppliedMs);
+              }
+              return size;
+            }
+
+            public void MergeFrom(AppliedItemProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Item != 0) {
+                Item = other.Item;
+              }
+              if (other.ItemType != 0) {
+                ItemType = other.ItemType;
+              }
+              if (other.ExpirationMs != 0L) {
+                ExpirationMs = other.ExpirationMs;
+              }
+              if (other.AppliedMs != 0L) {
+                AppliedMs = other.AppliedMs;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    Item = input.ReadInt32();
+                    break;
+                  }
+                  case 16: {
+                    ItemType = input.ReadInt32();
+                    break;
+                  }
+                  case 24: {
+                    ExpirationMs = input.ReadInt64();
+                    break;
+                  }
+                  case 32: {
+                    AppliedMs = input.ReadInt64();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class PlayerCameraProto : pb::IMessage<PlayerCameraProto> {
+            private static readonly pb::MessageParser<PlayerCameraProto> _parser = new pb::MessageParser<PlayerCameraProto>(() => new PlayerCameraProto());
+            public static pb::MessageParser<PlayerCameraProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[4]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public PlayerCameraProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public PlayerCameraProto(PlayerCameraProto other) : this() {
+              defaultCamera_ = other.defaultCamera_;
+            }
+
+            public PlayerCameraProto Clone() {
+              return new PlayerCameraProto(this);
+            }
+
+            /// <summary>Field number for the "DefaultCamera" field.</summary>
+            public const int DefaultCameraFieldNumber = 1;
+            private bool defaultCamera_;
+            public bool DefaultCamera {
+              get { return defaultCamera_; }
+              set {
+                defaultCamera_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as PlayerCameraProto);
+            }
+
+            public bool Equals(PlayerCameraProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (DefaultCamera != other.DefaultCamera) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (DefaultCamera != false) hash ^= DefaultCamera.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (DefaultCamera != false) {
+                output.WriteRawTag(8);
+                output.WriteBool(DefaultCamera);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (DefaultCamera != false) {
+                size += 1 + 1;
+              }
+              return size;
+            }
+
+            public void MergeFrom(PlayerCameraProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.DefaultCamera != false) {
+                DefaultCamera = other.DefaultCamera;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    DefaultCamera = input.ReadBool();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class PlayerCurrencyProto : pb::IMessage<PlayerCurrencyProto> {
+            private static readonly pb::MessageParser<PlayerCurrencyProto> _parser = new pb::MessageParser<PlayerCurrencyProto>(() => new PlayerCurrencyProto());
+            public static pb::MessageParser<PlayerCurrencyProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[5]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public PlayerCurrencyProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public PlayerCurrencyProto(PlayerCurrencyProto other) : this() {
+              gems_ = other.gems_;
+            }
+
+            public PlayerCurrencyProto Clone() {
+              return new PlayerCurrencyProto(this);
+            }
+
+            /// <summary>Field number for the "Gems" field.</summary>
+            public const int GemsFieldNumber = 1;
+            private int gems_;
+            public int Gems {
+              get { return gems_; }
+              set {
+                gems_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as PlayerCurrencyProto);
+            }
+
+            public bool Equals(PlayerCurrencyProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (Gems != other.Gems) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (Gems != 0) hash ^= Gems.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (Gems != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(Gems);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (Gems != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gems);
+              }
+              return size;
+            }
+
+            public void MergeFrom(PlayerCurrencyProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.Gems != 0) {
+                Gems = other.Gems;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    Gems = input.ReadInt32();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class InventoryUpgradesProto : pb::IMessage<InventoryUpgradesProto> {
+            private static readonly pb::MessageParser<InventoryUpgradesProto> _parser = new pb::MessageParser<InventoryUpgradesProto>(() => new InventoryUpgradesProto());
+            public static pb::MessageParser<InventoryUpgradesProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[6]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public InventoryUpgradesProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public InventoryUpgradesProto(InventoryUpgradesProto other) : this() {
+              inventoryUpgrade_ = other.inventoryUpgrade_;
+            }
+
+            public InventoryUpgradesProto Clone() {
+              return new InventoryUpgradesProto(this);
+            }
+
+            /// <summary>Field number for the "InventoryUpgrade" field.</summary>
+            public const int InventoryUpgradeFieldNumber = 1;
+            private int inventoryUpgrade_;
+            public int InventoryUpgrade {
+              get { return inventoryUpgrade_; }
+              set {
+                inventoryUpgrade_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as InventoryUpgradesProto);
+            }
+
+            public bool Equals(InventoryUpgradesProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (InventoryUpgrade != other.InventoryUpgrade) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (InventoryUpgrade != 0) hash ^= InventoryUpgrade.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (InventoryUpgrade != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(InventoryUpgrade);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (InventoryUpgrade != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(InventoryUpgrade);
+              }
+              return size;
+            }
+
+            public void MergeFrom(InventoryUpgradesProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.InventoryUpgrade != 0) {
+                InventoryUpgrade = other.InventoryUpgrade;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    InventoryUpgrade = input.ReadInt32();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class EggIncubatorProto : pb::IMessage<EggIncubatorProto> {
+            private static readonly pb::MessageParser<EggIncubatorProto> _parser = new pb::MessageParser<EggIncubatorProto>(() => new EggIncubatorProto());
+            public static pb::MessageParser<EggIncubatorProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[7]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public EggIncubatorProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public EggIncubatorProto(EggIncubatorProto other) : this() {
+              itemId_ = other.itemId_;
+              Item = other.item_ != null ? other.Item.Clone() : null;
+              incubatorType_ = other.incubatorType_;
+              usesRemaining_ = other.usesRemaining_;
+              pokemonId_ = other.pokemonId_;
+              startKmWalked_ = other.startKmWalked_;
+              targetKmWalked_ = other.targetKmWalked_;
+            }
+
+            public EggIncubatorProto Clone() {
+              return new EggIncubatorProto(this);
+            }
+
+            /// <summary>Field number for the "ItemId" field.</summary>
+            public const int ItemIdFieldNumber = 1;
+            private string itemId_ = "";
+            public string ItemId {
+              get { return itemId_; }
+              set {
+                itemId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+              }
+            }
+
+            /// <summary>Field number for the "Item" field.</summary>
+            public const int ItemFieldNumber = 2;
+            private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto item_;
+            public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto Item {
+              get { return item_; }
+              set {
+                item_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "IncubatorType" field.</summary>
+            public const int IncubatorTypeFieldNumber = 3;
+            private int incubatorType_;
+            public int IncubatorType {
+              get { return incubatorType_; }
+              set {
+                incubatorType_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "UsesRemaining" field.</summary>
+            public const int UsesRemainingFieldNumber = 4;
+            private int usesRemaining_;
+            public int UsesRemaining {
+              get { return usesRemaining_; }
+              set {
+                usesRemaining_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "PokemonId" field.</summary>
+            public const int PokemonIdFieldNumber = 5;
+            private long pokemonId_;
+            public long PokemonId {
+              get { return pokemonId_; }
+              set {
+                pokemonId_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "StartKmWalked" field.</summary>
+            public const int StartKmWalkedFieldNumber = 6;
+            private double startKmWalked_;
+            public double StartKmWalked {
+              get { return startKmWalked_; }
+              set {
+                startKmWalked_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "TargetKmWalked" field.</summary>
+            public const int TargetKmWalkedFieldNumber = 7;
+            private double targetKmWalked_;
+            public double TargetKmWalked {
+              get { return targetKmWalked_; }
+              set {
+                targetKmWalked_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as EggIncubatorProto);
+            }
+
+            public bool Equals(EggIncubatorProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (ItemId != other.ItemId) return false;
+              if (!object.Equals(Item, other.Item)) return false;
+              if (IncubatorType != other.IncubatorType) return false;
+              if (UsesRemaining != other.UsesRemaining) return false;
+              if (PokemonId != other.PokemonId) return false;
+              if (StartKmWalked != other.StartKmWalked) return false;
+              if (TargetKmWalked != other.TargetKmWalked) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (ItemId.Length != 0) hash ^= ItemId.GetHashCode();
+              if (item_ != null) hash ^= Item.GetHashCode();
+              if (IncubatorType != 0) hash ^= IncubatorType.GetHashCode();
+              if (UsesRemaining != 0) hash ^= UsesRemaining.GetHashCode();
+              if (PokemonId != 0L) hash ^= PokemonId.GetHashCode();
+              if (StartKmWalked != 0D) hash ^= StartKmWalked.GetHashCode();
+              if (TargetKmWalked != 0D) hash ^= TargetKmWalked.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (ItemId.Length != 0) {
+                output.WriteRawTag(10);
+                output.WriteString(ItemId);
+              }
+              if (item_ != null) {
+                output.WriteRawTag(18);
+                output.WriteMessage(Item);
+              }
+              if (IncubatorType != 0) {
+                output.WriteRawTag(24);
+                output.WriteInt32(IncubatorType);
+              }
+              if (UsesRemaining != 0) {
+                output.WriteRawTag(32);
+                output.WriteInt32(UsesRemaining);
+              }
+              if (PokemonId != 0L) {
+                output.WriteRawTag(40);
+                output.WriteInt64(PokemonId);
+              }
+              if (StartKmWalked != 0D) {
+                output.WriteRawTag(49);
+                output.WriteDouble(StartKmWalked);
+              }
+              if (TargetKmWalked != 0D) {
+                output.WriteRawTag(57);
+                output.WriteDouble(TargetKmWalked);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (ItemId.Length != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemId);
+              }
+              if (item_ != null) {
+                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Item);
+              }
+              if (IncubatorType != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(IncubatorType);
+              }
+              if (UsesRemaining != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(UsesRemaining);
+              }
+              if (PokemonId != 0L) {
+                size += 1 + pb::CodedOutputStream.ComputeInt64Size(PokemonId);
+              }
+              if (StartKmWalked != 0D) {
+                size += 1 + 8;
+              }
+              if (TargetKmWalked != 0D) {
+                size += 1 + 8;
+              }
+              return size;
+            }
+
+            public void MergeFrom(EggIncubatorProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.ItemId.Length != 0) {
+                ItemId = other.ItemId;
+              }
+              if (other.item_ != null) {
+                if (item_ == null) {
+                  item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
+                }
+                Item.MergeFrom(other.Item);
+              }
+              if (other.IncubatorType != 0) {
+                IncubatorType = other.IncubatorType;
+              }
+              if (other.UsesRemaining != 0) {
+                UsesRemaining = other.UsesRemaining;
+              }
+              if (other.PokemonId != 0L) {
+                PokemonId = other.PokemonId;
+              }
+              if (other.StartKmWalked != 0D) {
+                StartKmWalked = other.StartKmWalked;
+              }
+              if (other.TargetKmWalked != 0D) {
+                TargetKmWalked = other.TargetKmWalked;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 10: {
+                    ItemId = input.ReadString();
+                    break;
+                  }
+                  case 18: {
+                    if (item_ == null) {
+                      item_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Types.ItemProto();
+                    }
+                    input.ReadMessage(item_);
+                    break;
+                  }
+                  case 24: {
+                    IncubatorType = input.ReadInt32();
+                    break;
+                  }
+                  case 32: {
+                    UsesRemaining = input.ReadInt32();
+                    break;
+                  }
+                  case 40: {
+                    PokemonId = input.ReadInt64();
+                    break;
+                  }
+                  case 49: {
+                    StartKmWalked = input.ReadDouble();
+                    break;
+                  }
+                  case 57: {
+                    TargetKmWalked = input.ReadDouble();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+          [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+          public sealed partial class PokemonFamilyProto : pb::IMessage<PokemonFamilyProto> {
+            private static readonly pb::MessageParser<PokemonFamilyProto> _parser = new pb::MessageParser<PokemonFamilyProto>(() => new PokemonFamilyProto());
+            public static pb::MessageParser<PokemonFamilyProto> Parser { get { return _parser; } }
+
+            public static pbr::MessageDescriptor Descriptor {
+              get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.InventoryItemProto.Descriptor.NestedTypes[8]; }
+            }
+
+            pbr::MessageDescriptor pb::IMessage.Descriptor {
+              get { return Descriptor; }
+            }
+
+            public PokemonFamilyProto() {
+              OnConstruction();
+            }
+
+            partial void OnConstruction();
+
+            public PokemonFamilyProto(PokemonFamilyProto other) : this() {
+              familyId_ = other.familyId_;
+              candy_ = other.candy_;
+            }
+
+            public PokemonFamilyProto Clone() {
+              return new PokemonFamilyProto(this);
+            }
+
+            /// <summary>Field number for the "FamilyId" field.</summary>
+            public const int FamilyIdFieldNumber = 1;
+            private int familyId_;
+            public int FamilyId {
+              get { return familyId_; }
+              set {
+                familyId_ = value;
+              }
+            }
+
+            /// <summary>Field number for the "Candy" field.</summary>
+            public const int CandyFieldNumber = 2;
+            private int candy_;
+            public int Candy {
+              get { return candy_; }
+              set {
+                candy_ = value;
+              }
+            }
+
+            public override bool Equals(object other) {
+              return Equals(other as PokemonFamilyProto);
+            }
+
+            public bool Equals(PokemonFamilyProto other) {
+              if (ReferenceEquals(other, null)) {
+                return false;
+              }
+              if (ReferenceEquals(other, this)) {
+                return true;
+              }
+              if (FamilyId != other.FamilyId) return false;
+              if (Candy != other.Candy) return false;
+              return true;
+            }
+
+            public override int GetHashCode() {
+              int hash = 1;
+              if (FamilyId != 0) hash ^= FamilyId.GetHashCode();
+              if (Candy != 0) hash ^= Candy.GetHashCode();
+              return hash;
+            }
+
+            public override string ToString() {
+              return pb::JsonFormatter.ToDiagnosticString(this);
+            }
+
+            public void WriteTo(pb::CodedOutputStream output) {
+              if (FamilyId != 0) {
+                output.WriteRawTag(8);
+                output.WriteInt32(FamilyId);
+              }
+              if (Candy != 0) {
+                output.WriteRawTag(16);
+                output.WriteInt32(Candy);
+              }
+            }
+
+            public int CalculateSize() {
+              int size = 0;
+              if (FamilyId != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(FamilyId);
+              }
+              if (Candy != 0) {
+                size += 1 + pb::CodedOutputStream.ComputeInt32Size(Candy);
+              }
+              return size;
+            }
+
+            public void MergeFrom(PokemonFamilyProto other) {
+              if (other == null) {
+                return;
+              }
+              if (other.FamilyId != 0) {
+                FamilyId = other.FamilyId;
+              }
+              if (other.Candy != 0) {
+                Candy = other.Candy;
+              }
+            }
+
+            public void MergeFrom(pb::CodedInputStream input) {
+              uint tag;
+              while ((tag = input.ReadTag()) != 0) {
+                switch(tag) {
+                  default:
+                    input.SkipLastField();
+                    break;
+                  case 8: {
+                    FamilyId = input.ReadInt32();
+                    break;
+                  }
+                  case 16: {
+                    Candy = input.ReadInt32();
+                    break;
+                  }
+                }
+              }
+            }
+
+          }
+
+        }
+        #endregion
+
+      }
+
+      /// <summary>
+      ///  POKEMON TRANSFER
+      /// </summary>
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class TransferPokemonProto : pb::IMessage<TransferPokemonProto> {
+        private static readonly pb::MessageParser<TransferPokemonProto> _parser = new pb::MessageParser<TransferPokemonProto>(() => new TransferPokemonProto());
+        public static pb::MessageParser<TransferPokemonProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[5]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public TransferPokemonProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public TransferPokemonProto(TransferPokemonProto other) : this() {
+          pokemonId_ = other.pokemonId_;
+        }
+
+        public TransferPokemonProto Clone() {
+          return new TransferPokemonProto(this);
+        }
+
+        /// <summary>Field number for the "PokemonId" field.</summary>
+        public const int PokemonIdFieldNumber = 1;
+        private ulong pokemonId_;
+        public ulong PokemonId {
+          get { return pokemonId_; }
+          set {
+            pokemonId_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as TransferPokemonProto);
+        }
+
+        public bool Equals(TransferPokemonProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (PokemonId != other.PokemonId) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (PokemonId != 0UL) {
+            output.WriteRawTag(9);
+            output.WriteFixed64(PokemonId);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (PokemonId != 0UL) {
+            size += 1 + 8;
+          }
+          return size;
+        }
+
+        public void MergeFrom(TransferPokemonProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.PokemonId != 0UL) {
+            PokemonId = other.PokemonId;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 9: {
+                PokemonId = input.ReadFixed64();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class TransferPokemonOutProto : pb::IMessage<TransferPokemonOutProto> {
+        private static readonly pb::MessageParser<TransferPokemonOutProto> _parser = new pb::MessageParser<TransferPokemonOutProto>(() => new TransferPokemonOutProto());
+        public static pb::MessageParser<TransferPokemonOutProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[6]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public TransferPokemonOutProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public TransferPokemonOutProto(TransferPokemonOutProto other) : this() {
+          status_ = other.status_;
+          candyAwarded_ = other.candyAwarded_;
+        }
+
+        public TransferPokemonOutProto Clone() {
+          return new TransferPokemonOutProto(this);
+        }
+
+        /// <summary>Field number for the "Status" field.</summary>
+        public const int StatusFieldNumber = 1;
+        private int status_;
+        public int Status {
+          get { return status_; }
+          set {
+            status_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "CandyAwarded" field.</summary>
+        public const int CandyAwardedFieldNumber = 2;
+        private int candyAwarded_;
+        public int CandyAwarded {
+          get { return candyAwarded_; }
+          set {
+            candyAwarded_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as TransferPokemonOutProto);
+        }
+
+        public bool Equals(TransferPokemonOutProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Status != other.Status) return false;
+          if (CandyAwarded != other.CandyAwarded) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Status != 0) hash ^= Status.GetHashCode();
+          if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Status != 0) {
+            output.WriteRawTag(8);
+            output.WriteInt32(Status);
+          }
+          if (CandyAwarded != 0) {
+            output.WriteRawTag(16);
+            output.WriteInt32(CandyAwarded);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Status != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Status);
+          }
+          if (CandyAwarded != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
+          }
+          return size;
+        }
+
+        public void MergeFrom(TransferPokemonOutProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Status != 0) {
+            Status = other.Status;
+          }
+          if (other.CandyAwarded != 0) {
+            CandyAwarded = other.CandyAwarded;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                Status = input.ReadInt32();
+                break;
+              }
+              case 16: {
+                CandyAwarded = input.ReadInt32();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      /// <summary>
+      ///  EVOLVE
+      /// </summary>
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class EvolvePokemonProto : pb::IMessage<EvolvePokemonProto> {
+        private static readonly pb::MessageParser<EvolvePokemonProto> _parser = new pb::MessageParser<EvolvePokemonProto>(() => new EvolvePokemonProto());
+        public static pb::MessageParser<EvolvePokemonProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[7]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public EvolvePokemonProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public EvolvePokemonProto(EvolvePokemonProto other) : this() {
+          pokemonId_ = other.pokemonId_;
+        }
+
+        public EvolvePokemonProto Clone() {
+          return new EvolvePokemonProto(this);
+        }
+
+        /// <summary>Field number for the "PokemonId" field.</summary>
+        public const int PokemonIdFieldNumber = 1;
+        private ulong pokemonId_;
+        public ulong PokemonId {
+          get { return pokemonId_; }
+          set {
+            pokemonId_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as EvolvePokemonProto);
+        }
+
+        public bool Equals(EvolvePokemonProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (PokemonId != other.PokemonId) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (PokemonId != 0UL) hash ^= PokemonId.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (PokemonId != 0UL) {
+            output.WriteRawTag(9);
+            output.WriteFixed64(PokemonId);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (PokemonId != 0UL) {
+            size += 1 + 8;
+          }
+          return size;
+        }
+
+        public void MergeFrom(EvolvePokemonProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.PokemonId != 0UL) {
+            PokemonId = other.PokemonId;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 9: {
+                PokemonId = input.ReadFixed64();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class EvolvePokemonOutProto : pb::IMessage<EvolvePokemonOutProto> {
+        private static readonly pb::MessageParser<EvolvePokemonOutProto> _parser = new pb::MessageParser<EvolvePokemonOutProto>(() => new EvolvePokemonOutProto());
+        public static pb::MessageParser<EvolvePokemonOutProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[8]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public EvolvePokemonOutProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public EvolvePokemonOutProto(EvolvePokemonOutProto other) : this() {
+          result_ = other.result_;
+          EvolvedPokemon = other.evolvedPokemon_ != null ? other.EvolvedPokemon.Clone() : null;
+          expAwarded_ = other.expAwarded_;
+          candyAwarded_ = other.candyAwarded_;
+        }
+
+        public EvolvePokemonOutProto Clone() {
+          return new EvolvePokemonOutProto(this);
+        }
+
+        /// <summary>Field number for the "Result" field.</summary>
+        public const int ResultFieldNumber = 1;
+        private int result_;
+        public int Result {
+          get { return result_; }
+          set {
+            result_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "EvolvedPokemon" field.</summary>
+        public const int EvolvedPokemonFieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto evolvedPokemon_;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto EvolvedPokemon {
+          get { return evolvedPokemon_; }
+          set {
+            evolvedPokemon_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "ExpAwarded" field.</summary>
+        public const int ExpAwardedFieldNumber = 3;
+        private int expAwarded_;
+        public int ExpAwarded {
+          get { return expAwarded_; }
+          set {
+            expAwarded_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "CandyAwarded" field.</summary>
+        public const int CandyAwardedFieldNumber = 4;
+        private int candyAwarded_;
+        public int CandyAwarded {
+          get { return candyAwarded_; }
+          set {
+            candyAwarded_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as EvolvePokemonOutProto);
+        }
+
+        public bool Equals(EvolvePokemonOutProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Result != other.Result) return false;
+          if (!object.Equals(EvolvedPokemon, other.EvolvedPokemon)) return false;
+          if (ExpAwarded != other.ExpAwarded) return false;
+          if (CandyAwarded != other.CandyAwarded) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Result != 0) hash ^= Result.GetHashCode();
+          if (evolvedPokemon_ != null) hash ^= EvolvedPokemon.GetHashCode();
+          if (ExpAwarded != 0) hash ^= ExpAwarded.GetHashCode();
+          if (CandyAwarded != 0) hash ^= CandyAwarded.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Result != 0) {
+            output.WriteRawTag(8);
+            output.WriteInt32(Result);
+          }
+          if (evolvedPokemon_ != null) {
+            output.WriteRawTag(18);
+            output.WriteMessage(EvolvedPokemon);
+          }
+          if (ExpAwarded != 0) {
+            output.WriteRawTag(24);
+            output.WriteInt32(ExpAwarded);
+          }
+          if (CandyAwarded != 0) {
+            output.WriteRawTag(32);
+            output.WriteInt32(CandyAwarded);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Result != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Result);
+          }
+          if (evolvedPokemon_ != null) {
+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EvolvedPokemon);
+          }
+          if (ExpAwarded != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpAwarded);
+          }
+          if (CandyAwarded != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(CandyAwarded);
+          }
+          return size;
+        }
+
+        public void MergeFrom(EvolvePokemonOutProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Result != 0) {
+            Result = other.Result;
+          }
+          if (other.evolvedPokemon_ != null) {
+            if (evolvedPokemon_ == null) {
+              evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
+            }
+            EvolvedPokemon.MergeFrom(other.EvolvedPokemon);
+          }
+          if (other.ExpAwarded != 0) {
+            ExpAwarded = other.ExpAwarded;
+          }
+          if (other.CandyAwarded != 0) {
+            CandyAwarded = other.CandyAwarded;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                Result = input.ReadInt32();
+                break;
+              }
+              case 18: {
+                if (evolvedPokemon_ == null) {
+                  evolvedPokemon_ = new global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto();
+                }
+                input.ReadMessage(evolvedPokemon_);
+                break;
+              }
+              case 24: {
+                ExpAwarded = input.ReadInt32();
+                break;
+              }
+              case 32: {
+                CandyAwarded = input.ReadInt32();
+                break;
+              }
+            }
+          }
+        }
+
+      }
+
+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+      public sealed partial class PokemonProto : pb::IMessage<PokemonProto> {
+        private static readonly pb::MessageParser<PokemonProto> _parser = new pb::MessageParser<PokemonProto>(() => new PokemonProto());
+        public static pb::MessageParser<PokemonProto> Parser { get { return _parser; } }
+
+        public static pbr::MessageDescriptor Descriptor {
+          get { return global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Descriptor.NestedTypes[9]; }
+        }
+
+        pbr::MessageDescriptor pb::IMessage.Descriptor {
+          get { return Descriptor; }
+        }
+
+        public PokemonProto() {
+          OnConstruction();
+        }
+
+        partial void OnConstruction();
+
+        public PokemonProto(PokemonProto other) : this() {
+          id_ = other.id_;
+          pokemonId_ = other.pokemonId_;
+          cp_ = other.cp_;
+          stamina_ = other.stamina_;
+          maxStamina_ = other.maxStamina_;
+          move1_ = other.move1_;
+          move2_ = other.move2_;
+          deployedFortId_ = other.deployedFortId_;
+          ownerName_ = other.ownerName_;
+          isEgg_ = other.isEgg_;
+          eggKmWalkedTarget_ = other.eggKmWalkedTarget_;
+          eggKmWalkedStart_ = other.eggKmWalkedStart_;
+          origin_ = other.origin_;
+          heightM_ = other.heightM_;
+          weightKg_ = other.weightKg_;
+          individualAttack_ = other.individualAttack_;
+          individualDefense_ = other.individualDefense_;
+          individualStamina_ = other.individualStamina_;
+          cpMultiplier_ = other.cpMultiplier_;
+          pokeball_ = other.pokeball_;
+          capturedS2CellId_ = other.capturedS2CellId_;
+          battlesAttacked_ = other.battlesAttacked_;
+          battlesDefended_ = other.battlesDefended_;
+          eggIncubatorId_ = other.eggIncubatorId_;
+          creationTimeMs_ = other.creationTimeMs_;
+          numUpgrades_ = other.numUpgrades_;
+          additionalCpMultiplier_ = other.additionalCpMultiplier_;
+          favorite_ = other.favorite_;
+          nickname_ = other.nickname_;
+          fromFort_ = other.fromFort_;
+        }
+
+        public PokemonProto Clone() {
+          return new PokemonProto(this);
+        }
+
+        /// <summary>Field number for the "Id" field.</summary>
+        public const int IdFieldNumber = 1;
+        private int id_;
+        public int Id {
+          get { return id_; }
+          set {
+            id_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "PokemonId" field.</summary>
+        public const int PokemonIdFieldNumber = 2;
+        private global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonIds pokemonId_ = 0;
+        public global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonIds PokemonId {
+          get { return pokemonId_; }
+          set {
+            pokemonId_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Cp" field.</summary>
+        public const int CpFieldNumber = 3;
+        private int cp_;
+        public int Cp {
+          get { return cp_; }
+          set {
+            cp_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Stamina" field.</summary>
+        public const int StaminaFieldNumber = 4;
+        private int stamina_;
+        public int Stamina {
+          get { return stamina_; }
+          set {
+            stamina_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "MaxStamina" field.</summary>
+        public const int MaxStaminaFieldNumber = 5;
+        private int maxStamina_;
+        public int MaxStamina {
+          get { return maxStamina_; }
+          set {
+            maxStamina_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Move1" field.</summary>
+        public const int Move1FieldNumber = 6;
+        private int move1_;
+        public int Move1 {
+          get { return move1_; }
+          set {
+            move1_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Move2" field.</summary>
+        public const int Move2FieldNumber = 7;
+        private int move2_;
+        public int Move2 {
+          get { return move2_; }
+          set {
+            move2_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "DeployedFortId" field.</summary>
+        public const int DeployedFortIdFieldNumber = 8;
+        private int deployedFortId_;
+        public int DeployedFortId {
+          get { return deployedFortId_; }
+          set {
+            deployedFortId_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "OwnerName" field.</summary>
+        public const int OwnerNameFieldNumber = 9;
+        private int ownerName_;
+        public int OwnerName {
+          get { return ownerName_; }
+          set {
+            ownerName_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "IsEgg" field.</summary>
+        public const int IsEggFieldNumber = 10;
+        private int isEgg_;
+        public int IsEgg {
+          get { return isEgg_; }
+          set {
+            isEgg_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "EggKmWalkedTarget" field.</summary>
+        public const int EggKmWalkedTargetFieldNumber = 11;
+        private int eggKmWalkedTarget_;
+        public int EggKmWalkedTarget {
+          get { return eggKmWalkedTarget_; }
+          set {
+            eggKmWalkedTarget_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "EggKmWalkedStart" field.</summary>
+        public const int EggKmWalkedStartFieldNumber = 12;
+        private int eggKmWalkedStart_;
+        public int EggKmWalkedStart {
+          get { return eggKmWalkedStart_; }
+          set {
+            eggKmWalkedStart_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Origin" field.</summary>
+        public const int OriginFieldNumber = 14;
+        private int origin_;
+        public int Origin {
+          get { return origin_; }
+          set {
+            origin_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "HeightM" field.</summary>
+        public const int HeightMFieldNumber = 15;
+        private uint heightM_;
+        public uint HeightM {
+          get { return heightM_; }
+          set {
+            heightM_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "WeightKg" field.</summary>
+        public const int WeightKgFieldNumber = 16;
+        private uint weightKg_;
+        public uint WeightKg {
+          get { return weightKg_; }
+          set {
+            weightKg_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "IndividualAttack" field.</summary>
+        public const int IndividualAttackFieldNumber = 17;
+        private int individualAttack_;
+        public int IndividualAttack {
+          get { return individualAttack_; }
+          set {
+            individualAttack_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "IndividualDefense" field.</summary>
+        public const int IndividualDefenseFieldNumber = 18;
+        private int individualDefense_;
+        public int IndividualDefense {
+          get { return individualDefense_; }
+          set {
+            individualDefense_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "IndividualStamina" field.</summary>
+        public const int IndividualStaminaFieldNumber = 19;
+        private int individualStamina_;
+        public int IndividualStamina {
+          get { return individualStamina_; }
+          set {
+            individualStamina_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "CpMultiplier" field.</summary>
+        public const int CpMultiplierFieldNumber = 20;
+        private uint cpMultiplier_;
+        public uint CpMultiplier {
+          get { return cpMultiplier_; }
+          set {
+            cpMultiplier_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Pokeball" field.</summary>
+        public const int PokeballFieldNumber = 21;
+        private int pokeball_;
+        public int Pokeball {
+          get { return pokeball_; }
+          set {
+            pokeball_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "CapturedS2CellId" field.</summary>
+        public const int CapturedS2CellIdFieldNumber = 22;
+        private ulong capturedS2CellId_;
+        public ulong CapturedS2CellId {
+          get { return capturedS2CellId_; }
+          set {
+            capturedS2CellId_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "BattlesAttacked" field.</summary>
+        public const int BattlesAttackedFieldNumber = 23;
+        private int battlesAttacked_;
+        public int BattlesAttacked {
+          get { return battlesAttacked_; }
+          set {
+            battlesAttacked_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "BattlesDefended" field.</summary>
+        public const int BattlesDefendedFieldNumber = 24;
+        private int battlesDefended_;
+        public int BattlesDefended {
+          get { return battlesDefended_; }
+          set {
+            battlesDefended_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "EggIncubatorId" field.</summary>
+        public const int EggIncubatorIdFieldNumber = 25;
+        private int eggIncubatorId_;
+        public int EggIncubatorId {
+          get { return eggIncubatorId_; }
+          set {
+            eggIncubatorId_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "CreationTimeMs" field.</summary>
+        public const int CreationTimeMsFieldNumber = 26;
+        private long creationTimeMs_;
+        public long CreationTimeMs {
+          get { return creationTimeMs_; }
+          set {
+            creationTimeMs_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "NumUpgrades" field.</summary>
+        public const int NumUpgradesFieldNumber = 27;
+        private int numUpgrades_;
+        public int NumUpgrades {
+          get { return numUpgrades_; }
+          set {
+            numUpgrades_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "AdditionalCpMultiplier" field.</summary>
+        public const int AdditionalCpMultiplierFieldNumber = 28;
+        private int additionalCpMultiplier_;
+        public int AdditionalCpMultiplier {
+          get { return additionalCpMultiplier_; }
+          set {
+            additionalCpMultiplier_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Favorite" field.</summary>
+        public const int FavoriteFieldNumber = 29;
+        private int favorite_;
+        public int Favorite {
+          get { return favorite_; }
+          set {
+            favorite_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "Nickname" field.</summary>
+        public const int NicknameFieldNumber = 30;
+        private int nickname_;
+        public int Nickname {
+          get { return nickname_; }
+          set {
+            nickname_ = value;
+          }
+        }
+
+        /// <summary>Field number for the "FromFort" field.</summary>
+        public const int FromFortFieldNumber = 31;
+        private int fromFort_;
+        public int FromFort {
+          get { return fromFort_; }
+          set {
+            fromFort_ = value;
+          }
+        }
+
+        public override bool Equals(object other) {
+          return Equals(other as PokemonProto);
+        }
+
+        public bool Equals(PokemonProto other) {
+          if (ReferenceEquals(other, null)) {
+            return false;
+          }
+          if (ReferenceEquals(other, this)) {
+            return true;
+          }
+          if (Id != other.Id) return false;
+          if (PokemonId != other.PokemonId) return false;
+          if (Cp != other.Cp) return false;
+          if (Stamina != other.Stamina) return false;
+          if (MaxStamina != other.MaxStamina) return false;
+          if (Move1 != other.Move1) return false;
+          if (Move2 != other.Move2) return false;
+          if (DeployedFortId != other.DeployedFortId) return false;
+          if (OwnerName != other.OwnerName) return false;
+          if (IsEgg != other.IsEgg) return false;
+          if (EggKmWalkedTarget != other.EggKmWalkedTarget) return false;
+          if (EggKmWalkedStart != other.EggKmWalkedStart) return false;
+          if (Origin != other.Origin) return false;
+          if (HeightM != other.HeightM) return false;
+          if (WeightKg != other.WeightKg) return false;
+          if (IndividualAttack != other.IndividualAttack) return false;
+          if (IndividualDefense != other.IndividualDefense) return false;
+          if (IndividualStamina != other.IndividualStamina) return false;
+          if (CpMultiplier != other.CpMultiplier) return false;
+          if (Pokeball != other.Pokeball) return false;
+          if (CapturedS2CellId != other.CapturedS2CellId) return false;
+          if (BattlesAttacked != other.BattlesAttacked) return false;
+          if (BattlesDefended != other.BattlesDefended) return false;
+          if (EggIncubatorId != other.EggIncubatorId) return false;
+          if (CreationTimeMs != other.CreationTimeMs) return false;
+          if (NumUpgrades != other.NumUpgrades) return false;
+          if (AdditionalCpMultiplier != other.AdditionalCpMultiplier) return false;
+          if (Favorite != other.Favorite) return false;
+          if (Nickname != other.Nickname) return false;
+          if (FromFort != other.FromFort) return false;
+          return true;
+        }
+
+        public override int GetHashCode() {
+          int hash = 1;
+          if (Id != 0) hash ^= Id.GetHashCode();
+          if (PokemonId != 0) hash ^= PokemonId.GetHashCode();
+          if (Cp != 0) hash ^= Cp.GetHashCode();
+          if (Stamina != 0) hash ^= Stamina.GetHashCode();
+          if (MaxStamina != 0) hash ^= MaxStamina.GetHashCode();
+          if (Move1 != 0) hash ^= Move1.GetHashCode();
+          if (Move2 != 0) hash ^= Move2.GetHashCode();
+          if (DeployedFortId != 0) hash ^= DeployedFortId.GetHashCode();
+          if (OwnerName != 0) hash ^= OwnerName.GetHashCode();
+          if (IsEgg != 0) hash ^= IsEgg.GetHashCode();
+          if (EggKmWalkedTarget != 0) hash ^= EggKmWalkedTarget.GetHashCode();
+          if (EggKmWalkedStart != 0) hash ^= EggKmWalkedStart.GetHashCode();
+          if (Origin != 0) hash ^= Origin.GetHashCode();
+          if (HeightM != 0) hash ^= HeightM.GetHashCode();
+          if (WeightKg != 0) hash ^= WeightKg.GetHashCode();
+          if (IndividualAttack != 0) hash ^= IndividualAttack.GetHashCode();
+          if (IndividualDefense != 0) hash ^= IndividualDefense.GetHashCode();
+          if (IndividualStamina != 0) hash ^= IndividualStamina.GetHashCode();
+          if (CpMultiplier != 0) hash ^= CpMultiplier.GetHashCode();
+          if (Pokeball != 0) hash ^= Pokeball.GetHashCode();
+          if (CapturedS2CellId != 0UL) hash ^= CapturedS2CellId.GetHashCode();
+          if (BattlesAttacked != 0) hash ^= BattlesAttacked.GetHashCode();
+          if (BattlesDefended != 0) hash ^= BattlesDefended.GetHashCode();
+          if (EggIncubatorId != 0) hash ^= EggIncubatorId.GetHashCode();
+          if (CreationTimeMs != 0L) hash ^= CreationTimeMs.GetHashCode();
+          if (NumUpgrades != 0) hash ^= NumUpgrades.GetHashCode();
+          if (AdditionalCpMultiplier != 0) hash ^= AdditionalCpMultiplier.GetHashCode();
+          if (Favorite != 0) hash ^= Favorite.GetHashCode();
+          if (Nickname != 0) hash ^= Nickname.GetHashCode();
+          if (FromFort != 0) hash ^= FromFort.GetHashCode();
+          return hash;
+        }
+
+        public override string ToString() {
+          return pb::JsonFormatter.ToDiagnosticString(this);
+        }
+
+        public void WriteTo(pb::CodedOutputStream output) {
+          if (Id != 0) {
+            output.WriteRawTag(8);
+            output.WriteInt32(Id);
+          }
+          if (PokemonId != 0) {
+            output.WriteRawTag(16);
+            output.WriteEnum((int) PokemonId);
+          }
+          if (Cp != 0) {
+            output.WriteRawTag(24);
+            output.WriteInt32(Cp);
+          }
+          if (Stamina != 0) {
+            output.WriteRawTag(32);
+            output.WriteInt32(Stamina);
+          }
+          if (MaxStamina != 0) {
+            output.WriteRawTag(40);
+            output.WriteInt32(MaxStamina);
+          }
+          if (Move1 != 0) {
+            output.WriteRawTag(48);
+            output.WriteInt32(Move1);
+          }
+          if (Move2 != 0) {
+            output.WriteRawTag(56);
+            output.WriteInt32(Move2);
+          }
+          if (DeployedFortId != 0) {
+            output.WriteRawTag(64);
+            output.WriteInt32(DeployedFortId);
+          }
+          if (OwnerName != 0) {
+            output.WriteRawTag(72);
+            output.WriteInt32(OwnerName);
+          }
+          if (IsEgg != 0) {
+            output.WriteRawTag(80);
+            output.WriteInt32(IsEgg);
+          }
+          if (EggKmWalkedTarget != 0) {
+            output.WriteRawTag(88);
+            output.WriteInt32(EggKmWalkedTarget);
+          }
+          if (EggKmWalkedStart != 0) {
+            output.WriteRawTag(96);
+            output.WriteInt32(EggKmWalkedStart);
+          }
+          if (Origin != 0) {
+            output.WriteRawTag(112);
+            output.WriteInt32(Origin);
+          }
+          if (HeightM != 0) {
+            output.WriteRawTag(125);
+            output.WriteFixed32(HeightM);
+          }
+          if (WeightKg != 0) {
+            output.WriteRawTag(133, 1);
+            output.WriteFixed32(WeightKg);
+          }
+          if (IndividualAttack != 0) {
+            output.WriteRawTag(136, 1);
+            output.WriteInt32(IndividualAttack);
+          }
+          if (IndividualDefense != 0) {
+            output.WriteRawTag(144, 1);
+            output.WriteInt32(IndividualDefense);
+          }
+          if (IndividualStamina != 0) {
+            output.WriteRawTag(152, 1);
+            output.WriteInt32(IndividualStamina);
+          }
+          if (CpMultiplier != 0) {
+            output.WriteRawTag(165, 1);
+            output.WriteFixed32(CpMultiplier);
+          }
+          if (Pokeball != 0) {
+            output.WriteRawTag(168, 1);
+            output.WriteInt32(Pokeball);
+          }
+          if (CapturedS2CellId != 0UL) {
+            output.WriteRawTag(177, 1);
+            output.WriteFixed64(CapturedS2CellId);
+          }
+          if (BattlesAttacked != 0) {
+            output.WriteRawTag(184, 1);
+            output.WriteInt32(BattlesAttacked);
+          }
+          if (BattlesDefended != 0) {
+            output.WriteRawTag(192, 1);
+            output.WriteInt32(BattlesDefended);
+          }
+          if (EggIncubatorId != 0) {
+            output.WriteRawTag(200, 1);
+            output.WriteInt32(EggIncubatorId);
+          }
+          if (CreationTimeMs != 0L) {
+            output.WriteRawTag(208, 1);
+            output.WriteInt64(CreationTimeMs);
+          }
+          if (NumUpgrades != 0) {
+            output.WriteRawTag(216, 1);
+            output.WriteInt32(NumUpgrades);
+          }
+          if (AdditionalCpMultiplier != 0) {
+            output.WriteRawTag(224, 1);
+            output.WriteInt32(AdditionalCpMultiplier);
+          }
+          if (Favorite != 0) {
+            output.WriteRawTag(232, 1);
+            output.WriteInt32(Favorite);
+          }
+          if (Nickname != 0) {
+            output.WriteRawTag(240, 1);
+            output.WriteInt32(Nickname);
+          }
+          if (FromFort != 0) {
+            output.WriteRawTag(248, 1);
+            output.WriteInt32(FromFort);
+          }
+        }
+
+        public int CalculateSize() {
+          int size = 0;
+          if (Id != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
+          }
+          if (PokemonId != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PokemonId);
+          }
+          if (Cp != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Cp);
+          }
+          if (Stamina != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Stamina);
+          }
+          if (MaxStamina != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(MaxStamina);
+          }
+          if (Move1 != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Move1);
+          }
+          if (Move2 != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Move2);
+          }
+          if (DeployedFortId != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeployedFortId);
+          }
+          if (OwnerName != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(OwnerName);
+          }
+          if (IsEgg != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(IsEgg);
+          }
+          if (EggKmWalkedTarget != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedTarget);
+          }
+          if (EggKmWalkedStart != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EggKmWalkedStart);
+          }
+          if (Origin != 0) {
+            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Origin);
+          }
+          if (HeightM != 0) {
+            size += 1 + 4;
+          }
+          if (WeightKg != 0) {
+            size += 2 + 4;
+          }
+          if (IndividualAttack != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualAttack);
+          }
+          if (IndividualDefense != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualDefense);
+          }
+          if (IndividualStamina != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(IndividualStamina);
+          }
+          if (CpMultiplier != 0) {
+            size += 2 + 4;
+          }
+          if (Pokeball != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Pokeball);
+          }
+          if (CapturedS2CellId != 0UL) {
+            size += 2 + 8;
+          }
+          if (BattlesAttacked != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesAttacked);
+          }
+          if (BattlesDefended != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(BattlesDefended);
+          }
+          if (EggIncubatorId != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(EggIncubatorId);
+          }
+          if (CreationTimeMs != 0L) {
+            size += 2 + pb::CodedOutputStream.ComputeInt64Size(CreationTimeMs);
+          }
+          if (NumUpgrades != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(NumUpgrades);
+          }
+          if (AdditionalCpMultiplier != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(AdditionalCpMultiplier);
+          }
+          if (Favorite != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Favorite);
+          }
+          if (Nickname != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(Nickname);
+          }
+          if (FromFort != 0) {
+            size += 2 + pb::CodedOutputStream.ComputeInt32Size(FromFort);
+          }
+          return size;
+        }
+
+        public void MergeFrom(PokemonProto other) {
+          if (other == null) {
+            return;
+          }
+          if (other.Id != 0) {
+            Id = other.Id;
+          }
+          if (other.PokemonId != 0) {
+            PokemonId = other.PokemonId;
+          }
+          if (other.Cp != 0) {
+            Cp = other.Cp;
+          }
+          if (other.Stamina != 0) {
+            Stamina = other.Stamina;
+          }
+          if (other.MaxStamina != 0) {
+            MaxStamina = other.MaxStamina;
+          }
+          if (other.Move1 != 0) {
+            Move1 = other.Move1;
+          }
+          if (other.Move2 != 0) {
+            Move2 = other.Move2;
+          }
+          if (other.DeployedFortId != 0) {
+            DeployedFortId = other.DeployedFortId;
+          }
+          if (other.OwnerName != 0) {
+            OwnerName = other.OwnerName;
+          }
+          if (other.IsEgg != 0) {
+            IsEgg = other.IsEgg;
+          }
+          if (other.EggKmWalkedTarget != 0) {
+            EggKmWalkedTarget = other.EggKmWalkedTarget;
+          }
+          if (other.EggKmWalkedStart != 0) {
+            EggKmWalkedStart = other.EggKmWalkedStart;
+          }
+          if (other.Origin != 0) {
+            Origin = other.Origin;
+          }
+          if (other.HeightM != 0) {
+            HeightM = other.HeightM;
+          }
+          if (other.WeightKg != 0) {
+            WeightKg = other.WeightKg;
+          }
+          if (other.IndividualAttack != 0) {
+            IndividualAttack = other.IndividualAttack;
+          }
+          if (other.IndividualDefense != 0) {
+            IndividualDefense = other.IndividualDefense;
+          }
+          if (other.IndividualStamina != 0) {
+            IndividualStamina = other.IndividualStamina;
+          }
+          if (other.CpMultiplier != 0) {
+            CpMultiplier = other.CpMultiplier;
+          }
+          if (other.Pokeball != 0) {
+            Pokeball = other.Pokeball;
+          }
+          if (other.CapturedS2CellId != 0UL) {
+            CapturedS2CellId = other.CapturedS2CellId;
+          }
+          if (other.BattlesAttacked != 0) {
+            BattlesAttacked = other.BattlesAttacked;
+          }
+          if (other.BattlesDefended != 0) {
+            BattlesDefended = other.BattlesDefended;
+          }
+          if (other.EggIncubatorId != 0) {
+            EggIncubatorId = other.EggIncubatorId;
+          }
+          if (other.CreationTimeMs != 0L) {
+            CreationTimeMs = other.CreationTimeMs;
+          }
+          if (other.NumUpgrades != 0) {
+            NumUpgrades = other.NumUpgrades;
+          }
+          if (other.AdditionalCpMultiplier != 0) {
+            AdditionalCpMultiplier = other.AdditionalCpMultiplier;
+          }
+          if (other.Favorite != 0) {
+            Favorite = other.Favorite;
+          }
+          if (other.Nickname != 0) {
+            Nickname = other.Nickname;
+          }
+          if (other.FromFort != 0) {
+            FromFort = other.FromFort;
+          }
+        }
+
+        public void MergeFrom(pb::CodedInputStream input) {
+          uint tag;
+          while ((tag = input.ReadTag()) != 0) {
+            switch(tag) {
+              default:
+                input.SkipLastField();
+                break;
+              case 8: {
+                Id = input.ReadInt32();
+                break;
+              }
+              case 16: {
+                pokemonId_ = (global::PokemonGo.RocketAPI.GeneratedCode.InventoryResponse.Types.PokemonProto.Types.PokemonIds) input.ReadEnum();
+                break;
+              }
+              case 24: {
+                Cp = input.ReadInt32();
+                break;
+              }
+              case 32: {
+                Stamina = input.ReadInt32();
+                break;
+              }
+              case 40: {
+                MaxStamina = input.ReadInt32();
+                break;
+              }
+              case 48: {
+                Move1 = input.ReadInt32();
+                break;
+              }
+              case 56: {
+                Move2 = input.ReadInt32();
+                break;
+              }
+              case 64: {
+                DeployedFortId = input.ReadInt32();
+                break;
+              }
+              case 72: {
+                OwnerName = input.ReadInt32();
+                break;
+              }
+              case 80: {
+                IsEgg = input.ReadInt32();
+                break;
+              }
+              case 88: {
+                EggKmWalkedTarget = input.ReadInt32();
+                break;
+              }
+              case 96: {
+                EggKmWalkedStart = input.ReadInt32();
+                break;
+              }
+              case 112: {
+                Origin = input.ReadInt32();
+                break;
+              }
+              case 125: {
+                HeightM = input.ReadFixed32();
+                break;
+              }
+              case 133: {
+                WeightKg = input.ReadFixed32();
+                break;
+              }
+              case 136: {
+                IndividualAttack = input.ReadInt32();
+                break;
+              }
+              case 144: {
+                IndividualDefense = input.ReadInt32();
+                break;
+              }
+              case 152: {
+                IndividualStamina = input.ReadInt32();
+                break;
+              }
+              case 165: {
+                CpMultiplier = input.ReadFixed32();
+                break;
+              }
+              case 168: {
+                Pokeball = input.ReadInt32();
+                break;
+              }
+              case 177: {
+                CapturedS2CellId = input.ReadFixed64();
+                break;
+              }
+              case 184: {
+                BattlesAttacked = input.ReadInt32();
+                break;
+              }
+              case 192: {
+                BattlesDefended = input.ReadInt32();
+                break;
+              }
+              case 200: {
+                EggIncubatorId = input.ReadInt32();
+                break;
+              }
+              case 208: {
+                CreationTimeMs = input.ReadInt64();
+                break;
+              }
+              case 216: {
+                NumUpgrades = input.ReadInt32();
+                break;
+              }
+              case 224: {
+                AdditionalCpMultiplier = input.ReadInt32();
+                break;
+              }
+              case 232: {
+                Favorite = input.ReadInt32();
+                break;
+              }
+              case 240: {
+                Nickname = input.ReadInt32();
+                break;
+              }
+              case 248: {
+                FromFort = input.ReadInt32();
+                break;
+              }
+            }
+          }
+        }
+
+        #region Nested types
+        /// <summary>Container for nested types declared in the PokemonProto message type.</summary>
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        public static partial class Types {
+          public enum PokemonIds {
+            [pbr::OriginalName("POKEMON_UNSET")] PokemonUnset = 0,
+            [pbr::OriginalName("V0001_POKEMON_BULBASAUR")] V0001PokemonBulbasaur = 1,
+            [pbr::OriginalName("V0002_POKEMON_IVYSAUR")] V0002PokemonIvysaur = 2,
+            [pbr::OriginalName("V0003_POKEMON_VENUSAUR")] V0003PokemonVenusaur = 3,
+            [pbr::OriginalName("V0004_POKEMON_CHARMANDER")] V0004PokemonCharmander = 4,
+            [pbr::OriginalName("V0005_POKEMON_CHARMELEON")] V0005PokemonCharmeleon = 5,
+            [pbr::OriginalName("V0006_POKEMON_CHARIZARD")] V0006PokemonCharizard = 6,
+            [pbr::OriginalName("V0007_POKEMON_SQUIRTLE")] V0007PokemonSquirtle = 7,
+            [pbr::OriginalName("V0008_POKEMON_WARTORTLE")] V0008PokemonWartortle = 8,
+            [pbr::OriginalName("V0009_POKEMON_BLASTOISE")] V0009PokemonBlastoise = 9,
+            [pbr::OriginalName("V0010_POKEMON_CATERPIE")] V0010PokemonCaterpie = 10,
+            [pbr::OriginalName("V0011_POKEMON_METAPOD")] V0011PokemonMetapod = 11,
+            [pbr::OriginalName("V0012_POKEMON_BUTTERFREE")] V0012PokemonButterfree = 12,
+            [pbr::OriginalName("V0013_POKEMON_WEEDLE")] V0013PokemonWeedle = 13,
+            [pbr::OriginalName("V0014_POKEMON_KAKUNA")] V0014PokemonKakuna = 14,
+            [pbr::OriginalName("V0015_POKEMON_BEEDRILL")] V0015PokemonBeedrill = 15,
+            [pbr::OriginalName("V0016_POKEMON_PIDGEY")] V0016PokemonPidgey = 16,
+            [pbr::OriginalName("V0017_POKEMON_PIDGEOTTO")] V0017PokemonPidgeotto = 17,
+            [pbr::OriginalName("V0018_POKEMON_PIDGEOT")] V0018PokemonPidgeot = 18,
+            [pbr::OriginalName("V0019_POKEMON_RATTATA")] V0019PokemonRattata = 19,
+            [pbr::OriginalName("V0020_POKEMON_RATICATE")] V0020PokemonRaticate = 20,
+            [pbr::OriginalName("V0021_POKEMON_SPEAROW")] V0021PokemonSpearow = 21,
+            [pbr::OriginalName("V0022_POKEMON_FEAROW")] V0022PokemonFearow = 22,
+            [pbr::OriginalName("V0023_POKEMON_EKANS")] V0023PokemonEkans = 23,
+            [pbr::OriginalName("V0024_POKEMON_ARBOK")] V0024PokemonArbok = 24,
+            [pbr::OriginalName("V0025_POKEMON_PIKACHU")] V0025PokemonPikachu = 25,
+            [pbr::OriginalName("V0026_POKEMON_RAICHU")] V0026PokemonRaichu = 26,
+            [pbr::OriginalName("V0027_POKEMON_SANDSHREW")] V0027PokemonSandshrew = 27,
+            [pbr::OriginalName("V0028_POKEMON_SANDSLASH")] V0028PokemonSandslash = 28,
+            [pbr::OriginalName("V0029_POKEMON_NIDORAN")] V0029PokemonNidoran = 29,
+            [pbr::OriginalName("V0030_POKEMON_NIDORINA")] V0030PokemonNidorina = 30,
+            [pbr::OriginalName("V0031_POKEMON_NIDOQUEEN")] V0031PokemonNidoqueen = 31,
+            [pbr::OriginalName("V0032_POKEMON_NIDORAN")] V0032PokemonNidoran = 32,
+            [pbr::OriginalName("V0033_POKEMON_NIDORINO")] V0033PokemonNidorino = 33,
+            [pbr::OriginalName("V0034_POKEMON_NIDOKING")] V0034PokemonNidoking = 34,
+            [pbr::OriginalName("V0035_POKEMON_CLEFAIRY")] V0035PokemonClefairy = 35,
+            [pbr::OriginalName("V0036_POKEMON_CLEFABLE")] V0036PokemonClefable = 36,
+            [pbr::OriginalName("V0037_POKEMON_VULPIX")] V0037PokemonVulpix = 37,
+            [pbr::OriginalName("V0038_POKEMON_NINETALES")] V0038PokemonNinetales = 38,
+            [pbr::OriginalName("V0039_POKEMON_JIGGLYPUFF")] V0039PokemonJigglypuff = 39,
+            [pbr::OriginalName("V0040_POKEMON_WIGGLYTUFF")] V0040PokemonWigglytuff = 40,
+            [pbr::OriginalName("V0041_POKEMON_ZUBAT")] V0041PokemonZubat = 41,
+            [pbr::OriginalName("V0042_POKEMON_GOLBAT")] V0042PokemonGolbat = 42,
+            [pbr::OriginalName("V0043_POKEMON_ODDISH")] V0043PokemonOddish = 43,
+            [pbr::OriginalName("V0044_POKEMON_GLOOM")] V0044PokemonGloom = 44,
+            [pbr::OriginalName("V0045_POKEMON_VILEPLUME")] V0045PokemonVileplume = 45,
+            [pbr::OriginalName("V0046_POKEMON_PARAS")] V0046PokemonParas = 46,
+            [pbr::OriginalName("V0047_POKEMON_PARASECT")] V0047PokemonParasect = 47,
+            [pbr::OriginalName("V0048_POKEMON_VENONAT")] V0048PokemonVenonat = 48,
+            [pbr::OriginalName("V0049_POKEMON_VENOMOTH")] V0049PokemonVenomoth = 49,
+            [pbr::OriginalName("V0050_POKEMON_DIGLETT")] V0050PokemonDiglett = 50,
+            [pbr::OriginalName("V0051_POKEMON_DUGTRIO")] V0051PokemonDugtrio = 51,
+            [pbr::OriginalName("V0052_POKEMON_MEOWTH")] V0052PokemonMeowth = 52,
+            [pbr::OriginalName("V0053_POKEMON_PERSIAN")] V0053PokemonPersian = 53,
+            [pbr::OriginalName("V0054_POKEMON_PSYDUCK")] V0054PokemonPsyduck = 54,
+            [pbr::OriginalName("V0055_POKEMON_GOLDUCK")] V0055PokemonGolduck = 55,
+            [pbr::OriginalName("V0056_POKEMON_MANKEY")] V0056PokemonMankey = 56,
+            [pbr::OriginalName("V0057_POKEMON_PRIMEAPE")] V0057PokemonPrimeape = 57,
+            [pbr::OriginalName("V0058_POKEMON_GROWLITHE")] V0058PokemonGrowlithe = 58,
+            [pbr::OriginalName("V0059_POKEMON_ARCANINE")] V0059PokemonArcanine = 59,
+            [pbr::OriginalName("V0060_POKEMON_POLIWAG")] V0060PokemonPoliwag = 60,
+            [pbr::OriginalName("V0061_POKEMON_POLIWHIRL")] V0061PokemonPoliwhirl = 61,
+            [pbr::OriginalName("V0062_POKEMON_POLIWRATH")] V0062PokemonPoliwrath = 62,
+            [pbr::OriginalName("V0063_POKEMON_ABRA")] V0063PokemonAbra = 63,
+            [pbr::OriginalName("V0064_POKEMON_KADABRA")] V0064PokemonKadabra = 64,
+            [pbr::OriginalName("V0065_POKEMON_ALAKAZAM")] V0065PokemonAlakazam = 65,
+            [pbr::OriginalName("V0066_POKEMON_MACHOP")] V0066PokemonMachop = 66,
+            [pbr::OriginalName("V0067_POKEMON_MACHOKE")] V0067PokemonMachoke = 67,
+            [pbr::OriginalName("V0068_POKEMON_MACHAMP")] V0068PokemonMachamp = 68,
+            [pbr::OriginalName("V0069_POKEMON_BELLSPROUT")] V0069PokemonBellsprout = 69,
+            [pbr::OriginalName("V0070_POKEMON_WEEPINBELL")] V0070PokemonWeepinbell = 70,
+            [pbr::OriginalName("V0071_POKEMON_VICTREEBEL")] V0071PokemonVictreebel = 71,
+            [pbr::OriginalName("V0072_POKEMON_TENTACOOL")] V0072PokemonTentacool = 72,
+            [pbr::OriginalName("V0073_POKEMON_TENTACRUEL")] V0073PokemonTentacruel = 73,
+            [pbr::OriginalName("V0074_POKEMON_GEODUDE")] V0074PokemonGeodude = 74,
+            [pbr::OriginalName("V0075_POKEMON_GRAVELER")] V0075PokemonGraveler = 75,
+            [pbr::OriginalName("V0076_POKEMON_GOLEM")] V0076PokemonGolem = 76,
+            [pbr::OriginalName("V0077_POKEMON_PONYTA")] V0077PokemonPonyta = 77,
+            [pbr::OriginalName("V0078_POKEMON_RAPIDASH")] V0078PokemonRapidash = 78,
+            [pbr::OriginalName("V0079_POKEMON_SLOWPOKE")] V0079PokemonSlowpoke = 79,
+            [pbr::OriginalName("V0080_POKEMON_SLOWBRO")] V0080PokemonSlowbro = 80,
+            [pbr::OriginalName("V0081_POKEMON_MAGNEMITE")] V0081PokemonMagnemite = 81,
+            [pbr::OriginalName("V0082_POKEMON_MAGNETON")] V0082PokemonMagneton = 82,
+            [pbr::OriginalName("V0083_POKEMON_FARFETCHD")] V0083PokemonFarfetchd = 83,
+            [pbr::OriginalName("V0084_POKEMON_DODUO")] V0084PokemonDoduo = 84,
+            [pbr::OriginalName("V0085_POKEMON_DODRIO")] V0085PokemonDodrio = 85,
+            [pbr::OriginalName("V0086_POKEMON_SEEL")] V0086PokemonSeel = 86,
+            [pbr::OriginalName("V0087_POKEMON_DEWGONG")] V0087PokemonDewgong = 87,
+            [pbr::OriginalName("V0088_POKEMON_GRIMER")] V0088PokemonGrimer = 88,
+            [pbr::OriginalName("V0089_POKEMON_MUK")] V0089PokemonMuk = 89,
+            [pbr::OriginalName("V0090_POKEMON_SHELLDER")] V0090PokemonShellder = 90,
+            [pbr::OriginalName("V0091_POKEMON_CLOYSTER")] V0091PokemonCloyster = 91,
+            [pbr::OriginalName("V0092_POKEMON_GASTLY")] V0092PokemonGastly = 92,
+            [pbr::OriginalName("V0093_POKEMON_HAUNTER")] V0093PokemonHaunter = 93,
+            [pbr::OriginalName("V0094_POKEMON_GENGAR")] V0094PokemonGengar = 94,
+            [pbr::OriginalName("V0095_POKEMON_ONIX")] V0095PokemonOnix = 95,
+            [pbr::OriginalName("V0096_POKEMON_DROWZEE")] V0096PokemonDrowzee = 96,
+            [pbr::OriginalName("V0097_POKEMON_HYPNO")] V0097PokemonHypno = 97,
+            [pbr::OriginalName("V0098_POKEMON_KRABBY")] V0098PokemonKrabby = 98,
+            [pbr::OriginalName("V0099_POKEMON_KINGLER")] V0099PokemonKingler = 99,
+            [pbr::OriginalName("V0100_POKEMON_VOLTORB")] V0100PokemonVoltorb = 100,
+            [pbr::OriginalName("V0101_POKEMON_ELECTRODE")] V0101PokemonElectrode = 101,
+            [pbr::OriginalName("V0102_POKEMON_EXEGGCUTE")] V0102PokemonExeggcute = 102,
+            [pbr::OriginalName("V0103_POKEMON_EXEGGUTOR")] V0103PokemonExeggutor = 103,
+            [pbr::OriginalName("V0104_POKEMON_CUBONE")] V0104PokemonCubone = 104,
+            [pbr::OriginalName("V0105_POKEMON_MAROWAK")] V0105PokemonMarowak = 105,
+            [pbr::OriginalName("V0106_POKEMON_HITMONLEE")] V0106PokemonHitmonlee = 106,
+            [pbr::OriginalName("V0107_POKEMON_HITMONCHAN")] V0107PokemonHitmonchan = 107,
+            [pbr::OriginalName("V0108_POKEMON_LICKITUNG")] V0108PokemonLickitung = 108,
+            [pbr::OriginalName("V0109_POKEMON_KOFFING")] V0109PokemonKoffing = 109,
+            [pbr::OriginalName("V0110_POKEMON_WEEZING")] V0110PokemonWeezing = 110,
+            [pbr::OriginalName("V0111_POKEMON_RHYHORN")] V0111PokemonRhyhorn = 111,
+            [pbr::OriginalName("V0112_POKEMON_RHYDON")] V0112PokemonRhydon = 112,
+            [pbr::OriginalName("V0113_POKEMON_CHANSEY")] V0113PokemonChansey = 113,
+            [pbr::OriginalName("V0114_POKEMON_TANGELA")] V0114PokemonTangela = 114,
+            [pbr::OriginalName("V0115_POKEMON_KANGASKHAN")] V0115PokemonKangaskhan = 115,
+            [pbr::OriginalName("V0116_POKEMON_HORSEA")] V0116PokemonHorsea = 116,
+            [pbr::OriginalName("V0117_POKEMON_SEADRA")] V0117PokemonSeadra = 117,
+            [pbr::OriginalName("V0118_POKEMON_GOLDEEN")] V0118PokemonGoldeen = 118,
+            [pbr::OriginalName("V0119_POKEMON_SEAKING")] V0119PokemonSeaking = 119,
+            [pbr::OriginalName("V0120_POKEMON_STARYU")] V0120PokemonStaryu = 120,
+            [pbr::OriginalName("V0121_POKEMON_STARMIE")] V0121PokemonStarmie = 121,
+            [pbr::OriginalName("V0122_POKEMON_MR_MIME")] V0122PokemonMrMime = 122,
+            [pbr::OriginalName("V0123_POKEMON_SCYTHER")] V0123PokemonScyther = 123,
+            [pbr::OriginalName("V0124_POKEMON_JYNX")] V0124PokemonJynx = 124,
+            [pbr::OriginalName("V0125_POKEMON_ELECTABUZZ")] V0125PokemonElectabuzz = 125,
+            [pbr::OriginalName("V0126_POKEMON_MAGMAR")] V0126PokemonMagmar = 126,
+            [pbr::OriginalName("V0127_POKEMON_PINSIR")] V0127PokemonPinsir = 127,
+            [pbr::OriginalName("V0128_POKEMON_TAUROS")] V0128PokemonTauros = 128,
+            [pbr::OriginalName("V0129_POKEMON_MAGIKARP")] V0129PokemonMagikarp = 129,
+            [pbr::OriginalName("V0130_POKEMON_GYARADOS")] V0130PokemonGyarados = 130,
+            [pbr::OriginalName("V0131_POKEMON_LAPRAS")] V0131PokemonLapras = 131,
+            [pbr::OriginalName("V0132_POKEMON_DITTO")] V0132PokemonDitto = 132,
+            [pbr::OriginalName("V0133_POKEMON_EEVEE")] V0133PokemonEevee = 133,
+            [pbr::OriginalName("V0134_POKEMON_VAPOREON")] V0134PokemonVaporeon = 134,
+            [pbr::OriginalName("V0135_POKEMON_JOLTEON")] V0135PokemonJolteon = 135,
+            [pbr::OriginalName("V0136_POKEMON_FLAREON")] V0136PokemonFlareon = 136,
+            [pbr::OriginalName("V0137_POKEMON_PORYGON")] V0137PokemonPorygon = 137,
+            [pbr::OriginalName("V0138_POKEMON_OMANYTE")] V0138PokemonOmanyte = 138,
+            [pbr::OriginalName("V0139_POKEMON_OMASTAR")] V0139PokemonOmastar = 139,
+            [pbr::OriginalName("V0140_POKEMON_KABUTO")] V0140PokemonKabuto = 140,
+            [pbr::OriginalName("V0141_POKEMON_KABUTOPS")] V0141PokemonKabutops = 141,
+            [pbr::OriginalName("V0142_POKEMON_AERODACTYL")] V0142PokemonAerodactyl = 142,
+            [pbr::OriginalName("V0143_POKEMON_SNORLAX")] V0143PokemonSnorlax = 143,
+            [pbr::OriginalName("V0144_POKEMON_ARTICUNO")] V0144PokemonArticuno = 144,
+            [pbr::OriginalName("V0145_POKEMON_ZAPDOS")] V0145PokemonZapdos = 145,
+            [pbr::OriginalName("V0146_POKEMON_MOLTRES")] V0146PokemonMoltres = 146,
+            [pbr::OriginalName("V0147_POKEMON_DRATINI")] V0147PokemonDratini = 147,
+            [pbr::OriginalName("V0148_POKEMON_DRAGONAIR")] V0148PokemonDragonair = 148,
+            [pbr::OriginalName("V0149_POKEMON_DRAGONITE")] V0149PokemonDragonite = 149,
+            [pbr::OriginalName("V0150_POKEMON_MEWTWO")] V0150PokemonMewtwo = 150,
+            [pbr::OriginalName("V0151_POKEMON_MEW")] V0151PokemonMew = 151,
+          }
+
+        }
+        #endregion
+
+      }
+
+    }
+    #endregion
+
+  }
+
+  #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
index d11cd45..39f6aa6 100644
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
@@ -83,6 +83,7 @@
     <Compile Include="GeneratedCode\EncounterResponse.cs" />
     <Compile Include="GeneratedCode\FortDetailResponse.cs" />
     <Compile Include="GeneratedCode\FortSearchResponse.cs" />
+    <Compile Include="GeneratedCode\InventoryResponse.cs" />
     <Compile Include="GeneratedCode\MapObjectsResponse.cs" />
     <Compile Include="GeneratedCode\PlayerUpdateResponse.cs" />
     <Compile Include="GeneratedCode\Request.cs" />
@@ -104,6 +105,7 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />
+    <None Include="Proto\InventoryResponse.proto" />
     <None Include="Proto\EncounterResponse.proto" />
     <None Include="Proto\CatchPokemonResponse.proto" />
     <None Include="Proto\FortDetailResponse.proto" />
diff --git a/PokemonGo/RocketAPI/Proto/InventoryResponse.proto b/PokemonGo/RocketAPI/Proto/InventoryResponse.proto
new file mode 100644
index 0000000..92c1301
--- /dev/null
+++ b/PokemonGo/RocketAPI/Proto/InventoryResponse.proto
@@ -0,0 +1,344 @@
+syntax = "proto3";
+
+package PokemonGo.RocketAPI.GeneratedCode;
+
+message InventoryResponse {
+  int32 unknown1 = 1;
+  int64 unknown2 = 2;
+  string api_url = 3;
+  Unknown6 unknown6 = 6;
+  Unknown7 unknown7 = 7;
+  repeated Payload payload = 100;
+  string errorMessage = 101; //Should be moved to an error-proto file if error is always 101 field
+
+  message Unknown6 {
+    int32 unknown1 = 1;
+    Unknown2 unknown2 = 2;
+
+    message Unknown2 {
+      bytes unknown1 = 1;
+    }
+
+  }
+
+  message Unknown7 {
+    bytes unknown71 = 1;
+    int64 unknown72 = 2;
+    bytes unknown73 = 3;
+  }
+
+  message Payload {
+	int32 Status = 1;
+	InventoryResponseProto Bag = 2;
+}
+message InventoryResponseProto {
+    int64 timestamp = 2;
+    repeated InventoryItemResponseProto items = 3;
+
+    message InventoryItemResponseProto {
+        int64 timestamp = 1;
+        InventoryItemProto item = 3;
+    }
+}
+
+
+message InventoryItemProto {
+    PokemonProto Pokemon = 1;
+    ItemProto Item = 2;
+    PokedexEntryProto PokedexEntry = 3;
+    PlayerStatsProto PlayerStats = 4;
+    PlayerCurrencyProto PlayerCurrency = 5;
+    PlayerCameraProto PlayerCamera = 6;
+    InventoryUpgradesProto InventoryUpgrades = 7;
+    AppliedItemProto AppliedItem = 8;
+    EggIncubatorProto EggIncubators = 9;
+    PokemonFamilyProto PokemonFamily = 10;
+
+    message ItemProto {
+        int32 Item = 1;
+        int32 Count = 2;
+        bool Unseen = 3;
+    }
+
+    message PokedexEntryProto {
+        int32 PokedexEntryNumber = 1;
+        int32 TimesEncountered = 2;
+        int32 TimesCaptured = 3;
+        int32 EvolutionStonePieces = 4;
+        int32 EvolutionStones = 5;
+    }
+
+    message PlayerStatsProto {
+        int32 Level = 1;
+        int64 Experience = 2;
+        int64 PrevLevelExp = 3;
+        int64 NextLevelExp = 4;
+        float KmWalked = 5;
+        int32 NumPokemonEncountered = 6;
+        int32 NumUniquePokedexEntries = 7;
+        int32 NumPokemonCaptured = 8;
+        int32 NumEvolutions = 9;
+        int32 PokeStopVisits = 10;
+        int32 NumberOfPokeballThrown = 11;
+        int32 NumEggsHatched = 12;
+        int32 BigMagikarpCaught = 13;
+        int32 NumBattleAttackWon = 14;
+        int32 NumBattleAttackTotal = 15;
+        int32 NumBattleDefendedWon = 16;
+        int32 NumBattleTrainingWon = 17;
+        int32 NumBattleTrainingTotal = 18;
+        int32 PrestigeRaisedTotal = 19;
+        int32 PrestigeDroppedTotal = 20;
+        int32 NumPokemonDeployed = 21;
+        int32 SmallRattataCaught = 23;
+    }
+
+    message AppliedItemProto {
+        int32 Item = 1;
+        int32 ItemType = 2;
+        int64 ExpirationMs = 3;
+        int64 AppliedMs = 4;
+    }
+
+    message PlayerCameraProto {
+        bool DefaultCamera = 1;
+    }
+
+
+    message PlayerCurrencyProto {
+        int32 Gems = 1;
+    }
+
+    message InventoryUpgradesProto {
+        int32 InventoryUpgrade = 1;
+    }
+
+    message EggIncubatorProto {
+        string ItemId = 1;
+        ItemProto Item = 2;
+        int32 IncubatorType = 3;
+        int32 UsesRemaining = 4;
+        int64 PokemonId = 5;
+        double StartKmWalked = 6;
+        double TargetKmWalked = 7;
+    }
+
+    message PokemonFamilyProto {
+        int32 FamilyId = 1;
+        int32 Candy = 2;
+    }
+}
+
+// POKEMON TRANSFER
+message TransferPokemonProto {
+    fixed64 PokemonId = 1;
+}
+
+message TransferPokemonOutProto {
+    int32 Status = 1;
+    int32 CandyAwarded = 2;
+}
+
+// EVOLVE
+message EvolvePokemonProto {
+    fixed64 PokemonId = 1;
+}
+
+
+message EvolvePokemonOutProto {
+    int32 Result = 1;
+    PokemonProto EvolvedPokemon = 2;
+    int32 ExpAwarded = 3;
+    int32 CandyAwarded = 4;
+}
+
+	 message PokemonProto {
+	int32 Id = 1;
+	PokemonIds PokemonId = 2;
+	int32 Cp = 3;
+	int32 Stamina = 4;
+	int32 MaxStamina = 5;
+	int32 Move1 = 6;
+	int32 Move2 = 7;
+	int32 DeployedFortId = 8;
+	int32 OwnerName = 9;
+	int32 IsEgg = 10;
+	int32 EggKmWalkedTarget = 11;
+	int32 EggKmWalkedStart = 12;
+	int32 Origin = 14;
+	fixed32 HeightM = 15;
+	fixed32 WeightKg = 16;
+	int32 IndividualAttack = 17;
+	int32 IndividualDefense = 18;
+	int32 IndividualStamina = 19;
+	fixed32 CpMultiplier = 20;
+	int32 Pokeball = 21;
+	fixed64 CapturedS2CellId = 22;
+	int32 BattlesAttacked = 23;
+	int32 BattlesDefended = 24;
+	int32 EggIncubatorId = 25;
+	int64 CreationTimeMs = 26;
+	int32 NumUpgrades = 27;
+	int32 AdditionalCpMultiplier = 28;
+	int32 Favorite = 29;
+	int32 Nickname = 30;
+	int32 FromFort = 31;
+
+	enum PokemonIds {
+	POKEMON_UNSET = 0;
+	V0001_POKEMON_BULBASAUR = 1;
+	V0002_POKEMON_IVYSAUR = 2;
+	V0003_POKEMON_VENUSAUR = 3;
+	V0004_POKEMON_CHARMANDER = 4;
+	V0005_POKEMON_CHARMELEON = 5;
+	V0006_POKEMON_CHARIZARD = 6;
+	V0007_POKEMON_SQUIRTLE = 7;
+	V0008_POKEMON_WARTORTLE = 8;
+	V0009_POKEMON_BLASTOISE = 9;
+	V0010_POKEMON_CATERPIE = 10;
+	V0011_POKEMON_METAPOD = 11;
+	V0012_POKEMON_BUTTERFREE = 12;
+	V0013_POKEMON_WEEDLE = 13;
+	V0014_POKEMON_KAKUNA = 14;
+	V0015_POKEMON_BEEDRILL = 15;
+	V0016_POKEMON_PIDGEY = 16;
+	V0017_POKEMON_PIDGEOTTO = 17;
+	V0018_POKEMON_PIDGEOT = 18;
+	V0019_POKEMON_RATTATA = 19;
+	V0020_POKEMON_RATICATE = 20;
+	V0021_POKEMON_SPEAROW = 21;
+	V0022_POKEMON_FEAROW = 22;
+	V0023_POKEMON_EKANS = 23;
+	V0024_POKEMON_ARBOK = 24;
+	V0025_POKEMON_PIKACHU = 25;
+	V0026_POKEMON_RAICHU = 26;
+	V0027_POKEMON_SANDSHREW = 27;
+	V0028_POKEMON_SANDSLASH = 28;
+	V0029_POKEMON_NIDORAN = 29;
+	V0030_POKEMON_NIDORINA = 30;
+	V0031_POKEMON_NIDOQUEEN = 31;
+	V0032_POKEMON_NIDORAN = 32;
+	V0033_POKEMON_NIDORINO = 33;
+	V0034_POKEMON_NIDOKING = 34;
+	V0035_POKEMON_CLEFAIRY = 35;
+	V0036_POKEMON_CLEFABLE = 36;
+	V0037_POKEMON_VULPIX = 37;
+	V0038_POKEMON_NINETALES = 38;
+	V0039_POKEMON_JIGGLYPUFF = 39;
+	V0040_POKEMON_WIGGLYTUFF = 40;
+	V0041_POKEMON_ZUBAT = 41;
+	V0042_POKEMON_GOLBAT = 42;
+	V0043_POKEMON_ODDISH = 43;
+	V0044_POKEMON_GLOOM = 44;
+	V0045_POKEMON_VILEPLUME = 45;
+	V0046_POKEMON_PARAS = 46;
+	V0047_POKEMON_PARASECT = 47;
+	V0048_POKEMON_VENONAT = 48;
+	V0049_POKEMON_VENOMOTH = 49;
+	V0050_POKEMON_DIGLETT = 50;
+	V0051_POKEMON_DUGTRIO = 51;
+	V0052_POKEMON_MEOWTH = 52;
+	V0053_POKEMON_PERSIAN = 53;
+	V0054_POKEMON_PSYDUCK = 54;
+	V0055_POKEMON_GOLDUCK = 55;
+	V0056_POKEMON_MANKEY = 56;
+	V0057_POKEMON_PRIMEAPE = 57;
+	V0058_POKEMON_GROWLITHE = 58;
+	V0059_POKEMON_ARCANINE = 59;
+	V0060_POKEMON_POLIWAG = 60;
+	V0061_POKEMON_POLIWHIRL = 61;
+	V0062_POKEMON_POLIWRATH = 62;
+	V0063_POKEMON_ABRA = 63;
+	V0064_POKEMON_KADABRA = 64;
+	V0065_POKEMON_ALAKAZAM = 65;
+	V0066_POKEMON_MACHOP = 66;
+	V0067_POKEMON_MACHOKE = 67;
+	V0068_POKEMON_MACHAMP = 68;
+	V0069_POKEMON_BELLSPROUT = 69;
+	V0070_POKEMON_WEEPINBELL = 70;
+	V0071_POKEMON_VICTREEBEL = 71;
+	V0072_POKEMON_TENTACOOL = 72;
+	V0073_POKEMON_TENTACRUEL = 73;
+	V0074_POKEMON_GEODUDE = 74;
+	V0075_POKEMON_GRAVELER = 75;
+	V0076_POKEMON_GOLEM = 76;
+	V0077_POKEMON_PONYTA = 77;
+	V0078_POKEMON_RAPIDASH = 78;
+	V0079_POKEMON_SLOWPOKE = 79;
+	V0080_POKEMON_SLOWBRO = 80;
+	V0081_POKEMON_MAGNEMITE = 81;
+	V0082_POKEMON_MAGNETON = 82;
+	V0083_POKEMON_FARFETCHD = 83;
+	V0084_POKEMON_DODUO = 84;
+	V0085_POKEMON_DODRIO = 85;
+	V0086_POKEMON_SEEL = 86;
+	V0087_POKEMON_DEWGONG = 87;
+	V0088_POKEMON_GRIMER = 88;
+	V0089_POKEMON_MUK = 89;
+	V0090_POKEMON_SHELLDER = 90;
+	V0091_POKEMON_CLOYSTER = 91;
+	V0092_POKEMON_GASTLY = 92;
+	V0093_POKEMON_HAUNTER = 93;
+	V0094_POKEMON_GENGAR = 94;
+	V0095_POKEMON_ONIX = 95;
+	V0096_POKEMON_DROWZEE = 96;
+	V0097_POKEMON_HYPNO = 97;
+	V0098_POKEMON_KRABBY = 98;
+	V0099_POKEMON_KINGLER = 99;
+	V0100_POKEMON_VOLTORB = 100;
+	V0101_POKEMON_ELECTRODE = 101;
+	V0102_POKEMON_EXEGGCUTE = 102;
+	V0103_POKEMON_EXEGGUTOR = 103;
+	V0104_POKEMON_CUBONE = 104;
+	V0105_POKEMON_MAROWAK = 105;
+	V0106_POKEMON_HITMONLEE = 106;
+	V0107_POKEMON_HITMONCHAN = 107;
+	V0108_POKEMON_LICKITUNG = 108;
+	V0109_POKEMON_KOFFING = 109;
+	V0110_POKEMON_WEEZING = 110;
+	V0111_POKEMON_RHYHORN = 111;
+	V0112_POKEMON_RHYDON = 112;
+	V0113_POKEMON_CHANSEY = 113;
+	V0114_POKEMON_TANGELA = 114;
+	V0115_POKEMON_KANGASKHAN = 115;
+	V0116_POKEMON_HORSEA = 116;
+	V0117_POKEMON_SEADRA = 117;
+	V0118_POKEMON_GOLDEEN = 118;
+	V0119_POKEMON_SEAKING = 119;
+	V0120_POKEMON_STARYU = 120;
+	V0121_POKEMON_STARMIE = 121;
+	V0122_POKEMON_MR_MIME = 122;
+	V0123_POKEMON_SCYTHER = 123;
+	V0124_POKEMON_JYNX = 124;
+	V0125_POKEMON_ELECTABUZZ = 125;
+	V0126_POKEMON_MAGMAR = 126;
+	V0127_POKEMON_PINSIR = 127;
+	V0128_POKEMON_TAUROS = 128;
+	V0129_POKEMON_MAGIKARP = 129;
+	V0130_POKEMON_GYARADOS = 130;
+	V0131_POKEMON_LAPRAS = 131;
+	V0132_POKEMON_DITTO = 132;
+	V0133_POKEMON_EEVEE = 133;
+	V0134_POKEMON_VAPOREON = 134;
+	V0135_POKEMON_JOLTEON = 135;
+	V0136_POKEMON_FLAREON = 136;
+	V0137_POKEMON_PORYGON = 137;
+	V0138_POKEMON_OMANYTE = 138;
+	V0139_POKEMON_OMASTAR = 139;
+	V0140_POKEMON_KABUTO = 140;
+	V0141_POKEMON_KABUTOPS = 141;
+	V0142_POKEMON_AERODACTYL = 142;
+	V0143_POKEMON_SNORLAX = 143;
+	V0144_POKEMON_ARTICUNO = 144;
+	V0145_POKEMON_ZAPDOS = 145;
+	V0146_POKEMON_MOLTRES = 146;
+	V0147_POKEMON_DRATINI = 147;
+	V0148_POKEMON_DRAGONAIR = 148;
+	V0149_POKEMON_DRAGONITE = 149;
+	V0150_POKEMON_MEWTWO = 150;
+	V0151_POKEMON_MEW = 151;
+}
+ }
+
+
+  }
\ No newline at end of file
diff --git a/README.md b/README.md
index 9af5e31..627013e 100644
--- a/README.md
+++ b/README.md
@@ -31,4 +31,5 @@ Todo

 ```
 #Gotta catch them all
+#Map Enums
 ```
You may download the files in Public Git.