From 66413b5335790dc9110b80c8cffe31b3259df9d2 Mon Sep 17 00:00:00 2001 From: Serguei Bezverkhi Date: Wed, 25 Nov 2020 17:28:18 -0500 Subject: API changes Signed-off-by: Serguei Bezverkhi --- api/attribute.pb.go | 1180 ++++++++++++++++++++++++++++++++++++++------------- api/attribute.proto | 130 ++++++ 2 files changed, 1019 insertions(+), 291 deletions(-) diff --git a/api/attribute.pb.go b/api/attribute.pb.go index 6b3c35f2..24dc3114 100644 --- a/api/attribute.pb.go +++ b/api/attribute.pb.go @@ -34,6 +34,7 @@ It has these top-level messages: EVPNEthernetSegmentRoute EVPNIPPrefixRoute EVPNIPMSIRoute + SRPolicyNLRI LabeledVPNIPAddressPrefix RouteTargetMembershipNLRI FlowSpecIPPrefix @@ -79,6 +80,16 @@ It has these top-level messages: TunnelEncapSubTLVEncapsulation TunnelEncapSubTLVProtocol TunnelEncapSubTLVColor + TunnelEncapSubTLVSRPreference + SRBindingSID + SRv6EndPpointBehavior + SRv6BindingSID + TunnelEncapSubTLVSRENLP + SRWeight + SegmentFlags + SegmentTypeA + SegmentList + TunnelEncapSubTLVSRPolicy TunnelEncapSubTLVUnknown TunnelEncapTLV TunnelEncapAttribute @@ -350,6 +361,132 @@ func (x LsProtocolID) String() string { } func (LsProtocolID) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +type SRv6Behavior int32 + +const ( + SRv6Behavior_RESERVED SRv6Behavior = 0 + SRv6Behavior_END SRv6Behavior = 1 + SRv6Behavior_END_WITH_PSP SRv6Behavior = 2 + SRv6Behavior_END_WITH_USP SRv6Behavior = 3 + SRv6Behavior_END_WITH_PSP_USP SRv6Behavior = 4 + SRv6Behavior_ENDX SRv6Behavior = 5 + SRv6Behavior_ENDX_WITH_PSP SRv6Behavior = 6 + SRv6Behavior_ENDX_WITH_USP SRv6Behavior = 7 + SRv6Behavior_ENDX_WITH_PSP_USP SRv6Behavior = 8 + SRv6Behavior_ENDT SRv6Behavior = 9 + SRv6Behavior_ENDT_WITH_PSP SRv6Behavior = 10 + SRv6Behavior_ENDT_WITH_USP SRv6Behavior = 11 + SRv6Behavior_ENDT_WITH_PSP_USP SRv6Behavior = 12 + SRv6Behavior_END_B6_ENCAPS SRv6Behavior = 14 + SRv6Behavior_END_BM SRv6Behavior = 15 + SRv6Behavior_END_DX6 SRv6Behavior = 16 + SRv6Behavior_END_DX4 SRv6Behavior = 17 + SRv6Behavior_END_DT6 SRv6Behavior = 18 + SRv6Behavior_END_DT4 SRv6Behavior = 19 + SRv6Behavior_END_DT46 SRv6Behavior = 20 + SRv6Behavior_END_DX2 SRv6Behavior = 21 + SRv6Behavior_END_DX2V SRv6Behavior = 22 + SRv6Behavior_END_DT2U SRv6Behavior = 23 + SRv6Behavior_END_DT2M SRv6Behavior = 24 + SRv6Behavior_END_B6_ENCAPS_Red SRv6Behavior = 27 + SRv6Behavior_END_WITH_USD SRv6Behavior = 28 + SRv6Behavior_END_WITH_PSP_USD SRv6Behavior = 29 + SRv6Behavior_END_WITH_USP_USD SRv6Behavior = 30 + SRv6Behavior_END_WITH_PSP_USP_USD SRv6Behavior = 31 + SRv6Behavior_ENDX_WITH_USD SRv6Behavior = 32 + SRv6Behavior_ENDX_WITH_PSP_USD SRv6Behavior = 33 + SRv6Behavior_ENDX_WITH_USP_USD SRv6Behavior = 34 + SRv6Behavior_ENDX_WITH_PSP_USP_USD SRv6Behavior = 35 + SRv6Behavior_ENDT_WITH_USD SRv6Behavior = 36 + SRv6Behavior_ENDT_WITH_PSP_USD SRv6Behavior = 37 + SRv6Behavior_ENDT_WITH_USP_USD SRv6Behavior = 38 + SRv6Behavior_ENDT_WITH_PSP_USP_USD SRv6Behavior = 39 +) + +var SRv6Behavior_name = map[int32]string{ + 0: "RESERVED", + 1: "END", + 2: "END_WITH_PSP", + 3: "END_WITH_USP", + 4: "END_WITH_PSP_USP", + 5: "ENDX", + 6: "ENDX_WITH_PSP", + 7: "ENDX_WITH_USP", + 8: "ENDX_WITH_PSP_USP", + 9: "ENDT", + 10: "ENDT_WITH_PSP", + 11: "ENDT_WITH_USP", + 12: "ENDT_WITH_PSP_USP", + 14: "END_B6_ENCAPS", + 15: "END_BM", + 16: "END_DX6", + 17: "END_DX4", + 18: "END_DT6", + 19: "END_DT4", + 20: "END_DT46", + 21: "END_DX2", + 22: "END_DX2V", + 23: "END_DT2U", + 24: "END_DT2M", + 27: "END_B6_ENCAPS_Red", + 28: "END_WITH_USD", + 29: "END_WITH_PSP_USD", + 30: "END_WITH_USP_USD", + 31: "END_WITH_PSP_USP_USD", + 32: "ENDX_WITH_USD", + 33: "ENDX_WITH_PSP_USD", + 34: "ENDX_WITH_USP_USD", + 35: "ENDX_WITH_PSP_USP_USD", + 36: "ENDT_WITH_USD", + 37: "ENDT_WITH_PSP_USD", + 38: "ENDT_WITH_USP_USD", + 39: "ENDT_WITH_PSP_USP_USD", +} +var SRv6Behavior_value = map[string]int32{ + "RESERVED": 0, + "END": 1, + "END_WITH_PSP": 2, + "END_WITH_USP": 3, + "END_WITH_PSP_USP": 4, + "ENDX": 5, + "ENDX_WITH_PSP": 6, + "ENDX_WITH_USP": 7, + "ENDX_WITH_PSP_USP": 8, + "ENDT": 9, + "ENDT_WITH_PSP": 10, + "ENDT_WITH_USP": 11, + "ENDT_WITH_PSP_USP": 12, + "END_B6_ENCAPS": 14, + "END_BM": 15, + "END_DX6": 16, + "END_DX4": 17, + "END_DT6": 18, + "END_DT4": 19, + "END_DT46": 20, + "END_DX2": 21, + "END_DX2V": 22, + "END_DT2U": 23, + "END_DT2M": 24, + "END_B6_ENCAPS_Red": 27, + "END_WITH_USD": 28, + "END_WITH_PSP_USD": 29, + "END_WITH_USP_USD": 30, + "END_WITH_PSP_USP_USD": 31, + "ENDX_WITH_USD": 32, + "ENDX_WITH_PSP_USD": 33, + "ENDX_WITH_USP_USD": 34, + "ENDX_WITH_PSP_USP_USD": 35, + "ENDT_WITH_USD": 36, + "ENDT_WITH_PSP_USD": 37, + "ENDT_WITH_USP_USD": 38, + "ENDT_WITH_PSP_USP_USD": 39, +} + +func (x SRv6Behavior) String() string { + return proto.EnumName(SRv6Behavior_name, int32(x)) +} +func (SRv6Behavior) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + type OriginAttribute struct { Origin uint32 `protobuf:"varint,1,opt,name=origin" json:"origin,omitempty"` } @@ -1009,6 +1146,59 @@ func (m *EVPNIPMSIRoute) GetRt() *google_protobuf.Any { return nil } +// SRPolicyNLRI represents the NLRI for: +// - AFI=1, SAFI=73 +// - AFI=2, SAFI=73 +type SRPolicyNLRI struct { + // length field carries the length of NLRI portion expressed in bits + Length uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"` + // distinguisher field carries 4-octet value uniquely identifying the policy + // in the context of tuple. + Distinguisher uint32 `protobuf:"varint,2,opt,name=distinguisher" json:"distinguisher,omitempty"` + // color field carries 4-octet value identifying (with the endpoint) the + // policy. The color is used to match the color of the destination + // prefixes to steer traffic into the SR Policy + Color uint32 `protobuf:"varint,3,opt,name=color" json:"color,omitempty"` + // endpoint field identifies the endpoint of a policy. The Endpoint may + // represent a single node or a set of nodes (e.g., an anycast + // address). The Endpoint is an IPv4 (4-octet) address or an IPv6 + // (16-octet) address according to the AFI of the NLRI. + Endpoint []byte `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"` +} + +func (m *SRPolicyNLRI) Reset() { *m = SRPolicyNLRI{} } +func (m *SRPolicyNLRI) String() string { return proto.CompactTextString(m) } +func (*SRPolicyNLRI) ProtoMessage() {} +func (*SRPolicyNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *SRPolicyNLRI) GetLength() uint32 { + if m != nil { + return m.Length + } + return 0 +} + +func (m *SRPolicyNLRI) GetDistinguisher() uint32 { + if m != nil { + return m.Distinguisher + } + return 0 +} + +func (m *SRPolicyNLRI) GetColor() uint32 { + if m != nil { + return m.Color + } + return 0 +} + +func (m *SRPolicyNLRI) GetEndpoint() []byte { + if m != nil { + return m.Endpoint + } + return nil +} + // LabeledVPNIPAddressPrefix represents the NLRI for: // - AFI=1, SAFI=128 // - AFI=2, SAFI=128 @@ -1026,7 +1216,7 @@ type LabeledVPNIPAddressPrefix struct { func (m *LabeledVPNIPAddressPrefix) Reset() { *m = LabeledVPNIPAddressPrefix{} } func (m *LabeledVPNIPAddressPrefix) String() string { return proto.CompactTextString(m) } func (*LabeledVPNIPAddressPrefix) ProtoMessage() {} -func (*LabeledVPNIPAddressPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*LabeledVPNIPAddressPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (m *LabeledVPNIPAddressPrefix) GetLabels() []uint32 { if m != nil { @@ -1070,7 +1260,7 @@ type RouteTargetMembershipNLRI struct { func (m *RouteTargetMembershipNLRI) Reset() { *m = RouteTargetMembershipNLRI{} } func (m *RouteTargetMembershipNLRI) String() string { return proto.CompactTextString(m) } func (*RouteTargetMembershipNLRI) ProtoMessage() {} -func (*RouteTargetMembershipNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } +func (*RouteTargetMembershipNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *RouteTargetMembershipNLRI) GetAs() uint32 { if m != nil { @@ -1097,7 +1287,7 @@ type FlowSpecIPPrefix struct { func (m *FlowSpecIPPrefix) Reset() { *m = FlowSpecIPPrefix{} } func (m *FlowSpecIPPrefix) String() string { return proto.CompactTextString(m) } func (*FlowSpecIPPrefix) ProtoMessage() {} -func (*FlowSpecIPPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } +func (*FlowSpecIPPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (m *FlowSpecIPPrefix) GetType() uint32 { if m != nil { @@ -1135,7 +1325,7 @@ type FlowSpecMAC struct { func (m *FlowSpecMAC) Reset() { *m = FlowSpecMAC{} } func (m *FlowSpecMAC) String() string { return proto.CompactTextString(m) } func (*FlowSpecMAC) ProtoMessage() {} -func (*FlowSpecMAC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } +func (*FlowSpecMAC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } func (m *FlowSpecMAC) GetType() uint32 { if m != nil { @@ -1160,7 +1350,7 @@ type FlowSpecComponentItem struct { func (m *FlowSpecComponentItem) Reset() { *m = FlowSpecComponentItem{} } func (m *FlowSpecComponentItem) String() string { return proto.CompactTextString(m) } func (*FlowSpecComponentItem) ProtoMessage() {} -func (*FlowSpecComponentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } +func (*FlowSpecComponentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } func (m *FlowSpecComponentItem) GetOp() uint32 { if m != nil { @@ -1184,7 +1374,7 @@ type FlowSpecComponent struct { func (m *FlowSpecComponent) Reset() { *m = FlowSpecComponent{} } func (m *FlowSpecComponent) String() string { return proto.CompactTextString(m) } func (*FlowSpecComponent) ProtoMessage() {} -func (*FlowSpecComponent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } +func (*FlowSpecComponent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } func (m *FlowSpecComponent) GetType() uint32 { if m != nil { @@ -1214,7 +1404,7 @@ type FlowSpecNLRI struct { func (m *FlowSpecNLRI) Reset() { *m = FlowSpecNLRI{} } func (m *FlowSpecNLRI) String() string { return proto.CompactTextString(m) } func (*FlowSpecNLRI) ProtoMessage() {} -func (*FlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } +func (*FlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } func (m *FlowSpecNLRI) GetRules() []*google_protobuf.Any { if m != nil { @@ -1243,7 +1433,7 @@ type VPNFlowSpecNLRI struct { func (m *VPNFlowSpecNLRI) Reset() { *m = VPNFlowSpecNLRI{} } func (m *VPNFlowSpecNLRI) String() string { return proto.CompactTextString(m) } func (*VPNFlowSpecNLRI) ProtoMessage() {} -func (*VPNFlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } +func (*VPNFlowSpecNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } func (m *VPNFlowSpecNLRI) GetRd() *google_protobuf.Any { if m != nil { @@ -1269,7 +1459,7 @@ type OpaqueNLRI struct { func (m *OpaqueNLRI) Reset() { *m = OpaqueNLRI{} } func (m *OpaqueNLRI) String() string { return proto.CompactTextString(m) } func (*OpaqueNLRI) ProtoMessage() {} -func (*OpaqueNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } +func (*OpaqueNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } func (m *OpaqueNLRI) GetKey() []byte { if m != nil { @@ -1296,7 +1486,7 @@ type LsNodeDescriptor struct { func (m *LsNodeDescriptor) Reset() { *m = LsNodeDescriptor{} } func (m *LsNodeDescriptor) String() string { return proto.CompactTextString(m) } func (*LsNodeDescriptor) ProtoMessage() {} -func (*LsNodeDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } +func (*LsNodeDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } func (m *LsNodeDescriptor) GetAsn() uint32 { if m != nil { @@ -1345,7 +1535,7 @@ type LsLinkDescriptor struct { func (m *LsLinkDescriptor) Reset() { *m = LsLinkDescriptor{} } func (m *LsLinkDescriptor) String() string { return proto.CompactTextString(m) } func (*LsLinkDescriptor) ProtoMessage() {} -func (*LsLinkDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } +func (*LsLinkDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } func (m *LsLinkDescriptor) GetLinkLocalId() uint32 { if m != nil { @@ -1397,7 +1587,7 @@ type LsPrefixDescriptor struct { func (m *LsPrefixDescriptor) Reset() { *m = LsPrefixDescriptor{} } func (m *LsPrefixDescriptor) String() string { return proto.CompactTextString(m) } func (*LsPrefixDescriptor) ProtoMessage() {} -func (*LsPrefixDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } +func (*LsPrefixDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } func (m *LsPrefixDescriptor) GetIpReachability() []string { if m != nil { @@ -1420,7 +1610,7 @@ type LsNodeNLRI struct { func (m *LsNodeNLRI) Reset() { *m = LsNodeNLRI{} } func (m *LsNodeNLRI) String() string { return proto.CompactTextString(m) } func (*LsNodeNLRI) ProtoMessage() {} -func (*LsNodeNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } +func (*LsNodeNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } func (m *LsNodeNLRI) GetLocalNode() *LsNodeDescriptor { if m != nil { @@ -1438,7 +1628,7 @@ type LsLinkNLRI struct { func (m *LsLinkNLRI) Reset() { *m = LsLinkNLRI{} } func (m *LsLinkNLRI) String() string { return proto.CompactTextString(m) } func (*LsLinkNLRI) ProtoMessage() {} -func (*LsLinkNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } +func (*LsLinkNLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } func (m *LsLinkNLRI) GetLocalNode() *LsNodeDescriptor { if m != nil { @@ -1469,7 +1659,7 @@ type LsPrefixV4NLRI struct { func (m *LsPrefixV4NLRI) Reset() { *m = LsPrefixV4NLRI{} } func (m *LsPrefixV4NLRI) String() string { return proto.CompactTextString(m) } func (*LsPrefixV4NLRI) ProtoMessage() {} -func (*LsPrefixV4NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } +func (*LsPrefixV4NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } func (m *LsPrefixV4NLRI) GetLocalNode() *LsNodeDescriptor { if m != nil { @@ -1493,7 +1683,7 @@ type LsPrefixV6NLRI struct { func (m *LsPrefixV6NLRI) Reset() { *m = LsPrefixV6NLRI{} } func (m *LsPrefixV6NLRI) String() string { return proto.CompactTextString(m) } func (*LsPrefixV6NLRI) ProtoMessage() {} -func (*LsPrefixV6NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } +func (*LsPrefixV6NLRI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *LsPrefixV6NLRI) GetLocalNode() *LsNodeDescriptor { if m != nil { @@ -1527,7 +1717,7 @@ type LsAddrPrefix struct { func (m *LsAddrPrefix) Reset() { *m = LsAddrPrefix{} } func (m *LsAddrPrefix) String() string { return proto.CompactTextString(m) } func (*LsAddrPrefix) ProtoMessage() {} -func (*LsAddrPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } +func (*LsAddrPrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *LsAddrPrefix) GetType() LsNLRIType { if m != nil { @@ -1583,13 +1773,14 @@ type MpReachNLRIAttribute struct { // - VPNFlowSpecNLRI // - OpaqueNLRI // - LsAddrPrefix + // - SR Policy NLRI Nlris []*google_protobuf.Any `protobuf:"bytes,3,rep,name=nlris" json:"nlris,omitempty"` } func (m *MpReachNLRIAttribute) Reset() { *m = MpReachNLRIAttribute{} } func (m *MpReachNLRIAttribute) String() string { return proto.CompactTextString(m) } func (*MpReachNLRIAttribute) ProtoMessage() {} -func (*MpReachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } +func (*MpReachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } func (m *MpReachNLRIAttribute) GetFamily() *Family { if m != nil { @@ -1621,7 +1812,7 @@ type MpUnreachNLRIAttribute struct { func (m *MpUnreachNLRIAttribute) Reset() { *m = MpUnreachNLRIAttribute{} } func (m *MpUnreachNLRIAttribute) String() string { return proto.CompactTextString(m) } func (*MpUnreachNLRIAttribute) ProtoMessage() {} -func (*MpUnreachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } +func (*MpUnreachNLRIAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } func (m *MpUnreachNLRIAttribute) GetFamily() *Family { if m != nil { @@ -1647,7 +1838,7 @@ type TwoOctetAsSpecificExtended struct { func (m *TwoOctetAsSpecificExtended) Reset() { *m = TwoOctetAsSpecificExtended{} } func (m *TwoOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) } func (*TwoOctetAsSpecificExtended) ProtoMessage() {} -func (*TwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } +func (*TwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } func (m *TwoOctetAsSpecificExtended) GetIsTransitive() bool { if m != nil { @@ -1687,7 +1878,7 @@ type IPv4AddressSpecificExtended struct { func (m *IPv4AddressSpecificExtended) Reset() { *m = IPv4AddressSpecificExtended{} } func (m *IPv4AddressSpecificExtended) String() string { return proto.CompactTextString(m) } func (*IPv4AddressSpecificExtended) ProtoMessage() {} -func (*IPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } +func (*IPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } func (m *IPv4AddressSpecificExtended) GetIsTransitive() bool { if m != nil { @@ -1727,7 +1918,7 @@ type FourOctetAsSpecificExtended struct { func (m *FourOctetAsSpecificExtended) Reset() { *m = FourOctetAsSpecificExtended{} } func (m *FourOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) } func (*FourOctetAsSpecificExtended) ProtoMessage() {} -func (*FourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } +func (*FourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } func (m *FourOctetAsSpecificExtended) GetIsTransitive() bool { if m != nil { @@ -1764,7 +1955,7 @@ type ValidationExtended struct { func (m *ValidationExtended) Reset() { *m = ValidationExtended{} } func (m *ValidationExtended) String() string { return proto.CompactTextString(m) } func (*ValidationExtended) ProtoMessage() {} -func (*ValidationExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } +func (*ValidationExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } func (m *ValidationExtended) GetState() uint32 { if m != nil { @@ -1780,7 +1971,7 @@ type ColorExtended struct { func (m *ColorExtended) Reset() { *m = ColorExtended{} } func (m *ColorExtended) String() string { return proto.CompactTextString(m) } func (*ColorExtended) ProtoMessage() {} -func (*ColorExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } +func (*ColorExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } func (m *ColorExtended) GetColor() uint32 { if m != nil { @@ -1796,7 +1987,7 @@ type EncapExtended struct { func (m *EncapExtended) Reset() { *m = EncapExtended{} } func (m *EncapExtended) String() string { return proto.CompactTextString(m) } func (*EncapExtended) ProtoMessage() {} -func (*EncapExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } +func (*EncapExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } func (m *EncapExtended) GetTunnelType() uint32 { if m != nil { @@ -1811,7 +2002,7 @@ type DefaultGatewayExtended struct { func (m *DefaultGatewayExtended) Reset() { *m = DefaultGatewayExtended{} } func (m *DefaultGatewayExtended) String() string { return proto.CompactTextString(m) } func (*DefaultGatewayExtended) ProtoMessage() {} -func (*DefaultGatewayExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } +func (*DefaultGatewayExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } type OpaqueExtended struct { IsTransitive bool `protobuf:"varint,1,opt,name=is_transitive,json=isTransitive" json:"is_transitive,omitempty"` @@ -1821,7 +2012,7 @@ type OpaqueExtended struct { func (m *OpaqueExtended) Reset() { *m = OpaqueExtended{} } func (m *OpaqueExtended) String() string { return proto.CompactTextString(m) } func (*OpaqueExtended) ProtoMessage() {} -func (*OpaqueExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } +func (*OpaqueExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } func (m *OpaqueExtended) GetIsTransitive() bool { if m != nil { @@ -1845,7 +2036,7 @@ type ESILabelExtended struct { func (m *ESILabelExtended) Reset() { *m = ESILabelExtended{} } func (m *ESILabelExtended) String() string { return proto.CompactTextString(m) } func (*ESILabelExtended) ProtoMessage() {} -func (*ESILabelExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } +func (*ESILabelExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } func (m *ESILabelExtended) GetIsSingleActive() bool { if m != nil { @@ -1868,7 +2059,7 @@ type ESImportRouteTarget struct { func (m *ESImportRouteTarget) Reset() { *m = ESImportRouteTarget{} } func (m *ESImportRouteTarget) String() string { return proto.CompactTextString(m) } func (*ESImportRouteTarget) ProtoMessage() {} -func (*ESImportRouteTarget) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } +func (*ESImportRouteTarget) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } func (m *ESImportRouteTarget) GetEsImport() string { if m != nil { @@ -1885,7 +2076,7 @@ type MacMobilityExtended struct { func (m *MacMobilityExtended) Reset() { *m = MacMobilityExtended{} } func (m *MacMobilityExtended) String() string { return proto.CompactTextString(m) } func (*MacMobilityExtended) ProtoMessage() {} -func (*MacMobilityExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } +func (*MacMobilityExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } func (m *MacMobilityExtended) GetIsSticky() bool { if m != nil { @@ -1908,7 +2099,7 @@ type RouterMacExtended struct { func (m *RouterMacExtended) Reset() { *m = RouterMacExtended{} } func (m *RouterMacExtended) String() string { return proto.CompactTextString(m) } func (*RouterMacExtended) ProtoMessage() {} -func (*RouterMacExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } +func (*RouterMacExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } func (m *RouterMacExtended) GetMac() string { if m != nil { @@ -1925,7 +2116,7 @@ type TrafficRateExtended struct { func (m *TrafficRateExtended) Reset() { *m = TrafficRateExtended{} } func (m *TrafficRateExtended) String() string { return proto.CompactTextString(m) } func (*TrafficRateExtended) ProtoMessage() {} -func (*TrafficRateExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } +func (*TrafficRateExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } func (m *TrafficRateExtended) GetAs() uint32 { if m != nil { @@ -1949,7 +2140,7 @@ type TrafficActionExtended struct { func (m *TrafficActionExtended) Reset() { *m = TrafficActionExtended{} } func (m *TrafficActionExtended) String() string { return proto.CompactTextString(m) } func (*TrafficActionExtended) ProtoMessage() {} -func (*TrafficActionExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } +func (*TrafficActionExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } func (m *TrafficActionExtended) GetTerminal() bool { if m != nil { @@ -1974,7 +2165,7 @@ func (m *RedirectTwoOctetAsSpecificExtended) Reset() { *m = RedirectTwoO func (m *RedirectTwoOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) } func (*RedirectTwoOctetAsSpecificExtended) ProtoMessage() {} func (*RedirectTwoOctetAsSpecificExtended) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{57} + return fileDescriptor0, []int{58} } func (m *RedirectTwoOctetAsSpecificExtended) GetAs() uint32 { @@ -2000,7 +2191,7 @@ func (m *RedirectIPv4AddressSpecificExtended) Reset() { *m = RedirectIPv func (m *RedirectIPv4AddressSpecificExtended) String() string { return proto.CompactTextString(m) } func (*RedirectIPv4AddressSpecificExtended) ProtoMessage() {} func (*RedirectIPv4AddressSpecificExtended) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{58} + return fileDescriptor0, []int{59} } func (m *RedirectIPv4AddressSpecificExtended) GetAddress() string { @@ -2026,7 +2217,7 @@ func (m *RedirectFourOctetAsSpecificExtended) Reset() { *m = RedirectFou func (m *RedirectFourOctetAsSpecificExtended) String() string { return proto.CompactTextString(m) } func (*RedirectFourOctetAsSpecificExtended) ProtoMessage() {} func (*RedirectFourOctetAsSpecificExtended) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{59} + return fileDescriptor0, []int{60} } func (m *RedirectFourOctetAsSpecificExtended) GetAs() uint32 { @@ -2050,7 +2241,7 @@ type TrafficRemarkExtended struct { func (m *TrafficRemarkExtended) Reset() { *m = TrafficRemarkExtended{} } func (m *TrafficRemarkExtended) String() string { return proto.CompactTextString(m) } func (*TrafficRemarkExtended) ProtoMessage() {} -func (*TrafficRemarkExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } +func (*TrafficRemarkExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } func (m *TrafficRemarkExtended) GetDscp() uint32 { if m != nil { @@ -2067,7 +2258,7 @@ type UnknownExtended struct { func (m *UnknownExtended) Reset() { *m = UnknownExtended{} } func (m *UnknownExtended) String() string { return proto.CompactTextString(m) } func (*UnknownExtended) ProtoMessage() {} -func (*UnknownExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } +func (*UnknownExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } func (m *UnknownExtended) GetType() uint32 { if m != nil { @@ -2105,7 +2296,7 @@ type ExtendedCommunitiesAttribute struct { func (m *ExtendedCommunitiesAttribute) Reset() { *m = ExtendedCommunitiesAttribute{} } func (m *ExtendedCommunitiesAttribute) String() string { return proto.CompactTextString(m) } func (*ExtendedCommunitiesAttribute) ProtoMessage() {} -func (*ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } +func (*ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } func (m *ExtendedCommunitiesAttribute) GetCommunities() []*google_protobuf.Any { if m != nil { @@ -2121,7 +2312,7 @@ type As4PathAttribute struct { func (m *As4PathAttribute) Reset() { *m = As4PathAttribute{} } func (m *As4PathAttribute) String() string { return proto.CompactTextString(m) } func (*As4PathAttribute) ProtoMessage() {} -func (*As4PathAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } +func (*As4PathAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } func (m *As4PathAttribute) GetSegments() []*AsSegment { if m != nil { @@ -2138,7 +2329,7 @@ type As4AggregatorAttribute struct { func (m *As4AggregatorAttribute) Reset() { *m = As4AggregatorAttribute{} } func (m *As4AggregatorAttribute) String() string { return proto.CompactTextString(m) } func (*As4AggregatorAttribute) ProtoMessage() {} -func (*As4AggregatorAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } +func (*As4AggregatorAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } func (m *As4AggregatorAttribute) GetAs() uint32 { if m != nil { @@ -2164,7 +2355,7 @@ type PmsiTunnelAttribute struct { func (m *PmsiTunnelAttribute) Reset() { *m = PmsiTunnelAttribute{} } func (m *PmsiTunnelAttribute) String() string { return proto.CompactTextString(m) } func (*PmsiTunnelAttribute) ProtoMessage() {} -func (*PmsiTunnelAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } +func (*PmsiTunnelAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } func (m *PmsiTunnelAttribute) GetFlags() uint32 { if m != nil { @@ -2203,7 +2394,7 @@ func (m *TunnelEncapSubTLVEncapsulation) Reset() { *m = TunnelEncapSubTL func (m *TunnelEncapSubTLVEncapsulation) String() string { return proto.CompactTextString(m) } func (*TunnelEncapSubTLVEncapsulation) ProtoMessage() {} func (*TunnelEncapSubTLVEncapsulation) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{66} + return fileDescriptor0, []int{67} } func (m *TunnelEncapSubTLVEncapsulation) GetKey() uint32 { @@ -2227,7 +2418,7 @@ type TunnelEncapSubTLVProtocol struct { func (m *TunnelEncapSubTLVProtocol) Reset() { *m = TunnelEncapSubTLVProtocol{} } func (m *TunnelEncapSubTLVProtocol) String() string { return proto.CompactTextString(m) } func (*TunnelEncapSubTLVProtocol) ProtoMessage() {} -func (*TunnelEncapSubTLVProtocol) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } +func (*TunnelEncapSubTLVProtocol) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} } func (m *TunnelEncapSubTLVProtocol) GetProtocol() uint32 { if m != nil { @@ -2243,7 +2434,7 @@ type TunnelEncapSubTLVColor struct { func (m *TunnelEncapSubTLVColor) Reset() { *m = TunnelEncapSubTLVColor{} } func (m *TunnelEncapSubTLVColor) String() string { return proto.CompactTextString(m) } func (*TunnelEncapSubTLVColor) ProtoMessage() {} -func (*TunnelEncapSubTLVColor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} } +func (*TunnelEncapSubTLVColor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } func (m *TunnelEncapSubTLVColor) GetColor() uint32 { if m != nil { @@ -2252,6 +2443,355 @@ func (m *TunnelEncapSubTLVColor) GetColor() uint32 { return 0 } +type TunnelEncapSubTLVSRPreference struct { + Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` + Preference uint32 `protobuf:"varint,2,opt,name=preference" json:"preference,omitempty"` +} + +func (m *TunnelEncapSubTLVSRPreference) Reset() { *m = TunnelEncapSubTLVSRPreference{} } +func (m *TunnelEncapSubTLVSRPreference) String() string { return proto.CompactTextString(m) } +func (*TunnelEncapSubTLVSRPreference) ProtoMessage() {} +func (*TunnelEncapSubTLVSRPreference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} } + +func (m *TunnelEncapSubTLVSRPreference) GetFlags() uint32 { + if m != nil { + return m.Flags + } + return 0 +} + +func (m *TunnelEncapSubTLVSRPreference) GetPreference() uint32 { + if m != nil { + return m.Preference + } + return 0 +} + +type SRBindingSID struct { + Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` + Sid []byte `protobuf:"bytes,2,opt,name=sid,proto3" json:"sid,omitempty"` +} + +func (m *SRBindingSID) Reset() { *m = SRBindingSID{} } +func (m *SRBindingSID) String() string { return proto.CompactTextString(m) } +func (*SRBindingSID) ProtoMessage() {} +func (*SRBindingSID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } + +func (m *SRBindingSID) GetFlags() uint32 { + if m != nil { + return m.Flags + } + return 0 +} + +func (m *SRBindingSID) GetSid() []byte { + if m != nil { + return m.Sid + } + return nil +} + +type SRv6EndPpointBehavior struct { + Behavior SRv6Behavior `protobuf:"varint,1,opt,name=behavior,enum=gobgpapi.SRv6Behavior" json:"behavior,omitempty"` + BlockLen uint32 `protobuf:"varint,2,opt,name=block_len,json=blockLen" json:"block_len,omitempty"` + NodeLen uint32 `protobuf:"varint,3,opt,name=node_len,json=nodeLen" json:"node_len,omitempty"` + FuncLen uint32 `protobuf:"varint,4,opt,name=func_len,json=funcLen" json:"func_len,omitempty"` + ArgLen uint32 `protobuf:"varint,5,opt,name=arg_len,json=argLen" json:"arg_len,omitempty"` +} + +func (m *SRv6EndPpointBehavior) Reset() { *m = SRv6EndPpointBehavior{} } +func (m *SRv6EndPpointBehavior) String() string { return proto.CompactTextString(m) } +func (*SRv6EndPpointBehavior) ProtoMessage() {} +func (*SRv6EndPpointBehavior) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} } + +func (m *SRv6EndPpointBehavior) GetBehavior() SRv6Behavior { + if m != nil { + return m.Behavior + } + return SRv6Behavior_RESERVED +} + +func (m *SRv6EndPpointBehavior) GetBlockLen() uint32 { + if m != nil { + return m.BlockLen + } + return 0 +} + +func (m *SRv6EndPpointBehavior) GetNodeLen() uint32 { + if m != nil { + return m.NodeLen + } + return 0 +} + +func (m *SRv6EndPpointBehavior) GetFuncLen() uint32 { + if m != nil { + return m.FuncLen + } + return 0 +} + +func (m *SRv6EndPpointBehavior) GetArgLen() uint32 { + if m != nil { + return m.ArgLen + } + return 0 +} + +type SRv6BindingSID struct { + SFlag bool `protobuf:"varint,1,opt,name=s_flag,json=sFlag" json:"s_flag,omitempty"` + IFlag bool `protobuf:"varint,2,opt,name=i_flag,json=iFlag" json:"i_flag,omitempty"` + BFlag bool `protobuf:"varint,3,opt,name=b_flag,json=bFlag" json:"b_flag,omitempty"` + Sid []byte `protobuf:"bytes,4,opt,name=sid,proto3" json:"sid,omitempty"` + EndpointBehaviorStructure *SRv6EndPpointBehavior `protobuf:"bytes,5,opt,name=endpoint_behavior_structure,json=endpointBehaviorStructure" json:"endpoint_behavior_structure,omitempty"` +} + +func (m *SRv6BindingSID) Reset() { *m = SRv6BindingSID{} } +func (m *SRv6BindingSID) String() string { return proto.CompactTextString(m) } +func (*SRv6BindingSID) ProtoMessage() {} +func (*SRv6BindingSID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} } + +func (m *SRv6BindingSID) GetSFlag() bool { + if m != nil { + return m.SFlag + } + return false +} + +func (m *SRv6BindingSID) GetIFlag() bool { + if m != nil { + return m.IFlag + } + return false +} + +func (m *SRv6BindingSID) GetBFlag() bool { + if m != nil { + return m.BFlag + } + return false +} + +func (m *SRv6BindingSID) GetSid() []byte { + if m != nil { + return m.Sid + } + return nil +} + +func (m *SRv6BindingSID) GetEndpointBehaviorStructure() *SRv6EndPpointBehavior { + if m != nil { + return m.EndpointBehaviorStructure + } + return nil +} + +type TunnelEncapSubTLVSRENLP struct { + Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` + Enlp uint32 `protobuf:"varint,2,opt,name=enlp" json:"enlp,omitempty"` +} + +func (m *TunnelEncapSubTLVSRENLP) Reset() { *m = TunnelEncapSubTLVSRENLP{} } +func (m *TunnelEncapSubTLVSRENLP) String() string { return proto.CompactTextString(m) } +func (*TunnelEncapSubTLVSRENLP) ProtoMessage() {} +func (*TunnelEncapSubTLVSRENLP) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} } + +func (m *TunnelEncapSubTLVSRENLP) GetFlags() uint32 { + if m != nil { + return m.Flags + } + return 0 +} + +func (m *TunnelEncapSubTLVSRENLP) GetEnlp() uint32 { + if m != nil { + return m.Enlp + } + return 0 +} + +type SRWeight struct { + Flags uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` + Weigth uint32 `protobuf:"varint,2,opt,name=weigth" json:"weigth,omitempty"` +} + +func (m *SRWeight) Reset() { *m = SRWeight{} } +func (m *SRWeight) String() string { return proto.CompactTextString(m) } +func (*SRWeight) ProtoMessage() {} +func (*SRWeight) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} } + +func (m *SRWeight) GetFlags() uint32 { + if m != nil { + return m.Flags + } + return 0 +} + +func (m *SRWeight) GetWeigth() uint32 { + if m != nil { + return m.Weigth + } + return 0 +} + +type SegmentFlags struct { + VFlag bool `protobuf:"varint,1,opt,name=v_flag,json=vFlag" json:"v_flag,omitempty"` + AFlag bool `protobuf:"varint,2,opt,name=a_flag,json=aFlag" json:"a_flag,omitempty"` + SFlag bool `protobuf:"varint,3,opt,name=s_flag,json=sFlag" json:"s_flag,omitempty"` + BFlag bool `protobuf:"varint,4,opt,name=b_flag,json=bFlag" json:"b_flag,omitempty"` +} + +func (m *SegmentFlags) Reset() { *m = SegmentFlags{} } +func (m *SegmentFlags) String() string { return proto.CompactTextString(m) } +func (*SegmentFlags) ProtoMessage() {} +func (*SegmentFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} } + +func (m *SegmentFlags) GetVFlag() bool { + if m != nil { + return m.VFlag + } + return false +} + +func (m *SegmentFlags) GetAFlag() bool { + if m != nil { + return m.AFlag + } + return false +} + +func (m *SegmentFlags) GetSFlag() bool { + if m != nil { + return m.SFlag + } + return false +} + +func (m *SegmentFlags) GetBFlag() bool { + if m != nil { + return m.BFlag + } + return false +} + +type SegmentTypeA struct { + Flags *SegmentFlags `protobuf:"bytes,1,opt,name=flags" json:"flags,omitempty"` + Label uint32 `protobuf:"varint,2,opt,name=label" json:"label,omitempty"` +} + +func (m *SegmentTypeA) Reset() { *m = SegmentTypeA{} } +func (m *SegmentTypeA) String() string { return proto.CompactTextString(m) } +func (*SegmentTypeA) ProtoMessage() {} +func (*SegmentTypeA) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} } + +func (m *SegmentTypeA) GetFlags() *SegmentFlags { + if m != nil { + return m.Flags + } + return nil +} + +func (m *SegmentTypeA) GetLabel() uint32 { + if m != nil { + return m.Label + } + return 0 +} + +type SegmentList struct { + Weight *SRWeight `protobuf:"bytes,1,opt,name=weight" json:"weight,omitempty"` + // segments must be one of: + // - SegmentTypeA + Segments []*google_protobuf.Any `protobuf:"bytes,2,rep,name=segments" json:"segments,omitempty"` +} + +func (m *SegmentList) Reset() { *m = SegmentList{} } +func (m *SegmentList) String() string { return proto.CompactTextString(m) } +func (*SegmentList) ProtoMessage() {} +func (*SegmentList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} } + +func (m *SegmentList) GetWeight() *SRWeight { + if m != nil { + return m.Weight + } + return nil +} + +func (m *SegmentList) GetSegments() []*google_protobuf.Any { + if m != nil { + return m.Segments + } + return nil +} + +type TunnelEncapSubTLVSRPolicy struct { + Preference *TunnelEncapSubTLVSRPreference `protobuf:"bytes,1,opt,name=preference" json:"preference,omitempty"` + // bsid must be one of: + // - SRBindingSID + // - SRv6BindingSID + Bsid *google_protobuf.Any `protobuf:"bytes,2,opt,name=bsid" json:"bsid,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` + CandidatePathName string `protobuf:"bytes,4,opt,name=candidate_path_name,json=candidatePathName" json:"candidate_path_name,omitempty"` + Priority uint32 `protobuf:"varint,5,opt,name=priority" json:"priority,omitempty"` + Enlp *TunnelEncapSubTLVSRENLP `protobuf:"bytes,6,opt,name=enlp" json:"enlp,omitempty"` + SegmentList []*SegmentList `protobuf:"bytes,7,rep,name=segment_list,json=segmentList" json:"segment_list,omitempty"` +} + +func (m *TunnelEncapSubTLVSRPolicy) Reset() { *m = TunnelEncapSubTLVSRPolicy{} } +func (m *TunnelEncapSubTLVSRPolicy) String() string { return proto.CompactTextString(m) } +func (*TunnelEncapSubTLVSRPolicy) ProtoMessage() {} +func (*TunnelEncapSubTLVSRPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } + +func (m *TunnelEncapSubTLVSRPolicy) GetPreference() *TunnelEncapSubTLVSRPreference { + if m != nil { + return m.Preference + } + return nil +} + +func (m *TunnelEncapSubTLVSRPolicy) GetBsid() *google_protobuf.Any { + if m != nil { + return m.Bsid + } + return nil +} + +func (m *TunnelEncapSubTLVSRPolicy) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *TunnelEncapSubTLVSRPolicy) GetCandidatePathName() string { + if m != nil { + return m.CandidatePathName + } + return "" +} + +func (m *TunnelEncapSubTLVSRPolicy) GetPriority() uint32 { + if m != nil { + return m.Priority + } + return 0 +} + +func (m *TunnelEncapSubTLVSRPolicy) GetEnlp() *TunnelEncapSubTLVSRENLP { + if m != nil { + return m.Enlp + } + return nil +} + +func (m *TunnelEncapSubTLVSRPolicy) GetSegmentList() []*SegmentList { + if m != nil { + return m.SegmentList + } + return nil +} + type TunnelEncapSubTLVUnknown struct { Type uint32 `protobuf:"varint,1,opt,name=type" json:"type,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` @@ -2260,7 +2800,7 @@ type TunnelEncapSubTLVUnknown struct { func (m *TunnelEncapSubTLVUnknown) Reset() { *m = TunnelEncapSubTLVUnknown{} } func (m *TunnelEncapSubTLVUnknown) String() string { return proto.CompactTextString(m) } func (*TunnelEncapSubTLVUnknown) ProtoMessage() {} -func (*TunnelEncapSubTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } +func (*TunnelEncapSubTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} } func (m *TunnelEncapSubTLVUnknown) GetType() uint32 { if m != nil { @@ -2282,6 +2822,7 @@ type TunnelEncapTLV struct { // - TunnelEncapSubTLVEncapsulation // - TunnelEncapSubTLVProtocol // - TunnelEncapSubTLVColor + // - TunnelEncapSubTLVSRPolicy // - TunnelEncapSubTLVUnknown Tlvs []*google_protobuf.Any `protobuf:"bytes,2,rep,name=tlvs" json:"tlvs,omitempty"` } @@ -2289,7 +2830,7 @@ type TunnelEncapTLV struct { func (m *TunnelEncapTLV) Reset() { *m = TunnelEncapTLV{} } func (m *TunnelEncapTLV) String() string { return proto.CompactTextString(m) } func (*TunnelEncapTLV) ProtoMessage() {} -func (*TunnelEncapTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} } +func (*TunnelEncapTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} } func (m *TunnelEncapTLV) GetType() uint32 { if m != nil { @@ -2312,7 +2853,7 @@ type TunnelEncapAttribute struct { func (m *TunnelEncapAttribute) Reset() { *m = TunnelEncapAttribute{} } func (m *TunnelEncapAttribute) String() string { return proto.CompactTextString(m) } func (*TunnelEncapAttribute) ProtoMessage() {} -func (*TunnelEncapAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } +func (*TunnelEncapAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} } func (m *TunnelEncapAttribute) GetTlvs() []*TunnelEncapTLV { if m != nil { @@ -2331,7 +2872,7 @@ type IPv6AddressSpecificExtended struct { func (m *IPv6AddressSpecificExtended) Reset() { *m = IPv6AddressSpecificExtended{} } func (m *IPv6AddressSpecificExtended) String() string { return proto.CompactTextString(m) } func (*IPv6AddressSpecificExtended) ProtoMessage() {} -func (*IPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} } +func (*IPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} } func (m *IPv6AddressSpecificExtended) GetIsTransitive() bool { if m != nil { @@ -2370,7 +2911,7 @@ func (m *RedirectIPv6AddressSpecificExtended) Reset() { *m = RedirectIPv func (m *RedirectIPv6AddressSpecificExtended) String() string { return proto.CompactTextString(m) } func (*RedirectIPv6AddressSpecificExtended) ProtoMessage() {} func (*RedirectIPv6AddressSpecificExtended) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{73} + return fileDescriptor0, []int{84} } func (m *RedirectIPv6AddressSpecificExtended) GetAddress() string { @@ -2398,7 +2939,7 @@ func (m *IP6ExtendedCommunitiesAttribute) Reset() { *m = IP6ExtendedComm func (m *IP6ExtendedCommunitiesAttribute) String() string { return proto.CompactTextString(m) } func (*IP6ExtendedCommunitiesAttribute) ProtoMessage() {} func (*IP6ExtendedCommunitiesAttribute) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{74} + return fileDescriptor0, []int{85} } func (m *IP6ExtendedCommunitiesAttribute) GetCommunities() []*google_protobuf.Any { @@ -2415,7 +2956,7 @@ type AigpTLVIGPMetric struct { func (m *AigpTLVIGPMetric) Reset() { *m = AigpTLVIGPMetric{} } func (m *AigpTLVIGPMetric) String() string { return proto.CompactTextString(m) } func (*AigpTLVIGPMetric) ProtoMessage() {} -func (*AigpTLVIGPMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} } +func (*AigpTLVIGPMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} } func (m *AigpTLVIGPMetric) GetMetric() uint64 { if m != nil { @@ -2432,7 +2973,7 @@ type AigpTLVUnknown struct { func (m *AigpTLVUnknown) Reset() { *m = AigpTLVUnknown{} } func (m *AigpTLVUnknown) String() string { return proto.CompactTextString(m) } func (*AigpTLVUnknown) ProtoMessage() {} -func (*AigpTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} } +func (*AigpTLVUnknown) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} } func (m *AigpTLVUnknown) GetType() uint32 { if m != nil { @@ -2458,7 +2999,7 @@ type AigpAttribute struct { func (m *AigpAttribute) Reset() { *m = AigpAttribute{} } func (m *AigpAttribute) String() string { return proto.CompactTextString(m) } func (*AigpAttribute) ProtoMessage() {} -func (*AigpAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} } +func (*AigpAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} } func (m *AigpAttribute) GetTlvs() []*google_protobuf.Any { if m != nil { @@ -2476,7 +3017,7 @@ type LargeCommunity struct { func (m *LargeCommunity) Reset() { *m = LargeCommunity{} } func (m *LargeCommunity) String() string { return proto.CompactTextString(m) } func (*LargeCommunity) ProtoMessage() {} -func (*LargeCommunity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} } +func (*LargeCommunity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} } func (m *LargeCommunity) GetGlobalAdmin() uint32 { if m != nil { @@ -2506,7 +3047,7 @@ type LargeCommunitiesAttribute struct { func (m *LargeCommunitiesAttribute) Reset() { *m = LargeCommunitiesAttribute{} } func (m *LargeCommunitiesAttribute) String() string { return proto.CompactTextString(m) } func (*LargeCommunitiesAttribute) ProtoMessage() {} -func (*LargeCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} } +func (*LargeCommunitiesAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} } func (m *LargeCommunitiesAttribute) GetCommunities() []*LargeCommunity { if m != nil { @@ -2527,7 +3068,7 @@ type LsNodeFlags struct { func (m *LsNodeFlags) Reset() { *m = LsNodeFlags{} } func (m *LsNodeFlags) String() string { return proto.CompactTextString(m) } func (*LsNodeFlags) ProtoMessage() {} -func (*LsNodeFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{80} } +func (*LsNodeFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} } func (m *LsNodeFlags) GetOverload() bool { if m != nil { @@ -2581,7 +3122,7 @@ type LsIGPFlags struct { func (m *LsIGPFlags) Reset() { *m = LsIGPFlags{} } func (m *LsIGPFlags) String() string { return proto.CompactTextString(m) } func (*LsIGPFlags) ProtoMessage() {} -func (*LsIGPFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{81} } +func (*LsIGPFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} } func (m *LsIGPFlags) GetDown() bool { if m != nil { @@ -2619,7 +3160,7 @@ type LsSrRange struct { func (m *LsSrRange) Reset() { *m = LsSrRange{} } func (m *LsSrRange) String() string { return proto.CompactTextString(m) } func (*LsSrRange) ProtoMessage() {} -func (*LsSrRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{82} } +func (*LsSrRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} } func (m *LsSrRange) GetBegin() uint32 { if m != nil { @@ -2644,7 +3185,7 @@ type LsSrCapabilities struct { func (m *LsSrCapabilities) Reset() { *m = LsSrCapabilities{} } func (m *LsSrCapabilities) String() string { return proto.CompactTextString(m) } func (*LsSrCapabilities) ProtoMessage() {} -func (*LsSrCapabilities) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{83} } +func (*LsSrCapabilities) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} } func (m *LsSrCapabilities) GetIpv4Supported() bool { if m != nil { @@ -2674,7 +3215,7 @@ type LsSrLocalBlock struct { func (m *LsSrLocalBlock) Reset() { *m = LsSrLocalBlock{} } func (m *LsSrLocalBlock) String() string { return proto.CompactTextString(m) } func (*LsSrLocalBlock) ProtoMessage() {} -func (*LsSrLocalBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{84} } +func (*LsSrLocalBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} } func (m *LsSrLocalBlock) GetRanges() []*LsSrRange { if m != nil { @@ -2698,7 +3239,7 @@ type LsAttributeNode struct { func (m *LsAttributeNode) Reset() { *m = LsAttributeNode{} } func (m *LsAttributeNode) String() string { return proto.CompactTextString(m) } func (*LsAttributeNode) ProtoMessage() {} -func (*LsAttributeNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{85} } +func (*LsAttributeNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{96} } func (m *LsAttributeNode) GetName() string { if m != nil { @@ -2783,7 +3324,7 @@ type LsAttributeLink struct { func (m *LsAttributeLink) Reset() { *m = LsAttributeLink{} } func (m *LsAttributeLink) String() string { return proto.CompactTextString(m) } func (*LsAttributeLink) ProtoMessage() {} -func (*LsAttributeLink) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{86} } +func (*LsAttributeLink) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{97} } func (m *LsAttributeLink) GetName() string { if m != nil { @@ -2892,7 +3433,7 @@ type LsAttributePrefix struct { func (m *LsAttributePrefix) Reset() { *m = LsAttributePrefix{} } func (m *LsAttributePrefix) String() string { return proto.CompactTextString(m) } func (*LsAttributePrefix) ProtoMessage() {} -func (*LsAttributePrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{87} } +func (*LsAttributePrefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{98} } func (m *LsAttributePrefix) GetIgpFlags() *LsIGPFlags { if m != nil { @@ -2924,7 +3465,7 @@ type LsAttribute struct { func (m *LsAttribute) Reset() { *m = LsAttribute{} } func (m *LsAttribute) String() string { return proto.CompactTextString(m) } func (*LsAttribute) ProtoMessage() {} -func (*LsAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{88} } +func (*LsAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{99} } func (m *LsAttribute) GetNode() *LsAttributeNode { if m != nil { @@ -2956,7 +3497,7 @@ type UnknownAttribute struct { func (m *UnknownAttribute) Reset() { *m = UnknownAttribute{} } func (m *UnknownAttribute) String() string { return proto.CompactTextString(m) } func (*UnknownAttribute) ProtoMessage() {} -func (*UnknownAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{89} } +func (*UnknownAttribute) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{100} } func (m *UnknownAttribute) GetFlags() uint32 { if m != nil { @@ -2992,7 +3533,7 @@ type SRv6StructureSubSubTLV struct { func (m *SRv6StructureSubSubTLV) Reset() { *m = SRv6StructureSubSubTLV{} } func (m *SRv6StructureSubSubTLV) String() string { return proto.CompactTextString(m) } func (*SRv6StructureSubSubTLV) ProtoMessage() {} -func (*SRv6StructureSubSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{90} } +func (*SRv6StructureSubSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{101} } func (m *SRv6StructureSubSubTLV) GetLocalBlockLength() uint32 { if m != nil { @@ -3044,7 +3585,7 @@ type SRv6SIDFlags struct { func (m *SRv6SIDFlags) Reset() { *m = SRv6SIDFlags{} } func (m *SRv6SIDFlags) String() string { return proto.CompactTextString(m) } func (*SRv6SIDFlags) ProtoMessage() {} -func (*SRv6SIDFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{91} } +func (*SRv6SIDFlags) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{102} } func (m *SRv6SIDFlags) GetFlag_1() bool { if m != nil { @@ -3060,7 +3601,7 @@ type SRv6TLV struct { func (m *SRv6TLV) Reset() { *m = SRv6TLV{} } func (m *SRv6TLV) String() string { return proto.CompactTextString(m) } func (*SRv6TLV) ProtoMessage() {} -func (*SRv6TLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{92} } +func (*SRv6TLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{103} } func (m *SRv6TLV) GetTlv() []*google_protobuf.Any { if m != nil { @@ -3082,7 +3623,7 @@ type SRv6InformationSubTLV struct { func (m *SRv6InformationSubTLV) Reset() { *m = SRv6InformationSubTLV{} } func (m *SRv6InformationSubTLV) String() string { return proto.CompactTextString(m) } func (*SRv6InformationSubTLV) ProtoMessage() {} -func (*SRv6InformationSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{93} } +func (*SRv6InformationSubTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{104} } func (m *SRv6InformationSubTLV) GetSid() []byte { if m != nil { @@ -3122,7 +3663,7 @@ type SRv6L3ServiceTLV struct { func (m *SRv6L3ServiceTLV) Reset() { *m = SRv6L3ServiceTLV{} } func (m *SRv6L3ServiceTLV) String() string { return proto.CompactTextString(m) } func (*SRv6L3ServiceTLV) ProtoMessage() {} -func (*SRv6L3ServiceTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{94} } +func (*SRv6L3ServiceTLV) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{105} } func (m *SRv6L3ServiceTLV) GetSubTlvs() map[uint32]*SRv6TLV { if m != nil { @@ -3144,7 +3685,7 @@ type PrefixSID struct { func (m *PrefixSID) Reset() { *m = PrefixSID{} } func (m *PrefixSID) String() string { return proto.CompactTextString(m) } func (*PrefixSID) ProtoMessage() {} -func (*PrefixSID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{95} } +func (*PrefixSID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{106} } func (m *PrefixSID) GetTlvs() []*google_protobuf.Any { if m != nil { @@ -3178,6 +3719,7 @@ func init() { proto.RegisterType((*EVPNEthernetSegmentRoute)(nil), "gobgpapi.EVPNEthernetSegmentRoute") proto.RegisterType((*EVPNIPPrefixRoute)(nil), "gobgpapi.EVPNIPPrefixRoute") proto.RegisterType((*EVPNIPMSIRoute)(nil), "gobgpapi.EVPNIPMSIRoute") + proto.RegisterType((*SRPolicyNLRI)(nil), "gobgpapi.SRPolicyNLRI") proto.RegisterType((*LabeledVPNIPAddressPrefix)(nil), "gobgpapi.LabeledVPNIPAddressPrefix") proto.RegisterType((*RouteTargetMembershipNLRI)(nil), "gobgpapi.RouteTargetMembershipNLRI") proto.RegisterType((*FlowSpecIPPrefix)(nil), "gobgpapi.FlowSpecIPPrefix") @@ -3223,6 +3765,16 @@ func init() { proto.RegisterType((*TunnelEncapSubTLVEncapsulation)(nil), "gobgpapi.TunnelEncapSubTLVEncapsulation") proto.RegisterType((*TunnelEncapSubTLVProtocol)(nil), "gobgpapi.TunnelEncapSubTLVProtocol") proto.RegisterType((*TunnelEncapSubTLVColor)(nil), "gobgpapi.TunnelEncapSubTLVColor") + proto.RegisterType((*TunnelEncapSubTLVSRPreference)(nil), "gobgpapi.TunnelEncapSubTLVSRPreference") + proto.RegisterType((*SRBindingSID)(nil), "gobgpapi.SRBindingSID") + proto.RegisterType((*SRv6EndPpointBehavior)(nil), "gobgpapi.SRv6EndPpointBehavior") + proto.RegisterType((*SRv6BindingSID)(nil), "gobgpapi.SRv6BindingSID") + proto.RegisterType((*TunnelEncapSubTLVSRENLP)(nil), "gobgpapi.TunnelEncapSubTLVSRENLP") + proto.RegisterType((*SRWeight)(nil), "gobgpapi.SRWeight") + proto.RegisterType((*SegmentFlags)(nil), "gobgpapi.SegmentFlags") + proto.RegisterType((*SegmentTypeA)(nil), "gobgpapi.SegmentTypeA") + proto.RegisterType((*SegmentList)(nil), "gobgpapi.SegmentList") + proto.RegisterType((*TunnelEncapSubTLVSRPolicy)(nil), "gobgpapi.TunnelEncapSubTLVSRPolicy") proto.RegisterType((*TunnelEncapSubTLVUnknown)(nil), "gobgpapi.TunnelEncapSubTLVUnknown") proto.RegisterType((*TunnelEncapTLV)(nil), "gobgpapi.TunnelEncapTLV") proto.RegisterType((*TunnelEncapAttribute)(nil), "gobgpapi.TunnelEncapAttribute") @@ -3252,228 +3804,274 @@ func init() { proto.RegisterType((*PrefixSID)(nil), "gobgpapi.PrefixSID") proto.RegisterEnum("gobgpapi.LsNLRIType", LsNLRIType_name, LsNLRIType_value) proto.RegisterEnum("gobgpapi.LsProtocolID", LsProtocolID_name, LsProtocolID_value) + proto.RegisterEnum("gobgpapi.SRv6Behavior", SRv6Behavior_name, SRv6Behavior_value) } func init() { proto.RegisterFile("attribute.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3479 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x39, 0xcb, 0x72, 0x1c, 0x47, - 0x72, 0x9e, 0x07, 0xc0, 0x99, 0x9c, 0x57, 0xa3, 0x01, 0xc2, 0x03, 0x50, 0x14, 0xe9, 0xd6, 0x4a, - 0x84, 0x49, 0x09, 0x32, 0x41, 0x68, 0x76, 0x25, 0xc5, 0xda, 0x31, 0x04, 0x40, 0xee, 0x58, 0x03, - 0x60, 0xd4, 0x03, 0x62, 0xed, 0x8b, 0xdb, 0x3d, 0xdd, 0x35, 0x8d, 0x32, 0x7a, 0xba, 0x7b, 0xab, - 0xba, 0x87, 0xc4, 0xc9, 0x11, 0x3e, 0x38, 0x62, 0xc3, 0x61, 0x87, 0x4f, 0x8e, 0x8d, 0xd8, 0x8b, - 0x2f, 0x76, 0x84, 0xfd, 0x01, 0xbe, 0xf8, 0x0b, 0x7c, 0xf6, 0xb7, 0xf8, 0xee, 0xa8, 0x57, 0x3f, - 0x06, 0x03, 0x3e, 0x44, 0x29, 0x82, 0xb7, 0xca, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0x7c, 0x15, - 0x74, 0xec, 0x38, 0x26, 0x78, 0x92, 0xc4, 0x68, 0x37, 0x22, 0x61, 0x1c, 0xea, 0x35, 0x2f, 0x9c, - 0x78, 0x91, 0x1d, 0xe1, 0xed, 0x2d, 0x2f, 0x0c, 0x3d, 0x1f, 0x7d, 0xc9, 0xf1, 0x93, 0x64, 0xfa, - 0xa5, 0x1d, 0x5c, 0x09, 0xa2, 0xed, 0x06, 0x27, 0x12, 0x80, 0xf1, 0xc7, 0xd0, 0x39, 0x25, 0xd8, - 0xc3, 0x41, 0x5f, 0xb1, 0xd2, 0x37, 0x61, 0x35, 0xe4, 0xa8, 0x6e, 0xe9, 0x7e, 0x69, 0xa7, 0x65, - 0x4a, 0xc8, 0xf8, 0x1a, 0xea, 0x7d, 0x3a, 0x46, 0xde, 0x0c, 0x05, 0xb1, 0xae, 0x43, 0x35, 0xbe, - 0x8a, 0x90, 0x24, 0xe1, 0x63, 0xbd, 0x0b, 0xb7, 0x82, 0x64, 0x36, 0x41, 0x84, 0x76, 0xcb, 0xf7, - 0x2b, 0x3b, 0x2d, 0x53, 0x81, 0xc6, 0x53, 0xe8, 0xf4, 0xe9, 0xc8, 0x8e, 0x2f, 0xb2, 0x5d, 0xbe, - 0x84, 0x1a, 0x15, 0xbc, 0x68, 0xb7, 0x74, 0xbf, 0xb2, 0xd3, 0xd8, 0x5b, 0xdf, 0x55, 0xd2, 0xef, - 0xa6, 0xfb, 0x98, 0x29, 0x91, 0xf1, 0x05, 0x68, 0x27, 0xe8, 0x55, 0xfc, 0xab, 0x30, 0xca, 0x98, - 0x6c, 0x41, 0x2d, 0x40, 0xaf, 0x62, 0xeb, 0x22, 0x8c, 0xb8, 0x24, 0x75, 0xf3, 0x56, 0x20, 0x68, - 0x8c, 0x87, 0xb0, 0x79, 0x9c, 0xf8, 0x31, 0x3e, 0x7a, 0x85, 0xe3, 0x43, 0x4c, 0x9d, 0x6c, 0x91, - 0x06, 0x95, 0x19, 0x72, 0xa5, 0xe4, 0x6c, 0x68, 0x3c, 0x01, 0x7d, 0x18, 0x3a, 0xb6, 0x3f, 0x22, - 0x68, 0x9a, 0xd1, 0xdd, 0x05, 0xf0, 0x19, 0xd6, 0x8a, 0x08, 0x9a, 0x4a, 0xf2, 0xba, 0xaf, 0xe8, - 0x8c, 0x6d, 0xe8, 0xf6, 0xe3, 0x70, 0x86, 0x9d, 0xbe, 0xe7, 0x11, 0xe4, 0xd9, 0x31, 0x4a, 0x97, - 0x1a, 0x7f, 0x06, 0xeb, 0x0a, 0x1b, 0x92, 0x8c, 0x63, 0x1b, 0xca, 0x36, 0xd3, 0x0d, 0xe3, 0x54, - 0xb6, 0x29, 0x53, 0x98, 0xed, 0xba, 0x04, 0x51, 0xda, 0xad, 0x08, 0xe9, 0x25, 0x68, 0xfc, 0x02, - 0x36, 0x0e, 0xc2, 0xd9, 0x2c, 0x09, 0x70, 0x8c, 0x11, 0xcd, 0x38, 0xdc, 0x87, 0x86, 0x93, 0xe1, - 0xb9, 0xe2, 0x5a, 0x66, 0x1e, 0x65, 0x3c, 0x80, 0xdb, 0xe2, 0x42, 0xd9, 0xd6, 0x03, 0xb7, 0xb0, - 0x39, 0x76, 0xa5, 0x96, 0xca, 0xd8, 0x35, 0x76, 0x60, 0xe3, 0xc0, 0x4f, 0x68, 0x8c, 0xc8, 0x10, - 0xd3, 0xb8, 0xa0, 0x1e, 0xec, 0x0a, 0xd6, 0x75, 0x93, 0x0d, 0x8d, 0x5f, 0x41, 0x67, 0x30, 0xea, - 0x0b, 0xc9, 0xd8, 0xd1, 0xf1, 0x2b, 0xa6, 0x9b, 0x88, 0x8f, 0x2c, 0x1f, 0x29, 0x3b, 0xa9, 0x0b, - 0xcc, 0x10, 0x05, 0xcc, 0x84, 0x04, 0xc0, 0x0f, 0x5b, 0x37, 0x25, 0x64, 0x78, 0xb0, 0x39, 0xb4, - 0x27, 0xc8, 0x47, 0xee, 0x22, 0xc3, 0x4d, 0x58, 0xf5, 0xd9, 0x8c, 0x3a, 0x93, 0x84, 0x16, 0x36, - 0x2a, 0xdf, 0xbc, 0x51, 0xa5, 0xb0, 0xd1, 0x17, 0xb0, 0x76, 0x14, 0x38, 0x76, 0x44, 0x13, 0xdf, - 0x8e, 0x71, 0x18, 0x9c, 0x0c, 0xcd, 0x41, 0x5e, 0xdd, 0xa5, 0xa2, 0xba, 0x47, 0xf0, 0x91, 0x19, - 0x26, 0x31, 0x3a, 0xc4, 0x34, 0xc6, 0x81, 0x97, 0x60, 0x7a, 0x81, 0xc8, 0xd9, 0xcb, 0xf0, 0xd4, - 0x89, 0x51, 0xdc, 0x1f, 0xeb, 0x1b, 0xb0, 0x62, 0xbb, 0xb3, 0xf4, 0x45, 0x08, 0x40, 0xdf, 0x86, - 0x9a, 0x4d, 0x29, 0xf6, 0x02, 0xe4, 0x4a, 0xc9, 0x52, 0xd8, 0x38, 0x85, 0x3b, 0xd7, 0x39, 0xa6, - 0x87, 0x2e, 0x32, 0xac, 0xbf, 0x0d, 0xc3, 0xef, 0xe1, 0xee, 0x75, 0x86, 0xcf, 0xc2, 0x84, 0xfc, - 0x70, 0x19, 0x8f, 0x60, 0xeb, 0x28, 0xbe, 0x40, 0x24, 0x40, 0xb1, 0x7c, 0x6e, 0x03, 0x17, 0x05, - 0x31, 0x9e, 0x62, 0x44, 0x96, 0x3e, 0xf0, 0x0d, 0x58, 0x99, 0xdb, 0x7e, 0x82, 0x38, 0xa7, 0xa6, - 0x29, 0x00, 0xe3, 0xbf, 0x4a, 0xf0, 0xf1, 0xd1, 0xf9, 0xe8, 0x44, 0xf1, 0xea, 0x27, 0x71, 0xc8, - 0x5e, 0x5c, 0x38, 0x47, 0xe4, 0x8a, 0xcb, 0xac, 0xff, 0x0c, 0xca, 0x44, 0xd8, 0x5e, 0x63, 0x6f, - 0x63, 0x57, 0xb8, 0xa6, 0x5d, 0xe5, 0x9a, 0x76, 0xfb, 0xc1, 0x95, 0x59, 0x26, 0xae, 0xfe, 0x15, - 0x54, 0x10, 0xc5, 0x9c, 0x79, 0x63, 0xef, 0x93, 0xcc, 0x1b, 0xdc, 0x28, 0xa4, 0xc9, 0xe8, 0xf5, - 0x3f, 0x82, 0x26, 0x92, 0x14, 0x56, 0x6c, 0x7b, 0xdc, 0x12, 0x5a, 0x66, 0x43, 0xe1, 0xce, 0x6c, - 0x8f, 0x09, 0xce, 0xed, 0xa9, 0x5b, 0x15, 0xba, 0xe1, 0x80, 0xf1, 0x7f, 0x25, 0xb8, 0xc3, 0x04, - 0x3f, 0xee, 0x1f, 0xb0, 0x9b, 0x99, 0x23, 0x12, 0x63, 0x8a, 0xb8, 0xdb, 0xf9, 0x20, 0xa4, 0xbe, - 0x07, 0x8d, 0x99, 0xed, 0x58, 0xca, 0x66, 0xab, 0xdc, 0x54, 0x60, 0x66, 0x3b, 0xca, 0x8a, 0xee, - 0x02, 0xe0, 0x28, 0x9d, 0x5f, 0xe1, 0xf3, 0x75, 0x1c, 0xa9, 0xe9, 0xec, 0x4d, 0xad, 0xe6, 0xdf, - 0x94, 0xf1, 0xcf, 0x25, 0xf8, 0x8c, 0x9d, 0x7b, 0x10, 0x38, 0x7e, 0x42, 0xf1, 0x1c, 0x71, 0x47, - 0xe9, 0xd8, 0x34, 0x3e, 0xca, 0x76, 0x7f, 0x17, 0x15, 0x2c, 0x9e, 0xa5, 0x7c, 0xfd, 0x2c, 0x45, - 0x51, 0x2b, 0x0b, 0xa2, 0x1a, 0xff, 0x52, 0x82, 0x6e, 0xde, 0x86, 0x94, 0xfb, 0xff, 0xe9, 0xef, - 0xe1, 0x0d, 0x82, 0xfd, 0xb6, 0x0c, 0x6b, 0x5c, 0x57, 0x23, 0xe1, 0xa8, 0x3e, 0x0c, 0xcb, 0xb8, - 0x03, 0x75, 0x1c, 0x59, 0xd2, 0xf3, 0x09, 0xbb, 0xa8, 0xe1, 0x48, 0xba, 0x52, 0x03, 0x5a, 0xe9, - 0x24, 0xf7, 0x9a, 0x2b, 0x82, 0x81, 0x22, 0x60, 0x7e, 0xf3, 0x2e, 0x80, 0xf7, 0x32, 0x3d, 0xf5, - 0xaa, 0x38, 0xb5, 0xf7, 0x32, 0xe7, 0x9e, 0xc4, 0x7b, 0xb9, 0x95, 0x7f, 0x2f, 0x7f, 0x0b, 0x6d, - 0xa1, 0x8a, 0xe3, 0xf1, 0xe0, 0x47, 0x36, 0x0f, 0xc6, 0x28, 0xe6, 0x27, 0xbd, 0x99, 0x51, 0xcc, - 0x0c, 0x77, 0x4b, 0xc6, 0x0f, 0x2e, 0xc7, 0xdb, 0x85, 0x10, 0x21, 0x64, 0xf9, 0x0d, 0x42, 0x16, - 0x03, 0x4d, 0xe5, 0xe6, 0x40, 0x53, 0x2d, 0x04, 0x9a, 0xef, 0x61, 0x8b, 0xab, 0xe2, 0xcc, 0x26, - 0x1e, 0x8a, 0x8f, 0x11, 0xcf, 0x77, 0x2e, 0x70, 0xc4, 0x03, 0x8e, 0x88, 0xf7, 0xa5, 0x34, 0xde, - 0x8b, 0x53, 0x96, 0xdf, 0x70, 0xca, 0x04, 0xb4, 0x67, 0x7e, 0xf8, 0x72, 0x1c, 0x21, 0x47, 0x59, - 0xdd, 0x52, 0x6f, 0xfc, 0xc3, 0x42, 0x23, 0x4f, 0xef, 0xa6, 0x53, 0x8a, 0x62, 0xe9, 0x0c, 0x25, - 0x64, 0x7c, 0x0b, 0x0d, 0xb5, 0xed, 0x71, 0xff, 0xe0, 0xa6, 0x04, 0x4f, 0x99, 0x4c, 0xb9, 0x18, - 0x40, 0x7f, 0x09, 0xb7, 0xd5, 0xe2, 0x83, 0x70, 0x16, 0x85, 0x01, 0xb3, 0xeb, 0x18, 0xcd, 0x98, - 0x0a, 0x64, 0x6e, 0xd6, 0x32, 0xcb, 0x61, 0x54, 0x0c, 0x21, 0x55, 0x15, 0x42, 0xfe, 0x0a, 0xd6, - 0xae, 0x2d, 0x5f, 0x2a, 0xc1, 0x57, 0xb0, 0x82, 0x63, 0x34, 0x13, 0x09, 0x66, 0x63, 0xef, 0x5e, - 0xf6, 0xa8, 0x96, 0x6e, 0x6f, 0x0a, 0x6a, 0xe3, 0x1b, 0x68, 0xaa, 0x79, 0x7e, 0x31, 0x0f, 0x61, - 0x85, 0x24, 0x3e, 0x52, 0x99, 0xe7, 0xf2, 0xbb, 0x10, 0x24, 0x86, 0x03, 0x9d, 0xf3, 0xd1, 0x49, - 0x61, 0xf9, 0xdb, 0x99, 0x7d, 0xba, 0x49, 0xf9, 0xcd, 0x9b, 0xec, 0x03, 0x9c, 0x46, 0xf6, 0x6f, - 0x12, 0xc4, 0xf9, 0x6b, 0x50, 0xb9, 0x44, 0x57, 0x7c, 0x83, 0xa6, 0xc9, 0x86, 0x37, 0x44, 0xde, - 0x7f, 0x2f, 0x81, 0x36, 0xa4, 0x27, 0xa1, 0x8b, 0x0e, 0x11, 0x75, 0x08, 0x8e, 0xe2, 0x90, 0xb0, - 0xc5, 0x36, 0x55, 0x59, 0x00, 0x1b, 0xea, 0xdb, 0x50, 0x9f, 0x78, 0x91, 0xe5, 0x53, 0x0b, 0xab, - 0x24, 0xe0, 0xd6, 0xc4, 0x8b, 0x86, 0x74, 0xe0, 0xea, 0xf7, 0xa1, 0x19, 0xd2, 0x68, 0x6a, 0xd9, - 0x04, 0xd9, 0x6c, 0x5a, 0x18, 0x3e, 0x30, 0x5c, 0x9f, 0x20, 0x7b, 0xe0, 0xea, 0x1f, 0x03, 0x44, - 0x14, 0x25, 0x6e, 0x18, 0x84, 0x2e, 0xe2, 0x36, 0x53, 0x33, 0x73, 0x18, 0xee, 0x6e, 0xbc, 0xc8, - 0x22, 0xec, 0x15, 0x10, 0xc6, 0x42, 0xc4, 0xa1, 0x06, 0xf6, 0x22, 0xfe, 0x32, 0xc8, 0xc0, 0x35, - 0x7e, 0x57, 0x66, 0x82, 0x0e, 0x71, 0x70, 0x99, 0x13, 0xd4, 0x80, 0x96, 0x8f, 0x83, 0x4b, 0x4b, - 0x24, 0xd9, 0x58, 0x65, 0xe4, 0x0d, 0x86, 0xe4, 0xe9, 0xf8, 0xc0, 0xd5, 0x7f, 0x06, 0x6d, 0x4e, - 0x43, 0xd0, 0x2c, 0x8c, 0x51, 0x26, 0x7f, 0x93, 0x61, 0x4d, 0x8e, 0x1c, 0xb8, 0xfa, 0x2e, 0xac, - 0xe3, 0x20, 0x46, 0x64, 0x6a, 0x3b, 0x88, 0x3b, 0x35, 0x0b, 0x47, 0xf3, 0x7d, 0x69, 0xf7, 0x6b, - 0xe9, 0x14, 0x73, 0x17, 0x83, 0x68, 0xbe, 0xaf, 0x7f, 0x0e, 0x7a, 0x80, 0xb0, 0x77, 0x31, 0x09, - 0x49, 0x8e, 0x5c, 0x3c, 0x6c, 0x4d, 0xcd, 0xa4, 0xd4, 0x4b, 0xb9, 0xf7, 0xe4, 0x31, 0xaf, 0x71, - 0xef, 0x2d, 0xe5, 0xde, 0x93, 0x3e, 0x76, 0x91, 0x7b, 0xcf, 0x40, 0xa0, 0x0f, 0xa5, 0x07, 0xcb, - 0xe9, 0xe6, 0x01, 0x74, 0x70, 0x64, 0x11, 0x64, 0x3b, 0x17, 0xf6, 0x04, 0xfb, 0x38, 0xbe, 0x92, - 0x09, 0x79, 0x1b, 0x47, 0x66, 0x0e, 0xab, 0x7f, 0x06, 0x1d, 0x7e, 0x7f, 0x5c, 0xfd, 0x16, 0x7f, - 0x2f, 0xe2, 0x69, 0xb6, 0x18, 0x5a, 0xb8, 0xa6, 0xab, 0x08, 0x19, 0xcf, 0x01, 0x84, 0xa5, 0x70, - 0x03, 0xfb, 0x5a, 0x95, 0x36, 0xfc, 0x4e, 0x85, 0x21, 0x6f, 0x67, 0x6f, 0x69, 0xd1, 0xa6, 0x64, - 0xd9, 0xc3, 0x90, 0xc6, 0xff, 0x94, 0x18, 0x27, 0x76, 0x95, 0xef, 0xc9, 0x49, 0xff, 0x16, 0x1a, - 0xf2, 0x5a, 0xf9, 0xda, 0xf2, 0x1b, 0xd7, 0x82, 0x20, 0xe7, 0x8b, 0x0f, 0xa0, 0xc3, 0x0d, 0xc3, - 0x4d, 0xa7, 0x65, 0xf4, 0x28, 0x30, 0x28, 0x5a, 0x9c, 0xc9, 0x6d, 0x29, 0x83, 0x59, 0xd6, 0xd1, - 0x56, 0xca, 0x3f, 0xdf, 0x7f, 0xdf, 0xf3, 0x0c, 0x60, 0x4d, 0xfa, 0xe3, 0x9c, 0x50, 0xe2, 0x54, - 0x1f, 0xe5, 0x39, 0x2c, 0x5e, 0xb6, 0xa9, 0x45, 0x0b, 0x98, 0xa2, 0x60, 0xbd, 0x0f, 0x48, 0xb0, - 0xff, 0x2d, 0x41, 0x73, 0x48, 0x99, 0xf1, 0xca, 0xc0, 0xb4, 0x93, 0x73, 0xd2, 0x6d, 0xee, 0xe3, - 0x32, 0x81, 0x86, 0xe6, 0x80, 0xd9, 0x9e, 0x74, 0xdd, 0x3b, 0x50, 0x0d, 0x7c, 0x82, 0x5f, 0x1b, - 0xfe, 0x38, 0x05, 0x0f, 0xe4, 0x28, 0xf0, 0xe2, 0x0b, 0xe9, 0x8d, 0x24, 0xa4, 0xff, 0x1c, 0x1a, - 0x9c, 0xda, 0x09, 0xb9, 0xbb, 0xa8, 0xf2, 0x2d, 0x37, 0x8b, 0x27, 0x10, 0xd3, 0x83, 0x43, 0x13, - 0x14, 0xa9, 0x70, 0x61, 0x38, 0x4d, 0xb2, 0xf8, 0xc3, 0xad, 0x9a, 0x39, 0x8c, 0xf1, 0xdb, 0x12, - 0x6c, 0x1c, 0x8b, 0x77, 0xc5, 0x84, 0xce, 0x6a, 0xe1, 0x1d, 0x58, 0x9d, 0xda, 0x33, 0xec, 0x5f, - 0x49, 0x85, 0x6b, 0xb9, 0x78, 0xc3, 0xf1, 0xa6, 0x9c, 0x67, 0x19, 0x99, 0xea, 0x44, 0x08, 0x87, - 0x5f, 0x37, 0x6b, 0xb2, 0x15, 0x41, 0x59, 0x24, 0x60, 0x07, 0x63, 0xe9, 0xe5, 0x6b, 0x22, 0x01, - 0x27, 0x31, 0x02, 0xd8, 0x3c, 0x8e, 0x5e, 0x04, 0xe4, 0x7d, 0x84, 0x79, 0x97, 0xfd, 0xfe, 0xb1, - 0x04, 0xdb, 0x69, 0xa5, 0x4b, 0x59, 0x88, 0xc3, 0x53, 0xec, 0x1c, 0xbd, 0x8a, 0x51, 0xe0, 0x22, - 0x57, 0xff, 0x04, 0x5a, 0x98, 0x5a, 0x31, 0xb1, 0x03, 0x8a, 0x63, 0x3c, 0x17, 0x17, 0x5d, 0x33, - 0x9b, 0x98, 0x9e, 0xa5, 0x38, 0x7d, 0x0b, 0x6a, 0x34, 0x99, 0x64, 0xde, 0xa7, 0x65, 0xde, 0xa2, - 0xc9, 0x84, 0xdd, 0xbd, 0x4c, 0x81, 0x2a, 0x69, 0x0a, 0x74, 0x0f, 0x1a, 0xc2, 0x8c, 0x45, 0xad, - 0x2a, 0x52, 0x10, 0x61, 0xd9, 0x7d, 0x86, 0x31, 0x7e, 0x57, 0x82, 0x3b, 0x83, 0xd1, 0x7c, 0x5f, - 0xe6, 0x76, 0x3f, 0xba, 0x40, 0x37, 0xf6, 0x5c, 0xde, 0x2c, 0xda, 0x3f, 0x95, 0xe0, 0x4e, 0x56, - 0x71, 0x7f, 0x00, 0xba, 0x7a, 0x08, 0xfa, 0xb9, 0xed, 0x63, 0x97, 0xb7, 0x38, 0x52, 0x31, 0x36, - 0x60, 0x85, 0xc6, 0x76, 0xac, 0x12, 0x27, 0x01, 0x18, 0x9f, 0x42, 0xeb, 0x20, 0xf4, 0x43, 0x92, - 0x27, 0x73, 0x18, 0x42, 0x91, 0x71, 0xc0, 0xf8, 0x13, 0x68, 0xf1, 0xc6, 0x49, 0x4a, 0x76, 0x0f, - 0x1a, 0x71, 0x12, 0x04, 0xc8, 0xb7, 0x72, 0xc9, 0x18, 0x08, 0x14, 0x8f, 0x2c, 0x5d, 0xd8, 0x3c, - 0x44, 0x53, 0x3b, 0xf1, 0xe3, 0xe7, 0x76, 0x8c, 0x5e, 0xda, 0x57, 0x6a, 0xa9, 0xf1, 0x1d, 0xb4, - 0x45, 0x52, 0xf3, 0x6e, 0x1a, 0x4a, 0x73, 0x9d, 0x4a, 0x3e, 0xd7, 0x31, 0x41, 0x3b, 0x1a, 0x0f, - 0x78, 0xf6, 0x9f, 0xb2, 0xdb, 0x01, 0x0d, 0x53, 0x8b, 0xe2, 0xc0, 0xf3, 0x91, 0x65, 0x3b, 0x39, - 0x8e, 0x6d, 0x4c, 0xc7, 0x1c, 0xdd, 0x77, 0x14, 0x4f, 0x51, 0xd0, 0x94, 0xf3, 0x05, 0xcd, 0x1e, - 0xac, 0x1f, 0x8d, 0x07, 0xb3, 0x28, 0x24, 0x71, 0x2e, 0x89, 0x67, 0x6f, 0x19, 0x51, 0x0b, 0x73, - 0xbc, 0x6c, 0xd0, 0xd4, 0x10, 0x15, 0x74, 0xc6, 0x0b, 0x58, 0x3f, 0xb6, 0x9d, 0xe3, 0x50, 0xc4, - 0xdf, 0x54, 0x14, 0x56, 0x91, 0x51, 0x8b, 0xc6, 0xd8, 0xb9, 0xbc, 0x92, 0x32, 0xd4, 0x30, 0x1d, - 0x73, 0x98, 0x15, 0x40, 0x14, 0xfd, 0x26, 0x41, 0x81, 0x83, 0xac, 0x20, 0x99, 0xa9, 0x02, 0x48, - 0xe1, 0x4e, 0x92, 0x99, 0xf1, 0x29, 0xac, 0x89, 0x6c, 0xe9, 0xd8, 0xce, 0x0c, 0x4a, 0x83, 0xca, - 0xcc, 0x76, 0xa4, 0x08, 0x6c, 0x68, 0x7c, 0x0d, 0xeb, 0x67, 0xc4, 0x9e, 0x4e, 0xb1, 0x63, 0xda, - 0x71, 0xa6, 0xd7, 0xc5, 0x42, 0x43, 0x87, 0x2a, 0x61, 0x16, 0xc0, 0x36, 0x2a, 0x9b, 0x7c, 0x6c, - 0x7c, 0x07, 0xb7, 0xe5, 0x52, 0xa6, 0x93, 0x9c, 0xbd, 0x6c, 0x43, 0x2d, 0x46, 0x64, 0x86, 0x03, - 0xdb, 0x57, 0x92, 0x2b, 0x98, 0xb9, 0x62, 0x6a, 0xcf, 0x22, 0x5f, 0xb0, 0xaa, 0x99, 0x12, 0x32, - 0x5e, 0x80, 0x61, 0x22, 0x17, 0x13, 0xe4, 0xc4, 0xaf, 0x71, 0x1e, 0x8b, 0x62, 0x2d, 0x18, 0x74, - 0xf9, 0x9a, 0x41, 0xff, 0x35, 0x7c, 0xa2, 0xd8, 0xbe, 0xce, 0x07, 0xdc, 0xd8, 0xc8, 0x7b, 0xf3, - 0x0e, 0xe7, 0xd9, 0x0e, 0xaf, 0x7b, 0xca, 0xef, 0x2c, 0xf9, 0xa3, 0x54, 0xbb, 0x26, 0x9a, 0xd9, - 0xe4, 0x32, 0xe5, 0xa4, 0x43, 0xd5, 0xa5, 0x8e, 0x2a, 0x81, 0xf8, 0xd8, 0xf8, 0x16, 0x3a, 0x2f, - 0x82, 0xcb, 0x20, 0x7c, 0x19, 0xe4, 0xc9, 0xde, 0xb2, 0xdd, 0x76, 0x0e, 0x1f, 0xa9, 0x55, 0x4b, - 0x5b, 0xc4, 0xbd, 0xeb, 0x2d, 0xe2, 0x9b, 0x42, 0x40, 0xa1, 0x71, 0x7c, 0x00, 0x5a, 0x9f, 0xee, - 0xbf, 0x67, 0x93, 0xfe, 0x29, 0x6c, 0xf6, 0xe9, 0xfe, 0xfb, 0xf5, 0xbe, 0x11, 0xac, 0x8f, 0x66, - 0x14, 0x9f, 0x71, 0x17, 0x93, 0x31, 0xd8, 0x80, 0x95, 0xa9, 0x6f, 0x7b, 0xea, 0x56, 0x04, 0x90, - 0xea, 0xad, 0x5c, 0xd4, 0x9b, 0x78, 0xec, 0x95, 0xdc, 0x63, 0x97, 0xfd, 0xef, 0x2a, 0x57, 0x65, - 0x19, 0xbb, 0xc6, 0x9f, 0xc3, 0xc7, 0x62, 0x0b, 0xee, 0xef, 0xc6, 0xc9, 0xe4, 0x6c, 0x78, 0x5e, - 0xe8, 0x19, 0xe7, 0xcb, 0xb0, 0x96, 0x28, 0xc3, 0x36, 0x61, 0xd5, 0x09, 0xc3, 0x4b, 0xac, 0xae, - 0x44, 0x42, 0xc6, 0xcf, 0x61, 0xeb, 0x1a, 0x2f, 0x95, 0x8b, 0xb0, 0xf7, 0xa5, 0x72, 0x11, 0xc9, - 0x2b, 0x85, 0x8d, 0x5d, 0xd8, 0xbc, 0xb6, 0x90, 0xbb, 0xe9, 0x1b, 0xdc, 0xf3, 0x21, 0x74, 0xaf, - 0xd1, 0x4b, 0x53, 0x7a, 0x07, 0x13, 0x3a, 0x81, 0x76, 0x8e, 0xcb, 0xd9, 0xf0, 0x7c, 0xe9, 0x5a, - 0x96, 0xda, 0xf9, 0xf3, 0xd7, 0x97, 0xaf, 0x9c, 0xc2, 0x38, 0x84, 0x8d, 0x1c, 0xbf, 0xec, 0xca, - 0x3e, 0x97, 0x1c, 0x84, 0xe9, 0x74, 0x33, 0xd3, 0x29, 0xee, 0x2e, 0xb9, 0xc8, 0xc8, 0xdf, 0xfb, - 0x00, 0x23, 0x7f, 0xd1, 0x2f, 0xf5, 0x7e, 0x02, 0xbf, 0xf4, 0x97, 0x70, 0x6f, 0x30, 0xea, 0xfd, - 0x24, 0x0f, 0xfb, 0x21, 0x68, 0x7d, 0xec, 0x31, 0x45, 0x0f, 0x9e, 0x8f, 0x8e, 0x51, 0x4c, 0xb0, - 0xc3, 0x0c, 0x79, 0xc6, 0x47, 0x5c, 0xd0, 0xaa, 0x29, 0x21, 0xe3, 0x1b, 0x68, 0x4b, 0xda, 0x77, - 0xb7, 0xaa, 0xaf, 0xa1, 0xc5, 0xd6, 0xe6, 0x13, 0xd6, 0xfc, 0xf5, 0xbf, 0xce, 0x80, 0x12, 0x68, - 0x0f, 0x59, 0xec, 0x55, 0xe7, 0xe6, 0x21, 0xd3, 0xf3, 0xc3, 0x49, 0xaa, 0x31, 0xd9, 0x1b, 0x10, - 0x38, 0xae, 0xb2, 0x4c, 0xa7, 0xae, 0x1d, 0xdb, 0x8f, 0x0b, 0x3a, 0x3d, 0x64, 0x98, 0x22, 0xc1, - 0x9e, 0x6a, 0x6d, 0xa4, 0x04, 0x7b, 0xc6, 0xaf, 0x61, 0xab, 0xb0, 0x6d, 0x41, 0xdd, 0xdf, 0x2c, - 0x53, 0x77, 0xce, 0x86, 0x8b, 0x02, 0x17, 0x55, 0xfe, 0xfb, 0x12, 0x34, 0x44, 0x45, 0xf6, 0x8c, - 0x7b, 0xa9, 0x6d, 0xa8, 0x85, 0x73, 0x44, 0xfc, 0xd0, 0x76, 0x55, 0x88, 0x55, 0x30, 0xff, 0xa1, - 0x89, 0x63, 0xdb, 0xb9, 0x90, 0x3f, 0x34, 0x35, 0x33, 0x85, 0xd9, 0x1c, 0x7a, 0x15, 0x23, 0xc2, - 0x42, 0x73, 0x45, 0xcc, 0x29, 0x98, 0xf7, 0x79, 0x26, 0x44, 0x36, 0x64, 0xd8, 0x90, 0x5d, 0xaa, - 0xe8, 0xc2, 0xf0, 0x12, 0xa7, 0x66, 0x4a, 0x88, 0x79, 0x3e, 0xd9, 0x80, 0xa8, 0x99, 0xe5, 0x79, - 0xcf, 0xf8, 0x07, 0x5e, 0xc2, 0x0f, 0x9e, 0x8f, 0x9e, 0x29, 0x17, 0xea, 0x86, 0x2f, 0x03, 0x29, - 0x18, 0x1f, 0xeb, 0x77, 0x01, 0x82, 0xd0, 0x4a, 0x02, 0xfe, 0x2b, 0x20, 0xc5, 0xaa, 0x07, 0xe1, - 0x0b, 0x81, 0x60, 0x4f, 0x51, 0x99, 0x73, 0xf6, 0xa0, 0x6a, 0x66, 0x53, 0x1a, 0xb4, 0xb0, 0xf9, - 0x4f, 0xa1, 0x1d, 0x91, 0x30, 0xb2, 0x3d, 0x9b, 0x95, 0xf8, 0x94, 0xda, 0x52, 0xd6, 0x56, 0x8a, - 0x3d, 0xa1, 0xd4, 0x36, 0x9e, 0x40, 0x7d, 0x48, 0xc7, 0xc4, 0xb4, 0x03, 0x8f, 0x5b, 0xd6, 0x04, - 0x65, 0x5f, 0xcf, 0x02, 0x60, 0x47, 0x45, 0x81, 0x6a, 0xfd, 0xb0, 0x21, 0xab, 0x5a, 0x34, 0xb6, - 0xea, 0xc0, 0x8e, 0x44, 0x27, 0x04, 0x23, 0xbe, 0x21, 0x8e, 0xe6, 0xfb, 0x16, 0x4d, 0x22, 0x96, - 0xaa, 0x21, 0xa5, 0xeb, 0x16, 0xc3, 0x8e, 0x15, 0x52, 0x92, 0xf5, 0x72, 0x64, 0xe5, 0x94, 0xac, - 0x97, 0x91, 0x3d, 0x82, 0x55, 0xc2, 0x64, 0x52, 0x55, 0xd4, 0x7a, 0xbe, 0xd0, 0x94, 0xf2, 0x9a, - 0x92, 0xc4, 0xf8, 0x25, 0xab, 0xd7, 0xc7, 0x84, 0xb7, 0xad, 0x9e, 0xfa, 0xa1, 0x73, 0x99, 0x5b, - 0x5e, 0x7a, 0xf3, 0xf2, 0xbf, 0xaf, 0x40, 0x67, 0x98, 0xd9, 0x1e, 0xaf, 0xda, 0x75, 0xa8, 0x06, - 0xf6, 0x0c, 0x49, 0x4f, 0xc2, 0xc7, 0xfa, 0x23, 0x15, 0x03, 0x45, 0x11, 0x7d, 0x7b, 0xb1, 0xfe, - 0xe7, 0x17, 0xaa, 0x42, 0xe3, 0x67, 0xd0, 0x11, 0x97, 0x94, 0xb5, 0xe6, 0x84, 0xdf, 0x13, 0x77, - 0xa7, 0x9a, 0x73, 0xfa, 0x23, 0xd0, 0x17, 0xe8, 0xac, 0x79, 0x4f, 0x76, 0xc3, 0x3a, 0x05, 0xd2, - 0xf3, 0x9e, 0xc8, 0x73, 0x31, 0xe5, 0xfd, 0x42, 0x6e, 0x66, 0x4d, 0x96, 0xe7, 0x62, 0xda, 0x27, - 0xc8, 0xe6, 0xad, 0x65, 0x9e, 0xf0, 0x73, 0x63, 0x6b, 0x9a, 0x12, 0xd2, 0x0f, 0xa0, 0x43, 0x89, - 0xe5, 0xe4, 0xee, 0x8a, 0x7f, 0x2c, 0x2c, 0x34, 0x30, 0x8a, 0xb7, 0x69, 0xb6, 0x69, 0xf1, 0x76, - 0x3f, 0x81, 0x16, 0x25, 0x96, 0xed, 0x7b, 0x21, 0xc1, 0xf1, 0xc5, 0x8c, 0x76, 0x6b, 0x7c, 0x8f, - 0x26, 0x25, 0xfd, 0x14, 0xa7, 0xff, 0x29, 0xb4, 0x29, 0x91, 0x1d, 0xc5, 0x09, 0xbb, 0x87, 0x6e, - 0x9d, 0x6f, 0xd4, 0x2d, 0x6e, 0x94, 0xdd, 0x13, 0x5b, 0x9f, 0x41, 0xc6, 0xef, 0xab, 0x85, 0x8b, - 0x18, 0xe2, 0xe0, 0x72, 0xe9, 0x45, 0x2c, 0xd1, 0x6d, 0xf9, 0xed, 0x75, 0x5b, 0x59, 0xae, 0xdb, - 0x1d, 0xd0, 0x64, 0x43, 0x2c, 0xe3, 0x2a, 0xae, 0xa1, 0x2d, 0xf0, 0x29, 0xdb, 0x2f, 0x60, 0x7d, - 0x91, 0xd2, 0x4a, 0x5b, 0x92, 0x5a, 0x91, 0xf8, 0xbc, 0xc7, 0x1c, 0x21, 0xf7, 0xa2, 0x96, 0x47, - 0xc2, 0x24, 0xe2, 0x97, 0xd3, 0x32, 0x81, 0xa3, 0x9e, 0x33, 0x8c, 0xfe, 0x10, 0xd6, 0x5c, 0x51, - 0xc3, 0x59, 0x31, 0xb2, 0x64, 0x64, 0x10, 0x7f, 0x3f, 0x1d, 0x39, 0x71, 0x86, 0x64, 0xe8, 0xb8, - 0x0b, 0x80, 0xbd, 0x48, 0x11, 0xd5, 0xc4, 0xb7, 0x03, 0xf6, 0xa2, 0x2c, 0xb2, 0x48, 0x1b, 0xa8, - 0x17, 0x6c, 0xe0, 0x23, 0xa8, 0x4f, 0xec, 0xc0, 0x7d, 0x89, 0xdd, 0xf8, 0xa2, 0x0b, 0xbc, 0x2e, - 0xc9, 0x10, 0xfa, 0x63, 0xd8, 0x20, 0x88, 0x22, 0x32, 0xb7, 0x27, 0x3e, 0xb2, 0x32, 0xc2, 0x06, - 0x27, 0x5c, 0xcf, 0xe6, 0x9e, 0xe6, 0x97, 0x24, 0x81, 0x98, 0x40, 0x6e, 0x6e, 0x49, 0xf3, 0x7e, - 0x85, 0x2d, 0xc9, 0xe6, 0xb2, 0x25, 0x3b, 0xa0, 0x31, 0x13, 0x72, 0xff, 0xc6, 0x76, 0x50, 0xe0, - 0x5c, 0x59, 0x14, 0xbb, 0xdd, 0x16, 0x3f, 0x40, 0x9b, 0x92, 0xbe, 0x42, 0x8f, 0xb1, 0xa8, 0xa1, - 0x89, 0xef, 0xd1, 0x6e, 0x9b, 0x7f, 0x25, 0x09, 0xc0, 0xf8, 0xbb, 0x12, 0xac, 0xe5, 0xac, 0x43, - 0xb6, 0xc0, 0x1e, 0x03, 0x3b, 0xbe, 0x95, 0x25, 0xa7, 0x8d, 0x62, 0x1f, 0x4c, 0x39, 0x5a, 0xb3, - 0x86, 0xbd, 0x48, 0xb8, 0xdc, 0x4c, 0x49, 0xe5, 0x82, 0x92, 0x0c, 0x6e, 0xe3, 0xb2, 0x59, 0x47, - 0xd3, 0x76, 0x7c, 0x83, 0xca, 0x76, 0xdb, 0x18, 0xbb, 0xc6, 0xbf, 0xf2, 0xd8, 0x92, 0xc5, 0xa9, - 0x2f, 0xa0, 0x9a, 0x6b, 0x09, 0x6e, 0xe5, 0x77, 0x2e, 0x38, 0x14, 0x93, 0x93, 0x31, 0x72, 0x1f, - 0x07, 0x97, 0xd2, 0x83, 0x2c, 0x27, 0x67, 0x66, 0x6f, 0x72, 0x32, 0xfd, 0x49, 0xe1, 0x17, 0xa9, - 0xb1, 0x77, 0x67, 0xe9, 0x02, 0xf9, 0x37, 0xaa, 0x3e, 0xc5, 0x4c, 0xd0, 0x64, 0xfa, 0xf0, 0x03, - 0xd3, 0xf7, 0x25, 0xf5, 0xff, 0x7f, 0x96, 0x61, 0x73, 0x6c, 0xce, 0x7b, 0xe3, 0x98, 0x24, 0x4e, - 0x9c, 0x10, 0x34, 0x4e, 0x26, 0x22, 0xff, 0xd5, 0x3f, 0x57, 0x8f, 0x8c, 0xbf, 0x78, 0x4b, 0xf6, - 0x0e, 0xc5, 0x3e, 0x9a, 0x9f, 0x3e, 0xee, 0xa1, 0xe8, 0x22, 0x3e, 0x84, 0xb5, 0xac, 0x91, 0xaa, - 0x88, 0xc5, 0xfe, 0x9d, 0xb4, 0x67, 0x2a, 0x69, 0x1f, 0x40, 0x67, 0x9a, 0x04, 0xbc, 0x5c, 0xb6, - 0x0a, 0x2d, 0xc9, 0xb6, 0x42, 0x67, 0x84, 0x36, 0xf1, 0x12, 0x56, 0x04, 0x29, 0x42, 0x91, 0x45, - 0xb6, 0x15, 0x5a, 0x12, 0x3e, 0x86, 0x0d, 0x9e, 0xc1, 0x46, 0x21, 0x4b, 0x58, 0x33, 0xb6, 0xe2, - 0x8f, 0x76, 0xbd, 0x30, 0x77, 0xd3, 0x12, 0xf9, 0x7d, 0xb7, 0xba, 0x64, 0xc9, 0xa9, 0xf8, 0xcb, - 0xfb, 0x14, 0x9a, 0x5c, 0x57, 0x83, 0x43, 0x61, 0x6f, 0xb7, 0x61, 0x95, 0xe9, 0xdb, 0x7a, 0x2c, - 0x23, 0x22, 0xd7, 0xfe, 0x63, 0xe3, 0x31, 0xdc, 0x62, 0x64, 0x4c, 0x87, 0x9f, 0x41, 0x25, 0xf6, - 0xe7, 0xaf, 0x4d, 0xd5, 0x18, 0x81, 0xf1, 0x1f, 0x65, 0xb8, 0xcd, 0xd6, 0x0c, 0x82, 0x69, 0x48, - 0x66, 0xbc, 0x4e, 0x92, 0xb7, 0xa0, 0x41, 0x85, 0xca, 0x4f, 0x9c, 0xa6, 0xc9, 0x86, 0xfa, 0xe7, - 0xc5, 0x68, 0x95, 0xeb, 0xd4, 0xe6, 0x85, 0x53, 0xa6, 0xf0, 0x08, 0xd6, 0x50, 0xe0, 0x46, 0x21, - 0x0e, 0x62, 0x6b, 0x82, 0x2e, 0xec, 0x39, 0x96, 0x3d, 0xfd, 0x96, 0xa9, 0xa9, 0x89, 0xa7, 0x12, - 0xaf, 0x7f, 0x0f, 0x4d, 0x96, 0xe6, 0xf3, 0x54, 0x9f, 0xa5, 0x98, 0x55, 0x2e, 0xf7, 0x97, 0xc5, - 0x1d, 0xae, 0xc9, 0xb8, 0x2b, 0x6d, 0xc6, 0x9f, 0xd3, 0xa3, 0x20, 0x26, 0x57, 0x26, 0xd0, 0x14, - 0xb1, 0x3d, 0x82, 0xce, 0xc2, 0xf4, 0x92, 0x02, 0xf0, 0x41, 0x3e, 0xf3, 0x6d, 0xec, 0xad, 0x15, - 0x37, 0x64, 0xb5, 0x8c, 0x98, 0xff, 0xa6, 0xfc, 0x8b, 0x92, 0xf1, 0x6f, 0x25, 0xd0, 0x18, 0x7a, - 0xf8, 0x64, 0x8c, 0xc8, 0x1c, 0x3b, 0x88, 0xa9, 0xe9, 0xa9, 0x2c, 0x50, 0xb2, 0xc4, 0xf8, 0x41, - 0x91, 0x49, 0x9e, 0x7a, 0xb7, 0x20, 0x2d, 0xaf, 0x64, 0x98, 0xa8, 0xc7, 0xd0, 0xfc, 0x31, 0xe5, - 0xfc, 0x0a, 0xea, 0xd2, 0xbd, 0x0c, 0x0e, 0xdf, 0x3e, 0x69, 0x7f, 0x48, 0xf9, 0x97, 0x92, 0x6c, - 0xf2, 0xeb, 0xeb, 0xd0, 0x19, 0x8e, 0x2d, 0x06, 0x5a, 0x2f, 0x4e, 0xbe, 0x3b, 0x39, 0xfd, 0xf5, - 0x89, 0xf6, 0x07, 0xba, 0x06, 0x4d, 0x85, 0x3c, 0x39, 0x3d, 0x3c, 0xd2, 0x4a, 0x79, 0xcc, 0x70, - 0x70, 0xf2, 0x9d, 0x56, 0xd6, 0x6f, 0xc3, 0x9a, 0xc2, 0x8c, 0xcc, 0xa3, 0x67, 0x83, 0xbf, 0xb0, - 0xce, 0xf7, 0xb5, 0xca, 0x32, 0x74, 0x4f, 0xab, 0x3e, 0xfc, 0x6f, 0xfe, 0x01, 0x91, 0xf5, 0xf9, - 0xf5, 0x3f, 0x84, 0xf5, 0xe1, 0xd8, 0x1a, 0x99, 0xa7, 0x67, 0xa7, 0x07, 0xa7, 0xc3, 0xdc, 0xde, - 0x0b, 0x13, 0x83, 0xf1, 0x60, 0x6c, 0x0d, 0x1f, 0x6b, 0xa5, 0xe5, 0x13, 0x7b, 0x5a, 0x79, 0x71, - 0xe2, 0x74, 0x3c, 0x7a, 0x66, 0x9d, 0xef, 0x69, 0x15, 0x7d, 0x13, 0xf4, 0xfc, 0xc4, 0xe1, 0xc0, - 0x3c, 0x3a, 0x38, 0xd3, 0xaa, 0x8b, 0xf8, 0xf1, 0x59, 0xff, 0x6c, 0x70, 0xa0, 0xad, 0x2c, 0x67, - 0xf4, 0x44, 0x5b, 0x9d, 0xac, 0x72, 0x35, 0x3e, 0xf9, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf2, - 0x7e, 0x15, 0xda, 0xb9, 0x29, 0x00, 0x00, + // 4207 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0xcb, 0x72, 0x1b, 0x49, + 0x72, 0x8b, 0x07, 0x49, 0x30, 0xf1, 0x60, 0xb3, 0xf9, 0x18, 0x90, 0x1a, 0x8d, 0xb4, 0xad, 0x91, + 0x44, 0x53, 0x1a, 0xce, 0x8a, 0xe2, 0x60, 0xe7, 0x11, 0x6b, 0x07, 0x44, 0x40, 0x1a, 0x78, 0x40, + 0x10, 0xd3, 0x00, 0x39, 0xe3, 0x8b, 0xdb, 0x8d, 0xee, 0x62, 0xb3, 0x96, 0x8d, 0xee, 0xde, 0xae, + 0x06, 0x24, 0x5e, 0xec, 0x08, 0x1f, 0x1c, 0xb1, 0xe1, 0x58, 0x87, 0x4f, 0x8e, 0x8d, 0xd8, 0x8b, + 0x2f, 0x76, 0x84, 0x1d, 0x3e, 0xdb, 0x07, 0xff, 0x80, 0x7d, 0xf6, 0x07, 0xf8, 0x2b, 0x7c, 0x77, + 0xd4, 0xab, 0x1f, 0x20, 0x48, 0x49, 0xa3, 0x99, 0x08, 0xdd, 0x3a, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, + 0xb2, 0xf2, 0x55, 0x0d, 0x2b, 0x66, 0x14, 0x85, 0x78, 0x34, 0x89, 0xd0, 0x5e, 0x10, 0xfa, 0x91, + 0xaf, 0x96, 0x1c, 0x7f, 0xe4, 0x04, 0x66, 0x80, 0xb7, 0xb7, 0x1c, 0xdf, 0x77, 0x5c, 0xf4, 0x29, + 0xc3, 0x8f, 0x26, 0x67, 0x9f, 0x9a, 0xde, 0x25, 0x27, 0xda, 0x2e, 0x33, 0x22, 0x0e, 0x68, 0x7f, + 0x04, 0x2b, 0xc7, 0x21, 0x76, 0xb0, 0xd7, 0x94, 0xac, 0xd4, 0x4d, 0x58, 0xf4, 0x19, 0xaa, 0x9e, + 0xbb, 0x9b, 0xdb, 0xa9, 0xea, 0x02, 0xd2, 0xbe, 0x80, 0xe5, 0x26, 0x19, 0x20, 0x67, 0x8c, 0xbc, + 0x48, 0x55, 0xa1, 0x18, 0x5d, 0x06, 0x48, 0x90, 0xb0, 0x6f, 0xb5, 0x0e, 0x4b, 0xde, 0x64, 0x3c, + 0x42, 0x21, 0xa9, 0xe7, 0xef, 0x16, 0x76, 0xaa, 0xba, 0x04, 0xb5, 0x67, 0xb0, 0xd2, 0x24, 0x7d, + 0x33, 0x3a, 0x4f, 0x56, 0xf9, 0x14, 0x4a, 0x84, 0xf3, 0x22, 0xf5, 0xdc, 0xdd, 0xc2, 0x4e, 0x79, + 0x7f, 0x6d, 0x4f, 0x4a, 0xbf, 0x17, 0xaf, 0xa3, 0xc7, 0x44, 0xda, 0x27, 0xa0, 0xf4, 0xd0, 0xab, + 0xe8, 0x6b, 0x3f, 0x48, 0x98, 0x6c, 0x41, 0xc9, 0x43, 0xaf, 0x22, 0xe3, 0xdc, 0x0f, 0x98, 0x24, + 0xcb, 0xfa, 0x92, 0xc7, 0x69, 0xb4, 0x5d, 0xd8, 0x3c, 0x9a, 0xb8, 0x11, 0x6e, 0xbf, 0xc2, 0x51, + 0x0b, 0x13, 0x2b, 0x99, 0xa4, 0x40, 0x61, 0x8c, 0x6c, 0x21, 0x39, 0xfd, 0xd4, 0x9e, 0x82, 0xda, + 0xf5, 0x2d, 0xd3, 0xed, 0x87, 0xe8, 0x2c, 0xa1, 0xbb, 0x0d, 0xe0, 0x52, 0xac, 0x11, 0x84, 0xe8, + 0x4c, 0x90, 0x2f, 0xbb, 0x92, 0x4e, 0xdb, 0x86, 0x7a, 0x33, 0xf2, 0xc7, 0xd8, 0x6a, 0x3a, 0x4e, + 0x88, 0x1c, 0x33, 0x42, 0xf1, 0x54, 0xed, 0x4f, 0x60, 0x4d, 0x62, 0xfd, 0x30, 0xe1, 0x58, 0x83, + 0xbc, 0x49, 0x75, 0x43, 0x39, 0xe5, 0x4d, 0x42, 0x15, 0x66, 0xda, 0x76, 0x88, 0x08, 0xa9, 0x17, + 0xb8, 0xf4, 0x02, 0xd4, 0x3e, 0x87, 0xf5, 0x43, 0x7f, 0x3c, 0x9e, 0x78, 0x38, 0xc2, 0x88, 0x24, + 0x1c, 0xee, 0x42, 0xd9, 0x4a, 0xf0, 0x4c, 0x71, 0x55, 0x3d, 0x8d, 0xd2, 0x1e, 0xc2, 0x06, 0x3f, + 0x50, 0xba, 0x74, 0xc7, 0xce, 0x2c, 0x8e, 0x6d, 0xa1, 0xa5, 0x3c, 0xb6, 0xb5, 0x1d, 0x58, 0x3f, + 0x74, 0x27, 0x24, 0x42, 0x61, 0x17, 0x93, 0x28, 0xa3, 0x1e, 0x6c, 0x73, 0xd6, 0xcb, 0x3a, 0xfd, + 0xd4, 0xbe, 0x86, 0x95, 0x4e, 0xbf, 0xc9, 0x25, 0xa3, 0x5b, 0xc7, 0xaf, 0xa8, 0x6e, 0x02, 0xf6, + 0x65, 0xb8, 0x48, 0xda, 0xc9, 0x32, 0xc7, 0x74, 0x91, 0x47, 0x4d, 0x88, 0x03, 0x6c, 0xb3, 0xcb, + 0xba, 0x80, 0x34, 0x07, 0x36, 0xbb, 0xe6, 0x08, 0xb9, 0xc8, 0x9e, 0x65, 0xb8, 0x09, 0x8b, 0x2e, + 0x1d, 0x91, 0x7b, 0x12, 0xd0, 0xcc, 0x42, 0xf9, 0xeb, 0x17, 0x2a, 0x64, 0x16, 0xfa, 0x04, 0x56, + 0xdb, 0x9e, 0x65, 0x06, 0x64, 0xe2, 0x9a, 0x11, 0xf6, 0xbd, 0x5e, 0x57, 0xef, 0xa4, 0xd5, 0x9d, + 0xcb, 0xaa, 0xbb, 0x0f, 0x1f, 0xea, 0xfe, 0x24, 0x42, 0x2d, 0x4c, 0x22, 0xec, 0x39, 0x13, 0x4c, + 0xce, 0x51, 0x38, 0x7c, 0xe9, 0x1f, 0x5b, 0x11, 0x8a, 0x9a, 0x03, 0x75, 0x1d, 0x16, 0x4c, 0x7b, + 0x1c, 0xdf, 0x08, 0x0e, 0xa8, 0xdb, 0x50, 0x32, 0x09, 0xc1, 0x8e, 0x87, 0x6c, 0x21, 0x59, 0x0c, + 0x6b, 0xc7, 0x70, 0xeb, 0x2a, 0xc7, 0x78, 0xd3, 0x59, 0x86, 0xcb, 0x6f, 0xc2, 0xf0, 0x5b, 0xb8, + 0x7d, 0x95, 0xe1, 0x73, 0x7f, 0x12, 0xfe, 0x70, 0x19, 0xdb, 0xb0, 0xd5, 0x8e, 0xce, 0x51, 0xe8, + 0xa1, 0x48, 0x5c, 0xb7, 0x8e, 0x8d, 0xbc, 0x08, 0x9f, 0x61, 0x14, 0xce, 0xbd, 0xe0, 0xeb, 0xb0, + 0x30, 0x35, 0xdd, 0x09, 0x62, 0x9c, 0x2a, 0x3a, 0x07, 0xb4, 0x7f, 0xcf, 0xc1, 0x47, 0xed, 0xd3, + 0x7e, 0x4f, 0xf2, 0x6a, 0x4e, 0x22, 0x9f, 0xde, 0x38, 0x7f, 0x8a, 0xc2, 0x4b, 0x26, 0xb3, 0xfa, + 0x31, 0xe4, 0x43, 0x6e, 0x7b, 0xe5, 0xfd, 0xf5, 0x3d, 0xee, 0x9a, 0xf6, 0xa4, 0x6b, 0xda, 0x6b, + 0x7a, 0x97, 0x7a, 0x3e, 0xb4, 0xd5, 0xcf, 0xa0, 0x80, 0x08, 0x66, 0xcc, 0xcb, 0xfb, 0xf7, 0x12, + 0x6f, 0x70, 0xad, 0x90, 0x3a, 0xa5, 0x57, 0x7f, 0x0e, 0x15, 0x24, 0x28, 0x8c, 0xc8, 0x74, 0x98, + 0x25, 0x54, 0xf5, 0xb2, 0xc4, 0x0d, 0x4d, 0x87, 0x0a, 0xce, 0xec, 0xa9, 0x5e, 0xe4, 0xba, 0x61, + 0x80, 0xf6, 0x7f, 0x39, 0xb8, 0x45, 0x05, 0x3f, 0x6a, 0x1e, 0xd2, 0x93, 0x99, 0xa2, 0x30, 0xc2, + 0x04, 0x31, 0xb7, 0xf3, 0x5e, 0x48, 0x7d, 0x07, 0xca, 0x63, 0xd3, 0x32, 0xa4, 0xcd, 0x16, 0x99, + 0xa9, 0xc0, 0xd8, 0xb4, 0xa4, 0x15, 0xdd, 0x06, 0xc0, 0x41, 0x3c, 0xbe, 0xc0, 0xc6, 0x97, 0x71, + 0x20, 0x87, 0x93, 0x3b, 0xb5, 0x98, 0xbe, 0x53, 0xda, 0xdf, 0xe7, 0xe0, 0x01, 0xdd, 0x77, 0xc7, + 0xb3, 0xdc, 0x09, 0xc1, 0x53, 0xc4, 0x1c, 0xa5, 0x65, 0x92, 0xa8, 0x9d, 0xac, 0xfe, 0x36, 0x2a, + 0x98, 0xdd, 0x4b, 0xfe, 0xea, 0x5e, 0xb2, 0xa2, 0x16, 0x66, 0x44, 0xd5, 0xfe, 0x21, 0x07, 0xf5, + 0xb4, 0x0d, 0x49, 0xf7, 0xff, 0xd3, 0x9f, 0xc3, 0x6b, 0x04, 0xfb, 0x6d, 0x1e, 0x56, 0x99, 0xae, + 0xfa, 0xdc, 0x51, 0xbd, 0x1f, 0x96, 0x71, 0x0b, 0x96, 0x71, 0x60, 0x08, 0xcf, 0xc7, 0xed, 0xa2, + 0x84, 0x03, 0xe1, 0x4a, 0x35, 0xa8, 0xc6, 0x83, 0xcc, 0x6b, 0x2e, 0x70, 0x06, 0x92, 0x80, 0xfa, + 0xcd, 0xdb, 0x00, 0xce, 0xcb, 0x78, 0xd7, 0x8b, 0x7c, 0xd7, 0xce, 0xcb, 0x94, 0x7b, 0xe2, 0xf7, + 0x65, 0x29, 0x7d, 0x5f, 0xfe, 0x0a, 0x6a, 0x5c, 0x15, 0x47, 0x83, 0xce, 0x8f, 0x6c, 0x1e, 0x94, + 0x51, 0xc4, 0x76, 0x7a, 0x3d, 0xa3, 0x48, 0xfb, 0x4b, 0xa8, 0x0c, 0xf4, 0xbe, 0xef, 0x62, 0xeb, + 0x92, 0x39, 0x74, 0x6a, 0xe0, 0xc8, 0x73, 0xa2, 0x73, 0x99, 0xa9, 0x70, 0x48, 0xfd, 0x18, 0xaa, + 0x76, 0xda, 0x4d, 0x8a, 0x15, 0xb3, 0x48, 0xba, 0x49, 0xcb, 0x77, 0xfd, 0x50, 0x28, 0x98, 0x03, + 0xd4, 0x61, 0x22, 0xcf, 0x0e, 0x7c, 0xec, 0x45, 0x4c, 0xb3, 0x15, 0x3d, 0x86, 0xe9, 0xc5, 0xd9, + 0x12, 0xf1, 0x8b, 0xe9, 0xe1, 0xcd, 0x42, 0x18, 0x57, 0x52, 0xfe, 0x35, 0x4a, 0xca, 0x06, 0xba, + 0xc2, 0xf5, 0x81, 0xae, 0x98, 0x09, 0x74, 0xdf, 0xc2, 0x16, 0x3b, 0x8a, 0xa1, 0x19, 0x3a, 0x28, + 0x3a, 0x42, 0x2c, 0xdf, 0x3a, 0xc7, 0x01, 0xd3, 0x0f, 0xcf, 0x37, 0x72, 0x71, 0xbe, 0xc1, 0xb5, + 0x9c, 0x7f, 0x8d, 0x96, 0x27, 0xa0, 0x3c, 0x77, 0xfd, 0x97, 0x83, 0x00, 0x59, 0xd2, 0xea, 0xe7, + 0x46, 0x83, 0x1f, 0x16, 0x9a, 0x59, 0x7a, 0x79, 0x76, 0x46, 0x50, 0x24, 0x9c, 0xb1, 0x80, 0xb4, + 0xaf, 0xa0, 0x2c, 0x97, 0x3d, 0x6a, 0x1e, 0x5e, 0x97, 0x60, 0x4a, 0x93, 0xcd, 0x67, 0x03, 0xf8, + 0xaf, 0x60, 0x43, 0x4e, 0x3e, 0xf4, 0xc7, 0x81, 0xef, 0xd1, 0x7b, 0x15, 0xa1, 0x31, 0x55, 0x81, + 0xc8, 0x0d, 0xab, 0x7a, 0xde, 0x0f, 0xb2, 0x21, 0xac, 0x28, 0x43, 0xd8, 0x9f, 0xc3, 0xea, 0x95, + 0xe9, 0x73, 0x25, 0xf8, 0x0c, 0x16, 0x70, 0x84, 0xc6, 0x3c, 0xc1, 0x2d, 0xef, 0xdf, 0x49, 0x2e, + 0xf5, 0xdc, 0xe5, 0x75, 0x4e, 0xad, 0x7d, 0x09, 0x15, 0x39, 0xce, 0x0e, 0x66, 0x17, 0x16, 0xc2, + 0x89, 0x8b, 0x64, 0xe6, 0x3b, 0xff, 0x2c, 0x38, 0x89, 0x66, 0xc1, 0xca, 0x69, 0xbf, 0x97, 0x99, + 0xfe, 0x66, 0xd7, 0x2e, 0x5e, 0x24, 0xff, 0xfa, 0x45, 0x0e, 0x00, 0x8e, 0x03, 0xf3, 0x37, 0x13, + 0xc4, 0xf8, 0x2b, 0x50, 0xb8, 0x40, 0x97, 0x6c, 0x81, 0x8a, 0x4e, 0x3f, 0xaf, 0x89, 0xfc, 0xff, + 0x9c, 0x03, 0xa5, 0x4b, 0x7a, 0xbe, 0x8d, 0x5a, 0x88, 0x58, 0x21, 0x0e, 0x22, 0x3f, 0xa4, 0x93, + 0x4d, 0x22, 0xb3, 0x10, 0xfa, 0xa9, 0x6e, 0xc3, 0xf2, 0xc8, 0x09, 0x0c, 0x97, 0x18, 0x58, 0x26, + 0x21, 0x4b, 0x23, 0x27, 0xe8, 0x92, 0x8e, 0xad, 0xde, 0x85, 0x8a, 0x4f, 0x82, 0x33, 0xc3, 0x0c, + 0x91, 0x49, 0x87, 0xb9, 0xe1, 0x03, 0xc5, 0x35, 0x43, 0x64, 0x76, 0x6c, 0xf5, 0x23, 0x80, 0x80, + 0xa0, 0x89, 0xed, 0x7b, 0xbe, 0x8d, 0x98, 0xcd, 0x94, 0xf4, 0x14, 0x86, 0xb9, 0x3b, 0x27, 0x30, + 0x42, 0x7a, 0x0b, 0x42, 0xca, 0x82, 0xc7, 0xc1, 0x32, 0x76, 0x02, 0x76, 0x33, 0xc2, 0x8e, 0xad, + 0xfd, 0x3e, 0x4f, 0x05, 0xed, 0x62, 0xef, 0x22, 0x25, 0xa8, 0x06, 0x55, 0x17, 0x7b, 0x17, 0x06, + 0x4f, 0xf2, 0xb1, 0xac, 0x08, 0xca, 0x14, 0xc9, 0xca, 0x81, 0x8e, 0xad, 0x7e, 0x0c, 0x35, 0x46, + 0x13, 0xa2, 0xb1, 0x1f, 0xa1, 0x44, 0xfe, 0x0a, 0xc5, 0xea, 0x0c, 0xd9, 0xb1, 0xd5, 0x3d, 0x58, + 0xc3, 0x5e, 0x84, 0xc2, 0x33, 0xd3, 0x42, 0xcc, 0xa9, 0x1a, 0x38, 0x98, 0x1e, 0x08, 0xbb, 0x5f, + 0x8d, 0x87, 0xa8, 0xbb, 0xe8, 0x04, 0xd3, 0x03, 0xf5, 0x31, 0xa8, 0x1e, 0xc2, 0xce, 0xf9, 0xc8, + 0x0f, 0x53, 0xe4, 0xfc, 0x62, 0x2b, 0x72, 0x24, 0xa6, 0x9e, 0xcb, 0xbd, 0x21, 0xb6, 0x79, 0x85, + 0x7b, 0x63, 0x2e, 0xf7, 0x86, 0xf0, 0xf1, 0xb3, 0xdc, 0x1b, 0x1a, 0x02, 0xb5, 0x2b, 0x3c, 0x58, + 0x4a, 0x37, 0x0f, 0x61, 0x05, 0x07, 0x46, 0x88, 0x4c, 0xeb, 0xdc, 0x1c, 0x61, 0x17, 0x47, 0x97, + 0xa2, 0x20, 0xa8, 0xe1, 0x40, 0x4f, 0x61, 0xd5, 0x07, 0xb0, 0xc2, 0xce, 0x8f, 0xa9, 0xdf, 0x60, + 0xf7, 0x85, 0x5f, 0xcd, 0x2a, 0x45, 0x73, 0xd7, 0x74, 0x19, 0x20, 0xed, 0x05, 0x00, 0xb7, 0x14, + 0x66, 0x60, 0x5f, 0xc8, 0xd2, 0x8a, 0x9d, 0x29, 0x37, 0xe4, 0xed, 0xe4, 0x2e, 0xcd, 0xda, 0x94, + 0x28, 0xbb, 0x28, 0x52, 0xfb, 0xef, 0x1c, 0xe5, 0x44, 0x8f, 0xf2, 0x1d, 0x39, 0xa9, 0x5f, 0x41, + 0x59, 0x1c, 0x2b, 0x9b, 0x9b, 0x7f, 0xed, 0x5c, 0xe0, 0xe4, 0x6c, 0xf2, 0x21, 0xac, 0x30, 0xc3, + 0xb0, 0xe3, 0x61, 0x11, 0xbd, 0x32, 0x0c, 0xb2, 0x16, 0xa7, 0x33, 0x5b, 0x4a, 0x60, 0x9a, 0xf5, + 0xd4, 0xa4, 0xf2, 0x4f, 0x0f, 0xde, 0x75, 0x3f, 0x1d, 0x58, 0x15, 0xfe, 0x38, 0x25, 0x14, 0xdf, + 0xd5, 0x87, 0x69, 0x0e, 0xb3, 0x87, 0xad, 0x2b, 0xc1, 0x0c, 0x26, 0x2b, 0x58, 0xe3, 0x3d, 0x12, + 0xec, 0x7f, 0x72, 0x50, 0xe9, 0x12, 0x6a, 0xbc, 0x22, 0x30, 0xed, 0xa4, 0x9c, 0x74, 0x8d, 0xf9, + 0xb8, 0x44, 0xa0, 0xae, 0xde, 0xa1, 0xb6, 0x27, 0x5c, 0xf7, 0x0e, 0x14, 0x3d, 0x37, 0xc4, 0x37, + 0x86, 0x3f, 0x46, 0x91, 0x4a, 0x2b, 0x0a, 0x99, 0xb4, 0xe2, 0x97, 0x50, 0x66, 0xd4, 0x96, 0xcf, + 0xdc, 0x45, 0x91, 0x2d, 0xb9, 0x99, 0xdd, 0x01, 0x1f, 0xee, 0xb4, 0x74, 0x90, 0xa4, 0xdc, 0x85, + 0xe1, 0x38, 0xc9, 0x63, 0x17, 0xb7, 0xa8, 0xa7, 0x30, 0xda, 0x6f, 0x73, 0xb0, 0x7e, 0xc4, 0xef, + 0x15, 0x15, 0x3a, 0xa9, 0xc5, 0x77, 0x60, 0xf1, 0xcc, 0x1c, 0x63, 0xf7, 0x52, 0x28, 0x5c, 0x49, + 0xc5, 0x1b, 0x86, 0xd7, 0xc5, 0x38, 0xcd, 0x08, 0x65, 0x27, 0x84, 0x3b, 0xfc, 0x65, 0xbd, 0x24, + 0x5a, 0x21, 0x84, 0x46, 0x02, 0xba, 0x31, 0x9a, 0xde, 0xde, 0x10, 0x09, 0x18, 0x89, 0xe6, 0xc1, + 0xe6, 0x51, 0x70, 0xe2, 0x85, 0xef, 0x22, 0xcc, 0xdb, 0xac, 0xf7, 0xbb, 0x1c, 0x6c, 0xc7, 0x95, + 0x36, 0xa1, 0x21, 0x0e, 0x9f, 0x61, 0xab, 0xfd, 0x2a, 0x42, 0x9e, 0x8d, 0x6c, 0xf5, 0x1e, 0x54, + 0x31, 0x31, 0xa2, 0xd0, 0xf4, 0x08, 0x8e, 0xf0, 0x94, 0x1f, 0x74, 0x49, 0xaf, 0x60, 0x32, 0x8c, + 0x71, 0xea, 0x16, 0x94, 0xc8, 0x64, 0x94, 0x78, 0x9f, 0xaa, 0xbe, 0x44, 0x26, 0x23, 0x7a, 0xf6, + 0x22, 0x05, 0x2a, 0xc4, 0x29, 0xd0, 0x1d, 0x28, 0x73, 0x33, 0xe6, 0xb5, 0x32, 0x4f, 0x41, 0xb8, + 0x65, 0x37, 0x29, 0x46, 0xfb, 0x7d, 0x0e, 0x6e, 0x75, 0xfa, 0xd3, 0x03, 0x91, 0xdb, 0xfd, 0xe8, + 0x02, 0x5d, 0xdb, 0xf3, 0x79, 0xbd, 0x68, 0x7f, 0x97, 0x83, 0x5b, 0x49, 0xc5, 0xff, 0x1e, 0xe8, + 0x6a, 0x17, 0xd4, 0x53, 0xd3, 0xc5, 0x36, 0x6b, 0xb1, 0xc4, 0x62, 0xac, 0xc3, 0x02, 0x89, 0xcc, + 0x48, 0x26, 0x4e, 0x1c, 0xd0, 0xee, 0x43, 0xf5, 0x90, 0x26, 0xd8, 0x69, 0x32, 0x9e, 0x7e, 0xe7, + 0x52, 0xe9, 0xb7, 0xf6, 0x0b, 0xa8, 0xb2, 0xc6, 0x4d, 0x4c, 0x76, 0x07, 0xca, 0xd1, 0xc4, 0xf3, + 0x90, 0x6b, 0xa4, 0x92, 0x31, 0xe0, 0x28, 0x16, 0x59, 0xea, 0xb0, 0xd9, 0x42, 0x67, 0xe6, 0xc4, + 0x8d, 0x5e, 0x98, 0x11, 0x7a, 0x69, 0x5e, 0xca, 0xa9, 0xda, 0x37, 0x50, 0xe3, 0x49, 0xcd, 0xdb, + 0x69, 0x28, 0xce, 0x75, 0x0a, 0xe9, 0x5c, 0x47, 0x07, 0xa5, 0x3d, 0xe8, 0xb0, 0xec, 0x3f, 0x66, + 0xb7, 0x03, 0x0a, 0x26, 0x06, 0xc1, 0x9e, 0xe3, 0x22, 0xc3, 0xb4, 0x52, 0x1c, 0x6b, 0x98, 0x0c, + 0x18, 0xba, 0x69, 0x49, 0x9e, 0xbc, 0xa0, 0xca, 0xa7, 0x0b, 0xaa, 0x7d, 0x58, 0x6b, 0x0f, 0x3a, + 0xe3, 0xc0, 0x0f, 0xa3, 0x54, 0x12, 0x4f, 0xef, 0x32, 0x22, 0x06, 0x66, 0x78, 0xd1, 0x20, 0x2a, + 0x21, 0xc2, 0xe9, 0xb4, 0x13, 0x58, 0x3b, 0x32, 0xad, 0x23, 0x9f, 0xc7, 0xdf, 0x58, 0x14, 0x5a, + 0x11, 0x12, 0x83, 0x44, 0xd8, 0xba, 0xb8, 0x14, 0x32, 0x94, 0x30, 0x19, 0x30, 0x98, 0x16, 0x60, + 0x04, 0xfd, 0x66, 0x82, 0x3c, 0x0b, 0x19, 0xde, 0x64, 0x2c, 0x0b, 0x30, 0x89, 0xeb, 0x4d, 0xc6, + 0xda, 0x7d, 0x58, 0xe5, 0xd9, 0xd2, 0x91, 0x99, 0x18, 0x94, 0x02, 0x85, 0xb1, 0x69, 0x09, 0x11, + 0xe8, 0xa7, 0xf6, 0x05, 0xac, 0x0d, 0x43, 0xf3, 0xec, 0x0c, 0x5b, 0xba, 0x19, 0x25, 0x7a, 0x9d, + 0x2d, 0x34, 0x54, 0x28, 0x86, 0xd4, 0x02, 0xe8, 0x42, 0x79, 0x9d, 0x7d, 0x6b, 0xdf, 0xc0, 0x86, + 0x98, 0x4a, 0x75, 0x92, 0xb2, 0x97, 0x6d, 0x28, 0x45, 0x28, 0x1c, 0x63, 0xcf, 0x74, 0xa5, 0xe4, + 0x12, 0xa6, 0xae, 0x98, 0x98, 0xe3, 0xc0, 0xe5, 0xac, 0x4a, 0xba, 0x80, 0xb4, 0x13, 0xd0, 0x74, + 0x64, 0xe3, 0x10, 0x59, 0xd1, 0x0d, 0xce, 0x63, 0x56, 0xac, 0x19, 0x83, 0xce, 0x5f, 0x31, 0xe8, + 0xbf, 0x80, 0x7b, 0x92, 0xed, 0x4d, 0x3e, 0xe0, 0xda, 0x46, 0xe2, 0xeb, 0x57, 0x38, 0x4d, 0x56, + 0xb8, 0xe9, 0x2a, 0xbf, 0xb5, 0xe4, 0x8f, 0x62, 0xed, 0xea, 0x68, 0x6c, 0x86, 0x17, 0x31, 0x27, + 0x15, 0x8a, 0x36, 0xb1, 0x64, 0x09, 0xc4, 0xbe, 0xb5, 0xaf, 0x60, 0xe5, 0xc4, 0xbb, 0xf0, 0xfc, + 0x97, 0x5e, 0x9a, 0xec, 0x0d, 0xdb, 0x7d, 0xa7, 0xf0, 0xa1, 0x9c, 0x35, 0xb7, 0x45, 0xdd, 0xb8, + 0xda, 0xa2, 0xbe, 0x2e, 0x04, 0x64, 0x1a, 0xd7, 0x87, 0xa0, 0x34, 0xc9, 0xc1, 0x3b, 0x3e, 0x12, + 0x3c, 0x83, 0xcd, 0x26, 0x39, 0x78, 0xb7, 0xde, 0x3b, 0x82, 0xb5, 0xfe, 0x98, 0xe0, 0x21, 0x73, + 0x31, 0x09, 0x83, 0x75, 0x58, 0x38, 0x73, 0x4d, 0x47, 0x9e, 0x0a, 0x07, 0x62, 0xbd, 0xe5, 0xb3, + 0x7a, 0xe3, 0x97, 0xbd, 0x90, 0xba, 0xec, 0xa2, 0xff, 0xce, 0x5b, 0x0a, 0x79, 0x6c, 0x6b, 0x7f, + 0x0a, 0x1f, 0xf1, 0x25, 0x98, 0xbf, 0x1b, 0x4c, 0x46, 0xc3, 0xee, 0x69, 0xa6, 0x67, 0x9d, 0x2e, + 0xc3, 0xaa, 0xbc, 0x0c, 0xdb, 0x84, 0x45, 0xcb, 0xf7, 0x2f, 0xb0, 0x3c, 0x12, 0x01, 0x69, 0xbf, + 0x84, 0xad, 0x2b, 0xbc, 0x64, 0x2e, 0x42, 0xef, 0x97, 0xcc, 0x45, 0x04, 0xaf, 0x18, 0xd6, 0xf6, + 0x60, 0xf3, 0xca, 0x44, 0xe6, 0xa6, 0xaf, 0x71, 0xcf, 0x27, 0x70, 0xfb, 0x0a, 0xfd, 0x40, 0xa7, + 0xb9, 0x18, 0x0a, 0xa9, 0x2b, 0xb9, 0x46, 0x4b, 0x1f, 0xf1, 0x56, 0x01, 0xa7, 0x91, 0xd6, 0x9b, + 0x60, 0xb4, 0x06, 0x54, 0x06, 0xfa, 0x33, 0xec, 0xd9, 0xd8, 0x73, 0x06, 0x9d, 0xd6, 0x35, 0x5c, + 0x14, 0x28, 0x10, 0x51, 0x81, 0x55, 0x74, 0xfa, 0xa9, 0xfd, 0x47, 0x0e, 0x36, 0x06, 0xfa, 0xb4, + 0xd1, 0xf6, 0xec, 0x3e, 0x6b, 0xd1, 0x3c, 0x43, 0xe7, 0xe6, 0x14, 0xfb, 0xa1, 0xba, 0x0f, 0xa5, + 0x91, 0xf8, 0x16, 0xb9, 0x61, 0x2a, 0x51, 0xa3, 0x53, 0x24, 0xa5, 0x1e, 0xd3, 0x51, 0x1f, 0x3a, + 0x72, 0x7d, 0xeb, 0x22, 0xd5, 0xcf, 0x28, 0x31, 0x44, 0x17, 0x79, 0xec, 0xa9, 0xc9, 0xb7, 0x51, + 0xaa, 0x3b, 0xb3, 0x44, 0x61, 0x31, 0x74, 0x36, 0xf1, 0x2c, 0x36, 0xc4, 0x83, 0xe4, 0x12, 0x85, + 0xe9, 0xd0, 0x07, 0xb0, 0x64, 0x86, 0x4e, 0xaa, 0x0b, 0xb7, 0x68, 0x86, 0x4e, 0x17, 0x79, 0xda, + 0x7f, 0xe5, 0xa0, 0xc6, 0xc4, 0x48, 0x36, 0xbd, 0x01, 0x8b, 0xc4, 0xa0, 0x3b, 0x15, 0x5e, 0x70, + 0x81, 0x3c, 0x77, 0x4d, 0x87, 0xa2, 0x31, 0x47, 0x73, 0x17, 0xb8, 0x80, 0x25, 0x7a, 0xc4, 0xd1, + 0x05, 0x8e, 0x1e, 0x31, 0xb4, 0xd0, 0x51, 0x31, 0xd6, 0x91, 0x6a, 0xc0, 0x2d, 0xd9, 0xc0, 0x32, + 0xe4, 0x56, 0x0d, 0x12, 0x85, 0x13, 0x2b, 0x9a, 0x84, 0x88, 0x89, 0x95, 0x69, 0x64, 0xcc, 0xd5, + 0xa7, 0xbe, 0x25, 0x79, 0x48, 0xcc, 0x40, 0x72, 0xd0, 0x0e, 0xe1, 0x83, 0x39, 0x36, 0xd1, 0xee, + 0x75, 0xfb, 0xd7, 0xdf, 0x19, 0xe4, 0xb9, 0x81, 0xbc, 0x33, 0xf4, 0x5b, 0xfb, 0x1c, 0x4a, 0x03, + 0xfd, 0x3b, 0x5a, 0x9c, 0x46, 0xd7, 0xcc, 0xda, 0x84, 0xc5, 0x97, 0x08, 0xd3, 0xac, 0x9c, 0xcf, + 0x13, 0x90, 0xf6, 0x6b, 0xa8, 0x08, 0x3f, 0xf0, 0x9c, 0xd1, 0x6d, 0xc0, 0xe2, 0x34, 0xa3, 0xc6, + 0xa9, 0xd4, 0x97, 0x99, 0x51, 0xa3, 0x29, 0xd1, 0x24, 0xa3, 0x46, 0x32, 0xa3, 0xdd, 0x62, 0x4a, + 0xbb, 0x9a, 0x1e, 0xaf, 0x45, 0x53, 0x8f, 0xa6, 0xfa, 0x38, 0x2d, 0x69, 0x39, 0x63, 0x62, 0x29, + 0x91, 0xe4, 0x0e, 0xe6, 0x27, 0x01, 0x17, 0x50, 0x16, 0xc4, 0x5d, 0x4c, 0x22, 0x75, 0x97, 0x6f, + 0xf3, 0x3c, 0x12, 0x3c, 0xd5, 0xf4, 0xc9, 0x70, 0x05, 0xe9, 0x82, 0x42, 0xfd, 0x45, 0xca, 0x3d, + 0xde, 0xd4, 0xe4, 0x49, 0xfc, 0xe3, 0xff, 0xe6, 0xe7, 0x78, 0x0a, 0xd9, 0x53, 0x55, 0x5f, 0x64, + 0xae, 0x29, 0x5f, 0xff, 0x61, 0xb2, 0xfe, 0x8d, 0x37, 0x3f, 0x7d, 0x9f, 0x69, 0xad, 0x35, 0x92, + 0x57, 0xf5, 0xda, 0x5a, 0x8b, 0x52, 0x50, 0x5b, 0xf0, 0xcc, 0x31, 0x12, 0x3e, 0x98, 0x7d, 0xab, + 0x7b, 0xb0, 0x66, 0x99, 0x9e, 0x4d, 0xf3, 0x4a, 0x64, 0x04, 0x66, 0x74, 0x6e, 0x30, 0x12, 0xde, + 0x1f, 0x59, 0x8d, 0x87, 0x68, 0xa8, 0xe8, 0x51, 0x7a, 0xe6, 0xe0, 0xb0, 0x1f, 0xe2, 0xe8, 0x52, + 0xdc, 0xb2, 0x18, 0x56, 0x3f, 0x13, 0xb6, 0xb6, 0xc8, 0x24, 0xf9, 0xf9, 0x8d, 0x9b, 0xa1, 0x26, + 0xcb, 0xcd, 0x51, 0xfd, 0x9c, 0x66, 0x4c, 0x4c, 0x67, 0x86, 0x8b, 0x49, 0x54, 0x5f, 0x62, 0xda, + 0xdd, 0xb8, 0x72, 0xbe, 0xf4, 0xc8, 0x68, 0x22, 0x15, 0x03, 0x5a, 0x0b, 0xea, 0x57, 0x58, 0x8b, + 0x60, 0xfb, 0x16, 0x41, 0xb6, 0x07, 0xb5, 0x14, 0x97, 0x61, 0xf7, 0x74, 0xee, 0x5c, 0x5a, 0xfc, + 0xba, 0xd3, 0x9b, 0xcf, 0x9e, 0x51, 0x68, 0x2d, 0x58, 0x4f, 0xf1, 0x4b, 0x82, 0xda, 0x63, 0xc1, + 0x81, 0x07, 0xd7, 0xfa, 0x5c, 0xf5, 0x0c, 0xbb, 0xa7, 0x82, 0x8b, 0xa8, 0x8d, 0x1a, 0xef, 0x61, + 0x6d, 0x94, 0xcd, 0xdc, 0x1a, 0x3f, 0x41, 0xe6, 0xf6, 0x67, 0x70, 0xa7, 0xd3, 0x6f, 0xfc, 0x24, + 0xa9, 0xcf, 0x2e, 0x28, 0x4d, 0xec, 0x50, 0x45, 0x77, 0x5e, 0xf4, 0x8f, 0x50, 0x14, 0x62, 0x8b, + 0xba, 0xbb, 0x31, 0xfb, 0x62, 0x82, 0x16, 0x75, 0x01, 0x69, 0x5f, 0x42, 0x4d, 0xd0, 0xbe, 0xbd, + 0x55, 0x7d, 0x01, 0x55, 0x3a, 0x37, 0x5d, 0xd2, 0xa7, 0x8f, 0xff, 0x26, 0x03, 0x9a, 0x40, 0xad, + 0x4b, 0xab, 0x13, 0xb9, 0x6f, 0x56, 0x54, 0x38, 0xae, 0x3f, 0x8a, 0x35, 0x26, 0xba, 0xa7, 0x1c, + 0xc7, 0x54, 0x96, 0xe8, 0xd4, 0x36, 0x23, 0xf3, 0x49, 0x46, 0xa7, 0x2d, 0x8a, 0xc9, 0x12, 0xec, + 0xcb, 0xe6, 0x6f, 0x4c, 0xb0, 0xaf, 0x7d, 0x07, 0x5b, 0x99, 0x65, 0x33, 0xea, 0xfe, 0x72, 0x9e, + 0xba, 0x53, 0x36, 0x9c, 0x15, 0x38, 0xab, 0xf2, 0x3f, 0xe4, 0xa0, 0xcc, 0x7b, 0x56, 0x3c, 0x6a, + 0x6c, 0x43, 0xc9, 0x9f, 0xa2, 0xd0, 0xf5, 0x4d, 0x5b, 0x16, 0x21, 0x12, 0x66, 0x6f, 0xe8, 0x51, + 0x64, 0x5a, 0xe7, 0xe2, 0x0d, 0xbd, 0xa4, 0xc7, 0x30, 0x7b, 0x2e, 0x7a, 0x15, 0xa1, 0x90, 0x16, + 0x2f, 0x3c, 0x82, 0xc4, 0x30, 0xeb, 0x84, 0x8f, 0x42, 0x11, 0x41, 0xe8, 0x27, 0x3d, 0x54, 0xde, + 0xa7, 0x66, 0x7e, 0xaa, 0xa4, 0x0b, 0x88, 0xe6, 0x86, 0xa2, 0x45, 0x5b, 0xd2, 0xf3, 0xd3, 0x86, + 0xf6, 0xb7, 0xac, 0xc9, 0xd9, 0x79, 0xd1, 0x7f, 0x2e, 0x03, 0xa6, 0xed, 0xbf, 0xf4, 0x84, 0x60, + 0xec, 0x5b, 0xbd, 0x0d, 0xe0, 0xf9, 0xc6, 0xc4, 0x63, 0xef, 0xb6, 0x42, 0xac, 0x65, 0xcf, 0x3f, + 0xe1, 0x08, 0x7a, 0x15, 0xa5, 0x39, 0x27, 0x17, 0xaa, 0xa4, 0x57, 0x84, 0x41, 0x73, 0x9b, 0xbf, + 0x0f, 0xb5, 0x20, 0xf4, 0x03, 0xd3, 0xa1, 0x8e, 0xd6, 0x23, 0xc4, 0x14, 0xb2, 0x56, 0x63, 0x6c, + 0x8f, 0x10, 0x53, 0x7b, 0x0a, 0xcb, 0x5d, 0x32, 0x08, 0x75, 0xd3, 0x73, 0x98, 0x65, 0x8d, 0x50, + 0xf2, 0x73, 0x10, 0x07, 0xe8, 0x56, 0x91, 0x27, 0x9b, 0xe3, 0xf4, 0x53, 0xfb, 0x1d, 0x7b, 0x1b, + 0x18, 0x84, 0x87, 0x66, 0xc0, 0x7b, 0xc5, 0x18, 0xb1, 0x05, 0x71, 0x30, 0x3d, 0x30, 0xc8, 0x24, + 0xa0, 0xc5, 0x2c, 0x92, 0xba, 0xae, 0x52, 0xec, 0x40, 0x22, 0x05, 0x59, 0x23, 0x45, 0x96, 0x8f, + 0xc9, 0x1a, 0x09, 0xd9, 0x23, 0x58, 0x0c, 0xa9, 0x4c, 0xb2, 0xcf, 0xb4, 0x96, 0x6e, 0xc5, 0x09, + 0x79, 0x75, 0x41, 0xa2, 0xfd, 0x0a, 0x6a, 0x14, 0xc9, 0x1a, 0xfb, 0xcf, 0x68, 0x52, 0x97, 0x9a, + 0x9e, 0x7b, 0xfd, 0xf4, 0xbf, 0x29, 0xc0, 0x4a, 0x37, 0xb1, 0x3d, 0xd6, 0xd7, 0x94, 0xb1, 0x2b, + 0x97, 0x8a, 0x5d, 0x8f, 0x64, 0x46, 0xc0, 0x43, 0xdf, 0xc6, 0x6c, 0x87, 0x34, 0x93, 0x10, 0x3c, + 0x80, 0x15, 0x7e, 0x48, 0xc9, 0xe3, 0x05, 0xf7, 0x7b, 0xfc, 0xec, 0xe4, 0xf3, 0x85, 0xfa, 0x08, + 0xd4, 0x19, 0x3a, 0x63, 0xda, 0x10, 0xf1, 0x70, 0x25, 0x43, 0x7a, 0xda, 0xe0, 0x9d, 0x00, 0x4c, + 0xd8, 0x8b, 0x0a, 0x33, 0xb3, 0x8a, 0x5e, 0xa2, 0x88, 0x66, 0x88, 0x4c, 0xf6, 0xf8, 0xc6, 0x5a, + 0x22, 0xcc, 0xd8, 0x2a, 0xba, 0x80, 0xd4, 0x43, 0x58, 0x21, 0xa1, 0x61, 0xa5, 0xce, 0x8a, 0x3d, + 0xfd, 0xce, 0xb4, 0x78, 0xb3, 0xa7, 0xa9, 0xd7, 0x48, 0xf6, 0x74, 0xef, 0x41, 0x95, 0x84, 0x86, + 0xe9, 0x3a, 0x34, 0xf4, 0x9e, 0x8f, 0x49, 0xbd, 0xc4, 0xd6, 0xa8, 0x90, 0xb0, 0x19, 0xe3, 0xd4, + 0x3f, 0x86, 0x1a, 0x09, 0xc5, 0x9b, 0x0b, 0x4b, 0xae, 0xeb, 0xcb, 0x6c, 0xa1, 0x7a, 0x76, 0xa1, + 0xe4, 0x9c, 0xe8, 0xfc, 0x04, 0xd2, 0xfe, 0x50, 0xcc, 0x1c, 0x44, 0x17, 0x7b, 0x17, 0x73, 0x0f, + 0x62, 0x8e, 0x6e, 0xf3, 0x6f, 0xae, 0xdb, 0xc2, 0x7c, 0xdd, 0xee, 0x80, 0x22, 0x9e, 0x0c, 0x12, + 0xae, 0xfc, 0x18, 0x6a, 0x1c, 0x1f, 0xb3, 0xfd, 0x04, 0xd6, 0x66, 0x29, 0x8d, 0xf8, 0xd1, 0x46, + 0xc9, 0x12, 0x9f, 0x36, 0xa8, 0x23, 0x64, 0x5e, 0xd4, 0x70, 0x42, 0x7f, 0xc2, 0xb3, 0x95, 0xaa, + 0x0e, 0x0c, 0xf5, 0x82, 0x62, 0xd4, 0x5d, 0x58, 0xb5, 0x79, 0x97, 0xcb, 0x88, 0x90, 0x21, 0x22, + 0x03, 0x7f, 0x9d, 0x5f, 0x11, 0x03, 0x43, 0x24, 0x42, 0xc7, 0x6d, 0x00, 0xec, 0x04, 0x92, 0xa8, + 0xc4, 0x1f, 0x66, 0xb1, 0x13, 0x24, 0x91, 0x45, 0xd8, 0xc0, 0x72, 0xc6, 0x06, 0x3e, 0x84, 0xe5, + 0x91, 0xe9, 0xd9, 0x2f, 0xb1, 0x1d, 0x9d, 0xd7, 0x81, 0x75, 0x6e, 0x12, 0x84, 0xfa, 0x04, 0xd6, + 0x43, 0x44, 0x50, 0x38, 0x35, 0x47, 0x2e, 0x32, 0x12, 0xc2, 0x32, 0x23, 0x5c, 0x4b, 0xc6, 0x9e, + 0xa5, 0xa7, 0x4c, 0x3c, 0x3e, 0x80, 0xec, 0xd4, 0x94, 0xca, 0xdd, 0x02, 0x9d, 0x92, 0x8c, 0x25, + 0x53, 0x76, 0x40, 0xa1, 0x26, 0x64, 0xff, 0xda, 0xb4, 0x90, 0x67, 0x5d, 0x1a, 0x34, 0x89, 0xac, + 0xb2, 0x0d, 0xd4, 0x48, 0xd8, 0x94, 0xe8, 0x01, 0xe6, 0x5d, 0xc6, 0xd0, 0x75, 0x48, 0xbd, 0xc6, + 0x1e, 0xdb, 0x39, 0xa0, 0xfd, 0x75, 0x0e, 0x56, 0x53, 0xd6, 0x21, 0x1e, 0x09, 0x9e, 0x00, 0xdd, + 0xbe, 0x91, 0x4e, 0xd5, 0x33, 0x2f, 0x05, 0xd2, 0xd1, 0xea, 0x25, 0xec, 0x04, 0xcf, 0x65, 0xb5, + 0x21, 0x94, 0x94, 0xcf, 0x28, 0x49, 0x63, 0x36, 0x2e, 0x9e, 0x33, 0x48, 0xfc, 0x60, 0x59, 0x26, + 0xe2, 0x41, 0x62, 0x80, 0x6d, 0xed, 0x1f, 0x59, 0x6c, 0x49, 0xe2, 0xd4, 0x27, 0x50, 0x4c, 0x3d, + 0x9a, 0x6c, 0xa5, 0x57, 0xce, 0x38, 0x14, 0x9d, 0x91, 0x51, 0x72, 0x17, 0x7b, 0x17, 0xc2, 0x83, + 0xcc, 0x27, 0xa7, 0x66, 0xaf, 0x33, 0x32, 0xf5, 0x69, 0xe6, 0x9d, 0xbd, 0xbc, 0x7f, 0x6b, 0xee, + 0x04, 0xf1, 0xf7, 0x8a, 0xfc, 0x6d, 0x40, 0x07, 0x45, 0xa4, 0x0f, 0x3f, 0xb0, 0xc1, 0x31, 0xa7, + 0x43, 0xfa, 0xaf, 0x79, 0xd8, 0xa4, 0xc5, 0x63, 0x5c, 0x19, 0x0e, 0x26, 0x23, 0x9e, 0xff, 0xaa, + 0x8f, 0xe5, 0x25, 0x8b, 0xeb, 0xeb, 0xe4, 0xa7, 0x0d, 0xc5, 0x8d, 0x2f, 0x77, 0x97, 0xbf, 0xb3, + 0xec, 0xc2, 0x6a, 0xf2, 0xd4, 0x24, 0x89, 0xf9, 0xfa, 0x2b, 0xf1, 0xab, 0x92, 0xa0, 0x7d, 0x08, + 0x2b, 0xb4, 0xd6, 0x8e, 0xb0, 0xef, 0x19, 0x99, 0x47, 0x9b, 0x9a, 0x44, 0x27, 0x84, 0x66, 0xe8, + 0x4c, 0x78, 0x4a, 0xcf, 0x09, 0x79, 0x16, 0x59, 0x93, 0x68, 0x41, 0xf8, 0x04, 0xd6, 0x59, 0x06, + 0x1b, 0xf8, 0x34, 0x61, 0x4d, 0xd8, 0xf2, 0xca, 0x62, 0x2d, 0x33, 0x76, 0xdd, 0x14, 0xf1, 0x83, + 0xc3, 0xe2, 0x9c, 0x29, 0xc7, 0xfc, 0x6f, 0x87, 0xfb, 0x50, 0x61, 0xba, 0xea, 0xb4, 0xe2, 0xaa, + 0x95, 0xea, 0xdb, 0x78, 0x22, 0xab, 0x56, 0x0a, 0x3d, 0xd1, 0x9e, 0xc0, 0x12, 0x25, 0xa3, 0x3a, + 0x7c, 0x00, 0x85, 0xc8, 0x9d, 0xde, 0x98, 0xaa, 0x51, 0x02, 0xed, 0x5f, 0xf2, 0xbc, 0x27, 0xd2, + 0xf1, 0xce, 0xfc, 0x70, 0xcc, 0x3a, 0x49, 0xe2, 0x14, 0x44, 0x6f, 0x20, 0x97, 0xf4, 0x06, 0x1e, + 0x67, 0xa3, 0xd5, 0x4c, 0x8b, 0x44, 0x0a, 0x27, 0x4d, 0xe1, 0x11, 0xac, 0x5e, 0xe9, 0x24, 0x08, + 0x6d, 0x2b, 0xb3, 0xed, 0x01, 0xf5, 0x5b, 0xa8, 0xd0, 0x34, 0x9f, 0xa5, 0xfa, 0x34, 0xc5, 0x2c, + 0x32, 0xb9, 0x3f, 0xcd, 0xae, 0x70, 0x45, 0xc6, 0x3d, 0x61, 0x33, 0xee, 0x94, 0xb4, 0xbd, 0x28, + 0xbc, 0xd4, 0x81, 0xc4, 0x88, 0xed, 0x3e, 0xac, 0xcc, 0x0c, 0xcf, 0x69, 0x91, 0x3d, 0x4c, 0x67, + 0xbe, 0xe5, 0xfd, 0xd5, 0xec, 0x82, 0xb4, 0x96, 0xe1, 0xe3, 0x5f, 0xe6, 0x3f, 0xcf, 0x69, 0xff, + 0x94, 0x03, 0x85, 0xa2, 0xbb, 0x4f, 0x07, 0x28, 0x9c, 0x62, 0x0b, 0x51, 0x35, 0x3d, 0x13, 0x05, + 0x4a, 0x92, 0x18, 0x3f, 0xcc, 0x32, 0x49, 0x53, 0xef, 0x65, 0xa4, 0x65, 0x95, 0x0c, 0x15, 0xf5, + 0x08, 0x2a, 0x3f, 0xa6, 0x9c, 0x9f, 0xc1, 0xb2, 0x70, 0x2f, 0x9d, 0xd6, 0x9b, 0x27, 0xed, 0xbb, + 0x84, 0x3d, 0xba, 0x8b, 0x67, 0x50, 0x75, 0x0d, 0x56, 0xba, 0x03, 0x83, 0x82, 0xc6, 0x49, 0xef, + 0x9b, 0xde, 0xf1, 0x77, 0x3d, 0xe5, 0x67, 0xaa, 0x02, 0x15, 0x89, 0xec, 0x1d, 0xb7, 0xda, 0x4a, + 0x2e, 0x8d, 0xe9, 0x76, 0x7a, 0xdf, 0x28, 0x79, 0x75, 0x03, 0x56, 0x25, 0xa6, 0xaf, 0xb7, 0x9f, + 0x77, 0xbe, 0x37, 0x4e, 0x0f, 0x94, 0xc2, 0x3c, 0x74, 0x43, 0x29, 0xee, 0xfe, 0x27, 0x7b, 0xa2, + 0x4d, 0x5e, 0x42, 0xd5, 0x0f, 0x60, 0xad, 0x3b, 0x30, 0xfa, 0xfa, 0xf1, 0xf0, 0xf8, 0xf0, 0xb8, + 0x9b, 0x5a, 0x7b, 0x66, 0xa0, 0x33, 0xe8, 0x0c, 0x8c, 0xee, 0x13, 0x25, 0x37, 0x7f, 0x60, 0x5f, + 0xc9, 0xcf, 0x0e, 0x1c, 0x0f, 0xfa, 0xcf, 0x8d, 0xd3, 0x7d, 0xa5, 0xa0, 0x6e, 0x82, 0x9a, 0x1e, + 0x68, 0x75, 0xf4, 0xf6, 0xe1, 0x50, 0x29, 0xce, 0xe2, 0x07, 0xc3, 0xe6, 0xb0, 0x73, 0xa8, 0x2c, + 0xcc, 0x67, 0xf4, 0x54, 0x59, 0xdc, 0xfd, 0xb7, 0x05, 0x7e, 0x31, 0x63, 0x3b, 0xae, 0x40, 0x49, + 0x6f, 0x0f, 0xda, 0xfa, 0x69, 0xbb, 0xa5, 0xfc, 0x4c, 0x5d, 0x82, 0x42, 0xbb, 0xd7, 0xe2, 0x5a, + 0x6a, 0xf7, 0x5a, 0xc6, 0x77, 0x9d, 0xe1, 0xd7, 0x46, 0x7f, 0xd0, 0x57, 0xf2, 0x19, 0xcc, 0xc9, + 0xa0, 0xaf, 0x14, 0xd4, 0x75, 0x50, 0xd2, 0x34, 0x0c, 0x5b, 0x54, 0x4b, 0x50, 0x6c, 0xf7, 0x5a, + 0xdf, 0x2b, 0x0b, 0xea, 0x2a, 0x54, 0xe9, 0x57, 0xc2, 0x64, 0x31, 0x8b, 0xa2, 0xf4, 0x4b, 0x54, + 0xcd, 0x19, 0x2a, 0x86, 0x2e, 0x09, 0x36, 0x43, 0x65, 0x59, 0xcc, 0x19, 0x26, 0x6c, 0x20, 0x8b, + 0xa2, 0xf4, 0x65, 0xc1, 0x66, 0x98, 0x65, 0x53, 0x11, 0x94, 0xc6, 0xb3, 0x86, 0xd1, 0xee, 0x1d, + 0x36, 0xfb, 0x03, 0xa5, 0xa6, 0x02, 0x2c, 0x32, 0xd4, 0x91, 0xb2, 0xa2, 0x96, 0x61, 0x89, 0x7e, + 0xb7, 0xbe, 0x6f, 0x28, 0x4a, 0x02, 0x1c, 0x28, 0xab, 0x31, 0x30, 0x6c, 0x28, 0x6a, 0x02, 0x1c, + 0x28, 0x6b, 0x54, 0x63, 0x02, 0x68, 0x28, 0xeb, 0xc9, 0xa4, 0x7d, 0x65, 0x23, 0x1e, 0xfa, 0x7e, + 0xff, 0x54, 0xd9, 0x4c, 0x08, 0xf7, 0x4f, 0x94, 0x0f, 0x52, 0xd0, 0x91, 0x52, 0x17, 0xe2, 0x26, + 0x72, 0x19, 0x3a, 0xb2, 0x95, 0x5b, 0x33, 0x4a, 0x6e, 0x29, 0x1f, 0xce, 0x51, 0x72, 0x4b, 0xb9, + 0x9d, 0xc1, 0x9e, 0x08, 0xec, 0x47, 0x6a, 0x1d, 0xd6, 0x67, 0x0f, 0x84, 0x8d, 0xdc, 0x99, 0xd5, + 0x7b, 0x4b, 0xb9, 0x3b, 0x4f, 0xef, 0x2d, 0xe5, 0xe7, 0x59, 0xb4, 0x64, 0xa0, 0xa9, 0x5b, 0xb0, + 0x71, 0xe5, 0x94, 0xd8, 0xd0, 0xbd, 0xd9, 0xc3, 0x68, 0x29, 0x1f, 0xcf, 0x3b, 0x8c, 0x96, 0x72, + 0x3f, 0x8b, 0x96, 0x0c, 0x1e, 0x08, 0xde, 0xc3, 0xab, 0xbc, 0x1f, 0x8e, 0x16, 0xd9, 0xad, 0x7f, + 0xfa, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x99, 0x10, 0xcc, 0x0a, 0x32, 0x00, 0x00, } diff --git a/api/attribute.proto b/api/attribute.proto index f5680420..090060ea 100644 --- a/api/attribute.proto +++ b/api/attribute.proto @@ -176,6 +176,26 @@ message EVPNIPMSIRoute { google.protobuf.Any rt = 3; } +// SRPolicyNLRI represents the NLRI for: +// - AFI=1, SAFI=73 +// - AFI=2, SAFI=73 +message SRPolicyNLRI { + // length field carries the length of NLRI portion expressed in bits + uint32 length = 1; + // distinguisher field carries 4-octet value uniquely identifying the policy + // in the context of tuple. + uint32 distinguisher = 2; + // color field carries 4-octet value identifying (with the endpoint) the + // policy. The color is used to match the color of the destination + // prefixes to steer traffic into the SR Policy + uint32 color = 3; + // endpoint field identifies the endpoint of a policy. The Endpoint may + // represent a single node or a set of nodes (e.g., an anycast + // address). The Endpoint is an IPv4 (4-octet) address or an IPv6 + // (16-octet) address according to the AFI of the NLRI. + bytes endpoint = 4; +} + // LabeledVPNIPAddressPrefix represents the NLRI for: // - AFI=1, SAFI=128 // - AFI=2, SAFI=128 @@ -353,6 +373,7 @@ message MpReachNLRIAttribute { // - VPNFlowSpecNLRI // - OpaqueNLRI // - LsAddrPrefix + // - SR Policy NLRI repeated google.protobuf.Any nlris = 3; } @@ -484,6 +505,114 @@ message TunnelEncapSubTLVProtocol { uint32 protocol = 1; } message TunnelEncapSubTLVColor { uint32 color = 1; } +message TunnelEncapSubTLVSRPreference { + uint32 flags = 1; + uint32 preference = 2; +} + +message SRBindingSID { + uint32 flags = 1; + bytes sid = 2; +} + +enum SRv6Behavior { + RESERVED = 0; + END = 1; + END_WITH_PSP = 2; + END_WITH_USP = 3; + END_WITH_PSP_USP = 4; + ENDX = 5; + ENDX_WITH_PSP = 6; + ENDX_WITH_USP = 7; + ENDX_WITH_PSP_USP = 8; + ENDT = 9; + ENDT_WITH_PSP = 10; + ENDT_WITH_USP = 11; + ENDT_WITH_PSP_USP = 12; + END_B6_ENCAPS = 14; + END_BM = 15; + END_DX6 = 16; + END_DX4 = 17; + END_DT6 = 18; + END_DT4 = 19; + END_DT46 = 20; + END_DX2 = 21; + END_DX2V = 22; + END_DT2U = 23; + END_DT2M = 24; + END_B6_ENCAPS_Red = 27; + END_WITH_USD = 28; + END_WITH_PSP_USD = 29; + END_WITH_USP_USD = 30; + END_WITH_PSP_USP_USD = 31; + ENDX_WITH_USD = 32; + ENDX_WITH_PSP_USD = 33; + ENDX_WITH_USP_USD = 34; + ENDX_WITH_PSP_USP_USD = 35; + ENDT_WITH_USD = 36; + ENDT_WITH_PSP_USD = 37; + ENDT_WITH_USP_USD = 38; + ENDT_WITH_PSP_USP_USD = 39; +} + +message SRv6EndPpointBehavior { + SRv6Behavior behavior = 1; + uint32 block_len = 2; + uint32 node_len = 3; + uint32 func_len = 4; + uint32 arg_len = 5; +} + +message SRv6BindingSID { + bool s_flag = 1; + bool i_flag = 2; + bool b_flag = 3; + bytes sid = 4; + SRv6EndPpointBehavior endpoint_behavior_structure = 5; +} + +message TunnelEncapSubTLVSRENLP { + uint32 flags = 1; + uint32 enlp = 2; +} + +message SRWeight { + uint32 flags = 1; + uint32 weigth = 2; +} + +message SegmentFlags { + bool v_flag = 1; + bool a_flag = 2; + bool s_flag = 3; + bool b_flag = 4; +} + +message SegmentTypeA { + SegmentFlags flags = 1; + uint32 label = 2; +} + +message SegmentList { + SRWeight weight = 1; + // segments must be one of: + // - SegmentTypeA + repeated google.protobuf.Any segments = 2; +} + +message TunnelEncapSubTLVSRPolicy { + TunnelEncapSubTLVSRPreference preference = 1; + // bsid must be one of: + // - SRBindingSID + // - SRv6BindingSID + google.protobuf.Any bsid = 2; + string name = 3; + string candidate_path_name = 4; + uint32 priority = 5; + TunnelEncapSubTLVSRENLP enlp = 6; + repeated SegmentList segment_list = 7; +} + message TunnelEncapSubTLVUnknown { uint32 type = 1; bytes value = 2; @@ -495,6 +624,7 @@ message TunnelEncapTLV { // - TunnelEncapSubTLVEncapsulation // - TunnelEncapSubTLVProtocol // - TunnelEncapSubTLVColor + // - TunnelEncapSubTLVSRPolicy // - TunnelEncapSubTLVUnknown repeated google.protobuf.Any tlvs = 2; } -- cgit v1.2.3