github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/plugins/shared/hclspec/hcl_spec.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto
     3  
     4  package hclspec
     5  
     6  /*
     7  Spec allows exposing the specification for an HCL body, allowing for parsing and
     8  validation.
     9  
    10  Certain expressions within a specification may use the following functions.
    11  The documentation for each spec type above specifies where functions may
    12  be used.
    13  
    14  `abs(number)` returns the absolute (positive) value of the given number.
    15  `coalesce(vals...)` returns the first non-null value given.
    16  `concat(lists...)` concatenates together all of the given lists to produce a new list.
    17  `hasindex(val, idx)` returns true if the expression `val[idx]` could succeed.
    18  `int(number)` returns the integer portion of the given number, rounding towards zero.
    19  `jsondecode(str)` interprets the given string as JSON and returns the resulting data structure.
    20  `jsonencode(val)` returns a JSON-serialized version of the given value.
    21  `length(collection)` returns the number of elements in the given collection (list, set, map, object, or tuple).
    22  `lower(string)` returns the given string with all uppercase letters converted to lowercase.
    23  `max(numbers...)` returns the greatest of the given numbers.
    24  `min(numbers...)` returns the smallest of the given numbers.
    25  `reverse(string)` returns the given string with all of the characters in reverse order.
    26  `strlen(string)` returns the number of characters in the given string.
    27  `substr(string, offset, length)` returns the requested substring of the given string.
    28  `upper(string)` returns the given string with all lowercase letters converted to uppercase.
    29  
    30  ## Type Expressions
    31  
    32  Type expressions are used to describe the expected type of an attribute, as
    33  an additional validation constraint.
    34  
    35  A type expression uses primitive type names and compound type constructors.
    36  A type constructor builds a new type based on one or more type expression
    37  arguments.
    38  
    39  The following type names and type constructors are supported:
    40  
    41  `any` is a wildcard that accepts a value of any type. (In HCL terms, this
    42  is the _dynamic pseudo-type_.)
    43  `string` is a Unicode string.
    44  `number` is an arbitrary-precision floating point number.
    45  `bool` is a boolean value (`true` or `false`)
    46  `list(element_type)` constructs a list type with the given element type
    47  `set(element_type)` constructs a set type with the given element type
    48  `map(element_type)` constructs a map type with the given element type
    49  `object({name1 = element_type, name2 = element_type, ...})` constructs
    50  an object type with the given attribute types.
    51  `tuple([element_type, element_type, ...])` constructs a tuple type with
    52  the given element types. This can be used, for example, to require an
    53  array with a particular number of elements, or with elements of different
    54  types.
    55  
    56  `null` is a valid value of any type, and not a type itself.
    57  */
    58  
    59  import proto "github.com/golang/protobuf/proto"
    60  import fmt "fmt"
    61  import math "math"
    62  
    63  // Reference imports to suppress errors if they are not otherwise used.
    64  var _ = proto.Marshal
    65  var _ = fmt.Errorf
    66  var _ = math.Inf
    67  
    68  // This is a compile-time assertion to ensure that this generated file
    69  // is compatible with the proto package it is being compiled against.
    70  // A compilation error at this line likely means your copy of the
    71  // proto package needs to be updated.
    72  const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
    73  
    74  // Spec defines the available specification types.
    75  type Spec struct {
    76  	// Types that are valid to be assigned to Block:
    77  	//	*Spec_Object
    78  	//	*Spec_Array
    79  	//	*Spec_Attr
    80  	//	*Spec_BlockValue
    81  	//	*Spec_BlockList
    82  	//	*Spec_BlockSet
    83  	//	*Spec_BlockMap
    84  	//	*Spec_Default
    85  	//	*Spec_Literal
    86  	Block                isSpec_Block `protobuf_oneof:"block"`
    87  	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
    88  	XXX_unrecognized     []byte       `json:"-"`
    89  	XXX_sizecache        int32        `json:"-"`
    90  }
    91  
    92  func (m *Spec) Reset()         { *m = Spec{} }
    93  func (m *Spec) String() string { return proto.CompactTextString(m) }
    94  func (*Spec) ProtoMessage()    {}
    95  func (*Spec) Descriptor() ([]byte, []int) {
    96  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{0}
    97  }
    98  func (m *Spec) XXX_Unmarshal(b []byte) error {
    99  	return xxx_messageInfo_Spec.Unmarshal(m, b)
   100  }
   101  func (m *Spec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   102  	return xxx_messageInfo_Spec.Marshal(b, m, deterministic)
   103  }
   104  func (dst *Spec) XXX_Merge(src proto.Message) {
   105  	xxx_messageInfo_Spec.Merge(dst, src)
   106  }
   107  func (m *Spec) XXX_Size() int {
   108  	return xxx_messageInfo_Spec.Size(m)
   109  }
   110  func (m *Spec) XXX_DiscardUnknown() {
   111  	xxx_messageInfo_Spec.DiscardUnknown(m)
   112  }
   113  
   114  var xxx_messageInfo_Spec proto.InternalMessageInfo
   115  
   116  type isSpec_Block interface {
   117  	isSpec_Block()
   118  }
   119  
   120  type Spec_Object struct {
   121  	Object *Object `protobuf:"bytes,1,opt,name=object,proto3,oneof"`
   122  }
   123  
   124  type Spec_Array struct {
   125  	Array *Array `protobuf:"bytes,2,opt,name=array,proto3,oneof"`
   126  }
   127  
   128  type Spec_Attr struct {
   129  	Attr *Attr `protobuf:"bytes,3,opt,name=Attr,proto3,oneof"`
   130  }
   131  
   132  type Spec_BlockValue struct {
   133  	BlockValue *Block `protobuf:"bytes,4,opt,name=block_value,json=blockValue,proto3,oneof"`
   134  }
   135  
   136  type Spec_BlockList struct {
   137  	BlockList *BlockList `protobuf:"bytes,5,opt,name=block_list,json=blockList,proto3,oneof"`
   138  }
   139  
   140  type Spec_BlockSet struct {
   141  	BlockSet *BlockSet `protobuf:"bytes,6,opt,name=block_set,json=blockSet,proto3,oneof"`
   142  }
   143  
   144  type Spec_BlockMap struct {
   145  	BlockMap *BlockMap `protobuf:"bytes,7,opt,name=block_map,json=blockMap,proto3,oneof"`
   146  }
   147  
   148  type Spec_Default struct {
   149  	Default *Default `protobuf:"bytes,8,opt,name=default,proto3,oneof"`
   150  }
   151  
   152  type Spec_Literal struct {
   153  	Literal *Literal `protobuf:"bytes,9,opt,name=literal,proto3,oneof"`
   154  }
   155  
   156  func (*Spec_Object) isSpec_Block() {}
   157  
   158  func (*Spec_Array) isSpec_Block() {}
   159  
   160  func (*Spec_Attr) isSpec_Block() {}
   161  
   162  func (*Spec_BlockValue) isSpec_Block() {}
   163  
   164  func (*Spec_BlockList) isSpec_Block() {}
   165  
   166  func (*Spec_BlockSet) isSpec_Block() {}
   167  
   168  func (*Spec_BlockMap) isSpec_Block() {}
   169  
   170  func (*Spec_Default) isSpec_Block() {}
   171  
   172  func (*Spec_Literal) isSpec_Block() {}
   173  
   174  func (m *Spec) GetBlock() isSpec_Block {
   175  	if m != nil {
   176  		return m.Block
   177  	}
   178  	return nil
   179  }
   180  
   181  func (m *Spec) GetObject() *Object {
   182  	if x, ok := m.GetBlock().(*Spec_Object); ok {
   183  		return x.Object
   184  	}
   185  	return nil
   186  }
   187  
   188  func (m *Spec) GetArray() *Array {
   189  	if x, ok := m.GetBlock().(*Spec_Array); ok {
   190  		return x.Array
   191  	}
   192  	return nil
   193  }
   194  
   195  func (m *Spec) GetAttr() *Attr {
   196  	if x, ok := m.GetBlock().(*Spec_Attr); ok {
   197  		return x.Attr
   198  	}
   199  	return nil
   200  }
   201  
   202  func (m *Spec) GetBlockValue() *Block {
   203  	if x, ok := m.GetBlock().(*Spec_BlockValue); ok {
   204  		return x.BlockValue
   205  	}
   206  	return nil
   207  }
   208  
   209  func (m *Spec) GetBlockList() *BlockList {
   210  	if x, ok := m.GetBlock().(*Spec_BlockList); ok {
   211  		return x.BlockList
   212  	}
   213  	return nil
   214  }
   215  
   216  func (m *Spec) GetBlockSet() *BlockSet {
   217  	if x, ok := m.GetBlock().(*Spec_BlockSet); ok {
   218  		return x.BlockSet
   219  	}
   220  	return nil
   221  }
   222  
   223  func (m *Spec) GetBlockMap() *BlockMap {
   224  	if x, ok := m.GetBlock().(*Spec_BlockMap); ok {
   225  		return x.BlockMap
   226  	}
   227  	return nil
   228  }
   229  
   230  func (m *Spec) GetDefault() *Default {
   231  	if x, ok := m.GetBlock().(*Spec_Default); ok {
   232  		return x.Default
   233  	}
   234  	return nil
   235  }
   236  
   237  func (m *Spec) GetLiteral() *Literal {
   238  	if x, ok := m.GetBlock().(*Spec_Literal); ok {
   239  		return x.Literal
   240  	}
   241  	return nil
   242  }
   243  
   244  // XXX_OneofFuncs is for the internal use of the proto package.
   245  func (*Spec) 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{}) {
   246  	return _Spec_OneofMarshaler, _Spec_OneofUnmarshaler, _Spec_OneofSizer, []interface{}{
   247  		(*Spec_Object)(nil),
   248  		(*Spec_Array)(nil),
   249  		(*Spec_Attr)(nil),
   250  		(*Spec_BlockValue)(nil),
   251  		(*Spec_BlockList)(nil),
   252  		(*Spec_BlockSet)(nil),
   253  		(*Spec_BlockMap)(nil),
   254  		(*Spec_Default)(nil),
   255  		(*Spec_Literal)(nil),
   256  	}
   257  }
   258  
   259  func _Spec_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   260  	m := msg.(*Spec)
   261  	// block
   262  	switch x := m.Block.(type) {
   263  	case *Spec_Object:
   264  		b.EncodeVarint(1<<3 | proto.WireBytes)
   265  		if err := b.EncodeMessage(x.Object); err != nil {
   266  			return err
   267  		}
   268  	case *Spec_Array:
   269  		b.EncodeVarint(2<<3 | proto.WireBytes)
   270  		if err := b.EncodeMessage(x.Array); err != nil {
   271  			return err
   272  		}
   273  	case *Spec_Attr:
   274  		b.EncodeVarint(3<<3 | proto.WireBytes)
   275  		if err := b.EncodeMessage(x.Attr); err != nil {
   276  			return err
   277  		}
   278  	case *Spec_BlockValue:
   279  		b.EncodeVarint(4<<3 | proto.WireBytes)
   280  		if err := b.EncodeMessage(x.BlockValue); err != nil {
   281  			return err
   282  		}
   283  	case *Spec_BlockList:
   284  		b.EncodeVarint(5<<3 | proto.WireBytes)
   285  		if err := b.EncodeMessage(x.BlockList); err != nil {
   286  			return err
   287  		}
   288  	case *Spec_BlockSet:
   289  		b.EncodeVarint(6<<3 | proto.WireBytes)
   290  		if err := b.EncodeMessage(x.BlockSet); err != nil {
   291  			return err
   292  		}
   293  	case *Spec_BlockMap:
   294  		b.EncodeVarint(7<<3 | proto.WireBytes)
   295  		if err := b.EncodeMessage(x.BlockMap); err != nil {
   296  			return err
   297  		}
   298  	case *Spec_Default:
   299  		b.EncodeVarint(8<<3 | proto.WireBytes)
   300  		if err := b.EncodeMessage(x.Default); err != nil {
   301  			return err
   302  		}
   303  	case *Spec_Literal:
   304  		b.EncodeVarint(9<<3 | proto.WireBytes)
   305  		if err := b.EncodeMessage(x.Literal); err != nil {
   306  			return err
   307  		}
   308  	case nil:
   309  	default:
   310  		return fmt.Errorf("Spec.Block has unexpected type %T", x)
   311  	}
   312  	return nil
   313  }
   314  
   315  func _Spec_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   316  	m := msg.(*Spec)
   317  	switch tag {
   318  	case 1: // block.object
   319  		if wire != proto.WireBytes {
   320  			return true, proto.ErrInternalBadWireType
   321  		}
   322  		msg := new(Object)
   323  		err := b.DecodeMessage(msg)
   324  		m.Block = &Spec_Object{msg}
   325  		return true, err
   326  	case 2: // block.array
   327  		if wire != proto.WireBytes {
   328  			return true, proto.ErrInternalBadWireType
   329  		}
   330  		msg := new(Array)
   331  		err := b.DecodeMessage(msg)
   332  		m.Block = &Spec_Array{msg}
   333  		return true, err
   334  	case 3: // block.Attr
   335  		if wire != proto.WireBytes {
   336  			return true, proto.ErrInternalBadWireType
   337  		}
   338  		msg := new(Attr)
   339  		err := b.DecodeMessage(msg)
   340  		m.Block = &Spec_Attr{msg}
   341  		return true, err
   342  	case 4: // block.block_value
   343  		if wire != proto.WireBytes {
   344  			return true, proto.ErrInternalBadWireType
   345  		}
   346  		msg := new(Block)
   347  		err := b.DecodeMessage(msg)
   348  		m.Block = &Spec_BlockValue{msg}
   349  		return true, err
   350  	case 5: // block.block_list
   351  		if wire != proto.WireBytes {
   352  			return true, proto.ErrInternalBadWireType
   353  		}
   354  		msg := new(BlockList)
   355  		err := b.DecodeMessage(msg)
   356  		m.Block = &Spec_BlockList{msg}
   357  		return true, err
   358  	case 6: // block.block_set
   359  		if wire != proto.WireBytes {
   360  			return true, proto.ErrInternalBadWireType
   361  		}
   362  		msg := new(BlockSet)
   363  		err := b.DecodeMessage(msg)
   364  		m.Block = &Spec_BlockSet{msg}
   365  		return true, err
   366  	case 7: // block.block_map
   367  		if wire != proto.WireBytes {
   368  			return true, proto.ErrInternalBadWireType
   369  		}
   370  		msg := new(BlockMap)
   371  		err := b.DecodeMessage(msg)
   372  		m.Block = &Spec_BlockMap{msg}
   373  		return true, err
   374  	case 8: // block.default
   375  		if wire != proto.WireBytes {
   376  			return true, proto.ErrInternalBadWireType
   377  		}
   378  		msg := new(Default)
   379  		err := b.DecodeMessage(msg)
   380  		m.Block = &Spec_Default{msg}
   381  		return true, err
   382  	case 9: // block.literal
   383  		if wire != proto.WireBytes {
   384  			return true, proto.ErrInternalBadWireType
   385  		}
   386  		msg := new(Literal)
   387  		err := b.DecodeMessage(msg)
   388  		m.Block = &Spec_Literal{msg}
   389  		return true, err
   390  	default:
   391  		return false, nil
   392  	}
   393  }
   394  
   395  func _Spec_OneofSizer(msg proto.Message) (n int) {
   396  	m := msg.(*Spec)
   397  	// block
   398  	switch x := m.Block.(type) {
   399  	case *Spec_Object:
   400  		s := proto.Size(x.Object)
   401  		n += 1 // tag and wire
   402  		n += proto.SizeVarint(uint64(s))
   403  		n += s
   404  	case *Spec_Array:
   405  		s := proto.Size(x.Array)
   406  		n += 1 // tag and wire
   407  		n += proto.SizeVarint(uint64(s))
   408  		n += s
   409  	case *Spec_Attr:
   410  		s := proto.Size(x.Attr)
   411  		n += 1 // tag and wire
   412  		n += proto.SizeVarint(uint64(s))
   413  		n += s
   414  	case *Spec_BlockValue:
   415  		s := proto.Size(x.BlockValue)
   416  		n += 1 // tag and wire
   417  		n += proto.SizeVarint(uint64(s))
   418  		n += s
   419  	case *Spec_BlockList:
   420  		s := proto.Size(x.BlockList)
   421  		n += 1 // tag and wire
   422  		n += proto.SizeVarint(uint64(s))
   423  		n += s
   424  	case *Spec_BlockSet:
   425  		s := proto.Size(x.BlockSet)
   426  		n += 1 // tag and wire
   427  		n += proto.SizeVarint(uint64(s))
   428  		n += s
   429  	case *Spec_BlockMap:
   430  		s := proto.Size(x.BlockMap)
   431  		n += 1 // tag and wire
   432  		n += proto.SizeVarint(uint64(s))
   433  		n += s
   434  	case *Spec_Default:
   435  		s := proto.Size(x.Default)
   436  		n += 1 // tag and wire
   437  		n += proto.SizeVarint(uint64(s))
   438  		n += s
   439  	case *Spec_Literal:
   440  		s := proto.Size(x.Literal)
   441  		n += 1 // tag and wire
   442  		n += proto.SizeVarint(uint64(s))
   443  		n += s
   444  	case nil:
   445  	default:
   446  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   447  	}
   448  	return n
   449  }
   450  
   451  // Attr spec type reads the value of an attribute in the current body
   452  // and returns that value as its result. It also creates validation constraints
   453  // for the given attribute name and its value.
   454  //
   455  // ```hcl
   456  // Attr {
   457  // name     = "document_root"
   458  // type     = string
   459  // required = true
   460  // }
   461  // ```
   462  //
   463  // `Attr` spec blocks accept the following arguments:
   464  //
   465  // `name` (required) - The attribute name to expect within the HCL input file.
   466  // This may be omitted when a default name selector is created by a parent
   467  // `Object` spec, if the input attribute name should match the output JSON
   468  // object property name.
   469  //
   470  // `type` (optional) - A [type expression](#type-expressions) that the given
   471  // attribute value must conform to. If this argument is set, `hcldec` will
   472  // automatically convert the given input value to this type or produce an
   473  // error if that is not possible.
   474  //
   475  // `required` (optional) - If set to `true`, `hcldec` will produce an error
   476  // if a value is not provided for the source attribute.
   477  //
   478  // `Attr` is a leaf spec type, so no nested spec blocks are permitted.
   479  type Attr struct {
   480  	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   481  	Type                 string   `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
   482  	Required             bool     `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"`
   483  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   484  	XXX_unrecognized     []byte   `json:"-"`
   485  	XXX_sizecache        int32    `json:"-"`
   486  }
   487  
   488  func (m *Attr) Reset()         { *m = Attr{} }
   489  func (m *Attr) String() string { return proto.CompactTextString(m) }
   490  func (*Attr) ProtoMessage()    {}
   491  func (*Attr) Descriptor() ([]byte, []int) {
   492  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{1}
   493  }
   494  func (m *Attr) XXX_Unmarshal(b []byte) error {
   495  	return xxx_messageInfo_Attr.Unmarshal(m, b)
   496  }
   497  func (m *Attr) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   498  	return xxx_messageInfo_Attr.Marshal(b, m, deterministic)
   499  }
   500  func (dst *Attr) XXX_Merge(src proto.Message) {
   501  	xxx_messageInfo_Attr.Merge(dst, src)
   502  }
   503  func (m *Attr) XXX_Size() int {
   504  	return xxx_messageInfo_Attr.Size(m)
   505  }
   506  func (m *Attr) XXX_DiscardUnknown() {
   507  	xxx_messageInfo_Attr.DiscardUnknown(m)
   508  }
   509  
   510  var xxx_messageInfo_Attr proto.InternalMessageInfo
   511  
   512  func (m *Attr) GetName() string {
   513  	if m != nil {
   514  		return m.Name
   515  	}
   516  	return ""
   517  }
   518  
   519  func (m *Attr) GetType() string {
   520  	if m != nil {
   521  		return m.Type
   522  	}
   523  	return ""
   524  }
   525  
   526  func (m *Attr) GetRequired() bool {
   527  	if m != nil {
   528  		return m.Required
   529  	}
   530  	return false
   531  }
   532  
   533  // Block spec type applies one nested spec block to the contents of a
   534  // block within the current body and returns the result of that spec. It also
   535  // creates validation constraints for the given block type name.
   536  //
   537  // ```hcl
   538  // Block {
   539  // name = "logging"
   540  //
   541  // Object {
   542  // Attr "level" {
   543  // type = string
   544  // }
   545  // Attr "file" {
   546  // type = string
   547  // }
   548  // }
   549  // }
   550  // ```
   551  //
   552  // `Block` spec blocks accept the following arguments:
   553  //
   554  // `name` (required) - The block type name to expect within the HCL
   555  // input file. This may be omitted when a default name selector is created
   556  // by a parent `Object` spec, if the input block type name should match the
   557  // output JSON object property name.
   558  //
   559  // `required` (optional) - If set to `true`, `hcldec` will produce an error
   560  // if a block of the specified type is not present in the current body.
   561  //
   562  // `Block` creates a validation constraint that there must be zero or one blocks
   563  // of the given type name, or exactly one if `required` is set.
   564  //
   565  // `Block` expects a single nested spec block, which is applied to the body of
   566  // the block of the given type when it is present.
   567  //
   568  type Block struct {
   569  	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   570  	Required             bool     `protobuf:"varint,2,opt,name=required,proto3" json:"required,omitempty"`
   571  	Nested               *Spec    `protobuf:"bytes,3,opt,name=nested,proto3" json:"nested,omitempty"`
   572  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   573  	XXX_unrecognized     []byte   `json:"-"`
   574  	XXX_sizecache        int32    `json:"-"`
   575  }
   576  
   577  func (m *Block) Reset()         { *m = Block{} }
   578  func (m *Block) String() string { return proto.CompactTextString(m) }
   579  func (*Block) ProtoMessage()    {}
   580  func (*Block) Descriptor() ([]byte, []int) {
   581  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{2}
   582  }
   583  func (m *Block) XXX_Unmarshal(b []byte) error {
   584  	return xxx_messageInfo_Block.Unmarshal(m, b)
   585  }
   586  func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   587  	return xxx_messageInfo_Block.Marshal(b, m, deterministic)
   588  }
   589  func (dst *Block) XXX_Merge(src proto.Message) {
   590  	xxx_messageInfo_Block.Merge(dst, src)
   591  }
   592  func (m *Block) XXX_Size() int {
   593  	return xxx_messageInfo_Block.Size(m)
   594  }
   595  func (m *Block) XXX_DiscardUnknown() {
   596  	xxx_messageInfo_Block.DiscardUnknown(m)
   597  }
   598  
   599  var xxx_messageInfo_Block proto.InternalMessageInfo
   600  
   601  func (m *Block) GetName() string {
   602  	if m != nil {
   603  		return m.Name
   604  	}
   605  	return ""
   606  }
   607  
   608  func (m *Block) GetRequired() bool {
   609  	if m != nil {
   610  		return m.Required
   611  	}
   612  	return false
   613  }
   614  
   615  func (m *Block) GetNested() *Spec {
   616  	if m != nil {
   617  		return m.Nested
   618  	}
   619  	return nil
   620  }
   621  
   622  // BlockList spec type is similar to `Block`, but it accepts zero or
   623  // more blocks of a specified type rather than requiring zero or one. The
   624  // result is a JSON array with one entry per block of the given type.
   625  //
   626  // ```hcl
   627  // BlockList {
   628  // name = "log_file"
   629  //
   630  // Object {
   631  // Attr "level" {
   632  // type = string
   633  // }
   634  // Attr "filename" {
   635  // type     = string
   636  // required = true
   637  // }
   638  // }
   639  // }
   640  // ```
   641  //
   642  // `BlockList` spec blocks accept the following arguments:
   643  //
   644  // `name` (required) - The block type name to expect within the HCL
   645  // input file. This may be omitted when a default name selector is created
   646  // by a parent `Object` spec, if the input block type name should match the
   647  // output JSON object property name.
   648  //
   649  // `min_items` (optional) - If set to a number greater than zero, `hcldec` will
   650  // produce an error if fewer than the given number of blocks are present.
   651  //
   652  // `max_items` (optional) - If set to a number greater than zero, `hcldec` will
   653  // produce an error if more than the given number of blocks are present. This
   654  // attribute must be greater than or equal to `min_items` if both are set.
   655  //
   656  // `Block` creates a validation constraint on the number of blocks of the given
   657  // type that must be present.
   658  //
   659  // `Block` expects a single nested spec block, which is applied to the body of
   660  // each matching block to produce the resulting list items.
   661  //
   662  type BlockList struct {
   663  	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   664  	MinItems             uint64   `protobuf:"varint,2,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"`
   665  	MaxItems             uint64   `protobuf:"varint,3,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"`
   666  	Nested               *Spec    `protobuf:"bytes,4,opt,name=nested,proto3" json:"nested,omitempty"`
   667  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   668  	XXX_unrecognized     []byte   `json:"-"`
   669  	XXX_sizecache        int32    `json:"-"`
   670  }
   671  
   672  func (m *BlockList) Reset()         { *m = BlockList{} }
   673  func (m *BlockList) String() string { return proto.CompactTextString(m) }
   674  func (*BlockList) ProtoMessage()    {}
   675  func (*BlockList) Descriptor() ([]byte, []int) {
   676  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{3}
   677  }
   678  func (m *BlockList) XXX_Unmarshal(b []byte) error {
   679  	return xxx_messageInfo_BlockList.Unmarshal(m, b)
   680  }
   681  func (m *BlockList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   682  	return xxx_messageInfo_BlockList.Marshal(b, m, deterministic)
   683  }
   684  func (dst *BlockList) XXX_Merge(src proto.Message) {
   685  	xxx_messageInfo_BlockList.Merge(dst, src)
   686  }
   687  func (m *BlockList) XXX_Size() int {
   688  	return xxx_messageInfo_BlockList.Size(m)
   689  }
   690  func (m *BlockList) XXX_DiscardUnknown() {
   691  	xxx_messageInfo_BlockList.DiscardUnknown(m)
   692  }
   693  
   694  var xxx_messageInfo_BlockList proto.InternalMessageInfo
   695  
   696  func (m *BlockList) GetName() string {
   697  	if m != nil {
   698  		return m.Name
   699  	}
   700  	return ""
   701  }
   702  
   703  func (m *BlockList) GetMinItems() uint64 {
   704  	if m != nil {
   705  		return m.MinItems
   706  	}
   707  	return 0
   708  }
   709  
   710  func (m *BlockList) GetMaxItems() uint64 {
   711  	if m != nil {
   712  		return m.MaxItems
   713  	}
   714  	return 0
   715  }
   716  
   717  func (m *BlockList) GetNested() *Spec {
   718  	if m != nil {
   719  		return m.Nested
   720  	}
   721  	return nil
   722  }
   723  
   724  // BlockSet spec type behaves the same as BlockList except that
   725  // the result is in no specific order and any duplicate items are removed.
   726  //
   727  // ```hcl
   728  // BlockSet {
   729  // name = "log_file"
   730  //
   731  // Object {
   732  // Attr "level" {
   733  // type = string
   734  // }
   735  // Attr "filename" {
   736  // type     = string
   737  // required = true
   738  // }
   739  // }
   740  // }
   741  // ```
   742  //
   743  // The contents of `BlockSet` are the same as for `BlockList`.
   744  //
   745  type BlockSet struct {
   746  	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   747  	MinItems             uint64   `protobuf:"varint,2,opt,name=min_items,json=minItems,proto3" json:"min_items,omitempty"`
   748  	MaxItems             uint64   `protobuf:"varint,3,opt,name=max_items,json=maxItems,proto3" json:"max_items,omitempty"`
   749  	Nested               *Spec    `protobuf:"bytes,4,opt,name=nested,proto3" json:"nested,omitempty"`
   750  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   751  	XXX_unrecognized     []byte   `json:"-"`
   752  	XXX_sizecache        int32    `json:"-"`
   753  }
   754  
   755  func (m *BlockSet) Reset()         { *m = BlockSet{} }
   756  func (m *BlockSet) String() string { return proto.CompactTextString(m) }
   757  func (*BlockSet) ProtoMessage()    {}
   758  func (*BlockSet) Descriptor() ([]byte, []int) {
   759  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{4}
   760  }
   761  func (m *BlockSet) XXX_Unmarshal(b []byte) error {
   762  	return xxx_messageInfo_BlockSet.Unmarshal(m, b)
   763  }
   764  func (m *BlockSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   765  	return xxx_messageInfo_BlockSet.Marshal(b, m, deterministic)
   766  }
   767  func (dst *BlockSet) XXX_Merge(src proto.Message) {
   768  	xxx_messageInfo_BlockSet.Merge(dst, src)
   769  }
   770  func (m *BlockSet) XXX_Size() int {
   771  	return xxx_messageInfo_BlockSet.Size(m)
   772  }
   773  func (m *BlockSet) XXX_DiscardUnknown() {
   774  	xxx_messageInfo_BlockSet.DiscardUnknown(m)
   775  }
   776  
   777  var xxx_messageInfo_BlockSet proto.InternalMessageInfo
   778  
   779  func (m *BlockSet) GetName() string {
   780  	if m != nil {
   781  		return m.Name
   782  	}
   783  	return ""
   784  }
   785  
   786  func (m *BlockSet) GetMinItems() uint64 {
   787  	if m != nil {
   788  		return m.MinItems
   789  	}
   790  	return 0
   791  }
   792  
   793  func (m *BlockSet) GetMaxItems() uint64 {
   794  	if m != nil {
   795  		return m.MaxItems
   796  	}
   797  	return 0
   798  }
   799  
   800  func (m *BlockSet) GetNested() *Spec {
   801  	if m != nil {
   802  		return m.Nested
   803  	}
   804  	return nil
   805  }
   806  
   807  // BlockMap spec type is similar to `Block`, but it accepts zero or
   808  // more blocks of a specified type rather than requiring zero or one. The
   809  // result is a JSON object, or possibly multiple nested JSON objects, whose
   810  // properties are derived from the labels set on each matching block.
   811  //
   812  // ```hcl
   813  // BlockMap {
   814  // name = "log_file"
   815  // labels = ["filename"]
   816  //
   817  // Object {
   818  // Attr "level" {
   819  // type     = string
   820  // required = true
   821  // }
   822  // }
   823  // }
   824  // ```
   825  //
   826  // `BlockMap` spec blocks accept the following arguments:
   827  //
   828  // `name` (required) - The block type name to expect within the HCL
   829  // input file. This may be omitted when a default name selector is created
   830  // by a parent `Object` spec, if the input block type name should match the
   831  // output JSON object property name.
   832  //
   833  // `labels` (required) - A list of user-oriented block label names. Each entry
   834  // in this list creates one level of object within the output value, and
   835  // requires one additional block header label on any child block of this type.
   836  // Block header labels are the quoted strings that appear after the block type
   837  // name but before the opening `{`.
   838  //
   839  // `Block` creates a validation constraint on the number of labels that blocks
   840  // of the given type must have.
   841  //
   842  // `Block` expects a single nested spec block, which is applied to the body of
   843  // each matching block to produce the resulting map items.
   844  //
   845  type BlockMap struct {
   846  	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   847  	Labels               []string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty"`
   848  	Nested               *Spec    `protobuf:"bytes,3,opt,name=nested,proto3" json:"nested,omitempty"`
   849  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   850  	XXX_unrecognized     []byte   `json:"-"`
   851  	XXX_sizecache        int32    `json:"-"`
   852  }
   853  
   854  func (m *BlockMap) Reset()         { *m = BlockMap{} }
   855  func (m *BlockMap) String() string { return proto.CompactTextString(m) }
   856  func (*BlockMap) ProtoMessage()    {}
   857  func (*BlockMap) Descriptor() ([]byte, []int) {
   858  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{5}
   859  }
   860  func (m *BlockMap) XXX_Unmarshal(b []byte) error {
   861  	return xxx_messageInfo_BlockMap.Unmarshal(m, b)
   862  }
   863  func (m *BlockMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   864  	return xxx_messageInfo_BlockMap.Marshal(b, m, deterministic)
   865  }
   866  func (dst *BlockMap) XXX_Merge(src proto.Message) {
   867  	xxx_messageInfo_BlockMap.Merge(dst, src)
   868  }
   869  func (m *BlockMap) XXX_Size() int {
   870  	return xxx_messageInfo_BlockMap.Size(m)
   871  }
   872  func (m *BlockMap) XXX_DiscardUnknown() {
   873  	xxx_messageInfo_BlockMap.DiscardUnknown(m)
   874  }
   875  
   876  var xxx_messageInfo_BlockMap proto.InternalMessageInfo
   877  
   878  func (m *BlockMap) GetName() string {
   879  	if m != nil {
   880  		return m.Name
   881  	}
   882  	return ""
   883  }
   884  
   885  func (m *BlockMap) GetLabels() []string {
   886  	if m != nil {
   887  		return m.Labels
   888  	}
   889  	return nil
   890  }
   891  
   892  func (m *BlockMap) GetNested() *Spec {
   893  	if m != nil {
   894  		return m.Nested
   895  	}
   896  	return nil
   897  }
   898  
   899  // Literal spec type returns a given literal value, and creates no
   900  // validation constraints. It is most commonly used with the `Default` spec
   901  // type to create a fallback value, but can also be used e.g. to fill out
   902  // required properties in an `Object` spec that do not correspond to any
   903  // construct in the input configuration.
   904  //
   905  // ```hcl
   906  // Literal {
   907  // value = "hello world"
   908  // }
   909  // ```
   910  //
   911  // `Literal` spec blocks accept the following argument:
   912  //
   913  // `value` (required) - The value to return. This attribute may be an expression
   914  // that uses [functions](#spec-definition-functions).
   915  //
   916  // `Literal` is a leaf spec type, so no nested spec blocks are permitted.
   917  type Literal struct {
   918  	Value                string   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
   919  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   920  	XXX_unrecognized     []byte   `json:"-"`
   921  	XXX_sizecache        int32    `json:"-"`
   922  }
   923  
   924  func (m *Literal) Reset()         { *m = Literal{} }
   925  func (m *Literal) String() string { return proto.CompactTextString(m) }
   926  func (*Literal) ProtoMessage()    {}
   927  func (*Literal) Descriptor() ([]byte, []int) {
   928  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{6}
   929  }
   930  func (m *Literal) XXX_Unmarshal(b []byte) error {
   931  	return xxx_messageInfo_Literal.Unmarshal(m, b)
   932  }
   933  func (m *Literal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   934  	return xxx_messageInfo_Literal.Marshal(b, m, deterministic)
   935  }
   936  func (dst *Literal) XXX_Merge(src proto.Message) {
   937  	xxx_messageInfo_Literal.Merge(dst, src)
   938  }
   939  func (m *Literal) XXX_Size() int {
   940  	return xxx_messageInfo_Literal.Size(m)
   941  }
   942  func (m *Literal) XXX_DiscardUnknown() {
   943  	xxx_messageInfo_Literal.DiscardUnknown(m)
   944  }
   945  
   946  var xxx_messageInfo_Literal proto.InternalMessageInfo
   947  
   948  func (m *Literal) GetValue() string {
   949  	if m != nil {
   950  		return m.Value
   951  	}
   952  	return ""
   953  }
   954  
   955  // Default spec type evaluates a sequence of nested specs in turn and
   956  // returns the result of the first one that produces a non-null value.
   957  // It creates no validation constraints of its own, but passes on the validation
   958  // constraints from its first nested block.
   959  //
   960  // ```hcl
   961  // Default {
   962  // Attr {
   963  // name = "private"
   964  // type = bool
   965  // }
   966  // Literal {
   967  // value = false
   968  // }
   969  // }
   970  // ```
   971  //
   972  // A `Default` spec block must have at least one nested spec block, and should
   973  // generally have at least two since otherwise the `Default` wrapper is a no-op.
   974  //
   975  // The second and any subsequent spec blocks are _fallback_ specs. These exhibit
   976  // their usual behavior but are not able to impose validation constraints on the
   977  // current body since they are not evaluated unless all prior specs produce
   978  // `null` as their result.
   979  //
   980  type Default struct {
   981  	Primary              *Spec    `protobuf:"bytes,1,opt,name=primary,proto3" json:"primary,omitempty"`
   982  	Default              *Spec    `protobuf:"bytes,2,opt,name=default,proto3" json:"default,omitempty"`
   983  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   984  	XXX_unrecognized     []byte   `json:"-"`
   985  	XXX_sizecache        int32    `json:"-"`
   986  }
   987  
   988  func (m *Default) Reset()         { *m = Default{} }
   989  func (m *Default) String() string { return proto.CompactTextString(m) }
   990  func (*Default) ProtoMessage()    {}
   991  func (*Default) Descriptor() ([]byte, []int) {
   992  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{7}
   993  }
   994  func (m *Default) XXX_Unmarshal(b []byte) error {
   995  	return xxx_messageInfo_Default.Unmarshal(m, b)
   996  }
   997  func (m *Default) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   998  	return xxx_messageInfo_Default.Marshal(b, m, deterministic)
   999  }
  1000  func (dst *Default) XXX_Merge(src proto.Message) {
  1001  	xxx_messageInfo_Default.Merge(dst, src)
  1002  }
  1003  func (m *Default) XXX_Size() int {
  1004  	return xxx_messageInfo_Default.Size(m)
  1005  }
  1006  func (m *Default) XXX_DiscardUnknown() {
  1007  	xxx_messageInfo_Default.DiscardUnknown(m)
  1008  }
  1009  
  1010  var xxx_messageInfo_Default proto.InternalMessageInfo
  1011  
  1012  func (m *Default) GetPrimary() *Spec {
  1013  	if m != nil {
  1014  		return m.Primary
  1015  	}
  1016  	return nil
  1017  }
  1018  
  1019  func (m *Default) GetDefault() *Spec {
  1020  	if m != nil {
  1021  		return m.Default
  1022  	}
  1023  	return nil
  1024  }
  1025  
  1026  // Object spec type is the most commonly used at the root of a spec file.
  1027  // Its result is a JSON object whose properties are set based on any nested
  1028  // spec blocks:
  1029  //
  1030  // ```hcl
  1031  // Object {
  1032  // Attr "name" {
  1033  // type = "string"
  1034  // }
  1035  // Block "address" {
  1036  // Object {
  1037  // Attr "street" {
  1038  // type = "string"
  1039  // }
  1040  // # ...
  1041  // }
  1042  // }
  1043  // }
  1044  // ```
  1045  //
  1046  // Nested spec blocks inside `Object` must always have an extra block label
  1047  // `"name"`, `"address"` and `"street"` in the above example) that specifies
  1048  // the name of the property that should be created in the JSON object result.
  1049  // This label also acts as a default name selector for the nested spec, allowing
  1050  // the `Attr` blocks in the above example to omit the usually-required `name`
  1051  // argument in cases where the HCL input name and JSON output name are the same.
  1052  //
  1053  // An `Object` spec block creates no validation constraints, but it passes on
  1054  // any validation constraints created by the nested specs.
  1055  type Object struct {
  1056  	Attributes           map[string]*Spec `protobuf:"bytes,1,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
  1057  	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
  1058  	XXX_unrecognized     []byte           `json:"-"`
  1059  	XXX_sizecache        int32            `json:"-"`
  1060  }
  1061  
  1062  func (m *Object) Reset()         { *m = Object{} }
  1063  func (m *Object) String() string { return proto.CompactTextString(m) }
  1064  func (*Object) ProtoMessage()    {}
  1065  func (*Object) Descriptor() ([]byte, []int) {
  1066  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{8}
  1067  }
  1068  func (m *Object) XXX_Unmarshal(b []byte) error {
  1069  	return xxx_messageInfo_Object.Unmarshal(m, b)
  1070  }
  1071  func (m *Object) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  1072  	return xxx_messageInfo_Object.Marshal(b, m, deterministic)
  1073  }
  1074  func (dst *Object) XXX_Merge(src proto.Message) {
  1075  	xxx_messageInfo_Object.Merge(dst, src)
  1076  }
  1077  func (m *Object) XXX_Size() int {
  1078  	return xxx_messageInfo_Object.Size(m)
  1079  }
  1080  func (m *Object) XXX_DiscardUnknown() {
  1081  	xxx_messageInfo_Object.DiscardUnknown(m)
  1082  }
  1083  
  1084  var xxx_messageInfo_Object proto.InternalMessageInfo
  1085  
  1086  func (m *Object) GetAttributes() map[string]*Spec {
  1087  	if m != nil {
  1088  		return m.Attributes
  1089  	}
  1090  	return nil
  1091  }
  1092  
  1093  // Array spec type produces a JSON array whose elements are set based on
  1094  // any nested spec blocks:
  1095  //
  1096  // ```hcl
  1097  // Array {
  1098  // Attr {
  1099  // name = "first_element"
  1100  // type = "string"
  1101  // }
  1102  // Attr {
  1103  // name = "second_element"
  1104  // type = "string"
  1105  // }
  1106  // }
  1107  // ```
  1108  //
  1109  // An `Array` spec block creates no validation constraints, but it passes on
  1110  // any validation constraints created by the nested specs.
  1111  type Array struct {
  1112  	Values               []*Spec  `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
  1113  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
  1114  	XXX_unrecognized     []byte   `json:"-"`
  1115  	XXX_sizecache        int32    `json:"-"`
  1116  }
  1117  
  1118  func (m *Array) Reset()         { *m = Array{} }
  1119  func (m *Array) String() string { return proto.CompactTextString(m) }
  1120  func (*Array) ProtoMessage()    {}
  1121  func (*Array) Descriptor() ([]byte, []int) {
  1122  	return fileDescriptor_hcl_spec_2b7d8262531848bd, []int{9}
  1123  }
  1124  func (m *Array) XXX_Unmarshal(b []byte) error {
  1125  	return xxx_messageInfo_Array.Unmarshal(m, b)
  1126  }
  1127  func (m *Array) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  1128  	return xxx_messageInfo_Array.Marshal(b, m, deterministic)
  1129  }
  1130  func (dst *Array) XXX_Merge(src proto.Message) {
  1131  	xxx_messageInfo_Array.Merge(dst, src)
  1132  }
  1133  func (m *Array) XXX_Size() int {
  1134  	return xxx_messageInfo_Array.Size(m)
  1135  }
  1136  func (m *Array) XXX_DiscardUnknown() {
  1137  	xxx_messageInfo_Array.DiscardUnknown(m)
  1138  }
  1139  
  1140  var xxx_messageInfo_Array proto.InternalMessageInfo
  1141  
  1142  func (m *Array) GetValues() []*Spec {
  1143  	if m != nil {
  1144  		return m.Values
  1145  	}
  1146  	return nil
  1147  }
  1148  
  1149  func init() {
  1150  	proto.RegisterType((*Spec)(nil), "hashicorp.nomad.plugins.shared.hclspec.Spec")
  1151  	proto.RegisterType((*Attr)(nil), "hashicorp.nomad.plugins.shared.hclspec.Attr")
  1152  	proto.RegisterType((*Block)(nil), "hashicorp.nomad.plugins.shared.hclspec.Block")
  1153  	proto.RegisterType((*BlockList)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockList")
  1154  	proto.RegisterType((*BlockSet)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockSet")
  1155  	proto.RegisterType((*BlockMap)(nil), "hashicorp.nomad.plugins.shared.hclspec.BlockMap")
  1156  	proto.RegisterType((*Literal)(nil), "hashicorp.nomad.plugins.shared.hclspec.Literal")
  1157  	proto.RegisterType((*Default)(nil), "hashicorp.nomad.plugins.shared.hclspec.Default")
  1158  	proto.RegisterType((*Object)(nil), "hashicorp.nomad.plugins.shared.hclspec.Object")
  1159  	proto.RegisterMapType((map[string]*Spec)(nil), "hashicorp.nomad.plugins.shared.hclspec.Object.AttributesEntry")
  1160  	proto.RegisterType((*Array)(nil), "hashicorp.nomad.plugins.shared.hclspec.Array")
  1161  }
  1162  
  1163  func init() {
  1164  	proto.RegisterFile("github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto", fileDescriptor_hcl_spec_2b7d8262531848bd)
  1165  }
  1166  
  1167  var fileDescriptor_hcl_spec_2b7d8262531848bd = []byte{
  1168  	// 612 bytes of a gzipped FileDescriptorProto
  1169  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x95, 0xcb, 0x6e, 0xd4, 0x3c,
  1170  	0x14, 0x80, 0x27, 0x33, 0xb9, 0x9e, 0x2e, 0xfe, 0x5f, 0x16, 0x42, 0x51, 0x59, 0x50, 0x65, 0x81,
  1171  	0xba, 0x80, 0x04, 0xca, 0x06, 0xb1, 0x40, 0x74, 0xd4, 0xa2, 0x00, 0xad, 0x8a, 0x5c, 0x89, 0x05,
  1172  	0x0b, 0x46, 0x4e, 0xc6, 0x74, 0x4c, 0x73, 0xc3, 0x71, 0x50, 0x47, 0x82, 0x07, 0x61, 0x03, 0x6f,
  1173  	0xc3, 0x1b, 0xf0, 0x3e, 0xc8, 0x97, 0x4c, 0x0b, 0xea, 0x62, 0x32, 0xb0, 0x60, 0x35, 0x3e, 0x3e,
  1174  	0xfa, 0xbe, 0x39, 0xb1, 0x8f, 0x6d, 0x78, 0x7a, 0xc6, 0xc4, 0xa2, 0xcb, 0xe2, 0xbc, 0x2e, 0x93,
  1175  	0x05, 0x69, 0x17, 0x2c, 0xaf, 0x79, 0x93, 0x54, 0x75, 0x49, 0xe6, 0x49, 0x53, 0x74, 0x67, 0xac,
  1176  	0x6a, 0x93, 0x76, 0x41, 0x38, 0x9d, 0x27, 0x8b, 0xbc, 0x68, 0x1b, 0x9a, 0xcb, 0xdf, 0x99, 0x1c,
  1177  	0xc4, 0x0d, 0xaf, 0x45, 0x8d, 0xee, 0xac, 0xb0, 0x58, 0x61, 0xb1, 0xc1, 0x62, 0x8d, 0xc5, 0x06,
  1178  	0x8b, 0xbe, 0x3b, 0x60, 0x9f, 0x36, 0x34, 0x47, 0x29, 0xb8, 0x75, 0xf6, 0x9e, 0xe6, 0x22, 0xb4,
  1179  	0x76, 0xac, 0xdd, 0xad, 0xbd, 0x38, 0x5e, 0xcf, 0x10, 0x9f, 0x28, 0x2a, 0x1d, 0x61, 0xc3, 0xa3,
  1180  	0x43, 0x70, 0x08, 0xe7, 0x64, 0x19, 0x8e, 0x95, 0xe8, 0xde, 0xba, 0xa2, 0x7d, 0x09, 0xa5, 0x23,
  1181  	0xac, 0x69, 0x34, 0x05, 0x7b, 0x5f, 0x08, 0x1e, 0x4e, 0x94, 0xe5, 0xee, 0xda, 0x16, 0x21, 0x78,
  1182  	0x3a, 0xc2, 0x8a, 0x45, 0xaf, 0x60, 0x2b, 0x2b, 0xea, 0xfc, 0x7c, 0xf6, 0x91, 0x14, 0x1d, 0x0d,
  1183  	0xed, 0x61, 0x05, 0x4d, 0x25, 0x9a, 0x8e, 0x30, 0x28, 0xc7, 0x6b, 0xa9, 0x40, 0x18, 0x74, 0x34,
  1184  	0x2b, 0x58, 0x2b, 0x42, 0x47, 0x09, 0x1f, 0x0c, 0x12, 0x1e, 0xb1, 0x56, 0xae, 0x56, 0x90, 0xf5,
  1185  	0x01, 0x3a, 0x01, 0x1d, 0xcc, 0x5a, 0x2a, 0x42, 0x57, 0x29, 0xef, 0x0f, 0x52, 0x9e, 0x52, 0x69,
  1186  	0xf4, 0x33, 0x33, 0xbe, 0x14, 0x96, 0xa4, 0x09, 0xbd, 0x0d, 0x84, 0xc7, 0xa4, 0x59, 0x09, 0x8f,
  1187  	0x49, 0x83, 0x5e, 0x82, 0x37, 0xa7, 0xef, 0x48, 0x57, 0x88, 0xd0, 0x57, 0xba, 0x64, 0x5d, 0xdd,
  1188  	0x81, 0xc6, 0xd2, 0x11, 0xee, 0x0d, 0x52, 0x56, 0x30, 0x41, 0x39, 0x29, 0xc2, 0x60, 0x98, 0xec,
  1189  	0x48, 0x63, 0x52, 0x66, 0x0c, 0x53, 0x0f, 0x1c, 0x55, 0x65, 0xf4, 0x42, 0xb7, 0x0b, 0x42, 0x60,
  1190  	0x57, 0xa4, 0xa4, 0xaa, 0x8b, 0x03, 0xac, 0xc6, 0x72, 0x4e, 0x2c, 0x1b, 0xaa, 0x1a, 0x32, 0xc0,
  1191  	0x6a, 0x8c, 0xb6, 0xc1, 0xe7, 0xf4, 0x43, 0xc7, 0x38, 0x9d, 0xab, 0x16, 0xf3, 0xf1, 0x2a, 0x8e,
  1192  	0x3e, 0x83, 0xa3, 0x96, 0xe1, 0x5a, 0xd9, 0x55, 0x70, 0xfc, 0x2b, 0x88, 0x0e, 0xc0, 0xad, 0x68,
  1193  	0x2b, 0x8c, 0x72, 0x40, 0xd7, 0xca, 0x23, 0x88, 0x0d, 0x1b, 0x7d, 0xb3, 0x20, 0x58, 0xb5, 0xca,
  1194  	0xb5, 0x35, 0xdc, 0x82, 0xa0, 0x64, 0xd5, 0x8c, 0x09, 0x5a, 0xb6, 0xaa, 0x08, 0x1b, 0xfb, 0x25,
  1195  	0xab, 0x9e, 0xcb, 0x58, 0x25, 0xc9, 0x85, 0x49, 0x4e, 0x4c, 0x92, 0x5c, 0xe8, 0xe4, 0x65, 0x85,
  1196  	0xf6, 0x1f, 0x54, 0xf8, 0xd5, 0x02, 0xbf, 0xef, 0xbc, 0x7f, 0xb2, 0xc0, 0x4f, 0xa6, 0x3e, 0xd9,
  1197  	0xbc, 0xd7, 0xd5, 0x77, 0x13, 0xdc, 0x82, 0x64, 0xb4, 0x90, 0xc5, 0x4d, 0x76, 0x03, 0x6c, 0xa2,
  1198  	0xbf, 0xb4, 0x81, 0xb7, 0xc1, 0x33, 0xad, 0x8a, 0x6e, 0x80, 0xa3, 0xef, 0x1e, 0xfd, 0xef, 0x3a,
  1199  	0x88, 0xbe, 0x58, 0xe0, 0x99, 0x93, 0x81, 0x9e, 0x81, 0xd7, 0x70, 0x56, 0x12, 0xbe, 0x34, 0x37,
  1200  	0xef, 0xb0, 0xff, 0xec, 0x61, 0xe9, 0xe9, 0xcf, 0xe8, 0x78, 0x13, 0x8f, 0x81, 0xa3, 0x1f, 0x16,
  1201  	0xb8, 0xfa, 0x4e, 0x47, 0x6f, 0x01, 0x88, 0x10, 0x9c, 0x65, 0x9d, 0xa0, 0x6d, 0x68, 0xed, 0x4c,
  1202  	0x76, 0xb7, 0xf6, 0x9e, 0x0c, 0x7b, 0x17, 0xd4, 0x7d, 0xac, 0x05, 0x87, 0x95, 0xe0, 0x4b, 0x7c,
  1203  	0xc5, 0xb8, 0x7d, 0x0e, 0xff, 0xfd, 0x96, 0x46, 0xff, 0xc3, 0xe4, 0x9c, 0x2e, 0xcd, 0x6a, 0xc9,
  1204  	0x21, 0x9a, 0xf6, 0x2b, 0xb8, 0xc9, 0x57, 0x69, 0xf4, 0xf1, 0xf8, 0x91, 0x15, 0x1d, 0x83, 0xa3,
  1205  	0x5e, 0x18, 0xb9, 0xc7, 0x6a, 0xb6, 0xff, 0xa2, 0x81, 0x7b, 0xac, 0xd9, 0x69, 0xf0, 0xc6, 0x33,
  1206  	0xf3, 0x99, 0xab, 0x9e, 0xdc, 0x87, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x2c, 0x98, 0x6b,
  1207  	0xb6, 0x07, 0x00, 0x00,
  1208  }