// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: org/curioswitch/cafemap/api/cafe-map-service.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 Org.Curioswitch.Cafemap.Api {

  /// <summary>Holder for reflection information generated from org/curioswitch/cafemap/api/cafe-map-service.proto</summary>
  public static partial class CafeMapServiceReflection {

    #region Descriptor
    /// <summary>File descriptor for org/curioswitch/cafemap/api/cafe-map-service.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static CafeMapServiceReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CjJvcmcvY3VyaW9zd2l0Y2gvY2FmZW1hcC9hcGkvY2FmZS1tYXAtc2Vydmlj",
            "ZS5wcm90bxIbb3JnLmN1cmlvc3dpdGNoLmNhZmVtYXAuYXBpIi0KBkxhdExu",
            "ZxIQCghsYXRpdHVkZRgBIAEoARIRCglsb25naXR1ZGUYAiABKAEigAEKDExh",
            "dExuZ0JvdW5kcxI3Cgpzb3V0aF93ZXN0GAEgASgLMiMub3JnLmN1cmlvc3dp",
            "dGNoLmNhZmVtYXAuYXBpLkxhdExuZxI3Cgpub3J0aF9lYXN0GAIgASgLMiMu",
            "b3JnLmN1cmlvc3dpdGNoLmNhZmVtYXAuYXBpLkxhdExuZyJPChBHZXRQbGFj",
            "ZXNSZXF1ZXN0EjsKCHZpZXdwb3J0GAEgASgLMikub3JnLmN1cmlvc3dpdGNo",
            "LmNhZmVtYXAuYXBpLkxhdExuZ0JvdW5kcyKHAQoFUGxhY2USCgoCaWQYASAB",
            "KAkSNQoIcG9zaXRpb24YAiABKAsyIy5vcmcuY3VyaW9zd2l0Y2guY2FmZW1h",
            "cC5hcGkuTGF0TG5nEgwKBG5hbWUYAyABKAkSFAoMaW5zdGFncmFtX2lkGAQg",
            "ASgJEhcKD2dvb2dsZV9wbGFjZV9pZBgFIAEoCSJGChFHZXRQbGFjZXNSZXNw",
            "b25zZRIxCgVwbGFjZRgBIAMoCzIiLm9yZy5jdXJpb3N3aXRjaC5jYWZlbWFw",
            "LmFwaS5QbGFjZSIdCg9HZXRQbGFjZVJlcXVlc3QSCgoCaWQYASABKAkiRQoQ",
            "R2V0UGxhY2VSZXNwb25zZRIxCgVwbGFjZRgBIAEoCzIiLm9yZy5jdXJpb3N3",
            "aXRjaC5jYWZlbWFwLmFwaS5QbGFjZSLcAQoITGFuZG1hcmsSCgoCaWQYASAB",
            "KAkSFwoPZ29vZ2xlX3BsYWNlX2lkGAIgASgJEhIKCnMyX2NlbGxfaWQYAyAB",
            "KAQSOAoEdHlwZRgEIAEoDjIqLm9yZy5jdXJpb3N3aXRjaC5jYWZlbWFwLmFw",
            "aS5MYW5kbWFyay5UeXBlIl0KBFR5cGUSCwoHVU5LTk9XThAAEhAKDEJFQVVU",
            "WV9TQUxPThABEg8KC0dBU19TVEFUSU9OEAISCAoEUEFSSxADEg8KC1BPU1Rf",
            "T0ZGSUNFEAQSCgoGU0NIT09MEAUiUwoUTGlzdExhbmRtYXJrc1JlcXVlc3QS",
            "OwoIdmlld3BvcnQYASABKAsyKS5vcmcuY3VyaW9zd2l0Y2guY2FmZW1hcC5h",
            "cGkuTGF0TG5nQm91bmRzIlAKFUxpc3RMYW5kbWFya3NSZXNwb25zZRI3Cghs",
            "YW5kbWFyaxgBIAMoCzIlLm9yZy5jdXJpb3N3aXRjaC5jYWZlbWFwLmFwaS5M",
            "YW5kbWFyazLdAgoOQ2FmZU1hcFNlcnZpY2USagoJR2V0UGxhY2VzEi0ub3Jn",
            "LmN1cmlvc3dpdGNoLmNhZmVtYXAuYXBpLkdldFBsYWNlc1JlcXVlc3QaLi5v",
            "cmcuY3VyaW9zd2l0Y2guY2FmZW1hcC5hcGkuR2V0UGxhY2VzUmVzcG9uc2US",
            "ZwoIR2V0UGxhY2USLC5vcmcuY3VyaW9zd2l0Y2guY2FmZW1hcC5hcGkuR2V0",
            "UGxhY2VSZXF1ZXN0Gi0ub3JnLmN1cmlvc3dpdGNoLmNhZmVtYXAuYXBpLkdl",
            "dFBsYWNlUmVzcG9uc2USdgoNTGlzdExhbmRtYXJrcxIxLm9yZy5jdXJpb3N3",
            "aXRjaC5jYWZlbWFwLmFwaS5MaXN0TGFuZG1hcmtzUmVxdWVzdBoyLm9yZy5j",
            "dXJpb3N3aXRjaC5jYWZlbWFwLmFwaS5MaXN0TGFuZG1hcmtzUmVzcG9uc2VC",
            "Hwobb3JnLmN1cmlvc3dpdGNoLmNhZmVtYXAuYXBpUAFiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.LatLng), global::Org.Curioswitch.Cafemap.Api.LatLng.Parser, new[]{ "Latitude", "Longitude" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.LatLngBounds), global::Org.Curioswitch.Cafemap.Api.LatLngBounds.Parser, new[]{ "SouthWest", "NorthEast" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.GetPlacesRequest), global::Org.Curioswitch.Cafemap.Api.GetPlacesRequest.Parser, new[]{ "Viewport" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.Place), global::Org.Curioswitch.Cafemap.Api.Place.Parser, new[]{ "Id", "Position", "Name", "InstagramId", "GooglePlaceId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.GetPlacesResponse), global::Org.Curioswitch.Cafemap.Api.GetPlacesResponse.Parser, new[]{ "Place" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.GetPlaceRequest), global::Org.Curioswitch.Cafemap.Api.GetPlaceRequest.Parser, new[]{ "Id" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.GetPlaceResponse), global::Org.Curioswitch.Cafemap.Api.GetPlaceResponse.Parser, new[]{ "Place" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.Landmark), global::Org.Curioswitch.Cafemap.Api.Landmark.Parser, new[]{ "Id", "GooglePlaceId", "S2CellId", "Type" }, null, new[]{ typeof(global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.ListLandmarksRequest), global::Org.Curioswitch.Cafemap.Api.ListLandmarksRequest.Parser, new[]{ "Viewport" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Org.Curioswitch.Cafemap.Api.ListLandmarksResponse), global::Org.Curioswitch.Cafemap.Api.ListLandmarksResponse.Parser, new[]{ "Landmark" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// A LatLng is a point in geographical coordinates: latitude and longitude.
  /// </summary>
  public sealed partial class LatLng : pb::IMessage<LatLng> {
    private static readonly pb::MessageParser<LatLng> _parser = new pb::MessageParser<LatLng>(() => new LatLng());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LatLng> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[0]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LatLng(LatLng other) : this() {
      latitude_ = other.latitude_;
      longitude_ = other.longitude_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "latitude" field.</summary>
    public const int LatitudeFieldNumber = 1;
    private double latitude_;
    /// <summary>
    /// The latitude of a point, in degrees. Must be in the range [-90, 90].
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Latitude {
      get { return latitude_; }
      set {
        latitude_ = value;
      }
    }

    /// <summary>Field number for the "longitude" field.</summary>
    public const int LongitudeFieldNumber = 2;
    private double longitude_;
    /// <summary>
    /// The longitude of a point, in degrees. Must be in the range [-180, 180].
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public double Longitude {
      get { return longitude_; }
      set {
        longitude_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(LatLng other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Latitude, other.Latitude)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Longitude, other.Longitude)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Latitude != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Latitude);
      if (Longitude != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Longitude);
      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 (Latitude != 0D) {
        output.WriteRawTag(9);
        output.WriteDouble(Latitude);
      }
      if (Longitude != 0D) {
        output.WriteRawTag(17);
        output.WriteDouble(Longitude);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LatLng other) {
      if (other == null) {
        return;
      }
      if (other.Latitude != 0D) {
        Latitude = other.Latitude;
      }
      if (other.Longitude != 0D) {
        Longitude = other.Longitude;
      }
      _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: {
            Latitude = input.ReadDouble();
            break;
          }
          case 17: {
            Longitude = input.ReadDouble();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A rectangle in geographical coordinates, including one that crosses the 180 degrees longitudinal
  /// meridian.
  ///
  /// See: https://developers.google.com/maps/documentation/javascript/reference/coordinates#LatLngBounds
  /// </summary>
  public sealed partial class LatLngBounds : pb::IMessage<LatLngBounds> {
    private static readonly pb::MessageParser<LatLngBounds> _parser = new pb::MessageParser<LatLngBounds>(() => new LatLngBounds());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<LatLngBounds> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[1]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public LatLngBounds(LatLngBounds other) : this() {
      southWest_ = other.southWest_ != null ? other.southWest_.Clone() : null;
      northEast_ = other.northEast_ != null ? other.northEast_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "south_west" field.</summary>
    public const int SouthWestFieldNumber = 1;
    private global::Org.Curioswitch.Cafemap.Api.LatLng southWest_;
    /// <summary>
    /// The `LatLng` of the southwest corner of the bounding box.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.LatLng SouthWest {
      get { return southWest_; }
      set {
        southWest_ = value;
      }
    }

    /// <summary>Field number for the "north_east" field.</summary>
    public const int NorthEastFieldNumber = 2;
    private global::Org.Curioswitch.Cafemap.Api.LatLng northEast_;
    /// <summary>
    /// The `LatLng` of the northeast corner of the bounding box.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.LatLng NorthEast {
      get { return northEast_; }
      set {
        northEast_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (southWest_ != null) hash ^= SouthWest.GetHashCode();
      if (northEast_ != null) hash ^= NorthEast.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 (southWest_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(SouthWest);
      }
      if (northEast_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(NorthEast);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(LatLngBounds other) {
      if (other == null) {
        return;
      }
      if (other.southWest_ != null) {
        if (southWest_ == null) {
          SouthWest = new global::Org.Curioswitch.Cafemap.Api.LatLng();
        }
        SouthWest.MergeFrom(other.SouthWest);
      }
      if (other.northEast_ != null) {
        if (northEast_ == null) {
          NorthEast = new global::Org.Curioswitch.Cafemap.Api.LatLng();
        }
        NorthEast.MergeFrom(other.NorthEast);
      }
      _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 10: {
            if (southWest_ == null) {
              SouthWest = new global::Org.Curioswitch.Cafemap.Api.LatLng();
            }
            input.ReadMessage(SouthWest);
            break;
          }
          case 18: {
            if (northEast_ == null) {
              NorthEast = new global::Org.Curioswitch.Cafemap.Api.LatLng();
            }
            input.ReadMessage(NorthEast);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A request for the `GetPlaces` method.
  /// </summary>
  public sealed partial class GetPlacesRequest : pb::IMessage<GetPlacesRequest> {
    private static readonly pb::MessageParser<GetPlacesRequest> _parser = new pb::MessageParser<GetPlacesRequest>(() => new GetPlacesRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GetPlacesRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[2]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GetPlacesRequest(GetPlacesRequest other) : this() {
      viewport_ = other.viewport_ != null ? other.viewport_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "viewport" field.</summary>
    public const int ViewportFieldNumber = 1;
    private global::Org.Curioswitch.Cafemap.Api.LatLngBounds viewport_;
    /// <summary>
    /// The viewport to get places for. Only places falling inside the viewport will be returned.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.LatLngBounds Viewport {
      get { return viewport_; }
      set {
        viewport_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (viewport_ != null) hash ^= Viewport.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 (viewport_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Viewport);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetPlacesRequest other) {
      if (other == null) {
        return;
      }
      if (other.viewport_ != null) {
        if (viewport_ == null) {
          Viewport = new global::Org.Curioswitch.Cafemap.Api.LatLngBounds();
        }
        Viewport.MergeFrom(other.Viewport);
      }
      _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 10: {
            if (viewport_ == null) {
              Viewport = new global::Org.Curioswitch.Cafemap.Api.LatLngBounds();
            }
            input.ReadMessage(Viewport);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A place, typically rendered on a map.
  /// </summary>
  public sealed partial class Place : pb::IMessage<Place> {
    private static readonly pb::MessageParser<Place> _parser = new pb::MessageParser<Place>(() => new Place());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Place> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[3]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Place(Place other) : this() {
      id_ = other.id_;
      position_ = other.position_ != null ? other.position_.Clone() : null;
      name_ = other.name_;
      instagramId_ = other.instagramId_;
      googlePlaceId_ = other.googlePlaceId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private string id_ = "";
    /// <summary>
    /// The cafemap ID of this place.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Id {
      get { return id_; }
      set {
        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "position" field.</summary>
    public const int PositionFieldNumber = 2;
    private global::Org.Curioswitch.Cafemap.Api.LatLng position_;
    /// <summary>
    /// The position of the place.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.LatLng Position {
      get { return position_; }
      set {
        position_ = value;
      }
    }

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

    /// <summary>Field number for the "instagram_id" field.</summary>
    public const int InstagramIdFieldNumber = 4;
    private string instagramId_ = "";
    /// <summary>
    /// The location ID of this place on Instagram. Not set if this location was not found on
    /// Instagram.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string InstagramId {
      get { return instagramId_; }
      set {
        instagramId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "google_place_id" field.</summary>
    public const int GooglePlaceIdFieldNumber = 5;
    private string googlePlaceId_ = "";
    /// <summary>
    /// The place ID on Google Maps. Always set.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GooglePlaceId {
      get { return googlePlaceId_; }
      set {
        googlePlaceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Place other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (!object.Equals(Position, other.Position)) return false;
      if (Name != other.Name) return false;
      if (InstagramId != other.InstagramId) return false;
      if (GooglePlaceId != other.GooglePlaceId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Id.Length != 0) hash ^= Id.GetHashCode();
      if (position_ != null) hash ^= Position.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (InstagramId.Length != 0) hash ^= InstagramId.GetHashCode();
      if (GooglePlaceId.Length != 0) hash ^= GooglePlaceId.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 (Id.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Id);
      }
      if (position_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Position);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Name);
      }
      if (InstagramId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(InstagramId);
      }
      if (GooglePlaceId.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(GooglePlaceId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Id.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
      }
      if (position_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Position);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (InstagramId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstagramId);
      }
      if (GooglePlaceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GooglePlaceId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Place other) {
      if (other == null) {
        return;
      }
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      if (other.position_ != null) {
        if (position_ == null) {
          Position = new global::Org.Curioswitch.Cafemap.Api.LatLng();
        }
        Position.MergeFrom(other.Position);
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.InstagramId.Length != 0) {
        InstagramId = other.InstagramId;
      }
      if (other.GooglePlaceId.Length != 0) {
        GooglePlaceId = other.GooglePlaceId;
      }
      _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 10: {
            Id = input.ReadString();
            break;
          }
          case 18: {
            if (position_ == null) {
              Position = new global::Org.Curioswitch.Cafemap.Api.LatLng();
            }
            input.ReadMessage(Position);
            break;
          }
          case 26: {
            Name = input.ReadString();
            break;
          }
          case 34: {
            InstagramId = input.ReadString();
            break;
          }
          case 42: {
            GooglePlaceId = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A response for the `GetPlaces` method.
  /// </summary>
  public sealed partial class GetPlacesResponse : pb::IMessage<GetPlacesResponse> {
    private static readonly pb::MessageParser<GetPlacesResponse> _parser = new pb::MessageParser<GetPlacesResponse>(() => new GetPlacesResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GetPlacesResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[4]; }
    }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "place" field.</summary>
    public const int PlaceFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Org.Curioswitch.Cafemap.Api.Place> _repeated_place_codec
        = pb::FieldCodec.ForMessage(10, global::Org.Curioswitch.Cafemap.Api.Place.Parser);
    private readonly pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Place> place_ = new pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Place>();
    /// <summary>
    /// Places corresponding to `GetPlacesRequest`.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Place> Place {
      get { return place_; }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= place_.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) {
      place_.WriteTo(output, _repeated_place_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += place_.CalculateSize(_repeated_place_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetPlacesResponse other) {
      if (other == null) {
        return;
      }
      place_.Add(other.place_);
      _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 10: {
            place_.AddEntriesFrom(input, _repeated_place_codec);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A request for the `GetPlace` method.
  /// </summary>
  public sealed partial class GetPlaceRequest : pb::IMessage<GetPlaceRequest> {
    private static readonly pb::MessageParser<GetPlaceRequest> _parser = new pb::MessageParser<GetPlaceRequest>(() => new GetPlaceRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GetPlaceRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[5]; }
    }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private string id_ = "";
    /// <summary>
    /// The cafemap ID of the place.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Id {
      get { return id_; }
      set {
        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Id.Length != 0) hash ^= Id.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 (Id.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Id);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetPlaceRequest other) {
      if (other == null) {
        return;
      }
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      _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 10: {
            Id = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A response for the `GetPlace` method.
  /// </summary>
  public sealed partial class GetPlaceResponse : pb::IMessage<GetPlaceResponse> {
    private static readonly pb::MessageParser<GetPlaceResponse> _parser = new pb::MessageParser<GetPlaceResponse>(() => new GetPlaceResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<GetPlaceResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[6]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GetPlaceResponse(GetPlaceResponse other) : this() {
      place_ = other.place_ != null ? other.place_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "place" field.</summary>
    public const int PlaceFieldNumber = 1;
    private global::Org.Curioswitch.Cafemap.Api.Place place_;
    /// <summary>
    /// The place corresponding to `GetPlaceRequest`.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.Place Place {
      get { return place_; }
      set {
        place_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (place_ != null) hash ^= Place.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 (place_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Place);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetPlaceResponse other) {
      if (other == null) {
        return;
      }
      if (other.place_ != null) {
        if (place_ == null) {
          Place = new global::Org.Curioswitch.Cafemap.Api.Place();
        }
        Place.MergeFrom(other.Place);
      }
      _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 10: {
            if (place_ == null) {
              Place = new global::Org.Curioswitch.Cafemap.Api.Place();
            }
            input.ReadMessage(Place);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A landmark, which is only shown on the map for reference but is not actually the target of
  /// discovery, as a `Place` would be.
  /// </summary>
  public sealed partial class Landmark : pb::IMessage<Landmark> {
    private static readonly pb::MessageParser<Landmark> _parser = new pb::MessageParser<Landmark>(() => new Landmark());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Landmark> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[7]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Landmark(Landmark other) : this() {
      id_ = other.id_;
      googlePlaceId_ = other.googlePlaceId_;
      s2CellId_ = other.s2CellId_;
      type_ = other.type_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private string id_ = "";
    /// <summary>
    /// The ID of the landmark.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Id {
      get { return id_; }
      set {
        id_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "google_place_id" field.</summary>
    public const int GooglePlaceIdFieldNumber = 2;
    private string googlePlaceId_ = "";
    /// <summary>
    /// The Google Places API ID of the landmark. Not necessarily constant.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GooglePlaceId {
      get { return googlePlaceId_; }
      set {
        googlePlaceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "s2_cell_id" field.</summary>
    public const int S2CellIdFieldNumber = 3;
    private ulong s2CellId_;
    /// <summary>
    /// The location of this landmark, as a S2 cell ID.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ulong S2CellId {
      get { return s2CellId_; }
      set {
        s2CellId_ = value;
      }
    }

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 4;
    private global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type type_ = global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type.Unknown;
    /// <summary>
    /// The type of this landmark.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type Type {
      get { return type_; }
      set {
        type_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Id.Length != 0) hash ^= Id.GetHashCode();
      if (GooglePlaceId.Length != 0) hash ^= GooglePlaceId.GetHashCode();
      if (S2CellId != 0UL) hash ^= S2CellId.GetHashCode();
      if (Type != global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type.Unknown) hash ^= Type.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 (Id.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Id);
      }
      if (GooglePlaceId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(GooglePlaceId);
      }
      if (S2CellId != 0UL) {
        output.WriteRawTag(24);
        output.WriteUInt64(S2CellId);
      }
      if (Type != global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type.Unknown) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Type);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Id.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Id);
      }
      if (GooglePlaceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GooglePlaceId);
      }
      if (S2CellId != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(S2CellId);
      }
      if (Type != global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type.Unknown) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Landmark other) {
      if (other == null) {
        return;
      }
      if (other.Id.Length != 0) {
        Id = other.Id;
      }
      if (other.GooglePlaceId.Length != 0) {
        GooglePlaceId = other.GooglePlaceId;
      }
      if (other.S2CellId != 0UL) {
        S2CellId = other.S2CellId;
      }
      if (other.Type != global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type.Unknown) {
        Type = other.Type;
      }
      _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 10: {
            Id = input.ReadString();
            break;
          }
          case 18: {
            GooglePlaceId = input.ReadString();
            break;
          }
          case 24: {
            S2CellId = input.ReadUInt64();
            break;
          }
          case 32: {
            Type = (global::Org.Curioswitch.Cafemap.Api.Landmark.Types.Type) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the Landmark message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      /// <summary>
      /// A landmark type, for determining the icon to display for it.
      /// </summary>
      public enum Type {
        /// <summary>
        /// Unknown type, will be ignored.
        /// </summary>
        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
        /// <summary>
        /// A beauty salon (e.g., hair salon).
        /// </summary>
        [pbr::OriginalName("BEAUTY_SALON")] BeautySalon = 1,
        /// <summary>
        /// A gas station.
        /// </summary>
        [pbr::OriginalName("GAS_STATION")] GasStation = 2,
        /// <summary>
        /// A park
        /// </summary>
        [pbr::OriginalName("PARK")] Park = 3,
        /// <summary>
        /// A post office.
        /// </summary>
        [pbr::OriginalName("POST_OFFICE")] PostOffice = 4,
        /// <summary>
        /// A school.
        /// </summary>
        [pbr::OriginalName("SCHOOL")] School = 5,
      }

    }
    #endregion

  }

  /// <summary>
  /// A request for the `ListLandmarks` method.
  /// </summary>
  public sealed partial class ListLandmarksRequest : pb::IMessage<ListLandmarksRequest> {
    private static readonly pb::MessageParser<ListLandmarksRequest> _parser = new pb::MessageParser<ListLandmarksRequest>(() => new ListLandmarksRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ListLandmarksRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[8]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ListLandmarksRequest(ListLandmarksRequest other) : this() {
      viewport_ = other.viewport_ != null ? other.viewport_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "viewport" field.</summary>
    public const int ViewportFieldNumber = 1;
    private global::Org.Curioswitch.Cafemap.Api.LatLngBounds viewport_;
    /// <summary>
    /// The viewport to return landmarks for.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Org.Curioswitch.Cafemap.Api.LatLngBounds Viewport {
      get { return viewport_; }
      set {
        viewport_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (viewport_ != null) hash ^= Viewport.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 (viewport_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Viewport);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ListLandmarksRequest other) {
      if (other == null) {
        return;
      }
      if (other.viewport_ != null) {
        if (viewport_ == null) {
          Viewport = new global::Org.Curioswitch.Cafemap.Api.LatLngBounds();
        }
        Viewport.MergeFrom(other.Viewport);
      }
      _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 10: {
            if (viewport_ == null) {
              Viewport = new global::Org.Curioswitch.Cafemap.Api.LatLngBounds();
            }
            input.ReadMessage(Viewport);
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// A response for the `ListLandmarks` method.
  /// </summary>
  public sealed partial class ListLandmarksResponse : pb::IMessage<ListLandmarksResponse> {
    private static readonly pb::MessageParser<ListLandmarksResponse> _parser = new pb::MessageParser<ListLandmarksResponse>(() => new ListLandmarksResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ListLandmarksResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Org.Curioswitch.Cafemap.Api.CafeMapServiceReflection.Descriptor.MessageTypes[9]; }
    }

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

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

    partial void OnConstruction();

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

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

    /// <summary>Field number for the "landmark" field.</summary>
    public const int LandmarkFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Org.Curioswitch.Cafemap.Api.Landmark> _repeated_landmark_codec
        = pb::FieldCodec.ForMessage(10, global::Org.Curioswitch.Cafemap.Api.Landmark.Parser);
    private readonly pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Landmark> landmark_ = new pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Landmark>();
    /// <summary>
    /// The landmarks found in the requested viewport.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Org.Curioswitch.Cafemap.Api.Landmark> Landmark {
      get { return landmark_; }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= landmark_.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) {
      landmark_.WriteTo(output, _repeated_landmark_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += landmark_.CalculateSize(_repeated_landmark_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ListLandmarksResponse other) {
      if (other == null) {
        return;
      }
      landmark_.Add(other.landmark_);
      _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 10: {
            landmark_.AddEntriesFrom(input, _repeated_landmark_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code

{'avg_line_length': 35.12626832018039, 'max_line_length': 287, 'alphanum_fraction': 0.6581667041114356, 'licenses': ['MIT'], 'repository_name': 'chokoswitch/curiostack', 'path': 'cafe-map/client/unity/Assets/Generated/Proto/CafeMapService.cs', 'size': 62314, 'lang': 'C#'}