github.com/ZihuaZhang/fabric-protos-go@v1.0.7/common/policies.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: common/policies.proto
     3  
     4  package common
     5  
     6  import (
     7  	fmt "fmt"
     8  	proto "github.com/golang/protobuf/proto"
     9  	msp "github.com/hyperledger/fabric-protos-go/msp"
    10  	math "math"
    11  )
    12  
    13  // Reference imports to suppress errors if they are not otherwise used.
    14  var _ = proto.Marshal
    15  var _ = fmt.Errorf
    16  var _ = math.Inf
    17  
    18  // This is a compile-time assertion to ensure that this generated file
    19  // is compatible with the proto package it is being compiled against.
    20  // A compilation error at this line likely means your copy of the
    21  // proto package needs to be updated.
    22  const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
    23  
    24  type Policy_PolicyType int32
    25  
    26  const (
    27  	Policy_UNKNOWN       Policy_PolicyType = 0
    28  	Policy_SIGNATURE     Policy_PolicyType = 1
    29  	Policy_MSP           Policy_PolicyType = 2
    30  	Policy_IMPLICIT_META Policy_PolicyType = 3
    31  )
    32  
    33  var Policy_PolicyType_name = map[int32]string{
    34  	0: "UNKNOWN",
    35  	1: "SIGNATURE",
    36  	2: "MSP",
    37  	3: "IMPLICIT_META",
    38  }
    39  
    40  var Policy_PolicyType_value = map[string]int32{
    41  	"UNKNOWN":       0,
    42  	"SIGNATURE":     1,
    43  	"MSP":           2,
    44  	"IMPLICIT_META": 3,
    45  }
    46  
    47  func (x Policy_PolicyType) String() string {
    48  	return proto.EnumName(Policy_PolicyType_name, int32(x))
    49  }
    50  
    51  func (Policy_PolicyType) EnumDescriptor() ([]byte, []int) {
    52  	return fileDescriptor_0d02cf0d453425a3, []int{0, 0}
    53  }
    54  
    55  type ImplicitMetaPolicy_Rule int32
    56  
    57  const (
    58  	ImplicitMetaPolicy_ANY      ImplicitMetaPolicy_Rule = 0
    59  	ImplicitMetaPolicy_ALL      ImplicitMetaPolicy_Rule = 1
    60  	ImplicitMetaPolicy_MAJORITY ImplicitMetaPolicy_Rule = 2
    61  )
    62  
    63  var ImplicitMetaPolicy_Rule_name = map[int32]string{
    64  	0: "ANY",
    65  	1: "ALL",
    66  	2: "MAJORITY",
    67  }
    68  
    69  var ImplicitMetaPolicy_Rule_value = map[string]int32{
    70  	"ANY":      0,
    71  	"ALL":      1,
    72  	"MAJORITY": 2,
    73  }
    74  
    75  func (x ImplicitMetaPolicy_Rule) String() string {
    76  	return proto.EnumName(ImplicitMetaPolicy_Rule_name, int32(x))
    77  }
    78  
    79  func (ImplicitMetaPolicy_Rule) EnumDescriptor() ([]byte, []int) {
    80  	return fileDescriptor_0d02cf0d453425a3, []int{3, 0}
    81  }
    82  
    83  // Policy expresses a policy which the orderer can evaluate, because there has been some desire expressed to support
    84  // multiple policy engines, this is typed as a oneof for now
    85  type Policy struct {
    86  	Type                 int32    `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
    87  	Value                []byte   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
    88  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
    89  	XXX_unrecognized     []byte   `json:"-"`
    90  	XXX_sizecache        int32    `json:"-"`
    91  }
    92  
    93  func (m *Policy) Reset()         { *m = Policy{} }
    94  func (m *Policy) String() string { return proto.CompactTextString(m) }
    95  func (*Policy) ProtoMessage()    {}
    96  func (*Policy) Descriptor() ([]byte, []int) {
    97  	return fileDescriptor_0d02cf0d453425a3, []int{0}
    98  }
    99  
   100  func (m *Policy) XXX_Unmarshal(b []byte) error {
   101  	return xxx_messageInfo_Policy.Unmarshal(m, b)
   102  }
   103  func (m *Policy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   104  	return xxx_messageInfo_Policy.Marshal(b, m, deterministic)
   105  }
   106  func (m *Policy) XXX_Merge(src proto.Message) {
   107  	xxx_messageInfo_Policy.Merge(m, src)
   108  }
   109  func (m *Policy) XXX_Size() int {
   110  	return xxx_messageInfo_Policy.Size(m)
   111  }
   112  func (m *Policy) XXX_DiscardUnknown() {
   113  	xxx_messageInfo_Policy.DiscardUnknown(m)
   114  }
   115  
   116  var xxx_messageInfo_Policy proto.InternalMessageInfo
   117  
   118  func (m *Policy) GetType() int32 {
   119  	if m != nil {
   120  		return m.Type
   121  	}
   122  	return 0
   123  }
   124  
   125  func (m *Policy) GetValue() []byte {
   126  	if m != nil {
   127  		return m.Value
   128  	}
   129  	return nil
   130  }
   131  
   132  // SignaturePolicyEnvelope wraps a SignaturePolicy and includes a version for future enhancements
   133  type SignaturePolicyEnvelope struct {
   134  	Version              int32               `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
   135  	Rule                 *SignaturePolicy    `protobuf:"bytes,2,opt,name=rule,proto3" json:"rule,omitempty"`
   136  	Identities           []*msp.MSPPrincipal `protobuf:"bytes,3,rep,name=identities,proto3" json:"identities,omitempty"`
   137  	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
   138  	XXX_unrecognized     []byte              `json:"-"`
   139  	XXX_sizecache        int32               `json:"-"`
   140  }
   141  
   142  func (m *SignaturePolicyEnvelope) Reset()         { *m = SignaturePolicyEnvelope{} }
   143  func (m *SignaturePolicyEnvelope) String() string { return proto.CompactTextString(m) }
   144  func (*SignaturePolicyEnvelope) ProtoMessage()    {}
   145  func (*SignaturePolicyEnvelope) Descriptor() ([]byte, []int) {
   146  	return fileDescriptor_0d02cf0d453425a3, []int{1}
   147  }
   148  
   149  func (m *SignaturePolicyEnvelope) XXX_Unmarshal(b []byte) error {
   150  	return xxx_messageInfo_SignaturePolicyEnvelope.Unmarshal(m, b)
   151  }
   152  func (m *SignaturePolicyEnvelope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   153  	return xxx_messageInfo_SignaturePolicyEnvelope.Marshal(b, m, deterministic)
   154  }
   155  func (m *SignaturePolicyEnvelope) XXX_Merge(src proto.Message) {
   156  	xxx_messageInfo_SignaturePolicyEnvelope.Merge(m, src)
   157  }
   158  func (m *SignaturePolicyEnvelope) XXX_Size() int {
   159  	return xxx_messageInfo_SignaturePolicyEnvelope.Size(m)
   160  }
   161  func (m *SignaturePolicyEnvelope) XXX_DiscardUnknown() {
   162  	xxx_messageInfo_SignaturePolicyEnvelope.DiscardUnknown(m)
   163  }
   164  
   165  var xxx_messageInfo_SignaturePolicyEnvelope proto.InternalMessageInfo
   166  
   167  func (m *SignaturePolicyEnvelope) GetVersion() int32 {
   168  	if m != nil {
   169  		return m.Version
   170  	}
   171  	return 0
   172  }
   173  
   174  func (m *SignaturePolicyEnvelope) GetRule() *SignaturePolicy {
   175  	if m != nil {
   176  		return m.Rule
   177  	}
   178  	return nil
   179  }
   180  
   181  func (m *SignaturePolicyEnvelope) GetIdentities() []*msp.MSPPrincipal {
   182  	if m != nil {
   183  		return m.Identities
   184  	}
   185  	return nil
   186  }
   187  
   188  // SignaturePolicy is a recursive message structure which defines a featherweight DSL for describing
   189  // policies which are more complicated than 'exactly this signature'.  The NOutOf operator is sufficent
   190  // to express AND as well as OR, as well as of course N out of the following M policies
   191  // SignedBy implies that the signature is from a valid certificate which is signed by the trusted
   192  // authority specified in the bytes.  This will be the certificate itself for a self-signed certificate
   193  // and will be the CA for more traditional certificates
   194  type SignaturePolicy struct {
   195  	// Types that are valid to be assigned to Type:
   196  	//
   197  	//	*SignaturePolicy_SignedBy
   198  	//	*SignaturePolicy_NOutOf_
   199  	Type                 isSignaturePolicy_Type `protobuf_oneof:"Type"`
   200  	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
   201  	XXX_unrecognized     []byte                 `json:"-"`
   202  	XXX_sizecache        int32                  `json:"-"`
   203  }
   204  
   205  func (m *SignaturePolicy) Reset()         { *m = SignaturePolicy{} }
   206  func (m *SignaturePolicy) String() string { return proto.CompactTextString(m) }
   207  func (*SignaturePolicy) ProtoMessage()    {}
   208  func (*SignaturePolicy) Descriptor() ([]byte, []int) {
   209  	return fileDescriptor_0d02cf0d453425a3, []int{2}
   210  }
   211  
   212  func (m *SignaturePolicy) XXX_Unmarshal(b []byte) error {
   213  	return xxx_messageInfo_SignaturePolicy.Unmarshal(m, b)
   214  }
   215  func (m *SignaturePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   216  	return xxx_messageInfo_SignaturePolicy.Marshal(b, m, deterministic)
   217  }
   218  func (m *SignaturePolicy) XXX_Merge(src proto.Message) {
   219  	xxx_messageInfo_SignaturePolicy.Merge(m, src)
   220  }
   221  func (m *SignaturePolicy) XXX_Size() int {
   222  	return xxx_messageInfo_SignaturePolicy.Size(m)
   223  }
   224  func (m *SignaturePolicy) XXX_DiscardUnknown() {
   225  	xxx_messageInfo_SignaturePolicy.DiscardUnknown(m)
   226  }
   227  
   228  var xxx_messageInfo_SignaturePolicy proto.InternalMessageInfo
   229  
   230  type isSignaturePolicy_Type interface {
   231  	isSignaturePolicy_Type()
   232  }
   233  
   234  type SignaturePolicy_SignedBy struct {
   235  	SignedBy int32 `protobuf:"varint,1,opt,name=signed_by,json=signedBy,proto3,oneof"`
   236  }
   237  
   238  type SignaturePolicy_NOutOf_ struct {
   239  	NOutOf *SignaturePolicy_NOutOf `protobuf:"bytes,2,opt,name=n_out_of,json=nOutOf,proto3,oneof"`
   240  }
   241  
   242  func (*SignaturePolicy_SignedBy) isSignaturePolicy_Type() {}
   243  
   244  func (*SignaturePolicy_NOutOf_) isSignaturePolicy_Type() {}
   245  
   246  func (m *SignaturePolicy) GetType() isSignaturePolicy_Type {
   247  	if m != nil {
   248  		return m.Type
   249  	}
   250  	return nil
   251  }
   252  
   253  func (m *SignaturePolicy) GetSignedBy() int32 {
   254  	if x, ok := m.GetType().(*SignaturePolicy_SignedBy); ok {
   255  		return x.SignedBy
   256  	}
   257  	return 0
   258  }
   259  
   260  func (m *SignaturePolicy) GetNOutOf() *SignaturePolicy_NOutOf {
   261  	if x, ok := m.GetType().(*SignaturePolicy_NOutOf_); ok {
   262  		return x.NOutOf
   263  	}
   264  	return nil
   265  }
   266  
   267  // XXX_OneofWrappers is for the internal use of the proto package.
   268  func (*SignaturePolicy) XXX_OneofWrappers() []interface{} {
   269  	return []interface{}{
   270  		(*SignaturePolicy_SignedBy)(nil),
   271  		(*SignaturePolicy_NOutOf_)(nil),
   272  	}
   273  }
   274  
   275  type SignaturePolicy_NOutOf struct {
   276  	N                    int32              `protobuf:"varint,1,opt,name=n,proto3" json:"n,omitempty"`
   277  	Rules                []*SignaturePolicy `protobuf:"bytes,2,rep,name=rules,proto3" json:"rules,omitempty"`
   278  	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
   279  	XXX_unrecognized     []byte             `json:"-"`
   280  	XXX_sizecache        int32              `json:"-"`
   281  }
   282  
   283  func (m *SignaturePolicy_NOutOf) Reset()         { *m = SignaturePolicy_NOutOf{} }
   284  func (m *SignaturePolicy_NOutOf) String() string { return proto.CompactTextString(m) }
   285  func (*SignaturePolicy_NOutOf) ProtoMessage()    {}
   286  func (*SignaturePolicy_NOutOf) Descriptor() ([]byte, []int) {
   287  	return fileDescriptor_0d02cf0d453425a3, []int{2, 0}
   288  }
   289  
   290  func (m *SignaturePolicy_NOutOf) XXX_Unmarshal(b []byte) error {
   291  	return xxx_messageInfo_SignaturePolicy_NOutOf.Unmarshal(m, b)
   292  }
   293  func (m *SignaturePolicy_NOutOf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   294  	return xxx_messageInfo_SignaturePolicy_NOutOf.Marshal(b, m, deterministic)
   295  }
   296  func (m *SignaturePolicy_NOutOf) XXX_Merge(src proto.Message) {
   297  	xxx_messageInfo_SignaturePolicy_NOutOf.Merge(m, src)
   298  }
   299  func (m *SignaturePolicy_NOutOf) XXX_Size() int {
   300  	return xxx_messageInfo_SignaturePolicy_NOutOf.Size(m)
   301  }
   302  func (m *SignaturePolicy_NOutOf) XXX_DiscardUnknown() {
   303  	xxx_messageInfo_SignaturePolicy_NOutOf.DiscardUnknown(m)
   304  }
   305  
   306  var xxx_messageInfo_SignaturePolicy_NOutOf proto.InternalMessageInfo
   307  
   308  func (m *SignaturePolicy_NOutOf) GetN() int32 {
   309  	if m != nil {
   310  		return m.N
   311  	}
   312  	return 0
   313  }
   314  
   315  func (m *SignaturePolicy_NOutOf) GetRules() []*SignaturePolicy {
   316  	if m != nil {
   317  		return m.Rules
   318  	}
   319  	return nil
   320  }
   321  
   322  // ImplicitMetaPolicy is a policy type which depends on the hierarchical nature of the configuration
   323  // It is implicit because the rule is generate implicitly based on the number of sub policies
   324  // It is meta because it depends only on the result of other policies
   325  // When evaluated, this policy iterates over all immediate child sub-groups, retrieves the policy
   326  // of name sub_policy, evaluates the collection and applies the rule.
   327  // For example, with 4 sub-groups, and a policy name of "foo", ImplicitMetaPolicy retrieves
   328  // each sub-group, retrieves policy "foo" for each subgroup, evaluates it, and, in the case of ANY
   329  // 1 satisfied is sufficient, ALL would require 4 signatures, and MAJORITY would require 3 signatures.
   330  type ImplicitMetaPolicy struct {
   331  	SubPolicy            string                  `protobuf:"bytes,1,opt,name=sub_policy,json=subPolicy,proto3" json:"sub_policy,omitempty"`
   332  	Rule                 ImplicitMetaPolicy_Rule `protobuf:"varint,2,opt,name=rule,proto3,enum=common.ImplicitMetaPolicy_Rule" json:"rule,omitempty"`
   333  	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
   334  	XXX_unrecognized     []byte                  `json:"-"`
   335  	XXX_sizecache        int32                   `json:"-"`
   336  }
   337  
   338  func (m *ImplicitMetaPolicy) Reset()         { *m = ImplicitMetaPolicy{} }
   339  func (m *ImplicitMetaPolicy) String() string { return proto.CompactTextString(m) }
   340  func (*ImplicitMetaPolicy) ProtoMessage()    {}
   341  func (*ImplicitMetaPolicy) Descriptor() ([]byte, []int) {
   342  	return fileDescriptor_0d02cf0d453425a3, []int{3}
   343  }
   344  
   345  func (m *ImplicitMetaPolicy) XXX_Unmarshal(b []byte) error {
   346  	return xxx_messageInfo_ImplicitMetaPolicy.Unmarshal(m, b)
   347  }
   348  func (m *ImplicitMetaPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   349  	return xxx_messageInfo_ImplicitMetaPolicy.Marshal(b, m, deterministic)
   350  }
   351  func (m *ImplicitMetaPolicy) XXX_Merge(src proto.Message) {
   352  	xxx_messageInfo_ImplicitMetaPolicy.Merge(m, src)
   353  }
   354  func (m *ImplicitMetaPolicy) XXX_Size() int {
   355  	return xxx_messageInfo_ImplicitMetaPolicy.Size(m)
   356  }
   357  func (m *ImplicitMetaPolicy) XXX_DiscardUnknown() {
   358  	xxx_messageInfo_ImplicitMetaPolicy.DiscardUnknown(m)
   359  }
   360  
   361  var xxx_messageInfo_ImplicitMetaPolicy proto.InternalMessageInfo
   362  
   363  func (m *ImplicitMetaPolicy) GetSubPolicy() string {
   364  	if m != nil {
   365  		return m.SubPolicy
   366  	}
   367  	return ""
   368  }
   369  
   370  func (m *ImplicitMetaPolicy) GetRule() ImplicitMetaPolicy_Rule {
   371  	if m != nil {
   372  		return m.Rule
   373  	}
   374  	return ImplicitMetaPolicy_ANY
   375  }
   376  
   377  // ApplicationPolicy captures the diffenrent policy types that
   378  // are set and evaluted at the application level.
   379  //
   380  // Deprecated: Do not use.
   381  type ApplicationPolicy struct {
   382  	// Types that are valid to be assigned to Type:
   383  	//
   384  	//	*ApplicationPolicy_SignaturePolicy
   385  	//	*ApplicationPolicy_ChannelConfigPolicyReference
   386  	Type                 isApplicationPolicy_Type `protobuf_oneof:"Type"`
   387  	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
   388  	XXX_unrecognized     []byte                   `json:"-"`
   389  	XXX_sizecache        int32                    `json:"-"`
   390  }
   391  
   392  func (m *ApplicationPolicy) Reset()         { *m = ApplicationPolicy{} }
   393  func (m *ApplicationPolicy) String() string { return proto.CompactTextString(m) }
   394  func (*ApplicationPolicy) ProtoMessage()    {}
   395  func (*ApplicationPolicy) Descriptor() ([]byte, []int) {
   396  	return fileDescriptor_0d02cf0d453425a3, []int{4}
   397  }
   398  
   399  func (m *ApplicationPolicy) XXX_Unmarshal(b []byte) error {
   400  	return xxx_messageInfo_ApplicationPolicy.Unmarshal(m, b)
   401  }
   402  func (m *ApplicationPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   403  	return xxx_messageInfo_ApplicationPolicy.Marshal(b, m, deterministic)
   404  }
   405  func (m *ApplicationPolicy) XXX_Merge(src proto.Message) {
   406  	xxx_messageInfo_ApplicationPolicy.Merge(m, src)
   407  }
   408  func (m *ApplicationPolicy) XXX_Size() int {
   409  	return xxx_messageInfo_ApplicationPolicy.Size(m)
   410  }
   411  func (m *ApplicationPolicy) XXX_DiscardUnknown() {
   412  	xxx_messageInfo_ApplicationPolicy.DiscardUnknown(m)
   413  }
   414  
   415  var xxx_messageInfo_ApplicationPolicy proto.InternalMessageInfo
   416  
   417  type isApplicationPolicy_Type interface {
   418  	isApplicationPolicy_Type()
   419  }
   420  
   421  type ApplicationPolicy_SignaturePolicy struct {
   422  	SignaturePolicy *SignaturePolicyEnvelope `protobuf:"bytes,1,opt,name=signature_policy,json=signaturePolicy,proto3,oneof"`
   423  }
   424  
   425  type ApplicationPolicy_ChannelConfigPolicyReference struct {
   426  	ChannelConfigPolicyReference string `protobuf:"bytes,2,opt,name=channel_config_policy_reference,json=channelConfigPolicyReference,proto3,oneof"`
   427  }
   428  
   429  func (*ApplicationPolicy_SignaturePolicy) isApplicationPolicy_Type() {}
   430  
   431  func (*ApplicationPolicy_ChannelConfigPolicyReference) isApplicationPolicy_Type() {}
   432  
   433  func (m *ApplicationPolicy) GetType() isApplicationPolicy_Type {
   434  	if m != nil {
   435  		return m.Type
   436  	}
   437  	return nil
   438  }
   439  
   440  func (m *ApplicationPolicy) GetSignaturePolicy() *SignaturePolicyEnvelope {
   441  	if x, ok := m.GetType().(*ApplicationPolicy_SignaturePolicy); ok {
   442  		return x.SignaturePolicy
   443  	}
   444  	return nil
   445  }
   446  
   447  func (m *ApplicationPolicy) GetChannelConfigPolicyReference() string {
   448  	if x, ok := m.GetType().(*ApplicationPolicy_ChannelConfigPolicyReference); ok {
   449  		return x.ChannelConfigPolicyReference
   450  	}
   451  	return ""
   452  }
   453  
   454  // XXX_OneofWrappers is for the internal use of the proto package.
   455  func (*ApplicationPolicy) XXX_OneofWrappers() []interface{} {
   456  	return []interface{}{
   457  		(*ApplicationPolicy_SignaturePolicy)(nil),
   458  		(*ApplicationPolicy_ChannelConfigPolicyReference)(nil),
   459  	}
   460  }
   461  
   462  func init() {
   463  	proto.RegisterEnum("common.Policy_PolicyType", Policy_PolicyType_name, Policy_PolicyType_value)
   464  	proto.RegisterEnum("common.ImplicitMetaPolicy_Rule", ImplicitMetaPolicy_Rule_name, ImplicitMetaPolicy_Rule_value)
   465  	proto.RegisterType((*Policy)(nil), "common.Policy")
   466  	proto.RegisterType((*SignaturePolicyEnvelope)(nil), "common.SignaturePolicyEnvelope")
   467  	proto.RegisterType((*SignaturePolicy)(nil), "common.SignaturePolicy")
   468  	proto.RegisterType((*SignaturePolicy_NOutOf)(nil), "common.SignaturePolicy.NOutOf")
   469  	proto.RegisterType((*ImplicitMetaPolicy)(nil), "common.ImplicitMetaPolicy")
   470  	proto.RegisterType((*ApplicationPolicy)(nil), "common.ApplicationPolicy")
   471  }
   472  
   473  func init() { proto.RegisterFile("common/policies.proto", fileDescriptor_0d02cf0d453425a3) }
   474  
   475  var fileDescriptor_0d02cf0d453425a3 = []byte{
   476  	// 559 bytes of a gzipped FileDescriptorProto
   477  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0xd1, 0x4e, 0xdb, 0x30,
   478  	0x14, 0x86, 0xe3, 0xb6, 0x04, 0x7a, 0x0a, 0x23, 0x58, 0x4c, 0x44, 0x68, 0x1b, 0x28, 0x9a, 0x26,
   479  	0xa4, 0x89, 0x54, 0x82, 0x5d, 0x71, 0x57, 0x58, 0x45, 0xb3, 0x35, 0x69, 0xe5, 0x96, 0x4d, 0xec,
   480  	0x26, 0x4a, 0x82, 0x1b, 0x2c, 0xa5, 0x76, 0x14, 0x27, 0x68, 0x7d, 0x8b, 0x5d, 0xed, 0x51, 0x76,
   481  	0xb3, 0x97, 0x9b, 0x12, 0x27, 0x5b, 0xc5, 0xd4, 0x3b, 0x9f, 0x93, 0xcf, 0xbf, 0xff, 0xff, 0xd8,
   482  	0x81, 0x97, 0x91, 0x58, 0x2e, 0x05, 0xef, 0xa7, 0x22, 0x61, 0x11, 0xa3, 0xd2, 0x4e, 0x33, 0x91,
   483  	0x0b, 0xac, 0xab, 0xf6, 0xf1, 0xd1, 0x52, 0xa6, 0xfd, 0xa5, 0x4c, 0xfd, 0x34, 0x63, 0x3c, 0x62,
   484  	0x69, 0x90, 0x28, 0xc0, 0xfa, 0x0e, 0xfa, 0xb4, 0xdc, 0xb2, 0xc2, 0x18, 0x3a, 0xf9, 0x2a, 0xa5,
   485  	0x26, 0x3a, 0x45, 0x67, 0x5b, 0xa4, 0x5a, 0xe3, 0x43, 0xd8, 0x7a, 0x0a, 0x92, 0x82, 0x9a, 0xad,
   486  	0x53, 0x74, 0xb6, 0x4b, 0x54, 0x61, 0x7d, 0x04, 0x50, 0x7b, 0xe6, 0x25, 0xd3, 0x83, 0xed, 0x3b,
   487  	0xef, 0xb3, 0x37, 0xf9, 0xea, 0x19, 0x1a, 0xde, 0x83, 0xee, 0xcc, 0xb9, 0xf5, 0x06, 0xf3, 0x3b,
   488  	0x32, 0x34, 0x10, 0xde, 0x86, 0xb6, 0x3b, 0x9b, 0x1a, 0x2d, 0x7c, 0x00, 0x7b, 0x8e, 0x3b, 0x1d,
   489  	0x3b, 0x37, 0xce, 0xdc, 0x77, 0x87, 0xf3, 0x81, 0xd1, 0xb6, 0x7e, 0x22, 0x38, 0x9a, 0xb1, 0x98,
   490  	0x07, 0x79, 0x91, 0x51, 0xa5, 0x37, 0xe4, 0x4f, 0x34, 0x11, 0x29, 0xc5, 0x26, 0x6c, 0x3f, 0xd1,
   491  	0x4c, 0x32, 0xc1, 0x6b, 0x3b, 0x4d, 0x89, 0xdf, 0x43, 0x27, 0x2b, 0x12, 0x65, 0xa8, 0x77, 0x71,
   492  	0x64, 0xab, 0x7c, 0xf6, 0x33, 0x21, 0x52, 0x41, 0xf8, 0x03, 0x00, 0x7b, 0xa0, 0x3c, 0x67, 0x39,
   493  	0xa3, 0xd2, 0x6c, 0x9f, 0xb6, 0xcf, 0x7a, 0x17, 0x87, 0xcd, 0x16, 0x77, 0x36, 0x9d, 0x36, 0xc3,
   494  	0x20, 0x6b, 0x9c, 0xf5, 0x1b, 0xc1, 0xfe, 0x33, 0x3d, 0xfc, 0x1a, 0xba, 0x92, 0xc5, 0x9c, 0x3e,
   495  	0xf8, 0xe1, 0x4a, 0x59, 0x1a, 0x69, 0x64, 0x47, 0xb5, 0xae, 0x57, 0xf8, 0x0a, 0x76, 0xb8, 0x2f,
   496  	0x8a, 0xdc, 0x17, 0x8b, 0xda, 0xd9, 0x9b, 0x0d, 0xce, 0x6c, 0x6f, 0x52, 0xe4, 0x93, 0xc5, 0x48,
   497  	0x23, 0x3a, 0xaf, 0x56, 0xc7, 0x43, 0xd0, 0x55, 0x0f, 0xef, 0x02, 0x6a, 0xf2, 0x22, 0x8e, 0xcf,
   498  	0x61, 0xab, 0x0c, 0x21, 0xcd, 0x56, 0xe5, 0x7b, 0x63, 0x54, 0x45, 0x5d, 0xeb, 0xd0, 0x29, 0xaf,
   499  	0xc3, 0xfa, 0x81, 0x00, 0x3b, 0xcb, 0xb4, 0x7c, 0x05, 0xb9, 0x4b, 0xf3, 0xe0, 0x6f, 0x00, 0x90,
   500  	0x45, 0xe8, 0x57, 0xcf, 0x43, 0x25, 0xe8, 0x92, 0xae, 0x2c, 0xc2, 0xfa, 0xf3, 0xe5, 0xda, 0x58,
   501  	0x5f, 0x5c, 0x9c, 0x34, 0x67, 0xfd, 0x2f, 0x64, 0x93, 0x22, 0xa1, 0x6a, 0xbc, 0xd6, 0x3b, 0xe8,
   502  	0x94, 0x55, 0x79, 0xcb, 0x03, 0xef, 0xde, 0xd0, 0xaa, 0xc5, 0x78, 0x6c, 0x20, 0xbc, 0x0b, 0x3b,
   503  	0xee, 0xe0, 0xd3, 0x84, 0x38, 0xf3, 0x7b, 0xa3, 0x65, 0xfd, 0x42, 0x70, 0x30, 0x48, 0x4b, 0xa5,
   504  	0x20, 0x67, 0x82, 0xd7, 0x47, 0x8e, 0xc1, 0x90, 0x4d, 0x94, 0x75, 0x5f, 0xbd, 0x7f, 0xc7, 0x6f,
   505  	0x78, 0x1e, 0x23, 0x8d, 0xec, 0xcb, 0x67, 0x17, 0x74, 0x0b, 0x27, 0xd1, 0x63, 0xc0, 0x39, 0x4d,
   506  	0xfc, 0x48, 0xf0, 0x05, 0x8b, 0x6b, 0x49, 0x3f, 0xa3, 0x0b, 0x9a, 0x51, 0x1e, 0xa9, 0x6c, 0xdd,
   507  	0x91, 0x46, 0x5e, 0xd5, 0xe0, 0x4d, 0xc5, 0xd5, 0x53, 0x6c, 0xa8, 0xab, 0x96, 0x89, 0x9a, 0x59,
   508  	0x5e, 0x7f, 0x81, 0xb7, 0x22, 0x8b, 0xed, 0xc7, 0x55, 0x4a, 0xb3, 0x84, 0x3e, 0xc4, 0x34, 0xb3,
   509  	0x17, 0x41, 0x98, 0xb1, 0x48, 0xfd, 0x3c, 0xb2, 0xf6, 0xf9, 0xcd, 0x8e, 0x59, 0xfe, 0x58, 0x84,
   510  	0x65, 0xd9, 0x5f, 0x83, 0xfb, 0x0a, 0x3e, 0x57, 0xf0, 0x79, 0x2c, 0xfa, 0x8a, 0x0f, 0xf5, 0xaa,
   511  	0x73, 0xf9, 0x27, 0x00, 0x00, 0xff, 0xff, 0x77, 0x84, 0xc8, 0xc7, 0xb5, 0x03, 0x00, 0x00,
   512  }