// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: bcl.proto
// </auto-generated>
#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 ProtoBuf.Bcl {

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

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

    static BclReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CgliY2wucHJvdG8SA2JjbCKuAQoIVGltZVNwYW4SDQoFdmFsdWUYASABKBIS",
            "KgoFc2NhbGUYAiABKA4yGy5iY2wuVGltZVNwYW4uVGltZVNwYW5TY2FsZSJn",
            "Cg1UaW1lU3BhblNjYWxlEggKBERBWVMQABIJCgVIT1VSUxABEgsKB01JTlVU",
            "RVMQAhILCgdTRUNPTkRTEAMSEAoMTUlMTElTRUNPTkRTEAQSCQoFVElDS1MQ",
            "BRIKCgZNSU5NQVgQDyKNAgoIRGF0ZVRpbWUSDQoFdmFsdWUYASABKBISKgoF",
            "c2NhbGUYAiABKA4yGy5iY2wuRGF0ZVRpbWUuVGltZVNwYW5TY2FsZRIoCgRr",
            "aW5kGAMgASgOMhouYmNsLkRhdGVUaW1lLkRhdGVUaW1lS2luZCJnCg1UaW1l",
            "U3BhblNjYWxlEggKBERBWVMQABIJCgVIT1VSUxABEgsKB01JTlVURVMQAhIL",
            "CgdTRUNPTkRTEAMSEAoMTUlMTElTRUNPTkRTEAQSCQoFVElDS1MQBRIKCgZN",
            "SU5NQVgQDyIzCgxEYXRlVGltZUtpbmQSDwoLVU5TUEVDSUZJRUQQABIHCgNV",
            "VEMQARIJCgVMT0NBTBACIpEBCg5OZXRPYmplY3RQcm94eRIZChFleGlzdGlu",
            "Z09iamVjdEtleRgBIAEoBRIUCgxuZXdPYmplY3RLZXkYAiABKAUSFwoPZXhp",
            "c3RpbmdUeXBlS2V5GAMgASgFEhIKCm5ld1R5cGVLZXkYBCABKAUSEAoIdHlw",
            "ZU5hbWUYCCABKAkSDwoHcGF5bG9hZBgKIAEoDCIeCgRHdWlkEgoKAmxvGAEg",
            "ASgGEgoKAmhpGAIgASgGIjQKB0RlY2ltYWwSCgoCbG8YASABKAQSCgoCaGkY",
            "AiABKA0SEQoJc2lnblNjYWxlGAMgASgNQg+qAgxQcm90b0J1Zi5CY2xiBnBy",
            "b3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::ProtoBuf.Bcl.TimeSpan), global::ProtoBuf.Bcl.TimeSpan.Parser, new[]{ "Value", "Scale" }, null, new[]{ typeof(global::ProtoBuf.Bcl.TimeSpan.Types.TimeSpanScale) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ProtoBuf.Bcl.DateTime), global::ProtoBuf.Bcl.DateTime.Parser, new[]{ "Value", "Scale", "Kind" }, null, new[]{ typeof(global::ProtoBuf.Bcl.DateTime.Types.TimeSpanScale), typeof(global::ProtoBuf.Bcl.DateTime.Types.DateTimeKind) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ProtoBuf.Bcl.NetObjectProxy), global::ProtoBuf.Bcl.NetObjectProxy.Parser, new[]{ "ExistingObjectKey", "NewObjectKey", "ExistingTypeKey", "NewTypeKey", "TypeName", "Payload" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ProtoBuf.Bcl.Guid), global::ProtoBuf.Bcl.Guid.Parser, new[]{ "Lo", "Hi" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ProtoBuf.Bcl.Decimal), global::ProtoBuf.Bcl.Decimal.Parser, new[]{ "Lo", "Hi", "SignScale" }, null, null, null)
          }));
    }
    #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ProtoBuf.Bcl.BclReflection.Descriptor.MessageTypes[0]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TimeSpan(TimeSpan other) : this() {
      value_ = other.value_;
      scale_ = other.scale_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private long value_;
    /// <summary>
    /// the size of the timespan (in units of the selected scale)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "scale" field.</summary>
    public const int ScaleFieldNumber = 2;
    private global::ProtoBuf.Bcl.TimeSpan.Types.TimeSpanScale scale_ = 0;
    /// <summary>
    /// the scale of the timespan [default = DAYS]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::ProtoBuf.Bcl.TimeSpan.Types.TimeSpanScale Scale {
      get { return scale_; }
      set {
        scale_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Value != 0L) hash ^= Value.GetHashCode();
      if (Scale != 0) hash ^= Scale.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (Value != 0L) {
        output.WriteRawTag(8);
        output.WriteSInt64(Value);
      }
      if (Scale != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Scale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Value != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Value);
      }
      if (Scale != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Scale);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TimeSpan other) {
      if (other == null) {
        return;
      }
      if (other.Value != 0L) {
        Value = other.Value;
      }
      if (other.Scale != 0) {
        Scale = other.Scale;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Value = input.ReadSInt64();
            break;
          }
          case 16: {
            Scale = (global::ProtoBuf.Bcl.TimeSpan.Types.TimeSpanScale) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the TimeSpan message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum TimeSpanScale {
        [pbr::OriginalName("DAYS")] Days = 0,
        [pbr::OriginalName("HOURS")] Hours = 1,
        [pbr::OriginalName("MINUTES")] Minutes = 2,
        [pbr::OriginalName("SECONDS")] Seconds = 3,
        [pbr::OriginalName("MILLISECONDS")] Milliseconds = 4,
        [pbr::OriginalName("TICKS")] Ticks = 5,
        /// <summary>
        /// dubious
        /// </summary>
        [pbr::OriginalName("MINMAX")] Minmax = 15,
      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ProtoBuf.Bcl.BclReflection.Descriptor.MessageTypes[1]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DateTime(DateTime other) : this() {
      value_ = other.value_;
      scale_ = other.scale_;
      kind_ = other.kind_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 1;
    private long value_;
    /// <summary>
    /// the offset (in units of the selected scale) from 1970/01/01
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "scale" field.</summary>
    public const int ScaleFieldNumber = 2;
    private global::ProtoBuf.Bcl.DateTime.Types.TimeSpanScale scale_ = 0;
    /// <summary>
    /// the scale of the timespan [default = DAYS]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::ProtoBuf.Bcl.DateTime.Types.TimeSpanScale Scale {
      get { return scale_; }
      set {
        scale_ = value;
      }
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 3;
    private global::ProtoBuf.Bcl.DateTime.Types.DateTimeKind kind_ = 0;
    /// <summary>
    /// the kind of date/time being represented [default = UNSPECIFIED]
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::ProtoBuf.Bcl.DateTime.Types.DateTimeKind Kind {
      get { return kind_; }
      set {
        kind_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Value != 0L) hash ^= Value.GetHashCode();
      if (Scale != 0) hash ^= Scale.GetHashCode();
      if (Kind != 0) hash ^= Kind.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (Value != 0L) {
        output.WriteRawTag(8);
        output.WriteSInt64(Value);
      }
      if (Scale != 0) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Scale);
      }
      if (Kind != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Kind);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Value != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Value);
      }
      if (Scale != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Scale);
      }
      if (Kind != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DateTime other) {
      if (other == null) {
        return;
      }
      if (other.Value != 0L) {
        Value = other.Value;
      }
      if (other.Scale != 0) {
        Scale = other.Scale;
      }
      if (other.Kind != 0) {
        Kind = other.Kind;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Value = input.ReadSInt64();
            break;
          }
          case 16: {
            Scale = (global::ProtoBuf.Bcl.DateTime.Types.TimeSpanScale) input.ReadEnum();
            break;
          }
          case 24: {
            Kind = (global::ProtoBuf.Bcl.DateTime.Types.DateTimeKind) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the DateTime message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum TimeSpanScale {
        [pbr::OriginalName("DAYS")] Days = 0,
        [pbr::OriginalName("HOURS")] Hours = 1,
        [pbr::OriginalName("MINUTES")] Minutes = 2,
        [pbr::OriginalName("SECONDS")] Seconds = 3,
        [pbr::OriginalName("MILLISECONDS")] Milliseconds = 4,
        [pbr::OriginalName("TICKS")] Ticks = 5,
        /// <summary>
        /// dubious
        /// </summary>
        [pbr::OriginalName("MINMAX")] Minmax = 15,
      }

      public enum DateTimeKind {
        /// <summary>
        /// The time represented is not specified as either local time or Coordinated Universal Time (UTC).
        /// </summary>
        [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0,
        /// <summary>
        /// The time represented is UTC.
        /// </summary>
        [pbr::OriginalName("UTC")] Utc = 1,
        /// <summary>
        /// The time represented is local time.
        /// </summary>
        [pbr::OriginalName("LOCAL")] Local = 2,
      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ProtoBuf.Bcl.BclReflection.Descriptor.MessageTypes[2]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NetObjectProxy(NetObjectProxy other) : this() {
      existingObjectKey_ = other.existingObjectKey_;
      newObjectKey_ = other.newObjectKey_;
      existingTypeKey_ = other.existingTypeKey_;
      newTypeKey_ = other.newTypeKey_;
      typeName_ = other.typeName_;
      payload_ = other.payload_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "existingObjectKey" field.</summary>
    public const int ExistingObjectKeyFieldNumber = 1;
    private int existingObjectKey_;
    /// <summary>
    /// for a tracked object, the key of the **first** time this object was seen
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ExistingObjectKey {
      get { return existingObjectKey_; }
      set {
        existingObjectKey_ = value;
      }
    }

    /// <summary>Field number for the "newObjectKey" field.</summary>
    public const int NewObjectKeyFieldNumber = 2;
    private int newObjectKey_;
    /// <summary>
    /// for a tracked object, a **new** key, the first time this object is seen
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NewObjectKey {
      get { return newObjectKey_; }
      set {
        newObjectKey_ = value;
      }
    }

    /// <summary>Field number for the "existingTypeKey" field.</summary>
    public const int ExistingTypeKeyFieldNumber = 3;
    private int existingTypeKey_;
    /// <summary>
    /// for dynamic typing, the key of the **first** time this type was seen
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ExistingTypeKey {
      get { return existingTypeKey_; }
      set {
        existingTypeKey_ = value;
      }
    }

    /// <summary>Field number for the "newTypeKey" field.</summary>
    public const int NewTypeKeyFieldNumber = 4;
    private int newTypeKey_;
    /// <summary>
    /// for dynamic typing, a **new** key, the first time this type is seen
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int NewTypeKey {
      get { return newTypeKey_; }
      set {
        newTypeKey_ = value;
      }
    }

    /// <summary>Field number for the "typeName" field.</summary>
    public const int TypeNameFieldNumber = 8;
    private string typeName_ = "";
    /// <summary>
    /// for dynamic typing, the name of the type (only present along with newTypeKey)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TypeName {
      get { return typeName_; }
      set {
        typeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "payload" field.</summary>
    public const int PayloadFieldNumber = 10;
    private pb::ByteString payload_ = pb::ByteString.Empty;
    /// <summary>
    /// the new string/value (only present along with newObjectKey)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Payload {
      get { return payload_; }
      set {
        payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(NetObjectProxy other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ExistingObjectKey != other.ExistingObjectKey) return false;
      if (NewObjectKey != other.NewObjectKey) return false;
      if (ExistingTypeKey != other.ExistingTypeKey) return false;
      if (NewTypeKey != other.NewTypeKey) return false;
      if (TypeName != other.TypeName) return false;
      if (Payload != other.Payload) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (ExistingObjectKey != 0) hash ^= ExistingObjectKey.GetHashCode();
      if (NewObjectKey != 0) hash ^= NewObjectKey.GetHashCode();
      if (ExistingTypeKey != 0) hash ^= ExistingTypeKey.GetHashCode();
      if (NewTypeKey != 0) hash ^= NewTypeKey.GetHashCode();
      if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
      if (Payload.Length != 0) hash ^= Payload.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (ExistingObjectKey != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ExistingObjectKey);
      }
      if (NewObjectKey != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(NewObjectKey);
      }
      if (ExistingTypeKey != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ExistingTypeKey);
      }
      if (NewTypeKey != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(NewTypeKey);
      }
      if (TypeName.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(TypeName);
      }
      if (Payload.Length != 0) {
        output.WriteRawTag(82);
        output.WriteBytes(Payload);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (ExistingObjectKey != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExistingObjectKey);
      }
      if (NewObjectKey != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NewObjectKey);
      }
      if (ExistingTypeKey != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExistingTypeKey);
      }
      if (NewTypeKey != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NewTypeKey);
      }
      if (TypeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeName);
      }
      if (Payload.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Payload);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(NetObjectProxy other) {
      if (other == null) {
        return;
      }
      if (other.ExistingObjectKey != 0) {
        ExistingObjectKey = other.ExistingObjectKey;
      }
      if (other.NewObjectKey != 0) {
        NewObjectKey = other.NewObjectKey;
      }
      if (other.ExistingTypeKey != 0) {
        ExistingTypeKey = other.ExistingTypeKey;
      }
      if (other.NewTypeKey != 0) {
        NewTypeKey = other.NewTypeKey;
      }
      if (other.TypeName.Length != 0) {
        TypeName = other.TypeName;
      }
      if (other.Payload.Length != 0) {
        Payload = other.Payload;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ExistingObjectKey = input.ReadInt32();
            break;
          }
          case 16: {
            NewObjectKey = input.ReadInt32();
            break;
          }
          case 24: {
            ExistingTypeKey = input.ReadInt32();
            break;
          }
          case 32: {
            NewTypeKey = input.ReadInt32();
            break;
          }
          case 66: {
            TypeName = input.ReadString();
            break;
          }
          case 82: {
            Payload = input.ReadBytes();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ProtoBuf.Bcl.BclReflection.Descriptor.MessageTypes[3]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Guid(Guid other) : this() {
      lo_ = other.lo_;
      hi_ = other.hi_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "lo" field.</summary>
    public const int LoFieldNumber = 1;
    private ulong lo_;
    /// <summary>
    /// the first 8 bytes of the guid (note:crazy-endian)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong Lo {
      get { return lo_; }
      set {
        lo_ = value;
      }
    }

    /// <summary>Field number for the "hi" field.</summary>
    public const int HiFieldNumber = 2;
    private ulong hi_;
    /// <summary>
    /// the second 8 bytes of the guid (note:crazy-endian)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong Hi {
      get { return hi_; }
      set {
        hi_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Guid other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Lo != other.Lo) return false;
      if (Hi != other.Hi) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Lo != 0UL) hash ^= Lo.GetHashCode();
      if (Hi != 0UL) hash ^= Hi.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (Lo != 0UL) {
        output.WriteRawTag(9);
        output.WriteFixed64(Lo);
      }
      if (Hi != 0UL) {
        output.WriteRawTag(17);
        output.WriteFixed64(Hi);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Lo != 0UL) {
        size += 1 + 8;
      }
      if (Hi != 0UL) {
        size += 1 + 8;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Guid other) {
      if (other == null) {
        return;
      }
      if (other.Lo != 0UL) {
        Lo = other.Lo;
      }
      if (other.Hi != 0UL) {
        Hi = other.Hi;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 9: {
            Lo = input.ReadFixed64();
            break;
          }
          case 17: {
            Hi = input.ReadFixed64();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ProtoBuf.Bcl.BclReflection.Descriptor.MessageTypes[4]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Decimal(Decimal other) : this() {
      lo_ = other.lo_;
      hi_ = other.hi_;
      signScale_ = other.signScale_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "lo" field.</summary>
    public const int LoFieldNumber = 1;
    private ulong lo_;
    /// <summary>
    /// the first 64 bits of the underlying value
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong Lo {
      get { return lo_; }
      set {
        lo_ = value;
      }
    }

    /// <summary>Field number for the "hi" field.</summary>
    public const int HiFieldNumber = 2;
    private uint hi_;
    /// <summary>
    /// the last 32 bis of the underlying value
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint Hi {
      get { return hi_; }
      set {
        hi_ = value;
      }
    }

    /// <summary>Field number for the "signScale" field.</summary>
    public const int SignScaleFieldNumber = 3;
    private uint signScale_;
    /// <summary>
    /// the number of decimal digits (bits 1-16), and the sign (bit 0)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public uint SignScale {
      get { return signScale_; }
      set {
        signScale_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Decimal other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Lo != other.Lo) return false;
      if (Hi != other.Hi) return false;
      if (SignScale != other.SignScale) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Lo != 0UL) hash ^= Lo.GetHashCode();
      if (Hi != 0) hash ^= Hi.GetHashCode();
      if (SignScale != 0) hash ^= SignScale.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (Lo != 0UL) {
        output.WriteRawTag(8);
        output.WriteUInt64(Lo);
      }
      if (Hi != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(Hi);
      }
      if (SignScale != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(SignScale);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Lo != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Lo);
      }
      if (Hi != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Hi);
      }
      if (SignScale != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SignScale);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Decimal other) {
      if (other == null) {
        return;
      }
      if (other.Lo != 0UL) {
        Lo = other.Lo;
      }
      if (other.Hi != 0) {
        Hi = other.Hi;
      }
      if (other.SignScale != 0) {
        SignScale = other.SignScale;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Lo = input.ReadUInt64();
            break;
          }
          case 16: {
            Hi = input.ReadUInt32();
            break;
          }
          case 24: {
            SignScale = input.ReadUInt32();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
