// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v2/common/ad_type_infos.proto

package common

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	enums "google.golang.org/genproto/googleapis/ads/googleads/v2/enums"
	_ "google.golang.org/genproto/googleapis/api/annotations"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// A text ad.
type TextAdInfo struct {
	// The headline of the ad.
	Headline *wrappers.StringValue `protobuf:"bytes,1,opt,name=headline,proto3" json:"headline,omitempty"`
	// The first line of the ad's description.
	Description1 *wrappers.StringValue `protobuf:"bytes,2,opt,name=description1,proto3" json:"description1,omitempty"`
	// The second line of the ad's description.
	Description2         *wrappers.StringValue `protobuf:"bytes,3,opt,name=description2,proto3" json:"description2,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *TextAdInfo) Reset()         { *m = TextAdInfo{} }
func (m *TextAdInfo) String() string { return proto.CompactTextString(m) }
func (*TextAdInfo) ProtoMessage()    {}
func (*TextAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{0}
}

func (m *TextAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TextAdInfo.Unmarshal(m, b)
}
func (m *TextAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TextAdInfo.Marshal(b, m, deterministic)
}
func (m *TextAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TextAdInfo.Merge(m, src)
}
func (m *TextAdInfo) XXX_Size() int {
	return xxx_messageInfo_TextAdInfo.Size(m)
}
func (m *TextAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_TextAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_TextAdInfo proto.InternalMessageInfo

func (m *TextAdInfo) GetHeadline() *wrappers.StringValue {
	if m != nil {
		return m.Headline
	}
	return nil
}

func (m *TextAdInfo) GetDescription1() *wrappers.StringValue {
	if m != nil {
		return m.Description1
	}
	return nil
}

func (m *TextAdInfo) GetDescription2() *wrappers.StringValue {
	if m != nil {
		return m.Description2
	}
	return nil
}

// An expanded text ad.
type ExpandedTextAdInfo struct {
	// The first part of the ad's headline.
	HeadlinePart1 *wrappers.StringValue `protobuf:"bytes,1,opt,name=headline_part1,json=headlinePart1,proto3" json:"headline_part1,omitempty"`
	// The second part of the ad's headline.
	HeadlinePart2 *wrappers.StringValue `protobuf:"bytes,2,opt,name=headline_part2,json=headlinePart2,proto3" json:"headline_part2,omitempty"`
	// The third part of the ad's headline.
	HeadlinePart3 *wrappers.StringValue `protobuf:"bytes,6,opt,name=headline_part3,json=headlinePart3,proto3" json:"headline_part3,omitempty"`
	// The description of the ad.
	Description *wrappers.StringValue `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// The second description of the ad.
	Description2 *wrappers.StringValue `protobuf:"bytes,7,opt,name=description2,proto3" json:"description2,omitempty"`
	// The text that can appear alongside the ad's displayed URL.
	Path1 *wrappers.StringValue `protobuf:"bytes,4,opt,name=path1,proto3" json:"path1,omitempty"`
	// Additional text that can appear alongside the ad's displayed URL.
	Path2                *wrappers.StringValue `protobuf:"bytes,5,opt,name=path2,proto3" json:"path2,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *ExpandedTextAdInfo) Reset()         { *m = ExpandedTextAdInfo{} }
func (m *ExpandedTextAdInfo) String() string { return proto.CompactTextString(m) }
func (*ExpandedTextAdInfo) ProtoMessage()    {}
func (*ExpandedTextAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{1}
}

func (m *ExpandedTextAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExpandedTextAdInfo.Unmarshal(m, b)
}
func (m *ExpandedTextAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExpandedTextAdInfo.Marshal(b, m, deterministic)
}
func (m *ExpandedTextAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExpandedTextAdInfo.Merge(m, src)
}
func (m *ExpandedTextAdInfo) XXX_Size() int {
	return xxx_messageInfo_ExpandedTextAdInfo.Size(m)
}
func (m *ExpandedTextAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ExpandedTextAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ExpandedTextAdInfo proto.InternalMessageInfo

func (m *ExpandedTextAdInfo) GetHeadlinePart1() *wrappers.StringValue {
	if m != nil {
		return m.HeadlinePart1
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetHeadlinePart2() *wrappers.StringValue {
	if m != nil {
		return m.HeadlinePart2
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetHeadlinePart3() *wrappers.StringValue {
	if m != nil {
		return m.HeadlinePart3
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetDescription2() *wrappers.StringValue {
	if m != nil {
		return m.Description2
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetPath1() *wrappers.StringValue {
	if m != nil {
		return m.Path1
	}
	return nil
}

func (m *ExpandedTextAdInfo) GetPath2() *wrappers.StringValue {
	if m != nil {
		return m.Path2
	}
	return nil
}

// A call-only ad.
type CallOnlyAdInfo struct {
	// The country code in the ad.
	CountryCode *wrappers.StringValue `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
	// The phone number in the ad.
	PhoneNumber *wrappers.StringValue `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"`
	// The business name in the ad.
	BusinessName *wrappers.StringValue `protobuf:"bytes,3,opt,name=business_name,json=businessName,proto3" json:"business_name,omitempty"`
	// First headline in the ad.
	Headline1 *wrappers.StringValue `protobuf:"bytes,11,opt,name=headline1,proto3" json:"headline1,omitempty"`
	// Second headline in the ad.
	Headline2 *wrappers.StringValue `protobuf:"bytes,12,opt,name=headline2,proto3" json:"headline2,omitempty"`
	// The first line of the ad's description.
	Description1 *wrappers.StringValue `protobuf:"bytes,4,opt,name=description1,proto3" json:"description1,omitempty"`
	// The second line of the ad's description.
	Description2 *wrappers.StringValue `protobuf:"bytes,5,opt,name=description2,proto3" json:"description2,omitempty"`
	// Whether to enable call tracking for the creative. Enabling call
	// tracking also enables call conversions.
	CallTracked *wrappers.BoolValue `protobuf:"bytes,6,opt,name=call_tracked,json=callTracked,proto3" json:"call_tracked,omitempty"`
	// Whether to disable call conversion for the creative.
	// If set to `true`, disables call conversions even when `call_tracked` is
	// `true`.
	// If `call_tracked` is `false`, this field is ignored.
	DisableCallConversion *wrappers.BoolValue `protobuf:"bytes,7,opt,name=disable_call_conversion,json=disableCallConversion,proto3" json:"disable_call_conversion,omitempty"`
	// The URL to be used for phone number verification.
	PhoneNumberVerificationUrl *wrappers.StringValue `protobuf:"bytes,8,opt,name=phone_number_verification_url,json=phoneNumberVerificationUrl,proto3" json:"phone_number_verification_url,omitempty"`
	// The conversion action to attribute a call conversion to. If not set a
	// default conversion action is used. This field only has effect if
	// call_tracked is set to true. Otherwise this field is ignored.
	ConversionAction *wrappers.StringValue `protobuf:"bytes,9,opt,name=conversion_action,json=conversionAction,proto3" json:"conversion_action,omitempty"`
	// The call conversion behavior of this call only ad. It can use its own call
	// conversion setting, inherit the account level setting, or be disabled.
	ConversionReportingState enums.CallConversionReportingStateEnum_CallConversionReportingState `protobuf:"varint,10,opt,name=conversion_reporting_state,json=conversionReportingState,proto3,enum=google.ads.googleads.v2.enums.CallConversionReportingStateEnum_CallConversionReportingState" json:"conversion_reporting_state,omitempty"`
	XXX_NoUnkeyedLiteral     struct{}                                                            `json:"-"`
	XXX_unrecognized         []byte                                                              `json:"-"`
	XXX_sizecache            int32                                                               `json:"-"`
}

func (m *CallOnlyAdInfo) Reset()         { *m = CallOnlyAdInfo{} }
func (m *CallOnlyAdInfo) String() string { return proto.CompactTextString(m) }
func (*CallOnlyAdInfo) ProtoMessage()    {}
func (*CallOnlyAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{2}
}

func (m *CallOnlyAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CallOnlyAdInfo.Unmarshal(m, b)
}
func (m *CallOnlyAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CallOnlyAdInfo.Marshal(b, m, deterministic)
}
func (m *CallOnlyAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CallOnlyAdInfo.Merge(m, src)
}
func (m *CallOnlyAdInfo) XXX_Size() int {
	return xxx_messageInfo_CallOnlyAdInfo.Size(m)
}
func (m *CallOnlyAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_CallOnlyAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_CallOnlyAdInfo proto.InternalMessageInfo

func (m *CallOnlyAdInfo) GetCountryCode() *wrappers.StringValue {
	if m != nil {
		return m.CountryCode
	}
	return nil
}

func (m *CallOnlyAdInfo) GetPhoneNumber() *wrappers.StringValue {
	if m != nil {
		return m.PhoneNumber
	}
	return nil
}

func (m *CallOnlyAdInfo) GetBusinessName() *wrappers.StringValue {
	if m != nil {
		return m.BusinessName
	}
	return nil
}

func (m *CallOnlyAdInfo) GetHeadline1() *wrappers.StringValue {
	if m != nil {
		return m.Headline1
	}
	return nil
}

func (m *CallOnlyAdInfo) GetHeadline2() *wrappers.StringValue {
	if m != nil {
		return m.Headline2
	}
	return nil
}

func (m *CallOnlyAdInfo) GetDescription1() *wrappers.StringValue {
	if m != nil {
		return m.Description1
	}
	return nil
}

func (m *CallOnlyAdInfo) GetDescription2() *wrappers.StringValue {
	if m != nil {
		return m.Description2
	}
	return nil
}

func (m *CallOnlyAdInfo) GetCallTracked() *wrappers.BoolValue {
	if m != nil {
		return m.CallTracked
	}
	return nil
}

func (m *CallOnlyAdInfo) GetDisableCallConversion() *wrappers.BoolValue {
	if m != nil {
		return m.DisableCallConversion
	}
	return nil
}

func (m *CallOnlyAdInfo) GetPhoneNumberVerificationUrl() *wrappers.StringValue {
	if m != nil {
		return m.PhoneNumberVerificationUrl
	}
	return nil
}

func (m *CallOnlyAdInfo) GetConversionAction() *wrappers.StringValue {
	if m != nil {
		return m.ConversionAction
	}
	return nil
}

func (m *CallOnlyAdInfo) GetConversionReportingState() enums.CallConversionReportingStateEnum_CallConversionReportingState {
	if m != nil {
		return m.ConversionReportingState
	}
	return enums.CallConversionReportingStateEnum_UNSPECIFIED
}

// An expanded dynamic search ad.
type ExpandedDynamicSearchAdInfo struct {
	// The description of the ad.
	Description          *wrappers.StringValue `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *ExpandedDynamicSearchAdInfo) Reset()         { *m = ExpandedDynamicSearchAdInfo{} }
func (m *ExpandedDynamicSearchAdInfo) String() string { return proto.CompactTextString(m) }
func (*ExpandedDynamicSearchAdInfo) ProtoMessage()    {}
func (*ExpandedDynamicSearchAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{3}
}

func (m *ExpandedDynamicSearchAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExpandedDynamicSearchAdInfo.Unmarshal(m, b)
}
func (m *ExpandedDynamicSearchAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExpandedDynamicSearchAdInfo.Marshal(b, m, deterministic)
}
func (m *ExpandedDynamicSearchAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExpandedDynamicSearchAdInfo.Merge(m, src)
}
func (m *ExpandedDynamicSearchAdInfo) XXX_Size() int {
	return xxx_messageInfo_ExpandedDynamicSearchAdInfo.Size(m)
}
func (m *ExpandedDynamicSearchAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ExpandedDynamicSearchAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ExpandedDynamicSearchAdInfo proto.InternalMessageInfo

func (m *ExpandedDynamicSearchAdInfo) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

// A hotel ad.
type HotelAdInfo struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *HotelAdInfo) Reset()         { *m = HotelAdInfo{} }
func (m *HotelAdInfo) String() string { return proto.CompactTextString(m) }
func (*HotelAdInfo) ProtoMessage()    {}
func (*HotelAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{4}
}

func (m *HotelAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_HotelAdInfo.Unmarshal(m, b)
}
func (m *HotelAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_HotelAdInfo.Marshal(b, m, deterministic)
}
func (m *HotelAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_HotelAdInfo.Merge(m, src)
}
func (m *HotelAdInfo) XXX_Size() int {
	return xxx_messageInfo_HotelAdInfo.Size(m)
}
func (m *HotelAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_HotelAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_HotelAdInfo proto.InternalMessageInfo

// A Smart Shopping ad.
type ShoppingSmartAdInfo struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ShoppingSmartAdInfo) Reset()         { *m = ShoppingSmartAdInfo{} }
func (m *ShoppingSmartAdInfo) String() string { return proto.CompactTextString(m) }
func (*ShoppingSmartAdInfo) ProtoMessage()    {}
func (*ShoppingSmartAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{5}
}

func (m *ShoppingSmartAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ShoppingSmartAdInfo.Unmarshal(m, b)
}
func (m *ShoppingSmartAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ShoppingSmartAdInfo.Marshal(b, m, deterministic)
}
func (m *ShoppingSmartAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ShoppingSmartAdInfo.Merge(m, src)
}
func (m *ShoppingSmartAdInfo) XXX_Size() int {
	return xxx_messageInfo_ShoppingSmartAdInfo.Size(m)
}
func (m *ShoppingSmartAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ShoppingSmartAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ShoppingSmartAdInfo proto.InternalMessageInfo

// A standard Shopping ad.
type ShoppingProductAdInfo struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ShoppingProductAdInfo) Reset()         { *m = ShoppingProductAdInfo{} }
func (m *ShoppingProductAdInfo) String() string { return proto.CompactTextString(m) }
func (*ShoppingProductAdInfo) ProtoMessage()    {}
func (*ShoppingProductAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{6}
}

func (m *ShoppingProductAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ShoppingProductAdInfo.Unmarshal(m, b)
}
func (m *ShoppingProductAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ShoppingProductAdInfo.Marshal(b, m, deterministic)
}
func (m *ShoppingProductAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ShoppingProductAdInfo.Merge(m, src)
}
func (m *ShoppingProductAdInfo) XXX_Size() int {
	return xxx_messageInfo_ShoppingProductAdInfo.Size(m)
}
func (m *ShoppingProductAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ShoppingProductAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ShoppingProductAdInfo proto.InternalMessageInfo

// A Shopping Comparison Listing ad.
type ShoppingComparisonListingAdInfo struct {
	// Headline of the ad. This field is required. Allowed length is between 25
	// and 45 characters.
	Headline             *wrappers.StringValue `protobuf:"bytes,1,opt,name=headline,proto3" json:"headline,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *ShoppingComparisonListingAdInfo) Reset()         { *m = ShoppingComparisonListingAdInfo{} }
func (m *ShoppingComparisonListingAdInfo) String() string { return proto.CompactTextString(m) }
func (*ShoppingComparisonListingAdInfo) ProtoMessage()    {}
func (*ShoppingComparisonListingAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{7}
}

func (m *ShoppingComparisonListingAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ShoppingComparisonListingAdInfo.Unmarshal(m, b)
}
func (m *ShoppingComparisonListingAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ShoppingComparisonListingAdInfo.Marshal(b, m, deterministic)
}
func (m *ShoppingComparisonListingAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ShoppingComparisonListingAdInfo.Merge(m, src)
}
func (m *ShoppingComparisonListingAdInfo) XXX_Size() int {
	return xxx_messageInfo_ShoppingComparisonListingAdInfo.Size(m)
}
func (m *ShoppingComparisonListingAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ShoppingComparisonListingAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ShoppingComparisonListingAdInfo proto.InternalMessageInfo

func (m *ShoppingComparisonListingAdInfo) GetHeadline() *wrappers.StringValue {
	if m != nil {
		return m.Headline
	}
	return nil
}

// A Gmail ad.
type GmailAdInfo struct {
	// The Gmail teaser.
	Teaser *GmailTeaser `protobuf:"bytes,1,opt,name=teaser,proto3" json:"teaser,omitempty"`
	// The MediaFile resource name of the header image. Valid image types are GIF,
	// JPEG and PNG. The minimum size is 300x100 pixels and the aspect ratio must
	// be between 3:1 and 5:1 (+-1%).
	HeaderImage *wrappers.StringValue `protobuf:"bytes,2,opt,name=header_image,json=headerImage,proto3" json:"header_image,omitempty"`
	// The MediaFile resource name of the marketing image. Valid image types are
	// GIF, JPEG and PNG. The image must either be landscape with a minimum size
	// of 600x314 pixels and aspect ratio of 600:314 (+-1%) or square with a
	// minimum size of 300x300 pixels and aspect ratio of 1:1 (+-1%)
	MarketingImage *wrappers.StringValue `protobuf:"bytes,3,opt,name=marketing_image,json=marketingImage,proto3" json:"marketing_image,omitempty"`
	// Headline of the marketing image.
	MarketingImageHeadline *wrappers.StringValue `protobuf:"bytes,4,opt,name=marketing_image_headline,json=marketingImageHeadline,proto3" json:"marketing_image_headline,omitempty"`
	// Description of the marketing image.
	MarketingImageDescription *wrappers.StringValue `protobuf:"bytes,5,opt,name=marketing_image_description,json=marketingImageDescription,proto3" json:"marketing_image_description,omitempty"`
	// Display-call-to-action of the marketing image.
	MarketingImageDisplayCallToAction *DisplayCallToAction `protobuf:"bytes,6,opt,name=marketing_image_display_call_to_action,json=marketingImageDisplayCallToAction,proto3" json:"marketing_image_display_call_to_action,omitempty"`
	// Product images. Up to 15 images are supported.
	ProductImages []*ProductImage `protobuf:"bytes,7,rep,name=product_images,json=productImages,proto3" json:"product_images,omitempty"`
	// Product videos. Up to 7 videos are supported. At least one product video
	// or a marketing image must be specified.
	ProductVideos        []*ProductVideo `protobuf:"bytes,8,rep,name=product_videos,json=productVideos,proto3" json:"product_videos,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *GmailAdInfo) Reset()         { *m = GmailAdInfo{} }
func (m *GmailAdInfo) String() string { return proto.CompactTextString(m) }
func (*GmailAdInfo) ProtoMessage()    {}
func (*GmailAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{8}
}

func (m *GmailAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_GmailAdInfo.Unmarshal(m, b)
}
func (m *GmailAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_GmailAdInfo.Marshal(b, m, deterministic)
}
func (m *GmailAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_GmailAdInfo.Merge(m, src)
}
func (m *GmailAdInfo) XXX_Size() int {
	return xxx_messageInfo_GmailAdInfo.Size(m)
}
func (m *GmailAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_GmailAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_GmailAdInfo proto.InternalMessageInfo

func (m *GmailAdInfo) GetTeaser() *GmailTeaser {
	if m != nil {
		return m.Teaser
	}
	return nil
}

func (m *GmailAdInfo) GetHeaderImage() *wrappers.StringValue {
	if m != nil {
		return m.HeaderImage
	}
	return nil
}

func (m *GmailAdInfo) GetMarketingImage() *wrappers.StringValue {
	if m != nil {
		return m.MarketingImage
	}
	return nil
}

func (m *GmailAdInfo) GetMarketingImageHeadline() *wrappers.StringValue {
	if m != nil {
		return m.MarketingImageHeadline
	}
	return nil
}

func (m *GmailAdInfo) GetMarketingImageDescription() *wrappers.StringValue {
	if m != nil {
		return m.MarketingImageDescription
	}
	return nil
}

func (m *GmailAdInfo) GetMarketingImageDisplayCallToAction() *DisplayCallToAction {
	if m != nil {
		return m.MarketingImageDisplayCallToAction
	}
	return nil
}

func (m *GmailAdInfo) GetProductImages() []*ProductImage {
	if m != nil {
		return m.ProductImages
	}
	return nil
}

func (m *GmailAdInfo) GetProductVideos() []*ProductVideo {
	if m != nil {
		return m.ProductVideos
	}
	return nil
}

// Gmail teaser data. The teaser is a small header that acts as an invitation
// to view the rest of the ad (the body).
type GmailTeaser struct {
	// Headline of the teaser.
	Headline *wrappers.StringValue `protobuf:"bytes,1,opt,name=headline,proto3" json:"headline,omitempty"`
	// Description of the teaser.
	Description *wrappers.StringValue `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	// Business name of the advertiser.
	BusinessName *wrappers.StringValue `protobuf:"bytes,3,opt,name=business_name,json=businessName,proto3" json:"business_name,omitempty"`
	// The MediaFile resource name of the logo image. Valid image types are GIF,
	// JPEG and PNG. The minimum size is 144x144 pixels and the aspect ratio must
	// be 1:1 (+-1%).
	LogoImage            *wrappers.StringValue `protobuf:"bytes,4,opt,name=logo_image,json=logoImage,proto3" json:"logo_image,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *GmailTeaser) Reset()         { *m = GmailTeaser{} }
func (m *GmailTeaser) String() string { return proto.CompactTextString(m) }
func (*GmailTeaser) ProtoMessage()    {}
func (*GmailTeaser) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{9}
}

func (m *GmailTeaser) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_GmailTeaser.Unmarshal(m, b)
}
func (m *GmailTeaser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_GmailTeaser.Marshal(b, m, deterministic)
}
func (m *GmailTeaser) XXX_Merge(src proto.Message) {
	xxx_messageInfo_GmailTeaser.Merge(m, src)
}
func (m *GmailTeaser) XXX_Size() int {
	return xxx_messageInfo_GmailTeaser.Size(m)
}
func (m *GmailTeaser) XXX_DiscardUnknown() {
	xxx_messageInfo_GmailTeaser.DiscardUnknown(m)
}

var xxx_messageInfo_GmailTeaser proto.InternalMessageInfo

func (m *GmailTeaser) GetHeadline() *wrappers.StringValue {
	if m != nil {
		return m.Headline
	}
	return nil
}

func (m *GmailTeaser) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

func (m *GmailTeaser) GetBusinessName() *wrappers.StringValue {
	if m != nil {
		return m.BusinessName
	}
	return nil
}

func (m *GmailTeaser) GetLogoImage() *wrappers.StringValue {
	if m != nil {
		return m.LogoImage
	}
	return nil
}

// Data for display call to action. The call to action is a piece of the ad
// that prompts the user to do something. Like clicking a link or making a phone
// call.
type DisplayCallToAction struct {
	// Text for the display-call-to-action.
	Text *wrappers.StringValue `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	// Text color for the display-call-to-action in hexadecimal, e.g. #ffffff for
	// white.
	TextColor *wrappers.StringValue `protobuf:"bytes,2,opt,name=text_color,json=textColor,proto3" json:"text_color,omitempty"`
	// Identifies the url collection in the ad.url_collections field. If not set
	// the url defaults to final_url.
	UrlCollectionId      *wrappers.StringValue `protobuf:"bytes,3,opt,name=url_collection_id,json=urlCollectionId,proto3" json:"url_collection_id,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *DisplayCallToAction) Reset()         { *m = DisplayCallToAction{} }
func (m *DisplayCallToAction) String() string { return proto.CompactTextString(m) }
func (*DisplayCallToAction) ProtoMessage()    {}
func (*DisplayCallToAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{10}
}

func (m *DisplayCallToAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DisplayCallToAction.Unmarshal(m, b)
}
func (m *DisplayCallToAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DisplayCallToAction.Marshal(b, m, deterministic)
}
func (m *DisplayCallToAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DisplayCallToAction.Merge(m, src)
}
func (m *DisplayCallToAction) XXX_Size() int {
	return xxx_messageInfo_DisplayCallToAction.Size(m)
}
func (m *DisplayCallToAction) XXX_DiscardUnknown() {
	xxx_messageInfo_DisplayCallToAction.DiscardUnknown(m)
}

var xxx_messageInfo_DisplayCallToAction proto.InternalMessageInfo

func (m *DisplayCallToAction) GetText() *wrappers.StringValue {
	if m != nil {
		return m.Text
	}
	return nil
}

func (m *DisplayCallToAction) GetTextColor() *wrappers.StringValue {
	if m != nil {
		return m.TextColor
	}
	return nil
}

func (m *DisplayCallToAction) GetUrlCollectionId() *wrappers.StringValue {
	if m != nil {
		return m.UrlCollectionId
	}
	return nil
}

// Product image specific data.
type ProductImage struct {
	// The MediaFile resource name of the product image. Valid image types are
	// GIF, JPEG and PNG. The minimum size is 300x300 pixels and the aspect ratio
	// must be 1:1 (+-1%).
	ProductImage *wrappers.StringValue `protobuf:"bytes,1,opt,name=product_image,json=productImage,proto3" json:"product_image,omitempty"`
	// Description of the product.
	Description *wrappers.StringValue `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	// Display-call-to-action of the product image.
	DisplayCallToAction  *DisplayCallToAction `protobuf:"bytes,3,opt,name=display_call_to_action,json=displayCallToAction,proto3" json:"display_call_to_action,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *ProductImage) Reset()         { *m = ProductImage{} }
func (m *ProductImage) String() string { return proto.CompactTextString(m) }
func (*ProductImage) ProtoMessage()    {}
func (*ProductImage) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{11}
}

func (m *ProductImage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ProductImage.Unmarshal(m, b)
}
func (m *ProductImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ProductImage.Marshal(b, m, deterministic)
}
func (m *ProductImage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ProductImage.Merge(m, src)
}
func (m *ProductImage) XXX_Size() int {
	return xxx_messageInfo_ProductImage.Size(m)
}
func (m *ProductImage) XXX_DiscardUnknown() {
	xxx_messageInfo_ProductImage.DiscardUnknown(m)
}

var xxx_messageInfo_ProductImage proto.InternalMessageInfo

func (m *ProductImage) GetProductImage() *wrappers.StringValue {
	if m != nil {
		return m.ProductImage
	}
	return nil
}

func (m *ProductImage) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

func (m *ProductImage) GetDisplayCallToAction() *DisplayCallToAction {
	if m != nil {
		return m.DisplayCallToAction
	}
	return nil
}

// Product video specific data.
type ProductVideo struct {
	// The MediaFile resource name of a video which must be hosted on YouTube.
	ProductVideo         *wrappers.StringValue `protobuf:"bytes,1,opt,name=product_video,json=productVideo,proto3" json:"product_video,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *ProductVideo) Reset()         { *m = ProductVideo{} }
func (m *ProductVideo) String() string { return proto.CompactTextString(m) }
func (*ProductVideo) ProtoMessage()    {}
func (*ProductVideo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{12}
}

func (m *ProductVideo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ProductVideo.Unmarshal(m, b)
}
func (m *ProductVideo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ProductVideo.Marshal(b, m, deterministic)
}
func (m *ProductVideo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ProductVideo.Merge(m, src)
}
func (m *ProductVideo) XXX_Size() int {
	return xxx_messageInfo_ProductVideo.Size(m)
}
func (m *ProductVideo) XXX_DiscardUnknown() {
	xxx_messageInfo_ProductVideo.DiscardUnknown(m)
}

var xxx_messageInfo_ProductVideo proto.InternalMessageInfo

func (m *ProductVideo) GetProductVideo() *wrappers.StringValue {
	if m != nil {
		return m.ProductVideo
	}
	return nil
}

// An image ad.
type ImageAdInfo struct {
	// Width in pixels of the full size image.
	PixelWidth *wrappers.Int64Value `protobuf:"bytes,4,opt,name=pixel_width,json=pixelWidth,proto3" json:"pixel_width,omitempty"`
	// Height in pixels of the full size image.
	PixelHeight *wrappers.Int64Value `protobuf:"bytes,5,opt,name=pixel_height,json=pixelHeight,proto3" json:"pixel_height,omitempty"`
	// URL of the full size image.
	ImageUrl *wrappers.StringValue `protobuf:"bytes,6,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"`
	// Width in pixels of the preview size image.
	PreviewPixelWidth *wrappers.Int64Value `protobuf:"bytes,7,opt,name=preview_pixel_width,json=previewPixelWidth,proto3" json:"preview_pixel_width,omitempty"`
	// Height in pixels of the preview size image.
	PreviewPixelHeight *wrappers.Int64Value `protobuf:"bytes,8,opt,name=preview_pixel_height,json=previewPixelHeight,proto3" json:"preview_pixel_height,omitempty"`
	// URL of the preview size image.
	PreviewImageUrl *wrappers.StringValue `protobuf:"bytes,9,opt,name=preview_image_url,json=previewImageUrl,proto3" json:"preview_image_url,omitempty"`
	// The mime type of the image.
	MimeType enums.MimeTypeEnum_MimeType `protobuf:"varint,10,opt,name=mime_type,json=mimeType,proto3,enum=google.ads.googleads.v2.enums.MimeTypeEnum_MimeType" json:"mime_type,omitempty"`
	// The name of the image. If the image was created from a MediaFile, this is
	// the MediaFile's name. If the image was created from bytes, this is empty.
	Name *wrappers.StringValue `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"`
	// The image to create the ImageAd from. This can be specified in one of
	// two ways.
	// 1. An existing MediaFile resource.
	// 2. The raw image data as bytes.
	//
	// Types that are valid to be assigned to Image:
	//	*ImageAdInfo_MediaFile
	//	*ImageAdInfo_Data
	//	*ImageAdInfo_AdIdToCopyImageFrom
	Image                isImageAdInfo_Image `protobuf_oneof:"image"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (m *ImageAdInfo) Reset()         { *m = ImageAdInfo{} }
func (m *ImageAdInfo) String() string { return proto.CompactTextString(m) }
func (*ImageAdInfo) ProtoMessage()    {}
func (*ImageAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{13}
}

func (m *ImageAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ImageAdInfo.Unmarshal(m, b)
}
func (m *ImageAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ImageAdInfo.Marshal(b, m, deterministic)
}
func (m *ImageAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ImageAdInfo.Merge(m, src)
}
func (m *ImageAdInfo) XXX_Size() int {
	return xxx_messageInfo_ImageAdInfo.Size(m)
}
func (m *ImageAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ImageAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ImageAdInfo proto.InternalMessageInfo

func (m *ImageAdInfo) GetPixelWidth() *wrappers.Int64Value {
	if m != nil {
		return m.PixelWidth
	}
	return nil
}

func (m *ImageAdInfo) GetPixelHeight() *wrappers.Int64Value {
	if m != nil {
		return m.PixelHeight
	}
	return nil
}

func (m *ImageAdInfo) GetImageUrl() *wrappers.StringValue {
	if m != nil {
		return m.ImageUrl
	}
	return nil
}

func (m *ImageAdInfo) GetPreviewPixelWidth() *wrappers.Int64Value {
	if m != nil {
		return m.PreviewPixelWidth
	}
	return nil
}

func (m *ImageAdInfo) GetPreviewPixelHeight() *wrappers.Int64Value {
	if m != nil {
		return m.PreviewPixelHeight
	}
	return nil
}

func (m *ImageAdInfo) GetPreviewImageUrl() *wrappers.StringValue {
	if m != nil {
		return m.PreviewImageUrl
	}
	return nil
}

func (m *ImageAdInfo) GetMimeType() enums.MimeTypeEnum_MimeType {
	if m != nil {
		return m.MimeType
	}
	return enums.MimeTypeEnum_UNSPECIFIED
}

func (m *ImageAdInfo) GetName() *wrappers.StringValue {
	if m != nil {
		return m.Name
	}
	return nil
}

type isImageAdInfo_Image interface {
	isImageAdInfo_Image()
}

type ImageAdInfo_MediaFile struct {
	MediaFile *wrappers.StringValue `protobuf:"bytes,1,opt,name=media_file,json=mediaFile,proto3,oneof"`
}

type ImageAdInfo_Data struct {
	Data *wrappers.BytesValue `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type ImageAdInfo_AdIdToCopyImageFrom struct {
	AdIdToCopyImageFrom *wrappers.Int64Value `protobuf:"bytes,3,opt,name=ad_id_to_copy_image_from,json=adIdToCopyImageFrom,proto3,oneof"`
}

func (*ImageAdInfo_MediaFile) isImageAdInfo_Image() {}

func (*ImageAdInfo_Data) isImageAdInfo_Image() {}

func (*ImageAdInfo_AdIdToCopyImageFrom) isImageAdInfo_Image() {}

func (m *ImageAdInfo) GetImage() isImageAdInfo_Image {
	if m != nil {
		return m.Image
	}
	return nil
}

func (m *ImageAdInfo) GetMediaFile() *wrappers.StringValue {
	if x, ok := m.GetImage().(*ImageAdInfo_MediaFile); ok {
		return x.MediaFile
	}
	return nil
}

func (m *ImageAdInfo) GetData() *wrappers.BytesValue {
	if x, ok := m.GetImage().(*ImageAdInfo_Data); ok {
		return x.Data
	}
	return nil
}

func (m *ImageAdInfo) GetAdIdToCopyImageFrom() *wrappers.Int64Value {
	if x, ok := m.GetImage().(*ImageAdInfo_AdIdToCopyImageFrom); ok {
		return x.AdIdToCopyImageFrom
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*ImageAdInfo) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*ImageAdInfo_MediaFile)(nil),
		(*ImageAdInfo_Data)(nil),
		(*ImageAdInfo_AdIdToCopyImageFrom)(nil),
	}
}

// Representation of video bumper in-stream ad format (very short in-stream
// non-skippable video ad).
type VideoBumperInStreamAdInfo struct {
	// The MediaFile resource name of the companion banner used with the ad.
	CompanionBanner      *wrappers.StringValue `protobuf:"bytes,1,opt,name=companion_banner,json=companionBanner,proto3" json:"companion_banner,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *VideoBumperInStreamAdInfo) Reset()         { *m = VideoBumperInStreamAdInfo{} }
func (m *VideoBumperInStreamAdInfo) String() string { return proto.CompactTextString(m) }
func (*VideoBumperInStreamAdInfo) ProtoMessage()    {}
func (*VideoBumperInStreamAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{14}
}

func (m *VideoBumperInStreamAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VideoBumperInStreamAdInfo.Unmarshal(m, b)
}
func (m *VideoBumperInStreamAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VideoBumperInStreamAdInfo.Marshal(b, m, deterministic)
}
func (m *VideoBumperInStreamAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VideoBumperInStreamAdInfo.Merge(m, src)
}
func (m *VideoBumperInStreamAdInfo) XXX_Size() int {
	return xxx_messageInfo_VideoBumperInStreamAdInfo.Size(m)
}
func (m *VideoBumperInStreamAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_VideoBumperInStreamAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_VideoBumperInStreamAdInfo proto.InternalMessageInfo

func (m *VideoBumperInStreamAdInfo) GetCompanionBanner() *wrappers.StringValue {
	if m != nil {
		return m.CompanionBanner
	}
	return nil
}

// Representation of video non-skippable in-stream ad format (15 second
// in-stream non-skippable video ad).
type VideoNonSkippableInStreamAdInfo struct {
	// The MediaFile resource name of the companion banner used with the ad.
	CompanionBanner      *wrappers.StringValue `protobuf:"bytes,1,opt,name=companion_banner,json=companionBanner,proto3" json:"companion_banner,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *VideoNonSkippableInStreamAdInfo) Reset()         { *m = VideoNonSkippableInStreamAdInfo{} }
func (m *VideoNonSkippableInStreamAdInfo) String() string { return proto.CompactTextString(m) }
func (*VideoNonSkippableInStreamAdInfo) ProtoMessage()    {}
func (*VideoNonSkippableInStreamAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{15}
}

func (m *VideoNonSkippableInStreamAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VideoNonSkippableInStreamAdInfo.Unmarshal(m, b)
}
func (m *VideoNonSkippableInStreamAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VideoNonSkippableInStreamAdInfo.Marshal(b, m, deterministic)
}
func (m *VideoNonSkippableInStreamAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VideoNonSkippableInStreamAdInfo.Merge(m, src)
}
func (m *VideoNonSkippableInStreamAdInfo) XXX_Size() int {
	return xxx_messageInfo_VideoNonSkippableInStreamAdInfo.Size(m)
}
func (m *VideoNonSkippableInStreamAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_VideoNonSkippableInStreamAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_VideoNonSkippableInStreamAdInfo proto.InternalMessageInfo

func (m *VideoNonSkippableInStreamAdInfo) GetCompanionBanner() *wrappers.StringValue {
	if m != nil {
		return m.CompanionBanner
	}
	return nil
}

// Representation of video TrueView in-stream ad format (ad shown during video
// playback, often at beginning, which displays a skip button a few seconds into
// the video).
type VideoTrueViewInStreamAdInfo struct {
	// Label on the CTA (call-to-action) button taking the user to the video ad's
	// final URL.
	// Required for TrueView for action campaigns, optional otherwise.
	ActionButtonLabel *wrappers.StringValue `protobuf:"bytes,1,opt,name=action_button_label,json=actionButtonLabel,proto3" json:"action_button_label,omitempty"`
	// Additional text displayed with the CTA (call-to-action) button to give
	// context and encourage clicking on the button.
	ActionHeadline *wrappers.StringValue `protobuf:"bytes,2,opt,name=action_headline,json=actionHeadline,proto3" json:"action_headline,omitempty"`
	// The MediaFile resource name of the companion banner used with the ad.
	CompanionBanner      *wrappers.StringValue `protobuf:"bytes,3,opt,name=companion_banner,json=companionBanner,proto3" json:"companion_banner,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *VideoTrueViewInStreamAdInfo) Reset()         { *m = VideoTrueViewInStreamAdInfo{} }
func (m *VideoTrueViewInStreamAdInfo) String() string { return proto.CompactTextString(m) }
func (*VideoTrueViewInStreamAdInfo) ProtoMessage()    {}
func (*VideoTrueViewInStreamAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{16}
}

func (m *VideoTrueViewInStreamAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VideoTrueViewInStreamAdInfo.Unmarshal(m, b)
}
func (m *VideoTrueViewInStreamAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VideoTrueViewInStreamAdInfo.Marshal(b, m, deterministic)
}
func (m *VideoTrueViewInStreamAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VideoTrueViewInStreamAdInfo.Merge(m, src)
}
func (m *VideoTrueViewInStreamAdInfo) XXX_Size() int {
	return xxx_messageInfo_VideoTrueViewInStreamAdInfo.Size(m)
}
func (m *VideoTrueViewInStreamAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_VideoTrueViewInStreamAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_VideoTrueViewInStreamAdInfo proto.InternalMessageInfo

func (m *VideoTrueViewInStreamAdInfo) GetActionButtonLabel() *wrappers.StringValue {
	if m != nil {
		return m.ActionButtonLabel
	}
	return nil
}

func (m *VideoTrueViewInStreamAdInfo) GetActionHeadline() *wrappers.StringValue {
	if m != nil {
		return m.ActionHeadline
	}
	return nil
}

func (m *VideoTrueViewInStreamAdInfo) GetCompanionBanner() *wrappers.StringValue {
	if m != nil {
		return m.CompanionBanner
	}
	return nil
}

// Representation of video out-stream ad format (ad shown alongside a feed
// with automatic playback, without sound).
type VideoOutstreamAdInfo struct {
	// The headline of the ad.
	Headline *wrappers.StringValue `protobuf:"bytes,1,opt,name=headline,proto3" json:"headline,omitempty"`
	// The description line.
	Description          *wrappers.StringValue `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *VideoOutstreamAdInfo) Reset()         { *m = VideoOutstreamAdInfo{} }
func (m *VideoOutstreamAdInfo) String() string { return proto.CompactTextString(m) }
func (*VideoOutstreamAdInfo) ProtoMessage()    {}
func (*VideoOutstreamAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{17}
}

func (m *VideoOutstreamAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VideoOutstreamAdInfo.Unmarshal(m, b)
}
func (m *VideoOutstreamAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VideoOutstreamAdInfo.Marshal(b, m, deterministic)
}
func (m *VideoOutstreamAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VideoOutstreamAdInfo.Merge(m, src)
}
func (m *VideoOutstreamAdInfo) XXX_Size() int {
	return xxx_messageInfo_VideoOutstreamAdInfo.Size(m)
}
func (m *VideoOutstreamAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_VideoOutstreamAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_VideoOutstreamAdInfo proto.InternalMessageInfo

func (m *VideoOutstreamAdInfo) GetHeadline() *wrappers.StringValue {
	if m != nil {
		return m.Headline
	}
	return nil
}

func (m *VideoOutstreamAdInfo) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

// A video ad.
type VideoAdInfo struct {
	// The MediaFile resource to use for the video.
	MediaFile *wrappers.StringValue `protobuf:"bytes,1,opt,name=media_file,json=mediaFile,proto3" json:"media_file,omitempty"`
	// Format-specific schema for the different video formats.
	//
	// Types that are valid to be assigned to Format:
	//	*VideoAdInfo_InStream
	//	*VideoAdInfo_Bumper
	//	*VideoAdInfo_OutStream
	//	*VideoAdInfo_NonSkippable
	Format               isVideoAdInfo_Format `protobuf_oneof:"format"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *VideoAdInfo) Reset()         { *m = VideoAdInfo{} }
func (m *VideoAdInfo) String() string { return proto.CompactTextString(m) }
func (*VideoAdInfo) ProtoMessage()    {}
func (*VideoAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{18}
}

func (m *VideoAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_VideoAdInfo.Unmarshal(m, b)
}
func (m *VideoAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_VideoAdInfo.Marshal(b, m, deterministic)
}
func (m *VideoAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_VideoAdInfo.Merge(m, src)
}
func (m *VideoAdInfo) XXX_Size() int {
	return xxx_messageInfo_VideoAdInfo.Size(m)
}
func (m *VideoAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_VideoAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_VideoAdInfo proto.InternalMessageInfo

func (m *VideoAdInfo) GetMediaFile() *wrappers.StringValue {
	if m != nil {
		return m.MediaFile
	}
	return nil
}

type isVideoAdInfo_Format interface {
	isVideoAdInfo_Format()
}

type VideoAdInfo_InStream struct {
	InStream *VideoTrueViewInStreamAdInfo `protobuf:"bytes,2,opt,name=in_stream,json=inStream,proto3,oneof"`
}

type VideoAdInfo_Bumper struct {
	Bumper *VideoBumperInStreamAdInfo `protobuf:"bytes,3,opt,name=bumper,proto3,oneof"`
}

type VideoAdInfo_OutStream struct {
	OutStream *VideoOutstreamAdInfo `protobuf:"bytes,4,opt,name=out_stream,json=outStream,proto3,oneof"`
}

type VideoAdInfo_NonSkippable struct {
	NonSkippable *VideoNonSkippableInStreamAdInfo `protobuf:"bytes,5,opt,name=non_skippable,json=nonSkippable,proto3,oneof"`
}

func (*VideoAdInfo_InStream) isVideoAdInfo_Format() {}

func (*VideoAdInfo_Bumper) isVideoAdInfo_Format() {}

func (*VideoAdInfo_OutStream) isVideoAdInfo_Format() {}

func (*VideoAdInfo_NonSkippable) isVideoAdInfo_Format() {}

func (m *VideoAdInfo) GetFormat() isVideoAdInfo_Format {
	if m != nil {
		return m.Format
	}
	return nil
}

func (m *VideoAdInfo) GetInStream() *VideoTrueViewInStreamAdInfo {
	if x, ok := m.GetFormat().(*VideoAdInfo_InStream); ok {
		return x.InStream
	}
	return nil
}

func (m *VideoAdInfo) GetBumper() *VideoBumperInStreamAdInfo {
	if x, ok := m.GetFormat().(*VideoAdInfo_Bumper); ok {
		return x.Bumper
	}
	return nil
}

func (m *VideoAdInfo) GetOutStream() *VideoOutstreamAdInfo {
	if x, ok := m.GetFormat().(*VideoAdInfo_OutStream); ok {
		return x.OutStream
	}
	return nil
}

func (m *VideoAdInfo) GetNonSkippable() *VideoNonSkippableInStreamAdInfo {
	if x, ok := m.GetFormat().(*VideoAdInfo_NonSkippable); ok {
		return x.NonSkippable
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*VideoAdInfo) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*VideoAdInfo_InStream)(nil),
		(*VideoAdInfo_Bumper)(nil),
		(*VideoAdInfo_OutStream)(nil),
		(*VideoAdInfo_NonSkippable)(nil),
	}
}

// A responsive search ad.
//
// Responsive search ads let you create an ad that adapts to show more text, and
// more relevant messages, to your customers. Enter multiple headlines and
// descriptions when creating a responsive search ad, and over time, Google Ads
// will automatically test different combinations and learn which combinations
// perform best. By adapting your ad's content to more closely match potential
// customers' search terms, responsive search ads may improve your campaign's
// performance.
//
// More information at https://support.google.com/google-ads/answer/7684791
type ResponsiveSearchAdInfo struct {
	// List of text assets for headlines. When the ad serves the headlines will
	// be selected from this list.
	Headlines []*AdTextAsset `protobuf:"bytes,1,rep,name=headlines,proto3" json:"headlines,omitempty"`
	// List of text assets for descriptions. When the ad serves the descriptions
	// will be selected from this list.
	Descriptions []*AdTextAsset `protobuf:"bytes,2,rep,name=descriptions,proto3" json:"descriptions,omitempty"`
	// First part of text that may appear appended to the url displayed in the ad.
	Path1 *wrappers.StringValue `protobuf:"bytes,3,opt,name=path1,proto3" json:"path1,omitempty"`
	// Second part of text that may appear appended to the url displayed in the
	// ad. This field can only be set when path1 is also set.
	Path2                *wrappers.StringValue `protobuf:"bytes,4,opt,name=path2,proto3" json:"path2,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *ResponsiveSearchAdInfo) Reset()         { *m = ResponsiveSearchAdInfo{} }
func (m *ResponsiveSearchAdInfo) String() string { return proto.CompactTextString(m) }
func (*ResponsiveSearchAdInfo) ProtoMessage()    {}
func (*ResponsiveSearchAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{19}
}

func (m *ResponsiveSearchAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ResponsiveSearchAdInfo.Unmarshal(m, b)
}
func (m *ResponsiveSearchAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ResponsiveSearchAdInfo.Marshal(b, m, deterministic)
}
func (m *ResponsiveSearchAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ResponsiveSearchAdInfo.Merge(m, src)
}
func (m *ResponsiveSearchAdInfo) XXX_Size() int {
	return xxx_messageInfo_ResponsiveSearchAdInfo.Size(m)
}
func (m *ResponsiveSearchAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ResponsiveSearchAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ResponsiveSearchAdInfo proto.InternalMessageInfo

func (m *ResponsiveSearchAdInfo) GetHeadlines() []*AdTextAsset {
	if m != nil {
		return m.Headlines
	}
	return nil
}

func (m *ResponsiveSearchAdInfo) GetDescriptions() []*AdTextAsset {
	if m != nil {
		return m.Descriptions
	}
	return nil
}

func (m *ResponsiveSearchAdInfo) GetPath1() *wrappers.StringValue {
	if m != nil {
		return m.Path1
	}
	return nil
}

func (m *ResponsiveSearchAdInfo) GetPath2() *wrappers.StringValue {
	if m != nil {
		return m.Path2
	}
	return nil
}

// A legacy responsive display ad. Ads of this type are labeled 'Responsive ads'
// in the Google Ads UI.
type LegacyResponsiveDisplayAdInfo struct {
	// The short version of the ad's headline.
	ShortHeadline *wrappers.StringValue `protobuf:"bytes,1,opt,name=short_headline,json=shortHeadline,proto3" json:"short_headline,omitempty"`
	// The long version of the ad's headline.
	LongHeadline *wrappers.StringValue `protobuf:"bytes,2,opt,name=long_headline,json=longHeadline,proto3" json:"long_headline,omitempty"`
	// The description of the ad.
	Description *wrappers.StringValue `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// The business name in the ad.
	BusinessName *wrappers.StringValue `protobuf:"bytes,4,opt,name=business_name,json=businessName,proto3" json:"business_name,omitempty"`
	// Advertiser's consent to allow flexible color. When true, the ad may be
	// served with different color if necessary. When false, the ad will be served
	// with the specified colors or a neutral color.
	// The default value is true.
	// Must be true if main_color and accent_color are not set.
	AllowFlexibleColor *wrappers.BoolValue `protobuf:"bytes,5,opt,name=allow_flexible_color,json=allowFlexibleColor,proto3" json:"allow_flexible_color,omitempty"`
	// The accent color of the ad in hexadecimal, e.g. #ffffff for white.
	// If one of main_color and accent_color is set, the other is required as
	// well.
	AccentColor *wrappers.StringValue `protobuf:"bytes,6,opt,name=accent_color,json=accentColor,proto3" json:"accent_color,omitempty"`
	// The main color of the ad in hexadecimal, e.g. #ffffff for white.
	// If one of main_color and accent_color is set, the other is required as
	// well.
	MainColor *wrappers.StringValue `protobuf:"bytes,7,opt,name=main_color,json=mainColor,proto3" json:"main_color,omitempty"`
	// The call-to-action text for the ad.
	CallToActionText *wrappers.StringValue `protobuf:"bytes,8,opt,name=call_to_action_text,json=callToActionText,proto3" json:"call_to_action_text,omitempty"`
	// The MediaFile resource name of the logo image used in the ad.
	LogoImage *wrappers.StringValue `protobuf:"bytes,9,opt,name=logo_image,json=logoImage,proto3" json:"logo_image,omitempty"`
	// The MediaFile resource name of the square logo image used in the ad.
	SquareLogoImage *wrappers.StringValue `protobuf:"bytes,10,opt,name=square_logo_image,json=squareLogoImage,proto3" json:"square_logo_image,omitempty"`
	// The MediaFile resource name of the marketing image used in the ad.
	MarketingImage *wrappers.StringValue `protobuf:"bytes,11,opt,name=marketing_image,json=marketingImage,proto3" json:"marketing_image,omitempty"`
	// The MediaFile resource name of the square marketing image used in the ad.
	SquareMarketingImage *wrappers.StringValue `protobuf:"bytes,12,opt,name=square_marketing_image,json=squareMarketingImage,proto3" json:"square_marketing_image,omitempty"`
	// Specifies which format the ad will be served in. Default is ALL_FORMATS.
	FormatSetting enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting `protobuf:"varint,13,opt,name=format_setting,json=formatSetting,proto3,enum=google.ads.googleads.v2.enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting" json:"format_setting,omitempty"`
	// Prefix before price. E.g. 'as low as'.
	PricePrefix *wrappers.StringValue `protobuf:"bytes,14,opt,name=price_prefix,json=pricePrefix,proto3" json:"price_prefix,omitempty"`
	// Promotion text used for dyanmic formats of responsive ads. For example
	// 'Free two-day shipping'.
	PromoText            *wrappers.StringValue `protobuf:"bytes,15,opt,name=promo_text,json=promoText,proto3" json:"promo_text,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *LegacyResponsiveDisplayAdInfo) Reset()         { *m = LegacyResponsiveDisplayAdInfo{} }
func (m *LegacyResponsiveDisplayAdInfo) String() string { return proto.CompactTextString(m) }
func (*LegacyResponsiveDisplayAdInfo) ProtoMessage()    {}
func (*LegacyResponsiveDisplayAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{20}
}

func (m *LegacyResponsiveDisplayAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LegacyResponsiveDisplayAdInfo.Unmarshal(m, b)
}
func (m *LegacyResponsiveDisplayAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LegacyResponsiveDisplayAdInfo.Marshal(b, m, deterministic)
}
func (m *LegacyResponsiveDisplayAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LegacyResponsiveDisplayAdInfo.Merge(m, src)
}
func (m *LegacyResponsiveDisplayAdInfo) XXX_Size() int {
	return xxx_messageInfo_LegacyResponsiveDisplayAdInfo.Size(m)
}
func (m *LegacyResponsiveDisplayAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_LegacyResponsiveDisplayAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_LegacyResponsiveDisplayAdInfo proto.InternalMessageInfo

func (m *LegacyResponsiveDisplayAdInfo) GetShortHeadline() *wrappers.StringValue {
	if m != nil {
		return m.ShortHeadline
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetLongHeadline() *wrappers.StringValue {
	if m != nil {
		return m.LongHeadline
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetBusinessName() *wrappers.StringValue {
	if m != nil {
		return m.BusinessName
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetAllowFlexibleColor() *wrappers.BoolValue {
	if m != nil {
		return m.AllowFlexibleColor
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetAccentColor() *wrappers.StringValue {
	if m != nil {
		return m.AccentColor
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetMainColor() *wrappers.StringValue {
	if m != nil {
		return m.MainColor
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetCallToActionText() *wrappers.StringValue {
	if m != nil {
		return m.CallToActionText
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetLogoImage() *wrappers.StringValue {
	if m != nil {
		return m.LogoImage
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetSquareLogoImage() *wrappers.StringValue {
	if m != nil {
		return m.SquareLogoImage
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetMarketingImage() *wrappers.StringValue {
	if m != nil {
		return m.MarketingImage
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetSquareMarketingImage() *wrappers.StringValue {
	if m != nil {
		return m.SquareMarketingImage
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetFormatSetting() enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting {
	if m != nil {
		return m.FormatSetting
	}
	return enums.DisplayAdFormatSettingEnum_UNSPECIFIED
}

func (m *LegacyResponsiveDisplayAdInfo) GetPricePrefix() *wrappers.StringValue {
	if m != nil {
		return m.PricePrefix
	}
	return nil
}

func (m *LegacyResponsiveDisplayAdInfo) GetPromoText() *wrappers.StringValue {
	if m != nil {
		return m.PromoText
	}
	return nil
}

// An app ad.
type AppAdInfo struct {
	// An optional text asset that, if specified, must always be displayed when
	// the ad is served.
	MandatoryAdText *AdTextAsset `protobuf:"bytes,1,opt,name=mandatory_ad_text,json=mandatoryAdText,proto3" json:"mandatory_ad_text,omitempty"`
	// List of text assets for headlines. When the ad serves the headlines will
	// be selected from this list.
	Headlines []*AdTextAsset `protobuf:"bytes,2,rep,name=headlines,proto3" json:"headlines,omitempty"`
	// List of text assets for descriptions. When the ad serves the descriptions
	// will be selected from this list.
	Descriptions []*AdTextAsset `protobuf:"bytes,3,rep,name=descriptions,proto3" json:"descriptions,omitempty"`
	// List of image assets that may be displayed with the ad.
	Images []*AdImageAsset `protobuf:"bytes,4,rep,name=images,proto3" json:"images,omitempty"`
	// List of YouTube video assets that may be displayed with the ad.
	YoutubeVideos []*AdVideoAsset `protobuf:"bytes,5,rep,name=youtube_videos,json=youtubeVideos,proto3" json:"youtube_videos,omitempty"`
	// List of media bundle assets that may be used with the ad.
	Html5MediaBundles    []*AdMediaBundleAsset `protobuf:"bytes,6,rep,name=html5_media_bundles,json=html5MediaBundles,proto3" json:"html5_media_bundles,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *AppAdInfo) Reset()         { *m = AppAdInfo{} }
func (m *AppAdInfo) String() string { return proto.CompactTextString(m) }
func (*AppAdInfo) ProtoMessage()    {}
func (*AppAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{21}
}

func (m *AppAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AppAdInfo.Unmarshal(m, b)
}
func (m *AppAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AppAdInfo.Marshal(b, m, deterministic)
}
func (m *AppAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AppAdInfo.Merge(m, src)
}
func (m *AppAdInfo) XXX_Size() int {
	return xxx_messageInfo_AppAdInfo.Size(m)
}
func (m *AppAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_AppAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_AppAdInfo proto.InternalMessageInfo

func (m *AppAdInfo) GetMandatoryAdText() *AdTextAsset {
	if m != nil {
		return m.MandatoryAdText
	}
	return nil
}

func (m *AppAdInfo) GetHeadlines() []*AdTextAsset {
	if m != nil {
		return m.Headlines
	}
	return nil
}

func (m *AppAdInfo) GetDescriptions() []*AdTextAsset {
	if m != nil {
		return m.Descriptions
	}
	return nil
}

func (m *AppAdInfo) GetImages() []*AdImageAsset {
	if m != nil {
		return m.Images
	}
	return nil
}

func (m *AppAdInfo) GetYoutubeVideos() []*AdVideoAsset {
	if m != nil {
		return m.YoutubeVideos
	}
	return nil
}

func (m *AppAdInfo) GetHtml5MediaBundles() []*AdMediaBundleAsset {
	if m != nil {
		return m.Html5MediaBundles
	}
	return nil
}

// App engagement ads allow you to write text encouraging a specific action in
// the app, like checking in, making a purchase, or booking a flight.
// They allow you to send users to a specific part of your app where they can
// find what they're looking for easier and faster.
type AppEngagementAdInfo struct {
	// List of text assets for headlines. When the ad serves the headlines will
	// be selected from this list.
	Headlines []*AdTextAsset `protobuf:"bytes,1,rep,name=headlines,proto3" json:"headlines,omitempty"`
	// List of text assets for descriptions. When the ad serves the descriptions
	// will be selected from this list.
	Descriptions []*AdTextAsset `protobuf:"bytes,2,rep,name=descriptions,proto3" json:"descriptions,omitempty"`
	// List of image assets that may be displayed with the ad.
	Images []*AdImageAsset `protobuf:"bytes,3,rep,name=images,proto3" json:"images,omitempty"`
	// List of video assets that may be displayed with the ad.
	Videos               []*AdVideoAsset `protobuf:"bytes,4,rep,name=videos,proto3" json:"videos,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *AppEngagementAdInfo) Reset()         { *m = AppEngagementAdInfo{} }
func (m *AppEngagementAdInfo) String() string { return proto.CompactTextString(m) }
func (*AppEngagementAdInfo) ProtoMessage()    {}
func (*AppEngagementAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{22}
}

func (m *AppEngagementAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AppEngagementAdInfo.Unmarshal(m, b)
}
func (m *AppEngagementAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AppEngagementAdInfo.Marshal(b, m, deterministic)
}
func (m *AppEngagementAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AppEngagementAdInfo.Merge(m, src)
}
func (m *AppEngagementAdInfo) XXX_Size() int {
	return xxx_messageInfo_AppEngagementAdInfo.Size(m)
}
func (m *AppEngagementAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_AppEngagementAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_AppEngagementAdInfo proto.InternalMessageInfo

func (m *AppEngagementAdInfo) GetHeadlines() []*AdTextAsset {
	if m != nil {
		return m.Headlines
	}
	return nil
}

func (m *AppEngagementAdInfo) GetDescriptions() []*AdTextAsset {
	if m != nil {
		return m.Descriptions
	}
	return nil
}

func (m *AppEngagementAdInfo) GetImages() []*AdImageAsset {
	if m != nil {
		return m.Images
	}
	return nil
}

func (m *AppEngagementAdInfo) GetVideos() []*AdVideoAsset {
	if m != nil {
		return m.Videos
	}
	return nil
}

// A legacy app install ad that only can be used by a few select customers.
type LegacyAppInstallAdInfo struct {
	// The id of the mobile app.
	AppId *wrappers.StringValue `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
	// The app store the mobile app is available in.
	AppStore enums.LegacyAppInstallAdAppStoreEnum_LegacyAppInstallAdAppStore `protobuf:"varint,2,opt,name=app_store,json=appStore,proto3,enum=google.ads.googleads.v2.enums.LegacyAppInstallAdAppStoreEnum_LegacyAppInstallAdAppStore" json:"app_store,omitempty"`
	// The headline of the ad.
	Headline *wrappers.StringValue `protobuf:"bytes,3,opt,name=headline,proto3" json:"headline,omitempty"`
	// The first description line of the ad.
	Description1 *wrappers.StringValue `protobuf:"bytes,4,opt,name=description1,proto3" json:"description1,omitempty"`
	// The second description line of the ad.
	Description2         *wrappers.StringValue `protobuf:"bytes,5,opt,name=description2,proto3" json:"description2,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *LegacyAppInstallAdInfo) Reset()         { *m = LegacyAppInstallAdInfo{} }
func (m *LegacyAppInstallAdInfo) String() string { return proto.CompactTextString(m) }
func (*LegacyAppInstallAdInfo) ProtoMessage()    {}
func (*LegacyAppInstallAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{23}
}

func (m *LegacyAppInstallAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LegacyAppInstallAdInfo.Unmarshal(m, b)
}
func (m *LegacyAppInstallAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LegacyAppInstallAdInfo.Marshal(b, m, deterministic)
}
func (m *LegacyAppInstallAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LegacyAppInstallAdInfo.Merge(m, src)
}
func (m *LegacyAppInstallAdInfo) XXX_Size() int {
	return xxx_messageInfo_LegacyAppInstallAdInfo.Size(m)
}
func (m *LegacyAppInstallAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_LegacyAppInstallAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_LegacyAppInstallAdInfo proto.InternalMessageInfo

func (m *LegacyAppInstallAdInfo) GetAppId() *wrappers.StringValue {
	if m != nil {
		return m.AppId
	}
	return nil
}

func (m *LegacyAppInstallAdInfo) GetAppStore() enums.LegacyAppInstallAdAppStoreEnum_LegacyAppInstallAdAppStore {
	if m != nil {
		return m.AppStore
	}
	return enums.LegacyAppInstallAdAppStoreEnum_UNSPECIFIED
}

func (m *LegacyAppInstallAdInfo) GetHeadline() *wrappers.StringValue {
	if m != nil {
		return m.Headline
	}
	return nil
}

func (m *LegacyAppInstallAdInfo) GetDescription1() *wrappers.StringValue {
	if m != nil {
		return m.Description1
	}
	return nil
}

func (m *LegacyAppInstallAdInfo) GetDescription2() *wrappers.StringValue {
	if m != nil {
		return m.Description2
	}
	return nil
}

// A responsive display ad.
type ResponsiveDisplayAdInfo struct {
	// Marketing images to be used in the ad. Valid image types are GIF,
	// JPEG, and PNG. The minimum size is 600x314 and the aspect ratio must
	// be 1.91:1 (+-1%). At least one marketing_image is required. Combined with
	// square_marketing_images the maximum is 15.
	MarketingImages []*AdImageAsset `protobuf:"bytes,1,rep,name=marketing_images,json=marketingImages,proto3" json:"marketing_images,omitempty"`
	// Square marketing images to be used in the ad. Valid image types are GIF,
	// JPEG, and PNG. The minimum size is 300x300 and the aspect ratio must
	// be 1:1 (+-1%). At least one square marketing_image is required. Combined
	// with marketing_images the maximum is 15.
	SquareMarketingImages []*AdImageAsset `protobuf:"bytes,2,rep,name=square_marketing_images,json=squareMarketingImages,proto3" json:"square_marketing_images,omitempty"`
	// Logo images to be used in the ad. Valid image types are GIF,
	// JPEG, and PNG. The minimum size is 512x128 and the aspect ratio must
	// be 4:1 (+-1%). Combined with square_logo_images the maximum is 5.
	LogoImages []*AdImageAsset `protobuf:"bytes,3,rep,name=logo_images,json=logoImages,proto3" json:"logo_images,omitempty"`
	// Square logo images to be used in the ad. Valid image types are GIF,
	// JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must
	// be 1:1 (+-1%). Combined with square_logo_images the maximum is 5.
	SquareLogoImages []*AdImageAsset `protobuf:"bytes,4,rep,name=square_logo_images,json=squareLogoImages,proto3" json:"square_logo_images,omitempty"`
	// Short format headlines for the ad. The maximum length is 30 characters.
	// At least 1 and max 5 headlines can be specified.
	Headlines []*AdTextAsset `protobuf:"bytes,5,rep,name=headlines,proto3" json:"headlines,omitempty"`
	// A required long format headline. The maximum length is 90 characters.
	LongHeadline *AdTextAsset `protobuf:"bytes,6,opt,name=long_headline,json=longHeadline,proto3" json:"long_headline,omitempty"`
	// Descriptive texts for the ad. The maximum length is 90 characters. At
	// least 1 and max 5 headlines can be specified.
	Descriptions []*AdTextAsset `protobuf:"bytes,7,rep,name=descriptions,proto3" json:"descriptions,omitempty"`
	// Optional YouTube vidoes for the ad. A maximum of 5 videos can be specified.
	YoutubeVideos []*AdVideoAsset `protobuf:"bytes,8,rep,name=youtube_videos,json=youtubeVideos,proto3" json:"youtube_videos,omitempty"`
	// The advertiser/brand name. Maximum display width is 25.
	BusinessName *wrappers.StringValue `protobuf:"bytes,9,opt,name=business_name,json=businessName,proto3" json:"business_name,omitempty"`
	// The main color of the ad in hexadecimal, e.g. #ffffff for white.
	// If one of main_color and accent_color is set, the other is required as
	// well.
	MainColor *wrappers.StringValue `protobuf:"bytes,10,opt,name=main_color,json=mainColor,proto3" json:"main_color,omitempty"`
	// The accent color of the ad in hexadecimal, e.g. #ffffff for white.
	// If one of main_color and accent_color is set, the other is required as
	// well.
	AccentColor *wrappers.StringValue `protobuf:"bytes,11,opt,name=accent_color,json=accentColor,proto3" json:"accent_color,omitempty"`
	// Advertiser's consent to allow flexible color. When true, the ad may be
	// served with different color if necessary. When false, the ad will be served
	// with the specified colors or a neutral color.
	// The default value is true.
	// Must be true if main_color and accent_color are not set.
	AllowFlexibleColor *wrappers.BoolValue `protobuf:"bytes,12,opt,name=allow_flexible_color,json=allowFlexibleColor,proto3" json:"allow_flexible_color,omitempty"`
	// The call-to-action text for the ad. Maximum display width is 30.
	CallToActionText *wrappers.StringValue `protobuf:"bytes,13,opt,name=call_to_action_text,json=callToActionText,proto3" json:"call_to_action_text,omitempty"`
	// Prefix before price. E.g. 'as low as'.
	PricePrefix *wrappers.StringValue `protobuf:"bytes,14,opt,name=price_prefix,json=pricePrefix,proto3" json:"price_prefix,omitempty"`
	// Promotion text used for dyanmic formats of responsive ads. For example
	// 'Free two-day shipping'.
	PromoText *wrappers.StringValue `protobuf:"bytes,15,opt,name=promo_text,json=promoText,proto3" json:"promo_text,omitempty"`
	// Specifies which format the ad will be served in. Default is ALL_FORMATS.
	FormatSetting        enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting `protobuf:"varint,16,opt,name=format_setting,json=formatSetting,proto3,enum=google.ads.googleads.v2.enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting" json:"format_setting,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                                `json:"-"`
	XXX_unrecognized     []byte                                                  `json:"-"`
	XXX_sizecache        int32                                                   `json:"-"`
}

func (m *ResponsiveDisplayAdInfo) Reset()         { *m = ResponsiveDisplayAdInfo{} }
func (m *ResponsiveDisplayAdInfo) String() string { return proto.CompactTextString(m) }
func (*ResponsiveDisplayAdInfo) ProtoMessage()    {}
func (*ResponsiveDisplayAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{24}
}

func (m *ResponsiveDisplayAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ResponsiveDisplayAdInfo.Unmarshal(m, b)
}
func (m *ResponsiveDisplayAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ResponsiveDisplayAdInfo.Marshal(b, m, deterministic)
}
func (m *ResponsiveDisplayAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ResponsiveDisplayAdInfo.Merge(m, src)
}
func (m *ResponsiveDisplayAdInfo) XXX_Size() int {
	return xxx_messageInfo_ResponsiveDisplayAdInfo.Size(m)
}
func (m *ResponsiveDisplayAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_ResponsiveDisplayAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_ResponsiveDisplayAdInfo proto.InternalMessageInfo

func (m *ResponsiveDisplayAdInfo) GetMarketingImages() []*AdImageAsset {
	if m != nil {
		return m.MarketingImages
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetSquareMarketingImages() []*AdImageAsset {
	if m != nil {
		return m.SquareMarketingImages
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetLogoImages() []*AdImageAsset {
	if m != nil {
		return m.LogoImages
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetSquareLogoImages() []*AdImageAsset {
	if m != nil {
		return m.SquareLogoImages
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetHeadlines() []*AdTextAsset {
	if m != nil {
		return m.Headlines
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetLongHeadline() *AdTextAsset {
	if m != nil {
		return m.LongHeadline
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetDescriptions() []*AdTextAsset {
	if m != nil {
		return m.Descriptions
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetYoutubeVideos() []*AdVideoAsset {
	if m != nil {
		return m.YoutubeVideos
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetBusinessName() *wrappers.StringValue {
	if m != nil {
		return m.BusinessName
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetMainColor() *wrappers.StringValue {
	if m != nil {
		return m.MainColor
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetAccentColor() *wrappers.StringValue {
	if m != nil {
		return m.AccentColor
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetAllowFlexibleColor() *wrappers.BoolValue {
	if m != nil {
		return m.AllowFlexibleColor
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetCallToActionText() *wrappers.StringValue {
	if m != nil {
		return m.CallToActionText
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetPricePrefix() *wrappers.StringValue {
	if m != nil {
		return m.PricePrefix
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetPromoText() *wrappers.StringValue {
	if m != nil {
		return m.PromoText
	}
	return nil
}

func (m *ResponsiveDisplayAdInfo) GetFormatSetting() enums.DisplayAdFormatSettingEnum_DisplayAdFormatSetting {
	if m != nil {
		return m.FormatSetting
	}
	return enums.DisplayAdFormatSettingEnum_UNSPECIFIED
}

// A generic type of display ad. The exact ad format is controlled by the
// display_upload_product_type field, which determines what kinds of data
// need to be included with the ad.
type DisplayUploadAdInfo struct {
	// The product type of this ad. See comments on the enum for details.
	DisplayUploadProductType enums.DisplayUploadProductTypeEnum_DisplayUploadProductType `protobuf:"varint,1,opt,name=display_upload_product_type,json=displayUploadProductType,proto3,enum=google.ads.googleads.v2.enums.DisplayUploadProductTypeEnum_DisplayUploadProductType" json:"display_upload_product_type,omitempty"`
	// The asset data that makes up the ad.
	//
	// Types that are valid to be assigned to MediaAsset:
	//	*DisplayUploadAdInfo_MediaBundle
	MediaAsset           isDisplayUploadAdInfo_MediaAsset `protobuf_oneof:"media_asset"`
	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
	XXX_unrecognized     []byte                           `json:"-"`
	XXX_sizecache        int32                            `json:"-"`
}

func (m *DisplayUploadAdInfo) Reset()         { *m = DisplayUploadAdInfo{} }
func (m *DisplayUploadAdInfo) String() string { return proto.CompactTextString(m) }
func (*DisplayUploadAdInfo) ProtoMessage()    {}
func (*DisplayUploadAdInfo) Descriptor() ([]byte, []int) {
	return fileDescriptor_7b1cab7fbeab5508, []int{25}
}

func (m *DisplayUploadAdInfo) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DisplayUploadAdInfo.Unmarshal(m, b)
}
func (m *DisplayUploadAdInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DisplayUploadAdInfo.Marshal(b, m, deterministic)
}
func (m *DisplayUploadAdInfo) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DisplayUploadAdInfo.Merge(m, src)
}
func (m *DisplayUploadAdInfo) XXX_Size() int {
	return xxx_messageInfo_DisplayUploadAdInfo.Size(m)
}
func (m *DisplayUploadAdInfo) XXX_DiscardUnknown() {
	xxx_messageInfo_DisplayUploadAdInfo.DiscardUnknown(m)
}

var xxx_messageInfo_DisplayUploadAdInfo proto.InternalMessageInfo

func (m *DisplayUploadAdInfo) GetDisplayUploadProductType() enums.DisplayUploadProductTypeEnum_DisplayUploadProductType {
	if m != nil {
		return m.DisplayUploadProductType
	}
	return enums.DisplayUploadProductTypeEnum_UNSPECIFIED
}

type isDisplayUploadAdInfo_MediaAsset interface {
	isDisplayUploadAdInfo_MediaAsset()
}

type DisplayUploadAdInfo_MediaBundle struct {
	MediaBundle *AdMediaBundleAsset `protobuf:"bytes,2,opt,name=media_bundle,json=mediaBundle,proto3,oneof"`
}

func (*DisplayUploadAdInfo_MediaBundle) isDisplayUploadAdInfo_MediaAsset() {}

func (m *DisplayUploadAdInfo) GetMediaAsset() isDisplayUploadAdInfo_MediaAsset {
	if m != nil {
		return m.MediaAsset
	}
	return nil
}

func (m *DisplayUploadAdInfo) GetMediaBundle() *AdMediaBundleAsset {
	if x, ok := m.GetMediaAsset().(*DisplayUploadAdInfo_MediaBundle); ok {
		return x.MediaBundle
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*DisplayUploadAdInfo) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*DisplayUploadAdInfo_MediaBundle)(nil),
	}
}

func init() {
	proto.RegisterType((*TextAdInfo)(nil), "google.ads.googleads.v2.common.TextAdInfo")
	proto.RegisterType((*ExpandedTextAdInfo)(nil), "google.ads.googleads.v2.common.ExpandedTextAdInfo")
	proto.RegisterType((*CallOnlyAdInfo)(nil), "google.ads.googleads.v2.common.CallOnlyAdInfo")
	proto.RegisterType((*ExpandedDynamicSearchAdInfo)(nil), "google.ads.googleads.v2.common.ExpandedDynamicSearchAdInfo")
	proto.RegisterType((*HotelAdInfo)(nil), "google.ads.googleads.v2.common.HotelAdInfo")
	proto.RegisterType((*ShoppingSmartAdInfo)(nil), "google.ads.googleads.v2.common.ShoppingSmartAdInfo")
	proto.RegisterType((*ShoppingProductAdInfo)(nil), "google.ads.googleads.v2.common.ShoppingProductAdInfo")
	proto.RegisterType((*ShoppingComparisonListingAdInfo)(nil), "google.ads.googleads.v2.common.ShoppingComparisonListingAdInfo")
	proto.RegisterType((*GmailAdInfo)(nil), "google.ads.googleads.v2.common.GmailAdInfo")
	proto.RegisterType((*GmailTeaser)(nil), "google.ads.googleads.v2.common.GmailTeaser")
	proto.RegisterType((*DisplayCallToAction)(nil), "google.ads.googleads.v2.common.DisplayCallToAction")
	proto.RegisterType((*ProductImage)(nil), "google.ads.googleads.v2.common.ProductImage")
	proto.RegisterType((*ProductVideo)(nil), "google.ads.googleads.v2.common.ProductVideo")
	proto.RegisterType((*ImageAdInfo)(nil), "google.ads.googleads.v2.common.ImageAdInfo")
	proto.RegisterType((*VideoBumperInStreamAdInfo)(nil), "google.ads.googleads.v2.common.VideoBumperInStreamAdInfo")
	proto.RegisterType((*VideoNonSkippableInStreamAdInfo)(nil), "google.ads.googleads.v2.common.VideoNonSkippableInStreamAdInfo")
	proto.RegisterType((*VideoTrueViewInStreamAdInfo)(nil), "google.ads.googleads.v2.common.VideoTrueViewInStreamAdInfo")
	proto.RegisterType((*VideoOutstreamAdInfo)(nil), "google.ads.googleads.v2.common.VideoOutstreamAdInfo")
	proto.RegisterType((*VideoAdInfo)(nil), "google.ads.googleads.v2.common.VideoAdInfo")
	proto.RegisterType((*ResponsiveSearchAdInfo)(nil), "google.ads.googleads.v2.common.ResponsiveSearchAdInfo")
	proto.RegisterType((*LegacyResponsiveDisplayAdInfo)(nil), "google.ads.googleads.v2.common.LegacyResponsiveDisplayAdInfo")
	proto.RegisterType((*AppAdInfo)(nil), "google.ads.googleads.v2.common.AppAdInfo")
	proto.RegisterType((*AppEngagementAdInfo)(nil), "google.ads.googleads.v2.common.AppEngagementAdInfo")
	proto.RegisterType((*LegacyAppInstallAdInfo)(nil), "google.ads.googleads.v2.common.LegacyAppInstallAdInfo")
	proto.RegisterType((*ResponsiveDisplayAdInfo)(nil), "google.ads.googleads.v2.common.ResponsiveDisplayAdInfo")
	proto.RegisterType((*DisplayUploadAdInfo)(nil), "google.ads.googleads.v2.common.DisplayUploadAdInfo")
}

func init() {
	proto.RegisterFile("google/ads/googleads/v2/common/ad_type_infos.proto", fileDescriptor_7b1cab7fbeab5508)
}

var fileDescriptor_7b1cab7fbeab5508 = []byte{
	// 2387 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcb, 0x72, 0x1b, 0x59,
	0x19, 0xb6, 0x2c, 0x5f, 0xa4, 0x5f, 0x92, 0x2f, 0xed, 0x5c, 0x34, 0xce, 0x5c, 0x42, 0x2f, 0xa8,
	0x54, 0xc1, 0xc8, 0x44, 0x09, 0x14, 0xe3, 0x90, 0x09, 0xb2, 0x9d, 0x44, 0xae, 0x71, 0x12, 0x8f,
	0xec, 0x38, 0x54, 0x30, 0xd5, 0x75, 0xa4, 0x3e, 0x96, 0x9b, 0x74, 0x9f, 0x73, 0xe8, 0xd3, 0xed,
	0xd8, 0xdb, 0x59, 0xc0, 0x96, 0xaa, 0x59, 0x41, 0xb1, 0x62, 0x49, 0x15, 0x8f, 0xc0, 0x0a, 0x56,
	0x53, 0x05, 0x4f, 0xc0, 0x13, 0xc0, 0x23, 0xcc, 0x02, 0xea, 0x5c, 0xba, 0xd5, 0x92, 0x2c, 0xeb,
	0xc8, 0x1e, 0x48, 0xcd, 0x4a, 0x52, 0xf7, 0xff, 0x7d, 0xe7, 0xf6, 0x5f, 0xbe, 0xfe, 0x5b, 0x50,
	0xef, 0x52, 0xda, 0xf5, 0xf1, 0x1a, 0x72, 0xf9, 0x9a, 0xfa, 0x2a, 0xbe, 0x9d, 0xd4, 0xd7, 0x3a,
	0x34, 0x08, 0x28, 0x59, 0x43, 0xae, 0x13, 0x9d, 0x31, 0xec, 0x78, 0xe4, 0x88, 0xf2, 0x1a, 0x0b,
	0x69, 0x44, 0xad, 0x0f, 0x95, 0x61, 0x0d, 0xb9, 0xbc, 0x96, 0x62, 0x6a, 0x27, 0xf5, 0x9a, 0xc2,
	0xac, 0x7e, 0x3c, 0x9e, 0x13, 0x71, 0x8e, 0x23, 0x45, 0xb7, 0xba, 0x39, 0xca, 0x1c, 0x93, 0x38,
	0xe0, 0x6b, 0x1d, 0xe4, 0xfb, 0x4e, 0x87, 0x92, 0x13, 0x1c, 0x72, 0x8f, 0x12, 0x27, 0xc4, 0x8c,
	0x86, 0x91, 0x47, 0xba, 0x0e, 0x8f, 0x50, 0x84, 0x35, 0xc9, 0xc3, 0x8b, 0x49, 0x5c, 0x8f, 0x33,
	0x1f, 0x9d, 0x39, 0xc8, 0x75, 0x8e, 0x68, 0x18, 0xa0, 0xc8, 0xe1, 0x38, 0x12, 0x24, 0x1a, 0xfe,
	0xc8, 0x0c, 0x1e, 0x33, 0x9f, 0x22, 0xd7, 0x61, 0x21, 0x75, 0xe3, 0x4e, 0x24, 0x77, 0xc6, 0x6c,
	0x11, 0x3e, 0xee, 0xa2, 0xce, 0x99, 0x83, 0x18, 0x73, 0x3c, 0xc2, 0x23, 0xb1, 0x24, 0xb1, 0x0b,
	0x8c, 0x39, 0x3c, 0xa2, 0x61, 0x42, 0xf2, 0xf1, 0xc5, 0x24, 0x81, 0x17, 0xe0, 0xec, 0x98, 0xfa,
	0x1c, 0xd6, 0xe4, 0xaf, 0x76, 0x7c, 0xb4, 0xf6, 0x36, 0x44, 0x8c, 0xe1, 0x50, 0x9f, 0xd3, 0xea,
	0xfb, 0x09, 0x1d, 0xf3, 0xd6, 0x10, 0x21, 0x34, 0x42, 0x91, 0x47, 0x89, 0xbe, 0x6b, 0x7f, 0x95,
	0x03, 0xd8, 0xc7, 0xa7, 0x51, 0xc3, 0xdd, 0x26, 0x47, 0xd4, 0xfa, 0x31, 0x14, 0x8e, 0x31, 0x72,
	0x7d, 0x8f, 0xe0, 0x6a, 0xee, 0x76, 0xee, 0x4e, 0xa9, 0xfe, 0xbe, 0x3e, 0xdc, 0x5a, 0xc2, 0x5f,
	0xdb, 0x8b, 0x42, 0x8f, 0x74, 0x0f, 0x90, 0x1f, 0xe3, 0x56, 0x6a, 0x6d, 0xfd, 0x14, 0xca, 0x2e,
	0xe6, 0x9d, 0xd0, 0x63, 0x82, 0xfe, 0x6e, 0x75, 0xda, 0x00, 0xdd, 0x87, 0x18, 0x60, 0xa8, 0x57,
	0xf3, 0x13, 0x32, 0xd4, 0xed, 0xbf, 0xe7, 0xc1, 0x7a, 0x7c, 0xca, 0x10, 0x71, 0xb1, 0x9b, 0x59,
	0xd4, 0x26, 0x2c, 0x24, 0xd3, 0x74, 0x18, 0x0a, 0xa3, 0xbb, 0x46, 0x4b, 0xab, 0x24, 0x98, 0x5d,
	0x01, 0x19, 0x22, 0xa9, 0x1b, 0xad, 0xb0, 0x8f, 0xa4, 0x3e, 0x44, 0x72, 0xaf, 0x3a, 0x37, 0x29,
	0xc9, 0x3d, 0xeb, 0x53, 0x28, 0x65, 0x56, 0x6d, 0xb4, 0x4d, 0x59, 0xc0, 0xd0, 0x3e, 0xcf, 0x4f,
	0xba, 0xcf, 0x56, 0x1d, 0x66, 0x19, 0x8a, 0x8e, 0xef, 0x56, 0x67, 0x0c, 0xa0, 0xca, 0x34, 0xc1,
	0xd4, 0xab, 0xb3, 0xa6, 0x98, 0xba, 0xfd, 0xe7, 0x79, 0x58, 0xd8, 0x44, 0xbe, 0xff, 0x82, 0xf8,
	0x67, 0xfa, 0x2c, 0x1f, 0x41, 0xb9, 0x43, 0x63, 0x12, 0x85, 0x67, 0x4e, 0x87, 0xba, 0x66, 0x4e,
	0x5a, 0xd2, 0x88, 0x4d, 0xea, 0x62, 0x41, 0xc0, 0x8e, 0x29, 0xc1, 0x0e, 0x89, 0x83, 0x36, 0x0e,
	0x8d, 0x4e, 0xb1, 0x24, 0x11, 0xcf, 0x25, 0xc0, 0x6a, 0x40, 0xa5, 0x1d, 0x73, 0x8f, 0x60, 0xce,
	0x1d, 0x82, 0x02, 0x6c, 0xe6, 0xa7, 0x09, 0xe4, 0x39, 0x0a, 0xb0, 0xb5, 0x0e, 0xc5, 0xe4, 0x48,
	0xef, 0x56, 0x4b, 0x06, 0xf0, 0x9e, 0x79, 0x16, 0x5b, 0xaf, 0x96, 0x27, 0xc1, 0xd6, 0x87, 0x62,
	0x74, 0xe6, 0xca, 0x31, 0x3a, 0x3b, 0xb1, 0xef, 0x3c, 0x84, 0xb2, 0xcc, 0xe5, 0x51, 0x88, 0x3a,
	0x6f, 0xb0, 0xab, 0x03, 0x60, 0x75, 0x88, 0x61, 0x83, 0x52, 0x3f, 0x39, 0x3e, 0xe4, 0xfb, 0xfb,
	0xca, 0xdc, 0x6a, 0xc1, 0x4d, 0xd7, 0xe3, 0xa8, 0xed, 0x63, 0x67, 0xa0, 0x24, 0x68, 0x3f, 0xbe,
	0x88, 0xe9, 0xba, 0x86, 0x0a, 0x9f, 0xda, 0x4c, 0x81, 0x96, 0x03, 0x1f, 0x64, 0x5d, 0xc2, 0x39,
	0xc1, 0xa1, 0x77, 0xe4, 0x75, 0x64, 0x9e, 0x74, 0xe2, 0xd0, 0xaf, 0x16, 0x0c, 0x56, 0xb9, 0x9a,
	0xf1, 0x91, 0x83, 0x0c, 0xc1, 0xcb, 0xd0, 0xb7, 0xb6, 0x61, 0x39, 0x53, 0xba, 0x50, 0x47, 0xc6,
	0x6d, 0xd1, 0x80, 0x74, 0xa9, 0x07, 0x6b, 0x48, 0x94, 0xf5, 0xfb, 0x1c, 0xac, 0x8e, 0x2e, 0x83,
	0x55, 0xb8, 0x9d, 0xbb, 0xb3, 0x50, 0x3f, 0xac, 0x8d, 0xaa, 0xcd, 0xb2, 0x84, 0xd4, 0xfa, 0xd7,
	0xdf, 0x4a, 0x38, 0xf6, 0x04, 0xc5, 0x63, 0x12, 0x07, 0x17, 0x1a, 0xb4, 0xaa, 0x9d, 0x11, 0x77,
	0xec, 0x5f, 0xc0, 0xad, 0x24, 0xfd, 0x6e, 0x9d, 0x11, 0x14, 0x78, 0x9d, 0x3d, 0x8c, 0xc2, 0xce,
	0xb1, 0x8e, 0xdd, 0x81, 0xc4, 0x95, 0x9b, 0x30, 0x71, 0xd9, 0x15, 0x28, 0x35, 0x69, 0x84, 0x7d,
	0x45, 0x67, 0x5f, 0x87, 0x95, 0xbd, 0x63, 0xca, 0x98, 0x18, 0x3e, 0x40, 0xa1, 0xce, 0xf6, 0xf6,
	0x4d, 0xb8, 0x9e, 0x5c, 0xde, 0x55, 0x15, 0x5a, 0xdf, 0xf8, 0x39, 0x7c, 0x94, 0xdc, 0xd8, 0xa4,
	0x01, 0x43, 0xa1, 0xc7, 0x29, 0xd9, 0xf1, 0xb8, 0x98, 0xff, 0x55, 0xcb, 0x9f, 0xfd, 0xd7, 0x59,
	0x28, 0x3d, 0x0d, 0x90, 0xe7, 0xa7, 0x35, 0x67, 0x2e, 0xc2, 0x88, 0xe3, 0x50, 0xf3, 0x7c, 0xaf,
	0x76, 0xb1, 0x5c, 0xaa, 0x49, 0xf0, 0xbe, 0x84, 0xb4, 0x34, 0x54, 0xe4, 0x2a, 0x31, 0x00, 0x0e,
	0x1d, 0x2f, 0x40, 0x5d, 0x6c, 0x96, 0xab, 0x14, 0x62, 0x5b, 0x00, 0xac, 0xc7, 0xb0, 0x18, 0xa0,
	0xf0, 0x0d, 0x96, 0x1e, 0xa2, 0x38, 0x4c, 0xb2, 0xd5, 0x42, 0x0a, 0x52, 0x34, 0x07, 0x50, 0x1d,
	0xa0, 0x71, 0xd2, 0x6d, 0x32, 0xc9, 0x21, 0x37, 0xfa, 0xf9, 0x9a, 0x89, 0x66, 0x38, 0x84, 0x5b,
	0x83, 0xbc, 0x59, 0x07, 0x31, 0x49, 0x2e, 0xef, 0xf5, 0x53, 0x6f, 0x65, 0xea, 0xdc, 0xaf, 0x73,
	0xf0, 0xdd, 0x21, 0x7a, 0x2d, 0xe1, 0x54, 0x0a, 0xa2, 0x49, 0x2c, 0xaa, 0x24, 0x74, 0x6f, 0xdc,
	0x19, 0x6d, 0x29, 0xb4, 0x88, 0x8e, 0x7d, 0xaa, 0x02, 0xb2, 0xf5, 0x9d, 0x81, 0x09, 0x0c, 0x9b,
	0x58, 0x7b, 0xb0, 0x90, 0x68, 0x45, 0x39, 0x0b, 0x5e, 0x9d, 0xbf, 0x9d, 0xbf, 0x53, 0xaa, 0x7f,
	0x7f, 0xdc, 0x78, 0xda, 0x7f, 0x25, 0x71, 0xab, 0xc2, 0x32, 0xbf, 0x78, 0x96, 0xf4, 0xc4, 0x73,
	0x31, 0xe5, 0xd5, 0xc2, 0x44, 0xa4, 0x07, 0x02, 0x94, 0x92, 0xca, 0x5f, 0xdc, 0xfe, 0xcd, 0xb4,
	0xf6, 0x62, 0xe5, 0x88, 0x57, 0x90, 0x83, 0x03, 0xb1, 0x3e, 0x3d, 0xa9, 0x48, 0xf9, 0x06, 0xaa,
	0xec, 0x03, 0x00, 0x9f, 0x76, 0xa9, 0xf6, 0x7b, 0x13, 0x3f, 0x2d, 0x0a, 0x7b, 0xb9, 0xbf, 0xf6,
	0x3f, 0x72, 0xb0, 0x72, 0xde, 0x59, 0xfe, 0x00, 0x66, 0x22, 0x7c, 0x1a, 0x19, 0xed, 0x86, 0xb4,
	0x14, 0xd3, 0x10, 0x9f, 0x4e, 0x87, 0xfa, 0xd4, 0x4c, 0x6e, 0x14, 0x85, 0xfd, 0xa6, 0x30, 0xb7,
	0x9a, 0xb0, 0x1c, 0x87, 0xa2, 0xca, 0xf9, 0x3e, 0x96, 0x13, 0x70, 0x3c, 0xd7, 0x68, 0x2b, 0x16,
	0xe3, 0xd0, 0xdf, 0x4c, 0x51, 0xdb, 0xae, 0xfd, 0x75, 0x0e, 0xca, 0x59, 0x7f, 0x12, 0x3b, 0xdc,
	0xe7, 0x95, 0x46, 0x4b, 0x2a, 0x67, 0x9d, 0xf0, 0xca, 0x87, 0x7c, 0x0c, 0x37, 0x46, 0x04, 0x64,
	0xfe, 0xf2, 0x01, 0xb9, 0xe2, 0x0e, 0x5f, 0xb4, 0x3f, 0x4f, 0x17, 0x2f, 0x3d, 0x3d, 0xbb, 0x78,
	0x19, 0x3d, 0x13, 0x2d, 0x5e, 0x52, 0xd8, 0x5f, 0xcc, 0x41, 0x49, 0x6e, 0x83, 0xce, 0xf8, 0x3f,
	0x81, 0x12, 0xf3, 0x4e, 0xb1, 0xef, 0xbc, 0xf5, 0xdc, 0xe8, 0x58, 0xfb, 0xdb, 0xad, 0x21, 0xc2,
	0x6d, 0x12, 0xfd, 0xe8, 0xbe, 0xe2, 0x03, 0x69, 0xff, 0x4a, 0x98, 0x5b, 0x9f, 0x42, 0x59, 0xa1,
	0x8f, 0xb1, 0xd7, 0x3d, 0x8e, 0x74, 0xee, 0xbb, 0x10, 0xae, 0x86, 0x6b, 0x4a, 0x7b, 0xeb, 0x13,
	0x28, 0xaa, 0x0c, 0x27, 0xf4, 0x8a, 0xc9, 0x43, 0x45, 0x41, 0x9a, 0x0b, 0x75, 0xf2, 0x19, 0xac,
	0xb0, 0x10, 0x9f, 0x78, 0xf8, 0xad, 0x93, 0x5d, 0xc0, 0xfc, 0xf8, 0x19, 0x2c, 0x6b, 0xdc, 0x6e,
	0x6f, 0x1d, 0xcf, 0xe0, 0x5a, 0x3f, 0x99, 0x5e, 0x4f, 0x61, 0x3c, 0x9b, 0x95, 0x65, 0xd3, 0xcb,
	0x6a, 0x42, 0x32, 0x86, 0xd3, 0x5b, 0x9e, 0x89, 0x72, 0x5a, 0xd4, 0xb0, 0xed, 0x64, 0x95, 0x9f,
	0x43, 0x31, 0x7d, 0x72, 0xd6, 0x32, 0xe9, 0xfe, 0x18, 0x99, 0xf4, 0xcc, 0x0b, 0xf0, 0xfe, 0x19,
	0x53, 0x92, 0x28, 0xf9, 0xd1, 0x2a, 0x04, 0xfa, 0x9b, 0xc8, 0x05, 0x32, 0x35, 0x99, 0x28, 0x78,
	0x69, 0x69, 0x3d, 0x04, 0x08, 0xb0, 0xeb, 0x21, 0xe7, 0xc8, 0xf3, 0x8d, 0x02, 0xae, 0x39, 0xd5,
	0x2a, 0x4a, 0xc4, 0x13, 0xcf, 0xc7, 0xd6, 0x5d, 0x98, 0x71, 0x51, 0x84, 0x74, 0xa0, 0x0d, 0x6f,
	0xe6, 0xc6, 0x59, 0x84, 0x79, 0x82, 0x93, 0xa6, 0xd6, 0x3e, 0x54, 0x91, 0xeb, 0x78, 0xae, 0x88,
	0xad, 0x0e, 0x65, 0x67, 0x7a, 0x1b, 0x8f, 0x42, 0x1a, 0xe8, 0x20, 0xbb, 0xe8, 0x4c, 0x9a, 0x53,
	0xad, 0x15, 0xe4, 0x6e, 0xbb, 0xfb, 0x74, 0x93, 0xb2, 0x33, 0xb9, 0x97, 0x4f, 0x42, 0x1a, 0x6c,
	0xcc, 0xc3, 0xac, 0xe4, 0xb1, 0x5d, 0x78, 0x4f, 0x46, 0xc3, 0x46, 0x1c, 0x30, 0x1c, 0x6e, 0x93,
	0xbd, 0x28, 0xc4, 0x28, 0xd0, 0x11, 0xf1, 0x14, 0x96, 0x3a, 0x42, 0x68, 0x11, 0x91, 0xb7, 0xda,
	0x88, 0x90, 0x54, 0x0d, 0x8d, 0x39, 0xbb, 0x14, 0xb5, 0x21, 0x41, 0xf6, 0x2f, 0xe1, 0x23, 0x39,
	0xca, 0x73, 0x4a, 0xf6, 0xde, 0x78, 0x8c, 0x09, 0x0d, 0xff, 0xbf, 0x1a, 0xeb, 0xeb, 0x1c, 0xdc,
	0x92, 0x83, 0xed, 0x87, 0x31, 0x3e, 0x10, 0x1e, 0xd4, 0x3f, 0xd0, 0x0e, 0xac, 0xa8, 0x1c, 0xe5,
	0xb4, 0xe3, 0x28, 0xa2, 0xc4, 0xf1, 0x51, 0x1b, 0xfb, 0x46, 0x63, 0x2d, 0x2b, 0xe0, 0x86, 0xc4,
	0xed, 0x08, 0x98, 0x10, 0x68, 0x9a, 0x2d, 0xad, 0xb3, 0x26, 0x59, 0x74, 0x41, 0x81, 0x52, 0x21,
	0x75, 0xde, 0xea, 0xf3, 0x97, 0x59, 0xfd, 0x6f, 0x73, 0x70, 0x4d, 0xae, 0xfe, 0x45, 0x1c, 0xf1,
	0xec, 0xb2, 0xdf, 0x99, 0x12, 0xb0, 0xff, 0x96, 0x87, 0x92, 0x9c, 0x92, 0x9e, 0xc9, 0x83, 0x49,
	0x63, 0x28, 0x1b, 0x41, 0xaf, 0xa1, 0xe8, 0x11, 0x47, 0xad, 0x4c, 0x4f, 0xe5, 0xc1, 0xb8, 0x22,
	0x73, 0x81, 0x37, 0x34, 0xa7, 0x5a, 0x05, 0x4f, 0x5f, 0xb1, 0xf6, 0x60, 0xae, 0x2d, 0xc3, 0x40,
	0x6f, 0xfd, 0x27, 0x46, 0xc4, 0xe7, 0x45, 0x4e, 0x73, 0xaa, 0xa5, 0xa9, 0xac, 0x97, 0x00, 0x34,
	0x8e, 0x92, 0x19, 0xab, 0xa2, 0x72, 0xdf, 0x88, 0x78, 0xe0, 0x04, 0x45, 0x26, 0xa1, 0x71, 0xa4,
	0xe7, 0x7a, 0x04, 0x15, 0x42, 0x89, 0xc3, 0x93, 0x68, 0xd2, 0xf5, 0xe6, 0x91, 0x11, 0xf3, 0xe8,
	0x30, 0x6c, 0x4e, 0xb5, 0xca, 0x24, 0x73, 0x77, 0xa3, 0x00, 0x73, 0xaa, 0xd3, 0x6a, 0xff, 0x61,
	0x1a, 0x6e, 0xb4, 0x30, 0x67, 0x94, 0x70, 0xef, 0x04, 0xf7, 0x3d, 0x17, 0x6e, 0xf7, 0x5a, 0x1a,
	0xbc, 0x9a, 0x93, 0x2a, 0x76, 0xec, 0xe3, 0x52, 0x43, 0x35, 0xf8, 0x38, 0xc7, 0x51, 0xaf, 0xc3,
	0xc1, 0xad, 0x17, 0x7d, 0xfd, 0x09, 0x5e, 0x9d, 0x9e, 0x9c, 0xad, 0x8f, 0xa0, 0xd7, 0xea, 0xca,
	0x5f, 0xa2, 0xd5, 0x35, 0x63, 0xde, 0xea, 0xfa, 0x67, 0x01, 0x3e, 0xd8, 0x91, 0xed, 0xe1, 0xde,
	0x26, 0x69, 0x75, 0xd3, 0xeb, 0x62, 0xf2, 0x63, 0x1a, 0x46, 0xce, 0x44, 0x71, 0x58, 0x91, 0x98,
	0x34, 0x51, 0x34, 0xa0, 0xe2, 0x53, 0xd2, 0x9d, 0x2c, 0xdb, 0x94, 0x05, 0xa4, 0x39, 0x22, 0x9e,
	0xf3, 0x57, 0x56, 0xf6, 0x33, 0x13, 0x2b, 0xfb, 0x1d, 0xb8, 0x86, 0x7c, 0x9f, 0xbe, 0x75, 0x8e,
	0x7c, 0x7c, 0xea, 0xc9, 0x5e, 0x90, 0x14, 0xd7, 0xb3, 0x63, 0x3b, 0x40, 0x96, 0xc4, 0x3d, 0xd1,
	0x30, 0xa5, 0xb1, 0x1f, 0x41, 0x19, 0x75, 0x3a, 0x98, 0x24, 0x12, 0xdd, 0x44, 0x3d, 0x95, 0x14,
	0x42, 0x11, 0x88, 0x8c, 0x84, 0x3c, 0xa2, 0xe1, 0xf3, 0x46, 0x19, 0x09, 0x79, 0x44, 0x81, 0x3f,
	0x83, 0x95, 0x7e, 0xed, 0xeb, 0xc8, 0xe7, 0x8b, 0x82, 0x51, 0x77, 0x28, 0x23, 0x71, 0xf7, 0xf5,
	0xb3, 0x46, 0xe6, 0x91, 0xa7, 0x38, 0xd1, 0x23, 0x8f, 0xd0, 0x5a, 0xfc, 0x57, 0x31, 0x0a, 0xb1,
	0x93, 0xe1, 0x00, 0x93, 0x2a, 0xa2, 0x60, 0x3b, 0x29, 0xd3, 0x39, 0x6d, 0x87, 0xd2, 0x25, 0xda,
	0x0e, 0x2d, 0xb8, 0xa1, 0x27, 0x34, 0xc8, 0x66, 0xd2, 0xf7, 0xbc, 0xa6, 0xb0, 0xcf, 0xfa, 0x39,
	0xdf, 0xc2, 0x42, 0xff, 0xab, 0x9f, 0x6a, 0x45, 0x6a, 0xc1, 0xdd, 0x31, 0x5a, 0x30, 0x8d, 0xc5,
	0x27, 0x12, 0xbd, 0xa7, 0xc0, 0x52, 0x19, 0x9e, 0x7f, 0xab, 0x55, 0x39, 0xca, 0xfe, 0x94, 0x7d,
	0xe7, 0xd0, 0xeb, 0x60, 0x87, 0x85, 0xf8, 0xc8, 0x3b, 0xad, 0x2e, 0x18, 0xf5, 0x9d, 0x05, 0x62,
	0x57, 0x02, 0xc4, 0xd9, 0xb2, 0x90, 0x06, 0x54, 0xf9, 0xc7, 0xa2, 0xc9, 0xd9, 0x4a, 0x7b, 0xe1,
	0x18, 0xf6, 0x7f, 0xf2, 0x50, 0x6c, 0x30, 0xa6, 0x53, 0xc9, 0x2b, 0x58, 0x0e, 0x10, 0x71, 0x51,
	0x44, 0x43, 0xf9, 0x32, 0x2c, 0xf3, 0x44, 0x3b, 0x51, 0xaa, 0x5c, 0x4c, 0x59, 0xd4, 0xd5, 0xfe,
	0x4c, 0x3e, 0xfd, 0x8d, 0x66, 0xf2, 0xfc, 0x55, 0x33, 0xf9, 0x16, 0xcc, 0xe9, 0xee, 0xcb, 0x8c,
	0x59, 0xa3, 0xa4, 0xe1, 0xaa, 0xc7, 0x3b, 0xc9, 0xa5, 0xb1, 0xd6, 0x1e, 0x2c, 0x9c, 0xd1, 0x38,
	0x8a, 0xdb, 0x38, 0x69, 0xbb, 0xcc, 0x9a, 0xb2, 0x29, 0x11, 0x23, 0xd9, 0x2a, 0x9a, 0x43, 0xb5,
	0x5d, 0xac, 0x36, 0xac, 0x1c, 0x47, 0x81, 0xff, 0x43, 0x47, 0x09, 0x9b, 0x76, 0x4c, 0x5c, 0x1f,
	0xf3, 0xea, 0x9c, 0x64, 0xae, 0x8f, 0x67, 0x7e, 0x26, 0x60, 0x1b, 0x12, 0xa5, 0xf8, 0x97, 0x25,
	0x5d, 0xe6, 0x32, 0xb7, 0xff, 0x32, 0x0d, 0x2b, 0x0d, 0xc6, 0x1e, 0x93, 0x2e, 0xea, 0xe2, 0x00,
	0x93, 0xe8, 0x5b, 0x50, 0x7c, 0x7b, 0x47, 0x96, 0xbf, 0xc2, 0x91, 0x6d, 0xc1, 0x9c, 0x3e, 0xaa,
	0x99, 0x4b, 0x1c, 0x95, 0xc6, 0xda, 0x5f, 0xe4, 0xe1, 0x86, 0x2a, 0xd0, 0x0d, 0xc6, 0xb6, 0xd5,
	0xdb, 0x5b, 0xbd, 0x85, 0xf7, 0x60, 0x4e, 0xbe, 0xd2, 0x75, 0x8d, 0x2a, 0xf2, 0x2c, 0x62, 0x6c,
	0xdb, 0xb5, 0x62, 0x28, 0xa6, 0x2f, 0x7e, 0x65, 0x15, 0x5e, 0xa8, 0xff, 0x6c, 0x4c, 0x0e, 0x1a,
	0x1e, 0xbe, 0xc1, 0xd8, 0x9e, 0x20, 0x90, 0x79, 0x68, 0xf4, 0xed, 0x56, 0x01, 0xe9, 0x6f, 0x7d,
	0x3a, 0x3e, 0x7f, 0xa5, 0x17, 0xbc, 0xef, 0xe0, 0xe5, 0x91, 0xfd, 0x3b, 0x80, 0x9b, 0xa3, 0xf4,
	0xd1, 0x2b, 0x58, 0x1a, 0x28, 0x13, 0x89, 0x3f, 0x4f, 0xe6, 0x36, 0x8b, 0xfd, 0x55, 0x88, 0x5b,
	0x2e, 0xdc, 0x3c, 0xbf, 0x0c, 0x25, 0x1e, 0x3e, 0x19, 0xff, 0xf5, 0xf3, 0xea, 0x12, 0xb7, 0x9e,
	0x41, 0xa9, 0x57, 0x76, 0x2f, 0xe7, 0xf0, 0x90, 0xd6, 0x72, 0x6e, 0xbd, 0x06, 0x6b, 0xa8, 0x98,
	0x5f, 0x2e, 0xf3, 0x2d, 0x0d, 0x54, 0x77, 0xde, 0x9f, 0x32, 0x66, 0xaf, 0x94, 0x32, 0x76, 0x07,
	0xf5, 0xe8, 0xdc, 0xe4, 0x55, 0xa8, 0x5f, 0x9e, 0x0e, 0x26, 0xa1, 0xf9, 0xab, 0x26, 0xa1, 0xe1,
	0x8c, 0x5f, 0xb8, 0x7a, 0xc6, 0x1f, 0x12, 0xc1, 0xc5, 0xcb, 0xb4, 0xb7, 0x33, 0xaa, 0x13, 0x26,
	0x53, 0x9d, 0x83, 0x9a, 0xb7, 0x34, 0xa9, 0xe6, 0x1d, 0x25, 0xc1, 0xcb, 0x97, 0x92, 0xe0, 0x23,
	0x44, 0x70, 0xe5, 0x52, 0x22, 0xf8, 0x9d, 0x2a, 0xad, 0x73, 0x04, 0xe6, 0xd2, 0xff, 0x45, 0x60,
	0xda, 0x5f, 0x4e, 0xa7, 0x6f, 0x2c, 0x5e, 0xca, 0x3f, 0x28, 0xe9, 0xbc, 0xf8, 0x65, 0x0e, 0x6e,
	0x5d, 0xf0, 0xcf, 0x25, 0x59, 0xb3, 0x16, 0xea, 0xfb, 0x66, 0xd3, 0x53, 0xcc, 0xba, 0x95, 0x9e,
	0xf6, 0x46, 0x47, 0xdd, 0x6c, 0x55, 0xdd, 0x11, 0x77, 0xac, 0x57, 0x50, 0xce, 0x8a, 0x1d, 0xfd,
	0x1c, 0x7a, 0x09, 0xad, 0xd3, 0x9c, 0x6a, 0x95, 0x82, 0xde, 0xb5, 0x8d, 0x0a, 0xa8, 0x9f, 0xea,
	0xcf, 0x65, 0x1b, 0xff, 0xce, 0x81, 0xdd, 0xa1, 0xc1, 0x18, 0xde, 0x8d, 0xa5, 0x86, 0x2b, 0xa6,
	0x25, 0x36, 0x8c, 0xef, 0x8a, 0x13, 0xde, 0xcd, 0xbd, 0xde, 0xd2, 0x98, 0x2e, 0xf5, 0x11, 0xe9,
	0xd6, 0x68, 0xd8, 0x5d, 0xeb, 0x62, 0x22, 0xcf, 0x3f, 0xf9, 0x5f, 0x16, 0xf3, 0xf8, 0xa8, 0xff,
	0xb7, 0x3d, 0x50, 0x1f, 0x7f, 0x9c, 0xce, 0x3f, 0x6d, 0x34, 0xfe, 0x34, 0xfd, 0xe1, 0x53, 0x45,
	0xd6, 0x70, 0x79, 0x4d, 0x7d, 0x15, 0xdf, 0x0e, 0xea, 0xb5, 0x4d, 0x69, 0xf6, 0x55, 0x62, 0x70,
	0xd8, 0x70, 0xf9, 0x61, 0x6a, 0x70, 0x78, 0x50, 0x3f, 0x54, 0x06, 0xff, 0x9a, 0xb6, 0xd5, 0xd5,
	0xf5, 0xf5, 0x86, 0xcb, 0xd7, 0xd7, 0x53, 0x93, 0xf5, 0xf5, 0x83, 0xfa, 0xfa, 0xba, 0x32, 0x6a,
	0xcf, 0xc9, 0xd9, 0xdd, 0xfb, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x56, 0x6f, 0xfe, 0xd0,
	0x27, 0x00, 0x00,
}
