// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: bgs/low/pb/client/authentication_service.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = Google.Protobuf;
using pbc = Google.Protobuf.Collections;
using pbr = Google.Protobuf.Reflection;
namespace Bgs.Protocol.Authentication.V1
{
    /// <summary>Holder for reflection information generated from bgs/low/pb/client/authentication_service.proto</summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public static partial class AuthenticationServiceReflection
    {

        #region Descriptor
        /// <summary>File descriptor for bgs/low/pb/client/authentication_service.proto</summary>
        public static pbr::FileDescriptor Descriptor
        {
            get { return descriptor; }
        }
        private static pbr::FileDescriptor descriptor;

        static AuthenticationServiceReflection()
        {
            byte[] descriptorData = System.Convert.FromBase64String(
                string.Concat(
                  "Ci5iZ3MvbG93L3BiL2NsaWVudC9hdXRoZW50aWNhdGlvbl9zZXJ2aWNlLnBy",
                  "b3RvEh5iZ3MucHJvdG9jb2wuYXV0aGVudGljYXRpb24udjEaJWJncy9sb3cv",
                  "cGIvY2xpZW50L2FjY291bnRfdHlwZXMucHJvdG8aLGJncy9sb3cvcGIvY2xp",
                  "ZW50L2NvbnRlbnRfaGFuZGxlX3R5cGVzLnByb3RvGiRiZ3MvbG93L3BiL2Ns",
                  "aWVudC9lbnRpdHlfdHlwZXMucHJvdG8aIWJncy9sb3cvcGIvY2xpZW50L3Jw",
                  "Y190eXBlcy5wcm90byJYChFNb2R1bGVMb2FkUmVxdWVzdBIyCg1tb2R1bGVf",
                  "aGFuZGxlGAEgASgLMhsuYmdzLnByb3RvY29sLkNvbnRlbnRIYW5kbGUSDwoH",
                  "bWVzc2FnZRgCIAEoDCI3ChJNb2R1bGVOb3RpZmljYXRpb24SEQoJbW9kdWxl",
                  "X2lkGAIgASgFEg4KBnJlc3VsdBgDIAEoDSI6ChRNb2R1bGVNZXNzYWdlUmVx",
                  "dWVzdBIRCgltb2R1bGVfaWQYASABKAUSDwoHbWVzc2FnZRgCIAEoDCLfAgoM",
                  "TG9nb25SZXF1ZXN0Eg8KB3Byb2dyYW0YASABKAkSEAoIcGxhdGZvcm0YAiAB",
                  "KAkSDgoGbG9jYWxlGAMgASgJEg0KBWVtYWlsGAQgASgJEg8KB3ZlcnNpb24Y",
                  "BSABKAkSGwoTYXBwbGljYXRpb25fdmVyc2lvbhgGIAEoBRIXCg9wdWJsaWNf",
                  "Y29tcHV0ZXIYByABKAgSDgoGc3NvX2lkGAggASgMEiEKGWRpc2Nvbm5lY3Rf",
                  "b25fY29va2llX2ZhaWwYCSABKAgSJwofYWxsb3dfbG9nb25fcXVldWVfbm90",
                  "aWZpY2F0aW9ucxgKIAEoCBIfChd3ZWJfY2xpZW50X3ZlcmlmaWNhdGlvbhgL",
                  "IAEoCBIeChZjYWNoZWRfd2ViX2NyZWRlbnRpYWxzGAwgASgMEhUKDWVuYWJs",
                  "ZV9jb29raWUYDSABKAgSEgoKdXNlcl9hZ2VudBgOIAEoCSKaAgoLTG9nb25S",
                  "ZXN1bHQSEgoKZXJyb3JfY29kZRgBIAEoDRIqCgphY2NvdW50X2lkGAIgASgL",
                  "MhYuYmdzLnByb3RvY29sLkVudGl0eUlkEi8KD2dhbWVfYWNjb3VudF9pZBgD",
                  "IAMoCzIWLmJncy5wcm90b2NvbC5FbnRpdHlJZBINCgVlbWFpbBgEIAEoCRIY",
                  "ChBhdmFpbGFibGVfcmVnaW9uGAUgAygNEhgKEGNvbm5lY3RlZF9yZWdpb24Y",
                  "BiABKA0SEgoKYmF0dGxlX3RhZxgHIAEoCRIVCg1nZW9pcF9jb3VudHJ5GAgg",
                  "ASgJEhMKC3Nlc3Npb25fa2V5GAkgASgMEhcKD3Jlc3RyaWN0ZWRfbW9kZRgK",
                  "IAEoCCIqChdHZW5lcmF0ZVNTT1Rva2VuUmVxdWVzdBIPCgdwcm9ncmFtGAEg",
                  "ASgHIj4KGEdlbmVyYXRlU1NPVG9rZW5SZXNwb25zZRIOCgZzc29faWQYASAB",
                  "KAwSEgoKc3NvX3NlY3JldBgCIAEoDCIoChJMb2dvblVwZGF0ZVJlcXVlc3QS",
                  "EgoKZXJyb3JfY29kZRgBIAEoDSJhChdMb2dvblF1ZXVlVXBkYXRlUmVxdWVz",
                  "dBIQCghwb3NpdGlvbhgBIAEoDRIWCg5lc3RpbWF0ZWRfdGltZRgCIAEoBBIc",
                  "ChRldGFfZGV2aWF0aW9uX2luX3NlYxgDIAEoBCK+AQobQWNjb3VudFNldHRp",
                  "bmdzTm90aWZpY2F0aW9uEjkKCGxpY2Vuc2VzGAEgAygLMicuYmdzLnByb3Rv",
                  "Y29sLmFjY291bnQudjEuQWNjb3VudExpY2Vuc2USFAoMaXNfdXNpbmdfcmlk",
                  "GAIgASgIEhsKE2lzX3BsYXlpbmdfZnJvbV9pZ3IYAyABKAgSGQoRY2FuX3Jl",
                  "Y2VpdmVfdm9pY2UYBCABKAgSFgoOY2FuX3NlbmRfdm9pY2UYBSABKAgiPQoY",
                  "U2VydmVyU3RhdGVDaGFuZ2VSZXF1ZXN0Eg0KBXN0YXRlGAEgASgNEhIKCmV2",
                  "ZW50X3RpbWUYAiABKAQiVAoLVmVyc2lvbkluZm8SDgoGbnVtYmVyGAEgASgN",
                  "Eg0KBXBhdGNoGAIgASgJEhMKC2lzX29wdGlvbmFsGAMgASgIEhEKCWtpY2tf",
                  "dGltZRgEIAEoBCJcChdWZXJzaW9uSW5mb05vdGlmaWNhdGlvbhJBCgx2ZXJz",
                  "aW9uX2luZm8YASABKAsyKy5iZ3MucHJvdG9jb2wuYXV0aGVudGljYXRpb24u",
                  "djEuVmVyc2lvbkluZm8iXwoUTWVtTW9kdWxlTG9hZFJlcXVlc3QSKwoGaGFu",
                  "ZGxlGAEgASgLMhsuYmdzLnByb3RvY29sLkNvbnRlbnRIYW5kbGUSCwoDa2V5",
                  "GAIgASgMEg0KBWlucHV0GAMgASgMIiUKFU1lbU1vZHVsZUxvYWRSZXNwb25z",
                  "ZRIMCgRkYXRhGAEgASgMIksKGFNlbGVjdEdhbWVBY2NvdW50UmVxdWVzdBIv",
                  "Cg9nYW1lX2FjY291bnRfaWQYASABKAsyFi5iZ3MucHJvdG9jb2wuRW50aXR5",
                  "SWQiXQoaR2FtZUFjY291bnRTZWxlY3RlZFJlcXVlc3QSDgoGcmVzdWx0GAEg",
                  "ASgNEi8KD2dhbWVfYWNjb3VudF9pZBgCIAEoCzIWLmJncy5wcm90b2NvbC5F",
                  "bnRpdHlJZCIwCh1HZW5lcmF0ZVdlYkNyZWRlbnRpYWxzUmVxdWVzdBIPCgdw",
                  "cm9ncmFtGAEgASgHIjkKHkdlbmVyYXRlV2ViQ3JlZGVudGlhbHNSZXNwb25z",
                  "ZRIXCg93ZWJfY3JlZGVudGlhbHMYASABKAwiNgobVmVyaWZ5V2ViQ3JlZGVu",
                  "dGlhbHNSZXF1ZXN0EhcKD3dlYl9jcmVkZW50aWFscxgBIAEoDDKVCAoWQXV0",
                  "aGVudGljYXRpb25MaXN0ZW5lchJhCgxPbk1vZHVsZUxvYWQSMS5iZ3MucHJv",
                  "dG9jb2wuYXV0aGVudGljYXRpb24udjEuTW9kdWxlTG9hZFJlcXVlc3QaGS5i",
                  "Z3MucHJvdG9jb2wuTk9fUkVTUE9OU0UiA4gCARJiCg9Pbk1vZHVsZU1lc3Nh",
                  "Z2USNC5iZ3MucHJvdG9jb2wuYXV0aGVudGljYXRpb24udjEuTW9kdWxlTWVz",
                  "c2FnZVJlcXVlc3QaFC5iZ3MucHJvdG9jb2wuTm9EYXRhIgOIAgESagoTT25T",
                  "ZXJ2ZXJTdGF0ZUNoYW5nZRI4LmJncy5wcm90b2NvbC5hdXRoZW50aWNhdGlv",
                  "bi52MS5TZXJ2ZXJTdGF0ZUNoYW5nZVJlcXVlc3QaGS5iZ3MucHJvdG9jb2wu",
                  "Tk9fUkVTUE9OU0USWQoPT25Mb2dvbkNvbXBsZXRlEisuYmdzLnByb3RvY29s",
                  "LmF1dGhlbnRpY2F0aW9uLnYxLkxvZ29uUmVzdWx0GhkuYmdzLnByb3RvY29s",
                  "Lk5PX1JFU1BPTlNFEn4KD09uTWVtTW9kdWxlTG9hZBI0LmJncy5wcm90b2Nv",
                  "bC5hdXRoZW50aWNhdGlvbi52MS5NZW1Nb2R1bGVMb2FkUmVxdWVzdBo1LmJn",
                  "cy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52MS5NZW1Nb2R1bGVMb2FkUmVz",
                  "cG9uc2USXgoNT25Mb2dvblVwZGF0ZRIyLmJncy5wcm90b2NvbC5hdXRoZW50",
                  "aWNhdGlvbi52MS5Mb2dvblVwZGF0ZVJlcXVlc3QaGS5iZ3MucHJvdG9jb2wu",
                  "Tk9fUkVTUE9OU0USagoUT25WZXJzaW9uSW5mb1VwZGF0ZWQSNy5iZ3MucHJv",
                  "dG9jb2wuYXV0aGVudGljYXRpb24udjEuVmVyc2lvbkluZm9Ob3RpZmljYXRp",
                  "b24aGS5iZ3MucHJvdG9jb2wuTk9fUkVTUE9OU0USaAoST25Mb2dvblF1ZXVl",
                  "VXBkYXRlEjcuYmdzLnByb3RvY29sLmF1dGhlbnRpY2F0aW9uLnYxLkxvZ29u",
                  "UXVldWVVcGRhdGVSZXF1ZXN0GhkuYmdzLnByb3RvY29sLk5PX1JFU1BPTlNF",
                  "EkIKD09uTG9nb25RdWV1ZUVuZBIULmJncy5wcm90b2NvbC5Ob0RhdGEaGS5i",
                  "Z3MucHJvdG9jb2wuTk9fUkVTUE9OU0UScwoVT25HYW1lQWNjb3VudFNlbGVj",
                  "dGVkEjouYmdzLnByb3RvY29sLmF1dGhlbnRpY2F0aW9uLnYxLkdhbWVBY2Nv",
                  "dW50U2VsZWN0ZWRSZXF1ZXN0GhkuYmdzLnByb3RvY29sLk5PX1JFU1BPTlNF",
                  "IgOIAgEy7wYKFUF1dGhlbnRpY2F0aW9uU2VydmljZRJLCgVMb2dvbhIsLmJn",
                  "cy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52MS5Mb2dvblJlcXVlc3QaFC5i",
                  "Z3MucHJvdG9jb2wuTm9EYXRhEl0KDE1vZHVsZU5vdGlmeRIyLmJncy5wcm90",
                  "b2NvbC5hdXRoZW50aWNhdGlvbi52MS5Nb2R1bGVOb3RpZmljYXRpb24aFC5i",
                  "Z3MucHJvdG9jb2wuTm9EYXRhIgOIAgESYAoNTW9kdWxlTWVzc2FnZRI0LmJn",
                  "cy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52MS5Nb2R1bGVNZXNzYWdlUmVx",
                  "dWVzdBoULmJncy5wcm90b2NvbC5Ob0RhdGEiA4gCARJRChxTZWxlY3RHYW1l",
                  "QWNjb3VudF9ERVBSRUNBVEVEEhYuYmdzLnByb3RvY29sLkVudGl0eUlkGhQu",
                  "YmdzLnByb3RvY29sLk5vRGF0YSIDiAIBEoUBChBHZW5lcmF0ZVNTT1Rva2Vu",
                  "EjcuYmdzLnByb3RvY29sLmF1dGhlbnRpY2F0aW9uLnYxLkdlbmVyYXRlU1NP",
                  "VG9rZW5SZXF1ZXN0GjguYmdzLnByb3RvY29sLmF1dGhlbnRpY2F0aW9uLnYx",
                  "LkdlbmVyYXRlU1NPVG9rZW5SZXNwb25zZRJoChFTZWxlY3RHYW1lQWNjb3Vu",
                  "dBI4LmJncy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52MS5TZWxlY3RHYW1l",
                  "QWNjb3VudFJlcXVlc3QaFC5iZ3MucHJvdG9jb2wuTm9EYXRhIgOIAgESaQoU",
                  "VmVyaWZ5V2ViQ3JlZGVudGlhbHMSOy5iZ3MucHJvdG9jb2wuYXV0aGVudGlj",
                  "YXRpb24udjEuVmVyaWZ5V2ViQ3JlZGVudGlhbHNSZXF1ZXN0GhQuYmdzLnBy",
                  "b3RvY29sLk5vRGF0YRKXAQoWR2VuZXJhdGVXZWJDcmVkZW50aWFscxI9LmJn",
                  "cy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52MS5HZW5lcmF0ZVdlYkNyZWRl",
                  "bnRpYWxzUmVxdWVzdBo+LmJncy5wcm90b2NvbC5hdXRoZW50aWNhdGlvbi52",
                  "MS5HZW5lcmF0ZVdlYkNyZWRlbnRpYWxzUmVzcG9uc2VCBUgCgAEAYgZwcm90",
                  "bzM="));
            descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
                new pbr::FileDescriptor[] { Bgs.Protocol.Account.V1.AccountTypesReflection.Descriptor, Bgs.Protocol.ContentHandleTypesReflection.Descriptor, Bgs.Protocol.EntityTypesReflection.Descriptor, Bgs.Protocol.RpcTypesReflection.Descriptor, },
                new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.ModuleLoadRequest), Bgs.Protocol.Authentication.V1.ModuleLoadRequest.Parser, new[]{ "ModuleHandle", "Message" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.ModuleNotification), Bgs.Protocol.Authentication.V1.ModuleNotification.Parser, new[]{ "ModuleId", "Result" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.ModuleMessageRequest), Bgs.Protocol.Authentication.V1.ModuleMessageRequest.Parser, new[]{ "ModuleId", "Message" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.LogonRequest), Bgs.Protocol.Authentication.V1.LogonRequest.Parser, new[]{ "Program", "Platform", "Locale", "Email", "Version", "ApplicationVersion", "PublicComputer", "SsoId", "DisconnectOnCookieFail", "AllowLogonQueueNotifications", "WebClientVerification", "CachedWebCredentials", "EnableCookie", "UserAgent" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.LogonResult), Bgs.Protocol.Authentication.V1.LogonResult.Parser, new[]{ "ErrorCode", "AccountId", "GameAccountId", "Email", "AvailableRegion", "ConnectedRegion", "BattleTag", "GeoipCountry", "SessionKey", "RestrictedMode" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.GenerateSSOTokenRequest), Bgs.Protocol.Authentication.V1.GenerateSSOTokenRequest.Parser, new[]{ "Program" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.GenerateSSOTokenResponse), Bgs.Protocol.Authentication.V1.GenerateSSOTokenResponse.Parser, new[]{ "SsoId", "SsoSecret" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.LogonUpdateRequest), Bgs.Protocol.Authentication.V1.LogonUpdateRequest.Parser, new[]{ "ErrorCode" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.LogonQueueUpdateRequest), Bgs.Protocol.Authentication.V1.LogonQueueUpdateRequest.Parser, new[]{ "Position", "EstimatedTime", "EtaDeviationInSec" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.AccountSettingsNotification), Bgs.Protocol.Authentication.V1.AccountSettingsNotification.Parser, new[]{ "Licenses", "IsUsingRid", "IsPlayingFromIgr", "CanReceiveVoice", "CanSendVoice" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.ServerStateChangeRequest), Bgs.Protocol.Authentication.V1.ServerStateChangeRequest.Parser, new[]{ "State", "EventTime" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.VersionInfo), Bgs.Protocol.Authentication.V1.VersionInfo.Parser, new[]{ "Number", "Patch", "IsOptional", "KickTime" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.VersionInfoNotification), Bgs.Protocol.Authentication.V1.VersionInfoNotification.Parser, new[]{ "VersionInfo" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.MemModuleLoadRequest), Bgs.Protocol.Authentication.V1.MemModuleLoadRequest.Parser, new[]{ "Handle", "Key", "Input" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.MemModuleLoadResponse), Bgs.Protocol.Authentication.V1.MemModuleLoadResponse.Parser, new[]{ "Data" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.SelectGameAccountRequest), Bgs.Protocol.Authentication.V1.SelectGameAccountRequest.Parser, new[]{ "GameAccountId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.GameAccountSelectedRequest), Bgs.Protocol.Authentication.V1.GameAccountSelectedRequest.Parser, new[]{ "Result", "GameAccountId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.GenerateWebCredentialsRequest), Bgs.Protocol.Authentication.V1.GenerateWebCredentialsRequest.Parser, new[]{ "Program" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.GenerateWebCredentialsResponse), Bgs.Protocol.Authentication.V1.GenerateWebCredentialsResponse.Parser, new[]{ "WebCredentials" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(Bgs.Protocol.Authentication.V1.VerifyWebCredentialsRequest), Bgs.Protocol.Authentication.V1.VerifyWebCredentialsRequest.Parser, new[]{ "WebCredentials" }, null, null, null)
                }));
        }
        #endregion

    }
    #region Messages
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class ModuleLoadRequest : pb::IMessage<ModuleLoadRequest>
    {
        private static readonly pb::MessageParser<ModuleLoadRequest> _parser = new pb::MessageParser<ModuleLoadRequest>(() => new ModuleLoadRequest());
        public static pb::MessageParser<ModuleLoadRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[0]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public ModuleLoadRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public ModuleLoadRequest(ModuleLoadRequest other) : this()
        {
            ModuleHandle = other.moduleHandle_ != null ? other.ModuleHandle.Clone() : null;
            message_ = other.message_;
        }

        public ModuleLoadRequest Clone()
        {
            return new ModuleLoadRequest(this);
        }

        /// <summary>Field number for the "module_handle" field.</summary>
        public const int ModuleHandleFieldNumber = 1;
        private Bgs.Protocol.ContentHandle moduleHandle_;
        public Bgs.Protocol.ContentHandle ModuleHandle
        {
            get { return moduleHandle_; }
            set
            {
                moduleHandle_ = value;
            }
        }

        /// <summary>Field number for the "message" field.</summary>
        public const int MessageFieldNumber = 2;
        private pb::ByteString message_ = pb::ByteString.Empty;
        public pb::ByteString Message
        {
            get { return message_; }
            set
            {
                message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as ModuleLoadRequest);
        }

        public bool Equals(ModuleLoadRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(ModuleHandle, other.ModuleHandle)) return false;
            if (Message != other.Message) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (moduleHandle_ != null) hash ^= ModuleHandle.GetHashCode();
            if (Message.Length != 0) hash ^= Message.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (moduleHandle_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(ModuleHandle);
            }
            if (Message.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteBytes(Message);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (moduleHandle_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(ModuleHandle);
            }
            if (Message.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Message);
            }
            return size;
        }

        public void MergeFrom(ModuleLoadRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.moduleHandle_ != null)
            {
                if (moduleHandle_ == null)
                {
                    moduleHandle_ = new Bgs.Protocol.ContentHandle();
                }
                ModuleHandle.MergeFrom(other.ModuleHandle);
            }
            if (other.Message.Length != 0)
            {
                Message = other.Message;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (moduleHandle_ == null)
                            {
                                moduleHandle_ = new Bgs.Protocol.ContentHandle();
                            }
                            input.ReadMessage(moduleHandle_);
                            break;
                        }
                    case 18:
                        {
                            Message = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class ModuleNotification : pb::IMessage<ModuleNotification>
    {
        private static readonly pb::MessageParser<ModuleNotification> _parser = new pb::MessageParser<ModuleNotification>(() => new ModuleNotification());
        public static pb::MessageParser<ModuleNotification> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[1]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public ModuleNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public ModuleNotification(ModuleNotification other) : this()
        {
            moduleId_ = other.moduleId_;
            result_ = other.result_;
        }

        public ModuleNotification Clone()
        {
            return new ModuleNotification(this);
        }

        /// <summary>Field number for the "module_id" field.</summary>
        public const int ModuleIdFieldNumber = 2;
        private int moduleId_;
        public int ModuleId
        {
            get { return moduleId_; }
            set
            {
                moduleId_ = value;
            }
        }

        /// <summary>Field number for the "result" field.</summary>
        public const int ResultFieldNumber = 3;
        private uint result_;
        public uint Result
        {
            get { return result_; }
            set
            {
                result_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as ModuleNotification);
        }

        public bool Equals(ModuleNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (ModuleId != other.ModuleId) return false;
            if (Result != other.Result) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ModuleId != 0) hash ^= ModuleId.GetHashCode();
            if (Result != 0) hash ^= Result.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (ModuleId != 0)
            {
                output.WriteRawTag(16);
                output.WriteInt32(ModuleId);
            }
            if (Result != 0)
            {
                output.WriteRawTag(24);
                output.WriteUInt32(Result);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (ModuleId != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ModuleId);
            }
            if (Result != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Result);
            }
            return size;
        }

        public void MergeFrom(ModuleNotification other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ModuleId != 0)
            {
                ModuleId = other.ModuleId;
            }
            if (other.Result != 0)
            {
                Result = other.Result;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 16:
                        {
                            ModuleId = input.ReadInt32();
                            break;
                        }
                    case 24:
                        {
                            Result = input.ReadUInt32();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class ModuleMessageRequest : pb::IMessage<ModuleMessageRequest>
    {
        private static readonly pb::MessageParser<ModuleMessageRequest> _parser = new pb::MessageParser<ModuleMessageRequest>(() => new ModuleMessageRequest());
        public static pb::MessageParser<ModuleMessageRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[2]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public ModuleMessageRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public ModuleMessageRequest(ModuleMessageRequest other) : this()
        {
            moduleId_ = other.moduleId_;
            message_ = other.message_;
        }

        public ModuleMessageRequest Clone()
        {
            return new ModuleMessageRequest(this);
        }

        /// <summary>Field number for the "module_id" field.</summary>
        public const int ModuleIdFieldNumber = 1;
        private int moduleId_;
        public int ModuleId
        {
            get { return moduleId_; }
            set
            {
                moduleId_ = value;
            }
        }

        /// <summary>Field number for the "message" field.</summary>
        public const int MessageFieldNumber = 2;
        private pb::ByteString message_ = pb::ByteString.Empty;
        public pb::ByteString Message
        {
            get { return message_; }
            set
            {
                message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as ModuleMessageRequest);
        }

        public bool Equals(ModuleMessageRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (ModuleId != other.ModuleId) return false;
            if (Message != other.Message) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ModuleId != 0) hash ^= ModuleId.GetHashCode();
            if (Message.Length != 0) hash ^= Message.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (ModuleId != 0)
            {
                output.WriteRawTag(8);
                output.WriteInt32(ModuleId);
            }
            if (Message.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteBytes(Message);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (ModuleId != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ModuleId);
            }
            if (Message.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Message);
            }
            return size;
        }

        public void MergeFrom(ModuleMessageRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ModuleId != 0)
            {
                ModuleId = other.ModuleId;
            }
            if (other.Message.Length != 0)
            {
                Message = other.Message;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            ModuleId = input.ReadInt32();
                            break;
                        }
                    case 18:
                        {
                            Message = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class LogonRequest : pb::IMessage<LogonRequest>
    {
        private static readonly pb::MessageParser<LogonRequest> _parser = new pb::MessageParser<LogonRequest>(() => new LogonRequest());
        public static pb::MessageParser<LogonRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[3]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public LogonRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public LogonRequest(LogonRequest other) : this()
        {
            program_ = other.program_;
            platform_ = other.platform_;
            locale_ = other.locale_;
            email_ = other.email_;
            version_ = other.version_;
            applicationVersion_ = other.applicationVersion_;
            publicComputer_ = other.publicComputer_;
            ssoId_ = other.ssoId_;
            disconnectOnCookieFail_ = other.disconnectOnCookieFail_;
            allowLogonQueueNotifications_ = other.allowLogonQueueNotifications_;
            webClientVerification_ = other.webClientVerification_;
            cachedWebCredentials_ = other.cachedWebCredentials_;
            enableCookie_ = other.enableCookie_;
            userAgent_ = other.userAgent_;
        }

        public LogonRequest Clone()
        {
            return new LogonRequest(this);
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 1;
        private string program_ = "";
        public string Program
        {
            get { return program_; }
            set
            {
                program_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "platform" field.</summary>
        public const int PlatformFieldNumber = 2;
        private string platform_ = "";
        public string Platform
        {
            get { return platform_; }
            set
            {
                platform_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "locale" field.</summary>
        public const int LocaleFieldNumber = 3;
        private string locale_ = "";
        public string Locale
        {
            get { return locale_; }
            set
            {
                locale_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "email" field.</summary>
        public const int EmailFieldNumber = 4;
        private string email_ = "";
        public string Email
        {
            get { return email_; }
            set
            {
                email_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "version" field.</summary>
        public const int VersionFieldNumber = 5;
        private string version_ = "";
        public string Version
        {
            get { return version_; }
            set
            {
                version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "application_version" field.</summary>
        public const int ApplicationVersionFieldNumber = 6;
        private int applicationVersion_;
        public int ApplicationVersion
        {
            get { return applicationVersion_; }
            set
            {
                applicationVersion_ = value;
            }
        }

        /// <summary>Field number for the "public_computer" field.</summary>
        public const int PublicComputerFieldNumber = 7;
        private bool publicComputer_;
        public bool PublicComputer
        {
            get { return publicComputer_; }
            set
            {
                publicComputer_ = value;
            }
        }

        /// <summary>Field number for the "sso_id" field.</summary>
        public const int SsoIdFieldNumber = 8;
        private pb::ByteString ssoId_ = pb::ByteString.Empty;
        public pb::ByteString SsoId
        {
            get { return ssoId_; }
            set
            {
                ssoId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "disconnect_on_cookie_fail" field.</summary>
        public const int DisconnectOnCookieFailFieldNumber = 9;
        private bool disconnectOnCookieFail_;
        public bool DisconnectOnCookieFail
        {
            get { return disconnectOnCookieFail_; }
            set
            {
                disconnectOnCookieFail_ = value;
            }
        }

        /// <summary>Field number for the "allow_logon_queue_notifications" field.</summary>
        public const int AllowLogonQueueNotificationsFieldNumber = 10;
        private bool allowLogonQueueNotifications_;
        public bool AllowLogonQueueNotifications
        {
            get { return allowLogonQueueNotifications_; }
            set
            {
                allowLogonQueueNotifications_ = value;
            }
        }

        /// <summary>Field number for the "web_client_verification" field.</summary>
        public const int WebClientVerificationFieldNumber = 11;
        private bool webClientVerification_;
        public bool WebClientVerification
        {
            get { return webClientVerification_; }
            set
            {
                webClientVerification_ = value;
            }
        }

        /// <summary>Field number for the "cached_web_credentials" field.</summary>
        public const int CachedWebCredentialsFieldNumber = 12;
        private pb::ByteString cachedWebCredentials_ = pb::ByteString.Empty;
        public pb::ByteString CachedWebCredentials
        {
            get { return cachedWebCredentials_; }
            set
            {
                cachedWebCredentials_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "enable_cookie" field.</summary>
        public const int EnableCookieFieldNumber = 13;
        private bool enableCookie_;
        public bool EnableCookie
        {
            get { return enableCookie_; }
            set
            {
                enableCookie_ = value;
            }
        }

        /// <summary>Field number for the "user_agent" field.</summary>
        public const int UserAgentFieldNumber = 14;
        private string userAgent_ = "";
        public string UserAgent
        {
            get { return userAgent_; }
            set
            {
                userAgent_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as LogonRequest);
        }

        public bool Equals(LogonRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Program != other.Program) return false;
            if (Platform != other.Platform) return false;
            if (Locale != other.Locale) return false;
            if (Email != other.Email) return false;
            if (Version != other.Version) return false;
            if (ApplicationVersion != other.ApplicationVersion) return false;
            if (PublicComputer != other.PublicComputer) return false;
            if (SsoId != other.SsoId) return false;
            if (DisconnectOnCookieFail != other.DisconnectOnCookieFail) return false;
            if (AllowLogonQueueNotifications != other.AllowLogonQueueNotifications) return false;
            if (WebClientVerification != other.WebClientVerification) return false;
            if (CachedWebCredentials != other.CachedWebCredentials) return false;
            if (EnableCookie != other.EnableCookie) return false;
            if (UserAgent != other.UserAgent) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Program.Length != 0) hash ^= Program.GetHashCode();
            if (Platform.Length != 0) hash ^= Platform.GetHashCode();
            if (Locale.Length != 0) hash ^= Locale.GetHashCode();
            if (Email.Length != 0) hash ^= Email.GetHashCode();
            if (Version.Length != 0) hash ^= Version.GetHashCode();
            if (ApplicationVersion != 0) hash ^= ApplicationVersion.GetHashCode();
            if (PublicComputer != false) hash ^= PublicComputer.GetHashCode();
            if (SsoId.Length != 0) hash ^= SsoId.GetHashCode();
            if (DisconnectOnCookieFail != false) hash ^= DisconnectOnCookieFail.GetHashCode();
            if (AllowLogonQueueNotifications != false) hash ^= AllowLogonQueueNotifications.GetHashCode();
            if (WebClientVerification != false) hash ^= WebClientVerification.GetHashCode();
            if (CachedWebCredentials.Length != 0) hash ^= CachedWebCredentials.GetHashCode();
            if (EnableCookie != false) hash ^= EnableCookie.GetHashCode();
            if (UserAgent.Length != 0) hash ^= UserAgent.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Program.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteString(Program);
            }
            if (Platform.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteString(Platform);
            }
            if (Locale.Length != 0)
            {
                output.WriteRawTag(26);
                output.WriteString(Locale);
            }
            if (Email.Length != 0)
            {
                output.WriteRawTag(34);
                output.WriteString(Email);
            }
            if (Version.Length != 0)
            {
                output.WriteRawTag(42);
                output.WriteString(Version);
            }
            if (ApplicationVersion != 0)
            {
                output.WriteRawTag(48);
                output.WriteInt32(ApplicationVersion);
            }
            if (PublicComputer != false)
            {
                output.WriteRawTag(56);
                output.WriteBool(PublicComputer);
            }
            if (SsoId.Length != 0)
            {
                output.WriteRawTag(66);
                output.WriteBytes(SsoId);
            }
            if (DisconnectOnCookieFail != false)
            {
                output.WriteRawTag(72);
                output.WriteBool(DisconnectOnCookieFail);
            }
            if (AllowLogonQueueNotifications != false)
            {
                output.WriteRawTag(80);
                output.WriteBool(AllowLogonQueueNotifications);
            }
            if (WebClientVerification != false)
            {
                output.WriteRawTag(88);
                output.WriteBool(WebClientVerification);
            }
            if (CachedWebCredentials.Length != 0)
            {
                output.WriteRawTag(98);
                output.WriteBytes(CachedWebCredentials);
            }
            if (EnableCookie != false)
            {
                output.WriteRawTag(104);
                output.WriteBool(EnableCookie);
            }
            if (UserAgent.Length != 0)
            {
                output.WriteRawTag(114);
                output.WriteString(UserAgent);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Program.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Program);
            }
            if (Platform.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Platform);
            }
            if (Locale.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Locale);
            }
            if (Email.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Email);
            }
            if (Version.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
            }
            if (ApplicationVersion != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeInt32Size(ApplicationVersion);
            }
            if (PublicComputer != false)
            {
                size += 1 + 1;
            }
            if (SsoId.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(SsoId);
            }
            if (DisconnectOnCookieFail != false)
            {
                size += 1 + 1;
            }
            if (AllowLogonQueueNotifications != false)
            {
                size += 1 + 1;
            }
            if (WebClientVerification != false)
            {
                size += 1 + 1;
            }
            if (CachedWebCredentials.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(CachedWebCredentials);
            }
            if (EnableCookie != false)
            {
                size += 1 + 1;
            }
            if (UserAgent.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(UserAgent);
            }
            return size;
        }

        public void MergeFrom(LogonRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Program.Length != 0)
            {
                Program = other.Program;
            }
            if (other.Platform.Length != 0)
            {
                Platform = other.Platform;
            }
            if (other.Locale.Length != 0)
            {
                Locale = other.Locale;
            }
            if (other.Email.Length != 0)
            {
                Email = other.Email;
            }
            if (other.Version.Length != 0)
            {
                Version = other.Version;
            }
            if (other.ApplicationVersion != 0)
            {
                ApplicationVersion = other.ApplicationVersion;
            }
            if (other.PublicComputer != false)
            {
                PublicComputer = other.PublicComputer;
            }
            if (other.SsoId.Length != 0)
            {
                SsoId = other.SsoId;
            }
            if (other.DisconnectOnCookieFail != false)
            {
                DisconnectOnCookieFail = other.DisconnectOnCookieFail;
            }
            if (other.AllowLogonQueueNotifications != false)
            {
                AllowLogonQueueNotifications = other.AllowLogonQueueNotifications;
            }
            if (other.WebClientVerification != false)
            {
                WebClientVerification = other.WebClientVerification;
            }
            if (other.CachedWebCredentials.Length != 0)
            {
                CachedWebCredentials = other.CachedWebCredentials;
            }
            if (other.EnableCookie != false)
            {
                EnableCookie = other.EnableCookie;
            }
            if (other.UserAgent.Length != 0)
            {
                UserAgent = other.UserAgent;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            Program = input.ReadString();
                            break;
                        }
                    case 18:
                        {
                            Platform = input.ReadString();
                            break;
                        }
                    case 26:
                        {
                            Locale = input.ReadString();
                            break;
                        }
                    case 34:
                        {
                            Email = input.ReadString();
                            break;
                        }
                    case 42:
                        {
                            Version = input.ReadString();
                            break;
                        }
                    case 48:
                        {
                            ApplicationVersion = input.ReadInt32();
                            break;
                        }
                    case 56:
                        {
                            PublicComputer = input.ReadBool();
                            break;
                        }
                    case 66:
                        {
                            SsoId = input.ReadBytes();
                            break;
                        }
                    case 72:
                        {
                            DisconnectOnCookieFail = input.ReadBool();
                            break;
                        }
                    case 80:
                        {
                            AllowLogonQueueNotifications = input.ReadBool();
                            break;
                        }
                    case 88:
                        {
                            WebClientVerification = input.ReadBool();
                            break;
                        }
                    case 98:
                        {
                            CachedWebCredentials = input.ReadBytes();
                            break;
                        }
                    case 104:
                        {
                            EnableCookie = input.ReadBool();
                            break;
                        }
                    case 114:
                        {
                            UserAgent = input.ReadString();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class LogonResult : pb::IMessage<LogonResult>
    {
        private static readonly pb::MessageParser<LogonResult> _parser = new pb::MessageParser<LogonResult>(() => new LogonResult());
        public static pb::MessageParser<LogonResult> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[4]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public LogonResult()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public LogonResult(LogonResult other) : this()
        {
            errorCode_ = other.errorCode_;
            AccountId = other.accountId_ != null ? other.AccountId.Clone() : null;
            gameAccountId_ = other.gameAccountId_.Clone();
            email_ = other.email_;
            availableRegion_ = other.availableRegion_.Clone();
            connectedRegion_ = other.connectedRegion_;
            battleTag_ = other.battleTag_;
            geoipCountry_ = other.geoipCountry_;
            sessionKey_ = other.sessionKey_;
            restrictedMode_ = other.restrictedMode_;
        }

        public LogonResult Clone()
        {
            return new LogonResult(this);
        }

        /// <summary>Field number for the "error_code" field.</summary>
        public const int ErrorCodeFieldNumber = 0;
        private uint errorCode_;
        public uint ErrorCode
        {
            get { return errorCode_; }
            set
            {
                bitArray.Set(ErrorCodeFieldNumber, true);
                errorCode_ = value;
            }
        }

        /// <summary>Field number for the "account_id" field.</summary>
        public const int AccountIdFieldNumber = 1;
        private Bgs.Protocol.EntityId accountId_;
        public Bgs.Protocol.EntityId AccountId
        {
            get { return accountId_; }
            set
            {
                bitArray.Set(AccountIdFieldNumber, true);
                accountId_ = value;
            }
        }

        /// <summary>Field number for the "game_account_id" field.</summary>
        public const int GameAccountIdFieldNumber = 2;
        private static readonly pb::FieldCodec<Bgs.Protocol.EntityId> _repeated_gameAccountId_codec
            = pb::FieldCodec.ForMessage(26, Bgs.Protocol.EntityId.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.EntityId> gameAccountId_ = new pbc::RepeatedField<Bgs.Protocol.EntityId>();
        public pbc::RepeatedField<Bgs.Protocol.EntityId> GameAccountId
        {
            get { return gameAccountId_; }
        }

        /// <summary>Field number for the "email" field.</summary>
        public const int EmailFieldNumber = 3;
        private string email_ = "";
        public string Email
        {
            get { return email_; }
            set
            {
                bitArray.Set(EmailFieldNumber, true);
                email_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "available_region" field.</summary>
        public const int AvailableRegionFieldNumber = 4;
        private static readonly pb::FieldCodec<uint> _repeated_availableRegion_codec
            = pb::FieldCodec.ForUInt32(42);
        private readonly pbc::RepeatedField<uint> availableRegion_ = new pbc::RepeatedField<uint>();
        public pbc::RepeatedField<uint> AvailableRegion
        {
            get { return availableRegion_; }
        }

        /// <summary>Field number for the "connected_region" field.</summary>
        public const int ConnectedRegionFieldNumber = 5;
        private uint connectedRegion_;
        public uint ConnectedRegion
        {
            get { return connectedRegion_; }
            set
            {
                bitArray.Set(ConnectedRegionFieldNumber, true);
                connectedRegion_ = value;
            }
        }

        /// <summary>Field number for the "battle_tag" field.</summary>
        public const int BattleTagFieldNumber = 6;
        private string battleTag_ = "";
        public string BattleTag
        {
            get { return battleTag_; }
            set
            {
                bitArray.Set(BattleTagFieldNumber, true);
                battleTag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "geoip_country" field.</summary>
        public const int GeoipCountryFieldNumber = 7;
        private string geoipCountry_ = "";
        public string GeoipCountry
        {
            get { return geoipCountry_; }
            set
            {
                bitArray.Set(GeoipCountryFieldNumber, true);
                geoipCountry_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "session_key" field.</summary>
        public const int SessionKeyFieldNumber = 8;
        private pb::ByteString sessionKey_ = pb::ByteString.Empty;
        public pb::ByteString SessionKey
        {
            get { return sessionKey_; }
            set
            {
                bitArray.Set(SessionKeyFieldNumber, true);
                sessionKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "restricted_mode" field.</summary>
        public const int RestrictedModeFieldNumber = 9;
        private bool restrictedMode_;
        public bool RestrictedMode
        {
            get { return restrictedMode_; }
            set
            {
                bitArray.Set(RestrictedModeFieldNumber, true);
                restrictedMode_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as LogonResult);
        }

        public bool Equals(LogonResult other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (ErrorCode != other.ErrorCode) return false;
            if (!object.Equals(AccountId, other.AccountId)) return false;
            if (!gameAccountId_.Equals(other.gameAccountId_)) return false;
            if (Email != other.Email) return false;
            if (!availableRegion_.Equals(other.availableRegion_)) return false;
            if (ConnectedRegion != other.ConnectedRegion) return false;
            if (BattleTag != other.BattleTag) return false;
            if (GeoipCountry != other.GeoipCountry) return false;
            if (SessionKey != other.SessionKey) return false;
            if (RestrictedMode != other.RestrictedMode) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ErrorCode != 0) hash ^= ErrorCode.GetHashCode();
            if (accountId_ != null) hash ^= AccountId.GetHashCode();
            hash ^= gameAccountId_.GetHashCode();
            if (Email.Length != 0) hash ^= Email.GetHashCode();
            hash ^= availableRegion_.GetHashCode();
            if (ConnectedRegion != 0) hash ^= ConnectedRegion.GetHashCode();
            if (BattleTag.Length != 0) hash ^= BattleTag.GetHashCode();
            if (GeoipCountry.Length != 0) hash ^= GeoipCountry.GetHashCode();
            if (SessionKey.Length != 0) hash ^= SessionKey.GetHashCode();
            if (RestrictedMode != false) hash ^= RestrictedMode.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (bitArray.Get(ErrorCodeFieldNumber))
            {
                output.WriteRawTag(8);
                output.WriteUInt32(ErrorCode);
            }
            if (bitArray.Get(AccountIdFieldNumber))
            {
                output.WriteRawTag(18);
                output.WriteMessage(AccountId);
            }
            gameAccountId_.WriteTo(output, _repeated_gameAccountId_codec);
            if (bitArray.Get(EmailFieldNumber))
            {
                output.WriteRawTag(34);
                output.WriteString(Email);
            }
            availableRegion_.WriteTo(output, _repeated_availableRegion_codec);
            if (bitArray.Get(ConnectedRegionFieldNumber))
            {
                output.WriteRawTag(48);
                output.WriteUInt32(ConnectedRegion);
            }
            if (bitArray.Get(BattleTagFieldNumber))
            {
                output.WriteRawTag(58);
                output.WriteString(BattleTag);
            }
            if (bitArray.Get(GeoipCountryFieldNumber))
            {
                output.WriteRawTag(66);
                output.WriteString(GeoipCountry);
            }
            if (bitArray.Get(SessionKeyFieldNumber))
            {
                output.WriteRawTag(74);
                output.WriteBytes(SessionKey);
            }
            if (bitArray.Get(RestrictedModeFieldNumber))
            {
                output.WriteRawTag(80);
                output.WriteBool(RestrictedMode);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (bitArray.Get(ErrorCodeFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ErrorCode);
            }
            if (bitArray.Get(AccountIdFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(AccountId);
            }
            size += gameAccountId_.CalculateSize(_repeated_gameAccountId_codec);
            if (bitArray.Get(EmailFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Email);
            }
            size += availableRegion_.CalculateSize(_repeated_availableRegion_codec);
            if (bitArray.Get(ConnectedRegionFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ConnectedRegion);
            }
            if (bitArray.Get(BattleTagFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(BattleTag);
            }
            if (bitArray.Get(GeoipCountryFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(GeoipCountry);
            }
            if (bitArray.Get(SessionKeyFieldNumber))
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(SessionKey);
            }
            if (bitArray.Get(RestrictedModeFieldNumber))
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(LogonResult other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ErrorCode != 0)
            {
                ErrorCode = other.ErrorCode;
            }
            if (other.accountId_ != null)
            {
                if (accountId_ == null)
                {
                    accountId_ = new Bgs.Protocol.EntityId();
                }
                AccountId.MergeFrom(other.AccountId);
            }
            gameAccountId_.Add(other.gameAccountId_);
            if (other.Email.Length != 0)
            {
                Email = other.Email;
            }
            availableRegion_.Add(other.availableRegion_);
            if (other.ConnectedRegion != 0)
            {
                ConnectedRegion = other.ConnectedRegion;
            }
            if (other.BattleTag.Length != 0)
            {
                BattleTag = other.BattleTag;
            }
            if (other.GeoipCountry.Length != 0)
            {
                GeoipCountry = other.GeoipCountry;
            }
            if (other.SessionKey.Length != 0)
            {
                SessionKey = other.SessionKey;
            }
            if (other.RestrictedMode != false)
            {
                RestrictedMode = other.RestrictedMode;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            ErrorCode = input.ReadUInt32();
                            break;
                        }
                    case 18:
                        {
                            if (accountId_ == null)
                            {
                                accountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(accountId_);
                            break;
                        }
                    case 26:
                        {
                            gameAccountId_.AddEntriesFrom(input, _repeated_gameAccountId_codec);
                            break;
                        }
                    case 34:
                        {
                            Email = input.ReadString();
                            break;
                        }
                    case 42:
                    case 40:
                        {
                            availableRegion_.AddEntriesFrom(input, _repeated_availableRegion_codec);
                            break;
                        }
                    case 48:
                        {
                            ConnectedRegion = input.ReadUInt32();
                            break;
                        }
                    case 58:
                        {
                            BattleTag = input.ReadString();
                            break;
                        }
                    case 66:
                        {
                            GeoipCountry = input.ReadString();
                            break;
                        }
                    case 74:
                        {
                            SessionKey = input.ReadBytes();
                            break;
                        }
                    case 80:
                        {
                            RestrictedMode = input.ReadBool();
                            break;
                        }
                }
            }
        }

        System.Collections.BitArray bitArray = new System.Collections.BitArray(10);
    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class GenerateSSOTokenRequest : pb::IMessage<GenerateSSOTokenRequest>
    {
        private static readonly pb::MessageParser<GenerateSSOTokenRequest> _parser = new pb::MessageParser<GenerateSSOTokenRequest>(() => new GenerateSSOTokenRequest());
        public static pb::MessageParser<GenerateSSOTokenRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[5]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GenerateSSOTokenRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GenerateSSOTokenRequest(GenerateSSOTokenRequest other) : this()
        {
            program_ = other.program_;
        }

        public GenerateSSOTokenRequest Clone()
        {
            return new GenerateSSOTokenRequest(this);
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 1;
        private uint program_;
        public uint Program
        {
            get { return program_; }
            set
            {
                program_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GenerateSSOTokenRequest);
        }

        public bool Equals(GenerateSSOTokenRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Program != other.Program) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Program != 0) hash ^= Program.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Program != 0)
            {
                output.WriteRawTag(13);
                output.WriteFixed32(Program);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Program != 0)
            {
                size += 1 + 4;
            }
            return size;
        }

        public void MergeFrom(GenerateSSOTokenRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Program != 0)
            {
                Program = other.Program;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 13:
                        {
                            Program = input.ReadFixed32();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class GenerateSSOTokenResponse : pb::IMessage<GenerateSSOTokenResponse>
    {
        private static readonly pb::MessageParser<GenerateSSOTokenResponse> _parser = new pb::MessageParser<GenerateSSOTokenResponse>(() => new GenerateSSOTokenResponse());
        public static pb::MessageParser<GenerateSSOTokenResponse> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[6]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GenerateSSOTokenResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GenerateSSOTokenResponse(GenerateSSOTokenResponse other) : this()
        {
            ssoId_ = other.ssoId_;
            ssoSecret_ = other.ssoSecret_;
        }

        public GenerateSSOTokenResponse Clone()
        {
            return new GenerateSSOTokenResponse(this);
        }

        /// <summary>Field number for the "sso_id" field.</summary>
        public const int SsoIdFieldNumber = 1;
        private pb::ByteString ssoId_ = pb::ByteString.Empty;
        public pb::ByteString SsoId
        {
            get { return ssoId_; }
            set
            {
                ssoId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "sso_secret" field.</summary>
        public const int SsoSecretFieldNumber = 2;
        private pb::ByteString ssoSecret_ = pb::ByteString.Empty;
        public pb::ByteString SsoSecret
        {
            get { return ssoSecret_; }
            set
            {
                ssoSecret_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GenerateSSOTokenResponse);
        }

        public bool Equals(GenerateSSOTokenResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (SsoId != other.SsoId) return false;
            if (SsoSecret != other.SsoSecret) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (SsoId.Length != 0) hash ^= SsoId.GetHashCode();
            if (SsoSecret.Length != 0) hash ^= SsoSecret.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (SsoId.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteBytes(SsoId);
            }
            if (SsoSecret.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteBytes(SsoSecret);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (SsoId.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(SsoId);
            }
            if (SsoSecret.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(SsoSecret);
            }
            return size;
        }

        public void MergeFrom(GenerateSSOTokenResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.SsoId.Length != 0)
            {
                SsoId = other.SsoId;
            }
            if (other.SsoSecret.Length != 0)
            {
                SsoSecret = other.SsoSecret;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            SsoId = input.ReadBytes();
                            break;
                        }
                    case 18:
                        {
                            SsoSecret = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class LogonUpdateRequest : pb::IMessage<LogonUpdateRequest>
    {
        private static readonly pb::MessageParser<LogonUpdateRequest> _parser = new pb::MessageParser<LogonUpdateRequest>(() => new LogonUpdateRequest());
        public static pb::MessageParser<LogonUpdateRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[7]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public LogonUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public LogonUpdateRequest(LogonUpdateRequest other) : this()
        {
            errorCode_ = other.errorCode_;
        }

        public LogonUpdateRequest Clone()
        {
            return new LogonUpdateRequest(this);
        }

        /// <summary>Field number for the "error_code" field.</summary>
        public const int ErrorCodeFieldNumber = 1;
        private uint errorCode_;
        public uint ErrorCode
        {
            get { return errorCode_; }
            set
            {
                errorCode_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as LogonUpdateRequest);
        }

        public bool Equals(LogonUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (ErrorCode != other.ErrorCode) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (ErrorCode != 0) hash ^= ErrorCode.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (ErrorCode != 0)
            {
                output.WriteRawTag(8);
                output.WriteUInt32(ErrorCode);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (ErrorCode != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ErrorCode);
            }
            return size;
        }

        public void MergeFrom(LogonUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.ErrorCode != 0)
            {
                ErrorCode = other.ErrorCode;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            ErrorCode = input.ReadUInt32();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class LogonQueueUpdateRequest : pb::IMessage<LogonQueueUpdateRequest>
    {
        private static readonly pb::MessageParser<LogonQueueUpdateRequest> _parser = new pb::MessageParser<LogonQueueUpdateRequest>(() => new LogonQueueUpdateRequest());
        public static pb::MessageParser<LogonQueueUpdateRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[8]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public LogonQueueUpdateRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public LogonQueueUpdateRequest(LogonQueueUpdateRequest other) : this()
        {
            position_ = other.position_;
            estimatedTime_ = other.estimatedTime_;
            etaDeviationInSec_ = other.etaDeviationInSec_;
        }

        public LogonQueueUpdateRequest Clone()
        {
            return new LogonQueueUpdateRequest(this);
        }

        /// <summary>Field number for the "position" field.</summary>
        public const int PositionFieldNumber = 1;
        private uint position_;
        public uint Position
        {
            get { return position_; }
            set
            {
                position_ = value;
            }
        }

        /// <summary>Field number for the "estimated_time" field.</summary>
        public const int EstimatedTimeFieldNumber = 2;
        private ulong estimatedTime_;
        public ulong EstimatedTime
        {
            get { return estimatedTime_; }
            set
            {
                estimatedTime_ = value;
            }
        }

        /// <summary>Field number for the "eta_deviation_in_sec" field.</summary>
        public const int EtaDeviationInSecFieldNumber = 3;
        private ulong etaDeviationInSec_;
        public ulong EtaDeviationInSec
        {
            get { return etaDeviationInSec_; }
            set
            {
                etaDeviationInSec_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as LogonQueueUpdateRequest);
        }

        public bool Equals(LogonQueueUpdateRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Position != other.Position) return false;
            if (EstimatedTime != other.EstimatedTime) return false;
            if (EtaDeviationInSec != other.EtaDeviationInSec) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Position != 0) hash ^= Position.GetHashCode();
            if (EstimatedTime != 0UL) hash ^= EstimatedTime.GetHashCode();
            if (EtaDeviationInSec != 0UL) hash ^= EtaDeviationInSec.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Position != 0)
            {
                output.WriteRawTag(8);
                output.WriteUInt32(Position);
            }
            if (EstimatedTime != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(EstimatedTime);
            }
            if (EtaDeviationInSec != 0UL)
            {
                output.WriteRawTag(24);
                output.WriteUInt64(EtaDeviationInSec);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Position != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Position);
            }
            if (EstimatedTime != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EstimatedTime);
            }
            if (EtaDeviationInSec != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EtaDeviationInSec);
            }
            return size;
        }

        public void MergeFrom(LogonQueueUpdateRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Position != 0)
            {
                Position = other.Position;
            }
            if (other.EstimatedTime != 0UL)
            {
                EstimatedTime = other.EstimatedTime;
            }
            if (other.EtaDeviationInSec != 0UL)
            {
                EtaDeviationInSec = other.EtaDeviationInSec;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            Position = input.ReadUInt32();
                            break;
                        }
                    case 16:
                        {
                            EstimatedTime = input.ReadUInt64();
                            break;
                        }
                    case 24:
                        {
                            EtaDeviationInSec = input.ReadUInt64();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class AccountSettingsNotification : pb::IMessage<AccountSettingsNotification>
    {
        private static readonly pb::MessageParser<AccountSettingsNotification> _parser = new pb::MessageParser<AccountSettingsNotification>(() => new AccountSettingsNotification());
        public static pb::MessageParser<AccountSettingsNotification> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[9]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public AccountSettingsNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public AccountSettingsNotification(AccountSettingsNotification other) : this()
        {
            licenses_ = other.licenses_.Clone();
            isUsingRid_ = other.isUsingRid_;
            isPlayingFromIgr_ = other.isPlayingFromIgr_;
            canReceiveVoice_ = other.canReceiveVoice_;
            canSendVoice_ = other.canSendVoice_;
        }

        public AccountSettingsNotification Clone()
        {
            return new AccountSettingsNotification(this);
        }

        /// <summary>Field number for the "licenses" field.</summary>
        public const int LicensesFieldNumber = 1;
        private static readonly pb::FieldCodec<Bgs.Protocol.Account.V1.AccountLicense> _repeated_licenses_codec
            = pb::FieldCodec.ForMessage(10, Bgs.Protocol.Account.V1.AccountLicense.Parser);
        private readonly pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense> licenses_ = new pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense>();
        public pbc::RepeatedField<Bgs.Protocol.Account.V1.AccountLicense> Licenses
        {
            get { return licenses_; }
        }

        /// <summary>Field number for the "is_using_rid" field.</summary>
        public const int IsUsingRidFieldNumber = 2;
        private bool isUsingRid_;
        public bool IsUsingRid
        {
            get { return isUsingRid_; }
            set
            {
                isUsingRid_ = value;
            }
        }

        /// <summary>Field number for the "is_playing_from_igr" field.</summary>
        public const int IsPlayingFromIgrFieldNumber = 3;
        private bool isPlayingFromIgr_;
        public bool IsPlayingFromIgr
        {
            get { return isPlayingFromIgr_; }
            set
            {
                isPlayingFromIgr_ = value;
            }
        }

        /// <summary>Field number for the "can_receive_voice" field.</summary>
        public const int CanReceiveVoiceFieldNumber = 4;
        private bool canReceiveVoice_;
        public bool CanReceiveVoice
        {
            get { return canReceiveVoice_; }
            set
            {
                canReceiveVoice_ = value;
            }
        }

        /// <summary>Field number for the "can_send_voice" field.</summary>
        public const int CanSendVoiceFieldNumber = 5;
        private bool canSendVoice_;
        public bool CanSendVoice
        {
            get { return canSendVoice_; }
            set
            {
                canSendVoice_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as AccountSettingsNotification);
        }

        public bool Equals(AccountSettingsNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!licenses_.Equals(other.licenses_)) return false;
            if (IsUsingRid != other.IsUsingRid) return false;
            if (IsPlayingFromIgr != other.IsPlayingFromIgr) return false;
            if (CanReceiveVoice != other.CanReceiveVoice) return false;
            if (CanSendVoice != other.CanSendVoice) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            hash ^= licenses_.GetHashCode();
            if (IsUsingRid != false) hash ^= IsUsingRid.GetHashCode();
            if (IsPlayingFromIgr != false) hash ^= IsPlayingFromIgr.GetHashCode();
            if (CanReceiveVoice != false) hash ^= CanReceiveVoice.GetHashCode();
            if (CanSendVoice != false) hash ^= CanSendVoice.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            licenses_.WriteTo(output, _repeated_licenses_codec);
            if (IsUsingRid != false)
            {
                output.WriteRawTag(16);
                output.WriteBool(IsUsingRid);
            }
            if (IsPlayingFromIgr != false)
            {
                output.WriteRawTag(24);
                output.WriteBool(IsPlayingFromIgr);
            }
            if (CanReceiveVoice != false)
            {
                output.WriteRawTag(32);
                output.WriteBool(CanReceiveVoice);
            }
            if (CanSendVoice != false)
            {
                output.WriteRawTag(40);
                output.WriteBool(CanSendVoice);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            size += licenses_.CalculateSize(_repeated_licenses_codec);
            if (IsUsingRid != false)
            {
                size += 1 + 1;
            }
            if (IsPlayingFromIgr != false)
            {
                size += 1 + 1;
            }
            if (CanReceiveVoice != false)
            {
                size += 1 + 1;
            }
            if (CanSendVoice != false)
            {
                size += 1 + 1;
            }
            return size;
        }

        public void MergeFrom(AccountSettingsNotification other)
        {
            if (other == null)
            {
                return;
            }
            licenses_.Add(other.licenses_);
            if (other.IsUsingRid != false)
            {
                IsUsingRid = other.IsUsingRid;
            }
            if (other.IsPlayingFromIgr != false)
            {
                IsPlayingFromIgr = other.IsPlayingFromIgr;
            }
            if (other.CanReceiveVoice != false)
            {
                CanReceiveVoice = other.CanReceiveVoice;
            }
            if (other.CanSendVoice != false)
            {
                CanSendVoice = other.CanSendVoice;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            licenses_.AddEntriesFrom(input, _repeated_licenses_codec);
                            break;
                        }
                    case 16:
                        {
                            IsUsingRid = input.ReadBool();
                            break;
                        }
                    case 24:
                        {
                            IsPlayingFromIgr = input.ReadBool();
                            break;
                        }
                    case 32:
                        {
                            CanReceiveVoice = input.ReadBool();
                            break;
                        }
                    case 40:
                        {
                            CanSendVoice = input.ReadBool();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class ServerStateChangeRequest : pb::IMessage<ServerStateChangeRequest>
    {
        private static readonly pb::MessageParser<ServerStateChangeRequest> _parser = new pb::MessageParser<ServerStateChangeRequest>(() => new ServerStateChangeRequest());
        public static pb::MessageParser<ServerStateChangeRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[10]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public ServerStateChangeRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public ServerStateChangeRequest(ServerStateChangeRequest other) : this()
        {
            state_ = other.state_;
            eventTime_ = other.eventTime_;
        }

        public ServerStateChangeRequest Clone()
        {
            return new ServerStateChangeRequest(this);
        }

        /// <summary>Field number for the "state" field.</summary>
        public const int StateFieldNumber = 1;
        private uint state_;
        public uint State
        {
            get { return state_; }
            set
            {
                state_ = value;
            }
        }

        /// <summary>Field number for the "event_time" field.</summary>
        public const int EventTimeFieldNumber = 2;
        private ulong eventTime_;
        public ulong EventTime
        {
            get { return eventTime_; }
            set
            {
                eventTime_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as ServerStateChangeRequest);
        }

        public bool Equals(ServerStateChangeRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (State != other.State) return false;
            if (EventTime != other.EventTime) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (State != 0) hash ^= State.GetHashCode();
            if (EventTime != 0UL) hash ^= EventTime.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (State != 0)
            {
                output.WriteRawTag(8);
                output.WriteUInt32(State);
            }
            if (EventTime != 0UL)
            {
                output.WriteRawTag(16);
                output.WriteUInt64(EventTime);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (State != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(State);
            }
            if (EventTime != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(EventTime);
            }
            return size;
        }

        public void MergeFrom(ServerStateChangeRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.State != 0)
            {
                State = other.State;
            }
            if (other.EventTime != 0UL)
            {
                EventTime = other.EventTime;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            State = input.ReadUInt32();
                            break;
                        }
                    case 16:
                        {
                            EventTime = input.ReadUInt64();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class VersionInfo : pb::IMessage<VersionInfo>
    {
        private static readonly pb::MessageParser<VersionInfo> _parser = new pb::MessageParser<VersionInfo>(() => new VersionInfo());
        public static pb::MessageParser<VersionInfo> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[11]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public VersionInfo()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public VersionInfo(VersionInfo other) : this()
        {
            number_ = other.number_;
            patch_ = other.patch_;
            isOptional_ = other.isOptional_;
            kickTime_ = other.kickTime_;
        }

        public VersionInfo Clone()
        {
            return new VersionInfo(this);
        }

        /// <summary>Field number for the "number" field.</summary>
        public const int NumberFieldNumber = 1;
        private uint number_;
        public uint Number
        {
            get { return number_; }
            set
            {
                number_ = value;
            }
        }

        /// <summary>Field number for the "patch" field.</summary>
        public const int PatchFieldNumber = 2;
        private string patch_ = "";
        public string Patch
        {
            get { return patch_; }
            set
            {
                patch_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "is_optional" field.</summary>
        public const int IsOptionalFieldNumber = 3;
        private bool isOptional_;
        public bool IsOptional
        {
            get { return isOptional_; }
            set
            {
                isOptional_ = value;
            }
        }

        /// <summary>Field number for the "kick_time" field.</summary>
        public const int KickTimeFieldNumber = 4;
        private ulong kickTime_;
        public ulong KickTime
        {
            get { return kickTime_; }
            set
            {
                kickTime_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as VersionInfo);
        }

        public bool Equals(VersionInfo other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Number != other.Number) return false;
            if (Patch != other.Patch) return false;
            if (IsOptional != other.IsOptional) return false;
            if (KickTime != other.KickTime) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Number != 0) hash ^= Number.GetHashCode();
            if (Patch.Length != 0) hash ^= Patch.GetHashCode();
            if (IsOptional != false) hash ^= IsOptional.GetHashCode();
            if (KickTime != 0UL) hash ^= KickTime.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Number != 0)
            {
                output.WriteRawTag(8);
                output.WriteUInt32(Number);
            }
            if (Patch.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteString(Patch);
            }
            if (IsOptional != false)
            {
                output.WriteRawTag(24);
                output.WriteBool(IsOptional);
            }
            if (KickTime != 0UL)
            {
                output.WriteRawTag(32);
                output.WriteUInt64(KickTime);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Number != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Number);
            }
            if (Patch.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeStringSize(Patch);
            }
            if (IsOptional != false)
            {
                size += 1 + 1;
            }
            if (KickTime != 0UL)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt64Size(KickTime);
            }
            return size;
        }

        public void MergeFrom(VersionInfo other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Number != 0)
            {
                Number = other.Number;
            }
            if (other.Patch.Length != 0)
            {
                Patch = other.Patch;
            }
            if (other.IsOptional != false)
            {
                IsOptional = other.IsOptional;
            }
            if (other.KickTime != 0UL)
            {
                KickTime = other.KickTime;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            Number = input.ReadUInt32();
                            break;
                        }
                    case 18:
                        {
                            Patch = input.ReadString();
                            break;
                        }
                    case 24:
                        {
                            IsOptional = input.ReadBool();
                            break;
                        }
                    case 32:
                        {
                            KickTime = input.ReadUInt64();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class VersionInfoNotification : pb::IMessage<VersionInfoNotification>
    {
        private static readonly pb::MessageParser<VersionInfoNotification> _parser = new pb::MessageParser<VersionInfoNotification>(() => new VersionInfoNotification());
        public static pb::MessageParser<VersionInfoNotification> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[12]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public VersionInfoNotification()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public VersionInfoNotification(VersionInfoNotification other) : this()
        {
            VersionInfo = other.versionInfo_ != null ? other.VersionInfo.Clone() : null;
        }

        public VersionInfoNotification Clone()
        {
            return new VersionInfoNotification(this);
        }

        /// <summary>Field number for the "version_info" field.</summary>
        public const int VersionInfoFieldNumber = 1;
        private Bgs.Protocol.Authentication.V1.VersionInfo versionInfo_;
        public Bgs.Protocol.Authentication.V1.VersionInfo VersionInfo
        {
            get { return versionInfo_; }
            set
            {
                versionInfo_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as VersionInfoNotification);
        }

        public bool Equals(VersionInfoNotification other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(VersionInfo, other.VersionInfo)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (versionInfo_ != null) hash ^= VersionInfo.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (versionInfo_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(VersionInfo);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (versionInfo_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(VersionInfo);
            }
            return size;
        }

        public void MergeFrom(VersionInfoNotification other)
        {
            if (other == null)
            {
                return;
            }
            if (other.versionInfo_ != null)
            {
                if (versionInfo_ == null)
                {
                    versionInfo_ = new Bgs.Protocol.Authentication.V1.VersionInfo();
                }
                VersionInfo.MergeFrom(other.VersionInfo);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (versionInfo_ == null)
                            {
                                versionInfo_ = new Bgs.Protocol.Authentication.V1.VersionInfo();
                            }
                            input.ReadMessage(versionInfo_);
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class MemModuleLoadRequest : pb::IMessage<MemModuleLoadRequest>
    {
        private static readonly pb::MessageParser<MemModuleLoadRequest> _parser = new pb::MessageParser<MemModuleLoadRequest>(() => new MemModuleLoadRequest());
        public static pb::MessageParser<MemModuleLoadRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[13]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public MemModuleLoadRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public MemModuleLoadRequest(MemModuleLoadRequest other) : this()
        {
            Handle = other.handle_ != null ? other.Handle.Clone() : null;
            key_ = other.key_;
            input_ = other.input_;
        }

        public MemModuleLoadRequest Clone()
        {
            return new MemModuleLoadRequest(this);
        }

        /// <summary>Field number for the "handle" field.</summary>
        public const int HandleFieldNumber = 1;
        private Bgs.Protocol.ContentHandle handle_;
        public Bgs.Protocol.ContentHandle Handle
        {
            get { return handle_; }
            set
            {
                handle_ = value;
            }
        }

        /// <summary>Field number for the "key" field.</summary>
        public const int KeyFieldNumber = 2;
        private pb::ByteString key_ = pb::ByteString.Empty;
        public pb::ByteString Key
        {
            get { return key_; }
            set
            {
                key_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        /// <summary>Field number for the "input" field.</summary>
        public const int InputFieldNumber = 3;
        private pb::ByteString input_ = pb::ByteString.Empty;
        public pb::ByteString Input
        {
            get { return input_; }
            set
            {
                input_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as MemModuleLoadRequest);
        }

        public bool Equals(MemModuleLoadRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(Handle, other.Handle)) return false;
            if (Key != other.Key) return false;
            if (Input != other.Input) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (handle_ != null) hash ^= Handle.GetHashCode();
            if (Key.Length != 0) hash ^= Key.GetHashCode();
            if (Input.Length != 0) hash ^= Input.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (handle_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(Handle);
            }
            if (Key.Length != 0)
            {
                output.WriteRawTag(18);
                output.WriteBytes(Key);
            }
            if (Input.Length != 0)
            {
                output.WriteRawTag(26);
                output.WriteBytes(Input);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (handle_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(Handle);
            }
            if (Key.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Key);
            }
            if (Input.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Input);
            }
            return size;
        }

        public void MergeFrom(MemModuleLoadRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.handle_ != null)
            {
                if (handle_ == null)
                {
                    handle_ = new Bgs.Protocol.ContentHandle();
                }
                Handle.MergeFrom(other.Handle);
            }
            if (other.Key.Length != 0)
            {
                Key = other.Key;
            }
            if (other.Input.Length != 0)
            {
                Input = other.Input;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (handle_ == null)
                            {
                                handle_ = new Bgs.Protocol.ContentHandle();
                            }
                            input.ReadMessage(handle_);
                            break;
                        }
                    case 18:
                        {
                            Key = input.ReadBytes();
                            break;
                        }
                    case 26:
                        {
                            Input = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class MemModuleLoadResponse : pb::IMessage<MemModuleLoadResponse>
    {
        private static readonly pb::MessageParser<MemModuleLoadResponse> _parser = new pb::MessageParser<MemModuleLoadResponse>(() => new MemModuleLoadResponse());
        public static pb::MessageParser<MemModuleLoadResponse> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[14]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public MemModuleLoadResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public MemModuleLoadResponse(MemModuleLoadResponse other) : this()
        {
            data_ = other.data_;
        }

        public MemModuleLoadResponse Clone()
        {
            return new MemModuleLoadResponse(this);
        }

        /// <summary>Field number for the "data" field.</summary>
        public const int DataFieldNumber = 1;
        private pb::ByteString data_ = pb::ByteString.Empty;
        public pb::ByteString Data
        {
            get { return data_; }
            set
            {
                data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as MemModuleLoadResponse);
        }

        public bool Equals(MemModuleLoadResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Data != other.Data) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Data.Length != 0) hash ^= Data.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Data.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteBytes(Data);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Data.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
            }
            return size;
        }

        public void MergeFrom(MemModuleLoadResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Data.Length != 0)
            {
                Data = other.Data;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            Data = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class SelectGameAccountRequest : pb::IMessage<SelectGameAccountRequest>
    {
        private static readonly pb::MessageParser<SelectGameAccountRequest> _parser = new pb::MessageParser<SelectGameAccountRequest>(() => new SelectGameAccountRequest());
        public static pb::MessageParser<SelectGameAccountRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[15]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public SelectGameAccountRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public SelectGameAccountRequest(SelectGameAccountRequest other) : this()
        {
            GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
        }

        public SelectGameAccountRequest Clone()
        {
            return new SelectGameAccountRequest(this);
        }

        /// <summary>Field number for the "game_account_id" field.</summary>
        public const int GameAccountIdFieldNumber = 1;
        private Bgs.Protocol.EntityId gameAccountId_;
        public Bgs.Protocol.EntityId GameAccountId
        {
            get { return gameAccountId_; }
            set
            {
                gameAccountId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as SelectGameAccountRequest);
        }

        public bool Equals(SelectGameAccountRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (gameAccountId_ != null) hash ^= GameAccountId.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (gameAccountId_ != null)
            {
                output.WriteRawTag(10);
                output.WriteMessage(GameAccountId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (gameAccountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
            }
            return size;
        }

        public void MergeFrom(SelectGameAccountRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.gameAccountId_ != null)
            {
                if (gameAccountId_ == null)
                {
                    gameAccountId_ = new Bgs.Protocol.EntityId();
                }
                GameAccountId.MergeFrom(other.GameAccountId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            if (gameAccountId_ == null)
                            {
                                gameAccountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(gameAccountId_);
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class GameAccountSelectedRequest : pb::IMessage<GameAccountSelectedRequest>
    {
        private static readonly pb::MessageParser<GameAccountSelectedRequest> _parser = new pb::MessageParser<GameAccountSelectedRequest>(() => new GameAccountSelectedRequest());
        public static pb::MessageParser<GameAccountSelectedRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[16]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GameAccountSelectedRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GameAccountSelectedRequest(GameAccountSelectedRequest other) : this()
        {
            result_ = other.result_;
            GameAccountId = other.gameAccountId_ != null ? other.GameAccountId.Clone() : null;
        }

        public GameAccountSelectedRequest Clone()
        {
            return new GameAccountSelectedRequest(this);
        }

        /// <summary>Field number for the "result" field.</summary>
        public const int ResultFieldNumber = 1;
        private uint result_;
        public uint Result
        {
            get { return result_; }
            set
            {
                result_ = value;
            }
        }

        /// <summary>Field number for the "game_account_id" field.</summary>
        public const int GameAccountIdFieldNumber = 2;
        private Bgs.Protocol.EntityId gameAccountId_;
        public Bgs.Protocol.EntityId GameAccountId
        {
            get { return gameAccountId_; }
            set
            {
                gameAccountId_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GameAccountSelectedRequest);
        }

        public bool Equals(GameAccountSelectedRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Result != other.Result) return false;
            if (!object.Equals(GameAccountId, other.GameAccountId)) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Result != 0) hash ^= Result.GetHashCode();
            if (gameAccountId_ != null) hash ^= GameAccountId.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.WriteUInt32(Result);
            }
            if (gameAccountId_ != null)
            {
                output.WriteRawTag(18);
                output.WriteMessage(GameAccountId);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Result != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Result);
            }
            if (gameAccountId_ != null)
            {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameAccountId);
            }
            return size;
        }

        public void MergeFrom(GameAccountSelectedRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Result != 0)
            {
                Result = other.Result;
            }
            if (other.gameAccountId_ != null)
            {
                if (gameAccountId_ == null)
                {
                    gameAccountId_ = new Bgs.Protocol.EntityId();
                }
                GameAccountId.MergeFrom(other.GameAccountId);
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 8:
                        {
                            Result = input.ReadUInt32();
                            break;
                        }
                    case 18:
                        {
                            if (gameAccountId_ == null)
                            {
                                gameAccountId_ = new Bgs.Protocol.EntityId();
                            }
                            input.ReadMessage(gameAccountId_);
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class GenerateWebCredentialsRequest : pb::IMessage<GenerateWebCredentialsRequest>
    {
        private static readonly pb::MessageParser<GenerateWebCredentialsRequest> _parser = new pb::MessageParser<GenerateWebCredentialsRequest>(() => new GenerateWebCredentialsRequest());
        public static pb::MessageParser<GenerateWebCredentialsRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[17]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GenerateWebCredentialsRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GenerateWebCredentialsRequest(GenerateWebCredentialsRequest other) : this()
        {
            program_ = other.program_;
        }

        public GenerateWebCredentialsRequest Clone()
        {
            return new GenerateWebCredentialsRequest(this);
        }

        /// <summary>Field number for the "program" field.</summary>
        public const int ProgramFieldNumber = 1;
        private uint program_;
        public uint Program
        {
            get { return program_; }
            set
            {
                program_ = value;
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GenerateWebCredentialsRequest);
        }

        public bool Equals(GenerateWebCredentialsRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (Program != other.Program) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (Program != 0) hash ^= Program.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (Program != 0)
            {
                output.WriteRawTag(13);
                output.WriteFixed32(Program);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (Program != 0)
            {
                size += 1 + 4;
            }
            return size;
        }

        public void MergeFrom(GenerateWebCredentialsRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.Program != 0)
            {
                Program = other.Program;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 13:
                        {
                            Program = input.ReadFixed32();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class GenerateWebCredentialsResponse : pb::IMessage<GenerateWebCredentialsResponse>
    {
        private static readonly pb::MessageParser<GenerateWebCredentialsResponse> _parser = new pb::MessageParser<GenerateWebCredentialsResponse>(() => new GenerateWebCredentialsResponse());
        public static pb::MessageParser<GenerateWebCredentialsResponse> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[18]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public GenerateWebCredentialsResponse()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public GenerateWebCredentialsResponse(GenerateWebCredentialsResponse other) : this()
        {
            webCredentials_ = other.webCredentials_;
        }

        public GenerateWebCredentialsResponse Clone()
        {
            return new GenerateWebCredentialsResponse(this);
        }

        /// <summary>Field number for the "web_credentials" field.</summary>
        public const int WebCredentialsFieldNumber = 1;
        private pb::ByteString webCredentials_ = pb::ByteString.Empty;
        public pb::ByteString WebCredentials
        {
            get { return webCredentials_; }
            set
            {
                webCredentials_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as GenerateWebCredentialsResponse);
        }

        public bool Equals(GenerateWebCredentialsResponse other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (WebCredentials != other.WebCredentials) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (WebCredentials.Length != 0) hash ^= WebCredentials.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (WebCredentials.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteBytes(WebCredentials);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (WebCredentials.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(WebCredentials);
            }
            return size;
        }

        public void MergeFrom(GenerateWebCredentialsResponse other)
        {
            if (other == null)
            {
                return;
            }
            if (other.WebCredentials.Length != 0)
            {
                WebCredentials = other.WebCredentials;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            WebCredentials = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public sealed partial class VerifyWebCredentialsRequest : pb::IMessage<VerifyWebCredentialsRequest>
    {
        private static readonly pb::MessageParser<VerifyWebCredentialsRequest> _parser = new pb::MessageParser<VerifyWebCredentialsRequest>(() => new VerifyWebCredentialsRequest());
        public static pb::MessageParser<VerifyWebCredentialsRequest> Parser { get { return _parser; } }

        public static pbr::MessageDescriptor Descriptor
        {
            get { return Bgs.Protocol.Authentication.V1.AuthenticationServiceReflection.Descriptor.MessageTypes[19]; }
        }

        pbr::MessageDescriptor pb::IMessage.Descriptor
        {
            get { return Descriptor; }
        }

        public VerifyWebCredentialsRequest()
        {
            OnConstruction();
        }

        partial void OnConstruction();

        public VerifyWebCredentialsRequest(VerifyWebCredentialsRequest other) : this()
        {
            webCredentials_ = other.webCredentials_;
        }

        public VerifyWebCredentialsRequest Clone()
        {
            return new VerifyWebCredentialsRequest(this);
        }

        /// <summary>Field number for the "web_credentials" field.</summary>
        public const int WebCredentialsFieldNumber = 1;
        private pb::ByteString webCredentials_ = pb::ByteString.Empty;
        public pb::ByteString WebCredentials
        {
            get { return webCredentials_; }
            set
            {
                webCredentials_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            }
        }

        public override bool Equals(object other)
        {
            return Equals(other as VerifyWebCredentialsRequest);
        }

        public bool Equals(VerifyWebCredentialsRequest other)
        {
            if (ReferenceEquals(other, null))
            {
                return false;
            }
            if (ReferenceEquals(other, this))
            {
                return true;
            }
            if (WebCredentials != other.WebCredentials) return false;
            return true;
        }

        public override int GetHashCode()
        {
            int hash = 1;
            if (WebCredentials.Length != 0) hash ^= WebCredentials.GetHashCode();
            return hash;
        }

        public override string ToString()
        {
            return pb::JsonFormatter.ToDiagnosticString(this);
        }

        public void WriteTo(pb::CodedOutputStream output)
        {
            if (WebCredentials.Length != 0)
            {
                output.WriteRawTag(10);
                output.WriteBytes(WebCredentials);
            }
        }

        public int CalculateSize()
        {
            int size = 0;
            if (WebCredentials.Length != 0)
            {
                size += 1 + pb::CodedOutputStream.ComputeBytesSize(WebCredentials);
            }
            return size;
        }

        public void MergeFrom(VerifyWebCredentialsRequest other)
        {
            if (other == null)
            {
                return;
            }
            if (other.WebCredentials.Length != 0)
            {
                WebCredentials = other.WebCredentials;
            }
        }

        public void MergeFrom(pb::CodedInputStream input)
        {
            uint tag;
            while ((tag = input.ReadTag()) != 0)
            {
                switch (tag)
                {
                    default:
                        input.SkipLastField();
                        break;
                    case 10:
                        {
                            WebCredentials = input.ReadBytes();
                            break;
                        }
                }
            }
        }

    }

    #endregion
}

#endregion Designer generated code
