// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_PerformancePages.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_PerformancePages.proto</summary>
  public static partial class GlobalUconnectExtPerformancePagesReflection {

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

    static GlobalUconnectExtPerformancePagesReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CipHbG9iYWxfVWNvbm5lY3RfRXh0X1BlcmZvcm1hbmNlUGFnZXMucHJvdG8S",
            "F2NvbS5mY2EudWNvbm5lY3QuZ2xvYmFsItAICg9VcGxvYWRUcmFja0RhdGES",
            "EQoJdmVoaWNsZUlkGAEgASgJEhMKC3ZlaGljbGVMaW5lGAIgASgJEhEKCXRp",
            "bWVzdGFtcBgEIAEoAxIPCgd3ZWJzaXRlGAUgASgJEj8KBnRpbWVycxgGIAMo",
            "CzIvLmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlVwbG9hZFRyYWNrRGF0YS5U",
            "aW1lcnMarwcKBlRpbWVycxJLCgR0eXBlGAEgASgOMj0uY29tLmZjYS51Y29u",
            "bmVjdC5nbG9iYWwuVXBsb2FkVHJhY2tEYXRhLlRpbWVycy5UaW1lclR5cGVF",
            "bnVtEkoKBnZhbHVlcxgCIAMoCzI6LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFs",
            "LlVwbG9hZFRyYWNrRGF0YS5UaW1lcnMuVGltZXJWYWx1ZRqvAQoKVGltZXJW",
            "YWx1ZRJICgV0aW1lchgBIAEoDjI5LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFs",
            "LlVwbG9hZFRyYWNrRGF0YS5UaW1lcnMuVGltZXJFbnVtEkgKBXVuaXRzGAIg",
            "ASgOMjkuY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuVXBsb2FkVHJhY2tEYXRh",
            "LlRpbWVycy5Vbml0c0VudW0SDQoFdmFsdWUYAyABKAIiUgoNVGltZXJUeXBl",
            "RW51bRIRCg1SRUFDVElPTl9USU1FEAASFgoSUkVBQ1RJT05fVElNRV9MQVNU",
            "EAESFgoSUkVBQ1RJT05fVElNRV9CRVNUEAIiwgMKCVRpbWVyRW51bRIUChBE",
            "SVNUQU5DRV9UT182MEZUEAASFQoRRElTVEFOQ0VfVE9fMzMwRlQQARIWChJE",
            "SVNUQU5DRV9UT18xMDAwRlQQAhIUChBTUEVFRF8wX1RPXzYwTVBIEAMSFQoR",
            "U1BFRURfMF9UT18xMDBNUEgQBBIKCgZWXzhfRVQQBRINCglWXzhfU1BFRUQQ",
            "BhIKCgZWXzRfRVQQBxINCglWXzRfU1BFRUQQCBIXChNCUkFLRV9ESVNUQU5D",
            "RV9GRUVUEAkSGAoUQlJBS0VfRlJPTV9TUEVFRF9NUEgQChITCg9ESVNUQU5D",
            "RV9UT18yME0QCxIUChBESVNUQU5DRV9UT18xMDBNEAwSFAoQRElTVEFOQ0Vf",
            "VE9fMzAwTRANEhYKElNQRUVEXzBfVE9fMTAwS01QSBAOEhYKElNQRUVEXzBf",
            "VE9fMTYwS01QSBAPEgoKBkVUXzIwMBAQEg0KCVNQRUVEXzIwMBAREgoKBkVU",
            "XzQwMBASEg0KCVNQRUVEXzQwMBATEhgKFEJSQUtFX0RJU1RBTkNFX01FVEVS",
            "EBQSGQoVQlJBS0VfRlJPTV9TUEVFRF9LTVBIEBUiQQoJVW5pdHNFbnVtEgsK",
            "B1NFQ09ORFMQABIHCgNNUEgQARIICgRGRUVUEAISCAoES01QSBADEgoKBk1F",
            "VEVSUxAEYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.UploadTrackData), global::Com.Fca.Uconnect.Global.UploadTrackData.Parser, new[]{ "VehicleId", "VehicleLine", "Timestamp", "Website", "Timers" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers), global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Parser, new[]{ "Type", "Values" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerTypeEnum), typeof(global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerEnum), typeof(global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.UnitsEnum) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue), global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue.Parser, new[]{ "Timer", "Units", "Value" }, null, null, null)})})
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message is to upload the track Data.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>UploadTrackData Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  ///  timestamp: 1508946513018
  ///  messageId: 1
  ///  messages {
  ///  [com.fca.uconnect.global.uploadTrackData] {
  ///    vehicleId: "VIN"
  ///    website: "WEBSITE"
  ///    timers {
  ///      type: REACTION_TIME
  ///      values {
  ///        timer: BRAKE_DISTANCE_FEET
  ///        units: FEET
  ///        value: 1.0
  ///      }
  ///    }
  ///  }
  /// }
  ///	&lt;/code>
  /// &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class UploadTrackData : pb::IMessage<UploadTrackData> {
    private static readonly pb::MessageParser<UploadTrackData> _parser = new pb::MessageParser<UploadTrackData>(() => new UploadTrackData());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<UploadTrackData> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public UploadTrackData(UploadTrackData other) : this() {
      vehicleId_ = other.vehicleId_;
      vehicleLine_ = other.vehicleLine_;
      timestamp_ = other.timestamp_;
      website_ = other.website_;
      timers_ = other.timers_.Clone();
    }

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

    /// <summary>Field number for the "vehicleId" field.</summary>
    public const int VehicleIdFieldNumber = 1;
    private string vehicleId_ = "";
    /// <summary>
    //// Provide vehicle identifier when the session on the secure channel cannot be used to identify the client. 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string VehicleId {
      get { return vehicleId_; }
      set {
        vehicleId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "vehicleLine" field.</summary>
    public const int VehicleLineFieldNumber = 2;
    private string vehicleLine_ = "";
    /// <summary>
    //// Provide the vehicle line.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string VehicleLine {
      get { return vehicleLine_; }
      set {
        vehicleLine_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "timestamp" field.</summary>
    public const int TimestampFieldNumber = 4;
    private long timestamp_;
    /// <summary>
    //// Event Timestamp
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long Timestamp {
      get { return timestamp_; }
      set {
        timestamp_ = value;
      }
    }

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

    /// <summary>Field number for the "timers" field.</summary>
    public const int TimersFieldNumber = 6;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers> _repeated_timers_codec
        = pb::FieldCodec.ForMessage(50, global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers> timers_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers>();
    /// <summary>
    //// The set of timers for current, previous, and best.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers> Timers {
      get { return timers_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(UploadTrackData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VehicleId != other.VehicleId) return false;
      if (VehicleLine != other.VehicleLine) return false;
      if (Timestamp != other.Timestamp) return false;
      if (Website != other.Website) return false;
      if(!timers_.Equals(other.timers_)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (VehicleId.Length != 0) hash ^= VehicleId.GetHashCode();
      if (VehicleLine.Length != 0) hash ^= VehicleLine.GetHashCode();
      if (Timestamp != 0L) hash ^= Timestamp.GetHashCode();
      if (Website.Length != 0) hash ^= Website.GetHashCode();
      hash ^= timers_.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 (VehicleId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(VehicleId);
      }
      if (VehicleLine.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VehicleLine);
      }
      if (Timestamp != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(Timestamp);
      }
      if (Website.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Website);
      }
      timers_.WriteTo(output, _repeated_timers_codec);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (VehicleId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VehicleId);
      }
      if (VehicleLine.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VehicleLine);
      }
      if (Timestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Timestamp);
      }
      if (Website.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Website);
      }
      size += timers_.CalculateSize(_repeated_timers_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(UploadTrackData other) {
      if (other == null) {
        return;
      }
      if (other.VehicleId.Length != 0) {
        VehicleId = other.VehicleId;
      }
      if (other.VehicleLine.Length != 0) {
        VehicleLine = other.VehicleLine;
      }
      if (other.Timestamp != 0L) {
        Timestamp = other.Timestamp;
      }
      if (other.Website.Length != 0) {
        Website = other.Website;
      }
      timers_.Add(other.timers_);
    }

    [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: {
            VehicleId = input.ReadString();
            break;
          }
          case 18: {
            VehicleLine = input.ReadString();
            break;
          }
          case 32: {
            Timestamp = input.ReadInt64();
            break;
          }
          case 42: {
            Website = input.ReadString();
            break;
          }
          case 50: {
            timers_.AddEntriesFrom(input, _repeated_timers_codec);
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the UploadTrackData message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class Timers : pb::IMessage<Timers> {
        private static readonly pb::MessageParser<Timers> _parser = new pb::MessageParser<Timers>(() => new Timers());
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Timers> Parser { get { return _parser; } }

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

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Timers(Timers other) : this() {
          type_ = other.type_;
          values_ = other.values_.Clone();
        }

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

        /// <summary>Field number for the "type" field.</summary>
        public const int TypeFieldNumber = 1;
        private global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerTypeEnum type_ = 0;
        /// <summary>
        //// Indicates the current, previous, or best times.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerTypeEnum Type {
          get { return type_; }
          set {
            type_ = value;
          }
        }

        /// <summary>Field number for the "values" field.</summary>
        public const int ValuesFieldNumber = 2;
        private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue> _repeated_values_codec
            = pb::FieldCodec.ForMessage(18, global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue.Parser);
        private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue> values_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue>();
        /// <summary>
        //// The recorded values for the various performance metrics. 
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerValue> Values {
          get { return values_; }
        }

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

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Type != 0) hash ^= Type.GetHashCode();
          hash ^= values_.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 (Type != 0) {
            output.WriteRawTag(8);
            output.WriteEnum((int) Type);
          }
          values_.WriteTo(output, _repeated_values_codec);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Type != 0) {
            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
          }
          size += values_.CalculateSize(_repeated_values_codec);
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Timers other) {
          if (other == null) {
            return;
          }
          if (other.Type != 0) {
            Type = other.Type;
          }
          values_.Add(other.values_);
        }

        [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: {
                type_ = (global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerTypeEnum) input.ReadEnum();
                break;
              }
              case 18: {
                values_.AddEntriesFrom(input, _repeated_values_codec);
                break;
              }
            }
          }
        }

        #region Nested types
        /// <summary>Container for nested types declared in the Timers message type.</summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static partial class Types {
          public enum TimerTypeEnum {
            /// <summary>
            //// Current reaction times.
            /// </summary>
            [pbr::OriginalName("REACTION_TIME")] ReactionTime = 0,
            /// <summary>
            //// Previous reaction times.
            /// </summary>
            [pbr::OriginalName("REACTION_TIME_LAST")] ReactionTimeLast = 1,
            /// <summary>
            //// The best recorded reation times.
            /// </summary>
            [pbr::OriginalName("REACTION_TIME_BEST")] ReactionTimeBest = 2,
          }

          public enum TimerEnum {
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_60FT")] DistanceTo60Ft = 0,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_330FT")] DistanceTo330Ft = 1,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_1000FT")] DistanceTo1000Ft = 2,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("SPEED_0_TO_60MPH")] Speed0To60Mph = 3,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("SPEED_0_TO_100MPH")] Speed0To100Mph = 4,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("V_8_ET")] V8Et = 5,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("V_8_SPEED")] V8Speed = 6,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("V_4_ET")] V4Et = 7,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("V_4_SPEED")] V4Speed = 8,
            /// <summary>
            //// Distance.
            /// </summary>
            [pbr::OriginalName("BRAKE_DISTANCE_FEET")] BrakeDistanceFeet = 9,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("BRAKE_FROM_SPEED_MPH")] BrakeFromSpeedMph = 10,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_20M")] DistanceTo20M = 11,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_100M")] DistanceTo100M = 12,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("DISTANCE_TO_300M")] DistanceTo300M = 13,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("SPEED_0_TO_100KMPH")] Speed0To100Kmph = 14,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("SPEED_0_TO_160KMPH")] Speed0To160Kmph = 15,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("ET_200")] Et200 = 16,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("SPEED_200")] Speed200 = 17,
            /// <summary>
            //// Timer.
            /// </summary>
            [pbr::OriginalName("ET_400")] Et400 = 18,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("SPEED_400")] Speed400 = 19,
            /// <summary>
            //// Distance.
            /// </summary>
            [pbr::OriginalName("BRAKE_DISTANCE_METER")] BrakeDistanceMeter = 20,
            /// <summary>
            //// Speed.
            /// </summary>
            [pbr::OriginalName("BRAKE_FROM_SPEED_KMPH")] BrakeFromSpeedKmph = 21,
          }

          public enum UnitsEnum {
            /// <summary>
            //// Time in Seconds.
            /// </summary>
            [pbr::OriginalName("SECONDS")] Seconds = 0,
            /// <summary>
            //// Miles Per Hour.
            /// </summary>
            [pbr::OriginalName("MPH")] Mph = 1,
            /// <summary>
            //// Distance in Feet.
            /// </summary>
            [pbr::OriginalName("FEET")] Feet = 2,
            /// <summary>
            //// Kilometers Per Hour.
            /// </summary>
            [pbr::OriginalName("KMPH")] Kmph = 3,
            /// <summary>
            //// Distance in Meters.
            /// </summary>
            [pbr::OriginalName("METERS")] Meters = 4,
          }

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

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

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

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

            partial void OnConstruction();

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public TimerValue(TimerValue other) : this() {
              timer_ = other.timer_;
              units_ = other.units_;
              value_ = other.value_;
            }

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

            /// <summary>Field number for the "timer" field.</summary>
            public const int TimerFieldNumber = 1;
            private global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerEnum timer_ = 0;
            /// <summary>
            //// Indicates the specific timer.
            /// </summary>
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerEnum Timer {
              get { return timer_; }
              set {
                timer_ = value;
              }
            }

            /// <summary>Field number for the "units" field.</summary>
            public const int UnitsFieldNumber = 2;
            private global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.UnitsEnum units_ = 0;
            /// <summary>
            //// Units of the value.
            /// </summary>
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.UnitsEnum Units {
              get { return units_; }
              set {
                units_ = value;
              }
            }

            /// <summary>Field number for the "value" field.</summary>
            public const int ValueFieldNumber = 3;
            private float value_;
            /// <summary>
            //// Recorded value.
            /// </summary>
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public float Value {
              get { return value_; }
              set {
                value_ = value;
              }
            }

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

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public bool Equals(TimerValue other) {
              if (ReferenceEquals(other, null)) {
                return false;
              }
              if (ReferenceEquals(other, this)) {
                return true;
              }
              if (Timer != other.Timer) return false;
              if (Units != other.Units) return false;
              if (Value != other.Value) return false;
              return true;
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public override int GetHashCode() {
              int hash = 1;
              if (Timer != 0) hash ^= Timer.GetHashCode();
              if (Units != 0) hash ^= Units.GetHashCode();
              if (Value != 0F) hash ^= Value.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 (Timer != 0) {
                output.WriteRawTag(8);
                output.WriteEnum((int) Timer);
              }
              if (Units != 0) {
                output.WriteRawTag(16);
                output.WriteEnum((int) Units);
              }
              if (Value != 0F) {
                output.WriteRawTag(29);
                output.WriteFloat(Value);
              }
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public int CalculateSize() {
              int size = 0;
              if (Timer != 0) {
                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Timer);
              }
              if (Units != 0) {
                size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Units);
              }
              if (Value != 0F) {
                size += 1 + 4;
              }
              return size;
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            public void MergeFrom(TimerValue other) {
              if (other == null) {
                return;
              }
              if (other.Timer != 0) {
                Timer = other.Timer;
              }
              if (other.Units != 0) {
                Units = other.Units;
              }
              if (other.Value != 0F) {
                Value = other.Value;
              }
            }

            [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: {
                    timer_ = (global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.TimerEnum) input.ReadEnum();
                    break;
                  }
                  case 16: {
                    units_ = (global::Com.Fca.Uconnect.Global.UploadTrackData.Types.Timers.Types.UnitsEnum) input.ReadEnum();
                    break;
                  }
                  case 29: {
                    Value = input.ReadFloat();
                    break;
                  }
                }
              }
            }

          }

        }
        #endregion

      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
