// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/firestore/v1beta1/query.proto

package firestore // import "google.golang.org/genproto/googleapis/firestore/v1beta1"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import wrappers "github.com/golang/protobuf/ptypes/wrappers"
import _ "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.ProtoPackageIsVersion2 // please upgrade the proto package

// A sort direction.
type StructuredQuery_Direction int32

const (
	// Unspecified.
	StructuredQuery_DIRECTION_UNSPECIFIED StructuredQuery_Direction = 0
	// Ascending.
	StructuredQuery_ASCENDING StructuredQuery_Direction = 1
	// Descending.
	StructuredQuery_DESCENDING StructuredQuery_Direction = 2
)

var StructuredQuery_Direction_name = map[int32]string{
	0: "DIRECTION_UNSPECIFIED",
	1: "ASCENDING",
	2: "DESCENDING",
}
var StructuredQuery_Direction_value = map[string]int32{
	"DIRECTION_UNSPECIFIED": 0,
	"ASCENDING":             1,
	"DESCENDING":            2,
}

func (x StructuredQuery_Direction) String() string {
	return proto.EnumName(StructuredQuery_Direction_name, int32(x))
}
func (StructuredQuery_Direction) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 0}
}

// A composite filter operator.
type StructuredQuery_CompositeFilter_Operator int32

const (
	// Unspecified. This value must not be used.
	StructuredQuery_CompositeFilter_OPERATOR_UNSPECIFIED StructuredQuery_CompositeFilter_Operator = 0
	// The results are required to satisfy each of the combined filters.
	StructuredQuery_CompositeFilter_AND StructuredQuery_CompositeFilter_Operator = 1
)

var StructuredQuery_CompositeFilter_Operator_name = map[int32]string{
	0: "OPERATOR_UNSPECIFIED",
	1: "AND",
}
var StructuredQuery_CompositeFilter_Operator_value = map[string]int32{
	"OPERATOR_UNSPECIFIED": 0,
	"AND":                  1,
}

func (x StructuredQuery_CompositeFilter_Operator) String() string {
	return proto.EnumName(StructuredQuery_CompositeFilter_Operator_name, int32(x))
}
func (StructuredQuery_CompositeFilter_Operator) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 2, 0}
}

// A field filter operator.
type StructuredQuery_FieldFilter_Operator int32

const (
	// Unspecified. This value must not be used.
	StructuredQuery_FieldFilter_OPERATOR_UNSPECIFIED StructuredQuery_FieldFilter_Operator = 0
	// Less than. Requires that the field come first in `order_by`.
	StructuredQuery_FieldFilter_LESS_THAN StructuredQuery_FieldFilter_Operator = 1
	// Less than or equal. Requires that the field come first in `order_by`.
	StructuredQuery_FieldFilter_LESS_THAN_OR_EQUAL StructuredQuery_FieldFilter_Operator = 2
	// Greater than. Requires that the field come first in `order_by`.
	StructuredQuery_FieldFilter_GREATER_THAN StructuredQuery_FieldFilter_Operator = 3
	// Greater than or equal. Requires that the field come first in
	// `order_by`.
	StructuredQuery_FieldFilter_GREATER_THAN_OR_EQUAL StructuredQuery_FieldFilter_Operator = 4
	// Equal.
	StructuredQuery_FieldFilter_EQUAL StructuredQuery_FieldFilter_Operator = 5
	// Contains. Requires that the field is an array.
	StructuredQuery_FieldFilter_ARRAY_CONTAINS StructuredQuery_FieldFilter_Operator = 7
)

var StructuredQuery_FieldFilter_Operator_name = map[int32]string{
	0: "OPERATOR_UNSPECIFIED",
	1: "LESS_THAN",
	2: "LESS_THAN_OR_EQUAL",
	3: "GREATER_THAN",
	4: "GREATER_THAN_OR_EQUAL",
	5: "EQUAL",
	7: "ARRAY_CONTAINS",
}
var StructuredQuery_FieldFilter_Operator_value = map[string]int32{
	"OPERATOR_UNSPECIFIED":  0,
	"LESS_THAN":             1,
	"LESS_THAN_OR_EQUAL":    2,
	"GREATER_THAN":          3,
	"GREATER_THAN_OR_EQUAL": 4,
	"EQUAL":                 5,
	"ARRAY_CONTAINS":        7,
}

func (x StructuredQuery_FieldFilter_Operator) String() string {
	return proto.EnumName(StructuredQuery_FieldFilter_Operator_name, int32(x))
}
func (StructuredQuery_FieldFilter_Operator) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 3, 0}
}

// A unary operator.
type StructuredQuery_UnaryFilter_Operator int32

const (
	// Unspecified. This value must not be used.
	StructuredQuery_UnaryFilter_OPERATOR_UNSPECIFIED StructuredQuery_UnaryFilter_Operator = 0
	// Test if a field is equal to NaN.
	StructuredQuery_UnaryFilter_IS_NAN StructuredQuery_UnaryFilter_Operator = 2
	// Test if an exprestion evaluates to Null.
	StructuredQuery_UnaryFilter_IS_NULL StructuredQuery_UnaryFilter_Operator = 3
)

var StructuredQuery_UnaryFilter_Operator_name = map[int32]string{
	0: "OPERATOR_UNSPECIFIED",
	2: "IS_NAN",
	3: "IS_NULL",
}
var StructuredQuery_UnaryFilter_Operator_value = map[string]int32{
	"OPERATOR_UNSPECIFIED": 0,
	"IS_NAN":               2,
	"IS_NULL":              3,
}

func (x StructuredQuery_UnaryFilter_Operator) String() string {
	return proto.EnumName(StructuredQuery_UnaryFilter_Operator_name, int32(x))
}
func (StructuredQuery_UnaryFilter_Operator) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 4, 0}
}

// A Firestore query.
type StructuredQuery struct {
	// The projection to return.
	Select *StructuredQuery_Projection `protobuf:"bytes,1,opt,name=select,proto3" json:"select,omitempty"`
	// The collections to query.
	From []*StructuredQuery_CollectionSelector `protobuf:"bytes,2,rep,name=from,proto3" json:"from,omitempty"`
	// The filter to apply.
	Where *StructuredQuery_Filter `protobuf:"bytes,3,opt,name=where,proto3" json:"where,omitempty"`
	// The order to apply to the query results.
	//
	// Firestore guarantees a stable ordering through the following rules:
	//
	//  * Any field required to appear in `order_by`, that is not already
	//    specified in `order_by`, is appended to the order in field name order
	//    by default.
	//  * If an order on `__name__` is not specified, it is appended by default.
	//
	// Fields are appended with the same sort direction as the last order
	// specified, or 'ASCENDING' if no order was specified. For example:
	//
	//  * `SELECT * FROM Foo ORDER BY A` becomes
	//    `SELECT * FROM Foo ORDER BY A, __name__`
	//  * `SELECT * FROM Foo ORDER BY A DESC` becomes
	//    `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC`
	//  * `SELECT * FROM Foo WHERE A > 1` becomes
	//    `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`
	OrderBy []*StructuredQuery_Order `protobuf:"bytes,4,rep,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
	// A starting point for the query results.
	StartAt *Cursor `protobuf:"bytes,7,opt,name=start_at,json=startAt,proto3" json:"start_at,omitempty"`
	// A end point for the query results.
	EndAt *Cursor `protobuf:"bytes,8,opt,name=end_at,json=endAt,proto3" json:"end_at,omitempty"`
	// The number of results to skip.
	//
	// Applies before limit, but after all other constraints. Must be >= 0 if
	// specified.
	Offset int32 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"`
	// The maximum number of results to return.
	//
	// Applies after all other constraints.
	// Must be >= 0 if specified.
	Limit                *wrappers.Int32Value `protobuf:"bytes,5,opt,name=limit,proto3" json:"limit,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *StructuredQuery) Reset()         { *m = StructuredQuery{} }
func (m *StructuredQuery) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery) ProtoMessage()    {}
func (*StructuredQuery) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0}
}
func (m *StructuredQuery) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery.Unmarshal(m, b)
}
func (m *StructuredQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery.Merge(dst, src)
}
func (m *StructuredQuery) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery.Size(m)
}
func (m *StructuredQuery) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery proto.InternalMessageInfo

func (m *StructuredQuery) GetSelect() *StructuredQuery_Projection {
	if m != nil {
		return m.Select
	}
	return nil
}

func (m *StructuredQuery) GetFrom() []*StructuredQuery_CollectionSelector {
	if m != nil {
		return m.From
	}
	return nil
}

func (m *StructuredQuery) GetWhere() *StructuredQuery_Filter {
	if m != nil {
		return m.Where
	}
	return nil
}

func (m *StructuredQuery) GetOrderBy() []*StructuredQuery_Order {
	if m != nil {
		return m.OrderBy
	}
	return nil
}

func (m *StructuredQuery) GetStartAt() *Cursor {
	if m != nil {
		return m.StartAt
	}
	return nil
}

func (m *StructuredQuery) GetEndAt() *Cursor {
	if m != nil {
		return m.EndAt
	}
	return nil
}

func (m *StructuredQuery) GetOffset() int32 {
	if m != nil {
		return m.Offset
	}
	return 0
}

func (m *StructuredQuery) GetLimit() *wrappers.Int32Value {
	if m != nil {
		return m.Limit
	}
	return nil
}

// A selection of a collection, such as `messages as m1`.
type StructuredQuery_CollectionSelector struct {
	// The collection ID.
	// When set, selects only collections with this ID.
	CollectionId string `protobuf:"bytes,2,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"`
	// When false, selects only collections that are immediate children of
	// the `parent` specified in the containing `RunQueryRequest`.
	// When true, selects all descendant collections.
	AllDescendants       bool     `protobuf:"varint,3,opt,name=all_descendants,json=allDescendants,proto3" json:"all_descendants,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *StructuredQuery_CollectionSelector) Reset()         { *m = StructuredQuery_CollectionSelector{} }
func (m *StructuredQuery_CollectionSelector) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_CollectionSelector) ProtoMessage()    {}
func (*StructuredQuery_CollectionSelector) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 0}
}
func (m *StructuredQuery_CollectionSelector) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_CollectionSelector.Unmarshal(m, b)
}
func (m *StructuredQuery_CollectionSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_CollectionSelector.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_CollectionSelector) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_CollectionSelector.Merge(dst, src)
}
func (m *StructuredQuery_CollectionSelector) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_CollectionSelector.Size(m)
}
func (m *StructuredQuery_CollectionSelector) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_CollectionSelector.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_CollectionSelector proto.InternalMessageInfo

func (m *StructuredQuery_CollectionSelector) GetCollectionId() string {
	if m != nil {
		return m.CollectionId
	}
	return ""
}

func (m *StructuredQuery_CollectionSelector) GetAllDescendants() bool {
	if m != nil {
		return m.AllDescendants
	}
	return false
}

// A filter.
type StructuredQuery_Filter struct {
	// The type of filter.
	//
	// Types that are valid to be assigned to FilterType:
	//	*StructuredQuery_Filter_CompositeFilter
	//	*StructuredQuery_Filter_FieldFilter
	//	*StructuredQuery_Filter_UnaryFilter
	FilterType           isStructuredQuery_Filter_FilterType `protobuf_oneof:"filter_type"`
	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
	XXX_unrecognized     []byte                              `json:"-"`
	XXX_sizecache        int32                               `json:"-"`
}

func (m *StructuredQuery_Filter) Reset()         { *m = StructuredQuery_Filter{} }
func (m *StructuredQuery_Filter) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_Filter) ProtoMessage()    {}
func (*StructuredQuery_Filter) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 1}
}
func (m *StructuredQuery_Filter) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_Filter.Unmarshal(m, b)
}
func (m *StructuredQuery_Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_Filter.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_Filter) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_Filter.Merge(dst, src)
}
func (m *StructuredQuery_Filter) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_Filter.Size(m)
}
func (m *StructuredQuery_Filter) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_Filter.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_Filter proto.InternalMessageInfo

type isStructuredQuery_Filter_FilterType interface {
	isStructuredQuery_Filter_FilterType()
}

type StructuredQuery_Filter_CompositeFilter struct {
	CompositeFilter *StructuredQuery_CompositeFilter `protobuf:"bytes,1,opt,name=composite_filter,json=compositeFilter,proto3,oneof"`
}

type StructuredQuery_Filter_FieldFilter struct {
	FieldFilter *StructuredQuery_FieldFilter `protobuf:"bytes,2,opt,name=field_filter,json=fieldFilter,proto3,oneof"`
}

type StructuredQuery_Filter_UnaryFilter struct {
	UnaryFilter *StructuredQuery_UnaryFilter `protobuf:"bytes,3,opt,name=unary_filter,json=unaryFilter,proto3,oneof"`
}

func (*StructuredQuery_Filter_CompositeFilter) isStructuredQuery_Filter_FilterType() {}

func (*StructuredQuery_Filter_FieldFilter) isStructuredQuery_Filter_FilterType() {}

func (*StructuredQuery_Filter_UnaryFilter) isStructuredQuery_Filter_FilterType() {}

func (m *StructuredQuery_Filter) GetFilterType() isStructuredQuery_Filter_FilterType {
	if m != nil {
		return m.FilterType
	}
	return nil
}

func (m *StructuredQuery_Filter) GetCompositeFilter() *StructuredQuery_CompositeFilter {
	if x, ok := m.GetFilterType().(*StructuredQuery_Filter_CompositeFilter); ok {
		return x.CompositeFilter
	}
	return nil
}

func (m *StructuredQuery_Filter) GetFieldFilter() *StructuredQuery_FieldFilter {
	if x, ok := m.GetFilterType().(*StructuredQuery_Filter_FieldFilter); ok {
		return x.FieldFilter
	}
	return nil
}

func (m *StructuredQuery_Filter) GetUnaryFilter() *StructuredQuery_UnaryFilter {
	if x, ok := m.GetFilterType().(*StructuredQuery_Filter_UnaryFilter); ok {
		return x.UnaryFilter
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*StructuredQuery_Filter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _StructuredQuery_Filter_OneofMarshaler, _StructuredQuery_Filter_OneofUnmarshaler, _StructuredQuery_Filter_OneofSizer, []interface{}{
		(*StructuredQuery_Filter_CompositeFilter)(nil),
		(*StructuredQuery_Filter_FieldFilter)(nil),
		(*StructuredQuery_Filter_UnaryFilter)(nil),
	}
}

func _StructuredQuery_Filter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*StructuredQuery_Filter)
	// filter_type
	switch x := m.FilterType.(type) {
	case *StructuredQuery_Filter_CompositeFilter:
		b.EncodeVarint(1<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.CompositeFilter); err != nil {
			return err
		}
	case *StructuredQuery_Filter_FieldFilter:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.FieldFilter); err != nil {
			return err
		}
	case *StructuredQuery_Filter_UnaryFilter:
		b.EncodeVarint(3<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.UnaryFilter); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("StructuredQuery_Filter.FilterType has unexpected type %T", x)
	}
	return nil
}

func _StructuredQuery_Filter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*StructuredQuery_Filter)
	switch tag {
	case 1: // filter_type.composite_filter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StructuredQuery_CompositeFilter)
		err := b.DecodeMessage(msg)
		m.FilterType = &StructuredQuery_Filter_CompositeFilter{msg}
		return true, err
	case 2: // filter_type.field_filter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StructuredQuery_FieldFilter)
		err := b.DecodeMessage(msg)
		m.FilterType = &StructuredQuery_Filter_FieldFilter{msg}
		return true, err
	case 3: // filter_type.unary_filter
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StructuredQuery_UnaryFilter)
		err := b.DecodeMessage(msg)
		m.FilterType = &StructuredQuery_Filter_UnaryFilter{msg}
		return true, err
	default:
		return false, nil
	}
}

func _StructuredQuery_Filter_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*StructuredQuery_Filter)
	// filter_type
	switch x := m.FilterType.(type) {
	case *StructuredQuery_Filter_CompositeFilter:
		s := proto.Size(x.CompositeFilter)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *StructuredQuery_Filter_FieldFilter:
		s := proto.Size(x.FieldFilter)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *StructuredQuery_Filter_UnaryFilter:
		s := proto.Size(x.UnaryFilter)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// A filter that merges multiple other filters using the given operator.
type StructuredQuery_CompositeFilter struct {
	// The operator for combining multiple filters.
	Op StructuredQuery_CompositeFilter_Operator `protobuf:"varint,1,opt,name=op,proto3,enum=google.firestore.v1beta1.StructuredQuery_CompositeFilter_Operator" json:"op,omitempty"`
	// The list of filters to combine.
	// Must contain at least one filter.
	Filters              []*StructuredQuery_Filter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
	XXX_unrecognized     []byte                    `json:"-"`
	XXX_sizecache        int32                     `json:"-"`
}

func (m *StructuredQuery_CompositeFilter) Reset()         { *m = StructuredQuery_CompositeFilter{} }
func (m *StructuredQuery_CompositeFilter) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_CompositeFilter) ProtoMessage()    {}
func (*StructuredQuery_CompositeFilter) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 2}
}
func (m *StructuredQuery_CompositeFilter) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_CompositeFilter.Unmarshal(m, b)
}
func (m *StructuredQuery_CompositeFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_CompositeFilter.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_CompositeFilter) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_CompositeFilter.Merge(dst, src)
}
func (m *StructuredQuery_CompositeFilter) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_CompositeFilter.Size(m)
}
func (m *StructuredQuery_CompositeFilter) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_CompositeFilter.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_CompositeFilter proto.InternalMessageInfo

func (m *StructuredQuery_CompositeFilter) GetOp() StructuredQuery_CompositeFilter_Operator {
	if m != nil {
		return m.Op
	}
	return StructuredQuery_CompositeFilter_OPERATOR_UNSPECIFIED
}

func (m *StructuredQuery_CompositeFilter) GetFilters() []*StructuredQuery_Filter {
	if m != nil {
		return m.Filters
	}
	return nil
}

// A filter on a specific field.
type StructuredQuery_FieldFilter struct {
	// The field to filter by.
	Field *StructuredQuery_FieldReference `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
	// The operator to filter by.
	Op StructuredQuery_FieldFilter_Operator `protobuf:"varint,2,opt,name=op,proto3,enum=google.firestore.v1beta1.StructuredQuery_FieldFilter_Operator" json:"op,omitempty"`
	// The value to compare to.
	Value                *Value   `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *StructuredQuery_FieldFilter) Reset()         { *m = StructuredQuery_FieldFilter{} }
func (m *StructuredQuery_FieldFilter) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_FieldFilter) ProtoMessage()    {}
func (*StructuredQuery_FieldFilter) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 3}
}
func (m *StructuredQuery_FieldFilter) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_FieldFilter.Unmarshal(m, b)
}
func (m *StructuredQuery_FieldFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_FieldFilter.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_FieldFilter) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_FieldFilter.Merge(dst, src)
}
func (m *StructuredQuery_FieldFilter) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_FieldFilter.Size(m)
}
func (m *StructuredQuery_FieldFilter) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_FieldFilter.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_FieldFilter proto.InternalMessageInfo

func (m *StructuredQuery_FieldFilter) GetField() *StructuredQuery_FieldReference {
	if m != nil {
		return m.Field
	}
	return nil
}

func (m *StructuredQuery_FieldFilter) GetOp() StructuredQuery_FieldFilter_Operator {
	if m != nil {
		return m.Op
	}
	return StructuredQuery_FieldFilter_OPERATOR_UNSPECIFIED
}

func (m *StructuredQuery_FieldFilter) GetValue() *Value {
	if m != nil {
		return m.Value
	}
	return nil
}

// A filter with a single operand.
type StructuredQuery_UnaryFilter struct {
	// The unary operator to apply.
	Op StructuredQuery_UnaryFilter_Operator `protobuf:"varint,1,opt,name=op,proto3,enum=google.firestore.v1beta1.StructuredQuery_UnaryFilter_Operator" json:"op,omitempty"`
	// The argument to the filter.
	//
	// Types that are valid to be assigned to OperandType:
	//	*StructuredQuery_UnaryFilter_Field
	OperandType          isStructuredQuery_UnaryFilter_OperandType `protobuf_oneof:"operand_type"`
	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
	XXX_unrecognized     []byte                                    `json:"-"`
	XXX_sizecache        int32                                     `json:"-"`
}

func (m *StructuredQuery_UnaryFilter) Reset()         { *m = StructuredQuery_UnaryFilter{} }
func (m *StructuredQuery_UnaryFilter) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_UnaryFilter) ProtoMessage()    {}
func (*StructuredQuery_UnaryFilter) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 4}
}
func (m *StructuredQuery_UnaryFilter) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_UnaryFilter.Unmarshal(m, b)
}
func (m *StructuredQuery_UnaryFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_UnaryFilter.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_UnaryFilter) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_UnaryFilter.Merge(dst, src)
}
func (m *StructuredQuery_UnaryFilter) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_UnaryFilter.Size(m)
}
func (m *StructuredQuery_UnaryFilter) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_UnaryFilter.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_UnaryFilter proto.InternalMessageInfo

func (m *StructuredQuery_UnaryFilter) GetOp() StructuredQuery_UnaryFilter_Operator {
	if m != nil {
		return m.Op
	}
	return StructuredQuery_UnaryFilter_OPERATOR_UNSPECIFIED
}

type isStructuredQuery_UnaryFilter_OperandType interface {
	isStructuredQuery_UnaryFilter_OperandType()
}

type StructuredQuery_UnaryFilter_Field struct {
	Field *StructuredQuery_FieldReference `protobuf:"bytes,2,opt,name=field,proto3,oneof"`
}

func (*StructuredQuery_UnaryFilter_Field) isStructuredQuery_UnaryFilter_OperandType() {}

func (m *StructuredQuery_UnaryFilter) GetOperandType() isStructuredQuery_UnaryFilter_OperandType {
	if m != nil {
		return m.OperandType
	}
	return nil
}

func (m *StructuredQuery_UnaryFilter) GetField() *StructuredQuery_FieldReference {
	if x, ok := m.GetOperandType().(*StructuredQuery_UnaryFilter_Field); ok {
		return x.Field
	}
	return nil
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*StructuredQuery_UnaryFilter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _StructuredQuery_UnaryFilter_OneofMarshaler, _StructuredQuery_UnaryFilter_OneofUnmarshaler, _StructuredQuery_UnaryFilter_OneofSizer, []interface{}{
		(*StructuredQuery_UnaryFilter_Field)(nil),
	}
}

func _StructuredQuery_UnaryFilter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*StructuredQuery_UnaryFilter)
	// operand_type
	switch x := m.OperandType.(type) {
	case *StructuredQuery_UnaryFilter_Field:
		b.EncodeVarint(2<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.Field); err != nil {
			return err
		}
	case nil:
	default:
		return fmt.Errorf("StructuredQuery_UnaryFilter.OperandType has unexpected type %T", x)
	}
	return nil
}

func _StructuredQuery_UnaryFilter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*StructuredQuery_UnaryFilter)
	switch tag {
	case 2: // operand_type.field
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(StructuredQuery_FieldReference)
		err := b.DecodeMessage(msg)
		m.OperandType = &StructuredQuery_UnaryFilter_Field{msg}
		return true, err
	default:
		return false, nil
	}
}

func _StructuredQuery_UnaryFilter_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*StructuredQuery_UnaryFilter)
	// operand_type
	switch x := m.OperandType.(type) {
	case *StructuredQuery_UnaryFilter_Field:
		s := proto.Size(x.Field)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

// An order on a field.
type StructuredQuery_Order struct {
	// The field to order by.
	Field *StructuredQuery_FieldReference `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
	// The direction to order by. Defaults to `ASCENDING`.
	Direction            StructuredQuery_Direction `protobuf:"varint,2,opt,name=direction,proto3,enum=google.firestore.v1beta1.StructuredQuery_Direction" json:"direction,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
	XXX_unrecognized     []byte                    `json:"-"`
	XXX_sizecache        int32                     `json:"-"`
}

func (m *StructuredQuery_Order) Reset()         { *m = StructuredQuery_Order{} }
func (m *StructuredQuery_Order) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_Order) ProtoMessage()    {}
func (*StructuredQuery_Order) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 5}
}
func (m *StructuredQuery_Order) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_Order.Unmarshal(m, b)
}
func (m *StructuredQuery_Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_Order.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_Order) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_Order.Merge(dst, src)
}
func (m *StructuredQuery_Order) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_Order.Size(m)
}
func (m *StructuredQuery_Order) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_Order.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_Order proto.InternalMessageInfo

func (m *StructuredQuery_Order) GetField() *StructuredQuery_FieldReference {
	if m != nil {
		return m.Field
	}
	return nil
}

func (m *StructuredQuery_Order) GetDirection() StructuredQuery_Direction {
	if m != nil {
		return m.Direction
	}
	return StructuredQuery_DIRECTION_UNSPECIFIED
}

// A reference to a field, such as `max(messages.time) as max_time`.
type StructuredQuery_FieldReference struct {
	FieldPath            string   `protobuf:"bytes,2,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *StructuredQuery_FieldReference) Reset()         { *m = StructuredQuery_FieldReference{} }
func (m *StructuredQuery_FieldReference) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_FieldReference) ProtoMessage()    {}
func (*StructuredQuery_FieldReference) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 6}
}
func (m *StructuredQuery_FieldReference) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_FieldReference.Unmarshal(m, b)
}
func (m *StructuredQuery_FieldReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_FieldReference.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_FieldReference) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_FieldReference.Merge(dst, src)
}
func (m *StructuredQuery_FieldReference) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_FieldReference.Size(m)
}
func (m *StructuredQuery_FieldReference) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_FieldReference.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_FieldReference proto.InternalMessageInfo

func (m *StructuredQuery_FieldReference) GetFieldPath() string {
	if m != nil {
		return m.FieldPath
	}
	return ""
}

// The projection of document's fields to return.
type StructuredQuery_Projection struct {
	// The fields to return.
	//
	// If empty, all fields are returned. To only return the name
	// of the document, use `['__name__']`.
	Fields               []*StructuredQuery_FieldReference `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
	XXX_unrecognized     []byte                            `json:"-"`
	XXX_sizecache        int32                             `json:"-"`
}

func (m *StructuredQuery_Projection) Reset()         { *m = StructuredQuery_Projection{} }
func (m *StructuredQuery_Projection) String() string { return proto.CompactTextString(m) }
func (*StructuredQuery_Projection) ProtoMessage()    {}
func (*StructuredQuery_Projection) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{0, 7}
}
func (m *StructuredQuery_Projection) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_StructuredQuery_Projection.Unmarshal(m, b)
}
func (m *StructuredQuery_Projection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_StructuredQuery_Projection.Marshal(b, m, deterministic)
}
func (dst *StructuredQuery_Projection) XXX_Merge(src proto.Message) {
	xxx_messageInfo_StructuredQuery_Projection.Merge(dst, src)
}
func (m *StructuredQuery_Projection) XXX_Size() int {
	return xxx_messageInfo_StructuredQuery_Projection.Size(m)
}
func (m *StructuredQuery_Projection) XXX_DiscardUnknown() {
	xxx_messageInfo_StructuredQuery_Projection.DiscardUnknown(m)
}

var xxx_messageInfo_StructuredQuery_Projection proto.InternalMessageInfo

func (m *StructuredQuery_Projection) GetFields() []*StructuredQuery_FieldReference {
	if m != nil {
		return m.Fields
	}
	return nil
}

// A position in a query result set.
type Cursor struct {
	// The values that represent a position, in the order they appear in
	// the order by clause of a query.
	//
	// Can contain fewer values than specified in the order by clause.
	Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	// If the position is just before or just after the given values, relative
	// to the sort order defined by the query.
	Before               bool     `protobuf:"varint,2,opt,name=before,proto3" json:"before,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Cursor) Reset()         { *m = Cursor{} }
func (m *Cursor) String() string { return proto.CompactTextString(m) }
func (*Cursor) ProtoMessage()    {}
func (*Cursor) Descriptor() ([]byte, []int) {
	return fileDescriptor_query_036c8177d6854155, []int{1}
}
func (m *Cursor) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cursor.Unmarshal(m, b)
}
func (m *Cursor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cursor.Marshal(b, m, deterministic)
}
func (dst *Cursor) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cursor.Merge(dst, src)
}
func (m *Cursor) XXX_Size() int {
	return xxx_messageInfo_Cursor.Size(m)
}
func (m *Cursor) XXX_DiscardUnknown() {
	xxx_messageInfo_Cursor.DiscardUnknown(m)
}

var xxx_messageInfo_Cursor proto.InternalMessageInfo

func (m *Cursor) GetValues() []*Value {
	if m != nil {
		return m.Values
	}
	return nil
}

func (m *Cursor) GetBefore() bool {
	if m != nil {
		return m.Before
	}
	return false
}

func init() {
	proto.RegisterType((*StructuredQuery)(nil), "google.firestore.v1beta1.StructuredQuery")
	proto.RegisterType((*StructuredQuery_CollectionSelector)(nil), "google.firestore.v1beta1.StructuredQuery.CollectionSelector")
	proto.RegisterType((*StructuredQuery_Filter)(nil), "google.firestore.v1beta1.StructuredQuery.Filter")
	proto.RegisterType((*StructuredQuery_CompositeFilter)(nil), "google.firestore.v1beta1.StructuredQuery.CompositeFilter")
	proto.RegisterType((*StructuredQuery_FieldFilter)(nil), "google.firestore.v1beta1.StructuredQuery.FieldFilter")
	proto.RegisterType((*StructuredQuery_UnaryFilter)(nil), "google.firestore.v1beta1.StructuredQuery.UnaryFilter")
	proto.RegisterType((*StructuredQuery_Order)(nil), "google.firestore.v1beta1.StructuredQuery.Order")
	proto.RegisterType((*StructuredQuery_FieldReference)(nil), "google.firestore.v1beta1.StructuredQuery.FieldReference")
	proto.RegisterType((*StructuredQuery_Projection)(nil), "google.firestore.v1beta1.StructuredQuery.Projection")
	proto.RegisterType((*Cursor)(nil), "google.firestore.v1beta1.Cursor")
	proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_Direction", StructuredQuery_Direction_name, StructuredQuery_Direction_value)
	proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_CompositeFilter_Operator", StructuredQuery_CompositeFilter_Operator_name, StructuredQuery_CompositeFilter_Operator_value)
	proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_FieldFilter_Operator", StructuredQuery_FieldFilter_Operator_name, StructuredQuery_FieldFilter_Operator_value)
	proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_UnaryFilter_Operator", StructuredQuery_UnaryFilter_Operator_name, StructuredQuery_UnaryFilter_Operator_value)
}

func init() {
	proto.RegisterFile("google/firestore/v1beta1/query.proto", fileDescriptor_query_036c8177d6854155)
}

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