// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.16.0
// source: validator.proto

// Package defines Validator protobuffers. This is a package comment required by
// Golint for validator.pb.go, but Golint still fails with an error "Package
// amp_validator (defined in [validator.pb.go]) should have a package comment".
// This happens because protoc adds an extra line after the comment. Ignore the
// error.

package amp_validator

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// These two fields specify that values from one AttrSpec refer to values from
// another AttrSpec elsewhere on the page; validator will verify the
// references are not "dangling". These references may appear before or after
// their referents.
//
// For example, in the "id" AttrSpec in the "template" TagSpec, we have:
//   add_value_to_set: TEMPLATE_IDS
// and in any "template" AttrSpec, we have:
//   value_oneof_set: TEMPLATE_IDS
// NEXT AVAILABLE TAG: 3
type AttrSpec_ValueSet int32

const (
	AttrSpec_UNKNOWN_VALUESET AttrSpec_ValueSet = 0 // Never used
	AttrSpec_TEMPLATE_IDS     AttrSpec_ValueSet = 1 // <template id> values
	AttrSpec_AMP_SCRIPT_IDS   AttrSpec_ValueSet = 2 // <script id> values, referenced by <amp-script>
)

// Enum value maps for AttrSpec_ValueSet.
var (
	AttrSpec_ValueSet_name = map[int32]string{
		0: "UNKNOWN_VALUESET",
		1: "TEMPLATE_IDS",
		2: "AMP_SCRIPT_IDS",
	}
	AttrSpec_ValueSet_value = map[string]int32{
		"UNKNOWN_VALUESET": 0,
		"TEMPLATE_IDS":     1,
		"AMP_SCRIPT_IDS":   2,
	}
)

func (x AttrSpec_ValueSet) Enum() *AttrSpec_ValueSet {
	p := new(AttrSpec_ValueSet)
	*p = x
	return p
}

func (x AttrSpec_ValueSet) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AttrSpec_ValueSet) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[0].Descriptor()
}

func (AttrSpec_ValueSet) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[0]
}

func (x AttrSpec_ValueSet) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *AttrSpec_ValueSet) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = AttrSpec_ValueSet(num)
	return nil
}

// Deprecated: Use AttrSpec_ValueSet.Descriptor instead.
func (AttrSpec_ValueSet) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{5, 0}
}

type AttrSpec_DispatchKeyType int32

const (
	// Indicates that the attribute does not form a dispatch key.
	AttrSpec_NONE_DISPATCH AttrSpec_DispatchKeyType = 0
	// Indicates that the name of the attribute alone forms a dispatch key.
	AttrSpec_NAME_DISPATCH AttrSpec_DispatchKeyType = 1
	// Indicates that the name + value of the attribute forms a dispatch key.
	AttrSpec_NAME_VALUE_DISPATCH AttrSpec_DispatchKeyType = 2
	// Indicates that the name + value + mandatory parent forms a dispatch key.
	AttrSpec_NAME_VALUE_PARENT_DISPATCH AttrSpec_DispatchKeyType = 3
)

// Enum value maps for AttrSpec_DispatchKeyType.
var (
	AttrSpec_DispatchKeyType_name = map[int32]string{
		0: "NONE_DISPATCH",
		1: "NAME_DISPATCH",
		2: "NAME_VALUE_DISPATCH",
		3: "NAME_VALUE_PARENT_DISPATCH",
	}
	AttrSpec_DispatchKeyType_value = map[string]int32{
		"NONE_DISPATCH":              0,
		"NAME_DISPATCH":              1,
		"NAME_VALUE_DISPATCH":        2,
		"NAME_VALUE_PARENT_DISPATCH": 3,
	}
)

func (x AttrSpec_DispatchKeyType) Enum() *AttrSpec_DispatchKeyType {
	p := new(AttrSpec_DispatchKeyType)
	*p = x
	return p
}

func (x AttrSpec_DispatchKeyType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AttrSpec_DispatchKeyType) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[1].Descriptor()
}

func (AttrSpec_DispatchKeyType) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[1]
}

func (x AttrSpec_DispatchKeyType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *AttrSpec_DispatchKeyType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = AttrSpec_DispatchKeyType(num)
	return nil
}

// Deprecated: Use AttrSpec_DispatchKeyType.Descriptor instead.
func (AttrSpec_DispatchKeyType) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{5, 1}
}

// NEXT AVAILABLE TAG: 10
type AmpLayout_Layout int32

const (
	AmpLayout_CONTAINER    AmpLayout_Layout = 5
	AmpLayout_FILL         AmpLayout_Layout = 6
	AmpLayout_FIXED        AmpLayout_Layout = 2
	AmpLayout_FIXED_HEIGHT AmpLayout_Layout = 3
	AmpLayout_FLEX_ITEM    AmpLayout_Layout = 7
	AmpLayout_FLUID        AmpLayout_Layout = 8
	AmpLayout_INTRINSIC    AmpLayout_Layout = 9
	AmpLayout_NODISPLAY    AmpLayout_Layout = 1
	AmpLayout_RESPONSIVE   AmpLayout_Layout = 4
	AmpLayout_UNKNOWN      AmpLayout_Layout = 0
)

// Enum value maps for AmpLayout_Layout.
var (
	AmpLayout_Layout_name = map[int32]string{
		5: "CONTAINER",
		6: "FILL",
		2: "FIXED",
		3: "FIXED_HEIGHT",
		7: "FLEX_ITEM",
		8: "FLUID",
		9: "INTRINSIC",
		1: "NODISPLAY",
		4: "RESPONSIVE",
		0: "UNKNOWN",
	}
	AmpLayout_Layout_value = map[string]int32{
		"CONTAINER":    5,
		"FILL":         6,
		"FIXED":        2,
		"FIXED_HEIGHT": 3,
		"FLEX_ITEM":    7,
		"FLUID":        8,
		"INTRINSIC":    9,
		"NODISPLAY":    1,
		"RESPONSIVE":   4,
		"UNKNOWN":      0,
	}
)

func (x AmpLayout_Layout) Enum() *AmpLayout_Layout {
	p := new(AmpLayout_Layout)
	*p = x
	return p
}

func (x AmpLayout_Layout) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AmpLayout_Layout) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[2].Descriptor()
}

func (AmpLayout_Layout) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[2]
}

func (x AmpLayout_Layout) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *AmpLayout_Layout) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = AmpLayout_Layout(num)
	return nil
}

// Deprecated: Use AmpLayout_Layout.Descriptor instead.
func (AmpLayout_Layout) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{15, 0}
}

// NEXT AVAILABLE TAG: 2
type AncestorMarker_Marker int32

const (
	AncestorMarker_UNKNOWN AncestorMarker_Marker = 0
	// Set by <amp-sidebar> tags to allow autoscroll attributes on descendants.
	// See https://github.com/ampproject/amphtml/pull/20524 for more context.
	AncestorMarker_AUTOSCROLL AncestorMarker_Marker = 1
)

// Enum value maps for AncestorMarker_Marker.
var (
	AncestorMarker_Marker_name = map[int32]string{
		0: "UNKNOWN",
		1: "AUTOSCROLL",
	}
	AncestorMarker_Marker_value = map[string]int32{
		"UNKNOWN":    0,
		"AUTOSCROLL": 1,
	}
)

func (x AncestorMarker_Marker) Enum() *AncestorMarker_Marker {
	p := new(AncestorMarker_Marker)
	*p = x
	return p
}

func (x AncestorMarker_Marker) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AncestorMarker_Marker) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[3].Descriptor()
}

func (AncestorMarker_Marker) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[3]
}

func (x AncestorMarker_Marker) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *AncestorMarker_Marker) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = AncestorMarker_Marker(num)
	return nil
}

// Deprecated: Use AncestorMarker_Marker.Descriptor instead.
func (AncestorMarker_Marker) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{16, 0}
}

// Most extensions are custom-elements. For custom-template extensions, this
// value needs to be set true. E.g: amp-mustache.
// NEXT AVAILABLE TAG: 4
type ExtensionSpec_ExtensionType int32

const (
	ExtensionSpec_UNKNOWN         ExtensionSpec_ExtensionType = 0
	ExtensionSpec_CUSTOM_ELEMENT  ExtensionSpec_ExtensionType = 1
	ExtensionSpec_CUSTOM_TEMPLATE ExtensionSpec_ExtensionType = 2
	ExtensionSpec_HOST_SERVICE    ExtensionSpec_ExtensionType = 3
)

// Enum value maps for ExtensionSpec_ExtensionType.
var (
	ExtensionSpec_ExtensionType_name = map[int32]string{
		0: "UNKNOWN",
		1: "CUSTOM_ELEMENT",
		2: "CUSTOM_TEMPLATE",
		3: "HOST_SERVICE",
	}
	ExtensionSpec_ExtensionType_value = map[string]int32{
		"UNKNOWN":         0,
		"CUSTOM_ELEMENT":  1,
		"CUSTOM_TEMPLATE": 2,
		"HOST_SERVICE":    3,
	}
)

func (x ExtensionSpec_ExtensionType) Enum() *ExtensionSpec_ExtensionType {
	p := new(ExtensionSpec_ExtensionType)
	*p = x
	return p
}

func (x ExtensionSpec_ExtensionType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExtensionSpec_ExtensionType) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[4].Descriptor()
}

func (ExtensionSpec_ExtensionType) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[4]
}

func (x ExtensionSpec_ExtensionType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ExtensionSpec_ExtensionType) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ExtensionSpec_ExtensionType(num)
	return nil
}

// Deprecated: Use ExtensionSpec_ExtensionType.Descriptor instead.
func (ExtensionSpec_ExtensionType) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{19, 0}
}

// TagSpec.requires_extension will be set to the new extension's name on one
// or more TagSpecs that require that extension. This typically creates 2
// validation requirements:
//  1) If a tag is on the page whose TagSpec has the requires_extension
//     field set, but that extension is not present, this is an error.
//     (Usage requires extension).
//  2) If an extension is on the page, but no tags indicating usage of that
//     extension via the required_extension field are on the page, this is an
//     error. (Extension requires usage).
//
// The second requirement (extension requires usage) has a few exceptions:
//   1) For older extensions, implemented before these tagspec rules, we
//      do not want to introduce a breaking change, so we exempt these
//      extensions from the usage requirement. New extensions must use ERROR.
//   2) Some extensions, such as `amp-dynamic-css-classes`, do not have any
//      associated tag in the document indicating usage. These extensions do
//      not trigger warnings or errors.
// NEXT AVAILABLE TAG: 4
type ExtensionSpec_ExtensionUsageRequirement int32

const (
	ExtensionSpec_ERROR ExtensionSpec_ExtensionUsageRequirement = 1
	// Exception for exempted extensions. #1 above.
	ExtensionSpec_EXEMPTED ExtensionSpec_ExtensionUsageRequirement = 2
	// Exception for extensions with no usage-indicating tag. #2 above.
	ExtensionSpec_NONE ExtensionSpec_ExtensionUsageRequirement = 3
)

// Enum value maps for ExtensionSpec_ExtensionUsageRequirement.
var (
	ExtensionSpec_ExtensionUsageRequirement_name = map[int32]string{
		1: "ERROR",
		2: "EXEMPTED",
		3: "NONE",
	}
	ExtensionSpec_ExtensionUsageRequirement_value = map[string]int32{
		"ERROR":    1,
		"EXEMPTED": 2,
		"NONE":     3,
	}
)

func (x ExtensionSpec_ExtensionUsageRequirement) Enum() *ExtensionSpec_ExtensionUsageRequirement {
	p := new(ExtensionSpec_ExtensionUsageRequirement)
	*p = x
	return p
}

func (x ExtensionSpec_ExtensionUsageRequirement) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ExtensionSpec_ExtensionUsageRequirement) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[5].Descriptor()
}

func (ExtensionSpec_ExtensionUsageRequirement) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[5]
}

func (x ExtensionSpec_ExtensionUsageRequirement) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ExtensionSpec_ExtensionUsageRequirement) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ExtensionSpec_ExtensionUsageRequirement(num)
	return nil
}

// Deprecated: Use ExtensionSpec_ExtensionUsageRequirement.Descriptor instead.
func (ExtensionSpec_ExtensionUsageRequirement) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{19, 1}
}

// NEXT AVAILABLE TAG: 6
type HtmlFormat_Code int32

const (
	HtmlFormat_UNKNOWN_CODE HtmlFormat_Code = 0 // Never used
	HtmlFormat_AMP          HtmlFormat_Code = 1
	HtmlFormat_AMP4ADS      HtmlFormat_Code = 2
	HtmlFormat_AMP4EMAIL    HtmlFormat_Code = 3
	HtmlFormat_EXPERIMENTAL HtmlFormat_Code = 4 // Currently unused
)

// Enum value maps for HtmlFormat_Code.
var (
	HtmlFormat_Code_name = map[int32]string{
		0: "UNKNOWN_CODE",
		1: "AMP",
		2: "AMP4ADS",
		3: "AMP4EMAIL",
		4: "EXPERIMENTAL",
	}
	HtmlFormat_Code_value = map[string]int32{
		"UNKNOWN_CODE": 0,
		"AMP":          1,
		"AMP4ADS":      2,
		"AMP4EMAIL":    3,
		"EXPERIMENTAL": 4,
	}
)

func (x HtmlFormat_Code) Enum() *HtmlFormat_Code {
	p := new(HtmlFormat_Code)
	*p = x
	return p
}

func (x HtmlFormat_Code) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (HtmlFormat_Code) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[6].Descriptor()
}

func (HtmlFormat_Code) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[6]
}

func (x HtmlFormat_Code) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *HtmlFormat_Code) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = HtmlFormat_Code(num)
	return nil
}

// Deprecated: Use HtmlFormat_Code.Descriptor instead.
func (HtmlFormat_Code) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{20, 0}
}

// NamedId's are used to uniquely identify specific TagSpecs in the
// validator rules in a stable manner. Most TagSpecs have no set NamedId.
// If a TagSpec has a NamedId it must be unique. In other words, no two
// TagSpec's may have the same NamedId except for the NOT_SET (0) value.
// NEXT AVAILABLE TAG: 3
type TagSpec_NamedId int32

const (
	TagSpec_NOT_SET TagSpec_NamedId = 0
	// By convention, the first "word" in the Id should be the tag_name.
	TagSpec_LINK_FONT_STYLESHEET TagSpec_NamedId = 1
	TagSpec_STYLE_AMP_CUSTOM     TagSpec_NamedId = 2
)

// Enum value maps for TagSpec_NamedId.
var (
	TagSpec_NamedId_name = map[int32]string{
		0: "NOT_SET",
		1: "LINK_FONT_STYLESHEET",
		2: "STYLE_AMP_CUSTOM",
	}
	TagSpec_NamedId_value = map[string]int32{
		"NOT_SET":              0,
		"LINK_FONT_STYLESHEET": 1,
		"STYLE_AMP_CUSTOM":     2,
	}
)

func (x TagSpec_NamedId) Enum() *TagSpec_NamedId {
	p := new(TagSpec_NamedId)
	*p = x
	return p
}

func (x TagSpec_NamedId) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TagSpec_NamedId) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[7].Descriptor()
}

func (TagSpec_NamedId) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[7]
}

func (x TagSpec_NamedId) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *TagSpec_NamedId) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = TagSpec_NamedId(num)
	return nil
}

// Deprecated: Use TagSpec_NamedId.Descriptor instead.
func (TagSpec_NamedId) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{21, 0}
}

type ErrorCategory_Code int32

const (
	ErrorCategory_UNKNOWN ErrorCategory_Code = 0
)

// Enum value maps for ErrorCategory_Code.
var (
	ErrorCategory_Code_name = map[int32]string{
		0: "UNKNOWN",
	}
	ErrorCategory_Code_value = map[string]int32{
		"UNKNOWN": 0,
	}
)

func (x ErrorCategory_Code) Enum() *ErrorCategory_Code {
	p := new(ErrorCategory_Code)
	*p = x
	return p
}

func (x ErrorCategory_Code) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ErrorCategory_Code) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[8].Descriptor()
}

func (ErrorCategory_Code) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[8]
}

func (x ErrorCategory_Code) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ErrorCategory_Code) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ErrorCategory_Code(num)
	return nil
}

// Deprecated: Use ErrorCategory_Code.Descriptor instead.
func (ErrorCategory_Code) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{25, 0}
}

// NEXT AVAILABLE TAG: 5
type ValidationError_Severity int32

const (
	ValidationError_UNKNOWN_SEVERITY ValidationError_Severity = 0
	// A document with at least one error of this severity fails validation.
	ValidationError_ERROR ValidationError_Severity = 1
	// A document may have warnings and still pass validation.
	ValidationError_WARNING ValidationError_Severity = 4 // DO NOT REASSIGN the previously used values 2, 3.
)

// Enum value maps for ValidationError_Severity.
var (
	ValidationError_Severity_name = map[int32]string{
		0: "UNKNOWN_SEVERITY",
		1: "ERROR",
		4: "WARNING",
	}
	ValidationError_Severity_value = map[string]int32{
		"UNKNOWN_SEVERITY": 0,
		"ERROR":            1,
		"WARNING":          4,
	}
)

func (x ValidationError_Severity) Enum() *ValidationError_Severity {
	p := new(ValidationError_Severity)
	*p = x
	return p
}

func (x ValidationError_Severity) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ValidationError_Severity) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[9].Descriptor()
}

func (ValidationError_Severity) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[9]
}

func (x ValidationError_Severity) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ValidationError_Severity) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ValidationError_Severity(num)
	return nil
}

// Deprecated: Use ValidationError_Severity.Descriptor instead.
func (ValidationError_Severity) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{26, 0}
}

// NEXT AVAILABLE TAG: 124
type ValidationError_Code int32

const (
	ValidationError_UNKNOWN_CODE                                        ValidationError_Code = 0
	ValidationError_INVALID_DOCTYPE_HTML                                ValidationError_Code = 111
	ValidationError_MANDATORY_TAG_MISSING                               ValidationError_Code = 1
	ValidationError_TAG_REQUIRED_BY_MISSING                             ValidationError_Code = 24
	ValidationError_WARNING_TAG_REQUIRED_BY_MISSING                     ValidationError_Code = 76
	ValidationError_TAG_EXCLUDED_BY_TAG                                 ValidationError_Code = 101
	ValidationError_WARNING_EXTENSION_UNUSED                            ValidationError_Code = 79
	ValidationError_EXTENSION_UNUSED                                    ValidationError_Code = 84
	ValidationError_WARNING_EXTENSION_DEPRECATED_VERSION                ValidationError_Code = 80
	ValidationError_INVALID_EXTENSION_VERSION                           ValidationError_Code = 122
	ValidationError_INVALID_EXTENSION_PATH                              ValidationError_Code = 123
	ValidationError_NON_LTS_SCRIPT_AFTER_LTS                            ValidationError_Code = 112
	ValidationError_LTS_SCRIPT_AFTER_NON_LTS                            ValidationError_Code = 113
	ValidationError_INCORRECT_SCRIPT_RELEASE_VERSION                    ValidationError_Code = 119
	ValidationError_DISALLOWED_AMP_DOMAIN                               ValidationError_Code = 121
	ValidationError_ATTR_REQUIRED_BUT_MISSING                           ValidationError_Code = 61
	ValidationError_DISALLOWED_TAG                                      ValidationError_Code = 2
	ValidationError_GENERAL_DISALLOWED_TAG                              ValidationError_Code = 51
	ValidationError_DISALLOWED_SCRIPT_TAG                               ValidationError_Code = 88
	ValidationError_DISALLOWED_ATTR                                     ValidationError_Code = 3
	ValidationError_DISALLOWED_STYLE_ATTR                               ValidationError_Code = 81
	ValidationError_INVALID_ATTR_VALUE                                  ValidationError_Code = 4
	ValidationError_DUPLICATE_ATTRIBUTE                                 ValidationError_Code = 94
	ValidationError_ATTR_VALUE_REQUIRED_BY_LAYOUT                       ValidationError_Code = 27
	ValidationError_MISSING_LAYOUT_ATTRIBUTES                           ValidationError_Code = 105
	ValidationError_IMPLIED_LAYOUT_INVALID                              ValidationError_Code = 22
	ValidationError_SPECIFIED_LAYOUT_INVALID                            ValidationError_Code = 26
	ValidationError_MANDATORY_ATTR_MISSING                              ValidationError_Code = 5
	ValidationError_MANDATORY_ONEOF_ATTR_MISSING                        ValidationError_Code = 28
	ValidationError_MANDATORY_ANYOF_ATTR_MISSING                        ValidationError_Code = 104
	ValidationError_DUPLICATE_DIMENSION                                 ValidationError_Code = 60
	ValidationError_DUPLICATE_UNIQUE_TAG                                ValidationError_Code = 6
	ValidationError_DUPLICATE_UNIQUE_TAG_WARNING                        ValidationError_Code = 77
	ValidationError_WRONG_PARENT_TAG                                    ValidationError_Code = 7
	ValidationError_STYLESHEET_TOO_LONG                                 ValidationError_Code = 50
	ValidationError_STYLESHEET_AND_INLINE_STYLE_TOO_LONG                ValidationError_Code = 102
	ValidationError_INLINE_STYLE_TOO_LONG                               ValidationError_Code = 103
	ValidationError_INLINE_SCRIPT_TOO_LONG                              ValidationError_Code = 118
	ValidationError_MANDATORY_CDATA_MISSING_OR_INCORRECT                ValidationError_Code = 9
	ValidationError_CDATA_VIOLATES_DENYLIST                             ValidationError_Code = 30
	ValidationError_NON_WHITESPACE_CDATA_ENCOUNTERED                    ValidationError_Code = 82
	ValidationError_INVALID_JSON_CDATA                                  ValidationError_Code = 106
	ValidationError_DEPRECATED_ATTR                                     ValidationError_Code = 11
	ValidationError_DEPRECATED_TAG                                      ValidationError_Code = 12
	ValidationError_MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE          ValidationError_Code = 14
	ValidationError_INVALID_PROPERTY_VALUE_IN_ATTR_VALUE                ValidationError_Code = 15
	ValidationError_MISSING_URL                                         ValidationError_Code = 35
	ValidationError_INVALID_URL                                         ValidationError_Code = 36
	ValidationError_INVALID_URL_PROTOCOL                                ValidationError_Code = 37
	ValidationError_DISALLOWED_DOMAIN                                   ValidationError_Code = 62
	ValidationError_DISALLOWED_RELATIVE_URL                             ValidationError_Code = 49
	ValidationError_DISALLOWED_PROPERTY_IN_ATTR_VALUE                   ValidationError_Code = 16
	ValidationError_MUTUALLY_EXCLUSIVE_ATTRS                            ValidationError_Code = 17
	ValidationError_UNESCAPED_TEMPLATE_IN_ATTR_VALUE                    ValidationError_Code = 18
	ValidationError_TEMPLATE_PARTIAL_IN_ATTR_VALUE                      ValidationError_Code = 19
	ValidationError_TEMPLATE_IN_ATTR_NAME                               ValidationError_Code = 20
	ValidationError_INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT             ValidationError_Code = 21
	ValidationError_DISALLOWED_TAG_ANCESTOR                             ValidationError_Code = 23
	ValidationError_MANDATORY_LAST_CHILD_TAG                            ValidationError_Code = 89
	ValidationError_MANDATORY_TAG_ANCESTOR                              ValidationError_Code = 31
	ValidationError_MANDATORY_TAG_ANCESTOR_WITH_HINT                    ValidationError_Code = 32
	ValidationError_ATTR_DISALLOWED_BY_IMPLIED_LAYOUT                   ValidationError_Code = 33
	ValidationError_ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT                 ValidationError_Code = 34
	ValidationError_INCORRECT_NUM_CHILD_TAGS                            ValidationError_Code = 56
	ValidationError_INCORRECT_MIN_NUM_CHILD_TAGS                        ValidationError_Code = 85
	ValidationError_DISALLOWED_CHILD_TAG_NAME                           ValidationError_Code = 57
	ValidationError_DISALLOWED_FIRST_CHILD_TAG_NAME                     ValidationError_Code = 58
	ValidationError_DISALLOWED_MANUFACTURED_BODY                        ValidationError_Code = 64
	ValidationError_CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT          ValidationError_Code = 66
	ValidationError_MANDATORY_REFERENCE_POINT_MISSING                   ValidationError_Code = 67
	ValidationError_DUPLICATE_REFERENCE_POINT                           ValidationError_Code = 68
	ValidationError_TAG_NOT_ALLOWED_TO_HAVE_SIBLINGS                    ValidationError_Code = 87
	ValidationError_TAG_REFERENCE_POINT_CONFLICT                        ValidationError_Code = 69
	ValidationError_CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT_SINGULAR ValidationError_Code = 70
	// TODO(gregable): Fix this spelling error: 'precede'
	ValidationError_BASE_TAG_MUST_PRECEED_ALL_URLS                               ValidationError_Code = 78
	ValidationError_MISSING_REQUIRED_EXTENSION                                   ValidationError_Code = 83
	ValidationError_ATTR_MISSING_REQUIRED_EXTENSION                              ValidationError_Code = 97
	ValidationError_DOCUMENT_TOO_COMPLEX                                         ValidationError_Code = 86
	ValidationError_INVALID_UTF8                                                 ValidationError_Code = 96
	ValidationError_DOCUMENT_SIZE_LIMIT_EXCEEDED                                 ValidationError_Code = 108
	ValidationError_DEV_MODE_ONLY                                                ValidationError_Code = 109
	ValidationError_AMP_EMAIL_MISSING_STRICT_CSS_ATTR                            ValidationError_Code = 120
	ValidationError_VALUE_SET_MISMATCH                                           ValidationError_Code = 110
	ValidationError_CSS_SYNTAX_INVALID_AT_RULE                                   ValidationError_Code = 29
	ValidationError_CSS_SYNTAX_STRAY_TRAILING_BACKSLASH                          ValidationError_Code = 38
	ValidationError_CSS_SYNTAX_UNTERMINATED_COMMENT                              ValidationError_Code = 39
	ValidationError_CSS_SYNTAX_UNTERMINATED_STRING                               ValidationError_Code = 40
	ValidationError_CSS_SYNTAX_BAD_URL                                           ValidationError_Code = 41
	ValidationError_CSS_SYNTAX_EOF_IN_PRELUDE_OF_QUALIFIED_RULE                  ValidationError_Code = 42
	ValidationError_CSS_SYNTAX_INVALID_DECLARATION                               ValidationError_Code = 43
	ValidationError_CSS_SYNTAX_INCOMPLETE_DECLARATION                            ValidationError_Code = 44
	ValidationError_CSS_SYNTAX_ERROR_IN_PSEUDO_SELECTOR                          ValidationError_Code = 45
	ValidationError_CSS_SYNTAX_MISSING_SELECTOR                                  ValidationError_Code = 46
	ValidationError_CSS_SYNTAX_NOT_A_SELECTOR_START                              ValidationError_Code = 47
	ValidationError_CSS_SYNTAX_UNPARSED_INPUT_REMAINS_IN_SELECTOR                ValidationError_Code = 48
	ValidationError_CSS_SYNTAX_MISSING_URL                                       ValidationError_Code = 52
	ValidationError_CSS_SYNTAX_INVALID_URL                                       ValidationError_Code = 53
	ValidationError_CSS_SYNTAX_INVALID_URL_PROTOCOL                              ValidationError_Code = 54
	ValidationError_CSS_SYNTAX_DISALLOWED_DOMAIN                                 ValidationError_Code = 63
	ValidationError_CSS_SYNTAX_DISALLOWED_RELATIVE_URL                           ValidationError_Code = 55
	ValidationError_CSS_SYNTAX_INVALID_ATTR_SELECTOR                             ValidationError_Code = 59
	ValidationError_CSS_SYNTAX_INVALID_PROPERTY                                  ValidationError_Code = 90
	ValidationError_CSS_SYNTAX_INVALID_PROPERTY_NOLIST                           ValidationError_Code = 95
	ValidationError_CSS_SYNTAX_QUALIFIED_RULE_HAS_NO_DECLARATIONS                ValidationError_Code = 91
	ValidationError_CSS_SYNTAX_DISALLOWED_QUALIFIED_RULE_MUST_BE_INSIDE_KEYFRAME ValidationError_Code = 92
	ValidationError_CSS_SYNTAX_DISALLOWED_KEYFRAME_INSIDE_KEYFRAME               ValidationError_Code = 93
	ValidationError_CSS_SYNTAX_MALFORMED_MEDIA_QUERY                             ValidationError_Code = 98
	ValidationError_CSS_SYNTAX_DISALLOWED_MEDIA_TYPE                             ValidationError_Code = 99
	ValidationError_CSS_SYNTAX_DISALLOWED_MEDIA_FEATURE                          ValidationError_Code = 100
	ValidationError_CSS_SYNTAX_DISALLOWED_ATTR_SELECTOR                          ValidationError_Code = 114
	ValidationError_CSS_SYNTAX_DISALLOWED_PSEUDO_CLASS                           ValidationError_Code = 115
	ValidationError_CSS_SYNTAX_DISALLOWED_PSEUDO_ELEMENT                         ValidationError_Code = 116
	ValidationError_CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE                         ValidationError_Code = 71
	ValidationError_CSS_SYNTAX_DISALLOWED_IMPORTANT                              ValidationError_Code = 117
	ValidationError_CSS_EXCESSIVELY_NESTED                                       ValidationError_Code = 107
	// The following codes are currently used only by A4A CSS validation.
	ValidationError_CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE_WITH_HINT ValidationError_Code = 72
	ValidationError_CSS_SYNTAX_PROPERTY_DISALLOWED_WITHIN_AT_RULE  ValidationError_Code = 73
	ValidationError_CSS_SYNTAX_PROPERTY_DISALLOWED_TOGETHER_WITH   ValidationError_Code = 74
	ValidationError_CSS_SYNTAX_PROPERTY_REQUIRES_QUALIFICATION     ValidationError_Code = 75
)

// Enum value maps for ValidationError_Code.
var (
	ValidationError_Code_name = map[int32]string{
		0:   "UNKNOWN_CODE",
		111: "INVALID_DOCTYPE_HTML",
		1:   "MANDATORY_TAG_MISSING",
		24:  "TAG_REQUIRED_BY_MISSING",
		76:  "WARNING_TAG_REQUIRED_BY_MISSING",
		101: "TAG_EXCLUDED_BY_TAG",
		79:  "WARNING_EXTENSION_UNUSED",
		84:  "EXTENSION_UNUSED",
		80:  "WARNING_EXTENSION_DEPRECATED_VERSION",
		122: "INVALID_EXTENSION_VERSION",
		123: "INVALID_EXTENSION_PATH",
		112: "NON_LTS_SCRIPT_AFTER_LTS",
		113: "LTS_SCRIPT_AFTER_NON_LTS",
		119: "INCORRECT_SCRIPT_RELEASE_VERSION",
		121: "DISALLOWED_AMP_DOMAIN",
		61:  "ATTR_REQUIRED_BUT_MISSING",
		2:   "DISALLOWED_TAG",
		51:  "GENERAL_DISALLOWED_TAG",
		88:  "DISALLOWED_SCRIPT_TAG",
		3:   "DISALLOWED_ATTR",
		81:  "DISALLOWED_STYLE_ATTR",
		4:   "INVALID_ATTR_VALUE",
		94:  "DUPLICATE_ATTRIBUTE",
		27:  "ATTR_VALUE_REQUIRED_BY_LAYOUT",
		105: "MISSING_LAYOUT_ATTRIBUTES",
		22:  "IMPLIED_LAYOUT_INVALID",
		26:  "SPECIFIED_LAYOUT_INVALID",
		5:   "MANDATORY_ATTR_MISSING",
		28:  "MANDATORY_ONEOF_ATTR_MISSING",
		104: "MANDATORY_ANYOF_ATTR_MISSING",
		60:  "DUPLICATE_DIMENSION",
		6:   "DUPLICATE_UNIQUE_TAG",
		77:  "DUPLICATE_UNIQUE_TAG_WARNING",
		7:   "WRONG_PARENT_TAG",
		50:  "STYLESHEET_TOO_LONG",
		102: "STYLESHEET_AND_INLINE_STYLE_TOO_LONG",
		103: "INLINE_STYLE_TOO_LONG",
		118: "INLINE_SCRIPT_TOO_LONG",
		9:   "MANDATORY_CDATA_MISSING_OR_INCORRECT",
		30:  "CDATA_VIOLATES_DENYLIST",
		82:  "NON_WHITESPACE_CDATA_ENCOUNTERED",
		106: "INVALID_JSON_CDATA",
		11:  "DEPRECATED_ATTR",
		12:  "DEPRECATED_TAG",
		14:  "MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE",
		15:  "INVALID_PROPERTY_VALUE_IN_ATTR_VALUE",
		35:  "MISSING_URL",
		36:  "INVALID_URL",
		37:  "INVALID_URL_PROTOCOL",
		62:  "DISALLOWED_DOMAIN",
		49:  "DISALLOWED_RELATIVE_URL",
		16:  "DISALLOWED_PROPERTY_IN_ATTR_VALUE",
		17:  "MUTUALLY_EXCLUSIVE_ATTRS",
		18:  "UNESCAPED_TEMPLATE_IN_ATTR_VALUE",
		19:  "TEMPLATE_PARTIAL_IN_ATTR_VALUE",
		20:  "TEMPLATE_IN_ATTR_NAME",
		21:  "INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT",
		23:  "DISALLOWED_TAG_ANCESTOR",
		89:  "MANDATORY_LAST_CHILD_TAG",
		31:  "MANDATORY_TAG_ANCESTOR",
		32:  "MANDATORY_TAG_ANCESTOR_WITH_HINT",
		33:  "ATTR_DISALLOWED_BY_IMPLIED_LAYOUT",
		34:  "ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT",
		56:  "INCORRECT_NUM_CHILD_TAGS",
		85:  "INCORRECT_MIN_NUM_CHILD_TAGS",
		57:  "DISALLOWED_CHILD_TAG_NAME",
		58:  "DISALLOWED_FIRST_CHILD_TAG_NAME",
		64:  "DISALLOWED_MANUFACTURED_BODY",
		66:  "CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT",
		67:  "MANDATORY_REFERENCE_POINT_MISSING",
		68:  "DUPLICATE_REFERENCE_POINT",
		87:  "TAG_NOT_ALLOWED_TO_HAVE_SIBLINGS",
		69:  "TAG_REFERENCE_POINT_CONFLICT",
		70:  "CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT_SINGULAR",
		78:  "BASE_TAG_MUST_PRECEED_ALL_URLS",
		83:  "MISSING_REQUIRED_EXTENSION",
		97:  "ATTR_MISSING_REQUIRED_EXTENSION",
		86:  "DOCUMENT_TOO_COMPLEX",
		96:  "INVALID_UTF8",
		108: "DOCUMENT_SIZE_LIMIT_EXCEEDED",
		109: "DEV_MODE_ONLY",
		120: "AMP_EMAIL_MISSING_STRICT_CSS_ATTR",
		110: "VALUE_SET_MISMATCH",
		29:  "CSS_SYNTAX_INVALID_AT_RULE",
		38:  "CSS_SYNTAX_STRAY_TRAILING_BACKSLASH",
		39:  "CSS_SYNTAX_UNTERMINATED_COMMENT",
		40:  "CSS_SYNTAX_UNTERMINATED_STRING",
		41:  "CSS_SYNTAX_BAD_URL",
		42:  "CSS_SYNTAX_EOF_IN_PRELUDE_OF_QUALIFIED_RULE",
		43:  "CSS_SYNTAX_INVALID_DECLARATION",
		44:  "CSS_SYNTAX_INCOMPLETE_DECLARATION",
		45:  "CSS_SYNTAX_ERROR_IN_PSEUDO_SELECTOR",
		46:  "CSS_SYNTAX_MISSING_SELECTOR",
		47:  "CSS_SYNTAX_NOT_A_SELECTOR_START",
		48:  "CSS_SYNTAX_UNPARSED_INPUT_REMAINS_IN_SELECTOR",
		52:  "CSS_SYNTAX_MISSING_URL",
		53:  "CSS_SYNTAX_INVALID_URL",
		54:  "CSS_SYNTAX_INVALID_URL_PROTOCOL",
		63:  "CSS_SYNTAX_DISALLOWED_DOMAIN",
		55:  "CSS_SYNTAX_DISALLOWED_RELATIVE_URL",
		59:  "CSS_SYNTAX_INVALID_ATTR_SELECTOR",
		90:  "CSS_SYNTAX_INVALID_PROPERTY",
		95:  "CSS_SYNTAX_INVALID_PROPERTY_NOLIST",
		91:  "CSS_SYNTAX_QUALIFIED_RULE_HAS_NO_DECLARATIONS",
		92:  "CSS_SYNTAX_DISALLOWED_QUALIFIED_RULE_MUST_BE_INSIDE_KEYFRAME",
		93:  "CSS_SYNTAX_DISALLOWED_KEYFRAME_INSIDE_KEYFRAME",
		98:  "CSS_SYNTAX_MALFORMED_MEDIA_QUERY",
		99:  "CSS_SYNTAX_DISALLOWED_MEDIA_TYPE",
		100: "CSS_SYNTAX_DISALLOWED_MEDIA_FEATURE",
		114: "CSS_SYNTAX_DISALLOWED_ATTR_SELECTOR",
		115: "CSS_SYNTAX_DISALLOWED_PSEUDO_CLASS",
		116: "CSS_SYNTAX_DISALLOWED_PSEUDO_ELEMENT",
		71:  "CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE",
		117: "CSS_SYNTAX_DISALLOWED_IMPORTANT",
		107: "CSS_EXCESSIVELY_NESTED",
		72:  "CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE_WITH_HINT",
		73:  "CSS_SYNTAX_PROPERTY_DISALLOWED_WITHIN_AT_RULE",
		74:  "CSS_SYNTAX_PROPERTY_DISALLOWED_TOGETHER_WITH",
		75:  "CSS_SYNTAX_PROPERTY_REQUIRES_QUALIFICATION",
	}
	ValidationError_Code_value = map[string]int32{
		"UNKNOWN_CODE":                                                 0,
		"INVALID_DOCTYPE_HTML":                                         111,
		"MANDATORY_TAG_MISSING":                                        1,
		"TAG_REQUIRED_BY_MISSING":                                      24,
		"WARNING_TAG_REQUIRED_BY_MISSING":                              76,
		"TAG_EXCLUDED_BY_TAG":                                          101,
		"WARNING_EXTENSION_UNUSED":                                     79,
		"EXTENSION_UNUSED":                                             84,
		"WARNING_EXTENSION_DEPRECATED_VERSION":                         80,
		"INVALID_EXTENSION_VERSION":                                    122,
		"INVALID_EXTENSION_PATH":                                       123,
		"NON_LTS_SCRIPT_AFTER_LTS":                                     112,
		"LTS_SCRIPT_AFTER_NON_LTS":                                     113,
		"INCORRECT_SCRIPT_RELEASE_VERSION":                             119,
		"DISALLOWED_AMP_DOMAIN":                                        121,
		"ATTR_REQUIRED_BUT_MISSING":                                    61,
		"DISALLOWED_TAG":                                               2,
		"GENERAL_DISALLOWED_TAG":                                       51,
		"DISALLOWED_SCRIPT_TAG":                                        88,
		"DISALLOWED_ATTR":                                              3,
		"DISALLOWED_STYLE_ATTR":                                        81,
		"INVALID_ATTR_VALUE":                                           4,
		"DUPLICATE_ATTRIBUTE":                                          94,
		"ATTR_VALUE_REQUIRED_BY_LAYOUT":                                27,
		"MISSING_LAYOUT_ATTRIBUTES":                                    105,
		"IMPLIED_LAYOUT_INVALID":                                       22,
		"SPECIFIED_LAYOUT_INVALID":                                     26,
		"MANDATORY_ATTR_MISSING":                                       5,
		"MANDATORY_ONEOF_ATTR_MISSING":                                 28,
		"MANDATORY_ANYOF_ATTR_MISSING":                                 104,
		"DUPLICATE_DIMENSION":                                          60,
		"DUPLICATE_UNIQUE_TAG":                                         6,
		"DUPLICATE_UNIQUE_TAG_WARNING":                                 77,
		"WRONG_PARENT_TAG":                                             7,
		"STYLESHEET_TOO_LONG":                                          50,
		"STYLESHEET_AND_INLINE_STYLE_TOO_LONG":                         102,
		"INLINE_STYLE_TOO_LONG":                                        103,
		"INLINE_SCRIPT_TOO_LONG":                                       118,
		"MANDATORY_CDATA_MISSING_OR_INCORRECT":                         9,
		"CDATA_VIOLATES_DENYLIST":                                      30,
		"NON_WHITESPACE_CDATA_ENCOUNTERED":                             82,
		"INVALID_JSON_CDATA":                                           106,
		"DEPRECATED_ATTR":                                              11,
		"DEPRECATED_TAG":                                               12,
		"MANDATORY_PROPERTY_MISSING_FROM_ATTR_VALUE":                   14,
		"INVALID_PROPERTY_VALUE_IN_ATTR_VALUE":                         15,
		"MISSING_URL":                                                  35,
		"INVALID_URL":                                                  36,
		"INVALID_URL_PROTOCOL":                                         37,
		"DISALLOWED_DOMAIN":                                            62,
		"DISALLOWED_RELATIVE_URL":                                      49,
		"DISALLOWED_PROPERTY_IN_ATTR_VALUE":                            16,
		"MUTUALLY_EXCLUSIVE_ATTRS":                                     17,
		"UNESCAPED_TEMPLATE_IN_ATTR_VALUE":                             18,
		"TEMPLATE_PARTIAL_IN_ATTR_VALUE":                               19,
		"TEMPLATE_IN_ATTR_NAME":                                        20,
		"INCONSISTENT_UNITS_FOR_WIDTH_AND_HEIGHT":                      21,
		"DISALLOWED_TAG_ANCESTOR":                                      23,
		"MANDATORY_LAST_CHILD_TAG":                                     89,
		"MANDATORY_TAG_ANCESTOR":                                       31,
		"MANDATORY_TAG_ANCESTOR_WITH_HINT":                             32,
		"ATTR_DISALLOWED_BY_IMPLIED_LAYOUT":                            33,
		"ATTR_DISALLOWED_BY_SPECIFIED_LAYOUT":                          34,
		"INCORRECT_NUM_CHILD_TAGS":                                     56,
		"INCORRECT_MIN_NUM_CHILD_TAGS":                                 85,
		"DISALLOWED_CHILD_TAG_NAME":                                    57,
		"DISALLOWED_FIRST_CHILD_TAG_NAME":                              58,
		"DISALLOWED_MANUFACTURED_BODY":                                 64,
		"CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT":                   66,
		"MANDATORY_REFERENCE_POINT_MISSING":                            67,
		"DUPLICATE_REFERENCE_POINT":                                    68,
		"TAG_NOT_ALLOWED_TO_HAVE_SIBLINGS":                             87,
		"TAG_REFERENCE_POINT_CONFLICT":                                 69,
		"CHILD_TAG_DOES_NOT_SATISFY_REFERENCE_POINT_SINGULAR":          70,
		"BASE_TAG_MUST_PRECEED_ALL_URLS":                               78,
		"MISSING_REQUIRED_EXTENSION":                                   83,
		"ATTR_MISSING_REQUIRED_EXTENSION":                              97,
		"DOCUMENT_TOO_COMPLEX":                                         86,
		"INVALID_UTF8":                                                 96,
		"DOCUMENT_SIZE_LIMIT_EXCEEDED":                                 108,
		"DEV_MODE_ONLY":                                                109,
		"AMP_EMAIL_MISSING_STRICT_CSS_ATTR":                            120,
		"VALUE_SET_MISMATCH":                                           110,
		"CSS_SYNTAX_INVALID_AT_RULE":                                   29,
		"CSS_SYNTAX_STRAY_TRAILING_BACKSLASH":                          38,
		"CSS_SYNTAX_UNTERMINATED_COMMENT":                              39,
		"CSS_SYNTAX_UNTERMINATED_STRING":                               40,
		"CSS_SYNTAX_BAD_URL":                                           41,
		"CSS_SYNTAX_EOF_IN_PRELUDE_OF_QUALIFIED_RULE":                  42,
		"CSS_SYNTAX_INVALID_DECLARATION":                               43,
		"CSS_SYNTAX_INCOMPLETE_DECLARATION":                            44,
		"CSS_SYNTAX_ERROR_IN_PSEUDO_SELECTOR":                          45,
		"CSS_SYNTAX_MISSING_SELECTOR":                                  46,
		"CSS_SYNTAX_NOT_A_SELECTOR_START":                              47,
		"CSS_SYNTAX_UNPARSED_INPUT_REMAINS_IN_SELECTOR":                48,
		"CSS_SYNTAX_MISSING_URL":                                       52,
		"CSS_SYNTAX_INVALID_URL":                                       53,
		"CSS_SYNTAX_INVALID_URL_PROTOCOL":                              54,
		"CSS_SYNTAX_DISALLOWED_DOMAIN":                                 63,
		"CSS_SYNTAX_DISALLOWED_RELATIVE_URL":                           55,
		"CSS_SYNTAX_INVALID_ATTR_SELECTOR":                             59,
		"CSS_SYNTAX_INVALID_PROPERTY":                                  90,
		"CSS_SYNTAX_INVALID_PROPERTY_NOLIST":                           95,
		"CSS_SYNTAX_QUALIFIED_RULE_HAS_NO_DECLARATIONS":                91,
		"CSS_SYNTAX_DISALLOWED_QUALIFIED_RULE_MUST_BE_INSIDE_KEYFRAME": 92,
		"CSS_SYNTAX_DISALLOWED_KEYFRAME_INSIDE_KEYFRAME":               93,
		"CSS_SYNTAX_MALFORMED_MEDIA_QUERY":                             98,
		"CSS_SYNTAX_DISALLOWED_MEDIA_TYPE":                             99,
		"CSS_SYNTAX_DISALLOWED_MEDIA_FEATURE":                          100,
		"CSS_SYNTAX_DISALLOWED_ATTR_SELECTOR":                          114,
		"CSS_SYNTAX_DISALLOWED_PSEUDO_CLASS":                           115,
		"CSS_SYNTAX_DISALLOWED_PSEUDO_ELEMENT":                         116,
		"CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE":                         71,
		"CSS_SYNTAX_DISALLOWED_IMPORTANT":                              117,
		"CSS_EXCESSIVELY_NESTED":                                       107,
		"CSS_SYNTAX_DISALLOWED_PROPERTY_VALUE_WITH_HINT":               72,
		"CSS_SYNTAX_PROPERTY_DISALLOWED_WITHIN_AT_RULE":                73,
		"CSS_SYNTAX_PROPERTY_DISALLOWED_TOGETHER_WITH":                 74,
		"CSS_SYNTAX_PROPERTY_REQUIRES_QUALIFICATION":                   75,
	}
)

func (x ValidationError_Code) Enum() *ValidationError_Code {
	p := new(ValidationError_Code)
	*p = x
	return p
}

func (x ValidationError_Code) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ValidationError_Code) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[10].Descriptor()
}

func (ValidationError_Code) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[10]
}

func (x ValidationError_Code) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ValidationError_Code) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ValidationError_Code(num)
	return nil
}

// Deprecated: Use ValidationError_Code.Descriptor instead.
func (ValidationError_Code) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{26, 1}
}

// NEXT AVAILABLE TAG: 3
type ValidationResult_Status int32

const (
	ValidationResult_UNKNOWN ValidationResult_Status = 0
	ValidationResult_PASS    ValidationResult_Status = 1
	ValidationResult_FAIL    ValidationResult_Status = 2
)

// Enum value maps for ValidationResult_Status.
var (
	ValidationResult_Status_name = map[int32]string{
		0: "UNKNOWN",
		1: "PASS",
		2: "FAIL",
	}
	ValidationResult_Status_value = map[string]int32{
		"UNKNOWN": 0,
		"PASS":    1,
		"FAIL":    2,
	}
)

func (x ValidationResult_Status) Enum() *ValidationResult_Status {
	p := new(ValidationResult_Status)
	*p = x
	return p
}

func (x ValidationResult_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ValidationResult_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_validator_proto_enumTypes[11].Descriptor()
}

func (ValidationResult_Status) Type() protoreflect.EnumType {
	return &file_validator_proto_enumTypes[11]
}

func (x ValidationResult_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Do not use.
func (x *ValidationResult_Status) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = ValidationResult_Status(num)
	return nil
}

// Deprecated: Use ValidationResult_Status.Descriptor instead.
func (ValidationResult_Status) EnumDescriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{31, 0}
}

// Used for validating attributes that require another attribute for some
// given set of conditions.
// E.g. attr name: "on" if_value_regex: "tap:.*" also_require_attr: "role"
// NEXT AVAILABLE TAG: 3
type AttrTriggerSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set, attribute's value must match to also require attribute(s).
	// If not set, attribute automatically also require attribute(s).
	IfValueRegex *string `protobuf:"bytes,1,opt,name=if_value_regex,json=ifValueRegex" json:"if_value_regex,omitempty"` // case sensitive
	// If set, other attributes - identified by their name string - must
	// be present as well.
	AlsoRequiresAttr []string `protobuf:"bytes,2,rep,name=also_requires_attr,json=alsoRequiresAttr" json:"also_requires_attr,omitempty"`
}

func (x *AttrTriggerSpec) Reset() {
	*x = AttrTriggerSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AttrTriggerSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttrTriggerSpec) ProtoMessage() {}

func (x *AttrTriggerSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AttrTriggerSpec.ProtoReflect.Descriptor instead.
func (*AttrTriggerSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{0}
}

func (x *AttrTriggerSpec) GetIfValueRegex() string {
	if x != nil && x.IfValueRegex != nil {
		return *x.IfValueRegex
	}
	return ""
}

func (x *AttrTriggerSpec) GetAlsoRequiresAttr() []string {
	if x != nil {
		return x.AlsoRequiresAttr
	}
	return nil
}

// Used for validating properties in attribute values. Our validator
// (via parse-viewport.h) implements the parsing algorithm as described here:
// https://drafts.csswg.org/css-device-adapt/#parsing-algorithm
// NEXT AVAILABLE TAG: 5
type PropertySpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Must be lowercase, and will be matched case-insensitively.
	Name      *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Mandatory *bool   `protobuf:"varint,2,opt,name=mandatory" json:"mandatory,omitempty"`
	// Must be lowercase, and will be matched case-insensitively.
	Value       *string  `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
	ValueDouble *float64 `protobuf:"fixed64,4,opt,name=value_double,json=valueDouble" json:"value_double,omitempty"` // } end oneof
}

func (x *PropertySpec) Reset() {
	*x = PropertySpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PropertySpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PropertySpec) ProtoMessage() {}

func (x *PropertySpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PropertySpec.ProtoReflect.Descriptor instead.
func (*PropertySpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{1}
}

func (x *PropertySpec) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *PropertySpec) GetMandatory() bool {
	if x != nil && x.Mandatory != nil {
		return *x.Mandatory
	}
	return false
}

func (x *PropertySpec) GetValue() string {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return ""
}

func (x *PropertySpec) GetValueDouble() float64 {
	if x != nil && x.ValueDouble != nil {
		return *x.ValueDouble
	}
	return 0
}

// NEXT AVAILABLE TAG: 2
type PropertySpecList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Properties []*PropertySpec `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"`
}

func (x *PropertySpecList) Reset() {
	*x = PropertySpecList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PropertySpecList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PropertySpecList) ProtoMessage() {}

func (x *PropertySpecList) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PropertySpecList.ProtoReflect.Descriptor instead.
func (*PropertySpecList) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{2}
}

func (x *PropertySpecList) GetProperties() []*PropertySpec {
	if x != nil {
		return x.Properties
	}
	return nil
}

// Used for validating urls in attribute values (such as href/src/srcset).
// NEXT AVAILABLE TAG: 5
type UrlSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// protocol must be in lowercase (e.g. "javascript" not "JavaScript").
	Protocol      []string `protobuf:"bytes,1,rep,name=protocol" json:"protocol,omitempty"`
	AllowRelative *bool    `protobuf:"varint,2,opt,name=allow_relative,json=allowRelative,def=1" json:"allow_relative,omitempty"`
	// Whether the empty string '' is allowed for this URL value.
	AllowEmpty *bool `protobuf:"varint,3,opt,name=allow_empty,json=allowEmpty,def=0" json:"allow_empty,omitempty"`
}

// Default values for UrlSpec fields.
const (
	Default_UrlSpec_AllowRelative = bool(true)
	Default_UrlSpec_AllowEmpty    = bool(false)
)

func (x *UrlSpec) Reset() {
	*x = UrlSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UrlSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UrlSpec) ProtoMessage() {}

func (x *UrlSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UrlSpec.ProtoReflect.Descriptor instead.
func (*UrlSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{3}
}

func (x *UrlSpec) GetProtocol() []string {
	if x != nil {
		return x.Protocol
	}
	return nil
}

func (x *UrlSpec) GetAllowRelative() bool {
	if x != nil && x.AllowRelative != nil {
		return *x.AllowRelative
	}
	return Default_UrlSpec_AllowRelative
}

func (x *UrlSpec) GetAllowEmpty() bool {
	if x != nil && x.AllowEmpty != nil {
		return *x.AllowEmpty
	}
	return Default_UrlSpec_AllowEmpty
}

// NEXT AVAILABLE TAG: 4
type CssDeclaration struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the declaration (e.g. display). Use lower-case attribute names
	// only.
	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// This would be a oneof, but this file only uses features in protobuf 2.5.0.
	// begin oneof {
	// The valid values of the declaration (e.g. block).
	ValueCasei      []string `protobuf:"bytes,2,rep,name=value_casei,json=valueCasei" json:"value_casei,omitempty"`
	ValueRegexCasei *string  `protobuf:"bytes,3,opt,name=value_regex_casei,json=valueRegexCasei" json:"value_regex_casei,omitempty"` // } end oneof
}

func (x *CssDeclaration) Reset() {
	*x = CssDeclaration{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CssDeclaration) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CssDeclaration) ProtoMessage() {}

func (x *CssDeclaration) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CssDeclaration.ProtoReflect.Descriptor instead.
func (*CssDeclaration) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{4}
}

func (x *CssDeclaration) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *CssDeclaration) GetValueCasei() []string {
	if x != nil {
		return x.ValueCasei
	}
	return nil
}

func (x *CssDeclaration) GetValueRegexCasei() string {
	if x != nil && x.ValueRegexCasei != nil {
		return *x.ValueRegexCasei
	}
	return ""
}

// Attributes that are not covered by at least one of these specs are
// disallowed. Within a given context (e.g., for a given TagSpec),
// names are unique.
// NEXT AVAILABLE TAG: 29
type AttrSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If provided, the Type Identifier(s) that either enable or disable
	// this AttrSpec. If a Type Identifier is in enabled_by then this
	// AttrSpec will be used in validating parsed documents with that Type
	// Identifier. If a Type Identifier is in disabled_by then this
	// AttrSpec will not be used in validating parsed documents with that
	// Type Identifier. An AttrSpec can not have both enabled_by and disabled_by
	// set.
	EnabledBy  []string `protobuf:"bytes,23,rep,name=enabled_by,json=enabledBy" json:"enabled_by,omitempty"`
	DisabledBy []string `protobuf:"bytes,24,rep,name=disabled_by,json=disabledBy" json:"disabled_by,omitempty"`
	// Use lower-case attribute names only.
	Name             *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	AlternativeNames []string `protobuf:"bytes,2,rep,name=alternative_names,json=alternativeNames" json:"alternative_names,omitempty"`
	Mandatory        *bool    `protobuf:"varint,3,opt,name=mandatory" json:"mandatory,omitempty"`
	// Within the context of the tag, *exactly one* of the attributes tagged
	// with this identifier must be present. Per convention, this identifier
	// should list the tags participating in the mandatory oneof:
	// e.g. mandatory_oneof: "['foo', 'bar']"
	MandatoryOneof *string `protobuf:"bytes,12,opt,name=mandatory_oneof,json=mandatoryOneof" json:"mandatory_oneof,omitempty"`
	// Within the context of the tag, *at least one* of the attributes tagged
	// with this identifier must be present. Per convention, this identifier
	// should list the tags participating in the mandatory oneof:
	// e.g. mandatory_oneof: "['foo', 'bar']"
	MandatoryAnyof *string `protobuf:"bytes,21,opt,name=mandatory_anyof,json=mandatoryAnyof" json:"mandatory_anyof,omitempty"`
	// The attribute value must be equal to the value in this field.
	Value           []string `protobuf:"bytes,4,rep,name=value" json:"value,omitempty"`                                              // case sensitive
	ValueCasei      []string `protobuf:"bytes,18,rep,name=value_casei,json=valueCasei" json:"value_casei,omitempty"`                 // case insensitive
	ValueRegex      *string  `protobuf:"bytes,15,opt,name=value_regex,json=valueRegex" json:"value_regex,omitempty"`                 // case sensitive
	ValueRegexCasei *string  `protobuf:"bytes,5,opt,name=value_regex_casei,json=valueRegexCasei" json:"value_regex_casei,omitempty"` // case insensitive
	ValueUrl        *UrlSpec `protobuf:"bytes,14,opt,name=value_url,json=valueUrl" json:"value_url,omitempty"`
	// validates against a list of properties (see PropertySpec).
	ValueProperties *PropertySpecList `protobuf:"bytes,11,opt,name=value_properties,json=valueProperties" json:"value_properties,omitempty"`
	// If set, the attribute value will be evaluated using the matching document
	// level CSS rules. This flag is used for `style` attributes. If
	// `value_doc_css` is set, only non-SVG css is applied. If `value_doc_css_svg`
	// is set, SVG-specific CSS rules are also allowed for this attribute value.
	ValueDocCss    *bool              `protobuf:"varint,27,opt,name=value_doc_css,json=valueDocCss" json:"value_doc_css,omitempty"`
	ValueDocSvgCss *bool              `protobuf:"varint,28,opt,name=value_doc_svg_css,json=valueDocSvgCss" json:"value_doc_svg_css,omitempty"` // } end oneof
	AddValueToSet  *AttrSpec_ValueSet `protobuf:"varint,25,opt,name=add_value_to_set,json=addValueToSet,enum=amp.validator.AttrSpec_ValueSet" json:"add_value_to_set,omitempty"`
	ValueOneofSet  *AttrSpec_ValueSet `protobuf:"varint,26,opt,name=value_oneof_set,json=valueOneofSet,enum=amp.validator.AttrSpec_ValueSet" json:"value_oneof_set,omitempty"`
	Trigger        *AttrTriggerSpec   `protobuf:"bytes,16,opt,name=trigger" json:"trigger,omitempty"`
	// If set, then the attribute value may not match this regex, which is
	// always applied case-insensitively and as a partial match.
	DisallowedValueRegex *string `protobuf:"bytes,6,opt,name=disallowed_value_regex,json=disallowedValueRegex" json:"disallowed_value_regex,omitempty"`
	// If set, generates a DEPRECATED_ATTR error with severity WARNING.
	// The value of the deprecation field indicates what to use instead,
	// e.g. the name of an attribute or tag.
	Deprecation *string `protobuf:"bytes,7,opt,name=deprecation" json:"deprecation,omitempty"`
	// If provided, a URL which links to the AMP HTML spec for this deprecation.
	DeprecationUrl *string `protobuf:"bytes,8,opt,name=deprecation_url,json=deprecationUrl" json:"deprecation_url,omitempty"`
	// Valid CSS declarations.
	CssDeclaration []*CssDeclaration `protobuf:"bytes,20,rep,name=css_declaration,json=cssDeclaration" json:"css_declaration,omitempty"`
	// If set true, the TagSpec containing this AttrSpec will be evaluated first
	// for any encountered tag which matches the tag name and this attribute spec.
	// May only be set for an AttrSpec where mandatory=true and type matches those
	// specified in the comments of DispatchKeyType above.
	DispatchKey *AttrSpec_DispatchKeyType `protobuf:"varint,13,opt,name=dispatch_key,json=dispatchKey,enum=amp.validator.AttrSpec_DispatchKeyType,def=0" json:"dispatch_key,omitempty"`
	// If set to true, the TagSpec containing this AttrSpec implicitly has this
	// attribute and the attribute is considered valid.
	Implicit *bool `protobuf:"varint,17,opt,name=implicit,def=0" json:"implicit,omitempty"`
	// If set, this attr is considered part of an amp extended component, and
	// requires that the named extended component script tag is present on the
	// page.
	RequiresExtension []string `protobuf:"bytes,19,rep,name=requires_extension,json=requiresExtension" json:"requires_extension,omitempty"`
	// If set, this attr is invalid unless the current tag has an ancestor
	// tag which set one or more of the required markers.
	RequiresAncestor *AncestorMarker `protobuf:"bytes,22,opt,name=requires_ancestor,json=requiresAncestor" json:"requires_ancestor,omitempty"`
}

// Default values for AttrSpec fields.
const (
	Default_AttrSpec_DispatchKey = AttrSpec_NONE_DISPATCH
	Default_AttrSpec_Implicit    = bool(false)
)

func (x *AttrSpec) Reset() {
	*x = AttrSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AttrSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttrSpec) ProtoMessage() {}

func (x *AttrSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AttrSpec.ProtoReflect.Descriptor instead.
func (*AttrSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{5}
}

func (x *AttrSpec) GetEnabledBy() []string {
	if x != nil {
		return x.EnabledBy
	}
	return nil
}

func (x *AttrSpec) GetDisabledBy() []string {
	if x != nil {
		return x.DisabledBy
	}
	return nil
}

func (x *AttrSpec) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *AttrSpec) GetAlternativeNames() []string {
	if x != nil {
		return x.AlternativeNames
	}
	return nil
}

func (x *AttrSpec) GetMandatory() bool {
	if x != nil && x.Mandatory != nil {
		return *x.Mandatory
	}
	return false
}

func (x *AttrSpec) GetMandatoryOneof() string {
	if x != nil && x.MandatoryOneof != nil {
		return *x.MandatoryOneof
	}
	return ""
}

func (x *AttrSpec) GetMandatoryAnyof() string {
	if x != nil && x.MandatoryAnyof != nil {
		return *x.MandatoryAnyof
	}
	return ""
}

func (x *AttrSpec) GetValue() []string {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *AttrSpec) GetValueCasei() []string {
	if x != nil {
		return x.ValueCasei
	}
	return nil
}

func (x *AttrSpec) GetValueRegex() string {
	if x != nil && x.ValueRegex != nil {
		return *x.ValueRegex
	}
	return ""
}

func (x *AttrSpec) GetValueRegexCasei() string {
	if x != nil && x.ValueRegexCasei != nil {
		return *x.ValueRegexCasei
	}
	return ""
}

func (x *AttrSpec) GetValueUrl() *UrlSpec {
	if x != nil {
		return x.ValueUrl
	}
	return nil
}

func (x *AttrSpec) GetValueProperties() *PropertySpecList {
	if x != nil {
		return x.ValueProperties
	}
	return nil
}

func (x *AttrSpec) GetValueDocCss() bool {
	if x != nil && x.ValueDocCss != nil {
		return *x.ValueDocCss
	}
	return false
}

func (x *AttrSpec) GetValueDocSvgCss() bool {
	if x != nil && x.ValueDocSvgCss != nil {
		return *x.ValueDocSvgCss
	}
	return false
}

func (x *AttrSpec) GetAddValueToSet() AttrSpec_ValueSet {
	if x != nil && x.AddValueToSet != nil {
		return *x.AddValueToSet
	}
	return AttrSpec_UNKNOWN_VALUESET
}

func (x *AttrSpec) GetValueOneofSet() AttrSpec_ValueSet {
	if x != nil && x.ValueOneofSet != nil {
		return *x.ValueOneofSet
	}
	return AttrSpec_UNKNOWN_VALUESET
}

func (x *AttrSpec) GetTrigger() *AttrTriggerSpec {
	if x != nil {
		return x.Trigger
	}
	return nil
}

func (x *AttrSpec) GetDisallowedValueRegex() string {
	if x != nil && x.DisallowedValueRegex != nil {
		return *x.DisallowedValueRegex
	}
	return ""
}

func (x *AttrSpec) GetDeprecation() string {
	if x != nil && x.Deprecation != nil {
		return *x.Deprecation
	}
	return ""
}

func (x *AttrSpec) GetDeprecationUrl() string {
	if x != nil && x.DeprecationUrl != nil {
		return *x.DeprecationUrl
	}
	return ""
}

func (x *AttrSpec) GetCssDeclaration() []*CssDeclaration {
	if x != nil {
		return x.CssDeclaration
	}
	return nil
}

func (x *AttrSpec) GetDispatchKey() AttrSpec_DispatchKeyType {
	if x != nil && x.DispatchKey != nil {
		return *x.DispatchKey
	}
	return Default_AttrSpec_DispatchKey
}

func (x *AttrSpec) GetImplicit() bool {
	if x != nil && x.Implicit != nil {
		return *x.Implicit
	}
	return Default_AttrSpec_Implicit
}

func (x *AttrSpec) GetRequiresExtension() []string {
	if x != nil {
		return x.RequiresExtension
	}
	return nil
}

func (x *AttrSpec) GetRequiresAncestor() *AncestorMarker {
	if x != nil {
		return x.RequiresAncestor
	}
	return nil
}

// Some tags share several attributes, so they're identified by unique key
// (see the attr_lists map in ValidatorRules).
// NEXT AVAILABLE TAG: 3
type AttrList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name  *string     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Attrs []*AttrSpec `protobuf:"bytes,2,rep,name=attrs" json:"attrs,omitempty"`
}

func (x *AttrList) Reset() {
	*x = AttrList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AttrList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AttrList) ProtoMessage() {}

func (x *AttrList) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AttrList.ProtoReflect.Descriptor instead.
func (*AttrList) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{6}
}

func (x *AttrList) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *AttrList) GetAttrs() []*AttrSpec {
	if x != nil {
		return x.Attrs
	}
	return nil
}

// A list of allowed tags for descendants of any level (children, grandchildren,
// great-grandchildren, etc).
// NEXT AVAILABLE TAG: 3
type DescendantTagList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Tag  []string `protobuf:"bytes,2,rep,name=tag" json:"tag,omitempty"`
}

func (x *DescendantTagList) Reset() {
	*x = DescendantTagList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DescendantTagList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DescendantTagList) ProtoMessage() {}

func (x *DescendantTagList) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DescendantTagList.ProtoReflect.Descriptor instead.
func (*DescendantTagList) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{7}
}

func (x *DescendantTagList) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *DescendantTagList) GetTag() []string {
	if x != nil {
		return x.Tag
	}
	return nil
}

// Some style blocks share long lists of declarations, so they're identified by
// unique key.
// NEXT AVAILABLE TAG: 3
type DeclarationList struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        *string           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Declaration []*CssDeclaration `protobuf:"bytes,2,rep,name=declaration" json:"declaration,omitempty"`
}

func (x *DeclarationList) Reset() {
	*x = DeclarationList{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeclarationList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeclarationList) ProtoMessage() {}

func (x *DeclarationList) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeclarationList.ProtoReflect.Descriptor instead.
func (*DeclarationList) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{8}
}

func (x *DeclarationList) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *DeclarationList) GetDeclaration() []*CssDeclaration {
	if x != nil {
		return x.Declaration
	}
	return nil
}

// Regex which, if matches the cdata of a tag, causes the tag validation to
// fail.
// NEXT AVAILABLE TAG: 3
type DisallowedCDataRegex struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Syntax is partial match, use ^ and $ if you want global match.
	Regex        *string `protobuf:"bytes,1,opt,name=regex" json:"regex,omitempty"`
	ErrorMessage *string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"`
}

func (x *DisallowedCDataRegex) Reset() {
	*x = DisallowedCDataRegex{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DisallowedCDataRegex) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DisallowedCDataRegex) ProtoMessage() {}

func (x *DisallowedCDataRegex) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DisallowedCDataRegex.ProtoReflect.Descriptor instead.
func (*DisallowedCDataRegex) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{9}
}

func (x *DisallowedCDataRegex) GetRegex() string {
	if x != nil && x.Regex != nil {
		return *x.Regex
	}
	return ""
}

func (x *DisallowedCDataRegex) GetErrorMessage() string {
	if x != nil && x.ErrorMessage != nil {
		return *x.ErrorMessage
	}
	return ""
}

// This spec is used when parsing a media query inside a CSS @media rule.
// NEXT AVAILABLE TAG: 5
type MediaQuerySpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If issues_as_error is true, then parsing errors and invalid
	// types / features will be treated as validator errors, otherwise warnings.
	IssuesAsError *bool `protobuf:"varint,1,opt,name=issues_as_error,json=issuesAsError,def=0" json:"issues_as_error,omitempty"`
	// These are the media query types and features allowed within the stylesheet.
	// http://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#Syntax
	Type    []string `protobuf:"bytes,2,rep,name=type" json:"type,omitempty"`
	Feature []string `protobuf:"bytes,3,rep,name=feature" json:"feature,omitempty"`
}

// Default values for MediaQuerySpec fields.
const (
	Default_MediaQuerySpec_IssuesAsError = bool(false)
)

func (x *MediaQuerySpec) Reset() {
	*x = MediaQuerySpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MediaQuerySpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MediaQuerySpec) ProtoMessage() {}

func (x *MediaQuerySpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MediaQuerySpec.ProtoReflect.Descriptor instead.
func (*MediaQuerySpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{10}
}

func (x *MediaQuerySpec) GetIssuesAsError() bool {
	if x != nil && x.IssuesAsError != nil {
		return *x.IssuesAsError
	}
	return Default_MediaQuerySpec_IssuesAsError
}

func (x *MediaQuerySpec) GetType() []string {
	if x != nil {
		return x.Type
	}
	return nil
}

func (x *MediaQuerySpec) GetFeature() []string {
	if x != nil {
		return x.Feature
	}
	return nil
}

// This spec is used when parsing a CSS selector group as the prelude of a CSS
// qualified rule. For example "div.foo span.bar". If no SelectorSpec is
// provided, the selector groups are unconstrained.
// NEXT AVAILABLE TAG: 4
type SelectorSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Allowed attribute selector names. For example `foo` in the selector
	// `.a[foo=bar]`.
	AttributeName []string `protobuf:"bytes,1,rep,name=attribute_name,json=attributeName" json:"attribute_name,omitempty"`
	// Allowed pseudo class names. For example `checked` in `.a:checked`.
	PseudoClass []string `protobuf:"bytes,2,rep,name=pseudo_class,json=pseudoClass" json:"pseudo_class,omitempty"`
	// Allowed pseudo element names. For example `before` in `.a::before`.
	PseudoElement []string `protobuf:"bytes,3,rep,name=pseudo_element,json=pseudoElement" json:"pseudo_element,omitempty"`
}

func (x *SelectorSpec) Reset() {
	*x = SelectorSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SelectorSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SelectorSpec) ProtoMessage() {}

func (x *SelectorSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SelectorSpec.ProtoReflect.Descriptor instead.
func (*SelectorSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{11}
}

func (x *SelectorSpec) GetAttributeName() []string {
	if x != nil {
		return x.AttributeName
	}
	return nil
}

func (x *SelectorSpec) GetPseudoClass() []string {
	if x != nil {
		return x.PseudoClass
	}
	return nil
}

func (x *SelectorSpec) GetPseudoElement() []string {
	if x != nil {
		return x.PseudoElement
	}
	return nil
}

// This spec is used by our CSS parser to determine what AT rules are allowed
// in the CSS spec. The term 'rule' here refers to the AT Rule in CSS, not a
// validation rule.
// NEXT AVAILABLE TAG: 4
type AtRuleSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the AT rule to parse. Do not include the '@' symbol (e.g. '@media'
	// should be encoded as 'media'.
	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// A MediaQuerySpec may only be set for an AtRuleSpec with the name
	// "media". If not set, media queries will be left unparsed, so no errors or
	// warnings about them will be reported.
	MediaQuerySpec *MediaQuerySpec `protobuf:"bytes,3,opt,name=media_query_spec,json=mediaQuerySpec" json:"media_query_spec,omitempty"`
}

func (x *AtRuleSpec) Reset() {
	*x = AtRuleSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AtRuleSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AtRuleSpec) ProtoMessage() {}

func (x *AtRuleSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AtRuleSpec.ProtoReflect.Descriptor instead.
func (*AtRuleSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{12}
}

func (x *AtRuleSpec) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *AtRuleSpec) GetMediaQuerySpec() *MediaQuerySpec {
	if x != nil {
		return x.MediaQuerySpec
	}
	return nil
}

// NEXT AVAILABLE TAG: 10
type CssSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Spec for how to parse CSS AT rules, one per AT rule. Must not contain
	// duplicate names, and must contain at least one entry for the default.
	AtRuleSpec []*AtRuleSpec `protobuf:"bytes,1,rep,name=at_rule_spec,json=atRuleSpec" json:"at_rule_spec,omitempty"`
	// Enables checks specific to the draft A4A specification.
	// TODO(powdercloud): Make this more generic.
	ValidateAmp4Ads *bool `protobuf:"varint,5,opt,name=validate_amp4ads,json=validateAmp4ads" json:"validate_amp4ads,omitempty"`
	// Enables checks specific to the style[keyframes] specification.
	// TODO(chenshay): Make this more generic.
	ValidateKeyframes *bool `protobuf:"varint,6,opt,name=validate_keyframes,json=validateKeyframes" json:"validate_keyframes,omitempty"`
	// Any declaration listed here are allowed.
	Declaration []string `protobuf:"bytes,7,rep,name=declaration" json:"declaration,omitempty"`
	// If false, declarations tagged with `!important` are considered errors.
	// Most AMP stylesheets disallow `!important` to reserve this override
	// for AMP's own styles.
	AllowImportant *bool         `protobuf:"varint,8,opt,name=allow_important,json=allowImportant,def=0" json:"allow_important,omitempty"`
	SelectorSpec   *SelectorSpec `protobuf:"bytes,9,opt,name=selector_spec,json=selectorSpec" json:"selector_spec,omitempty"`
}

// Default values for CssSpec fields.
const (
	Default_CssSpec_AllowImportant = bool(false)
)

func (x *CssSpec) Reset() {
	*x = CssSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CssSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CssSpec) ProtoMessage() {}

func (x *CssSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CssSpec.ProtoReflect.Descriptor instead.
func (*CssSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{13}
}

func (x *CssSpec) GetAtRuleSpec() []*AtRuleSpec {
	if x != nil {
		return x.AtRuleSpec
	}
	return nil
}

func (x *CssSpec) GetValidateAmp4Ads() bool {
	if x != nil && x.ValidateAmp4Ads != nil {
		return *x.ValidateAmp4Ads
	}
	return false
}

func (x *CssSpec) GetValidateKeyframes() bool {
	if x != nil && x.ValidateKeyframes != nil {
		return *x.ValidateKeyframes
	}
	return false
}

func (x *CssSpec) GetDeclaration() []string {
	if x != nil {
		return x.Declaration
	}
	return nil
}

func (x *CssSpec) GetAllowImportant() bool {
	if x != nil && x.AllowImportant != nil {
		return *x.AllowImportant
	}
	return Default_CssSpec_AllowImportant
}

func (x *CssSpec) GetSelectorSpec() *SelectorSpec {
	if x != nil {
		return x.SelectorSpec
	}
	return nil
}

// NEXT AVAILABLE TAG: 12
type CdataSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set, the cdata contents cannot be greater than this length, in bytes. A
	// value of -2 (default) indicates that there is no limit (unlimited). A value
	// of -1 will always cause validation failure on match. -1 is used to
	// implement the `amp-custom-length-check` attribute:
	// (https://github.com/ampproject/amphtml/issues/22315#issuecomment-496681165)
	MaxBytes *int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,def=-2" json:"max_bytes,omitempty"`
	// If provided, a URL which linking to a section / sentence in the
	// AMP HTML spec.
	MaxBytesSpecUrl *string `protobuf:"bytes,2,opt,name=max_bytes_spec_url,json=maxBytesSpecUrl" json:"max_bytes_spec_url,omitempty"`
	// If non-empty, the text between the start / end tag must match this value.
	MandatoryCdata *string `protobuf:"bytes,3,opt,name=mandatory_cdata,json=mandatoryCdata" json:"mandatory_cdata,omitempty"`
	// If non-empty, the text between the start / end tag must match this regex.
	CdataRegex *string `protobuf:"bytes,6,opt,name=cdata_regex,json=cdataRegex" json:"cdata_regex,omitempty"`
	// If at least one CssSpec is provided, this cdata field will be parsed
	// as CSS3, and any parsing errors will become validation errors.
	CssSpec *CssSpec `protobuf:"bytes,7,opt,name=css_spec,json=cssSpec" json:"css_spec,omitempty"`
	// If set to true, then only whitespace may be in the cdata contents.
	// This is useful for script tags that reference extensions etc.
	WhitespaceOnly *bool `protobuf:"varint,8,opt,name=whitespace_only,json=whitespaceOnly" json:"whitespace_only,omitempty"` // } end oneof
	// If any of these regexes match, then this cdata spec does not validate.
	DisallowedCdataRegex []*DisallowedCDataRegex `protobuf:"bytes,4,rep,name=disallowed_cdata_regex,json=disallowedCdataRegex" json:"disallowed_cdata_regex,omitempty"`
	// If true, the contents of this tag's CDATA text will be counted against the
	// document level DocCssSpec CSS lengths.
	DocCssBytes *bool `protobuf:"varint,11,opt,name=doc_css_bytes,json=docCssBytes" json:"doc_css_bytes,omitempty"`
}

// Default values for CdataSpec fields.
const (
	Default_CdataSpec_MaxBytes = int32(-2)
)

func (x *CdataSpec) Reset() {
	*x = CdataSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CdataSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CdataSpec) ProtoMessage() {}

func (x *CdataSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CdataSpec.ProtoReflect.Descriptor instead.
func (*CdataSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{14}
}

func (x *CdataSpec) GetMaxBytes() int32 {
	if x != nil && x.MaxBytes != nil {
		return *x.MaxBytes
	}
	return Default_CdataSpec_MaxBytes
}

func (x *CdataSpec) GetMaxBytesSpecUrl() string {
	if x != nil && x.MaxBytesSpecUrl != nil {
		return *x.MaxBytesSpecUrl
	}
	return ""
}

func (x *CdataSpec) GetMandatoryCdata() string {
	if x != nil && x.MandatoryCdata != nil {
		return *x.MandatoryCdata
	}
	return ""
}

func (x *CdataSpec) GetCdataRegex() string {
	if x != nil && x.CdataRegex != nil {
		return *x.CdataRegex
	}
	return ""
}

func (x *CdataSpec) GetCssSpec() *CssSpec {
	if x != nil {
		return x.CssSpec
	}
	return nil
}

func (x *CdataSpec) GetWhitespaceOnly() bool {
	if x != nil && x.WhitespaceOnly != nil {
		return *x.WhitespaceOnly
	}
	return false
}

func (x *CdataSpec) GetDisallowedCdataRegex() []*DisallowedCDataRegex {
	if x != nil {
		return x.DisallowedCdataRegex
	}
	return nil
}

func (x *CdataSpec) GetDocCssBytes() bool {
	if x != nil && x.DocCssBytes != nil {
		return *x.DocCssBytes
	}
	return false
}

// Specifies which AMP Layouts are supported by a given element.
// For the purpose of the validator, this specifies which
// values for layout, height, and width attributes are allowed. Also see
// https://github.com/ampproject/amphtml/blob/main/docs/spec/amp-html-layout.md
// TODO(johannes): Make the error messages around layouts better. This
// may require revamping the documentation for elements and/or the above spec,
// so that a user gets more clearly informed about which layouts are
// applicable to a given tag, what happens when layout attribute or other
// attributes are not set, etc.
// NEXT AVAILABLE TAG: 4
type AmpLayout struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Specifies which layouts are supported by this element.
	SupportedLayouts []AmpLayout_Layout `protobuf:"varint,1,rep,name=supported_layouts,json=supportedLayouts,enum=amp.validator.AmpLayout_Layout" json:"supported_layouts,omitempty"`
	// Specifies whether this element has default dimensions. This corresponds
	// to being allowlisted in naturalDimensions_ in
	// https://github.com/ampproject/amphtml/blob/main/src/static-layout.js.
	DefinesDefaultWidth  *bool `protobuf:"varint,2,opt,name=defines_default_width,json=definesDefaultWidth" json:"defines_default_width,omitempty"`
	DefinesDefaultHeight *bool `protobuf:"varint,3,opt,name=defines_default_height,json=definesDefaultHeight" json:"defines_default_height,omitempty"`
}

func (x *AmpLayout) Reset() {
	*x = AmpLayout{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AmpLayout) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AmpLayout) ProtoMessage() {}

func (x *AmpLayout) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AmpLayout.ProtoReflect.Descriptor instead.
func (*AmpLayout) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{15}
}

func (x *AmpLayout) GetSupportedLayouts() []AmpLayout_Layout {
	if x != nil {
		return x.SupportedLayouts
	}
	return nil
}

func (x *AmpLayout) GetDefinesDefaultWidth() bool {
	if x != nil && x.DefinesDefaultWidth != nil {
		return *x.DefinesDefaultWidth
	}
	return false
}

func (x *AmpLayout) GetDefinesDefaultHeight() bool {
	if x != nil && x.DefinesDefaultHeight != nil {
		return *x.DefinesDefaultHeight
	}
	return false
}

// An AncestorMarker is a state maintained on the stack of matching tags.
// When a TagSpec with an AncestorMarker matches, this Marker is placed on the
// stack until the matched html tag is popped from the stack. Other rules may be
// triggered by the presence of a specific AncestorMarker on the stack.
// NEXT AVAILABLE TAG: 2
type AncestorMarker struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Marker []AncestorMarker_Marker `protobuf:"varint,1,rep,name=marker,enum=amp.validator.AncestorMarker_Marker" json:"marker,omitempty"`
}

func (x *AncestorMarker) Reset() {
	*x = AncestorMarker{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AncestorMarker) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AncestorMarker) ProtoMessage() {}

func (x *AncestorMarker) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AncestorMarker.ProtoReflect.Descriptor instead.
func (*AncestorMarker) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{16}
}

func (x *AncestorMarker) GetMarker() []AncestorMarker_Marker {
	if x != nil {
		return x.Marker
	}
	return nil
}

// TagSpec::child_tags uses this configuration to specify which child tags
// are expected for a specific tag.
//
// Matching child tags is done by tag name, while the parent is
// matched by TagSpec. The reason for this is that matching by tag
// spec name would produce less useful error messages, because we want
// to be able to produce a good message even if the tag spec name
// could not be determined because the enclosed child tag is invalid
// (no TagSpec matches). By doing a tag name match, we can produce a
// reasonable error regardless if a child tag was misplaced.
// NEXT AVAILABLE TAG: 5
type ChildTagSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Unless set to -1 (the default), the parent tag must have exactly
	// |mandatory_num_child_tags| immediate child tags.
	MandatoryNumChildTags *int32 `protobuf:"varint,1,opt,name=mandatory_num_child_tags,json=mandatoryNumChildTags,def=-1" json:"mandatory_num_child_tags,omitempty"`
	// If at least one tag name is specified, then the first child of the
	// parent tag must have one of the provided names.
	FirstChildTagNameOneof []string `protobuf:"bytes,2,rep,name=first_child_tag_name_oneof,json=firstChildTagNameOneof" json:"first_child_tag_name_oneof,omitempty"`
	// If at least one tag name is specified, then the child tags of
	// the parent tag must have one of the provided tag names.
	ChildTagNameOneof []string `protobuf:"bytes,3,rep,name=child_tag_name_oneof,json=childTagNameOneof" json:"child_tag_name_oneof,omitempty"`
	// Unless set to -1 (the default), the parent tag must have a minimum of
	// |mandatory_min_num_child_tags| immediate child tags.
	MandatoryMinNumChildTags *int32 `protobuf:"varint,4,opt,name=mandatory_min_num_child_tags,json=mandatoryMinNumChildTags,def=-1" json:"mandatory_min_num_child_tags,omitempty"`
}

// Default values for ChildTagSpec fields.
const (
	Default_ChildTagSpec_MandatoryNumChildTags    = int32(-1)
	Default_ChildTagSpec_MandatoryMinNumChildTags = int32(-1)
)

func (x *ChildTagSpec) Reset() {
	*x = ChildTagSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ChildTagSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChildTagSpec) ProtoMessage() {}

func (x *ChildTagSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ChildTagSpec.ProtoReflect.Descriptor instead.
func (*ChildTagSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{17}
}

func (x *ChildTagSpec) GetMandatoryNumChildTags() int32 {
	if x != nil && x.MandatoryNumChildTags != nil {
		return *x.MandatoryNumChildTags
	}
	return Default_ChildTagSpec_MandatoryNumChildTags
}

func (x *ChildTagSpec) GetFirstChildTagNameOneof() []string {
	if x != nil {
		return x.FirstChildTagNameOneof
	}
	return nil
}

func (x *ChildTagSpec) GetChildTagNameOneof() []string {
	if x != nil {
		return x.ChildTagNameOneof
	}
	return nil
}

func (x *ChildTagSpec) GetMandatoryMinNumChildTags() int32 {
	if x != nil && x.MandatoryMinNumChildTags != nil {
		return *x.MandatoryMinNumChildTags
	}
	return Default_ChildTagSpec_MandatoryMinNumChildTags
}

// TagSpecs and reference points.
//
// Any TagSpec may define a list of reference points via the
// TagSpec::reference_points field. These reference points specify how
// DOM elements that are children of this parent tag fulfill particular
// functionality. For instance, a widget (implemented as an AMP tag) may
// require a login reference point. Any valid AMP tag would be allowed,
// whether it's a clickable DIV or an AMP-IMG or a BUTTON, so long as
// it *also* conforms to the reference point specification. This
// specification is a TagSpec which does not define a name (the
// name is set to the special value '$REFERENCE_POINT'), but rather
// identifies the reference point with AttrSpec requirements. For instance,
// the login reference point may require that there be a login attribute,
// or some end-point attribute with a URL, or similar.
// Therefore, for any child tags of a tag that defines reference points,
// they are first matched against these reference points, and only
// then are they validated as regular tags against the TagSpecs that are
// not reference points while their reference point attributes are skipped.
// The complexity of this mechanism is unfortunate but reduces the markup
// required and makes CSS styling more convenient. Please see
// the amp-live-list specification for an example.
// NEXT AVAILABLE TAG: 4
type ReferencePoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A tag spec identified by its TagSpec::spec_name which specifies how
	// a specific functionality for the parent tag is assigned.
	TagSpecName *string `protobuf:"bytes,1,opt,name=tag_spec_name,json=tagSpecName" json:"tag_spec_name,omitempty"`
	// At least one of the child tags of the parent defining this
	// reference point must match it.
	Mandatory *bool `protobuf:"varint,2,opt,name=mandatory" json:"mandatory,omitempty"`
	// At most one of the child tags of the parent defining this
	// reference point must match it.
	Unique *bool `protobuf:"varint,3,opt,name=unique" json:"unique,omitempty"`
}

func (x *ReferencePoint) Reset() {
	*x = ReferencePoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReferencePoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReferencePoint) ProtoMessage() {}

func (x *ReferencePoint) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReferencePoint.ProtoReflect.Descriptor instead.
func (*ReferencePoint) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{18}
}

func (x *ReferencePoint) GetTagSpecName() string {
	if x != nil && x.TagSpecName != nil {
		return *x.TagSpecName
	}
	return ""
}

func (x *ReferencePoint) GetMandatory() bool {
	if x != nil && x.Mandatory != nil {
		return *x.Mandatory
	}
	return false
}

func (x *ReferencePoint) GetUnique() bool {
	if x != nil && x.Unique != nil {
		return *x.Unique
	}
	return false
}

// Specs specific to AMP Extensions. This is a field within TagSpec that
// replaces the standard tagspec list of attributes, requirements, etc.
// NEXT AVAILABLE TAG: 11
type ExtensionSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// e.g. "amp-video". This is used both as the attribute value for the
	// 'custom-element' attribute value as well as part of the 'src' attribute
	// value.
	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// e.g. "0.1", "1.0", "latest".
	Version []string `protobuf:"bytes,2,rep,name=version" json:"version,omitempty"`
	// If multiple TagSpecs for the same extension exist, separated by version,
	// specify a version_name string to disambiguate their spec_names. For
	// example, "v1.0" or "v0.1-0.2". This string will become part of the name
	// used for referring to this extension in validator error messages.
	VersionName *string `protobuf:"bytes,9,opt,name=version_name,json=versionName" json:"version_name,omitempty"`
	// deprecated_version must be a strict subset of version. If the version
	// matches a deprecated_version, validation will emit a warning.
	DeprecatedVersion []string `protobuf:"bytes,3,rep,name=deprecated_version,json=deprecatedVersion" json:"deprecated_version,omitempty"`
	// Bento supported versions (e.g. "1.0").
	BentoSupportedVersion []string                     `protobuf:"bytes,10,rep,name=bento_supported_version,json=bentoSupportedVersion" json:"bento_supported_version,omitempty"`
	ExtensionType         *ExtensionSpec_ExtensionType `protobuf:"varint,8,opt,name=extension_type,json=extensionType,enum=amp.validator.ExtensionSpec_ExtensionType,def=1" json:"extension_type,omitempty"`
	// For older tags, we did not originally require that the tag only be included
	// once, so those tags are exempted from the multiple inclusion ban.
	DeprecatedAllowDuplicates *bool                                    `protobuf:"varint,6,opt,name=deprecated_allow_duplicates,json=deprecatedAllowDuplicates,def=0" json:"deprecated_allow_duplicates,omitempty"`
	RequiresUsage             *ExtensionSpec_ExtensionUsageRequirement `protobuf:"varint,7,opt,name=requires_usage,json=requiresUsage,enum=amp.validator.ExtensionSpec_ExtensionUsageRequirement,def=1" json:"requires_usage,omitempty"`
}

// Default values for ExtensionSpec fields.
const (
	Default_ExtensionSpec_ExtensionType             = ExtensionSpec_CUSTOM_ELEMENT
	Default_ExtensionSpec_DeprecatedAllowDuplicates = bool(false)
	Default_ExtensionSpec_RequiresUsage             = ExtensionSpec_ERROR
)

func (x *ExtensionSpec) Reset() {
	*x = ExtensionSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExtensionSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExtensionSpec) ProtoMessage() {}

func (x *ExtensionSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExtensionSpec.ProtoReflect.Descriptor instead.
func (*ExtensionSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{19}
}

func (x *ExtensionSpec) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *ExtensionSpec) GetVersion() []string {
	if x != nil {
		return x.Version
	}
	return nil
}

func (x *ExtensionSpec) GetVersionName() string {
	if x != nil && x.VersionName != nil {
		return *x.VersionName
	}
	return ""
}

func (x *ExtensionSpec) GetDeprecatedVersion() []string {
	if x != nil {
		return x.DeprecatedVersion
	}
	return nil
}

func (x *ExtensionSpec) GetBentoSupportedVersion() []string {
	if x != nil {
		return x.BentoSupportedVersion
	}
	return nil
}

func (x *ExtensionSpec) GetExtensionType() ExtensionSpec_ExtensionType {
	if x != nil && x.ExtensionType != nil {
		return *x.ExtensionType
	}
	return Default_ExtensionSpec_ExtensionType
}

func (x *ExtensionSpec) GetDeprecatedAllowDuplicates() bool {
	if x != nil && x.DeprecatedAllowDuplicates != nil {
		return *x.DeprecatedAllowDuplicates
	}
	return Default_ExtensionSpec_DeprecatedAllowDuplicates
}

func (x *ExtensionSpec) GetRequiresUsage() ExtensionSpec_ExtensionUsageRequirement {
	if x != nil && x.RequiresUsage != nil {
		return *x.RequiresUsage
	}
	return Default_ExtensionSpec_RequiresUsage
}

// The HtmlFormat is the declared format in the top-level html tag, which
// prescribes a particular set of validation rules. This should be kept in sync
// with Request.HtmlFormat in
// github.com/ampproject/amppackager/transformer/request/request.proto.
type HtmlFormat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *HtmlFormat) Reset() {
	*x = HtmlFormat{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HtmlFormat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HtmlFormat) ProtoMessage() {}

func (x *HtmlFormat) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HtmlFormat.ProtoReflect.Descriptor instead.
func (*HtmlFormat) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{20}
}

// Tags that are not covered by at least one of these specs are disallowed.
// Some tags are mandatory. Note that the tag name is not unique, that is,
// there can be multiple tag specs covering the same name, e.g., for
// multiple meta tags (with different attributes).
// NEXT AVAILABLE TAG: 40
type TagSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The html_format field tells the validator for which html formats
	// (ie: (<html ⚡> vs <html a4⚡>) this HTML TagSpec is allowed to validate.
	// The repeated field is not allowed to be empty, it must have at least one
	// HtmlFormat.
	HtmlFormat []HtmlFormat_Code `protobuf:"varint,21,rep,name=html_format,json=htmlFormat,enum=amp.validator.HtmlFormat_Code" json:"html_format,omitempty"`
	// If provided, the Type Identifier(s) that either enable or disable
	// this TagSpec. If a Type Identifier is in `enabled_by` then this
	// TagSpec will be used in validating parsed documents which include that Type
	// Identifier. If a Type Identifier is in `disabled_by` then this
	// TagSpec will not be used in validating parsed documents which include that
	// Type Identifier. A TagSpec can not have both `enabled_by` and `disabled_by`
	// set.
	EnabledBy  []string `protobuf:"bytes,35,rep,name=enabled_by,json=enabledBy" json:"enabled_by,omitempty"`
	DisabledBy []string `protobuf:"bytes,36,rep,name=disabled_by,json=disabledBy" json:"disabled_by,omitempty"`
	// Use UPPER-CASE tag names only. If adding the same tag twice, then they must
	// also have a spec_name string which is unique throughout all detail.
	// Note: "$REFERENCE_POINT" is a special tag_name value.
	//       Reference points are partial tag specs which don't have a defined
	//       tag_name.
	TagName *string `protobuf:"bytes,1,opt,name=tag_name,json=tagName" json:"tag_name,omitempty"`
	// If provided, the spec_name must be unique within the validator
	// rules. This string forms a a unique id for this TagSpec. If not set, the
	// tag_name field is used as the unique id. This string is not used in error
	// messages, see descriptive_name for that.
	SpecName *string `protobuf:"bytes,2,opt,name=spec_name,json=specName" json:"spec_name,omitempty"`
	// If `tag_name` is not a sufficient descriptor for error messages having to
	// do with this tag spec, provide a `descriptive_name` value, which if present
	// will be used in place of `tag_name`. Typically `descriptive_name` should
	// include the tag_name in it, and should avoid using < and > in case
	// downstream libraries of the validator fail to properly HTML escape rendered
	// error strings.
	DescriptiveName *string          `protobuf:"bytes,39,opt,name=descriptive_name,json=descriptiveName" json:"descriptive_name,omitempty"`
	NamedId         *TagSpec_NamedId `protobuf:"varint,33,opt,name=named_id,json=namedId,enum=amp.validator.TagSpec_NamedId,def=0" json:"named_id,omitempty"`
	// If provided, this is a SCRIPT tag defining an amp custom element
	// extension. The other fields, such as expected attributes, will be
	// validated by the extension spec rules.
	ExtensionSpec *ExtensionSpec `protobuf:"bytes,27,opt,name=extension_spec,json=extensionSpec" json:"extension_spec,omitempty"`
	// If set, this tag is considered part of an amp extended component, and
	// requires that the named extended component script tag is present on the
	// page.
	RequiresExtension []string `protobuf:"bytes,28,rep,name=requires_extension,json=requiresExtension" json:"requires_extension,omitempty"`
	// If true, a tag conforming to this tag spec must occur at least once
	// within the document.
	Mandatory *bool `protobuf:"varint,3,opt,name=mandatory" json:"mandatory,omitempty"`
	// A string identifying that this tag belongs to a set of alternative
	// choices from which at least one needs to be satisfied.
	MandatoryAlternatives *string `protobuf:"bytes,4,opt,name=mandatory_alternatives,json=mandatoryAlternatives" json:"mandatory_alternatives,omitempty"`
	// If true, a tag conforming to this tag spec may occur at most once within
	// the document.
	Unique *bool `protobuf:"varint,5,opt,name=unique" json:"unique,omitempty"`
	// If true, a tag conforming to this tag spec should occur at most once within
	// the document. That is, unlike for unique, we'll emit a warning.
	UniqueWarning *bool `protobuf:"varint,25,opt,name=unique_warning,json=uniqueWarning" json:"unique_warning,omitempty"`
	// If set to "$ROOT", this tag must be the root tag.
	// If set to any other string, the tag must be the direct child of the
	//   specified mandatory parent tag.
	MandatoryParent *string `protobuf:"bytes,6,opt,name=mandatory_parent,json=mandatoryParent" json:"mandatory_parent,omitempty"`
	// If set, the tag must descend from (not necessarily direct parent of) the
	// specified mandatory parent string which is either a tag name or a tag
	// spec_name (e.g. tag.name = "!DOCTYPE" or tag.spec_name = "html doctype").
	MandatoryAncestor *string `protobuf:"bytes,15,opt,name=mandatory_ancestor,json=mandatoryAncestor" json:"mandatory_ancestor,omitempty"`
	// Use only for tags where mandatory_ancestor is set. If tag validation fails
	// due to the mandatory_ancestor, and this field is set, then the error
	// detail will suggest the tag specified here as an alternative to consider.
	MandatoryAncestorSuggestedAlternative *string `protobuf:"bytes,16,opt,name=mandatory_ancestor_suggested_alternative,json=mandatoryAncestorSuggestedAlternative" json:"mandatory_ancestor_suggested_alternative,omitempty"`
	// This tag may not descend from any tag with any of these tag names or tag
	// spec_names (e.g. tag.name = "!DOCTYPE" or tag.spec_name = "html doctype").
	DisallowedAncestor []string `protobuf:"bytes,13,rep,name=disallowed_ancestor,json=disallowedAncestor" json:"disallowed_ancestor,omitempty"`
	// If set, all of the tag's descendants must be tags from the named list.
	// A tag not in the named list will generate an error.
	DescendantTagList *string `protobuf:"bytes,29,opt,name=descendant_tag_list,json=descendantTagList" json:"descendant_tag_list,omitempty"`
	// If set, other tags - identified by their detail string - must be
	// present as well or a warning will be issued (will not invalidate doc).
	AlsoRequiresTagWarning []string `protobuf:"bytes,22,rep,name=also_requires_tag_warning,json=alsoRequiresTagWarning" json:"also_requires_tag_warning,omitempty"`
	// Expresses a generic condition which is satisfied if this tag is found. Used
	// in combination with the `requires` attribute on a different tag.
	SatisfiesCondition []string `protobuf:"bytes,23,rep,name=satisfies_condition" json:"satisfies_condition,omitempty"`
	// Expresses a generic condition which must be satisfied if this tag is found.
	// Used in combination with the `satisfies` attributes on a different tag.
	RequiresCondition []string `protobuf:"bytes,24,rep,name=requires_condition" json:"requires_condition,omitempty"`
	// The excludes field is a generic condition, which must not be satisfied if
	// this tag is found. Otherwise a TAG_EXCLUDED_BY_TAG error will be generated.
	// Used in combination with the `satisfies` attributes on a different tag.
	ExcludesCondition []string `protobuf:"bytes,32,rep,name=excludes_condition" json:"excludes_condition,omitempty"`
	// If set, generates a DEPRECATED_TAG error with severity WARNING.
	// The value of the deprecation field indicates what to use instead,
	// e.g. the name of a tag.
	Deprecation *string `protobuf:"bytes,17,opt,name=deprecation" json:"deprecation,omitempty"`
	// If provided, a URL which links to the AMP HTML spec for this deprecation.
	DeprecationUrl *string `protobuf:"bytes,18,opt,name=deprecation_url,json=deprecationUrl" json:"deprecation_url,omitempty"`
	// This TagSpec will only validate against attributes explicitly
	// listed within the TagSpec (attrs and attr_lists). No attributes
	// from $GLOBAL_ATTRS and $AMP_LAYOUT_ATTRS are valid unless explicitly
	// added as an attribute within the TagSpec. The field `amp_layout` is not
	// allowed to be set when `explicit_attrs_only` is true.
	ExplicitAttrsOnly *bool `protobuf:"varint,34,opt,name=explicit_attrs_only,json=explicitAttrsOnly,def=0" json:"explicit_attrs_only,omitempty"`
	// Attribute specifications related to this tag.
	Attrs []*AttrSpec `protobuf:"bytes,7,rep,name=attrs" json:"attrs,omitempty"`
	// Top level attr lists of shared tags, identified by unique key
	// (see attr_lists map in ValidatorRules).
	AttrLists []string `protobuf:"bytes,8,rep,name=attr_lists,json=attrLists" json:"attr_lists,omitempty"`
	// Note that these are evaluated after a particular TagSpec
	// has been evaluated. Unlike other checks in this TagSpec, we
	// no longer have the ability to fall back on a different TagSpec.
	Cdata *CdataSpec `protobuf:"bytes,12,opt,name=cdata" json:"cdata,omitempty"`
	// Specifies which tags can be the child tags, that is, immediately children
	// of this tag in the document.
	ChildTags *ChildTagSpec `protobuf:"bytes,19,opt,name=child_tags,json=childTags" json:"child_tags,omitempty"`
	// If set to true, this tag cannot have any siblings.
	SiblingsDisallowed *bool `protobuf:"varint,30,opt,name=siblings_disallowed,json=siblingsDisallowed,def=0" json:"siblings_disallowed,omitempty"`
	// If set to true, this tag must be the last child of its parent.
	MandatoryLastChild *bool `protobuf:"varint,31,opt,name=mandatory_last_child,json=mandatoryLastChild,def=0" json:"mandatory_last_child,omitempty"`
	// The reference_points defined by this TagSpec instance determine how
	// specific child tags are identified. Please see the comment for the
	// ReferencePoint message.
	ReferencePoints []*ReferencePoint `protobuf:"bytes,20,rep,name=reference_points,json=referencePoints" json:"reference_points,omitempty"`
	// If provided, a URL which linking to a section / sentence in the
	// AMP HTML spec. If a TagSpec contains a requires_extension field,
	// spec_url will be inherited from the named extension, unless overridden
	// by the setting it here.
	SpecUrl *string `protobuf:"bytes,10,opt,name=spec_url,json=specUrl" json:"spec_url,omitempty"`
	// If set, specifies which AMP Layouts are supported by this element.
	AmpLayout *AmpLayout `protobuf:"bytes,11,opt,name=amp_layout,json=ampLayout" json:"amp_layout,omitempty"`
	// If set, triggers related validation rules for descendants of this tag.
	MarkDescendants *AncestorMarker `protobuf:"bytes,38,opt,name=mark_descendants,json=markDescendants" json:"mark_descendants,omitempty"`
}

// Default values for TagSpec fields.
const (
	Default_TagSpec_NamedId            = TagSpec_NOT_SET
	Default_TagSpec_ExplicitAttrsOnly  = bool(false)
	Default_TagSpec_SiblingsDisallowed = bool(false)
	Default_TagSpec_MandatoryLastChild = bool(false)
)

func (x *TagSpec) Reset() {
	*x = TagSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TagSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TagSpec) ProtoMessage() {}

func (x *TagSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TagSpec.ProtoReflect.Descriptor instead.
func (*TagSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{21}
}

func (x *TagSpec) GetHtmlFormat() []HtmlFormat_Code {
	if x != nil {
		return x.HtmlFormat
	}
	return nil
}

func (x *TagSpec) GetEnabledBy() []string {
	if x != nil {
		return x.EnabledBy
	}
	return nil
}

func (x *TagSpec) GetDisabledBy() []string {
	if x != nil {
		return x.DisabledBy
	}
	return nil
}

func (x *TagSpec) GetTagName() string {
	if x != nil && x.TagName != nil {
		return *x.TagName
	}
	return ""
}

func (x *TagSpec) GetSpecName() string {
	if x != nil && x.SpecName != nil {
		return *x.SpecName
	}
	return ""
}

func (x *TagSpec) GetDescriptiveName() string {
	if x != nil && x.DescriptiveName != nil {
		return *x.DescriptiveName
	}
	return ""
}

func (x *TagSpec) GetNamedId() TagSpec_NamedId {
	if x != nil && x.NamedId != nil {
		return *x.NamedId
	}
	return Default_TagSpec_NamedId
}

func (x *TagSpec) GetExtensionSpec() *ExtensionSpec {
	if x != nil {
		return x.ExtensionSpec
	}
	return nil
}

func (x *TagSpec) GetRequiresExtension() []string {
	if x != nil {
		return x.RequiresExtension
	}
	return nil
}

func (x *TagSpec) GetMandatory() bool {
	if x != nil && x.Mandatory != nil {
		return *x.Mandatory
	}
	return false
}

func (x *TagSpec) GetMandatoryAlternatives() string {
	if x != nil && x.MandatoryAlternatives != nil {
		return *x.MandatoryAlternatives
	}
	return ""
}

func (x *TagSpec) GetUnique() bool {
	if x != nil && x.Unique != nil {
		return *x.Unique
	}
	return false
}

func (x *TagSpec) GetUniqueWarning() bool {
	if x != nil && x.UniqueWarning != nil {
		return *x.UniqueWarning
	}
	return false
}

func (x *TagSpec) GetMandatoryParent() string {
	if x != nil && x.MandatoryParent != nil {
		return *x.MandatoryParent
	}
	return ""
}

func (x *TagSpec) GetMandatoryAncestor() string {
	if x != nil && x.MandatoryAncestor != nil {
		return *x.MandatoryAncestor
	}
	return ""
}

func (x *TagSpec) GetMandatoryAncestorSuggestedAlternative() string {
	if x != nil && x.MandatoryAncestorSuggestedAlternative != nil {
		return *x.MandatoryAncestorSuggestedAlternative
	}
	return ""
}

func (x *TagSpec) GetDisallowedAncestor() []string {
	if x != nil {
		return x.DisallowedAncestor
	}
	return nil
}

func (x *TagSpec) GetDescendantTagList() string {
	if x != nil && x.DescendantTagList != nil {
		return *x.DescendantTagList
	}
	return ""
}

func (x *TagSpec) GetAlsoRequiresTagWarning() []string {
	if x != nil {
		return x.AlsoRequiresTagWarning
	}
	return nil
}

func (x *TagSpec) GetSatisfiesCondition() []string {
	if x != nil {
		return x.SatisfiesCondition
	}
	return nil
}

func (x *TagSpec) GetRequiresCondition() []string {
	if x != nil {
		return x.RequiresCondition
	}
	return nil
}

func (x *TagSpec) GetExcludesCondition() []string {
	if x != nil {
		return x.ExcludesCondition
	}
	return nil
}

func (x *TagSpec) GetDeprecation() string {
	if x != nil && x.Deprecation != nil {
		return *x.Deprecation
	}
	return ""
}

func (x *TagSpec) GetDeprecationUrl() string {
	if x != nil && x.DeprecationUrl != nil {
		return *x.DeprecationUrl
	}
	return ""
}

func (x *TagSpec) GetExplicitAttrsOnly() bool {
	if x != nil && x.ExplicitAttrsOnly != nil {
		return *x.ExplicitAttrsOnly
	}
	return Default_TagSpec_ExplicitAttrsOnly
}

func (x *TagSpec) GetAttrs() []*AttrSpec {
	if x != nil {
		return x.Attrs
	}
	return nil
}

func (x *TagSpec) GetAttrLists() []string {
	if x != nil {
		return x.AttrLists
	}
	return nil
}

func (x *TagSpec) GetCdata() *CdataSpec {
	if x != nil {
		return x.Cdata
	}
	return nil
}

func (x *TagSpec) GetChildTags() *ChildTagSpec {
	if x != nil {
		return x.ChildTags
	}
	return nil
}

func (x *TagSpec) GetSiblingsDisallowed() bool {
	if x != nil && x.SiblingsDisallowed != nil {
		return *x.SiblingsDisallowed
	}
	return Default_TagSpec_SiblingsDisallowed
}

func (x *TagSpec) GetMandatoryLastChild() bool {
	if x != nil && x.MandatoryLastChild != nil {
		return *x.MandatoryLastChild
	}
	return Default_TagSpec_MandatoryLastChild
}

func (x *TagSpec) GetReferencePoints() []*ReferencePoint {
	if x != nil {
		return x.ReferencePoints
	}
	return nil
}

func (x *TagSpec) GetSpecUrl() string {
	if x != nil && x.SpecUrl != nil {
		return *x.SpecUrl
	}
	return ""
}

func (x *TagSpec) GetAmpLayout() *AmpLayout {
	if x != nil {
		return x.AmpLayout
	}
	return nil
}

func (x *TagSpec) GetMarkDescendants() *AncestorMarker {
	if x != nil {
		return x.MarkDescendants
	}
	return nil
}

// Exactly one DocSpec will match each AMP document. This spec defines some
// default rules for the entire document scoped by it's HtmlFormat and any
// Type Identifiers.
// NEXT AVAILABLE TAG: 6
type DocSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The html_format field tells the validator for which html formats
	// (ie: (<html ⚡> vs <html a4⚡>) this DocSpec is defined for.
	HtmlFormat []HtmlFormat_Code `protobuf:"varint,1,rep,name=html_format,json=htmlFormat,enum=amp.validator.HtmlFormat_Code" json:"html_format,omitempty"`
	// If a Type Identifier is in enabled_by then this DocSpec will be used
	// in validating parsed documents with that Type Identifier. If a Type
	// Identifier is in disabled_by then this DocSpec will not be used in
	// validating parsed documents with that Type Identifier. An DocSpec can
	// not have both enabled_by and disabled_by set.
	EnabledBy  []string `protobuf:"bytes,2,rep,name=enabled_by,json=enabledBy" json:"enabled_by,omitempty"`
	DisabledBy []string `protobuf:"bytes,3,rep,name=disabled_by,json=disabledBy" json:"disabled_by,omitempty"`
	// If set, the entire document's content cannot be greater than this length,
	// in bytes. A value of -2 (default) indicates that there is no limit
	// (unlimited).
	MaxBytes *int32 `protobuf:"varint,4,opt,name=max_bytes,json=maxBytes,def=-2" json:"max_bytes,omitempty"`
	// If provided, a URL linking to a section / sentence in the AMP HTML spec.
	MaxBytesSpecUrl *string `protobuf:"bytes,5,opt,name=max_bytes_spec_url,json=maxBytesSpecUrl" json:"max_bytes_spec_url,omitempty"`
}

// Default values for DocSpec fields.
const (
	Default_DocSpec_MaxBytes = int32(-2)
)

func (x *DocSpec) Reset() {
	*x = DocSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DocSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DocSpec) ProtoMessage() {}

func (x *DocSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DocSpec.ProtoReflect.Descriptor instead.
func (*DocSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{22}
}

func (x *DocSpec) GetHtmlFormat() []HtmlFormat_Code {
	if x != nil {
		return x.HtmlFormat
	}
	return nil
}

func (x *DocSpec) GetEnabledBy() []string {
	if x != nil {
		return x.EnabledBy
	}
	return nil
}

func (x *DocSpec) GetDisabledBy() []string {
	if x != nil {
		return x.DisabledBy
	}
	return nil
}

func (x *DocSpec) GetMaxBytes() int32 {
	if x != nil && x.MaxBytes != nil {
		return *x.MaxBytes
	}
	return Default_DocSpec_MaxBytes
}

func (x *DocSpec) GetMaxBytesSpecUrl() string {
	if x != nil && x.MaxBytesSpecUrl != nil {
		return *x.MaxBytesSpecUrl
	}
	return ""
}

// Exactly one DocCssSpec will match each AMP document. This spec defines the
// default css rules for style attributes and publisher style tags across the
// entire document. Rules for specific tags may be overridden by those tags.
// NEXT AVAILABLE TAG: 20
type DocCssSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The html_format field tells the validator for which html formats
	// (ie: (<html ⚡> vs <html a4⚡>) this DocCssSpec is defined for.
	HtmlFormat []HtmlFormat_Code `protobuf:"varint,1,rep,name=html_format,json=htmlFormat,enum=amp.validator.HtmlFormat_Code" json:"html_format,omitempty"`
	// If a Type Identifier is in enabled_by then this DocCssSpec will be used
	// in validating parsed documents with that Type Identifier. If a Type
	// Identifier is in disabled_by then this DocCssSpec will not be used in
	// validating parsed documents;: with that Type Identifier. An DocCssSpec can
	// not have both enabled_by and disabled_by set.
	EnabledBy  []string `protobuf:"bytes,2,rep,name=enabled_by,json=enabledBy" json:"enabled_by,omitempty"`
	DisabledBy []string `protobuf:"bytes,3,rep,name=disabled_by,json=disabledBy" json:"disabled_by,omitempty"`
	// If provided, a URL linking to a section / sentence in the AMP HTML spec.
	SpecUrl *string `protobuf:"bytes,4,opt,name=spec_url,json=specUrl" json:"spec_url,omitempty"`
	// Due to a bug, we allowed unlimited doc-level and per-inline-style bytes
	// for CSS in non-AMP formats. To avoid breaking pages, some formats will
	// only emit a warning for exceeding `max_bytes` and
	// `max_bytes_per_inline_style`.
	MaxBytesIsWarning *bool `protobuf:"varint,18,opt,name=max_bytes_is_warning,json=maxBytesIsWarning,def=0" json:"max_bytes_is_warning,omitempty"`
	// If set, the combined style amp-custom cdata contents and all inline style
	// contents cannot be greater than this length, in bytes. A value of -2
	// (default) indicates that there is no limit (unlimited). A value of -1 will
	// always cause validation failure.
	MaxBytes *int32 `protobuf:"varint,5,opt,name=max_bytes,json=maxBytes,def=-2" json:"max_bytes,omitempty"`
	// If set, the inline style content (per use) cannot be greater than this
	// length, in bytes.
	MaxBytesPerInlineStyle *int32 `protobuf:"varint,6,opt,name=max_bytes_per_inline_style,json=maxBytesPerInlineStyle,def=-1" json:"max_bytes_per_inline_style,omitempty"`
	// If false, bytes inside URLs are not included in the byte calculation for
	// `max_bytes`. This is used for handling signed exchange transformations
	// which can potentially take the number of bytes over the 75,000 byte limit
	// due to rewriting URLs to point at an AMP Cache.
	UrlBytesIncluded *bool `protobuf:"varint,7,opt,name=url_bytes_included,json=urlBytesIncluded,def=1" json:"url_bytes_included,omitempty"`
	// If provided, a URL linking to a section / sentence in the AMP HTML spec.
	MaxBytesSpecUrl *string `protobuf:"bytes,8,opt,name=max_bytes_spec_url,json=maxBytesSpecUrl" json:"max_bytes_spec_url,omitempty"`
	// If true, all declarations are allowed in style tags and inline style
	// attributes, regardless of the contents of the `declaration` list.
	AllowAllDeclarationInStyle *bool `protobuf:"varint,10,opt,name=allow_all_declaration_in_style,json=allowAllDeclarationInStyle,def=0" json:"allow_all_declaration_in_style,omitempty"`
	// If true, all variants of declarations that are vendor prefixes are allowed.
	// for example, if `gradient` is an allowed declaration and this is true, then
	// `-webkit-gradient` is also an allowed declaration.
	ExpandVendorPrefixes *bool `protobuf:"varint,19,opt,name=expand_vendor_prefixes,json=expandVendorPrefixes" json:"expand_vendor_prefixes,omitempty"`
	// Any declaration listed here is allowed in custom style tags and style
	// attributes in any tag.
	Declaration []*CssDeclaration `protobuf:"bytes,11,rep,name=declaration" json:"declaration,omitempty"`
	// In addition to those listed in 'declaration', any declaration listed here
	// is allowed in style attributes for SVG elements.
	DeclarationSvg []*CssDeclaration `protobuf:"bytes,12,rep,name=declaration_svg,json=declarationSvg" json:"declaration_svg,omitempty"`
	// Top level lists of shared declarations, identified by unique key.
	DeclarationList []string `protobuf:"bytes,13,rep,name=declaration_list,json=declarationList" json:"declaration_list,omitempty"`
	// Top level lists of shared declarations, identified by unique key.
	DeclarationListSvg []string `protobuf:"bytes,14,rep,name=declaration_list_svg,json=declarationListSvg" json:"declaration_list_svg,omitempty"`
	// URLs found within CSS are checked against this spec.
	ImageUrlSpec *UrlSpec `protobuf:"bytes,15,opt,name=image_url_spec,json=imageUrlSpec" json:"image_url_spec,omitempty"`
	FontUrlSpec  *UrlSpec `protobuf:"bytes,16,opt,name=font_url_spec,json=fontUrlSpec" json:"font_url_spec,omitempty"`
	// If false, declarations tagged with `!important` are considered errors.
	// Most AMP stylesheets disallow `!important` to reserve this override
	// for AMP's own styles.
	AllowImportant *bool `protobuf:"varint,17,opt,name=allow_important,json=allowImportant,def=0" json:"allow_important,omitempty"`
}

// Default values for DocCssSpec fields.
const (
	Default_DocCssSpec_MaxBytesIsWarning          = bool(false)
	Default_DocCssSpec_MaxBytes                   = int32(-2)
	Default_DocCssSpec_MaxBytesPerInlineStyle     = int32(-1)
	Default_DocCssSpec_UrlBytesIncluded           = bool(true)
	Default_DocCssSpec_AllowAllDeclarationInStyle = bool(false)
	Default_DocCssSpec_AllowImportant             = bool(false)
)

func (x *DocCssSpec) Reset() {
	*x = DocCssSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DocCssSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DocCssSpec) ProtoMessage() {}

func (x *DocCssSpec) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DocCssSpec.ProtoReflect.Descriptor instead.
func (*DocCssSpec) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{23}
}

func (x *DocCssSpec) GetHtmlFormat() []HtmlFormat_Code {
	if x != nil {
		return x.HtmlFormat
	}
	return nil
}

func (x *DocCssSpec) GetEnabledBy() []string {
	if x != nil {
		return x.EnabledBy
	}
	return nil
}

func (x *DocCssSpec) GetDisabledBy() []string {
	if x != nil {
		return x.DisabledBy
	}
	return nil
}

func (x *DocCssSpec) GetSpecUrl() string {
	if x != nil && x.SpecUrl != nil {
		return *x.SpecUrl
	}
	return ""
}

func (x *DocCssSpec) GetMaxBytesIsWarning() bool {
	if x != nil && x.MaxBytesIsWarning != nil {
		return *x.MaxBytesIsWarning
	}
	return Default_DocCssSpec_MaxBytesIsWarning
}

func (x *DocCssSpec) GetMaxBytes() int32 {
	if x != nil && x.MaxBytes != nil {
		return *x.MaxBytes
	}
	return Default_DocCssSpec_MaxBytes
}

func (x *DocCssSpec) GetMaxBytesPerInlineStyle() int32 {
	if x != nil && x.MaxBytesPerInlineStyle != nil {
		return *x.MaxBytesPerInlineStyle
	}
	return Default_DocCssSpec_MaxBytesPerInlineStyle
}

func (x *DocCssSpec) GetUrlBytesIncluded() bool {
	if x != nil && x.UrlBytesIncluded != nil {
		return *x.UrlBytesIncluded
	}
	return Default_DocCssSpec_UrlBytesIncluded
}

func (x *DocCssSpec) GetMaxBytesSpecUrl() string {
	if x != nil && x.MaxBytesSpecUrl != nil {
		return *x.MaxBytesSpecUrl
	}
	return ""
}

func (x *DocCssSpec) GetAllowAllDeclarationInStyle() bool {
	if x != nil && x.AllowAllDeclarationInStyle != nil {
		return *x.AllowAllDeclarationInStyle
	}
	return Default_DocCssSpec_AllowAllDeclarationInStyle
}

func (x *DocCssSpec) GetExpandVendorPrefixes() bool {
	if x != nil && x.ExpandVendorPrefixes != nil {
		return *x.ExpandVendorPrefixes
	}
	return false
}

func (x *DocCssSpec) GetDeclaration() []*CssDeclaration {
	if x != nil {
		return x.Declaration
	}
	return nil
}

func (x *DocCssSpec) GetDeclarationSvg() []*CssDeclaration {
	if x != nil {
		return x.DeclarationSvg
	}
	return nil
}

func (x *DocCssSpec) GetDeclarationList() []string {
	if x != nil {
		return x.DeclarationList
	}
	return nil
}

func (x *DocCssSpec) GetDeclarationListSvg() []string {
	if x != nil {
		return x.DeclarationListSvg
	}
	return nil
}

func (x *DocCssSpec) GetImageUrlSpec() *UrlSpec {
	if x != nil {
		return x.ImageUrlSpec
	}
	return nil
}

func (x *DocCssSpec) GetFontUrlSpec() *UrlSpec {
	if x != nil {
		return x.FontUrlSpec
	}
	return nil
}

func (x *DocCssSpec) GetAllowImportant() bool {
	if x != nil && x.AllowImportant != nil {
		return *x.AllowImportant
	}
	return Default_DocCssSpec_AllowImportant
}

// Top level message - start reading here.
// The validator knows about a set of tag specifications.
// NEXT AVAILABLE TAG: 22
type ValidatorRules struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tags      []*TagSpec  `protobuf:"bytes,1,rep,name=tags" json:"tags,omitempty"`
	AttrLists []*AttrList `protobuf:"bytes,7,rep,name=attr_lists,json=attrLists" json:"attr_lists,omitempty"`
	// The min file revision for validator.cc which can digest this file.
	//
	// Deprecated: Do not use.
	MinValidatorRevisionRequired *int32 `protobuf:"varint,4,opt,name=min_validator_revision_required,json=minValidatorRevisionRequired" json:"min_validator_revision_required,omitempty"`
	// See comment in validator.protoascii.
	//
	// Deprecated: Do not use.
	SpecFileRevision *int32 `protobuf:"varint,6,opt,name=spec_file_revision,json=specFileRevision,def=-1" json:"spec_file_revision,omitempty"`
	// Spec URL for information about mustache templates.
	TemplateSpecUrl *string `protobuf:"bytes,8,opt,name=template_spec_url,json=templateSpecUrl" json:"template_spec_url,omitempty"`
	// Spec URL for information about styles and amp-custom stylesheet
	StylesSpecUrl *string `protobuf:"bytes,15,opt,name=styles_spec_url,json=stylesSpecUrl" json:"styles_spec_url,omitempty"`
	// Spec URL for information about script tags.
	ScriptSpecUrl     *string              `protobuf:"bytes,17,opt,name=script_spec_url,json=scriptSpecUrl" json:"script_spec_url,omitempty"`
	ErrorFormats      []*ErrorFormat       `protobuf:"bytes,9,rep,name=error_formats,json=errorFormats" json:"error_formats,omitempty"`
	ErrorSpecificity  []*ErrorSpecificity  `protobuf:"bytes,13,rep,name=error_specificity,json=errorSpecificity" json:"error_specificity,omitempty"`
	DescendantTagList []*DescendantTagList `protobuf:"bytes,16,rep,name=descendant_tag_list,json=descendantTagList" json:"descendant_tag_list,omitempty"`
	// The DocSpec rules are scoped by the document's HtmlFormat and Type
	// Identifiers and defined within each DocSpec.
	Doc             []*DocSpec         `protobuf:"bytes,21,rep,name=doc" json:"doc,omitempty"`
	Css             []*DocCssSpec      `protobuf:"bytes,19,rep,name=css" json:"css,omitempty"`
	DeclarationList []*DeclarationList `protobuf:"bytes,20,rep,name=declaration_list,json=declarationList" json:"declaration_list,omitempty"`
}

// Default values for ValidatorRules fields.
const (
	Default_ValidatorRules_SpecFileRevision = int32(-1)
)

func (x *ValidatorRules) Reset() {
	*x = ValidatorRules{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ValidatorRules) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValidatorRules) ProtoMessage() {}

func (x *ValidatorRules) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValidatorRules.ProtoReflect.Descriptor instead.
func (*ValidatorRules) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{24}
}

func (x *ValidatorRules) GetTags() []*TagSpec {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *ValidatorRules) GetAttrLists() []*AttrList {
	if x != nil {
		return x.AttrLists
	}
	return nil
}

// Deprecated: Do not use.
func (x *ValidatorRules) GetMinValidatorRevisionRequired() int32 {
	if x != nil && x.MinValidatorRevisionRequired != nil {
		return *x.MinValidatorRevisionRequired
	}
	return 0
}

// Deprecated: Do not use.
func (x *ValidatorRules) GetSpecFileRevision() int32 {
	if x != nil && x.SpecFileRevision != nil {
		return *x.SpecFileRevision
	}
	return Default_ValidatorRules_SpecFileRevision
}

func (x *ValidatorRules) GetTemplateSpecUrl() string {
	if x != nil && x.TemplateSpecUrl != nil {
		return *x.TemplateSpecUrl
	}
	return ""
}

func (x *ValidatorRules) GetStylesSpecUrl() string {
	if x != nil && x.StylesSpecUrl != nil {
		return *x.StylesSpecUrl
	}
	return ""
}

func (x *ValidatorRules) GetScriptSpecUrl() string {
	if x != nil && x.ScriptSpecUrl != nil {
		return *x.ScriptSpecUrl
	}
	return ""
}

func (x *ValidatorRules) GetErrorFormats() []*ErrorFormat {
	if x != nil {
		return x.ErrorFormats
	}
	return nil
}

func (x *ValidatorRules) GetErrorSpecificity() []*ErrorSpecificity {
	if x != nil {
		return x.ErrorSpecificity
	}
	return nil
}

func (x *ValidatorRules) GetDescendantTagList() []*DescendantTagList {
	if x != nil {
		return x.DescendantTagList
	}
	return nil
}

func (x *ValidatorRules) GetDoc() []*DocSpec {
	if x != nil {
		return x.Doc
	}
	return nil
}

func (x *ValidatorRules) GetCss() []*DocCssSpec {
	if x != nil {
		return x.Css
	}
	return nil
}

func (x *ValidatorRules) GetDeclarationList() []*DeclarationList {
	if x != nil {
		return x.DeclarationList
	}
	return nil
}

// This feature was removed in October 2019, however there are still
// some callers that expect an ErrorCategory to be set. Do not rely
// on this in new code.
// TODO(#25188): Remove ErrorCategory completely.
type ErrorCategory struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ErrorCategory) Reset() {
	*x = ErrorCategory{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ErrorCategory) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ErrorCategory) ProtoMessage() {}

func (x *ErrorCategory) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ErrorCategory.ProtoReflect.Descriptor instead.
func (*ErrorCategory) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{25}
}

// We record validation errors in a structured form, so that they can be
// worked with in code - e.g., to provide translated messages.
// In the Javascript implementation (validator.js), you may find
// the amp.validator.renderErrorMessage function which will make a
// human-readable string from the structured form. It should be easy to port
// this to other languages as needed; for instance Google has implementations
// in C++, Java, and for templates used in some frontends.
// NEXT AVAILABLE TAG: 10
type ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Severity *ValidationError_Severity `protobuf:"varint,6,opt,name=severity,enum=amp.validator.ValidationError_Severity,def=1" json:"severity,omitempty"`
	Code     *ValidationError_Code     `protobuf:"varint,1,opt,name=code,enum=amp.validator.ValidationError_Code" json:"code,omitempty"`
	Line     *int32                    `protobuf:"varint,2,opt,name=line,def=1" json:"line,omitempty"`
	Col      *int32                    `protobuf:"varint,3,opt,name=col" json:"col,omitempty"`
	SpecUrl  *string                   `protobuf:"bytes,5,opt,name=spec_url,json=specUrl" json:"spec_url,omitempty"`
	Params   []string                  `protobuf:"bytes,7,rep,name=params" json:"params,omitempty"`
	// This field is deprecated. Do not use.
	Category *ErrorCategory_Code `protobuf:"varint,8,opt,name=category,enum=amp.validator.ErrorCategory_Code" json:"category,omitempty"`
	// Used only in JavaScript, if an error is emitted for a specific HTML tag and
	// if that HTML tag has an attribute named data-amp-report-test, this string
	// will be set and contain the value found for that attribute. This is used
	// in tests to match specific errors to specific tags in the test cases. It
	// is not a rendered value.
	DataAmpReportTestValue *string `protobuf:"bytes,9,opt,name=data_amp_report_test_value,json=dataAmpReportTestValue" json:"data_amp_report_test_value,omitempty"`
}

// Default values for ValidationError fields.
const (
	Default_ValidationError_Severity = ValidationError_ERROR
	Default_ValidationError_Line     = int32(1)
)

func (x *ValidationError) Reset() {
	*x = ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ValidationError) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValidationError) ProtoMessage() {}

func (x *ValidationError) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValidationError.ProtoReflect.Descriptor instead.
func (*ValidationError) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{26}
}

func (x *ValidationError) GetSeverity() ValidationError_Severity {
	if x != nil && x.Severity != nil {
		return *x.Severity
	}
	return Default_ValidationError_Severity
}

func (x *ValidationError) GetCode() ValidationError_Code {
	if x != nil && x.Code != nil {
		return *x.Code
	}
	return ValidationError_UNKNOWN_CODE
}

func (x *ValidationError) GetLine() int32 {
	if x != nil && x.Line != nil {
		return *x.Line
	}
	return Default_ValidationError_Line
}

func (x *ValidationError) GetCol() int32 {
	if x != nil && x.Col != nil {
		return *x.Col
	}
	return 0
}

func (x *ValidationError) GetSpecUrl() string {
	if x != nil && x.SpecUrl != nil {
		return *x.SpecUrl
	}
	return ""
}

func (x *ValidationError) GetParams() []string {
	if x != nil {
		return x.Params
	}
	return nil
}

func (x *ValidationError) GetCategory() ErrorCategory_Code {
	if x != nil && x.Category != nil {
		return *x.Category
	}
	return ErrorCategory_UNKNOWN
}

func (x *ValidationError) GetDataAmpReportTestValue() string {
	if x != nil && x.DataAmpReportTestValue != nil {
		return *x.DataAmpReportTestValue
	}
	return ""
}

// Used in the verbose validator to select between multiple generated error
// types for a failing error. A higher number means that the error is more
// specific, ie: more helpful, preferred.
// NEXT AVAILABLE TAG: 3
type ErrorSpecificity struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Code        *ValidationError_Code `protobuf:"varint,1,opt,name=code,enum=amp.validator.ValidationError_Code" json:"code,omitempty"`
	Specificity *int32                `protobuf:"varint,2,opt,name=specificity" json:"specificity,omitempty"`
}

func (x *ErrorSpecificity) Reset() {
	*x = ErrorSpecificity{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ErrorSpecificity) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ErrorSpecificity) ProtoMessage() {}

func (x *ErrorSpecificity) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ErrorSpecificity.ProtoReflect.Descriptor instead.
func (*ErrorSpecificity) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{27}
}

func (x *ErrorSpecificity) GetCode() ValidationError_Code {
	if x != nil && x.Code != nil {
		return *x.Code
	}
	return ValidationError_UNKNOWN_CODE
}

func (x *ErrorSpecificity) GetSpecificity() int32 {
	if x != nil && x.Specificity != nil {
		return *x.Specificity
	}
	return 0
}

// NEXT AVAILABLE TAG: 3
type ErrorFormat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Code   *ValidationError_Code `protobuf:"varint,1,opt,name=code,enum=amp.validator.ValidationError_Code" json:"code,omitempty"`
	Format *string               `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"`
}

func (x *ErrorFormat) Reset() {
	*x = ErrorFormat{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ErrorFormat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ErrorFormat) ProtoMessage() {}

func (x *ErrorFormat) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ErrorFormat.ProtoReflect.Descriptor instead.
func (*ErrorFormat) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{28}
}

func (x *ErrorFormat) GetCode() ValidationError_Code {
	if x != nil && x.Code != nil {
		return *x.Code
	}
	return ValidationError_UNKNOWN_CODE
}

func (x *ErrorFormat) GetFormat() string {
	if x != nil && x.Format != nil {
		return *x.Format
	}
	return ""
}

// A value to be added to a particular ValueSet, as found when scanning the
// document (i.e. AttrSpec.add_value_to_set).
// NEXT AVAILABLE TAG: 3
type ValueSetProvision struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The collection to add the attribute value to.
	Set *AttrSpec_ValueSet `protobuf:"varint,1,opt,name=set,enum=amp.validator.AttrSpec_ValueSet" json:"set,omitempty"`
	// The value of the attribute itself.
	Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

func (x *ValueSetProvision) Reset() {
	*x = ValueSetProvision{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ValueSetProvision) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValueSetProvision) ProtoMessage() {}

func (x *ValueSetProvision) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValueSetProvision.ProtoReflect.Descriptor instead.
func (*ValueSetProvision) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{29}
}

func (x *ValueSetProvision) GetSet() AttrSpec_ValueSet {
	if x != nil && x.Set != nil {
		return *x.Set
	}
	return AttrSpec_UNKNOWN_VALUESET
}

func (x *ValueSetProvision) GetValue() string {
	if x != nil && x.Value != nil {
		return *x.Value
	}
	return ""
}

// A requirement that a particular value appears in a particular ValueSet (i.e.
// AttrSpec.value_oneof_set). All the provisions and requirements are collected
// until the document has been fully scanned, and then compared to ensure that
// all requirements are met. This allows provisions to appear after (or even
// alongside) requirements.
// NEXT AVAILABLE TAG: 3
type ValueSetRequirement struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The provision that is required.
	Provision *ValueSetProvision `protobuf:"bytes,1,opt,name=provision" json:"provision,omitempty"`
	// The error that will appear if the requirement is not met. This includes the
	// line/col of the attribute that makes the requirement.
	ErrorIfUnsatisfied *ValidationError `protobuf:"bytes,2,opt,name=error_if_unsatisfied,json=errorIfUnsatisfied" json:"error_if_unsatisfied,omitempty"`
}

func (x *ValueSetRequirement) Reset() {
	*x = ValueSetRequirement{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ValueSetRequirement) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValueSetRequirement) ProtoMessage() {}

func (x *ValueSetRequirement) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValueSetRequirement.ProtoReflect.Descriptor instead.
func (*ValueSetRequirement) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{30}
}

func (x *ValueSetRequirement) GetProvision() *ValueSetProvision {
	if x != nil {
		return x.Provision
	}
	return nil
}

func (x *ValueSetRequirement) GetErrorIfUnsatisfied() *ValidationError {
	if x != nil {
		return x.ErrorIfUnsatisfied
	}
	return nil
}

// The validation result provided by Validator instances (see Validator::Result
// in validator.h). To render such a proto see RenderValidationResult.
// NEXT AVAILABLE TAG: 9
type ValidationResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *ValidationResult_Status `protobuf:"varint,2,opt,name=status,enum=amp.validator.ValidationResult_Status" json:"status,omitempty"`
	Errors []*ValidationError       `protobuf:"bytes,1,rep,name=errors" json:"errors,omitempty"`
	// The following field is deprecated and can return any value. Do not depend
	// on this.
	//
	// Deprecated: Do not use.
	ValidatorRevision *int32 `protobuf:"varint,3,opt,name=validator_revision,json=validatorRevision,def=-1" json:"validator_revision,omitempty"`
	// Deprecated: Do not use.
	SpecFileRevision *int32 `protobuf:"varint,4,opt,name=spec_file_revision,json=specFileRevision,def=-1" json:"spec_file_revision,omitempty"`
	// If the AMP document is a transformed AMP document, then this is the
	// version of the transformers that were used to transform it. If the document
	// is not transformed, then the transformer_version's value will be 0.
	// Note: the AMP Pacakager's transformer library specifies the version as
	// int64. However, JavaScript does not natively support int64 so int32 is
	// used instead.
	// https://github.com/ampproject/amppackager/blob/master/transformer/transformers/context.go
	TransformerVersion *int32 `protobuf:"varint,6,opt,name=transformer_version,json=transformerVersion,def=0" json:"transformer_version,omitempty"`
	// The type idenfitier of the parsed document, e.g. AMP, AMP4ADS or some other
	// type that has yet to be defined. These are declared on the HTML tag and
	// parsed by the Validator Engine.
	TypeIdentifier []string `protobuf:"bytes,5,rep,name=type_identifier,json=typeIdentifier" json:"type_identifier,omitempty"`
	// The set of provisions from all matching AttrSpecs in this TagSpec match.
	// If the TagSpec is selected, these will be added to the final set of
	// provisions.
	ValueSetProvisions []*ValueSetProvision `protobuf:"bytes,7,rep,name=value_set_provisions,json=valueSetProvisions" json:"value_set_provisions,omitempty"`
	// The set of requirements from all matching AttrSpecs in this TagSpec match.
	// If the TagSpec is selected, these will be added to the final set of
	// requirements.
	ValueSetRequirements []*ValueSetRequirement `protobuf:"bytes,8,rep,name=value_set_requirements,json=valueSetRequirements" json:"value_set_requirements,omitempty"`
}

// Default values for ValidationResult fields.
const (
	Default_ValidationResult_ValidatorRevision  = int32(-1)
	Default_ValidationResult_SpecFileRevision   = int32(-1)
	Default_ValidationResult_TransformerVersion = int32(0)
)

func (x *ValidationResult) Reset() {
	*x = ValidationResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_validator_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ValidationResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValidationResult) ProtoMessage() {}

func (x *ValidationResult) ProtoReflect() protoreflect.Message {
	mi := &file_validator_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValidationResult.ProtoReflect.Descriptor instead.
func (*ValidationResult) Descriptor() ([]byte, []int) {
	return file_validator_proto_rawDescGZIP(), []int{31}
}

func (x *ValidationResult) GetStatus() ValidationResult_Status {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ValidationResult_UNKNOWN
}

func (x *ValidationResult) GetErrors() []*ValidationError {
	if x != nil {
		return x.Errors
	}
	return nil
}

// Deprecated: Do not use.
func (x *ValidationResult) GetValidatorRevision() int32 {
	if x != nil && x.ValidatorRevision != nil {
		return *x.ValidatorRevision
	}
	return Default_ValidationResult_ValidatorRevision
}

// Deprecated: Do not use.
func (x *ValidationResult) GetSpecFileRevision() int32 {
	if x != nil && x.SpecFileRevision != nil {
		return *x.SpecFileRevision
	}
	return Default_ValidationResult_SpecFileRevision
}

func (x *ValidationResult) GetTransformerVersion() int32 {
	if x != nil && x.TransformerVersion != nil {
		return *x.TransformerVersion
	}
	return Default_ValidationResult_TransformerVersion
}

func (x *ValidationResult) GetTypeIdentifier() []string {
	if x != nil {
		return x.TypeIdentifier
	}
	return nil
}

func (x *ValidationResult) GetValueSetProvisions() []*ValueSetProvision {
	if x != nil {
		return x.ValueSetProvisions
	}
	return nil
}

func (x *ValidationResult) GetValueSetRequirements() []*ValueSetRequirement {
	if x != nil {
		return x.ValueSetRequirements
	}
	return nil
}

var File_validator_proto protoreflect.FileDescriptor

var file_validator_proto_rawDesc = []byte{
	0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x12, 0x0d, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x22, 0x65, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
	0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x66, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x73,
	0x6f, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x73, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x69,
	0x72, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x22, 0x79, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65,
	0x72, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d,
	0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
	0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
	0x21, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x6f, 0x75, 0x62,
	0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x53, 0x70,
	0x65, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
	0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x6d, 0x70,
	0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
	0x72, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
	0x69, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x07, 0x55, 0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2b, 0x0a, 0x0e, 0x61, 0x6c,
	0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
	0x6c, 0x73, 0x65, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
	0x71, 0x0a, 0x0e, 0x43, 0x73, 0x73, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63,
	0x61, 0x73, 0x65, 0x69, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x43, 0x61, 0x73, 0x65, 0x69, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
	0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x43, 0x61, 0x73,
	0x65, 0x69, 0x22, 0x9a, 0x0b, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x17, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12, 0x1f,
	0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x18, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69,
	0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10,
	0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27,
	0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f,
	0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x79, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x64, 0x61,
	0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6e, 0x79, 0x6f, 0x66, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x6f, 0x66,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
	0x63, 0x61, 0x73, 0x65, 0x69, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x43, 0x61, 0x73, 0x65, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x69, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x43,
	0x61, 0x73, 0x65, 0x69, 0x12, 0x33, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x75, 0x72,
	0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x55, 0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x4a, 0x0a, 0x10, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63,
	0x4c, 0x69, 0x73, 0x74, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65,
	0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64,
	0x6f, 0x63, 0x5f, 0x63, 0x73, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x44, 0x6f, 0x63, 0x43, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x5f, 0x73, 0x76, 0x67, 0x5f, 0x63, 0x73, 0x73, 0x18, 0x1c,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x6f, 0x63, 0x53, 0x76,
	0x67, 0x43, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x61, 0x64, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
	0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41,
	0x74, 0x74, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74,
	0x52, 0x0d, 0x61, 0x64, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x6f, 0x53, 0x65, 0x74, 0x12,
	0x48, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73,
	0x65, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x72, 0x69,
	0x67, 0x67, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70,
	0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x54,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67,
	0x67, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
	0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70,
	0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x64,
	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x55, 0x72, 0x6c, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x73, 0x73, 0x5f, 0x64, 0x65, 0x63, 0x6c,
	0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
	0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x73,
	0x73, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x73,
	0x73, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0c,
	0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x73, 0x70,
	0x61, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x0d, 0x4e, 0x4f, 0x4e,
	0x45, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
	0x61, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69,
	0x63, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
	0x52, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65,
	0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x11, 0x72, 0x65, 0x71,
	0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x4d, 0x61, 0x72,
	0x6b, 0x65, 0x72, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x6e, 0x63,
	0x65, 0x73, 0x74, 0x6f, 0x72, 0x22, 0x46, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65,
	0x74, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x56, 0x41, 0x4c,
	0x55, 0x45, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x45, 0x4d, 0x50, 0x4c,
	0x41, 0x54, 0x45, 0x5f, 0x49, 0x44, 0x53, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x4d, 0x50,
	0x5f, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f, 0x49, 0x44, 0x53, 0x10, 0x02, 0x22, 0x70, 0x0a,
	0x0f, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43,
	0x48, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x50,
	0x41, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x56,
	0x41, 0x4c, 0x55, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12,
	0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x50, 0x41,
	0x52, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x10, 0x03, 0x22,
	0x4d, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x2d, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41,
	0x74, 0x74, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0x39,
	0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x54, 0x61, 0x67, 0x4c,
	0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x66, 0x0a, 0x0f, 0x44, 0x65, 0x63,
	0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x73, 0x73, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43,
	0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x67,
	0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12,
	0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x22, 0x6d, 0x0a, 0x0e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x0f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73,
	0x5f, 0x61, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a,
	0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x41, 0x73,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x65, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x65, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x22, 0x7f, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x74, 0x74,
	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x73,
	0x65, 0x75, 0x64, 0x6f, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x0b, 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x25, 0x0a,
	0x0e, 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x45, 0x6c, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x22, 0x69, 0x0a, 0x0a, 0x41, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x70,
	0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f,
	0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1d, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x0e, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x22,
	0xb4, 0x02, 0x0a, 0x07, 0x43, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3b, 0x0a, 0x0c, 0x61,
	0x74, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x41, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x61, 0x74,
	0x52, 0x75, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6d, 0x70, 0x34, 0x61, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6d, 0x70, 0x34,
	0x61, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f,
	0x6b, 0x65, 0x79, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x66, 0x72, 0x61, 0x6d,
	0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6d,
	0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,
	0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6d, 0x70, 0x6f, 0x72,
	0x74, 0x61, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
	0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x6d,
	0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x65, 0x6c, 0x65,
	0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
	0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x22, 0xfe, 0x02, 0x0a, 0x09, 0x43, 0x64, 0x61, 0x74, 0x61,
	0x53, 0x70, 0x65, 0x63, 0x12, 0x1f, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x32, 0x52, 0x08, 0x6d, 0x61, 0x78,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x55,
	0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f,
	0x63, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x6e,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63,
	0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x63, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x31, 0x0a, 0x08,
	0x63, 0x73, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
	0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43,
	0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x63, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x27, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x6e,
	0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x59, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61,
	0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x67,
	0x65, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f,
	0x77, 0x65, 0x64, 0x43, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x14, 0x64,
	0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65,
	0x67, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x5f, 0x63, 0x73, 0x73, 0x5f, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x6f, 0x63, 0x43,
	0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xd9, 0x02, 0x0a, 0x09, 0x41, 0x6d, 0x70, 0x4c,
	0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
	0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e,
	0x32, 0x1f, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x2e, 0x41, 0x6d, 0x70, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x2e, 0x4c, 0x61, 0x79, 0x6f, 0x75,
	0x74, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x61, 0x79, 0x6f,
	0x75, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x64,
	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x13, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75,
	0x6c, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x65, 0x66, 0x69, 0x6e,
	0x65, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73,
	0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x93, 0x01,
	0x0a, 0x06, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54,
	0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x49, 0x4c, 0x4c, 0x10,
	0x06, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c,
	0x46, 0x49, 0x58, 0x45, 0x44, 0x5f, 0x48, 0x45, 0x49, 0x47, 0x48, 0x54, 0x10, 0x03, 0x12, 0x0d,
	0x0a, 0x09, 0x46, 0x4c, 0x45, 0x58, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x07, 0x12, 0x09, 0x0a,
	0x05, 0x46, 0x4c, 0x55, 0x49, 0x44, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x54, 0x52,
	0x49, 0x4e, 0x53, 0x49, 0x43, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x44, 0x49, 0x53,
	0x50, 0x4c, 0x41, 0x59, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e,
	0x53, 0x49, 0x56, 0x45, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x22, 0x75, 0x0a, 0x0e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x4d,
	0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x4d, 0x61,
	0x72, 0x6b, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x61, 0x72,
	0x6b, 0x65, 0x72, 0x22, 0x25, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x0b, 0x0a,
	0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55,
	0x54, 0x4f, 0x53, 0x43, 0x52, 0x4f, 0x4c, 0x4c, 0x10, 0x01, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x43,
	0x68, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3b, 0x0a, 0x18, 0x6d,
	0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x69,
	0x6c, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d,
	0x31, 0x52, 0x15, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x75, 0x6d, 0x43,
	0x68, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x66, 0x69, 0x72, 0x73,
	0x74, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x66, 0x69,
	0x72, 0x73, 0x74, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x4f,
	0x6e, 0x65, 0x6f, 0x66, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61,
	0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x11, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65,
	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x12, 0x42, 0x0a, 0x1c, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64,
	0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52,
	0x18, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x69, 0x6e, 0x4e, 0x75, 0x6d,
	0x43, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x73, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x65, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x74,
	0x61, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a,
	0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75,
	0x6e, 0x69, 0x71, 0x75, 0x65, 0x22, 0xf0, 0x04, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x70, 0x72,
	0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x65, 0x6e, 0x74, 0x6f,
	0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x62, 0x65, 0x6e, 0x74, 0x6f, 0x53,
	0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0x61, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x3a, 0x0e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x45, 0x4c, 0x45, 0x4d,
	0x45, 0x4e, 0x54, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x45, 0x0a, 0x1b, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
	0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65,
	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x19,
	0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x44,
	0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0e, 0x72, 0x65, 0x71,
	0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x36, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e,
	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52,
	0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x55, 0x73, 0x61, 0x67, 0x65, 0x22,
	0x57, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a,
	0x0e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10,
	0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x54, 0x45, 0x4d, 0x50,
	0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x53,
	0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x22, 0x3e, 0x0a, 0x19, 0x45, 0x78, 0x74, 0x65,
	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01,
	0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x08,
	0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x5d, 0x0a, 0x0a, 0x48, 0x74, 0x6d, 0x6c,
	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x4f, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10,
	0x0a, 0x0c, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00,
	0x12, 0x07, 0x0a, 0x03, 0x41, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4d, 0x50,
	0x34, 0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4d, 0x50, 0x34, 0x45, 0x4d,
	0x41, 0x49, 0x4c, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d,
	0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x04, 0x22, 0xbb, 0x0d, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x3f, 0x0a, 0x0b, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x48, 0x74, 0x6d, 0x6c, 0x46, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x68, 0x74, 0x6d, 0x6c, 0x46, 0x6f,
	0x72, 0x6d, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f,
	0x62, 0x79, 0x18, 0x23, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
	0x64, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f,
	0x62, 0x79, 0x18, 0x24, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
	0x65, 0x64, 0x42, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10,
	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
	0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x64,
	0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70, 0x2e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x49, 0x64, 0x3a, 0x07, 0x4e, 0x4f, 0x54, 0x5f, 0x53,
	0x45, 0x54, 0x52, 0x07, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x65,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1b, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x6f, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x74,
	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65,
	0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a,
	0x16, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72,
	0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6d,
	0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74,
	0x69, 0x76, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e,
	0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x19,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x57, 0x61, 0x72, 0x6e,
	0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79,
	0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d,
	0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d,
	0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6e, 0x63, 0x65,
	0x73, 0x74, 0x6f, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x57, 0x0a,
	0x28, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73,
	0x74, 0x6f, 0x72, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6c,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x25, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74,
	0x6f, 0x72, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x74, 0x65, 0x72,
	0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x41,
	0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x63, 0x65,
	0x6e, 0x64, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74,
	0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x6c, 0x73, 0x6f, 0x5f,
	0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x77, 0x61, 0x72,
	0x6e, 0x69, 0x6e, 0x67, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x61, 0x6c, 0x73, 0x6f,
	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x54, 0x61, 0x67, 0x57, 0x61, 0x72, 0x6e, 0x69,
	0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x18,
	0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73,
	0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08,
	0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
	0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x72,
	0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65,
	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x55, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f,
	0x61, 0x74, 0x74, 0x72, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08,
	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69,
	0x74, 0x41, 0x74, 0x74, 0x72, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x61, 0x74,
	0x74, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x6d, 0x70, 0x2e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x53, 0x70,
	0x65, 0x63, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x74, 0x74,
	0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61,
	0x74, 0x74, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x63, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x64, 0x61, 0x74, 0x61, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x05, 0x63, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c,
	0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61,
	0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x69,
	0x6c, 0x64, 0x54, 0x61, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64,
	0x54, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x13, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73,
	0x5f, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28,
	0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e,
	0x67, 0x73, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x14,
	0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63,
	0x68, 0x69, 0x6c, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73,
	0x65, 0x52, 0x12, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x61, 0x73, 0x74,
	0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x48, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x1d, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e,
	0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0f,
	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12,
	0x19, 0x0a, 0x08, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x6d,
	0x70, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
	0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41,
	0x6d, 0x70, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x09, 0x61, 0x6d, 0x70, 0x4c, 0x61, 0x79,
	0x6f, 0x75, 0x74, 0x12, 0x48, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63,
	0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
	0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x6e,
	0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x0f, 0x6d, 0x61,
	0x72, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x73, 0x22, 0x46, 0x0a,
	0x07, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x49, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x54, 0x5f,
	0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x46, 0x4f,
	0x4e, 0x54, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x53, 0x48, 0x45, 0x45, 0x54, 0x10, 0x01, 0x12,
	0x14, 0x0a, 0x10, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x41, 0x4d, 0x50, 0x5f, 0x43, 0x55, 0x53,
	0x54, 0x4f, 0x4d, 0x10, 0x02, 0x22, 0xd8, 0x01, 0x0a, 0x07, 0x44, 0x6f, 0x63, 0x53, 0x70, 0x65,
	0x63, 0x12, 0x3f, 0x0a, 0x0b, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x48, 0x74, 0x6d, 0x6c, 0x46, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x68, 0x74, 0x6d, 0x6c, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42,
	0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64,
	0x42, 0x79, 0x12, 0x1f, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x32, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
	0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0f, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c,
	0x22, 0xb3, 0x07, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x43, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x3f, 0x0a, 0x0b, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x48, 0x74, 0x6d, 0x6c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e,
	0x43, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x68, 0x74, 0x6d, 0x6c, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x79, 0x12,
	0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x79,
	0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x14, 0x6d,
	0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x69, 0x73, 0x5f, 0x77, 0x61, 0x72, 0x6e,
	0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
	0x52, 0x11, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x49, 0x73, 0x57, 0x61, 0x72, 0x6e,
	0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x32, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65,
	0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x79,
	0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x16, 0x6d, 0x61,
	0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53,
	0x74, 0x79, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x12, 0x75, 0x72, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65,
	0x73, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
	0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x10, 0x75, 0x72, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f,
	0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x70,
	0x65, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x1e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61,
	0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
	0x6e, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,
	0x61, 0x6c, 0x73, 0x65, 0x52, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x44, 0x65,
	0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x53, 0x74, 0x79, 0x6c, 0x65,
	0x12, 0x34, 0x0a, 0x16, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x14, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x50, 0x72,
	0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x6d,
	0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x73, 0x73, 0x44,
	0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x63, 0x6c,
	0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x6c, 0x61,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x76, 0x67, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x1d, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x2e, 0x43, 0x73, 0x73, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x0e, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x76, 0x67, 0x12,
	0x29, 0x0a, 0x10, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c,
	0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x63, 0x6c, 0x61,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65,
	0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73,
	0x76, 0x67, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x76, 0x67, 0x12, 0x3c, 0x0a, 0x0e,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x55, 0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x69, 0x6d,
	0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x0d, 0x66, 0x6f,
	0x6e, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x16, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x55, 0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x66, 0x6f, 0x6e, 0x74, 0x55,
	0x72, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f,
	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a,
	0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x49, 0x6d, 0x70,
	0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, 0x22, 0xf4, 0x05, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x61, 0x67,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x6c, 0x69,
	0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x6d, 0x70, 0x2e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x49, 0x0a,
	0x1f, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72,
	0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1c, 0x6d, 0x69, 0x6e, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x12, 0x73, 0x70, 0x65, 0x63,
	0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x73, 0x70,
	0x65, 0x63, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a,
	0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f,
	0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
	0x61, 0x74, 0x65, 0x53, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74,
	0x79, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x55,
	0x72, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x0d, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x11, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x69, 0x74, 0x79,
	0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63,
	0x69, 0x66, 0x69, 0x63, 0x69, 0x74, 0x79, 0x52, 0x10, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x70,
	0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x13, 0x64, 0x65, 0x73,
	0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74,
	0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e,
	0x74, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x11, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e,
	0x64, 0x61, 0x6e, 0x74, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x03, 0x64,
	0x6f, 0x63, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x44, 0x6f, 0x63, 0x53, 0x70, 0x65, 0x63,
	0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x2b, 0x0a, 0x03, 0x63, 0x73, 0x73, 0x18, 0x13, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x2e, 0x44, 0x6f, 0x63, 0x43, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x63,
	0x73, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61,
	0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x44, 0x65, 0x63,
	0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0f, 0x64, 0x65,
	0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x24, 0x0a,
	0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x13,
	0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x22, 0xe1, 0x22, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72,
	0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x6d, 0x70, 0x2e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69,
	0x74, 0x79, 0x3a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72,
	0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x23, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x04,
	0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x31, 0x52, 0x04, 0x6c,
	0x69, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x72,
	0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x65, 0x63, 0x55, 0x72, 0x6c,
	0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3d, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65,
	0x67, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x6d, 0x70,
	0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x63,
	0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x61, 0x6d, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x64, 0x61, 0x74,
	0x61, 0x41, 0x6d, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x73, 0x74, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x22, 0x38, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12,
	0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52,
	0x49, 0x54, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01,
	0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x22, 0xb7, 0x1f,
	0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x56, 0x41,
	0x4c, 0x49, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x54, 0x4d, 0x4c,
	0x10, 0x6f, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f,
	0x54, 0x41, 0x47, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1b, 0x0a,
	0x17, 0x54, 0x41, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x59,
	0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x57, 0x41,
	0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52,
	0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x4c, 0x12,
	0x17, 0x0a, 0x13, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x5f,
	0x42, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x41, 0x52, 0x4e,
	0x49, 0x4e, 0x47, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e,
	0x55, 0x53, 0x45, 0x44, 0x10, 0x4f, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53,
	0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, 0x10, 0x54, 0x12, 0x28, 0x0a, 0x24,
	0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f,
	0x4e, 0x5f, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x45, 0x52,
	0x53, 0x49, 0x4f, 0x4e, 0x10, 0x50, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
	0x44, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x45, 0x52, 0x53,
	0x49, 0x4f, 0x4e, 0x10, 0x7a, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
	0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10,
	0x7b, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x4f, 0x4e, 0x5f, 0x4c, 0x54, 0x53, 0x5f, 0x53, 0x43, 0x52,
	0x49, 0x50, 0x54, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x54, 0x53, 0x10, 0x70, 0x12,
	0x1c, 0x0a, 0x18, 0x4c, 0x54, 0x53, 0x5f, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f, 0x41, 0x46,
	0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x4c, 0x54, 0x53, 0x10, 0x71, 0x12, 0x24, 0x0a,
	0x20, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x49, 0x50,
	0x54, 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f,
	0x4e, 0x10, 0x77, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45,
	0x44, 0x5f, 0x41, 0x4d, 0x50, 0x5f, 0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x79, 0x12, 0x1d,
	0x0a, 0x19, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f,
	0x42, 0x55, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x3d, 0x12, 0x12, 0x0a,
	0x0e, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10,
	0x02, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x44, 0x49, 0x53,
	0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x33, 0x12, 0x19, 0x0a,
	0x15, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x53, 0x43, 0x52, 0x49,
	0x50, 0x54, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x58, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x53, 0x41,
	0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x10, 0x03, 0x12, 0x19, 0x0a,
	0x15, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x59, 0x4c,
	0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x10, 0x51, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41,
	0x4c, 0x49, 0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x04,
	0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x54,
	0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x5e, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54,
	0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44,
	0x5f, 0x42, 0x59, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x10, 0x1b, 0x12, 0x1d, 0x0a, 0x19,
	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x41,
	0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x10, 0x69, 0x12, 0x1a, 0x0a, 0x16, 0x49,
	0x4d, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x49, 0x4e,
	0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41,
	0x4c, 0x49, 0x44, 0x10, 0x1a, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f,
	0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10,
	0x05, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x4f,
	0x4e, 0x45, 0x4f, 0x46, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x10, 0x1c, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59,
	0x5f, 0x41, 0x4e, 0x59, 0x4f, 0x46, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53,
	0x49, 0x4e, 0x47, 0x10, 0x68, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41,
	0x54, 0x45, 0x5f, 0x44, 0x49, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x3c, 0x12, 0x18,
	0x0a, 0x14, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x51,
	0x55, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x55, 0x50, 0x4c,
	0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x5f, 0x54, 0x41, 0x47,
	0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x4d, 0x12, 0x14, 0x0a, 0x10, 0x57, 0x52,
	0x4f, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x07,
	0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x53, 0x48, 0x45, 0x45, 0x54, 0x5f, 0x54,
	0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x32, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x54, 0x59,
	0x4c, 0x45, 0x53, 0x48, 0x45, 0x45, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x4c, 0x49,
	0x4e, 0x45, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e,
	0x47, 0x10, 0x66, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x54,
	0x59, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x67, 0x12, 0x1a,
	0x0a, 0x16, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f,
	0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x76, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41,
	0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x4d, 0x49,
	0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45,
	0x43, 0x54, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x56, 0x49,
	0x4f, 0x4c, 0x41, 0x54, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x4c, 0x49, 0x53, 0x54, 0x10,
	0x1e, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x53, 0x50,
	0x41, 0x43, 0x45, 0x5f, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x55, 0x4e,
	0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x52, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x44, 0x41, 0x54, 0x41, 0x10, 0x6a, 0x12,
	0x13, 0x0a, 0x0f, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54,
	0x54, 0x52, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54,
	0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x4e, 0x44,
	0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x4d,
	0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x52,
	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0e, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x4e, 0x56, 0x41,
	0x4c, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x56, 0x41, 0x4c,
	0x55, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
	0x10, 0x0f, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x52,
	0x4c, 0x10, 0x23, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x55,
	0x52, 0x4c, 0x10, 0x24, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
	0x55, 0x52, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x25, 0x12, 0x15,
	0x0a, 0x11, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x4d,
	0x41, 0x49, 0x4e, 0x10, 0x3e, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f,
	0x57, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x55, 0x52, 0x4c,
	0x10, 0x31, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44,
	0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x49, 0x4e, 0x5f, 0x41, 0x54, 0x54,
	0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x55, 0x54,
	0x55, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x56, 0x45, 0x5f,
	0x41, 0x54, 0x54, 0x52, 0x53, 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x4e, 0x45, 0x53, 0x43,
	0x41, 0x50, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e,
	0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x12, 0x12, 0x22, 0x0a,
	0x1e, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41,
	0x4c, 0x5f, 0x49, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10,
	0x13, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x45, 0x4d, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e,
	0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x14, 0x12, 0x2b, 0x0a, 0x27,
	0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x49,
	0x54, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x57, 0x49, 0x44, 0x54, 0x48, 0x5f, 0x41, 0x4e, 0x44,
	0x5f, 0x48, 0x45, 0x49, 0x47, 0x48, 0x54, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53,
	0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x41, 0x4e, 0x43, 0x45,
	0x53, 0x54, 0x4f, 0x52, 0x10, 0x17, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54,
	0x4f, 0x52, 0x59, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x54,
	0x41, 0x47, 0x10, 0x59, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52,
	0x59, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x10, 0x1f,
	0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x41,
	0x47, 0x5f, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f,
	0x48, 0x49, 0x4e, 0x54, 0x10, 0x20, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44,
	0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x49, 0x4d, 0x50,
	0x4c, 0x49, 0x45, 0x44, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x10, 0x21, 0x12, 0x27, 0x0a,
	0x23, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44,
	0x5f, 0x42, 0x59, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x4c, 0x41,
	0x59, 0x4f, 0x55, 0x54, 0x10, 0x22, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52,
	0x45, 0x43, 0x54, 0x5f, 0x4e, 0x55, 0x4d, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x54, 0x41,
	0x47, 0x53, 0x10, 0x38, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43,
	0x54, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x4e, 0x55, 0x4d, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f,
	0x54, 0x41, 0x47, 0x53, 0x10, 0x55, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c,
	0x4f, 0x57, 0x45, 0x44, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4e,
	0x41, 0x4d, 0x45, 0x10, 0x39, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f,
	0x57, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f,
	0x54, 0x41, 0x47, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x3a, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x49,
	0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x46, 0x41, 0x43,
	0x54, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x4f, 0x44, 0x59, 0x10, 0x40, 0x12, 0x2e, 0x0a, 0x2a,
	0x43, 0x48, 0x49, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e,
	0x4f, 0x54, 0x5f, 0x53, 0x41, 0x54, 0x49, 0x53, 0x46, 0x59, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
	0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x42, 0x12, 0x25, 0x0a, 0x21,
	0x4d, 0x41, 0x4e, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45,
	0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x10, 0x43, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45,
	0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54,
	0x10, 0x44, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x47, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c,
	0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x48, 0x41, 0x56, 0x45, 0x5f, 0x53, 0x49,
	0x42, 0x4c, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x57, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x47, 0x5f,
	0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f,
	0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x45, 0x12, 0x37, 0x0a, 0x33, 0x43, 0x48,
	0x49, 0x4c, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54,
	0x5f, 0x53, 0x41, 0x54, 0x49, 0x53, 0x46, 0x59, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e,
	0x43, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x55, 0x4c, 0x41,
	0x52, 0x10, 0x46, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x5f,
	0x4d, 0x55, 0x53, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x43, 0x45, 0x45, 0x44, 0x5f, 0x41, 0x4c, 0x4c,
	0x5f, 0x55, 0x52, 0x4c, 0x53, 0x10, 0x4e, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x49, 0x53, 0x53, 0x49,
	0x4e, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x58, 0x54, 0x45,
	0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x53, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x5f,
	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44,
	0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x61, 0x12, 0x18, 0x0a, 0x14,
	0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x43, 0x4f, 0x4d,
	0x50, 0x4c, 0x45, 0x58, 0x10, 0x56, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
	0x44, 0x5f, 0x55, 0x54, 0x46, 0x38, 0x10, 0x60, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4f, 0x43, 0x55,
	0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f,
	0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x6c, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x45,
	0x56, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x6d, 0x12, 0x25, 0x0a,
	0x21, 0x41, 0x4d, 0x50, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49,
	0x4e, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x5f, 0x41, 0x54,
	0x54, 0x52, 0x10, 0x78, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x53, 0x45,
	0x54, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x6e, 0x12, 0x1e, 0x0a, 0x1a,
	0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x1d, 0x12, 0x27, 0x0a, 0x23,
	0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x59,
	0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x53, 0x4c,
	0x41, 0x53, 0x48, 0x10, 0x26, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e,
	0x54, 0x41, 0x58, 0x5f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44,
	0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x53,
	0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x49,
	0x4e, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x28, 0x12, 0x16,
	0x0a, 0x12, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x42, 0x41, 0x44,
	0x5f, 0x55, 0x52, 0x4c, 0x10, 0x29, 0x12, 0x2f, 0x0a, 0x2b, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59,
	0x4e, 0x54, 0x41, 0x58, 0x5f, 0x45, 0x4f, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x45, 0x4c,
	0x55, 0x44, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x44,
	0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x2a, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x53, 0x53, 0x5f, 0x53,
	0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x45,
	0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x2b, 0x12, 0x25, 0x0a, 0x21, 0x43,
	0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50,
	0x4c, 0x45, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x10, 0x2c, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58,
	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x53, 0x45, 0x55, 0x44, 0x4f,
	0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x2d, 0x12, 0x1f, 0x0a, 0x1b, 0x43,
	0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x2e, 0x12, 0x23, 0x0a, 0x1f,
	0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41,
	0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10,
	0x2f, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f,
	0x55, 0x4e, 0x50, 0x41, 0x52, 0x53, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x52,
	0x45, 0x4d, 0x41, 0x49, 0x4e, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54,
	0x4f, 0x52, 0x10, 0x30, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54,
	0x41, 0x58, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x34,
	0x12, 0x1a, 0x0a, 0x16, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49,
	0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x35, 0x12, 0x23, 0x0a, 0x1f,
	0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x5f, 0x55, 0x52, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10,
	0x36, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f,
	0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x44, 0x4f, 0x4d, 0x41, 0x49,
	0x4e, 0x10, 0x3f, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41,
	0x58, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4c,
	0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x37, 0x12, 0x24, 0x0a, 0x20, 0x43,
	0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
	0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10,
	0x3b, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f,
	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59,
	0x10, 0x5a, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58,
	0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54,
	0x59, 0x5f, 0x4e, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x5f, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x53,
	0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x44,
	0x45, 0x43, 0x4c, 0x41, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x5b, 0x12, 0x40, 0x0a,
	0x3c, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53, 0x41,
	0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x46, 0x49, 0x45, 0x44,
	0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x49, 0x4e,
	0x53, 0x49, 0x44, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x10, 0x5c, 0x12,
	0x32, 0x0a, 0x2e, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49,
	0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x52, 0x41, 0x4d,
	0x45, 0x5f, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x52, 0x41, 0x4d,
	0x45, 0x10, 0x5d, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41,
	0x58, 0x5f, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49,
	0x41, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x62, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x53, 0x53,
	0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57,
	0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x63, 0x12,
	0x27, 0x0a, 0x23, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49,
	0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x46,
	0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x53, 0x53, 0x5f,
	0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45,
	0x44, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10,
	0x72, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f,
	0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x50, 0x53, 0x45, 0x55, 0x44,
	0x4f, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x53, 0x53,
	0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57,
	0x45, 0x44, 0x5f, 0x50, 0x53, 0x45, 0x55, 0x44, 0x4f, 0x5f, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x4e,
	0x54, 0x10, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41,
	0x58, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f,
	0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x47, 0x12, 0x23, 0x0a,
	0x1f, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53, 0x41,
	0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x4e, 0x54,
	0x10, 0x75, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x53, 0x53, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x53, 0x53,
	0x49, 0x56, 0x45, 0x4c, 0x59, 0x5f, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x6b, 0x12, 0x32,
	0x0a, 0x2e, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x44, 0x49, 0x53,
	0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59,
	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x48, 0x49, 0x4e, 0x54,
	0x10, 0x48, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58,
	0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x4c, 0x4c,
	0x4f, 0x57, 0x45, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x49, 0x4e, 0x5f, 0x41, 0x54, 0x5f, 0x52,
	0x55, 0x4c, 0x45, 0x10, 0x49, 0x12, 0x30, 0x0a, 0x2c, 0x43, 0x53, 0x53, 0x5f, 0x53, 0x59, 0x4e,
	0x54, 0x41, 0x58, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x44, 0x49, 0x53,
	0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x47, 0x45, 0x54, 0x48, 0x45, 0x52,
	0x5f, 0x57, 0x49, 0x54, 0x48, 0x10, 0x4a, 0x12, 0x2e, 0x0a, 0x2a, 0x43, 0x53, 0x53, 0x5f, 0x53,
	0x59, 0x4e, 0x54, 0x41, 0x58, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x54, 0x59, 0x5f, 0x52,
	0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x46, 0x49, 0x43,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x4b, 0x22, 0x6d, 0x0a, 0x10, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x04, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x61, 0x6d, 0x70, 0x2e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04,
	0x63, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63,
	0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x69,
	0x66, 0x69, 0x63, 0x69, 0x74, 0x79, 0x22, 0x5e, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x46,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5d, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53,
	0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x03, 0x73,
	0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53,
	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a,
	0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x20, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a,
	0x14, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x69, 0x66, 0x5f, 0x75, 0x6e, 0x73, 0x61, 0x74, 0x69,
	0x73, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x6d,
	0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x12, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x49, 0x66, 0x55, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x64, 0x22,
	0xad, 0x04, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x12,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x42, 0x02, 0x18, 0x01,
	0x52, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x12, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x65,
	0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x3a,
	0x02, 0x2d, 0x31, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x73, 0x70, 0x65, 0x63, 0x46, 0x69, 0x6c,
	0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x13, 0x74, 0x72, 0x61,
	0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a,
	0x0f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
	0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x65, 0x6e,
	0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
	0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74,
	0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x16, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x6d, 0x70,
	0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x14,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x73, 0x22, 0x29, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b,
	0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x50,
	0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x42,
	0x21, 0x5a, 0x1f, 0x2e, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x61, 0x6d, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72,
}

var (
	file_validator_proto_rawDescOnce sync.Once
	file_validator_proto_rawDescData = file_validator_proto_rawDesc
)

func file_validator_proto_rawDescGZIP() []byte {
	file_validator_proto_rawDescOnce.Do(func() {
		file_validator_proto_rawDescData = protoimpl.X.CompressGZIP(file_validator_proto_rawDescData)
	})
	return file_validator_proto_rawDescData
}

var file_validator_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
var file_validator_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_validator_proto_goTypes = []interface{}{
	(AttrSpec_ValueSet)(0),                       // 0: amp.validator.AttrSpec.ValueSet
	(AttrSpec_DispatchKeyType)(0),                // 1: amp.validator.AttrSpec.DispatchKeyType
	(AmpLayout_Layout)(0),                        // 2: amp.validator.AmpLayout.Layout
	(AncestorMarker_Marker)(0),                   // 3: amp.validator.AncestorMarker.Marker
	(ExtensionSpec_ExtensionType)(0),             // 4: amp.validator.ExtensionSpec.ExtensionType
	(ExtensionSpec_ExtensionUsageRequirement)(0), // 5: amp.validator.ExtensionSpec.ExtensionUsageRequirement
	(HtmlFormat_Code)(0),                         // 6: amp.validator.HtmlFormat.Code
	(TagSpec_NamedId)(0),                         // 7: amp.validator.TagSpec.NamedId
	(ErrorCategory_Code)(0),                      // 8: amp.validator.ErrorCategory.Code
	(ValidationError_Severity)(0),                // 9: amp.validator.ValidationError.Severity
	(ValidationError_Code)(0),                    // 10: amp.validator.ValidationError.Code
	(ValidationResult_Status)(0),                 // 11: amp.validator.ValidationResult.Status
	(*AttrTriggerSpec)(nil),                      // 12: amp.validator.AttrTriggerSpec
	(*PropertySpec)(nil),                         // 13: amp.validator.PropertySpec
	(*PropertySpecList)(nil),                     // 14: amp.validator.PropertySpecList
	(*UrlSpec)(nil),                              // 15: amp.validator.UrlSpec
	(*CssDeclaration)(nil),                       // 16: amp.validator.CssDeclaration
	(*AttrSpec)(nil),                             // 17: amp.validator.AttrSpec
	(*AttrList)(nil),                             // 18: amp.validator.AttrList
	(*DescendantTagList)(nil),                    // 19: amp.validator.DescendantTagList
	(*DeclarationList)(nil),                      // 20: amp.validator.DeclarationList
	(*DisallowedCDataRegex)(nil),                 // 21: amp.validator.DisallowedCDataRegex
	(*MediaQuerySpec)(nil),                       // 22: amp.validator.MediaQuerySpec
	(*SelectorSpec)(nil),                         // 23: amp.validator.SelectorSpec
	(*AtRuleSpec)(nil),                           // 24: amp.validator.AtRuleSpec
	(*CssSpec)(nil),                              // 25: amp.validator.CssSpec
	(*CdataSpec)(nil),                            // 26: amp.validator.CdataSpec
	(*AmpLayout)(nil),                            // 27: amp.validator.AmpLayout
	(*AncestorMarker)(nil),                       // 28: amp.validator.AncestorMarker
	(*ChildTagSpec)(nil),                         // 29: amp.validator.ChildTagSpec
	(*ReferencePoint)(nil),                       // 30: amp.validator.ReferencePoint
	(*ExtensionSpec)(nil),                        // 31: amp.validator.ExtensionSpec
	(*HtmlFormat)(nil),                           // 32: amp.validator.HtmlFormat
	(*TagSpec)(nil),                              // 33: amp.validator.TagSpec
	(*DocSpec)(nil),                              // 34: amp.validator.DocSpec
	(*DocCssSpec)(nil),                           // 35: amp.validator.DocCssSpec
	(*ValidatorRules)(nil),                       // 36: amp.validator.ValidatorRules
	(*ErrorCategory)(nil),                        // 37: amp.validator.ErrorCategory
	(*ValidationError)(nil),                      // 38: amp.validator.ValidationError
	(*ErrorSpecificity)(nil),                     // 39: amp.validator.ErrorSpecificity
	(*ErrorFormat)(nil),                          // 40: amp.validator.ErrorFormat
	(*ValueSetProvision)(nil),                    // 41: amp.validator.ValueSetProvision
	(*ValueSetRequirement)(nil),                  // 42: amp.validator.ValueSetRequirement
	(*ValidationResult)(nil),                     // 43: amp.validator.ValidationResult
}
var file_validator_proto_depIdxs = []int32{
	13, // 0: amp.validator.PropertySpecList.properties:type_name -> amp.validator.PropertySpec
	15, // 1: amp.validator.AttrSpec.value_url:type_name -> amp.validator.UrlSpec
	14, // 2: amp.validator.AttrSpec.value_properties:type_name -> amp.validator.PropertySpecList
	0,  // 3: amp.validator.AttrSpec.add_value_to_set:type_name -> amp.validator.AttrSpec.ValueSet
	0,  // 4: amp.validator.AttrSpec.value_oneof_set:type_name -> amp.validator.AttrSpec.ValueSet
	12, // 5: amp.validator.AttrSpec.trigger:type_name -> amp.validator.AttrTriggerSpec
	16, // 6: amp.validator.AttrSpec.css_declaration:type_name -> amp.validator.CssDeclaration
	1,  // 7: amp.validator.AttrSpec.dispatch_key:type_name -> amp.validator.AttrSpec.DispatchKeyType
	28, // 8: amp.validator.AttrSpec.requires_ancestor:type_name -> amp.validator.AncestorMarker
	17, // 9: amp.validator.AttrList.attrs:type_name -> amp.validator.AttrSpec
	16, // 10: amp.validator.DeclarationList.declaration:type_name -> amp.validator.CssDeclaration
	22, // 11: amp.validator.AtRuleSpec.media_query_spec:type_name -> amp.validator.MediaQuerySpec
	24, // 12: amp.validator.CssSpec.at_rule_spec:type_name -> amp.validator.AtRuleSpec
	23, // 13: amp.validator.CssSpec.selector_spec:type_name -> amp.validator.SelectorSpec
	25, // 14: amp.validator.CdataSpec.css_spec:type_name -> amp.validator.CssSpec
	21, // 15: amp.validator.CdataSpec.disallowed_cdata_regex:type_name -> amp.validator.DisallowedCDataRegex
	2,  // 16: amp.validator.AmpLayout.supported_layouts:type_name -> amp.validator.AmpLayout.Layout
	3,  // 17: amp.validator.AncestorMarker.marker:type_name -> amp.validator.AncestorMarker.Marker
	4,  // 18: amp.validator.ExtensionSpec.extension_type:type_name -> amp.validator.ExtensionSpec.ExtensionType
	5,  // 19: amp.validator.ExtensionSpec.requires_usage:type_name -> amp.validator.ExtensionSpec.ExtensionUsageRequirement
	6,  // 20: amp.validator.TagSpec.html_format:type_name -> amp.validator.HtmlFormat.Code
	7,  // 21: amp.validator.TagSpec.named_id:type_name -> amp.validator.TagSpec.NamedId
	31, // 22: amp.validator.TagSpec.extension_spec:type_name -> amp.validator.ExtensionSpec
	17, // 23: amp.validator.TagSpec.attrs:type_name -> amp.validator.AttrSpec
	26, // 24: amp.validator.TagSpec.cdata:type_name -> amp.validator.CdataSpec
	29, // 25: amp.validator.TagSpec.child_tags:type_name -> amp.validator.ChildTagSpec
	30, // 26: amp.validator.TagSpec.reference_points:type_name -> amp.validator.ReferencePoint
	27, // 27: amp.validator.TagSpec.amp_layout:type_name -> amp.validator.AmpLayout
	28, // 28: amp.validator.TagSpec.mark_descendants:type_name -> amp.validator.AncestorMarker
	6,  // 29: amp.validator.DocSpec.html_format:type_name -> amp.validator.HtmlFormat.Code
	6,  // 30: amp.validator.DocCssSpec.html_format:type_name -> amp.validator.HtmlFormat.Code
	16, // 31: amp.validator.DocCssSpec.declaration:type_name -> amp.validator.CssDeclaration
	16, // 32: amp.validator.DocCssSpec.declaration_svg:type_name -> amp.validator.CssDeclaration
	15, // 33: amp.validator.DocCssSpec.image_url_spec:type_name -> amp.validator.UrlSpec
	15, // 34: amp.validator.DocCssSpec.font_url_spec:type_name -> amp.validator.UrlSpec
	33, // 35: amp.validator.ValidatorRules.tags:type_name -> amp.validator.TagSpec
	18, // 36: amp.validator.ValidatorRules.attr_lists:type_name -> amp.validator.AttrList
	40, // 37: amp.validator.ValidatorRules.error_formats:type_name -> amp.validator.ErrorFormat
	39, // 38: amp.validator.ValidatorRules.error_specificity:type_name -> amp.validator.ErrorSpecificity
	19, // 39: amp.validator.ValidatorRules.descendant_tag_list:type_name -> amp.validator.DescendantTagList
	34, // 40: amp.validator.ValidatorRules.doc:type_name -> amp.validator.DocSpec
	35, // 41: amp.validator.ValidatorRules.css:type_name -> amp.validator.DocCssSpec
	20, // 42: amp.validator.ValidatorRules.declaration_list:type_name -> amp.validator.DeclarationList
	9,  // 43: amp.validator.ValidationError.severity:type_name -> amp.validator.ValidationError.Severity
	10, // 44: amp.validator.ValidationError.code:type_name -> amp.validator.ValidationError.Code
	8,  // 45: amp.validator.ValidationError.category:type_name -> amp.validator.ErrorCategory.Code
	10, // 46: amp.validator.ErrorSpecificity.code:type_name -> amp.validator.ValidationError.Code
	10, // 47: amp.validator.ErrorFormat.code:type_name -> amp.validator.ValidationError.Code
	0,  // 48: amp.validator.ValueSetProvision.set:type_name -> amp.validator.AttrSpec.ValueSet
	41, // 49: amp.validator.ValueSetRequirement.provision:type_name -> amp.validator.ValueSetProvision
	38, // 50: amp.validator.ValueSetRequirement.error_if_unsatisfied:type_name -> amp.validator.ValidationError
	11, // 51: amp.validator.ValidationResult.status:type_name -> amp.validator.ValidationResult.Status
	38, // 52: amp.validator.ValidationResult.errors:type_name -> amp.validator.ValidationError
	41, // 53: amp.validator.ValidationResult.value_set_provisions:type_name -> amp.validator.ValueSetProvision
	42, // 54: amp.validator.ValidationResult.value_set_requirements:type_name -> amp.validator.ValueSetRequirement
	55, // [55:55] is the sub-list for method output_type
	55, // [55:55] is the sub-list for method input_type
	55, // [55:55] is the sub-list for extension type_name
	55, // [55:55] is the sub-list for extension extendee
	0,  // [0:55] is the sub-list for field type_name
}

func init() { file_validator_proto_init() }
func file_validator_proto_init() {
	if File_validator_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_validator_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AttrTriggerSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PropertySpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PropertySpecList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UrlSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CssDeclaration); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AttrSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AttrList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescendantTagList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeclarationList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DisallowedCDataRegex); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MediaQuerySpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SelectorSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AtRuleSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CssSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CdataSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AmpLayout); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AncestorMarker); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChildTagSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReferencePoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExtensionSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HtmlFormat); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TagSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DocSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DocCssSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidatorRules); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ErrorCategory); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ErrorSpecificity); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ErrorFormat); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValueSetProvision); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValueSetRequirement); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_validator_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValidationResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_validator_proto_rawDesc,
			NumEnums:      12,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_validator_proto_goTypes,
		DependencyIndexes: file_validator_proto_depIdxs,
		EnumInfos:         file_validator_proto_enumTypes,
		MessageInfos:      file_validator_proto_msgTypes,
	}.Build()
	File_validator_proto = out.File
	file_validator_proto_rawDesc = nil
	file_validator_proto_goTypes = nil
	file_validator_proto_depIdxs = nil
}
