text:
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Cloud.Dialogflow.Cx.V3 {

  /// Holder for reflection information generated from google/cloud/dialogflow/cx/v3/page.proto
  public static partial class PageReflection {

    #region Descriptor
    /// File descriptor for google/cloud/dialogflow/cx/v3/page.proto
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static PageReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cihnb29nbGUvY2xvdWQvZGlhbG9nZmxvdy9jeC92My9wYWdlLnByb3RvEh1n",
            "b29nbGUuY2xvdWQuZGlhbG9nZmxvdy5jeC52MxocZ29vZ2xlL2FwaS9hbm5v",
            "dGF0aW9ucy5wcm90bxoXZ29vZ2xlL2FwaS9jbGllbnQucHJvdG8aH2dvb2ds",
            "ZS9hcGkvZmllbGRfYmVoYXZpb3IucHJvdG8aGWdvb2dsZS9hcGkvcmVzb3Vy",
            "Y2UucHJvdG8aL2dvb2dsZS9jbG91ZC9kaWFsb2dmbG93L2N4L3YzL2Z1bGZp",
            "bGxtZW50LnByb3RvGhtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8aIGdv",
            "b2dsZS9wcm90b2J1Zi9maWVsZF9tYXNrLnByb3RvGhxnb29nbGUvcHJvdG9i",
            "dWYvc3RydWN0LnByb3RvIoYECgRQYWdlEgwKBG5hbWUYASABKAkSGQoMZGlz",
            "cGxheV9uYW1lGAIgASgJQgPgQQISRQoRZW50cnlfZnVsZmlsbG1lbnQYByAB",
            "KAsyKi5nb29nbGUuY2xvdWQuZGlhbG9nZmxvdy5jeC52My5GdWxmaWxsbWVu",
            "dBIxCgRmb3JtGAQgASgLMiMuZ29vZ2xlLmNsb3VkLmRpYWxvZ2Zsb3cuY3gu",
            "djMuRm9ybRJUChd0cmFuc2l0aW9uX3JvdXRlX2dyb3VwcxgLIAMoCUIz+kEw",
            "Ci5kaWFsb2dmbG93Lmdvb2dsZWFwaXMuY29tL1RyYW5zaXRpb25Sb3V0ZUdy",
            "b3VwEkkKEXRyYW5zaXRpb25fcm91dGVzGAkgAygLMi4uZ29vZ2xlLmNsb3Vk",
            "LmRpYWxvZ2Zsb3cuY3gudjMuVHJhbnNpdGlvblJvdXRlEkMKDmV2ZW50X2hh",
            "bmRsZXJzGAogAygLMisuZ29vZ2xlLmNsb3VkLmRpYWxvZ2Zsb3cuY3gudjMu",
            "RXZlbnRIYW5kbGVyOnXqQXIKHmRpYWxvZ2Zsb3cuZ29vZ2xlYXBpcy5jb20v",
            "UGFnZRJQcHJvamVjdHMve3Byb2plY3R9L2xvY2F0aW9ucy97bG9jYXRpb259",
            "L2FnZW50cy97YWdlbnR9L2Zsb3dzL3tmbG93fS9wYWdlcy97cGFnZX0iowQK",
            "BEZvcm0SQQoKcGFyYW1ldGVycxgBIAMoCzItLmdvb2dsZS5jbG91ZC5kaWFs",
            "b2dmbG93LmN4LnYzLkZvcm0uUGFyYW1ldGVyGtcDCglQYXJhbWV0ZXISGQoM",
            "ZGlzcGxheV9uYW1lGAEgASgJQgPgQQISEAoIcmVxdWlyZWQYAiABKAgSQQoL",
            "ZW50aXR5X3R5cGUYAyABKAlCLOBBAvpBJgokZGlhbG9nZmxvdy5nb29nbGVh",
            "cGlzLmNvbS9FbnRpdHlUeXBlEg8KB2lzX2xpc3QYBCABKAgSVgoNZmlsbF9i",
            "ZWhhdmlvchgHIAEoCzI6Lmdvb2dsZS5jbG91ZC5kaWFsb2dmbG93LmN4LnYz",
            "LkZvcm0uUGFyYW1ldGVyLkZpbGxCZWhhdmlvckID4EECEi0KDWRlZmF1bHRf",
            "dmFsdWUYCSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSDgoGcmVkYWN0",
            "GAsgASgIGrEBCgxGaWxsQmVoYXZpb3ISUwoaaW5pdGlhbF9wcm9tcHRfZnVs",
            "ZmlsbG1lbnQYAyABKAsyKi5nb29nbGUuY2xvdWQuZGlhbG9nZmxvdy5jeC52",
            "My5GdWxmaWxsbWVudEID4EECEkwKF3JlcHJvbXB0X2V2ZW50X2hhbmRsZXJz",
            "GAUgAygLMisuZ29vZ2xlLmNsb3VkLmRpYWxvZ2Zsb3cuY3gudjMuRXZlbnRI",
            "YW5kbGVyIoACCgxFdmVudEhhbmRsZXISEQoEbmFtZRgGIAEoCUID4EEDEhIK",
            "BWV2ZW50GAQgASgJQgPgQQISRwoTdHJpZ2dlcl9mdWxmaWxsbWVudBgFIAEo",
            "CzIqLmdvb2dsZS5jbG91ZC5kaWFsb2dmbG93LmN4LnYzLkZ1bGZpbGxtZW50",
            "EjoKC3RhcmdldF9wYWdlGAIgASgJQiP6QSAKHmRpYWxvZ2Zsb3cuZ29vZ2xl",
            "YXBpcy5jb20vUGFnZUgAEjoKC3RhcmdldF9mbG93GAMgASgJQiP6QSAKHmRp",
            "YWxvZ2Zsb3cuZ29vZ2xlYXBpcy5jb20vRmxvd0gAQggKBnRhcmdldCK5AgoP",
            "VHJhbnNpdGlvblJvdXRlEhEKBG5hbWUYBiABKAlCA+BBAxI1CgZpbnRlbnQY",
            "ASABKAlCJfpBIgogZGlhbG9nZmxvdy5nb29nbGVhcGlzLmNvbS9JbnRlbnQS",
            "EQoJY29uZGl0aW9uGAIgASgJEkcKE3RyaWdnZXJfZnVsZmlsbG1lbnQYAyAB",
            "KAsyKi5nb29nbGUuY2xvdWQuZGlhbG9nZmxvdy5jeC52My5GdWxmaWxsbWVu",
            "dBI6Cgt0YXJnZXRfcGFnZRgEIAEoCUIj+kEgCh5kaWFsb2dmbG93Lmdvb2ds",
            "ZWFwaXMuY29tL1BhZ2VIABI6Cgt0YXJnZXRfZmxvdxgFIAEoCUIj+kEgCh5k",
            "aWFsb2dmbG93Lmdvb2dsZWFwaXMuY29tL0Zsb3dIAEIICgZ0YXJnZXQiiAEK",
            "EExpc3RQYWdlc1JlcXVlc3QSNgoGcGFyZW50GAEgASgJQibgQQL6QSASHmRp",
            "YWxvZ2Zsb3cuZ29vZ2xlYXBpcy5jb20vUGFnZRIVCg1sYW5ndWFnZV9jb2Rl",
            "GAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJ",
            "ImAKEUxpc3RQYWdlc1Jlc3BvbnNlEjIKBXBhZ2VzGAEgAygLMiMuZ29vZ2xl",
            "LmNsb3VkLmRpYWxvZ2Zsb3cuY3gudjMuUGFnZRIXCg9uZXh0X3BhZ2VfdG9r",
            "ZW4YAiABKAkiXQoOR2V0UGFnZVJlcXVlc3QSNAoEbmFtZRgBIAEoCUIm4EEC",
            "+kEgCh5kaWFsb2dmbG93Lmdvb2dsZWFwaXMuY29tL1BhZ2USFQoNbGFuZ3Vh",
            "Z2VfY29kZRgCIAEoCSKaAQoRQ3JlYXRlUGFnZVJlcXVlc3QSNgoGcGFyZW50",
            "GAEgASgJQibgQQL6QSASHmRpYWxvZ2Zsb3cuZ29vZ2xlYXBpcy5jb20vUGFn",
            "ZRI2CgRwYWdlGAIgASgLMiMuZ29vZ2xlLmNsb3VkLmRpYWxvZ2Zsb3cuY3gu",
            "djMuUGFnZUID4EECEhUKDWxhbmd1YWdlX2NvZGUYAyABKAkikwEKEVVwZGF0",
            "ZVBhZ2VSZXF1ZXN0EjYKBHBhZ2UYASABKAsyIy5nb29nbGUuY2xvdWQuZGlh",
            "bG9nZmxvdy5jeC52My5QYWdlQgPgQQISFQoNbGFuZ3VhZ2VfY29kZRgCIAEo",
            "CRIvCgt1cGRhdGVfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVs",
            "ZE1hc2siWAoRRGVsZXRlUGFnZVJlcXVlc3QSNAoEbmFtZRgBIAEoCUIm4EEC",
            "+kEgCh5kaWFsb2dmbG93Lmdvb2dsZWFwaXMuY29tL1BhZ2USDQoFZm9yY2UY",
            "AiABKAgylAgKBVBhZ2VzErsBCglMaXN0UGFnZXMSLy5nb29nbGUuY2xvdWQu",
            "ZGlhbG9nZmxvdy5jeC52My5MaXN0UGFnZXNSZXF1ZXN0GjAuZ29vZ2xlLmNs",
            "b3VkLmRpYWxvZ2Zsb3cuY3gudjMuTGlzdFBhZ2VzUmVzcG9uc2UiS4LT5JMC",
            "PBI6L3YzL3twYXJlbnQ9cHJvamVjdHMvKi9sb2NhdGlvbnMvKi9hZ2VudHMv",
            "Ki9mbG93cy8qfS9wYWdlc9pBBnBhcmVudBKoAQoHR2V0UGFnZRItLmdvb2ds",
            "ZS5jbG91ZC5kaWFsb2dmbG93LmN4LnYzLkdldFBhZ2VSZXF1ZXN0GiMuZ29v",
            "Z2xlLmNsb3VkLmRpYWxvZ2Zsb3cuY3gudjMuUGFnZSJJgtPkkwI8EjovdjMv",
            "e25hbWU9cHJvamVjdHMvKi9sb2NhdGlvbnMvKi9hZ2VudHMvKi9mbG93cy8q",
            "L3BhZ2VzLyp92kEEbmFtZRK7AQoKQ3JlYXRlUGFnZRIwLmdvb2dsZS5jbG91",
            "ZC5kaWFsb2dmbG93LmN4LnYzLkNyZWF0ZVBhZ2VSZXF1ZXN0GiMuZ29vZ2xl",
            "LmNsb3VkLmRpYWxvZ2Zsb3cuY3gudjMuUGFnZSJWgtPkkwJCIjovdjMve3Bh",
            "cmVudD1wcm9qZWN0cy8qL2xvY2F0aW9ucy8qL2FnZW50cy8qL2Zsb3dzLyp9",
            "L3BhZ2VzOgRwYWdl2kELcGFyZW50LHBhZ2USxQEKClVwZGF0ZVBhZ2USMC5n",
            "b29nbGUuY2xvdWQuZGlhbG9nZmxvdy5jeC52My5VcGRhdGVQYWdlUmVxdWVz",
            "dBojLmdvb2dsZS5jbG91ZC5kaWFsb2dmbG93LmN4LnYzLlBhZ2UiYILT5JMC",
            "RzI/L3YzL3twYWdlLm5hbWU9cHJvamVjdHMvKi9sb2NhdGlvbnMvKi9hZ2Vu",
            "dHMvKi9mbG93cy8qL3BhZ2VzLyp9OgRwYWdl2kEQcGFnZSx1cGRhdGVfbWFz",
            "axKhAQoKRGVsZXRlUGFnZRIwLmdvb2dsZS5jbG91ZC5kaWFsb2dmbG93LmN4",
            "LnYzLkRlbGV0ZVBhZ2VSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5",
            "IkmC0+STAjwqOi92My97bmFtZT1wcm9qZWN0cy8qL2xvY2F0aW9ucy8qL2Fn",
            "ZW50cy8qL2Zsb3dzLyovcGFnZXMvKn3aQQRuYW1lGnjKQRlkaWFsb2dmbG93",
            "Lmdvb2dsZWFwaXMuY29t0kFZaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20v",
            "YXV0aC9jbG91ZC1wbGF0Zm9ybSxodHRwczovL3d3dy5nb29nbGVhcGlzLmNv",
            "bS9hdXRoL2RpYWxvZ2Zsb3dCvQEKIWNvbS5nb29nbGUuY2xvdWQuZGlhbG9n",
            "Zmxvdy5jeC52M0IJUGFnZVByb3RvUAFaP2dvb2dsZS5nb2xhbmcub3JnL2dl",
            "bnByb3RvL2dvb2dsZWFwaXMvY2xvdWQvZGlhbG9nZmxvdy9jeC92MztjePgB",
            "AaICAkRGqgIdR29vZ2xlLkNsb3VkLkRpYWxvZ2Zsb3cuQ3guVjPqAiFHb29n",
            "bGU6OkNsb3VkOjpEaWFsb2dmbG93OjpDWDo6VjNiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Api.AnnotationsReflection.Descriptor, global::Google.Api.ClientReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Google.Api.ResourceReflection.Descriptor, global::Google.Cloud.Dialogflow.Cx.V3.FulfillmentReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.Page), global::Google.Cloud.Dialogflow.Cx.V3.Page.Parser, new[]{ "Name", "DisplayName", "EntryFulfillment", "Form", "TransitionRouteGroups", "TransitionRoutes", "EventHandlers" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.Form), global::Google.Cloud.Dialogflow.Cx.V3.Form.Parser, new[]{ "Parameters" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter), global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Parser, new[]{ "DisplayName", "Required", "EntityType", "IsList", "FillBehavior", "DefaultValue", "Redact" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior), global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior.Parser, new[]{ "InitialPromptFulfillment", "RepromptEventHandlers" }, null, null, null, null)})}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.EventHandler), global::Google.Cloud.Dialogflow.Cx.V3.EventHandler.Parser, new[]{ "Name", "Event", "TriggerFulfillment", "TargetPage", "TargetFlow" }, new[]{ "Target" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute), global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute.Parser, new[]{ "Name", "Intent", "Condition", "TriggerFulfillment", "TargetPage", "TargetFlow" }, new[]{ "Target" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.ListPagesRequest), global::Google.Cloud.Dialogflow.Cx.V3.ListPagesRequest.Parser, new[]{ "Parent", "LanguageCode", "PageSize", "PageToken" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.ListPagesResponse), global::Google.Cloud.Dialogflow.Cx.V3.ListPagesResponse.Parser, new[]{ "Pages", "NextPageToken" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.GetPageRequest), global::Google.Cloud.Dialogflow.Cx.V3.GetPageRequest.Parser, new[]{ "Name", "LanguageCode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.CreatePageRequest), global::Google.Cloud.Dialogflow.Cx.V3.CreatePageRequest.Parser, new[]{ "Parent", "Page", "LanguageCode" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.UpdatePageRequest), global::Google.Cloud.Dialogflow.Cx.V3.UpdatePageRequest.Parser, new[]{ "Page", "LanguageCode", "UpdateMask" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Google.Cloud.Dialogflow.Cx.V3.DeletePageRequest), global::Google.Cloud.Dialogflow.Cx.V3.DeletePageRequest.Parser, new[]{ "Name", "Force" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  ///
  /// A Dialogflow CX conversation (session) can be described and visualized as a
  /// state machine. The states of a CX session are represented by pages.
  ///
  /// For each flow, you define many pages, where your combined pages can handle a
  /// complete conversation on the topics the flow is designed for. At any given
  /// moment, exactly one page is the current page, the current page is considered
  /// active, and the flow associated with that page is considered active. Every
  /// flow has a special start page. When a flow initially becomes active, the
  /// start page page becomes the current page. For each conversational turn, the
  /// current page will either stay the same or transition to another page.
  ///
  /// You configure each page to collect information from the end-user that is
  /// relevant for the conversational state represented by the page.
  ///
  /// For more information, see the
  /// [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).
  ///
  public sealed partial class Page : pb::IMessage<Page>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Page> _parser = new pb::MessageParser<Page>(() => new Page());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Page> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Page() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Page(Page other) : this() {
      name_ = other.name_;
      displayName_ = other.displayName_;
      entryFulfillment_ = other.entryFulfillment_ != null ? other.entryFulfillment_.Clone() : null;
      form_ = other.form_ != null ? other.form_.Clone() : null;
      transitionRouteGroups_ = other.transitionRouteGroups_.Clone();
      transitionRoutes_ = other.transitionRoutes_.Clone();
      eventHandlers_ = other.eventHandlers_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Page Clone() {
      return new Page(this);
    }

    /// Field number for the "name" field.
    public const int NameFieldNumber = 1;
    private string name_ = "";
    ///
    /// The unique identifier of the page.
    /// Required for the [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage] method. [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage]
    /// populates the name automatically.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>/pages/<Page ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "display_name" field.
    public const int DisplayNameFieldNumber = 2;
    private string displayName_ = "";
    ///
    /// Required. The human-readable name of the page, unique within the flow.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DisplayName {
      get { return displayName_; }
      set {
        displayName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "entry_fulfillment" field.
    public const int EntryFulfillmentFieldNumber = 7;
    private global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment entryFulfillment_;
    ///
    /// The fulfillment to call when the session is entering the page.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment EntryFulfillment {
      get { return entryFulfillment_; }
      set {
        entryFulfillment_ = value;
      }
    }

    /// Field number for the "form" field.
    public const int FormFieldNumber = 4;
    private global::Google.Cloud.Dialogflow.Cx.V3.Form form_;
    ///
    /// The form associated with the page, used for collecting parameters
    /// relevant to the page.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Form Form {
      get { return form_; }
      set {
        form_ = value;
      }
    }

    /// Field number for the "transition_route_groups" field.
    public const int TransitionRouteGroupsFieldNumber = 11;
    private static readonly pb::FieldCodec<string> _repeated_transitionRouteGroups_codec
        = pb::FieldCodec.ForString(90);
    private readonly pbc::RepeatedField<string> transitionRouteGroups_ = new pbc::RepeatedField<string>();
    ///
    /// Ordered list of [`TransitionRouteGroups`][google.cloud.dialogflow.cx.v3.TransitionRouteGroup] associated
    /// with the page. Transition route groups must be unique within a page.
    ///
    /// *   If multiple transition routes within a page scope refer to the same
    ///     intent, then the precedence order is: page's transition route -> page's
    ///     transition route group -> flow's transition routes.
    ///
    /// *   If multiple transition route groups within a page contain the same
    ///     intent, then the first group in the ordered list takes precedence.
    ///
    /// Format:`projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>/transitionRouteGroups/<TransitionRouteGroup ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> TransitionRouteGroups {
      get { return transitionRouteGroups_; }
    }

    /// Field number for the "transition_routes" field.
    public const int TransitionRoutesFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute> _repeated_transitionRoutes_codec
        = pb::FieldCodec.ForMessage(74, global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute.Parser);
    private readonly pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute> transitionRoutes_ = new pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute>();
    ///
    /// A list of transitions for the transition rules of this page.
    /// They route the conversation to another page in the same flow, or another
    /// flow.
    ///
    /// When we are in a certain page, the TransitionRoutes are evalauted in the
    /// following order:
    ///
    /// *   TransitionRoutes defined in the page with intent specified.
    /// *   TransitionRoutes defined in the
    ///     [transition route groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups] with intent
    ///     specified.
    /// *   TransitionRoutes defined in flow with intent specified.
    /// *   TransitionRoutes defined in the
    ///     [transition route groups][google.cloud.dialogflow.cx.v3.Flow.transition_route_groups] with intent
    ///     specified.
    /// *   TransitionRoutes defined in the page with only condition specified.
    /// *   TransitionRoutes defined in the
    ///     [transition route groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups] with only
    ///     condition specified.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.TransitionRoute> TransitionRoutes {
      get { return transitionRoutes_; }
    }

    /// Field number for the "event_handlers" field.
    public const int EventHandlersFieldNumber = 10;
    private static readonly pb::FieldCodec<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> _repeated_eventHandlers_codec
        = pb::FieldCodec.ForMessage(82, global::Google.Cloud.Dialogflow.Cx.V3.EventHandler.Parser);
    private readonly pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> eventHandlers_ = new pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler>();
    ///
    /// Handlers associated with the page to handle events such as webhook errors,
    /// no match or no input.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> EventHandlers {
      get { return eventHandlers_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Page);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Page other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (DisplayName != other.DisplayName) return false;
      if (!object.Equals(EntryFulfillment, other.EntryFulfillment)) return false;
      if (!object.Equals(Form, other.Form)) return false;
      if(!transitionRouteGroups_.Equals(other.transitionRouteGroups_)) return false;
      if(!transitionRoutes_.Equals(other.transitionRoutes_)) return false;
      if(!eventHandlers_.Equals(other.eventHandlers_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (DisplayName.Length != 0) hash ^= DisplayName.GetHashCode();
      if (entryFulfillment_ != null) hash ^= EntryFulfillment.GetHashCode();
      if (form_ != null) hash ^= Form.GetHashCode();
      hash ^= transitionRouteGroups_.GetHashCode();
      hash ^= transitionRoutes_.GetHashCode();
      hash ^= eventHandlers_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (DisplayName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(DisplayName);
      }
      if (form_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Form);
      }
      if (entryFulfillment_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(EntryFulfillment);
      }
      transitionRoutes_.WriteTo(output, _repeated_transitionRoutes_codec);
      eventHandlers_.WriteTo(output, _repeated_eventHandlers_codec);
      transitionRouteGroups_.WriteTo(output, _repeated_transitionRouteGroups_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (DisplayName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(DisplayName);
      }
      if (form_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Form);
      }
      if (entryFulfillment_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(EntryFulfillment);
      }
      transitionRoutes_.WriteTo(ref output, _repeated_transitionRoutes_codec);
      eventHandlers_.WriteTo(ref output, _repeated_eventHandlers_codec);
      transitionRouteGroups_.WriteTo(ref output, _repeated_transitionRouteGroups_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (DisplayName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DisplayName);
      }
      if (entryFulfillment_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EntryFulfillment);
      }
      if (form_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Form);
      }
      size += transitionRouteGroups_.CalculateSize(_repeated_transitionRouteGroups_codec);
      size += transitionRoutes_.CalculateSize(_repeated_transitionRoutes_codec);
      size += eventHandlers_.CalculateSize(_repeated_eventHandlers_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Page other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.DisplayName.Length != 0) {
        DisplayName = other.DisplayName;
      }
      if (other.entryFulfillment_ != null) {
        if (entryFulfillment_ == null) {
          EntryFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
        }
        EntryFulfillment.MergeFrom(other.EntryFulfillment);
      }
      if (other.form_ != null) {
        if (form_ == null) {
          Form = new global::Google.Cloud.Dialogflow.Cx.V3.Form();
        }
        Form.MergeFrom(other.Form);
      }
      transitionRouteGroups_.Add(other.transitionRouteGroups_);
      transitionRoutes_.Add(other.transitionRoutes_);
      eventHandlers_.Add(other.eventHandlers_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            DisplayName = input.ReadString();
            break;
          }
          case 34: {
            if (form_ == null) {
              Form = new global::Google.Cloud.Dialogflow.Cx.V3.Form();
            }
            input.ReadMessage(Form);
            break;
          }
          case 58: {
            if (entryFulfillment_ == null) {
              EntryFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(EntryFulfillment);
            break;
          }
          case 74: {
            transitionRoutes_.AddEntriesFrom(input, _repeated_transitionRoutes_codec);
            break;
          }
          case 82: {
            eventHandlers_.AddEntriesFrom(input, _repeated_eventHandlers_codec);
            break;
          }
          case 90: {
            transitionRouteGroups_.AddEntriesFrom(input, _repeated_transitionRouteGroups_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            DisplayName = input.ReadString();
            break;
          }
          case 34: {
            if (form_ == null) {
              Form = new global::Google.Cloud.Dialogflow.Cx.V3.Form();
            }
            input.ReadMessage(Form);
            break;
          }
          case 58: {
            if (entryFulfillment_ == null) {
              EntryFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(EntryFulfillment);
            break;
          }
          case 74: {
            transitionRoutes_.AddEntriesFrom(ref input, _repeated_transitionRoutes_codec);
            break;
          }
          case 82: {
            eventHandlers_.AddEntriesFrom(ref input, _repeated_eventHandlers_codec);
            break;
          }
          case 90: {
            transitionRouteGroups_.AddEntriesFrom(ref input, _repeated_transitionRouteGroups_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// A form is a data model that groups related parameters that can be collected
  /// from the user. The process in which the agent prompts the user and collects
  /// parameter values from the user is called form filling. A form can be added to
  /// a [page][google.cloud.dialogflow.cx.v3.Page]. When form filling is done, the filled parameters will be
  /// written to the [session][google.cloud.dialogflow.cx.v3.SessionInfo.parameters].
  ///
  public sealed partial class Form : pb::IMessage<Form>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Form> _parser = new pb::MessageParser<Form>(() => new Form());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Form> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Form() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Form(Form other) : this() {
      parameters_ = other.parameters_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Form Clone() {
      return new Form(this);
    }

    /// Field number for the "parameters" field.
    public const int ParametersFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter> _repeated_parameters_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Parser);
    private readonly pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter> parameters_ = new pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter>();
    ///
    /// Parameters to collect from the user.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter> Parameters {
      get { return parameters_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Form);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Form other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!parameters_.Equals(other.parameters_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= parameters_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      parameters_.WriteTo(output, _repeated_parameters_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      parameters_.WriteTo(ref output, _repeated_parameters_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += parameters_.CalculateSize(_repeated_parameters_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Form other) {
      if (other == null) {
        return;
      }
      parameters_.Add(other.parameters_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            parameters_.AddEntriesFrom(input, _repeated_parameters_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            parameters_.AddEntriesFrom(ref input, _repeated_parameters_codec);
            break;
          }
        }
      }
    }
    #endif

    #region Nested types
    /// Container for nested types declared in the Form message type.
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static partial class Types {
      ///
      /// Represents a form parameter.
      ///
      public sealed partial class Parameter : pb::IMessage<Parameter>
      #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          , pb::IBufferMessage
      #endif
      {
        private static readonly pb::MessageParser<Parameter> _parser = new pb::MessageParser<Parameter>(() => new Parameter());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pb::MessageParser<Parameter> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Google.Cloud.Dialogflow.Cx.V3.Form.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Parameter() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Parameter(Parameter other) : this() {
          displayName_ = other.displayName_;
          required_ = other.required_;
          entityType_ = other.entityType_;
          isList_ = other.isList_;
          fillBehavior_ = other.fillBehavior_ != null ? other.fillBehavior_.Clone() : null;
          defaultValue_ = other.defaultValue_ != null ? other.defaultValue_.Clone() : null;
          redact_ = other.redact_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public Parameter Clone() {
          return new Parameter(this);
        }

        /// Field number for the "display_name" field.
        public const int DisplayNameFieldNumber = 1;
        private string displayName_ = "";
        ///
        /// Required. The human-readable name of the parameter, unique within the
        /// form.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string DisplayName {
          get { return displayName_; }
          set {
            displayName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// Field number for the "required" field.
        public const int RequiredFieldNumber = 2;
        private bool required_;
        ///
        /// Indicates whether the parameter is required. Optional parameters will not
        /// trigger prompts; however, they are filled if the user specifies them.
        /// Required parameters must be filled before form filling concludes.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Required {
          get { return required_; }
          set {
            required_ = value;
          }
        }

        /// Field number for the "entity_type" field.
        public const int EntityTypeFieldNumber = 3;
        private string entityType_ = "";
        ///
        /// Required. The entity type of the parameter.
        /// Format: `projects/-/locations/-/agents/-/entityTypes/<System Entity Type
        /// ID>` for system entity types (for example,
        /// `projects/-/locations/-/agents/-/entityTypes/sys.date`), or
        /// `projects/<Project ID>/locations/<Location ID>/agents/<Agent
        /// ID>/entityTypes/<Entity Type ID>` for developer entity types.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public string EntityType {
          get { return entityType_; }
          set {
            entityType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// Field number for the "is_list" field.
        public const int IsListFieldNumber = 4;
        private bool isList_;
        ///
        /// Indicates whether the parameter represents a list of values.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool IsList {
          get { return isList_; }
          set {
            isList_ = value;
          }
        }

        /// Field number for the "fill_behavior" field.
        public const int FillBehaviorFieldNumber = 7;
        private global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior fillBehavior_;
        ///
        /// Required. Defines fill behavior for the parameter.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior FillBehavior {
          get { return fillBehavior_; }
          set {
            fillBehavior_ = value;
          }
        }

        /// Field number for the "default_value" field.
        public const int DefaultValueFieldNumber = 9;
        private global::Google.Protobuf.WellKnownTypes.Value defaultValue_;
        ///
        /// The default value of an optional parameter. If the parameter is required,
        /// the default value will be ignored.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public global::Google.Protobuf.WellKnownTypes.Value DefaultValue {
          get { return defaultValue_; }
          set {
            defaultValue_ = value;
          }
        }

        /// Field number for the "redact" field.
        public const int RedactFieldNumber = 11;
        private bool redact_;
        ///
        /// Indicates whether the parameter content should be redacted in log.  If
        /// redaction is enabled, the parameter content will be replaced by parameter
        /// name during logging.
        /// Note: the parameter content is subject to redaction if either parameter
        /// level redaction or [entity type level redaction][google.cloud.dialogflow.cx.v3.EntityType.redact] is
        /// enabled.
        ///
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Redact {
          get { return redact_; }
          set {
            redact_ = value;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override bool Equals(object other) {
          return Equals(other as Parameter);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public bool Equals(Parameter other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (DisplayName != other.DisplayName) return false;
          if (Required != other.Required) return false;
          if (EntityType != other.EntityType) return false;
          if (IsList != other.IsList) return false;
          if (!object.Equals(FillBehavior, other.FillBehavior)) return false;
          if (!object.Equals(DefaultValue, other.DefaultValue)) return false;
          if (Redact != other.Redact) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override int GetHashCode() {
          int hash = 1;
          if (DisplayName.Length != 0) hash ^= DisplayName.GetHashCode();
          if (Required != false) hash ^= Required.GetHashCode();
          if (EntityType.Length != 0) hash ^= EntityType.GetHashCode();
          if (IsList != false) hash ^= IsList.GetHashCode();
          if (fillBehavior_ != null) hash ^= FillBehavior.GetHashCode();
          if (defaultValue_ != null) hash ^= DefaultValue.GetHashCode();
          if (Redact != false) hash ^= Redact.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void WriteTo(pb::CodedOutputStream output) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          output.WriteRawMessage(this);
        #else
          if (DisplayName.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(DisplayName);
          }
          if (Required != false) {
            output.WriteRawTag(16);
            output.WriteBool(Required);
          }
          if (EntityType.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(EntityType);
          }
          if (IsList != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsList);
          }
          if (fillBehavior_ != null) {
            output.WriteRawTag(58);
            output.WriteMessage(FillBehavior);
          }
          if (defaultValue_ != null) {
            output.WriteRawTag(74);
            output.WriteMessage(DefaultValue);
          }
          if (Redact != false) {
            output.WriteRawTag(88);
            output.WriteBool(Redact);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
          if (DisplayName.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(DisplayName);
          }
          if (Required != false) {
            output.WriteRawTag(16);
            output.WriteBool(Required);
          }
          if (EntityType.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(EntityType);
          }
          if (IsList != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsList);
          }
          if (fillBehavior_ != null) {
            output.WriteRawTag(58);
            output.WriteMessage(FillBehavior);
          }
          if (defaultValue_ != null) {
            output.WriteRawTag(74);
            output.WriteMessage(DefaultValue);
          }
          if (Redact != false) {
            output.WriteRawTag(88);
            output.WriteBool(Redact);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(ref output);
          }
        }
        #endif

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public int CalculateSize() {
          int size = 0;
          if (DisplayName.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(DisplayName);
          }
          if (Required != false) {
            size += 1 + 1;
          }
          if (EntityType.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(EntityType);
          }
          if (IsList != false) {
            size += 1 + 1;
          }
          if (fillBehavior_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(FillBehavior);
          }
          if (defaultValue_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(DefaultValue);
          }
          if (Redact != false) {
            size += 1 + 1;
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(Parameter other) {
          if (other == null) {
            return;
          }
          if (other.DisplayName.Length != 0) {
            DisplayName = other.DisplayName;
          }
          if (other.Required != false) {
            Required = other.Required;
          }
          if (other.EntityType.Length != 0) {
            EntityType = other.EntityType;
          }
          if (other.IsList != false) {
            IsList = other.IsList;
          }
          if (other.fillBehavior_ != null) {
            if (fillBehavior_ == null) {
              FillBehavior = new global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior();
            }
            FillBehavior.MergeFrom(other.FillBehavior);
          }
          if (other.defaultValue_ != null) {
            if (defaultValue_ == null) {
              DefaultValue = new global::Google.Protobuf.WellKnownTypes.Value();
            }
            DefaultValue.MergeFrom(other.DefaultValue);
          }
          if (other.Redact != false) {
            Redact = other.Redact;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public void MergeFrom(pb::CodedInputStream input) {
        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
          input.ReadRawMessage(this);
        #else
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                DisplayName = input.ReadString();
                break;
              }
              case 16: {
                Required = input.ReadBool();
                break;
              }
              case 26: {
                EntityType = input.ReadString();
                break;
              }
              case 32: {
                IsList = input.ReadBool();
                break;
              }
              case 58: {
                if (fillBehavior_ == null) {
                  FillBehavior = new global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior();
                }
                input.ReadMessage(FillBehavior);
                break;
              }
              case 74: {
                if (defaultValue_ == null) {
                  DefaultValue = new global::Google.Protobuf.WellKnownTypes.Value();
                }
                input.ReadMessage(DefaultValue);
                break;
              }
              case 88: {
                Redact = input.ReadBool();
                break;
              }
            }
          }
        #endif
        }

        #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                break;
              case 10: {
                DisplayName = input.ReadString();
                break;
              }
              case 16: {
                Required = input.ReadBool();
                break;
              }
              case 26: {
                EntityType = input.ReadString();
                break;
              }
              case 32: {
                IsList = input.ReadBool();
                break;
              }
              case 58: {
                if (fillBehavior_ == null) {
                  FillBehavior = new global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Types.FillBehavior();
                }
                input.ReadMessage(FillBehavior);
                break;
              }
              case 74: {
                if (defaultValue_ == null) {
                  DefaultValue = new global::Google.Protobuf.WellKnownTypes.Value();
                }
                input.ReadMessage(DefaultValue);
                break;
              }
              case 88: {
                Redact = input.ReadBool();
                break;
              }
            }
          }
        }
        #endif

        #region Nested types
        /// Container for nested types declared in the Parameter message type.
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
        public static partial class Types {
          ///
          /// Configuration for how the filling of a parameter should be handled.
          ///
          public sealed partial class FillBehavior : pb::IMessage<FillBehavior>
          #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
              , pb::IBufferMessage
          #endif
          {
            private static readonly pb::MessageParser<FillBehavior> _parser = new pb::MessageParser<FillBehavior>(() => new FillBehavior());
            private pb::UnknownFieldSet _unknownFields;
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public static pb::MessageParser<FillBehavior> Parser { get { return _parser; } }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public static pbr::MessageDescriptor Descriptor {
              get { return global::Google.Cloud.Dialogflow.Cx.V3.Form.Types.Parameter.Descriptor.NestedTypes[0]; }
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            pbr::MessageDescriptor pb::IMessage.Descriptor {
              get { return Descriptor; }
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public FillBehavior() {
              OnConstruction();
            }

            partial void OnConstruction();

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public FillBehavior(FillBehavior other) : this() {
              initialPromptFulfillment_ = other.initialPromptFulfillment_ != null ? other.initialPromptFulfillment_.Clone() : null;
              repromptEventHandlers_ = other.repromptEventHandlers_.Clone();
              _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public FillBehavior Clone() {
              return new FillBehavior(this);
            }

            /// Field number for the "initial_prompt_fulfillment" field.
            public const int InitialPromptFulfillmentFieldNumber = 3;
            private global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment initialPromptFulfillment_;
            ///
            /// Required. The fulfillment to provide the initial prompt that the agent
            /// can present to the user in order to fill the parameter.
            ///
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment InitialPromptFulfillment {
              get { return initialPromptFulfillment_; }
              set {
                initialPromptFulfillment_ = value;
              }
            }

            /// Field number for the "reprompt_event_handlers" field.
            public const int RepromptEventHandlersFieldNumber = 5;
            private static readonly pb::FieldCodec<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> _repeated_repromptEventHandlers_codec
                = pb::FieldCodec.ForMessage(42, global::Google.Cloud.Dialogflow.Cx.V3.EventHandler.Parser);
            private readonly pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> repromptEventHandlers_ = new pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler>();
            ///
            /// The handlers for parameter-level events, used to provide reprompt for
            /// the parameter or transition to a different page/flow. The supported
            /// events are:
            /// *   `sys.no-match-<N>`, where N can be from 1 to 6
            /// *   `sys.no-match-default`
            /// *   `sys.no-input-<N>`, where N can be from 1 to 6
            /// *   `sys.no-input-default`
            /// *   `sys.invalid-parameter`
            ///
            /// `initial_prompt_fulfillment` provides the first prompt for the
            /// parameter.
            ///
            /// If the user's response does not fill the parameter, a
            /// no-match/no-input event will be triggered, and the fulfillment
            /// associated with the `sys.no-match-1`/`sys.no-input-1` handler (if
            /// defined) will be called to provide a prompt. The
            /// `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to
            /// the next no-match/no-input event, and so on.
            ///
            /// A `sys.no-match-default` or `sys.no-input-default` handler will be used
            /// to handle all following no-match/no-input events after all numbered
            /// no-match/no-input handlers for the parameter are consumed.
            ///
            /// A `sys.invalid-parameter` handler can be defined to handle the case
            /// where the parameter values have been `invalidated` by webhook. For
            /// example, if the user's response fill the parameter, however the
            /// parameter was invalidated by webhook, the fulfillment associated with
            /// the `sys.invalid-parameter` handler (if defined) will be called to
            /// provide a prompt.
            ///
            /// If the event handler for the corresponding event can't be found on the
            /// parameter, `initial_prompt_fulfillment` will be re-prompted.
            ///
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.EventHandler> RepromptEventHandlers {
              get { return repromptEventHandlers_; }
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public override bool Equals(object other) {
              return Equals(other as FillBehavior);
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public bool Equals(FillBehavior other) {
              if (ReferenceEquals(other, null)) {
                return false;
              }
              if (ReferenceEquals(other, this)) {
                return true;
              }
              if (!object.Equals(InitialPromptFulfillment, other.InitialPromptFulfillment)) return false;
              if(!repromptEventHandlers_.Equals(other.repromptEventHandlers_)) return false;
              return Equals(_unknownFields, other._unknownFields);
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public override int GetHashCode() {
              int hash = 1;
              if (initialPromptFulfillment_ != null) hash ^= InitialPromptFulfillment.GetHashCode();
              hash ^= repromptEventHandlers_.GetHashCode();
              if (_unknownFields != null) {
                hash ^= _unknownFields.GetHashCode();
              }
              return hash;
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public override string ToString() {
              return pb::JsonFormatter.ToDiagnosticString(this);
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public void WriteTo(pb::CodedOutputStream output) {
            #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
              output.WriteRawMessage(this);
            #else
              if (initialPromptFulfillment_ != null) {
                output.WriteRawTag(26);
                output.WriteMessage(InitialPromptFulfillment);
              }
              repromptEventHandlers_.WriteTo(output, _repeated_repromptEventHandlers_codec);
              if (_unknownFields != null) {
                _unknownFields.WriteTo(output);
              }
            #endif
            }

            #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
              if (initialPromptFulfillment_ != null) {
                output.WriteRawTag(26);
                output.WriteMessage(InitialPromptFulfillment);
              }
              repromptEventHandlers_.WriteTo(ref output, _repeated_repromptEventHandlers_codec);
              if (_unknownFields != null) {
                _unknownFields.WriteTo(ref output);
              }
            }
            #endif

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public int CalculateSize() {
              int size = 0;
              if (initialPromptFulfillment_ != null) {
                size += 1 + pb::CodedOutputStream.ComputeMessageSize(InitialPromptFulfillment);
              }
              size += repromptEventHandlers_.CalculateSize(_repeated_repromptEventHandlers_codec);
              if (_unknownFields != null) {
                size += _unknownFields.CalculateSize();
              }
              return size;
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public void MergeFrom(FillBehavior other) {
              if (other == null) {
                return;
              }
              if (other.initialPromptFulfillment_ != null) {
                if (initialPromptFulfillment_ == null) {
                  InitialPromptFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
                }
                InitialPromptFulfillment.MergeFrom(other.InitialPromptFulfillment);
              }
              repromptEventHandlers_.Add(other.repromptEventHandlers_);
              _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
            }

            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            public void MergeFrom(pb::CodedInputStream input) {
            #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
              input.ReadRawMessage(this);
            #else
              uint tag;
              while ((tag = input.ReadTag()) != 0) {
                switch(tag) {
                  default:
                    _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                    break;
                  case 26: {
                    if (initialPromptFulfillment_ == null) {
                      InitialPromptFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
                    }
                    input.ReadMessage(InitialPromptFulfillment);
                    break;
                  }
                  case 42: {
                    repromptEventHandlers_.AddEntriesFrom(input, _repeated_repromptEventHandlers_codec);
                    break;
                  }
                }
              }
            #endif
            }

            #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
            [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
            [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
            void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
              uint tag;
              while ((tag = input.ReadTag()) != 0) {
                switch(tag) {
                  default:
                    _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
                    break;
                  case 26: {
                    if (initialPromptFulfillment_ == null) {
                      InitialPromptFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
                    }
                    input.ReadMessage(InitialPromptFulfillment);
                    break;
                  }
                  case 42: {
                    repromptEventHandlers_.AddEntriesFrom(ref input, _repeated_repromptEventHandlers_codec);
                    break;
                  }
                }
              }
            }
            #endif

          }

        }
        #endregion

      }

    }
    #endregion

  }

  ///
  /// An event handler specifies an [event][google.cloud.dialogflow.cx.v3.EventHandler.event] that can be handled
  /// during a session. When the specified event happens, the following actions are
  /// taken in order:
  ///
  /// *   If there is a
  /// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.EventHandler.trigger_fulfillment] associated with
  /// the event, it will be called.
  /// *   If there is a [`target_page`][google.cloud.dialogflow.cx.v3.EventHandler.target_page] associated
  /// with the event, the session will transition into the specified page.
  /// *   If there is a [`target_flow`][google.cloud.dialogflow.cx.v3.EventHandler.target_flow] associated
  /// with the event, the session will transition into the specified flow.
  ///
  public sealed partial class EventHandler : pb::IMessage<EventHandler>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<EventHandler> _parser = new pb::MessageParser<EventHandler>(() => new EventHandler());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<EventHandler> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventHandler() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventHandler(EventHandler other) : this() {
      name_ = other.name_;
      event_ = other.event_;
      triggerFulfillment_ = other.triggerFulfillment_ != null ? other.triggerFulfillment_.Clone() : null;
      switch (other.TargetCase) {
        case TargetOneofCase.TargetPage:
          TargetPage = other.TargetPage;
          break;
        case TargetOneofCase.TargetFlow:
          TargetFlow = other.TargetFlow;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public EventHandler Clone() {
      return new EventHandler(this);
    }

    /// Field number for the "name" field.
    public const int NameFieldNumber = 6;
    private string name_ = "";
    ///
    /// Output only. The unique identifier of this event handler.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "event" field.
    public const int EventFieldNumber = 4;
    private string event_ = "";
    ///
    /// Required. The name of the event to handle.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Event {
      get { return event_; }
      set {
        event_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "trigger_fulfillment" field.
    public const int TriggerFulfillmentFieldNumber = 5;
    private global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment triggerFulfillment_;
    ///
    /// The fulfillment to call when the event occurs.
    /// Handling webhook errors with a fulfillment enabled with webhook could
    /// cause infinite loop. It is invalid to specify such fulfillment for a
    /// handler handling webhooks.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment TriggerFulfillment {
      get { return triggerFulfillment_; }
      set {
        triggerFulfillment_ = value;
      }
    }

    /// Field number for the "target_page" field.
    public const int TargetPageFieldNumber = 2;
    ///
    /// The target page to transition to.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>/pages/<Page ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetPage {
      get { return targetCase_ == TargetOneofCase.TargetPage ? (string) target_ : ""; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        targetCase_ = TargetOneofCase.TargetPage;
      }
    }

    /// Field number for the "target_flow" field.
    public const int TargetFlowFieldNumber = 3;
    ///
    /// The target flow to transition to.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetFlow {
      get { return targetCase_ == TargetOneofCase.TargetFlow ? (string) target_ : ""; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        targetCase_ = TargetOneofCase.TargetFlow;
      }
    }

    private object target_;
    /// Enum of possible cases for the "target" oneof.
    public enum TargetOneofCase {
      None = 0,
      TargetPage = 2,
      TargetFlow = 3,
    }
    private TargetOneofCase targetCase_ = TargetOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TargetOneofCase TargetCase {
      get { return targetCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTarget() {
      targetCase_ = TargetOneofCase.None;
      target_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as EventHandler);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(EventHandler other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Event != other.Event) return false;
      if (!object.Equals(TriggerFulfillment, other.TriggerFulfillment)) return false;
      if (TargetPage != other.TargetPage) return false;
      if (TargetFlow != other.TargetFlow) return false;
      if (TargetCase != other.TargetCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Event.Length != 0) hash ^= Event.GetHashCode();
      if (triggerFulfillment_ != null) hash ^= TriggerFulfillment.GetHashCode();
      if (targetCase_ == TargetOneofCase.TargetPage) hash ^= TargetPage.GetHashCode();
      if (targetCase_ == TargetOneofCase.TargetFlow) hash ^= TargetFlow.GetHashCode();
      hash ^= (int) targetCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (targetCase_ == TargetOneofCase.TargetPage) {
        output.WriteRawTag(18);
        output.WriteString(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        output.WriteRawTag(26);
        output.WriteString(TargetFlow);
      }
      if (Event.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Event);
      }
      if (triggerFulfillment_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(TriggerFulfillment);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (targetCase_ == TargetOneofCase.TargetPage) {
        output.WriteRawTag(18);
        output.WriteString(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        output.WriteRawTag(26);
        output.WriteString(TargetFlow);
      }
      if (Event.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Event);
      }
      if (triggerFulfillment_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(TriggerFulfillment);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Event.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Event);
      }
      if (triggerFulfillment_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TriggerFulfillment);
      }
      if (targetCase_ == TargetOneofCase.TargetPage) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetFlow);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(EventHandler other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Event.Length != 0) {
        Event = other.Event;
      }
      if (other.triggerFulfillment_ != null) {
        if (triggerFulfillment_ == null) {
          TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
        }
        TriggerFulfillment.MergeFrom(other.TriggerFulfillment);
      }
      switch (other.TargetCase) {
        case TargetOneofCase.TargetPage:
          TargetPage = other.TargetPage;
          break;
        case TargetOneofCase.TargetFlow:
          TargetFlow = other.TargetFlow;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            TargetPage = input.ReadString();
            break;
          }
          case 26: {
            TargetFlow = input.ReadString();
            break;
          }
          case 34: {
            Event = input.ReadString();
            break;
          }
          case 42: {
            if (triggerFulfillment_ == null) {
              TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(TriggerFulfillment);
            break;
          }
          case 50: {
            Name = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            TargetPage = input.ReadString();
            break;
          }
          case 26: {
            TargetFlow = input.ReadString();
            break;
          }
          case 34: {
            Event = input.ReadString();
            break;
          }
          case 42: {
            if (triggerFulfillment_ == null) {
              TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(TriggerFulfillment);
            break;
          }
          case 50: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// A transition route specifies a [intent][google.cloud.dialogflow.cx.v3.Intent] that can be matched and/or a
  /// data condition that can be evaluated during a session. When a specified
  /// transition is matched, the following actions are taken in order:
  ///
  /// *   If there is a
  /// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.TransitionRoute.trigger_fulfillment] associated with
  /// the transition, it will be called.
  /// *   If there is a [`target_page`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_page] associated
  /// with the transition, the session will transition into the specified page.
  /// *   If there is a [`target_flow`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_flow] associated
  /// with the transition, the session will transition into the specified flow.
  ///
  public sealed partial class TransitionRoute : pb::IMessage<TransitionRoute>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TransitionRoute> _parser = new pb::MessageParser<TransitionRoute>(() => new TransitionRoute());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TransitionRoute> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TransitionRoute() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TransitionRoute(TransitionRoute other) : this() {
      name_ = other.name_;
      intent_ = other.intent_;
      condition_ = other.condition_;
      triggerFulfillment_ = other.triggerFulfillment_ != null ? other.triggerFulfillment_.Clone() : null;
      switch (other.TargetCase) {
        case TargetOneofCase.TargetPage:
          TargetPage = other.TargetPage;
          break;
        case TargetOneofCase.TargetFlow:
          TargetFlow = other.TargetFlow;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TransitionRoute Clone() {
      return new TransitionRoute(this);
    }

    /// Field number for the "name" field.
    public const int NameFieldNumber = 6;
    private string name_ = "";
    ///
    /// Output only. The unique identifier of this transition route.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "intent" field.
    public const int IntentFieldNumber = 1;
    private string intent_ = "";
    ///
    /// The unique identifier of an [Intent][google.cloud.dialogflow.cx.v3.Intent].
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/intents/<Intent ID>`.
    /// Indicates that the transition can only happen when the given intent is
    /// matched.
    /// At least one of `intent` or `condition` must be specified. When both
    /// `intent` and `condition` are specified, the transition can only happen
    /// when both are fulfilled.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Intent {
      get { return intent_; }
      set {
        intent_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "condition" field.
    public const int ConditionFieldNumber = 2;
    private string condition_ = "";
    ///
    /// The condition to evaluate against [form parameters][google.cloud.dialogflow.cx.v3.Form.parameters] or
    /// [session parameters][google.cloud.dialogflow.cx.v3.SessionInfo.parameters].
    ///
    /// See the [conditions
    /// reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    /// At least one of `intent` or `condition` must be specified. When both
    /// `intent` and `condition` are specified, the transition can only happen
    /// when both are fulfilled.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Condition {
      get { return condition_; }
      set {
        condition_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "trigger_fulfillment" field.
    public const int TriggerFulfillmentFieldNumber = 3;
    private global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment triggerFulfillment_;
    ///
    /// The fulfillment to call when the condition is satisfied. At least one of
    /// `trigger_fulfillment` and `target` must be specified. When both are
    /// defined, `trigger_fulfillment` is executed first.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment TriggerFulfillment {
      get { return triggerFulfillment_; }
      set {
        triggerFulfillment_ = value;
      }
    }

    /// Field number for the "target_page" field.
    public const int TargetPageFieldNumber = 4;
    ///
    /// The target page to transition to.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>/pages/<Page ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetPage {
      get { return targetCase_ == TargetOneofCase.TargetPage ? (string) target_ : ""; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        targetCase_ = TargetOneofCase.TargetPage;
      }
    }

    /// Field number for the "target_flow" field.
    public const int TargetFlowFieldNumber = 5;
    ///
    /// The target flow to transition to.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TargetFlow {
      get { return targetCase_ == TargetOneofCase.TargetFlow ? (string) target_ : ""; }
      set {
        target_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        targetCase_ = TargetOneofCase.TargetFlow;
      }
    }

    private object target_;
    /// Enum of possible cases for the "target" oneof.
    public enum TargetOneofCase {
      None = 0,
      TargetPage = 4,
      TargetFlow = 5,
    }
    private TargetOneofCase targetCase_ = TargetOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TargetOneofCase TargetCase {
      get { return targetCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTarget() {
      targetCase_ = TargetOneofCase.None;
      target_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TransitionRoute);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TransitionRoute other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Intent != other.Intent) return false;
      if (Condition != other.Condition) return false;
      if (!object.Equals(TriggerFulfillment, other.TriggerFulfillment)) return false;
      if (TargetPage != other.TargetPage) return false;
      if (TargetFlow != other.TargetFlow) return false;
      if (TargetCase != other.TargetCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Intent.Length != 0) hash ^= Intent.GetHashCode();
      if (Condition.Length != 0) hash ^= Condition.GetHashCode();
      if (triggerFulfillment_ != null) hash ^= TriggerFulfillment.GetHashCode();
      if (targetCase_ == TargetOneofCase.TargetPage) hash ^= TargetPage.GetHashCode();
      if (targetCase_ == TargetOneofCase.TargetFlow) hash ^= TargetFlow.GetHashCode();
      hash ^= (int) targetCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Intent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Intent);
      }
      if (Condition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Condition);
      }
      if (triggerFulfillment_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TriggerFulfillment);
      }
      if (targetCase_ == TargetOneofCase.TargetPage) {
        output.WriteRawTag(34);
        output.WriteString(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        output.WriteRawTag(42);
        output.WriteString(TargetFlow);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Intent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Intent);
      }
      if (Condition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Condition);
      }
      if (triggerFulfillment_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TriggerFulfillment);
      }
      if (targetCase_ == TargetOneofCase.TargetPage) {
        output.WriteRawTag(34);
        output.WriteString(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        output.WriteRawTag(42);
        output.WriteString(TargetFlow);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Name);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Intent.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Intent);
      }
      if (Condition.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Condition);
      }
      if (triggerFulfillment_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TriggerFulfillment);
      }
      if (targetCase_ == TargetOneofCase.TargetPage) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetPage);
      }
      if (targetCase_ == TargetOneofCase.TargetFlow) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetFlow);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TransitionRoute other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Intent.Length != 0) {
        Intent = other.Intent;
      }
      if (other.Condition.Length != 0) {
        Condition = other.Condition;
      }
      if (other.triggerFulfillment_ != null) {
        if (triggerFulfillment_ == null) {
          TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
        }
        TriggerFulfillment.MergeFrom(other.TriggerFulfillment);
      }
      switch (other.TargetCase) {
        case TargetOneofCase.TargetPage:
          TargetPage = other.TargetPage;
          break;
        case TargetOneofCase.TargetFlow:
          TargetFlow = other.TargetFlow;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Intent = input.ReadString();
            break;
          }
          case 18: {
            Condition = input.ReadString();
            break;
          }
          case 26: {
            if (triggerFulfillment_ == null) {
              TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(TriggerFulfillment);
            break;
          }
          case 34: {
            TargetPage = input.ReadString();
            break;
          }
          case 42: {
            TargetFlow = input.ReadString();
            break;
          }
          case 50: {
            Name = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Intent = input.ReadString();
            break;
          }
          case 18: {
            Condition = input.ReadString();
            break;
          }
          case 26: {
            if (triggerFulfillment_ == null) {
              TriggerFulfillment = new global::Google.Cloud.Dialogflow.Cx.V3.Fulfillment();
            }
            input.ReadMessage(TriggerFulfillment);
            break;
          }
          case 34: {
            TargetPage = input.ReadString();
            break;
          }
          case 42: {
            TargetFlow = input.ReadString();
            break;
          }
          case 50: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The request message for [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages].
  ///
  public sealed partial class ListPagesRequest : pb::IMessage<ListPagesRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ListPagesRequest> _parser = new pb::MessageParser<ListPagesRequest>(() => new ListPagesRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ListPagesRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesRequest(ListPagesRequest other) : this() {
      parent_ = other.parent_;
      languageCode_ = other.languageCode_;
      pageSize_ = other.pageSize_;
      pageToken_ = other.pageToken_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesRequest Clone() {
      return new ListPagesRequest(this);
    }

    /// Field number for the "parent" field.
    public const int ParentFieldNumber = 1;
    private string parent_ = "";
    ///
    /// Required. The flow to list all pages for.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Parent {
      get { return parent_; }
      set {
        parent_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "language_code" field.
    public const int LanguageCodeFieldNumber = 2;
    private string languageCode_ = "";
    ///
    /// The language to list pages for. The following fields are language
    /// dependent:
    ///
    /// *  `Page.entry_fulfillment.messages`
    /// *  `Page.entry_fulfillment.conditional_cases`
    /// *  `Page.event_handlers.trigger_fulfillment.messages`
    /// *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
    /// *  `Page.transition_routes.trigger_fulfillment.messages`
    /// *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
    ///
    /// If not specified, the agent's default language is used.
    /// [Many
    /// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
    /// are supported.
    /// Note: languages must be enabled in the agent before they can be used.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LanguageCode {
      get { return languageCode_; }
      set {
        languageCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "page_size" field.
    public const int PageSizeFieldNumber = 3;
    private int pageSize_;
    ///
    /// The maximum number of items to return in a single page. By default 100 and
    /// at most 1000.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int PageSize {
      get { return pageSize_; }
      set {
        pageSize_ = value;
      }
    }

    /// Field number for the "page_token" field.
    public const int PageTokenFieldNumber = 4;
    private string pageToken_ = "";
    ///
    /// The next_page_token value returned from a previous list request.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string PageToken {
      get { return pageToken_; }
      set {
        pageToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ListPagesRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ListPagesRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Parent != other.Parent) return false;
      if (LanguageCode != other.LanguageCode) return false;
      if (PageSize != other.PageSize) return false;
      if (PageToken != other.PageToken) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Parent.Length != 0) hash ^= Parent.GetHashCode();
      if (LanguageCode.Length != 0) hash ^= LanguageCode.GetHashCode();
      if (PageSize != 0) hash ^= PageSize.GetHashCode();
      if (PageToken.Length != 0) hash ^= PageToken.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Parent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Parent);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (PageSize != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(PageSize);
      }
      if (PageToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(PageToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Parent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Parent);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (PageSize != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(PageSize);
      }
      if (PageToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(PageToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Parent.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Parent);
      }
      if (LanguageCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LanguageCode);
      }
      if (PageSize != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PageSize);
      }
      if (PageToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PageToken);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ListPagesRequest other) {
      if (other == null) {
        return;
      }
      if (other.Parent.Length != 0) {
        Parent = other.Parent;
      }
      if (other.LanguageCode.Length != 0) {
        LanguageCode = other.LanguageCode;
      }
      if (other.PageSize != 0) {
        PageSize = other.PageSize;
      }
      if (other.PageToken.Length != 0) {
        PageToken = other.PageToken;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Parent = input.ReadString();
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
          case 24: {
            PageSize = input.ReadInt32();
            break;
          }
          case 34: {
            PageToken = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Parent = input.ReadString();
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
          case 24: {
            PageSize = input.ReadInt32();
            break;
          }
          case 34: {
            PageToken = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The response message for [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages].
  ///
  public sealed partial class ListPagesResponse : pb::IMessage<ListPagesResponse>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ListPagesResponse> _parser = new pb::MessageParser<ListPagesResponse>(() => new ListPagesResponse());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ListPagesResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesResponse(ListPagesResponse other) : this() {
      pages_ = other.pages_.Clone();
      nextPageToken_ = other.nextPageToken_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ListPagesResponse Clone() {
      return new ListPagesResponse(this);
    }

    /// Field number for the "pages" field.
    public const int PagesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Cloud.Dialogflow.Cx.V3.Page> _repeated_pages_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Cloud.Dialogflow.Cx.V3.Page.Parser);
    private readonly pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Page> pages_ = new pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Page>();
    ///
    /// The list of pages. There will be a maximum number of items returned based
    /// on the page_size field in the request.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Cloud.Dialogflow.Cx.V3.Page> Pages {
      get { return pages_; }
    }

    /// Field number for the "next_page_token" field.
    public const int NextPageTokenFieldNumber = 2;
    private string nextPageToken_ = "";
    ///
    /// Token to retrieve the next page of results, or empty if there are no more
    /// results in the list.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string NextPageToken {
      get { return nextPageToken_; }
      set {
        nextPageToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ListPagesResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ListPagesResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!pages_.Equals(other.pages_)) return false;
      if (NextPageToken != other.NextPageToken) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= pages_.GetHashCode();
      if (NextPageToken.Length != 0) hash ^= NextPageToken.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      pages_.WriteTo(output, _repeated_pages_codec);
      if (NextPageToken.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(NextPageToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      pages_.WriteTo(ref output, _repeated_pages_codec);
      if (NextPageToken.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(NextPageToken);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += pages_.CalculateSize(_repeated_pages_codec);
      if (NextPageToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NextPageToken);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ListPagesResponse other) {
      if (other == null) {
        return;
      }
      pages_.Add(other.pages_);
      if (other.NextPageToken.Length != 0) {
        NextPageToken = other.NextPageToken;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            pages_.AddEntriesFrom(input, _repeated_pages_codec);
            break;
          }
          case 18: {
            NextPageToken = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            pages_.AddEntriesFrom(ref input, _repeated_pages_codec);
            break;
          }
          case 18: {
            NextPageToken = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The request message for [Pages.GetPage][google.cloud.dialogflow.cx.v3.Pages.GetPage].
  ///
  public sealed partial class GetPageRequest : pb::IMessage<GetPageRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetPageRequest> _parser = new pb::MessageParser<GetPageRequest>(() => new GetPageRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetPageRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetPageRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetPageRequest(GetPageRequest other) : this() {
      name_ = other.name_;
      languageCode_ = other.languageCode_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetPageRequest Clone() {
      return new GetPageRequest(this);
    }

    /// Field number for the "name" field.
    public const int NameFieldNumber = 1;
    private string name_ = "";
    ///
    /// Required. The name of the page.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>/pages/<Page ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "language_code" field.
    public const int LanguageCodeFieldNumber = 2;
    private string languageCode_ = "";
    ///
    /// The language to retrieve the page for. The following fields are language
    /// dependent:
    ///
    /// *  `Page.entry_fulfillment.messages`
    /// *  `Page.entry_fulfillment.conditional_cases`
    /// *  `Page.event_handlers.trigger_fulfillment.messages`
    /// *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
    /// *  `Page.transition_routes.trigger_fulfillment.messages`
    /// *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
    ///
    /// If not specified, the agent's default language is used.
    /// [Many
    /// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
    /// are supported.
    /// Note: languages must be enabled in the agent before they can be used.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LanguageCode {
      get { return languageCode_; }
      set {
        languageCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetPageRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetPageRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (LanguageCode != other.LanguageCode) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (LanguageCode.Length != 0) hash ^= LanguageCode.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (LanguageCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LanguageCode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetPageRequest other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.LanguageCode.Length != 0) {
        LanguageCode = other.LanguageCode;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The request message for [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage].
  ///
  public sealed partial class CreatePageRequest : pb::IMessage<CreatePageRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CreatePageRequest> _parser = new pb::MessageParser<CreatePageRequest>(() => new CreatePageRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CreatePageRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CreatePageRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CreatePageRequest(CreatePageRequest other) : this() {
      parent_ = other.parent_;
      page_ = other.page_ != null ? other.page_.Clone() : null;
      languageCode_ = other.languageCode_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CreatePageRequest Clone() {
      return new CreatePageRequest(this);
    }

    /// Field number for the "parent" field.
    public const int ParentFieldNumber = 1;
    private string parent_ = "";
    ///
    /// Required. The flow to create a page for.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/flows/<Flow ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Parent {
      get { return parent_; }
      set {
        parent_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "page" field.
    public const int PageFieldNumber = 2;
    private global::Google.Cloud.Dialogflow.Cx.V3.Page page_;
    ///
    /// Required. The page to create.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Page Page {
      get { return page_; }
      set {
        page_ = value;
      }
    }

    /// Field number for the "language_code" field.
    public const int LanguageCodeFieldNumber = 3;
    private string languageCode_ = "";
    ///
    /// The language of the following fields in `page`:
    ///
    /// *  `Page.entry_fulfillment.messages`
    /// *  `Page.entry_fulfillment.conditional_cases`
    /// *  `Page.event_handlers.trigger_fulfillment.messages`
    /// *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
    /// *  `Page.transition_routes.trigger_fulfillment.messages`
    /// *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
    ///
    /// If not specified, the agent's default language is used.
    /// [Many
    /// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
    /// are supported.
    /// Note: languages must be enabled in the agent before they can be used.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LanguageCode {
      get { return languageCode_; }
      set {
        languageCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CreatePageRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CreatePageRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Parent != other.Parent) return false;
      if (!object.Equals(Page, other.Page)) return false;
      if (LanguageCode != other.LanguageCode) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Parent.Length != 0) hash ^= Parent.GetHashCode();
      if (page_ != null) hash ^= Page.GetHashCode();
      if (LanguageCode.Length != 0) hash ^= LanguageCode.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Parent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Parent);
      }
      if (page_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Page);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(LanguageCode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Parent.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Parent);
      }
      if (page_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Page);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(LanguageCode);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Parent.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Parent);
      }
      if (page_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Page);
      }
      if (LanguageCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LanguageCode);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CreatePageRequest other) {
      if (other == null) {
        return;
      }
      if (other.Parent.Length != 0) {
        Parent = other.Parent;
      }
      if (other.page_ != null) {
        if (page_ == null) {
          Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
        }
        Page.MergeFrom(other.Page);
      }
      if (other.LanguageCode.Length != 0) {
        LanguageCode = other.LanguageCode;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Parent = input.ReadString();
            break;
          }
          case 18: {
            if (page_ == null) {
              Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
            }
            input.ReadMessage(Page);
            break;
          }
          case 26: {
            LanguageCode = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Parent = input.ReadString();
            break;
          }
          case 18: {
            if (page_ == null) {
              Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
            }
            input.ReadMessage(Page);
            break;
          }
          case 26: {
            LanguageCode = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The request message for [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage].
  ///
  public sealed partial class UpdatePageRequest : pb::IMessage<UpdatePageRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UpdatePageRequest> _parser = new pb::MessageParser<UpdatePageRequest>(() => new UpdatePageRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UpdatePageRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UpdatePageRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UpdatePageRequest(UpdatePageRequest other) : this() {
      page_ = other.page_ != null ? other.page_.Clone() : null;
      languageCode_ = other.languageCode_;
      updateMask_ = other.updateMask_ != null ? other.updateMask_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UpdatePageRequest Clone() {
      return new UpdatePageRequest(this);
    }

    /// Field number for the "page" field.
    public const int PageFieldNumber = 1;
    private global::Google.Cloud.Dialogflow.Cx.V3.Page page_;
    ///
    /// Required. The page to update.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Cloud.Dialogflow.Cx.V3.Page Page {
      get { return page_; }
      set {
        page_ = value;
      }
    }

    /// Field number for the "language_code" field.
    public const int LanguageCodeFieldNumber = 2;
    private string languageCode_ = "";
    ///
    /// The language of the following fields in `page`:
    ///
    /// *  `Page.entry_fulfillment.messages`
    /// *  `Page.entry_fulfillment.conditional_cases`
    /// *  `Page.event_handlers.trigger_fulfillment.messages`
    /// *  `Page.event_handlers.trigger_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases`
    /// *  `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages`
    /// *
    /// `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases`
    /// *  `Page.transition_routes.trigger_fulfillment.messages`
    /// *  `Page.transition_routes.trigger_fulfillment.conditional_cases`
    ///
    /// If not specified, the agent's default language is used.
    /// [Many
    /// languages](https://cloud.google.com/dialogflow/cx/docs/reference/language)
    /// are supported.
    /// Note: languages must be enabled in the agent before they can be used.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string LanguageCode {
      get { return languageCode_; }
      set {
        languageCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "update_mask" field.
    public const int UpdateMaskFieldNumber = 3;
    private global::Google.Protobuf.WellKnownTypes.FieldMask updateMask_;
    ///
    /// The mask to control which fields get updated. If the mask is not present,
    /// all fields will be updated.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.FieldMask UpdateMask {
      get { return updateMask_; }
      set {
        updateMask_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UpdatePageRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UpdatePageRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Page, other.Page)) return false;
      if (LanguageCode != other.LanguageCode) return false;
      if (!object.Equals(UpdateMask, other.UpdateMask)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (page_ != null) hash ^= Page.GetHashCode();
      if (LanguageCode.Length != 0) hash ^= LanguageCode.GetHashCode();
      if (updateMask_ != null) hash ^= UpdateMask.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (page_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Page);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (updateMask_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(UpdateMask);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (page_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Page);
      }
      if (LanguageCode.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(LanguageCode);
      }
      if (updateMask_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(UpdateMask);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (page_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Page);
      }
      if (LanguageCode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LanguageCode);
      }
      if (updateMask_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UpdateMask);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UpdatePageRequest other) {
      if (other == null) {
        return;
      }
      if (other.page_ != null) {
        if (page_ == null) {
          Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
        }
        Page.MergeFrom(other.Page);
      }
      if (other.LanguageCode.Length != 0) {
        LanguageCode = other.LanguageCode;
      }
      if (other.updateMask_ != null) {
        if (updateMask_ == null) {
          UpdateMask = new global::Google.Protobuf.WellKnownTypes.FieldMask();
        }
        UpdateMask.MergeFrom(other.UpdateMask);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (page_ == null) {
              Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
            }
            input.ReadMessage(Page);
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
          case 26: {
            if (updateMask_ == null) {
              UpdateMask = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(UpdateMask);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (page_ == null) {
              Page = new global::Google.Cloud.Dialogflow.Cx.V3.Page();
            }
            input.ReadMessage(Page);
            break;
          }
          case 18: {
            LanguageCode = input.ReadString();
            break;
          }
          case 26: {
            if (updateMask_ == null) {
              UpdateMask = new global::Google.Protobuf.WellKnownTypes.FieldMask();
            }
            input.ReadMessage(UpdateMask);
            break;
          }
        }
      }
    }
    #endif

  }

  ///
  /// The request message for [Pages.DeletePage][google.cloud.dialogflow.cx.v3.Pages.DeletePage].
  ///
  public sealed partial class DeletePageRequest : pb::IMessage<DeletePageRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DeletePageRequest> _parser = new pb::MessageParser<DeletePageRequest>(() => new DeletePageRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DeletePageRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Google.Cloud.Dialogflow.Cx.V3.PageReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DeletePageRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DeletePageRequest(DeletePageRequest other) : this() {
      name_ = other.name_;
      force_ = other.force_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DeletePageRequest Clone() {
      return new DeletePageRequest(this);
    }

    /// Field number for the "name" field.
    public const int NameFieldNumber = 1;
    private string name_ = "";
    ///
    /// Required. The name of the page to delete.
    /// Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
    /// ID>/Flows/<flow ID>/pages/<Page ID>`.
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// Field number for the "force" field.
    public const int ForceFieldNumber = 2;
    private bool force_;
    ///
    /// This field has no effect for pages with no incoming transitions.
    /// For pages with incoming transitions:
    ///
    /// *  If `force` is set to false, an error will be returned with message
    ///    indicating the incoming transitions.
    /// *  If `force` is set to true, Dialogflow will remove the page, as well as
    ///    any transitions to the page (i.e. [Target
    ///    page][EventHandler.target_page] in event handlers or [Target
    ///    page][TransitionRoute.target_page] in transition routes that point to
    ///    this page will be cleared).
    ///
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Force {
      get { return force_; }
      set {
        force_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DeletePageRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DeletePageRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Force != other.Force) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Force != false) hash ^= Force.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Force != false) {
        output.WriteRawTag(16);
        output.WriteBool(Force);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Force != false) {
        output.WriteRawTag(16);
        output.WriteBool(Force);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Force != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DeletePageRequest other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Force != false) {
        Force = other.Force;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Force = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Force = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code