summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2016-04-15 09:14:04 +0000
committerISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2016-04-19 06:23:42 +0000
commit642270bb32db2a0a55badf6a53076aeac2dfb215 (patch)
tree3d92957e525c31935f8844ac8aa5f02d0e052283
parent00039df8275b0af2f4be9be3844ec6d130fe0add (diff)
cli: show prefix-limit configuration by `gobgp neighbor <neighbor-addr>`
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
-rw-r--r--api/gobgp.pb.go666
-rw-r--r--api/gobgp.proto7
-rw-r--r--gobgp/cmd/common.go14
-rw-r--r--gobgp/cmd/neighbor.go11
-rw-r--r--server/peer.go13
5 files changed, 385 insertions, 326 deletions
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go
index 03103962..0d8784be 100644
--- a/api/gobgp.pb.go
+++ b/api/gobgp.pb.go
@@ -30,6 +30,7 @@ It has these top-level messages:
Table
Peer
ApplyPolicy
+ PrefixLimit
PeerConf
EbgpMultihop
RouteReflector
@@ -402,7 +403,7 @@ func (x ROAResult_ValidationReason) String() string {
return proto.EnumName(ROAResult_ValidationReason_name, int32(x))
}
func (ROAResult_ValidationReason) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{50, 0}
+ return fileDescriptor0, []int{51, 0}
}
type ROAResult_ValidationResult int32
@@ -431,7 +432,7 @@ func (x ROAResult_ValidationResult) String() string {
return proto.EnumName(ROAResult_ValidationResult_name, int32(x))
}
func (ROAResult_ValidationResult) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{50, 1}
+ return fileDescriptor0, []int{51, 1}
}
type Error struct {
@@ -847,26 +848,45 @@ func (m *ApplyPolicy) GetImportPolicy() *PolicyAssignment {
return nil
}
+type PrefixLimit struct {
+ Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
+ MaxPrefixes uint32 `protobuf:"varint,2,opt,name=max_prefixes,json=maxPrefixes" json:"max_prefixes,omitempty"`
+ ShutdownThresholdPct uint32 `protobuf:"varint,3,opt,name=shutdown_threshold_pct,json=shutdownThresholdPct" json:"shutdown_threshold_pct,omitempty"`
+}
+
+func (m *PrefixLimit) Reset() { *m = PrefixLimit{} }
+func (m *PrefixLimit) String() string { return proto.CompactTextString(m) }
+func (*PrefixLimit) ProtoMessage() {}
+func (*PrefixLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+
type PeerConf struct {
- AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
- Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
- LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
- NeighborAddress string `protobuf:"bytes,4,opt,name=neighbor_address,json=neighborAddress" json:"neighbor_address,omitempty"`
- PeerAs uint32 `protobuf:"varint,5,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
- PeerGroup string `protobuf:"bytes,6,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
- PeerType uint32 `protobuf:"varint,7,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
- RemovePrivateAs uint32 `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs" json:"remove_private_as,omitempty"`
- RouteFlapDamping bool `protobuf:"varint,9,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
- SendCommunity uint32 `protobuf:"varint,10,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
- RemoteCap [][]byte `protobuf:"bytes,11,rep,name=remote_cap,json=remoteCap,proto3" json:"remote_cap,omitempty"`
- LocalCap [][]byte `protobuf:"bytes,12,rep,name=local_cap,json=localCap,proto3" json:"local_cap,omitempty"`
- Id string `protobuf:"bytes,13,opt,name=id" json:"id,omitempty"`
+ AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
+ Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+ LocalAs uint32 `protobuf:"varint,3,opt,name=local_as,json=localAs" json:"local_as,omitempty"`
+ NeighborAddress string `protobuf:"bytes,4,opt,name=neighbor_address,json=neighborAddress" json:"neighbor_address,omitempty"`
+ PeerAs uint32 `protobuf:"varint,5,opt,name=peer_as,json=peerAs" json:"peer_as,omitempty"`
+ PeerGroup string `protobuf:"bytes,6,opt,name=peer_group,json=peerGroup" json:"peer_group,omitempty"`
+ PeerType uint32 `protobuf:"varint,7,opt,name=peer_type,json=peerType" json:"peer_type,omitempty"`
+ RemovePrivateAs uint32 `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs" json:"remove_private_as,omitempty"`
+ RouteFlapDamping bool `protobuf:"varint,9,opt,name=route_flap_damping,json=routeFlapDamping" json:"route_flap_damping,omitempty"`
+ SendCommunity uint32 `protobuf:"varint,10,opt,name=send_community,json=sendCommunity" json:"send_community,omitempty"`
+ RemoteCap [][]byte `protobuf:"bytes,11,rep,name=remote_cap,json=remoteCap,proto3" json:"remote_cap,omitempty"`
+ LocalCap [][]byte `protobuf:"bytes,12,rep,name=local_cap,json=localCap,proto3" json:"local_cap,omitempty"`
+ Id string `protobuf:"bytes,13,opt,name=id" json:"id,omitempty"`
+ PrefixLimits []*PrefixLimit `protobuf:"bytes,14,rep,name=prefix_limits,json=prefixLimits" json:"prefix_limits,omitempty"`
}
func (m *PeerConf) Reset() { *m = PeerConf{} }
func (m *PeerConf) String() string { return proto.CompactTextString(m) }
func (*PeerConf) ProtoMessage() {}
-func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (*PeerConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+
+func (m *PeerConf) GetPrefixLimits() []*PrefixLimit {
+ if m != nil {
+ return m.PrefixLimits
+ }
+ return nil
+}
type EbgpMultihop struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
@@ -876,7 +896,7 @@ type EbgpMultihop struct {
func (m *EbgpMultihop) Reset() { *m = EbgpMultihop{} }
func (m *EbgpMultihop) String() string { return proto.CompactTextString(m) }
func (*EbgpMultihop) ProtoMessage() {}
-func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
+func (*EbgpMultihop) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
type RouteReflector struct {
RouteReflectorClient bool `protobuf:"varint,1,opt,name=route_reflector_client,json=routeReflectorClient" json:"route_reflector_client,omitempty"`
@@ -886,7 +906,7 @@ type RouteReflector struct {
func (m *RouteReflector) Reset() { *m = RouteReflector{} }
func (m *RouteReflector) String() string { return proto.CompactTextString(m) }
func (*RouteReflector) ProtoMessage() {}
-func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+func (*RouteReflector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
type PeerState struct {
AuthPassword string `protobuf:"bytes,1,opt,name=auth_password,json=authPassword" json:"auth_password,omitempty"`
@@ -915,7 +935,7 @@ type PeerState struct {
func (m *PeerState) Reset() { *m = PeerState{} }
func (m *PeerState) String() string { return proto.CompactTextString(m) }
func (*PeerState) ProtoMessage() {}
-func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+func (*PeerState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *PeerState) GetMessages() *Messages {
if m != nil {
@@ -939,7 +959,7 @@ type Messages struct {
func (m *Messages) Reset() { *m = Messages{} }
func (m *Messages) String() string { return proto.CompactTextString(m) }
func (*Messages) ProtoMessage() {}
-func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (*Messages) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (m *Messages) GetReceived() *Message {
if m != nil {
@@ -968,7 +988,7 @@ type Message struct {
func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage() {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
type Queues struct {
Input uint32 `protobuf:"varint,1,opt,name=input" json:"input,omitempty"`
@@ -978,7 +998,7 @@ type Queues struct {
func (m *Queues) Reset() { *m = Queues{} }
func (m *Queues) String() string { return proto.CompactTextString(m) }
func (*Queues) ProtoMessage() {}
-func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+func (*Queues) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
type Timers struct {
Config *TimersConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
@@ -988,7 +1008,7 @@ type Timers struct {
func (m *Timers) Reset() { *m = Timers{} }
func (m *Timers) String() string { return proto.CompactTextString(m) }
func (*Timers) ProtoMessage() {}
-func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (*Timers) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
func (m *Timers) GetConfig() *TimersConfig {
if m != nil {
@@ -1014,7 +1034,7 @@ type TimersConfig struct {
func (m *TimersConfig) Reset() { *m = TimersConfig{} }
func (m *TimersConfig) String() string { return proto.CompactTextString(m) }
func (*TimersConfig) ProtoMessage() {}
-func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+func (*TimersConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
type TimersState struct {
ConnectRetry uint64 `protobuf:"varint,1,opt,name=connect_retry,json=connectRetry" json:"connect_retry,omitempty"`
@@ -1029,7 +1049,7 @@ type TimersState struct {
func (m *TimersState) Reset() { *m = TimersState{} }
func (m *TimersState) String() string { return proto.CompactTextString(m) }
func (*TimersState) ProtoMessage() {}
-func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+func (*TimersState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
type Transport struct {
LocalAddress string `protobuf:"bytes,1,opt,name=local_address,json=localAddress" json:"local_address,omitempty"`
@@ -1044,7 +1064,7 @@ type Transport struct {
func (m *Transport) Reset() { *m = Transport{} }
func (m *Transport) String() string { return proto.CompactTextString(m) }
func (*Transport) ProtoMessage() {}
-func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+func (*Transport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
type RouteServer struct {
RouteServerClient bool `protobuf:"varint,1,opt,name=route_server_client,json=routeServerClient" json:"route_server_client,omitempty"`
@@ -1053,7 +1073,7 @@ type RouteServer struct {
func (m *RouteServer) Reset() { *m = RouteServer{} }
func (m *RouteServer) String() string { return proto.CompactTextString(m) }
func (*RouteServer) ProtoMessage() {}
-func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
+func (*RouteServer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
type Prefix struct {
IpPrefix string `protobuf:"bytes,1,opt,name=ip_prefix,json=ipPrefix" json:"ip_prefix,omitempty"`
@@ -1064,7 +1084,7 @@ type Prefix struct {
func (m *Prefix) Reset() { *m = Prefix{} }
func (m *Prefix) String() string { return proto.CompactTextString(m) }
func (*Prefix) ProtoMessage() {}
-func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
+func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
type DefinedSet struct {
Type DefinedType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.DefinedType" json:"type,omitempty"`
@@ -1076,7 +1096,7 @@ type DefinedSet struct {
func (m *DefinedSet) Reset() { *m = DefinedSet{} }
func (m *DefinedSet) String() string { return proto.CompactTextString(m) }
func (*DefinedSet) ProtoMessage() {}
-func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
+func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
func (m *DefinedSet) GetPrefixes() []*Prefix {
if m != nil {
@@ -1093,7 +1113,7 @@ type MatchSet struct {
func (m *MatchSet) Reset() { *m = MatchSet{} }
func (m *MatchSet) String() string { return proto.CompactTextString(m) }
func (*MatchSet) ProtoMessage() {}
-func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
+func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
type AsPathLength struct {
Type AsPathLengthType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.AsPathLengthType" json:"type,omitempty"`
@@ -1103,7 +1123,7 @@ type AsPathLength struct {
func (m *AsPathLength) Reset() { *m = AsPathLength{} }
func (m *AsPathLength) String() string { return proto.CompactTextString(m) }
func (*AsPathLength) ProtoMessage() {}
-func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
+func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
type Conditions struct {
PrefixSet *MatchSet `protobuf:"bytes,1,opt,name=prefix_set,json=prefixSet" json:"prefix_set,omitempty"`
@@ -1118,7 +1138,7 @@ type Conditions struct {
func (m *Conditions) Reset() { *m = Conditions{} }
func (m *Conditions) String() string { return proto.CompactTextString(m) }
func (*Conditions) ProtoMessage() {}
-func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
func (m *Conditions) GetPrefixSet() *MatchSet {
if m != nil {
@@ -1170,7 +1190,7 @@ type CommunityAction struct {
func (m *CommunityAction) Reset() { *m = CommunityAction{} }
func (m *CommunityAction) String() string { return proto.CompactTextString(m) }
func (*CommunityAction) ProtoMessage() {}
-func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
+func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
type MedAction struct {
Type MedActionType `protobuf:"varint,1,opt,name=type,enum=gobgpapi.MedActionType" json:"type,omitempty"`
@@ -1180,7 +1200,7 @@ type MedAction struct {
func (m *MedAction) Reset() { *m = MedAction{} }
func (m *MedAction) String() string { return proto.CompactTextString(m) }
func (*MedAction) ProtoMessage() {}
-func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
+func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
type AsPrependAction struct {
Asn uint32 `protobuf:"varint,1,opt,name=asn" json:"asn,omitempty"`
@@ -1191,7 +1211,7 @@ type AsPrependAction struct {
func (m *AsPrependAction) Reset() { *m = AsPrependAction{} }
func (m *AsPrependAction) String() string { return proto.CompactTextString(m) }
func (*AsPrependAction) ProtoMessage() {}
-func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
+func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
type Actions struct {
RouteAction RouteAction `protobuf:"varint,1,opt,name=route_action,json=routeAction,enum=gobgpapi.RouteAction" json:"route_action,omitempty"`
@@ -1204,7 +1224,7 @@ type Actions struct {
func (m *Actions) Reset() { *m = Actions{} }
func (m *Actions) String() string { return proto.CompactTextString(m) }
func (*Actions) ProtoMessage() {}
-func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }
+func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
func (m *Actions) GetCommunity() *CommunityAction {
if m != nil {
@@ -1243,7 +1263,7 @@ type Statement struct {
func (m *Statement) Reset() { *m = Statement{} }
func (m *Statement) String() string { return proto.CompactTextString(m) }
func (*Statement) ProtoMessage() {}
-func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }
+func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
func (m *Statement) GetConditions() *Conditions {
if m != nil {
@@ -1267,7 +1287,7 @@ type Policy struct {
func (m *Policy) Reset() { *m = Policy{} }
func (m *Policy) String() string { return proto.CompactTextString(m) }
func (*Policy) ProtoMessage() {}
-func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }
+func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
func (m *Policy) GetStatements() []*Statement {
if m != nil {
@@ -1287,7 +1307,7 @@ type PolicyAssignment struct {
func (m *PolicyAssignment) Reset() { *m = PolicyAssignment{} }
func (m *PolicyAssignment) String() string { return proto.CompactTextString(m) }
func (*PolicyAssignment) ProtoMessage() {}
-func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }
+func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
func (m *PolicyAssignment) GetPolicies() []*Policy {
if m != nil {
@@ -1303,7 +1323,7 @@ type MrtMessage struct {
func (m *MrtMessage) Reset() { *m = MrtMessage{} }
func (m *MrtMessage) String() string { return proto.CompactTextString(m) }
func (*MrtMessage) ProtoMessage() {}
-func (*MrtMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }
+func (*MrtMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
type RPKIConf struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
@@ -1313,7 +1333,7 @@ type RPKIConf struct {
func (m *RPKIConf) Reset() { *m = RPKIConf{} }
func (m *RPKIConf) String() string { return proto.CompactTextString(m) }
func (*RPKIConf) ProtoMessage() {}
-func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }
+func (*RPKIConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
type RPKIState struct {
Uptime int64 `protobuf:"varint,1,opt,name=uptime" json:"uptime,omitempty"`
@@ -1338,7 +1358,7 @@ type RPKIState struct {
func (m *RPKIState) Reset() { *m = RPKIState{} }
func (m *RPKIState) String() string { return proto.CompactTextString(m) }
func (*RPKIState) ProtoMessage() {}
-func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }
+func (*RPKIState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
type RPKI struct {
Conf *RPKIConf `protobuf:"bytes,1,opt,name=conf" json:"conf,omitempty"`
@@ -1348,7 +1368,7 @@ type RPKI struct {
func (m *RPKI) Reset() { *m = RPKI{} }
func (m *RPKI) String() string { return proto.CompactTextString(m) }
func (*RPKI) ProtoMessage() {}
-func (*RPKI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }
+func (*RPKI) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
func (m *RPKI) GetConf() *RPKIConf {
if m != nil {
@@ -1375,7 +1395,7 @@ type ROA struct {
func (m *ROA) Reset() { *m = ROA{} }
func (m *ROA) String() string { return proto.CompactTextString(m) }
func (*ROA) ProtoMessage() {}
-func (*ROA) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }
+func (*ROA) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
func (m *ROA) GetConf() *RPKIConf {
if m != nil {
@@ -1399,7 +1419,7 @@ type ROAResult struct {
func (m *ROAResult) Reset() { *m = ROAResult{} }
func (m *ROAResult) String() string { return proto.CompactTextString(m) }
func (*ROAResult) ProtoMessage() {}
-func (*ROAResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
+func (*ROAResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
func (m *ROAResult) GetRoas() []*ROA {
if m != nil {
@@ -1418,7 +1438,7 @@ type Vrf struct {
func (m *Vrf) Reset() { *m = Vrf{} }
func (m *Vrf) String() string { return proto.CompactTextString(m) }
func (*Vrf) ProtoMessage() {}
-func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }
+func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
type Global struct {
As uint32 `protobuf:"varint,1,opt,name=as" json:"as,omitempty"`
@@ -1434,7 +1454,7 @@ type Global struct {
func (m *Global) Reset() { *m = Global{} }
func (m *Global) String() string { return proto.CompactTextString(m) }
func (*Global) ProtoMessage() {}
-func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }
+func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }
func init() {
proto.RegisterType((*Error)(nil), "gobgpapi.Error")
@@ -1458,6 +1478,7 @@ func init() {
proto.RegisterType((*Table)(nil), "gobgpapi.Table")
proto.RegisterType((*Peer)(nil), "gobgpapi.Peer")
proto.RegisterType((*ApplyPolicy)(nil), "gobgpapi.ApplyPolicy")
+ proto.RegisterType((*PrefixLimit)(nil), "gobgpapi.PrefixLimit")
proto.RegisterType((*PeerConf)(nil), "gobgpapi.PeerConf")
proto.RegisterType((*EbgpMultihop)(nil), "gobgpapi.EbgpMultihop")
proto.RegisterType((*RouteReflector)(nil), "gobgpapi.RouteReflector")
@@ -3157,280 +3178,285 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
- // 4392 bytes of a gzipped FileDescriptorProto
+ // 4466 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x3b, 0x4d, 0x73, 0x1b, 0x47,
- 0x76, 0x06, 0x01, 0x92, 0xc0, 0x03, 0x40, 0x82, 0x43, 0x49, 0xa6, 0xb8, 0x5e, 0xaf, 0x77, 0x62,
+ 0x76, 0x06, 0x01, 0x92, 0xc0, 0x03, 0x40, 0x82, 0x43, 0x4a, 0xa6, 0xb8, 0x5e, 0xaf, 0x77, 0x62,
0x7b, 0x6d, 0xae, 0x2d, 0xd9, 0xb2, 0x2d, 0x6f, 0xb4, 0xde, 0x4d, 0x20, 0x60, 0x24, 0x61, 0x4d,
0x12, 0x50, 0x13, 0x92, 0xed, 0x5c, 0x26, 0x23, 0x60, 0x40, 0x4e, 0x09, 0xc0, 0x8c, 0x67, 0x06,
- 0xfa, 0x48, 0x55, 0x2e, 0x9b, 0x43, 0x0e, 0xa9, 0x5c, 0x53, 0x95, 0xaa, 0xdd, 0x3f, 0x90, 0x3f,
- 0x90, 0xda, 0x7b, 0x52, 0x95, 0xbf, 0x90, 0x4b, 0x72, 0x48, 0xe5, 0x92, 0x5f, 0x90, 0x63, 0xde,
- 0x7b, 0xdd, 0x33, 0xd3, 0x03, 0x8c, 0x28, 0x6a, 0xb5, 0x95, 0xaa, 0xbd, 0x88, 0xe8, 0xf7, 0xd5,
- 0xaf, 0xbb, 0x5f, 0xbf, 0xaf, 0x69, 0x41, 0xfd, 0xd4, 0x7f, 0x74, 0x1a, 0x5c, 0x0b, 0x42, 0x3f,
- 0xf6, 0x8d, 0x2a, 0x0f, 0x9c, 0xc0, 0x33, 0xa7, 0xb0, 0x6e, 0x85, 0xa1, 0x1f, 0x1a, 0x1f, 0x43,
- 0x65, 0xe4, 0x8f, 0xdd, 0xbd, 0xd2, 0x3b, 0xa5, 0x0f, 0xb6, 0x6e, 0x5c, 0xbd, 0x96, 0x50, 0x5c,
- 0x63, 0xb4, 0xfc, 0xb7, 0x83, 0x04, 0x82, 0xc9, 0x8c, 0x16, 0x94, 0x67, 0xd1, 0xe9, 0xde, 0x1a,
- 0x52, 0xd7, 0x04, 0xfd, 0x34, 0x4d, 0xa8, 0xa5, 0x44, 0x46, 0x1d, 0x36, 0x4f, 0x1e, 0x74, 0x3a,
- 0xd6, 0xc9, 0x49, 0xeb, 0x0d, 0xa3, 0x0a, 0x95, 0x3b, 0xed, 0xde, 0x61, 0xab, 0x64, 0x9e, 0x42,
- 0xad, 0x1d, 0x9e, 0x2e, 0x66, 0xee, 0x3c, 0x8e, 0x8c, 0x6b, 0x50, 0x0d, 0xdd, 0xc8, 0x5f, 0x84,
- 0xa3, 0x64, 0x56, 0x23, 0x9b, 0x55, 0x28, 0x8c, 0x48, 0x69, 0x8c, 0x2b, 0xb0, 0x31, 0x71, 0x66,
- 0xde, 0xf4, 0x39, 0xcf, 0xda, 0x14, 0x6a, 0x64, 0x18, 0x50, 0x99, 0x3b, 0x33, 0x77, 0xaf, 0xcc,
- 0xba, 0xf0, 0x6f, 0xf3, 0xdf, 0x4b, 0xd0, 0x3a, 0xf2, 0xc7, 0x03, 0x27, 0x3e, 0xcb, 0x26, 0xfc,
- 0x14, 0x6a, 0x7e, 0xe0, 0x86, 0x4e, 0xec, 0xf9, 0x73, 0x35, 0xe3, 0x6e, 0x36, 0x63, 0x3f, 0x41,
- 0x89, 0x8c, 0x2a, 0xa7, 0xe3, 0xda, 0x05, 0x74, 0x2c, 0xd0, 0xc5, 0x30, 0xa1, 0x12, 0xa0, 0x1e,
- 0x7b, 0x15, 0x84, 0xd5, 0x6f, 0x6c, 0x65, 0xfc, 0xa4, 0x9d, 0x60, 0x1c, 0xf1, 0x2d, 0x16, 0xde,
- 0x78, 0x6f, 0x1d, 0x69, 0x1a, 0x82, 0x7f, 0x6b, 0xeb, 0xdd, 0xd0, 0xd7, 0x6b, 0xbe, 0x07, 0xdb,
- 0x6a, 0x69, 0xa8, 0x40, 0xe0, 0xcf, 0x23, 0x37, 0x65, 0x2f, 0x65, 0xec, 0xe6, 0x5f, 0xc3, 0x8e,
- 0x22, 0x8b, 0x7e, 0xff, 0x3d, 0x4f, 0xd6, 0xb3, 0xa6, 0xad, 0xe7, 0x5d, 0x58, 0x27, 0x9d, 0x23,
- 0x5c, 0x64, 0xb9, 0x60, 0x41, 0x12, 0x69, 0xce, 0xe0, 0x12, 0x4e, 0x7f, 0xec, 0x7a, 0xa7, 0x67,
- 0x8f, 0xfc, 0xf0, 0xb5, 0x0e, 0x81, 0x36, 0xd0, 0x75, 0x43, 0x56, 0x22, 0x3f, 0x1f, 0x42, 0x05,
- 0xe3, 0xcc, 0xdf, 0x96, 0xa0, 0x71, 0x14, 0xc6, 0x7f, 0x78, 0xeb, 0xda, 0x87, 0xaa, 0x37, 0x8f,
- 0xdd, 0xf0, 0x89, 0x33, 0xe5, 0x53, 0xad, 0x88, 0x74, 0x6c, 0x7c, 0x08, 0xad, 0xb9, 0x5a, 0xa0,
- 0xed, 0x8c, 0xc7, 0x28, 0x2b, 0xe2, 0x53, 0xae, 0x89, 0xed, 0x04, 0xde, 0x96, 0x60, 0xf3, 0x1f,
- 0x4b, 0x7c, 0x6a, 0x39, 0x15, 0x7f, 0x8f, 0xad, 0xf8, 0x01, 0xd4, 0xc6, 0x8b, 0x59, 0x60, 0xc7,
- 0xcf, 0x03, 0x79, 0x28, 0xeb, 0xa2, 0x4a, 0x80, 0x21, 0x8e, 0x49, 0xd5, 0x89, 0x37, 0x75, 0x35,
- 0x03, 0x4c, 0xc7, 0xb9, 0x65, 0x54, 0xf2, 0xcb, 0x30, 0xff, 0x4b, 0xea, 0x76, 0x7b, 0x16, 0xbc,
- 0x96, 0x6e, 0x7b, 0xb0, 0x99, 0x6c, 0x82, 0x34, 0x97, 0x64, 0x48, 0x56, 0x14, 0xf8, 0x61, 0xcc,
- 0x4a, 0x35, 0x05, 0xff, 0x36, 0x7e, 0x09, 0x15, 0x5e, 0x44, 0x85, 0x65, 0x1f, 0x64, 0xb2, 0x97,
- 0x34, 0xc1, 0xf1, 0xdc, 0x8b, 0xfd, 0xd0, 0x9b, 0x9f, 0x0e, 0xfc, 0xa9, 0x37, 0x7a, 0x2e, 0x98,
- 0xcf, 0xbc, 0x4e, 0x17, 0x3c, 0x8f, 0x31, 0x36, 0xa1, 0x3c, 0x10, 0x96, 0xf4, 0x38, 0x83, 0xfe,
- 0xc9, 0xb0, 0x55, 0xa2, 0x5f, 0xb7, 0xfb, 0xc3, 0x7b, 0xad, 0x35, 0xf3, 0x77, 0xd2, 0x25, 0x88,
- 0xe0, 0xb1, 0xf7, 0x5a, 0xcb, 0x44, 0xcf, 0xe7, 0x44, 0x73, 0x65, 0x25, 0xf4, 0x53, 0x5f, 0x78,
- 0xb9, 0x78, 0xe1, 0x15, 0x6d, 0xe1, 0x78, 0x12, 0x53, 0x6f, 0xe2, 0xc6, 0x1e, 0x9e, 0x12, 0x5d,
- 0xf7, 0xb2, 0x48, 0xc7, 0x64, 0x84, 0x41, 0xe8, 0x4e, 0xbc, 0x67, 0x7c, 0xe5, 0x6b, 0x42, 0x8d,
- 0x4c, 0x97, 0x0f, 0xe8, 0x61, 0x38, 0x79, 0x2d, 0xcd, 0x7f, 0x04, 0xe5, 0x27, 0xe1, 0x44, 0x5d,
- 0xa3, 0x66, 0x46, 0x8c, 0x72, 0x05, 0x61, 0xcc, 0x08, 0xae, 0xe0, 0x34, 0x5d, 0x9c, 0x72, 0xee,
- 0x8e, 0x4f, 0xdc, 0xd7, 0x33, 0xd5, 0xf7, 0xa1, 0x1c, 0xb9, 0xb1, 0x9a, 0xed, 0x52, 0x46, 0x9c,
- 0x89, 0x17, 0x44, 0x80, 0x7e, 0xea, 0x32, 0x4e, 0x7a, 0x12, 0x3b, 0xb1, 0x4b, 0x73, 0xbd, 0xd6,
- 0x9c, 0xc8, 0x12, 0x25, 0x82, 0xd4, 0xcc, 0x1a, 0x4b, 0x3a, 0x87, 0xc8, 0xa8, 0xcc, 0xff, 0x28,
- 0x81, 0x41, 0x7e, 0x92, 0x2d, 0xe8, 0xb5, 0x26, 0xff, 0x00, 0x0f, 0x8f, 0xa5, 0xa8, 0x99, 0x5b,
- 0x9a, 0xa3, 0x92, 0x96, 0xab, 0xf0, 0xc6, 0x2d, 0xb8, 0x8a, 0xe7, 0xea, 0x86, 0xb6, 0xfb, 0xcc,
- 0x8b, 0x62, 0xb4, 0x5f, 0x3b, 0xd5, 0x47, 0x9a, 0x50, 0x55, 0xbc, 0xc9, 0x04, 0x96, 0xc2, 0xa7,
- 0x9a, 0x47, 0xc6, 0x75, 0xd8, 0x45, 0xa3, 0x88, 0xf0, 0xe6, 0xba, 0x3a, 0x57, 0x85, 0xb9, 0x8c,
- 0x04, 0x95, 0x31, 0x98, 0x7f, 0x5f, 0x82, 0xb7, 0xb2, 0x05, 0x46, 0x91, 0x77, 0x3a, 0x7f, 0xed,
- 0x7d, 0xbe, 0x05, 0xe0, 0xa4, 0x92, 0xd4, 0x72, 0xf7, 0x97, 0x97, 0x9b, 0xcd, 0x25, 0x34, 0x6a,
- 0xf3, 0x29, 0xec, 0xa1, 0x3a, 0x77, 0xa7, 0xfe, 0x23, 0x67, 0xda, 0xf1, 0xe7, 0x13, 0xef, 0xf4,
- 0x75, 0x77, 0xfd, 0x94, 0x65, 0xad, 0xee, 0xba, 0x9c, 0x43, 0x28, 0xbc, 0xf9, 0x9b, 0x32, 0x7a,
- 0x05, 0x15, 0x6c, 0xe7, 0xd3, 0xd0, 0x4b, 0xa2, 0x25, 0xfd, 0xe6, 0x9b, 0xe7, 0xc4, 0x71, 0x48,
- 0xbe, 0xab, 0x8c, 0x50, 0x35, 0xe2, 0xdb, 0x7e, 0x2a, 0xdd, 0x69, 0x59, 0xd0, 0x4f, 0xe2, 0x7e,
- 0xe4, 0x46, 0xb1, 0xda, 0x71, 0xfe, 0x8d, 0x37, 0xab, 0xee, 0x45, 0xf6, 0x53, 0x2f, 0x3e, 0x1b,
- 0x87, 0xce, 0x53, 0xbe, 0xd6, 0x55, 0x01, 0x5e, 0xf4, 0x8d, 0x82, 0x18, 0x6f, 0x03, 0xa0, 0xa7,
- 0xf5, 0xc6, 0x72, 0x65, 0x1b, 0xec, 0xb8, 0x35, 0x88, 0xf1, 0x09, 0x5c, 0x9a, 0xfb, 0xb6, 0x37,
- 0x0b, 0x70, 0xe3, 0xbc, 0x38, 0x93, 0xb4, 0x29, 0x8f, 0x75, 0xee, 0xf7, 0x14, 0x2a, 0x95, 0x98,
- 0xc5, 0xab, 0x6a, 0x2e, 0x5e, 0xfd, 0x10, 0x40, 0x46, 0x34, 0x9b, 0xbc, 0x54, 0x8d, 0x71, 0x35,
- 0x09, 0x69, 0x47, 0x1c, 0x40, 0x14, 0x1a, 0xd3, 0x05, 0x90, 0x41, 0x42, 0x02, 0x7a, 0x63, 0x15,
- 0x40, 0x30, 0x2a, 0xb8, 0xe3, 0xbd, 0x3a, 0xcf, 0x9c, 0x8e, 0x8d, 0x4b, 0xb0, 0x8e, 0xe6, 0x36,
- 0x75, 0xf7, 0x1a, 0x8c, 0x90, 0x03, 0xdc, 0xfd, 0x16, 0x2e, 0x7c, 0x12, 0xfa, 0x33, 0xb4, 0x65,
- 0x24, 0x9c, 0xe3, 0x39, 0x34, 0x99, 0x60, 0xcb, 0x8b, 0xee, 0x20, 0xd8, 0x52, 0x50, 0xda, 0xa2,
- 0x34, 0x56, 0x7a, 0xc1, 0xde, 0x16, 0x4f, 0x0d, 0x09, 0xa8, 0x17, 0x98, 0x31, 0xd4, 0xbb, 0x2e,
- 0x59, 0xbb, 0xdc, 0x91, 0xcc, 0x15, 0x96, 0x74, 0x57, 0x98, 0x65, 0x1f, 0x6b, 0xe7, 0x64, 0x1f,
- 0xc6, 0x4f, 0x60, 0x7b, 0xea, 0xcf, 0x4f, 0xf1, 0x8a, 0x49, 0x36, 0x37, 0xb9, 0x57, 0x5b, 0x12,
- 0x3c, 0x50, 0x50, 0xf3, 0x9f, 0x4b, 0xb0, 0x3e, 0x74, 0x1e, 0xe1, 0x52, 0xde, 0x57, 0x01, 0xe9,
- 0xc5, 0xc9, 0x02, 0xe3, 0x0b, 0x53, 0xa2, 0xec, 0x30, 0xca, 0xb9, 0xc3, 0xf8, 0x53, 0x68, 0x8c,
- 0xb3, 0x35, 0xd1, 0x2d, 0x25, 0x9d, 0x2f, 0xeb, 0xce, 0x30, 0xc5, 0x8a, 0x1c, 0x29, 0xed, 0x57,
- 0xe0, 0x47, 0xb1, 0xad, 0x5c, 0x8a, 0x32, 0x29, 0x02, 0xc9, 0xdb, 0x65, 0xfe, 0x0b, 0x99, 0x33,
- 0xa6, 0x3e, 0x7c, 0x6a, 0x34, 0x9d, 0xe7, 0xca, 0x4d, 0x69, 0x8a, 0x74, 0x6c, 0xfc, 0x0c, 0x1a,
- 0x4e, 0x10, 0x4c, 0x9f, 0x27, 0x62, 0xca, 0x7c, 0x47, 0x34, 0x05, 0xda, 0x84, 0x55, 0xee, 0xa9,
- 0xee, 0x64, 0x03, 0xda, 0x8e, 0x11, 0xde, 0x4e, 0x9e, 0xb8, 0xae, 0x6f, 0x07, 0xcd, 0x49, 0xf7,
- 0x56, 0x30, 0xde, 0xf8, 0x39, 0x34, 0x5d, 0xc4, 0xd8, 0xb3, 0xc5, 0x34, 0xf6, 0xce, 0xfc, 0x80,
- 0x8d, 0xbb, 0x7e, 0xe3, 0x8a, 0x56, 0x40, 0xe0, 0xdf, 0x23, 0x85, 0x15, 0x0d, 0x57, 0x1b, 0x19,
- 0x6d, 0xd8, 0x0e, 0xfd, 0x45, 0xec, 0xda, 0x78, 0x1c, 0x53, 0x77, 0x84, 0xc1, 0x9c, 0x6d, 0xb2,
- 0x7e, 0x63, 0x4f, 0xdb, 0x7e, 0x22, 0x10, 0x09, 0x5e, 0x6c, 0x85, 0xb9, 0x31, 0x9e, 0x74, 0xc5,
- 0x9b, 0x4f, 0x7c, 0xb6, 0xd7, 0x9c, 0xb7, 0x27, 0x3d, 0xd9, 0x0d, 0x0a, 0x26, 0x20, 0x47, 0x41,
- 0x31, 0x16, 0x6f, 0x78, 0x63, 0xd9, 0x51, 0x0c, 0x19, 0x2e, 0x14, 0x9e, 0xbc, 0x50, 0x1c, 0x3a,
- 0xf3, 0x88, 0x43, 0x77, 0x73, 0x59, 0xee, 0x30, 0x41, 0x89, 0x8c, 0x8a, 0xf6, 0x59, 0x2e, 0x84,
- 0xbd, 0x6f, 0xb8, 0xb7, 0xbd, 0xbc, 0xcf, 0xbc, 0x8a, 0x13, 0x46, 0x8a, 0x7a, 0x98, 0x0d, 0xcc,
- 0x7f, 0x2b, 0x41, 0x5d, 0x3b, 0x04, 0xe3, 0x4b, 0xa8, 0x79, 0xf3, 0xe4, 0xb8, 0x4a, 0x2f, 0xf5,
- 0xac, 0x98, 0xc5, 0x29, 0xc6, 0x3f, 0xc3, 0x83, 0x78, 0x46, 0xca, 0xd8, 0xb9, 0x28, 0x74, 0x1e,
- 0x73, 0x43, 0x32, 0x64, 0x02, 0xd0, 0x01, 0x69, 0x02, 0xca, 0x2f, 0x17, 0x20, 0x19, 0x94, 0x45,
- 0xfe, 0xae, 0x0c, 0xd5, 0xc4, 0x3a, 0x8c, 0x3f, 0x81, 0xa6, 0xb3, 0x88, 0xcf, 0xec, 0x00, 0x5d,
- 0xff, 0x53, 0x3f, 0x1c, 0xab, 0x6b, 0xdc, 0x20, 0xe0, 0x40, 0xc1, 0x8c, 0x77, 0xa0, 0x8e, 0x46,
- 0x3f, 0x0a, 0xbd, 0x80, 0xfd, 0xa2, 0xbc, 0x52, 0x3a, 0xc8, 0xb8, 0x8a, 0xd9, 0x92, 0x3f, 0x72,
- 0xa6, 0xe8, 0xcd, 0xd4, 0xdd, 0xda, 0xe4, 0x71, 0x3b, 0x7a, 0x85, 0xec, 0xdb, 0x78, 0x13, 0x36,
- 0xa9, 0x4a, 0x20, 0x21, 0xeb, 0xf2, 0x82, 0xd2, 0x10, 0x65, 0xa0, 0xb7, 0x64, 0xc4, 0x29, 0x1e,
- 0x49, 0xa0, 0x92, 0xae, 0x1a, 0x41, 0xee, 0x12, 0x80, 0xbc, 0x25, 0xa3, 0xd9, 0x31, 0x6c, 0x32,
- 0x67, 0x95, 0x00, 0x9c, 0x6e, 0x1f, 0xc0, 0x4e, 0xe8, 0xce, 0x7c, 0x8c, 0xc3, 0x41, 0xe8, 0x3d,
- 0x41, 0x43, 0x23, 0xf1, 0xd2, 0x19, 0x6f, 0x4b, 0xc4, 0x40, 0xc2, 0x71, 0x9e, 0x8f, 0xc0, 0x90,
- 0xf6, 0x31, 0x99, 0x3a, 0x81, 0x3d, 0x76, 0x66, 0x01, 0x46, 0x75, 0xf6, 0xce, 0x55, 0xd1, 0x62,
- 0xcc, 0x1d, 0x44, 0x74, 0x25, 0xdc, 0x78, 0x0f, 0xb6, 0x22, 0x77, 0x3e, 0xb6, 0x47, 0xfe, 0x6c,
- 0xb6, 0xc0, 0x1c, 0xf7, 0x39, 0xdf, 0x8a, 0xa6, 0x68, 0x12, 0xb4, 0x93, 0x00, 0x49, 0x79, 0x9a,
- 0x07, 0xa5, 0x8e, 0x9c, 0x00, 0x2f, 0x00, 0xc5, 0xad, 0x9a, 0x84, 0x74, 0x1c, 0x56, 0x5e, 0x6e,
- 0x1d, 0x61, 0x1b, 0x8c, 0x95, 0x7b, 0x49, 0xc8, 0x2d, 0x58, 0xc3, 0x00, 0xd0, 0xe4, 0x05, 0xe3,
- 0x2f, 0xf3, 0x6b, 0x68, 0xe8, 0xf7, 0x94, 0x72, 0x5a, 0x2c, 0x1c, 0xd0, 0x2f, 0xca, 0x83, 0xab,
- 0x8a, 0x64, 0x68, 0xfc, 0x18, 0x1a, 0xc9, 0x5d, 0xb7, 0xe3, 0x78, 0xaa, 0x12, 0xe1, 0x7a, 0x02,
- 0x1b, 0xc6, 0x53, 0xf3, 0x6f, 0x4a, 0xb0, 0x95, 0xbf, 0xb6, 0xc6, 0xe7, 0x70, 0x65, 0xe9, 0xa6,
- 0xdb, 0x23, 0xf4, 0x50, 0x98, 0x3d, 0x48, 0xf1, 0x97, 0xf2, 0xd7, 0xba, 0xc3, 0x38, 0x74, 0x2e,
- 0xfb, 0xab, 0x5c, 0x8b, 0x08, 0x43, 0x0a, 0x85, 0x2f, 0x39, 0xf3, 0x9b, 0xcb, 0x9c, 0x8c, 0xef,
- 0x8d, 0xcd, 0xff, 0x5e, 0x87, 0x5a, 0xea, 0x04, 0xfe, 0x1f, 0xec, 0x11, 0x2b, 0xce, 0x19, 0x1a,
- 0x1b, 0xe6, 0x08, 0x91, 0xaa, 0xf5, 0x35, 0xaf, 0x79, 0xa4, 0x30, 0x22, 0xa5, 0x29, 0xb4, 0xdf,
- 0xf5, 0x97, 0xda, 0xef, 0xc6, 0x39, 0xf6, 0xbb, 0x79, 0xae, 0xfd, 0x56, 0x97, 0xec, 0x17, 0x1d,
- 0xe2, 0xf7, 0x0b, 0x77, 0x81, 0xda, 0xd6, 0x96, 0x1d, 0xe2, 0x7d, 0x86, 0x0b, 0x85, 0x2f, 0xb6,
- 0x74, 0x78, 0x15, 0x4b, 0xaf, 0x5f, 0xd8, 0xd2, 0x1b, 0x45, 0x96, 0x8e, 0x87, 0x17, 0xe1, 0x3e,
- 0xe0, 0x01, 0xc8, 0x9c, 0x97, 0x0d, 0xb7, 0x29, 0x1a, 0x0a, 0x28, 0x4f, 0xf8, 0x0b, 0xb8, 0x12,
- 0x2d, 0x02, 0xf2, 0x47, 0xee, 0x98, 0x6c, 0xde, 0x79, 0x84, 0x31, 0x30, 0xa6, 0xa8, 0xb8, 0x85,
- 0xc6, 0x5f, 0x13, 0x97, 0x53, 0x6c, 0x47, 0x43, 0xd2, 0x1e, 0x51, 0xfc, 0x92, 0x72, 0xb7, 0x65,
- 0x46, 0x84, 0x00, 0x29, 0x13, 0xa3, 0xb0, 0x33, 0x9e, 0x79, 0xc9, 0xb4, 0x2d, 0x99, 0xb5, 0x30,
- 0x48, 0x12, 0xec, 0x53, 0x9b, 0x61, 0xe4, 0x7a, 0x4f, 0xf0, 0xa2, 0xec, 0xc8, 0x0d, 0x4e, 0xc6,
- 0x84, 0x73, 0x46, 0x23, 0x37, 0xc0, 0x19, 0xf7, 0x0c, 0x89, 0x4b, 0xc6, 0x94, 0x10, 0x3a, 0x63,
- 0xf4, 0xff, 0xb1, 0x17, 0x21, 0x76, 0x97, 0xb1, 0x1a, 0xc4, 0xd8, 0x85, 0x75, 0xdc, 0x2b, 0xfb,
- 0xfb, 0xbd, 0x4b, 0xb2, 0x74, 0xc4, 0xc1, 0x7d, 0xca, 0xc1, 0x26, 0x53, 0x3f, 0x88, 0xf6, 0x2e,
- 0x33, 0x50, 0x0e, 0xcc, 0xbf, 0x84, 0x6a, 0x62, 0x5d, 0xc6, 0xc7, 0x9a, 0x3a, 0x32, 0x78, 0xec,
- 0xac, 0xd8, 0xa0, 0xa6, 0xe1, 0x7b, 0x50, 0x89, 0xb2, 0x0c, 0xbe, 0x80, 0x94, 0xd1, 0xe6, 0xbf,
- 0x96, 0x60, 0x53, 0x41, 0x0c, 0x13, 0x1a, 0xc7, 0xfd, 0x61, 0xef, 0x4e, 0xaf, 0xd3, 0x1e, 0xf6,
- 0xfa, 0xc7, 0x3c, 0x4b, 0x45, 0x34, 0xe6, 0x1a, 0x8c, 0xd2, 0xa1, 0x07, 0x83, 0x6e, 0x7b, 0x68,
- 0xb1, 0xe0, 0x8a, 0xd8, 0x58, 0xf0, 0x88, 0x52, 0xa7, 0xfe, 0xc0, 0x3a, 0x56, 0x7d, 0x94, 0x8a,
- 0x8f, 0xbf, 0x8d, 0xb7, 0xa0, 0xf6, 0xb5, 0x65, 0x0d, 0xda, 0x87, 0xbd, 0x87, 0x96, 0xea, 0x4c,
- 0xd4, 0x1e, 0x27, 0x00, 0x72, 0x43, 0xc2, 0xba, 0x23, 0xac, 0x93, 0x7b, 0x7c, 0x35, 0x2a, 0x62,
- 0x33, 0x94, 0x43, 0xe2, 0xeb, 0xf6, 0x4e, 0x3a, 0x6d, 0xd1, 0xb5, 0xba, 0x7c, 0x29, 0x90, 0x6f,
- 0x9c, 0x00, 0x68, 0xa7, 0x86, 0xfd, 0x61, 0xfb, 0x90, 0xaf, 0x44, 0x45, 0xac, 0xc7, 0x34, 0x30,
- 0x6f, 0xc2, 0x86, 0xb4, 0x6c, 0xc2, 0x7b, 0xf3, 0x60, 0x21, 0xbd, 0x0f, 0xee, 0x24, 0x0f, 0x48,
- 0x6f, 0xdc, 0x67, 0x02, 0xab, 0x1e, 0x90, 0x1c, 0x61, 0xf9, 0xbd, 0x21, 0x53, 0x04, 0xbc, 0xe3,
- 0x1b, 0x23, 0xae, 0x59, 0xd4, 0xee, 0x5e, 0x59, 0x4e, 0x22, 0x64, 0x45, 0x23, 0x14, 0x95, 0xf1,
- 0x53, 0xce, 0x9a, 0x63, 0x57, 0xed, 0xf0, 0xe5, 0x65, 0x72, 0x99, 0xa0, 0x48, 0x1a, 0xda, 0xe6,
- 0x86, 0x2e, 0x85, 0xcc, 0x1e, 0xe5, 0xcc, 0xd1, 0xaf, 0xa1, 0x03, 0x8c, 0xc3, 0xe7, 0xc9, 0x66,
- 0x2b, 0xa0, 0x20, 0x18, 0xd9, 0xef, 0x99, 0x3f, 0x1d, 0xdb, 0xdc, 0x50, 0x90, 0xfb, 0x5d, 0x25,
- 0x00, 0x49, 0x42, 0x7b, 0x30, 0x1e, 0xbb, 0x6e, 0x80, 0x85, 0x06, 0x5e, 0xde, 0xa5, 0x3e, 0xd6,
- 0x4e, 0x8a, 0xe9, 0x25, 0x0d, 0xad, 0x2e, 0xbc, 0x8d, 0x96, 0xed, 0xcd, 0x16, 0x33, 0x3b, 0xb5,
- 0x45, 0x0a, 0xf4, 0xf6, 0x52, 0xef, 0xe8, 0x2d, 0x45, 0xd5, 0xd6, 0x89, 0x12, 0x29, 0xe6, 0x3f,
- 0xad, 0x41, 0x5d, 0x5b, 0xde, 0x1f, 0xe9, 0x32, 0xb8, 0x26, 0x73, 0x4f, 0xfd, 0xd8, 0x73, 0xc8,
- 0xa1, 0x64, 0xca, 0x49, 0x43, 0x34, 0x32, 0xdc, 0xbd, 0x44, 0x4d, 0xb4, 0x9f, 0x45, 0xc0, 0x34,
- 0x1b, 0xca, 0xee, 0x79, 0x44, 0x8e, 0x60, 0xec, 0x3f, 0x9d, 0x33, 0x46, 0x1a, 0x64, 0x3a, 0x36,
- 0xff, 0xb7, 0x04, 0xb5, 0x34, 0xa5, 0xa4, 0xad, 0x52, 0xe1, 0x45, 0x05, 0x04, 0x15, 0xa5, 0x64,
- 0x8c, 0x51, 0xd1, 0x00, 0x9d, 0xbe, 0x24, 0xe2, 0x04, 0x55, 0x9a, 0xaa, 0x0c, 0xf5, 0x03, 0x25,
- 0x63, 0x16, 0x2f, 0xec, 0xb1, 0x17, 0x8d, 0xd0, 0x33, 0x87, 0xcf, 0x55, 0xe5, 0xd3, 0x40, 0x60,
- 0x37, 0x81, 0x51, 0x14, 0xa7, 0x48, 0x48, 0xfb, 0x39, 0xa3, 0xb6, 0xbf, 0xac, 0x66, 0xeb, 0x0a,
- 0x76, 0x44, 0x3d, 0x7c, 0xf4, 0xcd, 0x2a, 0xbd, 0xc8, 0x47, 0xa7, 0xa6, 0x84, 0x26, 0xda, 0xa0,
- 0x8b, 0x54, 0x64, 0xac, 0x8e, 0x8c, 0x4f, 0x2a, 0x31, 0x61, 0x7d, 0x30, 0x78, 0xc5, 0x23, 0x2c,
- 0x10, 0x50, 0x80, 0x4c, 0xa1, 0x36, 0x70, 0x78, 0x14, 0x45, 0xe6, 0x2f, 0xa0, 0xae, 0xa5, 0xc5,
- 0x78, 0xb7, 0x76, 0xf5, 0x1c, 0x3a, 0x9f, 0x1f, 0xec, 0x68, 0x39, 0xb3, 0x4c, 0x0e, 0xcc, 0x05,
- 0x6c, 0xc8, 0x32, 0x8e, 0x6c, 0xc7, 0x0b, 0xec, 0x5c, 0xb9, 0x58, 0xf5, 0x02, 0x85, 0x7c, 0x1f,
- 0xb6, 0x67, 0x4e, 0xf4, 0xd8, 0x9e, 0xba, 0xf3, 0x53, 0x8c, 0xff, 0x78, 0xe4, 0x6a, 0xcb, 0x9a,
- 0x04, 0x3e, 0x64, 0xe8, 0x91, 0x37, 0x5f, 0xa1, 0x73, 0x9e, 0xa9, 0x00, 0xaf, 0xd3, 0x39, 0xcf,
- 0xa8, 0x9f, 0x02, 0x59, 0x0f, 0x0b, 0xa3, 0xb8, 0x5e, 0x36, 0x5e, 0x5e, 0xe9, 0x73, 0x51, 0xa8,
- 0x3d, 0xa7, 0x72, 0x44, 0xd8, 0xd4, 0x8b, 0x62, 0xee, 0xa5, 0x23, 0x8c, 0x7e, 0x63, 0x08, 0xad,
- 0xa6, 0x55, 0xab, 0xac, 0x18, 0xf5, 0x56, 0x12, 0x63, 0x44, 0x4a, 0x61, 0xde, 0x45, 0xf7, 0xef,
- 0xc4, 0xa3, 0x33, 0x52, 0xe6, 0x27, 0x39, 0x65, 0xb4, 0xa2, 0x85, 0x29, 0xce, 0x57, 0xc5, 0x7c,
- 0x08, 0x8d, 0x76, 0x44, 0x45, 0xb4, 0x5c, 0x2b, 0x9e, 0x87, 0x2e, 0x4c, 0x2b, 0x03, 0x74, 0x2a,
- 0x4d, 0x26, 0x5a, 0xbf, 0xdc, 0xbb, 0xc4, 0x7b, 0xca, 0x91, 0xf9, 0xeb, 0x32, 0x00, 0x3a, 0xb4,
- 0xb1, 0x27, 0x0b, 0xdb, 0x4f, 0x31, 0x65, 0x61, 0xdd, 0x6d, 0x6a, 0x0f, 0x96, 0x56, 0x12, 0x25,
- 0xb5, 0x16, 0x4c, 0x63, 0x98, 0x8a, 0x96, 0xf5, 0x05, 0x34, 0xd2, 0x4c, 0x29, 0xeb, 0x29, 0x16,
- 0x31, 0xa5, 0x3d, 0x06, 0x62, 0xfb, 0x0a, 0xb6, 0x9c, 0xc8, 0xa6, 0x86, 0x80, 0x3a, 0x54, 0x55,
- 0xd1, 0x5c, 0x29, 0x5e, 0x0a, 0xe6, 0x82, 0xfa, 0xf2, 0x6f, 0x60, 0xe8, 0x57, 0xdc, 0x34, 0x67,
- 0xe5, 0xc5, 0x8a, 0x4a, 0x36, 0x9a, 0xf1, 0x4b, 0xf2, 0x74, 0x2a, 0x69, 0x61, 0xae, 0xf5, 0x17,
- 0x72, 0x35, 0x52, 0x42, 0x62, 0xfc, 0x25, 0xec, 0xb8, 0xcf, 0x62, 0x3b, 0xcf, 0xbc, 0xf1, 0x42,
- 0xe6, 0x6d, 0x24, 0xee, 0xe8, 0xfc, 0x74, 0x09, 0x83, 0xc7, 0x1e, 0xfa, 0xd7, 0x08, 0xf3, 0x70,
- 0xbe, 0x67, 0xeb, 0x78, 0x09, 0x11, 0x24, 0x18, 0x62, 0x4e, 0x60, 0x3b, 0x65, 0x68, 0x8f, 0x54,
- 0xb3, 0x54, 0x3f, 0xdf, 0x1f, 0x66, 0xd3, 0x2c, 0x11, 0x6a, 0x47, 0x8c, 0xf9, 0x71, 0xa2, 0x62,
- 0xd2, 0x6d, 0xc0, 0xfc, 0x58, 0x03, 0x99, 0xc7, 0x50, 0x3b, 0x72, 0xc7, 0x6a, 0x86, 0x9f, 0xe6,
- 0x66, 0x78, 0x53, 0x4f, 0x2f, 0xc6, 0x2b, 0xb2, 0x31, 0x24, 0xa3, 0xd7, 0x5d, 0x48, 0x9b, 0x2c,
- 0x0b, 0x39, 0x30, 0x6d, 0xd8, 0xc6, 0x33, 0x0a, 0xdd, 0x00, 0xf3, 0x41, 0x25, 0x55, 0x35, 0xe0,
- 0x4b, 0x59, 0x03, 0x1e, 0x2d, 0x8f, 0x28, 0x9c, 0x34, 0x6e, 0xcb, 0x11, 0xe6, 0x2a, 0xcd, 0x45,
- 0xe4, 0xe2, 0xe1, 0x4f, 0x62, 0xf4, 0x72, 0x51, 0xac, 0x3c, 0x61, 0x1d, 0x81, 0x87, 0x08, 0x3b,
- 0x42, 0x90, 0xf9, 0xdb, 0x35, 0xd8, 0x94, 0x82, 0xa3, 0xac, 0x8a, 0x77, 0x46, 0x5a, 0x07, 0x72,
- 0xb9, 0x8a, 0x97, 0xd4, 0xaa, 0x8a, 0x57, 0x3a, 0x61, 0xd5, 0x9e, 0xa5, 0xb0, 0xd2, 0x3c, 0xaf,
- 0xbe, 0x70, 0x43, 0x45, 0x46, 0x8b, 0x4e, 0xb6, 0x3c, 0xc3, 0x5c, 0xad, 0xbc, 0xdc, 0x65, 0x48,
- 0x77, 0x48, 0x10, 0x1e, 0x35, 0x03, 0x32, 0x46, 0xb9, 0x0f, 0xca, 0x16, 0xaf, 0xe6, 0xcc, 0x58,
- 0xdf, 0x22, 0x36, 0x49, 0x09, 0x40, 0xcb, 0x6a, 0xe6, 0x2c, 0x4b, 0x99, 0xe4, 0x39, 0xda, 0x35,
- 0x74, 0xe3, 0x32, 0x7f, 0x8d, 0xf1, 0x29, 0xed, 0x26, 0xa7, 0x7e, 0xa3, 0xa4, 0xb9, 0xb0, 0xcf,
- 0x01, 0x46, 0xe9, 0xf5, 0x5e, 0xed, 0xf7, 0x67, 0x57, 0x5f, 0x68, 0x74, 0x68, 0x1b, 0x9b, 0x72,
- 0x97, 0x23, 0xb5, 0x78, 0x2d, 0xfb, 0x54, 0xe7, 0x21, 0x12, 0x0a, 0xf3, 0x3e, 0xba, 0x7a, 0xd9,
- 0xa4, 0x28, 0x52, 0xe0, 0x33, 0x00, 0xad, 0x13, 0x2e, 0xfb, 0x82, 0x85, 0x6d, 0x7f, 0x8d, 0xcc,
- 0xfc, 0xcf, 0x12, 0xb4, 0x96, 0xfb, 0x19, 0x58, 0x12, 0xe9, 0x06, 0x7b, 0x69, 0xb9, 0xf3, 0xa1,
- 0x59, 0xeb, 0x1f, 0xe2, 0xc3, 0x30, 0xf9, 0x79, 0x92, 0xeb, 0x15, 0xfa, 0x79, 0xd9, 0x93, 0x4b,
- 0x29, 0x8c, 0xeb, 0xb0, 0x39, 0x76, 0x27, 0x0e, 0x5d, 0xef, 0xf5, 0xf3, 0xec, 0x32, 0xa1, 0x32,
- 0xdf, 0x01, 0x38, 0x0a, 0xe3, 0x24, 0x6f, 0x47, 0x05, 0xc6, 0x4e, 0xec, 0x24, 0x4d, 0x6f, 0xfa,
- 0x6d, 0x5a, 0x50, 0x15, 0x83, 0xaf, 0x7b, 0xdc, 0xaf, 0xd1, 0x3e, 0x62, 0x95, 0xf2, 0x1f, 0xb1,
- 0x96, 0x02, 0xbc, 0x0c, 0x19, 0x5a, 0x80, 0x37, 0x7f, 0x53, 0x81, 0x1a, 0xc9, 0x91, 0xd9, 0x5e,
- 0x96, 0x04, 0x95, 0xf8, 0x22, 0x17, 0x25, 0x41, 0xf2, 0x8a, 0xa7, 0x63, 0xea, 0x46, 0x60, 0xf9,
- 0x2a, 0x6f, 0x27, 0xfe, 0x92, 0x53, 0x8e, 0xb0, 0x22, 0xb7, 0xbd, 0xe0, 0xc9, 0xe7, 0xea, 0xf3,
- 0x19, 0x48, 0x50, 0x0f, 0x21, 0x79, 0x82, 0x9b, 0xaa, 0xa9, 0x93, 0x11, 0xdc, 0xe4, 0xf6, 0xa9,
- 0x8c, 0x32, 0x2c, 0x41, 0x65, 0x25, 0x12, 0x94, 0x48, 0xc8, 0x08, 0x6e, 0xaa, 0xcc, 0x24, 0x23,
- 0xb8, 0x49, 0xeb, 0xc0, 0x44, 0xc4, 0xc3, 0x64, 0x51, 0x35, 0xd8, 0xe5, 0x88, 0xd2, 0xab, 0xa4,
- 0x7e, 0x92, 0xb2, 0x6b, 0xbc, 0x98, 0x46, 0x02, 0x64, 0xe9, 0x4b, 0x44, 0x37, 0xb9, 0x5a, 0xce,
- 0x13, 0xdd, 0x94, 0x55, 0x2d, 0xc9, 0xb4, 0xe7, 0x98, 0x49, 0x4e, 0x9e, 0x73, 0x95, 0x5c, 0xa6,
- 0xaa, 0x96, 0x80, 0xc7, 0x0c, 0x23, 0x3d, 0x47, 0xce, 0xe8, 0x8c, 0x5a, 0x20, 0x14, 0x13, 0x1a,
- 0x4c, 0x02, 0x0c, 0x12, 0x04, 0xa1, 0x34, 0x2d, 0x25, 0xe0, 0xd7, 0x00, 0x5c, 0x1c, 0x97, 0x45,
- 0x33, 0xa1, 0x91, 0x4f, 0x04, 0xde, 0x86, 0x3a, 0x15, 0xda, 0xfe, 0xc4, 0x66, 0x33, 0xd8, 0x62,
- 0x9a, 0x1a, 0x82, 0xfa, 0x93, 0x2e, 0x02, 0xc8, 0xfd, 0xba, 0xf4, 0x7c, 0x83, 0x4b, 0x60, 0x74,
- 0xbf, 0x3c, 0xa0, 0x34, 0x51, 0xa9, 0xf8, 0xfd, 0x82, 0x52, 0xc9, 0x16, 0x23, 0xeb, 0x12, 0x76,
- 0x9f, 0x40, 0xf2, 0x28, 0x50, 0x11, 0x45, 0xb1, 0x23, 0x15, 0x64, 0x10, 0x13, 0x98, 0xdf, 0x41,
- 0x85, 0xac, 0x23, 0xed, 0x28, 0xaf, 0x84, 0xfc, 0xc4, 0x06, 0x55, 0x47, 0xf9, 0xc3, 0x7c, 0xcd,
- 0xb4, 0x9b, 0x27, 0xcc, 0x55, 0x4c, 0x7f, 0x57, 0x82, 0xb2, 0xe8, 0xb7, 0xc9, 0x7e, 0x9c, 0x48,
- 0x45, 0x04, 0xfc, 0x45, 0xc5, 0xa1, 0x3c, 0x49, 0x8c, 0xfb, 0x49, 0x82, 0x9c, 0x02, 0xe8, 0x64,
- 0x31, 0xbb, 0x23, 0x94, 0xea, 0xd6, 0xcb, 0x91, 0xf6, 0xc9, 0xa1, 0x92, 0xfb, 0xe4, 0xf0, 0xc2,
- 0x56, 0x78, 0x5e, 0x71, 0xf3, 0x1f, 0xe8, 0x1e, 0xf4, 0xdb, 0x32, 0xe2, 0x62, 0xf6, 0x81, 0x61,
- 0xc8, 0x89, 0xd2, 0x30, 0xf2, 0xae, 0xc6, 0x97, 0x10, 0x5d, 0x7b, 0x98, 0x7e, 0x02, 0x12, 0x4c,
- 0x2b, 0x14, 0xcf, 0x39, 0x1f, 0xd3, 0x71, 0x6d, 0x74, 0x67, 0x70, 0x03, 0x66, 0x81, 0xfa, 0x2e,
- 0x95, 0x01, 0xb8, 0x61, 0x11, 0x71, 0xd2, 0x42, 0xdf, 0xaf, 0x78, 0x21, 0x0d, 0xfa, 0xfc, 0x46,
- 0xa0, 0x36, 0x42, 0x28, 0x57, 0xf6, 0x43, 0xef, 0xd4, 0x9b, 0x67, 0xcd, 0xd0, 0xaa, 0x04, 0xb4,
- 0xa3, 0x17, 0x7d, 0x7f, 0x36, 0x3a, 0x00, 0x54, 0xfe, 0x68, 0xd9, 0xc5, 0x05, 0xd6, 0x43, 0x00,
- 0x51, 0x43, 0x3e, 0xb5, 0x21, 0x28, 0x64, 0xee, 0x3e, 0x4d, 0x84, 0x54, 0x5f, 0x45, 0x08, 0xf2,
- 0x29, 0x21, 0x3f, 0x86, 0x4a, 0xe8, 0x3b, 0xd4, 0xb2, 0x2a, 0xe7, 0x3f, 0x62, 0x13, 0x3b, 0xa3,
- 0xcc, 0xaf, 0xa1, 0xb5, 0xbc, 0xad, 0x06, 0x24, 0x1d, 0x89, 0xd6, 0x1b, 0x46, 0x03, 0xaa, 0xdf,
- 0xf4, 0x86, 0xf7, 0xba, 0xa2, 0xfd, 0x4d, 0xab, 0x64, 0x34, 0xa1, 0x36, 0xb0, 0x2c, 0x61, 0x77,
- 0xfb, 0xdf, 0x1c, 0xb7, 0xd6, 0xd0, 0x92, 0x40, 0x58, 0x0f, 0xdb, 0x87, 0x3d, 0x26, 0x2e, 0x9b,
- 0x9d, 0xbc, 0x30, 0xd6, 0xa1, 0x0a, 0x95, 0xe3, 0xfe, 0x31, 0x89, 0x42, 0xe6, 0xe3, 0xfe, 0xd0,
- 0xbe, 0xd3, 0x7f, 0x70, 0xdc, 0x45, 0x59, 0x35, 0x58, 0x67, 0x56, 0x94, 0x53, 0x87, 0xcd, 0xde,
- 0xb1, 0x1c, 0x94, 0xcd, 0x11, 0x94, 0x1f, 0x86, 0x93, 0xc2, 0xd8, 0x85, 0x96, 0x1b, 0xca, 0x4e,
- 0x66, 0x43, 0xe0, 0x2f, 0x2e, 0x65, 0x64, 0x13, 0x3e, 0x94, 0x45, 0x41, 0x03, 0x4b, 0x19, 0x06,
- 0x88, 0x98, 0x90, 0xaa, 0xc5, 0xcf, 0x6f, 0x0a, 0x18, 0x29, 0x01, 0x22, 0x36, 0xff, 0x76, 0x0d,
- 0x36, 0xe4, 0x17, 0xcf, 0x95, 0xeb, 0x80, 0x7c, 0x9c, 0xac, 0xa4, 0x5d, 0x53, 0xac, 0x8f, 0x24,
- 0xa0, 0x37, 0x26, 0x8b, 0xa1, 0xaa, 0xc3, 0x9d, 0xdb, 0xe9, 0x1b, 0x0d, 0x4c, 0x1d, 0x25, 0x88,
- 0xeb, 0xb7, 0x0f, 0xa1, 0xa5, 0x08, 0x94, 0x09, 0xaa, 0x70, 0x55, 0x13, 0xdb, 0x12, 0xde, 0x4e,
- 0xc0, 0xb9, 0x4f, 0x51, 0xeb, 0x4b, 0x9f, 0xa2, 0xde, 0x85, 0xad, 0x59, 0x30, 0x8d, 0xec, 0xa9,
- 0xf3, 0xc8, 0x9d, 0x72, 0x19, 0x26, 0x9d, 0x72, 0x83, 0xa0, 0x87, 0x04, 0xa4, 0x2a, 0x6c, 0x89,
- 0x0a, 0x8b, 0xb0, 0xcd, 0x65, 0x2a, 0xe7, 0x19, 0xdd, 0x81, 0x91, 0x3f, 0x55, 0x5f, 0x8c, 0xaa,
- 0x1c, 0x36, 0x32, 0xc0, 0x41, 0x07, 0xc3, 0x5a, 0x12, 0x77, 0xf1, 0xe0, 0xef, 0x1e, 0xf6, 0x6f,
- 0xb7, 0x0f, 0xf1, 0xb4, 0xf0, 0x78, 0x0e, 0xfb, 0x1d, 0xfc, 0x59, 0x22, 0x70, 0xbb, 0xfb, 0x2b,
- 0xbb, 0x77, 0x2c, 0x8f, 0x8a, 0x7e, 0xf7, 0x1f, 0x0c, 0x5b, 0x65, 0x7a, 0x42, 0xf2, 0x50, 0xdc,
- 0x69, 0x55, 0x0e, 0xfe, 0x0a, 0x6a, 0xe9, 0xf7, 0x66, 0x82, 0xb6, 0xbb, 0x5d, 0x14, 0x81, 0x3f,
- 0xba, 0x16, 0x09, 0x40, 0x26, 0xfc, 0x61, 0xb7, 0x0f, 0x0f, 0xa5, 0x04, 0x61, 0x0d, 0x0e, 0xdb,
- 0x1d, 0xb4, 0x18, 0x12, 0x6d, 0x1d, 0xb7, 0x6f, 0x1f, 0x5a, 0xad, 0x0a, 0x53, 0xf5, 0x4e, 0x78,
- 0xb0, 0x4e, 0xd3, 0x0b, 0xeb, 0xc4, 0x1a, 0xb6, 0x36, 0xc8, 0x6e, 0x4e, 0xfa, 0x77, 0x86, 0x72,
- 0xb8, 0x49, 0x46, 0xd7, 0x3b, 0xee, 0x0d, 0x7b, 0x68, 0x2e, 0x7f, 0x61, 0xb5, 0xaa, 0x07, 0x36,
- 0x7d, 0x0a, 0x4d, 0xab, 0x47, 0x92, 0x38, 0x10, 0xd6, 0x9d, 0xde, 0xb7, 0xd2, 0x78, 0x8f, 0xad,
- 0xde, 0xdd, 0x7b, 0xb7, 0xfb, 0x02, 0xb5, 0x40, 0x75, 0x86, 0xed, 0xbb, 0x6a, 0x0d, 0x27, 0xf6,
- 0xa0, 0x3d, 0xbc, 0x87, 0x1a, 0xa0, 0xf4, 0x4e, 0xff, 0xe8, 0xe8, 0x01, 0x8a, 0xfc, 0x0e, 0x95,
- 0xd8, 0x81, 0xa6, 0xf5, 0xed, 0xd0, 0xce, 0x40, 0xeb, 0x07, 0x1f, 0x62, 0x96, 0x9e, 0x54, 0x84,
- 0xbc, 0xb8, 0xe3, 0xef, 0xe4, 0xe2, 0x68, 0x3d, 0xbc, 0x3b, 0x68, 0xbc, 0x96, 0x18, 0xb6, 0xd6,
- 0x0e, 0x0e, 0xa0, 0xb5, 0x5c, 0xef, 0x19, 0x1b, 0xb0, 0x66, 0xdd, 0x47, 0x06, 0xfc, 0x7b, 0xd7,
- 0x42, 0x7a, 0xfc, 0x8b, 0x2b, 0x5c, 0x3b, 0xb8, 0xae, 0x0a, 0x7a, 0x95, 0x14, 0x67, 0xf7, 0x84,
- 0xb6, 0xbb, 0xd3, 0xb1, 0x06, 0x43, 0x29, 0x5c, 0x58, 0xbf, 0xb2, 0x3a, 0x24, 0xfc, 0x01, 0xec,
- 0x16, 0x14, 0x1b, 0xa4, 0x71, 0xaa, 0xad, 0x2d, 0x37, 0xfe, 0x12, 0xb4, 0x32, 0x90, 0xb0, 0x8e,
- 0xfa, 0x0f, 0x69, 0xe2, 0xcb, 0xb0, 0xa3, 0x43, 0xe5, 0x11, 0xac, 0x1d, 0x7c, 0x0c, 0xcd, 0x5c,
- 0x85, 0x41, 0xdb, 0x73, 0x64, 0x75, 0xed, 0xa3, 0x3e, 0x89, 0xda, 0x86, 0x3a, 0x0d, 0x12, 0xf2,
- 0xd2, 0xc1, 0x47, 0x00, 0x59, 0x7e, 0x47, 0x8b, 0x41, 0xb3, 0x60, 0x9d, 0x7b, 0x47, 0x83, 0xbe,
- 0x50, 0x3a, 0x5b, 0xdf, 0xf2, 0xef, 0xb5, 0x1b, 0xff, 0xb3, 0x03, 0xd5, 0xbb, 0xe4, 0x75, 0xda,
- 0x81, 0x67, 0xdc, 0x82, 0xed, 0xbb, 0x6e, 0xac, 0x3f, 0x66, 0x30, 0xb4, 0x78, 0x95, 0x3e, 0x6c,
- 0xd8, 0x5f, 0x79, 0x95, 0x60, 0xbe, 0x61, 0xdc, 0xe3, 0x47, 0x3d, 0x39, 0x5e, 0x33, 0xf7, 0x0c,
- 0xaa, 0xf0, 0x8d, 0xc4, 0xfe, 0xf6, 0xd2, 0xd3, 0x4c, 0x94, 0xf4, 0x25, 0x34, 0x50, 0x8b, 0xe4,
- 0xad, 0x5d, 0x54, 0xac, 0xc2, 0xd2, 0xbb, 0x39, 0xf3, 0x8d, 0x4f, 0x4a, 0x98, 0xba, 0xd7, 0x35,
- 0xc6, 0x0b, 0xf2, 0x19, 0x7f, 0x8e, 0x1b, 0x98, 0x3d, 0xed, 0x33, 0xde, 0xce, 0x29, 0xbd, 0xf2,
- 0xe2, 0xaf, 0x48, 0xe1, 0x8f, 0xf0, 0x56, 0x62, 0x19, 0xeb, 0x3d, 0x32, 0x34, 0x24, 0x7f, 0x86,
- 0xdf, 0x5f, 0x06, 0x20, 0xf5, 0x75, 0xbc, 0x38, 0x9c, 0xea, 0x14, 0xea, 0x57, 0x20, 0xfe, 0x33,
- 0xbc, 0x5e, 0xfe, 0x24, 0x7e, 0x35, 0xa6, 0x2f, 0xa0, 0x9e, 0x32, 0xf5, 0xe6, 0x17, 0x66, 0xbb,
- 0x09, 0x8d, 0x94, 0xad, 0xbf, 0xb8, 0xf8, 0x74, 0x37, 0xa0, 0x7a, 0x72, 0xb6, 0x88, 0x29, 0x05,
- 0xbe, 0x30, 0xcf, 0x27, 0x68, 0x86, 0xfc, 0x15, 0xee, 0xc2, 0x1c, 0x9f, 0xa2, 0x03, 0xf2, 0xa2,
- 0x57, 0x62, 0xb9, 0x8d, 0x77, 0x45, 0xbe, 0x1b, 0x35, 0xf6, 0x73, 0x27, 0x9b, 0x7b, 0x4c, 0xbb,
- 0x7f, 0x75, 0x05, 0x97, 0xa4, 0x9a, 0x28, 0xe3, 0x2b, 0xa8, 0x26, 0x6f, 0x4f, 0x8d, 0x1f, 0xac,
- 0x10, 0x46, 0xe7, 0xcd, 0xff, 0x41, 0x89, 0x8a, 0x5d, 0xf5, 0xb4, 0xaf, 0xd0, 0x42, 0x8a, 0x9f,
- 0x4f, 0xb0, 0x3d, 0x77, 0xe9, 0x2d, 0x17, 0x73, 0xde, 0x46, 0x4c, 0xe7, 0xcc, 0x99, 0x9f, 0xd2,
- 0xb7, 0x94, 0xa2, 0x95, 0x9f, 0x23, 0xe5, 0xe7, 0xe9, 0xd3, 0xc2, 0xec, 0xf3, 0xe1, 0x85, 0xaf,
- 0x54, 0x97, 0xde, 0xbd, 0x4a, 0xe5, 0xfb, 0xed, 0x2c, 0x75, 0x28, 0x16, 0xb0, 0x5b, 0x90, 0xfe,
- 0xb0, 0x94, 0x5b, 0x7c, 0x41, 0xb0, 0x7c, 0x33, 0xb4, 0x66, 0x95, 0xfe, 0x78, 0x74, 0xff, 0x52,
- 0x0e, 0xae, 0xaa, 0x3c, 0xe6, 0xbd, 0x09, 0x1b, 0xf2, 0xa5, 0xa9, 0x91, 0x3f, 0xa3, 0x1c, 0x7b,
- 0xa1, 0x25, 0x6f, 0xc8, 0xb7, 0x97, 0x4b, 0x7c, 0xfa, 0x6b, 0xcc, 0x62, 0x4b, 0xde, 0xa4, 0xcb,
- 0x4c, 0x29, 0xfe, 0xcb, 0x76, 0x89, 0x88, 0x58, 0xc7, 0x9f, 0xb1, 0x91, 0x31, 0x4f, 0xde, 0xc8,
- 0x72, 0xcf, 0x33, 0x5f, 0x70, 0x07, 0x68, 0x36, 0x4c, 0xfa, 0x0b, 0x27, 0xcb, 0x67, 0x84, 0x3c,
- 0xd7, 0xa7, 0xac, 0x1f, 0x26, 0x60, 0xd1, 0x4b, 0x59, 0x90, 0x48, 0xdb, 0x42, 0xca, 0xd9, 0xf2,
- 0x5b, 0xa1, 0xbf, 0xc0, 0x2c, 0x52, 0xee, 0x17, 0xd0, 0xc4, 0xa9, 0xb4, 0xee, 0x70, 0xe1, 0xbb,
- 0xc7, 0xfd, 0x42, 0x28, 0x3b, 0xd6, 0xad, 0x1c, 0x7b, 0xf4, 0x6a, 0xfc, 0x6c, 0x7d, 0xcd, 0xdc,
- 0x0b, 0x4e, 0xe3, 0x9d, 0x9c, 0xfe, 0x05, 0x4f, 0x3b, 0x8b, 0x96, 0x71, 0x8b, 0xe3, 0x49, 0xd6,
- 0xf5, 0x29, 0x6a, 0xa6, 0xec, 0x17, 0x01, 0xd3, 0x2d, 0xd0, 0x1e, 0x2c, 0xbe, 0x02, 0x33, 0x2e,
- 0xe0, 0x36, 0x34, 0xf4, 0xd7, 0xa0, 0xc6, 0x8f, 0x72, 0xfa, 0xaf, 0xbe, 0x12, 0x2d, 0x76, 0x7a,
- 0x35, 0x54, 0x41, 0x35, 0x8c, 0x56, 0x5a, 0x2a, 0xfb, 0x2b, 0x10, 0xe9, 0xfc, 0x13, 0x16, 0xca,
- 0x55, 0x2f, 0xc4, 0x84, 0xda, 0x7e, 0x85, 0x79, 0x54, 0xf2, 0xb4, 0xd2, 0x78, 0x2b, 0xef, 0xe8,
- 0xf2, 0x0f, 0x4a, 0x8b, 0xf4, 0xec, 0xc3, 0x6e, 0xaa, 0xa7, 0xd6, 0x84, 0x3a, 0xe7, 0xc1, 0xcd,
- 0xfe, 0x39, 0x38, 0x14, 0x38, 0x80, 0xdd, 0x82, 0x97, 0x9e, 0xc6, 0xfb, 0x45, 0x8a, 0xad, 0x3e,
- 0x04, 0x2d, 0x50, 0xf1, 0xd1, 0x06, 0xff, 0x7f, 0x91, 0xcf, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff,
- 0xac, 0xce, 0x50, 0xf6, 0x3e, 0x32, 0x00, 0x00,
+ 0xfa, 0x48, 0x55, 0x72, 0xd8, 0x1c, 0x72, 0x48, 0xe5, 0x9a, 0xaa, 0x54, 0xed, 0xfe, 0x81, 0xfc,
+ 0x81, 0x54, 0xee, 0x49, 0x55, 0xfe, 0x42, 0x2e, 0xc9, 0x21, 0x95, 0x4b, 0xee, 0xa9, 0xca, 0x31,
+ 0xef, 0xbd, 0xee, 0x99, 0xe9, 0x01, 0x47, 0x14, 0xb5, 0xdc, 0x4a, 0x55, 0x2e, 0xc4, 0xf4, 0xfb,
+ 0xea, 0xd7, 0xdd, 0xef, 0xab, 0x3f, 0x08, 0xf5, 0x13, 0xff, 0xf1, 0x49, 0x70, 0x3d, 0x08, 0xfd,
+ 0xd8, 0x37, 0xaa, 0xdc, 0x70, 0x02, 0xcf, 0x9c, 0xc2, 0xaa, 0x15, 0x86, 0x7e, 0x68, 0x7c, 0x0c,
+ 0x95, 0x91, 0x3f, 0x76, 0x77, 0x4b, 0xef, 0x94, 0x3e, 0xd8, 0xb8, 0x79, 0xed, 0x7a, 0x42, 0x71,
+ 0x9d, 0xd1, 0xf2, 0x6f, 0x07, 0x09, 0x04, 0x93, 0x19, 0x2d, 0x28, 0xcf, 0xa2, 0x93, 0xdd, 0x15,
+ 0xa4, 0xae, 0x09, 0xfa, 0x34, 0x4d, 0xa8, 0xa5, 0x44, 0x46, 0x1d, 0xd6, 0x8f, 0x1f, 0x76, 0x3a,
+ 0xd6, 0xf1, 0x71, 0xeb, 0x0d, 0xa3, 0x0a, 0x95, 0xbb, 0xed, 0xde, 0x41, 0xab, 0x64, 0x9e, 0x40,
+ 0xad, 0x1d, 0x9e, 0x2c, 0x66, 0xee, 0x3c, 0x8e, 0x8c, 0xeb, 0x50, 0x0d, 0xdd, 0xc8, 0x5f, 0x84,
+ 0xa3, 0xa4, 0x57, 0x23, 0xeb, 0x55, 0x28, 0x8c, 0x48, 0x69, 0x8c, 0xab, 0xb0, 0x36, 0x71, 0x66,
+ 0xde, 0xf4, 0x05, 0xf7, 0xda, 0x14, 0xaa, 0x65, 0x18, 0x50, 0x99, 0x3b, 0x33, 0x77, 0xb7, 0xcc,
+ 0xba, 0xf0, 0xb7, 0xf9, 0xaf, 0x25, 0x68, 0x1d, 0xfa, 0xe3, 0x81, 0x13, 0x9f, 0x66, 0x1d, 0x7e,
+ 0x0a, 0x35, 0x3f, 0x70, 0x43, 0x27, 0xf6, 0xfc, 0xb9, 0xea, 0x71, 0x3b, 0xeb, 0xb1, 0x9f, 0xa0,
+ 0x44, 0x46, 0x95, 0xd3, 0x71, 0xe5, 0x02, 0x3a, 0x16, 0xe8, 0x62, 0x98, 0x50, 0x09, 0x50, 0x8f,
+ 0xdd, 0x0a, 0xc2, 0xea, 0x37, 0x37, 0x32, 0x7e, 0xd2, 0x4e, 0x30, 0x8e, 0xf8, 0x16, 0x0b, 0x6f,
+ 0xbc, 0xbb, 0x8a, 0x34, 0x0d, 0xc1, 0xdf, 0xda, 0x78, 0xd7, 0xf4, 0xf1, 0x9a, 0xef, 0xc1, 0xa6,
+ 0x1a, 0x1a, 0x2a, 0x10, 0xf8, 0xf3, 0xc8, 0x4d, 0xd9, 0x4b, 0x19, 0xbb, 0xf9, 0xe7, 0xb0, 0xa5,
+ 0xc8, 0xa2, 0xdf, 0x7d, 0xce, 0x93, 0xf1, 0xac, 0x68, 0xe3, 0x79, 0x17, 0x56, 0x49, 0xe7, 0x08,
+ 0x07, 0x59, 0x2e, 0x18, 0x90, 0x44, 0x9a, 0x33, 0xd8, 0xc1, 0xee, 0x8f, 0x5c, 0xef, 0xe4, 0xf4,
+ 0xb1, 0x1f, 0x5e, 0x6a, 0x11, 0x68, 0x02, 0x5d, 0x37, 0x64, 0x25, 0xf2, 0xfd, 0x21, 0x54, 0x30,
+ 0xce, 0xfc, 0x6d, 0x09, 0x1a, 0x87, 0x61, 0xfc, 0xfb, 0xb7, 0xae, 0x3d, 0xa8, 0x7a, 0xf3, 0xd8,
+ 0x0d, 0x9f, 0x3a, 0x53, 0x5e, 0xd5, 0x8a, 0x48, 0xdb, 0xc6, 0x87, 0xd0, 0x9a, 0xab, 0x01, 0xda,
+ 0xce, 0x78, 0x8c, 0xb2, 0x22, 0x5e, 0xe5, 0x9a, 0xd8, 0x4c, 0xe0, 0x6d, 0x09, 0x36, 0xff, 0xae,
+ 0xc4, 0xab, 0x96, 0x53, 0xf1, 0x77, 0x98, 0x8a, 0x1f, 0x40, 0x6d, 0xbc, 0x98, 0x05, 0x76, 0xfc,
+ 0x22, 0x90, 0x8b, 0xb2, 0x2a, 0xaa, 0x04, 0x18, 0x62, 0x9b, 0x54, 0x9d, 0x78, 0x53, 0x57, 0x33,
+ 0xc0, 0xb4, 0x9d, 0x1b, 0x46, 0x25, 0x3f, 0x0c, 0xf3, 0x3f, 0xa4, 0x6e, 0x77, 0x66, 0xc1, 0xa5,
+ 0x74, 0xdb, 0x85, 0xf5, 0x64, 0x12, 0xa4, 0xb9, 0x24, 0x4d, 0xb2, 0xa2, 0xc0, 0x0f, 0x63, 0x56,
+ 0xaa, 0x29, 0xf8, 0xdb, 0xf8, 0x25, 0x54, 0x78, 0x10, 0x15, 0x96, 0xbd, 0x9f, 0xc9, 0x5e, 0xd2,
+ 0x04, 0xdb, 0x73, 0x2f, 0xf6, 0x43, 0x6f, 0x7e, 0x32, 0xf0, 0xa7, 0xde, 0xe8, 0x85, 0x60, 0x3e,
+ 0xf3, 0x06, 0x39, 0x78, 0x1e, 0x63, 0xac, 0x43, 0x79, 0x20, 0x2c, 0x19, 0x71, 0x06, 0xfd, 0xe3,
+ 0x61, 0xab, 0x44, 0x5f, 0x77, 0xfa, 0xc3, 0xfb, 0xad, 0x15, 0xf3, 0x1f, 0x65, 0x48, 0x10, 0xc1,
+ 0x13, 0xef, 0x52, 0xc3, 0xc4, 0xc8, 0xe7, 0x44, 0x73, 0x65, 0x25, 0xf4, 0xa9, 0x0f, 0xbc, 0x5c,
+ 0x3c, 0xf0, 0x8a, 0x36, 0x70, 0x5c, 0x89, 0xa9, 0x37, 0x71, 0x63, 0x0f, 0x57, 0x89, 0xdc, 0xbd,
+ 0x2c, 0xd2, 0x36, 0x19, 0x61, 0x10, 0xba, 0x13, 0xef, 0x39, 0xbb, 0x7c, 0x4d, 0xa8, 0x96, 0xe9,
+ 0xf2, 0x02, 0x3d, 0x0a, 0x27, 0x97, 0xd2, 0xfc, 0x47, 0x50, 0x7e, 0x1a, 0x4e, 0x94, 0x1b, 0x35,
+ 0x33, 0x62, 0x94, 0x2b, 0x08, 0x63, 0x46, 0x70, 0x15, 0xbb, 0xe9, 0x62, 0x97, 0x73, 0x77, 0x7c,
+ 0xec, 0x5e, 0xce, 0x54, 0xdf, 0x87, 0x72, 0xe4, 0xc6, 0xaa, 0xb7, 0x9d, 0x8c, 0x38, 0x13, 0x2f,
+ 0x88, 0x00, 0xe3, 0xd4, 0x15, 0xec, 0xf4, 0x38, 0x76, 0x62, 0x97, 0xfa, 0xba, 0x54, 0x9f, 0xc8,
+ 0x12, 0x25, 0x82, 0x54, 0xcf, 0x1a, 0x4b, 0xda, 0x87, 0xc8, 0xa8, 0xcc, 0x7f, 0x2b, 0x81, 0x41,
+ 0x71, 0x92, 0x2d, 0xe8, 0x52, 0x9d, 0x7f, 0x80, 0x8b, 0xc7, 0x52, 0x54, 0xcf, 0x2d, 0x2d, 0x50,
+ 0x49, 0xcb, 0x55, 0x78, 0xe3, 0x36, 0x5c, 0xc3, 0x75, 0x75, 0x43, 0xdb, 0x7d, 0xee, 0x45, 0x31,
+ 0xda, 0xaf, 0x9d, 0xea, 0x23, 0x4d, 0xa8, 0x2a, 0xde, 0x64, 0x02, 0x4b, 0xe1, 0x53, 0xcd, 0x23,
+ 0xe3, 0x06, 0x6c, 0xa3, 0x51, 0x44, 0xe8, 0xb9, 0xae, 0xce, 0x55, 0x61, 0x2e, 0x23, 0x41, 0x65,
+ 0x0c, 0xe6, 0xdf, 0x94, 0xe0, 0xad, 0x6c, 0x80, 0x51, 0xe4, 0x9d, 0xcc, 0x2f, 0x3d, 0xcf, 0xb7,
+ 0x01, 0x9c, 0x54, 0x92, 0x1a, 0xee, 0xde, 0xf2, 0x70, 0xb3, 0xbe, 0x84, 0x46, 0x6d, 0x3e, 0x83,
+ 0x5d, 0x54, 0xe7, 0xde, 0xd4, 0x7f, 0xec, 0x4c, 0x3b, 0xfe, 0x7c, 0xe2, 0x9d, 0x5c, 0x76, 0xd6,
+ 0x4f, 0x58, 0xd6, 0xd9, 0x59, 0x97, 0x7d, 0x08, 0x85, 0x37, 0x7f, 0x53, 0xc6, 0xa8, 0xa0, 0x92,
+ 0xed, 0x7c, 0x1a, 0x7a, 0x49, 0xb6, 0xa4, 0x6f, 0xf6, 0x3c, 0x27, 0x8e, 0x43, 0x8a, 0x5d, 0x65,
+ 0x84, 0xaa, 0x16, 0x7b, 0xfb, 0x89, 0x0c, 0xa7, 0x65, 0x41, 0x9f, 0xc4, 0xfd, 0xd8, 0x8d, 0x62,
+ 0x35, 0xe3, 0xfc, 0x8d, 0x9e, 0x55, 0xf7, 0x22, 0xfb, 0x99, 0x17, 0x9f, 0x8e, 0x43, 0xe7, 0x19,
+ 0xbb, 0x75, 0x55, 0x80, 0x17, 0x7d, 0xa3, 0x20, 0xc6, 0xdb, 0x00, 0x18, 0x69, 0xbd, 0xb1, 0x1c,
+ 0xd9, 0x1a, 0x07, 0x6e, 0x0d, 0x62, 0x7c, 0x02, 0x3b, 0x73, 0xdf, 0xf6, 0x66, 0x01, 0x4e, 0x9c,
+ 0x17, 0x67, 0x92, 0xd6, 0xe5, 0xb2, 0xce, 0xfd, 0x9e, 0x42, 0xa5, 0x12, 0xb3, 0x7c, 0x55, 0xcd,
+ 0xe5, 0xab, 0x1f, 0x02, 0xc8, 0x8c, 0x66, 0x53, 0x94, 0xaa, 0x31, 0xae, 0x26, 0x21, 0xed, 0x88,
+ 0x13, 0x88, 0x42, 0x63, 0xb9, 0x00, 0x32, 0x49, 0x48, 0x40, 0x6f, 0xac, 0x12, 0x08, 0x66, 0x05,
+ 0x77, 0xbc, 0x5b, 0xe7, 0x9e, 0xd3, 0xb6, 0xb1, 0x03, 0xab, 0x68, 0x6e, 0x53, 0x77, 0xb7, 0xc1,
+ 0x08, 0xd9, 0xc0, 0xd9, 0x6f, 0xe1, 0xc0, 0x27, 0xa1, 0x3f, 0x43, 0x5b, 0x46, 0xc2, 0x39, 0xae,
+ 0x43, 0x93, 0x09, 0x36, 0xbc, 0xe8, 0x2e, 0x82, 0x2d, 0x05, 0xa5, 0x29, 0x4a, 0x73, 0xa5, 0x17,
+ 0xec, 0x6e, 0x70, 0xd7, 0x90, 0x80, 0x7a, 0x81, 0x19, 0x43, 0xbd, 0xeb, 0x92, 0xb5, 0xcb, 0x19,
+ 0xc9, 0x42, 0x61, 0x49, 0x0f, 0x85, 0x59, 0xf5, 0xb1, 0x72, 0x4e, 0xf5, 0x61, 0xfc, 0x04, 0x36,
+ 0xa7, 0xfe, 0xfc, 0x04, 0x5d, 0x4c, 0xb2, 0xb9, 0x89, 0x5f, 0x6d, 0x48, 0xf0, 0x40, 0x41, 0xcd,
+ 0x7f, 0x28, 0xc1, 0xea, 0xd0, 0x79, 0x8c, 0x43, 0x79, 0x5f, 0x25, 0xa4, 0x97, 0x17, 0x0b, 0x8c,
+ 0x2f, 0x2c, 0x89, 0xb2, 0xc5, 0x28, 0xe7, 0x16, 0xe3, 0x0f, 0xa1, 0x31, 0xce, 0xc6, 0x44, 0x5e,
+ 0x4a, 0x3a, 0x5f, 0xd1, 0x83, 0x61, 0x8a, 0x15, 0x39, 0x52, 0x9a, 0xaf, 0xc0, 0x8f, 0x62, 0x5b,
+ 0x85, 0x14, 0x65, 0x52, 0x04, 0x92, 0xde, 0x65, 0xfe, 0x13, 0x99, 0x33, 0x96, 0x3e, 0xbc, 0x6a,
+ 0xd4, 0x9d, 0xe7, 0xca, 0x49, 0x69, 0x8a, 0xb4, 0x6d, 0xfc, 0x0c, 0x1a, 0x4e, 0x10, 0x4c, 0x5f,
+ 0x24, 0x62, 0xca, 0xec, 0x23, 0x9a, 0x02, 0x6d, 0xc2, 0xaa, 0xf0, 0x54, 0x77, 0xb2, 0x06, 0x4d,
+ 0xc7, 0x08, 0xbd, 0x93, 0x3b, 0xae, 0xeb, 0xd3, 0x41, 0x7d, 0x92, 0xdf, 0x0a, 0xc6, 0x1b, 0x3f,
+ 0x87, 0xa6, 0x8b, 0x18, 0x7b, 0xb6, 0x98, 0xc6, 0xde, 0xa9, 0x1f, 0xb0, 0x71, 0xd7, 0x6f, 0x5e,
+ 0xd5, 0x36, 0x10, 0xf8, 0x7b, 0xa8, 0xb0, 0xa2, 0xe1, 0x6a, 0x2d, 0xa3, 0x0d, 0x9b, 0xa1, 0xbf,
+ 0x88, 0x5d, 0x1b, 0x97, 0x63, 0xea, 0x8e, 0x30, 0x99, 0xb3, 0x4d, 0xd6, 0x6f, 0xee, 0x6a, 0xd3,
+ 0x4f, 0x04, 0x22, 0xc1, 0x8b, 0x8d, 0x30, 0xd7, 0xc6, 0x95, 0xae, 0x78, 0xf3, 0x89, 0xcf, 0xf6,
+ 0x9a, 0x8b, 0xf6, 0xa4, 0x27, 0x87, 0x41, 0xc1, 0x04, 0x14, 0x28, 0x28, 0xc7, 0xa2, 0x87, 0x37,
+ 0x96, 0x03, 0xc5, 0x90, 0xe1, 0x42, 0xe1, 0x29, 0x0a, 0xc5, 0xa1, 0x33, 0x8f, 0x38, 0x75, 0x37,
+ 0x97, 0xe5, 0x0e, 0x13, 0x94, 0xc8, 0xa8, 0x68, 0x9e, 0xe5, 0x40, 0x38, 0xfa, 0x86, 0xbb, 0x9b,
+ 0xcb, 0xf3, 0xcc, 0xa3, 0x38, 0x66, 0xa4, 0xa8, 0x87, 0x59, 0xc3, 0xfc, 0x97, 0x12, 0xd4, 0xb5,
+ 0x45, 0x30, 0xbe, 0x84, 0x9a, 0x37, 0x4f, 0x96, 0xab, 0xf4, 0xca, 0xc8, 0x8a, 0x55, 0x9c, 0x62,
+ 0xfc, 0x23, 0x5c, 0x88, 0xe7, 0xa4, 0x8c, 0x9d, 0xcb, 0x42, 0xe7, 0x31, 0x37, 0x24, 0x43, 0x26,
+ 0x00, 0x03, 0x90, 0x26, 0xa0, 0xfc, 0x6a, 0x01, 0x92, 0x41, 0x59, 0xe4, 0x5f, 0x40, 0x5d, 0xfa,
+ 0xd5, 0x81, 0x37, 0xf3, 0x62, 0xcd, 0x29, 0x4a, 0x39, 0xa7, 0xf8, 0x31, 0x34, 0x66, 0xce, 0xf3,
+ 0xcc, 0x31, 0x65, 0x25, 0x55, 0x47, 0x58, 0xe2, 0x95, 0xc6, 0xe7, 0x70, 0x35, 0x3a, 0x5d, 0xc4,
+ 0x63, 0xff, 0xd9, 0xdc, 0x8e, 0x4f, 0x31, 0xa7, 0x9d, 0xfa, 0xd3, 0xb1, 0x1d, 0x8c, 0x92, 0x12,
+ 0x72, 0x27, 0xc1, 0x0e, 0x13, 0xe4, 0x60, 0x14, 0x9b, 0xff, 0x5d, 0x86, 0x6a, 0x62, 0x9d, 0xc6,
+ 0x1f, 0x40, 0xd3, 0x59, 0xc4, 0xa7, 0x76, 0x80, 0xa9, 0xe7, 0x99, 0x1f, 0x8e, 0x55, 0x18, 0x69,
+ 0x10, 0x70, 0xa0, 0x60, 0xc6, 0x3b, 0x50, 0x47, 0xa7, 0x1b, 0x85, 0x5e, 0xc0, 0x71, 0x59, 0xba,
+ 0xb4, 0x0e, 0x32, 0xae, 0x61, 0xb5, 0xe6, 0x8f, 0x9c, 0x29, 0x46, 0x53, 0xd5, 0xf7, 0x3a, 0xb7,
+ 0xdb, 0xd1, 0x6b, 0x54, 0xff, 0xc6, 0x9b, 0xb0, 0x4e, 0xbb, 0x14, 0x12, 0xb2, 0x2a, 0xe7, 0x82,
+ 0x9a, 0x28, 0x03, 0xa3, 0x35, 0x23, 0x4e, 0xd0, 0x24, 0x02, 0x55, 0xf4, 0xd5, 0x08, 0x72, 0x8f,
+ 0x00, 0x14, 0xad, 0x19, 0xcd, 0x81, 0x69, 0x9d, 0x39, 0xab, 0x04, 0xe0, 0x72, 0x7f, 0x1f, 0xb6,
+ 0x42, 0x77, 0xe6, 0x63, 0x1d, 0x10, 0x84, 0xde, 0x53, 0x34, 0x74, 0x12, 0x2f, 0x93, 0xc1, 0xa6,
+ 0x44, 0x0c, 0x24, 0x1c, 0xfb, 0xf9, 0x08, 0x0c, 0x69, 0x9f, 0x93, 0xa9, 0x13, 0xd8, 0x63, 0x67,
+ 0x16, 0x60, 0x55, 0xc1, 0xd9, 0xa1, 0x2a, 0x5a, 0x8c, 0xb9, 0x8b, 0x88, 0xae, 0x84, 0x1b, 0xef,
+ 0xc1, 0x46, 0xe4, 0xce, 0xc7, 0xf6, 0xc8, 0x9f, 0xcd, 0x16, 0x58, 0x63, 0xbf, 0x60, 0xaf, 0x6c,
+ 0x8a, 0x26, 0x41, 0x3b, 0x09, 0x90, 0x94, 0xa7, 0x7e, 0x50, 0xea, 0xc8, 0x09, 0xd0, 0x01, 0x29,
+ 0x6f, 0xd6, 0x24, 0xa4, 0xe3, 0xb0, 0xf2, 0x72, 0xea, 0x08, 0xdb, 0x60, 0xac, 0x9c, 0x4b, 0x42,
+ 0x6e, 0xc0, 0x0a, 0x26, 0xa0, 0x26, 0x0f, 0x18, 0xbf, 0xb0, 0xa2, 0x68, 0x4a, 0x83, 0xb0, 0xa7,
+ 0x64, 0x3c, 0x11, 0x26, 0x88, 0xa5, 0x50, 0xa9, 0x99, 0x96, 0x68, 0x04, 0x59, 0x23, 0x32, 0xbf,
+ 0x86, 0x86, 0x1e, 0x63, 0xa8, 0x1e, 0xc7, 0x4d, 0x0f, 0xc6, 0x74, 0xb9, 0xe8, 0x55, 0x91, 0x34,
+ 0xd9, 0xf4, 0x14, 0x95, 0x1d, 0xc7, 0xd3, 0xd4, 0xf4, 0x14, 0x6c, 0x18, 0x4f, 0xcd, 0xbf, 0x2c,
+ 0xc1, 0x46, 0x3e, 0xe4, 0x90, 0x35, 0x2e, 0x45, 0x29, 0x7b, 0x84, 0xd1, 0x15, 0x2b, 0x1f, 0x29,
+ 0x7e, 0x27, 0x1f, 0x92, 0x3a, 0x8c, 0xc3, 0xc0, 0xb8, 0x77, 0x96, 0x6b, 0x11, 0x61, 0x3a, 0xa4,
+ 0xd4, 0x2b, 0x7b, 0x7e, 0x73, 0x99, 0x93, 0xf1, 0xbd, 0xb1, 0xf9, 0x9f, 0xab, 0x50, 0x4b, 0x03,
+ 0xd8, 0xff, 0x81, 0x2d, 0xe3, 0x6e, 0x79, 0x86, 0x86, 0x8a, 0xf5, 0x4d, 0xa4, 0xce, 0x29, 0xb4,
+ 0x88, 0x7f, 0xa8, 0x30, 0x22, 0xa5, 0x29, 0xb4, 0xfd, 0xd5, 0x57, 0xda, 0xfe, 0xda, 0x39, 0xb6,
+ 0xbf, 0x7e, 0xae, 0xed, 0x57, 0x97, 0x6c, 0x1f, 0x83, 0xf9, 0xf7, 0x0b, 0x77, 0x81, 0xda, 0xd6,
+ 0x96, 0x83, 0xf9, 0x03, 0x86, 0x0b, 0x85, 0x2f, 0xf6, 0x12, 0x78, 0x1d, 0x2f, 0xa9, 0x5f, 0xd8,
+ 0x4b, 0x1a, 0x45, 0x5e, 0x82, 0x8b, 0x17, 0xe1, 0x3c, 0xe0, 0x02, 0xc8, 0x7a, 0x9d, 0x8d, 0xbe,
+ 0x29, 0x1a, 0x0a, 0x28, 0x57, 0xf8, 0x0b, 0x0c, 0x78, 0x8b, 0x80, 0x62, 0xa9, 0x3b, 0x26, 0x7f,
+ 0x71, 0x1e, 0x63, 0xfe, 0x8e, 0x29, 0xa3, 0x93, 0x1f, 0xd4, 0xc4, 0x95, 0x14, 0xdb, 0xd1, 0x90,
+ 0x34, 0x47, 0x94, 0x7b, 0xa5, 0xdc, 0x4d, 0x59, 0xcd, 0x21, 0x40, 0xca, 0xc4, 0x0a, 0xc2, 0x19,
+ 0xcf, 0xbc, 0xa4, 0xdb, 0x96, 0xac, 0xb8, 0x18, 0x24, 0x09, 0xf6, 0xe8, 0x88, 0x64, 0xe4, 0x7a,
+ 0x4f, 0xd1, 0x51, 0xb6, 0xe4, 0x04, 0x27, 0x6d, 0xc2, 0x39, 0xa3, 0x91, 0x1b, 0x60, 0x8f, 0xbb,
+ 0x86, 0xc4, 0x25, 0x6d, 0x2a, 0x66, 0x9d, 0x31, 0xe6, 0xae, 0xd8, 0x8b, 0x10, 0xbb, 0xcd, 0x58,
+ 0x0d, 0x62, 0x6c, 0xc3, 0x2a, 0xce, 0x95, 0xfd, 0xfd, 0xee, 0x8e, 0xdc, 0xf6, 0x62, 0xe3, 0x01,
+ 0xd5, 0x8f, 0x93, 0xa9, 0x1f, 0x44, 0xbb, 0x57, 0x18, 0x28, 0x1b, 0xe6, 0x9f, 0x42, 0x35, 0xb1,
+ 0x2e, 0xe3, 0x63, 0x4d, 0x1d, 0x99, 0xf8, 0xb6, 0xce, 0xd8, 0xa0, 0xa6, 0xe1, 0x7b, 0x50, 0x89,
+ 0xb2, 0xdd, 0x47, 0x01, 0x29, 0xa3, 0xcd, 0x7f, 0x2e, 0xc1, 0xba, 0x82, 0x18, 0x26, 0x34, 0x8e,
+ 0xfa, 0xc3, 0xde, 0xdd, 0x5e, 0xa7, 0x3d, 0xec, 0xf5, 0x8f, 0xb8, 0x97, 0x8a, 0x68, 0xcc, 0x35,
+ 0x18, 0x65, 0xad, 0x87, 0x83, 0x6e, 0x7b, 0x68, 0xb1, 0xe0, 0x8a, 0x58, 0x5b, 0x70, 0x8b, 0xca,
+ 0xbe, 0xfe, 0xc0, 0x3a, 0x52, 0x67, 0x40, 0x15, 0x1f, 0xbf, 0x8d, 0xb7, 0xa0, 0xf6, 0xb5, 0x65,
+ 0x0d, 0xda, 0x07, 0xbd, 0x47, 0x96, 0x3a, 0x55, 0xa9, 0x3d, 0x49, 0x00, 0x14, 0x86, 0x84, 0x75,
+ 0x57, 0x58, 0xc7, 0xf7, 0xd9, 0x35, 0x2a, 0x62, 0x3d, 0x94, 0x4d, 0xe2, 0xeb, 0xf6, 0x8e, 0x3b,
+ 0x6d, 0xd1, 0xb5, 0xba, 0xec, 0x14, 0xc8, 0x37, 0x4e, 0x00, 0x34, 0x53, 0xc3, 0xfe, 0xb0, 0x7d,
+ 0xc0, 0x2e, 0x51, 0x11, 0xab, 0x31, 0x35, 0xcc, 0x5b, 0xb0, 0x26, 0x2d, 0x9b, 0xf0, 0xde, 0x3c,
+ 0x58, 0xc4, 0x2a, 0xad, 0xca, 0x06, 0xe9, 0x8d, 0xf3, 0x4c, 0x60, 0x75, 0x7e, 0x25, 0x5b, 0xa6,
+ 0x0b, 0x6b, 0xb2, 0xbc, 0x41, 0x1f, 0x5f, 0x1b, 0xf1, 0x7e, 0x4b, 0xcd, 0xee, 0xd5, 0xe5, 0x02,
+ 0x48, 0xee, 0xc6, 0x84, 0xa2, 0x32, 0x7e, 0xca, 0x15, 0x7f, 0xec, 0xaa, 0x19, 0xbe, 0xb2, 0x4c,
+ 0x2e, 0x8b, 0x2b, 0x49, 0x43, 0xd3, 0xdc, 0xd0, 0xa5, 0x90, 0xd9, 0xa3, 0x9c, 0x39, 0xc6, 0x35,
+ 0x0c, 0x80, 0x71, 0xf8, 0x22, 0x99, 0x6c, 0x05, 0x14, 0x04, 0x23, 0xfb, 0xe5, 0xcc, 0xce, 0x87,
+ 0x21, 0x72, 0xbe, 0xab, 0x04, 0x20, 0x49, 0x68, 0x0f, 0xc6, 0x13, 0xd7, 0x0d, 0x70, 0x93, 0x84,
+ 0xce, 0xbb, 0x74, 0x06, 0xb7, 0x95, 0x62, 0x7a, 0xc9, 0x61, 0x5c, 0x17, 0xde, 0x46, 0xcb, 0xf6,
+ 0x66, 0x8b, 0x99, 0x9d, 0xda, 0x22, 0x15, 0x29, 0xf6, 0xd2, 0xb9, 0xd7, 0x5b, 0x8a, 0xaa, 0xad,
+ 0x13, 0x25, 0x52, 0xcc, 0xbf, 0x5f, 0x81, 0xba, 0x36, 0xbc, 0xff, 0xa7, 0xc3, 0xe0, 0xfd, 0xa4,
+ 0x7b, 0xe2, 0xc7, 0x9e, 0x43, 0x01, 0x25, 0x53, 0x4e, 0x1a, 0xa2, 0x91, 0xe1, 0xee, 0x27, 0x6a,
+ 0xa2, 0xfd, 0x2c, 0x02, 0xa6, 0x59, 0x53, 0x76, 0xcf, 0x2d, 0x0a, 0x04, 0x54, 0x68, 0x31, 0x46,
+ 0x1a, 0x64, 0xda, 0x36, 0xff, 0xa7, 0x04, 0xb5, 0xb4, 0x1c, 0xa6, 0xa9, 0x52, 0xe9, 0x45, 0x25,
+ 0x04, 0x95, 0xa5, 0x64, 0x8e, 0x51, 0xd9, 0x00, 0x83, 0xbe, 0x24, 0xe2, 0xe2, 0x5a, 0x9a, 0xaa,
+ 0x2c, 0x13, 0x06, 0x4a, 0xc6, 0x2c, 0x5e, 0xd8, 0x63, 0x2f, 0x1a, 0x61, 0x64, 0x0e, 0x5f, 0xa8,
+ 0x5d, 0x5b, 0x03, 0x81, 0xdd, 0x04, 0x46, 0x59, 0x9c, 0x32, 0x21, 0xcd, 0xe7, 0x8c, 0xae, 0x2c,
+ 0xe4, 0x4e, 0xbc, 0xae, 0x60, 0x87, 0x74, 0xff, 0x80, 0xb1, 0x59, 0x95, 0x26, 0xf9, 0xec, 0xd4,
+ 0x94, 0xd0, 0x44, 0x1b, 0x0c, 0x91, 0x8a, 0x8c, 0xd5, 0x91, 0xf9, 0x49, 0x15, 0x35, 0xac, 0x0f,
+ 0x26, 0xaf, 0x78, 0x84, 0x9b, 0x1b, 0x14, 0x20, 0xcb, 0xaf, 0x35, 0x6c, 0x1e, 0x46, 0x91, 0xf9,
+ 0x0b, 0xa8, 0x6b, 0x25, 0x3d, 0xfa, 0xd6, 0xb6, 0x5e, 0xff, 0xe7, 0xeb, 0x83, 0x2d, 0xad, 0xde,
+ 0x97, 0xc5, 0x81, 0xb9, 0x80, 0x35, 0x59, 0xcf, 0x90, 0xed, 0x78, 0x81, 0x9d, 0xdb, 0xea, 0x56,
+ 0xbd, 0x40, 0x21, 0xdf, 0x87, 0xcd, 0x99, 0x13, 0x3d, 0xb1, 0xa7, 0xee, 0xfc, 0x04, 0xf3, 0x3f,
+ 0x2e, 0xb9, 0x9a, 0xb2, 0x26, 0x81, 0x0f, 0x18, 0x7a, 0xe8, 0xcd, 0xcf, 0xd0, 0x39, 0xcf, 0x55,
+ 0x82, 0xd7, 0xe9, 0x9c, 0xe7, 0x74, 0x16, 0x04, 0xd9, 0xf9, 0x1b, 0x66, 0x71, 0x7d, 0xcb, 0x7b,
+ 0xe5, 0xcc, 0x19, 0x1d, 0xa5, 0xda, 0x73, 0x76, 0xbd, 0x08, 0x9b, 0x7a, 0x51, 0xcc, 0xf7, 0x00,
+ 0x08, 0xa3, 0x6f, 0x4c, 0xa1, 0xd5, 0xb4, 0xb0, 0x97, 0xbb, 0xdd, 0xd6, 0x72, 0x09, 0x27, 0x52,
+ 0x0a, 0xf3, 0x1e, 0x86, 0x7f, 0x27, 0x1e, 0x9d, 0x92, 0x32, 0x3f, 0xc9, 0x29, 0xa3, 0x6d, 0xb8,
+ 0x98, 0xe2, 0x7c, 0x55, 0xcc, 0x47, 0xd0, 0x68, 0x47, 0x74, 0x00, 0x20, 0xc7, 0x8a, 0xeb, 0xa1,
+ 0x0b, 0xd3, 0xb6, 0x30, 0x3a, 0x95, 0x26, 0x13, 0xad, 0x5f, 0xce, 0x5d, 0x12, 0x3d, 0x65, 0xcb,
+ 0xfc, 0x75, 0x19, 0x00, 0x03, 0xda, 0xd8, 0x93, 0x9b, 0xf2, 0x4f, 0xb1, 0x64, 0x91, 0x55, 0x2a,
+ 0x1d, 0x6d, 0x96, 0xce, 0x14, 0x4a, 0x6a, 0x2c, 0x58, 0xc6, 0x30, 0x15, 0x0d, 0xeb, 0x0b, 0x68,
+ 0xa4, 0x95, 0x52, 0x76, 0x1e, 0x5a, 0xc4, 0x94, 0x9e, 0x8f, 0x10, 0xdb, 0x57, 0xb0, 0xe1, 0x44,
+ 0x36, 0x1d, 0x66, 0xa8, 0x45, 0x55, 0xbb, 0xb1, 0xab, 0xc5, 0x43, 0xc1, 0x5a, 0x50, 0x1f, 0xfe,
+ 0x4d, 0x4c, 0xfd, 0x8a, 0x9b, 0xfa, 0xac, 0xbc, 0x5c, 0x51, 0xc9, 0x46, 0x3d, 0x7e, 0x49, 0x91,
+ 0x4e, 0x15, 0x2d, 0xcc, 0xb5, 0xfa, 0x52, 0xae, 0x46, 0x4a, 0x48, 0x8c, 0xbf, 0x84, 0x2d, 0xf7,
+ 0x79, 0x6c, 0xe7, 0x99, 0xd7, 0x5e, 0xca, 0xbc, 0x89, 0xc4, 0x1d, 0x9d, 0x9f, 0x9c, 0x30, 0x78,
+ 0xe2, 0x61, 0x7c, 0x8d, 0xb0, 0x0e, 0x67, 0x3f, 0x5b, 0x45, 0x27, 0x44, 0x90, 0x60, 0x88, 0x39,
+ 0x81, 0xcd, 0x94, 0xa1, 0x3d, 0x52, 0x07, 0xbd, 0xfa, 0xfa, 0xfe, 0x30, 0xeb, 0x66, 0x89, 0x50,
+ 0x5b, 0x62, 0xac, 0x8f, 0x13, 0x15, 0x93, 0x93, 0x12, 0xac, 0x8f, 0x35, 0x90, 0x79, 0x04, 0xb5,
+ 0x43, 0x77, 0xac, 0x7a, 0xf8, 0x69, 0xae, 0x87, 0x37, 0xf5, 0xf2, 0x62, 0x7c, 0x46, 0x36, 0xa6,
+ 0x64, 0x8c, 0xba, 0x0b, 0x69, 0x93, 0x65, 0x21, 0x1b, 0xa6, 0x0d, 0x9b, 0xb8, 0x46, 0xa1, 0x1b,
+ 0x60, 0x3d, 0xa8, 0xa4, 0xaa, 0xcb, 0x83, 0x52, 0x76, 0x79, 0x80, 0x96, 0x47, 0x14, 0x4e, 0x9a,
+ 0xb7, 0x65, 0x0b, 0x6b, 0x95, 0xe6, 0x22, 0x72, 0x71, 0xf1, 0x27, 0x31, 0x46, 0xb9, 0x28, 0x56,
+ 0x91, 0xb0, 0x8e, 0xc0, 0x03, 0x84, 0x1d, 0x22, 0xc8, 0xfc, 0xed, 0x0a, 0xac, 0x4b, 0xc1, 0x51,
+ 0x76, 0x02, 0xe1, 0x8c, 0xb4, 0xd3, 0xd3, 0xe5, 0x13, 0x08, 0x49, 0xad, 0x4e, 0x20, 0x94, 0x4e,
+ 0x5f, 0x42, 0x2d, 0x2b, 0x61, 0xa5, 0x79, 0x5e, 0x7b, 0xe9, 0x84, 0x8a, 0x8c, 0x16, 0x83, 0x6c,
+ 0x79, 0x86, 0xb5, 0x5a, 0x79, 0xf9, 0x84, 0x24, 0x9d, 0x21, 0x41, 0x78, 0xd4, 0x0c, 0xc8, 0x18,
+ 0xe5, 0x3c, 0x28, 0x5b, 0xbc, 0x96, 0x33, 0x63, 0x7d, 0x8a, 0xd8, 0x24, 0x25, 0x00, 0x2d, 0xab,
+ 0x99, 0xb3, 0x2c, 0x65, 0x92, 0xe7, 0x68, 0xd7, 0xd0, 0x8d, 0xcb, 0xfc, 0x35, 0xe6, 0xa7, 0xf4,
+ 0x24, 0x3c, 0x8d, 0x1b, 0x25, 0x2d, 0x84, 0x7d, 0x0e, 0x30, 0x4a, 0xdd, 0xfb, 0xec, 0x5d, 0x45,
+ 0xe6, 0xfa, 0x42, 0xa3, 0x43, 0xdb, 0x58, 0x97, 0xb3, 0x1c, 0xa9, 0xc1, 0x6b, 0xd5, 0xa7, 0x5a,
+ 0x0f, 0x91, 0x50, 0x98, 0x0f, 0x30, 0xd4, 0xcb, 0x03, 0x96, 0x22, 0x05, 0x3e, 0x03, 0xd0, 0x4e,
+ 0xf1, 0xe5, 0x99, 0x66, 0xe1, 0x95, 0x85, 0x46, 0x66, 0xfe, 0x7b, 0x09, 0x5a, 0xcb, 0x67, 0x31,
+ 0xb8, 0x25, 0xd2, 0x0d, 0x76, 0x67, 0xf9, 0xd4, 0x46, 0xb3, 0xd6, 0xdf, 0xc7, 0xa5, 0x36, 0xc5,
+ 0x79, 0x92, 0xeb, 0x15, 0xc6, 0x79, 0x79, 0x9e, 0x98, 0x52, 0x18, 0x37, 0x60, 0x7d, 0xec, 0x4e,
+ 0x1c, 0x72, 0xef, 0xd5, 0xf3, 0xec, 0x32, 0xa1, 0x32, 0xdf, 0x01, 0x38, 0x0c, 0xe3, 0xa4, 0x6e,
+ 0x47, 0x05, 0xc6, 0x4e, 0xec, 0x24, 0x07, 0xf6, 0xf4, 0x6d, 0x5a, 0x50, 0x15, 0x83, 0xaf, 0x7b,
+ 0x7c, 0xd6, 0xa3, 0x5d, 0xc0, 0x95, 0xf2, 0x17, 0x70, 0x4b, 0x09, 0x5e, 0xa6, 0x0c, 0x2d, 0xc1,
+ 0x9b, 0xbf, 0xa9, 0x40, 0x8d, 0xe4, 0xc8, 0x6a, 0x2f, 0x2b, 0x82, 0x4a, 0xec, 0xc8, 0x45, 0x45,
+ 0x90, 0x74, 0xf1, 0xb4, 0x4d, 0x27, 0x19, 0xb8, 0x7d, 0x95, 0xde, 0x89, 0x5f, 0xb2, 0xcb, 0x11,
+ 0xee, 0xc8, 0x6d, 0x2f, 0x78, 0xfa, 0xb9, 0xba, 0xfa, 0x03, 0x09, 0xea, 0x21, 0x24, 0x4f, 0x70,
+ 0x4b, 0x1d, 0x08, 0x65, 0x04, 0xb7, 0xf8, 0xe8, 0x57, 0x66, 0x19, 0x96, 0xa0, 0xaa, 0x12, 0x09,
+ 0x4a, 0x24, 0x64, 0x04, 0xb7, 0x54, 0x65, 0x92, 0x11, 0xdc, 0xa2, 0x71, 0x60, 0x21, 0xe2, 0x61,
+ 0xb1, 0xa8, 0x2e, 0x07, 0x64, 0x8b, 0xca, 0xab, 0x64, 0xff, 0x24, 0x65, 0xd7, 0x78, 0x30, 0x8d,
+ 0x04, 0xc8, 0xd2, 0x97, 0x88, 0x6e, 0xf1, 0x6e, 0x39, 0x4f, 0x74, 0x4b, 0xee, 0x6a, 0x49, 0xa6,
+ 0x3d, 0xc7, 0x4a, 0x72, 0xf2, 0x82, 0x77, 0xc9, 0x65, 0xda, 0xd5, 0x12, 0xf0, 0x88, 0x61, 0xa4,
+ 0xe7, 0xc8, 0x19, 0x9d, 0xd2, 0x11, 0x08, 0xe5, 0x84, 0x06, 0x93, 0x00, 0x83, 0x04, 0x41, 0xa8,
+ 0x4c, 0x4b, 0x09, 0xf8, 0x25, 0x03, 0x6f, 0x8e, 0xcb, 0xa2, 0x99, 0xd0, 0xc8, 0xe7, 0x0d, 0x6f,
+ 0x43, 0x9d, 0x36, 0xda, 0xfe, 0xc4, 0x66, 0x33, 0xd8, 0x60, 0x9a, 0x1a, 0x82, 0xfa, 0x93, 0x2e,
+ 0x02, 0x28, 0xfc, 0xba, 0xf4, 0xf4, 0x84, 0xb7, 0xc0, 0x18, 0x7e, 0xb9, 0x41, 0x65, 0xa2, 0x52,
+ 0xf1, 0xfb, 0x05, 0x95, 0x92, 0x2d, 0x46, 0xd6, 0x25, 0xec, 0x01, 0x81, 0xe4, 0x52, 0xa0, 0x22,
+ 0x8a, 0x62, 0x4b, 0x2a, 0xc8, 0x20, 0x26, 0x30, 0xbf, 0x83, 0x0a, 0x59, 0x47, 0x7a, 0x1a, 0x7e,
+ 0x26, 0xe5, 0x27, 0x36, 0xa8, 0x4e, 0xc3, 0x3f, 0xcc, 0xef, 0x99, 0xb6, 0xf3, 0x84, 0xb9, 0x1d,
+ 0xd3, 0x5f, 0x97, 0xa0, 0x2c, 0xfa, 0x6d, 0xb2, 0x1f, 0x27, 0x52, 0x19, 0x01, 0xbf, 0x68, 0x73,
+ 0x28, 0x57, 0x12, 0xf3, 0x7e, 0x52, 0x20, 0xa7, 0x00, 0x5a, 0x59, 0xac, 0xee, 0x08, 0xa5, 0x6e,
+ 0x1a, 0x64, 0x4b, 0xbb, 0x2e, 0xa9, 0xe4, 0xae, 0x4b, 0x5e, 0x7a, 0x8c, 0x9f, 0x57, 0xdc, 0xfc,
+ 0x5b, 0xf2, 0x83, 0x7e, 0x5b, 0x66, 0x5c, 0xac, 0x3e, 0x30, 0x0d, 0x39, 0x51, 0x9a, 0x46, 0xde,
+ 0xd5, 0xf8, 0x12, 0xa2, 0xeb, 0x8f, 0xd2, 0xeb, 0x2b, 0xc1, 0xb4, 0x42, 0xf1, 0x9c, 0xf3, 0x10,
+ 0x00, 0xc7, 0x46, 0x3e, 0x83, 0x13, 0x30, 0x0b, 0xd4, 0x9d, 0x5a, 0x06, 0xe0, 0x03, 0x8b, 0x88,
+ 0x8b, 0x16, 0xba, 0x7b, 0xe3, 0x81, 0x34, 0xe8, 0xea, 0x90, 0x40, 0x6d, 0x84, 0x50, 0xad, 0xec,
+ 0x87, 0xde, 0x89, 0x37, 0xcf, 0x0e, 0x52, 0xab, 0x12, 0xd0, 0x8e, 0x5e, 0x76, 0x77, 0x6e, 0x74,
+ 0x00, 0x68, 0xfb, 0xa3, 0x55, 0x17, 0x17, 0x18, 0x0f, 0x01, 0x44, 0x0d, 0xf9, 0xd4, 0x84, 0xa0,
+ 0x90, 0xb9, 0xfb, 0x2c, 0x11, 0x52, 0x7d, 0x1d, 0x21, 0xc8, 0xa7, 0x84, 0xfc, 0x18, 0x2a, 0xa1,
+ 0xef, 0xd0, 0x91, 0x55, 0x39, 0x7f, 0x01, 0x4f, 0xec, 0x8c, 0x32, 0xbf, 0x86, 0xd6, 0xf2, 0xb4,
+ 0x1a, 0x90, 0x9c, 0x48, 0xb4, 0xde, 0x30, 0x1a, 0x50, 0xfd, 0xa6, 0x37, 0xbc, 0xdf, 0x15, 0xed,
+ 0x6f, 0x5a, 0x25, 0xa3, 0x09, 0xb5, 0x81, 0x65, 0x09, 0xbb, 0xdb, 0xff, 0xe6, 0xa8, 0xb5, 0x82,
+ 0x96, 0x04, 0xc2, 0x7a, 0xd4, 0x3e, 0xe8, 0x31, 0x71, 0xd9, 0xec, 0xe4, 0x85, 0xb1, 0x0e, 0x55,
+ 0xa8, 0x1c, 0xf5, 0x8f, 0x48, 0x14, 0x32, 0x1f, 0xf5, 0x87, 0xf6, 0xdd, 0xfe, 0xc3, 0xa3, 0x2e,
+ 0xca, 0xaa, 0xc1, 0x2a, 0xb3, 0xa2, 0x9c, 0x3a, 0xac, 0xf7, 0x8e, 0x64, 0xa3, 0x6c, 0x8e, 0xa0,
+ 0xfc, 0x28, 0x9c, 0x14, 0xe6, 0x2e, 0xb4, 0xdc, 0x50, 0x9e, 0x64, 0x36, 0x04, 0x7e, 0xf1, 0x56,
+ 0x46, 0x5e, 0x20, 0x84, 0x72, 0x53, 0xd0, 0xc0, 0xad, 0x0c, 0x03, 0x44, 0x4c, 0x48, 0x75, 0x3d,
+ 0xc1, 0xef, 0x21, 0x18, 0x29, 0x01, 0x22, 0x36, 0xff, 0x6a, 0x05, 0xd6, 0xe4, 0x6d, 0xed, 0x19,
+ 0x77, 0x40, 0x3e, 0x2e, 0x56, 0xd2, 0x53, 0x53, 0xdc, 0x1f, 0x49, 0x40, 0x6f, 0x4c, 0x16, 0x43,
+ 0xbb, 0x0e, 0x77, 0x6e, 0xa7, 0xef, 0x4b, 0xb0, 0x74, 0x94, 0x20, 0xde, 0xbf, 0x7d, 0x08, 0x2d,
+ 0x45, 0xa0, 0x4c, 0x50, 0xa5, 0xab, 0x9a, 0xd8, 0x94, 0xf0, 0x76, 0x02, 0xce, 0x5d, 0xa3, 0xad,
+ 0x2e, 0x5d, 0xa3, 0xbd, 0x0b, 0x1b, 0xb3, 0x60, 0x1a, 0xd9, 0x53, 0xe7, 0xb1, 0x3b, 0xe5, 0x6d,
+ 0x98, 0x0c, 0xca, 0x0d, 0x82, 0x1e, 0x10, 0x90, 0x76, 0x61, 0x4b, 0x54, 0xb8, 0x09, 0x5b, 0x5f,
+ 0xa6, 0x72, 0x9e, 0x93, 0x0f, 0x8c, 0xfc, 0xa9, 0xba, 0xed, 0xaa, 0x72, 0xda, 0xc8, 0x00, 0xfb,
+ 0x1d, 0x4c, 0x6b, 0x49, 0xde, 0xc5, 0x85, 0xbf, 0x77, 0xd0, 0xbf, 0xd3, 0x3e, 0xc0, 0xd5, 0xc2,
+ 0xe5, 0x39, 0xe8, 0x77, 0xf0, 0xb3, 0x44, 0xe0, 0x76, 0xf7, 0x57, 0x76, 0xef, 0x48, 0x2e, 0x15,
+ 0x7d, 0xf7, 0x1f, 0x0e, 0x5b, 0x65, 0x7a, 0xfe, 0xf2, 0x48, 0xdc, 0x6d, 0x55, 0xf6, 0xff, 0x0c,
+ 0x6a, 0xe9, 0x5d, 0x39, 0x41, 0xdb, 0xdd, 0x2e, 0x8a, 0xc0, 0x8f, 0xae, 0x45, 0x02, 0x90, 0x09,
+ 0x3f, 0xec, 0xf6, 0xc1, 0x81, 0x94, 0x20, 0xac, 0xc1, 0x41, 0xbb, 0x83, 0x16, 0x43, 0xa2, 0xad,
+ 0xa3, 0xf6, 0x9d, 0x03, 0xab, 0x55, 0x61, 0xaa, 0xde, 0x31, 0x37, 0x56, 0xa9, 0x7b, 0x61, 0x1d,
+ 0x5b, 0xc3, 0xd6, 0x1a, 0xd9, 0xcd, 0x71, 0xff, 0xee, 0x50, 0x36, 0xd7, 0xc9, 0xe8, 0x7a, 0x47,
+ 0xbd, 0x61, 0x0f, 0xcd, 0xe5, 0x4f, 0xac, 0x56, 0x75, 0xdf, 0xa6, 0x6b, 0xdc, 0x74, 0xf7, 0x48,
+ 0x12, 0x07, 0xc2, 0xba, 0xdb, 0xfb, 0x56, 0x1a, 0xef, 0x91, 0xd5, 0xbb, 0x77, 0xff, 0x4e, 0x5f,
+ 0xa0, 0x16, 0xa8, 0xce, 0xb0, 0x7d, 0x4f, 0x8d, 0xe1, 0xd8, 0x1e, 0xb4, 0x87, 0xf7, 0x51, 0x03,
+ 0x94, 0xde, 0xe9, 0x1f, 0x1e, 0x3e, 0x44, 0x91, 0xdf, 0xa1, 0x12, 0x5b, 0xd0, 0xb4, 0xbe, 0x1d,
+ 0xda, 0x19, 0x68, 0x75, 0xff, 0x43, 0xac, 0xd2, 0x93, 0x1d, 0x21, 0x0f, 0xee, 0xe8, 0x3b, 0x39,
+ 0x38, 0x1a, 0x0f, 0xcf, 0x0e, 0x1a, 0xaf, 0x25, 0x86, 0xad, 0x95, 0xfd, 0x7d, 0x68, 0x2d, 0xef,
+ 0xf7, 0x8c, 0x35, 0x58, 0xb1, 0x1e, 0x20, 0x03, 0xfe, 0xde, 0xb3, 0x90, 0x1e, 0x7f, 0x71, 0x84,
+ 0x2b, 0xfb, 0x37, 0xd4, 0x86, 0x5e, 0x15, 0xc5, 0x99, 0x9f, 0xd0, 0x74, 0x77, 0x3a, 0xd6, 0x60,
+ 0x28, 0x85, 0x0b, 0xeb, 0x57, 0x56, 0x87, 0x84, 0x3f, 0x84, 0xed, 0x82, 0xcd, 0x06, 0x69, 0x9c,
+ 0x6a, 0x6b, 0xcb, 0x89, 0xdf, 0x81, 0x56, 0x06, 0x12, 0xd6, 0x61, 0xff, 0x11, 0x75, 0x7c, 0x05,
+ 0xb6, 0x74, 0xa8, 0x5c, 0x82, 0x95, 0xfd, 0x8f, 0xa1, 0x99, 0xdb, 0x61, 0xd0, 0xf4, 0x1c, 0x5a,
+ 0x5d, 0xfb, 0xb0, 0x4f, 0xa2, 0x36, 0xa1, 0x4e, 0x8d, 0x84, 0xbc, 0xb4, 0xff, 0x11, 0x40, 0x56,
+ 0xdf, 0xd1, 0x60, 0xd0, 0x2c, 0x58, 0xe7, 0xde, 0xe1, 0xa0, 0x2f, 0x94, 0xce, 0xd6, 0xb7, 0xfc,
+ 0xbd, 0x72, 0xf3, 0xbf, 0xb6, 0xa0, 0x7a, 0x8f, 0xa2, 0x4e, 0x3b, 0xf0, 0x8c, 0xdb, 0xb0, 0x79,
+ 0xcf, 0x8d, 0xf5, 0x87, 0x18, 0x86, 0x96, 0xaf, 0xd2, 0x47, 0x19, 0x7b, 0x67, 0x5e, 0x54, 0x98,
+ 0x6f, 0x18, 0xf7, 0xf9, 0x41, 0x52, 0x8e, 0xd7, 0xcc, 0x3d, 0xe1, 0x2a, 0x7c, 0xdf, 0xb1, 0xb7,
+ 0xb9, 0xf4, 0xac, 0x14, 0x25, 0x7d, 0x09, 0x0d, 0xd4, 0x22, 0x79, 0x27, 0x18, 0x15, 0xab, 0xb0,
+ 0xf4, 0xe6, 0xcf, 0x7c, 0xe3, 0x93, 0x12, 0x96, 0xee, 0x75, 0x8d, 0xf1, 0x82, 0x7c, 0xc6, 0x1f,
+ 0xe3, 0x04, 0x66, 0xcf, 0x12, 0x8d, 0xb7, 0x73, 0x4a, 0x9f, 0x79, 0xad, 0x58, 0xa4, 0xf0, 0x47,
+ 0xe8, 0x95, 0xb8, 0x8d, 0xf5, 0x1e, 0x1b, 0x1a, 0x92, 0x9f, 0x10, 0xec, 0x2d, 0x03, 0x90, 0xfa,
+ 0x06, 0x3a, 0x0e, 0x97, 0x3a, 0x85, 0xfa, 0x15, 0x88, 0xff, 0x0c, 0xdd, 0xcb, 0x9f, 0xc4, 0xaf,
+ 0xc7, 0xf4, 0x05, 0xd4, 0x53, 0xa6, 0xde, 0xfc, 0xc2, 0x6c, 0xb7, 0xa0, 0x91, 0xb2, 0xf5, 0x17,
+ 0x17, 0xef, 0xee, 0x26, 0x54, 0x8f, 0xd5, 0x05, 0xec, 0x85, 0x79, 0x3e, 0x41, 0x33, 0xe4, 0x5b,
+ 0xb8, 0x0b, 0x73, 0x7c, 0x8a, 0x01, 0xc8, 0x8b, 0x5e, 0x8b, 0xe5, 0x0e, 0xfa, 0x8a, 0x7c, 0xf3,
+ 0x6a, 0xec, 0xe5, 0x56, 0x36, 0xf7, 0x10, 0x78, 0xef, 0xda, 0x19, 0x5c, 0x52, 0x6a, 0xa2, 0x8c,
+ 0xaf, 0xa0, 0x9a, 0xbc, 0x9b, 0x35, 0x7e, 0x70, 0x86, 0x30, 0x3a, 0xaf, 0xff, 0x0f, 0x4a, 0xb4,
+ 0xd9, 0x55, 0xcf, 0x12, 0x0b, 0x2d, 0xa4, 0xf8, 0xe9, 0x07, 0xdb, 0x73, 0x97, 0xde, 0xa1, 0x31,
+ 0xe7, 0x1d, 0xc4, 0x74, 0x4e, 0x9d, 0xf9, 0x09, 0xdd, 0xa5, 0x14, 0x8d, 0xfc, 0x1c, 0x29, 0x3f,
+ 0x4f, 0x9f, 0x45, 0x66, 0xd7, 0x87, 0x17, 0x76, 0xa9, 0x2e, 0xbd, 0xd9, 0x95, 0xca, 0xf7, 0xdb,
+ 0x59, 0xe9, 0x50, 0x2c, 0x60, 0xbb, 0xa0, 0xfc, 0x61, 0x29, 0xb7, 0xd9, 0x41, 0x70, 0xfb, 0x66,
+ 0x68, 0x87, 0x55, 0xfa, 0xc3, 0xd7, 0xbd, 0x9d, 0x1c, 0x5c, 0xed, 0xf2, 0x98, 0xf7, 0x16, 0xac,
+ 0xc9, 0x57, 0xb2, 0x46, 0x7e, 0x8d, 0x72, 0xec, 0x85, 0x96, 0xbc, 0x26, 0xdf, 0x8d, 0x2e, 0xf1,
+ 0xe9, 0x2f, 0x49, 0x8b, 0x2d, 0x79, 0x9d, 0x9c, 0x99, 0x4a, 0xfc, 0x57, 0xcd, 0x12, 0x11, 0xb1,
+ 0x8e, 0x3f, 0x63, 0x23, 0x63, 0x9e, 0xbc, 0x91, 0xe5, 0x9e, 0x96, 0xbe, 0xc4, 0x07, 0xa8, 0x37,
+ 0x2c, 0xfa, 0x0b, 0x3b, 0xcb, 0x57, 0x84, 0xdc, 0xd7, 0xa7, 0xac, 0x1f, 0x16, 0x60, 0xd1, 0x2b,
+ 0x59, 0x90, 0x48, 0x9b, 0x42, 0xaa, 0xd9, 0xf2, 0x53, 0xa1, 0xbf, 0x1e, 0x2d, 0x52, 0xee, 0x17,
+ 0xd0, 0xc4, 0xae, 0xb4, 0xd3, 0xe1, 0xc2, 0x37, 0x9b, 0x7b, 0x85, 0x50, 0x0e, 0xac, 0x1b, 0x39,
+ 0xf6, 0xe8, 0xf5, 0xf8, 0xd9, 0xfa, 0x9a, 0xb9, 0xd7, 0xa7, 0xc6, 0x3b, 0x39, 0xfd, 0x0b, 0x9e,
+ 0xa5, 0x16, 0x0d, 0xe3, 0x36, 0xe7, 0x93, 0xec, 0xd4, 0xa7, 0xe8, 0x30, 0x65, 0xaf, 0x08, 0x98,
+ 0x4e, 0x81, 0xf6, 0xd8, 0xf2, 0x35, 0x98, 0x71, 0x00, 0x77, 0xa0, 0xa1, 0xbf, 0x64, 0x35, 0x7e,
+ 0x94, 0xd3, 0xff, 0xec, 0x0b, 0xd7, 0xe2, 0xa0, 0x57, 0x43, 0x15, 0xd4, 0x81, 0xd1, 0x99, 0x23,
+ 0x95, 0xbd, 0x33, 0x10, 0x19, 0xfc, 0x13, 0x16, 0xaa, 0x55, 0x2f, 0xc4, 0x84, 0xda, 0x7e, 0x85,
+ 0x75, 0x54, 0xf2, 0x2c, 0xd4, 0x78, 0x2b, 0x1f, 0xe8, 0xf2, 0x8f, 0x61, 0x8b, 0xf4, 0xec, 0xc3,
+ 0x76, 0xaa, 0xa7, 0x76, 0x08, 0x75, 0xce, 0x63, 0xa1, 0xbd, 0x73, 0x70, 0x28, 0x70, 0x00, 0xdb,
+ 0x05, 0xaf, 0x54, 0x8d, 0xf7, 0x8b, 0x14, 0x3b, 0xfb, 0x88, 0xb5, 0x40, 0xc5, 0xc7, 0x6b, 0xfc,
+ 0xbf, 0x2e, 0x9f, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0xea, 0xaa, 0x22, 0xfa, 0x32,
+ 0x00, 0x00,
}
diff --git a/api/gobgp.proto b/api/gobgp.proto
index 950cf94a..fd0b6dc5 100644
--- a/api/gobgp.proto
+++ b/api/gobgp.proto
@@ -243,6 +243,12 @@ message ApplyPolicy {
PolicyAssignment import_policy = 3;
}
+message PrefixLimit {
+ uint32 family = 1;
+ uint32 max_prefixes = 2;
+ uint32 shutdown_threshold_pct = 3;
+}
+
message PeerConf {
string auth_password = 1;
string description = 2;
@@ -257,6 +263,7 @@ message PeerConf {
repeated bytes remote_cap = 11;
repeated bytes local_cap = 12;
string id = 13;
+ repeated PrefixLimit prefix_limits = 14;
}
message EbgpMultihop {
diff --git a/gobgp/cmd/common.go b/gobgp/cmd/common.go
index 4a6ef04c..c436c23a 100644
--- a/gobgp/cmd/common.go
+++ b/gobgp/cmd/common.go
@@ -275,6 +275,7 @@ type PeerConf struct {
LocalCap []bgp.ParameterCapabilityInterface `json:"local_cap,omitempty"`
Holdtime uint32 `json:"holdtime,omitempty"`
KeepaliveInterval uint32 `json:"keepalive_interval,omitempty"`
+ PrefixLimits []*gobgpapi.PrefixLimit
}
type Peer struct {
@@ -295,12 +296,13 @@ func ApiStruct2Peer(p *gobgpapi.Peer) *Peer {
remoteCaps = append(remoteCaps, c)
}
conf := PeerConf{
- RemoteIp: net.ParseIP(p.Conf.NeighborAddress),
- Id: net.ParseIP(p.Conf.Id),
- RemoteAs: p.Conf.PeerAs,
- LocalAs: p.Conf.LocalAs,
- RemoteCap: remoteCaps,
- LocalCap: localCaps,
+ RemoteIp: net.ParseIP(p.Conf.NeighborAddress),
+ Id: net.ParseIP(p.Conf.Id),
+ RemoteAs: p.Conf.PeerAs,
+ LocalAs: p.Conf.LocalAs,
+ RemoteCap: remoteCaps,
+ LocalCap: localCaps,
+ PrefixLimits: p.Conf.PrefixLimits,
}
return &Peer{
Conf: conf,
diff --git a/gobgp/cmd/neighbor.go b/gobgp/cmd/neighbor.go
index bd6f3a1a..6844f1bb 100644
--- a/gobgp/cmd/neighbor.go
+++ b/gobgp/cmd/neighbor.go
@@ -274,6 +274,17 @@ func showNeighbor(args []string) error {
fmt.Printf(" Advertised: %10d\n", p.Info.Advertised)
fmt.Printf(" Received: %10d\n", p.Info.Received)
fmt.Printf(" Accepted: %10d\n", p.Info.Accepted)
+ if len(p.Conf.PrefixLimits) > 0 {
+ fmt.Println(" Prefix Limits:")
+ for _, c := range p.Conf.PrefixLimits {
+ fmt.Printf(" %s:\tMaximum prefixes allowed %d", bgp.RouteFamily(c.Family), c.MaxPrefixes)
+ if c.ShutdownThresholdPct > 0 {
+ fmt.Printf(", Threshold for warning message %d%%\n", c.ShutdownThresholdPct)
+ } else {
+ fmt.Printf("\n")
+ }
+ }
+ }
return nil
}
diff --git a/server/peer.go b/server/peer.go
index 0f6b37ec..d2b065e1 100644
--- a/server/peer.go
+++ b/server/peer.go
@@ -333,6 +333,18 @@ func (peer *Peer) ToApiStruct() *api.Peer {
localCap = append(localCap, buf)
}
+ prefixLimits := make([]*api.PrefixLimit, 0, len(peer.fsm.pConf.AfiSafis))
+ for _, family := range peer.fsm.pConf.AfiSafis {
+ if c := family.PrefixLimit.Config; c.MaxPrefixes > 0 {
+ k, _ := bgp.GetRouteFamily(string(family.AfiSafiName))
+ prefixLimits = append(prefixLimits, &api.PrefixLimit{
+ Family: uint32(k),
+ MaxPrefixes: c.MaxPrefixes,
+ ShutdownThresholdPct: uint32(c.ShutdownThresholdPct),
+ })
+ }
+ }
+
conf := &api.PeerConf{
NeighborAddress: c.Config.NeighborAddress,
Id: peer.fsm.peerInfo.ID.To4().String(),
@@ -347,6 +359,7 @@ func (peer *Peer) ToApiStruct() *api.Peer {
PeerGroup: c.Config.PeerGroup,
RemoteCap: remoteCap,
LocalCap: localCap,
+ PrefixLimits: prefixLimits,
}
timer := c.Timers