summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--api/gobgp.pb.go1451
-rw-r--r--api/gobgp.proto95
-rw-r--r--api/grpc_server.go328
3 files changed, 1307 insertions, 567 deletions
diff --git a/api/gobgp.pb.go b/api/gobgp.pb.go
index 3d8f2ce8..162e5d42 100644
--- a/api/gobgp.pb.go
+++ b/api/gobgp.pb.go
@@ -1,6 +1,5 @@
-// Code generated by protoc-gen-go.
+// Code generated by protoc-gen-go. DO NOT EDIT.
// source: gobgp.proto
-// DO NOT EDIT!
/*
Package gobgpapi is a generated protocol buffer package.
@@ -127,14 +126,28 @@ It has these top-level messages:
Transport
RouteServer
GracefulRestart
+ MpGracefulRestartConfig
+ MpGracefulRestartState
MpGracefulRestart
AfiSafiConfig
+ AfiSafiState
+ RouteSelectionOptionsConfig
+ RouteSelectionOptionsState
RouteSelectionOptions
UseMultiplePathsConfig
+ UseMultiplePathsState
+ EbgpConfig
+ EbgpState
Ebgp
+ IbgpConfig
+ IbgpState
Ibgp
UseMultiplePaths
+ RouteTargetMembershipConfig
+ RouteTargetMembershipState
RouteTargetMembership
+ LongLivedGracefulRestartConfig
+ LongLivedGracefulRestartState
LongLivedGracefulRestart
AfiSafi
Prefix
@@ -516,7 +529,7 @@ var Conditions_RouteType_value = map[string]int32{
func (x Conditions_RouteType) String() string {
return proto.EnumName(Conditions_RouteType_name, int32(x))
}
-func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{132, 0} }
+func (Conditions_RouteType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{146, 0} }
type GetNeighborRequest struct {
EnableAdvertised bool `protobuf:"varint,1,opt,name=enableAdvertised" json:"enableAdvertised,omitempty"`
@@ -2609,25 +2622,28 @@ func (m *PrefixLimit) GetShutdownThresholdPct() uint32 {
}
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 PeerConf_RemovePrivateAs `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs,enum=gobgpapi.PeerConf_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"`
- LocalAddress string `protobuf:"bytes,15,opt,name=local_address,json=localAddress" json:"local_address,omitempty"`
- NeighborInterface string `protobuf:"bytes,16,opt,name=neighbor_interface,json=neighborInterface" json:"neighbor_interface,omitempty"`
- Vrf string `protobuf:"bytes,17,opt,name=vrf" json:"vrf,omitempty"`
- AllowOwnAs uint32 `protobuf:"varint,18,opt,name=allow_own_as,json=allowOwnAs" json:"allow_own_as,omitempty"`
- ReplacePeerAs bool `protobuf:"varint,19,opt,name=replace_peer_as,json=replacePeerAs" json:"replace_peer_as,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 PeerConf_RemovePrivateAs `protobuf:"varint,8,opt,name=remove_private_as,json=removePrivateAs,enum=gobgpapi.PeerConf_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"`
+ // Note: Regarding to the consistency with OpenConfig mode, list of
+ // PrefixLimit should be removed from here, and list of PrefixLimit in
+ // AfiSafi should be used instead.
+ PrefixLimits []*PrefixLimit `protobuf:"bytes,14,rep,name=prefix_limits,json=prefixLimits" json:"prefix_limits,omitempty"`
+ LocalAddress string `protobuf:"bytes,15,opt,name=local_address,json=localAddress" json:"local_address,omitempty"`
+ NeighborInterface string `protobuf:"bytes,16,opt,name=neighbor_interface,json=neighborInterface" json:"neighbor_interface,omitempty"`
+ Vrf string `protobuf:"bytes,17,opt,name=vrf" json:"vrf,omitempty"`
+ AllowOwnAs uint32 `protobuf:"varint,18,opt,name=allow_own_as,json=allowOwnAs" json:"allow_own_as,omitempty"`
+ ReplacePeerAs bool `protobuf:"varint,19,opt,name=replace_peer_as,json=replacePeerAs" json:"replace_peer_as,omitempty"`
}
func (m *PeerConf) Reset() { *m = PeerConf{} }
@@ -3368,20 +3384,92 @@ func (m *GracefulRestart) GetLonglivedEnabled() bool {
return false
}
-type MpGracefulRestart struct {
+type MpGracefulRestartConfig struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
}
+func (m *MpGracefulRestartConfig) Reset() { *m = MpGracefulRestartConfig{} }
+func (m *MpGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
+func (*MpGracefulRestartConfig) ProtoMessage() {}
+func (*MpGracefulRestartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
+
+func (m *MpGracefulRestartConfig) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+type MpGracefulRestartState struct {
+ Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
+ Received bool `protobuf:"varint,2,opt,name=received" json:"received,omitempty"`
+ Advertised bool `protobuf:"varint,3,opt,name=advertised" json:"advertised,omitempty"`
+ EndOfRibReceived bool `protobuf:"varint,4,opt,name=end_of_rib_received,json=endOfRibReceived" json:"end_of_rib_received,omitempty"`
+ EndOfRibSent bool `protobuf:"varint,5,opt,name=end_of_rib_sent,json=endOfRibSent" json:"end_of_rib_sent,omitempty"`
+}
+
+func (m *MpGracefulRestartState) Reset() { *m = MpGracefulRestartState{} }
+func (m *MpGracefulRestartState) String() string { return proto.CompactTextString(m) }
+func (*MpGracefulRestartState) ProtoMessage() {}
+func (*MpGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
+
+func (m *MpGracefulRestartState) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+func (m *MpGracefulRestartState) GetReceived() bool {
+ if m != nil {
+ return m.Received
+ }
+ return false
+}
+
+func (m *MpGracefulRestartState) GetAdvertised() bool {
+ if m != nil {
+ return m.Advertised
+ }
+ return false
+}
+
+func (m *MpGracefulRestartState) GetEndOfRibReceived() bool {
+ if m != nil {
+ return m.EndOfRibReceived
+ }
+ return false
+}
+
+func (m *MpGracefulRestartState) GetEndOfRibSent() bool {
+ if m != nil {
+ return m.EndOfRibSent
+ }
+ return false
+}
+
+type MpGracefulRestart struct {
+ Config *MpGracefulRestartConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *MpGracefulRestartState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
func (m *MpGracefulRestart) Reset() { *m = MpGracefulRestart{} }
func (m *MpGracefulRestart) String() string { return proto.CompactTextString(m) }
func (*MpGracefulRestart) ProtoMessage() {}
-func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{118} }
+func (*MpGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
-func (m *MpGracefulRestart) GetEnabled() bool {
+func (m *MpGracefulRestart) GetConfig() *MpGracefulRestartConfig {
if m != nil {
- return m.Enabled
+ return m.Config
}
- return false
+ return nil
+}
+
+func (m *MpGracefulRestart) GetState() *MpGracefulRestartState {
+ if m != nil {
+ return m.State
+ }
+ return nil
}
type AfiSafiConfig struct {
@@ -3392,7 +3480,7 @@ type AfiSafiConfig struct {
func (m *AfiSafiConfig) Reset() { *m = AfiSafiConfig{} }
func (m *AfiSafiConfig) String() string { return proto.CompactTextString(m) }
func (*AfiSafiConfig) ProtoMessage() {}
-func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{119} }
+func (*AfiSafiConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
func (m *AfiSafiConfig) GetFamily() uint32 {
if m != nil {
@@ -3408,7 +3496,47 @@ func (m *AfiSafiConfig) GetEnabled() bool {
return false
}
-type RouteSelectionOptions struct {
+type AfiSafiState struct {
+ Family uint32 `protobuf:"varint,1,opt,name=family" json:"family,omitempty"`
+ Enabled bool `protobuf:"varint,2,opt,name=enabled" json:"enabled,omitempty"`
+ TotalPaths uint32 `protobuf:"varint,3,opt,name=total_paths,json=totalPaths" json:"total_paths,omitempty"`
+ TotalPrefixes uint32 `protobuf:"varint,4,opt,name=total_prefixes,json=totalPrefixes" json:"total_prefixes,omitempty"`
+}
+
+func (m *AfiSafiState) Reset() { *m = AfiSafiState{} }
+func (m *AfiSafiState) String() string { return proto.CompactTextString(m) }
+func (*AfiSafiState) ProtoMessage() {}
+func (*AfiSafiState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
+
+func (m *AfiSafiState) GetFamily() uint32 {
+ if m != nil {
+ return m.Family
+ }
+ return 0
+}
+
+func (m *AfiSafiState) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+func (m *AfiSafiState) GetTotalPaths() uint32 {
+ if m != nil {
+ return m.TotalPaths
+ }
+ return 0
+}
+
+func (m *AfiSafiState) GetTotalPrefixes() uint32 {
+ if m != nil {
+ return m.TotalPrefixes
+ }
+ return 0
+}
+
+type RouteSelectionOptionsConfig struct {
AlwaysCompareMed bool `protobuf:"varint,1,opt,name=always_compare_med,json=alwaysCompareMed" json:"always_compare_med,omitempty"`
IgnoreAsPathLength bool `protobuf:"varint,2,opt,name=ignore_as_path_length,json=ignoreAsPathLength" json:"ignore_as_path_length,omitempty"`
ExternalCompareRouterId bool `protobuf:"varint,3,opt,name=external_compare_router_id,json=externalCompareRouterId" json:"external_compare_router_id,omitempty"`
@@ -3417,53 +3545,133 @@ type RouteSelectionOptions struct {
IgnoreNextHopIgpMetric bool `protobuf:"varint,6,opt,name=ignore_next_hop_igp_metric,json=ignoreNextHopIgpMetric" json:"ignore_next_hop_igp_metric,omitempty"`
}
-func (m *RouteSelectionOptions) Reset() { *m = RouteSelectionOptions{} }
-func (m *RouteSelectionOptions) String() string { return proto.CompactTextString(m) }
-func (*RouteSelectionOptions) ProtoMessage() {}
-func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{120} }
+func (m *RouteSelectionOptionsConfig) Reset() { *m = RouteSelectionOptionsConfig{} }
+func (m *RouteSelectionOptionsConfig) String() string { return proto.CompactTextString(m) }
+func (*RouteSelectionOptionsConfig) ProtoMessage() {}
+func (*RouteSelectionOptionsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
-func (m *RouteSelectionOptions) GetAlwaysCompareMed() bool {
+func (m *RouteSelectionOptionsConfig) GetAlwaysCompareMed() bool {
if m != nil {
return m.AlwaysCompareMed
}
return false
}
-func (m *RouteSelectionOptions) GetIgnoreAsPathLength() bool {
+func (m *RouteSelectionOptionsConfig) GetIgnoreAsPathLength() bool {
if m != nil {
return m.IgnoreAsPathLength
}
return false
}
-func (m *RouteSelectionOptions) GetExternalCompareRouterId() bool {
+func (m *RouteSelectionOptionsConfig) GetExternalCompareRouterId() bool {
if m != nil {
return m.ExternalCompareRouterId
}
return false
}
-func (m *RouteSelectionOptions) GetAdvertiseInactiveRoutes() bool {
+func (m *RouteSelectionOptionsConfig) GetAdvertiseInactiveRoutes() bool {
if m != nil {
return m.AdvertiseInactiveRoutes
}
return false
}
-func (m *RouteSelectionOptions) GetEnableAigp() bool {
+func (m *RouteSelectionOptionsConfig) GetEnableAigp() bool {
if m != nil {
return m.EnableAigp
}
return false
}
-func (m *RouteSelectionOptions) GetIgnoreNextHopIgpMetric() bool {
+func (m *RouteSelectionOptionsConfig) GetIgnoreNextHopIgpMetric() bool {
if m != nil {
return m.IgnoreNextHopIgpMetric
}
return false
}
+type RouteSelectionOptionsState struct {
+ AlwaysCompareMed bool `protobuf:"varint,1,opt,name=always_compare_med,json=alwaysCompareMed" json:"always_compare_med,omitempty"`
+ IgnoreAsPathLength bool `protobuf:"varint,2,opt,name=ignore_as_path_length,json=ignoreAsPathLength" json:"ignore_as_path_length,omitempty"`
+ ExternalCompareRouterId bool `protobuf:"varint,3,opt,name=external_compare_router_id,json=externalCompareRouterId" json:"external_compare_router_id,omitempty"`
+ AdvertiseInactiveRoutes bool `protobuf:"varint,4,opt,name=advertise_inactive_routes,json=advertiseInactiveRoutes" json:"advertise_inactive_routes,omitempty"`
+ EnableAigp bool `protobuf:"varint,5,opt,name=enable_aigp,json=enableAigp" json:"enable_aigp,omitempty"`
+ IgnoreNextHopIgpMetric bool `protobuf:"varint,6,opt,name=ignore_next_hop_igp_metric,json=ignoreNextHopIgpMetric" json:"ignore_next_hop_igp_metric,omitempty"`
+}
+
+func (m *RouteSelectionOptionsState) Reset() { *m = RouteSelectionOptionsState{} }
+func (m *RouteSelectionOptionsState) String() string { return proto.CompactTextString(m) }
+func (*RouteSelectionOptionsState) ProtoMessage() {}
+func (*RouteSelectionOptionsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
+
+func (m *RouteSelectionOptionsState) GetAlwaysCompareMed() bool {
+ if m != nil {
+ return m.AlwaysCompareMed
+ }
+ return false
+}
+
+func (m *RouteSelectionOptionsState) GetIgnoreAsPathLength() bool {
+ if m != nil {
+ return m.IgnoreAsPathLength
+ }
+ return false
+}
+
+func (m *RouteSelectionOptionsState) GetExternalCompareRouterId() bool {
+ if m != nil {
+ return m.ExternalCompareRouterId
+ }
+ return false
+}
+
+func (m *RouteSelectionOptionsState) GetAdvertiseInactiveRoutes() bool {
+ if m != nil {
+ return m.AdvertiseInactiveRoutes
+ }
+ return false
+}
+
+func (m *RouteSelectionOptionsState) GetEnableAigp() bool {
+ if m != nil {
+ return m.EnableAigp
+ }
+ return false
+}
+
+func (m *RouteSelectionOptionsState) GetIgnoreNextHopIgpMetric() bool {
+ if m != nil {
+ return m.IgnoreNextHopIgpMetric
+ }
+ return false
+}
+
+type RouteSelectionOptions struct {
+ Config *RouteSelectionOptionsConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *RouteSelectionOptionsState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
+func (m *RouteSelectionOptions) Reset() { *m = RouteSelectionOptions{} }
+func (m *RouteSelectionOptions) String() string { return proto.CompactTextString(m) }
+func (*RouteSelectionOptions) ProtoMessage() {}
+func (*RouteSelectionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
+
+func (m *RouteSelectionOptions) GetConfig() *RouteSelectionOptionsConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *RouteSelectionOptions) GetState() *RouteSelectionOptionsState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
type UseMultiplePathsConfig struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
}
@@ -3471,7 +3679,7 @@ type UseMultiplePathsConfig struct {
func (m *UseMultiplePathsConfig) Reset() { *m = UseMultiplePathsConfig{} }
func (m *UseMultiplePathsConfig) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePathsConfig) ProtoMessage() {}
-func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{121} }
+func (*UseMultiplePathsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
func (m *UseMultiplePathsConfig) GetEnabled() bool {
if m != nil {
@@ -3480,56 +3688,161 @@ func (m *UseMultiplePathsConfig) GetEnabled() bool {
return false
}
-type Ebgp struct {
+type UseMultiplePathsState struct {
+ Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
+}
+
+func (m *UseMultiplePathsState) Reset() { *m = UseMultiplePathsState{} }
+func (m *UseMultiplePathsState) String() string { return proto.CompactTextString(m) }
+func (*UseMultiplePathsState) ProtoMessage() {}
+func (*UseMultiplePathsState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
+
+func (m *UseMultiplePathsState) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+type EbgpConfig struct {
+ AllowMultipleAs bool `protobuf:"varint,1,opt,name=allow_multiple_as,json=allowMultipleAs" json:"allow_multiple_as,omitempty"`
+ MaximumPaths uint32 `protobuf:"varint,2,opt,name=maximum_paths,json=maximumPaths" json:"maximum_paths,omitempty"`
+}
+
+func (m *EbgpConfig) Reset() { *m = EbgpConfig{} }
+func (m *EbgpConfig) String() string { return proto.CompactTextString(m) }
+func (*EbgpConfig) ProtoMessage() {}
+func (*EbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{128} }
+
+func (m *EbgpConfig) GetAllowMultipleAs() bool {
+ if m != nil {
+ return m.AllowMultipleAs
+ }
+ return false
+}
+
+func (m *EbgpConfig) GetMaximumPaths() uint32 {
+ if m != nil {
+ return m.MaximumPaths
+ }
+ return 0
+}
+
+type EbgpState struct {
AllowMultipleAs bool `protobuf:"varint,1,opt,name=allow_multiple_as,json=allowMultipleAs" json:"allow_multiple_as,omitempty"`
MaximumPaths uint32 `protobuf:"varint,2,opt,name=maximum_paths,json=maximumPaths" json:"maximum_paths,omitempty"`
}
+func (m *EbgpState) Reset() { *m = EbgpState{} }
+func (m *EbgpState) String() string { return proto.CompactTextString(m) }
+func (*EbgpState) ProtoMessage() {}
+func (*EbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{129} }
+
+func (m *EbgpState) GetAllowMultipleAs() bool {
+ if m != nil {
+ return m.AllowMultipleAs
+ }
+ return false
+}
+
+func (m *EbgpState) GetMaximumPaths() uint32 {
+ if m != nil {
+ return m.MaximumPaths
+ }
+ return 0
+}
+
+type Ebgp struct {
+ Config *EbgpConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *EbgpState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
func (m *Ebgp) Reset() { *m = Ebgp{} }
func (m *Ebgp) String() string { return proto.CompactTextString(m) }
func (*Ebgp) ProtoMessage() {}
-func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{122} }
+func (*Ebgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{130} }
-func (m *Ebgp) GetAllowMultipleAs() bool {
+func (m *Ebgp) GetConfig() *EbgpConfig {
if m != nil {
- return m.AllowMultipleAs
+ return m.Config
}
- return false
+ return nil
}
-func (m *Ebgp) GetMaximumPaths() uint32 {
+func (m *Ebgp) GetState() *EbgpState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
+type IbgpConfig struct {
+ MaximumPaths uint32 `protobuf:"varint,1,opt,name=maximum_paths,json=maximumPaths" json:"maximum_paths,omitempty"`
+}
+
+func (m *IbgpConfig) Reset() { *m = IbgpConfig{} }
+func (m *IbgpConfig) String() string { return proto.CompactTextString(m) }
+func (*IbgpConfig) ProtoMessage() {}
+func (*IbgpConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{131} }
+
+func (m *IbgpConfig) GetMaximumPaths() uint32 {
if m != nil {
return m.MaximumPaths
}
return 0
}
-type Ibgp struct {
+type IbgpState struct {
MaximumPaths uint32 `protobuf:"varint,1,opt,name=maximum_paths,json=maximumPaths" json:"maximum_paths,omitempty"`
}
+func (m *IbgpState) Reset() { *m = IbgpState{} }
+func (m *IbgpState) String() string { return proto.CompactTextString(m) }
+func (*IbgpState) ProtoMessage() {}
+func (*IbgpState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{132} }
+
+func (m *IbgpState) GetMaximumPaths() uint32 {
+ if m != nil {
+ return m.MaximumPaths
+ }
+ return 0
+}
+
+type Ibgp struct {
+ Config *IbgpConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *IbgpState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
func (m *Ibgp) Reset() { *m = Ibgp{} }
func (m *Ibgp) String() string { return proto.CompactTextString(m) }
func (*Ibgp) ProtoMessage() {}
-func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{123} }
+func (*Ibgp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{133} }
-func (m *Ibgp) GetMaximumPaths() uint32 {
+func (m *Ibgp) GetConfig() *IbgpConfig {
if m != nil {
- return m.MaximumPaths
+ return m.Config
}
- return 0
+ return nil
+}
+
+func (m *Ibgp) GetState() *IbgpState {
+ if m != nil {
+ return m.State
+ }
+ return nil
}
type UseMultiplePaths struct {
Config *UseMultiplePathsConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
- Ebgp *Ebgp `protobuf:"bytes,2,opt,name=ebgp" json:"ebgp,omitempty"`
- Ibgp *Ibgp `protobuf:"bytes,3,opt,name=ibgp" json:"ibgp,omitempty"`
+ State *UseMultiplePathsState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+ Ebgp *Ebgp `protobuf:"bytes,3,opt,name=ebgp" json:"ebgp,omitempty"`
+ Ibgp *Ibgp `protobuf:"bytes,4,opt,name=ibgp" json:"ibgp,omitempty"`
}
func (m *UseMultiplePaths) Reset() { *m = UseMultiplePaths{} }
func (m *UseMultiplePaths) String() string { return proto.CompactTextString(m) }
func (*UseMultiplePaths) ProtoMessage() {}
-func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{124} }
+func (*UseMultiplePaths) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{134} }
func (m *UseMultiplePaths) GetConfig() *UseMultiplePathsConfig {
if m != nil {
@@ -3538,6 +3851,13 @@ func (m *UseMultiplePaths) GetConfig() *UseMultiplePathsConfig {
return nil
}
+func (m *UseMultiplePaths) GetState() *UseMultiplePathsState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
func (m *UseMultiplePaths) GetEbgp() *Ebgp {
if m != nil {
return m.Ebgp
@@ -3552,46 +3872,160 @@ func (m *UseMultiplePaths) GetIbgp() *Ibgp {
return nil
}
-type RouteTargetMembership struct {
+type RouteTargetMembershipConfig struct {
+ DeferralTime uint32 `protobuf:"varint,1,opt,name=deferral_time,json=deferralTime" json:"deferral_time,omitempty"`
+}
+
+func (m *RouteTargetMembershipConfig) Reset() { *m = RouteTargetMembershipConfig{} }
+func (m *RouteTargetMembershipConfig) String() string { return proto.CompactTextString(m) }
+func (*RouteTargetMembershipConfig) ProtoMessage() {}
+func (*RouteTargetMembershipConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{135} }
+
+func (m *RouteTargetMembershipConfig) GetDeferralTime() uint32 {
+ if m != nil {
+ return m.DeferralTime
+ }
+ return 0
+}
+
+type RouteTargetMembershipState struct {
DeferralTime uint32 `protobuf:"varint,1,opt,name=deferral_time,json=deferralTime" json:"deferral_time,omitempty"`
}
+func (m *RouteTargetMembershipState) Reset() { *m = RouteTargetMembershipState{} }
+func (m *RouteTargetMembershipState) String() string { return proto.CompactTextString(m) }
+func (*RouteTargetMembershipState) ProtoMessage() {}
+func (*RouteTargetMembershipState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
+
+func (m *RouteTargetMembershipState) GetDeferralTime() uint32 {
+ if m != nil {
+ return m.DeferralTime
+ }
+ return 0
+}
+
+type RouteTargetMembership struct {
+ Config *RouteTargetMembershipConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *RouteTargetMembershipState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
func (m *RouteTargetMembership) Reset() { *m = RouteTargetMembership{} }
func (m *RouteTargetMembership) String() string { return proto.CompactTextString(m) }
func (*RouteTargetMembership) ProtoMessage() {}
-func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{125} }
+func (*RouteTargetMembership) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
-func (m *RouteTargetMembership) GetDeferralTime() uint32 {
+func (m *RouteTargetMembership) GetConfig() *RouteTargetMembershipConfig {
if m != nil {
- return m.DeferralTime
+ return m.Config
}
- return 0
+ return nil
}
-type LongLivedGracefulRestart struct {
+func (m *RouteTargetMembership) GetState() *RouteTargetMembershipState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
+type LongLivedGracefulRestartConfig struct {
Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
RestartTime uint32 `protobuf:"varint,2,opt,name=restart_time,json=restartTime" json:"restart_time,omitempty"`
}
-func (m *LongLivedGracefulRestart) Reset() { *m = LongLivedGracefulRestart{} }
-func (m *LongLivedGracefulRestart) String() string { return proto.CompactTextString(m) }
-func (*LongLivedGracefulRestart) ProtoMessage() {}
-func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{126} }
+func (m *LongLivedGracefulRestartConfig) Reset() { *m = LongLivedGracefulRestartConfig{} }
+func (m *LongLivedGracefulRestartConfig) String() string { return proto.CompactTextString(m) }
+func (*LongLivedGracefulRestartConfig) ProtoMessage() {}
+func (*LongLivedGracefulRestartConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{138}
+}
-func (m *LongLivedGracefulRestart) GetEnabled() bool {
+func (m *LongLivedGracefulRestartConfig) GetEnabled() bool {
if m != nil {
return m.Enabled
}
return false
}
-func (m *LongLivedGracefulRestart) GetRestartTime() uint32 {
+func (m *LongLivedGracefulRestartConfig) GetRestartTime() uint32 {
if m != nil {
return m.RestartTime
}
return 0
}
+type LongLivedGracefulRestartState struct {
+ Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"`
+ Received bool `protobuf:"varint,2,opt,name=received" json:"received,omitempty"`
+ Advertised bool `protobuf:"varint,3,opt,name=advertised" json:"advertised,omitempty"`
+ PeerRestartTime uint32 `protobuf:"varint,4,opt,name=peer_restart_time,json=peerRestartTime" json:"peer_restart_time,omitempty"`
+ PeerRestartTimerExpired bool `protobuf:"varint,5,opt,name=peer_restart_timer_expired,json=peerRestartTimerExpired" json:"peer_restart_timer_expired,omitempty"`
+}
+
+func (m *LongLivedGracefulRestartState) Reset() { *m = LongLivedGracefulRestartState{} }
+func (m *LongLivedGracefulRestartState) String() string { return proto.CompactTextString(m) }
+func (*LongLivedGracefulRestartState) ProtoMessage() {}
+func (*LongLivedGracefulRestartState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{139} }
+
+func (m *LongLivedGracefulRestartState) GetEnabled() bool {
+ if m != nil {
+ return m.Enabled
+ }
+ return false
+}
+
+func (m *LongLivedGracefulRestartState) GetReceived() bool {
+ if m != nil {
+ return m.Received
+ }
+ return false
+}
+
+func (m *LongLivedGracefulRestartState) GetAdvertised() bool {
+ if m != nil {
+ return m.Advertised
+ }
+ return false
+}
+
+func (m *LongLivedGracefulRestartState) GetPeerRestartTime() uint32 {
+ if m != nil {
+ return m.PeerRestartTime
+ }
+ return 0
+}
+
+func (m *LongLivedGracefulRestartState) GetPeerRestartTimerExpired() bool {
+ if m != nil {
+ return m.PeerRestartTimerExpired
+ }
+ return false
+}
+
+type LongLivedGracefulRestart struct {
+ Config *LongLivedGracefulRestartConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+ State *LongLivedGracefulRestartState `protobuf:"bytes,2,opt,name=state" json:"state,omitempty"`
+}
+
+func (m *LongLivedGracefulRestart) Reset() { *m = LongLivedGracefulRestart{} }
+func (m *LongLivedGracefulRestart) String() string { return proto.CompactTextString(m) }
+func (*LongLivedGracefulRestart) ProtoMessage() {}
+func (*LongLivedGracefulRestart) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{140} }
+
+func (m *LongLivedGracefulRestart) GetConfig() *LongLivedGracefulRestartConfig {
+ if m != nil {
+ return m.Config
+ }
+ return nil
+}
+
+func (m *LongLivedGracefulRestart) GetState() *LongLivedGracefulRestartState {
+ if m != nil {
+ return m.State
+ }
+ return nil
+}
+
type AfiSafi struct {
MpGracefulRestart *MpGracefulRestart `protobuf:"bytes,1,opt,name=mp_graceful_restart,json=mpGracefulRestart" json:"mp_graceful_restart,omitempty"`
Config *AfiSafiConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"`
@@ -3618,7 +4052,7 @@ type AfiSafi struct {
func (m *AfiSafi) Reset() { *m = AfiSafi{} }
func (m *AfiSafi) String() string { return proto.CompactTextString(m) }
func (*AfiSafi) ProtoMessage() {}
-func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{127} }
+func (*AfiSafi) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{141} }
func (m *AfiSafi) GetMpGracefulRestart() *MpGracefulRestart {
if m != nil {
@@ -3685,7 +4119,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{128} }
+func (*Prefix) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{142} }
func (m *Prefix) GetIpPrefix() string {
if m != nil {
@@ -3718,7 +4152,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{129} }
+func (*DefinedSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{143} }
func (m *DefinedSet) GetType() DefinedType {
if m != nil {
@@ -3756,7 +4190,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{130} }
+func (*MatchSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{144} }
func (m *MatchSet) GetType() MatchType {
if m != nil {
@@ -3780,7 +4214,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{131} }
+func (*AsPathLength) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{145} }
func (m *AsPathLength) GetType() AsPathLengthType {
if m != nil {
@@ -3811,7 +4245,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{132} }
+func (*Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{146} }
func (m *Conditions) GetPrefixSet() *MatchSet {
if m != nil {
@@ -3884,7 +4318,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{133} }
+func (*CommunityAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{147} }
func (m *CommunityAction) GetType() CommunityActionType {
if m != nil {
@@ -3908,7 +4342,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{134} }
+func (*MedAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{148} }
func (m *MedAction) GetType() MedActionType {
if m != nil {
@@ -3933,7 +4367,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{135} }
+func (*AsPrependAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{149} }
func (m *AsPrependAction) GetAsn() uint32 {
if m != nil {
@@ -3964,7 +4398,7 @@ type NexthopAction struct {
func (m *NexthopAction) Reset() { *m = NexthopAction{} }
func (m *NexthopAction) String() string { return proto.CompactTextString(m) }
func (*NexthopAction) ProtoMessage() {}
-func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{136} }
+func (*NexthopAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{150} }
func (m *NexthopAction) GetAddress() string {
if m != nil {
@@ -3987,7 +4421,7 @@ type LocalPrefAction struct {
func (m *LocalPrefAction) Reset() { *m = LocalPrefAction{} }
func (m *LocalPrefAction) String() string { return proto.CompactTextString(m) }
func (*LocalPrefAction) ProtoMessage() {}
-func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{137} }
+func (*LocalPrefAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{151} }
func (m *LocalPrefAction) GetValue() uint32 {
if m != nil {
@@ -4010,7 +4444,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{138} }
+func (*Actions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{152} }
func (m *Actions) GetRouteAction() RouteAction {
if m != nil {
@@ -4077,7 +4511,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{139} }
+func (*Statement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{153} }
func (m *Statement) GetName() string {
if m != nil {
@@ -4108,7 +4542,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{140} }
+func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{154} }
func (m *Policy) GetName() string {
if m != nil {
@@ -4135,7 +4569,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{141} }
+func (*PolicyAssignment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{155} }
func (m *PolicyAssignment) GetType() PolicyType {
if m != nil {
@@ -4183,7 +4617,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{142} }
+func (*Roa) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{156} }
func (m *Roa) GetAs() uint32 {
if m != nil {
@@ -4227,7 +4661,7 @@ type GetRoaRequest struct {
func (m *GetRoaRequest) Reset() { *m = GetRoaRequest{} }
func (m *GetRoaRequest) String() string { return proto.CompactTextString(m) }
func (*GetRoaRequest) ProtoMessage() {}
-func (*GetRoaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{143} }
+func (*GetRoaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{157} }
func (m *GetRoaRequest) GetFamily() uint32 {
if m != nil {
@@ -4243,7 +4677,7 @@ type GetRoaResponse struct {
func (m *GetRoaResponse) Reset() { *m = GetRoaResponse{} }
func (m *GetRoaResponse) String() string { return proto.CompactTextString(m) }
func (*GetRoaResponse) ProtoMessage() {}
-func (*GetRoaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{144} }
+func (*GetRoaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{158} }
func (m *GetRoaResponse) GetRoas() []*Roa {
if m != nil {
@@ -4263,7 +4697,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{145} }
+func (*Vrf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{159} }
func (m *Vrf) GetName() string {
if m != nil {
@@ -4312,7 +4746,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{146} }
+func (*Global) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{160} }
func (m *Global) GetAs() uint32 {
if m != nil {
@@ -4368,7 +4802,7 @@ type TableInfo struct {
func (m *TableInfo) Reset() { *m = TableInfo{} }
func (m *TableInfo) String() string { return proto.CompactTextString(m) }
func (*TableInfo) ProtoMessage() {}
-func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{147} }
+func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{161} }
func (m *TableInfo) GetType() Resource {
if m != nil {
@@ -4419,7 +4853,7 @@ type GetRibInfoRequest struct {
func (m *GetRibInfoRequest) Reset() { *m = GetRibInfoRequest{} }
func (m *GetRibInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetRibInfoRequest) ProtoMessage() {}
-func (*GetRibInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{148} }
+func (*GetRibInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{162} }
func (m *GetRibInfoRequest) GetInfo() *TableInfo {
if m != nil {
@@ -4435,7 +4869,7 @@ type GetRibInfoResponse struct {
func (m *GetRibInfoResponse) Reset() { *m = GetRibInfoResponse{} }
func (m *GetRibInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetRibInfoResponse) ProtoMessage() {}
-func (*GetRibInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{149} }
+func (*GetRibInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{163} }
func (m *GetRibInfoResponse) GetInfo() *TableInfo {
if m != nil {
@@ -4563,14 +4997,28 @@ func init() {
proto.RegisterType((*Transport)(nil), "gobgpapi.Transport")
proto.RegisterType((*RouteServer)(nil), "gobgpapi.RouteServer")
proto.RegisterType((*GracefulRestart)(nil), "gobgpapi.GracefulRestart")
+ proto.RegisterType((*MpGracefulRestartConfig)(nil), "gobgpapi.MpGracefulRestartConfig")
+ proto.RegisterType((*MpGracefulRestartState)(nil), "gobgpapi.MpGracefulRestartState")
proto.RegisterType((*MpGracefulRestart)(nil), "gobgpapi.MpGracefulRestart")
proto.RegisterType((*AfiSafiConfig)(nil), "gobgpapi.AfiSafiConfig")
+ proto.RegisterType((*AfiSafiState)(nil), "gobgpapi.AfiSafiState")
+ proto.RegisterType((*RouteSelectionOptionsConfig)(nil), "gobgpapi.RouteSelectionOptionsConfig")
+ proto.RegisterType((*RouteSelectionOptionsState)(nil), "gobgpapi.RouteSelectionOptionsState")
proto.RegisterType((*RouteSelectionOptions)(nil), "gobgpapi.RouteSelectionOptions")
proto.RegisterType((*UseMultiplePathsConfig)(nil), "gobgpapi.UseMultiplePathsConfig")
+ proto.RegisterType((*UseMultiplePathsState)(nil), "gobgpapi.UseMultiplePathsState")
+ proto.RegisterType((*EbgpConfig)(nil), "gobgpapi.EbgpConfig")
+ proto.RegisterType((*EbgpState)(nil), "gobgpapi.EbgpState")
proto.RegisterType((*Ebgp)(nil), "gobgpapi.Ebgp")
+ proto.RegisterType((*IbgpConfig)(nil), "gobgpapi.IbgpConfig")
+ proto.RegisterType((*IbgpState)(nil), "gobgpapi.IbgpState")
proto.RegisterType((*Ibgp)(nil), "gobgpapi.Ibgp")
proto.RegisterType((*UseMultiplePaths)(nil), "gobgpapi.UseMultiplePaths")
+ proto.RegisterType((*RouteTargetMembershipConfig)(nil), "gobgpapi.RouteTargetMembershipConfig")
+ proto.RegisterType((*RouteTargetMembershipState)(nil), "gobgpapi.RouteTargetMembershipState")
proto.RegisterType((*RouteTargetMembership)(nil), "gobgpapi.RouteTargetMembership")
+ proto.RegisterType((*LongLivedGracefulRestartConfig)(nil), "gobgpapi.LongLivedGracefulRestartConfig")
+ proto.RegisterType((*LongLivedGracefulRestartState)(nil), "gobgpapi.LongLivedGracefulRestartState")
proto.RegisterType((*LongLivedGracefulRestart)(nil), "gobgpapi.LongLivedGracefulRestart")
proto.RegisterType((*AfiSafi)(nil), "gobgpapi.AfiSafi")
proto.RegisterType((*Prefix)(nil), "gobgpapi.Prefix")
@@ -6424,405 +6872,428 @@ var _GobgpApi_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("gobgp.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
- // 6389 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x7c, 0x4b, 0x93, 0x1b, 0x47,
- 0x72, 0xf0, 0xe0, 0x31, 0x18, 0x20, 0xf1, 0x9c, 0x9a, 0x17, 0x88, 0xe1, 0xb3, 0x77, 0x29, 0x52,
- 0x94, 0x34, 0x12, 0x29, 0x2d, 0xa5, 0x4f, 0xaf, 0x5d, 0x70, 0x06, 0x1c, 0x62, 0x35, 0x0f, 0xa8,
- 0x06, 0xa4, 0x28, 0x7d, 0xb6, 0xdb, 0x3d, 0xe8, 0x02, 0xa6, 0xad, 0x46, 0x77, 0xab, 0xbb, 0x31,
- 0x9c, 0x09, 0x47, 0xd8, 0x11, 0xeb, 0xa3, 0xc3, 0x37, 0x1f, 0x1d, 0xe1, 0xfb, 0x86, 0x7d, 0xf0,
- 0xc9, 0x11, 0xbe, 0xaf, 0xc3, 0x11, 0x1b, 0xb1, 0xbf, 0xc0, 0x61, 0x1f, 0xfc, 0x03, 0x7c, 0xf1,
- 0xc1, 0x07, 0x1f, 0x1c, 0xf5, 0xe8, 0xee, 0xea, 0x07, 0x86, 0x43, 0x2e, 0xd7, 0x0e, 0x9f, 0x80,
- 0xca, 0xcc, 0xca, 0x7a, 0x65, 0x66, 0x65, 0x65, 0x55, 0x36, 0x54, 0x27, 0xf6, 0xf1, 0xc4, 0xd9,
- 0x72, 0x5c, 0xdb, 0xb7, 0x51, 0x99, 0x15, 0x34, 0xc7, 0x50, 0xbe, 0x03, 0xb4, 0x4b, 0xfc, 0x03,
- 0x62, 0x4c, 0x4e, 0x8e, 0x6d, 0x17, 0x93, 0x1f, 0x66, 0xc4, 0xf3, 0xd1, 0x3d, 0x68, 0x11, 0x4b,
- 0x3b, 0x36, 0x49, 0x57, 0x3f, 0x25, 0xae, 0x6f, 0x78, 0x44, 0x6f, 0xe7, 0x6e, 0xe6, 0xee, 0x96,
- 0x71, 0x0a, 0x8e, 0xda, 0xb0, 0xa4, 0xe9, 0xba, 0x4b, 0x3c, 0xaf, 0x9d, 0xbf, 0x99, 0xbb, 0x5b,
- 0xc1, 0x41, 0x51, 0xf9, 0x0c, 0x56, 0x62, 0xbc, 0x3d, 0xc7, 0xb6, 0x3c, 0x82, 0x7e, 0x0c, 0x8b,
- 0x0e, 0x21, 0xae, 0xd7, 0xce, 0xdd, 0x2c, 0xdc, 0xad, 0x3e, 0x68, 0x6c, 0x05, 0x9d, 0xd9, 0x1a,
- 0x10, 0xe2, 0x62, 0x8e, 0x54, 0x26, 0x50, 0xe9, 0xba, 0x93, 0xd9, 0x94, 0x58, 0xbe, 0x87, 0xb6,
- 0xa0, 0xec, 0x12, 0xcf, 0x9e, 0xb9, 0x23, 0xc2, 0xfa, 0xd1, 0x78, 0x80, 0xa2, 0x5a, 0x58, 0x60,
- 0x70, 0x48, 0x83, 0xd6, 0xa1, 0x34, 0xd6, 0xa6, 0x86, 0x79, 0xce, 0xba, 0x54, 0xc7, 0xa2, 0x84,
- 0x10, 0x14, 0x2d, 0x6d, 0x4a, 0xda, 0x05, 0xd6, 0x51, 0xf6, 0x5f, 0xf9, 0x63, 0x68, 0x74, 0x75,
- 0x7d, 0xa0, 0xf9, 0x27, 0xc1, 0xe8, 0x5f, 0xb5, 0xb5, 0x35, 0x28, 0x9d, 0xba, 0x63, 0xd5, 0xd0,
- 0xc5, 0x04, 0x2c, 0x9e, 0xba, 0xe3, 0xbe, 0x8e, 0x14, 0x28, 0x3a, 0x9a, 0x7f, 0xc2, 0x1a, 0x8b,
- 0x0f, 0x93, 0xb6, 0xc5, 0x70, 0xca, 0x6d, 0x68, 0x86, 0x8d, 0x8b, 0xe9, 0x41, 0x50, 0x9c, 0xcd,
- 0x0c, 0x3e, 0xdf, 0x35, 0xcc, 0xfe, 0x2b, 0xbf, 0xcc, 0xc1, 0xf2, 0x0e, 0x31, 0x89, 0x4f, 0x7e,
- 0x07, 0xfd, 0x8c, 0x26, 0xab, 0x10, 0x9b, 0xac, 0xa0, 0xff, 0xc5, 0xf9, 0xfd, 0x0f, 0x3b, 0xbb,
- 0x28, 0x75, 0x76, 0x15, 0x90, 0xdc, 0x57, 0x3e, 0x2c, 0xe5, 0x13, 0x40, 0x5d, 0x5d, 0x4f, 0x0a,
- 0x1a, 0x6d, 0x83, 0x10, 0x97, 0x75, 0x3f, 0x2d, 0x0a, 0x0c, 0xa7, 0xac, 0xc1, 0x4a, 0xac, 0xa6,
- 0x60, 0xf8, 0x19, 0xac, 0xf1, 0x66, 0x5e, 0x87, 0x67, 0x1b, 0xd6, 0x93, 0x95, 0x05, 0xdb, 0x67,
- 0xb0, 0x8a, 0x89, 0x97, 0x56, 0x09, 0x49, 0xcc, 0x73, 0x31, 0x31, 0x47, 0x3f, 0x86, 0xfa, 0xc8,
- 0x9e, 0x4e, 0x67, 0x96, 0x31, 0xd2, 0x7c, 0xc3, 0xb6, 0xc4, 0xec, 0xc6, 0x81, 0xca, 0x06, 0xac,
- 0x25, 0xf8, 0x8a, 0x06, 0xff, 0x21, 0x07, 0xed, 0x23, 0x7b, 0xec, 0xbf, 0x62, 0xab, 0x47, 0x50,
- 0xd1, 0x0d, 0x97, 0x8c, 0xc2, 0x16, 0x1b, 0x0f, 0x7e, 0x12, 0x0d, 0x75, 0x1e, 0xc3, 0x08, 0xb1,
- 0x13, 0x54, 0xc6, 0x11, 0x1f, 0xe5, 0x7d, 0x40, 0x69, 0x02, 0x54, 0x82, 0x7c, 0xff, 0xa0, 0xb5,
- 0x80, 0x96, 0xa0, 0x70, 0xf8, 0x74, 0xd8, 0xca, 0xa1, 0x32, 0x14, 0x1f, 0x1d, 0x0e, 0x9f, 0xb4,
- 0xf2, 0xca, 0x26, 0x5c, 0xc9, 0x68, 0x4a, 0x8c, 0xec, 0x5b, 0xd8, 0x38, 0x3a, 0x99, 0xf9, 0xba,
- 0xfd, 0xc2, 0x7a, 0xd3, 0xb3, 0xd9, 0x81, 0x76, 0x9a, 0xb5, 0x68, 0xf6, 0x3e, 0xac, 0xf5, 0x98,
- 0x91, 0xba, 0x74, 0xa3, 0x54, 0x1c, 0x92, 0x55, 0x04, 0xb3, 0xe7, 0xb0, 0xbe, 0x63, 0x78, 0xaf,
- 0xc4, 0xed, 0x92, 0x43, 0xb8, 0x02, 0x1b, 0x29, 0xce, 0xa2, 0xd1, 0x09, 0xb4, 0x78, 0x77, 0xf6,
- 0x5d, 0x3f, 0x68, 0x6e, 0x13, 0x2a, 0xfa, 0x6c, 0xea, 0xa8, 0xfe, 0xb9, 0xc3, 0xb5, 0x7d, 0x11,
- 0x97, 0x29, 0x60, 0x78, 0xee, 0x10, 0xd4, 0x81, 0xf2, 0xd8, 0x30, 0x09, 0xb3, 0x6d, 0xbc, 0xb1,
- 0xb0, 0x4c, 0x71, 0x86, 0xe5, 0x13, 0xf7, 0x54, 0x33, 0x99, 0x82, 0x17, 0x71, 0x58, 0x56, 0x56,
- 0x60, 0x59, 0x6a, 0x48, 0xb4, 0xbe, 0x02, 0xcb, 0xa2, 0x63, 0x51, 0xf3, 0x4c, 0xa9, 0x25, 0xa0,
- 0x20, 0xfd, 0x53, 0x68, 0xf5, 0xad, 0x3f, 0x22, 0x23, 0x5f, 0xea, 0xe8, 0x1b, 0xb2, 0x4a, 0x74,
- 0x97, 0xd0, 0xfc, 0x13, 0xaf, 0x5d, 0x48, 0xed, 0x12, 0xd4, 0xac, 0x70, 0x24, 0xed, 0xab, 0xd4,
- 0x01, 0xd1, 0xab, 0xbf, 0xc9, 0x41, 0xbd, 0xab, 0xeb, 0x8f, 0xa6, 0xce, 0xcb, 0xd7, 0x0a, 0x41,
- 0xd1, 0xb1, 0x5d, 0x5f, 0xec, 0x13, 0xec, 0x3f, 0xfa, 0x1c, 0x8a, 0x6c, 0x96, 0x0b, 0xac, 0xf7,
- 0x77, 0xa3, 0x96, 0x63, 0x4c, 0xb7, 0xf6, 0x6d, 0xcb, 0xf0, 0x6d, 0xd7, 0xb0, 0x26, 0x03, 0xdb,
- 0x34, 0x46, 0xe7, 0x98, 0xd5, 0x52, 0xde, 0x87, 0x56, 0x12, 0x43, 0x35, 0x67, 0x80, 0x7b, 0xad,
- 0x05, 0xaa, 0x39, 0x83, 0xc3, 0xa3, 0xb8, 0x0e, 0xb5, 0xd8, 0x06, 0xc4, 0x18, 0x8b, 0x01, 0xfc,
- 0x0c, 0x5a, 0xdc, 0x3a, 0xbd, 0xee, 0x10, 0xd8, 0x1a, 0x46, 0x1c, 0x04, 0xdb, 0x21, 0x2c, 0x8b,
- 0x9e, 0x61, 0xe3, 0x38, 0xe0, 0x7b, 0x1b, 0x16, 0x7d, 0xba, 0xac, 0xc2, 0x5c, 0x36, 0xa3, 0xd1,
- 0x0e, 0x29, 0x18, 0x73, 0x2c, 0x6d, 0x7e, 0x34, 0x73, 0x5d, 0x62, 0xf1, 0x76, 0xca, 0x38, 0x28,
- 0x2a, 0x3d, 0x28, 0xe3, 0xc1, 0x57, 0xfd, 0x6d, 0xdb, 0x1a, 0x5f, 0xd0, 0xc9, 0x1b, 0x50, 0x75,
- 0xc9, 0xd4, 0xf6, 0x89, 0x1a, 0xf6, 0xb5, 0x82, 0x81, 0x83, 0x06, 0xb4, 0xc7, 0x7f, 0x55, 0x84,
- 0x0a, 0xe5, 0x73, 0xe4, 0x6b, 0x3e, 0xdb, 0xc0, 0x67, 0x8e, 0x6f, 0x4c, 0x79, 0xb7, 0x0a, 0x58,
- 0x94, 0xa8, 0x30, 0x53, 0x9d, 0x67, 0x98, 0x3c, 0xc3, 0x84, 0x65, 0xd4, 0x80, 0xfc, 0xcc, 0x61,
- 0x8b, 0x56, 0xc6, 0xf9, 0x99, 0xc3, 0x9b, 0x1c, 0xd9, 0xae, 0xae, 0x1a, 0xce, 0xe9, 0x47, 0x6c,
- 0x1b, 0xab, 0xd3, 0x26, 0x29, 0xa8, 0xef, 0x9c, 0x7e, 0x14, 0x27, 0x78, 0xc8, 0xf6, 0x30, 0x99,
- 0xe0, 0x21, 0x25, 0x70, 0x5c, 0x32, 0x36, 0xce, 0x38, 0x87, 0x12, 0x27, 0xe0, 0xa0, 0x80, 0x43,
- 0x44, 0xf0, 0xb0, 0xbd, 0x94, 0x20, 0x78, 0x48, 0xc7, 0xe1, 0x11, 0xd7, 0xd0, 0xcc, 0x76, 0x99,
- 0xef, 0xad, 0xbc, 0x84, 0x7e, 0x04, 0x75, 0x97, 0x8c, 0x88, 0x71, 0x4a, 0x44, 0xef, 0x2a, 0x6c,
- 0x30, 0xb5, 0x00, 0xc8, 0xb8, 0x27, 0x88, 0x1e, 0xb6, 0x21, 0x45, 0xf4, 0x90, 0x12, 0x71, 0x9e,
- 0xaa, 0x65, 0xfb, 0xc6, 0xf8, 0xbc, 0x5d, 0xe5, 0x44, 0x1c, 0x78, 0xc0, 0x60, 0xb4, 0x9f, 0x23,
- 0x6d, 0x74, 0x42, 0x54, 0x97, 0x1a, 0xea, 0x76, 0x8d, 0x91, 0x00, 0x03, 0x31, 0xd3, 0x8d, 0x6e,
- 0x43, 0x23, 0x24, 0x60, 0xc2, 0xd2, 0xae, 0x33, 0x9a, 0x7a, 0x40, 0xc3, 0x7d, 0x93, 0xeb, 0x50,
- 0x25, 0x96, 0xae, 0xda, 0x63, 0x55, 0xd7, 0x7c, 0xad, 0xdd, 0x60, 0x34, 0x15, 0x62, 0xe9, 0x87,
- 0xe3, 0x1d, 0xcd, 0xd7, 0xd0, 0x2a, 0x2c, 0x12, 0xd7, 0xb5, 0xdd, 0x76, 0x93, 0x61, 0x78, 0x01,
- 0xdd, 0x02, 0xd1, 0x1b, 0xf5, 0x87, 0x19, 0x71, 0xcf, 0xdb, 0x2d, 0x86, 0xac, 0x72, 0xd8, 0xd7,
- 0x14, 0xc4, 0x97, 0xc2, 0x23, 0xbe, 0xa0, 0x58, 0xe6, 0x1d, 0x64, 0x20, 0x46, 0xa0, 0x7c, 0x0b,
- 0x45, 0xec, 0x7c, 0x6f, 0xa0, 0xb7, 0xa0, 0x38, 0xb2, 0xad, 0xb1, 0x90, 0x56, 0xd9, 0xb2, 0x08,
- 0x19, 0xc4, 0x0c, 0x8f, 0xde, 0x86, 0x45, 0x8f, 0x4a, 0x12, 0x93, 0x92, 0xea, 0x83, 0x95, 0x38,
- 0x21, 0x13, 0x32, 0xcc, 0x29, 0x94, 0xbb, 0xd0, 0xd8, 0x25, 0x3e, 0xe5, 0x1e, 0xe8, 0x44, 0xe4,
- 0x11, 0xe5, 0x64, 0x8f, 0x48, 0xf9, 0x0c, 0x9a, 0x21, 0xa5, 0x98, 0x91, 0xbb, 0xb0, 0xe4, 0x11,
- 0xf7, 0x34, 0xd3, 0x9d, 0x65, 0x84, 0x01, 0x5a, 0xf9, 0x8e, 0xa9, 0xb9, 0xdc, 0xcc, 0xab, 0x59,
- 0xa5, 0x0e, 0x94, 0x4d, 0x63, 0x4c, 0x98, 0xe8, 0x17, 0xb8, 0xe8, 0x07, 0x65, 0x65, 0x99, 0xb9,
- 0x91, 0x72, 0xc7, 0x94, 0x6e, 0x60, 0x01, 0x5e, 0xbb, 0xc5, 0xc8, 0x91, 0x8b, 0x31, 0x7e, 0x2f,
- 0xd8, 0x33, 0x2e, 0xc5, 0x98, 0x32, 0x91, 0xc9, 0x05, 0x93, 0xad, 0x70, 0x3b, 0xb9, 0x1c, 0x97,
- 0x35, 0x58, 0x89, 0xd1, 0x0b, 0x36, 0xef, 0x42, 0x8b, 0xc9, 0xef, 0xe5, 0x98, 0xac, 0xc0, 0xb2,
- 0x44, 0x2d, 0x58, 0x7c, 0x00, 0xab, 0xa1, 0x07, 0x73, 0x39, 0x36, 0x1b, 0xb0, 0x96, 0xa8, 0x21,
- 0x58, 0xfd, 0x3a, 0x17, 0x8c, 0xf5, 0x3b, 0x72, 0xec, 0x6a, 0x01, 0xa7, 0x16, 0x14, 0x66, 0xae,
- 0x29, 0xb8, 0xd0, 0xbf, 0x4c, 0xda, 0xed, 0x99, 0x4f, 0xd8, 0x66, 0x4e, 0x8f, 0x4d, 0x05, 0x66,
- 0x0c, 0x29, 0x88, 0x6e, 0xe7, 0x1e, 0x6d, 0x9c, 0xca, 0x0c, 0xf5, 0x1d, 0xb8, 0x4f, 0x1e, 0x14,
- 0xd1, 0x47, 0xb0, 0x6e, 0x91, 0x33, 0xff, 0xc4, 0x76, 0x54, 0xdf, 0x35, 0x26, 0x13, 0xe2, 0xaa,
- 0xfc, 0x44, 0xc6, 0xec, 0x5b, 0x19, 0xaf, 0x0a, 0xec, 0x90, 0x23, 0x79, 0x77, 0xd0, 0x03, 0x58,
- 0x4b, 0xd6, 0xd2, 0x89, 0xa9, 0x9d, 0x0b, 0x9b, 0xb7, 0x12, 0xaf, 0xb4, 0x43, 0x51, 0x74, 0xca,
- 0x63, 0x83, 0x11, 0x83, 0x6c, 0x42, 0x7d, 0x97, 0xf8, 0xcf, 0xdc, 0x71, 0xe0, 0x19, 0x7c, 0xc8,
- 0xd4, 0x87, 0x01, 0x84, 0x4e, 0xdc, 0x82, 0xe2, 0xa9, 0x3b, 0x0e, 0x14, 0xa2, 0x1e, 0x29, 0x04,
- 0x25, 0x62, 0x28, 0xe5, 0x03, 0xb6, 0x43, 0x47, 0x5c, 0xd0, 0x0d, 0x28, 0x9c, 0xba, 0x81, 0x5a,
- 0x27, 0xaa, 0x50, 0x8c, 0xd8, 0x25, 0xa5, 0x66, 0x94, 0x0f, 0x83, 0x5d, 0xf2, 0x55, 0xd8, 0x84,
- 0x1b, 0xa3, 0xcc, 0xe9, 0x29, 0xac, 0xee, 0x12, 0x7f, 0x87, 0x8c, 0x0d, 0x8b, 0xe8, 0x47, 0x24,
- 0x74, 0x65, 0xde, 0x16, 0x8e, 0x00, 0x77, 0x63, 0xd6, 0x22, 0x76, 0x82, 0x94, 0x2e, 0x16, 0xdf,
- 0xf5, 0xc3, 0x93, 0x65, 0x5e, 0x3a, 0x59, 0x76, 0x61, 0x2d, 0xc1, 0x36, 0x34, 0x1a, 0x45, 0x8f,
- 0xf8, 0xc1, 0x04, 0xad, 0xa6, 0xf8, 0x52, 0x5a, 0x46, 0xa1, 0x7c, 0x09, 0xab, 0x5d, 0x5d, 0x4f,
- 0xf7, 0xec, 0x2d, 0x28, 0x50, 0x43, 0xce, 0xc7, 0x99, 0xcd, 0x80, 0x12, 0x50, 0x59, 0x4d, 0xd4,
- 0x17, 0x43, 0x3e, 0x82, 0x0d, 0x3e, 0x0f, 0xaf, 0xcd, 0x9b, 0xca, 0xb5, 0x66, 0x9a, 0xc2, 0x1d,
- 0xa0, 0x7f, 0xa9, 0x57, 0x9e, 0x66, 0x2a, 0x1a, 0x7c, 0x04, 0x6d, 0x4c, 0x1c, 0x53, 0x1b, 0xbd,
- 0x7e, 0x8b, 0xf4, 0xb4, 0x91, 0xc1, 0x43, 0x34, 0xb0, 0xc6, 0xa2, 0x0d, 0xcc, 0xb2, 0x4f, 0x89,
- 0x15, 0x3a, 0xae, 0x5f, 0xb1, 0xb5, 0x95, 0xc0, 0x62, 0x0d, 0x3e, 0x04, 0xf0, 0x02, 0x60, 0xb0,
- 0x12, 0xd2, 0x2e, 0x11, 0x55, 0x90, 0xc8, 0x94, 0x27, 0xec, 0x28, 0x9a, 0x6c, 0x03, 0xdd, 0x87,
- 0x4a, 0x48, 0x24, 0x46, 0x91, 0xc9, 0x2a, 0xa2, 0x52, 0xd6, 0xd9, 0xc2, 0xa6, 0xba, 0xa5, 0xfc,
- 0x7e, 0x70, 0x30, 0x7d, 0x03, 0x8d, 0x64, 0xac, 0xd0, 0x95, 0x60, 0xd9, 0xd3, 0x2d, 0xef, 0xc1,
- 0x86, 0x98, 0xdc, 0x37, 0x31, 0xbe, 0x4e, 0xb8, 0xdc, 0xe9, 0x96, 0x10, 0xb4, 0x76, 0x89, 0x2f,
- 0x9c, 0x66, 0xb1, 0x4c, 0x5d, 0x58, 0x96, 0x60, 0x62, 0x8d, 0xde, 0x85, 0xb2, 0x43, 0x21, 0x06,
- 0x09, 0x56, 0xa8, 0x25, 0x1d, 0x03, 0x38, 0x6d, 0x48, 0xa1, 0x9c, 0x41, 0xab, 0xab, 0xeb, 0x31,
- 0xb6, 0xe8, 0x2e, 0x94, 0x18, 0xfe, 0x5c, 0x74, 0x3b, 0x5d, 0x5f, 0xe0, 0xd1, 0xa7, 0x70, 0xc5,
- 0x25, 0x63, 0x6a, 0x4e, 0xcf, 0x0c, 0xcf, 0x37, 0xac, 0x89, 0x2a, 0x89, 0x07, 0x9f, 0xc1, 0x0d,
- 0x46, 0xd0, 0x13, 0xf8, 0xa3, 0x48, 0x2c, 0x56, 0x60, 0x59, 0x6a, 0x59, 0x8c, 0xf2, 0x17, 0x39,
- 0x58, 0x11, 0x71, 0x90, 0xd7, 0xec, 0xd2, 0xfb, 0xb0, 0xe2, 0x50, 0x17, 0xc8, 0x3d, 0x25, 0xe9,
- 0xce, 0xa0, 0x00, 0x15, 0xf5, 0x23, 0x58, 0xef, 0x42, 0xb4, 0xde, 0xeb, 0xb0, 0x1a, 0xef, 0x83,
- 0xe8, 0xdc, 0xdf, 0xe6, 0x60, 0x55, 0xac, 0xcf, 0xff, 0xc2, 0x84, 0xcd, 0x1b, 0x59, 0x61, 0xde,
- 0xc8, 0x78, 0xf4, 0x24, 0xd6, 0xdd, 0xf0, 0x7c, 0xde, 0x09, 0xe5, 0xa6, 0xeb, 0x79, 0xc6, 0xc4,
- 0x92, 0x05, 0xf7, 0x53, 0x00, 0x2d, 0x04, 0x8a, 0x11, 0x75, 0x92, 0x23, 0x92, 0xaa, 0x49, 0xd4,
- 0xca, 0xb7, 0xb0, 0x99, 0xc9, 0x59, 0xc8, 0xe6, 0x6f, 0xc3, 0xfa, 0x39, 0x74, 0x42, 0x79, 0x79,
- 0xb3, 0x9d, 0xbe, 0x06, 0x9b, 0x99, 0x9c, 0xc5, 0x6c, 0x4d, 0xe1, 0x9a, 0x2c, 0x0e, 0x6f, 0xb4,
- 0xed, 0x0c, 0x6b, 0x73, 0x13, 0xae, 0xcf, 0x6b, 0x4e, 0x74, 0xe8, 0xf7, 0xe0, 0x7a, 0x6c, 0x5d,
- 0xdf, 0xec, 0x6c, 0xdc, 0x82, 0x1b, 0x73, 0xb9, 0xc7, 0x6c, 0xd1, 0x11, 0xf3, 0xd1, 0x03, 0x5b,
- 0xf4, 0x05, 0xb3, 0x45, 0x01, 0x2c, 0xdc, 0xb3, 0x4b, 0x13, 0xd3, 0x3e, 0xd6, 0xcc, 0xb4, 0x62,
- 0xec, 0x32, 0x38, 0x16, 0x78, 0xe5, 0x4b, 0x40, 0x47, 0xbe, 0xe6, 0xc6, 0x99, 0xbe, 0x42, 0xfd,
- 0x35, 0x58, 0x89, 0xd5, 0x8f, 0xc2, 0x32, 0x47, 0xbe, 0xed, 0xc4, 0xbb, 0xba, 0x4a, 0xdb, 0x8a,
- 0x80, 0x82, 0xf4, 0x5f, 0x0a, 0x50, 0x1c, 0x88, 0xf0, 0xac, 0x65, 0xba, 0x46, 0x10, 0x4b, 0xa6,
- 0xff, 0xe9, 0xe1, 0xc6, 0xd1, 0x7c, 0xdf, 0xe5, 0x7e, 0x67, 0x0d, 0x8b, 0x12, 0x5b, 0xbe, 0x49,
- 0x70, 0xb4, 0xa0, 0x7f, 0x69, 0xed, 0x63, 0xe2, 0xf9, 0xc2, 0xb3, 0x64, 0xff, 0xa9, 0xeb, 0x6a,
- 0x78, 0xea, 0x0b, 0xc3, 0x3f, 0xd1, 0x5d, 0xed, 0x05, 0xf3, 0x1f, 0xcb, 0x18, 0x0c, 0xef, 0x1b,
- 0x01, 0x41, 0xd7, 0x01, 0x4e, 0x35, 0xd3, 0xd0, 0x79, 0xe4, 0xab, 0xc4, 0x02, 0x55, 0x12, 0x04,
- 0x7d, 0x00, 0xab, 0x96, 0xad, 0x1a, 0x53, 0x87, 0x5a, 0x6d, 0x3f, 0xe2, 0xb4, 0xc4, 0x75, 0xdf,
- 0xb2, 0xfb, 0x02, 0x15, 0x72, 0x8c, 0x4e, 0x63, 0xe5, 0x58, 0x7c, 0xfa, 0x1a, 0x00, 0x0f, 0x21,
- 0xa9, 0x9a, 0x67, 0xb1, 0x03, 0x74, 0x1d, 0x57, 0x38, 0xa4, 0xeb, 0x59, 0x68, 0x13, 0x44, 0x41,
- 0x35, 0x74, 0x76, 0x72, 0xae, 0xe0, 0x32, 0x07, 0xf4, 0x75, 0x11, 0x30, 0xf3, 0x89, 0x4b, 0x74,
- 0x76, 0x60, 0x2e, 0xe3, 0xb0, 0x4c, 0x0f, 0xb1, 0x9e, 0xaf, 0x99, 0x84, 0x1d, 0x93, 0xcb, 0x98,
- 0x17, 0xd0, 0x5d, 0x68, 0x19, 0x9e, 0x3a, 0x76, 0xed, 0xa9, 0x4a, 0xce, 0x7c, 0xe2, 0x5a, 0x9a,
- 0xc9, 0xce, 0xc8, 0x65, 0xdc, 0x30, 0xbc, 0xc7, 0xae, 0x3d, 0xed, 0x09, 0x28, 0x9d, 0x22, 0x4b,
- 0x44, 0xf4, 0x54, 0xc3, 0x61, 0x87, 0xe4, 0x0a, 0x86, 0x00, 0xd4, 0x77, 0xc2, 0xa0, 0x79, 0x33,
- 0x0a, 0x9a, 0xa3, 0x77, 0x01, 0x19, 0x9e, 0x1a, 0x38, 0xe9, 0x86, 0xc5, 0x66, 0x8c, 0x9d, 0x94,
- 0xcb, 0xb8, 0x65, 0x78, 0x07, 0x1c, 0xd1, 0xe7, 0x70, 0xe5, 0xaf, 0x73, 0x50, 0xdd, 0x21, 0xd4,
- 0xaa, 0xf2, 0x49, 0xa5, 0x6b, 0xca, 0x82, 0x0e, 0xe2, 0x94, 0x21, 0x4a, 0x51, 0x10, 0x2d, 0x7f,
- 0x41, 0x10, 0x0d, 0xdd, 0x81, 0xa6, 0x69, 0x5b, 0xf4, 0x50, 0xc0, 0xab, 0x91, 0xc0, 0x12, 0x37,
- 0x38, 0x78, 0x20, 0xa0, 0xe8, 0x6d, 0x68, 0x79, 0x27, 0xb6, 0xeb, 0xcb, 0x94, 0x5c, 0x38, 0x9a,
- 0x02, 0x1e, 0x90, 0x2a, 0x7f, 0x9f, 0x83, 0x45, 0x16, 0x40, 0xa2, 0x27, 0x76, 0xc9, 0x89, 0xce,
- 0x8a, 0x05, 0xce, 0xf5, 0xa0, 0xe7, 0x5e, 0x4d, 0xfc, 0x3f, 0xa8, 0xe9, 0xd1, 0xf0, 0x69, 0x27,
- 0xe8, 0xf0, 0x62, 0x0e, 0x7a, 0x88, 0xc5, 0x31, 0x52, 0x16, 0xb2, 0xb1, 0x3d, 0x5f, 0x15, 0xbb,
- 0x9c, 0x10, 0x60, 0x0a, 0xe2, 0x36, 0x42, 0x79, 0xc8, 0x0e, 0x38, 0xaf, 0x1c, 0x21, 0x53, 0x3e,
- 0xe6, 0x61, 0x04, 0x5a, 0x4f, 0x98, 0x8c, 0x4b, 0x56, 0x34, 0x01, 0x3d, 0xe3, 0xfa, 0x41, 0xa4,
- 0x56, 0x2f, 0x3b, 0x6d, 0xf3, 0xae, 0xba, 0x22, 0x91, 0x28, 0xc8, 0x22, 0x41, 0xad, 0x4b, 0xac,
- 0xb5, 0xe0, 0x16, 0xa2, 0x08, 0xc5, 0x01, 0x21, 0x2e, 0xd3, 0x0c, 0xca, 0x21, 0xf0, 0xb9, 0xea,
- 0x38, 0x2c, 0xa3, 0x4f, 0xa0, 0xa6, 0x39, 0x8e, 0x79, 0x1e, 0x4c, 0x1e, 0x8f, 0xad, 0x48, 0xd3,
- 0xde, 0xa5, 0x58, 0xb1, 0x43, 0x57, 0xb5, 0xa8, 0x10, 0x86, 0x6d, 0x0a, 0xc9, 0xb0, 0x0d, 0x6d,
- 0x53, 0x0a, 0xdb, 0x7c, 0x06, 0x75, 0x72, 0x3c, 0x71, 0xd4, 0xe9, 0xcc, 0xf4, 0x8d, 0x13, 0xdb,
- 0x11, 0x97, 0x4f, 0xeb, 0x51, 0x85, 0xde, 0xf1, 0xc4, 0xd9, 0x17, 0x58, 0x5c, 0x23, 0x52, 0x09,
- 0x75, 0xa1, 0xc9, 0x8f, 0xd5, 0x2e, 0x19, 0x9b, 0x64, 0xe4, 0xdb, 0x2e, 0x5b, 0xde, 0xea, 0x83,
- 0xb6, 0x34, 0x7b, 0x94, 0x00, 0x07, 0x78, 0xdc, 0x70, 0x63, 0x65, 0x74, 0x07, 0x8a, 0x86, 0x35,
- 0xb6, 0x99, 0xdd, 0x8a, 0x39, 0xb9, 0xb4, 0x9f, 0x3c, 0x6a, 0xc4, 0x08, 0xa8, 0x39, 0xf7, 0x8d,
- 0x29, 0x71, 0x3d, 0x66, 0xb8, 0x62, 0xe6, 0x7c, 0xc8, 0xe0, 0x58, 0xe0, 0xa9, 0xf3, 0xec, 0xbb,
- 0x9a, 0xe5, 0xb1, 0xf0, 0x4a, 0x39, 0xc9, 0x77, 0x18, 0xa0, 0x70, 0x44, 0x45, 0xe7, 0x99, 0x0f,
- 0x84, 0xc7, 0x8e, 0x98, 0x6d, 0x8b, 0xcd, 0x33, 0x1b, 0x85, 0x30, 0xfa, 0x3c, 0x94, 0xc0, 0x0b,
- 0x68, 0x07, 0x5a, 0x13, 0x57, 0x1b, 0x91, 0xf1, 0xcc, 0x54, 0x5d, 0xe2, 0xd1, 0x6d, 0x84, 0xd9,
- 0xbe, 0xea, 0x83, 0x2b, 0xd2, 0x7e, 0x23, 0x28, 0x30, 0x27, 0xc0, 0xcd, 0x49, 0x1c, 0x80, 0xb6,
- 0xa0, 0xa2, 0x8d, 0x0d, 0xd5, 0xd3, 0xc6, 0x86, 0xd7, 0xae, 0x32, 0xdd, 0x5a, 0x96, 0x16, 0x79,
- 0x6c, 0x1c, 0x69, 0x63, 0x03, 0x97, 0x35, 0xfe, 0xc7, 0x53, 0xfe, 0x29, 0x07, 0x55, 0x69, 0xe9,
- 0xd1, 0xc7, 0x50, 0x31, 0x2c, 0x35, 0xe6, 0x47, 0x5e, 0xb4, 0x65, 0x97, 0x0d, 0x4b, 0x54, 0xfc,
- 0x29, 0xd4, 0xc9, 0x19, 0x9d, 0x82, 0xb8, 0x84, 0x5d, 0x54, 0xb9, 0xc6, 0x2b, 0x44, 0x0c, 0x8c,
- 0xa9, 0xcc, 0xa0, 0xf0, 0x72, 0x06, 0xbc, 0x82, 0xd0, 0xfe, 0x3f, 0x81, 0x2a, 0xb7, 0x61, 0x7b,
- 0xc6, 0xd4, 0x98, 0x1b, 0x09, 0x44, 0xb7, 0xa0, 0x36, 0xd5, 0xce, 0x22, 0x2b, 0xc8, 0x75, 0xaf,
- 0x3a, 0xd5, 0xce, 0x42, 0x63, 0xf9, 0x11, 0xac, 0x7b, 0xe2, 0x8a, 0x4a, 0xf5, 0x4f, 0x5c, 0xe2,
- 0x9d, 0xd8, 0xa6, 0xae, 0x3a, 0x23, 0x5f, 0xd8, 0xb2, 0xd5, 0x00, 0x3b, 0x0c, 0x90, 0x83, 0x91,
- 0xaf, 0xfc, 0xd7, 0x22, 0x94, 0x03, 0x9d, 0x40, 0x3f, 0x82, 0xba, 0x36, 0xf3, 0x4f, 0x54, 0x47,
- 0xf3, 0xbc, 0x17, 0xb6, 0xab, 0x0b, 0xeb, 0x5e, 0xa3, 0xc0, 0x81, 0x80, 0xa1, 0x9b, 0x50, 0xd5,
- 0x89, 0x37, 0x72, 0x0d, 0x47, 0xba, 0x6b, 0x92, 0x41, 0xe8, 0x0a, 0x94, 0x4d, 0x7b, 0xa4, 0x99,
- 0xaa, 0xe6, 0x05, 0xe1, 0x24, 0x56, 0xee, 0x32, 0x8b, 0x1e, 0xee, 0x55, 0x41, 0xb8, 0xab, 0xc8,
- 0x38, 0x34, 0x03, 0x78, 0x57, 0x44, 0x08, 0x37, 0x60, 0xc9, 0x21, 0xc4, 0xa5, 0x4c, 0x78, 0xd4,
- 0xa8, 0x44, 0x8b, 0x5d, 0x8f, 0xee, 0xc3, 0x0c, 0x31, 0x71, 0xed, 0x99, 0xc3, 0x34, 0xa7, 0x82,
- 0x2b, 0x14, 0xb2, 0x4b, 0x01, 0x74, 0x1f, 0x66, 0x68, 0x66, 0xcd, 0x78, 0x84, 0xbc, 0x4c, 0x01,
- 0xec, 0xe2, 0xea, 0x00, 0x96, 0x5d, 0x32, 0xb5, 0x4f, 0x89, 0xea, 0xb8, 0xc6, 0xa9, 0xe6, 0xd3,
- 0xbd, 0x9c, 0x29, 0x49, 0xe3, 0x81, 0x92, 0x36, 0x12, 0x5b, 0x98, 0xd1, 0x0e, 0x38, 0x69, 0xd7,
- 0xc3, 0x4d, 0x37, 0x0e, 0xa0, 0xdb, 0x28, 0xd7, 0x9c, 0xb1, 0xa9, 0x39, 0xaa, 0xae, 0x4d, 0x1d,
- 0xc3, 0x9a, 0x30, 0xfd, 0x29, 0xe3, 0x16, 0xc3, 0x3c, 0x36, 0x35, 0x67, 0x87, 0xc3, 0xd1, 0x6d,
- 0x68, 0x78, 0xc4, 0xd2, 0x55, 0x71, 0x31, 0xe7, 0x9f, 0x33, 0x5d, 0xa9, 0xe3, 0x3a, 0x85, 0x6e,
- 0x07, 0x40, 0x3a, 0x40, 0x71, 0x77, 0x31, 0xd2, 0x1c, 0xa6, 0x0f, 0x35, 0x5c, 0xe1, 0x90, 0x6d,
- 0x8d, 0x0d, 0x90, 0x4f, 0x2f, 0xc5, 0xd6, 0x18, 0x96, 0xcf, 0x37, 0x45, 0x36, 0x20, 0x6f, 0xe8,
- 0xcc, 0x51, 0xa8, 0xe0, 0xbc, 0xa1, 0xa3, 0x4f, 0xa1, 0x2e, 0x6e, 0x0c, 0x4c, 0x2a, 0x60, 0x5e,
- 0xbb, 0x91, 0xdc, 0xba, 0x24, 0xf1, 0xc3, 0x35, 0x27, 0x2a, 0x78, 0x54, 0x1c, 0xc4, 0x3a, 0x8a,
- 0x95, 0x6a, 0x72, 0x71, 0xe0, 0x8b, 0x29, 0x96, 0xe9, 0x3d, 0x40, 0x91, 0xf7, 0x61, 0xf9, 0xc4,
- 0x1d, 0x6b, 0x23, 0xc2, 0x1c, 0x89, 0x0a, 0x5e, 0x0e, 0x9d, 0x90, 0x00, 0x41, 0xbd, 0xbe, 0x53,
- 0x77, 0xcc, 0x02, 0xee, 0x15, 0x16, 0x21, 0x43, 0x37, 0xa1, 0xa6, 0x99, 0xa6, 0xfd, 0x42, 0xa5,
- 0x82, 0xab, 0x79, 0x6d, 0xc4, 0x2f, 0x35, 0x18, 0xec, 0xf0, 0x85, 0xd5, 0xf5, 0xd0, 0x5b, 0xd0,
- 0x74, 0xb9, 0x5b, 0xad, 0x06, 0x12, 0xb1, 0xc2, 0x66, 0xb8, 0x2e, 0xc0, 0x03, 0x26, 0x18, 0xca,
- 0x7d, 0x68, 0x26, 0x16, 0x0c, 0x95, 0xa1, 0x78, 0x70, 0x78, 0xd0, 0xe3, 0x97, 0xc9, 0xdd, 0xbd,
- 0xbd, 0x56, 0x0e, 0x55, 0x61, 0x09, 0xf7, 0x06, 0x7b, 0xdd, 0xed, 0x5e, 0x2b, 0xaf, 0x7c, 0x05,
- 0x35, 0xd9, 0xc0, 0xa3, 0x36, 0x2c, 0xf1, 0xf0, 0x66, 0xf0, 0xfe, 0x24, 0x28, 0x32, 0x0d, 0x14,
- 0x54, 0xaa, 0xef, 0x9b, 0xa1, 0x06, 0x0a, 0xd8, 0xd0, 0x37, 0x95, 0x3f, 0xcb, 0x41, 0x23, 0x6e,
- 0xef, 0xa9, 0x52, 0x26, 0xb6, 0x08, 0x75, 0x64, 0x1a, 0xc1, 0xc9, 0xa2, 0x8c, 0x57, 0xe3, 0xfb,
- 0xc1, 0x36, 0xc3, 0xa1, 0xcf, 0xa0, 0x93, 0xae, 0x35, 0xf3, 0xa8, 0x1f, 0x14, 0x5e, 0x5b, 0x6e,
- 0x24, 0x6b, 0x32, 0x7c, 0x5f, 0x57, 0xfe, 0xae, 0x04, 0x95, 0x70, 0xf7, 0xf8, 0x1f, 0x50, 0xe9,
- 0x2d, 0x28, 0x4f, 0x89, 0xe7, 0x69, 0x13, 0xe1, 0x9c, 0xc5, 0xb6, 0xdb, 0x7d, 0x81, 0xc1, 0x21,
- 0x4d, 0xa6, 0x09, 0x58, 0x7c, 0xa9, 0x09, 0x28, 0x5d, 0x60, 0x02, 0x96, 0x2e, 0x34, 0x01, 0xe5,
- 0x84, 0x09, 0xb8, 0x0b, 0xa5, 0x1f, 0x66, 0x64, 0x46, 0x3c, 0xb1, 0xcd, 0x49, 0x3b, 0xe9, 0xd7,
- 0x0c, 0x8e, 0x05, 0x1e, 0xdd, 0xcb, 0x32, 0x16, 0x5c, 0x63, 0x2f, 0x69, 0x08, 0xaa, 0x97, 0x36,
- 0x04, 0xb5, 0x2c, 0x43, 0xc0, 0xee, 0xda, 0x3c, 0xcf, 0xb0, 0x2d, 0x1e, 0xb5, 0x60, 0x7a, 0x5d,
- 0xc7, 0x35, 0x01, 0xe4, 0x2b, 0xfc, 0x13, 0x58, 0xf7, 0x66, 0x0e, 0xdd, 0x52, 0x88, 0x4e, 0x4d,
- 0x82, 0x76, 0x6c, 0x98, 0x86, 0x4f, 0xdd, 0xa9, 0x06, 0x8b, 0xf3, 0xaf, 0x85, 0xd8, 0x6d, 0x09,
- 0x49, 0xe7, 0x88, 0x3a, 0x3e, 0x9c, 0x2f, 0x57, 0xec, 0xf2, 0xf1, 0xc4, 0xe1, 0x3c, 0x7f, 0x0a,
- 0x55, 0x4d, 0x9f, 0x1a, 0x41, 0xb3, 0x2d, 0x66, 0x20, 0xaf, 0x67, 0x78, 0x27, 0x5b, 0x5d, 0x4a,
- 0xc6, 0x1d, 0x15, 0xd0, 0xc2, 0xff, 0xd4, 0xab, 0x0b, 0x6e, 0x0d, 0x99, 0xae, 0xd7, 0x71, 0x58,
- 0xa6, 0x38, 0x6d, 0x34, 0x22, 0x8e, 0x4f, 0x74, 0xa1, 0xec, 0x61, 0x99, 0x9e, 0xe6, 0xb4, 0xe8,
- 0x09, 0xd8, 0x8a, 0x30, 0x05, 0xd1, 0xe3, 0xaf, 0x15, 0x58, 0xb4, 0x67, 0xbe, 0xfa, 0x43, 0x7b,
- 0x95, 0xdf, 0x1b, 0xd9, 0x33, 0xff, 0x6b, 0x7a, 0x80, 0x1a, 0x9b, 0xb6, 0xe3, 0xb5, 0xd7, 0x18,
- 0x90, 0x17, 0x94, 0x7b, 0x00, 0x51, 0xe7, 0x50, 0x09, 0xf2, 0x4f, 0x07, 0xfc, 0x42, 0x7c, 0xe7,
- 0xf0, 0x9b, 0x83, 0x56, 0x0e, 0x01, 0x94, 0x06, 0x8f, 0x9f, 0xab, 0xdb, 0xc3, 0x56, 0x5e, 0xf9,
- 0x43, 0x28, 0x07, 0x92, 0x8a, 0xde, 0x93, 0xba, 0xce, 0x7d, 0x89, 0xe5, 0x94, 0x3c, 0x4b, 0xa3,
- 0xb9, 0x0d, 0x45, 0x2f, 0xb8, 0xa5, 0xce, 0x24, 0x65, 0x68, 0xe5, 0x57, 0x39, 0x58, 0x12, 0x10,
- 0xa4, 0x40, 0xed, 0xe0, 0x70, 0xd8, 0x7f, 0xdc, 0xdf, 0xee, 0x0e, 0xfb, 0x87, 0x07, 0xac, 0x95,
- 0x22, 0x8e, 0xc1, 0xa8, 0x23, 0xf0, 0x74, 0xb0, 0xd3, 0x1d, 0xf6, 0x18, 0xe3, 0x22, 0x16, 0x25,
- 0x7a, 0x6a, 0x39, 0x1c, 0xf4, 0x0e, 0xc4, 0xcb, 0x0a, 0xf6, 0x1f, 0x5d, 0x85, 0xca, 0x57, 0xbd,
- 0xde, 0xa0, 0xbb, 0xd7, 0x7f, 0xd6, 0x63, 0x2a, 0x58, 0xc4, 0x11, 0x80, 0x9a, 0x34, 0xdc, 0x7b,
- 0x8c, 0x7b, 0x47, 0x4f, 0x98, 0x9a, 0x15, 0x71, 0x50, 0xa4, 0xf5, 0x76, 0xfa, 0x47, 0xdb, 0x5d,
- 0xbc, 0xd3, 0xdb, 0x61, 0x0a, 0x56, 0xc4, 0x11, 0x80, 0xce, 0xea, 0xf0, 0x70, 0xd8, 0xdd, 0x63,
- 0xea, 0x55, 0xc4, 0xbc, 0xa0, 0x3c, 0x84, 0x12, 0xd7, 0x12, 0x8a, 0x37, 0x2c, 0x67, 0xe6, 0x0b,
- 0x4f, 0x85, 0x17, 0x68, 0xbf, 0xed, 0x99, 0x4f, 0xc1, 0xe2, 0x78, 0xc0, 0x4b, 0x0a, 0x81, 0x12,
- 0xf7, 0x53, 0xd1, 0x16, 0x94, 0xa8, 0xeb, 0x6d, 0x4c, 0xc4, 0xec, 0xae, 0x27, 0x3d, 0xd9, 0x6d,
- 0x86, 0xc5, 0x82, 0x0a, 0xbd, 0x13, 0xbf, 0x59, 0x5d, 0x4b, 0x92, 0xc7, 0xee, 0x56, 0x7f, 0x95,
- 0x83, 0x9a, 0xcc, 0x85, 0xaa, 0xd0, 0xc8, 0xb6, 0x2c, 0x32, 0xf2, 0x55, 0x97, 0xf8, 0xee, 0x79,
- 0x30, 0xd9, 0x02, 0x88, 0x29, 0x8c, 0xea, 0x02, 0x73, 0x96, 0xc2, 0x6b, 0xfe, 0x22, 0x2e, 0x53,
- 0x00, 0xe5, 0x44, 0x37, 0xb8, 0xef, 0x09, 0x71, 0x34, 0xd3, 0x38, 0x25, 0x6a, 0xe2, 0x65, 0xcb,
- 0x72, 0x88, 0xe9, 0x0b, 0x04, 0xda, 0x81, 0xeb, 0x53, 0xc3, 0x32, 0xa6, 0xb3, 0xa9, 0x1a, 0xca,
- 0x2d, 0xf5, 0xfb, 0xa2, 0xaa, 0x7c, 0x85, 0xae, 0x0a, 0xaa, 0xae, 0x4c, 0x14, 0x70, 0x51, 0x7e,
- 0x99, 0x87, 0xaa, 0x34, 0xbc, 0xff, 0xa3, 0xc3, 0x60, 0xc1, 0x17, 0x32, 0xb1, 0x7d, 0x43, 0xa3,
- 0xc6, 0x29, 0xea, 0x1c, 0x17, 0x44, 0x14, 0xe1, 0x9e, 0x04, 0xdd, 0x8c, 0x1e, 0x62, 0x70, 0x81,
- 0xcc, 0x7a, 0x88, 0xc1, 0x05, 0x32, 0x2c, 0x2b, 0xff, 0x99, 0x83, 0x4a, 0x78, 0xae, 0x49, 0x7b,
- 0x2d, 0xb9, 0x0c, 0xaf, 0xe5, 0x1a, 0x00, 0x27, 0x92, 0x2e, 0xa1, 0xb9, 0x57, 0x35, 0x10, 0x3c,
- 0xa6, 0xfe, 0x4c, 0xd5, 0x0d, 0x6f, 0x64, 0x9f, 0x12, 0xf7, 0x5c, 0xc4, 0x27, 0x6a, 0x53, 0x7f,
- 0xb6, 0x13, 0xc0, 0xa8, 0x47, 0x40, 0x77, 0x55, 0x3a, 0x9f, 0x53, 0x5b, 0x0f, 0x2e, 0x44, 0xab,
- 0x02, 0xb6, 0x6f, 0xeb, 0xf4, 0x44, 0xde, 0x10, 0x9e, 0x5c, 0x7c, 0xa7, 0xab, 0x73, 0x68, 0x37,
- 0xfb, 0xb1, 0x4a, 0x29, 0x78, 0x18, 0x12, 0x3c, 0x56, 0xa1, 0x1b, 0xa1, 0x3f, 0x72, 0xd4, 0xa9,
- 0xe7, 0x09, 0x8f, 0xb6, 0xe4, 0x8f, 0x9c, 0x7d, 0xcf, 0x53, 0xbe, 0x80, 0xaa, 0x74, 0x36, 0x43,
- 0x5b, 0xb0, 0x22, 0x1f, 0xe4, 0xe2, 0xbe, 0xc6, 0xb2, 0x74, 0x70, 0xe3, 0x8e, 0x86, 0xf2, 0x1f,
- 0x39, 0x68, 0x26, 0x4e, 0x67, 0x17, 0xbb, 0x40, 0xe2, 0x8c, 0x17, 0x89, 0x58, 0x1d, 0x57, 0x05,
- 0x8c, 0x2d, 0xdf, 0x0d, 0xa8, 0x9e, 0x10, 0xd3, 0x21, 0xae, 0x6a, 0x5b, 0x66, 0x30, 0x6d, 0xc0,
- 0x41, 0x87, 0x96, 0xc9, 0xb6, 0x34, 0x9d, 0x8c, 0x89, 0xeb, 0x6a, 0x26, 0x67, 0xc2, 0x9f, 0xc9,
- 0xd4, 0x02, 0x20, 0xe3, 0x72, 0x1f, 0x56, 0xd9, 0xe3, 0x12, 0xf1, 0x74, 0x4d, 0x0d, 0xfa, 0xc3,
- 0x83, 0x27, 0x2b, 0x32, 0xae, 0x27, 0xfa, 0xf6, 0x0e, 0x2c, 0x9b, 0xb6, 0x35, 0x31, 0xd9, 0xe3,
- 0x95, 0x80, 0xbe, 0xc4, 0xb7, 0xdf, 0x10, 0x21, 0x88, 0x95, 0xf7, 0x60, 0x79, 0xdf, 0xb9, 0xf4,
- 0xb8, 0x95, 0x2e, 0xd4, 0xc5, 0x19, 0x54, 0x18, 0x95, 0x79, 0xa7, 0x34, 0x89, 0x45, 0x3e, 0xce,
- 0xe2, 0x37, 0x79, 0x58, 0x13, 0x0b, 0x65, 0xf2, 0x57, 0x8e, 0x87, 0x0e, 0x8f, 0x0f, 0xbd, 0x0b,
- 0x48, 0x33, 0x5f, 0x68, 0xe7, 0x1e, 0x75, 0x06, 0x1c, 0xcd, 0x25, 0xea, 0x34, 0x7a, 0xfc, 0xcc,
- 0x31, 0xdb, 0x1c, 0xb1, 0x4f, 0x74, 0x74, 0x1f, 0xd6, 0x8c, 0x89, 0x65, 0xbb, 0xd4, 0x15, 0x51,
- 0x1d, 0xcd, 0x3f, 0x51, 0x4d, 0x62, 0x4d, 0xfc, 0x93, 0xe0, 0x92, 0x86, 0x23, 0xbb, 0xde, 0x40,
- 0xf3, 0x4f, 0xf6, 0x18, 0x86, 0x3a, 0x93, 0x41, 0x00, 0x31, 0x6c, 0x82, 0x49, 0x02, 0x73, 0x26,
- 0xf9, 0x0a, 0x6d, 0x04, 0x14, 0xa2, 0x29, 0xd6, 0x55, 0xb7, 0x4f, 0x8f, 0x0f, 0x57, 0x42, 0xf5,
- 0x57, 0x0d, 0x4b, 0x1b, 0xf9, 0x54, 0xdc, 0x59, 0xf5, 0x20, 0x14, 0xb7, 0x11, 0x12, 0xf4, 0x05,
- 0x9e, 0xd5, 0x66, 0x52, 0xcd, 0x87, 0xaf, 0x6a, 0xc6, 0xc4, 0x09, 0x22, 0x5f, 0xe2, 0x3d, 0xb7,
- 0x31, 0x71, 0xd0, 0xa7, 0xd0, 0x11, 0x83, 0xb1, 0xc8, 0x99, 0xaf, 0xb2, 0x40, 0xe4, 0xc4, 0x51,
- 0xa7, 0xc4, 0x77, 0x8d, 0x91, 0x58, 0xbc, 0x75, 0x4e, 0x71, 0x40, 0xce, 0xfc, 0x27, 0xb6, 0xd3,
- 0x9f, 0x38, 0xfb, 0x0c, 0xab, 0x3c, 0x80, 0xf5, 0xa7, 0x1e, 0x61, 0x7e, 0xbb, 0x63, 0xb2, 0x97,
- 0xbf, 0x81, 0xc5, 0x9f, 0xbf, 0x8e, 0xdf, 0x40, 0x91, 0x3a, 0xfb, 0xd4, 0xaf, 0xe3, 0x27, 0x8e,
- 0xa9, 0xa8, 0x4e, 0xfd, 0x3a, 0x4e, 0xdb, 0x64, 0x88, 0x80, 0x6d, 0x97, 0x9d, 0x81, 0xa6, 0xda,
- 0x19, 0xb3, 0x83, 0x41, 0x64, 0x93, 0xc9, 0xab, 0x00, 0xb2, 0x86, 0x95, 0x77, 0xa0, 0xd8, 0xa7,
- 0x8c, 0x53, 0xc4, 0xb9, 0x0c, 0xe2, 0xbf, 0xcc, 0x41, 0x2b, 0xd9, 0x75, 0xf4, 0x49, 0x62, 0x53,
- 0xbc, 0x19, 0xed, 0x72, 0xd9, 0xc3, 0x0c, 0xb7, 0x47, 0x05, 0x8a, 0xe4, 0x78, 0xe2, 0x88, 0xdd,
- 0xb1, 0x11, 0x0f, 0x5c, 0x61, 0x86, 0xa3, 0x34, 0x06, 0xa5, 0x49, 0xbd, 0x0c, 0xef, 0x33, 0x1a,
- 0x8a, 0x53, 0x3e, 0x17, 0x02, 0x3a, 0xd4, 0xdc, 0x09, 0xf1, 0xf7, 0xc9, 0xf4, 0x98, 0xb8, 0xde,
- 0x89, 0xe1, 0xa4, 0x35, 0x36, 0x97, 0xd6, 0x58, 0xe5, 0x1b, 0x68, 0xef, 0xd9, 0xd6, 0x64, 0x8f,
- 0x6a, 0xd9, 0x9b, 0x34, 0x28, 0xca, 0x3f, 0x17, 0x61, 0x49, 0x28, 0x1f, 0xfa, 0x0a, 0x56, 0xa6,
- 0x8e, 0x9a, 0x8a, 0x37, 0xf1, 0x19, 0xdb, 0x94, 0x3c, 0xaf, 0xa4, 0x6e, 0xe3, 0xe5, 0x69, 0x4a,
- 0xdd, 0xdf, 0x0f, 0x67, 0x9c, 0xcf, 0xdc, 0x46, 0x2a, 0xe0, 0x94, 0x98, 0xe8, 0x64, 0x30, 0xb2,
- 0x70, 0xe9, 0x60, 0xe4, 0x37, 0xb0, 0x11, 0x58, 0x65, 0xa1, 0xfc, 0xaa, 0xed, 0x04, 0x81, 0x64,
- 0xca, 0xe4, 0x46, 0x2a, 0xd2, 0x16, 0x37, 0x12, 0x78, 0xcd, 0xcd, 0xb4, 0x1d, 0x4f, 0x00, 0xcd,
- 0x3c, 0x12, 0x89, 0x31, 0x17, 0xba, 0xc5, 0x64, 0x08, 0x2a, 0x29, 0x41, 0xb8, 0x35, 0x4b, 0xca,
- 0x5f, 0x2a, 0x4c, 0x50, 0x4a, 0x8e, 0x6e, 0x7e, 0x98, 0x20, 0x1c, 0x9e, 0xcf, 0x44, 0x47, 0x9d,
- 0x86, 0xb2, 0x23, 0x62, 0x95, 0xc9, 0xe1, 0x25, 0x45, 0x4c, 0x0c, 0x2f, 0x25, 0x79, 0x1a, 0x6c,
- 0x52, 0xd3, 0xad, 0x72, 0xa3, 0x9e, 0x5a, 0x77, 0x1e, 0xdb, 0x94, 0xc2, 0x36, 0xf3, 0x24, 0x10,
- 0xb7, 0xcd, 0x39, 0x18, 0x65, 0x06, 0x25, 0x3e, 0x30, 0xea, 0x3c, 0x19, 0x8e, 0x1a, 0xbb, 0xd5,
- 0x28, 0x1b, 0x8e, 0x40, 0xbe, 0x05, 0xcd, 0xa9, 0xe6, 0x7d, 0x2f, 0x8c, 0xad, 0x3a, 0x35, 0x2c,
- 0x21, 0xab, 0x75, 0x0a, 0xe6, 0x86, 0x76, 0xdf, 0xb0, 0x52, 0x74, 0xda, 0x99, 0x38, 0x2d, 0xcb,
- 0x74, 0xda, 0x99, 0xf2, 0x17, 0x39, 0x80, 0xe8, 0x49, 0xc9, 0x6f, 0xf9, 0xee, 0x87, 0xc2, 0x4c,
- 0xc3, 0xf3, 0xd9, 0xcb, 0xe5, 0x0a, 0x66, 0xff, 0xd9, 0x53, 0x86, 0xe8, 0xca, 0x24, 0xf9, 0x94,
- 0x81, 0x61, 0x70, 0x48, 0xa1, 0xec, 0x42, 0x79, 0x5f, 0xf3, 0x47, 0x27, 0xb4, 0x33, 0x77, 0x62,
- 0x9d, 0x91, 0x42, 0xc7, 0x8c, 0xe2, 0x25, 0x4f, 0x90, 0x9e, 0x41, 0x2d, 0xb6, 0xf9, 0x6c, 0xc5,
- 0x98, 0x49, 0x32, 0x29, 0x53, 0x49, 0x3c, 0xd7, 0xa1, 0x24, 0x6d, 0x68, 0x75, 0x2c, 0x4a, 0xca,
- 0xbf, 0x17, 0x01, 0xb6, 0x6d, 0x4b, 0x37, 0xb8, 0xe0, 0xdf, 0x07, 0xf1, 0xe8, 0x55, 0x8d, 0xde,
- 0xf1, 0xa0, 0x44, 0x4f, 0x8f, 0x88, 0x8f, 0x2b, 0x9c, 0x8a, 0x0e, 0xeb, 0x27, 0x50, 0x0b, 0xc3,
- 0x0e, 0xb4, 0x52, 0x7e, 0x6e, 0xa5, 0xf0, 0x36, 0x8d, 0x56, 0xfb, 0x1c, 0x1a, 0x89, 0x9d, 0xb6,
- 0x90, 0x3c, 0xb5, 0xc8, 0x43, 0xc1, 0x35, 0x4d, 0x1e, 0xfe, 0x03, 0xa8, 0x06, 0xb5, 0x69, 0x9b,
- 0xc5, 0xf9, 0x1d, 0xe5, 0xd5, 0x68, 0x8b, 0x1f, 0x87, 0xaf, 0xf9, 0xfd, 0x73, 0x56, 0x6b, 0x71,
- 0x6e, 0xad, 0x5a, 0x48, 0x48, 0x2b, 0x7e, 0x09, 0xcb, 0x74, 0x1b, 0x8d, 0x57, 0x2e, 0xcd, 0xad,
- 0xdc, 0x24, 0x67, 0xfe, 0xb6, 0x5c, 0x9f, 0x7a, 0xa1, 0xce, 0xf7, 0x06, 0xd5, 0xaf, 0x99, 0xe9,
- 0x33, 0xdd, 0x5d, 0xc4, 0xe0, 0xf2, 0x17, 0x87, 0x33, 0xd3, 0x47, 0x5f, 0x00, 0x44, 0xcf, 0x08,
- 0x45, 0xd4, 0x54, 0x0a, 0x0a, 0x44, 0xeb, 0x23, 0xd4, 0x9c, 0x2e, 0x6b, 0x25, 0x7c, 0x65, 0x88,
- 0x1e, 0xc1, 0x8a, 0x49, 0x55, 0x3c, 0xd1, 0xc3, 0xca, 0xdc, 0x1e, 0x2e, 0x33, 0x72, 0xb9, 0x8f,
- 0xca, 0x09, 0x54, 0x42, 0xde, 0x68, 0x05, 0x9a, 0xf8, 0xf0, 0xe9, 0xb0, 0xa7, 0x0e, 0xbf, 0x1d,
- 0xf4, 0x54, 0x11, 0xe7, 0xdb, 0x80, 0x15, 0x09, 0xd8, 0x3f, 0x18, 0xf6, 0xf0, 0x41, 0x77, 0xaf,
- 0x95, 0x4b, 0x20, 0x7a, 0xcf, 0x05, 0x22, 0x8f, 0x56, 0xa1, 0x25, 0x21, 0xf6, 0x0e, 0xb7, 0xbb,
- 0x7b, 0xad, 0x82, 0x32, 0x86, 0x66, 0xd8, 0x72, 0x97, 0xe7, 0xa5, 0xdc, 0x8f, 0x09, 0xf3, 0x35,
- 0x79, 0xe4, 0x31, 0x42, 0x49, 0x9e, 0x6f, 0x42, 0x35, 0x18, 0xad, 0x11, 0xbe, 0xbc, 0x94, 0x41,
- 0xca, 0x01, 0x54, 0xf6, 0x89, 0x2e, 0x5a, 0x78, 0x27, 0xd6, 0xc2, 0x86, 0x1c, 0x4c, 0xd0, 0x53,
- 0xbc, 0x57, 0x61, 0xf1, 0x54, 0x33, 0x67, 0xc1, 0xc3, 0x74, 0x5e, 0x50, 0x54, 0x68, 0x76, 0xbd,
- 0x81, 0x4b, 0x1c, 0x62, 0x05, 0x5c, 0x5b, 0x50, 0xd0, 0x3c, 0x4b, 0xec, 0xdb, 0xf4, 0x2f, 0x55,
- 0x33, 0x4a, 0xa1, 0x85, 0xa7, 0x74, 0x5e, 0x42, 0x0a, 0xd4, 0xe9, 0x86, 0x62, 0x92, 0xb1, 0xaf,
- 0x4e, 0x6d, 0xcf, 0x17, 0xee, 0x61, 0x75, 0xe6, 0x91, 0x3d, 0x32, 0xf6, 0xf7, 0x6d, 0xf6, 0x5a,
- 0xa1, 0x2e, 0x6e, 0x87, 0x05, 0xfb, 0x0b, 0x1f, 0xf9, 0x7a, 0xc4, 0x1c, 0x0b, 0xe7, 0x94, 0xfd,
- 0x57, 0xee, 0x40, 0x73, 0x8f, 0x9d, 0xb3, 0x5c, 0x32, 0x16, 0x0c, 0xc2, 0x81, 0x88, 0x48, 0x02,
- 0x1f, 0xc8, 0x6f, 0x0a, 0xb0, 0xc4, 0x09, 0xbc, 0xe8, 0x82, 0x4a, 0xe3, 0xf9, 0x47, 0x29, 0x43,
- 0xc9, 0x84, 0x82, 0x53, 0x8b, 0x0b, 0x2a, 0xc1, 0xfb, 0x63, 0xa8, 0x44, 0x41, 0xb6, 0x7c, 0xf2,
- 0x66, 0x2a, 0xb1, 0x70, 0x38, 0xa2, 0x45, 0xb7, 0xa1, 0x40, 0x1d, 0xf1, 0x42, 0xf2, 0x02, 0x2d,
- 0x5c, 0x09, 0x4c, 0xf1, 0xe8, 0x13, 0x00, 0xaa, 0xe1, 0x7c, 0xbe, 0x85, 0x82, 0x5f, 0x89, 0xd9,
- 0x06, 0x79, 0x29, 0x98, 0x9e, 0x73, 0x00, 0xfa, 0x12, 0xea, 0x31, 0x75, 0x15, 0x7a, 0x7e, 0x41,
- 0xef, 0x6a, 0xb2, 0xc6, 0xa2, 0xfb, 0xb0, 0x24, 0xae, 0xef, 0x85, 0x92, 0x4b, 0xe2, 0x12, 0x5b,
- 0x20, 0x1c, 0xd0, 0xd1, 0xce, 0x8a, 0x53, 0xaf, 0x4b, 0xc6, 0x62, 0x73, 0xbe, 0x22, 0xef, 0x9f,
- 0xb1, 0x75, 0x09, 0x0e, 0xc4, 0x2e, 0x19, 0xa3, 0x47, 0xd0, 0x4c, 0xe8, 0xae, 0xd8, 0x7e, 0x2f,
- 0xe8, 0x6e, 0x23, 0xae, 0xbe, 0xca, 0x2f, 0x72, 0x50, 0x09, 0x9f, 0x58, 0x85, 0xbb, 0x47, 0x4e,
- 0xda, 0xc8, 0x3e, 0x02, 0x18, 0x85, 0x46, 0x44, 0xac, 0xd6, 0x6a, 0x96, 0x81, 0xc1, 0x12, 0x1d,
- 0x7a, 0x07, 0x96, 0xb8, 0x58, 0x78, 0x62, 0xb5, 0xe4, 0xbb, 0x43, 0x8e, 0xc0, 0x01, 0x85, 0xf2,
- 0x35, 0x94, 0x84, 0x57, 0x96, 0xd5, 0x81, 0xf8, 0x23, 0xcd, 0xfc, 0xe5, 0x1e, 0x69, 0xfe, 0x6b,
- 0x0e, 0x5a, 0xc9, 0x5b, 0x3e, 0x74, 0x37, 0xa6, 0xc9, 0xab, 0xc9, 0xfb, 0x40, 0x49, 0x8d, 0xe5,
- 0xfc, 0xa5, 0xfc, 0x25, 0xf2, 0x97, 0x32, 0x72, 0x4a, 0x63, 0x0f, 0x17, 0x8b, 0x2f, 0x7b, 0xb8,
- 0x88, 0xde, 0x87, 0x25, 0x9d, 0x8c, 0x35, 0x6a, 0xe4, 0x17, 0x2f, 0x52, 0xa4, 0x80, 0x4a, 0xf9,
- 0xf3, 0x1c, 0x14, 0xb0, 0xad, 0xa1, 0x06, 0xe4, 0xb5, 0xe0, 0x50, 0x93, 0xd7, 0x3c, 0x74, 0x15,
- 0xc4, 0x06, 0x6b, 0x92, 0xc0, 0x21, 0x8a, 0x00, 0xd4, 0xc8, 0x4c, 0x35, 0x86, 0x12, 0x8f, 0x29,
- 0x78, 0x49, 0x7a, 0x29, 0x50, 0x8c, 0x3d, 0x1e, 0x09, 0xee, 0xec, 0x17, 0x2f, 0x4e, 0xb5, 0x50,
- 0xee, 0xf0, 0x07, 0x13, 0xb6, 0xf6, 0xb2, 0xf4, 0x09, 0xfe, 0x52, 0x9c, 0x11, 0x46, 0x2f, 0xc5,
- 0x5d, 0x5b, 0xcb, 0x78, 0x29, 0x4e, 0x89, 0x18, 0x4a, 0xf1, 0xa0, 0xf0, 0xcc, 0x1d, 0x67, 0x4a,
- 0x47, 0x03, 0xf2, 0x2e, 0x3f, 0xd9, 0xd7, 0x70, 0xde, 0xd5, 0x99, 0xcb, 0xc8, 0x2f, 0x7f, 0x5d,
- 0xee, 0x7c, 0xd5, 0x70, 0x99, 0x03, 0x30, 0xcb, 0x9f, 0x13, 0x57, 0xcb, 0xae, 0xcf, 0xd6, 0xa4,
- 0x86, 0xcb, 0x1c, 0x80, 0x7d, 0x71, 0x4b, 0xc7, 0xaf, 0x35, 0xf3, 0x86, 0xae, 0xfc, 0x3a, 0x07,
- 0x25, 0xfe, 0x2a, 0x2b, 0x35, 0xc7, 0x9b, 0x50, 0x89, 0x4e, 0xeb, 0x22, 0xd7, 0xce, 0x0d, 0x8e,
- 0xe7, 0x37, 0xa0, 0x4a, 0xbd, 0x3d, 0x62, 0xf1, 0xc0, 0x51, 0x81, 0x6f, 0xd9, 0x1c, 0xc4, 0x02,
- 0x47, 0x6f, 0x43, 0x4b, 0x10, 0x08, 0x9b, 0x2c, 0x04, 0xa4, 0x82, 0x9b, 0x1c, 0xde, 0x0d, 0xc0,
- 0xb1, 0x87, 0x18, 0x8b, 0x89, 0x87, 0x18, 0xef, 0x66, 0x1e, 0x34, 0x44, 0x78, 0x25, 0x79, 0x98,
- 0x50, 0xfe, 0x31, 0x07, 0x15, 0xf6, 0xe2, 0xa4, 0x6f, 0x8d, 0xed, 0xdf, 0xc9, 0x7b, 0x9c, 0x3b,
- 0xd0, 0xb4, 0x66, 0x53, 0x55, 0x7a, 0x68, 0x23, 0xc2, 0x91, 0x0d, 0x6b, 0x36, 0x95, 0x1f, 0x2a,
- 0x5d, 0x81, 0xb2, 0x25, 0x4e, 0xe3, 0x41, 0xf4, 0xdb, 0xe2, 0x07, 0x71, 0x7a, 0xf8, 0xa4, 0xa8,
- 0xf0, 0x2a, 0x82, 0xc7, 0x1b, 0xab, 0xd6, 0x6c, 0xda, 0x15, 0x20, 0xe5, 0x73, 0xf6, 0x30, 0x0f,
- 0x1b, 0xc7, 0x74, 0x20, 0x81, 0xb4, 0x05, 0x4f, 0x36, 0x52, 0xef, 0x92, 0xc3, 0x21, 0xf3, 0x27,
- 0x1b, 0xca, 0x17, 0x2c, 0xd5, 0x3d, 0xac, 0x2d, 0x44, 0xf0, 0xb2, 0xd5, 0xef, 0x6d, 0x43, 0x39,
- 0x98, 0x21, 0x04, 0x50, 0xda, 0xdd, 0x3b, 0x7c, 0xd4, 0xdd, 0x6b, 0x2d, 0xa0, 0x0a, 0x2c, 0x72,
- 0x1f, 0x85, 0x5d, 0x61, 0x74, 0x77, 0x7e, 0xae, 0xf6, 0x0f, 0x5a, 0x79, 0x54, 0x85, 0x25, 0xfa,
- 0xff, 0xf0, 0xe9, 0xb0, 0x55, 0x40, 0x4b, 0x50, 0x78, 0x86, 0x1f, 0xb7, 0x8a, 0xf7, 0x7c, 0xa8,
- 0x4a, 0x67, 0x08, 0x76, 0xe7, 0x81, 0x7b, 0x8f, 0xfb, 0xcf, 0x5b, 0x0b, 0xa8, 0x06, 0xe5, 0x83,
- 0x5e, 0x7f, 0xf7, 0xc9, 0xa3, 0x43, 0xdc, 0xca, 0xd1, 0x1a, 0xc3, 0xee, 0xae, 0xe0, 0x73, 0xa4,
- 0x0e, 0xba, 0xc3, 0x27, 0xad, 0x02, 0xaa, 0x43, 0x65, 0xfb, 0x70, 0x7f, 0xff, 0xe9, 0x41, 0x7f,
- 0xf8, 0x6d, 0xab, 0x88, 0x96, 0xa1, 0xde, 0x7b, 0x3e, 0x54, 0x23, 0xd0, 0x22, 0xf5, 0xc1, 0xf6,
- 0xba, 0x78, 0xb7, 0x27, 0x01, 0x4b, 0xf7, 0xde, 0x86, 0x4a, 0x78, 0x58, 0x60, 0x17, 0xaf, 0x07,
- 0xdf, 0xca, 0x37, 0xb0, 0x00, 0xa5, 0xfe, 0xc1, 0xb3, 0x1e, 0x1e, 0xb6, 0xf2, 0xf7, 0xee, 0x41,
- 0x2b, 0x79, 0x14, 0x40, 0x25, 0xc8, 0xf7, 0xbe, 0x6e, 0x2d, 0xd0, 0xdf, 0xdd, 0x5e, 0x2b, 0x47,
- 0x7f, 0xf7, 0x7a, 0xad, 0xfc, 0xbd, 0xf7, 0x45, 0xb0, 0x53, 0x6c, 0xed, 0xd1, 0xdd, 0x2e, 0x9d,
- 0x87, 0xed, 0xed, 0xde, 0x60, 0xc8, 0x99, 0xe3, 0xde, 0xcf, 0x7b, 0xdb, 0x94, 0xf9, 0x53, 0x58,
- 0xc9, 0x70, 0xcd, 0xe8, 0x30, 0xc2, 0xde, 0xaa, 0xdd, 0x9d, 0x9d, 0xd6, 0x02, 0xf5, 0x01, 0x23,
- 0x10, 0xee, 0xed, 0x1f, 0x3e, 0xa3, 0x0d, 0xaf, 0xc1, 0xb2, 0x0c, 0x15, 0x97, 0xc6, 0xf7, 0xde,
- 0x83, 0x7a, 0xcc, 0x1f, 0xa3, 0x73, 0xb6, 0xdf, 0xdb, 0x51, 0xf7, 0x0f, 0x29, 0xab, 0x26, 0x54,
- 0x69, 0x21, 0x20, 0xcf, 0xdd, 0x7b, 0x17, 0x20, 0x32, 0xfa, 0x61, 0x72, 0x33, 0x9d, 0x84, 0xfd,
- 0xc1, 0x21, 0x16, 0x7d, 0xee, 0x3d, 0x67, 0xff, 0xf3, 0x0f, 0xfe, 0xed, 0x06, 0x94, 0x77, 0xa9,
- 0x4c, 0x74, 0x1d, 0x03, 0xed, 0x41, 0x55, 0x7a, 0x9a, 0x89, 0xae, 0xc6, 0xb6, 0xa2, 0xc4, 0x8b,
- 0xcf, 0xce, 0xb5, 0x39, 0x58, 0xf1, 0xe2, 0x6a, 0x01, 0xf5, 0x01, 0xa2, 0xc7, 0x9b, 0x68, 0x53,
- 0x26, 0x4f, 0xbc, 0xf3, 0xec, 0x5c, 0xcd, 0x46, 0x86, 0xac, 0x1e, 0x43, 0x25, 0x7c, 0xb2, 0x8a,
- 0xa4, 0x63, 0x5d, 0xf2, 0x6d, 0x6b, 0x67, 0x33, 0x13, 0x17, 0xf2, 0xd9, 0x83, 0xaa, 0x94, 0x6b,
- 0x2f, 0x0f, 0x30, 0x9d, 0xbc, 0x2f, 0x0f, 0x30, 0x2b, 0x41, 0x7f, 0x01, 0x3d, 0x85, 0x46, 0x3c,
- 0xcb, 0x1e, 0xdd, 0x90, 0xcf, 0xd2, 0x19, 0xc9, 0xfb, 0x9d, 0x9b, 0xf3, 0x09, 0xe4, 0x4e, 0x4a,
- 0xdf, 0x95, 0x90, 0x3b, 0x99, 0xfe, 0x94, 0x85, 0xdc, 0xc9, 0x8c, 0x8f, 0x51, 0x28, 0x0b, 0x08,
- 0x43, 0x3d, 0x96, 0xbe, 0x8e, 0xae, 0xc7, 0x4c, 0x62, 0x9a, 0xe3, 0x8d, 0xb9, 0xf8, 0x90, 0xe7,
- 0x1f, 0xc0, 0x72, 0x2a, 0x2d, 0x1e, 0x29, 0x2f, 0x4f, 0xcf, 0xef, 0xfc, 0xe8, 0x42, 0x9a, 0x90,
- 0xff, 0xff, 0x87, 0x56, 0x32, 0xfd, 0x1d, 0xdd, 0x92, 0xaa, 0x66, 0x67, 0xdd, 0x77, 0x94, 0x8b,
- 0x48, 0xe4, 0x55, 0x8b, 0x27, 0xc3, 0xcb, 0xab, 0x96, 0x99, 0x59, 0x2f, 0xaf, 0xda, 0x9c, 0x3c,
- 0xfa, 0x05, 0xf4, 0x1c, 0x9a, 0x89, 0x7c, 0x77, 0x24, 0x2f, 0x76, 0x66, 0x92, 0x7d, 0xe7, 0xd6,
- 0x05, 0x14, 0x21, 0xe7, 0x2f, 0xa0, 0xc4, 0x0d, 0x3b, 0xda, 0x88, 0x2d, 0x76, 0xf4, 0x9a, 0xb2,
- 0xd3, 0x4e, 0x23, 0x64, 0x71, 0x92, 0x5e, 0x44, 0xca, 0xe2, 0x94, 0x7e, 0x96, 0x29, 0x8b, 0x53,
- 0xd6, 0x33, 0xca, 0x05, 0xf4, 0x33, 0x58, 0x12, 0x5f, 0xf4, 0x40, 0xed, 0x98, 0x7e, 0x48, 0x5f,
- 0xee, 0xe8, 0x5c, 0xc9, 0xc0, 0xc8, 0x66, 0x21, 0xfa, 0x7e, 0x86, 0x6c, 0x16, 0x52, 0x5f, 0x00,
- 0x91, 0xcd, 0x42, 0xc6, 0x27, 0x37, 0x16, 0xd0, 0x0e, 0x40, 0x94, 0xf1, 0x2d, 0xb3, 0x4a, 0xe5,
- 0x81, 0x77, 0xb2, 0x1f, 0xcf, 0x2a, 0x0b, 0x1f, 0xe4, 0xd0, 0x67, 0x61, 0x46, 0x7b, 0xf4, 0x8e,
- 0x45, 0xda, 0x28, 0xc3, 0xcf, 0xb4, 0x74, 0x12, 0xdf, 0xda, 0x60, 0x95, 0x1f, 0x43, 0x25, 0xfc,
- 0xc4, 0x80, 0x6c, 0x99, 0x92, 0x1f, 0x38, 0x90, 0x2d, 0x53, 0xfa, 0x9b, 0x04, 0x7c, 0x56, 0xc2,
- 0x0f, 0x10, 0xc4, 0x66, 0x25, 0xf9, 0xad, 0x82, 0xd8, 0xac, 0xa4, 0xbf, 0x59, 0xb0, 0x80, 0x9e,
- 0x40, 0x25, 0xfc, 0x68, 0x80, 0xdc, 0xa5, 0xe4, 0xa7, 0x0c, 0xe4, 0x2e, 0xa5, 0xbf, 0x32, 0xb0,
- 0x70, 0x37, 0x47, 0x25, 0x8f, 0xa7, 0xee, 0xcb, 0x92, 0x17, 0xfb, 0x4a, 0x40, 0xa7, 0x9d, 0x46,
- 0xc8, 0x56, 0x3b, 0xcc, 0xd2, 0x97, 0x3b, 0x92, 0x4c, 0xfe, 0xef, 0x6c, 0x66, 0xe2, 0x64, 0x99,
- 0x13, 0x79, 0xc9, 0x28, 0x21, 0xe8, 0x51, 0x42, 0xab, 0x2c, 0x73, 0x89, 0x24, 0xe6, 0x50, 0x6a,
- 0x93, 0x1c, 0xe2, 0xf9, 0xca, 0x09, 0xa9, 0x4d, 0x70, 0x08, 0xa5, 0x96, 0x31, 0x49, 0x75, 0x58,
- 0xe6, 0x73, 0x35, 0x1b, 0x29, 0xb3, 0x8a, 0x52, 0x86, 0x51, 0x4a, 0x2e, 0xe6, 0xb0, 0xca, 0xc8,
- 0x32, 0x66, 0xba, 0x2d, 0xe5, 0x0d, 0xa3, 0xb4, 0x64, 0xc8, 0xcc, 0xae, 0xcd, 0xc1, 0xca, 0xeb,
- 0x15, 0x66, 0xfd, 0xca, 0xeb, 0x95, 0x4c, 0x1e, 0x96, 0xd7, 0x2b, 0x9d, 0x26, 0xcc, 0xb6, 0x9c,
- 0x58, 0x06, 0xb1, 0xbc, 0xe5, 0x64, 0x25, 0x23, 0xcb, 0x5b, 0x4e, 0x76, 0xea, 0x71, 0x68, 0x04,
- 0x6d, 0x2d, 0x69, 0x04, 0xc3, 0x73, 0x59, 0xd2, 0x08, 0x46, 0xe7, 0x30, 0x3e, 0x51, 0x52, 0xb6,
- 0x2f, 0x4a, 0xcd, 0xab, 0x9c, 0xd1, 0x2c, 0x4f, 0x54, 0x56, 0x8a, 0xf0, 0x82, 0xd0, 0x0b, 0x7a,
- 0x6e, 0x8b, 0xeb, 0x45, 0x94, 0xa9, 0x9b, 0xd0, 0x0b, 0x39, 0x1b, 0x57, 0xd2, 0x0b, 0xca, 0x21,
- 0xa5, 0x17, 0x12, 0x93, 0xcd, 0x4c, 0x5c, 0x62, 0x4e, 0x12, 0xdd, 0x88, 0x65, 0x2f, 0x27, 0xe6,
- 0x24, 0x5e, 0x1d, 0xb3, 0x83, 0xad, 0x74, 0x2f, 0x70, 0x3d, 0x46, 0x9c, 0xca, 0x63, 0x95, 0x97,
- 0x29, 0x33, 0xf1, 0x97, 0xf3, 0x8c, 0x25, 0xe4, 0xca, 0x3c, 0xb3, 0x32, 0x7d, 0x65, 0x9e, 0xd9,
- 0x99, 0xbc, 0xcc, 0x1b, 0x48, 0xa6, 0xdd, 0xca, 0xde, 0xc0, 0x9c, 0x3c, 0x5f, 0xd9, 0x1b, 0x98,
- 0x9b, 0xb5, 0xcb, 0x5c, 0x99, 0x54, 0xce, 0xad, 0xec, 0xca, 0xcc, 0x4b, 0xea, 0x95, 0x5d, 0x99,
- 0xf9, 0x49, 0xbb, 0x0b, 0xe8, 0x10, 0x6a, 0x72, 0x7e, 0x2e, 0x8a, 0xfb, 0x6b, 0xc9, 0x54, 0xd4,
- 0xce, 0xf5, 0x79, 0x68, 0x99, 0xa1, 0x9c, 0x59, 0x8b, 0xe2, 0x5e, 0xea, 0x45, 0x0c, 0x33, 0x13,
- 0x72, 0xb9, 0xe3, 0x12, 0xcf, 0x99, 0x45, 0x29, 0x2f, 0x35, 0xc5, 0xf6, 0xd6, 0x05, 0x14, 0xf2,
- 0xc2, 0x25, 0x93, 0x64, 0xe5, 0x85, 0x9b, 0x93, 0x8e, 0xdb, 0x51, 0x2e, 0x22, 0x49, 0x1c, 0x09,
- 0x44, 0x70, 0x2d, 0x7e, 0x24, 0x88, 0xa5, 0x7c, 0x26, 0x8e, 0x04, 0x89, 0xfc, 0x4a, 0xc6, 0x27,
- 0x4c, 0x29, 0x94, 0xf9, 0x24, 0x73, 0x6d, 0x65, 0x3e, 0xe9, 0x6c, 0x58, 0xb6, 0x2e, 0x72, 0x32,
- 0xa0, 0xbc, 0x2e, 0x19, 0x69, 0xb2, 0xf2, 0xba, 0x64, 0x66, 0xb0, 0x0a, 0xc7, 0x5d, 0xca, 0xee,
- 0x8b, 0x3b, 0xee, 0xe9, 0xdc, 0xd6, 0xb8, 0xe3, 0x9e, 0x95, 0x4c, 0xba, 0x80, 0x74, 0x96, 0x44,
- 0x9e, 0x8a, 0x1e, 0xfe, 0x38, 0x63, 0x8a, 0x52, 0xa9, 0x8a, 0x9d, 0xdb, 0x2f, 0xa1, 0x92, 0x5b,
- 0xc9, 0xc8, 0xd2, 0x94, 0x5b, 0x99, 0x9f, 0x1e, 0x2a, 0xb7, 0x72, 0x51, 0xaa, 0xe7, 0x02, 0x9a,
- 0x06, 0xa9, 0xe4, 0xa9, 0x86, 0xee, 0x64, 0xcf, 0x6d, 0xba, 0xad, 0xbb, 0x2f, 0x27, 0x0c, 0x9b,
- 0x73, 0xc2, 0xfc, 0xf1, 0x74, 0xf0, 0x75, 0xce, 0xc4, 0xa7, 0x1b, 0x7c, 0xfb, 0x12, 0x94, 0xb2,
- 0x9f, 0x10, 0x05, 0x74, 0xd0, 0x66, 0xd2, 0xc5, 0x97, 0x82, 0x44, 0x9d, 0xab, 0xd9, 0xc8, 0x80,
- 0xd5, 0x71, 0x89, 0x7d, 0x17, 0xf1, 0xc3, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x67, 0x70,
- 0x62, 0x26, 0x51, 0x00, 0x00,
+ // 6761 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x7c, 0x4b, 0x8f, 0x1b, 0x49,
+ 0x72, 0x70, 0xf3, 0xd1, 0x6c, 0x32, 0x48, 0x36, 0xd9, 0xd9, 0x2f, 0x8a, 0x3d, 0x7a, 0xd5, 0x8e,
+ 0x46, 0x1a, 0x8d, 0x46, 0x33, 0xd2, 0xcc, 0x68, 0x66, 0x47, 0xab, 0xd9, 0xa5, 0xba, 0xa9, 0x16,
+ 0x77, 0xfa, 0xc1, 0xc9, 0xa6, 0xb4, 0x9a, 0xfd, 0x76, 0xbf, 0x72, 0x35, 0x2b, 0xc9, 0x2e, 0x4f,
+ 0xb1, 0xaa, 0xa6, 0xaa, 0xd8, 0xea, 0x86, 0x01, 0x1b, 0x58, 0x03, 0x86, 0x01, 0xc3, 0x17, 0x5f,
+ 0x6d, 0xc0, 0xf7, 0x85, 0x7d, 0xf0, 0xc9, 0x80, 0xcf, 0x5e, 0xc3, 0xc0, 0x02, 0xbe, 0xd8, 0x47,
+ 0x63, 0x7d, 0xf0, 0x0f, 0xf0, 0xc5, 0x07, 0x1f, 0x7c, 0x30, 0xf2, 0x51, 0x55, 0x59, 0x0f, 0x76,
+ 0xb7, 0xb4, 0x5a, 0x1b, 0x06, 0x7c, 0x22, 0x2b, 0x22, 0x32, 0x32, 0x32, 0x33, 0x22, 0x32, 0xf2,
+ 0x15, 0x50, 0x1d, 0xdb, 0x87, 0x63, 0xe7, 0xae, 0xe3, 0xda, 0xbe, 0x8d, 0xca, 0xec, 0x43, 0x73,
+ 0x0c, 0xe5, 0xc7, 0x80, 0xb6, 0x89, 0xbf, 0x47, 0x8c, 0xf1, 0xd1, 0xa1, 0xed, 0x62, 0xf2, 0xed,
+ 0x94, 0x78, 0x3e, 0xba, 0x0d, 0x4d, 0x62, 0x69, 0x87, 0x26, 0xe9, 0xe8, 0xc7, 0xc4, 0xf5, 0x0d,
+ 0x8f, 0xe8, 0xad, 0xdc, 0xb5, 0xdc, 0xad, 0x32, 0x4e, 0xc1, 0x51, 0x0b, 0x16, 0x34, 0x5d, 0x77,
+ 0x89, 0xe7, 0xb5, 0xf2, 0xd7, 0x72, 0xb7, 0x2a, 0x38, 0xf8, 0x54, 0x1e, 0xc2, 0x72, 0x8c, 0xb7,
+ 0xe7, 0xd8, 0x96, 0x47, 0xd0, 0xdb, 0x30, 0xef, 0x10, 0xe2, 0x7a, 0xad, 0xdc, 0xb5, 0xc2, 0xad,
+ 0xea, 0xfd, 0xc5, 0xbb, 0x81, 0x30, 0x77, 0xfb, 0x84, 0xb8, 0x98, 0x23, 0x95, 0x31, 0x54, 0x3a,
+ 0xee, 0x78, 0x3a, 0x21, 0x96, 0xef, 0xa1, 0xbb, 0x50, 0x76, 0x89, 0x67, 0x4f, 0xdd, 0x21, 0x61,
+ 0x72, 0x2c, 0xde, 0x47, 0x51, 0x29, 0x2c, 0x30, 0x38, 0xa4, 0x41, 0x6b, 0x50, 0x1a, 0x69, 0x13,
+ 0xc3, 0x3c, 0x65, 0x22, 0xd5, 0xb1, 0xf8, 0x42, 0x08, 0x8a, 0x96, 0x36, 0x21, 0xad, 0x02, 0x13,
+ 0x94, 0xfd, 0x57, 0x7e, 0x07, 0x16, 0x3b, 0xba, 0xde, 0xd7, 0xfc, 0xa3, 0xa0, 0xf5, 0xaf, 0x5a,
+ 0xdb, 0x2a, 0x94, 0x8e, 0xdd, 0x91, 0x6a, 0xe8, 0xa2, 0x03, 0xe6, 0x8f, 0xdd, 0x51, 0x4f, 0x47,
+ 0x0a, 0x14, 0x1d, 0xcd, 0x3f, 0x62, 0x95, 0xc5, 0x9b, 0x49, 0xeb, 0x62, 0x38, 0xe5, 0x06, 0x34,
+ 0xc2, 0xca, 0x45, 0xf7, 0x20, 0x28, 0x4e, 0xa7, 0x06, 0xef, 0xef, 0x1a, 0x66, 0xff, 0x95, 0x9f,
+ 0xe7, 0x60, 0x69, 0x8b, 0x98, 0xc4, 0x27, 0xbf, 0x01, 0x39, 0xa3, 0xce, 0x2a, 0xc4, 0x3a, 0x2b,
+ 0x90, 0xbf, 0x38, 0x5b, 0xfe, 0x50, 0xd8, 0x79, 0x49, 0xd8, 0x15, 0x40, 0xb2, 0xac, 0xbc, 0x59,
+ 0xca, 0x67, 0x80, 0x3a, 0xba, 0x9e, 0x54, 0x34, 0x5a, 0x07, 0x21, 0x2e, 0x13, 0x3f, 0xad, 0x0a,
+ 0x0c, 0xa7, 0xac, 0xc2, 0x72, 0xac, 0xa4, 0x60, 0xf8, 0x10, 0x56, 0x79, 0x35, 0xaf, 0xc3, 0xb3,
+ 0x05, 0x6b, 0xc9, 0xc2, 0x82, 0xed, 0x73, 0x58, 0xc1, 0xc4, 0x4b, 0x9b, 0x84, 0xa4, 0xe6, 0xb9,
+ 0x98, 0x9a, 0xa3, 0xb7, 0xa1, 0x3e, 0xb4, 0x27, 0x93, 0xa9, 0x65, 0x0c, 0x35, 0xdf, 0xb0, 0x2d,
+ 0xd1, 0xbb, 0x71, 0xa0, 0xb2, 0x0e, 0xab, 0x09, 0xbe, 0xa2, 0xc2, 0xbf, 0xc9, 0x41, 0xeb, 0xc0,
+ 0x1e, 0xf9, 0xaf, 0x58, 0xeb, 0x01, 0x54, 0x74, 0xc3, 0x25, 0xc3, 0xb0, 0xc6, 0xc5, 0xfb, 0x9f,
+ 0x44, 0x4d, 0x9d, 0xc5, 0x30, 0x42, 0x6c, 0x05, 0x85, 0x71, 0xc4, 0x47, 0xf9, 0x00, 0x50, 0x9a,
+ 0x00, 0x95, 0x20, 0xdf, 0xdb, 0x6b, 0xce, 0xa1, 0x05, 0x28, 0xec, 0x3f, 0x1b, 0x34, 0x73, 0xa8,
+ 0x0c, 0xc5, 0xc7, 0xfb, 0x83, 0xa7, 0xcd, 0xbc, 0xb2, 0x01, 0x97, 0x32, 0xaa, 0x12, 0x2d, 0xfb,
+ 0x1a, 0xd6, 0x0f, 0x8e, 0xa6, 0xbe, 0x6e, 0xbf, 0xb4, 0xde, 0x74, 0x6f, 0xb6, 0xa1, 0x95, 0x66,
+ 0x2d, 0xaa, 0xbd, 0x07, 0xab, 0x5d, 0xe6, 0xa4, 0x2e, 0x5c, 0x29, 0x55, 0x87, 0x64, 0x11, 0xc1,
+ 0xec, 0x05, 0xac, 0x6d, 0x19, 0xde, 0x2b, 0x71, 0xbb, 0x60, 0x13, 0x2e, 0xc1, 0x7a, 0x8a, 0xb3,
+ 0xa8, 0x74, 0x0c, 0x4d, 0x2e, 0xce, 0xae, 0xeb, 0x07, 0xd5, 0x6d, 0x40, 0x45, 0x9f, 0x4e, 0x1c,
+ 0xd5, 0x3f, 0x75, 0xb8, 0xb5, 0xcf, 0xe3, 0x32, 0x05, 0x0c, 0x4e, 0x1d, 0x82, 0xda, 0x50, 0x1e,
+ 0x19, 0x26, 0x61, 0xbe, 0x8d, 0x57, 0x16, 0x7e, 0x53, 0x9c, 0x61, 0xf9, 0xc4, 0x3d, 0xd6, 0x4c,
+ 0x66, 0xe0, 0x45, 0x1c, 0x7e, 0x2b, 0xcb, 0xb0, 0x24, 0x55, 0x24, 0x6a, 0x5f, 0x86, 0x25, 0x21,
+ 0x58, 0x54, 0x3d, 0x33, 0x6a, 0x09, 0x28, 0x48, 0x7f, 0x0f, 0x9a, 0x3d, 0xeb, 0xb7, 0xc9, 0xd0,
+ 0x97, 0x04, 0x7d, 0x43, 0x5e, 0x89, 0xce, 0x12, 0x9a, 0x7f, 0xe4, 0xb5, 0x0a, 0xa9, 0x59, 0x82,
+ 0xba, 0x15, 0x8e, 0xa4, 0xb2, 0x4a, 0x02, 0x08, 0xa9, 0xfe, 0x22, 0x07, 0xf5, 0x8e, 0xae, 0x3f,
+ 0x9e, 0x38, 0xe7, 0x8f, 0x15, 0x82, 0xa2, 0x63, 0xbb, 0xbe, 0x98, 0x27, 0xd8, 0x7f, 0xf4, 0x3d,
+ 0x28, 0xb2, 0x5e, 0x2e, 0x30, 0xe9, 0x6f, 0x45, 0x35, 0xc7, 0x98, 0xde, 0xdd, 0xb5, 0x2d, 0xc3,
+ 0xb7, 0x5d, 0xc3, 0x1a, 0xf7, 0x6d, 0xd3, 0x18, 0x9e, 0x62, 0x56, 0x4a, 0xf9, 0x00, 0x9a, 0x49,
+ 0x0c, 0xb5, 0x9c, 0x3e, 0xee, 0x36, 0xe7, 0xa8, 0xe5, 0xf4, 0xf7, 0x0f, 0xe2, 0x36, 0xd4, 0x64,
+ 0x13, 0x10, 0x63, 0x2c, 0x1a, 0xf0, 0x03, 0x68, 0x72, 0xef, 0xf4, 0xba, 0x4d, 0x60, 0x63, 0x18,
+ 0x71, 0x10, 0x6c, 0x07, 0xb0, 0x24, 0x24, 0xc3, 0xc6, 0x61, 0xc0, 0xf7, 0x06, 0xcc, 0xfb, 0x74,
+ 0x58, 0x85, 0xbb, 0x6c, 0x44, 0xad, 0x1d, 0x50, 0x30, 0xe6, 0x58, 0x5a, 0xfd, 0x70, 0xea, 0xba,
+ 0xc4, 0xe2, 0xf5, 0x94, 0x71, 0xf0, 0xa9, 0x74, 0xa1, 0x8c, 0xfb, 0x5f, 0xf6, 0x36, 0x6d, 0x6b,
+ 0x74, 0x86, 0x90, 0x57, 0xa1, 0xea, 0x92, 0x89, 0xed, 0x13, 0x35, 0x94, 0xb5, 0x82, 0x81, 0x83,
+ 0xfa, 0x54, 0xe2, 0x3f, 0x2b, 0x42, 0x85, 0xf2, 0x39, 0xf0, 0x35, 0x9f, 0x4d, 0xe0, 0x53, 0xc7,
+ 0x37, 0x26, 0x5c, 0xac, 0x02, 0x16, 0x5f, 0x54, 0x99, 0xa9, 0xcd, 0x33, 0x4c, 0x9e, 0x61, 0xc2,
+ 0x6f, 0xb4, 0x08, 0xf9, 0xa9, 0xc3, 0x06, 0xad, 0x8c, 0xf3, 0x53, 0x87, 0x57, 0x39, 0xb4, 0x5d,
+ 0x5d, 0x35, 0x9c, 0xe3, 0x8f, 0xd9, 0x34, 0x56, 0xa7, 0x55, 0x52, 0x50, 0xcf, 0x39, 0xfe, 0x38,
+ 0x4e, 0xf0, 0x80, 0xcd, 0x61, 0x32, 0xc1, 0x03, 0x4a, 0xe0, 0xb8, 0x64, 0x64, 0x9c, 0x70, 0x0e,
+ 0x25, 0x4e, 0xc0, 0x41, 0x01, 0x87, 0x88, 0xe0, 0x41, 0x6b, 0x21, 0x41, 0xf0, 0x80, 0xb6, 0xc3,
+ 0x23, 0xae, 0xa1, 0x99, 0xad, 0x32, 0x9f, 0x5b, 0xf9, 0x17, 0xfa, 0x0e, 0xd4, 0x5d, 0x32, 0x24,
+ 0xc6, 0x31, 0x11, 0xd2, 0x55, 0x58, 0x63, 0x6a, 0x01, 0x90, 0x71, 0x4f, 0x10, 0x3d, 0x68, 0x41,
+ 0x8a, 0xe8, 0x01, 0x25, 0xe2, 0x3c, 0x55, 0xcb, 0xf6, 0x8d, 0xd1, 0x69, 0xab, 0xca, 0x89, 0x38,
+ 0x70, 0x8f, 0xc1, 0xa8, 0x9c, 0x43, 0x6d, 0x78, 0x44, 0x54, 0x97, 0x3a, 0xea, 0x56, 0x8d, 0x91,
+ 0x00, 0x03, 0x31, 0xd7, 0x8d, 0x6e, 0xc0, 0x62, 0x48, 0xc0, 0x94, 0xa5, 0x55, 0x67, 0x34, 0xf5,
+ 0x80, 0x86, 0xc7, 0x26, 0x57, 0xa0, 0x4a, 0x2c, 0x5d, 0xb5, 0x47, 0xaa, 0xae, 0xf9, 0x5a, 0x6b,
+ 0x91, 0xd1, 0x54, 0x88, 0xa5, 0xef, 0x8f, 0xb6, 0x34, 0x5f, 0x43, 0x2b, 0x30, 0x4f, 0x5c, 0xd7,
+ 0x76, 0x5b, 0x0d, 0x86, 0xe1, 0x1f, 0xe8, 0x3a, 0x08, 0x69, 0xd4, 0x6f, 0xa7, 0xc4, 0x3d, 0x6d,
+ 0x35, 0x19, 0xb2, 0xca, 0x61, 0x5f, 0x51, 0x10, 0x1f, 0x0a, 0x8f, 0xf8, 0x82, 0x62, 0x89, 0x0b,
+ 0xc8, 0x40, 0x8c, 0x40, 0xf9, 0x1a, 0x8a, 0xd8, 0xf9, 0xc6, 0x40, 0xef, 0x40, 0x71, 0x68, 0x5b,
+ 0x23, 0xa1, 0xad, 0xb2, 0x67, 0x11, 0x3a, 0x88, 0x19, 0x1e, 0xbd, 0x0b, 0xf3, 0x1e, 0xd5, 0x24,
+ 0xa6, 0x25, 0xd5, 0xfb, 0xcb, 0x71, 0x42, 0xa6, 0x64, 0x98, 0x53, 0x28, 0xb7, 0x60, 0x71, 0x9b,
+ 0xf8, 0x94, 0x7b, 0x60, 0x13, 0x51, 0x44, 0x94, 0x93, 0x23, 0x22, 0xe5, 0x21, 0x34, 0x42, 0x4a,
+ 0xd1, 0x23, 0xb7, 0x60, 0xc1, 0x23, 0xee, 0x71, 0x66, 0x38, 0xcb, 0x08, 0x03, 0xb4, 0xf2, 0x63,
+ 0x66, 0xe6, 0x72, 0x35, 0xaf, 0xe6, 0x95, 0xda, 0x50, 0x36, 0x8d, 0x11, 0x61, 0xaa, 0x5f, 0xe0,
+ 0xaa, 0x1f, 0x7c, 0x2b, 0x4b, 0x2c, 0x8c, 0x94, 0x05, 0x53, 0x3a, 0x81, 0x07, 0x78, 0xed, 0x1a,
+ 0xa3, 0x40, 0x2e, 0xc6, 0xf8, 0xfd, 0x60, 0xce, 0xb8, 0x10, 0x63, 0xca, 0x44, 0x26, 0x17, 0x4c,
+ 0xee, 0x86, 0xd3, 0xc9, 0xc5, 0xb8, 0xac, 0xc2, 0x72, 0x8c, 0x5e, 0xb0, 0xb9, 0x03, 0x4d, 0xa6,
+ 0xbf, 0x17, 0x63, 0xb2, 0x0c, 0x4b, 0x12, 0xb5, 0x60, 0xf1, 0x21, 0xac, 0x84, 0x11, 0xcc, 0xc5,
+ 0xd8, 0xac, 0xc3, 0x6a, 0xa2, 0x84, 0x60, 0xf5, 0xcb, 0x5c, 0xd0, 0xd6, 0x1f, 0x93, 0x43, 0x57,
+ 0x0b, 0x38, 0x35, 0xa1, 0x30, 0x75, 0x4d, 0xc1, 0x85, 0xfe, 0x65, 0xda, 0x6e, 0x4f, 0x7d, 0xc2,
+ 0x26, 0x73, 0xba, 0x6c, 0x2a, 0x30, 0x67, 0x48, 0x41, 0x74, 0x3a, 0xf7, 0x68, 0xe5, 0x54, 0x67,
+ 0x68, 0xec, 0xc0, 0x63, 0xf2, 0xe0, 0x13, 0x7d, 0x0c, 0x6b, 0x16, 0x39, 0xf1, 0x8f, 0x6c, 0x47,
+ 0xf5, 0x5d, 0x63, 0x3c, 0x26, 0xae, 0xca, 0x57, 0x64, 0xcc, 0xbf, 0x95, 0xf1, 0x8a, 0xc0, 0x0e,
+ 0x38, 0x92, 0x8b, 0x83, 0xee, 0xc3, 0x6a, 0xb2, 0x94, 0x4e, 0x4c, 0xed, 0x54, 0xf8, 0xbc, 0xe5,
+ 0x78, 0xa1, 0x2d, 0x8a, 0xa2, 0x5d, 0x1e, 0x6b, 0x8c, 0x68, 0x64, 0x03, 0xea, 0xdb, 0xc4, 0x7f,
+ 0xee, 0x8e, 0x82, 0xc8, 0xe0, 0x23, 0x66, 0x3e, 0x0c, 0x20, 0x6c, 0xe2, 0x3a, 0x14, 0x8f, 0xdd,
+ 0x51, 0x60, 0x10, 0xf5, 0xc8, 0x20, 0x28, 0x11, 0x43, 0x29, 0x1f, 0xb2, 0x19, 0x3a, 0xe2, 0x82,
+ 0xae, 0x42, 0xe1, 0xd8, 0x0d, 0xcc, 0x3a, 0x51, 0x84, 0x62, 0xc4, 0x2c, 0x29, 0x55, 0xa3, 0x7c,
+ 0x14, 0xcc, 0x92, 0xaf, 0xc2, 0x26, 0x9c, 0x18, 0x65, 0x4e, 0xcf, 0x60, 0x65, 0x9b, 0xf8, 0x5b,
+ 0x64, 0x64, 0x58, 0x44, 0x3f, 0x20, 0x61, 0x28, 0xf3, 0xae, 0x08, 0x04, 0x78, 0x18, 0xb3, 0x1a,
+ 0xb1, 0x13, 0xa4, 0x74, 0xb0, 0xf8, 0xac, 0x1f, 0xae, 0x2c, 0xf3, 0xd2, 0xca, 0xb2, 0x03, 0xab,
+ 0x09, 0xb6, 0xa1, 0xd3, 0x28, 0x7a, 0xc4, 0x0f, 0x3a, 0x68, 0x25, 0xc5, 0x97, 0xd2, 0x32, 0x0a,
+ 0xe5, 0x0b, 0x58, 0xe9, 0xe8, 0x7a, 0x5a, 0xb2, 0x77, 0xa0, 0x40, 0x1d, 0x39, 0x6f, 0x67, 0x36,
+ 0x03, 0x4a, 0x40, 0x75, 0x35, 0x51, 0x5e, 0x34, 0xf9, 0x00, 0xd6, 0x79, 0x3f, 0xbc, 0x36, 0x6f,
+ 0xaa, 0xd7, 0x9a, 0x69, 0x8a, 0x70, 0x80, 0xfe, 0xa5, 0x51, 0x79, 0x9a, 0xa9, 0xa8, 0xf0, 0x31,
+ 0xb4, 0x30, 0x71, 0x4c, 0x6d, 0xf8, 0xfa, 0x35, 0xd2, 0xd5, 0x46, 0x06, 0x0f, 0x51, 0xc1, 0x2a,
+ 0xdb, 0x6d, 0x60, 0x9e, 0x7d, 0x42, 0xac, 0x30, 0x70, 0xfd, 0x92, 0x8d, 0xad, 0x04, 0x16, 0x63,
+ 0xf0, 0x11, 0x80, 0x17, 0x00, 0x83, 0x91, 0x90, 0x66, 0x89, 0xa8, 0x80, 0x44, 0xa6, 0x3c, 0x65,
+ 0x4b, 0xd1, 0x64, 0x1d, 0xe8, 0x1e, 0x54, 0x42, 0x22, 0xd1, 0x8a, 0x4c, 0x56, 0x11, 0x95, 0xb2,
+ 0xc6, 0x06, 0x36, 0x25, 0x96, 0xf2, 0xd3, 0x60, 0x61, 0xfa, 0x06, 0x2a, 0xc9, 0x18, 0xa1, 0x4b,
+ 0xc1, 0xb0, 0xa7, 0x6b, 0xde, 0x81, 0x75, 0xd1, 0xb9, 0x6f, 0xa2, 0x7d, 0xed, 0x70, 0xb8, 0xd3,
+ 0x35, 0x21, 0x68, 0x6e, 0x13, 0x5f, 0x04, 0xcd, 0x62, 0x98, 0x3a, 0xb0, 0x24, 0xc1, 0xc4, 0x18,
+ 0xdd, 0x81, 0xb2, 0x43, 0x21, 0x06, 0x09, 0x46, 0xa8, 0x29, 0x2d, 0x03, 0x38, 0x6d, 0x48, 0xa1,
+ 0x9c, 0x40, 0xb3, 0xa3, 0xeb, 0x31, 0xb6, 0xe8, 0x16, 0x94, 0x18, 0xfe, 0x54, 0x88, 0x9d, 0x2e,
+ 0x2f, 0xf0, 0xe8, 0x73, 0xb8, 0xe4, 0x92, 0x11, 0x75, 0xa7, 0x27, 0x86, 0xe7, 0x1b, 0xd6, 0x58,
+ 0x95, 0xd4, 0x83, 0xf7, 0xe0, 0x3a, 0x23, 0xe8, 0x0a, 0xfc, 0x41, 0xa4, 0x16, 0xcb, 0xb0, 0x24,
+ 0xd5, 0x2c, 0x5a, 0xf9, 0xb3, 0x1c, 0x2c, 0x8b, 0x7d, 0x90, 0xd7, 0x14, 0xe9, 0x03, 0x58, 0x76,
+ 0x68, 0x08, 0xe4, 0x1e, 0x93, 0xb4, 0x30, 0x28, 0x40, 0x45, 0x72, 0x04, 0xe3, 0x5d, 0x88, 0xc6,
+ 0x7b, 0x0d, 0x56, 0xe2, 0x32, 0x08, 0xe1, 0xfe, 0x32, 0x07, 0x2b, 0x62, 0x7c, 0xfe, 0x07, 0x3a,
+ 0x6c, 0x56, 0xcb, 0x0a, 0xb3, 0x5a, 0xc6, 0x77, 0x4f, 0x62, 0xe2, 0x86, 0xeb, 0xf3, 0x76, 0xa8,
+ 0x37, 0x1d, 0xcf, 0x33, 0xc6, 0x96, 0xac, 0xb8, 0x9f, 0x03, 0x68, 0x21, 0x50, 0xb4, 0xa8, 0x9d,
+ 0x6c, 0x91, 0x54, 0x4c, 0xa2, 0x56, 0xbe, 0x86, 0x8d, 0x4c, 0xce, 0x42, 0x37, 0x7f, 0x1d, 0xd6,
+ 0x2f, 0xa0, 0x1d, 0xea, 0xcb, 0x9b, 0x15, 0xfa, 0x32, 0x6c, 0x64, 0x72, 0x16, 0xbd, 0x35, 0x81,
+ 0xcb, 0xb2, 0x3a, 0xbc, 0xd1, 0xba, 0x33, 0xbc, 0xcd, 0x35, 0xb8, 0x32, 0xab, 0x3a, 0x21, 0xd0,
+ 0x4f, 0xe0, 0x4a, 0x6c, 0x5c, 0xdf, 0x6c, 0x6f, 0x5c, 0x87, 0xab, 0x33, 0xb9, 0xc7, 0x7c, 0xd1,
+ 0x01, 0x8b, 0xd1, 0x03, 0x5f, 0xf4, 0x88, 0xf9, 0xa2, 0x00, 0x16, 0xce, 0xd9, 0xa5, 0xb1, 0x69,
+ 0x1f, 0x6a, 0x66, 0xda, 0x30, 0xb6, 0x19, 0x1c, 0x0b, 0xbc, 0xf2, 0x05, 0xa0, 0x03, 0x5f, 0x73,
+ 0xe3, 0x4c, 0x5f, 0xa1, 0xfc, 0x2a, 0x2c, 0xc7, 0xca, 0x47, 0xdb, 0x32, 0x07, 0xbe, 0xed, 0xc4,
+ 0x45, 0x5d, 0xa1, 0x75, 0x45, 0x40, 0x41, 0xfa, 0xab, 0x02, 0x14, 0xfb, 0x62, 0x7b, 0xd6, 0x32,
+ 0x5d, 0x23, 0xd8, 0x4b, 0xa6, 0xff, 0xe9, 0xe2, 0xc6, 0xd1, 0x7c, 0xdf, 0xe5, 0x71, 0x67, 0x0d,
+ 0x8b, 0x2f, 0x36, 0x7c, 0xe3, 0x60, 0x69, 0x41, 0xff, 0xd2, 0xd2, 0x87, 0xc4, 0xf3, 0x45, 0x64,
+ 0xc9, 0xfe, 0xd3, 0xd0, 0xd5, 0xf0, 0xd4, 0x97, 0x86, 0x7f, 0xa4, 0xbb, 0xda, 0x4b, 0x16, 0x3f,
+ 0x96, 0x31, 0x18, 0xde, 0x8f, 0x04, 0x04, 0x5d, 0x01, 0x38, 0xd6, 0x4c, 0x43, 0xe7, 0x3b, 0x5f,
+ 0x25, 0xb6, 0x51, 0x25, 0x41, 0xd0, 0x87, 0xb0, 0x62, 0xd9, 0xaa, 0x31, 0x71, 0xa8, 0xd7, 0xf6,
+ 0x23, 0x4e, 0x0b, 0xdc, 0xf6, 0x2d, 0xbb, 0x27, 0x50, 0x21, 0xc7, 0x68, 0x35, 0x56, 0x8e, 0xed,
+ 0x4f, 0x5f, 0x06, 0xe0, 0x5b, 0x48, 0xaa, 0xe6, 0x59, 0x6c, 0x01, 0x5d, 0xc7, 0x15, 0x0e, 0xe9,
+ 0x78, 0x16, 0xda, 0x00, 0xf1, 0xa1, 0x1a, 0x3a, 0x5b, 0x39, 0x57, 0x70, 0x99, 0x03, 0x7a, 0xba,
+ 0xd8, 0x30, 0xf3, 0x89, 0x4b, 0x74, 0xb6, 0x60, 0x2e, 0xe3, 0xf0, 0x9b, 0x2e, 0x62, 0x3d, 0x5f,
+ 0x33, 0x09, 0x5b, 0x26, 0x97, 0x31, 0xff, 0x40, 0xb7, 0xa0, 0x69, 0x78, 0xea, 0xc8, 0xb5, 0x27,
+ 0x2a, 0x39, 0xf1, 0x89, 0x6b, 0x69, 0x26, 0x5b, 0x23, 0x97, 0xf1, 0xa2, 0xe1, 0x3d, 0x71, 0xed,
+ 0x49, 0x57, 0x40, 0x69, 0x17, 0x59, 0x62, 0x47, 0x4f, 0x35, 0x1c, 0xb6, 0x48, 0xae, 0x60, 0x08,
+ 0x40, 0x3d, 0x27, 0xdc, 0x34, 0x6f, 0x44, 0x9b, 0xe6, 0xe8, 0x0e, 0x20, 0xc3, 0x53, 0x83, 0x20,
+ 0xdd, 0xb0, 0x58, 0x8f, 0xb1, 0x95, 0x72, 0x19, 0x37, 0x0d, 0x6f, 0x8f, 0x23, 0x7a, 0x1c, 0xae,
+ 0xfc, 0x79, 0x0e, 0xaa, 0x5b, 0x84, 0x7a, 0x55, 0xde, 0xa9, 0x74, 0x4c, 0xd9, 0xa6, 0x83, 0x58,
+ 0x65, 0x88, 0xaf, 0x68, 0x13, 0x2d, 0x7f, 0xc6, 0x26, 0x1a, 0xba, 0x09, 0x0d, 0xd3, 0xb6, 0xe8,
+ 0xa2, 0x80, 0x17, 0x23, 0x81, 0x27, 0x5e, 0xe4, 0xe0, 0xbe, 0x80, 0xa2, 0x77, 0xa1, 0xe9, 0x1d,
+ 0xd9, 0xae, 0x2f, 0x53, 0x72, 0xe5, 0x68, 0x08, 0x78, 0x40, 0xaa, 0xfc, 0x75, 0x0e, 0xe6, 0xd9,
+ 0x06, 0x12, 0x5d, 0xb1, 0x4b, 0x41, 0x74, 0xd6, 0x5e, 0xe0, 0xcc, 0x08, 0x7a, 0xe6, 0xd1, 0xc4,
+ 0x77, 0xa1, 0xa6, 0x47, 0xcd, 0xa7, 0x42, 0xd0, 0xe6, 0xc5, 0x02, 0xf4, 0x10, 0x8b, 0x63, 0xa4,
+ 0x6c, 0xcb, 0xc6, 0xf6, 0x7c, 0x55, 0xcc, 0x72, 0x42, 0x81, 0x29, 0x88, 0xfb, 0x08, 0xe5, 0x01,
+ 0x5b, 0xe0, 0xbc, 0xf2, 0x0e, 0x99, 0xf2, 0x29, 0xdf, 0x46, 0xa0, 0xe5, 0x84, 0xcb, 0xb8, 0x60,
+ 0x41, 0x13, 0xd0, 0x73, 0x6e, 0x1f, 0x44, 0xaa, 0xf5, 0xa2, 0xdd, 0x36, 0xeb, 0xa8, 0x2b, 0x52,
+ 0x89, 0x82, 0xac, 0x12, 0xd4, 0xbb, 0xc4, 0x6a, 0x0b, 0x4e, 0x21, 0x8a, 0x50, 0xec, 0x13, 0xe2,
+ 0x32, 0xcb, 0xa0, 0x1c, 0x82, 0x98, 0xab, 0x8e, 0xc3, 0x6f, 0xf4, 0x19, 0xd4, 0x34, 0xc7, 0x31,
+ 0x4f, 0x83, 0xce, 0xe3, 0x7b, 0x2b, 0x52, 0xb7, 0x77, 0x28, 0x56, 0xcc, 0xd0, 0x55, 0x2d, 0xfa,
+ 0x08, 0xb7, 0x6d, 0x0a, 0xc9, 0x6d, 0x1b, 0x5a, 0xa7, 0xb4, 0x6d, 0xf3, 0x10, 0xea, 0xe4, 0x70,
+ 0xec, 0xa8, 0x93, 0xa9, 0xe9, 0x1b, 0x47, 0xb6, 0x23, 0x0e, 0x9f, 0xd6, 0xa2, 0x02, 0xdd, 0xc3,
+ 0xb1, 0xb3, 0x2b, 0xb0, 0xb8, 0x46, 0xa4, 0x2f, 0xd4, 0x81, 0x06, 0x5f, 0x56, 0xbb, 0x64, 0x64,
+ 0x92, 0xa1, 0x6f, 0xbb, 0x6c, 0x78, 0xab, 0xf7, 0x5b, 0x52, 0xef, 0x51, 0x02, 0x1c, 0xe0, 0xf1,
+ 0xa2, 0x1b, 0xfb, 0x46, 0x37, 0xa1, 0x68, 0x58, 0x23, 0x9b, 0xf9, 0xad, 0x58, 0x90, 0x4b, 0xe5,
+ 0xe4, 0xbb, 0x46, 0x8c, 0x80, 0xba, 0x73, 0xdf, 0x98, 0x10, 0xd7, 0x63, 0x8e, 0x2b, 0xe6, 0xce,
+ 0x07, 0x0c, 0x8e, 0x05, 0x9e, 0x06, 0xcf, 0xbe, 0xab, 0x59, 0x1e, 0xdb, 0x5e, 0x29, 0x27, 0xf9,
+ 0x0e, 0x02, 0x14, 0x8e, 0xa8, 0x68, 0x3f, 0xf3, 0x86, 0xf0, 0xbd, 0x23, 0xe6, 0xdb, 0x62, 0xfd,
+ 0xcc, 0x5a, 0x21, 0x9c, 0x3e, 0xdf, 0x4a, 0xe0, 0x1f, 0x68, 0x0b, 0x9a, 0x63, 0x57, 0x1b, 0x92,
+ 0xd1, 0xd4, 0x54, 0x5d, 0xe2, 0xd1, 0x69, 0x84, 0xf9, 0xbe, 0xea, 0xfd, 0x4b, 0xd2, 0x7c, 0x23,
+ 0x28, 0x30, 0x27, 0xc0, 0x8d, 0x71, 0x1c, 0x80, 0xee, 0x42, 0x45, 0x1b, 0x19, 0xaa, 0xa7, 0x8d,
+ 0x0c, 0xaf, 0x55, 0x65, 0xb6, 0xb5, 0x24, 0x0d, 0xf2, 0xc8, 0x38, 0xd0, 0x46, 0x06, 0x2e, 0x6b,
+ 0xfc, 0x8f, 0xa7, 0xfc, 0x7d, 0x0e, 0xaa, 0xd2, 0xd0, 0xa3, 0x4f, 0xa1, 0x62, 0x58, 0x6a, 0x2c,
+ 0x8e, 0x3c, 0x6b, 0xca, 0x2e, 0x1b, 0x96, 0x28, 0xf8, 0x7d, 0xa8, 0x93, 0x13, 0xda, 0x05, 0x71,
+ 0x0d, 0x3b, 0xab, 0x70, 0x8d, 0x17, 0x88, 0x18, 0x18, 0x13, 0x99, 0x41, 0xe1, 0x7c, 0x06, 0xbc,
+ 0x80, 0xb0, 0xfe, 0xdf, 0x85, 0x2a, 0xf7, 0x61, 0x3b, 0xc6, 0xc4, 0x98, 0xb9, 0x13, 0x88, 0xae,
+ 0x43, 0x6d, 0xa2, 0x9d, 0x44, 0x5e, 0x90, 0xdb, 0x5e, 0x75, 0xa2, 0x9d, 0x84, 0xce, 0xf2, 0x63,
+ 0x58, 0xf3, 0xc4, 0x11, 0x95, 0xea, 0x1f, 0xb9, 0xc4, 0x3b, 0xb2, 0x4d, 0x5d, 0x75, 0x86, 0xbe,
+ 0xf0, 0x65, 0x2b, 0x01, 0x76, 0x10, 0x20, 0xfb, 0x43, 0x5f, 0xf9, 0xcf, 0x79, 0x28, 0x07, 0x36,
+ 0x81, 0xbe, 0x03, 0x75, 0x6d, 0xea, 0x1f, 0xa9, 0x8e, 0xe6, 0x79, 0x2f, 0x6d, 0x57, 0x17, 0xde,
+ 0xbd, 0x46, 0x81, 0x7d, 0x01, 0x43, 0xd7, 0xa0, 0xaa, 0x13, 0x6f, 0xe8, 0x1a, 0x8e, 0x74, 0xd6,
+ 0x24, 0x83, 0xd0, 0x25, 0x28, 0x9b, 0xf6, 0x50, 0x33, 0x55, 0xcd, 0x0b, 0xb6, 0x93, 0xd8, 0x77,
+ 0x87, 0x79, 0xf4, 0x70, 0xae, 0x0a, 0xb6, 0xbb, 0x8a, 0x8c, 0x43, 0x23, 0x80, 0x77, 0xc4, 0x0e,
+ 0xe1, 0x3a, 0x2c, 0x38, 0x84, 0xb8, 0x94, 0x09, 0xdf, 0x35, 0x2a, 0xd1, 0xcf, 0x8e, 0x47, 0xe7,
+ 0x61, 0x86, 0x18, 0xbb, 0xf6, 0xd4, 0x61, 0x96, 0x53, 0xc1, 0x15, 0x0a, 0xd9, 0xa6, 0x00, 0x3a,
+ 0x0f, 0x33, 0x34, 0xf3, 0x66, 0x7c, 0x87, 0xbc, 0x4c, 0x01, 0xec, 0xe0, 0x6a, 0x0f, 0x96, 0x5c,
+ 0x32, 0xb1, 0x8f, 0x89, 0xea, 0xb8, 0xc6, 0xb1, 0xe6, 0xd3, 0xb9, 0x9c, 0x19, 0xc9, 0xe2, 0x7d,
+ 0x25, 0xed, 0x24, 0xee, 0x62, 0x46, 0xdb, 0xe7, 0xa4, 0x1d, 0x0f, 0x37, 0xdc, 0x38, 0x80, 0x4e,
+ 0xa3, 0xdc, 0x72, 0x46, 0xa6, 0xe6, 0xa8, 0xba, 0x36, 0x71, 0x0c, 0x6b, 0xcc, 0xec, 0xa7, 0x8c,
+ 0x9b, 0x0c, 0xf3, 0xc4, 0xd4, 0x9c, 0x2d, 0x0e, 0x47, 0x37, 0x60, 0xd1, 0x23, 0x96, 0xae, 0x8a,
+ 0x83, 0x39, 0xff, 0x94, 0xd9, 0x4a, 0x1d, 0xd7, 0x29, 0x74, 0x33, 0x00, 0xd2, 0x06, 0x8a, 0xb3,
+ 0x8b, 0xa1, 0xe6, 0x30, 0x7b, 0xa8, 0xe1, 0x0a, 0x87, 0x6c, 0x6a, 0xac, 0x81, 0xbc, 0x7b, 0x29,
+ 0xb6, 0xc6, 0xb0, 0xbc, 0xbf, 0x29, 0x72, 0x11, 0xf2, 0x86, 0xce, 0x02, 0x85, 0x0a, 0xce, 0x1b,
+ 0x3a, 0xfa, 0x1c, 0xea, 0xe2, 0xc4, 0xc0, 0xa4, 0x0a, 0xe6, 0xb5, 0x16, 0x93, 0x53, 0x97, 0xa4,
+ 0x7e, 0xb8, 0xe6, 0x44, 0x1f, 0x1e, 0x55, 0x07, 0x31, 0x8e, 0x62, 0xa4, 0x1a, 0x5c, 0x1d, 0xf8,
+ 0x60, 0x8a, 0x61, 0x7a, 0x1f, 0x50, 0x14, 0x7d, 0x58, 0x3e, 0x71, 0x47, 0xda, 0x90, 0xb0, 0x40,
+ 0xa2, 0x82, 0x97, 0xc2, 0x20, 0x24, 0x40, 0xd0, 0xa8, 0xef, 0xd8, 0x1d, 0xb1, 0x0d, 0xf7, 0x0a,
+ 0xdb, 0x21, 0x43, 0xd7, 0xa0, 0xa6, 0x99, 0xa6, 0xfd, 0x52, 0xa5, 0x8a, 0xab, 0x79, 0x2d, 0xc4,
+ 0x0f, 0x35, 0x18, 0x6c, 0xff, 0xa5, 0xd5, 0xf1, 0xd0, 0x3b, 0xd0, 0x70, 0x79, 0x58, 0xad, 0x06,
+ 0x1a, 0xb1, 0xcc, 0x7a, 0xb8, 0x2e, 0xc0, 0x7d, 0xa6, 0x18, 0xca, 0x3d, 0x68, 0x24, 0x06, 0x0c,
+ 0x95, 0xa1, 0xb8, 0xb7, 0xbf, 0xd7, 0xe5, 0x87, 0xc9, 0x9d, 0x9d, 0x9d, 0x66, 0x0e, 0x55, 0x61,
+ 0x01, 0x77, 0xfb, 0x3b, 0x9d, 0xcd, 0x6e, 0x33, 0xaf, 0x7c, 0x09, 0x35, 0xd9, 0xc1, 0xa3, 0x16,
+ 0x2c, 0xf0, 0xed, 0xcd, 0xe0, 0xfe, 0x49, 0xf0, 0xc9, 0x2c, 0x50, 0x50, 0xa9, 0xbe, 0x6f, 0x86,
+ 0x16, 0x28, 0x60, 0x03, 0xdf, 0x54, 0x7e, 0x3f, 0x07, 0x8b, 0x71, 0x7f, 0x4f, 0x8d, 0x32, 0x31,
+ 0x45, 0xa8, 0x43, 0xd3, 0x08, 0x56, 0x16, 0x65, 0xbc, 0x12, 0x9f, 0x0f, 0x36, 0x19, 0x0e, 0x3d,
+ 0x84, 0x76, 0xba, 0xd4, 0xd4, 0xa3, 0x71, 0x50, 0x78, 0x6c, 0xb9, 0x9e, 0x2c, 0xc9, 0xf0, 0x3d,
+ 0x5d, 0xf9, 0xab, 0x12, 0x54, 0xc2, 0xd9, 0xe3, 0xbf, 0xc1, 0xa4, 0xef, 0x42, 0x79, 0x42, 0x3c,
+ 0x4f, 0x1b, 0x8b, 0xe0, 0x2c, 0x36, 0xdd, 0xee, 0x0a, 0x0c, 0x0e, 0x69, 0x32, 0x5d, 0xc0, 0xfc,
+ 0xb9, 0x2e, 0xa0, 0x74, 0x86, 0x0b, 0x58, 0x38, 0xd3, 0x05, 0x94, 0x13, 0x2e, 0xe0, 0x16, 0x94,
+ 0xbe, 0x9d, 0x92, 0x29, 0xf1, 0xc4, 0x34, 0x27, 0xcd, 0xa4, 0x5f, 0x31, 0x38, 0x16, 0x78, 0x74,
+ 0x3b, 0xcb, 0x59, 0x70, 0x8b, 0xbd, 0xa0, 0x23, 0xa8, 0x5e, 0xd8, 0x11, 0xd4, 0xb2, 0x1c, 0x01,
+ 0x3b, 0x6b, 0xf3, 0x3c, 0xc3, 0xb6, 0xf8, 0xae, 0x05, 0xb3, 0xeb, 0x3a, 0xae, 0x09, 0x20, 0x1f,
+ 0xe1, 0x4f, 0x60, 0xcd, 0x9b, 0x3a, 0x74, 0x4a, 0x21, 0x3a, 0x75, 0x09, 0xda, 0xa1, 0x61, 0x1a,
+ 0x3e, 0x0d, 0xa7, 0x16, 0xd9, 0x3e, 0xff, 0x6a, 0x88, 0xdd, 0x94, 0x90, 0xb4, 0x8f, 0x68, 0xe0,
+ 0xc3, 0xf9, 0x72, 0xc3, 0x2e, 0x1f, 0x8e, 0x1d, 0xce, 0xf3, 0xfb, 0x50, 0xd5, 0xf4, 0x89, 0x11,
+ 0x54, 0xdb, 0x64, 0x0e, 0xf2, 0x4a, 0x46, 0x74, 0x72, 0xb7, 0x43, 0xc9, 0x78, 0xa0, 0x02, 0x5a,
+ 0xf8, 0x9f, 0x46, 0x75, 0xc1, 0xa9, 0x21, 0xb3, 0xf5, 0x3a, 0x0e, 0xbf, 0x29, 0x4e, 0x1b, 0x0e,
+ 0x89, 0xe3, 0x13, 0x5d, 0x18, 0x7b, 0xf8, 0x4d, 0x57, 0x73, 0x5a, 0x74, 0x05, 0x6c, 0x59, 0xb8,
+ 0x82, 0xe8, 0xf2, 0xd7, 0x32, 0xcc, 0xdb, 0x53, 0x5f, 0xfd, 0xb6, 0xb5, 0xc2, 0xcf, 0x8d, 0xec,
+ 0xa9, 0xff, 0x15, 0x5d, 0x40, 0x8d, 0x4c, 0xdb, 0xf1, 0x5a, 0xab, 0x0c, 0xc8, 0x3f, 0x94, 0xdb,
+ 0x00, 0x91, 0x70, 0xa8, 0x04, 0xf9, 0x67, 0x7d, 0x7e, 0x20, 0xbe, 0xb5, 0xff, 0xa3, 0xbd, 0x66,
+ 0x0e, 0x01, 0x94, 0xfa, 0x4f, 0x5e, 0xa8, 0x9b, 0x83, 0x66, 0x5e, 0xf9, 0x2d, 0x28, 0x07, 0x9a,
+ 0x8a, 0xde, 0x97, 0x44, 0xe7, 0xb1, 0xc4, 0x52, 0x4a, 0x9f, 0xa5, 0xd6, 0xdc, 0x80, 0xa2, 0x17,
+ 0x9c, 0x52, 0x67, 0x92, 0x32, 0xb4, 0xf2, 0x8b, 0x1c, 0x2c, 0x08, 0x08, 0x52, 0xa0, 0xb6, 0xb7,
+ 0x3f, 0xe8, 0x3d, 0xe9, 0x6d, 0x76, 0x06, 0xbd, 0xfd, 0x3d, 0x56, 0x4b, 0x11, 0xc7, 0x60, 0x34,
+ 0x10, 0x78, 0xd6, 0xdf, 0xea, 0x0c, 0xba, 0x8c, 0x71, 0x11, 0x8b, 0x2f, 0xba, 0x6a, 0xd9, 0xef,
+ 0x77, 0xf7, 0xc4, 0xcd, 0x0a, 0xf6, 0x1f, 0xbd, 0x05, 0x95, 0x2f, 0xbb, 0xdd, 0x7e, 0x67, 0xa7,
+ 0xf7, 0xbc, 0xcb, 0x4c, 0xb0, 0x88, 0x23, 0x00, 0x75, 0x69, 0xb8, 0xfb, 0x04, 0x77, 0x0f, 0x9e,
+ 0x32, 0x33, 0x2b, 0xe2, 0xe0, 0x93, 0x96, 0xdb, 0xea, 0x1d, 0x6c, 0x76, 0xf0, 0x56, 0x77, 0x8b,
+ 0x19, 0x58, 0x11, 0x47, 0x00, 0xda, 0xab, 0x83, 0xfd, 0x41, 0x67, 0x87, 0x99, 0x57, 0x11, 0xf3,
+ 0x0f, 0xe5, 0x01, 0x94, 0xb8, 0x95, 0x50, 0xbc, 0x61, 0x39, 0x53, 0x5f, 0x44, 0x2a, 0xfc, 0x83,
+ 0xca, 0x6d, 0x4f, 0x7d, 0x0a, 0x16, 0xcb, 0x03, 0xfe, 0xa5, 0x10, 0x28, 0xf1, 0x38, 0x15, 0xdd,
+ 0x85, 0x12, 0x0d, 0xbd, 0x8d, 0xb1, 0xe8, 0xdd, 0xb5, 0x64, 0x24, 0xbb, 0xc9, 0xb0, 0x58, 0x50,
+ 0xa1, 0xf7, 0xe2, 0x27, 0xab, 0xab, 0x49, 0xf2, 0xd8, 0xd9, 0xea, 0x2f, 0x72, 0x50, 0x93, 0xb9,
+ 0x50, 0x13, 0x1a, 0xda, 0x96, 0x45, 0x86, 0xbe, 0xea, 0x12, 0xdf, 0x3d, 0x0d, 0x3a, 0x5b, 0x00,
+ 0x31, 0x85, 0x51, 0x5b, 0x60, 0xc1, 0x52, 0x78, 0xcc, 0x5f, 0xc4, 0x65, 0x0a, 0xa0, 0x9c, 0xe8,
+ 0x04, 0xf7, 0x0d, 0x21, 0x8e, 0x66, 0x1a, 0xc7, 0x44, 0x4d, 0xdc, 0x6c, 0x59, 0x0a, 0x31, 0x3d,
+ 0x81, 0x40, 0x5b, 0x70, 0x65, 0x62, 0x58, 0xc6, 0x64, 0x3a, 0x51, 0x43, 0xbd, 0xa5, 0x71, 0x5f,
+ 0x54, 0x94, 0x8f, 0xd0, 0x5b, 0x82, 0xaa, 0x23, 0x13, 0x05, 0x5c, 0x94, 0x9f, 0xe7, 0xa1, 0x2a,
+ 0x35, 0xef, 0x7f, 0x69, 0x33, 0xd8, 0xe6, 0x0b, 0x19, 0xdb, 0xbe, 0xa1, 0x51, 0xe7, 0x14, 0x09,
+ 0xc7, 0x15, 0x11, 0x45, 0xb8, 0xa7, 0x81, 0x98, 0xd1, 0x45, 0x0c, 0xae, 0x90, 0x59, 0x17, 0x31,
+ 0xb8, 0x42, 0x86, 0xdf, 0xca, 0x7f, 0xe4, 0xa0, 0x12, 0xae, 0x6b, 0xd2, 0x51, 0x4b, 0x2e, 0x23,
+ 0x6a, 0xb9, 0x0c, 0xc0, 0x89, 0xa4, 0x43, 0x68, 0x1e, 0x55, 0xf5, 0x05, 0x8f, 0x89, 0x3f, 0x55,
+ 0x75, 0xc3, 0x1b, 0xda, 0xc7, 0xc4, 0x3d, 0x15, 0xfb, 0x13, 0xb5, 0x89, 0x3f, 0xdd, 0x0a, 0x60,
+ 0x34, 0x22, 0xa0, 0xb3, 0x2a, 0xed, 0xcf, 0x89, 0xad, 0x07, 0x07, 0xa2, 0x55, 0x01, 0xdb, 0xb5,
+ 0x75, 0xba, 0x22, 0x5f, 0x14, 0x91, 0x5c, 0x7c, 0xa6, 0xab, 0x73, 0x68, 0x27, 0xfb, 0xb2, 0x4a,
+ 0x29, 0xb8, 0x18, 0x12, 0x5c, 0x56, 0xa1, 0x13, 0xa1, 0x3f, 0x74, 0xd4, 0x89, 0xe7, 0x89, 0x88,
+ 0xb6, 0xe4, 0x0f, 0x9d, 0x5d, 0xcf, 0x53, 0x1e, 0x41, 0x55, 0x5a, 0x9b, 0xa1, 0xbb, 0xb0, 0x2c,
+ 0x2f, 0xe4, 0xe2, 0xb1, 0xc6, 0x92, 0xb4, 0x70, 0xe3, 0x81, 0x86, 0xf2, 0xef, 0x39, 0x68, 0x24,
+ 0x56, 0x67, 0x67, 0x87, 0x40, 0x62, 0x8d, 0x17, 0xa9, 0x58, 0x1d, 0x57, 0x05, 0x8c, 0x0d, 0xdf,
+ 0x55, 0xa8, 0x1e, 0x11, 0xd3, 0x21, 0xae, 0x6a, 0x5b, 0x66, 0xd0, 0x6d, 0xc0, 0x41, 0xfb, 0x96,
+ 0xc9, 0xa6, 0x34, 0x9d, 0x8c, 0x88, 0xeb, 0x6a, 0x26, 0x67, 0xc2, 0xaf, 0xc9, 0xd4, 0x02, 0x20,
+ 0xe3, 0x72, 0x0f, 0x56, 0xd8, 0xe5, 0x12, 0x71, 0x75, 0x4d, 0x0d, 0xe4, 0xe1, 0x9b, 0x27, 0xcb,
+ 0x32, 0xae, 0x2b, 0x64, 0x7b, 0x0f, 0x96, 0x4c, 0xdb, 0x1a, 0x9b, 0xec, 0xf2, 0x4a, 0x40, 0x5f,
+ 0xe2, 0xd3, 0x6f, 0x88, 0x10, 0xc4, 0xca, 0x47, 0xb0, 0xbe, 0xeb, 0x24, 0xda, 0x2d, 0xfc, 0xc5,
+ 0xcc, 0xd6, 0x2b, 0x7f, 0x9b, 0x83, 0xb5, 0x54, 0x29, 0x6e, 0x9d, 0xb3, 0xbb, 0x4c, 0x9e, 0x07,
+ 0xf9, 0x46, 0x75, 0x34, 0x73, 0xc4, 0xe7, 0x3a, 0xd1, 0x55, 0xd2, 0x5c, 0xf7, 0x3e, 0x2c, 0x8b,
+ 0xcb, 0x2f, 0xae, 0x71, 0xa8, 0x86, 0x6c, 0x8a, 0xc1, 0xbd, 0x68, 0x7d, 0x7f, 0xc4, 0x76, 0x54,
+ 0xc2, 0x89, 0xa8, 0x21, 0x91, 0xb3, 0x39, 0x89, 0xf7, 0x57, 0x2d, 0x20, 0x3d, 0xa0, 0x43, 0xfe,
+ 0x07, 0x39, 0x58, 0x4a, 0x35, 0x03, 0x7d, 0x37, 0xe1, 0x94, 0xaf, 0x4b, 0xf3, 0x58, 0x76, 0x4f,
+ 0x85, 0xfe, 0xf9, 0x41, 0xdc, 0x3f, 0x5f, 0x3b, 0xa3, 0x64, 0xcc, 0x55, 0x77, 0xa0, 0x2e, 0x56,
+ 0xf6, 0xa2, 0xeb, 0x67, 0xad, 0x7d, 0xa5, 0xde, 0xcd, 0xc7, 0x87, 0xe4, 0x0f, 0x73, 0x50, 0x13,
+ 0x3c, 0xc2, 0x6b, 0x5c, 0xaf, 0xc6, 0x82, 0x2a, 0xac, 0x6f, 0xfb, 0xd4, 0x11, 0x88, 0xcb, 0x7f,
+ 0xcc, 0xf4, 0x18, 0xa8, 0xcf, 0x36, 0x2b, 0x6f, 0xc0, 0xa2, 0x20, 0x90, 0x77, 0x20, 0xeb, 0xb8,
+ 0xce, 0x69, 0x82, 0xfd, 0xc7, 0x7f, 0xca, 0xc3, 0x86, 0xb0, 0x44, 0x93, 0x5f, 0x63, 0xdd, 0x67,
+ 0x91, 0x73, 0x30, 0x0f, 0xdd, 0x01, 0xa4, 0x99, 0x2f, 0xb5, 0x53, 0x8f, 0xc6, 0x7c, 0x8e, 0xe6,
+ 0x12, 0x75, 0x12, 0xdd, 0x71, 0xe7, 0x98, 0x4d, 0x8e, 0xd8, 0x25, 0x3a, 0xba, 0x07, 0xab, 0xc6,
+ 0xd8, 0xb2, 0x5d, 0x1a, 0x71, 0x32, 0xc9, 0x54, 0x93, 0x58, 0x63, 0xff, 0x28, 0x38, 0x8b, 0xe3,
+ 0xc8, 0x8e, 0x47, 0x45, 0xdc, 0x61, 0x18, 0xba, 0x66, 0x08, 0xf6, 0x89, 0xc3, 0x2a, 0x98, 0xc1,
+ 0xb3, 0x35, 0x03, 0xd7, 0xae, 0xf5, 0x80, 0x42, 0x54, 0xc5, 0x04, 0x76, 0x7b, 0x74, 0x95, 0x78,
+ 0x29, 0x54, 0x3c, 0xd5, 0xb0, 0xb4, 0xa1, 0x4f, 0xbd, 0x1a, 0x2b, 0x1e, 0xec, 0xb8, 0xae, 0x87,
+ 0x04, 0x3d, 0x81, 0x67, 0xa5, 0x99, 0xf3, 0xe2, 0x9d, 0xa9, 0x6a, 0xc6, 0xd8, 0x09, 0x36, 0x38,
+ 0xc5, 0xb5, 0x7d, 0x63, 0xec, 0xa0, 0xcf, 0xa1, 0x2d, 0x1a, 0x63, 0x91, 0x13, 0x5f, 0x65, 0xfb,
+ 0xcd, 0x63, 0x47, 0x9d, 0x10, 0xdf, 0x35, 0x86, 0xc2, 0x46, 0xd7, 0x38, 0xc5, 0x1e, 0x39, 0xf1,
+ 0x9f, 0xda, 0x4e, 0x6f, 0xec, 0xec, 0x32, 0xac, 0xf2, 0x8f, 0x79, 0x68, 0x67, 0x76, 0x2b, 0x1f,
+ 0xef, 0xff, 0xeb, 0xd5, 0xd7, 0xea, 0xd5, 0x3f, 0xc9, 0xc1, 0x6a, 0x66, 0xaf, 0xa2, 0x47, 0x09,
+ 0x3f, 0x70, 0x23, 0xb5, 0x07, 0x98, 0xa5, 0xdd, 0xa1, 0x2f, 0xf8, 0x3c, 0xee, 0x0b, 0xde, 0x3e,
+ 0xa7, 0x74, 0xcc, 0x1f, 0xdc, 0x87, 0xb5, 0x67, 0x1e, 0x61, 0x2b, 0x71, 0xc7, 0x64, 0x77, 0xf9,
+ 0xbd, 0x73, 0x7d, 0xf2, 0x3d, 0x58, 0x4d, 0x96, 0x39, 0xc7, 0x23, 0x2b, 0x3f, 0x05, 0xa0, 0x2b,
+ 0x7e, 0xc1, 0xfa, 0x36, 0x2c, 0xf1, 0xcd, 0x87, 0x89, 0xe0, 0x41, 0x97, 0x78, 0xbc, 0x44, 0x83,
+ 0x21, 0x02, 0xde, 0x1d, 0xb6, 0x1d, 0x32, 0xd1, 0x4e, 0x58, 0x48, 0x14, 0x1c, 0x72, 0xb0, 0xa9,
+ 0x4b, 0x00, 0x59, 0xed, 0xca, 0x4f, 0xa0, 0xd2, 0x0d, 0x97, 0x51, 0x6f, 0x9c, 0xbb, 0x0a, 0x45,
+ 0xca, 0x1d, 0xdd, 0x49, 0x0c, 0xd3, 0x4a, 0x7c, 0xbf, 0x3a, 0x31, 0x2a, 0xb3, 0xef, 0x26, 0x86,
+ 0xa2, 0x06, 0x83, 0x70, 0x0f, 0xa0, 0x17, 0xf5, 0x4e, 0x4a, 0xa6, 0x5c, 0x86, 0x4c, 0x1f, 0x42,
+ 0xa5, 0x17, 0xb6, 0xf8, 0x42, 0x25, 0x54, 0x28, 0xf6, 0xce, 0x69, 0x45, 0xef, 0x55, 0x5a, 0xd1,
+ 0x4b, 0xb6, 0xe2, 0x97, 0x39, 0x68, 0x26, 0xf5, 0x02, 0x7d, 0x96, 0xa8, 0x4d, 0x9a, 0xa8, 0xb2,
+ 0xf5, 0x2e, 0xac, 0xf9, 0x93, 0x78, 0xcd, 0x57, 0x67, 0x17, 0x94, 0xa5, 0x40, 0x0a, 0x14, 0xc9,
+ 0xe1, 0xd8, 0x49, 0xbf, 0xc7, 0xa1, 0xbd, 0x8e, 0x19, 0x8e, 0xd2, 0x18, 0x94, 0x26, 0xf5, 0xe6,
+ 0xa5, 0xc7, 0x68, 0x28, 0x4e, 0x79, 0x2c, 0x66, 0x96, 0x81, 0xe6, 0x8e, 0x89, 0xbf, 0x4b, 0x26,
+ 0x87, 0xc4, 0xf5, 0x8e, 0x0c, 0x69, 0x90, 0xe2, 0x11, 0x55, 0x2e, 0x1d, 0x51, 0x29, 0x1d, 0xe1,
+ 0x46, 0x93, 0x3c, 0xc2, 0x51, 0x3b, 0x9f, 0x45, 0xe8, 0x34, 0x92, 0x3c, 0xce, 0x75, 0x1a, 0xd9,
+ 0x82, 0x5f, 0xd4, 0x69, 0x64, 0x8a, 0x1c, 0x8c, 0xf4, 0x4f, 0xe1, 0xca, 0x8e, 0x6d, 0x8d, 0x77,
+ 0x68, 0x04, 0xf4, 0x8a, 0x01, 0xdd, 0x05, 0xc2, 0x59, 0xe5, 0x57, 0x39, 0xb8, 0x3c, 0x8b, 0xff,
+ 0x6f, 0x32, 0xf4, 0xbb, 0x0d, 0x4b, 0x6c, 0x03, 0x2b, 0x26, 0x1f, 0x8f, 0x3b, 0x1a, 0x14, 0x81,
+ 0xa5, 0x90, 0xfb, 0x21, 0xb4, 0x53, 0xb4, 0xae, 0x4a, 0x4e, 0x1c, 0xc3, 0x0d, 0x43, 0xe6, 0xf5,
+ 0x44, 0x21, 0xb7, 0xcb, 0xd1, 0xca, 0x9f, 0xe6, 0xa0, 0x35, 0xab, 0x81, 0xe8, 0x07, 0x89, 0x71,
+ 0x95, 0x5e, 0x26, 0x9c, 0xdd, 0xe9, 0xe1, 0xd0, 0x3e, 0x8a, 0x0f, 0xed, 0xcd, 0xf3, 0x19, 0xc4,
+ 0x46, 0xf7, 0x9f, 0x8b, 0xb0, 0x20, 0xe2, 0x3b, 0xf4, 0x25, 0x2c, 0x4f, 0x1c, 0x35, 0x75, 0xd8,
+ 0xc4, 0x25, 0xdb, 0x38, 0x23, 0xe8, 0xc4, 0x4b, 0x93, 0x54, 0xb8, 0xfb, 0x41, 0xd8, 0x32, 0x2e,
+ 0xd8, 0x7a, 0xea, 0xb4, 0x29, 0xd1, 0x90, 0xe4, 0x49, 0x64, 0xe1, 0xc2, 0x27, 0x91, 0x3f, 0x82,
+ 0xf5, 0x60, 0x49, 0x26, 0x26, 0x3f, 0xd5, 0x76, 0x82, 0x53, 0xe4, 0x84, 0x3b, 0xc9, 0x9c, 0x24,
+ 0xf1, 0xaa, 0x9b, 0x39, 0x55, 0x3f, 0x05, 0x34, 0xf5, 0x48, 0x34, 0xb5, 0x70, 0x7f, 0x3b, 0x9f,
+ 0x3c, 0x7f, 0x4a, 0xba, 0x28, 0xdc, 0x9c, 0x26, 0x3d, 0x63, 0xea, 0x8c, 0xa0, 0x94, 0x6c, 0xdd,
+ 0xec, 0x33, 0x82, 0xb0, 0x79, 0x3e, 0x33, 0x53, 0x75, 0x12, 0xda, 0xa9, 0x38, 0xa8, 0xbc, 0x7a,
+ 0x8e, 0x39, 0x8b, 0xe6, 0xa5, 0x9c, 0x8a, 0x06, 0x1b, 0x74, 0xdd, 0xa6, 0xf2, 0x15, 0x5d, 0x6a,
+ 0xdc, 0xf9, 0xc1, 0xa6, 0x72, 0xbe, 0x42, 0xe1, 0x96, 0x39, 0x03, 0xa3, 0x4c, 0xa1, 0xc4, 0x1b,
+ 0x86, 0x36, 0xa0, 0x62, 0x38, 0x6a, 0xec, 0x4a, 0x43, 0xd9, 0x70, 0x04, 0xf2, 0x1d, 0x68, 0x4c,
+ 0x34, 0xef, 0x1b, 0x11, 0x2c, 0xaa, 0x13, 0xc3, 0x12, 0xae, 0xa2, 0x4e, 0xc1, 0x3c, 0x50, 0xdc,
+ 0x35, 0xac, 0x14, 0x9d, 0x76, 0x22, 0x96, 0x13, 0x32, 0x9d, 0x76, 0xa2, 0xfc, 0x71, 0x0e, 0x20,
+ 0xba, 0x4f, 0xfa, 0x6b, 0x5e, 0xfa, 0xa5, 0x30, 0xd3, 0xf0, 0x7c, 0xf6, 0x6c, 0xa9, 0x82, 0xd9,
+ 0x7f, 0x76, 0x8f, 0x31, 0x5a, 0xad, 0x24, 0xef, 0x31, 0x32, 0x0c, 0x0e, 0x29, 0x94, 0x6d, 0x28,
+ 0xef, 0x6a, 0xfe, 0xf0, 0x88, 0x0a, 0x73, 0x33, 0x26, 0x8c, 0x34, 0xc7, 0x32, 0x8a, 0x73, 0xee,
+ 0x1f, 0x3f, 0x87, 0x5a, 0x2c, 0x78, 0xbe, 0x1b, 0x63, 0x26, 0xe9, 0xa4, 0x4c, 0x25, 0xf1, 0x5c,
+ 0x83, 0x92, 0x14, 0x90, 0xd7, 0xb1, 0xf8, 0x52, 0xfe, 0xad, 0x08, 0xb0, 0x69, 0x5b, 0xba, 0xc1,
+ 0x15, 0xff, 0x1e, 0x88, 0x17, 0x2f, 0x6a, 0x74, 0x89, 0x17, 0x25, 0x24, 0x3d, 0x20, 0x3e, 0xae,
+ 0x70, 0x2a, 0xda, 0xac, 0x4f, 0xa0, 0x16, 0x9e, 0x39, 0xd0, 0x42, 0xf9, 0x99, 0x85, 0xc2, 0xab,
+ 0x34, 0xb4, 0xd8, 0xf7, 0x60, 0x31, 0xb1, 0x52, 0x28, 0x24, 0xb7, 0x2c, 0xe5, 0xa6, 0xe0, 0x9a,
+ 0x26, 0x37, 0xff, 0x3e, 0x54, 0x83, 0xd2, 0xb4, 0xce, 0xe2, 0x6c, 0x41, 0x79, 0x31, 0x5a, 0xe3,
+ 0xa7, 0xe1, 0x53, 0x3e, 0xff, 0x94, 0x95, 0x9a, 0x9f, 0x59, 0xaa, 0x16, 0x12, 0xd2, 0x82, 0x5f,
+ 0xc0, 0x12, 0x5d, 0x06, 0xc4, 0x0b, 0x97, 0x66, 0x16, 0x6e, 0x90, 0x13, 0x7f, 0x53, 0x2e, 0x7f,
+ 0x15, 0xaa, 0xae, 0xf3, 0x8d, 0x41, 0xed, 0x6b, 0x6a, 0xfa, 0xcc, 0x76, 0xe7, 0x31, 0xb8, 0xfc,
+ 0xb9, 0xc1, 0xd4, 0xf4, 0xd1, 0x23, 0x80, 0xe8, 0x0d, 0x81, 0x38, 0x32, 0x95, 0x4e, 0x04, 0xa2,
+ 0xf1, 0x11, 0x66, 0x4e, 0x87, 0xb5, 0x12, 0x3e, 0x31, 0x40, 0x8f, 0x61, 0xd9, 0xa4, 0x26, 0x9e,
+ 0x90, 0xb0, 0x32, 0x53, 0xc2, 0x25, 0x46, 0x2e, 0xcb, 0xa8, 0x1c, 0x41, 0x25, 0xe4, 0x8d, 0x96,
+ 0xa1, 0x81, 0xf7, 0x9f, 0x0d, 0xba, 0xea, 0xe0, 0xeb, 0x7e, 0x57, 0x15, 0x87, 0x7c, 0xeb, 0xb0,
+ 0x2c, 0x01, 0x7b, 0x7b, 0x83, 0x2e, 0xde, 0xeb, 0xec, 0x34, 0x73, 0x09, 0x44, 0xf7, 0x85, 0x40,
+ 0xe4, 0xd1, 0x0a, 0x34, 0x25, 0xc4, 0xce, 0xfe, 0x66, 0x67, 0xa7, 0x59, 0x50, 0x46, 0xd0, 0x08,
+ 0x6b, 0xee, 0xf0, 0x47, 0xa9, 0xf7, 0x62, 0xca, 0x7c, 0x59, 0x6e, 0x79, 0x8c, 0x50, 0xd2, 0xe7,
+ 0x6b, 0x50, 0x0d, 0x5a, 0x6b, 0x84, 0xcf, 0x2e, 0x64, 0x90, 0xb2, 0x07, 0x95, 0x5d, 0xa2, 0x8b,
+ 0x1a, 0xde, 0x8b, 0xd5, 0xb0, 0x2e, 0x9f, 0x24, 0xe8, 0x29, 0xde, 0x2b, 0x30, 0x7f, 0xac, 0x99,
+ 0xd3, 0xe0, 0x55, 0x1a, 0xff, 0x50, 0x54, 0x68, 0x74, 0xbc, 0xbe, 0x4b, 0x1c, 0x62, 0x05, 0x5c,
+ 0x9b, 0x50, 0xd0, 0x3c, 0x4b, 0x44, 0x74, 0xf4, 0x2f, 0x35, 0x33, 0x4a, 0xa1, 0x85, 0x5b, 0xf4,
+ 0xfc, 0x0b, 0x29, 0x50, 0xa7, 0x13, 0x8a, 0x49, 0x46, 0xbe, 0x3a, 0xb1, 0x3d, 0x5f, 0xc4, 0x25,
+ 0xd5, 0xa9, 0x47, 0x76, 0xc8, 0xc8, 0xdf, 0xb5, 0xd9, 0x55, 0xc5, 0xba, 0xb8, 0x1a, 0x26, 0xd8,
+ 0x9f, 0xf9, 0xc2, 0xc7, 0x23, 0xe6, 0x48, 0xc4, 0x3e, 0xec, 0xbf, 0x72, 0x13, 0x1a, 0x3b, 0x6c,
+ 0x93, 0xd5, 0x25, 0x23, 0xc1, 0x20, 0x6c, 0x88, 0x38, 0x46, 0xe0, 0x0d, 0xf9, 0x87, 0x02, 0x2c,
+ 0x70, 0x02, 0x2f, 0xba, 0x9d, 0xa2, 0xf1, 0xc7, 0xc7, 0x29, 0x47, 0xc9, 0x94, 0x82, 0x53, 0x8b,
+ 0xdb, 0x29, 0x82, 0xf7, 0xa7, 0x50, 0x89, 0x4e, 0xd8, 0xf2, 0xc9, 0x6b, 0x29, 0x89, 0x81, 0xc3,
+ 0x11, 0x2d, 0xba, 0x01, 0x85, 0x89, 0x08, 0xcc, 0x62, 0x2b, 0x8d, 0x70, 0x24, 0x30, 0xc5, 0xa3,
+ 0xcf, 0x00, 0xa8, 0x85, 0xf3, 0xfe, 0x16, 0x06, 0x7e, 0x29, 0xe6, 0x1b, 0xe4, 0xa1, 0x60, 0x76,
+ 0xce, 0x01, 0xe8, 0x0b, 0xa8, 0xc7, 0xcc, 0x55, 0xd8, 0xf9, 0x19, 0xd2, 0xd5, 0x64, 0x8b, 0x45,
+ 0xf7, 0x60, 0x41, 0xdc, 0xdd, 0x13, 0x46, 0x2e, 0xa9, 0x4b, 0x6c, 0x80, 0x70, 0x40, 0x47, 0x85,
+ 0x15, 0x5b, 0xde, 0x2e, 0x19, 0x89, 0xc9, 0xf9, 0x92, 0x3c, 0x7f, 0xc6, 0xc6, 0x25, 0xd8, 0x0d,
+ 0x77, 0xc9, 0x08, 0x3d, 0x86, 0x46, 0xc2, 0x76, 0xc5, 0xf4, 0x7b, 0x86, 0xb8, 0x8b, 0x71, 0xf3,
+ 0x55, 0x7e, 0x96, 0x83, 0x4a, 0x78, 0xbf, 0x3a, 0x9c, 0x3d, 0x72, 0xd2, 0x44, 0xf6, 0x31, 0xc0,
+ 0x30, 0x74, 0x22, 0x62, 0xb4, 0x56, 0xb2, 0x1c, 0x0c, 0x96, 0xe8, 0xd0, 0x7b, 0xb0, 0xc0, 0xd5,
+ 0xc2, 0x13, 0xa3, 0x25, 0x5f, 0x1c, 0xe2, 0x08, 0x1c, 0x50, 0x28, 0x5f, 0x41, 0x49, 0x44, 0x65,
+ 0x59, 0x02, 0xc4, 0x5f, 0x68, 0xe4, 0x2f, 0xf6, 0x42, 0xe3, 0x5f, 0x72, 0xd0, 0x4c, 0x5e, 0xf1,
+ 0x41, 0xb7, 0x62, 0x96, 0xbc, 0x92, 0xbc, 0x0c, 0x24, 0x99, 0xb1, 0xfc, 0x78, 0x39, 0x7f, 0x81,
+ 0xc7, 0xcb, 0x19, 0x09, 0x25, 0x62, 0xaf, 0x16, 0x8a, 0xe7, 0xbd, 0x5a, 0x40, 0x1f, 0xc0, 0x82,
+ 0x4e, 0x46, 0x1a, 0x75, 0xf2, 0xf3, 0x67, 0x19, 0x52, 0x40, 0xa5, 0xfc, 0x51, 0x0e, 0x0a, 0xd8,
+ 0xd6, 0xd0, 0x22, 0xe4, 0xb5, 0x60, 0x3d, 0x9f, 0xd7, 0x3c, 0xf4, 0x16, 0x88, 0x09, 0xd6, 0x24,
+ 0x41, 0x40, 0x14, 0x01, 0xa8, 0x93, 0x99, 0x68, 0x0c, 0x25, 0x6e, 0x52, 0xf2, 0x2f, 0xe9, 0x9a,
+ 0x60, 0x31, 0x76, 0x73, 0x34, 0xb8, 0xb0, 0x37, 0x7f, 0xf6, 0x3b, 0x4b, 0xe5, 0x26, 0xbf, 0x2d,
+ 0x69, 0x6b, 0xe7, 0xbd, 0x9d, 0xe4, 0xcf, 0xc4, 0x18, 0x61, 0xf4, 0x4c, 0xcc, 0xb5, 0xb5, 0x8c,
+ 0x67, 0x62, 0x94, 0x88, 0xa1, 0x14, 0x0f, 0x0a, 0xcf, 0xdd, 0x51, 0xa6, 0x76, 0x2c, 0x42, 0xde,
+ 0xe5, 0x0b, 0xb9, 0x1a, 0xce, 0xbb, 0x3a, 0x0b, 0x19, 0xf9, 0xcd, 0x2f, 0x97, 0x07, 0x5f, 0x35,
+ 0x5c, 0xe6, 0x00, 0xcc, 0x1e, 0xcf, 0x8b, 0x7b, 0x65, 0xae, 0xcf, 0xc6, 0xa4, 0x86, 0xcb, 0x1c,
+ 0x80, 0x7d, 0x71, 0x45, 0x87, 0xdf, 0x69, 0xca, 0x1b, 0xba, 0xf2, 0xcb, 0x1c, 0x94, 0xf8, 0x95,
+ 0xec, 0x54, 0x1f, 0x6f, 0x40, 0x25, 0xda, 0x6d, 0x14, 0x0f, 0xed, 0xdd, 0x60, 0x7b, 0xf1, 0x2a,
+ 0x54, 0x69, 0xb4, 0x47, 0x2c, 0x7e, 0x6a, 0x54, 0xe0, 0x53, 0x36, 0x07, 0xb1, 0x53, 0xa3, 0x77,
+ 0xa1, 0x29, 0x08, 0x84, 0x4f, 0x16, 0x0a, 0x52, 0xc1, 0x0d, 0x0e, 0xef, 0x04, 0xe0, 0xd8, 0x2d,
+ 0xcc, 0xf9, 0xc4, 0x2d, 0xcc, 0x3b, 0x99, 0x0b, 0x0d, 0x71, 0xb6, 0x92, 0x5c, 0x4c, 0x28, 0x7f,
+ 0x97, 0x83, 0x0a, 0xbb, 0x6e, 0xda, 0xb3, 0x46, 0xf6, 0x6f, 0xe4, 0x32, 0xee, 0x4d, 0x68, 0x58,
+ 0xd3, 0x89, 0x2a, 0xdd, 0xb2, 0x15, 0x67, 0x91, 0x8b, 0xd6, 0x74, 0x22, 0xdf, 0x52, 0xbe, 0x04,
+ 0x65, 0x4b, 0x6c, 0x44, 0x05, 0x47, 0xdf, 0x16, 0xdf, 0x83, 0xa2, 0x6b, 0x7f, 0x8a, 0x0a, 0xef,
+ 0x21, 0xf0, 0xc3, 0xc6, 0xaa, 0x35, 0x9d, 0x74, 0x04, 0x48, 0xf9, 0x1e, 0xbb, 0x95, 0x8f, 0x8d,
+ 0x43, 0xda, 0x90, 0x40, 0xdb, 0x82, 0xfb, 0x9a, 0xa9, 0x47, 0x49, 0x61, 0x93, 0xf9, 0x7d, 0x4d,
+ 0xe5, 0x11, 0xcb, 0x73, 0x13, 0x96, 0x16, 0x2a, 0x78, 0xd1, 0xe2, 0xb7, 0x37, 0xa1, 0x1c, 0xf4,
+ 0x10, 0x02, 0x28, 0x6d, 0xef, 0xec, 0x3f, 0xee, 0xec, 0x34, 0xe7, 0x50, 0x05, 0xe6, 0x79, 0x8c,
+ 0xc2, 0xee, 0x2f, 0x74, 0xb6, 0x7e, 0xa8, 0xf6, 0xf6, 0x9a, 0x79, 0x54, 0x85, 0x05, 0xfa, 0x7f,
+ 0xff, 0xd9, 0xa0, 0x59, 0x40, 0x0b, 0x50, 0x78, 0x8e, 0x9f, 0x34, 0x8b, 0xb7, 0x7d, 0xa8, 0x4a,
+ 0x6b, 0x08, 0x76, 0xe1, 0x01, 0x77, 0x9f, 0xf4, 0x5e, 0x34, 0xe7, 0x50, 0x0d, 0xca, 0x7b, 0xdd,
+ 0xde, 0xf6, 0xd3, 0xc7, 0xfb, 0xb8, 0x99, 0xa3, 0x25, 0x06, 0x9d, 0x6d, 0xc1, 0xe7, 0x40, 0xed,
+ 0x77, 0x06, 0x4f, 0x9b, 0x05, 0x54, 0x87, 0xca, 0xe6, 0xfe, 0xee, 0xee, 0xb3, 0xbd, 0xde, 0xe0,
+ 0xeb, 0x66, 0x11, 0x2d, 0x41, 0xbd, 0xfb, 0x62, 0xa0, 0x46, 0xa0, 0x79, 0x1a, 0x83, 0xed, 0x74,
+ 0xf0, 0x76, 0x57, 0x02, 0x96, 0x6e, 0xbf, 0x0b, 0x95, 0x70, 0xb1, 0xc0, 0x6e, 0x5d, 0xed, 0x7d,
+ 0x2d, 0x5f, 0xbf, 0x02, 0x28, 0xf5, 0xf6, 0x9e, 0x77, 0xf1, 0xa0, 0x99, 0xbf, 0x7d, 0x1b, 0x9a,
+ 0xc9, 0xa5, 0x00, 0x2a, 0x41, 0xbe, 0xfb, 0x55, 0x73, 0x8e, 0xfe, 0x6e, 0x77, 0x9b, 0x39, 0xfa,
+ 0xbb, 0xd3, 0x6d, 0xe6, 0x6f, 0x7f, 0x20, 0x4e, 0x3a, 0xc5, 0xd4, 0x1e, 0x5d, 0xec, 0xa2, 0xfd,
+ 0xb0, 0xb9, 0xd9, 0xed, 0x0f, 0x38, 0x73, 0xdc, 0xfd, 0x61, 0x77, 0x93, 0x32, 0x7f, 0x06, 0xcb,
+ 0x19, 0xa1, 0x19, 0x6d, 0x46, 0x28, 0xad, 0xda, 0xd9, 0xda, 0x6a, 0xce, 0xd1, 0x18, 0x30, 0x02,
+ 0xe1, 0xee, 0xee, 0xfe, 0x73, 0x5a, 0xf1, 0x2a, 0x2c, 0xc9, 0x50, 0x71, 0x63, 0xec, 0xf6, 0xfb,
+ 0x50, 0x8f, 0xc5, 0x63, 0xb4, 0xcf, 0x76, 0xbb, 0x5b, 0xea, 0xee, 0x3e, 0x65, 0xd5, 0x80, 0x2a,
+ 0xfd, 0x08, 0xc8, 0x73, 0xb7, 0xef, 0x00, 0x44, 0x4e, 0x3f, 0xcc, 0x6c, 0x42, 0x3b, 0x61, 0xb7,
+ 0xbf, 0x8f, 0x85, 0xcc, 0xdd, 0x17, 0xec, 0x7f, 0xfe, 0xfe, 0xbf, 0x5e, 0x85, 0xf2, 0x36, 0xd5,
+ 0x89, 0x8e, 0x63, 0xa0, 0x1d, 0xa8, 0x4a, 0xef, 0x32, 0xd0, 0x5b, 0xb1, 0xa9, 0x28, 0xf1, 0xdc,
+ 0xa3, 0x7d, 0x79, 0x06, 0x56, 0x5c, 0xb7, 0x9e, 0x43, 0x3d, 0x80, 0xe8, 0xe5, 0x06, 0xda, 0x90,
+ 0xc9, 0x13, 0x8f, 0x3c, 0xda, 0x6f, 0x65, 0x23, 0x43, 0x56, 0x4f, 0xa0, 0x12, 0xbe, 0x57, 0x41,
+ 0xd2, 0xb2, 0x2e, 0xf9, 0xb0, 0xa5, 0xbd, 0x91, 0x89, 0x0b, 0xf9, 0xec, 0x40, 0x55, 0x4a, 0xb4,
+ 0x23, 0x37, 0x30, 0x9d, 0xb9, 0x47, 0x6e, 0x60, 0x56, 0x76, 0x9e, 0x39, 0xf4, 0x0c, 0x16, 0xe3,
+ 0x29, 0x76, 0xd0, 0x55, 0x79, 0x2d, 0x9d, 0x91, 0xb9, 0xa7, 0x7d, 0x6d, 0x36, 0x81, 0x2c, 0xa4,
+ 0x94, 0x54, 0x4a, 0x16, 0x32, 0x9d, 0xc7, 0x4a, 0x16, 0x32, 0x23, 0x13, 0x95, 0x32, 0x87, 0x30,
+ 0xd4, 0x63, 0xb9, 0x6b, 0xd0, 0x95, 0x98, 0x4b, 0x4c, 0x73, 0xbc, 0x3a, 0x13, 0x1f, 0xf2, 0xfc,
+ 0xff, 0xb0, 0x94, 0xca, 0x89, 0x83, 0x94, 0xf3, 0x73, 0xf3, 0xb4, 0xbf, 0x73, 0x26, 0x4d, 0xc8,
+ 0xff, 0xff, 0x41, 0x33, 0x99, 0xfb, 0x06, 0x49, 0xe7, 0xc3, 0x33, 0x52, 0xee, 0xb4, 0x95, 0xb3,
+ 0x48, 0xe4, 0x51, 0x8b, 0x67, 0xc2, 0x91, 0x47, 0x2d, 0x33, 0xad, 0x8e, 0x3c, 0x6a, 0x33, 0x92,
+ 0xe8, 0xcc, 0xa1, 0x17, 0xd0, 0x48, 0x24, 0xbb, 0x41, 0xf2, 0x60, 0x67, 0x66, 0xd8, 0x69, 0x5f,
+ 0x3f, 0x83, 0x22, 0xe4, 0xfc, 0x08, 0x4a, 0xdc, 0xb1, 0xa3, 0xf5, 0xd8, 0x60, 0x47, 0x4f, 0x29,
+ 0xda, 0xad, 0x34, 0x42, 0x56, 0x27, 0xe9, 0x39, 0x84, 0xac, 0x4e, 0xe9, 0x37, 0x19, 0xb2, 0x3a,
+ 0x65, 0xbd, 0xa1, 0x98, 0x43, 0x3f, 0x80, 0x05, 0x91, 0xce, 0x0b, 0xb5, 0x62, 0xf6, 0x21, 0xa5,
+ 0xed, 0x6a, 0x5f, 0xca, 0xc0, 0xc8, 0x6e, 0x21, 0x4a, 0x9e, 0x25, 0xbb, 0x85, 0x54, 0xfa, 0x2f,
+ 0xd9, 0x2d, 0x64, 0xe4, 0xdb, 0x9a, 0x43, 0x5b, 0x00, 0x51, 0xba, 0x17, 0x99, 0x55, 0x2a, 0x09,
+ 0x4c, 0x3b, 0xfb, 0xe5, 0x8c, 0x32, 0xf7, 0x61, 0x0e, 0x3d, 0x0c, 0xd3, 0xd9, 0x44, 0x97, 0x58,
+ 0xa5, 0x89, 0x32, 0xcc, 0xd1, 0xd6, 0x4e, 0x24, 0xda, 0x62, 0x85, 0x9f, 0x40, 0x25, 0xcc, 0x2f,
+ 0x24, 0x7b, 0xa6, 0x64, 0x76, 0x23, 0xd9, 0x33, 0xa5, 0x13, 0x12, 0xf1, 0x5e, 0x09, 0xb3, 0x0f,
+ 0xc5, 0x7a, 0x25, 0x99, 0xa8, 0x28, 0xd6, 0x2b, 0xe9, 0x84, 0x45, 0x73, 0xe8, 0x29, 0x54, 0xc2,
+ 0x8c, 0x41, 0xb2, 0x48, 0xc9, 0x3c, 0x46, 0xb2, 0x48, 0xe9, 0x14, 0x43, 0x73, 0xb7, 0x72, 0x54,
+ 0xf3, 0x78, 0xde, 0x1e, 0x59, 0xf3, 0x62, 0x29, 0x82, 0xda, 0xad, 0x34, 0x42, 0xf6, 0xda, 0x61,
+ 0x8a, 0x1e, 0x59, 0x90, 0x64, 0xe6, 0x9f, 0xf6, 0x46, 0x26, 0x4e, 0xd6, 0x39, 0x91, 0x94, 0x04,
+ 0x25, 0x14, 0x3d, 0xca, 0x66, 0x21, 0xeb, 0x5c, 0x22, 0x83, 0x49, 0xa8, 0xb5, 0x49, 0x0e, 0xf1,
+ 0x64, 0x25, 0x09, 0xad, 0x4d, 0x70, 0x08, 0xb5, 0x96, 0x31, 0x49, 0x09, 0x2c, 0xf3, 0x79, 0x2b,
+ 0x1b, 0x29, 0xb3, 0x8a, 0xf2, 0x85, 0xa0, 0x94, 0x5e, 0xcc, 0x60, 0x95, 0x91, 0x62, 0x84, 0xd9,
+ 0xb6, 0x94, 0x34, 0x04, 0xa5, 0x35, 0x43, 0x66, 0x76, 0x79, 0x06, 0x56, 0x1e, 0xaf, 0x30, 0xe5,
+ 0x87, 0x3c, 0x5e, 0xc9, 0xcc, 0x21, 0xf2, 0x78, 0xa5, 0x73, 0x84, 0xb0, 0x29, 0x27, 0x96, 0x3e,
+ 0x44, 0x9e, 0x72, 0xb2, 0x32, 0x91, 0xc8, 0x53, 0x4e, 0x76, 0xde, 0x91, 0xd0, 0x09, 0xda, 0x5a,
+ 0xd2, 0x09, 0x86, 0xeb, 0xb2, 0xa4, 0x13, 0x8c, 0xd6, 0x61, 0xbc, 0xa3, 0xa4, 0x54, 0x1f, 0x28,
+ 0xd5, 0xaf, 0x72, 0x3a, 0x13, 0xb9, 0xa3, 0xb2, 0xf2, 0x83, 0xcc, 0x09, 0xbb, 0xa0, 0xeb, 0xb6,
+ 0xb8, 0x5d, 0x44, 0x69, 0x3a, 0x12, 0x76, 0x21, 0xa7, 0xe2, 0x90, 0xec, 0x82, 0x72, 0x48, 0xd9,
+ 0x85, 0xc4, 0x64, 0x23, 0x13, 0x97, 0xe8, 0x93, 0x84, 0x18, 0xb1, 0xd4, 0x25, 0x89, 0x3e, 0x89,
+ 0x17, 0xc7, 0x6c, 0x61, 0x2b, 0x9d, 0x0b, 0x5c, 0x89, 0x11, 0xa7, 0x92, 0x58, 0xc8, 0xc3, 0x94,
+ 0x99, 0xf5, 0x83, 0xf3, 0x8c, 0x65, 0xe3, 0x90, 0x79, 0x66, 0xa5, 0xf9, 0x90, 0x79, 0x66, 0xa7,
+ 0xf1, 0x60, 0xd1, 0x40, 0x32, 0xe7, 0x86, 0x1c, 0x0d, 0xcc, 0x48, 0xf2, 0x21, 0x47, 0x03, 0x33,
+ 0x53, 0x76, 0xb0, 0x50, 0x26, 0x95, 0x70, 0x43, 0x0e, 0x65, 0x66, 0x65, 0xf4, 0x90, 0x43, 0x99,
+ 0xd9, 0x19, 0x3b, 0xe6, 0xd0, 0x3e, 0xd4, 0xe4, 0xe4, 0x1c, 0x28, 0x1e, 0xaf, 0x25, 0xf3, 0x50,
+ 0xb4, 0xaf, 0xcc, 0x42, 0xcb, 0x0c, 0xe5, 0xb4, 0x1a, 0x28, 0x1e, 0xa5, 0x9e, 0xc5, 0x30, 0x33,
+ 0x1b, 0x07, 0x0f, 0x5c, 0xe2, 0x09, 0x33, 0x50, 0x2a, 0x4a, 0x4d, 0xb1, 0xbd, 0x7e, 0x06, 0x85,
+ 0x3c, 0x70, 0xc9, 0x0c, 0x19, 0xf2, 0xc0, 0xcd, 0xc8, 0xc5, 0xd1, 0x56, 0xce, 0x22, 0x49, 0x2c,
+ 0x09, 0xc4, 0xe6, 0x5a, 0x7c, 0x49, 0x10, 0xcb, 0xf7, 0x90, 0x58, 0x12, 0x24, 0x92, 0x2b, 0x30,
+ 0x3e, 0x61, 0x3e, 0x01, 0x99, 0x4f, 0x32, 0xd1, 0x86, 0xcc, 0x27, 0x9d, 0x0a, 0x83, 0x8d, 0x8b,
+ 0x9c, 0x09, 0x40, 0x1e, 0x97, 0x8c, 0x1c, 0x19, 0xf2, 0xb8, 0x64, 0xa6, 0xaf, 0x10, 0x81, 0xbb,
+ 0xf4, 0xb4, 0x3f, 0x1e, 0xb8, 0xa7, 0x13, 0x5b, 0xc4, 0x03, 0xf7, 0xac, 0x4c, 0x12, 0x73, 0x48,
+ 0x67, 0x19, 0x64, 0x52, 0xbb, 0x87, 0x6f, 0x67, 0x74, 0x51, 0x2a, 0x4f, 0x41, 0xfb, 0xc6, 0x39,
+ 0x54, 0x72, 0x2d, 0x19, 0x29, 0x1a, 0xe4, 0x5a, 0x66, 0xe7, 0x86, 0x90, 0x6b, 0x39, 0x2b, 0xcf,
+ 0xc3, 0x1c, 0x9a, 0x04, 0x79, 0x64, 0x52, 0x15, 0xdd, 0xcc, 0xee, 0xdb, 0x74, 0x5d, 0xb7, 0xce,
+ 0x27, 0x0c, 0xab, 0x73, 0xc2, 0xe4, 0x31, 0xe9, 0xcd, 0xd7, 0x19, 0x1d, 0x9f, 0xae, 0xf0, 0xdd,
+ 0x0b, 0x50, 0xca, 0x71, 0x42, 0xb4, 0xa1, 0x83, 0x36, 0x92, 0x21, 0xbe, 0xb4, 0x49, 0xd4, 0x7e,
+ 0x2b, 0x1b, 0x19, 0xb0, 0x3a, 0x2c, 0xb1, 0xa4, 0xc8, 0x1f, 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0x0c, 0xb2, 0x36, 0x62, 0x23, 0x59, 0x00, 0x00,
}
diff --git a/api/gobgp.proto b/api/gobgp.proto
index 58bc89e5..ded9487d 100644
--- a/api/gobgp.proto
+++ b/api/gobgp.proto
@@ -703,16 +703,35 @@ message GracefulRestart {
bool longlived_enabled = 6;
}
-message MpGracefulRestart {
+message MpGracefulRestartConfig {
bool enabled = 1;
}
+message MpGracefulRestartState {
+ bool enabled = 1;
+ bool received = 2;
+ bool advertised = 3;
+ bool end_of_rib_received = 4;
+ bool end_of_rib_sent = 5;
+}
+message MpGracefulRestart {
+ MpGracefulRestartConfig config = 1;
+ MpGracefulRestartState state = 2;
+}
+
message AfiSafiConfig {
uint32 family = 1;
bool enabled = 2;
}
-message RouteSelectionOptions {
+message AfiSafiState {
+ uint32 family = 1;
+ bool enabled = 2;
+ uint32 total_paths = 3;
+ uint32 total_prefixes = 4;
+}
+
+message RouteSelectionOptionsConfig {
bool always_compare_med = 1;
bool ignore_as_path_length = 2;
bool external_compare_router_id = 3;
@@ -721,34 +740,94 @@ message RouteSelectionOptions {
bool ignore_next_hop_igp_metric = 6;
}
+message RouteSelectionOptionsState {
+ bool always_compare_med = 1;
+ bool ignore_as_path_length = 2;
+ bool external_compare_router_id = 3;
+ bool advertise_inactive_routes = 4;
+ bool enable_aigp = 5;
+ bool ignore_next_hop_igp_metric = 6;
+}
+
+message RouteSelectionOptions {
+ RouteSelectionOptionsConfig config = 1;
+ RouteSelectionOptionsState state = 2;
+}
+
message UseMultiplePathsConfig {
bool enabled = 1;
}
-message Ebgp {
+message UseMultiplePathsState {
+ bool enabled = 1;
+}
+
+message EbgpConfig {
bool allow_multiple_as = 1;
uint32 maximum_paths = 2;
}
-message Ibgp {
+message EbgpState {
+ bool allow_multiple_as = 1;
+ uint32 maximum_paths = 2;
+}
+
+message Ebgp {
+ EbgpConfig config = 1;
+ EbgpState state = 2;
+}
+
+message IbgpConfig {
uint32 maximum_paths = 1;
}
+message IbgpState {
+ uint32 maximum_paths = 1;
+}
+
+message Ibgp {
+ IbgpConfig config = 1;
+ IbgpState state = 2;
+}
+
message UseMultiplePaths {
UseMultiplePathsConfig config = 1;
- Ebgp ebgp = 2;
- Ibgp ibgp = 3;
+ UseMultiplePathsState state = 2;
+ Ebgp ebgp = 3;
+ Ibgp ibgp = 4;
}
-message RouteTargetMembership {
+message RouteTargetMembershipConfig {
uint32 deferral_time = 1;
}
-message LongLivedGracefulRestart {
+message RouteTargetMembershipState {
+ uint32 deferral_time = 1;
+}
+
+message RouteTargetMembership {
+ RouteTargetMembershipConfig config = 1;
+ RouteTargetMembershipState state = 2;
+}
+
+message LongLivedGracefulRestartConfig {
bool enabled = 1;
uint32 restart_time = 2;
}
+message LongLivedGracefulRestartState {
+ bool enabled = 1;
+ bool received = 2;
+ bool advertised = 3;
+ uint32 peer_restart_time = 4;
+ bool peer_restart_timer_expired = 5;
+}
+
+message LongLivedGracefulRestart {
+ LongLivedGracefulRestartConfig config = 1;
+ LongLivedGracefulRestartState state = 2;
+}
+
message AfiSafi {
MpGracefulRestart mp_graceful_restart = 1;
AfiSafiConfig config = 2;
diff --git a/api/grpc_server.go b/api/grpc_server.go
index 40a567e4..cb83b132 100644
--- a/api/grpc_server.go
+++ b/api/grpc_server.go
@@ -88,44 +88,138 @@ func (s *Server) Serve() error {
return nil
}
-func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
- var families []uint32
- for _, f := range pconf.AfiSafis {
- if family, ok := bgp.AddressFamilyValueMap[string(f.Config.AfiSafiName)]; ok {
- families = append(families, uint32(family))
- }
+func NewMpGracefulRestartFromConfigStruct(c *config.MpGracefulRestart) *MpGracefulRestart {
+ return &MpGracefulRestart{
+ Config: &MpGracefulRestartConfig{
+ Enabled: c.Config.Enabled,
+ },
}
- applyPolicy := &ApplyPolicy{}
- applyPolicy.ImportPolicy = &PolicyAssignment{
- Type: PolicyType_IMPORT,
- Default: RouteAction(pconf.ApplyPolicy.Config.DefaultImportPolicy.ToInt()),
+}
+
+func NewAfiSafiConfigFromConfigStruct(c *config.AfiSafiConfig) *AfiSafiConfig {
+ return &AfiSafiConfig{
+ Family: uint32(bgp.AddressFamilyValueMap[string(c.AfiSafiName)]),
+ Enabled: c.Enabled,
}
- for _, pname := range pconf.ApplyPolicy.Config.ImportPolicyList {
- applyPolicy.ImportPolicy.Policies = append(applyPolicy.ImportPolicy.Policies, &Policy{Name: pname})
+}
+
+func NewApplyPolicyFromConfigStruct(c *config.ApplyPolicy) *ApplyPolicy {
+ applyPolicy := &ApplyPolicy{
+ ImportPolicy: &PolicyAssignment{
+ Type: PolicyType_IMPORT,
+ Default: RouteAction(c.Config.DefaultImportPolicy.ToInt()),
+ },
+ ExportPolicy: &PolicyAssignment{
+ Type: PolicyType_EXPORT,
+ Default: RouteAction(c.Config.DefaultExportPolicy.ToInt()),
+ },
+ InPolicy: &PolicyAssignment{
+ Type: PolicyType_IN,
+ Default: RouteAction(c.Config.DefaultInPolicy.ToInt()),
+ },
}
- applyPolicy.ExportPolicy = &PolicyAssignment{
- Type: PolicyType_EXPORT,
- Default: RouteAction(pconf.ApplyPolicy.Config.DefaultExportPolicy.ToInt()),
+
+ for _, pname := range c.Config.ImportPolicyList {
+ applyPolicy.ImportPolicy.Policies = append(applyPolicy.ImportPolicy.Policies, &Policy{Name: pname})
}
- for _, pname := range pconf.ApplyPolicy.Config.ExportPolicyList {
+ for _, pname := range c.Config.ExportPolicyList {
applyPolicy.ExportPolicy.Policies = append(applyPolicy.ExportPolicy.Policies, &Policy{Name: pname})
}
- applyPolicy.InPolicy = &PolicyAssignment{
- Type: PolicyType_IN,
- Default: RouteAction(pconf.ApplyPolicy.Config.DefaultInPolicy.ToInt()),
- }
- for _, pname := range pconf.ApplyPolicy.Config.InPolicyList {
+ for _, pname := range c.Config.InPolicyList {
applyPolicy.InPolicy.Policies = append(applyPolicy.InPolicy.Policies, &Policy{Name: pname})
}
+
+ return applyPolicy
+}
+
+func NewRouteSelectionOptionsFromConfigStruct(c *config.RouteSelectionOptions) *RouteSelectionOptions {
+ return &RouteSelectionOptions{
+ Config: &RouteSelectionOptionsConfig{
+ AlwaysCompareMed: c.Config.AlwaysCompareMed,
+ IgnoreAsPathLength: c.Config.IgnoreAsPathLength,
+ ExternalCompareRouterId: c.Config.ExternalCompareRouterId,
+ AdvertiseInactiveRoutes: c.Config.AdvertiseInactiveRoutes,
+ EnableAigp: c.Config.EnableAigp,
+ IgnoreNextHopIgpMetric: c.Config.IgnoreNextHopIgpMetric,
+ },
+ }
+}
+
+func NewUseMultiplePathsFromConfigStruct(c *config.UseMultiplePaths) *UseMultiplePaths {
+ return &UseMultiplePaths{
+ Config: &UseMultiplePathsConfig{
+ Enabled: c.Config.Enabled,
+ },
+ Ebgp: &Ebgp{
+ Config: &EbgpConfig{
+ AllowMultipleAs: c.Ebgp.Config.AllowMultipleAs,
+ MaximumPaths: c.Ebgp.Config.MaximumPaths,
+ },
+ },
+ Ibgp: &Ibgp{
+ Config: &IbgpConfig{
+ MaximumPaths: c.Ibgp.Config.MaximumPaths,
+ },
+ },
+ }
+}
+
+func NewPrefixLimitFromConfigStruct(c *config.AfiSafi) *PrefixLimit {
+ family, err := bgp.GetRouteFamily(string(c.Config.AfiSafiName))
+ if err != nil || c.PrefixLimit.Config.MaxPrefixes == 0 {
+ return nil
+ }
+
+ return &PrefixLimit{
+ Family: uint32(family),
+ MaxPrefixes: c.PrefixLimit.Config.MaxPrefixes,
+ ShutdownThresholdPct: uint32(c.PrefixLimit.Config.ShutdownThresholdPct),
+ }
+}
+
+func NewRouteTargetMembershipFromConfigStruct(c *config.RouteTargetMembership) *RouteTargetMembership {
+ return &RouteTargetMembership{
+ Config: &RouteTargetMembershipConfig{
+ DeferralTime: uint32(c.Config.DeferralTime),
+ },
+ }
+}
+
+func NewLongLivedGracefulRestartFromConfigStruct(c *config.LongLivedGracefulRestart) *LongLivedGracefulRestart {
+ return &LongLivedGracefulRestart{
+ Config: &LongLivedGracefulRestartConfig{
+ Enabled: c.Config.Enabled,
+ RestartTime: c.Config.RestartTime,
+ },
+ }
+}
+
+func NewAfiSafiFromConfigStruct(c *config.AfiSafi) *AfiSafi {
+ return &AfiSafi{
+ MpGracefulRestart: NewMpGracefulRestartFromConfigStruct(&c.MpGracefulRestart),
+ Config: NewAfiSafiConfigFromConfigStruct(&c.Config),
+ ApplyPolicy: NewApplyPolicyFromConfigStruct(&c.ApplyPolicy),
+ RouteSelectionOptions: NewRouteSelectionOptionsFromConfigStruct(&c.RouteSelectionOptions),
+ UseMultiplePaths: NewUseMultiplePathsFromConfigStruct(&c.UseMultiplePaths),
+ PrefixLimits: NewPrefixLimitFromConfigStruct(c),
+ RouteTargetMembership: NewRouteTargetMembershipFromConfigStruct(&c.RouteTargetMembership),
+ LongLivedGracefulRestart: NewLongLivedGracefulRestartFromConfigStruct(&c.LongLivedGracefulRestart),
+ }
+}
+
+func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
+ families := make([]uint32, 0, len(pconf.AfiSafis))
prefixLimits := make([]*PrefixLimit, 0, len(pconf.AfiSafis))
- for _, family := range pconf.AfiSafis {
- if c := family.PrefixLimit.Config; c.MaxPrefixes > 0 {
- k, _ := bgp.GetRouteFamily(string(family.Config.AfiSafiName))
- prefixLimits = append(prefixLimits, &PrefixLimit{
- Family: uint32(k),
- MaxPrefixes: c.MaxPrefixes,
- ShutdownThresholdPct: uint32(c.ShutdownThresholdPct),
- })
+ afiSafis := make([]*AfiSafi, 0, len(pconf.AfiSafis))
+ for _, f := range pconf.AfiSafis {
+ if family, ok := bgp.AddressFamilyValueMap[string(f.Config.AfiSafiName)]; ok {
+ families = append(families, uint32(family))
+ }
+ if prefixLimit := NewPrefixLimitFromConfigStruct(&f); prefixLimit != nil {
+ prefixLimits = append(prefixLimits, prefixLimit)
+ }
+ if afiSafi := NewAfiSafiFromConfigStruct(&f); afiSafi != nil {
+ afiSafis = append(afiSafis, afiSafi)
}
}
@@ -136,13 +230,13 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
localAddress = pconf.Transport.State.LocalAddress
}
var remoteCap, localCap [][]byte
- for _, cap := range pconf.State.RemoteCapabilityList {
- c, _ := cap.Serialize()
- remoteCap = append(remoteCap, c)
+ for _, c := range pconf.State.RemoteCapabilityList {
+ cBuf, _ := c.Serialize()
+ remoteCap = append(remoteCap, cBuf)
}
- for _, cap := range pconf.State.LocalCapabilityList {
- c, _ := cap.Serialize()
- localCap = append(localCap, c)
+ for _, c := range pconf.State.LocalCapabilityList {
+ cBuf, _ := c.Serialize()
+ localCap = append(localCap, cBuf)
}
var removePrivateAs PeerConf_RemovePrivateAs
switch pconf.Config.RemovePrivateAs {
@@ -153,7 +247,7 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
}
return &Peer{
Families: families,
- ApplyPolicy: applyPolicy,
+ ApplyPolicy: NewApplyPolicyFromConfigStruct(&pconf.ApplyPolicy),
Conf: &PeerConf{
NeighborAddress: pconf.Config.NeighborAddress,
Id: s.RemoteRouterId,
@@ -236,6 +330,7 @@ func NewPeerFromConfigStruct(pconf *config.Neighbor) *Peer {
RemotePort: uint32(pconf.Transport.Config.RemotePort),
LocalAddress: pconf.Transport.Config.LocalAddress,
},
+ AfiSafis: afiSafis,
}
}
@@ -860,6 +955,111 @@ func (s *Server) DeleteVrf(ctx context.Context, arg *DeleteVrfRequest) (*DeleteV
return &DeleteVrfResponse{}, s.bgpServer.DeleteVrf(arg.Vrf.Name)
}
+func ReadMpGracefulRestartFromAPIStruct(c *config.MpGracefulRestart, a *MpGracefulRestart) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.Config != nil {
+ c.Config.Enabled = a.Config.Enabled
+ }
+}
+
+func ReadAfiSafiConfigFromAPIStruct(c *config.AfiSafiConfig, a *AfiSafiConfig) {
+ if c == nil || a == nil {
+ return
+ }
+ c.Enabled = a.Enabled
+}
+
+func ReadPrefixLimitFromAPIStruct(c *config.PrefixLimit, a *PrefixLimit) {
+ if c == nil || a == nil {
+ return
+ }
+ c.Config.MaxPrefixes = a.MaxPrefixes
+ c.Config.ShutdownThresholdPct = config.Percentage(a.ShutdownThresholdPct)
+}
+
+func ReadApplyPolicyFromAPIStruct(c *config.ApplyPolicy, a *ApplyPolicy) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.ImportPolicy != nil {
+ c.Config.DefaultImportPolicy = config.IntToDefaultPolicyTypeMap[int(a.ImportPolicy.Default)]
+ for _, p := range a.ImportPolicy.Policies {
+ c.Config.ImportPolicyList = append(c.Config.ImportPolicyList, p.Name)
+ }
+ }
+ if a.ExportPolicy != nil {
+ c.Config.DefaultExportPolicy = config.IntToDefaultPolicyTypeMap[int(a.ExportPolicy.Default)]
+ for _, p := range a.ExportPolicy.Policies {
+ c.Config.ExportPolicyList = append(c.Config.ExportPolicyList, p.Name)
+ }
+ }
+ if a.InPolicy != nil {
+ c.Config.DefaultInPolicy = config.IntToDefaultPolicyTypeMap[int(a.InPolicy.Default)]
+ for _, p := range a.InPolicy.Policies {
+ c.Config.InPolicyList = append(c.Config.InPolicyList, p.Name)
+ }
+ }
+}
+
+func ReadRouteSelectionOptionsFromAPIStruct(c *config.RouteSelectionOptions, a *RouteSelectionOptions) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.Config != nil {
+ c.Config.AlwaysCompareMed = a.Config.AlwaysCompareMed
+ c.Config.IgnoreAsPathLength = a.Config.IgnoreAsPathLength
+ c.Config.ExternalCompareRouterId = a.Config.ExternalCompareRouterId
+ c.Config.AdvertiseInactiveRoutes = a.Config.AdvertiseInactiveRoutes
+ c.Config.EnableAigp = a.Config.EnableAigp
+ c.Config.IgnoreNextHopIgpMetric = a.Config.IgnoreNextHopIgpMetric
+ }
+}
+
+func ReadUseMultiplePathsFromAPIStruct(c *config.UseMultiplePaths, a *UseMultiplePaths) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.Config != nil {
+ c.Config.Enabled = a.Config.Enabled
+ }
+ if a.Ebgp != nil && a.Ebgp.Config != nil {
+ c.Ebgp = config.Ebgp{
+ Config: config.EbgpConfig{
+ AllowMultipleAs: a.Ebgp.Config.AllowMultipleAs,
+ MaximumPaths: a.Ebgp.Config.MaximumPaths,
+ },
+ }
+ }
+ if a.Ibgp != nil && a.Ibgp.Config != nil {
+ c.Ibgp = config.Ibgp{
+ Config: config.IbgpConfig{
+ MaximumPaths: a.Ibgp.Config.MaximumPaths,
+ },
+ }
+ }
+}
+
+func ReadRouteTargetMembershipFromAPIStruct(c *config.RouteTargetMembership, a *RouteTargetMembership) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.Config != nil {
+ c.Config.DeferralTime = uint16(a.Config.DeferralTime)
+ }
+}
+
+func ReadLongLivedGracefulRestartFromAPIStruct(c *config.LongLivedGracefulRestart, a *LongLivedGracefulRestart) {
+ if c == nil || a == nil {
+ return
+ }
+ if a.Config != nil {
+ c.Config.Enabled = a.Config.Enabled
+ c.Config.RestartTime = a.Config.RestartTime
+ }
+}
+
func NewNeighborFromAPIStruct(a *Peer) (*config.Neighbor, error) {
pconf := &config.Neighbor{}
if a.Conf != nil {
@@ -885,11 +1085,11 @@ func NewNeighborFromAPIStruct(a *Peer) (*config.Neighbor, error) {
f := func(bufs [][]byte) ([]bgp.ParameterCapabilityInterface, error) {
var caps []bgp.ParameterCapabilityInterface
for _, buf := range bufs {
- cap, err := bgp.DecodeCapability(buf)
+ c, err := bgp.DecodeCapability(buf)
if err != nil {
return nil, err
}
- caps = append(caps, cap)
+ caps = append(caps, c)
}
return caps, nil
}
@@ -907,22 +1107,31 @@ func NewNeighborFromAPIStruct(a *Peer) (*config.Neighbor, error) {
pconf.State.RemoteRouterId = a.Conf.Id
- for _, f := range a.Families {
- family := bgp.RouteFamily(f)
- pconf.AfiSafis = append(pconf.AfiSafis, config.AfiSafi{
+ for _, family := range a.Families {
+ afiSafi := config.AfiSafi{
Config: config.AfiSafiConfig{
- AfiSafiName: config.AfiSafiType(family.String()),
+ AfiSafiName: config.AfiSafiType(bgp.RouteFamily(family).String()),
Enabled: true,
},
- })
- }
- for _, pl := range a.Conf.PrefixLimits {
- for i, f := range pconf.AfiSafis {
- if f.Config.AfiSafiName == config.AfiSafiType(bgp.RouteFamily(pl.Family).String()) {
- pconf.AfiSafis[i].PrefixLimit.Config.MaxPrefixes = pl.MaxPrefixes
- pconf.AfiSafis[i].PrefixLimit.Config.ShutdownThresholdPct = config.Percentage(pl.ShutdownThresholdPct)
+ }
+ for _, pl := range a.Conf.PrefixLimits {
+ if family == pl.Family {
+ ReadPrefixLimitFromAPIStruct(&afiSafi.PrefixLimit, pl)
}
}
+ for _, a := range a.AfiSafis {
+ if a.Config != nil && family == a.Config.Family {
+ ReadMpGracefulRestartFromAPIStruct(&afiSafi.MpGracefulRestart, a.MpGracefulRestart)
+ ReadAfiSafiConfigFromAPIStruct(&afiSafi.Config, a.Config)
+ ReadApplyPolicyFromAPIStruct(&afiSafi.ApplyPolicy, a.ApplyPolicy)
+ ReadRouteSelectionOptionsFromAPIStruct(&afiSafi.RouteSelectionOptions, a.RouteSelectionOptions)
+ ReadUseMultiplePathsFromAPIStruct(&afiSafi.UseMultiplePaths, a.UseMultiplePaths)
+ ReadPrefixLimitFromAPIStruct(&afiSafi.PrefixLimit, a.PrefixLimits)
+ ReadRouteTargetMembershipFromAPIStruct(&afiSafi.RouteTargetMembership, a.RouteTargetMembership)
+ ReadLongLivedGracefulRestartFromAPIStruct(&afiSafi.LongLivedGracefulRestart, a.LongLivedGracefulRestart)
+ }
+ }
+ pconf.AfiSafis = append(pconf.AfiSafis, afiSafi)
}
}
@@ -955,26 +1164,7 @@ func NewNeighborFromAPIStruct(a *Peer) (*config.Neighbor, error) {
pconf.GracefulRestart.Config.NotificationEnabled = a.GracefulRestart.NotificationEnabled
pconf.GracefulRestart.Config.LongLivedEnabled = a.GracefulRestart.LonglivedEnabled
}
- if a.ApplyPolicy != nil {
- if a.ApplyPolicy.ImportPolicy != nil {
- pconf.ApplyPolicy.Config.DefaultImportPolicy = config.IntToDefaultPolicyTypeMap[int(a.ApplyPolicy.ImportPolicy.Default)]
- for _, p := range a.ApplyPolicy.ImportPolicy.Policies {
- pconf.ApplyPolicy.Config.ImportPolicyList = append(pconf.ApplyPolicy.Config.ImportPolicyList, p.Name)
- }
- }
- if a.ApplyPolicy.ExportPolicy != nil {
- pconf.ApplyPolicy.Config.DefaultExportPolicy = config.IntToDefaultPolicyTypeMap[int(a.ApplyPolicy.ExportPolicy.Default)]
- for _, p := range a.ApplyPolicy.ExportPolicy.Policies {
- pconf.ApplyPolicy.Config.ExportPolicyList = append(pconf.ApplyPolicy.Config.ExportPolicyList, p.Name)
- }
- }
- if a.ApplyPolicy.InPolicy != nil {
- pconf.ApplyPolicy.Config.DefaultInPolicy = config.IntToDefaultPolicyTypeMap[int(a.ApplyPolicy.InPolicy.Default)]
- for _, p := range a.ApplyPolicy.InPolicy.Policies {
- pconf.ApplyPolicy.Config.InPolicyList = append(pconf.ApplyPolicy.Config.InPolicyList, p.Name)
- }
- }
- }
+ ReadApplyPolicyFromAPIStruct(&pconf.ApplyPolicy, a.ApplyPolicy)
if a.Transport != nil {
pconf.Transport.Config.LocalAddress = a.Transport.LocalAddress
pconf.Transport.Config.PassiveMode = a.Transport.PassiveMode