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

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Com.Fca.Uconnect.Global {

  /// <summary>Holder for reflection information generated from Global_Uconnect_Ext_PC.proto</summary>
  public static partial class GlobalUconnectExtPCReflection {

    #region Descriptor
    /// <summary>File descriptor for Global_Uconnect_Ext_PC.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static GlobalUconnectExtPCReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChxHbG9iYWxfVWNvbm5lY3RfRXh0X1BDLnByb3RvEhdjb20uZmNhLnVjb25u",
            "ZWN0Lmdsb2JhbBohR2xvYmFsX1Vjb25uZWN0X1ZlaGljbGVJbmZvLnByb3Rv",
            "GhpHbG9iYWxfVWNvbm5lY3RfR05TUy5wcm90byJTChVQQ1VwZGF0ZUNvbmZp",
            "Z1JlcXVlc3QSOgoGY29uZmlnGAEgASgLMiouY29tLmZjYS51Y29ubmVjdC5n",
            "bG9iYWwuQ29uZmlnVHlwZVZlaGljbGUiwBEKEUNvbmZpZ1R5cGVWZWhpY2xl",
            "EkcKCWxvZ0FsZXJ0cxgIIAEoCzI0LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFs",
            "LkNvbmZpZ1R5cGVWZWhpY2xlLkxvZ0FsZXJ0cxJSCgxjdXJmZXdBbGVydHMY",
            "ASADKAsyPC5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5Db25maWdUeXBlVmVo",
            "aWNsZS5DdXJmZXdBbGVydENvbmZpZxJQCgtzcGVlZEFsZXJ0cxgDIAMoCzI7",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLlNw",
            "ZWVkQWxlcnRDb25maWcSTwoKdmFsZXRBbGVydBgFIAEoCzI7LmNvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLlZhbGV0QWxlcnRD",
            "b25maWcSVgoOZ2VvRmVuY2VBbGVydHMYByADKAsyPi5jb20uZmNhLnVjb25u",
            "ZWN0Lmdsb2JhbC5Db25maWdUeXBlVmVoaWNsZS5HZW9GZW5jZUFsZXJ0Q29u",
            "ZmlnGk4KCUxvZ0FsZXJ0cxIPCgdUcmlwTG9nGAogASgIEhIKCkRyaXZlU3R5",
            "bGUYCyABKAgSHAoUU3BlZWRWaW9sYXRpb25SZXBvcnQYDCABKAga3gEKEUN1",
            "cmZld0FsZXJ0Q29uZmlnEgwKBG5hbWUYBiABKAkSEgoKaWRlbnRpZmllchgB",
            "IAEoCRIRCgliZWdpblRpbWUYAiABKAUSDwoHZW5kVGltZRgDIAEoBRIYChBh",
            "Y3RpdmVEYXlzT2ZXZWVrGAQgAygFEhYKDnJlY3VycmluZ0FsZXJ0GAUgASgI",
            "ElEKDGNvbmZpZ0FjdGlvbhgHIAEoDjI7LmNvbS5mY2EudWNvbm5lY3QuZ2xv",
            "YmFsLkNvbmZpZ1R5cGVWZWhpY2xlLkNvbmZpZ0FjdGlvbkVudW0akAMKEFNw",
            "ZWVkQWxlcnRDb25maWcSDAoEbmFtZRgKIAEoCRISCgppZGVudGlmaWVyGAEg",
            "ASgJEhEKCWJlZ2luVGltZRgCIAEoBRIPCgdlbmRUaW1lGAMgASgFEhgKEGFj",
            "dGl2ZURheXNPZldlZWsYBCADKAUSIQoZdGhyZXNob2xkQWJvdmVQb3N0ZWRT",
            "cGVlZBgFIAEoBRIiChp0aHJlc2hvbGRQb3N0ZWRTcGVlZEFic2VudBgGIAEo",
            "BRIZChF0aHJlc2hvbGRBYnNvbHV0ZRgHIAEoBRIWCg5yZWN1cnJpbmdBbGVy",
            "dBgIIAEoCBJRCgxjb25maWdBY3Rpb24YCyABKA4yOy5jb20uZmNhLnVjb25u",
            "ZWN0Lmdsb2JhbC5Db25maWdUeXBlVmVoaWNsZS5Db25maWdBY3Rpb25FbnVt",
            "Ek8KDXVuaXRPZk1lYXN1cmUYCSABKA4yOC5jb20uZmNhLnVjb25uZWN0Lmds",
            "b2JhbC5Db25maWdUeXBlVmVoaWNsZS5Vbml0T2ZNZWFzdXJlGoYCChBWYWxl",
            "dEFsZXJ0Q29uZmlnEhEKCWlzRW5hYmxlZBgIIAEoCBISCgppZGVudGlmaWVy",
            "GAEgASgJEhAKCEFjdGl2YXRlGAcgASgIEhMKC2FsZXJ0UmFkaXVzGAUgASgC",
            "ElEKDGNvbmZpZ0FjdGlvbhgJIAEoDjI7LmNvbS5mY2EudWNvbm5lY3QuZ2xv",
            "YmFsLkNvbmZpZ1R5cGVWZWhpY2xlLkNvbmZpZ0FjdGlvbkVudW0SUQoPcmFk",
            "aXVzVW5pdHNFbnVtGAYgASgOMjguY29tLmZjYS51Y29ubmVjdC5nbG9iYWwu",
            "Q29uZmlnVHlwZVZlaGljbGUuVW5pdE9mTWVhc3VyZRrZBAoTR2VvRmVuY2VB",
            "bGVydENvbmZpZxIMCgRuYW1lGAsgASgJEhIKCmlkZW50aWZpZXIYASABKAkS",
            "EQoJYmVnaW5UaW1lGAIgASgFEg8KB2VuZFRpbWUYAyABKAUSUQoQZ2VvRmVu",
            "Y2VUeXBlRW51bRgKIAEoDjI3LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkNv",
            "bmZpZ1R5cGVWZWhpY2xlLkdlb0ZlbmNlVHlwZRIYChBhY3RpdmVEYXlzT2ZX",
            "ZWVrGAQgAygFEjkKDmJvdW5kYXJ5UG9pbnRzGAUgAygLMiEuY29tLmZjYS51",
            "Y29ubmVjdC5nbG9iYWwuTG9jYXRpb24SNwoMcmFkaXVzQ2VudGVyGAcgASgL",
            "MiEuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuTG9jYXRpb24SDgoGUmFkaXVz",
            "GAggASgCElEKD3JhZGl1c1VuaXRzRW51bRgGIAEoDjI4LmNvbS5mY2EudWNv",
            "bm5lY3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLlVuaXRPZk1lYXN1cmUS",
            "FgoOcmVjdXJyaW5nQWxlcnQYCSABKAgSTQoKYnJlYWNoVHlwZRgMIAEoDjI5",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLkJy",
            "ZWFjaFR5cGVFbnVtElEKDGNvbmZpZ0FjdGlvbhgNIAEoDjI7LmNvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLkNvbmZpZ0FjdGlv",
            "bkVudW0iTQoOQnJlYWNoVHlwZUVudW0SCwoHREVGQVVMVBAAEhMKD09VVF9P",
            "Rl9CT1VOREFSWRABEg8KC0lOX0JPVU5EQVJZEAISCAoEQk9USBADIioKDVVu",
            "aXRPZk1lYXN1cmUSDgoKS0lMT01FVEVSUxAAEgkKBU1JTEVTEAEiJwoMR2Vv",
            "RmVuY2VUeXBlEgsKB1BvbHlnb24QABIKCgZSYWRpdXMQASJGChBDb25maWdB",
            "Y3Rpb25FbnVtEhEKDURFRkFVTFRBQ1RJT04QABIHCgNBREQQARIKCgZERUxF",
            "VEUQAhIKCgZVUERBVEUQAyKZBAoWUENVcGRhdGVDb25maWdSZXNwb25zZRJO",
            "CghyZXNwb25zZRgBIAEoDjI8LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlBD",
            "VXBkYXRlQ29uZmlnUmVzcG9uc2UuUmVzcG9uc2VFbnVtEhMKC2lzVHJhbnNp",
            "ZW50GAIgASgIEhkKEWZhaWx1cmVSZWFzb25Db2RlGAMgASgFEloKDmNvbmZp",
            "Z1Jlc3BvbnNlGAQgAygLMkIuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuUENV",
            "cGRhdGVDb25maWdSZXNwb25zZS5Db25maWdSZXNwb25zZVR5cGUawwEKEkNv",
            "bmZpZ1Jlc3BvbnNlVHlwZRJbChVjb25maWd1cmF0aW9uUmVzcG9uc2UYASAB",
            "KA4yPC5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5QQ1VwZGF0ZUNvbmZpZ1Jl",
            "c3BvbnNlLlJlc3BvbnNlRW51bRIMCgRuYW1lGAIgASgJEhIKCmlkZW50aWZp",
            "ZXIYAyABKAkSGQoRZmFpbHVyZVJlYXNvbkNvZGUYBCABKAUSEwoLaXNUcmFu",
            "c2llbnQYBSABKAgiXQoMUmVzcG9uc2VFbnVtEgsKB1NVQ0NFU1MQABILCgdG",
            "QUlMVVJFEAESGwoXQ09ORklHX1RZUEVfTk9UX0FMTE9XRUQQAxIWChJGQUlM",
            "VVJFX1BSSVZBQ1lfT04QBCLLBAoYUENDb25maWd1cmVkQWxlcnRQdWJsaXNo",
            "ElkKEWN1cmZld0FsZXJ0Q29uZmlnGAEgASgLMjwuY29tLmZjYS51Y29ubmVj",
            "dC5nbG9iYWwuQ29uZmlnVHlwZVZlaGljbGUuQ3VyZmV3QWxlcnRDb25maWdI",
            "ABJXChBzcGVlZEFsZXJ0Q29uZmlnGAIgASgLMjsuY29tLmZjYS51Y29ubmVj",
            "dC5nbG9iYWwuQ29uZmlnVHlwZVZlaGljbGUuU3BlZWRBbGVydENvbmZpZ0gA",
            "ElcKEHZhbGV0QWxlcnRDb25maWcYAyABKAsyOy5jb20uZmNhLnVjb25uZWN0",
            "Lmdsb2JhbC5Db25maWdUeXBlVmVoaWNsZS5WYWxldEFsZXJ0Q29uZmlnSAAS",
            "XQoTZ2VvRmVuY2VBbGVydENvbmZpZxgEIAEoCzI+LmNvbS5mY2EudWNvbm5l",
            "Y3QuZ2xvYmFsLkNvbmZpZ1R5cGVWZWhpY2xlLkdlb0ZlbmNlQWxlcnRDb25m",
            "aWdIABI4Cg1ldmVudExvY2F0aW9uGAUgASgLMiEuY29tLmZjYS51Y29ubmVj",
            "dC5nbG9iYWwuTG9jYXRpb24SGQoRZXZlbnRUaW1lc3RhbXBVVEMYBiABKAMS",
            "GgoSZXZlbnRUaW1lVVRDT2Zmc2V0GAcgASgFEhQKDHZlaGljbGVTcGVlZBgI",
            "IAEoBRITCgtwb3N0ZWRTcGVlZBgJIAEoBRIYChBwb3N0ZWRTcGVlZFZhbGlk",
            "GAogASgIQg0KC2V2ZW50U291cmNlIsMBCgxQQ0xvZ1VwbG9hZHMSMQoHdHJp",
            "cExvZxgBIAEoCzIgLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlRyaXBMb2cS",
            "PwoNZHJpdmVTdHlsZUxvZxgCIAEoCzIoLmNvbS5mY2EudWNvbm5lY3QuZ2xv",
            "YmFsLkRyaXZpbmdTdHlsZUxvZxI/Cg5zcGVlZEFsZXJ0c0xvZxgDIAEoCzIn",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlNwZWVkQWxlcnRzTG9nIuIBCgdU",
            "cmlwTG9nEg4KBnRyaXBJRBgFIAEoCRIbChNJZ25pdGlvbk9uVGltZVN0YW1w",
            "GAEgASgDEjgKDXN0YXJ0TG9jYXRpb24YAiABKAsyIS5jb20uZmNhLnVjb25u",
            "ZWN0Lmdsb2JhbC5Mb2NhdGlvbhIcChRJZ25pdGlvbk9mZlRpbWVTdGFtcBgD",
            "IAEoAxIaChJldmVudFRpbWVVVENPZmZzZXQYByABKAUSNgoLZW5kTG9jYXRp",
            "b24YBCABKAsyIS5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5Mb2NhdGlvbiKY",
            "AgoPRHJpdmluZ1N0eWxlTG9nEg4KBnRyaXBJRBgLIAEoCRJAChFoYXJzaEFj",
            "Y2VsZXJhdGlvbhgIIAMoCzIlLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkFj",
            "Y2VsZXJhdGlvbhI2CgxoYXJzaEJyYWtpbmcYCSADKAsyIC5jb20uZmNhLnVj",
            "b25uZWN0Lmdsb2JhbC5CcmFraW5nEjsKD3N1ZGRlbkNvcm5lcmluZxgHIAMo",
            "CzIiLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLkNvcm5lcmluZxI+ChNzZWF0",
            "QmVsdE5vdEZhc3RlbmVkGAogAygLMiEuY29tLmZjYS51Y29ubmVjdC5nbG9i",
            "YWwuU2VhdEJlbHQiOQoOU3BlZWRBbGVydHNMb2cSDgoGdHJpcElEGAUgASgJ",
            "EhcKD1Zpb2xhdGlvblRvdGFscxgBIAEoBSJiCgxBY2NlbGVyYXRpb24SGgoS",
            "ZXZlbnRUaW1lVVRDT2Zmc2V0GAMgASgFEhoKEnZpb2xhdGlvblRpbWVzdGFt",
            "cBgCIAEoAxIaChJIQVJTSF9BQ0NFTEVSQVRJT04YASABKAgiWQoHQnJha2lu",
            "ZxIaChJldmVudFRpbWVVVENPZmZzZXQYAyABKAUSGgoSdmlvbGF0aW9uVGlt",
            "ZXN0YW1wGAEgASgDEhYKDkhBUlNIX0JSRUFLSU5HGAIgASgIIl0KCUNvcm5l",
            "cmluZxIaChJldmVudFRpbWVVVENPZmZzZXQYAyABKAUSGgoSdmlvbGF0aW9u",
            "VGltZXN0YW1wGAEgASgDEhgKEFNVRERFTl9DT1JORVJJTkcYAiABKAgiYQoI",
            "U2VhdEJlbHQSGgoSZXZlbnRUaW1lVVRDT2Zmc2V0GAMgASgFEhoKEnZpb2xh",
            "dGlvblRpbWVzdGFtcBgBIAEoAxIdChVTRUFUQkVMVF9OT1RfRkFTVEVORUQY",
            "AiABKAhQAFABYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectVehicleInfoReflection.Descriptor, global::Com.Fca.Uconnect.Global.GlobalUconnectGNSSReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PCUpdateConfigRequest), global::Com.Fca.Uconnect.Global.PCUpdateConfigRequest.Parser, new[]{ "Config" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Parser, new[]{ "LogAlerts", "CurfewAlerts", "SpeedAlerts", "ValetAlert", "GeoFenceAlerts" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.BreachTypeEnum), typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure), typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceType), typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts.Parser, new[]{ "TripLog", "DriveStyle", "SpeedViolationReport" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig.Parser, new[]{ "Name", "Identifier", "BeginTime", "EndTime", "ActiveDaysOfWeek", "RecurringAlert", "ConfigAction" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig.Parser, new[]{ "Name", "Identifier", "BeginTime", "EndTime", "ActiveDaysOfWeek", "ThresholdAbovePostedSpeed", "ThresholdPostedSpeedAbsent", "ThresholdAbsolute", "RecurringAlert", "ConfigAction", "UnitOfMeasure" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig.Parser, new[]{ "IsEnabled", "Identifier", "Activate", "AlertRadius", "ConfigAction", "RadiusUnitsEnum" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig), global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig.Parser, new[]{ "Name", "Identifier", "BeginTime", "EndTime", "GeoFenceTypeEnum", "ActiveDaysOfWeek", "BoundaryPoints", "RadiusCenter", "Radius", "RadiusUnitsEnum", "RecurringAlert", "BreachType", "ConfigAction" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse), global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Parser, new[]{ "Response", "IsTransient", "FailureReasonCode", "ConfigResponse" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType), global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType.Parser, new[]{ "ConfigurationResponse", "Name", "Identifier", "FailureReasonCode", "IsTransient" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PCConfiguredAlertPublish), global::Com.Fca.Uconnect.Global.PCConfiguredAlertPublish.Parser, new[]{ "CurfewAlertConfig", "SpeedAlertConfig", "ValetAlertConfig", "GeoFenceAlertConfig", "EventLocation", "EventTimestampUTC", "EventTimeUTCOffset", "VehicleSpeed", "PostedSpeed", "PostedSpeedValid" }, new[]{ "EventSource" }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.PCLogUploads), global::Com.Fca.Uconnect.Global.PCLogUploads.Parser, new[]{ "TripLog", "DriveStyleLog", "SpeedAlertsLog" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.TripLog), global::Com.Fca.Uconnect.Global.TripLog.Parser, new[]{ "TripID", "IgnitionOnTimeStamp", "StartLocation", "IgnitionOffTimeStamp", "EventTimeUTCOffset", "EndLocation" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.DrivingStyleLog), global::Com.Fca.Uconnect.Global.DrivingStyleLog.Parser, new[]{ "TripID", "HarshAcceleration", "HarshBraking", "SuddenCornering", "SeatBeltNotFastened" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.SpeedAlertsLog), global::Com.Fca.Uconnect.Global.SpeedAlertsLog.Parser, new[]{ "TripID", "ViolationTotals" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.Acceleration), global::Com.Fca.Uconnect.Global.Acceleration.Parser, new[]{ "EventTimeUTCOffset", "ViolationTimestamp", "HARSHACCELERATION" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.Braking), global::Com.Fca.Uconnect.Global.Braking.Parser, new[]{ "EventTimeUTCOffset", "ViolationTimestamp", "HARSHBREAKING" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.Cornering), global::Com.Fca.Uconnect.Global.Cornering.Parser, new[]{ "EventTimeUTCOffset", "ViolationTimestamp", "SUDDENCORNERING" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.SeatBelt), global::Com.Fca.Uconnect.Global.SeatBelt.Parser, new[]{ "EventTimeUTCOffset", "ViolationTimestamp", "SEATBELTNOTFASTENED" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message represents  PCUpdateConfigRequest which triggers from SDP.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>PCUpdateConfigRequest Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///		timestamp: 1490711212633
  /// 		messageId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.pcUpdateConfigRequest]
  /// 		 {
  /// 		  configTypeVehicle
  /// 		  {
  /// 			speedAlerts
  /// 			{
  /// 			 beginTime: 1000
  /// 			 endTime: 10000
  /// 			 activeDaysOfWeek: 1
  /// 			 activeDaysOfWeek: 2
  /// 			 thresholdAbovePostedSpeed: 60
  /// 			 thresholdPostedSpeedAbsent: 80
  /// 			 thresholdAbsolute: 70
  /// 			}
  /// 		   updateSpeedAlertConfig: true
  /// 		  }
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class PCUpdateConfigRequest : pb::IMessage<PCUpdateConfigRequest> {
    private static readonly pb::MessageParser<PCUpdateConfigRequest> _parser = new pb::MessageParser<PCUpdateConfigRequest>(() => new PCUpdateConfigRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PCUpdateConfigRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigRequest(PCUpdateConfigRequest other) : this() {
      Config = other.config_ != null ? other.Config.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigRequest Clone() {
      return new PCUpdateConfigRequest(this);
    }

    /// <summary>Field number for the "config" field.</summary>
    public const int ConfigFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle config_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle Config {
      get { return config_; }
      set {
        config_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PCUpdateConfigRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PCUpdateConfigRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Config, other.Config)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (config_ != null) hash ^= Config.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (config_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Config);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (config_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Config);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PCUpdateConfigRequest other) {
      if (other == null) {
        return;
      }
      if (other.config_ != null) {
        if (config_ == null) {
          config_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle();
        }
        Config.MergeFrom(other.Config);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (config_ == null) {
              config_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle();
            }
            input.ReadMessage(config_);
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ConfigTypeVehicle() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ConfigTypeVehicle(ConfigTypeVehicle other) : this() {
      LogAlerts = other.logAlerts_ != null ? other.LogAlerts.Clone() : null;
      curfewAlerts_ = other.curfewAlerts_.Clone();
      speedAlerts_ = other.speedAlerts_.Clone();
      ValetAlert = other.valetAlert_ != null ? other.ValetAlert.Clone() : null;
      geoFenceAlerts_ = other.geoFenceAlerts_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ConfigTypeVehicle Clone() {
      return new ConfigTypeVehicle(this);
    }

    /// <summary>Field number for the "logAlerts" field.</summary>
    public const int LogAlertsFieldNumber = 8;
    private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts logAlerts_;
    /// <summary>
    //// Configure Log Alerts
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts LogAlerts {
      get { return logAlerts_; }
      set {
        logAlerts_ = value;
      }
    }

    /// <summary>Field number for the "curfewAlerts" field.</summary>
    public const int CurfewAlertsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig> _repeated_curfewAlerts_codec
        = pb::FieldCodec.ForMessage(10, global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig> curfewAlerts_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig>();
    /// <summary>
    //// 0 to 5 ranges
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig> CurfewAlerts {
      get { return curfewAlerts_; }
    }

    /// <summary>Field number for the "speedAlerts" field.</summary>
    public const int SpeedAlertsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig> _repeated_speedAlerts_codec
        = pb::FieldCodec.ForMessage(26, global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig> speedAlerts_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig>();
    /// <summary>
    ///  bool updateCurfewAlertConfig = 2; /// If false, this message should not update curfewAlerts.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig> SpeedAlerts {
      get { return speedAlerts_; }
    }

    /// <summary>Field number for the "valetAlert" field.</summary>
    public const int ValetAlertFieldNumber = 5;
    private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig valetAlert_;
    /// <summary>
    /// bool updateSpeedAlertConfig = 4; /// If false, this message should not update speedAlerts.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig ValetAlert {
      get { return valetAlert_; }
      set {
        valetAlert_ = value;
      }
    }

    /// <summary>Field number for the "geoFenceAlerts" field.</summary>
    public const int GeoFenceAlertsFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig> _repeated_geoFenceAlerts_codec
        = pb::FieldCodec.ForMessage(58, global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig> geoFenceAlerts_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig>();
    /// <summary>
    /// bool updateValetAlertConfig = 6;  /// If false, this message should not update valetAlert.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig> GeoFenceAlerts {
      get { return geoFenceAlerts_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as ConfigTypeVehicle);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ConfigTypeVehicle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(LogAlerts, other.LogAlerts)) return false;
      if(!curfewAlerts_.Equals(other.curfewAlerts_)) return false;
      if(!speedAlerts_.Equals(other.speedAlerts_)) return false;
      if (!object.Equals(ValetAlert, other.ValetAlert)) return false;
      if(!geoFenceAlerts_.Equals(other.geoFenceAlerts_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (logAlerts_ != null) hash ^= LogAlerts.GetHashCode();
      hash ^= curfewAlerts_.GetHashCode();
      hash ^= speedAlerts_.GetHashCode();
      if (valetAlert_ != null) hash ^= ValetAlert.GetHashCode();
      hash ^= geoFenceAlerts_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      curfewAlerts_.WriteTo(output, _repeated_curfewAlerts_codec);
      speedAlerts_.WriteTo(output, _repeated_speedAlerts_codec);
      if (valetAlert_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ValetAlert);
      }
      geoFenceAlerts_.WriteTo(output, _repeated_geoFenceAlerts_codec);
      if (logAlerts_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(LogAlerts);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (logAlerts_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LogAlerts);
      }
      size += curfewAlerts_.CalculateSize(_repeated_curfewAlerts_codec);
      size += speedAlerts_.CalculateSize(_repeated_speedAlerts_codec);
      if (valetAlert_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ValetAlert);
      }
      size += geoFenceAlerts_.CalculateSize(_repeated_geoFenceAlerts_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ConfigTypeVehicle other) {
      if (other == null) {
        return;
      }
      if (other.logAlerts_ != null) {
        if (logAlerts_ == null) {
          logAlerts_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts();
        }
        LogAlerts.MergeFrom(other.LogAlerts);
      }
      curfewAlerts_.Add(other.curfewAlerts_);
      speedAlerts_.Add(other.speedAlerts_);
      if (other.valetAlert_ != null) {
        if (valetAlert_ == null) {
          valetAlert_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig();
        }
        ValetAlert.MergeFrom(other.ValetAlert);
      }
      geoFenceAlerts_.Add(other.geoFenceAlerts_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            curfewAlerts_.AddEntriesFrom(input, _repeated_curfewAlerts_codec);
            break;
          }
          case 26: {
            speedAlerts_.AddEntriesFrom(input, _repeated_speedAlerts_codec);
            break;
          }
          case 42: {
            if (valetAlert_ == null) {
              valetAlert_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig();
            }
            input.ReadMessage(valetAlert_);
            break;
          }
          case 58: {
            geoFenceAlerts_.AddEntriesFrom(input, _repeated_geoFenceAlerts_codec);
            break;
          }
          case 66: {
            if (logAlerts_ == null) {
              logAlerts_ = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.LogAlerts();
            }
            input.ReadMessage(logAlerts_);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ConfigTypeVehicle message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum BreachTypeEnum {
        [pbr::OriginalName("DEFAULT")] Default = 0,
        [pbr::OriginalName("OUT_OF_BOUNDARY")] OutOfBoundary = 1,
        [pbr::OriginalName("IN_BOUNDARY")] InBoundary = 2,
        [pbr::OriginalName("BOTH")] Both = 3,
      }

      public enum UnitOfMeasure {
        /// <summary>
        /// Default Value
        /// </summary>
        [pbr::OriginalName("KILOMETERS")] Kilometers = 0,
        /// <summary>
        /// // Miles Per Hour
        /// </summary>
        [pbr::OriginalName("MILES")] Miles = 1,
      }

      public enum GeoFenceType {
        [pbr::OriginalName("Polygon")] Polygon = 0,
        [pbr::OriginalName("Radius")] Radius = 1,
      }

      public enum ConfigActionEnum {
        [pbr::OriginalName("DEFAULTACTION")] Defaultaction = 0,
        [pbr::OriginalName("ADD")] Add = 1,
        [pbr::OriginalName("DELETE")] Delete = 2,
        /// <summary>
        ///REPLACE =4;
        /// </summary>
        [pbr::OriginalName("UPDATE")] Update = 3,
      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LogAlerts() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LogAlerts(LogAlerts other) : this() {
          tripLog_ = other.tripLog_;
          driveStyle_ = other.driveStyle_;
          speedViolationReport_ = other.speedViolationReport_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LogAlerts Clone() {
          return new LogAlerts(this);
        }

        /// <summary>Field number for the "TripLog" field.</summary>
        public const int TripLogFieldNumber = 10;
        private bool tripLog_;
        /// <summary>
        ///string name = 13;
        ///string identifier = 14;
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool TripLog {
          get { return tripLog_; }
          set {
            tripLog_ = value;
          }
        }

        /// <summary>Field number for the "DriveStyle" field.</summary>
        public const int DriveStyleFieldNumber = 11;
        private bool driveStyle_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool DriveStyle {
          get { return driveStyle_; }
          set {
            driveStyle_ = value;
          }
        }

        /// <summary>Field number for the "SpeedViolationReport" field.</summary>
        public const int SpeedViolationReportFieldNumber = 12;
        private bool speedViolationReport_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool SpeedViolationReport {
          get { return speedViolationReport_; }
          set {
            speedViolationReport_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as LogAlerts);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(LogAlerts other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (TripLog != other.TripLog) return false;
          if (DriveStyle != other.DriveStyle) return false;
          if (SpeedViolationReport != other.SpeedViolationReport) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (TripLog != false) hash ^= TripLog.GetHashCode();
          if (DriveStyle != false) hash ^= DriveStyle.GetHashCode();
          if (SpeedViolationReport != false) hash ^= SpeedViolationReport.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (TripLog != false) {
            output.WriteRawTag(80);
            output.WriteBool(TripLog);
          }
          if (DriveStyle != false) {
            output.WriteRawTag(88);
            output.WriteBool(DriveStyle);
          }
          if (SpeedViolationReport != false) {
            output.WriteRawTag(96);
            output.WriteBool(SpeedViolationReport);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (TripLog != false) {
            size += 1 + 1;
          }
          if (DriveStyle != false) {
            size += 1 + 1;
          }
          if (SpeedViolationReport != false) {
            size += 1 + 1;
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(LogAlerts other) {
          if (other == null) {
            return;
          }
          if (other.TripLog != false) {
            TripLog = other.TripLog;
          }
          if (other.DriveStyle != false) {
            DriveStyle = other.DriveStyle;
          }
          if (other.SpeedViolationReport != false) {
            SpeedViolationReport = other.SpeedViolationReport;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 80: {
                TripLog = input.ReadBool();
                break;
              }
              case 88: {
                DriveStyle = input.ReadBool();
                break;
              }
              case 96: {
                SpeedViolationReport = input.ReadBool();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Descriptor.NestedTypes[1]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public CurfewAlertConfig() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public CurfewAlertConfig(CurfewAlertConfig other) : this() {
          name_ = other.name_;
          identifier_ = other.identifier_;
          beginTime_ = other.beginTime_;
          endTime_ = other.endTime_;
          activeDaysOfWeek_ = other.activeDaysOfWeek_.Clone();
          recurringAlert_ = other.recurringAlert_;
          configAction_ = other.configAction_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public CurfewAlertConfig Clone() {
          return new CurfewAlertConfig(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 6;
        private string name_ = "";
        /// <summary>
        //// Display text name for the configuration
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "identifier" field.</summary>
        public const int IdentifierFieldNumber = 1;
        private string identifier_ = "";
        /// <summary>
        //// the identifier of the config that was triggered will be put in the generated alert
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Identifier {
          get { return identifier_; }
          set {
            identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "beginTime" field.</summary>
        public const int BeginTimeFieldNumber = 2;
        private int beginTime_;
        /// <summary>
        //// seconds after midnight
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int BeginTime {
          get { return beginTime_; }
          set {
            beginTime_ = value;
          }
        }

        /// <summary>Field number for the "endTime" field.</summary>
        public const int EndTimeFieldNumber = 3;
        private int endTime_;
        /// <summary>
        //// seconds after midnight
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int EndTime {
          get { return endTime_; }
          set {
            endTime_ = value;
          }
        }

        /// <summary>Field number for the "activeDaysOfWeek" field.</summary>
        public const int ActiveDaysOfWeekFieldNumber = 4;
        private static readonly pb::FieldCodec<int> _repeated_activeDaysOfWeek_codec
            = pb::FieldCodec.ForInt32(34);
        private readonly pbc::RepeatedField<int> activeDaysOfWeek_ = new pbc::RepeatedField<int>();
        /// <summary>
        //// 0 == Sunday, 1 == Monday ...
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<int> ActiveDaysOfWeek {
          get { return activeDaysOfWeek_; }
        }

        /// <summary>Field number for the "recurringAlert" field.</summary>
        public const int RecurringAlertFieldNumber = 5;
        private bool recurringAlert_;
        /// <summary>
        //// should happen only once or recurring.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool RecurringAlert {
          get { return recurringAlert_; }
          set {
            recurringAlert_ = value;
          }
        }

        /// <summary>Field number for the "configAction" field.</summary>
        public const int ConfigActionFieldNumber = 7;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum configAction_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum ConfigAction {
          get { return configAction_; }
          set {
            configAction_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as CurfewAlertConfig);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(CurfewAlertConfig other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (Identifier != other.Identifier) return false;
          if (BeginTime != other.BeginTime) return false;
          if (EndTime != other.EndTime) return false;
          if(!activeDaysOfWeek_.Equals(other.activeDaysOfWeek_)) return false;
          if (RecurringAlert != other.RecurringAlert) return false;
          if (ConfigAction != other.ConfigAction) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
          if (BeginTime != 0) hash ^= BeginTime.GetHashCode();
          if (EndTime != 0) hash ^= EndTime.GetHashCode();
          hash ^= activeDaysOfWeek_.GetHashCode();
          if (RecurringAlert != false) hash ^= RecurringAlert.GetHashCode();
          if (ConfigAction != 0) hash ^= ConfigAction.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Identifier.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Identifier);
          }
          if (BeginTime != 0) {
            output.WriteRawTag(16);
            output.WriteInt32(BeginTime);
          }
          if (EndTime != 0) {
            output.WriteRawTag(24);
            output.WriteInt32(EndTime);
          }
          activeDaysOfWeek_.WriteTo(output, _repeated_activeDaysOfWeek_codec);
          if (RecurringAlert != false) {
            output.WriteRawTag(40);
            output.WriteBool(RecurringAlert);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(50);
            output.WriteString(Name);
          }
          if (ConfigAction != 0) {
            output.WriteRawTag(56);
            output.WriteEnum((int) ConfigAction);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (Identifier.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
          }
          if (BeginTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(BeginTime);
          }
          if (EndTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndTime);
          }
          size += activeDaysOfWeek_.CalculateSize(_repeated_activeDaysOfWeek_codec);
          if (RecurringAlert != false) {
            size += 1 + 1;
          }
          if (ConfigAction != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ConfigAction);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(CurfewAlertConfig other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Identifier.Length != 0) {
            Identifier = other.Identifier;
          }
          if (other.BeginTime != 0) {
            BeginTime = other.BeginTime;
          }
          if (other.EndTime != 0) {
            EndTime = other.EndTime;
          }
          activeDaysOfWeek_.Add(other.activeDaysOfWeek_);
          if (other.RecurringAlert != false) {
            RecurringAlert = other.RecurringAlert;
          }
          if (other.ConfigAction != 0) {
            ConfigAction = other.ConfigAction;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                Identifier = input.ReadString();
                break;
              }
              case 16: {
                BeginTime = input.ReadInt32();
                break;
              }
              case 24: {
                EndTime = input.ReadInt32();
                break;
              }
              case 34:
              case 32: {
                activeDaysOfWeek_.AddEntriesFrom(input, _repeated_activeDaysOfWeek_codec);
                break;
              }
              case 40: {
                RecurringAlert = input.ReadBool();
                break;
              }
              case 50: {
                Name = input.ReadString();
                break;
              }
              case 56: {
                configAction_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum) input.ReadEnum();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Descriptor.NestedTypes[2]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public SpeedAlertConfig() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public SpeedAlertConfig(SpeedAlertConfig other) : this() {
          name_ = other.name_;
          identifier_ = other.identifier_;
          beginTime_ = other.beginTime_;
          endTime_ = other.endTime_;
          activeDaysOfWeek_ = other.activeDaysOfWeek_.Clone();
          thresholdAbovePostedSpeed_ = other.thresholdAbovePostedSpeed_;
          thresholdPostedSpeedAbsent_ = other.thresholdPostedSpeedAbsent_;
          thresholdAbsolute_ = other.thresholdAbsolute_;
          recurringAlert_ = other.recurringAlert_;
          configAction_ = other.configAction_;
          unitOfMeasure_ = other.unitOfMeasure_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public SpeedAlertConfig Clone() {
          return new SpeedAlertConfig(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 10;
        private string name_ = "";
        /// <summary>
        //// Display text name for the configuration
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "identifier" field.</summary>
        public const int IdentifierFieldNumber = 1;
        private string identifier_ = "";
        /// <summary>
        //// the identifier of the config that was triggered will be put in the generated alert
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Identifier {
          get { return identifier_; }
          set {
            identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "beginTime" field.</summary>
        public const int BeginTimeFieldNumber = 2;
        private int beginTime_;
        /// <summary>
        //// seconds after midnight
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int BeginTime {
          get { return beginTime_; }
          set {
            beginTime_ = value;
          }
        }

        /// <summary>Field number for the "endTime" field.</summary>
        public const int EndTimeFieldNumber = 3;
        private int endTime_;
        /// <summary>
        //// seconds after midnight
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int EndTime {
          get { return endTime_; }
          set {
            endTime_ = value;
          }
        }

        /// <summary>Field number for the "activeDaysOfWeek" field.</summary>
        public const int ActiveDaysOfWeekFieldNumber = 4;
        private static readonly pb::FieldCodec<int> _repeated_activeDaysOfWeek_codec
            = pb::FieldCodec.ForInt32(34);
        private readonly pbc::RepeatedField<int> activeDaysOfWeek_ = new pbc::RepeatedField<int>();
        /// <summary>
        //// 0 == Sunday, 1 == Monday ... 
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<int> ActiveDaysOfWeek {
          get { return activeDaysOfWeek_; }
        }

        /// <summary>Field number for the "thresholdAbovePostedSpeed" field.</summary>
        public const int ThresholdAbovePostedSpeedFieldNumber = 5;
        private int thresholdAbovePostedSpeed_;
        /// <summary>
        //// if posted speed is available from Nav, alert if speed > thresholdAbovePostedSpeed + posted
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int ThresholdAbovePostedSpeed {
          get { return thresholdAbovePostedSpeed_; }
          set {
            thresholdAbovePostedSpeed_ = value;
          }
        }

        /// <summary>Field number for the "thresholdPostedSpeedAbsent" field.</summary>
        public const int ThresholdPostedSpeedAbsentFieldNumber = 6;
        private int thresholdPostedSpeedAbsent_;
        /// <summary>
        //// if nav present but posted speed currently not valid alert if speed > thresholdPostedSpeedAbsent
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int ThresholdPostedSpeedAbsent {
          get { return thresholdPostedSpeedAbsent_; }
          set {
            thresholdPostedSpeedAbsent_ = value;
          }
        }

        /// <summary>Field number for the "thresholdAbsolute" field.</summary>
        public const int ThresholdAbsoluteFieldNumber = 7;
        private int thresholdAbsolute_;
        /// <summary>
        //// alert if speed > thresholdAbsolute, unless nav is present and posted speed is available and speed &lt;= thresholdAbovePostedSpeed + posted
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int ThresholdAbsolute {
          get { return thresholdAbsolute_; }
          set {
            thresholdAbsolute_ = value;
          }
        }

        /// <summary>Field number for the "recurringAlert" field.</summary>
        public const int RecurringAlertFieldNumber = 8;
        private bool recurringAlert_;
        /// <summary>
        //// should happen only once or recurring.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool RecurringAlert {
          get { return recurringAlert_; }
          set {
            recurringAlert_ = value;
          }
        }

        /// <summary>Field number for the "configAction" field.</summary>
        public const int ConfigActionFieldNumber = 11;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum configAction_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum ConfigAction {
          get { return configAction_; }
          set {
            configAction_ = value;
          }
        }

        /// <summary>Field number for the "unitOfMeasure" field.</summary>
        public const int UnitOfMeasureFieldNumber = 9;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure unitOfMeasure_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure UnitOfMeasure {
          get { return unitOfMeasure_; }
          set {
            unitOfMeasure_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as SpeedAlertConfig);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(SpeedAlertConfig other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (Identifier != other.Identifier) return false;
          if (BeginTime != other.BeginTime) return false;
          if (EndTime != other.EndTime) return false;
          if(!activeDaysOfWeek_.Equals(other.activeDaysOfWeek_)) return false;
          if (ThresholdAbovePostedSpeed != other.ThresholdAbovePostedSpeed) return false;
          if (ThresholdPostedSpeedAbsent != other.ThresholdPostedSpeedAbsent) return false;
          if (ThresholdAbsolute != other.ThresholdAbsolute) return false;
          if (RecurringAlert != other.RecurringAlert) return false;
          if (ConfigAction != other.ConfigAction) return false;
          if (UnitOfMeasure != other.UnitOfMeasure) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
          if (BeginTime != 0) hash ^= BeginTime.GetHashCode();
          if (EndTime != 0) hash ^= EndTime.GetHashCode();
          hash ^= activeDaysOfWeek_.GetHashCode();
          if (ThresholdAbovePostedSpeed != 0) hash ^= ThresholdAbovePostedSpeed.GetHashCode();
          if (ThresholdPostedSpeedAbsent != 0) hash ^= ThresholdPostedSpeedAbsent.GetHashCode();
          if (ThresholdAbsolute != 0) hash ^= ThresholdAbsolute.GetHashCode();
          if (RecurringAlert != false) hash ^= RecurringAlert.GetHashCode();
          if (ConfigAction != 0) hash ^= ConfigAction.GetHashCode();
          if (UnitOfMeasure != 0) hash ^= UnitOfMeasure.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Identifier.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Identifier);
          }
          if (BeginTime != 0) {
            output.WriteRawTag(16);
            output.WriteInt32(BeginTime);
          }
          if (EndTime != 0) {
            output.WriteRawTag(24);
            output.WriteInt32(EndTime);
          }
          activeDaysOfWeek_.WriteTo(output, _repeated_activeDaysOfWeek_codec);
          if (ThresholdAbovePostedSpeed != 0) {
            output.WriteRawTag(40);
            output.WriteInt32(ThresholdAbovePostedSpeed);
          }
          if (ThresholdPostedSpeedAbsent != 0) {
            output.WriteRawTag(48);
            output.WriteInt32(ThresholdPostedSpeedAbsent);
          }
          if (ThresholdAbsolute != 0) {
            output.WriteRawTag(56);
            output.WriteInt32(ThresholdAbsolute);
          }
          if (RecurringAlert != false) {
            output.WriteRawTag(64);
            output.WriteBool(RecurringAlert);
          }
          if (UnitOfMeasure != 0) {
            output.WriteRawTag(72);
            output.WriteEnum((int) UnitOfMeasure);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(82);
            output.WriteString(Name);
          }
          if (ConfigAction != 0) {
            output.WriteRawTag(88);
            output.WriteEnum((int) ConfigAction);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (Identifier.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
          }
          if (BeginTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(BeginTime);
          }
          if (EndTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndTime);
          }
          size += activeDaysOfWeek_.CalculateSize(_repeated_activeDaysOfWeek_codec);
          if (ThresholdAbovePostedSpeed != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ThresholdAbovePostedSpeed);
          }
          if (ThresholdPostedSpeedAbsent != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ThresholdPostedSpeedAbsent);
          }
          if (ThresholdAbsolute != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(ThresholdAbsolute);
          }
          if (RecurringAlert != false) {
            size += 1 + 1;
          }
          if (ConfigAction != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ConfigAction);
          }
          if (UnitOfMeasure != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) UnitOfMeasure);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(SpeedAlertConfig other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Identifier.Length != 0) {
            Identifier = other.Identifier;
          }
          if (other.BeginTime != 0) {
            BeginTime = other.BeginTime;
          }
          if (other.EndTime != 0) {
            EndTime = other.EndTime;
          }
          activeDaysOfWeek_.Add(other.activeDaysOfWeek_);
          if (other.ThresholdAbovePostedSpeed != 0) {
            ThresholdAbovePostedSpeed = other.ThresholdAbovePostedSpeed;
          }
          if (other.ThresholdPostedSpeedAbsent != 0) {
            ThresholdPostedSpeedAbsent = other.ThresholdPostedSpeedAbsent;
          }
          if (other.ThresholdAbsolute != 0) {
            ThresholdAbsolute = other.ThresholdAbsolute;
          }
          if (other.RecurringAlert != false) {
            RecurringAlert = other.RecurringAlert;
          }
          if (other.ConfigAction != 0) {
            ConfigAction = other.ConfigAction;
          }
          if (other.UnitOfMeasure != 0) {
            UnitOfMeasure = other.UnitOfMeasure;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                Identifier = input.ReadString();
                break;
              }
              case 16: {
                BeginTime = input.ReadInt32();
                break;
              }
              case 24: {
                EndTime = input.ReadInt32();
                break;
              }
              case 34:
              case 32: {
                activeDaysOfWeek_.AddEntriesFrom(input, _repeated_activeDaysOfWeek_codec);
                break;
              }
              case 40: {
                ThresholdAbovePostedSpeed = input.ReadInt32();
                break;
              }
              case 48: {
                ThresholdPostedSpeedAbsent = input.ReadInt32();
                break;
              }
              case 56: {
                ThresholdAbsolute = input.ReadInt32();
                break;
              }
              case 64: {
                RecurringAlert = input.ReadBool();
                break;
              }
              case 72: {
                unitOfMeasure_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure) input.ReadEnum();
                break;
              }
              case 82: {
                Name = input.ReadString();
                break;
              }
              case 88: {
                configAction_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum) input.ReadEnum();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Descriptor.NestedTypes[3]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ValetAlertConfig() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ValetAlertConfig(ValetAlertConfig other) : this() {
          isEnabled_ = other.isEnabled_;
          identifier_ = other.identifier_;
          activate_ = other.activate_;
          alertRadius_ = other.alertRadius_;
          configAction_ = other.configAction_;
          radiusUnitsEnum_ = other.radiusUnitsEnum_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ValetAlertConfig Clone() {
          return new ValetAlertConfig(this);
        }

        /// <summary>Field number for the "isEnabled" field.</summary>
        public const int IsEnabledFieldNumber = 8;
        private bool isEnabled_;
        /// <summary>
        //// Enable or disable this alert
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsEnabled {
          get { return isEnabled_; }
          set {
            isEnabled_ = value;
          }
        }

        /// <summary>Field number for the "identifier" field.</summary>
        public const int IdentifierFieldNumber = 1;
        private string identifier_ = "";
        /// <summary>
        //// the identifier of the config that was triggered will be put in the generated alert
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Identifier {
          get { return identifier_; }
          set {
            identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "Activate" field.</summary>
        public const int ActivateFieldNumber = 7;
        private bool activate_;
        /// <summary>
        //// 0 deactivates and 1 activates
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Activate {
          get { return activate_; }
          set {
            activate_ = value;
          }
        }

        /// <summary>Field number for the "alertRadius" field.</summary>
        public const int AlertRadiusFieldNumber = 5;
        private float alertRadius_;
        /// <summary>
        //// Radius Units (i.e 1.2)
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public float AlertRadius {
          get { return alertRadius_; }
          set {
            alertRadius_ = value;
          }
        }

        /// <summary>Field number for the "configAction" field.</summary>
        public const int ConfigActionFieldNumber = 9;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum configAction_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum ConfigAction {
          get { return configAction_; }
          set {
            configAction_ = value;
          }
        }

        /// <summary>Field number for the "radiusUnitsEnum" field.</summary>
        public const int RadiusUnitsEnumFieldNumber = 6;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure radiusUnitsEnum_ = 0;
        /// <summary>
        //// This represents whether alertRadius is in miles or kilometers.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure RadiusUnitsEnum {
          get { return radiusUnitsEnum_; }
          set {
            radiusUnitsEnum_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as ValetAlertConfig);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(ValetAlertConfig other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (IsEnabled != other.IsEnabled) return false;
          if (Identifier != other.Identifier) return false;
          if (Activate != other.Activate) return false;
          if (AlertRadius != other.AlertRadius) return false;
          if (ConfigAction != other.ConfigAction) return false;
          if (RadiusUnitsEnum != other.RadiusUnitsEnum) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (IsEnabled != false) hash ^= IsEnabled.GetHashCode();
          if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
          if (Activate != false) hash ^= Activate.GetHashCode();
          if (AlertRadius != 0F) hash ^= AlertRadius.GetHashCode();
          if (ConfigAction != 0) hash ^= ConfigAction.GetHashCode();
          if (RadiusUnitsEnum != 0) hash ^= RadiusUnitsEnum.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Identifier.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Identifier);
          }
          if (AlertRadius != 0F) {
            output.WriteRawTag(45);
            output.WriteFloat(AlertRadius);
          }
          if (RadiusUnitsEnum != 0) {
            output.WriteRawTag(48);
            output.WriteEnum((int) RadiusUnitsEnum);
          }
          if (Activate != false) {
            output.WriteRawTag(56);
            output.WriteBool(Activate);
          }
          if (IsEnabled != false) {
            output.WriteRawTag(64);
            output.WriteBool(IsEnabled);
          }
          if (ConfigAction != 0) {
            output.WriteRawTag(72);
            output.WriteEnum((int) ConfigAction);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (IsEnabled != false) {
            size += 1 + 1;
          }
          if (Identifier.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
          }
          if (Activate != false) {
            size += 1 + 1;
          }
          if (AlertRadius != 0F) {
            size += 1 + 4;
          }
          if (ConfigAction != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ConfigAction);
          }
          if (RadiusUnitsEnum != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RadiusUnitsEnum);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(ValetAlertConfig other) {
          if (other == null) {
            return;
          }
          if (other.IsEnabled != false) {
            IsEnabled = other.IsEnabled;
          }
          if (other.Identifier.Length != 0) {
            Identifier = other.Identifier;
          }
          if (other.Activate != false) {
            Activate = other.Activate;
          }
          if (other.AlertRadius != 0F) {
            AlertRadius = other.AlertRadius;
          }
          if (other.ConfigAction != 0) {
            ConfigAction = other.ConfigAction;
          }
          if (other.RadiusUnitsEnum != 0) {
            RadiusUnitsEnum = other.RadiusUnitsEnum;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                Identifier = input.ReadString();
                break;
              }
              case 45: {
                AlertRadius = input.ReadFloat();
                break;
              }
              case 48: {
                radiusUnitsEnum_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure) input.ReadEnum();
                break;
              }
              case 56: {
                Activate = input.ReadBool();
                break;
              }
              case 64: {
                IsEnabled = input.ReadBool();
                break;
              }
              case 72: {
                configAction_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum) input.ReadEnum();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Descriptor.NestedTypes[4]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public GeoFenceAlertConfig() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public GeoFenceAlertConfig(GeoFenceAlertConfig other) : this() {
          name_ = other.name_;
          identifier_ = other.identifier_;
          beginTime_ = other.beginTime_;
          endTime_ = other.endTime_;
          geoFenceTypeEnum_ = other.geoFenceTypeEnum_;
          activeDaysOfWeek_ = other.activeDaysOfWeek_.Clone();
          boundaryPoints_ = other.boundaryPoints_.Clone();
          RadiusCenter = other.radiusCenter_ != null ? other.RadiusCenter.Clone() : null;
          radius_ = other.radius_;
          radiusUnitsEnum_ = other.radiusUnitsEnum_;
          recurringAlert_ = other.recurringAlert_;
          breachType_ = other.breachType_;
          configAction_ = other.configAction_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public GeoFenceAlertConfig Clone() {
          return new GeoFenceAlertConfig(this);
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 11;
        private string name_ = "";
        /// <summary>
        //// Display text name for the configuration
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "identifier" field.</summary>
        public const int IdentifierFieldNumber = 1;
        private string identifier_ = "";
        /// <summary>
        //// the identifier of the config that was triggered will be put in the generated alert
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Identifier {
          get { return identifier_; }
          set {
            identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "beginTime" field.</summary>
        public const int BeginTimeFieldNumber = 2;
        private int beginTime_;
        /// <summary>
        //// seconds after midnight.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int BeginTime {
          get { return beginTime_; }
          set {
            beginTime_ = value;
          }
        }

        /// <summary>Field number for the "endTime" field.</summary>
        public const int EndTimeFieldNumber = 3;
        private int endTime_;
        /// <summary>
        //// seconds after midnight
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int EndTime {
          get { return endTime_; }
          set {
            endTime_ = value;
          }
        }

        /// <summary>Field number for the "geoFenceTypeEnum" field.</summary>
        public const int GeoFenceTypeEnumFieldNumber = 10;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceType geoFenceTypeEnum_ = 0;
        /// <summary>
        ////
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceType GeoFenceTypeEnum {
          get { return geoFenceTypeEnum_; }
          set {
            geoFenceTypeEnum_ = value;
          }
        }

        /// <summary>Field number for the "activeDaysOfWeek" field.</summary>
        public const int ActiveDaysOfWeekFieldNumber = 4;
        private static readonly pb::FieldCodec<int> _repeated_activeDaysOfWeek_codec
            = pb::FieldCodec.ForInt32(34);
        private readonly pbc::RepeatedField<int> activeDaysOfWeek_ = new pbc::RepeatedField<int>();
        /// <summary>
        //// 0 == Sunday, 1 == Monday ... 
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<int> ActiveDaysOfWeek {
          get { return activeDaysOfWeek_; }
        }

        /// <summary>Field number for the "boundaryPoints" field.</summary>
        public const int BoundaryPointsFieldNumber = 5;
        private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.Location> _repeated_boundaryPoints_codec
            = pb::FieldCodec.ForMessage(42, global::Com.Fca.Uconnect.Global.Location.Parser);
        private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Location> boundaryPoints_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Location>();
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Location> BoundaryPoints {
          get { return boundaryPoints_; }
        }

        /// <summary>Field number for the "radiusCenter" field.</summary>
        public const int RadiusCenterFieldNumber = 7;
        private global::Com.Fca.Uconnect.Global.Location radiusCenter_;
        /// <summary>
        //// Center Location for Radius Fence
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.Location RadiusCenter {
          get { return radiusCenter_; }
          set {
            radiusCenter_ = value;
          }
        }

        /// <summary>Field number for the "Radius" field.</summary>
        public const int RadiusFieldNumber = 8;
        private float radius_;
        /// <summary>
        //// Radius for Radius Fence
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public float Radius {
          get { return radius_; }
          set {
            radius_ = value;
          }
        }

        /// <summary>Field number for the "radiusUnitsEnum" field.</summary>
        public const int RadiusUnitsEnumFieldNumber = 6;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure radiusUnitsEnum_ = 0;
        /// <summary>
        //// This represents whether alertRadius is in miles or kilometers.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure RadiusUnitsEnum {
          get { return radiusUnitsEnum_; }
          set {
            radiusUnitsEnum_ = value;
          }
        }

        /// <summary>Field number for the "recurringAlert" field.</summary>
        public const int RecurringAlertFieldNumber = 9;
        private bool recurringAlert_;
        /// <summary>
        //// should happen only once or recurring.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool RecurringAlert {
          get { return recurringAlert_; }
          set {
            recurringAlert_ = value;
          }
        }

        /// <summary>Field number for the "breachType" field.</summary>
        public const int BreachTypeFieldNumber = 12;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.BreachTypeEnum breachType_ = 0;
        /// <summary>
        /// Only used for responses, not used to configure
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.BreachTypeEnum BreachType {
          get { return breachType_; }
          set {
            breachType_ = value;
          }
        }

        /// <summary>Field number for the "configAction" field.</summary>
        public const int ConfigActionFieldNumber = 13;
        private global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum configAction_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum ConfigAction {
          get { return configAction_; }
          set {
            configAction_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as GeoFenceAlertConfig);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(GeoFenceAlertConfig other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Name != other.Name) return false;
          if (Identifier != other.Identifier) return false;
          if (BeginTime != other.BeginTime) return false;
          if (EndTime != other.EndTime) return false;
          if (GeoFenceTypeEnum != other.GeoFenceTypeEnum) return false;
          if(!activeDaysOfWeek_.Equals(other.activeDaysOfWeek_)) return false;
          if(!boundaryPoints_.Equals(other.boundaryPoints_)) return false;
          if (!object.Equals(RadiusCenter, other.RadiusCenter)) return false;
          if (Radius != other.Radius) return false;
          if (RadiusUnitsEnum != other.RadiusUnitsEnum) return false;
          if (RecurringAlert != other.RecurringAlert) return false;
          if (BreachType != other.BreachType) return false;
          if (ConfigAction != other.ConfigAction) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
          if (BeginTime != 0) hash ^= BeginTime.GetHashCode();
          if (EndTime != 0) hash ^= EndTime.GetHashCode();
          if (GeoFenceTypeEnum != 0) hash ^= GeoFenceTypeEnum.GetHashCode();
          hash ^= activeDaysOfWeek_.GetHashCode();
          hash ^= boundaryPoints_.GetHashCode();
          if (radiusCenter_ != null) hash ^= RadiusCenter.GetHashCode();
          if (Radius != 0F) hash ^= Radius.GetHashCode();
          if (RadiusUnitsEnum != 0) hash ^= RadiusUnitsEnum.GetHashCode();
          if (RecurringAlert != false) hash ^= RecurringAlert.GetHashCode();
          if (BreachType != 0) hash ^= BreachType.GetHashCode();
          if (ConfigAction != 0) hash ^= ConfigAction.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Identifier.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Identifier);
          }
          if (BeginTime != 0) {
            output.WriteRawTag(16);
            output.WriteInt32(BeginTime);
          }
          if (EndTime != 0) {
            output.WriteRawTag(24);
            output.WriteInt32(EndTime);
          }
          activeDaysOfWeek_.WriteTo(output, _repeated_activeDaysOfWeek_codec);
          boundaryPoints_.WriteTo(output, _repeated_boundaryPoints_codec);
          if (RadiusUnitsEnum != 0) {
            output.WriteRawTag(48);
            output.WriteEnum((int) RadiusUnitsEnum);
          }
          if (radiusCenter_ != null) {
            output.WriteRawTag(58);
            output.WriteMessage(RadiusCenter);
          }
          if (Radius != 0F) {
            output.WriteRawTag(69);
            output.WriteFloat(Radius);
          }
          if (RecurringAlert != false) {
            output.WriteRawTag(72);
            output.WriteBool(RecurringAlert);
          }
          if (GeoFenceTypeEnum != 0) {
            output.WriteRawTag(80);
            output.WriteEnum((int) GeoFenceTypeEnum);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(90);
            output.WriteString(Name);
          }
          if (BreachType != 0) {
            output.WriteRawTag(96);
            output.WriteEnum((int) BreachType);
          }
          if (ConfigAction != 0) {
            output.WriteRawTag(104);
            output.WriteEnum((int) ConfigAction);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (Identifier.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
          }
          if (BeginTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(BeginTime);
          }
          if (EndTime != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndTime);
          }
          if (GeoFenceTypeEnum != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) GeoFenceTypeEnum);
          }
          size += activeDaysOfWeek_.CalculateSize(_repeated_activeDaysOfWeek_codec);
          size += boundaryPoints_.CalculateSize(_repeated_boundaryPoints_codec);
          if (radiusCenter_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(RadiusCenter);
          }
          if (Radius != 0F) {
            size += 1 + 4;
          }
          if (RadiusUnitsEnum != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RadiusUnitsEnum);
          }
          if (RecurringAlert != false) {
            size += 1 + 1;
          }
          if (BreachType != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) BreachType);
          }
          if (ConfigAction != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ConfigAction);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(GeoFenceAlertConfig other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Identifier.Length != 0) {
            Identifier = other.Identifier;
          }
          if (other.BeginTime != 0) {
            BeginTime = other.BeginTime;
          }
          if (other.EndTime != 0) {
            EndTime = other.EndTime;
          }
          if (other.GeoFenceTypeEnum != 0) {
            GeoFenceTypeEnum = other.GeoFenceTypeEnum;
          }
          activeDaysOfWeek_.Add(other.activeDaysOfWeek_);
          boundaryPoints_.Add(other.boundaryPoints_);
          if (other.radiusCenter_ != null) {
            if (radiusCenter_ == null) {
              radiusCenter_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            RadiusCenter.MergeFrom(other.RadiusCenter);
          }
          if (other.Radius != 0F) {
            Radius = other.Radius;
          }
          if (other.RadiusUnitsEnum != 0) {
            RadiusUnitsEnum = other.RadiusUnitsEnum;
          }
          if (other.RecurringAlert != false) {
            RecurringAlert = other.RecurringAlert;
          }
          if (other.BreachType != 0) {
            BreachType = other.BreachType;
          }
          if (other.ConfigAction != 0) {
            ConfigAction = other.ConfigAction;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                Identifier = input.ReadString();
                break;
              }
              case 16: {
                BeginTime = input.ReadInt32();
                break;
              }
              case 24: {
                EndTime = input.ReadInt32();
                break;
              }
              case 34:
              case 32: {
                activeDaysOfWeek_.AddEntriesFrom(input, _repeated_activeDaysOfWeek_codec);
                break;
              }
              case 42: {
                boundaryPoints_.AddEntriesFrom(input, _repeated_boundaryPoints_codec);
                break;
              }
              case 48: {
                radiusUnitsEnum_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.UnitOfMeasure) input.ReadEnum();
                break;
              }
              case 58: {
                if (radiusCenter_ == null) {
                  radiusCenter_ = new global::Com.Fca.Uconnect.Global.Location();
                }
                input.ReadMessage(radiusCenter_);
                break;
              }
              case 69: {
                Radius = input.ReadFloat();
                break;
              }
              case 72: {
                RecurringAlert = input.ReadBool();
                break;
              }
              case 80: {
                geoFenceTypeEnum_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceType) input.ReadEnum();
                break;
              }
              case 90: {
                Name = input.ReadString();
                break;
              }
              case 96: {
                breachType_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.BreachTypeEnum) input.ReadEnum();
                break;
              }
              case 104: {
                configAction_ = (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ConfigActionEnum) input.ReadEnum();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is response to PCUpdateConfigRequest .
  /// &lt;div class=exmsg-main>
  /// &lt;h4>PCUpdateConfigResponse Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490712208347
  /// 		messageId: 1
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.pcUpdateConfigResponse]
  /// 		 {
  /// 			responseEnum: SUCCESS
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class PCUpdateConfigResponse : pb::IMessage<PCUpdateConfigResponse> {
    private static readonly pb::MessageParser<PCUpdateConfigResponse> _parser = new pb::MessageParser<PCUpdateConfigResponse>(() => new PCUpdateConfigResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PCUpdateConfigResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigResponse(PCUpdateConfigResponse other) : this() {
      response_ = other.response_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
      configResponse_ = other.configResponse_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCUpdateConfigResponse Clone() {
      return new PCUpdateConfigResponse(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum response_ = 0;
    /// <summary>
    ////
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 2;
    private bool isTransient_;
    /// <summary>
    ////
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 3;
    private int failureReasonCode_;
    /// <summary>
    ////
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

    /// <summary>Field number for the "configResponse" field.</summary>
    public const int ConfigResponseFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType> _repeated_configResponse_codec
        = pb::FieldCodec.ForMessage(34, global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType> configResponse_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ConfigResponseType> ConfigResponse {
      get { return configResponse_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PCUpdateConfigResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PCUpdateConfigResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      if(!configResponse_.Equals(other.configResponse_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
      hash ^= configResponse_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
      if (IsTransient != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailureReasonCode);
      }
      configResponse_.WriteTo(output, _repeated_configResponse_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      size += configResponse_.CalculateSize(_repeated_configResponse_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PCUpdateConfigResponse other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
      configResponse_.Add(other.configResponse_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 16: {
            IsTransient = input.ReadBool();
            break;
          }
          case 24: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
          case 34: {
            configResponse_.AddEntriesFrom(input, _repeated_configResponse_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the PCUpdateConfigResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// Config successful
        /// </summary>
        [pbr::OriginalName("SUCCESS")] Success = 0,
        /// <summary>
        //// Config failed
        /// </summary>
        [pbr::OriginalName("FAILURE")] Failure = 1,
        /// <summary>
        //// Config type not supported in this region 
        /// </summary>
        [pbr::OriginalName("CONFIG_TYPE_NOT_ALLOWED")] ConfigTypeNotAllowed = 3,
        /// <summary>
        //// Privacy Mode On
        /// </summary>
        [pbr::OriginalName("FAILURE_PRIVACY_ON")] FailurePrivacyOn = 4,
      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ConfigResponseType() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ConfigResponseType(ConfigResponseType other) : this() {
          configurationResponse_ = other.configurationResponse_;
          name_ = other.name_;
          identifier_ = other.identifier_;
          failureReasonCode_ = other.failureReasonCode_;
          isTransient_ = other.isTransient_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ConfigResponseType Clone() {
          return new ConfigResponseType(this);
        }

        /// <summary>Field number for the "configurationResponse" field.</summary>
        public const int ConfigurationResponseFieldNumber = 1;
        private global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum configurationResponse_ = 0;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum ConfigurationResponse {
          get { return configurationResponse_; }
          set {
            configurationResponse_ = value;
          }
        }

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 2;
        private string name_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "identifier" field.</summary>
        public const int IdentifierFieldNumber = 3;
        private string identifier_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Identifier {
          get { return identifier_; }
          set {
            identifier_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "failureReasonCode" field.</summary>
        public const int FailureReasonCodeFieldNumber = 4;
        private int failureReasonCode_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int FailureReasonCode {
          get { return failureReasonCode_; }
          set {
            failureReasonCode_ = value;
          }
        }

        /// <summary>Field number for the "isTransient" field.</summary>
        public const int IsTransientFieldNumber = 5;
        private bool isTransient_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsTransient {
          get { return isTransient_; }
          set {
            isTransient_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as ConfigResponseType);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(ConfigResponseType other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (ConfigurationResponse != other.ConfigurationResponse) return false;
          if (Name != other.Name) return false;
          if (Identifier != other.Identifier) return false;
          if (FailureReasonCode != other.FailureReasonCode) return false;
          if (IsTransient != other.IsTransient) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (ConfigurationResponse != 0) hash ^= ConfigurationResponse.GetHashCode();
          if (Name.Length != 0) hash ^= Name.GetHashCode();
          if (Identifier.Length != 0) hash ^= Identifier.GetHashCode();
          if (FailureReasonCode != 0) hash ^= FailureReasonCode.GetHashCode();
          if (IsTransient != false) hash ^= IsTransient.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (ConfigurationResponse != 0) {
            output.WriteRawTag(8);
            output.WriteEnum((int) ConfigurationResponse);
          }
          if (Name.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(Name);
          }
          if (Identifier.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(Identifier);
          }
          if (FailureReasonCode != 0) {
            output.WriteRawTag(32);
            output.WriteInt32(FailureReasonCode);
          }
          if (IsTransient != false) {
            output.WriteRawTag(40);
            output.WriteBool(IsTransient);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (ConfigurationResponse != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ConfigurationResponse);
          }
          if (Name.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
          }
          if (Identifier.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Identifier);
          }
          if (FailureReasonCode != 0) {
            size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
          }
          if (IsTransient != false) {
            size += 1 + 1;
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(ConfigResponseType other) {
          if (other == null) {
            return;
          }
          if (other.ConfigurationResponse != 0) {
            ConfigurationResponse = other.ConfigurationResponse;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Identifier.Length != 0) {
            Identifier = other.Identifier;
          }
          if (other.FailureReasonCode != 0) {
            FailureReasonCode = other.FailureReasonCode;
          }
          if (other.IsTransient != false) {
            IsTransient = other.IsTransient;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 8: {
                configurationResponse_ = (global::Com.Fca.Uconnect.Global.PCUpdateConfigResponse.Types.ResponseEnum) input.ReadEnum();
                break;
              }
              case 18: {
                Name = input.ReadString();
                break;
              }
              case 26: {
                Identifier = input.ReadString();
                break;
              }
              case 32: {
                FailureReasonCode = input.ReadInt32();
                break;
              }
              case 40: {
                IsTransient = input.ReadBool();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is to notify SDP for Parental Controlconfigured Alert.
  /// &lt;div class=exmsg-main>
  /// &lt;/div>
  /// </summary>
  public sealed partial class PCConfiguredAlertPublish : pb::IMessage<PCConfiguredAlertPublish> {
    private static readonly pb::MessageParser<PCConfiguredAlertPublish> _parser = new pb::MessageParser<PCConfiguredAlertPublish>(() => new PCConfiguredAlertPublish());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<PCConfiguredAlertPublish> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCConfiguredAlertPublish() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCConfiguredAlertPublish(PCConfiguredAlertPublish other) : this() {
      EventLocation = other.eventLocation_ != null ? other.EventLocation.Clone() : null;
      eventTimestampUTC_ = other.eventTimestampUTC_;
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      vehicleSpeed_ = other.vehicleSpeed_;
      postedSpeed_ = other.postedSpeed_;
      postedSpeedValid_ = other.postedSpeedValid_;
      switch (other.EventSourceCase) {
        case EventSourceOneofCase.CurfewAlertConfig:
          CurfewAlertConfig = other.CurfewAlertConfig.Clone();
          break;
        case EventSourceOneofCase.SpeedAlertConfig:
          SpeedAlertConfig = other.SpeedAlertConfig.Clone();
          break;
        case EventSourceOneofCase.ValetAlertConfig:
          ValetAlertConfig = other.ValetAlertConfig.Clone();
          break;
        case EventSourceOneofCase.GeoFenceAlertConfig:
          GeoFenceAlertConfig = other.GeoFenceAlertConfig.Clone();
          break;
      }

    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCConfiguredAlertPublish Clone() {
      return new PCConfiguredAlertPublish(this);
    }

    /// <summary>Field number for the "curfewAlertConfig" field.</summary>
    public const int CurfewAlertConfigFieldNumber = 1;
    /// <summary>
    //// the configuration that triggered this alert
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig CurfewAlertConfig {
      get { return eventSourceCase_ == EventSourceOneofCase.CurfewAlertConfig ? (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig) eventSource_ : null; }
      set {
        eventSource_ = value;
        eventSourceCase_ = value == null ? EventSourceOneofCase.None : EventSourceOneofCase.CurfewAlertConfig;
      }
    }

    /// <summary>Field number for the "speedAlertConfig" field.</summary>
    public const int SpeedAlertConfigFieldNumber = 2;
    /// <summary>
    //// the configuration that triggered this alert
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig SpeedAlertConfig {
      get { return eventSourceCase_ == EventSourceOneofCase.SpeedAlertConfig ? (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig) eventSource_ : null; }
      set {
        eventSource_ = value;
        eventSourceCase_ = value == null ? EventSourceOneofCase.None : EventSourceOneofCase.SpeedAlertConfig;
      }
    }

    /// <summary>Field number for the "valetAlertConfig" field.</summary>
    public const int ValetAlertConfigFieldNumber = 3;
    /// <summary>
    //// the configuration that triggered this alert
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig ValetAlertConfig {
      get { return eventSourceCase_ == EventSourceOneofCase.ValetAlertConfig ? (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig) eventSource_ : null; }
      set {
        eventSource_ = value;
        eventSourceCase_ = value == null ? EventSourceOneofCase.None : EventSourceOneofCase.ValetAlertConfig;
      }
    }

    /// <summary>Field number for the "geoFenceAlertConfig" field.</summary>
    public const int GeoFenceAlertConfigFieldNumber = 4;
    /// <summary>
    //// the configuration that triggered this alert
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig GeoFenceAlertConfig {
      get { return eventSourceCase_ == EventSourceOneofCase.GeoFenceAlertConfig ? (global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig) eventSource_ : null; }
      set {
        eventSource_ = value;
        eventSourceCase_ = value == null ? EventSourceOneofCase.None : EventSourceOneofCase.GeoFenceAlertConfig;
      }
    }

    /// <summary>Field number for the "eventLocation" field.</summary>
    public const int EventLocationFieldNumber = 5;
    private global::Com.Fca.Uconnect.Global.Location eventLocation_;
    /// <summary>
    //// location of the vehicle when the event was triggered
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location EventLocation {
      get { return eventLocation_; }
      set {
        eventLocation_ = value;
      }
    }

    /// <summary>Field number for the "eventTimestampUTC" field.</summary>
    public const int EventTimestampUTCFieldNumber = 6;
    private long eventTimestampUTC_;
    /// <summary>
    //// UTC time the event was triggered
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long EventTimestampUTC {
      get { return eventTimestampUTC_; }
      set {
        eventTimestampUTC_ = value;
      }
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 7;
    private int eventTimeUTCOffset_;
    /// <summary>
    //// offset in seconds of the vehicle time zone from UTC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "vehicleSpeed" field.</summary>
    public const int VehicleSpeedFieldNumber = 8;
    private int vehicleSpeed_;
    /// <summary>
    //// speed in km/h  when the event was triggered
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int VehicleSpeed {
      get { return vehicleSpeed_; }
      set {
        vehicleSpeed_ = value;
      }
    }

    /// <summary>Field number for the "postedSpeed" field.</summary>
    public const int PostedSpeedFieldNumber = 9;
    private int postedSpeed_;
    /// <summary>
    //// posted speed value from NAV system
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int PostedSpeed {
      get { return postedSpeed_; }
      set {
        postedSpeed_ = value;
      }
    }

    /// <summary>Field number for the "postedSpeedValid" field.</summary>
    public const int PostedSpeedValidFieldNumber = 10;
    private bool postedSpeedValid_;
    /// <summary>
    //// if false, postedSpeed was not available and/or did not participate in the trigger
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool PostedSpeedValid {
      get { return postedSpeedValid_; }
      set {
        postedSpeedValid_ = value;
      }
    }

    private object eventSource_;
    /// <summary>Enum of possible cases for the "eventSource" oneof.</summary>
    public enum EventSourceOneofCase {
      None = 0,
      CurfewAlertConfig = 1,
      SpeedAlertConfig = 2,
      ValetAlertConfig = 3,
      GeoFenceAlertConfig = 4,
    }
    private EventSourceOneofCase eventSourceCase_ = EventSourceOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EventSourceOneofCase EventSourceCase {
      get { return eventSourceCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearEventSource() {
      eventSourceCase_ = EventSourceOneofCase.None;
      eventSource_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PCConfiguredAlertPublish);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PCConfiguredAlertPublish other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(CurfewAlertConfig, other.CurfewAlertConfig)) return false;
      if (!object.Equals(SpeedAlertConfig, other.SpeedAlertConfig)) return false;
      if (!object.Equals(ValetAlertConfig, other.ValetAlertConfig)) return false;
      if (!object.Equals(GeoFenceAlertConfig, other.GeoFenceAlertConfig)) return false;
      if (!object.Equals(EventLocation, other.EventLocation)) return false;
      if (EventTimestampUTC != other.EventTimestampUTC) return false;
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (VehicleSpeed != other.VehicleSpeed) return false;
      if (PostedSpeed != other.PostedSpeed) return false;
      if (PostedSpeedValid != other.PostedSpeedValid) return false;
      if (EventSourceCase != other.EventSourceCase) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (eventSourceCase_ == EventSourceOneofCase.CurfewAlertConfig) hash ^= CurfewAlertConfig.GetHashCode();
      if (eventSourceCase_ == EventSourceOneofCase.SpeedAlertConfig) hash ^= SpeedAlertConfig.GetHashCode();
      if (eventSourceCase_ == EventSourceOneofCase.ValetAlertConfig) hash ^= ValetAlertConfig.GetHashCode();
      if (eventSourceCase_ == EventSourceOneofCase.GeoFenceAlertConfig) hash ^= GeoFenceAlertConfig.GetHashCode();
      if (eventLocation_ != null) hash ^= EventLocation.GetHashCode();
      if (EventTimestampUTC != 0L) hash ^= EventTimestampUTC.GetHashCode();
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (VehicleSpeed != 0) hash ^= VehicleSpeed.GetHashCode();
      if (PostedSpeed != 0) hash ^= PostedSpeed.GetHashCode();
      if (PostedSpeedValid != false) hash ^= PostedSpeedValid.GetHashCode();
      hash ^= (int) eventSourceCase_;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (eventSourceCase_ == EventSourceOneofCase.CurfewAlertConfig) {
        output.WriteRawTag(10);
        output.WriteMessage(CurfewAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.SpeedAlertConfig) {
        output.WriteRawTag(18);
        output.WriteMessage(SpeedAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.ValetAlertConfig) {
        output.WriteRawTag(26);
        output.WriteMessage(ValetAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.GeoFenceAlertConfig) {
        output.WriteRawTag(34);
        output.WriteMessage(GeoFenceAlertConfig);
      }
      if (eventLocation_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(EventLocation);
      }
      if (EventTimestampUTC != 0L) {
        output.WriteRawTag(48);
        output.WriteInt64(EventTimestampUTC);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(EventTimeUTCOffset);
      }
      if (VehicleSpeed != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(VehicleSpeed);
      }
      if (PostedSpeed != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(PostedSpeed);
      }
      if (PostedSpeedValid != false) {
        output.WriteRawTag(80);
        output.WriteBool(PostedSpeedValid);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (eventSourceCase_ == EventSourceOneofCase.CurfewAlertConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurfewAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.SpeedAlertConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SpeedAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.ValetAlertConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ValetAlertConfig);
      }
      if (eventSourceCase_ == EventSourceOneofCase.GeoFenceAlertConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GeoFenceAlertConfig);
      }
      if (eventLocation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EventLocation);
      }
      if (EventTimestampUTC != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(EventTimestampUTC);
      }
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (VehicleSpeed != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VehicleSpeed);
      }
      if (PostedSpeed != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PostedSpeed);
      }
      if (PostedSpeedValid != false) {
        size += 1 + 1;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PCConfiguredAlertPublish other) {
      if (other == null) {
        return;
      }
      if (other.eventLocation_ != null) {
        if (eventLocation_ == null) {
          eventLocation_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        EventLocation.MergeFrom(other.EventLocation);
      }
      if (other.EventTimestampUTC != 0L) {
        EventTimestampUTC = other.EventTimestampUTC;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.VehicleSpeed != 0) {
        VehicleSpeed = other.VehicleSpeed;
      }
      if (other.PostedSpeed != 0) {
        PostedSpeed = other.PostedSpeed;
      }
      if (other.PostedSpeedValid != false) {
        PostedSpeedValid = other.PostedSpeedValid;
      }
      switch (other.EventSourceCase) {
        case EventSourceOneofCase.CurfewAlertConfig:
          CurfewAlertConfig = other.CurfewAlertConfig;
          break;
        case EventSourceOneofCase.SpeedAlertConfig:
          SpeedAlertConfig = other.SpeedAlertConfig;
          break;
        case EventSourceOneofCase.ValetAlertConfig:
          ValetAlertConfig = other.ValetAlertConfig;
          break;
        case EventSourceOneofCase.GeoFenceAlertConfig:
          GeoFenceAlertConfig = other.GeoFenceAlertConfig;
          break;
      }

    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig subBuilder = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.CurfewAlertConfig();
            if (eventSourceCase_ == EventSourceOneofCase.CurfewAlertConfig) {
              subBuilder.MergeFrom(CurfewAlertConfig);
            }
            input.ReadMessage(subBuilder);
            CurfewAlertConfig = subBuilder;
            break;
          }
          case 18: {
            global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig subBuilder = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.SpeedAlertConfig();
            if (eventSourceCase_ == EventSourceOneofCase.SpeedAlertConfig) {
              subBuilder.MergeFrom(SpeedAlertConfig);
            }
            input.ReadMessage(subBuilder);
            SpeedAlertConfig = subBuilder;
            break;
          }
          case 26: {
            global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig subBuilder = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.ValetAlertConfig();
            if (eventSourceCase_ == EventSourceOneofCase.ValetAlertConfig) {
              subBuilder.MergeFrom(ValetAlertConfig);
            }
            input.ReadMessage(subBuilder);
            ValetAlertConfig = subBuilder;
            break;
          }
          case 34: {
            global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig subBuilder = new global::Com.Fca.Uconnect.Global.ConfigTypeVehicle.Types.GeoFenceAlertConfig();
            if (eventSourceCase_ == EventSourceOneofCase.GeoFenceAlertConfig) {
              subBuilder.MergeFrom(GeoFenceAlertConfig);
            }
            input.ReadMessage(subBuilder);
            GeoFenceAlertConfig = subBuilder;
            break;
          }
          case 42: {
            if (eventLocation_ == null) {
              eventLocation_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(eventLocation_);
            break;
          }
          case 48: {
            EventTimestampUTC = input.ReadInt64();
            break;
          }
          case 56: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
          case 64: {
            VehicleSpeed = input.ReadInt32();
            break;
          }
          case 72: {
            PostedSpeed = input.ReadInt32();
            break;
          }
          case 80: {
            PostedSpeedValid = input.ReadBool();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCLogUploads() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCLogUploads(PCLogUploads other) : this() {
      TripLog = other.tripLog_ != null ? other.TripLog.Clone() : null;
      DriveStyleLog = other.driveStyleLog_ != null ? other.DriveStyleLog.Clone() : null;
      SpeedAlertsLog = other.speedAlertsLog_ != null ? other.SpeedAlertsLog.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public PCLogUploads Clone() {
      return new PCLogUploads(this);
    }

    /// <summary>Field number for the "tripLog" field.</summary>
    public const int TripLogFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.TripLog tripLog_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.TripLog TripLog {
      get { return tripLog_; }
      set {
        tripLog_ = value;
      }
    }

    /// <summary>Field number for the "driveStyleLog" field.</summary>
    public const int DriveStyleLogFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.DrivingStyleLog driveStyleLog_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.DrivingStyleLog DriveStyleLog {
      get { return driveStyleLog_; }
      set {
        driveStyleLog_ = value;
      }
    }

    /// <summary>Field number for the "speedAlertsLog" field.</summary>
    public const int SpeedAlertsLogFieldNumber = 3;
    private global::Com.Fca.Uconnect.Global.SpeedAlertsLog speedAlertsLog_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.SpeedAlertsLog SpeedAlertsLog {
      get { return speedAlertsLog_; }
      set {
        speedAlertsLog_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as PCLogUploads);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(PCLogUploads other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(TripLog, other.TripLog)) return false;
      if (!object.Equals(DriveStyleLog, other.DriveStyleLog)) return false;
      if (!object.Equals(SpeedAlertsLog, other.SpeedAlertsLog)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (tripLog_ != null) hash ^= TripLog.GetHashCode();
      if (driveStyleLog_ != null) hash ^= DriveStyleLog.GetHashCode();
      if (speedAlertsLog_ != null) hash ^= SpeedAlertsLog.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (tripLog_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(TripLog);
      }
      if (driveStyleLog_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(DriveStyleLog);
      }
      if (speedAlertsLog_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SpeedAlertsLog);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (tripLog_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TripLog);
      }
      if (driveStyleLog_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DriveStyleLog);
      }
      if (speedAlertsLog_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SpeedAlertsLog);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(PCLogUploads other) {
      if (other == null) {
        return;
      }
      if (other.tripLog_ != null) {
        if (tripLog_ == null) {
          tripLog_ = new global::Com.Fca.Uconnect.Global.TripLog();
        }
        TripLog.MergeFrom(other.TripLog);
      }
      if (other.driveStyleLog_ != null) {
        if (driveStyleLog_ == null) {
          driveStyleLog_ = new global::Com.Fca.Uconnect.Global.DrivingStyleLog();
        }
        DriveStyleLog.MergeFrom(other.DriveStyleLog);
      }
      if (other.speedAlertsLog_ != null) {
        if (speedAlertsLog_ == null) {
          speedAlertsLog_ = new global::Com.Fca.Uconnect.Global.SpeedAlertsLog();
        }
        SpeedAlertsLog.MergeFrom(other.SpeedAlertsLog);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 10: {
            if (tripLog_ == null) {
              tripLog_ = new global::Com.Fca.Uconnect.Global.TripLog();
            }
            input.ReadMessage(tripLog_);
            break;
          }
          case 18: {
            if (driveStyleLog_ == null) {
              driveStyleLog_ = new global::Com.Fca.Uconnect.Global.DrivingStyleLog();
            }
            input.ReadMessage(driveStyleLog_);
            break;
          }
          case 26: {
            if (speedAlertsLog_ == null) {
              speedAlertsLog_ = new global::Com.Fca.Uconnect.Global.SpeedAlertsLog();
            }
            input.ReadMessage(speedAlertsLog_);
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TripLog() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TripLog(TripLog other) : this() {
      tripID_ = other.tripID_;
      ignitionOnTimeStamp_ = other.ignitionOnTimeStamp_;
      StartLocation = other.startLocation_ != null ? other.StartLocation.Clone() : null;
      ignitionOffTimeStamp_ = other.ignitionOffTimeStamp_;
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      EndLocation = other.endLocation_ != null ? other.EndLocation.Clone() : null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TripLog Clone() {
      return new TripLog(this);
    }

    /// <summary>Field number for the "tripID" field.</summary>
    public const int TripIDFieldNumber = 5;
    private string tripID_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TripID {
      get { return tripID_; }
      set {
        tripID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "IgnitionOnTimeStamp" field.</summary>
    public const int IgnitionOnTimeStampFieldNumber = 1;
    private long ignitionOnTimeStamp_;
    /// <summary>
    //// Time of IgnitionOn
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long IgnitionOnTimeStamp {
      get { return ignitionOnTimeStamp_; }
      set {
        ignitionOnTimeStamp_ = value;
      }
    }

    /// <summary>Field number for the "startLocation" field.</summary>
    public const int StartLocationFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.Location startLocation_;
    /// <summary>
    //// Location at IgntionOn
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location StartLocation {
      get { return startLocation_; }
      set {
        startLocation_ = value;
      }
    }

    /// <summary>Field number for the "IgnitionOffTimeStamp" field.</summary>
    public const int IgnitionOffTimeStampFieldNumber = 3;
    private long ignitionOffTimeStamp_;
    /// <summary>
    //// Time of Igntion Off
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long IgnitionOffTimeStamp {
      get { return ignitionOffTimeStamp_; }
      set {
        ignitionOffTimeStamp_ = value;
      }
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 7;
    private int eventTimeUTCOffset_;
    /// <summary>
    //// offset in seconds of the vehicle time zone from UTC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "endLocation" field.</summary>
    public const int EndLocationFieldNumber = 4;
    private global::Com.Fca.Uconnect.Global.Location endLocation_;
    /// <summary>
    //// Location at Ignition Off
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Location EndLocation {
      get { return endLocation_; }
      set {
        endLocation_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as TripLog);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(TripLog other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TripID != other.TripID) return false;
      if (IgnitionOnTimeStamp != other.IgnitionOnTimeStamp) return false;
      if (!object.Equals(StartLocation, other.StartLocation)) return false;
      if (IgnitionOffTimeStamp != other.IgnitionOffTimeStamp) return false;
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (!object.Equals(EndLocation, other.EndLocation)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (TripID.Length != 0) hash ^= TripID.GetHashCode();
      if (IgnitionOnTimeStamp != 0L) hash ^= IgnitionOnTimeStamp.GetHashCode();
      if (startLocation_ != null) hash ^= StartLocation.GetHashCode();
      if (IgnitionOffTimeStamp != 0L) hash ^= IgnitionOffTimeStamp.GetHashCode();
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (endLocation_ != null) hash ^= EndLocation.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (IgnitionOnTimeStamp != 0L) {
        output.WriteRawTag(8);
        output.WriteInt64(IgnitionOnTimeStamp);
      }
      if (startLocation_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(StartLocation);
      }
      if (IgnitionOffTimeStamp != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(IgnitionOffTimeStamp);
      }
      if (endLocation_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(EndLocation);
      }
      if (TripID.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(TripID);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(EventTimeUTCOffset);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (TripID.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TripID);
      }
      if (IgnitionOnTimeStamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(IgnitionOnTimeStamp);
      }
      if (startLocation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StartLocation);
      }
      if (IgnitionOffTimeStamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(IgnitionOffTimeStamp);
      }
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (endLocation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EndLocation);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TripLog other) {
      if (other == null) {
        return;
      }
      if (other.TripID.Length != 0) {
        TripID = other.TripID;
      }
      if (other.IgnitionOnTimeStamp != 0L) {
        IgnitionOnTimeStamp = other.IgnitionOnTimeStamp;
      }
      if (other.startLocation_ != null) {
        if (startLocation_ == null) {
          startLocation_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        StartLocation.MergeFrom(other.StartLocation);
      }
      if (other.IgnitionOffTimeStamp != 0L) {
        IgnitionOffTimeStamp = other.IgnitionOffTimeStamp;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.endLocation_ != null) {
        if (endLocation_ == null) {
          endLocation_ = new global::Com.Fca.Uconnect.Global.Location();
        }
        EndLocation.MergeFrom(other.EndLocation);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            IgnitionOnTimeStamp = input.ReadInt64();
            break;
          }
          case 18: {
            if (startLocation_ == null) {
              startLocation_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(startLocation_);
            break;
          }
          case 24: {
            IgnitionOffTimeStamp = input.ReadInt64();
            break;
          }
          case 34: {
            if (endLocation_ == null) {
              endLocation_ = new global::Com.Fca.Uconnect.Global.Location();
            }
            input.ReadMessage(endLocation_);
            break;
          }
          case 42: {
            TripID = input.ReadString();
            break;
          }
          case 56: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrivingStyleLog() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrivingStyleLog(DrivingStyleLog other) : this() {
      tripID_ = other.tripID_;
      harshAcceleration_ = other.harshAcceleration_.Clone();
      harshBraking_ = other.harshBraking_.Clone();
      suddenCornering_ = other.suddenCornering_.Clone();
      seatBeltNotFastened_ = other.seatBeltNotFastened_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DrivingStyleLog Clone() {
      return new DrivingStyleLog(this);
    }

    /// <summary>Field number for the "tripID" field.</summary>
    public const int TripIDFieldNumber = 11;
    private string tripID_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TripID {
      get { return tripID_; }
      set {
        tripID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "harshAcceleration" field.</summary>
    public const int HarshAccelerationFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.Acceleration> _repeated_harshAcceleration_codec
        = pb::FieldCodec.ForMessage(66, global::Com.Fca.Uconnect.Global.Acceleration.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Acceleration> harshAcceleration_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Acceleration>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Acceleration> HarshAcceleration {
      get { return harshAcceleration_; }
    }

    /// <summary>Field number for the "harshBraking" field.</summary>
    public const int HarshBrakingFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.Braking> _repeated_harshBraking_codec
        = pb::FieldCodec.ForMessage(74, global::Com.Fca.Uconnect.Global.Braking.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Braking> harshBraking_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Braking>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Braking> HarshBraking {
      get { return harshBraking_; }
    }

    /// <summary>Field number for the "suddenCornering" field.</summary>
    public const int SuddenCorneringFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.Cornering> _repeated_suddenCornering_codec
        = pb::FieldCodec.ForMessage(58, global::Com.Fca.Uconnect.Global.Cornering.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Cornering> suddenCornering_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Cornering>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.Cornering> SuddenCornering {
      get { return suddenCornering_; }
    }

    /// <summary>Field number for the "seatBeltNotFastened" field.</summary>
    public const int SeatBeltNotFastenedFieldNumber = 10;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.SeatBelt> _repeated_seatBeltNotFastened_codec
        = pb::FieldCodec.ForMessage(82, global::Com.Fca.Uconnect.Global.SeatBelt.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.SeatBelt> seatBeltNotFastened_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.SeatBelt>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.SeatBelt> SeatBeltNotFastened {
      get { return seatBeltNotFastened_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as DrivingStyleLog);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(DrivingStyleLog other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TripID != other.TripID) return false;
      if(!harshAcceleration_.Equals(other.harshAcceleration_)) return false;
      if(!harshBraking_.Equals(other.harshBraking_)) return false;
      if(!suddenCornering_.Equals(other.suddenCornering_)) return false;
      if(!seatBeltNotFastened_.Equals(other.seatBeltNotFastened_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (TripID.Length != 0) hash ^= TripID.GetHashCode();
      hash ^= harshAcceleration_.GetHashCode();
      hash ^= harshBraking_.GetHashCode();
      hash ^= suddenCornering_.GetHashCode();
      hash ^= seatBeltNotFastened_.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      suddenCornering_.WriteTo(output, _repeated_suddenCornering_codec);
      harshAcceleration_.WriteTo(output, _repeated_harshAcceleration_codec);
      harshBraking_.WriteTo(output, _repeated_harshBraking_codec);
      seatBeltNotFastened_.WriteTo(output, _repeated_seatBeltNotFastened_codec);
      if (TripID.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(TripID);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (TripID.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TripID);
      }
      size += harshAcceleration_.CalculateSize(_repeated_harshAcceleration_codec);
      size += harshBraking_.CalculateSize(_repeated_harshBraking_codec);
      size += suddenCornering_.CalculateSize(_repeated_suddenCornering_codec);
      size += seatBeltNotFastened_.CalculateSize(_repeated_seatBeltNotFastened_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DrivingStyleLog other) {
      if (other == null) {
        return;
      }
      if (other.TripID.Length != 0) {
        TripID = other.TripID;
      }
      harshAcceleration_.Add(other.harshAcceleration_);
      harshBraking_.Add(other.harshBraking_);
      suddenCornering_.Add(other.suddenCornering_);
      seatBeltNotFastened_.Add(other.seatBeltNotFastened_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 58: {
            suddenCornering_.AddEntriesFrom(input, _repeated_suddenCornering_codec);
            break;
          }
          case 66: {
            harshAcceleration_.AddEntriesFrom(input, _repeated_harshAcceleration_codec);
            break;
          }
          case 74: {
            harshBraking_.AddEntriesFrom(input, _repeated_harshBraking_codec);
            break;
          }
          case 82: {
            seatBeltNotFastened_.AddEntriesFrom(input, _repeated_seatBeltNotFastened_codec);
            break;
          }
          case 90: {
            TripID = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SpeedAlertsLog() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SpeedAlertsLog(SpeedAlertsLog other) : this() {
      tripID_ = other.tripID_;
      violationTotals_ = other.violationTotals_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SpeedAlertsLog Clone() {
      return new SpeedAlertsLog(this);
    }

    /// <summary>Field number for the "tripID" field.</summary>
    public const int TripIDFieldNumber = 5;
    private string tripID_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TripID {
      get { return tripID_; }
      set {
        tripID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "ViolationTotals" field.</summary>
    public const int ViolationTotalsFieldNumber = 1;
    private int violationTotals_;
    /// <summary>
    //// Total number of speed alert threshold violations this trip
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ViolationTotals {
      get { return violationTotals_; }
      set {
        violationTotals_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SpeedAlertsLog);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SpeedAlertsLog other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TripID != other.TripID) return false;
      if (ViolationTotals != other.ViolationTotals) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (TripID.Length != 0) hash ^= TripID.GetHashCode();
      if (ViolationTotals != 0) hash ^= ViolationTotals.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ViolationTotals != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ViolationTotals);
      }
      if (TripID.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(TripID);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (TripID.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TripID);
      }
      if (ViolationTotals != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ViolationTotals);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SpeedAlertsLog other) {
      if (other == null) {
        return;
      }
      if (other.TripID.Length != 0) {
        TripID = other.TripID;
      }
      if (other.ViolationTotals != 0) {
        ViolationTotals = other.ViolationTotals;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ViolationTotals = input.ReadInt32();
            break;
          }
          case 42: {
            TripID = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Acceleration() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Acceleration(Acceleration other) : this() {
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      violationTimestamp_ = other.violationTimestamp_;
      hARSHACCELERATION_ = other.hARSHACCELERATION_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Acceleration Clone() {
      return new Acceleration(this);
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 3;
    private int eventTimeUTCOffset_;
    /// <summary>
    //// offset in seconds of the vehicle time zone from UTC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "violationTimestamp" field.</summary>
    public const int ViolationTimestampFieldNumber = 2;
    private long violationTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ViolationTimestamp {
      get { return violationTimestamp_; }
      set {
        violationTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "HARSH_ACCELERATION" field.</summary>
    public const int HARSHACCELERATIONFieldNumber = 1;
    private bool hARSHACCELERATION_;
    /// <summary>
    //// Harsh Acceleration threshold reached
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HARSHACCELERATION {
      get { return hARSHACCELERATION_; }
      set {
        hARSHACCELERATION_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Acceleration);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Acceleration other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (ViolationTimestamp != other.ViolationTimestamp) return false;
      if (HARSHACCELERATION != other.HARSHACCELERATION) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (ViolationTimestamp != 0L) hash ^= ViolationTimestamp.GetHashCode();
      if (HARSHACCELERATION != false) hash ^= HARSHACCELERATION.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HARSHACCELERATION != false) {
        output.WriteRawTag(8);
        output.WriteBool(HARSHACCELERATION);
      }
      if (ViolationTimestamp != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(ViolationTimestamp);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(EventTimeUTCOffset);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (ViolationTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ViolationTimestamp);
      }
      if (HARSHACCELERATION != false) {
        size += 1 + 1;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Acceleration other) {
      if (other == null) {
        return;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.ViolationTimestamp != 0L) {
        ViolationTimestamp = other.ViolationTimestamp;
      }
      if (other.HARSHACCELERATION != false) {
        HARSHACCELERATION = other.HARSHACCELERATION;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            HARSHACCELERATION = input.ReadBool();
            break;
          }
          case 16: {
            ViolationTimestamp = input.ReadInt64();
            break;
          }
          case 24: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Braking() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Braking(Braking other) : this() {
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      violationTimestamp_ = other.violationTimestamp_;
      hARSHBREAKING_ = other.hARSHBREAKING_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Braking Clone() {
      return new Braking(this);
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 3;
    private int eventTimeUTCOffset_;
    /// <summary>
    //// offset in seconds of the vehicle time zone from UTC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "violationTimestamp" field.</summary>
    public const int ViolationTimestampFieldNumber = 1;
    private long violationTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ViolationTimestamp {
      get { return violationTimestamp_; }
      set {
        violationTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "HARSH_BREAKING" field.</summary>
    public const int HARSHBREAKINGFieldNumber = 2;
    private bool hARSHBREAKING_;
    /// <summary>
    //// Harsh Breaking threshold reached
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HARSHBREAKING {
      get { return hARSHBREAKING_; }
      set {
        hARSHBREAKING_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Braking);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Braking other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (ViolationTimestamp != other.ViolationTimestamp) return false;
      if (HARSHBREAKING != other.HARSHBREAKING) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (ViolationTimestamp != 0L) hash ^= ViolationTimestamp.GetHashCode();
      if (HARSHBREAKING != false) hash ^= HARSHBREAKING.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ViolationTimestamp != 0L) {
        output.WriteRawTag(8);
        output.WriteInt64(ViolationTimestamp);
      }
      if (HARSHBREAKING != false) {
        output.WriteRawTag(16);
        output.WriteBool(HARSHBREAKING);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(EventTimeUTCOffset);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (ViolationTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ViolationTimestamp);
      }
      if (HARSHBREAKING != false) {
        size += 1 + 1;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Braking other) {
      if (other == null) {
        return;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.ViolationTimestamp != 0L) {
        ViolationTimestamp = other.ViolationTimestamp;
      }
      if (other.HARSHBREAKING != false) {
        HARSHBREAKING = other.HARSHBREAKING;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ViolationTimestamp = input.ReadInt64();
            break;
          }
          case 16: {
            HARSHBREAKING = input.ReadBool();
            break;
          }
          case 24: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Cornering() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Cornering(Cornering other) : this() {
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      violationTimestamp_ = other.violationTimestamp_;
      sUDDENCORNERING_ = other.sUDDENCORNERING_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Cornering Clone() {
      return new Cornering(this);
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 3;
    private int eventTimeUTCOffset_;
    /// <summary>
    //// offset in seconds of the vehicle time zone from UTC
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "violationTimestamp" field.</summary>
    public const int ViolationTimestampFieldNumber = 1;
    private long violationTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ViolationTimestamp {
      get { return violationTimestamp_; }
      set {
        violationTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "SUDDEN_CORNERING" field.</summary>
    public const int SUDDENCORNERINGFieldNumber = 2;
    private bool sUDDENCORNERING_;
    /// <summary>
    //// Harsh Breaking threshold reached
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool SUDDENCORNERING {
      get { return sUDDENCORNERING_; }
      set {
        sUDDENCORNERING_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Cornering);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Cornering other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (ViolationTimestamp != other.ViolationTimestamp) return false;
      if (SUDDENCORNERING != other.SUDDENCORNERING) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (ViolationTimestamp != 0L) hash ^= ViolationTimestamp.GetHashCode();
      if (SUDDENCORNERING != false) hash ^= SUDDENCORNERING.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ViolationTimestamp != 0L) {
        output.WriteRawTag(8);
        output.WriteInt64(ViolationTimestamp);
      }
      if (SUDDENCORNERING != false) {
        output.WriteRawTag(16);
        output.WriteBool(SUDDENCORNERING);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(EventTimeUTCOffset);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (ViolationTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ViolationTimestamp);
      }
      if (SUDDENCORNERING != false) {
        size += 1 + 1;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Cornering other) {
      if (other == null) {
        return;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.ViolationTimestamp != 0L) {
        ViolationTimestamp = other.ViolationTimestamp;
      }
      if (other.SUDDENCORNERING != false) {
        SUDDENCORNERING = other.SUDDENCORNERING;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ViolationTimestamp = input.ReadInt64();
            break;
          }
          case 16: {
            SUDDENCORNERING = input.ReadBool();
            break;
          }
          case 24: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtPCReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SeatBelt() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SeatBelt(SeatBelt other) : this() {
      eventTimeUTCOffset_ = other.eventTimeUTCOffset_;
      violationTimestamp_ = other.violationTimestamp_;
      sEATBELTNOTFASTENED_ = other.sEATBELTNOTFASTENED_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SeatBelt Clone() {
      return new SeatBelt(this);
    }

    /// <summary>Field number for the "eventTimeUTCOffset" field.</summary>
    public const int EventTimeUTCOffsetFieldNumber = 3;
    private int eventTimeUTCOffset_;
    /// <summary>
    ////
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int EventTimeUTCOffset {
      get { return eventTimeUTCOffset_; }
      set {
        eventTimeUTCOffset_ = value;
      }
    }

    /// <summary>Field number for the "violationTimestamp" field.</summary>
    public const int ViolationTimestampFieldNumber = 1;
    private long violationTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long ViolationTimestamp {
      get { return violationTimestamp_; }
      set {
        violationTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "SEATBELT_NOT_FASTENED" field.</summary>
    public const int SEATBELTNOTFASTENEDFieldNumber = 2;
    private bool sEATBELTNOTFASTENED_;
    /// <summary>
    //// Harsh Breaking threshold reached
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool SEATBELTNOTFASTENED {
      get { return sEATBELTNOTFASTENED_; }
      set {
        sEATBELTNOTFASTENED_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SeatBelt);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SeatBelt other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EventTimeUTCOffset != other.EventTimeUTCOffset) return false;
      if (ViolationTimestamp != other.ViolationTimestamp) return false;
      if (SEATBELTNOTFASTENED != other.SEATBELTNOTFASTENED) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (EventTimeUTCOffset != 0) hash ^= EventTimeUTCOffset.GetHashCode();
      if (ViolationTimestamp != 0L) hash ^= ViolationTimestamp.GetHashCode();
      if (SEATBELTNOTFASTENED != false) hash ^= SEATBELTNOTFASTENED.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (ViolationTimestamp != 0L) {
        output.WriteRawTag(8);
        output.WriteInt64(ViolationTimestamp);
      }
      if (SEATBELTNOTFASTENED != false) {
        output.WriteRawTag(16);
        output.WriteBool(SEATBELTNOTFASTENED);
      }
      if (EventTimeUTCOffset != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(EventTimeUTCOffset);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (EventTimeUTCOffset != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EventTimeUTCOffset);
      }
      if (ViolationTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(ViolationTimestamp);
      }
      if (SEATBELTNOTFASTENED != false) {
        size += 1 + 1;
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SeatBelt other) {
      if (other == null) {
        return;
      }
      if (other.EventTimeUTCOffset != 0) {
        EventTimeUTCOffset = other.EventTimeUTCOffset;
      }
      if (other.ViolationTimestamp != 0L) {
        ViolationTimestamp = other.ViolationTimestamp;
      }
      if (other.SEATBELTNOTFASTENED != false) {
        SEATBELTNOTFASTENED = other.SEATBELTNOTFASTENED;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            ViolationTimestamp = input.ReadInt64();
            break;
          }
          case 16: {
            SEATBELTNOTFASTENED = input.ReadBool();
            break;
          }
          case 24: {
            EventTimeUTCOffset = input.ReadInt32();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
