diff --git a/api/client/client.go b/api/client/client.go index 77d3f7d7c6f0e..892666afbb29e 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -857,6 +857,11 @@ func (c *Client) BotServiceClient() machineidv1pb.BotServiceClient { return machineidv1pb.NewBotServiceClient(c.conn) } +// BotInstanceServiceClient returns an unadorned client for the bot instance service +func (c *Client) BotInstanceServiceClient() machineidv1pb.BotInstanceServiceClient { + return machineidv1pb.NewBotInstanceServiceClient(c.conn) +} + // WorkloadIdentityServiceClient returns an unadorned client for the workload // identity service. func (c *Client) WorkloadIdentityServiceClient() machineidv1pb.WorkloadIdentityServiceClient { diff --git a/api/client/events.go b/api/client/events.go index 6b9d9240a723a..8e79df1756ccd 100644 --- a/api/client/events.go +++ b/api/client/events.go @@ -21,6 +21,7 @@ import ( accessmonitoringrulesv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/accessmonitoringrules/v1" crownjewelv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/crownjewel/v1" kubewaitingcontainerpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/accesslist" accesslistv1conv "github.com/gravitational/teleport/api/types/accesslist/convert/v1" @@ -66,6 +67,10 @@ func EventToGRPC(in types.Event) (*proto.Event, error) { out.Resource = &proto.Event_CrownJewel{ CrownJewel: r, } + case *machineidv1.BotInstance: + out.Resource = &proto.Event_BotInstance{ + BotInstance: r, + } } case *types.ResourceHeader: out.Resource = &proto.Event_ResourceHeader{ @@ -486,6 +491,9 @@ func EventFromGRPC(in *proto.Event) (*types.Event, error) { } else if r := in.GetCrownJewel(); r != nil { out.Resource = types.Resource153ToLegacy(r) return &out, nil + } else if r := in.GetBotInstance(); r != nil { + out.Resource = types.Resource153ToLegacy(r) + return &out, nil } else { return nil, trace.BadParameter("received unsupported resource %T", in.Resource) } diff --git a/api/client/proto/event.pb.go b/api/client/proto/event.pb.go index 7518486cf92db..59ad58f59c7ff 100644 --- a/api/client/proto/event.pb.go +++ b/api/client/proto/event.pb.go @@ -26,6 +26,7 @@ import ( v16 "github.com/gravitational/teleport/api/gen/proto/go/teleport/crownjewel/v1" v12 "github.com/gravitational/teleport/api/gen/proto/go/teleport/discoveryconfig/v1" v14 "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" + v17 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" v13 "github.com/gravitational/teleport/api/gen/proto/go/teleport/secreports/v1" v11 "github.com/gravitational/teleport/api/gen/proto/go/teleport/userloginstate/v1" types "github.com/gravitational/teleport/api/types" @@ -161,6 +162,7 @@ type Event struct { // *Event_KubernetesWaitingContainer // *Event_AccessMonitoringRule // *Event_CrownJewel + // *Event_BotInstance Resource isEvent_Resource `protobuf_oneof:"Resource"` } @@ -581,6 +583,13 @@ func (x *Event) GetCrownJewel() *v16.CrownJewel { return nil } +func (x *Event) GetBotInstance() *v17.BotInstance { + if x, ok := x.GetResource().(*Event_BotInstance); ok { + return x.BotInstance + } + return nil +} + type isEvent_Resource interface { isEvent_Resource() } @@ -853,6 +862,11 @@ type Event_CrownJewel struct { CrownJewel *v16.CrownJewel `protobuf:"bytes,58,opt,name=CrownJewel,proto3,oneof"` } +type Event_BotInstance struct { + // BotInstance is a Machine ID bot instance. + BotInstance *v17.BotInstance `protobuf:"bytes,60,opt,name=BotInstance,proto3,oneof"` +} + func (*Event_ResourceHeader) isEvent_Resource() {} func (*Event_CertAuthority) isEvent_Resource() {} @@ -959,6 +973,8 @@ func (*Event_AccessMonitoringRule) isEvent_Resource() {} func (*Event_CrownJewel) isEvent_Resource() {} +func (*Event_BotInstance) isEvent_Resource() {} + var File_teleport_legacy_client_proto_event_proto protoreflect.FileDescriptor var file_teleport_legacy_client_proto_event_proto_rawDesc = []byte{ @@ -983,247 +999,254 @@ var file_teleport_legacy_client_proto_event_proto_rawDesc = []byte{ 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, - 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xbe, 0x1c, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x48, 0x00, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x0d, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, 0x32, 0x48, - 0x00, 0x52, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, - 0x41, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, - 0x48, 0x00, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x38, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, - 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x04, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x23, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x36, 0x48, 0x00, - 0x52, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x56, 0x32, 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x12, 0x47, 0x0a, 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, - 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, + 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x27, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x86, 0x1d, 0x0a, 0x05, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0d, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0d, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x0c, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0c, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x38, 0x0a, 0x0b, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x04, 0x52, + 0x6f, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x36, 0x48, 0x00, 0x52, 0x04, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x30, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3e, 0x0a, + 0x0d, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x76, + 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0d, + 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x47, 0x0a, + 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, - 0x00, 0x52, 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, - 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5c, - 0x0a, 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x17, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x16, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, - 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x50, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x68, - 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, - 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04, 0x4c, 0x6f, 0x63, - 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x32, 0x48, 0x00, 0x52, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x50, - 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x34, 0x48, 0x00, 0x52, 0x13, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x56, 0x0a, 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, - 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, - 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x33, 0x48, - 0x00, 0x52, 0x15, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, - 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, - 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x33, - 0x48, 0x00, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, - 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x20, 0x0a, 0x03, 0x41, 0x70, 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x03, 0x41, - 0x70, 0x70, 0x12, 0x41, 0x0a, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, - 0x32, 0x48, 0x00, 0x52, 0x10, 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x10, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4a, - 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x56, - 0x31, 0x48, 0x00, 0x52, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x44, - 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, - 0x31, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x24, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x41, 0x4d, - 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x3d, 0x0a, 0x0e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, - 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, - 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x26, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x27, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x49, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x31, 0x48, 0x00, 0x52, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, - 0x6c, 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x31, 0x48, 0x00, - 0x52, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x57, 0x0a, - 0x16, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, + 0x00, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, + 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0d, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, + 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, + 0x52, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x12, 0x35, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0a, 0x57, 0x65, 0x62, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, + 0x57, 0x65, 0x62, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5c, 0x0a, 0x17, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x17, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, 0x16, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x41, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x32, + 0x48, 0x00, 0x52, 0x04, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x50, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x56, 0x34, 0x48, 0x00, 0x52, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, + 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x15, 0x57, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x33, 0x48, 0x00, 0x52, 0x15, 0x57, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, + 0x6b, 0x74, 0x6f, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, + 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x44, 0x65, + 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, + 0x09, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x70, + 0x70, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x41, 0x70, 0x70, 0x56, 0x33, 0x48, 0x00, 0x52, 0x03, 0x41, 0x70, 0x70, 0x12, 0x41, 0x0a, 0x10, + 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, + 0x65, 0x62, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x10, 0x53, + 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x47, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x56, 0x33, 0x48, 0x00, 0x52, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4b, 0x75, 0x62, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x33, 0x48, + 0x00, 0x52, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, + 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0f, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, + 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x56, 0x31, 0x48, + 0x00, 0x52, 0x16, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0e, 0x53, 0x41, 0x4d, + 0x4c, 0x49, 0x64, 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0e, 0x53, 0x41, 0x4d, 0x4c, 0x49, 0x64, + 0x50, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x48, + 0x00, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x08, + 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, + 0x31, 0x48, 0x00, 0x52, 0x08, 0x55, 0x49, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, + 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x18, + 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x6b, + 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, 0x56, 0x31, 0x48, 0x00, + 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x41, 0x0a, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, + 0x31, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6b, 0x74, 0x61, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x48, 0x00, + 0x52, 0x0b, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, + 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x2b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0b, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x16, 0x48, 0x65, 0x61, 0x64, 0x6c, + 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, - 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x48, 0x00, 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x48, 0x65, 0x61, 0x64, 0x6c, 0x65, + 0x73, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x2d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, + 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x55, 0x73, + 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x58, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x75, - 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x38, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, - 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x48, 0x00, 0x52, + 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x30, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x0f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0a, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, + 0x52, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, - 0x77, 0x12, 0x7e, 0x0a, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, - 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, - 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x6b, 0x75, 0x62, 0x65, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, - 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x12, 0x6d, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x75, 0x6c, 0x65, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x14, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, - 0x12, 0x44, 0x0a, 0x0a, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x18, 0x3a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, 0x65, 0x77, 0x65, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x43, 0x72, 0x6f, 0x77, - 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x31, 0x10, 0x32, 0x52, 0x12, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, 0x75, 0x64, - 0x69, 0x74, 0x2a, 0x2a, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x42, 0x34, - 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, - 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x77, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x48, 0x00, 0x52, 0x10, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x7e, 0x0a, 0x1a, 0x4b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6b, 0x75, 0x62, 0x65, 0x77, + 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, + 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x57, 0x61, 0x69, 0x74, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x6d, 0x0a, 0x14, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x75, 0x6c, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, + 0x6c, 0x65, 0x48, 0x00, 0x52, 0x14, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x43, 0x72, + 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x6f, 0x77, 0x6e, 0x6a, + 0x65, 0x77, 0x65, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, + 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x43, 0x72, 0x6f, 0x77, 0x6e, 0x4a, 0x65, 0x77, 0x65, 0x6c, + 0x12, 0x46, 0x0a, 0x0b, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x42, 0x6f, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x31, 0x10, 0x32, + 0x52, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x2a, 0x2a, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, + 0x55, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, + 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1293,6 +1316,7 @@ var file_teleport_legacy_client_proto_event_proto_goTypes = []interface{}{ (*v14.KubernetesWaitingContainer)(nil), // 49: teleport.kubewaitingcontainer.v1.KubernetesWaitingContainer (*v15.AccessMonitoringRule)(nil), // 50: teleport.accessmonitoringrules.v1.AccessMonitoringRule (*v16.CrownJewel)(nil), // 51: teleport.crownjewel.v1.CrownJewel + (*v17.BotInstance)(nil), // 52: teleport.machineid.v1.BotInstance } var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{ 0, // 0: proto.Event.Type:type_name -> proto.Operation @@ -1349,11 +1373,12 @@ var file_teleport_legacy_client_proto_event_proto_depIdxs = []int32{ 49, // 51: proto.Event.KubernetesWaitingContainer:type_name -> teleport.kubewaitingcontainer.v1.KubernetesWaitingContainer 50, // 52: proto.Event.AccessMonitoringRule:type_name -> teleport.accessmonitoringrules.v1.AccessMonitoringRule 51, // 53: proto.Event.CrownJewel:type_name -> teleport.crownjewel.v1.CrownJewel - 54, // [54:54] is the sub-list for method output_type - 54, // [54:54] is the sub-list for method input_type - 54, // [54:54] is the sub-list for extension type_name - 54, // [54:54] is the sub-list for extension extendee - 0, // [0:54] is the sub-list for field type_name + 52, // 54: proto.Event.BotInstance:type_name -> teleport.machineid.v1.BotInstance + 55, // [55:55] is the sub-list for method output_type + 55, // [55:55] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_teleport_legacy_client_proto_event_proto_init() } @@ -1429,6 +1454,7 @@ func file_teleport_legacy_client_proto_event_proto_init() { (*Event_KubernetesWaitingContainer)(nil), (*Event_AccessMonitoringRule)(nil), (*Event_CrownJewel)(nil), + (*Event_BotInstance)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go new file mode 100644 index 0000000000000..2350b7aabb7ef --- /dev/null +++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go @@ -0,0 +1,742 @@ +// Copyright 2024 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.0 +// protoc (unknown) +// source: teleport/machineid/v1/bot_instance.proto + +package machineidv1 + +import ( + v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// A BotInstance +type BotInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The kind of resource represented. + Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` + // Differentiates variations of the same kind. All resources should + // contain one, even if it is never populated. + SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"` + // The version of the resource being represented. + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // Common metadata that all resources share. + Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + // The configured properties of a BotInstance. + Spec *BotInstanceSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"` + // Fields that are set by the server as results of operations. These should + // not be modified by users. + Status *BotInstanceStatus `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *BotInstance) Reset() { + *x = BotInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BotInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BotInstance) ProtoMessage() {} + +func (x *BotInstance) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BotInstance.ProtoReflect.Descriptor instead. +func (*BotInstance) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP(), []int{0} +} + +func (x *BotInstance) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *BotInstance) GetSubKind() string { + if x != nil { + return x.SubKind + } + return "" +} + +func (x *BotInstance) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BotInstance) GetMetadata() *v1.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BotInstance) GetSpec() *BotInstanceSpec { + if x != nil { + return x.Spec + } + return nil +} + +func (x *BotInstance) GetStatus() *BotInstanceStatus { + if x != nil { + return x.Status + } + return nil +} + +// BotInstanceSpec contains fields +type BotInstanceSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the bot associated with this instance. + BotName string `protobuf:"bytes,1,opt,name=bot_name,json=botName,proto3" json:"bot_name,omitempty"` + // The unique identifier for this instance. + InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *BotInstanceSpec) Reset() { + *x = BotInstanceSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BotInstanceSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BotInstanceSpec) ProtoMessage() {} + +func (x *BotInstanceSpec) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BotInstanceSpec.ProtoReflect.Descriptor instead. +func (*BotInstanceSpec) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP(), []int{1} +} + +func (x *BotInstanceSpec) GetBotName() string { + if x != nil { + return x.BotName + } + return "" +} + +func (x *BotInstanceSpec) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +// BotInstanceStatusHeartbeat contains information self-reported by an instance +// of a Bot. This information is not verified by the server and should not be +// trusted. +type BotInstanceStatusHeartbeat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The timestamp that the heartbeat was recorded by the Auth Server. Any + // value submitted by `tbot` for this field will be ignored. + RecordedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=recorded_at,json=recordedAt,proto3" json:"recorded_at,omitempty"` + // Indicates whether this is the heartbeat submitted by `tbot` on startup. + IsStartup bool `protobuf:"varint,2,opt,name=is_startup,json=isStartup,proto3" json:"is_startup,omitempty"` + // The version of `tbot` that submitted this heartbeat. + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // The hostname of the host that `tbot` is running on. + Hostname string `protobuf:"bytes,4,opt,name=hostname,proto3" json:"hostname,omitempty"` + // The duration that `tbot` has been running for when it submitted this + // heartbeat. + Uptime *durationpb.Duration `protobuf:"bytes,5,opt,name=uptime,proto3" json:"uptime,omitempty"` + // The currently configured join_method. + JoinMethod string `protobuf:"bytes,6,opt,name=join_method,json=joinMethod,proto3" json:"join_method,omitempty"` + // Indicates whether `tbot` is running in one-shot mode. + OneShot bool `protobuf:"varint,7,opt,name=one_shot,json=oneShot,proto3" json:"one_shot,omitempty"` + // The architecture of the host that `tbot` is running on, determined by + // runtime.GOARCH. + Architecture string `protobuf:"bytes,8,opt,name=architecture,proto3" json:"architecture,omitempty"` + // The OS of the host that `tbot` is running on, determined by runtime.GOOS. + Os string `protobuf:"bytes,9,opt,name=os,proto3" json:"os,omitempty"` +} + +func (x *BotInstanceStatusHeartbeat) Reset() { + *x = BotInstanceStatusHeartbeat{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BotInstanceStatusHeartbeat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BotInstanceStatusHeartbeat) ProtoMessage() {} + +func (x *BotInstanceStatusHeartbeat) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BotInstanceStatusHeartbeat.ProtoReflect.Descriptor instead. +func (*BotInstanceStatusHeartbeat) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP(), []int{2} +} + +func (x *BotInstanceStatusHeartbeat) GetRecordedAt() *timestamppb.Timestamp { + if x != nil { + return x.RecordedAt + } + return nil +} + +func (x *BotInstanceStatusHeartbeat) GetIsStartup() bool { + if x != nil { + return x.IsStartup + } + return false +} + +func (x *BotInstanceStatusHeartbeat) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *BotInstanceStatusHeartbeat) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +func (x *BotInstanceStatusHeartbeat) GetUptime() *durationpb.Duration { + if x != nil { + return x.Uptime + } + return nil +} + +func (x *BotInstanceStatusHeartbeat) GetJoinMethod() string { + if x != nil { + return x.JoinMethod + } + return "" +} + +func (x *BotInstanceStatusHeartbeat) GetOneShot() bool { + if x != nil { + return x.OneShot + } + return false +} + +func (x *BotInstanceStatusHeartbeat) GetArchitecture() string { + if x != nil { + return x.Architecture + } + return "" +} + +func (x *BotInstanceStatusHeartbeat) GetOs() string { + if x != nil { + return x.Os + } + return "" +} + +// BotInstanceStatusAuthentication contains information about a join or renewal. +// Ths information is entirely sourced by the Auth Server and can be trusted. +type BotInstanceStatusAuthentication struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The timestamp that the join or renewal was authenticated by the Auth + // Server. + AuthenticatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=authenticated_at,json=authenticatedAt,proto3" json:"authenticated_at,omitempty"` + // The join method used for this join or renewal. + JoinMethod string `protobuf:"bytes,2,opt,name=join_method,json=joinMethod,proto3" json:"join_method,omitempty"` + // The join token used for this join or renewal. This is only populated for + // delegated join methods as the value for `token` join methods is sensitive. + JoinToken string `protobuf:"bytes,3,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"` + // The metadata sourced from the join method. + Metadata *structpb.Struct `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + // On each renewal, this generation is incremented. For delegated join + // methods, this counter is not checked during renewal. For the `token` join + // method, this counter is checked during renewal and the Bot is locked out if + // the counter in the certificate does not match the counter of the last + // authentication. + Generation int32 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` + // The public key of the Bot instance. This must be a PEM wrapped, PKIX DER + // encoded public key. This provides consistency and supports multiple types + // of public key algorithm. + PublicKey []byte `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` +} + +func (x *BotInstanceStatusAuthentication) Reset() { + *x = BotInstanceStatusAuthentication{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BotInstanceStatusAuthentication) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BotInstanceStatusAuthentication) ProtoMessage() {} + +func (x *BotInstanceStatusAuthentication) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BotInstanceStatusAuthentication.ProtoReflect.Descriptor instead. +func (*BotInstanceStatusAuthentication) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP(), []int{3} +} + +func (x *BotInstanceStatusAuthentication) GetAuthenticatedAt() *timestamppb.Timestamp { + if x != nil { + return x.AuthenticatedAt + } + return nil +} + +func (x *BotInstanceStatusAuthentication) GetJoinMethod() string { + if x != nil { + return x.JoinMethod + } + return "" +} + +func (x *BotInstanceStatusAuthentication) GetJoinToken() string { + if x != nil { + return x.JoinToken + } + return "" +} + +func (x *BotInstanceStatusAuthentication) GetMetadata() *structpb.Struct { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *BotInstanceStatusAuthentication) GetGeneration() int32 { + if x != nil { + return x.Generation + } + return 0 +} + +func (x *BotInstanceStatusAuthentication) GetPublicKey() []byte { + if x != nil { + return x.PublicKey + } + return nil +} + +// BotInstanceStatus holds the status of a BotInstance. +type BotInstanceStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The initial authentication status for this bot instance. + InitialAuthentication *BotInstanceStatusAuthentication `protobuf:"bytes,1,opt,name=initial_authentication,json=initialAuthentication,proto3" json:"initial_authentication,omitempty"` + // The N most recent authentication status records for this bot instance. + LatestAuthentications []*BotInstanceStatusAuthentication `protobuf:"bytes,2,rep,name=latest_authentications,json=latestAuthentications,proto3" json:"latest_authentications,omitempty"` + // The initial heartbeat status for this bot instance. + InitialHeartbeat *BotInstanceStatusHeartbeat `protobuf:"bytes,3,opt,name=initial_heartbeat,json=initialHeartbeat,proto3" json:"initial_heartbeat,omitempty"` + // The N most recent heartbeats for this bot instance. + LatestHeartbeats []*BotInstanceStatusHeartbeat `protobuf:"bytes,4,rep,name=latest_heartbeats,json=latestHeartbeats,proto3" json:"latest_heartbeats,omitempty"` +} + +func (x *BotInstanceStatus) Reset() { + *x = BotInstanceStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BotInstanceStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BotInstanceStatus) ProtoMessage() {} + +func (x *BotInstanceStatus) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BotInstanceStatus.ProtoReflect.Descriptor instead. +func (*BotInstanceStatus) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP(), []int{4} +} + +func (x *BotInstanceStatus) GetInitialAuthentication() *BotInstanceStatusAuthentication { + if x != nil { + return x.InitialAuthentication + } + return nil +} + +func (x *BotInstanceStatus) GetLatestAuthentications() []*BotInstanceStatusAuthentication { + if x != nil { + return x.LatestAuthentications + } + return nil +} + +func (x *BotInstanceStatus) GetInitialHeartbeat() *BotInstanceStatusHeartbeat { + if x != nil { + return x.InitialHeartbeat + } + return nil +} + +func (x *BotInstanceStatus) GetLatestHeartbeats() []*BotInstanceStatusHeartbeat { + if x != nil { + return x.LatestHeartbeats + } + return nil +} + +var File_teleport_machineid_v1_bot_instance_proto protoreflect.FileDescriptor + +var file_teleport_machineid_v1_bot_instance_proto_rawDesc = []byte{ + 0x0a, 0x28, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x21, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x02, 0x0a, 0x0b, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x5f, 0x6b, + 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x4b, 0x69, + 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x58, 0x0a, 0x0f, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0xd1, + 0x02, 0x0a, 0x1a, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x3b, 0x0a, + 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x31, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6e, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x6e, 0x65, 0x53, 0x68, 0x6f, 0x74, 0x12, 0x22, + 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x6f, 0x73, 0x22, 0xaf, 0x02, 0x0a, 0x1f, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x33, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x22, 0xb1, 0x03, 0x0a, 0x11, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6d, 0x0a, 0x16, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x15, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x16, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x48, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x12, 0x5e, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, + 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_teleport_machineid_v1_bot_instance_proto_rawDescOnce sync.Once + file_teleport_machineid_v1_bot_instance_proto_rawDescData = file_teleport_machineid_v1_bot_instance_proto_rawDesc +) + +func file_teleport_machineid_v1_bot_instance_proto_rawDescGZIP() []byte { + file_teleport_machineid_v1_bot_instance_proto_rawDescOnce.Do(func() { + file_teleport_machineid_v1_bot_instance_proto_rawDescData = protoimpl.X.CompressGZIP(file_teleport_machineid_v1_bot_instance_proto_rawDescData) + }) + return file_teleport_machineid_v1_bot_instance_proto_rawDescData +} + +var file_teleport_machineid_v1_bot_instance_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_teleport_machineid_v1_bot_instance_proto_goTypes = []interface{}{ + (*BotInstance)(nil), // 0: teleport.machineid.v1.BotInstance + (*BotInstanceSpec)(nil), // 1: teleport.machineid.v1.BotInstanceSpec + (*BotInstanceStatusHeartbeat)(nil), // 2: teleport.machineid.v1.BotInstanceStatusHeartbeat + (*BotInstanceStatusAuthentication)(nil), // 3: teleport.machineid.v1.BotInstanceStatusAuthentication + (*BotInstanceStatus)(nil), // 4: teleport.machineid.v1.BotInstanceStatus + (*v1.Metadata)(nil), // 5: teleport.header.v1.Metadata + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 7: google.protobuf.Duration + (*structpb.Struct)(nil), // 8: google.protobuf.Struct +} +var file_teleport_machineid_v1_bot_instance_proto_depIdxs = []int32{ + 5, // 0: teleport.machineid.v1.BotInstance.metadata:type_name -> teleport.header.v1.Metadata + 1, // 1: teleport.machineid.v1.BotInstance.spec:type_name -> teleport.machineid.v1.BotInstanceSpec + 4, // 2: teleport.machineid.v1.BotInstance.status:type_name -> teleport.machineid.v1.BotInstanceStatus + 6, // 3: teleport.machineid.v1.BotInstanceStatusHeartbeat.recorded_at:type_name -> google.protobuf.Timestamp + 7, // 4: teleport.machineid.v1.BotInstanceStatusHeartbeat.uptime:type_name -> google.protobuf.Duration + 6, // 5: teleport.machineid.v1.BotInstanceStatusAuthentication.authenticated_at:type_name -> google.protobuf.Timestamp + 8, // 6: teleport.machineid.v1.BotInstanceStatusAuthentication.metadata:type_name -> google.protobuf.Struct + 3, // 7: teleport.machineid.v1.BotInstanceStatus.initial_authentication:type_name -> teleport.machineid.v1.BotInstanceStatusAuthentication + 3, // 8: teleport.machineid.v1.BotInstanceStatus.latest_authentications:type_name -> teleport.machineid.v1.BotInstanceStatusAuthentication + 2, // 9: teleport.machineid.v1.BotInstanceStatus.initial_heartbeat:type_name -> teleport.machineid.v1.BotInstanceStatusHeartbeat + 2, // 10: teleport.machineid.v1.BotInstanceStatus.latest_heartbeats:type_name -> teleport.machineid.v1.BotInstanceStatusHeartbeat + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_teleport_machineid_v1_bot_instance_proto_init() } +func file_teleport_machineid_v1_bot_instance_proto_init() { + if File_teleport_machineid_v1_bot_instance_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_teleport_machineid_v1_bot_instance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotInstanceSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotInstanceStatusHeartbeat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotInstanceStatusAuthentication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BotInstanceStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_teleport_machineid_v1_bot_instance_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_teleport_machineid_v1_bot_instance_proto_goTypes, + DependencyIndexes: file_teleport_machineid_v1_bot_instance_proto_depIdxs, + MessageInfos: file_teleport_machineid_v1_bot_instance_proto_msgTypes, + }.Build() + File_teleport_machineid_v1_bot_instance_proto = out.File + file_teleport_machineid_v1_bot_instance_proto_rawDesc = nil + file_teleport_machineid_v1_bot_instance_proto_goTypes = nil + file_teleport_machineid_v1_bot_instance_proto_depIdxs = nil +} diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go new file mode 100644 index 0000000000000..1feff11e1614f --- /dev/null +++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go @@ -0,0 +1,598 @@ +// Copyright 2024 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.0 +// protoc (unknown) +// source: teleport/machineid/v1/bot_instance_service.proto + +package machineidv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Request for GetBotInstance. +type GetBotInstanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the bot associated with the instance. + BotName string `protobuf:"bytes,1,opt,name=bot_name,json=botName,proto3" json:"bot_name,omitempty"` + // The unique identifier of the bot instance to retrieve. + InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *GetBotInstanceRequest) Reset() { + *x = GetBotInstanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBotInstanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBotInstanceRequest) ProtoMessage() {} + +func (x *GetBotInstanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBotInstanceRequest.ProtoReflect.Descriptor instead. +func (*GetBotInstanceRequest) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{0} +} + +func (x *GetBotInstanceRequest) GetBotName() string { + if x != nil { + return x.BotName + } + return "" +} + +func (x *GetBotInstanceRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +// Request for ListBotInstances. +// +// Follows the pagination semantics of +// https://cloud.google.com/apis/design/standard_methods#list +type ListBotInstancesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the Bot to list BotInstances for. If empty, all BotInstances + // will be listed. + FilterBotName string `protobuf:"bytes,1,opt,name=filter_bot_name,json=filterBotName,proto3" json:"filter_bot_name,omitempty"` + // The maximum number of items to return. + // The server may impose a different page size at its discretion. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // The page_token value returned from a previous ListBotInstances request, if + // any. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListBotInstancesRequest) Reset() { + *x = ListBotInstancesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListBotInstancesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBotInstancesRequest) ProtoMessage() {} + +func (x *ListBotInstancesRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBotInstancesRequest.ProtoReflect.Descriptor instead. +func (*ListBotInstancesRequest) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{1} +} + +func (x *ListBotInstancesRequest) GetFilterBotName() string { + if x != nil { + return x.FilterBotName + } + return "" +} + +func (x *ListBotInstancesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListBotInstancesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Response for ListBotInstances. +type ListBotInstancesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // BotInstance that matched the search. + BotInstances []*BotInstance `protobuf:"bytes,1,rep,name=bot_instances,json=botInstances,proto3" json:"bot_instances,omitempty"` + // Token to retrieve the next page of results, or empty if there are no + // more results exist. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListBotInstancesResponse) Reset() { + *x = ListBotInstancesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListBotInstancesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListBotInstancesResponse) ProtoMessage() {} + +func (x *ListBotInstancesResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListBotInstancesResponse.ProtoReflect.Descriptor instead. +func (*ListBotInstancesResponse) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{2} +} + +func (x *ListBotInstancesResponse) GetBotInstances() []*BotInstance { + if x != nil { + return x.BotInstances + } + return nil +} + +func (x *ListBotInstancesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request for DeleteBotInstance. +type DeleteBotInstanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the BotInstance to delete. + BotName string `protobuf:"bytes,1,opt,name=bot_name,json=botName,proto3" json:"bot_name,omitempty"` + // The unique identifier of the bot instance to delete. + InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *DeleteBotInstanceRequest) Reset() { + *x = DeleteBotInstanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteBotInstanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteBotInstanceRequest) ProtoMessage() {} + +func (x *DeleteBotInstanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteBotInstanceRequest.ProtoReflect.Descriptor instead. +func (*DeleteBotInstanceRequest) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{3} +} + +func (x *DeleteBotInstanceRequest) GetBotName() string { + if x != nil { + return x.BotName + } + return "" +} + +func (x *DeleteBotInstanceRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +// The request for SubmitHeartbeat. +type SubmitHeartbeatRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The heartbeat data to submit. + Heartbeat *BotInstanceStatusHeartbeat `protobuf:"bytes,1,opt,name=heartbeat,proto3" json:"heartbeat,omitempty"` +} + +func (x *SubmitHeartbeatRequest) Reset() { + *x = SubmitHeartbeatRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitHeartbeatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitHeartbeatRequest) ProtoMessage() {} + +func (x *SubmitHeartbeatRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubmitHeartbeatRequest.ProtoReflect.Descriptor instead. +func (*SubmitHeartbeatRequest) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{4} +} + +func (x *SubmitHeartbeatRequest) GetHeartbeat() *BotInstanceStatusHeartbeat { + if x != nil { + return x.Heartbeat + } + return nil +} + +// The response for SubmitHeartbeat. +type SubmitHeartbeatResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SubmitHeartbeatResponse) Reset() { + *x = SubmitHeartbeatResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitHeartbeatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitHeartbeatResponse) ProtoMessage() {} + +func (x *SubmitHeartbeatResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubmitHeartbeatResponse.ProtoReflect.Descriptor instead. +func (*SubmitHeartbeatResponse) Descriptor() ([]byte, []int) { + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP(), []int{5} +} + +var File_teleport_machineid_v1_bot_instance_service_proto protoreflect.FileDescriptor + +var file_teleport_machineid_v1_bot_instance_service_proto_rawDesc = []byte{ + 0x0a, 0x30, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x6f, + 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x53, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6f, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6f, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x42, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x74, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x62, 0x6f, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x56, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x62, 0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x62, 0x6f, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x16, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x09, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x09, 0x68, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x48, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0xbd, 0x03, 0x0a, 0x12, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x6f, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x70, + 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, + 0x74, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x48, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x69, 0x64, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_teleport_machineid_v1_bot_instance_service_proto_rawDescOnce sync.Once + file_teleport_machineid_v1_bot_instance_service_proto_rawDescData = file_teleport_machineid_v1_bot_instance_service_proto_rawDesc +) + +func file_teleport_machineid_v1_bot_instance_service_proto_rawDescGZIP() []byte { + file_teleport_machineid_v1_bot_instance_service_proto_rawDescOnce.Do(func() { + file_teleport_machineid_v1_bot_instance_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_teleport_machineid_v1_bot_instance_service_proto_rawDescData) + }) + return file_teleport_machineid_v1_bot_instance_service_proto_rawDescData +} + +var file_teleport_machineid_v1_bot_instance_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_teleport_machineid_v1_bot_instance_service_proto_goTypes = []interface{}{ + (*GetBotInstanceRequest)(nil), // 0: teleport.machineid.v1.GetBotInstanceRequest + (*ListBotInstancesRequest)(nil), // 1: teleport.machineid.v1.ListBotInstancesRequest + (*ListBotInstancesResponse)(nil), // 2: teleport.machineid.v1.ListBotInstancesResponse + (*DeleteBotInstanceRequest)(nil), // 3: teleport.machineid.v1.DeleteBotInstanceRequest + (*SubmitHeartbeatRequest)(nil), // 4: teleport.machineid.v1.SubmitHeartbeatRequest + (*SubmitHeartbeatResponse)(nil), // 5: teleport.machineid.v1.SubmitHeartbeatResponse + (*BotInstance)(nil), // 6: teleport.machineid.v1.BotInstance + (*BotInstanceStatusHeartbeat)(nil), // 7: teleport.machineid.v1.BotInstanceStatusHeartbeat + (*emptypb.Empty)(nil), // 8: google.protobuf.Empty +} +var file_teleport_machineid_v1_bot_instance_service_proto_depIdxs = []int32{ + 6, // 0: teleport.machineid.v1.ListBotInstancesResponse.bot_instances:type_name -> teleport.machineid.v1.BotInstance + 7, // 1: teleport.machineid.v1.SubmitHeartbeatRequest.heartbeat:type_name -> teleport.machineid.v1.BotInstanceStatusHeartbeat + 0, // 2: teleport.machineid.v1.BotInstanceService.GetBotInstance:input_type -> teleport.machineid.v1.GetBotInstanceRequest + 1, // 3: teleport.machineid.v1.BotInstanceService.ListBotInstances:input_type -> teleport.machineid.v1.ListBotInstancesRequest + 3, // 4: teleport.machineid.v1.BotInstanceService.DeleteBotInstance:input_type -> teleport.machineid.v1.DeleteBotInstanceRequest + 4, // 5: teleport.machineid.v1.BotInstanceService.SubmitHeartbeat:input_type -> teleport.machineid.v1.SubmitHeartbeatRequest + 6, // 6: teleport.machineid.v1.BotInstanceService.GetBotInstance:output_type -> teleport.machineid.v1.BotInstance + 2, // 7: teleport.machineid.v1.BotInstanceService.ListBotInstances:output_type -> teleport.machineid.v1.ListBotInstancesResponse + 8, // 8: teleport.machineid.v1.BotInstanceService.DeleteBotInstance:output_type -> google.protobuf.Empty + 5, // 9: teleport.machineid.v1.BotInstanceService.SubmitHeartbeat:output_type -> teleport.machineid.v1.SubmitHeartbeatResponse + 6, // [6:10] is the sub-list for method output_type + 2, // [2:6] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_teleport_machineid_v1_bot_instance_service_proto_init() } +func file_teleport_machineid_v1_bot_instance_service_proto_init() { + if File_teleport_machineid_v1_bot_instance_service_proto != nil { + return + } + file_teleport_machineid_v1_bot_instance_proto_init() + if !protoimpl.UnsafeEnabled { + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBotInstanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBotInstancesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListBotInstancesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteBotInstanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitHeartbeatRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_machineid_v1_bot_instance_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitHeartbeatResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_teleport_machineid_v1_bot_instance_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_teleport_machineid_v1_bot_instance_service_proto_goTypes, + DependencyIndexes: file_teleport_machineid_v1_bot_instance_service_proto_depIdxs, + MessageInfos: file_teleport_machineid_v1_bot_instance_service_proto_msgTypes, + }.Build() + File_teleport_machineid_v1_bot_instance_service_proto = out.File + file_teleport_machineid_v1_bot_instance_service_proto_rawDesc = nil + file_teleport_machineid_v1_bot_instance_service_proto_goTypes = nil + file_teleport_machineid_v1_bot_instance_service_proto_depIdxs = nil +} diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_grpc.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_grpc.pb.go new file mode 100644 index 0000000000000..4be6029abbb74 --- /dev/null +++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_grpc.pb.go @@ -0,0 +1,243 @@ +// Copyright 2024 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: teleport/machineid/v1/bot_instance_service.proto + +package machineidv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + BotInstanceService_GetBotInstance_FullMethodName = "/teleport.machineid.v1.BotInstanceService/GetBotInstance" + BotInstanceService_ListBotInstances_FullMethodName = "/teleport.machineid.v1.BotInstanceService/ListBotInstances" + BotInstanceService_DeleteBotInstance_FullMethodName = "/teleport.machineid.v1.BotInstanceService/DeleteBotInstance" + BotInstanceService_SubmitHeartbeat_FullMethodName = "/teleport.machineid.v1.BotInstanceService/SubmitHeartbeat" +) + +// BotInstanceServiceClient is the client API for BotInstanceService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type BotInstanceServiceClient interface { + // GetBotInstance returns the specified BotInstance resource. + GetBotInstance(ctx context.Context, in *GetBotInstanceRequest, opts ...grpc.CallOption) (*BotInstance, error) + // ListBotInstances returns a page of BotInstance resources. + ListBotInstances(ctx context.Context, in *ListBotInstancesRequest, opts ...grpc.CallOption) (*ListBotInstancesResponse, error) + // DeleteBotInstance hard deletes the specified BotInstance resource. + DeleteBotInstance(ctx context.Context, in *DeleteBotInstanceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // SubmitHeartbeat submits a heartbeat for a BotInstance. + SubmitHeartbeat(ctx context.Context, in *SubmitHeartbeatRequest, opts ...grpc.CallOption) (*SubmitHeartbeatResponse, error) +} + +type botInstanceServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewBotInstanceServiceClient(cc grpc.ClientConnInterface) BotInstanceServiceClient { + return &botInstanceServiceClient{cc} +} + +func (c *botInstanceServiceClient) GetBotInstance(ctx context.Context, in *GetBotInstanceRequest, opts ...grpc.CallOption) (*BotInstance, error) { + out := new(BotInstance) + err := c.cc.Invoke(ctx, BotInstanceService_GetBotInstance_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *botInstanceServiceClient) ListBotInstances(ctx context.Context, in *ListBotInstancesRequest, opts ...grpc.CallOption) (*ListBotInstancesResponse, error) { + out := new(ListBotInstancesResponse) + err := c.cc.Invoke(ctx, BotInstanceService_ListBotInstances_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *botInstanceServiceClient) DeleteBotInstance(ctx context.Context, in *DeleteBotInstanceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, BotInstanceService_DeleteBotInstance_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *botInstanceServiceClient) SubmitHeartbeat(ctx context.Context, in *SubmitHeartbeatRequest, opts ...grpc.CallOption) (*SubmitHeartbeatResponse, error) { + out := new(SubmitHeartbeatResponse) + err := c.cc.Invoke(ctx, BotInstanceService_SubmitHeartbeat_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// BotInstanceServiceServer is the server API for BotInstanceService service. +// All implementations must embed UnimplementedBotInstanceServiceServer +// for forward compatibility +type BotInstanceServiceServer interface { + // GetBotInstance returns the specified BotInstance resource. + GetBotInstance(context.Context, *GetBotInstanceRequest) (*BotInstance, error) + // ListBotInstances returns a page of BotInstance resources. + ListBotInstances(context.Context, *ListBotInstancesRequest) (*ListBotInstancesResponse, error) + // DeleteBotInstance hard deletes the specified BotInstance resource. + DeleteBotInstance(context.Context, *DeleteBotInstanceRequest) (*emptypb.Empty, error) + // SubmitHeartbeat submits a heartbeat for a BotInstance. + SubmitHeartbeat(context.Context, *SubmitHeartbeatRequest) (*SubmitHeartbeatResponse, error) + mustEmbedUnimplementedBotInstanceServiceServer() +} + +// UnimplementedBotInstanceServiceServer must be embedded to have forward compatible implementations. +type UnimplementedBotInstanceServiceServer struct { +} + +func (UnimplementedBotInstanceServiceServer) GetBotInstance(context.Context, *GetBotInstanceRequest) (*BotInstance, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBotInstance not implemented") +} +func (UnimplementedBotInstanceServiceServer) ListBotInstances(context.Context, *ListBotInstancesRequest) (*ListBotInstancesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListBotInstances not implemented") +} +func (UnimplementedBotInstanceServiceServer) DeleteBotInstance(context.Context, *DeleteBotInstanceRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteBotInstance not implemented") +} +func (UnimplementedBotInstanceServiceServer) SubmitHeartbeat(context.Context, *SubmitHeartbeatRequest) (*SubmitHeartbeatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SubmitHeartbeat not implemented") +} +func (UnimplementedBotInstanceServiceServer) mustEmbedUnimplementedBotInstanceServiceServer() {} + +// UnsafeBotInstanceServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to BotInstanceServiceServer will +// result in compilation errors. +type UnsafeBotInstanceServiceServer interface { + mustEmbedUnimplementedBotInstanceServiceServer() +} + +func RegisterBotInstanceServiceServer(s grpc.ServiceRegistrar, srv BotInstanceServiceServer) { + s.RegisterService(&BotInstanceService_ServiceDesc, srv) +} + +func _BotInstanceService_GetBotInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBotInstanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BotInstanceServiceServer).GetBotInstance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BotInstanceService_GetBotInstance_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BotInstanceServiceServer).GetBotInstance(ctx, req.(*GetBotInstanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BotInstanceService_ListBotInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListBotInstancesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BotInstanceServiceServer).ListBotInstances(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BotInstanceService_ListBotInstances_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BotInstanceServiceServer).ListBotInstances(ctx, req.(*ListBotInstancesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BotInstanceService_DeleteBotInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteBotInstanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BotInstanceServiceServer).DeleteBotInstance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BotInstanceService_DeleteBotInstance_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BotInstanceServiceServer).DeleteBotInstance(ctx, req.(*DeleteBotInstanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _BotInstanceService_SubmitHeartbeat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SubmitHeartbeatRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BotInstanceServiceServer).SubmitHeartbeat(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: BotInstanceService_SubmitHeartbeat_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BotInstanceServiceServer).SubmitHeartbeat(ctx, req.(*SubmitHeartbeatRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// BotInstanceService_ServiceDesc is the grpc.ServiceDesc for BotInstanceService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var BotInstanceService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "teleport.machineid.v1.BotInstanceService", + HandlerType: (*BotInstanceServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetBotInstance", + Handler: _BotInstanceService_GetBotInstance_Handler, + }, + { + MethodName: "ListBotInstances", + Handler: _BotInstanceService_ListBotInstances_Handler, + }, + { + MethodName: "DeleteBotInstance", + Handler: _BotInstanceService_DeleteBotInstance_Handler, + }, + { + MethodName: "SubmitHeartbeat", + Handler: _BotInstanceService_SubmitHeartbeat_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "teleport/machineid/v1/bot_instance_service.proto", +} diff --git a/api/proto/teleport/legacy/client/proto/event.proto b/api/proto/teleport/legacy/client/proto/event.proto index dd99ad53b7302..a4a27ca653952 100644 --- a/api/proto/teleport/legacy/client/proto/event.proto +++ b/api/proto/teleport/legacy/client/proto/event.proto @@ -22,6 +22,7 @@ import "teleport/crownjewel/v1/crownjewel.proto"; import "teleport/discoveryconfig/v1/discoveryconfig.proto"; import "teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto"; import "teleport/legacy/types/types.proto"; +import "teleport/machineid/v1/bot_instance.proto"; import "teleport/secreports/v1/secreports.proto"; import "teleport/userloginstate/v1/userloginstate.proto"; @@ -157,5 +158,7 @@ message Event { teleport.accessmonitoringrules.v1.AccessMonitoringRule AccessMonitoringRule = 54; // CrownJewel is a Crown Jewel resource. teleport.crownjewel.v1.CrownJewel CrownJewel = 58; + // BotInstance is a Machine ID bot instance. + teleport.machineid.v1.BotInstance BotInstance = 60; } } diff --git a/api/proto/teleport/legacy/types/events/events.proto b/api/proto/teleport/legacy/types/events/events.proto index e0921f30c6dec..57de61962898d 100644 --- a/api/proto/teleport/legacy/types/events/events.proto +++ b/api/proto/teleport/legacy/types/events/events.proto @@ -111,6 +111,13 @@ message UserMetadata { // UserKind indicates what type of user this is, e.g. a human or Machine ID // bot user. UserKind UserKind = 10 [(gogoproto.jsontag) = "user_kind,omitempty"]; + + // BotName is the name of the Bot if this action is associated with one. + string BotName = 11 [(gogoproto.jsontag) = "bot_name,omitempty"]; + + // BotInstanceID is the ID of the Bot Instance if this action is associated + // with one. + string BotInstanceID = 12 [(gogoproto.jsontag) = "bot_instance_id,omitempty"]; } // Server is a server metadata @@ -3785,6 +3792,8 @@ message BotJoin { (gogoproto.embed) = true, (gogoproto.jsontag) = "" ]; + // BotInstanceID is the ID of the bot instance which has joined or renewed. + string BotInstanceID = 9 [(gogoproto.jsontag) = "bot_instance_id,omitempty"]; } // InstanceJoin records an instance join event. @@ -4503,6 +4512,9 @@ message Identity { // DeviceExtensions holds the device trust device extensions for the identity, // if any. DeviceExtensions DeviceExtensions = 28 [(gogoproto.jsontag) = "device_extensions,omitempty"]; + // BotInstanceID indicates the name of the Machine ID bot instance this + // identity was issued to, if any. + string BotInstanceID = 29 [(gogoproto.jsontag) = "bot_instance_id,omitempty"]; } // RouteToApp contains parameters for application access certificate requests. diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto index 92a27ea0c13e4..f892729f7b376 100644 --- a/api/proto/teleport/legacy/types/types.proto +++ b/api/proto/teleport/legacy/types/types.proto @@ -5198,6 +5198,16 @@ message RegisterUsingTokenRequest { (gogoproto.stdtime) = true, (gogoproto.jsontag) = "expires,omitempty" ]; + // BotInstanceID is a trusted instance identifier for a Machine ID bot, + // provided when rejoining. This parameters may only be provided by the join + // service and is ignored otherwise; bots should otherwise rejoin with their + // existing client certificate to prove their instance identity. + string BotInstanceID = 13 [(gogoproto.jsontag) = "bot_instance_id"]; + // BotGeneration is a trusted generation counter value for Machine ID bots, + // provided to Auth by the Join Service when bots rejoin via a streamed/gRPC + // join method. Rejoining bots supply this value via a client certificate + // extension; it is ignored from other sources. + int32 BotGeneration = 14 [(gogoproto.jsontag) = "bot_generation"]; } // RecoveryCodes holds a user's recovery code information. Recovery codes allows users to regain diff --git a/api/proto/teleport/machineid/v1/bot_instance.proto b/api/proto/teleport/machineid/v1/bot_instance.proto new file mode 100644 index 0000000000000..6ff4719ed15f8 --- /dev/null +++ b/api/proto/teleport/machineid/v1/bot_instance.proto @@ -0,0 +1,123 @@ +// Copyright 2024 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package teleport.machineid.v1; + +import "google/protobuf/duration.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; +import "teleport/header/v1/metadata.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1;machineidv1"; + +// A BotInstance +message BotInstance { + // The kind of resource represented. + string kind = 1; + // Differentiates variations of the same kind. All resources should + // contain one, even if it is never populated. + string sub_kind = 2; + // The version of the resource being represented. + string version = 3; + // Common metadata that all resources share. + teleport.header.v1.Metadata metadata = 4; + // The configured properties of a BotInstance. + BotInstanceSpec spec = 5; + // Fields that are set by the server as results of operations. These should + // not be modified by users. + BotInstanceStatus status = 6; +} + +// BotInstanceSpec contains fields +message BotInstanceSpec { + // The name of the bot associated with this instance. + string bot_name = 1; + // The unique identifier for this instance. + string instance_id = 2; + + reserved 3; + reserved "ttl"; +} + +// BotInstanceStatusHeartbeat contains information self-reported by an instance +// of a Bot. This information is not verified by the server and should not be +// trusted. +message BotInstanceStatusHeartbeat { + // The timestamp that the heartbeat was recorded by the Auth Server. Any + // value submitted by `tbot` for this field will be ignored. + google.protobuf.Timestamp recorded_at = 1; + // Indicates whether this is the heartbeat submitted by `tbot` on startup. + bool is_startup = 2; + // The version of `tbot` that submitted this heartbeat. + string version = 3; + // The hostname of the host that `tbot` is running on. + string hostname = 4; + // The duration that `tbot` has been running for when it submitted this + // heartbeat. + google.protobuf.Duration uptime = 5; + // The currently configured join_method. + string join_method = 6; + // Indicates whether `tbot` is running in one-shot mode. + bool one_shot = 7; + // The architecture of the host that `tbot` is running on, determined by + // runtime.GOARCH. + string architecture = 8; + // The OS of the host that `tbot` is running on, determined by runtime.GOOS. + string os = 9; + // In future iterations, additional information can be submitted here. + // For example, the configuration of `tbot` or the health of individual + // outputs. +} + +// BotInstanceStatusAuthentication contains information about a join or renewal. +// Ths information is entirely sourced by the Auth Server and can be trusted. +message BotInstanceStatusAuthentication { + // The timestamp that the join or renewal was authenticated by the Auth + // Server. + google.protobuf.Timestamp authenticated_at = 1; + // The join method used for this join or renewal. + string join_method = 2; + // The join token used for this join or renewal. This is only populated for + // delegated join methods as the value for `token` join methods is sensitive. + string join_token = 3; + // The metadata sourced from the join method. + google.protobuf.Struct metadata = 4; + // On each renewal, this generation is incremented. For delegated join + // methods, this counter is not checked during renewal. For the `token` join + // method, this counter is checked during renewal and the Bot is locked out if + // the counter in the certificate does not match the counter of the last + // authentication. + int32 generation = 5; + // The public key of the Bot instance. This must be a PEM wrapped, PKIX DER + // encoded public key. This provides consistency and supports multiple types + // of public key algorithm. + bytes public_key = 6; + + reserved 7; + reserved "fingerprint"; +} + +// BotInstanceStatus holds the status of a BotInstance. +message BotInstanceStatus { + // The initial authentication status for this bot instance. + BotInstanceStatusAuthentication initial_authentication = 1; + // The N most recent authentication status records for this bot instance. + repeated BotInstanceStatusAuthentication latest_authentications = 2; + // The initial heartbeat status for this bot instance. + BotInstanceStatusHeartbeat initial_heartbeat = 3; + // The N most recent heartbeats for this bot instance. + repeated BotInstanceStatusHeartbeat latest_heartbeats = 4; +} diff --git a/api/proto/teleport/machineid/v1/bot_instance_service.proto b/api/proto/teleport/machineid/v1/bot_instance_service.proto new file mode 100644 index 0000000000000..eff01818599b7 --- /dev/null +++ b/api/proto/teleport/machineid/v1/bot_instance_service.proto @@ -0,0 +1,86 @@ +// Copyright 2024 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package teleport.machineid.v1; + +import "google/protobuf/empty.proto"; +import "teleport/machineid/v1/bot_instance.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1;machineidv1"; + +// Request for GetBotInstance. +message GetBotInstanceRequest { + // The name of the bot associated with the instance. + string bot_name = 1; + // The unique identifier of the bot instance to retrieve. + string instance_id = 2; +} + +// Request for ListBotInstances. +// +// Follows the pagination semantics of +// https://cloud.google.com/apis/design/standard_methods#list +message ListBotInstancesRequest { + // The name of the Bot to list BotInstances for. If empty, all BotInstances + // will be listed. + string filter_bot_name = 1; + // The maximum number of items to return. + // The server may impose a different page size at its discretion. + int32 page_size = 2; + // The page_token value returned from a previous ListBotInstances request, if + // any. + string page_token = 3; +} + +// Response for ListBotInstances. +message ListBotInstancesResponse { + // BotInstance that matched the search. + repeated BotInstance bot_instances = 1; + // Token to retrieve the next page of results, or empty if there are no + // more results exist. + string next_page_token = 2; +} + +// Request for DeleteBotInstance. +message DeleteBotInstanceRequest { + // The name of the BotInstance to delete. + string bot_name = 1; + // The unique identifier of the bot instance to delete. + string instance_id = 2; +} + +// The request for SubmitHeartbeat. +message SubmitHeartbeatRequest { + // The heartbeat data to submit. + BotInstanceStatusHeartbeat heartbeat = 1; +} + +// The response for SubmitHeartbeat. +message SubmitHeartbeatResponse { + // Empty +} + +// BotInstanceService provides functions to record and manage bot instances. +service BotInstanceService { + // GetBotInstance returns the specified BotInstance resource. + rpc GetBotInstance(GetBotInstanceRequest) returns (BotInstance); + // ListBotInstances returns a page of BotInstance resources. + rpc ListBotInstances(ListBotInstancesRequest) returns (ListBotInstancesResponse); + // DeleteBotInstance hard deletes the specified BotInstance resource. + rpc DeleteBotInstance(DeleteBotInstanceRequest) returns (google.protobuf.Empty); + // SubmitHeartbeat submits a heartbeat for a BotInstance. + rpc SubmitHeartbeat(SubmitHeartbeatRequest) returns (SubmitHeartbeatResponse); +} diff --git a/api/types/constants.go b/api/types/constants.go index c613c29449700..22597813f8aa5 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -65,6 +65,9 @@ const ( // KindBot is a Machine ID bot resource KindBot = "bot" + // KindBotInstance is an instance of a Machine ID bot + KindBotInstance = "bot_instance" + // KindSPIFFEFederation is a SPIFFE federation resource KindSPIFFEFederation = "spiffe_federation" diff --git a/api/types/events/events.pb.go b/api/types/events/events.pb.go index d22692c50f1cb..1e6bbfa48c657 100644 --- a/api/types/events/events.pb.go +++ b/api/types/events/events.pb.go @@ -500,7 +500,12 @@ type UserMetadata struct { RequiredPrivateKeyPolicy string `protobuf:"bytes,9,opt,name=RequiredPrivateKeyPolicy,proto3" json:"required_private_key_policy,omitempty"` // UserKind indicates what type of user this is, e.g. a human or Machine ID // bot user. - UserKind UserKind `protobuf:"varint,10,opt,name=UserKind,proto3,enum=events.UserKind" json:"user_kind,omitempty"` + UserKind UserKind `protobuf:"varint,10,opt,name=UserKind,proto3,enum=events.UserKind" json:"user_kind,omitempty"` + // BotName is the name of the Bot if this action is associated with one. + BotName string `protobuf:"bytes,11,opt,name=BotName,proto3" json:"bot_name,omitempty"` + // BotInstanceID is the ID of the Bot Instance if this action is associated + // with one. + BotInstanceID string `protobuf:"bytes,12,opt,name=BotInstanceID,proto3" json:"bot_instance_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -6489,7 +6494,9 @@ type BotJoin struct { // Attributes is a map of attributes received from the join method provider. Attributes *Struct `protobuf:"bytes,6,opt,name=Attributes,proto3,casttype=Struct" json:"attributes,omitempty"` // ConnectionMetadata holds information about the connection - ConnectionMetadata `protobuf:"bytes,8,opt,name=Connection,proto3,embedded=Connection" json:""` + ConnectionMetadata `protobuf:"bytes,8,opt,name=Connection,proto3,embedded=Connection" json:""` + // BotInstanceID is the ID of the bot instance which has joined or renewed. + BotInstanceID string `protobuf:"bytes,9,opt,name=BotInstanceID,proto3" json:"bot_instance_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -9642,10 +9649,13 @@ type Identity struct { BotName string `protobuf:"bytes,27,opt,name=BotName,proto3" json:"bot_name,omitempty"` // DeviceExtensions holds the device trust device extensions for the identity, // if any. - DeviceExtensions *DeviceExtensions `protobuf:"bytes,28,opt,name=DeviceExtensions,proto3" json:"device_extensions,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + DeviceExtensions *DeviceExtensions `protobuf:"bytes,28,opt,name=DeviceExtensions,proto3" json:"device_extensions,omitempty"` + // BotInstanceID indicates the name of the Machine ID bot instance this + // identity was issued to, if any. + BotInstanceID string `protobuf:"bytes,29,opt,name=BotInstanceID,proto3" json:"bot_instance_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Identity) Reset() { *m = Identity{} } @@ -13512,962 +13522,966 @@ func init() { } var fileDescriptor_007ba1c3d6266d56 = []byte{ - // 15275 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x70, 0x24, 0xc7, - 0x75, 0x20, 0x88, 0xfe, 0x40, 0x03, 0x78, 0xf8, 0x18, 0x20, 0x67, 0x38, 0x53, 0x1c, 0x0e, 0xa7, - 0xc9, 0xa2, 0x38, 0x9a, 0xa1, 0x48, 0x8c, 0x38, 0x1c, 0x92, 0x22, 0x45, 0x8a, 0x6c, 0xa0, 0x81, - 0x41, 0x73, 0xf0, 0xc5, 0x6a, 0xcc, 0x8c, 0xa8, 0x0f, 0xb6, 0x0b, 0x5d, 0x09, 0xa0, 0x88, 0xee, - 0xaa, 0x56, 0x55, 0xf5, 0x60, 0xc0, 0xfb, 0xb2, 0x7c, 0xfe, 0x90, 0x7c, 0x92, 0x4e, 0x27, 0x9f, - 0xbf, 0x7d, 0x77, 0xb2, 0x1d, 0xbe, 0xb3, 0x1d, 0x3e, 0xfb, 0x7c, 0x77, 0x61, 0x5b, 0xf6, 0x29, - 0xce, 0x3e, 0xdd, 0xc5, 0xd1, 0x2b, 0x7b, 0xc3, 0xf6, 0xee, 0x3a, 0x1c, 0xbb, 0x5e, 0xc8, 0xab, - 0x5d, 0xef, 0x0f, 0xc4, 0x6e, 0x84, 0x77, 0x57, 0xb1, 0xf6, 0x7a, 0xbd, 0x1b, 0x1b, 0xf9, 0x32, - 0xab, 0x2a, 0xeb, 0xa3, 0x1b, 0x9f, 0x34, 0x08, 0x0e, 0xfe, 0xcc, 0xa0, 0xdf, 0x7b, 0xf9, 0x32, - 0xeb, 0xe5, 0xcb, 0xcc, 0x97, 0x99, 0x2f, 0xdf, 0x83, 0x2b, 0x1e, 0x6d, 0xd0, 0x96, 0xed, 0x78, - 0x57, 0x1b, 0x74, 0x55, 0xaf, 0x6f, 0x5e, 0xf5, 0x36, 0x5b, 0xd4, 0xbd, 0x4a, 0xef, 0x52, 0xcb, - 0xf3, 0xff, 0x1b, 0x6f, 0x39, 0xb6, 0x67, 0x93, 0x02, 0xff, 0x75, 0xfe, 0xcc, 0xaa, 0xbd, 0x6a, - 0x23, 0xe8, 0x2a, 0xfb, 0x8b, 0x63, 0xcf, 0x5f, 0x58, 0xb5, 0xed, 0xd5, 0x06, 0xbd, 0x8a, 0xbf, - 0x96, 0xdb, 0x2b, 0x57, 0x5d, 0xcf, 0x69, 0xd7, 0x3d, 0x81, 0x2d, 0xc6, 0xb1, 0x9e, 0xd9, 0xa4, - 0xae, 0xa7, 0x37, 0x5b, 0x82, 0xe0, 0x62, 0x9c, 0x60, 0xc3, 0xd1, 0x5b, 0x2d, 0xea, 0x88, 0xca, - 0xcf, 0x3f, 0x9a, 0xde, 0x4e, 0xfc, 0x57, 0x90, 0x3c, 0x95, 0x4e, 0xe2, 0x33, 0x8a, 0x71, 0x54, - 0xbf, 0x92, 0x85, 0xfe, 0x39, 0xea, 0xe9, 0x86, 0xee, 0xe9, 0xe4, 0x02, 0xf4, 0x56, 0x2c, 0x83, - 0xde, 0x53, 0x32, 0x8f, 0x64, 0x2e, 0xe7, 0x26, 0x0a, 0xdb, 0x5b, 0xc5, 0x2c, 0x35, 0x35, 0x0e, - 0x24, 0x0f, 0x43, 0x7e, 0x69, 0xb3, 0x45, 0x95, 0xec, 0x23, 0x99, 0xcb, 0x03, 0x13, 0x03, 0xdb, - 0x5b, 0xc5, 0x5e, 0x94, 0x85, 0x86, 0x60, 0xf2, 0x28, 0x64, 0x2b, 0x65, 0x25, 0x87, 0xc8, 0xb1, - 0xed, 0xad, 0xe2, 0x70, 0xdb, 0x34, 0x9e, 0xb4, 0x9b, 0xa6, 0x47, 0x9b, 0x2d, 0x6f, 0x53, 0xcb, - 0x56, 0xca, 0xe4, 0x12, 0xe4, 0x27, 0x6d, 0x83, 0x2a, 0x79, 0x24, 0x22, 0xdb, 0x5b, 0xc5, 0x91, - 0xba, 0x6d, 0x50, 0x89, 0x0a, 0xf1, 0xe4, 0x55, 0xc8, 0x2f, 0x99, 0x4d, 0xaa, 0xf4, 0x3e, 0x92, - 0xb9, 0x3c, 0x78, 0xed, 0xfc, 0x38, 0x97, 0xca, 0xb8, 0x2f, 0x95, 0xf1, 0x25, 0x5f, 0x6c, 0x13, - 0xa3, 0xef, 0x6c, 0x15, 0x7b, 0xb6, 0xb7, 0x8a, 0x79, 0x26, 0xc9, 0x2f, 0x7f, 0xab, 0x98, 0xd1, - 0xb0, 0x24, 0x79, 0x09, 0x06, 0x27, 0x1b, 0x6d, 0xd7, 0xa3, 0xce, 0xbc, 0xde, 0xa4, 0x4a, 0x01, - 0x2b, 0x3c, 0xbf, 0xbd, 0x55, 0x3c, 0x5b, 0xe7, 0xe0, 0x9a, 0xa5, 0x37, 0xe5, 0x8a, 0x65, 0x72, - 0xf5, 0x37, 0x32, 0x70, 0xaa, 0x4a, 0x5d, 0xd7, 0xb4, 0xad, 0x40, 0x36, 0x8f, 0xc3, 0x80, 0x00, - 0x55, 0xca, 0x28, 0x9f, 0x81, 0x89, 0xbe, 0xed, 0xad, 0x62, 0xce, 0x35, 0x0d, 0x2d, 0xc4, 0x90, - 0x0f, 0x43, 0xdf, 0x1d, 0xd3, 0x5b, 0x9b, 0x9b, 0x2e, 0x09, 0x39, 0x9d, 0xdd, 0xde, 0x2a, 0x92, - 0x0d, 0xd3, 0x5b, 0xab, 0x35, 0x57, 0x74, 0xa9, 0x42, 0x9f, 0x8c, 0xcc, 0xc2, 0xe8, 0xa2, 0x63, - 0xde, 0xd5, 0x3d, 0x7a, 0x93, 0x6e, 0x2e, 0xda, 0x0d, 0xb3, 0xbe, 0x29, 0xa4, 0xf8, 0xc8, 0xf6, - 0x56, 0xf1, 0x42, 0x8b, 0xe3, 0x6a, 0xeb, 0x74, 0xb3, 0xd6, 0x42, 0xac, 0xc4, 0x24, 0x51, 0x52, - 0xfd, 0x46, 0x2f, 0x0c, 0xdd, 0x72, 0xa9, 0x13, 0xb4, 0xfb, 0x12, 0xe4, 0xd9, 0x6f, 0xd1, 0x64, - 0x94, 0x79, 0xdb, 0xa5, 0x8e, 0x2c, 0x73, 0x86, 0x27, 0x57, 0xa0, 0x77, 0xd6, 0x5e, 0x35, 0x2d, - 0xd1, 0xec, 0xd3, 0xdb, 0x5b, 0xc5, 0x53, 0x0d, 0x06, 0x90, 0x28, 0x39, 0x05, 0xf9, 0x18, 0x0c, - 0x55, 0x9a, 0x4c, 0x87, 0x6c, 0x4b, 0xf7, 0x6c, 0x47, 0xb4, 0x16, 0xa5, 0x6b, 0x4a, 0x70, 0xa9, - 0x60, 0x84, 0x9e, 0xbc, 0x08, 0x50, 0xba, 0x53, 0xd5, 0xec, 0x06, 0x2d, 0x69, 0xf3, 0x42, 0x19, - 0xb0, 0xb4, 0xbe, 0xe1, 0xd6, 0x1c, 0xbb, 0x41, 0x6b, 0xba, 0x23, 0x57, 0x2b, 0x51, 0x93, 0x29, - 0x18, 0x29, 0xd5, 0xeb, 0xd4, 0x75, 0x35, 0xfa, 0x99, 0x36, 0x75, 0x3d, 0x57, 0xe9, 0x7d, 0x24, - 0x77, 0x79, 0x60, 0xe2, 0xe1, 0xed, 0xad, 0xe2, 0x83, 0x3a, 0x62, 0x6a, 0x8e, 0x40, 0x49, 0x2c, - 0x62, 0x85, 0xc8, 0x04, 0x0c, 0x97, 0xde, 0x6e, 0x3b, 0xb4, 0x62, 0x50, 0xcb, 0x33, 0xbd, 0x4d, - 0xa1, 0x21, 0x17, 0xb6, 0xb7, 0x8a, 0x8a, 0xce, 0x10, 0x35, 0x53, 0x60, 0x24, 0x26, 0xd1, 0x22, - 0x64, 0x01, 0xc6, 0x6e, 0x4c, 0x2e, 0x56, 0xa9, 0x73, 0xd7, 0xac, 0xd3, 0x52, 0xbd, 0x6e, 0xb7, - 0x2d, 0x4f, 0xe9, 0x43, 0x3e, 0x8f, 0x6e, 0x6f, 0x15, 0x1f, 0x5e, 0xad, 0xb7, 0x6a, 0x2e, 0xc7, - 0xd6, 0x74, 0x8e, 0x96, 0x98, 0x25, 0xcb, 0x92, 0x4f, 0xc0, 0xf0, 0x92, 0xc3, 0xb4, 0xd0, 0x28, - 0x53, 0x06, 0x57, 0xfa, 0x51, 0xff, 0xcf, 0x8e, 0x8b, 0x09, 0x88, 0x43, 0xfd, 0x9e, 0xe5, 0x8d, - 0xf5, 0x78, 0x81, 0x9a, 0x81, 0x38, 0xb9, 0xb1, 0x11, 0x56, 0x84, 0x82, 0xc2, 0x3e, 0xde, 0x74, - 0xa8, 0x91, 0xd0, 0xb6, 0x01, 0x6c, 0xf3, 0x95, 0xed, 0xad, 0xe2, 0xe3, 0x8e, 0xa0, 0xa9, 0x75, - 0x55, 0xbb, 0x8e, 0xac, 0xc8, 0x14, 0xf4, 0x33, 0x6d, 0xba, 0x69, 0x5a, 0x86, 0x02, 0x8f, 0x64, - 0x2e, 0x8f, 0x5c, 0x1b, 0xf5, 0x5b, 0xef, 0xc3, 0x27, 0xce, 0x6d, 0x6f, 0x15, 0x4f, 0x33, 0x1d, - 0xac, 0xad, 0x9b, 0x96, 0x3c, 0x45, 0x04, 0x45, 0xd5, 0xbf, 0xcc, 0xc3, 0x08, 0x13, 0x8e, 0xa4, - 0xc7, 0x25, 0x36, 0x24, 0x19, 0x84, 0x8d, 0x50, 0xb7, 0xa5, 0xd7, 0xa9, 0x50, 0x69, 0x64, 0x67, - 0xf9, 0x40, 0x89, 0x5d, 0x9c, 0x9e, 0x5c, 0x81, 0x7e, 0x0e, 0xaa, 0x94, 0x85, 0x96, 0x0f, 0x6f, - 0x6f, 0x15, 0x07, 0x5c, 0x84, 0xd5, 0x4c, 0x43, 0x0b, 0xd0, 0x4c, 0xcd, 0xf8, 0xdf, 0x33, 0xb6, - 0xeb, 0x31, 0xe6, 0x42, 0xc9, 0x51, 0xcd, 0x44, 0x81, 0x35, 0x81, 0x92, 0xd5, 0x2c, 0x5a, 0x88, - 0xbc, 0x00, 0xc0, 0x21, 0x25, 0xc3, 0x70, 0x84, 0xa6, 0x3f, 0xb8, 0xbd, 0x55, 0x7c, 0x40, 0xb0, - 0xd0, 0x0d, 0x43, 0x1e, 0x26, 0x12, 0x31, 0x69, 0xc2, 0x10, 0xff, 0x35, 0xab, 0x2f, 0xd3, 0x06, - 0x57, 0xf3, 0xc1, 0x6b, 0x97, 0x7d, 0x69, 0x46, 0xa5, 0x33, 0x2e, 0x93, 0x4e, 0x59, 0x9e, 0xb3, - 0x39, 0x51, 0x14, 0x33, 0xe3, 0x39, 0x51, 0x55, 0x03, 0x71, 0xf2, 0x98, 0x94, 0xcb, 0xb0, 0x09, - 0x73, 0xda, 0x76, 0x36, 0x74, 0xc7, 0xa0, 0xc6, 0xc4, 0xa6, 0x3c, 0x61, 0xae, 0xf8, 0xe0, 0xda, - 0xb2, 0xac, 0x03, 0x32, 0x39, 0x99, 0x84, 0x61, 0xce, 0xad, 0xda, 0x5e, 0xc6, 0xbe, 0xef, 0x4b, - 0x48, 0xcb, 0x6d, 0x2f, 0xc7, 0xfb, 0x3b, 0x5a, 0x86, 0x8d, 0x49, 0x0e, 0xb8, 0x4d, 0x1d, 0x36, - 0x9b, 0xa2, 0xfa, 0x8b, 0x31, 0x29, 0x98, 0xdc, 0xe5, 0x98, 0x24, 0x0f, 0x51, 0xe4, 0xfc, 0x2b, - 0x30, 0x96, 0x10, 0x05, 0x19, 0x85, 0xdc, 0x3a, 0xdd, 0xe4, 0xea, 0xa2, 0xb1, 0x3f, 0xc9, 0x19, - 0xe8, 0xbd, 0xab, 0x37, 0xda, 0x62, 0x2d, 0xd3, 0xf8, 0x8f, 0x17, 0xb3, 0x1f, 0xc9, 0xb0, 0xa9, - 0x9f, 0x4c, 0xda, 0x96, 0x45, 0xeb, 0x9e, 0x3c, 0xfb, 0x3f, 0x07, 0x03, 0xb3, 0x76, 0x5d, 0x6f, - 0x60, 0x3f, 0x72, 0xbd, 0x53, 0xb6, 0xb7, 0x8a, 0x67, 0x58, 0x07, 0x8e, 0x37, 0x18, 0x46, 0x6a, - 0x53, 0x48, 0xca, 0x14, 0x40, 0xa3, 0x4d, 0xdb, 0xa3, 0x58, 0x30, 0x1b, 0x2a, 0x00, 0x16, 0x74, - 0x10, 0x25, 0x2b, 0x40, 0x48, 0x4c, 0xae, 0x42, 0xff, 0x22, 0x5b, 0xf0, 0xea, 0x76, 0x43, 0x28, - 0x1f, 0xce, 0xc9, 0xb8, 0x08, 0xca, 0x83, 0xc6, 0x27, 0x52, 0x67, 0x60, 0x64, 0xb2, 0x61, 0x52, - 0xcb, 0x93, 0x5b, 0xcd, 0x86, 0x54, 0x69, 0x95, 0x5a, 0x9e, 0xdc, 0x6a, 0x1c, 0x7c, 0x3a, 0x83, - 0xca, 0xad, 0x0e, 0x48, 0xd5, 0xbf, 0x9b, 0x83, 0x07, 0x6f, 0xb6, 0x97, 0xa9, 0x63, 0x51, 0x8f, - 0xba, 0x62, 0x65, 0x0c, 0xb8, 0xce, 0xc3, 0x58, 0x02, 0x29, 0xb8, 0xe3, 0x8a, 0xb5, 0x1e, 0x20, - 0x6b, 0x62, 0xb1, 0x95, 0xa7, 0xbd, 0x44, 0x51, 0x32, 0x03, 0xa7, 0x42, 0x20, 0x6b, 0x84, 0xab, - 0x64, 0x71, 0x4e, 0xbf, 0xb8, 0xbd, 0x55, 0x3c, 0x2f, 0x71, 0x63, 0xcd, 0x96, 0x35, 0x38, 0x5e, - 0x8c, 0xdc, 0x84, 0xd1, 0x10, 0x74, 0xc3, 0xb1, 0xdb, 0x2d, 0x57, 0xc9, 0x21, 0xab, 0xe2, 0xf6, - 0x56, 0xf1, 0x21, 0x89, 0xd5, 0x2a, 0x22, 0xe5, 0x95, 0x34, 0x5e, 0x90, 0x7c, 0x6f, 0x46, 0xe6, - 0x26, 0x46, 0x61, 0x1e, 0x47, 0xe1, 0xf3, 0xfe, 0x28, 0xec, 0x28, 0xa4, 0xf1, 0x78, 0x49, 0x31, - 0x28, 0x63, 0xcd, 0x48, 0x0c, 0xca, 0x44, 0x8d, 0xe7, 0x27, 0xe1, 0x81, 0x54, 0x5e, 0x7b, 0xd2, - 0xea, 0x3f, 0xcf, 0xc9, 0x5c, 0x16, 0x6d, 0x23, 0xe8, 0xcc, 0x05, 0xb9, 0x33, 0x17, 0x6d, 0x03, - 0xcd, 0xa5, 0x4c, 0xb8, 0x88, 0x49, 0x8d, 0x6d, 0xd9, 0x46, 0xdc, 0x6a, 0x4a, 0x96, 0x25, 0x6f, - 0xc2, 0xd9, 0x04, 0x90, 0x4f, 0xd7, 0x5c, 0xfb, 0x2f, 0x6d, 0x6f, 0x15, 0xd5, 0x14, 0xae, 0xf1, - 0xd9, 0xbb, 0x03, 0x17, 0xa2, 0xc3, 0x39, 0x49, 0xea, 0xb6, 0xe5, 0xe9, 0xa6, 0x25, 0xac, 0x3c, - 0x3e, 0x4a, 0x3e, 0xb8, 0xbd, 0x55, 0x7c, 0x4c, 0xd6, 0x41, 0x9f, 0x26, 0xde, 0xf8, 0x4e, 0x7c, - 0x88, 0x01, 0x4a, 0x0a, 0xaa, 0xd2, 0xd4, 0x57, 0x7d, 0xd3, 0xf5, 0xf2, 0xf6, 0x56, 0xf1, 0x03, - 0xa9, 0x75, 0x98, 0x8c, 0x4a, 0x5e, 0x2a, 0x3b, 0x71, 0x22, 0x1a, 0x90, 0x10, 0x37, 0x6f, 0x1b, - 0x14, 0xbf, 0xa1, 0x17, 0xf9, 0xab, 0xdb, 0x5b, 0xc5, 0x8b, 0x12, 0x7f, 0xcb, 0x36, 0x68, 0xbc, - 0xf9, 0x29, 0xa5, 0xd5, 0xdf, 0xc8, 0xc1, 0xc5, 0x6a, 0x69, 0x6e, 0xb6, 0x62, 0xf8, 0xb6, 0xc5, - 0xa2, 0x63, 0xdf, 0x35, 0x0d, 0x69, 0xf4, 0x2e, 0xc3, 0xb9, 0x18, 0x6a, 0x0a, 0xcd, 0x99, 0xc0, - 0xaa, 0xc5, 0x6f, 0xf3, 0xed, 0x96, 0x96, 0xa0, 0xa9, 0x71, 0x9b, 0xa7, 0x16, 0x31, 0xe9, 0x3b, - 0x31, 0x62, 0x7d, 0x14, 0x43, 0x55, 0xd7, 0x6c, 0xc7, 0xab, 0xb7, 0x3d, 0xa1, 0x04, 0xd8, 0x47, - 0x89, 0x3a, 0x5c, 0x41, 0xd4, 0xa5, 0x0a, 0x9f, 0x0f, 0xf9, 0x7c, 0x06, 0x46, 0x4b, 0x9e, 0xe7, - 0x98, 0xcb, 0x6d, 0x8f, 0xce, 0xe9, 0xad, 0x96, 0x69, 0xad, 0xe2, 0x58, 0x1f, 0xbc, 0xf6, 0x52, - 0xb0, 0x46, 0x76, 0x95, 0xc4, 0x78, 0xbc, 0xb8, 0x34, 0x44, 0x75, 0x1f, 0x55, 0x6b, 0x72, 0x9c, - 0x3c, 0x44, 0xe3, 0xe5, 0xd8, 0x10, 0x4d, 0xe5, 0xb5, 0xa7, 0x21, 0xfa, 0x95, 0x1c, 0x5c, 0x58, - 0x58, 0xf7, 0x74, 0x8d, 0xba, 0x76, 0xdb, 0xa9, 0x53, 0xf7, 0x56, 0xcb, 0xd0, 0x3d, 0x1a, 0x8e, - 0xd4, 0x22, 0xf4, 0x96, 0x0c, 0x83, 0x1a, 0xc8, 0xae, 0x97, 0xef, 0xbf, 0x74, 0x06, 0xd0, 0x38, - 0x9c, 0x3c, 0x0e, 0x7d, 0xa2, 0x0c, 0x72, 0xef, 0x9d, 0x18, 0xdc, 0xde, 0x2a, 0xf6, 0xb5, 0x39, - 0x48, 0xf3, 0x71, 0x8c, 0xac, 0x4c, 0x1b, 0x94, 0x91, 0xe5, 0x42, 0x32, 0x83, 0x83, 0x34, 0x1f, - 0x47, 0x5e, 0x87, 0x11, 0x64, 0x1b, 0xb4, 0x47, 0xcc, 0x7d, 0x67, 0x7c, 0xe9, 0xca, 0x8d, 0xe5, - 0x4b, 0x13, 0xb6, 0xa6, 0xe6, 0xf8, 0x05, 0xb4, 0x18, 0x03, 0x72, 0x07, 0x46, 0x45, 0x23, 0x42, - 0xa6, 0xbd, 0x5d, 0x98, 0x3e, 0xb0, 0xbd, 0x55, 0x1c, 0x13, 0xed, 0x97, 0xd8, 0x26, 0x98, 0x30, - 0xc6, 0xa2, 0xd9, 0x21, 0xe3, 0xc2, 0x4e, 0x8c, 0xc5, 0x17, 0xcb, 0x8c, 0xe3, 0x4c, 0xd4, 0x37, - 0x60, 0x48, 0x2e, 0x48, 0xce, 0xe2, 0x1e, 0x97, 0x8f, 0x13, 0xdc, 0x1d, 0x9b, 0x06, 0x6e, 0x6c, - 0x9f, 0x86, 0xc1, 0x32, 0x75, 0xeb, 0x8e, 0xd9, 0x62, 0x56, 0x83, 0x50, 0xf2, 0x53, 0xdb, 0x5b, - 0xc5, 0x41, 0x23, 0x04, 0x6b, 0x32, 0x8d, 0xfa, 0x6f, 0x33, 0x70, 0x96, 0xf1, 0x2e, 0xb9, 0xae, - 0xb9, 0x6a, 0x35, 0xe5, 0x65, 0xfb, 0x49, 0x28, 0x54, 0xb1, 0x3e, 0x51, 0xd3, 0x99, 0xed, 0xad, - 0xe2, 0x28, 0x6f, 0x81, 0xa4, 0x87, 0x82, 0x26, 0xd8, 0xe0, 0x65, 0x77, 0xd8, 0xe0, 0x31, 0x93, - 0xd6, 0xd3, 0x1d, 0xcf, 0xb4, 0x56, 0xab, 0x9e, 0xee, 0xb5, 0xdd, 0x88, 0x49, 0x2b, 0x30, 0x35, - 0x17, 0x51, 0x11, 0x93, 0x36, 0x52, 0x88, 0xbc, 0x02, 0x43, 0x53, 0x96, 0x11, 0x32, 0xe1, 0x13, - 0xe2, 0x43, 0xcc, 0xd2, 0xa4, 0x08, 0x4f, 0xb2, 0x88, 0x14, 0x50, 0xff, 0xd7, 0x0c, 0x28, 0x7c, - 0x37, 0x36, 0x6b, 0xba, 0xde, 0x1c, 0x6d, 0x2e, 0x4b, 0xb3, 0xd3, 0xb4, 0xbf, 0xbd, 0x63, 0x38, - 0x69, 0x2d, 0x42, 0x53, 0x40, 0x6c, 0xef, 0x1a, 0xa6, 0xeb, 0xc5, 0x27, 0xc3, 0x58, 0x29, 0x52, - 0x81, 0x3e, 0xce, 0x99, 0xdb, 0x12, 0x83, 0xd7, 0x14, 0x5f, 0x11, 0xe2, 0x55, 0x73, 0x65, 0x68, - 0x72, 0x62, 0x79, 0x7f, 0x2e, 0xca, 0xab, 0xff, 0x5b, 0x16, 0x46, 0xe3, 0x85, 0xc8, 0x1d, 0xe8, - 0x7f, 0xcd, 0x36, 0x2d, 0x6a, 0x2c, 0x58, 0xd8, 0xc2, 0xee, 0xa7, 0x14, 0xbe, 0x2d, 0x7e, 0xfa, - 0x2d, 0x2c, 0x53, 0x93, 0x2d, 0x58, 0x3c, 0xb4, 0x08, 0x98, 0x91, 0x4f, 0xc0, 0x00, 0xb3, 0x01, - 0xef, 0x22, 0xe7, 0xec, 0x8e, 0x9c, 0x1f, 0x11, 0x9c, 0xcf, 0x38, 0xbc, 0x50, 0x92, 0x75, 0xc8, - 0x8e, 0xe9, 0x95, 0x46, 0x75, 0xd7, 0xb6, 0x44, 0xcf, 0xa3, 0x5e, 0x39, 0x08, 0x91, 0xf5, 0x8a, - 0xd3, 0x30, 0xd3, 0x95, 0x7f, 0x2c, 0x76, 0x83, 0xb4, 0x77, 0xe1, 0xb2, 0x8a, 0xf7, 0x80, 0x44, - 0xac, 0x7e, 0x7f, 0x16, 0x9e, 0x0a, 0x45, 0xa6, 0xd1, 0xbb, 0x26, 0xdd, 0x10, 0xe2, 0x5c, 0x33, - 0x5b, 0x62, 0xf3, 0xc8, 0x54, 0xde, 0x9d, 0x5c, 0xd3, 0xad, 0x55, 0x6a, 0x90, 0x2b, 0xd0, 0xcb, - 0x76, 0xf8, 0xae, 0x92, 0x41, 0x73, 0x0d, 0xa7, 0x13, 0x87, 0x01, 0xe4, 0xd3, 0x07, 0xa4, 0x20, - 0x36, 0x14, 0x96, 0x1c, 0xdd, 0xf4, 0xfc, 0x9e, 0x2d, 0x25, 0x7b, 0x76, 0x17, 0x35, 0x8e, 0x73, - 0x1e, 0x7c, 0xce, 0x47, 0x41, 0x78, 0x08, 0x90, 0x05, 0xc1, 0x49, 0xce, 0xbf, 0x00, 0x83, 0x12, - 0xf1, 0x9e, 0x26, 0xf5, 0xaf, 0xe5, 0x65, 0x5d, 0xf7, 0x9b, 0x25, 0x74, 0xfd, 0x2a, 0xd3, 0x51, - 0xd7, 0x65, 0x56, 0x05, 0x57, 0x72, 0xa1, 0x89, 0x08, 0x8a, 0x6a, 0x22, 0x82, 0xc8, 0x33, 0xd0, - 0xcf, 0x59, 0x04, 0xfb, 0x57, 0xdc, 0xfb, 0x3a, 0x08, 0x8b, 0x2e, 0xcd, 0x01, 0x21, 0xf9, 0xc5, - 0x0c, 0x3c, 0xdc, 0x55, 0x12, 0xa8, 0x0c, 0x83, 0xd7, 0x9e, 0xdd, 0x97, 0x18, 0x27, 0x9e, 0xda, - 0xde, 0x2a, 0x5e, 0x69, 0x06, 0x24, 0x35, 0x47, 0xa2, 0xa9, 0xd5, 0x39, 0x91, 0xd4, 0xae, 0xee, - 0x4d, 0x61, 0xc6, 0x23, 0xaf, 0x74, 0x1a, 0xcf, 0x70, 0xac, 0xfa, 0xa6, 0xdf, 0xc8, 0x7c, 0x68, - 0x3c, 0x8a, 0xef, 0x5d, 0xf1, 0x49, 0x52, 0xaa, 0xe9, 0xc0, 0x85, 0xd4, 0xe1, 0x1c, 0xc7, 0x94, - 0xf5, 0xcd, 0x85, 0x95, 0x39, 0xdb, 0xf2, 0xd6, 0xfc, 0x0a, 0x7a, 0xe5, 0x43, 0x10, 0xac, 0xc0, - 0xd0, 0x37, 0x6b, 0xf6, 0x4a, 0xad, 0xc9, 0xa8, 0x52, 0xea, 0xe8, 0xc4, 0x89, 0x4d, 0xb4, 0x62, - 0xcc, 0xf9, 0x53, 0x50, 0x21, 0x3c, 0xa2, 0xf2, 0xc7, 0x69, 0x72, 0xc2, 0x89, 0x15, 0x52, 0x2b, - 0x30, 0x34, 0x6b, 0xd7, 0xd7, 0x03, 0x75, 0x79, 0x01, 0x0a, 0x4b, 0xba, 0xb3, 0x4a, 0x3d, 0x94, - 0xc5, 0xe0, 0xb5, 0xb1, 0x71, 0x7e, 0xec, 0xcb, 0x88, 0x38, 0x62, 0x62, 0x44, 0xcc, 0x06, 0x05, - 0x0f, 0x7f, 0x6b, 0xa2, 0x80, 0xfa, 0xad, 0x5e, 0x18, 0x12, 0x47, 0x94, 0x38, 0x9b, 0x93, 0x17, - 0xc3, 0x43, 0x5f, 0x31, 0x7d, 0x05, 0xc7, 0x34, 0xc1, 0xf1, 0xd2, 0x10, 0x63, 0xf6, 0x07, 0x5b, - 0xc5, 0xcc, 0xf6, 0x56, 0xb1, 0x47, 0xeb, 0x97, 0x36, 0x95, 0xe1, 0x7a, 0x23, 0x2d, 0xb0, 0xf2, - 0xa1, 0x63, 0xac, 0x2c, 0x5f, 0x7f, 0x5e, 0x81, 0x3e, 0xd1, 0x06, 0xa1, 0x71, 0xe7, 0xc2, 0xb3, - 0x8c, 0xc8, 0x51, 0x6b, 0xac, 0xb4, 0x5f, 0x8a, 0xbc, 0x04, 0x05, 0xbe, 0xb7, 0x17, 0x02, 0x38, - 0x9b, 0x7e, 0x16, 0x12, 0x2b, 0x2e, 0xca, 0x90, 0x19, 0x80, 0x70, 0x5f, 0x1f, 0x9c, 0x2c, 0x0b, - 0x0e, 0xc9, 0x1d, 0x7f, 0x8c, 0x8b, 0x54, 0x96, 0x3c, 0x07, 0x43, 0x4b, 0xd4, 0x69, 0x9a, 0x96, - 0xde, 0xa8, 0x9a, 0x6f, 0xfb, 0x87, 0xcb, 0xb8, 0xf0, 0xba, 0xe6, 0xdb, 0xf2, 0xc8, 0x8d, 0xd0, - 0x91, 0x4f, 0xa7, 0xed, 0x9b, 0xfb, 0xb0, 0x21, 0x8f, 0xee, 0xb8, 0xa1, 0x8c, 0xb5, 0x27, 0x65, - 0x1b, 0xfd, 0x3a, 0x0c, 0x47, 0xb6, 0x4c, 0xe2, 0xf4, 0xf0, 0xe1, 0x24, 0x6b, 0x69, 0xff, 0x17, - 0x63, 0x1b, 0xe5, 0xc0, 0x34, 0xb9, 0x62, 0x99, 0x9e, 0xa9, 0x37, 0x26, 0xed, 0x66, 0x53, 0xb7, - 0x0c, 0x65, 0x20, 0xd4, 0x64, 0x93, 0x63, 0x6a, 0x75, 0x8e, 0x92, 0x35, 0x39, 0x5a, 0x88, 0x6d, - 0xcb, 0x45, 0x1f, 0x6a, 0xb4, 0x6e, 0x3b, 0xcc, 0x16, 0xc0, 0xc3, 0x41, 0xb1, 0x2d, 0x77, 0x39, - 0xae, 0xe6, 0xf8, 0x48, 0xd9, 0xd8, 0x8e, 0x17, 0x7c, 0x2d, 0xdf, 0x3f, 0x38, 0x3a, 0x14, 0x3f, - 0xcf, 0x55, 0x7f, 0x21, 0x07, 0x83, 0x82, 0x94, 0x2d, 0xa5, 0x27, 0x0a, 0x7e, 0x10, 0x05, 0x4f, - 0x55, 0xd4, 0xc2, 0x61, 0x29, 0xaa, 0xfa, 0x85, 0x6c, 0x30, 0x1b, 0x2d, 0x3a, 0xa6, 0x75, 0xb0, - 0xd9, 0xe8, 0x12, 0xc0, 0xe4, 0x5a, 0xdb, 0x5a, 0xe7, 0xf7, 0x56, 0xd9, 0xf0, 0xde, 0xaa, 0x6e, - 0x6a, 0x12, 0x86, 0x3c, 0x0c, 0xf9, 0x32, 0xe3, 0xcf, 0x7a, 0x66, 0x68, 0x62, 0xe0, 0x1d, 0xce, - 0x29, 0xf3, 0x94, 0x86, 0x60, 0xb6, 0xb9, 0x9a, 0xd8, 0xf4, 0x28, 0x37, 0x67, 0x73, 0x7c, 0x73, - 0xb5, 0xcc, 0x00, 0x1a, 0x87, 0x93, 0xeb, 0x30, 0x56, 0xa6, 0x0d, 0x7d, 0x73, 0xce, 0x6c, 0x34, - 0x4c, 0x97, 0xd6, 0x6d, 0xcb, 0x70, 0x51, 0xc8, 0xa2, 0xba, 0xa6, 0xab, 0x25, 0x09, 0x88, 0x0a, - 0x85, 0x85, 0x95, 0x15, 0x97, 0x7a, 0x28, 0xbe, 0xdc, 0x04, 0xb0, 0xc9, 0xd9, 0x46, 0x88, 0x26, - 0x30, 0xea, 0xaf, 0x64, 0xd8, 0xee, 0xc5, 0x5d, 0xf7, 0xec, 0x56, 0xa0, 0xe5, 0x07, 0x12, 0xc9, - 0x95, 0xd0, 0xae, 0xc8, 0xe2, 0xd7, 0x9e, 0x12, 0x5f, 0xdb, 0x27, 0x6c, 0x8b, 0xd0, 0xa2, 0x48, - 0xfd, 0xaa, 0xdc, 0x0e, 0x5f, 0xa5, 0xfe, 0x45, 0x16, 0xce, 0x89, 0x16, 0x4f, 0x36, 0xcc, 0xd6, - 0xb2, 0xad, 0x3b, 0x86, 0x46, 0xeb, 0xd4, 0xbc, 0x4b, 0x8f, 0xe7, 0xc0, 0x8b, 0x0e, 0x9d, 0xfc, - 0x01, 0x86, 0xce, 0x35, 0xdc, 0x08, 0x32, 0xc9, 0xe0, 0x81, 0x2f, 0x37, 0x2a, 0x46, 0xb7, 0xb7, - 0x8a, 0x43, 0x06, 0x07, 0xe3, 0x91, 0xbf, 0x26, 0x13, 0x31, 0x25, 0x99, 0xa5, 0xd6, 0xaa, 0xb7, - 0x86, 0x4a, 0xd2, 0xcb, 0x95, 0xa4, 0x81, 0x10, 0x4d, 0x60, 0xd4, 0x7f, 0x99, 0x85, 0x33, 0x71, - 0x91, 0x57, 0xa9, 0x65, 0x9c, 0xc8, 0xfb, 0xdd, 0x91, 0xf7, 0x77, 0x72, 0xf0, 0x90, 0x28, 0x53, - 0x5d, 0xd3, 0x1d, 0x6a, 0x94, 0x4d, 0x87, 0xd6, 0x3d, 0xdb, 0xd9, 0x3c, 0xc6, 0x06, 0xd4, 0xe1, - 0x89, 0xfd, 0x3a, 0x14, 0xc4, 0xf6, 0x9f, 0xaf, 0x33, 0x23, 0x41, 0x4b, 0x10, 0x9a, 0x58, 0xa1, - 0xf8, 0xd1, 0x41, 0xac, 0xb3, 0x0a, 0xbb, 0xe9, 0xac, 0x8f, 0xc0, 0x70, 0x20, 0x7a, 0xdc, 0x88, - 0xf6, 0x85, 0xd6, 0x96, 0xe1, 0x23, 0x70, 0x2f, 0xaa, 0x45, 0x09, 0xb1, 0x36, 0x1f, 0x50, 0x29, - 0xa3, 0x35, 0x34, 0x2c, 0x6a, 0x0b, 0xca, 0x99, 0x86, 0x26, 0x13, 0xa9, 0x5b, 0x79, 0x38, 0x9f, - 0xde, 0xed, 0x1a, 0xd5, 0x8d, 0x93, 0x5e, 0x7f, 0x5f, 0xf6, 0x3a, 0x79, 0x14, 0xf2, 0x8b, 0xba, - 0xb7, 0x26, 0xee, 0xc1, 0xf1, 0x4e, 0x78, 0xc5, 0x6c, 0xd0, 0x5a, 0x4b, 0xf7, 0xd6, 0x34, 0x44, - 0x49, 0x73, 0x06, 0x20, 0xc7, 0x94, 0x39, 0x43, 0x5a, 0xec, 0x07, 0x1f, 0xc9, 0x5c, 0xce, 0xa7, - 0x2e, 0xf6, 0xdf, 0xca, 0x77, 0x9a, 0x57, 0xee, 0x38, 0xa6, 0x47, 0x4f, 0x34, 0xec, 0x44, 0xc3, - 0x0e, 0xa8, 0x61, 0x7f, 0x94, 0x85, 0xe1, 0x60, 0xd3, 0xf4, 0x16, 0xad, 0x1f, 0xcd, 0x5a, 0x15, - 0x6e, 0x65, 0x72, 0x07, 0xde, 0xca, 0x1c, 0x44, 0xa1, 0xd4, 0xe0, 0xc8, 0x93, 0x9b, 0x06, 0x28, - 0x31, 0x7e, 0xe4, 0x19, 0x1c, 0x74, 0x3e, 0x0a, 0x7d, 0x73, 0xfa, 0x3d, 0xb3, 0xd9, 0x6e, 0x0a, - 0x2b, 0x1d, 0xfd, 0xba, 0x9a, 0xfa, 0x3d, 0xcd, 0x87, 0xab, 0x7f, 0x3f, 0x03, 0x23, 0x42, 0xa8, - 0x82, 0xf9, 0x81, 0xa4, 0x1a, 0x4a, 0x27, 0x7b, 0x60, 0xe9, 0xe4, 0xf6, 0x2f, 0x1d, 0xf5, 0xa7, - 0x72, 0xa0, 0x4c, 0x9b, 0x0d, 0xba, 0xe4, 0xe8, 0x96, 0xbb, 0x42, 0x1d, 0xb1, 0x9d, 0x9e, 0x62, - 0xac, 0x0e, 0xf4, 0x81, 0xd2, 0x94, 0x92, 0xdd, 0xd7, 0x94, 0xf2, 0x21, 0x18, 0x10, 0x8d, 0x09, - 0x7c, 0x0a, 0x71, 0xd4, 0x38, 0x3e, 0x50, 0x0b, 0xf1, 0x8c, 0xb8, 0xd4, 0x6a, 0x39, 0xf6, 0x5d, - 0xea, 0xf0, 0x5b, 0x2a, 0x41, 0xac, 0xfb, 0x40, 0x2d, 0xc4, 0x4b, 0x9c, 0xa9, 0x6f, 0x2f, 0xca, - 0x9c, 0xa9, 0xa3, 0x85, 0x78, 0x72, 0x19, 0xfa, 0x67, 0xed, 0xba, 0x8e, 0x82, 0xe6, 0xd3, 0xca, - 0xd0, 0xf6, 0x56, 0xb1, 0xbf, 0x21, 0x60, 0x5a, 0x80, 0x65, 0x94, 0x65, 0x7b, 0xc3, 0x6a, 0xd8, - 0x3a, 0x77, 0x7e, 0xe9, 0xe7, 0x94, 0x86, 0x80, 0x69, 0x01, 0x96, 0x51, 0x32, 0x99, 0xa3, 0x53, - 0x51, 0x7f, 0xc8, 0x73, 0x45, 0xc0, 0xb4, 0x00, 0xab, 0xfe, 0x4a, 0x9e, 0x69, 0xaf, 0x6b, 0xbe, - 0x7d, 0xdf, 0xaf, 0x0b, 0xe1, 0x80, 0xe9, 0xdd, 0xc7, 0x80, 0xb9, 0x6f, 0x0e, 0xec, 0xd4, 0xbf, - 0xec, 0x03, 0x10, 0xd2, 0x9f, 0x3a, 0xd9, 0x1c, 0x1e, 0x4c, 0x6b, 0xca, 0x30, 0x36, 0x65, 0xad, - 0xe9, 0x56, 0x9d, 0x1a, 0xe1, 0xb1, 0x65, 0x01, 0x87, 0x36, 0xfa, 0xf4, 0x52, 0x81, 0x0c, 0xcf, - 0x2d, 0xb5, 0x64, 0x01, 0xf2, 0x34, 0x0c, 0x56, 0x2c, 0x8f, 0x3a, 0x7a, 0xdd, 0x33, 0xef, 0x52, - 0x31, 0x35, 0xe0, 0xcd, 0xb0, 0x19, 0x82, 0x35, 0x99, 0x86, 0x5c, 0x87, 0xa1, 0x45, 0xdd, 0xf1, - 0xcc, 0xba, 0xd9, 0xd2, 0x2d, 0xcf, 0x55, 0xfa, 0x71, 0x46, 0x43, 0x0b, 0xa3, 0x25, 0xc1, 0xb5, - 0x08, 0x15, 0xf9, 0x34, 0x0c, 0xe0, 0xd6, 0x14, 0x1d, 0xa7, 0x07, 0x76, 0xbc, 0x38, 0x7c, 0x2c, - 0x74, 0x0f, 0xe4, 0xa7, 0xaf, 0x78, 0x03, 0x1c, 0xbf, 0x3b, 0x0c, 0x38, 0x92, 0x8f, 0x43, 0xdf, - 0x94, 0x65, 0x20, 0x73, 0xd8, 0x91, 0xb9, 0x2a, 0x98, 0x9f, 0x0d, 0x99, 0xdb, 0xad, 0x18, 0x6f, - 0x9f, 0x5d, 0xfa, 0x28, 0x1b, 0x7c, 0xf7, 0x46, 0xd9, 0xd0, 0xbb, 0x70, 0x2c, 0x3e, 0x7c, 0x58, - 0xc7, 0xe2, 0x23, 0xfb, 0x3c, 0x16, 0x57, 0xdf, 0x86, 0xc1, 0x89, 0xc5, 0xe9, 0x60, 0xf4, 0x3e, - 0x08, 0xb9, 0x45, 0xe1, 0xa9, 0x90, 0xe7, 0xf6, 0x4c, 0xcb, 0x34, 0x34, 0x06, 0x23, 0x57, 0xa0, - 0x7f, 0x12, 0xdd, 0xdf, 0xc4, 0x2d, 0x62, 0x9e, 0xaf, 0x7f, 0x75, 0x84, 0xa1, 0x17, 0xac, 0x8f, - 0x26, 0x8f, 0x43, 0xdf, 0xa2, 0x63, 0xaf, 0x3a, 0x7a, 0x53, 0xac, 0xc1, 0xe8, 0x2a, 0xd2, 0xe2, - 0x20, 0xcd, 0xc7, 0xa9, 0x3f, 0x94, 0xf1, 0xcd, 0x76, 0x56, 0xa2, 0xda, 0xc6, 0xa3, 0x79, 0xac, - 0xbb, 0x9f, 0x97, 0x70, 0x39, 0x48, 0xf3, 0x71, 0xe4, 0x0a, 0xf4, 0x4e, 0x39, 0x8e, 0xed, 0xc8, - 0xce, 0xe6, 0x94, 0x01, 0xe4, 0xeb, 0x5e, 0xa4, 0x20, 0xcf, 0xc3, 0x20, 0x9f, 0x73, 0xf8, 0x89, - 0x66, 0xae, 0xdb, 0x4d, 0xa9, 0x4c, 0xa9, 0x7e, 0x23, 0x27, 0xd9, 0x6c, 0x5c, 0xe2, 0xf7, 0xe1, - 0xad, 0xc0, 0x33, 0x90, 0x9b, 0x58, 0x9c, 0x16, 0x13, 0xe0, 0x69, 0xbf, 0xa8, 0xa4, 0x2a, 0xb1, - 0x72, 0x8c, 0x9a, 0x5c, 0x80, 0xfc, 0x22, 0x53, 0x9f, 0x02, 0xaa, 0x47, 0xff, 0xf6, 0x56, 0x31, - 0xdf, 0x62, 0xfa, 0x83, 0x50, 0xc4, 0xb2, 0xcd, 0x0c, 0xdf, 0x31, 0x71, 0x6c, 0xb8, 0x8f, 0xb9, - 0x00, 0xf9, 0x92, 0xb3, 0x7a, 0x57, 0xcc, 0x5a, 0x88, 0xd5, 0x9d, 0xd5, 0xbb, 0x1a, 0x42, 0xc9, - 0x55, 0x00, 0x8d, 0x7a, 0x6d, 0xc7, 0xc2, 0x77, 0x20, 0x03, 0x78, 0xfe, 0x86, 0xb3, 0xa1, 0x83, - 0xd0, 0x5a, 0xdd, 0x36, 0xa8, 0x26, 0x91, 0xa8, 0x3f, 0x17, 0x5e, 0xec, 0x94, 0x4d, 0x77, 0xfd, - 0xa4, 0x0b, 0xf7, 0xd0, 0x85, 0xba, 0x38, 0xe2, 0x4c, 0x76, 0x52, 0x11, 0x7a, 0xa7, 0x1b, 0xfa, - 0xaa, 0x8b, 0x7d, 0x28, 0x7c, 0xc9, 0x56, 0x18, 0x40, 0xe3, 0xf0, 0x58, 0x3f, 0xf5, 0xef, 0xdc, - 0x4f, 0x3f, 0xda, 0x1b, 0x8c, 0xb6, 0x79, 0xea, 0x6d, 0xd8, 0xce, 0x49, 0x57, 0xed, 0xb6, 0xab, - 0x2e, 0x41, 0x5f, 0xd5, 0xa9, 0x4b, 0x47, 0x17, 0xb8, 0x1f, 0x70, 0x9d, 0x3a, 0x3f, 0xb6, 0xf0, - 0x91, 0x8c, 0xae, 0xec, 0x7a, 0x48, 0xd7, 0x17, 0xd2, 0x19, 0xae, 0x27, 0xe8, 0x04, 0x52, 0xd0, - 0x2d, 0xda, 0x8e, 0x27, 0x3a, 0x2e, 0xa0, 0x6b, 0xd9, 0x8e, 0xa7, 0xf9, 0x48, 0xf2, 0x21, 0x80, - 0xa5, 0xc9, 0x45, 0xdf, 0xd9, 0x7e, 0x20, 0xf4, 0x05, 0x14, 0x5e, 0xf6, 0x9a, 0x84, 0x26, 0x4b, - 0x30, 0xb0, 0xd0, 0xa2, 0x0e, 0xdf, 0x0a, 0xf1, 0x97, 0x1d, 0x1f, 0x8c, 0x89, 0x56, 0xf4, 0xfb, - 0xb8, 0xf8, 0x3f, 0x20, 0xe7, 0xeb, 0x8b, 0xed, 0xff, 0xd4, 0x42, 0x46, 0xe4, 0x79, 0x28, 0x94, - 0xb8, 0x9d, 0x37, 0x88, 0x2c, 0x03, 0x91, 0xe1, 0x16, 0x94, 0xa3, 0xf8, 0x9e, 0x5d, 0xc7, 0xbf, - 0x35, 0x41, 0xae, 0x5e, 0x81, 0xd1, 0x78, 0x35, 0x64, 0x10, 0xfa, 0x26, 0x17, 0xe6, 0xe7, 0xa7, - 0x26, 0x97, 0x46, 0x7b, 0x48, 0x3f, 0xe4, 0xab, 0x53, 0xf3, 0xe5, 0xd1, 0x8c, 0xfa, 0x4b, 0xd2, - 0x0c, 0xc2, 0x54, 0xeb, 0xe4, 0x6a, 0xf8, 0x40, 0xf7, 0x2d, 0xa3, 0x78, 0x1f, 0x8a, 0x27, 0x06, - 0x4d, 0xd3, 0xf3, 0xa8, 0x21, 0x56, 0x09, 0xbc, 0x2f, 0xf4, 0xee, 0x69, 0x09, 0x3c, 0x79, 0x12, - 0x86, 0x11, 0x26, 0xae, 0x08, 0xf9, 0xfe, 0x58, 0x14, 0x70, 0xee, 0x69, 0x51, 0xa4, 0xfa, 0xcd, - 0xf0, 0x76, 0x78, 0x96, 0xea, 0xc7, 0xf5, 0x46, 0xf1, 0x3d, 0xd2, 0x5f, 0xea, 0xdf, 0xe4, 0xf9, - 0x13, 0x10, 0xfe, 0x70, 0xef, 0x28, 0x44, 0x19, 0x1e, 0xe9, 0xe6, 0xf6, 0x70, 0xa4, 0xfb, 0x24, - 0x14, 0xe6, 0xa8, 0xb7, 0x66, 0xfb, 0x8e, 0x5f, 0xe8, 0xa1, 0xd7, 0x44, 0x88, 0xec, 0xa1, 0xc7, - 0x69, 0xc8, 0x3a, 0x10, 0xff, 0x55, 0x5e, 0xe0, 0x88, 0xed, 0x1f, 0x21, 0x9f, 0x4b, 0xec, 0x53, - 0xaa, 0xf8, 0x24, 0x17, 0x7d, 0xec, 0xcf, 0x04, 0x8e, 0xde, 0x92, 0x27, 0xd6, 0x5f, 0x6f, 0x15, - 0x0b, 0x9c, 0x46, 0x4b, 0x61, 0x4b, 0x5e, 0x87, 0x81, 0xb9, 0xe9, 0x92, 0x78, 0xa1, 0xc7, 0xbd, - 0x22, 0x1e, 0x0c, 0xa4, 0xe8, 0x23, 0x02, 0x91, 0xe0, 0x7b, 0x9b, 0xe6, 0x8a, 0x9e, 0x7c, 0xa0, - 0x17, 0x72, 0x61, 0xda, 0xc2, 0x5f, 0xee, 0x88, 0xd3, 0x85, 0x40, 0x5b, 0xa2, 0xef, 0x79, 0xe2, - 0xb2, 0xe2, 0xd8, 0x98, 0xb6, 0xf4, 0x1f, 0x60, 0x74, 0x2f, 0xc0, 0x58, 0xa9, 0xd5, 0x6a, 0x98, - 0xd4, 0x40, 0x7d, 0xd1, 0xda, 0x0d, 0xea, 0x0a, 0x97, 0x1f, 0x7c, 0x0c, 0xa2, 0x73, 0x64, 0x0d, - 0xdf, 0x85, 0xd6, 0x9c, 0x76, 0xd4, 0x3f, 0x33, 0x59, 0x56, 0xfd, 0x91, 0x2c, 0x9c, 0x9d, 0x74, - 0xa8, 0xee, 0xd1, 0xb9, 0xe9, 0x52, 0xa9, 0x8d, 0x3e, 0x72, 0x8d, 0x06, 0xb5, 0x56, 0x8f, 0x66, - 0x58, 0x7f, 0x14, 0x46, 0x82, 0x06, 0x54, 0xeb, 0x76, 0x8b, 0xca, 0x0f, 0xab, 0xea, 0x3e, 0xa6, - 0xe6, 0x32, 0x94, 0x16, 0x23, 0x25, 0x37, 0xe1, 0x74, 0x00, 0x29, 0x35, 0x1a, 0xf6, 0x86, 0x46, - 0xdb, 0x2e, 0x77, 0x8c, 0xed, 0xe7, 0x8e, 0xb1, 0x21, 0x07, 0x9d, 0xe1, 0x6b, 0x0e, 0x23, 0xd0, - 0xd2, 0x4a, 0xa9, 0x5f, 0xcd, 0xc1, 0xb9, 0xdb, 0x7a, 0xc3, 0x34, 0x42, 0xd1, 0x68, 0xd4, 0x6d, - 0xd9, 0x96, 0x4b, 0x8f, 0xd1, 0x28, 0x8d, 0x0c, 0x85, 0xfc, 0xa1, 0x0c, 0x85, 0x64, 0x17, 0xf5, - 0x1e, 0xb8, 0x8b, 0x0a, 0xfb, 0xea, 0xa2, 0x7f, 0x91, 0x81, 0x51, 0xdf, 0xf1, 0x5f, 0x7e, 0x4d, - 0x2d, 0x79, 0xa5, 0xe3, 0x11, 0x62, 0xcc, 0x0f, 0x1a, 0xf1, 0xa4, 0x0a, 0x7d, 0x53, 0xf7, 0x5a, - 0xa6, 0x43, 0xdd, 0x5d, 0x38, 0x71, 0x3f, 0x2c, 0x8e, 0x4b, 0xc6, 0x28, 0x2f, 0x92, 0x38, 0x29, - 0xe1, 0x60, 0x7c, 0xce, 0xc7, 0x9f, 0x3e, 0x4c, 0xf8, 0x4f, 0xc4, 0xf9, 0x73, 0x3e, 0xf1, 0x44, - 0x22, 0xf2, 0x3e, 0x33, 0x24, 0x25, 0x8f, 0x41, 0x6e, 0x69, 0x69, 0x56, 0xcc, 0xa4, 0xf8, 0x34, - 0xdf, 0xf3, 0xe4, 0xf7, 0x8a, 0x0c, 0xab, 0xfe, 0x69, 0x16, 0x80, 0xa9, 0x02, 0x1f, 0xae, 0x47, - 0xa2, 0x84, 0x13, 0xd0, 0xef, 0x0b, 0x5c, 0xa8, 0x61, 0xe0, 0xb5, 0x1f, 0xef, 0x88, 0x78, 0xdd, - 0xc1, 0x0b, 0x8d, 0xa2, 0xef, 0x48, 0xce, 0xef, 0x01, 0x70, 0x67, 0x83, 0x8e, 0xe4, 0xbe, 0xfb, - 0xf8, 0x87, 0x60, 0x40, 0xcc, 0x78, 0x76, 0xe4, 0xfc, 0xbf, 0xee, 0x03, 0xb5, 0x10, 0x1f, 0x9b, - 0x5a, 0x0b, 0x07, 0x58, 0x88, 0x7d, 0xf1, 0xf2, 0x5e, 0x39, 0x11, 0xef, 0x21, 0x8b, 0xf7, 0x4b, - 0x42, 0xbc, 0xfc, 0x05, 0xcf, 0xb1, 0x15, 0xef, 0xa1, 0x9d, 0x7d, 0xab, 0x7f, 0x94, 0x01, 0xc2, - 0x9a, 0xb5, 0xa8, 0xbb, 0xee, 0x86, 0xed, 0x18, 0xdc, 0x39, 0xfd, 0x48, 0x04, 0x73, 0x78, 0xf7, - 0x95, 0xdf, 0xe8, 0x87, 0xd3, 0x11, 0xc7, 0xdf, 0x63, 0x3e, 0x59, 0x5d, 0x89, 0x8e, 0xa6, 0x6e, - 0xaf, 0x5e, 0x3e, 0x20, 0x5f, 0x88, 0xf6, 0x46, 0x1e, 0xa0, 0x49, 0x37, 0xa1, 0x4f, 0xc1, 0x90, - 0xf8, 0xc1, 0x56, 0x68, 0xff, 0xa6, 0x0b, 0x47, 0xa9, 0xcb, 0x00, 0x5a, 0x04, 0x4d, 0x9e, 0x85, - 0x01, 0x36, 0x60, 0x56, 0x31, 0x8a, 0x47, 0x5f, 0xf8, 0xa2, 0xc4, 0xf0, 0x81, 0xf2, 0x7a, 0x12, - 0x50, 0x4a, 0xef, 0x88, 0xfa, 0x77, 0xf1, 0x8e, 0xe8, 0x4d, 0x18, 0x2c, 0x59, 0x96, 0xed, 0xe1, - 0x26, 0xdd, 0x15, 0x57, 0x13, 0x1d, 0xad, 0xf2, 0xc7, 0xf0, 0x71, 0x7c, 0x48, 0x9f, 0x6a, 0x96, - 0xcb, 0x0c, 0xc9, 0x35, 0xff, 0x55, 0x0c, 0x75, 0x84, 0x57, 0x39, 0x5e, 0xcf, 0x38, 0x02, 0x96, - 0x7c, 0x14, 0x83, 0x9d, 0x37, 0xbc, 0xe8, 0xd8, 0x2d, 0xdb, 0xa5, 0x06, 0x17, 0xd4, 0x60, 0x18, - 0x6a, 0xa0, 0x25, 0x10, 0xf8, 0x8e, 0x2d, 0x12, 0x51, 0x23, 0x52, 0x84, 0xac, 0xc0, 0x19, 0xff, - 0xa2, 0x38, 0x78, 0x31, 0x58, 0x29, 0xbb, 0xca, 0x10, 0xbe, 0x4a, 0x22, 0x71, 0x65, 0xa8, 0x94, - 0x27, 0x2e, 0xfa, 0xd7, 0x22, 0xfe, 0x93, 0xc3, 0x9a, 0x69, 0xc8, 0x5d, 0x9d, 0xca, 0x8f, 0x7c, - 0x17, 0x0c, 0xce, 0xe9, 0xf7, 0xca, 0x6d, 0x71, 0xf6, 0x32, 0xbc, 0xfb, 0xdb, 0x97, 0xa6, 0x7e, - 0xaf, 0x66, 0x88, 0x72, 0x31, 0x9b, 0x42, 0x66, 0x49, 0x6a, 0x70, 0x76, 0xd1, 0xb1, 0x9b, 0xb6, - 0x47, 0x8d, 0xd8, 0xe3, 0xbb, 0x53, 0xe1, 0x6b, 0xdd, 0x96, 0xa0, 0xa8, 0x75, 0x79, 0x85, 0xd7, - 0x81, 0x0d, 0x69, 0xc2, 0xa9, 0x92, 0xeb, 0xb6, 0x9b, 0x34, 0xbc, 0xa1, 0x1a, 0xdd, 0xf1, 0x33, - 0x3e, 0x28, 0xbc, 0x96, 0x1f, 0xd2, 0xb1, 0x28, 0xbf, 0xa0, 0xaa, 0x79, 0xa6, 0x5c, 0x23, 0x7e, - 0x4b, 0x9c, 0xf7, 0x6b, 0xf9, 0xfe, 0x91, 0xd1, 0x53, 0xda, 0xb9, 0x64, 0x63, 0x96, 0x4c, 0xaf, - 0x41, 0xd5, 0xaf, 0x67, 0x00, 0x42, 0x01, 0x93, 0xa7, 0xa2, 0xa1, 0x82, 0x32, 0xe1, 0x45, 0x87, - 0x88, 0x5e, 0x10, 0x89, 0x0d, 0x44, 0x2e, 0x40, 0x1e, 0x23, 0x5c, 0x64, 0xc3, 0x83, 0xd5, 0x75, - 0xd3, 0x32, 0x34, 0x84, 0x32, 0xac, 0xf4, 0x14, 0x1d, 0xb1, 0x78, 0xa9, 0xcf, 0xad, 0xc2, 0x32, - 0x9c, 0xaa, 0xb6, 0x97, 0xfd, 0xba, 0xa5, 0x77, 0x75, 0x18, 0x68, 0xc3, 0x6d, 0x2f, 0x07, 0x8f, - 0x51, 0x23, 0x61, 0x4c, 0xa2, 0x45, 0xd4, 0x5f, 0xc9, 0xc4, 0x66, 0xc1, 0x23, 0x5c, 0xf4, 0x3e, - 0x90, 0xf4, 0xd3, 0x48, 0x4e, 0x4b, 0xea, 0xff, 0x94, 0x85, 0xc1, 0x45, 0xdb, 0xf1, 0x44, 0xc8, - 0x90, 0xe3, 0xbd, 0x0a, 0x49, 0x7b, 0xa5, 0xfc, 0x1e, 0xf6, 0x4a, 0x17, 0x20, 0x2f, 0xb9, 0x28, - 0xf3, 0x7b, 0x11, 0xc3, 0x70, 0x34, 0x84, 0xaa, 0xdf, 0x9d, 0x05, 0xf8, 0xf8, 0xd3, 0x4f, 0xdf, - 0xc7, 0x02, 0x52, 0x7f, 0x32, 0x03, 0xa7, 0xc4, 0x45, 0x9d, 0x14, 0x74, 0xab, 0xcf, 0xbf, 0x62, - 0x95, 0xc7, 0x25, 0x07, 0x69, 0x3e, 0x8e, 0x2d, 0x01, 0x53, 0xf7, 0x4c, 0x0f, 0xef, 0x2a, 0xa4, - 0xa8, 0x5b, 0x54, 0xc0, 0xe4, 0x25, 0xc0, 0xa7, 0x23, 0x4f, 0xf9, 0x57, 0x90, 0xb9, 0x70, 0xdd, - 0x63, 0x05, 0xa6, 0x52, 0xaf, 0x21, 0xd5, 0x5f, 0xcb, 0x43, 0x7e, 0xea, 0x1e, 0xad, 0x1f, 0xf3, - 0xae, 0x91, 0x0e, 0x36, 0xf3, 0x07, 0x3c, 0xd8, 0xdc, 0x8f, 0x4f, 0xc5, 0x2b, 0x61, 0x7f, 0x16, - 0xa2, 0xd5, 0xc7, 0x7a, 0x3e, 0x5e, 0xbd, 0xdf, 0xd3, 0xc7, 0xcf, 0x25, 0xe7, 0xff, 0xcb, 0x41, - 0xae, 0x3a, 0xb9, 0x78, 0xa2, 0x37, 0x47, 0xaa, 0x37, 0xdd, 0xef, 0xac, 0xd5, 0xe0, 0x1a, 0xaa, - 0x3f, 0xf4, 0x12, 0x8d, 0xdd, 0x38, 0x7d, 0x27, 0x07, 0x23, 0xd5, 0xe9, 0xa5, 0x45, 0xe9, 0x24, - 0xf8, 0x26, 0xf7, 0xe4, 0x43, 0x9f, 0x32, 0xde, 0xa5, 0x17, 0x12, 0xf6, 0xcc, 0xad, 0x8a, 0xe5, - 0x3d, 0x77, 0xfd, 0xb6, 0xde, 0x68, 0x53, 0x3c, 0x7a, 0xe1, 0x7e, 0xbf, 0xae, 0xf9, 0x36, 0xfd, - 0x2a, 0x3e, 0xfc, 0xf7, 0x19, 0x90, 0x8f, 0x42, 0xee, 0x96, 0xf0, 0xc8, 0xe8, 0xc4, 0xe7, 0x99, - 0x6b, 0x9c, 0x0f, 0x9b, 0x04, 0x73, 0x6d, 0xd3, 0x40, 0x0e, 0xac, 0x14, 0x2b, 0x7c, 0x43, 0x2c, - 0xc0, 0xbb, 0x2a, 0xbc, 0xea, 0x17, 0xbe, 0x51, 0x29, 0x93, 0x2a, 0x0c, 0x2e, 0x52, 0xa7, 0x69, - 0x62, 0x47, 0xf9, 0x73, 0x76, 0x77, 0x26, 0x6c, 0xa7, 0x32, 0xd8, 0x0a, 0x0b, 0x21, 0x33, 0x99, - 0x0b, 0x79, 0x03, 0x80, 0xdb, 0x28, 0xbb, 0x0c, 0xe4, 0xf8, 0x30, 0xda, 0xfd, 0xdc, 0xb4, 0x4c, - 0xb1, 0xf1, 0x24, 0x66, 0x64, 0x1d, 0x46, 0xe7, 0x6c, 0xc3, 0x5c, 0x31, 0xb9, 0xeb, 0x25, 0x56, - 0x50, 0xd8, 0xd9, 0xe1, 0x89, 0x99, 0x92, 0x4d, 0xa9, 0x5c, 0x5a, 0x35, 0x09, 0xc6, 0xea, 0xff, - 0xdd, 0x0b, 0x79, 0xd6, 0xed, 0x27, 0xe3, 0xf7, 0x20, 0xe3, 0xb7, 0x04, 0xa3, 0x77, 0x6c, 0x67, - 0xdd, 0xb4, 0x56, 0x03, 0xaf, 0x78, 0xb1, 0x37, 0x45, 0x4f, 0x9e, 0x0d, 0x8e, 0xab, 0x05, 0x0e, - 0xf4, 0x5a, 0x82, 0x7c, 0x87, 0x11, 0xfc, 0x02, 0x00, 0x7f, 0xeb, 0x8e, 0x34, 0xfd, 0x61, 0xb0, - 0x0a, 0xfe, 0x12, 0x1e, 0x1d, 0xed, 0xe5, 0x60, 0x15, 0x21, 0x31, 0xdb, 0x84, 0x73, 0x5f, 0x88, - 0x01, 0xf4, 0xbb, 0xc7, 0x4d, 0x38, 0xfa, 0x42, 0xc8, 0x46, 0x00, 0xf7, 0x8a, 0x58, 0x04, 0x90, - 0xee, 0x97, 0x20, 0x26, 0x88, 0xc8, 0xe4, 0x20, 0xc2, 0xc3, 0xa5, 0x5c, 0x2f, 0x69, 0x12, 0x0f, - 0xf2, 0x5c, 0xec, 0x02, 0x9c, 0x44, 0xb8, 0x75, 0xbc, 0xff, 0x0e, 0x1d, 0xa8, 0x86, 0x76, 0x72, - 0xa0, 0x52, 0xbf, 0x90, 0x85, 0x81, 0x6a, 0x7b, 0xd9, 0xdd, 0x74, 0x3d, 0xda, 0x3c, 0xe6, 0x6a, - 0xec, 0x6f, 0xaf, 0xf2, 0xa9, 0xdb, 0xab, 0xc7, 0x7c, 0xa1, 0x48, 0xe7, 0x8e, 0x81, 0x49, 0xe7, - 0x8b, 0xe3, 0x7f, 0xcf, 0xc2, 0x28, 0xbf, 0x38, 0x2b, 0x9b, 0x6e, 0xfd, 0x10, 0x9c, 0xf9, 0x8f, - 0x5e, 0x2a, 0x07, 0xbb, 0x6c, 0xde, 0xc5, 0x13, 0x09, 0xf5, 0xb3, 0x59, 0x18, 0x2c, 0xb5, 0xbd, - 0xb5, 0x92, 0x87, 0xba, 0x75, 0x5f, 0xee, 0x4f, 0x7e, 0x37, 0x03, 0xa7, 0x58, 0x43, 0x96, 0xec, - 0x75, 0x6a, 0x1d, 0xc2, 0xc1, 0xa3, 0x7c, 0x80, 0x98, 0xdd, 0xe7, 0x01, 0xa2, 0x2f, 0xcb, 0xdc, - 0xde, 0x64, 0x89, 0xc7, 0xe5, 0x9a, 0xdd, 0xa0, 0xc7, 0xfb, 0x33, 0x0e, 0xf1, 0xb8, 0xdc, 0x17, - 0xc8, 0x21, 0x5c, 0xcf, 0xbc, 0xbf, 0x04, 0x72, 0x08, 0x67, 0x4b, 0xef, 0x0f, 0x81, 0x7c, 0x23, - 0x03, 0x03, 0x13, 0xb6, 0x77, 0xcc, 0x07, 0xbe, 0xf8, 0x8a, 0xe3, 0xad, 0xe6, 0xfe, 0x57, 0x1c, - 0x6f, 0xdd, 0x54, 0x7f, 0x2c, 0x0b, 0x67, 0x44, 0x90, 0x6e, 0x71, 0xfe, 0x70, 0x32, 0x1d, 0x8b, - 0xc1, 0x96, 0x14, 0xcd, 0xc9, 0x3c, 0x24, 0x44, 0xf3, 0xf3, 0x39, 0x38, 0x83, 0xa1, 0x4c, 0xd9, - 0xb6, 0xec, 0x7d, 0x60, 0x8b, 0x90, 0x7a, 0xf4, 0x12, 0x74, 0x2e, 0xe5, 0x12, 0xf4, 0xaf, 0xb7, - 0x8a, 0xcf, 0xad, 0x9a, 0xde, 0x5a, 0x7b, 0x79, 0xbc, 0x6e, 0x37, 0xaf, 0xae, 0x3a, 0xfa, 0x5d, - 0x93, 0x5f, 0xff, 0xe9, 0x8d, 0xab, 0x41, 0xbe, 0x0b, 0xbd, 0x65, 0x8a, 0x4c, 0x18, 0x55, 0xdc, - 0xeb, 0x30, 0xae, 0xfe, 0xf5, 0xa9, 0x0b, 0xf0, 0x9a, 0x6d, 0x5a, 0xc2, 0xa7, 0x90, 0x1b, 0xba, - 0x55, 0xb6, 0x3f, 0x7c, 0xcb, 0x36, 0xad, 0x5a, 0xdc, 0xb1, 0x70, 0xaf, 0xf5, 0x85, 0xac, 0x35, - 0xa9, 0x1a, 0xf5, 0xef, 0x65, 0xe0, 0xc1, 0xa8, 0x16, 0xbf, 0x1f, 0x6c, 0xc7, 0x1f, 0xcf, 0xc2, - 0x03, 0x37, 0x50, 0x38, 0x81, 0x23, 0xc7, 0xc9, 0xbc, 0x25, 0x06, 0x67, 0x8a, 0x6c, 0x4e, 0x2c, - 0xca, 0xce, 0xb2, 0x39, 0x99, 0xd4, 0x85, 0x6c, 0x7e, 0x3f, 0x03, 0xa7, 0x17, 0x2a, 0xe5, 0xc9, - 0xf7, 0xc9, 0x88, 0x4a, 0x7e, 0xcf, 0x31, 0x37, 0x38, 0x13, 0xdf, 0x73, 0xcc, 0x4d, 0x4f, 0xf6, - 0x3d, 0xd5, 0xd2, 0xdc, 0xec, 0xfb, 0x49, 0xdf, 0x22, 0xdf, 0xf3, 0x3e, 0xd0, 0xb7, 0xc8, 0xf7, - 0x1c, 0x73, 0x7d, 0xfb, 0x7f, 0x0b, 0x30, 0x78, 0xb3, 0xbd, 0x4c, 0x85, 0x4b, 0xc8, 0x7d, 0x7d, - 0xde, 0x7a, 0x0d, 0x06, 0x85, 0x18, 0xf0, 0xae, 0x42, 0x0a, 0x59, 0x27, 0x42, 0x90, 0xf0, 0xa8, - 0x40, 0x32, 0x11, 0xb9, 0x00, 0xf9, 0xdb, 0xd4, 0x59, 0x96, 0x5f, 0x73, 0xde, 0xa5, 0xce, 0xb2, - 0x86, 0x50, 0x32, 0x1b, 0x3a, 0xaa, 0x97, 0x16, 0x2b, 0x98, 0xbe, 0x44, 0x5c, 0x93, 0x60, 0x3e, - 0x96, 0xc0, 0xdb, 0x4c, 0x6f, 0x99, 0x3c, 0xf1, 0x89, 0xfc, 0x92, 0x3c, 0x5e, 0x92, 0xcc, 0xc3, - 0x98, 0xec, 0x6e, 0xc4, 0x73, 0x77, 0xf4, 0xa7, 0xb0, 0x4b, 0xcb, 0xda, 0x91, 0x2c, 0x4a, 0x5e, - 0x81, 0x21, 0x1f, 0x88, 0x8e, 0x53, 0x03, 0x61, 0xc0, 0xf8, 0x80, 0x55, 0x2c, 0x31, 0x50, 0xa4, - 0x80, 0xcc, 0x00, 0x0f, 0xff, 0x21, 0x85, 0x41, 0xcc, 0x11, 0x2d, 0x52, 0x80, 0x3c, 0x8b, 0x0c, - 0xf0, 0x71, 0x05, 0xba, 0x88, 0x0c, 0xe2, 0x53, 0x47, 0x74, 0x84, 0x77, 0x04, 0x9c, 0x3f, 0x68, - 0x8d, 0x90, 0x91, 0x05, 0x80, 0xf0, 0x2a, 0x5f, 0x84, 0x0d, 0xd8, 0xb3, 0x93, 0x81, 0xc4, 0x42, - 0xbe, 0x84, 0x1b, 0xde, 0xcf, 0x25, 0x9c, 0xfa, 0x87, 0x59, 0x18, 0x2c, 0xb5, 0x5a, 0xc1, 0x50, - 0x78, 0x0a, 0x0a, 0xa5, 0x56, 0xeb, 0x96, 0x56, 0x91, 0x03, 0x88, 0xeb, 0xad, 0x56, 0xad, 0xed, - 0x98, 0xb2, 0x27, 0x26, 0x27, 0x22, 0x93, 0x30, 0x5c, 0x6a, 0xb5, 0x16, 0xdb, 0xcb, 0x0d, 0xb3, - 0x2e, 0xe5, 0x23, 0xe2, 0xa9, 0xd3, 0x5a, 0xad, 0x5a, 0x0b, 0x31, 0xf1, 0xa4, 0x54, 0xd1, 0x32, - 0xe4, 0x4d, 0x0c, 0xb6, 0x23, 0xd2, 0xe1, 0xf0, 0x84, 0x1b, 0x6a, 0x10, 0x3a, 0x3c, 0x6c, 0xdb, - 0x78, 0x40, 0xc4, 0x43, 0xac, 0x5f, 0xf0, 0x03, 0xd5, 0xb3, 0x8a, 0x12, 0x69, 0x6f, 0x42, 0x96, - 0xe4, 0xc3, 0xd0, 0x57, 0x6a, 0xb5, 0xa4, 0x5b, 0x1e, 0x74, 0xe5, 0x61, 0xa5, 0x62, 0x7d, 0xec, - 0x93, 0x9d, 0x7f, 0x09, 0x46, 0xa2, 0x95, 0xed, 0x29, 0x44, 0xfb, 0x5f, 0x65, 0xf0, 0x83, 0x8e, - 0xb9, 0x27, 0xf1, 0x33, 0x90, 0x2b, 0xb5, 0x5a, 0x62, 0x3e, 0x3a, 0x9d, 0xd2, 0x1f, 0xf1, 0x87, - 0xc7, 0xa5, 0x56, 0xcb, 0xff, 0xf4, 0x63, 0xfe, 0x24, 0x61, 0x5f, 0x9f, 0xfe, 0x0d, 0xfe, 0xe9, - 0xc7, 0xfb, 0xb9, 0x80, 0xfa, 0x6b, 0x39, 0x38, 0x55, 0x6a, 0xb5, 0x4e, 0x42, 0xbb, 0x1f, 0xd6, - 0xf3, 0xe6, 0xa7, 0x01, 0xa4, 0xe9, 0xb1, 0x2f, 0x78, 0x30, 0x35, 0x28, 0x4d, 0x8d, 0x4a, 0x46, - 0x93, 0x88, 0x7c, 0xf5, 0xeb, 0xdf, 0x93, 0xfa, 0x7d, 0x36, 0x87, 0x53, 0xf1, 0x71, 0x0f, 0xd5, - 0xf4, 0x5e, 0xe9, 0x36, 0xd1, 0x07, 0x85, 0x3d, 0xf5, 0xc1, 0xef, 0x44, 0x06, 0x0f, 0x86, 0x0a, - 0x3f, 0xe9, 0x85, 0xde, 0x03, 0x99, 0xc5, 0x23, 0xb2, 0x30, 0x45, 0xfc, 0x18, 0x3f, 0x7d, 0x91, - 0x88, 0x66, 0x54, 0x67, 0xa8, 0x9a, 0x69, 0x68, 0x31, 0x5a, 0xbf, 0x0f, 0xfb, 0xf6, 0xd4, 0x87, - 0x5b, 0x59, 0x7c, 0xb1, 0x1c, 0x44, 0x43, 0x3a, 0xf8, 0xee, 0xe2, 0x2a, 0x00, 0xbf, 0xef, 0x0f, - 0x9c, 0x89, 0x87, 0x79, 0xe0, 0x13, 0x9e, 0xd5, 0x48, 0x04, 0x3e, 0x09, 0x49, 0x02, 0xbf, 0xa4, - 0x5c, 0xaa, 0x5f, 0xd2, 0x15, 0xe8, 0xd7, 0xf4, 0x8d, 0xd7, 0xdb, 0xd4, 0xd9, 0x14, 0xe6, 0x0c, - 0x0f, 0x36, 0xa8, 0x6f, 0xd4, 0x3e, 0xc3, 0x80, 0x5a, 0x80, 0x26, 0x6a, 0xf0, 0xe4, 0x5d, 0xf2, - 0xc3, 0xe0, 0x27, 0xd3, 0xc1, 0x43, 0xf7, 0xfd, 0x28, 0x3a, 0x79, 0x11, 0x72, 0xa5, 0x3b, 0x55, - 0x21, 0xd9, 0xa0, 0x6b, 0x4b, 0x77, 0xaa, 0x42, 0x5e, 0x1d, 0xcb, 0xde, 0xa9, 0xaa, 0x9f, 0xcd, - 0x02, 0x49, 0x52, 0x92, 0xe7, 0x60, 0x00, 0xa1, 0xab, 0x4c, 0x67, 0xe4, 0x74, 0x98, 0x1b, 0x6e, - 0xcd, 0x41, 0x68, 0xc4, 0xb8, 0xf3, 0x49, 0xc9, 0x0b, 0x98, 0xf9, 0x57, 0x24, 0x64, 0x8b, 0xa4, - 0xc3, 0xdc, 0x70, 0xfd, 0x5c, 0xb9, 0xb1, 0xc4, 0xbf, 0x82, 0x18, 0xed, 0xc2, 0x3b, 0xd5, 0x19, - 0xdb, 0xf5, 0x84, 0xa8, 0xb9, 0x5d, 0xb8, 0xe1, 0x62, 0x1e, 0xd6, 0x88, 0x5d, 0xc8, 0xc9, 0x30, - 0x97, 0xd4, 0x9d, 0x2a, 0x7f, 0x1c, 0x62, 0x68, 0x76, 0xc3, 0x37, 0x28, 0x79, 0x2e, 0xa9, 0x0d, - 0xb7, 0xc6, 0x1f, 0x96, 0x18, 0x98, 0x72, 0x38, 0x92, 0x4b, 0x2a, 0x52, 0x4a, 0xfd, 0x62, 0x3f, - 0x8c, 0x96, 0x75, 0x4f, 0x5f, 0xd6, 0x5d, 0x2a, 0xed, 0xa6, 0x4f, 0xf9, 0x30, 0xff, 0x73, 0x24, - 0x39, 0x18, 0xcb, 0x29, 0x5f, 0x13, 0x2f, 0x40, 0x3e, 0x1a, 0xf2, 0x0d, 0x32, 0x7d, 0xca, 0xa9, - 0xc3, 0x96, 0x6b, 0x2d, 0x01, 0xd6, 0x12, 0x84, 0xe4, 0x49, 0x18, 0xf4, 0x61, 0x6c, 0x03, 0x90, - 0x0b, 0x75, 0xc6, 0x58, 0x66, 0xf6, 0xbf, 0x26, 0xa3, 0xc9, 0x0b, 0x30, 0xe4, 0xff, 0x94, 0x4c, - 0x6b, 0x9e, 0x07, 0x6d, 0x39, 0xb1, 0x7b, 0x92, 0x49, 0xe5, 0xa2, 0x38, 0xbf, 0xf5, 0x46, 0x8a, - 0xc6, 0x52, 0x8d, 0x45, 0x48, 0xc9, 0x67, 0x60, 0xc4, 0xff, 0x2d, 0x36, 0x0c, 0x3c, 0x2b, 0xdb, - 0x93, 0x41, 0x46, 0xe3, 0x98, 0x58, 0xc7, 0xa3, 0xe4, 0x7c, 0xeb, 0xf0, 0x90, 0x9f, 0x3d, 0xcb, - 0x58, 0x4e, 0xee, 0x1c, 0x62, 0x15, 0x90, 0x0a, 0x8c, 0xf9, 0x90, 0x50, 0x43, 0xfb, 0xc2, 0x1d, - 0xa3, 0xb1, 0x5c, 0x4b, 0x55, 0xd2, 0x64, 0x29, 0xd2, 0x80, 0x0b, 0x11, 0xa0, 0xe1, 0xae, 0x99, - 0x2b, 0x9e, 0xd8, 0xee, 0x89, 0xc8, 0xbf, 0x22, 0x5d, 0x62, 0xc0, 0x95, 0xd3, 0xf8, 0x79, 0x4f, - 0xa3, 0x39, 0x99, 0xba, 0x72, 0x23, 0x55, 0x38, 0xe3, 0xe3, 0x6f, 0x4c, 0x2e, 0x2e, 0x3a, 0xf6, - 0x5b, 0xb4, 0xee, 0x55, 0xca, 0x62, 0xbb, 0x8c, 0x11, 0xe1, 0x8c, 0xe5, 0xda, 0x6a, 0xbd, 0xc5, - 0x94, 0x82, 0xe1, 0xa2, 0xcc, 0x53, 0x0b, 0x93, 0xdb, 0xf0, 0x80, 0x04, 0xaf, 0x58, 0xae, 0xa7, - 0x5b, 0x75, 0x5a, 0x29, 0x8b, 0x3d, 0x34, 0xee, 0xe7, 0x05, 0x57, 0x53, 0x20, 0xa3, 0x6c, 0xd3, - 0x8b, 0x93, 0x97, 0x60, 0xd8, 0x47, 0xf0, 0xbb, 0xbb, 0x41, 0xbc, 0xbb, 0xc3, 0x21, 0x69, 0x2c, - 0xd7, 0xe2, 0x6f, 0x18, 0xa3, 0xc4, 0xb2, 0x46, 0x61, 0x42, 0xf9, 0xa1, 0x88, 0x46, 0x79, 0x9b, - 0xad, 0x54, 0x65, 0xc4, 0x24, 0xf3, 0xaf, 0x84, 0x1a, 0xb5, 0xe0, 0x98, 0xab, 0x26, 0xdf, 0x49, - 0xfb, 0xcf, 0x16, 0x97, 0x6b, 0x36, 0x02, 0xd3, 0xf4, 0x83, 0x93, 0x9f, 0x2f, 0xc1, 0xe9, 0x14, - 0x1d, 0xdb, 0xd3, 0x8e, 0xf1, 0x0b, 0xd9, 0xb0, 0x11, 0xc7, 0x7c, 0xdb, 0x38, 0x01, 0xfd, 0xfe, - 0x97, 0x08, 0xe3, 0x41, 0xe9, 0x34, 0x34, 0xe3, 0x3c, 0x7c, 0x7c, 0x44, 0x1c, 0xc7, 0x7c, 0x2b, - 0x79, 0x18, 0xe2, 0x78, 0x27, 0x13, 0x8a, 0xe3, 0x98, 0x6f, 0x2f, 0x7f, 0x3f, 0x17, 0xce, 0x49, - 0x27, 0x7b, 0xcc, 0xc3, 0x32, 0x93, 0x43, 0xef, 0xd3, 0xc2, 0x1e, 0x9e, 0x0f, 0xca, 0xaa, 0xd9, - 0xb7, 0x4f, 0xd5, 0xfc, 0xe3, 0x64, 0x7f, 0x72, 0xd3, 0xf3, 0x58, 0xf6, 0xe7, 0x21, 0x0c, 0x56, - 0x72, 0x2d, 0x5c, 0xc7, 0xb8, 0x8d, 0xde, 0x2b, 0x05, 0xd6, 0x5b, 0x16, 0x26, 0x7a, 0x94, 0x84, - 0x7c, 0x12, 0xce, 0x45, 0x00, 0x8b, 0xba, 0xa3, 0x37, 0xa9, 0x17, 0xe6, 0xf9, 0xc3, 0x50, 0x49, - 0x7e, 0xe9, 0x5a, 0x2b, 0x40, 0xcb, 0xb9, 0x03, 0x3b, 0x70, 0x90, 0x94, 0xa3, 0x6f, 0x0f, 0xae, - 0xc9, 0x7f, 0x92, 0x07, 0x25, 0x30, 0x10, 0x83, 0x47, 0x38, 0x47, 0x38, 0x19, 0xbf, 0x27, 0x3a, - 0xd7, 0x84, 0xb1, 0x50, 0x18, 0xd5, 0x76, 0xb3, 0xa9, 0x63, 0x07, 0x33, 0x03, 0xb4, 0x18, 0x67, - 0x16, 0x12, 0x72, 0x9b, 0xf3, 0xbc, 0xb0, 0x39, 0x49, 0xf8, 0xc8, 0xa9, 0xe6, 0x72, 0x16, 0x5a, - 0x92, 0x2b, 0xf9, 0x52, 0x06, 0xce, 0x94, 0x56, 0x56, 0x68, 0xdd, 0xa3, 0xc6, 0xc2, 0x32, 0x33, - 0xbe, 0x26, 0xed, 0xb6, 0xe5, 0xf9, 0xf6, 0xee, 0x8b, 0x9d, 0xab, 0xe3, 0x9d, 0x34, 0x9e, 0x56, - 0x98, 0xb7, 0x24, 0x08, 0x1a, 0xa0, 0x0b, 0x92, 0x9a, 0x8d, 0x34, 0xb5, 0x3a, 0x12, 0x69, 0xa9, - 0xf5, 0x9e, 0xbf, 0x01, 0x0f, 0x76, 0x64, 0xb9, 0x93, 0xb1, 0xd3, 0x2b, 0x1b, 0x3b, 0xff, 0x20, - 0x13, 0xaa, 0x7b, 0x4c, 0x48, 0x64, 0x1c, 0x20, 0x04, 0x89, 0xed, 0xcf, 0xc8, 0xf6, 0x56, 0x11, - 0x42, 0xa1, 0x69, 0x12, 0x05, 0x59, 0x80, 0x82, 0x10, 0x0b, 0xcf, 0xdc, 0xfa, 0xa1, 0x1d, 0x7a, - 0x61, 0x5c, 0x96, 0x03, 0x6e, 0x6d, 0xc4, 0x37, 0x0b, 0x36, 0xe7, 0x5f, 0x80, 0xc1, 0xfd, 0x7e, - 0xd7, 0x97, 0x72, 0x40, 0xe4, 0xbd, 0xca, 0x11, 0x1a, 0x72, 0xef, 0x89, 0xc1, 0xb2, 0xbf, 0xcc, - 0x2b, 0x97, 0xa1, 0x9f, 0x7d, 0x02, 0xe6, 0x32, 0x90, 0x62, 0x97, 0xb6, 0x05, 0x4c, 0x0b, 0xb0, - 0x61, 0xe0, 0xa0, 0xbe, 0xf4, 0xc0, 0x41, 0xea, 0x0f, 0xe7, 0xe0, 0xac, 0xdc, 0x21, 0x65, 0x8a, - 0xe1, 0xd0, 0x4f, 0x3a, 0xe5, 0x5d, 0xec, 0x14, 0x15, 0x0a, 0xdc, 0x44, 0x15, 0x71, 0xe9, 0xf9, - 0xf1, 0x01, 0x42, 0x34, 0x81, 0x51, 0xff, 0x69, 0x16, 0x86, 0x17, 0x6d, 0xd7, 0x5b, 0x75, 0xa8, - 0xbb, 0xa8, 0x3b, 0xee, 0x7d, 0xdc, 0x1d, 0x1f, 0x81, 0x61, 0x0c, 0xfd, 0xd2, 0xa4, 0x16, 0x0f, - 0x8f, 0xd2, 0x2b, 0x25, 0x92, 0xf0, 0x11, 0x22, 0x67, 0x50, 0x84, 0x90, 0x69, 0x3f, 0xb7, 0x2f, - 0xa4, 0x80, 0x3c, 0xdc, 0xb8, 0xe0, 0x70, 0xf5, 0x67, 0x72, 0x30, 0xe4, 0x4b, 0x79, 0xc2, 0x3c, - 0xae, 0xf7, 0x01, 0x47, 0x2b, 0xe4, 0xab, 0x00, 0x8b, 0xb6, 0xe3, 0xe9, 0x8d, 0xf9, 0x50, 0xf3, - 0xf1, 0x20, 0xad, 0x85, 0x50, 0x5e, 0x46, 0x22, 0xc1, 0xf5, 0x2b, 0x34, 0xde, 0xf8, 0xc4, 0xc4, - 0xd7, 0xaf, 0x00, 0xaa, 0x49, 0x14, 0xea, 0x6f, 0x65, 0xe1, 0x94, 0xdf, 0x49, 0x53, 0xf7, 0x68, - 0xbd, 0x7d, 0x3f, 0xcf, 0x4d, 0x51, 0x69, 0xf7, 0xee, 0x28, 0x6d, 0xf5, 0xdf, 0x48, 0x13, 0xc9, - 0x64, 0xc3, 0x3e, 0x99, 0x48, 0xfe, 0x36, 0x74, 0x5c, 0xfd, 0xde, 0x1c, 0x9c, 0xf1, 0xa5, 0x3e, - 0xdd, 0xb6, 0x70, 0x0b, 0x3a, 0xa9, 0x37, 0x1a, 0xf7, 0xf3, 0x9e, 0x6f, 0xd0, 0x17, 0xc4, 0x82, - 0x88, 0xa5, 0x26, 0xf2, 0xb7, 0xad, 0x08, 0x70, 0xcd, 0x36, 0x0d, 0x4d, 0x26, 0x22, 0xaf, 0xc0, - 0x90, 0xff, 0xb3, 0xe4, 0xac, 0xfa, 0x1b, 0x3d, 0x3c, 0x50, 0x0e, 0x0a, 0xe9, 0x4e, 0xe4, 0xc9, - 0x78, 0xa4, 0x80, 0xfa, 0xcf, 0x0b, 0x70, 0xfe, 0x8e, 0x69, 0x19, 0xf6, 0x86, 0xeb, 0xa7, 0xff, - 0x3b, 0xf6, 0x07, 0x2a, 0x47, 0x9d, 0xf6, 0xef, 0x75, 0x78, 0x20, 0x2e, 0x52, 0x27, 0x08, 0xca, - 0x2c, 0x7a, 0x67, 0x83, 0x13, 0xd4, 0xfc, 0x44, 0x80, 0xe2, 0x56, 0x46, 0x4b, 0x2f, 0x19, 0xcf, - 0x24, 0xd8, 0xb7, 0x9b, 0x4c, 0x82, 0x4f, 0x40, 0xa1, 0x6c, 0x37, 0x75, 0xd3, 0x0f, 0x1e, 0x82, - 0xa3, 0x38, 0xa8, 0x17, 0x31, 0x9a, 0xa0, 0x60, 0xfc, 0x45, 0xc5, 0xd8, 0x65, 0x03, 0x21, 0x7f, - 0xbf, 0x00, 0xb3, 0xd2, 0x34, 0x99, 0x88, 0xd8, 0x30, 0x2c, 0xaa, 0x13, 0x77, 0x28, 0x80, 0x9b, - 0xa7, 0x67, 0x7d, 0x19, 0x75, 0x56, 0xab, 0xf1, 0x48, 0x39, 0xbe, 0x8d, 0xe2, 0x09, 0x0e, 0xc5, - 0xc7, 0xf0, 0xdb, 0x14, 0x2d, 0xca, 0x5f, 0x12, 0x02, 0x4e, 0x32, 0x83, 0x49, 0x21, 0xe0, 0x2c, - 0x23, 0x13, 0x91, 0x29, 0x18, 0xc3, 0xd0, 0xb9, 0xc1, 0x56, 0x8a, 0xa9, 0xc4, 0x10, 0x1a, 0x95, - 0x78, 0x34, 0xcf, 0xa3, 0xed, 0xb2, 0x8f, 0xab, 0xd5, 0x05, 0x5a, 0x4b, 0x96, 0x38, 0xff, 0x2a, - 0x90, 0x64, 0x9b, 0xf7, 0x74, 0x38, 0xff, 0xc5, 0x6c, 0xb8, 0xaf, 0x3b, 0xee, 0xee, 0x15, 0x87, - 0x71, 0x1c, 0xfd, 0xcb, 0x19, 0x18, 0x4b, 0x84, 0x62, 0x26, 0xcf, 0x00, 0x70, 0x88, 0x14, 0xf2, - 0x0e, 0x63, 0x48, 0x84, 0xe1, 0x99, 0xc5, 0x52, 0x12, 0x92, 0x91, 0xab, 0xd0, 0xcf, 0x7f, 0x89, - 0x30, 0x35, 0xc9, 0x22, 0xed, 0xb6, 0x69, 0x68, 0x01, 0x51, 0x58, 0x0b, 0xde, 0xf2, 0xe4, 0x52, - 0x8b, 0x78, 0x9b, 0xad, 0xa0, 0x16, 0x46, 0xc6, 0x3a, 0x70, 0x28, 0x68, 0x70, 0xc9, 0x38, 0xaa, - 0xae, 0x2b, 0x88, 0xa8, 0xd6, 0xb9, 0x9d, 0xa2, 0x5a, 0xc7, 0xe6, 0x26, 0x11, 0xc6, 0xfa, 0xf0, - 0x9e, 0x86, 0x7c, 0x39, 0x0b, 0xa7, 0x82, 0x5a, 0x8f, 0xf0, 0x42, 0xe1, 0x3d, 0x24, 0x92, 0x2f, - 0x65, 0x40, 0x99, 0x30, 0x1b, 0x0d, 0xd3, 0x5a, 0xad, 0x58, 0x2b, 0xb6, 0xd3, 0xc4, 0xc9, 0xe3, - 0xe8, 0x8e, 0x3b, 0xd5, 0x1f, 0xc8, 0xc0, 0x98, 0x68, 0xd0, 0xa4, 0xee, 0x18, 0x47, 0x77, 0x96, - 0x14, 0x6f, 0xc9, 0xd1, 0xe9, 0x8b, 0xfa, 0xb5, 0x2c, 0xc0, 0xac, 0x5d, 0x5f, 0x3f, 0xe6, 0x6f, - 0x03, 0x3f, 0x0a, 0x05, 0x1e, 0x2b, 0x48, 0x68, 0xec, 0xd8, 0x38, 0x7f, 0xf2, 0xc9, 0x3e, 0x8d, - 0x23, 0x26, 0x46, 0xc5, 0x09, 0x6d, 0x81, 0xc7, 0x1a, 0x52, 0x32, 0x9a, 0x28, 0xc2, 0x2a, 0x65, - 0x74, 0xc2, 0xaa, 0x09, 0x2a, 0x65, 0xb0, 0x68, 0xa5, 0xdb, 0x5b, 0xc5, 0x7c, 0xc3, 0xae, 0xaf, - 0x6b, 0x48, 0xaf, 0xfe, 0x4d, 0x86, 0xcb, 0xee, 0x98, 0xbf, 0x8f, 0xf3, 0x3f, 0x3f, 0xbf, 0xc7, - 0xcf, 0xff, 0xc1, 0x0c, 0x9c, 0xd1, 0x68, 0xdd, 0xbe, 0x4b, 0x9d, 0xcd, 0x49, 0xdb, 0xa0, 0x37, - 0xa8, 0x45, 0x9d, 0xa3, 0x1a, 0x51, 0xff, 0x17, 0xa6, 0x01, 0x08, 0x1b, 0x73, 0xcb, 0xa5, 0xc6, - 0xf1, 0x49, 0xd1, 0xa0, 0xfe, 0x9f, 0x7d, 0xa0, 0xa4, 0x5a, 0x88, 0xc7, 0xd6, 0x2a, 0xea, 0x68, - 0xf6, 0xe7, 0x0f, 0xcb, 0xec, 0xef, 0xdd, 0x9b, 0xd9, 0x5f, 0xd8, 0xab, 0xd9, 0xdf, 0xb7, 0x1b, - 0xb3, 0xbf, 0x19, 0x37, 0xfb, 0xfb, 0xd1, 0xec, 0x7f, 0xa6, 0xab, 0xd9, 0x3f, 0x65, 0x19, 0xfb, - 0x34, 0xfa, 0x8f, 0x6d, 0xfa, 0xd0, 0xfd, 0xec, 0x56, 0x2e, 0xb3, 0x49, 0xb1, 0x6e, 0x3b, 0x06, - 0x35, 0xc4, 0x26, 0x05, 0x4f, 0xc8, 0x1d, 0x01, 0xd3, 0x02, 0x6c, 0x22, 0x17, 0xeb, 0xf0, 0x6e, - 0x72, 0xb1, 0x1e, 0xc2, 0x36, 0xe6, 0x0b, 0x59, 0x18, 0x9b, 0xa4, 0x8e, 0xc7, 0x83, 0x11, 0x1e, - 0x86, 0x9b, 0x51, 0x09, 0x4e, 0x49, 0x0c, 0xd1, 0x22, 0xcf, 0x86, 0xae, 0x53, 0x75, 0xea, 0x78, - 0x71, 0xcf, 0xab, 0x38, 0x3d, 0xab, 0xde, 0xcf, 0x87, 0x24, 0xc6, 0x6e, 0x50, 0xbd, 0x0f, 0xe7, - 0x82, 0x34, 0xc5, 0x2f, 0x2d, 0xa0, 0x97, 0x52, 0x1c, 0xe5, 0xf7, 0x9e, 0xe2, 0x48, 0xfd, 0xa5, - 0x0c, 0x5c, 0xd2, 0xa8, 0x45, 0x37, 0xf4, 0xe5, 0x06, 0x95, 0x9a, 0x25, 0x56, 0x06, 0x36, 0x6b, - 0x98, 0x6e, 0x53, 0xf7, 0xea, 0x6b, 0x07, 0x92, 0xd1, 0x34, 0x0c, 0xc9, 0xf3, 0xd7, 0x1e, 0xe6, - 0xb6, 0x48, 0x39, 0xf5, 0x37, 0x73, 0xd0, 0x37, 0x61, 0x7b, 0xaf, 0xd9, 0x07, 0xcc, 0xb9, 0x15, - 0x4e, 0xf9, 0xd9, 0x3d, 0x9c, 0x8b, 0x7c, 0x18, 0x2b, 0x97, 0xc2, 0x90, 0xa3, 0x5b, 0xde, 0xb2, - 0x9d, 0x08, 0xd7, 0xee, 0x93, 0xed, 0x31, 0xdb, 0xd6, 0x73, 0x30, 0x80, 0x71, 0x2c, 0xa4, 0x93, - 0x4b, 0x74, 0x7a, 0xf5, 0x18, 0x30, 0x5e, 0x47, 0x48, 0x4a, 0x3e, 0x19, 0x89, 0x9e, 0x58, 0x38, - 0x78, 0x76, 0x2e, 0x39, 0x90, 0xe2, 0xa1, 0x25, 0xc1, 0x52, 0xbf, 0x93, 0x87, 0x21, 0xdf, 0xd5, - 0xf1, 0x88, 0x7a, 0xf0, 0x29, 0x28, 0xcc, 0xd8, 0x52, 0x48, 0x75, 0x74, 0x8d, 0x5c, 0xb3, 0xdd, - 0x98, 0xcf, 0xa7, 0x20, 0x22, 0xcf, 0x40, 0xff, 0xbc, 0x6d, 0xc8, 0x8e, 0xbd, 0x38, 0xa6, 0x2d, - 0xdb, 0x48, 0x3c, 0x8c, 0x0c, 0x08, 0xc9, 0x25, 0xc8, 0xa3, 0x4f, 0xb4, 0x74, 0xf4, 0x1c, 0xf3, - 0x83, 0x46, 0xbc, 0xa4, 0x1b, 0x85, 0xbd, 0xea, 0x46, 0xdf, 0x7e, 0x75, 0xa3, 0xff, 0x70, 0x75, - 0xe3, 0x0d, 0x18, 0xc2, 0x9a, 0xfc, 0x8c, 0x4c, 0x3b, 0x2f, 0x6f, 0x0f, 0x8a, 0x15, 0x68, 0x98, - 0xb7, 0x5b, 0xe4, 0x65, 0xc2, 0x85, 0x27, 0xc2, 0x2a, 0xa6, 0x76, 0x70, 0x00, 0xb5, 0xfb, 0xe3, - 0x0c, 0xf4, 0xdd, 0xb2, 0xd6, 0x2d, 0x7b, 0xe3, 0x60, 0x1a, 0xf7, 0x0c, 0x0c, 0x0a, 0x36, 0xd2, - 0x1c, 0x8f, 0x6f, 0x5d, 0xdb, 0x1c, 0x5c, 0x43, 0x4e, 0x9a, 0x4c, 0x45, 0x5e, 0x0a, 0x0a, 0xe1, - 0xb3, 0x87, 0x5c, 0x98, 0x94, 0xc0, 0x2f, 0x54, 0x8f, 0xc6, 0x51, 0x97, 0xc9, 0xc9, 0x05, 0xc8, - 0x97, 0x59, 0x53, 0xa5, 0xa8, 0x9c, 0xac, 0x29, 0x1a, 0x42, 0xd5, 0xdf, 0xcb, 0xc2, 0x48, 0xec, - 0xf8, 0xe9, 0x09, 0x18, 0x10, 0xc7, 0x3f, 0xa6, 0x1f, 0xd8, 0x1d, 0x9f, 0x45, 0x04, 0x40, 0xad, - 0x9f, 0xff, 0x59, 0x31, 0xc8, 0xc7, 0xa0, 0xcf, 0x76, 0x71, 0x69, 0xc2, 0x6f, 0x19, 0x09, 0x87, - 0xd0, 0x42, 0x95, 0xb5, 0x9d, 0x0f, 0x0e, 0x41, 0x22, 0x6b, 0xa4, 0xed, 0xe2, 0xa7, 0x5d, 0x87, - 0x01, 0xdd, 0x75, 0xa9, 0x57, 0xf3, 0xf4, 0x55, 0x39, 0xd6, 0x7b, 0x00, 0x94, 0x47, 0x07, 0x02, - 0x97, 0xf4, 0x55, 0xf2, 0x2a, 0x0c, 0xd7, 0x1d, 0x8a, 0x8b, 0x97, 0xde, 0x60, 0xad, 0x94, 0x8c, - 0xcb, 0x08, 0x42, 0x3e, 0xf1, 0x0f, 0x11, 0x15, 0x83, 0xdc, 0x86, 0x61, 0xf1, 0x39, 0xdc, 0x27, - 0x19, 0x07, 0xda, 0x48, 0xb8, 0x98, 0x70, 0x91, 0x70, 0xaf, 0x64, 0xe1, 0x9a, 0x2e, 0x93, 0xcb, - 0x7c, 0x0d, 0x89, 0x54, 0xfd, 0x66, 0x86, 0x19, 0x3c, 0x0c, 0x80, 0x39, 0x52, 0x99, 0xae, 0x34, - 0xf7, 0xa8, 0x2b, 0xcd, 0x30, 0x9b, 0x59, 0xc1, 0xed, 0x32, 0x3b, 0x69, 0x02, 0x4b, 0xc6, 0xa1, - 0x60, 0xc8, 0x67, 0x3f, 0x67, 0xa3, 0x1f, 0xe1, 0xd7, 0xa3, 0x09, 0x2a, 0x72, 0x19, 0xf2, 0xcc, - 0xa0, 0x8d, 0x6f, 0xfc, 0xe4, 0x35, 0x52, 0x43, 0x0a, 0xf5, 0xbb, 0xb3, 0x30, 0x24, 0x7d, 0xcd, - 0xb5, 0x03, 0x7d, 0xce, 0x8b, 0xbb, 0x6b, 0xa6, 0xef, 0xe6, 0x80, 0x3b, 0x02, 0xbf, 0xc9, 0xd7, - 0x03, 0x51, 0xec, 0xea, 0x0a, 0x42, 0x08, 0xe6, 0x39, 0xf1, 0xa1, 0x85, 0xdd, 0x6f, 0x82, 0x18, - 0xfd, 0x6b, 0xf9, 0xfe, 0xec, 0x68, 0xee, 0xb5, 0x7c, 0x7f, 0x7e, 0xb4, 0x17, 0xe3, 0xe2, 0x60, - 0x28, 0x5a, 0xbe, 0xc3, 0xb4, 0x56, 0xcc, 0xd5, 0x63, 0xee, 0x55, 0x7e, 0xb8, 0x31, 0x83, 0x62, - 0xb2, 0x39, 0xe6, 0x2e, 0xe6, 0xef, 0xaa, 0x6c, 0x4e, 0xb2, 0x9f, 0x09, 0xd9, 0xfc, 0x49, 0x06, - 0x94, 0x54, 0xd9, 0x94, 0x8e, 0xe8, 0xe6, 0xfb, 0xf0, 0x72, 0xa0, 0x7d, 0x3b, 0x0b, 0x63, 0x15, - 0xcb, 0xa3, 0xab, 0x7c, 0xdf, 0x73, 0xcc, 0xa7, 0x8a, 0x9b, 0x30, 0x28, 0x7d, 0x8c, 0xe8, 0xf3, - 0x87, 0x82, 0x5d, 0x65, 0x88, 0xea, 0xc0, 0x49, 0x2e, 0x7d, 0x88, 0x69, 0x93, 0x63, 0x42, 0x3e, - 0xe6, 0x73, 0xce, 0xf1, 0x10, 0xf2, 0x31, 0x9f, 0xbc, 0xde, 0xa3, 0x42, 0xfe, 0x57, 0x19, 0x38, - 0x9d, 0x52, 0x39, 0xb9, 0x04, 0x7d, 0xd5, 0xf6, 0x32, 0x06, 0xe4, 0xc9, 0x84, 0x3e, 0xa2, 0x6e, - 0x7b, 0x19, 0x63, 0xf1, 0x68, 0x3e, 0x92, 0x2c, 0xe1, 0xb3, 0xdb, 0x85, 0x4a, 0x79, 0x52, 0x48, - 0x55, 0x95, 0x1e, 0x10, 0x33, 0x70, 0xda, 0x97, 0x05, 0x4f, 0x73, 0x6d, 0xd3, 0xa8, 0xc7, 0x9e, - 0xe6, 0xb2, 0x32, 0xe4, 0x53, 0x30, 0x50, 0x7a, 0xbb, 0xed, 0x50, 0xe4, 0xcb, 0x25, 0xfe, 0x81, - 0x80, 0xaf, 0x8f, 0x48, 0xe3, 0xcc, 0x5f, 0x19, 0x33, 0x8a, 0x38, 0xef, 0x90, 0xa1, 0xfa, 0xc5, - 0x0c, 0x9c, 0xef, 0xdc, 0x3a, 0xf2, 0x61, 0xe8, 0x63, 0x3b, 0xdb, 0x92, 0x36, 0x2f, 0x3e, 0x9d, - 0xe7, 0x0b, 0xb4, 0x1b, 0xb4, 0xa6, 0x3b, 0xb2, 0xe1, 0xed, 0x93, 0x91, 0x97, 0x61, 0xb0, 0xe2, - 0xba, 0x6d, 0xea, 0x54, 0x9f, 0xb9, 0xa5, 0x55, 0xc4, 0x9e, 0x0a, 0x6d, 0x76, 0x13, 0xc1, 0x35, - 0xf7, 0x99, 0x58, 0xc8, 0x1d, 0x99, 0x5e, 0xfd, 0x5c, 0x06, 0x2e, 0x74, 0xfb, 0x2a, 0xb6, 0x81, - 0x5f, 0xa2, 0x96, 0x6e, 0xb1, 0x1d, 0x7f, 0x26, 0xdc, 0xa2, 0x78, 0x08, 0x8b, 0x6e, 0x32, 0x02, - 0x42, 0x56, 0x88, 0x9f, 0x8e, 0x05, 0xd7, 0xf1, 0xfc, 0x24, 0x0f, 0x61, 0xb1, 0x42, 0x3e, 0xa1, - 0xfa, 0x7b, 0x3a, 0xf4, 0x2e, 0x58, 0x74, 0x61, 0x85, 0x3c, 0x2d, 0x25, 0x86, 0x17, 0x03, 0x6d, - 0x4c, 0x1e, 0x30, 0x88, 0x98, 0xe9, 0xd1, 0xa4, 0xf4, 0xf1, 0xd7, 0xe5, 0x0c, 0xc1, 0x42, 0x1d, - 0x88, 0x5c, 0x86, 0x63, 0x66, 0x7a, 0x34, 0x39, 0x93, 0xf0, 0x75, 0x39, 0x33, 0xab, 0xe8, 0xec, - 0x48, 0x29, 0x8e, 0xf1, 0x4b, 0x89, 0x69, 0x60, 0x36, 0x2d, 0x7d, 0x69, 0xdc, 0x26, 0x48, 0x52, - 0xcc, 0xf4, 0x68, 0xe9, 0x69, 0x4f, 0x87, 0x64, 0xc7, 0x98, 0xf8, 0x85, 0x9c, 0x8c, 0x9b, 0xe9, - 0xd1, 0x22, 0xb4, 0xe4, 0x79, 0x18, 0x14, 0xbf, 0x5f, 0xb3, 0x4d, 0x2b, 0xfe, 0xf6, 0x5e, 0x42, - 0xcd, 0xf4, 0x68, 0x32, 0xa5, 0x54, 0xe9, 0xa2, 0x63, 0x06, 0xb9, 0xdd, 0xe3, 0x95, 0x22, 0x4e, - 0xaa, 0x14, 0x7f, 0x93, 0x97, 0x61, 0x38, 0x08, 0x6a, 0xf0, 0x16, 0xad, 0x7b, 0xe2, 0x48, 0xe4, - 0x81, 0x58, 0x61, 0x8e, 0x9c, 0xe9, 0xd1, 0xa2, 0xd4, 0xe4, 0x32, 0x14, 0x34, 0xea, 0x9a, 0x6f, - 0xfb, 0x47, 0xf9, 0x23, 0xd2, 0x74, 0x66, 0xbe, 0xcd, 0xa4, 0x24, 0xf0, 0xac, 0x77, 0xc2, 0xbb, - 0x03, 0x71, 0x80, 0x41, 0x62, 0xb5, 0x4c, 0x59, 0x06, 0xeb, 0x1d, 0xe9, 0xe2, 0xe8, 0xd5, 0x30, - 0xd4, 0x83, 0x48, 0xcb, 0x34, 0x18, 0x7f, 0x53, 0x27, 0x63, 0x67, 0x7a, 0xb4, 0x18, 0xbd, 0x24, - 0xd5, 0xb2, 0xe9, 0xae, 0x8b, 0xe8, 0x5a, 0x71, 0xa9, 0x32, 0x94, 0x24, 0x55, 0xf6, 0x53, 0xaa, - 0x7a, 0x9e, 0x7a, 0x1b, 0xb6, 0xb3, 0x2e, 0x62, 0x69, 0xc5, 0xab, 0x16, 0x58, 0xa9, 0x6a, 0x01, - 0x91, 0xab, 0x66, 0x8b, 0xcc, 0x48, 0x7a, 0xd5, 0xba, 0xa7, 0xcb, 0x55, 0xf3, 0xfd, 0xa5, 0xdf, - 0x49, 0xb3, 0x54, 0xbf, 0xcb, 0xb3, 0x63, 0x26, 0x3b, 0x14, 0x71, 0x52, 0x87, 0xe2, 0x6f, 0x56, - 0xa9, 0x94, 0x01, 0x51, 0xa4, 0xbf, 0x0c, 0x2a, 0x95, 0x50, 0xac, 0x52, 0x39, 0x57, 0xe2, 0x75, - 0x39, 0x31, 0xa0, 0x32, 0x16, 0xed, 0xa0, 0x10, 0xc3, 0x3a, 0x48, 0x4a, 0x20, 0x58, 0xc4, 0xa4, - 0x63, 0x0a, 0x41, 0xf2, 0xc1, 0xa0, 0x85, 0x93, 0x8b, 0x33, 0x3d, 0x1a, 0xa6, 0x23, 0x53, 0x79, - 0x3a, 0x3b, 0xe5, 0x34, 0x52, 0x0c, 0xf9, 0x14, 0x0c, 0x36, 0xd3, 0xa3, 0xf1, 0x54, 0x77, 0x4f, - 0x4b, 0x89, 0x63, 0x94, 0x33, 0xd1, 0x29, 0x22, 0x40, 0xb0, 0x29, 0x22, 0x4c, 0x2f, 0x33, 0x9d, - 0x4c, 0xae, 0xa2, 0x3c, 0x10, 0x5d, 0x51, 0xe3, 0xf8, 0x99, 0x1e, 0x2d, 0x99, 0x90, 0xe5, 0xf9, - 0x48, 0xbe, 0x11, 0xe5, 0x6c, 0x2c, 0xe0, 0x45, 0x88, 0x62, 0xe2, 0x92, 0x33, 0x93, 0x2c, 0xa4, - 0x66, 0x08, 0x56, 0xce, 0x45, 0x97, 0xe3, 0x14, 0x92, 0x99, 0x1e, 0x2d, 0x35, 0xb7, 0xf0, 0x64, - 0x22, 0xeb, 0x87, 0xa2, 0x44, 0xef, 0x2d, 0x63, 0xe8, 0x99, 0x1e, 0x2d, 0x91, 0x27, 0xe4, 0xba, - 0x9c, 0x6e, 0x43, 0x79, 0x30, 0xda, 0x89, 0x21, 0x86, 0x75, 0xa2, 0x94, 0x96, 0xe3, 0xba, 0x9c, - 0x82, 0x41, 0x39, 0x9f, 0x2c, 0x15, 0xce, 0x9c, 0x52, 0xaa, 0x06, 0x2d, 0x3d, 0xaa, 0xbc, 0xf2, - 0x90, 0xc8, 0xeb, 0x25, 0xca, 0xa7, 0xd1, 0xcc, 0xf4, 0x68, 0xe9, 0x11, 0xe9, 0xb5, 0xf4, 0x70, - 0xec, 0xca, 0x85, 0x6e, 0x3c, 0x83, 0xd6, 0xa5, 0x87, 0x72, 0xd7, 0xbb, 0x04, 0xc7, 0x56, 0x1e, - 0x8e, 0x46, 0xdb, 0xeb, 0x48, 0x38, 0xd3, 0xa3, 0x75, 0x09, 0xb1, 0x7d, 0xab, 0x43, 0xa4, 0x6a, - 0xe5, 0x62, 0x34, 0xad, 0x5f, 0x2a, 0xd1, 0x4c, 0x8f, 0xd6, 0x21, 0xce, 0xf5, 0xad, 0x0e, 0x81, - 0x8c, 0x95, 0x62, 0x57, 0xb6, 0x81, 0x3c, 0x3a, 0x84, 0x41, 0x5e, 0x48, 0x8d, 0x01, 0xac, 0x3c, - 0x12, 0x55, 0xdd, 0x14, 0x12, 0xa6, 0xba, 0x69, 0xd1, 0x83, 0x17, 0x52, 0x83, 0xd6, 0x2a, 0x8f, - 0x76, 0x61, 0x18, 0xb4, 0x31, 0x35, 0xdc, 0xed, 0x42, 0x6a, 0xd4, 0x58, 0x45, 0x8d, 0x32, 0x4c, - 0x21, 0x61, 0x0c, 0xd3, 0xe2, 0xcd, 0x2e, 0xa4, 0x86, 0x39, 0x55, 0x1e, 0xeb, 0xc2, 0x30, 0x6c, - 0x61, 0x5a, 0x80, 0xd4, 0xe7, 0x23, 0x71, 0x46, 0x95, 0x0f, 0x44, 0xe7, 0x0d, 0x09, 0xc5, 0xe6, - 0x0d, 0x39, 0x22, 0xe9, 0x64, 0x22, 0x92, 0x9a, 0xf2, 0x78, 0x74, 0x98, 0xc7, 0xd0, 0x6c, 0x98, - 0xc7, 0x63, 0xaf, 0x4d, 0x26, 0x22, 0x4a, 0x29, 0x97, 0x3a, 0x31, 0x41, 0x74, 0x94, 0x09, 0x8f, - 0x41, 0x55, 0x49, 0x09, 0x69, 0xa4, 0x7c, 0x30, 0xea, 0x73, 0x97, 0x20, 0x98, 0xe9, 0xd1, 0x52, - 0x02, 0x21, 0x69, 0xe9, 0xef, 0xf7, 0x95, 0xcb, 0xd1, 0x61, 0x9b, 0x46, 0xc3, 0x86, 0x6d, 0xea, - 0xdb, 0xff, 0xd9, 0x34, 0xff, 0x5a, 0xe5, 0x4a, 0xd4, 0x30, 0x4b, 0x52, 0x30, 0xc3, 0x2c, 0xc5, - 0x2f, 0x57, 0x4b, 0x7f, 0x91, 0xae, 0x3c, 0xd1, 0xb5, 0x85, 0x48, 0x93, 0xd2, 0x42, 0xfe, 0x40, - 0x3b, 0xb4, 0x9d, 0x6e, 0xb5, 0x1a, 0xb6, 0x6e, 0x28, 0x1f, 0x4a, 0xb5, 0x9d, 0x38, 0x52, 0xb2, - 0x9d, 0x38, 0x80, 0xad, 0xf2, 0xb2, 0xff, 0xa9, 0xf2, 0x64, 0x74, 0x95, 0x97, 0x71, 0x6c, 0x95, - 0x8f, 0xf8, 0xaa, 0x4e, 0x26, 0x7c, 0x35, 0x95, 0xa7, 0xa2, 0x0a, 0x10, 0x43, 0x33, 0x05, 0x88, - 0x7b, 0x77, 0xbe, 0xd9, 0xd9, 0xbb, 0x51, 0x19, 0x47, 0x6e, 0x8f, 0xf8, 0xdc, 0x3a, 0xd1, 0xcd, - 0xf4, 0x68, 0x9d, 0x3d, 0x24, 0x2b, 0x29, 0xce, 0x8a, 0xca, 0xd5, 0xa8, 0x82, 0x25, 0x08, 0x98, - 0x82, 0x25, 0x5d, 0x1c, 0x2b, 0x29, 0xde, 0x86, 0xca, 0x87, 0x3b, 0xb2, 0x0a, 0xbe, 0x39, 0xc5, - 0x47, 0xf1, 0xba, 0xec, 0x2e, 0xa8, 0x3c, 0x1d, 0x5d, 0xec, 0x42, 0x0c, 0x5b, 0xec, 0x24, 0xb7, - 0xc2, 0xeb, 0xb2, 0xa3, 0x9c, 0x72, 0x2d, 0x59, 0x2a, 0x5c, 0x22, 0x25, 0x87, 0x3a, 0x2d, 0xdd, - 0xbf, 0x4c, 0x79, 0x26, 0xaa, 0x75, 0x69, 0x34, 0x4c, 0xeb, 0x52, 0x7d, 0xd3, 0xa6, 0x93, 0x6e, - 0x62, 0xca, 0xf5, 0xf8, 0x59, 0x42, 0x14, 0xcf, 0x2c, 0x9f, 0x84, 0x6b, 0xd9, 0xab, 0xf1, 0xe0, - 0x32, 0xca, 0xb3, 0xb1, 0xcb, 0x8c, 0x08, 0x96, 0xd9, 0xb7, 0xb1, 0x60, 0x34, 0xaf, 0xc6, 0xe3, - 0xb1, 0x28, 0xcf, 0xa5, 0x73, 0x08, 0x74, 0x25, 0x1e, 0xbf, 0xe5, 0xd5, 0x78, 0x08, 0x13, 0xe5, - 0xf9, 0x74, 0x0e, 0x81, 0x74, 0xe3, 0x21, 0x4f, 0x9e, 0x96, 0x82, 0xaa, 0x2a, 0x1f, 0x89, 0x9a, - 0x8e, 0x01, 0x82, 0x99, 0x8e, 0x61, 0xe8, 0xd5, 0xa7, 0xa5, 0x60, 0xa4, 0xca, 0x0b, 0x89, 0x22, - 0x41, 0x63, 0xa5, 0x90, 0xa5, 0x4f, 0x4b, 0x41, 0x3c, 0x95, 0x17, 0x13, 0x45, 0x82, 0xd6, 0x49, - 0xa1, 0x3e, 0x8d, 0x6e, 0xef, 0x70, 0x94, 0x8f, 0x46, 0x8f, 0x38, 0x3a, 0x53, 0xce, 0xf4, 0x68, - 0xdd, 0xde, 0xf3, 0xbc, 0xd9, 0xd9, 0xe9, 0x4e, 0x79, 0x29, 0x3a, 0x84, 0x3b, 0xd1, 0xb1, 0x21, - 0xdc, 0xd1, 0x71, 0xef, 0xe5, 0xd8, 0x9b, 0x5c, 0xe5, 0xe5, 0xe8, 0x14, 0x17, 0x41, 0xb2, 0x29, - 0x2e, 0xfe, 0x82, 0x37, 0xf2, 0xd8, 0x54, 0xf9, 0x58, 0x74, 0x8a, 0x93, 0x71, 0x6c, 0x8a, 0x8b, - 0x3c, 0x4c, 0x9d, 0x4c, 0xbc, 0x81, 0x54, 0x5e, 0x89, 0x4e, 0x71, 0x31, 0x34, 0x9b, 0xe2, 0xe2, - 0xaf, 0x26, 0x5f, 0x8e, 0x3d, 0x05, 0x54, 0x5e, 0x4d, 0x6f, 0x3f, 0x22, 0xe5, 0xf6, 0xf3, 0x87, - 0x83, 0x5a, 0xfa, 0x9b, 0x36, 0xa5, 0x14, 0x1d, 0xbf, 0x69, 0x34, 0x6c, 0xfc, 0xa6, 0xbe, 0x87, - 0x5b, 0x48, 0x4d, 0xaa, 0xaf, 0x4c, 0x74, 0xd9, 0x38, 0x84, 0xa6, 0x48, 0x5a, 0x3a, 0x7e, 0x79, - 0x8f, 0xcc, 0x37, 0x42, 0x93, 0x1d, 0xf6, 0xc8, 0xfe, 0x36, 0x28, 0x46, 0xcf, 0x66, 0xd7, 0x84, - 0x0f, 0x98, 0x52, 0x8e, 0xce, 0xae, 0x09, 0x02, 0x36, 0xbb, 0x26, 0x3d, 0xc7, 0xa6, 0x61, 0x54, - 0x68, 0x11, 0x77, 0x6d, 0x33, 0xad, 0x55, 0x65, 0x2a, 0xf6, 0xa4, 0x24, 0x86, 0x67, 0xb3, 0x53, - 0x1c, 0x86, 0xeb, 0x35, 0x87, 0x4d, 0x36, 0xcc, 0xd6, 0xb2, 0xad, 0x3b, 0x46, 0x95, 0x5a, 0x86, - 0x32, 0x1d, 0x5b, 0xaf, 0x53, 0x68, 0x70, 0xbd, 0x4e, 0x81, 0x63, 0x40, 0x95, 0x18, 0x5c, 0xa3, - 0x75, 0x6a, 0xde, 0xa5, 0xca, 0x0d, 0x64, 0x5b, 0xec, 0xc4, 0x56, 0x90, 0xcd, 0xf4, 0x68, 0x9d, - 0x38, 0x30, 0x5b, 0x7d, 0x6e, 0xb3, 0xfa, 0xfa, 0x6c, 0xf0, 0x8c, 0x72, 0xd1, 0xa1, 0x2d, 0xdd, - 0xa1, 0xca, 0x4c, 0xd4, 0x56, 0x4f, 0x25, 0x62, 0xb6, 0x7a, 0x2a, 0x22, 0xc9, 0xd6, 0x1f, 0x0b, - 0x95, 0x6e, 0x6c, 0xc3, 0x11, 0x91, 0x5e, 0x9a, 0xcd, 0x4e, 0x51, 0x04, 0x13, 0xd0, 0xac, 0x6d, - 0xad, 0xe2, 0x49, 0xc5, 0x6b, 0xd1, 0xd9, 0xa9, 0x33, 0x25, 0x9b, 0x9d, 0x3a, 0x63, 0x99, 0xaa, - 0x47, 0xb1, 0x7c, 0x0c, 0xde, 0x8c, 0xaa, 0x7a, 0x0a, 0x09, 0x53, 0xf5, 0x14, 0x70, 0x92, 0xa1, - 0x46, 0x5d, 0xea, 0x29, 0xb3, 0xdd, 0x18, 0x22, 0x49, 0x92, 0x21, 0x82, 0x93, 0x0c, 0xa7, 0xa9, - 0x57, 0x5f, 0x53, 0xe6, 0xba, 0x31, 0x44, 0x92, 0x24, 0x43, 0x04, 0xb3, 0xcd, 0x66, 0x14, 0x3c, - 0xd1, 0x6e, 0xac, 0xfb, 0x7d, 0x36, 0x1f, 0xdd, 0x6c, 0x76, 0x24, 0x64, 0x9b, 0xcd, 0x8e, 0x48, - 0xf2, 0xb9, 0x5d, 0xfb, 0x28, 0x2a, 0x0b, 0x58, 0xe1, 0x78, 0x68, 0x17, 0xec, 0xa6, 0xd4, 0x4c, - 0x8f, 0xb6, 0x5b, 0x1f, 0xc8, 0x0f, 0x05, 0xae, 0x44, 0xca, 0x22, 0x56, 0x75, 0x2a, 0x38, 0xab, - 0xe0, 0xe0, 0x99, 0x1e, 0x2d, 0x70, 0x36, 0x7a, 0x1e, 0x06, 0xf1, 0xa3, 0x2a, 0x96, 0xe9, 0x95, - 0x27, 0x94, 0xd7, 0xa3, 0x5b, 0x26, 0x09, 0xc5, 0xb6, 0x4c, 0xd2, 0x4f, 0x36, 0x89, 0xe3, 0x4f, - 0x3e, 0xc5, 0x94, 0x27, 0x14, 0x2d, 0x3a, 0x89, 0x47, 0x90, 0x6c, 0x12, 0x8f, 0x00, 0x82, 0x7a, - 0xcb, 0x8e, 0xdd, 0x2a, 0x4f, 0x28, 0xd5, 0x94, 0x7a, 0x39, 0x2a, 0xa8, 0x97, 0xff, 0x0c, 0xea, - 0xad, 0xae, 0xb5, 0xbd, 0x32, 0xfb, 0xc6, 0xa5, 0x94, 0x7a, 0x7d, 0x64, 0x50, 0xaf, 0x0f, 0x60, - 0x53, 0x21, 0x02, 0x16, 0x1d, 0x9b, 0x4d, 0xda, 0x37, 0xcd, 0x46, 0x43, 0xb9, 0x15, 0x9d, 0x0a, - 0xe3, 0x78, 0x36, 0x15, 0xc6, 0x61, 0xcc, 0xf4, 0xe4, 0xad, 0xa2, 0xcb, 0xed, 0x55, 0xe5, 0x76, - 0xd4, 0xf4, 0x0c, 0x31, 0xcc, 0xf4, 0x0c, 0x7f, 0xe1, 0xee, 0x82, 0xfd, 0xd2, 0xe8, 0x8a, 0x43, - 0xdd, 0x35, 0xe5, 0x4e, 0x6c, 0x77, 0x21, 0xe1, 0x70, 0x77, 0x21, 0xfd, 0x26, 0xab, 0xf0, 0x50, - 0x64, 0xa1, 0xf1, 0xef, 0x9e, 0xaa, 0x54, 0x77, 0xea, 0x6b, 0xca, 0xc7, 0x91, 0xd5, 0x63, 0xa9, - 0x4b, 0x55, 0x94, 0x74, 0xa6, 0x47, 0xeb, 0xc6, 0x09, 0xb7, 0xe5, 0xaf, 0xcf, 0xf2, 0xc8, 0x67, - 0xda, 0xe2, 0xa4, 0xbf, 0x09, 0x7d, 0x23, 0xb6, 0x2d, 0x4f, 0x92, 0xe0, 0xb6, 0x3c, 0x09, 0x26, - 0x2d, 0xb8, 0x18, 0xdb, 0xaa, 0xcd, 0xe9, 0x0d, 0xb6, 0x2f, 0xa1, 0xc6, 0xa2, 0x5e, 0x5f, 0xa7, - 0x9e, 0xf2, 0x09, 0xe4, 0x7d, 0xa9, 0xc3, 0x86, 0x2f, 0x46, 0x3d, 0xd3, 0xa3, 0xed, 0xc0, 0x8f, - 0xa8, 0x3c, 0x6d, 0xbb, 0xf2, 0xc9, 0xe8, 0xf9, 0x26, 0x83, 0xcd, 0xf4, 0x68, 0x3c, 0xa5, 0xfb, - 0x9b, 0xa0, 0xdc, 0x6a, 0xad, 0x3a, 0xba, 0x41, 0xb9, 0xa1, 0x85, 0xb6, 0x9b, 0x30, 0x40, 0x3f, - 0x15, 0xb5, 0xd2, 0x3a, 0xd1, 0x31, 0x2b, 0xad, 0x13, 0x8e, 0x29, 0x6a, 0x24, 0xc8, 0xb7, 0xf2, - 0xe9, 0xa8, 0xa2, 0x46, 0x90, 0x4c, 0x51, 0xa3, 0x21, 0xc1, 0x3f, 0x0e, 0x67, 0x83, 0xfd, 0xbc, - 0x58, 0x7f, 0x79, 0xa7, 0x29, 0x6f, 0x22, 0x9f, 0x8b, 0x89, 0xcb, 0x80, 0x08, 0xd5, 0x4c, 0x8f, - 0xd6, 0xa1, 0x3c, 0x5b, 0x71, 0x13, 0xf9, 0x2b, 0x84, 0x79, 0xf1, 0x5d, 0xd1, 0x15, 0xb7, 0x03, - 0x19, 0x5b, 0x71, 0x3b, 0xa0, 0x52, 0x99, 0x0b, 0xa1, 0xea, 0x3b, 0x30, 0x0f, 0x64, 0xda, 0x89, - 0x43, 0x2a, 0x73, 0x61, 0xa9, 0x2d, 0xef, 0xc0, 0x3c, 0xb0, 0xd6, 0x3a, 0x71, 0x20, 0x97, 0xa1, - 0x50, 0xad, 0xce, 0x69, 0x6d, 0x4b, 0xa9, 0xc7, 0x7c, 0xc0, 0x10, 0x3a, 0xd3, 0xa3, 0x09, 0x3c, - 0x33, 0x83, 0xa6, 0x1a, 0xba, 0xeb, 0x99, 0x75, 0x17, 0x47, 0x8c, 0x3f, 0x42, 0x8c, 0xa8, 0x19, - 0x94, 0x46, 0xc3, 0xcc, 0xa0, 0x34, 0x38, 0xb3, 0x17, 0x27, 0x75, 0xd7, 0xd5, 0x2d, 0xc3, 0xd1, - 0x27, 0x70, 0x99, 0xa0, 0x31, 0x4f, 0xf9, 0x08, 0x96, 0xd9, 0x8b, 0x51, 0x08, 0x1e, 0xbe, 0xfb, - 0x10, 0xdf, 0xcc, 0x59, 0x89, 0x1d, 0xbe, 0xc7, 0xf0, 0x78, 0xf8, 0x1e, 0x83, 0xa1, 0xdd, 0xe9, - 0xc3, 0x34, 0xba, 0x6a, 0x32, 0x11, 0x29, 0xab, 0x31, 0xbb, 0x33, 0x4e, 0x80, 0x76, 0x67, 0x1c, - 0x18, 0x69, 0x92, 0xbf, 0xdc, 0xae, 0x75, 0x68, 0x52, 0xb8, 0xca, 0x26, 0xca, 0xb0, 0xf5, 0x3b, - 0x1c, 0x1c, 0xe5, 0x4d, 0x4b, 0x6f, 0xda, 0xe5, 0x09, 0x5f, 0xea, 0x66, 0x74, 0xfd, 0xee, 0x48, - 0xc8, 0xd6, 0xef, 0x8e, 0x48, 0x36, 0xbb, 0xfa, 0x1b, 0xad, 0x35, 0xdd, 0xa1, 0x46, 0xd9, 0x74, - 0xf0, 0x64, 0x71, 0x93, 0x6f, 0x0d, 0xdf, 0x8a, 0xce, 0xae, 0x5d, 0x48, 0xd9, 0xec, 0xda, 0x05, - 0xcd, 0x8c, 0xbc, 0x74, 0xb4, 0x46, 0x75, 0x43, 0x59, 0x8f, 0x1a, 0x79, 0x9d, 0x29, 0x99, 0x91, - 0xd7, 0x19, 0xdb, 0xf9, 0x73, 0xee, 0x38, 0xa6, 0x47, 0x95, 0xc6, 0x6e, 0x3e, 0x07, 0x49, 0x3b, - 0x7f, 0x0e, 0xa2, 0xd9, 0x86, 0x30, 0xde, 0x21, 0xcd, 0xe8, 0x86, 0x30, 0xd9, 0x0d, 0xf1, 0x12, - 0xcc, 0x62, 0x11, 0x0f, 0x26, 0x14, 0x2b, 0x6a, 0xb1, 0x08, 0x30, 0xb3, 0x58, 0xc2, 0x27, 0x15, - 0x11, 0x07, 0x7d, 0xc5, 0x8e, 0xae, 0xa1, 0x32, 0x8e, 0xad, 0xa1, 0x11, 0x67, 0xfe, 0xe7, 0x23, - 0xde, 0xb3, 0x4a, 0x2b, 0x6a, 0x75, 0x48, 0x28, 0x66, 0x75, 0xc8, 0x7e, 0xb6, 0x93, 0x70, 0x0a, - 0x6f, 0xc1, 0xb5, 0x76, 0x70, 0x8f, 0xf3, 0x99, 0xe8, 0x67, 0xc6, 0xd0, 0xec, 0x33, 0x63, 0xa0, - 0x08, 0x13, 0x31, 0x6d, 0x39, 0x1d, 0x98, 0x84, 0xe7, 0x83, 0x31, 0x10, 0x99, 0x05, 0x52, 0x2d, - 0xcd, 0xcd, 0x56, 0x8c, 0x45, 0xf9, 0x8a, 0xcc, 0x8d, 0x9e, 0xc0, 0x26, 0x29, 0x66, 0x7a, 0xb4, - 0x94, 0x72, 0xe4, 0x2d, 0xb8, 0x20, 0xa0, 0xe2, 0x35, 0x1c, 0x26, 0x97, 0x35, 0x82, 0x05, 0xc1, - 0x8b, 0x7a, 0x67, 0x74, 0xa3, 0x9d, 0xe9, 0xd1, 0xba, 0xf2, 0xea, 0x5c, 0x97, 0x58, 0x1f, 0xda, - 0xbb, 0xa9, 0x2b, 0x58, 0x24, 0xba, 0xf2, 0xea, 0x5c, 0x97, 0x90, 0xfb, 0xdd, 0xdd, 0xd4, 0x15, - 0x74, 0x42, 0x57, 0x5e, 0xc4, 0x85, 0x62, 0x37, 0x7c, 0xa9, 0xd1, 0x50, 0x36, 0xb0, 0xba, 0x0f, - 0xee, 0xa6, 0xba, 0x12, 0x1a, 0x9c, 0x3b, 0x71, 0x64, 0xb3, 0xf4, 0x42, 0x8b, 0x5a, 0xd5, 0xc8, - 0x02, 0x74, 0x2f, 0x3a, 0x4b, 0x27, 0x08, 0xd8, 0x2c, 0x9d, 0x00, 0xb2, 0x01, 0x25, 0x3b, 0x61, - 0x2b, 0x9b, 0xd1, 0x01, 0x25, 0xe3, 0xd8, 0x80, 0x8a, 0x38, 0x6c, 0x2f, 0xc0, 0xe9, 0x85, 0x75, - 0x4f, 0xf7, 0x2d, 0x48, 0x57, 0x74, 0xe5, 0xdb, 0xb1, 0x4b, 0xa6, 0x24, 0x09, 0x5e, 0x32, 0x25, - 0xc1, 0x6c, 0x8c, 0x30, 0x70, 0x75, 0xd3, 0xaa, 0x4f, 0xeb, 0x66, 0xa3, 0xed, 0x50, 0xe5, 0x3f, - 0x8b, 0x8e, 0x91, 0x18, 0x9a, 0x8d, 0x91, 0x18, 0x88, 0x2d, 0xd0, 0x0c, 0x54, 0x72, 0x5d, 0x73, - 0xd5, 0x12, 0xfb, 0xca, 0x76, 0xc3, 0x53, 0xfe, 0xf3, 0xe8, 0x02, 0x9d, 0x46, 0xc3, 0x16, 0xe8, - 0x34, 0x38, 0x9e, 0x3a, 0xa5, 0x24, 0x5e, 0x56, 0xfe, 0x8b, 0xd8, 0xa9, 0x53, 0x0a, 0x0d, 0x9e, - 0x3a, 0xa5, 0x25, 0x6d, 0x9e, 0x86, 0x51, 0x6e, 0x93, 0xcd, 0x9a, 0xc1, 0x5d, 0xf5, 0x7f, 0x19, - 0x5d, 0x1f, 0xe3, 0x78, 0xb6, 0x3e, 0xc6, 0x61, 0x51, 0x3e, 0xa2, 0x0b, 0xfe, 0xab, 0x4e, 0x7c, - 0x02, 0xf9, 0x27, 0xca, 0x90, 0x1b, 0x32, 0x1f, 0x31, 0x52, 0xbe, 0x3b, 0xd3, 0x89, 0x51, 0x30, - 0x3c, 0x12, 0x85, 0xa2, 0x8c, 0x34, 0x7a, 0xd7, 0xa4, 0x1b, 0xca, 0x67, 0x3b, 0x32, 0xe2, 0x04, - 0x51, 0x46, 0x1c, 0x46, 0xde, 0x80, 0xb3, 0x21, 0x6c, 0x8e, 0x36, 0x97, 0x83, 0x99, 0xe9, 0x7b, - 0x32, 0x51, 0x33, 0x38, 0x9d, 0x8c, 0x99, 0xc1, 0xe9, 0x98, 0x34, 0xd6, 0x42, 0x74, 0xff, 0xf5, - 0x0e, 0xac, 0x03, 0x09, 0x76, 0x60, 0x90, 0xc6, 0x5a, 0x48, 0xf3, 0x7b, 0x77, 0x60, 0x1d, 0xc8, - 0xb4, 0x03, 0x03, 0xf2, 0xf9, 0x0c, 0x5c, 0x4a, 0x47, 0x95, 0x1a, 0x8d, 0x69, 0xdb, 0x09, 0x71, - 0xca, 0xf7, 0x65, 0xa2, 0x07, 0x0d, 0xbb, 0x2b, 0x36, 0xd3, 0xa3, 0xed, 0xb2, 0x02, 0xf2, 0x31, - 0x18, 0x2e, 0xb5, 0x0d, 0xd3, 0xc3, 0x8b, 0x37, 0x66, 0x38, 0x7f, 0x7f, 0x26, 0xb6, 0xc5, 0x91, - 0xb1, 0xb8, 0xc5, 0x91, 0x01, 0xe4, 0x35, 0x18, 0xab, 0xd2, 0x7a, 0xdb, 0x31, 0xbd, 0x4d, 0x0d, - 0x93, 0x6a, 0x33, 0x1e, 0x3f, 0x90, 0x89, 0x4e, 0x62, 0x09, 0x0a, 0x36, 0x89, 0x25, 0x80, 0xe4, - 0x76, 0x87, 0xd4, 0xcb, 0xca, 0xe7, 0x32, 0x5d, 0xaf, 0xe5, 0x83, 0xbe, 0xec, 0x90, 0xb9, 0x79, - 0x31, 0x35, 0x95, 0xad, 0xf2, 0xf9, 0x4c, 0x97, 0x6b, 0x74, 0x69, 0x86, 0x4b, 0xc9, 0x82, 0xbb, - 0x98, 0x9a, 0xac, 0x54, 0xf9, 0xc1, 0x4c, 0x97, 0x6b, 0xef, 0x90, 0x63, 0x5a, 0x9e, 0xd3, 0x67, - 0xb9, 0xa7, 0x88, 0x60, 0xf4, 0xdf, 0x64, 0x92, 0xae, 0x22, 0x41, 0x79, 0x89, 0x90, 0x15, 0xbb, - 0xe5, 0x06, 0x4a, 0xff, 0x85, 0x4c, 0xd2, 0x37, 0x2f, 0x2c, 0x16, 0xfe, 0x22, 0x14, 0xce, 0x4f, - 0xdd, 0xf3, 0xa8, 0x63, 0xe9, 0x0d, 0xec, 0xce, 0xaa, 0x67, 0x3b, 0xfa, 0x2a, 0x9d, 0xb2, 0xf4, - 0xe5, 0x06, 0x55, 0xbe, 0x98, 0x89, 0x5a, 0xb0, 0x9d, 0x49, 0x99, 0x05, 0xdb, 0x19, 0x4b, 0xd6, - 0xe0, 0xa1, 0x34, 0x6c, 0xd9, 0x74, 0xb1, 0x9e, 0x2f, 0x65, 0xa2, 0x26, 0x6c, 0x17, 0x5a, 0x66, - 0xc2, 0x76, 0x41, 0x93, 0x6b, 0x30, 0x30, 0x61, 0xfb, 0xd3, 0xef, 0x7f, 0x1b, 0x73, 0x86, 0x0c, - 0x30, 0x33, 0x3d, 0x5a, 0x48, 0x26, 0xca, 0x88, 0x41, 0xfd, 0xe5, 0x64, 0x99, 0xf0, 0xf2, 0x29, - 0xf8, 0x21, 0xca, 0x08, 0x71, 0xff, 0x77, 0xc9, 0x32, 0xe1, 0x1d, 0x57, 0xf0, 0x83, 0xcd, 0x24, - 0xbc, 0xc6, 0xb9, 0xe9, 0x12, 0xb3, 0xdb, 0x26, 0xd7, 0xf4, 0x46, 0x83, 0x5a, 0xab, 0x54, 0xf9, - 0x4a, 0x6c, 0x26, 0x49, 0x27, 0x63, 0x33, 0x49, 0x3a, 0x86, 0x7c, 0x0a, 0xce, 0xdd, 0xd6, 0x1b, - 0xa6, 0x11, 0xe2, 0xfc, 0xfc, 0x97, 0xca, 0x0f, 0x65, 0xa2, 0xbb, 0xe9, 0x0e, 0x74, 0x6c, 0x37, - 0xdd, 0x01, 0x45, 0xe6, 0x80, 0xe0, 0x32, 0x1a, 0xcc, 0x16, 0x6c, 0x7d, 0x56, 0xfe, 0xfb, 0x4c, - 0xd4, 0x4e, 0x4d, 0x92, 0x30, 0x3b, 0x35, 0x09, 0x25, 0xb5, 0xce, 0x21, 0xce, 0x95, 0x1f, 0xce, - 0x44, 0x4f, 0x6b, 0x3a, 0x11, 0xce, 0xf4, 0x68, 0x9d, 0xe3, 0xa4, 0xdf, 0x80, 0xd1, 0xea, 0x62, - 0x65, 0x7a, 0x7a, 0xaa, 0x7a, 0xbb, 0x52, 0x46, 0xf7, 0x5d, 0x43, 0xf9, 0x91, 0xd8, 0x8a, 0x15, - 0x27, 0x60, 0x2b, 0x56, 0x1c, 0x46, 0xaa, 0x70, 0x86, 0x09, 0x62, 0xd1, 0xa1, 0x2b, 0xd4, 0xa1, - 0x56, 0xdd, 0x1f, 0x96, 0x3f, 0x96, 0x89, 0x1a, 0x0a, 0x69, 0x44, 0xcc, 0x50, 0x48, 0x83, 0x93, - 0x75, 0xb8, 0x10, 0x3f, 0xcc, 0x91, 0xdf, 0x43, 0x29, 0x3f, 0x9e, 0x89, 0xd9, 0xb3, 0x5d, 0x88, - 0xd1, 0x9e, 0xed, 0x82, 0x27, 0x16, 0x3c, 0x2c, 0x4e, 0x46, 0x84, 0xcf, 0x64, 0xbc, 0xb6, 0x9f, - 0xe0, 0xb5, 0x3d, 0x1e, 0xfa, 0xf4, 0x75, 0xa1, 0x9e, 0xe9, 0xd1, 0xba, 0xb3, 0x63, 0xaa, 0x92, - 0x8c, 0xc5, 0xad, 0xfc, 0x64, 0x26, 0xdd, 0xa9, 0x24, 0xe2, 0x69, 0x9c, 0x16, 0xc4, 0xfb, 0x8d, - 0x4e, 0x91, 0xa4, 0x95, 0x9f, 0x8a, 0x0d, 0x99, 0x74, 0x32, 0x36, 0x64, 0x3a, 0x84, 0xa2, 0x7e, - 0x0d, 0xc6, 0xb8, 0x5e, 0x2e, 0xea, 0x38, 0x92, 0xac, 0x55, 0x6a, 0x28, 0xff, 0x43, 0x6c, 0xc1, - 0x4a, 0x50, 0xa0, 0x77, 0x4e, 0x1c, 0xc8, 0x66, 0xdf, 0x6a, 0x4b, 0xb7, 0x2c, 0x3c, 0x29, 0x55, - 0xfe, 0xc7, 0xd8, 0xec, 0x1b, 0xa2, 0xd0, 0xf7, 0x36, 0xf8, 0x85, 0x39, 0x7d, 0xd2, 0x9e, 0x0b, - 0x2a, 0x5f, 0x8d, 0xad, 0x73, 0xa9, 0x54, 0x6c, 0x9d, 0x4b, 0x7f, 0x6d, 0x78, 0xbb, 0xc3, 0x53, - 0x3b, 0xe5, 0xa7, 0xbb, 0xf3, 0x0d, 0xd7, 0xcf, 0xf4, 0x97, 0x7a, 0xb7, 0x3b, 0x3c, 0x53, 0x53, - 0x7e, 0xa6, 0x3b, 0xdf, 0xd0, 0x5d, 0x2e, 0xfd, 0x95, 0x5b, 0xad, 0xf3, 0x13, 0x2f, 0xe5, 0x67, - 0xe3, 0x13, 0x42, 0x07, 0x42, 0x9c, 0x10, 0x3a, 0xbd, 0x13, 0x7b, 0x2d, 0xe5, 0xa1, 0x95, 0xf2, - 0x73, 0xb1, 0xbe, 0x4e, 0x50, 0xb0, 0xbe, 0x4e, 0xbe, 0xcf, 0x7a, 0x2d, 0xe5, 0x3d, 0x91, 0xf2, - 0x3f, 0x77, 0xe6, 0x15, 0x08, 0x35, 0xe5, 0x19, 0xd2, 0x6b, 0x29, 0xcf, 0x66, 0x94, 0xff, 0xa5, - 0x33, 0xaf, 0xd0, 0xeb, 0x26, 0xf9, 0xda, 0xe6, 0x0d, 0x38, 0xcb, 0xe7, 0xaf, 0x69, 0x6a, 0xd0, - 0xc8, 0x87, 0xfe, 0x7c, 0x6c, 0xa8, 0xa4, 0x93, 0xe1, 0x21, 0x73, 0x2a, 0x26, 0x8d, 0xb5, 0x68, - 0xeb, 0x2f, 0xec, 0xc0, 0x3a, 0x34, 0x81, 0xd3, 0x31, 0x13, 0x7d, 0xd0, 0x8b, 0xbb, 0x4f, 0xf5, - 0xab, 0x19, 0x18, 0xaa, 0x7a, 0x0e, 0xd5, 0x9b, 0x22, 0x72, 0xc2, 0x79, 0xe8, 0xe7, 0x6e, 0x5c, - 0xfe, 0x4b, 0x0a, 0x2d, 0xf8, 0x4d, 0x2e, 0xc1, 0xc8, 0xac, 0xee, 0x7a, 0x58, 0xb2, 0x62, 0x19, - 0xf4, 0x1e, 0x3e, 0x61, 0xc8, 0x69, 0x31, 0x28, 0x99, 0xe5, 0x74, 0xbc, 0x1c, 0x86, 0xac, 0xc9, - 0xed, 0x18, 0x30, 0xa0, 0xff, 0x9d, 0xad, 0x62, 0x0f, 0xc6, 0x07, 0x88, 0x95, 0x55, 0xbf, 0x99, - 0x81, 0x84, 0x83, 0xd9, 0xfe, 0x5f, 0x38, 0x2d, 0xc0, 0xa9, 0x58, 0x98, 0x24, 0xf1, 0x0e, 0x63, - 0x97, 0x51, 0x94, 0xe2, 0xa5, 0xc9, 0x07, 0x03, 0xff, 0xff, 0x5b, 0xda, 0xac, 0x08, 0x06, 0xd1, - 0xb7, 0xbd, 0x55, 0xcc, 0xb5, 0x9d, 0x86, 0x26, 0xa1, 0xc4, 0x63, 0xe5, 0xff, 0x63, 0x34, 0x8c, - 0x01, 0x43, 0x2e, 0x89, 0xe7, 0x56, 0x99, 0x30, 0x84, 0x44, 0x2c, 0x1d, 0x1c, 0x7f, 0x5e, 0xf5, - 0x31, 0x18, 0xaa, 0x34, 0x5b, 0xd4, 0x71, 0x6d, 0x4b, 0xf7, 0x6c, 0x3f, 0xed, 0x34, 0x86, 0x17, - 0x30, 0x25, 0xb8, 0xfc, 0xe4, 0x5d, 0xa6, 0x27, 0x57, 0xfc, 0xdc, 0x01, 0x39, 0x8c, 0xbe, 0x83, - 0x21, 0x24, 0xe3, 0x29, 0xc6, 0x38, 0x05, 0x23, 0xbd, 0xe5, 0xea, 0xf8, 0x52, 0x24, 0x20, 0x6d, - 0x33, 0x80, 0x4c, 0x8a, 0x14, 0xe4, 0x49, 0x28, 0xe0, 0xc9, 0x9a, 0x8b, 0x39, 0x41, 0x44, 0x60, - 0x8b, 0x06, 0x42, 0xe4, 0x30, 0x02, 0x9c, 0x86, 0xdc, 0x84, 0xd1, 0xf0, 0xda, 0x00, 0x13, 0xa5, - 0xfb, 0x51, 0x80, 0x31, 0x35, 0xdb, 0x7a, 0x80, 0xe3, 0x19, 0xd6, 0x65, 0x16, 0x89, 0x82, 0x64, - 0x06, 0x4e, 0x85, 0x30, 0x26, 0x22, 0x3f, 0xfa, 0x38, 0xa6, 0x26, 0x94, 0x78, 0x31, 0x71, 0xca, - 0xac, 0xe2, 0xc5, 0x48, 0x05, 0xfa, 0xfc, 0xa8, 0x16, 0xfd, 0x3b, 0x2a, 0xe9, 0x69, 0x11, 0xd5, - 0xa2, 0x4f, 0x8e, 0x67, 0xe1, 0x97, 0x27, 0xd3, 0x30, 0xa2, 0xd9, 0x6d, 0x8f, 0x2e, 0xd9, 0x62, - 0xb1, 0x16, 0xe1, 0x69, 0xb1, 0x4d, 0x0e, 0xc3, 0xd4, 0x3c, 0xdb, 0xcf, 0x6c, 0x27, 0x67, 0x58, - 0x8b, 0x96, 0x22, 0xf3, 0x30, 0x96, 0xb8, 0x60, 0x91, 0xf3, 0xcd, 0x49, 0x9f, 0x97, 0x64, 0x96, - 0x2c, 0x4a, 0xbe, 0x3f, 0x03, 0x85, 0x25, 0x47, 0x37, 0x3d, 0x57, 0x3c, 0x32, 0x79, 0x60, 0x7c, - 0xc3, 0xd1, 0x5b, 0x4c, 0x3f, 0xc6, 0x31, 0xbc, 0xd2, 0x6d, 0xbd, 0xd1, 0xa6, 0xee, 0xc4, 0x1d, - 0xf6, 0x75, 0xff, 0x70, 0xab, 0xf8, 0xd1, 0x55, 0xdc, 0xc6, 0x8d, 0xd7, 0xed, 0xe6, 0xd5, 0x55, - 0x47, 0xbf, 0x6b, 0x7a, 0x38, 0x75, 0xe8, 0x8d, 0xab, 0x1e, 0x6d, 0xe0, 0x6e, 0xf1, 0xaa, 0xde, - 0x32, 0xaf, 0x62, 0x18, 0xbf, 0xab, 0x01, 0x27, 0x5e, 0x03, 0x53, 0x01, 0x0f, 0xff, 0x92, 0x55, - 0x80, 0xe3, 0xc8, 0x3c, 0xdb, 0x64, 0xe1, 0xa7, 0x96, 0x5a, 0x2d, 0xf1, 0x62, 0x45, 0xda, 0x63, - 0xf9, 0x18, 0xae, 0xd8, 0x81, 0xc0, 0xf4, 0x96, 0x9c, 0x6e, 0x5f, 0xe2, 0xc0, 0xb4, 0x60, 0x49, - 0xb4, 0xc8, 0x17, 0xd3, 0x70, 0x28, 0x71, 0xbf, 0xb1, 0x29, 0x42, 0x8a, 0x17, 0x23, 0xcb, 0x70, - 0x4a, 0xf0, 0x0d, 0xe2, 0xc5, 0x8e, 0x44, 0x67, 0x85, 0x18, 0x9a, 0x2b, 0x6d, 0xd0, 0x46, 0x43, - 0x80, 0xe5, 0x3a, 0x62, 0x25, 0xc8, 0x44, 0x98, 0x2a, 0x09, 0x73, 0xfb, 0x2b, 0xa7, 0x50, 0x63, - 0x2f, 0x6c, 0x6f, 0x15, 0x15, 0xbf, 0x3c, 0x06, 0x78, 0x49, 0x4d, 0xfc, 0x87, 0x45, 0x64, 0x1e, - 0x5c, 0xeb, 0x47, 0x53, 0x78, 0xc4, 0x75, 0x3e, 0x5a, 0x84, 0x4c, 0xc2, 0x70, 0xe0, 0x30, 0x7b, - 0xeb, 0x56, 0xa5, 0x8c, 0x4f, 0x62, 0x44, 0x12, 0xfb, 0x58, 0x28, 0x5a, 0x99, 0x49, 0xa4, 0x8c, - 0xf4, 0x76, 0x8e, 0xbf, 0x91, 0x89, 0xbd, 0x9d, 0x6b, 0xa5, 0xbc, 0x9d, 0x5b, 0x24, 0x2f, 0xc3, - 0x60, 0xe9, 0x4e, 0x55, 0xbc, 0x09, 0x74, 0x95, 0xd3, 0x61, 0x0c, 0x70, 0xcc, 0xfd, 0x28, 0xde, - 0x0f, 0xca, 0x4d, 0x97, 0xe9, 0xc9, 0x14, 0x8c, 0x44, 0xee, 0xdc, 0x5d, 0xe5, 0x0c, 0x72, 0xe0, - 0xe9, 0xf7, 0x11, 0x53, 0x73, 0x04, 0x2a, 0x92, 0x8d, 0x34, 0x52, 0x88, 0x69, 0x0d, 0xdb, 0xb6, - 0x36, 0x1a, 0xf6, 0x86, 0x46, 0xf1, 0xf9, 0x21, 0x3e, 0xb0, 0xe9, 0xe7, 0x5a, 0x63, 0x08, 0x54, - 0xcd, 0xe1, 0xb8, 0x48, 0xfa, 0xd1, 0x68, 0x31, 0xf2, 0x16, 0x10, 0x8c, 0xc0, 0x4c, 0x0d, 0xff, - 0x08, 0xb6, 0x52, 0x76, 0x95, 0xb3, 0x18, 0x66, 0x8e, 0xc4, 0xdf, 0xbf, 0x56, 0xca, 0x13, 0x97, - 0xc4, 0xf4, 0x71, 0x51, 0xe7, 0xa5, 0x6a, 0x8e, 0xc0, 0xd5, 0x4c, 0x43, 0x6e, 0x71, 0x0a, 0x57, - 0xb2, 0x01, 0xe7, 0x16, 0x1d, 0x7a, 0xd7, 0xb4, 0xdb, 0xae, 0xbf, 0x7c, 0xf8, 0xf3, 0xd6, 0xb9, - 0x1d, 0xe7, 0xad, 0x47, 0x45, 0xc5, 0x0f, 0xb4, 0x1c, 0x7a, 0xb7, 0xe6, 0x07, 0x17, 0x8b, 0x44, - 0xe5, 0xe9, 0xc4, 0x9d, 0x89, 0x0b, 0x9f, 0x5e, 0x0a, 0xb8, 0x49, 0x5d, 0x45, 0x09, 0xa7, 0x5a, - 0xfe, 0x92, 0xd4, 0x0c, 0x70, 0xb2, 0xb8, 0x62, 0xc5, 0x88, 0x06, 0xe4, 0xc6, 0xa4, 0x7f, 0x1c, - 0x5f, 0xaa, 0xf3, 0x54, 0x44, 0xca, 0x83, 0xc8, 0x4c, 0x65, 0x62, 0x59, 0xad, 0x07, 0x81, 0x06, - 0x6b, 0xba, 0xc0, 0xcb, 0x62, 0x49, 0x96, 0x26, 0xb3, 0x30, 0xba, 0xe8, 0xe0, 0xce, 0xe2, 0x26, - 0xdd, 0x5c, 0xb4, 0x1b, 0x66, 0x7d, 0x13, 0xdf, 0xf9, 0x88, 0xa9, 0xb2, 0xc5, 0x71, 0xb5, 0x75, - 0xba, 0x59, 0x6b, 0x21, 0x56, 0x5e, 0x56, 0xe2, 0x25, 0xe5, 0xc0, 0x5f, 0x0f, 0xed, 0x2e, 0xf0, - 0x17, 0x85, 0x51, 0x71, 0x98, 0x7f, 0xcf, 0xa3, 0x16, 0x5b, 0xea, 0x5d, 0xf1, 0xa6, 0x47, 0x89, - 0x1d, 0xfe, 0x07, 0x78, 0x91, 0x8a, 0x94, 0x8f, 0x32, 0x1a, 0x80, 0xe5, 0x86, 0xc5, 0x8b, 0xa8, - 0x5f, 0xca, 0xc9, 0x53, 0x27, 0xb9, 0x00, 0x79, 0x29, 0xee, 0x34, 0xc6, 0x0b, 0xc2, 0x18, 0x7d, - 0x79, 0x11, 0x8c, 0x6c, 0x40, 0x98, 0x1d, 0xc1, 0xc3, 0x56, 0x4c, 0xca, 0xe1, 0x07, 0x03, 0x34, - 0x0d, 0x2d, 0x24, 0xc0, 0x84, 0x08, 0x61, 0xc6, 0xf6, 0x9c, 0x94, 0x10, 0x21, 0xcc, 0xd8, 0x1e, - 0xc9, 0xd7, 0x7e, 0x0d, 0x06, 0xfd, 0xcd, 0x68, 0x18, 0x2f, 0x0b, 0x03, 0xfa, 0xf9, 0x49, 0x5b, - 0x79, 0xbc, 0x40, 0x89, 0x88, 0xbc, 0x88, 0x69, 0x8b, 0xfd, 0x47, 0xc3, 0xbd, 0xa1, 0xf9, 0x22, - 0x0f, 0xfc, 0x58, 0xde, 0x62, 0xff, 0xed, 0xf0, 0x04, 0x0c, 0xcb, 0x9a, 0xe4, 0xa7, 0x80, 0xc1, - 0x39, 0x2f, 0xa2, 0x7e, 0x72, 0xdf, 0x46, 0x8b, 0x90, 0x05, 0x18, 0x4b, 0x28, 0x8f, 0x88, 0xae, - 0x85, 0xc9, 0xe6, 0x52, 0x34, 0x4f, 0x5e, 0x53, 0x13, 0x65, 0xd5, 0xef, 0xc9, 0x26, 0x56, 0x0c, - 0x26, 0x18, 0x41, 0x25, 0x75, 0x0e, 0x0a, 0xc6, 0x67, 0xcd, 0x05, 0x23, 0x11, 0x91, 0xcb, 0xd0, - 0x1f, 0xcb, 0x5c, 0x8c, 0xcf, 0xc8, 0x83, 0xb4, 0xc5, 0x01, 0x96, 0x5c, 0x93, 0x92, 0x12, 0x49, - 0x51, 0xe9, 0xfc, 0xa4, 0x44, 0xf2, 0x84, 0x1b, 0xa4, 0x27, 0xba, 0x16, 0x8b, 0x7f, 0xee, 0x27, - 0x98, 0x4d, 0xae, 0x56, 0x61, 0x76, 0x87, 0xc0, 0x56, 0xec, 0xdd, 0xc9, 0x56, 0x54, 0x7f, 0x3b, - 0x93, 0xd4, 0x7e, 0x72, 0x3d, 0x19, 0x9a, 0x8a, 0xe7, 0x96, 0xf5, 0x81, 0x72, 0xad, 0x41, 0x90, - 0xaa, 0x48, 0x90, 0xa9, 0xec, 0xbe, 0x83, 0x4c, 0xe5, 0xf6, 0x18, 0x64, 0x4a, 0xfd, 0xf7, 0xf9, - 0xae, 0x2e, 0x61, 0x47, 0x12, 0x4c, 0xe1, 0x05, 0xb6, 0xdf, 0x61, 0xb5, 0x97, 0xdc, 0x84, 0xd5, - 0xce, 0x3d, 0x5e, 0x6a, 0x3a, 0x1f, 0x35, 0xae, 0x16, 0xa5, 0x24, 0xaf, 0xc0, 0x90, 0xff, 0x01, - 0x18, 0xbc, 0x4c, 0x0a, 0xba, 0x15, 0xac, 0x35, 0xf1, 0xf4, 0xc0, 0x72, 0x01, 0xf2, 0x2c, 0x0c, - 0xa0, 0xa5, 0xd1, 0xd2, 0xeb, 0x7e, 0x64, 0x3b, 0x1e, 0x0a, 0xcf, 0x07, 0xca, 0x01, 0x03, 0x02, - 0x4a, 0xf2, 0x69, 0x28, 0x44, 0xf2, 0x53, 0x5f, 0xdd, 0x85, 0x0f, 0xdd, 0xb8, 0x1c, 0x60, 0x95, - 0xef, 0x1d, 0xe2, 0xb9, 0xa9, 0x05, 0x53, 0xb2, 0x04, 0xa7, 0x17, 0x1d, 0x6a, 0xa0, 0xb7, 0xe6, - 0xd4, 0xbd, 0x96, 0x23, 0xc2, 0xdf, 0xf2, 0x01, 0x8c, 0x4b, 0x47, 0xcb, 0x47, 0xb3, 0x45, 0x4d, - 0xe0, 0x25, 0x46, 0x69, 0xc5, 0x99, 0x3d, 0xc1, 0x5b, 0x72, 0x93, 0x6e, 0x6e, 0xd8, 0x8e, 0xc1, - 0x23, 0xc4, 0x0a, 0x7b, 0x42, 0x08, 0x7a, 0x5d, 0xa0, 0x64, 0x7b, 0x22, 0x5a, 0xe8, 0xfc, 0x0b, - 0x30, 0xb8, 0xdf, 0x20, 0xa5, 0xbf, 0x9a, 0xed, 0xe0, 0x5c, 0x7d, 0xff, 0x26, 0x97, 0x09, 0x12, - 0x7d, 0xf5, 0x76, 0x48, 0xf4, 0xf5, 0x9d, 0x6c, 0x07, 0xcf, 0xf1, 0xfb, 0x3a, 0x21, 0x4f, 0x20, - 0x8c, 0x68, 0x42, 0x9e, 0x30, 0x17, 0x92, 0x69, 0x68, 0x32, 0x51, 0x2c, 0x75, 0x57, 0x61, 0xc7, - 0xd4, 0x5d, 0x3f, 0x9f, 0xeb, 0xe6, 0x59, 0x7f, 0x22, 0xfb, 0xbd, 0xc8, 0xfe, 0x1a, 0x0c, 0x06, - 0x92, 0xad, 0x94, 0xd1, 0x9e, 0x19, 0x0e, 0x42, 0x22, 0x73, 0x30, 0x96, 0x91, 0x88, 0xc8, 0x15, - 0xde, 0xd6, 0xaa, 0xf9, 0x36, 0x0f, 0x0b, 0x3a, 0x2c, 0x02, 0x3e, 0xea, 0x9e, 0x5e, 0x73, 0xcd, - 0xb7, 0xa9, 0x16, 0xa0, 0xd5, 0xff, 0x27, 0x9b, 0xfa, 0x3c, 0xe1, 0xa4, 0x8f, 0xf6, 0xd0, 0x47, - 0x29, 0x42, 0xe4, 0x0f, 0x2b, 0x4e, 0x84, 0xb8, 0x07, 0x21, 0xfe, 0x45, 0x36, 0xf5, 0x19, 0xca, - 0x89, 0x10, 0xf7, 0x32, 0x5b, 0x3c, 0x09, 0x03, 0x9a, 0xbd, 0xe1, 0x62, 0x9e, 0x5e, 0x31, 0x57, - 0xe0, 0x44, 0xed, 0xd8, 0x1b, 0x2e, 0xcf, 0x61, 0xac, 0x85, 0x04, 0xea, 0x5f, 0x65, 0xbb, 0x3c, - 0xd4, 0x39, 0x11, 0xfc, 0xbb, 0xb9, 0x44, 0xfe, 0x7a, 0x36, 0xf2, 0x10, 0xe8, 0xbe, 0xce, 0x6c, - 0x59, 0xad, 0xaf, 0xd1, 0xa6, 0x1e, 0xcf, 0x6c, 0xe9, 0x22, 0x54, 0x24, 0xc6, 0x0a, 0x49, 0xd4, - 0xaf, 0x65, 0x63, 0x2f, 0xa1, 0x4e, 0x64, 0xb7, 0x6b, 0xd9, 0x05, 0x5a, 0x27, 0x1e, 0x77, 0x9d, - 0x48, 0x6e, 0xb7, 0x92, 0xfb, 0x5c, 0x36, 0xf6, 0x0e, 0xee, 0xfe, 0x4d, 0x72, 0xf7, 0xb5, 0x6c, - 0xf2, 0x4d, 0xdf, 0xfd, 0xab, 0x49, 0x4f, 0xc2, 0x80, 0x90, 0x43, 0xb0, 0x54, 0xf0, 0x79, 0x9f, - 0x03, 0xf1, 0x00, 0x35, 0x20, 0x50, 0xbf, 0x2f, 0x0b, 0xd1, 0xf7, 0x89, 0xf7, 0xa9, 0x0e, 0xfd, - 0x7a, 0x36, 0xfa, 0x32, 0xf3, 0xfe, 0xd5, 0x9f, 0x71, 0x80, 0x6a, 0x7b, 0xb9, 0x2e, 0x02, 0xfb, - 0xf5, 0x4a, 0x27, 0xf0, 0x01, 0x54, 0x93, 0x28, 0xd4, 0xff, 0x90, 0x4d, 0x7d, 0x2e, 0x7a, 0xff, - 0x0a, 0xf0, 0x19, 0x3c, 0x15, 0xaf, 0x5b, 0xe1, 0x44, 0x8e, 0x87, 0x90, 0x6c, 0xfc, 0x25, 0xf2, - 0x71, 0xf8, 0x84, 0xe4, 0x23, 0x29, 0xe6, 0x1a, 0x46, 0x3b, 0x0d, 0xcd, 0x35, 0xf9, 0x86, 0x41, - 0x32, 0xdc, 0xfe, 0x4e, 0x76, 0xa7, 0xd7, 0xb5, 0xf7, 0xf3, 0xaa, 0xda, 0xb7, 0xa8, 0x6f, 0x62, - 0x14, 0x28, 0xd6, 0x13, 0x43, 0x3c, 0x5b, 0x44, 0x8b, 0x83, 0xe4, 0x1b, 0x31, 0x41, 0xa5, 0xfe, - 0x79, 0x6f, 0xfa, 0xd3, 0xce, 0xfb, 0x57, 0x84, 0x17, 0x20, 0xbf, 0xa8, 0x7b, 0x6b, 0x42, 0x93, - 0xf1, 0xb6, 0xae, 0xa5, 0x7b, 0x6b, 0x1a, 0x42, 0xc9, 0x15, 0xe8, 0xd7, 0xf4, 0x0d, 0x7e, 0xe6, - 0x59, 0x08, 0x33, 0x79, 0x38, 0xfa, 0x46, 0x8d, 0x9f, 0x7b, 0x06, 0x68, 0xa2, 0x06, 0x99, 0x64, - 0xf8, 0xc9, 0x37, 0xa6, 0x61, 0xe0, 0x99, 0x64, 0x82, 0xfc, 0x31, 0x17, 0x20, 0x3f, 0x61, 0x1b, - 0x9b, 0xe8, 0xcc, 0x32, 0xc4, 0x2b, 0x5b, 0xb6, 0x8d, 0x4d, 0x0d, 0xa1, 0xe4, 0xf3, 0x19, 0xe8, - 0x9b, 0xa1, 0xba, 0xc1, 0x46, 0xc8, 0x40, 0x37, 0x5f, 0x90, 0x8f, 0x1f, 0x8e, 0x2f, 0xc8, 0xd8, - 0x1a, 0xaf, 0x4c, 0x56, 0x14, 0x51, 0x3f, 0xb9, 0x01, 0xfd, 0x93, 0xba, 0x47, 0x57, 0x6d, 0x67, - 0x13, 0xbd, 0x5b, 0x46, 0x42, 0x47, 0xc6, 0x88, 0xfe, 0xf8, 0x44, 0xfc, 0x66, 0xac, 0x2e, 0x7e, - 0x69, 0x41, 0x61, 0x26, 0x16, 0x91, 0x61, 0x72, 0x30, 0x14, 0x0b, 0x4f, 0x25, 0x19, 0x24, 0x92, - 0x0c, 0x8e, 0x95, 0x87, 0xd2, 0x8f, 0x95, 0xd1, 0x7a, 0x44, 0x0f, 0x38, 0xcc, 0xdf, 0x32, 0x8c, - 0x8b, 0x3e, 0xb7, 0x1e, 0x11, 0x8a, 0xe9, 0x5b, 0x34, 0x89, 0x44, 0xfd, 0x56, 0x2f, 0xa4, 0x3e, - 0x04, 0x3b, 0x51, 0xf2, 0x13, 0x25, 0x0f, 0x95, 0xbc, 0x9c, 0x50, 0xf2, 0xf3, 0xc9, 0xa7, 0x85, - 0xef, 0x51, 0x0d, 0xff, 0xd1, 0x7c, 0xe2, 0x61, 0xf2, 0xfd, 0xbd, 0xbb, 0x0c, 0xa5, 0xd7, 0xbb, - 0xa3, 0xf4, 0x82, 0x01, 0x51, 0xd8, 0x71, 0x40, 0xf4, 0xed, 0x76, 0x40, 0xf4, 0x77, 0x1c, 0x10, - 0xa1, 0x82, 0x0c, 0x74, 0x54, 0x90, 0x8a, 0x18, 0x34, 0xd0, 0x3d, 0x37, 0xd8, 0x85, 0xed, 0xad, - 0xe2, 0x08, 0x1b, 0x4d, 0xa9, 0x59, 0xc1, 0x90, 0x85, 0xfa, 0xcd, 0x7c, 0x97, 0x68, 0x02, 0x47, - 0xa2, 0x23, 0xcf, 0x40, 0xae, 0xd4, 0x6a, 0x09, 0xfd, 0x38, 0x2d, 0x05, 0x32, 0xe8, 0x50, 0x8a, - 0x51, 0x93, 0x17, 0x21, 0x57, 0xba, 0x53, 0x8d, 0xc7, 0x44, 0x2f, 0xdd, 0xa9, 0x8a, 0x2f, 0xe9, - 0x58, 0xf6, 0x4e, 0x95, 0xbc, 0x14, 0x06, 0x27, 0x5b, 0x6b, 0x5b, 0xeb, 0x62, 0xa3, 0x28, 0x9c, - 0x60, 0x7d, 0x4f, 0x9b, 0x3a, 0x43, 0xb1, 0xed, 0x62, 0x8c, 0x36, 0xa6, 0x4d, 0x85, 0xdd, 0x6b, - 0x53, 0xdf, 0x8e, 0xda, 0xd4, 0xbf, 0x5b, 0x6d, 0x1a, 0xd8, 0x85, 0x36, 0xc1, 0x8e, 0xda, 0x34, - 0x78, 0x70, 0x6d, 0x6a, 0xc1, 0xf9, 0x64, 0x04, 0x98, 0x40, 0x23, 0x34, 0x20, 0x49, 0xac, 0x70, - 0x2c, 0xc1, 0xab, 0xff, 0x36, 0xc7, 0xd6, 0x78, 0x26, 0xd8, 0x78, 0x1e, 0x55, 0x2d, 0xa5, 0xb4, - 0xfa, 0xab, 0xd9, 0xce, 0x81, 0x6b, 0x8e, 0xe7, 0x14, 0xf7, 0x5d, 0xa9, 0x52, 0xca, 0x47, 0x1f, - 0x12, 0x76, 0x96, 0x72, 0x8c, 0x6d, 0x9a, 0xcc, 0xbe, 0x91, 0xe9, 0x14, 0x4d, 0xe7, 0x40, 0x12, - 0x7b, 0x3c, 0xe9, 0xac, 0x86, 0xde, 0xf3, 0x6e, 0xd4, 0x4b, 0x2d, 0x9e, 0x58, 0x34, 0xb7, 0xcf, - 0xc4, 0xa2, 0xbf, 0x9d, 0x81, 0xd3, 0x37, 0xdb, 0xcb, 0x54, 0x38, 0xa7, 0x05, 0xcd, 0x78, 0x0b, - 0x80, 0x81, 0x85, 0x13, 0x4b, 0x06, 0x9d, 0x58, 0x3e, 0x24, 0x47, 0xc2, 0x89, 0x15, 0x18, 0x0f, - 0xa9, 0xb9, 0x03, 0xcb, 0xc3, 0xbe, 0x8b, 0xe5, 0x7a, 0x7b, 0x99, 0xd6, 0x12, 0x9e, 0x2c, 0x12, - 0xf7, 0xf3, 0x2f, 0x73, 0xe7, 0xf5, 0xfd, 0x3a, 0x8d, 0xfc, 0x72, 0xb6, 0x63, 0xf0, 0xa1, 0x63, - 0x9b, 0xfb, 0xe5, 0x93, 0xa9, 0xbd, 0x12, 0xcf, 0x01, 0x93, 0x42, 0x12, 0xe3, 0x98, 0xc6, 0x25, - 0x5d, 0x60, 0xc7, 0x3c, 0x23, 0xd1, 0xbb, 0x2a, 0xb0, 0x3f, 0xcc, 0x74, 0x0c, 0x12, 0x75, 0x5c, - 0x05, 0xa6, 0xfe, 0xb3, 0x9c, 0x1f, 0x9b, 0xea, 0x40, 0x9f, 0xf0, 0x24, 0x0c, 0x88, 0x04, 0x1c, - 0x51, 0xdf, 0x5a, 0x71, 0x94, 0x87, 0x47, 0xc3, 0x01, 0x01, 0x5b, 0xe6, 0xfd, 0xd8, 0x39, 0x41, - 0x2a, 0x5a, 0x5c, 0xe6, 0x4d, 0x01, 0x65, 0xf4, 0x12, 0x09, 0x5b, 0xc8, 0xa7, 0xee, 0x99, 0x1e, - 0x5a, 0x05, 0xac, 0x2f, 0x73, 0x7c, 0x21, 0xa7, 0xf7, 0x4c, 0x8f, 0xdb, 0x04, 0x01, 0x9a, 0x2d, - 0xd2, 0xd5, 0x30, 0xdf, 0xa2, 0x58, 0xa4, 0x5d, 0x91, 0x76, 0x52, 0x3c, 0xe6, 0x7a, 0x12, 0x06, - 0x84, 0xc3, 0xaa, 0x70, 0x33, 0x11, 0xad, 0x15, 0x2e, 0xae, 0xd8, 0xda, 0x80, 0x80, 0x71, 0xd4, - 0xe8, 0x6a, 0xe8, 0x58, 0x87, 0x1c, 0x1d, 0x84, 0x68, 0x02, 0x43, 0xae, 0xc1, 0x48, 0xd5, 0xd3, - 0x2d, 0x43, 0x77, 0x8c, 0x85, 0xb6, 0xd7, 0x6a, 0x7b, 0xb2, 0x51, 0xea, 0x7a, 0x86, 0xdd, 0xf6, - 0xb4, 0x18, 0x05, 0xf9, 0x30, 0x0c, 0xfb, 0x90, 0x29, 0xc7, 0xb1, 0x1d, 0xd9, 0xf2, 0x70, 0x3d, - 0x83, 0x3a, 0x8e, 0x16, 0x25, 0x20, 0x1f, 0x81, 0xe1, 0x8a, 0x75, 0xd7, 0xae, 0xf3, 0x47, 0x7b, - 0xda, 0xac, 0xb0, 0x43, 0xf0, 0x81, 0x94, 0x19, 0x20, 0x6a, 0x6d, 0xa7, 0xa1, 0x45, 0x09, 0xd5, - 0xed, 0x6c, 0x32, 0x84, 0xd7, 0xfd, 0xbb, 0x69, 0xb9, 0x12, 0x75, 0xa6, 0x43, 0x0f, 0x52, 0x34, - 0x08, 0x65, 0x5f, 0x5e, 0x6e, 0x17, 0x5e, 0x83, 0xfe, 0x9b, 0x74, 0x93, 0xfb, 0x7d, 0x16, 0x42, - 0x57, 0xe1, 0x75, 0x01, 0x93, 0x4f, 0x5c, 0x7d, 0x3a, 0xf5, 0xeb, 0xd9, 0x64, 0x70, 0xb2, 0xfb, - 0x57, 0xd8, 0x1f, 0x86, 0x3e, 0x14, 0x65, 0xc5, 0x3f, 0xf2, 0x47, 0x01, 0xa2, 0xb8, 0xa3, 0x1e, - 0xc8, 0x3e, 0x99, 0xfa, 0xd3, 0x85, 0x78, 0xc4, 0xba, 0xfb, 0x57, 0x7a, 0x1f, 0x85, 0xc1, 0x49, - 0xdb, 0x72, 0x4d, 0xd7, 0xa3, 0x56, 0xdd, 0x57, 0xd8, 0x07, 0x99, 0x41, 0x55, 0x0f, 0xc1, 0xf2, - 0xcb, 0x20, 0x89, 0x7a, 0x3f, 0xca, 0x4b, 0x9e, 0x83, 0x01, 0x14, 0x39, 0xfa, 0x49, 0x4b, 0x89, - 0xb6, 0x97, 0x19, 0x30, 0xee, 0x24, 0x1d, 0x92, 0x92, 0x5b, 0xd0, 0x3f, 0xb9, 0x66, 0x36, 0x0c, - 0x87, 0x5a, 0xe8, 0x2f, 0x2c, 0xc5, 0xcd, 0x8b, 0xf6, 0xe5, 0x38, 0xfe, 0x8b, 0xb4, 0xbc, 0x39, - 0x75, 0x51, 0x2c, 0xf2, 0x36, 0x4a, 0xc0, 0xce, 0xff, 0x70, 0x16, 0x20, 0x2c, 0x40, 0x1e, 0x81, - 0x6c, 0x90, 0xca, 0x0c, 0xdd, 0x54, 0x22, 0x1a, 0x94, 0xc5, 0xa5, 0x42, 0x8c, 0xed, 0xec, 0x8e, - 0x63, 0xfb, 0x16, 0x14, 0xf8, 0x89, 0x17, 0x7a, 0x92, 0x4b, 0x41, 0xb4, 0x3a, 0x36, 0x78, 0x1c, - 0xe9, 0xf9, 0x66, 0x16, 0x2d, 0xcf, 0x88, 0x57, 0x36, 0x67, 0x76, 0xbe, 0x0e, 0xbd, 0xf8, 0x17, - 0xb9, 0x04, 0x79, 0x94, 0x62, 0x06, 0xf7, 0xb1, 0x38, 0x4b, 0xc7, 0xe4, 0x87, 0x78, 0xd6, 0x4d, - 0x93, 0xb6, 0xe5, 0xb1, 0xaa, 0xb1, 0xd5, 0x43, 0x42, 0x2e, 0x02, 0x16, 0x91, 0x8b, 0x80, 0xa9, - 0xff, 0x7f, 0x36, 0x25, 0x96, 0xe2, 0xfd, 0x3b, 0x4c, 0x5e, 0x00, 0xc0, 0x87, 0xd6, 0x4c, 0x9e, - 0xfe, 0x13, 0x0d, 0x1c, 0x25, 0xc8, 0x08, 0xd5, 0x36, 0xb2, 0xed, 0x08, 0x89, 0xd5, 0xdf, 0xcd, - 0x24, 0x02, 0xf0, 0x1d, 0x48, 0x8e, 0xb2, 0x55, 0x96, 0xdd, 0xa7, 0x19, 0xeb, 0xf7, 0x45, 0x6e, - 0x6f, 0x7d, 0x11, 0xfd, 0x96, 0x43, 0xb0, 0x4c, 0x8f, 0xf2, 0x5b, 0xbe, 0x95, 0x4d, 0x0b, 0x47, - 0x78, 0x3c, 0x55, 0xfc, 0x7a, 0x60, 0x94, 0xe6, 0x77, 0x93, 0x04, 0x5c, 0x98, 0xa9, 0x6f, 0xc2, - 0xa9, 0x58, 0x90, 0x3e, 0x91, 0x5f, 0xf0, 0x52, 0xf7, 0x68, 0x7f, 0x9d, 0x9f, 0xe8, 0x47, 0xc8, - 0xd4, 0xff, 0x98, 0xe9, 0x1e, 0xa2, 0xf1, 0xc8, 0x55, 0x27, 0x45, 0x00, 0xb9, 0xbf, 0x1d, 0x01, - 0x1c, 0xc2, 0x36, 0xf8, 0x78, 0x0b, 0xe0, 0x3d, 0x32, 0x79, 0xbc, 0xdb, 0x02, 0xf8, 0xe9, 0xcc, - 0x8e, 0x11, 0x36, 0x8f, 0x5a, 0x06, 0xea, 0x3f, 0xce, 0xa4, 0x46, 0xc2, 0x3c, 0x50, 0xbb, 0x5e, - 0x82, 0x02, 0x77, 0xab, 0x11, 0xad, 0x92, 0x72, 0x87, 0x30, 0x68, 0x87, 0xf2, 0xa2, 0x0c, 0x99, - 0x85, 0x3e, 0xde, 0x06, 0x23, 0x9e, 0x63, 0x37, 0xa5, 0x9d, 0x46, 0xa7, 0xc9, 0x51, 0xa0, 0xd5, - 0xdf, 0xc9, 0x24, 0x02, 0x73, 0x1e, 0xe1, 0xb7, 0x85, 0x53, 0x75, 0x6e, 0xf7, 0x53, 0xb5, 0xfa, - 0x67, 0xd9, 0xf4, 0xb8, 0xa0, 0x47, 0xf8, 0x21, 0x87, 0x71, 0x9c, 0xb6, 0xbf, 0x75, 0x6b, 0x09, - 0x46, 0xa2, 0xb2, 0x10, 0xcb, 0xd6, 0xc5, 0xf4, 0xe8, 0xa8, 0x1d, 0x5a, 0x11, 0xe3, 0xa1, 0xbe, - 0x93, 0x49, 0x86, 0x34, 0x3d, 0xf2, 0xf9, 0x69, 0x7f, 0xda, 0x12, 0xfd, 0x94, 0xf7, 0xc8, 0x5a, - 0x73, 0x18, 0x9f, 0xf2, 0x1e, 0x59, 0x35, 0xf6, 0xf7, 0x29, 0xbf, 0x98, 0xed, 0x14, 0x11, 0xf6, - 0xc8, 0x3f, 0xe8, 0x13, 0xb2, 0x90, 0x79, 0xcb, 0xc4, 0xa7, 0x3d, 0xd2, 0x29, 0x04, 0x6b, 0x07, - 0x9e, 0x09, 0x3e, 0xfb, 0x1b, 0xe3, 0xa9, 0xc2, 0x7a, 0x8f, 0x28, 0xf2, 0xf1, 0x10, 0xd6, 0x7b, - 0x64, 0xa8, 0xbc, 0xf7, 0x84, 0xf5, 0x9b, 0xd9, 0xdd, 0x86, 0x21, 0x3e, 0x11, 0x5e, 0x42, 0x78, - 0x5f, 0xce, 0x26, 0xc3, 0x63, 0x1f, 0xb9, 0x98, 0xa6, 0xa1, 0x20, 0x02, 0x75, 0x77, 0x14, 0x0e, - 0xc7, 0x77, 0xb2, 0x68, 0xc4, 0x77, 0x5c, 0x07, 0x71, 0x91, 0xb3, 0x3b, 0x91, 0x70, 0x5a, 0xf5, - 0xaf, 0x32, 0xb1, 0x58, 0xd2, 0x47, 0x72, 0x84, 0xb0, 0xaf, 0x25, 0x89, 0xbc, 0xec, 0x1f, 0x66, - 0xe6, 0x63, 0x81, 0x40, 0x83, 0xef, 0x29, 0x53, 0x4f, 0x37, 0x1b, 0xf1, 0xf2, 0x22, 0x26, 0xc0, - 0xd7, 0xb3, 0x30, 0x96, 0x20, 0x25, 0x97, 0x22, 0x51, 0x72, 0xf0, 0x58, 0x32, 0xe6, 0x3c, 0xce, - 0xe3, 0xe5, 0xec, 0xe1, 0x24, 0xf5, 0x12, 0xe4, 0xcb, 0xfa, 0x26, 0xff, 0xb6, 0x5e, 0xce, 0xd2, - 0xd0, 0x37, 0xe5, 0x13, 0x37, 0xc4, 0x93, 0x65, 0x78, 0x80, 0xdf, 0x87, 0x98, 0xb6, 0xb5, 0x64, - 0x36, 0x69, 0xc5, 0x9a, 0x33, 0x1b, 0x0d, 0xd3, 0x15, 0x97, 0x7a, 0x4f, 0x6e, 0x6f, 0x15, 0x2f, - 0x7b, 0xb6, 0xa7, 0x37, 0x6a, 0xd4, 0x27, 0xab, 0x79, 0x66, 0x93, 0xd6, 0x4c, 0xab, 0xd6, 0x44, - 0x4a, 0x89, 0x65, 0x3a, 0x2b, 0x52, 0xe1, 0x31, 0x5f, 0xab, 0x75, 0xdd, 0xb2, 0xa8, 0x51, 0xb1, - 0x26, 0x36, 0x3d, 0xca, 0x2f, 0x03, 0x73, 0xfc, 0x48, 0x90, 0xbf, 0x0d, 0xe7, 0x68, 0xc6, 0x78, - 0x99, 0x11, 0x68, 0x29, 0x85, 0xd4, 0xdf, 0xca, 0xa7, 0x84, 0x11, 0x3f, 0x46, 0xea, 0xe3, 0xf7, - 0x74, 0x7e, 0x87, 0x9e, 0xbe, 0x0a, 0x7d, 0xb7, 0xa9, 0x83, 0xe7, 0x5b, 0xfc, 0x82, 0x01, 0x9d, - 0xd9, 0xef, 0x72, 0x90, 0x7c, 0x43, 0x23, 0xa8, 0x48, 0x03, 0xce, 0x2f, 0xb1, 0x6e, 0x4a, 0xef, - 0xcc, 0xc2, 0x3e, 0x3a, 0xb3, 0x0b, 0x3f, 0xf2, 0x06, 0x9c, 0x43, 0x6c, 0x4a, 0xb7, 0xf6, 0x61, - 0x55, 0x18, 0x39, 0x8a, 0x57, 0x95, 0xde, 0xb9, 0x9d, 0xca, 0x93, 0x4f, 0xc0, 0x50, 0x30, 0x40, - 0x4c, 0xea, 0x8a, 0x9b, 0x8b, 0x2e, 0xe3, 0x8c, 0x87, 0x65, 0x63, 0x60, 0x74, 0x21, 0x8b, 0x86, - 0xf6, 0x8a, 0xf0, 0x52, 0xff, 0x51, 0xa6, 0x5b, 0x38, 0xf3, 0x23, 0x9f, 0x95, 0x5f, 0x86, 0x3e, - 0x83, 0x7f, 0x94, 0xd0, 0xa9, 0xee, 0x01, 0xcf, 0x39, 0xa9, 0xe6, 0x97, 0x51, 0xff, 0x34, 0xd3, - 0x35, 0x8a, 0xfa, 0x71, 0xff, 0xbc, 0x2f, 0xe7, 0x3a, 0x7c, 0x9e, 0x98, 0x44, 0xaf, 0xc0, 0xa8, - 0x19, 0x06, 0xbd, 0xad, 0x85, 0xe1, 0xa7, 0xb4, 0x53, 0x12, 0x1c, 0x47, 0xd7, 0x75, 0x38, 0xeb, - 0x3b, 0x3e, 0x3a, 0xbe, 0x87, 0x98, 0x5b, 0x6b, 0x3b, 0x26, 0x1f, 0x97, 0xda, 0x19, 0x37, 0xe6, - 0x3e, 0xe6, 0xde, 0x72, 0x4c, 0x56, 0x81, 0xee, 0xad, 0x51, 0x4b, 0xaf, 0x6d, 0xd8, 0xce, 0x3a, - 0xc6, 0xfe, 0xe4, 0x83, 0x53, 0x3b, 0xc5, 0xe1, 0x77, 0x7c, 0x30, 0x79, 0x0c, 0x86, 0x57, 0x1b, - 0x6d, 0x1a, 0x44, 0x5b, 0xe4, 0x77, 0x7d, 0xda, 0x10, 0x03, 0x06, 0x37, 0x24, 0x0f, 0x03, 0x20, - 0x91, 0x87, 0x31, 0xee, 0xf1, 0x62, 0x4f, 0x1b, 0x60, 0x90, 0x25, 0xd1, 0x5d, 0xe7, 0xb9, 0x56, - 0x73, 0x21, 0xd5, 0x1a, 0xb6, 0xb5, 0x5a, 0xf3, 0xa8, 0xd3, 0xc4, 0x86, 0xa2, 0x33, 0x83, 0x76, - 0x16, 0x29, 0xf0, 0xea, 0xc4, 0x9d, 0xb5, 0xad, 0xd5, 0x25, 0xea, 0x34, 0x59, 0x53, 0x9f, 0x04, - 0x22, 0x9a, 0xea, 0xe0, 0xa1, 0x07, 0xff, 0x38, 0xf4, 0x66, 0xd0, 0xc4, 0x47, 0xf0, 0xd3, 0x10, - 0xfc, 0xb0, 0x22, 0x0c, 0xf2, 0x90, 0x73, 0x5c, 0x68, 0xe8, 0xc2, 0xa0, 0x01, 0x07, 0xa1, 0xbc, - 0xce, 0x82, 0xf0, 0xae, 0xe0, 0x5e, 0xdd, 0x9a, 0xf8, 0xa5, 0x7e, 0x21, 0x97, 0x16, 0xf8, 0xfd, - 0x40, 0x8a, 0x16, 0x4e, 0xab, 0xd9, 0x3d, 0x4d, 0xab, 0xa7, 0xac, 0x76, 0xb3, 0xa6, 0xb7, 0x5a, - 0xb5, 0x15, 0xb3, 0x81, 0xcf, 0xaa, 0x70, 0xe1, 0xd3, 0x86, 0xad, 0x76, 0xb3, 0xd4, 0x6a, 0x4d, - 0x73, 0x20, 0x79, 0x02, 0xc6, 0x18, 0x1d, 0x76, 0x52, 0x40, 0x99, 0x47, 0x4a, 0xc6, 0x00, 0x63, - 0xb6, 0xfa, 0xb4, 0x0f, 0x42, 0xbf, 0xe0, 0xc9, 0xd7, 0xaa, 0x5e, 0xad, 0x8f, 0x33, 0x73, 0x59, - 0xcf, 0x05, 0x6c, 0xf8, 0xe4, 0xda, 0xab, 0x0d, 0xf8, 0xe5, 0x31, 0x32, 0xb1, 0xd5, 0x6e, 0xf2, - 0x88, 0x58, 0x7d, 0x88, 0x0c, 0x7e, 0x93, 0x4b, 0x30, 0xc2, 0xb8, 0x04, 0x02, 0xe3, 0xc1, 0x5c, - 0x7b, 0xb5, 0x18, 0x94, 0x5c, 0x83, 0x33, 0x11, 0x08, 0xb7, 0x41, 0xf9, 0x33, 0x81, 0x5e, 0x2d, - 0x15, 0xa7, 0xbe, 0x93, 0x4b, 0xc6, 0xb5, 0x3f, 0x92, 0xb5, 0x71, 0x06, 0x40, 0xa4, 0xad, 0x08, - 0x2f, 0x68, 0x02, 0xaf, 0xe5, 0x10, 0xd3, 0x81, 0x87, 0x54, 0x96, 0x5c, 0x81, 0x7e, 0xfe, 0x45, - 0x95, 0xb2, 0x58, 0x33, 0xd1, 0xcd, 0xc8, 0x6d, 0x99, 0x2b, 0x2b, 0xe8, 0x93, 0x14, 0xa0, 0xc9, - 0x25, 0xe8, 0x2b, 0xcf, 0x57, 0xab, 0xa5, 0x79, 0xff, 0xb6, 0x11, 0xdf, 0x28, 0x18, 0x96, 0x5b, - 0x73, 0x75, 0xcb, 0xd5, 0x7c, 0x24, 0x79, 0x0c, 0x0a, 0x95, 0x45, 0x24, 0xe3, 0x2f, 0xef, 0x06, - 0xb7, 0xb7, 0x8a, 0x7d, 0x66, 0x8b, 0x53, 0x09, 0x14, 0xd6, 0x7b, 0xbb, 0x52, 0x96, 0xae, 0xdc, - 0x79, 0xbd, 0x77, 0x4d, 0x03, 0xaf, 0x2e, 0xb5, 0x00, 0x4d, 0x9e, 0x85, 0xa1, 0x2a, 0x75, 0x4c, - 0xbd, 0x31, 0xdf, 0xc6, 0xed, 0x06, 0x77, 0x33, 0x1a, 0xdb, 0xde, 0x2a, 0x0e, 0xbb, 0x08, 0xaf, - 0x59, 0x88, 0xd0, 0x22, 0x64, 0xe4, 0x02, 0xe4, 0x67, 0x4c, 0xcb, 0x77, 0x83, 0x47, 0x3f, 0xe9, - 0x35, 0xd3, 0xf2, 0x34, 0x84, 0xaa, 0xff, 0x3a, 0x9b, 0x9e, 0x59, 0xe0, 0x08, 0xc6, 0xd6, 0x3e, - 0x6f, 0x0b, 0x63, 0x4a, 0x90, 0x3f, 0x80, 0x12, 0xac, 0xc0, 0xa9, 0x92, 0xd1, 0x34, 0xad, 0x12, - 0xfe, 0x74, 0xe7, 0xa6, 0x4b, 0x38, 0x20, 0xa5, 0x67, 0x58, 0x31, 0xb4, 0xf8, 0x1e, 0x1e, 0x6e, - 0x95, 0xa1, 0x6a, 0x3a, 0xc7, 0xd5, 0x9a, 0x2b, 0x7a, 0xad, 0xce, 0x83, 0xf2, 0x6b, 0x71, 0xa6, - 0xea, 0x0f, 0x65, 0x77, 0x48, 0x86, 0x70, 0x3f, 0x4a, 0x5f, 0xfd, 0x4a, 0xb6, 0x7b, 0x3e, 0x8a, - 0xfb, 0x52, 0x28, 0x7f, 0x91, 0x4d, 0xc9, 0x0e, 0x71, 0x20, 0x49, 0x5c, 0x81, 0x7e, 0xce, 0x26, - 0x70, 0xd7, 0xc4, 0x19, 0x87, 0x2b, 0x2b, 0xce, 0x74, 0x3e, 0x9a, 0xcc, 0xc3, 0x99, 0xd2, 0xca, - 0x0a, 0xad, 0x7b, 0x61, 0xe0, 0xdd, 0xf9, 0x30, 0xd8, 0x26, 0x8f, 0x56, 0x2a, 0xf0, 0x61, 0xe0, - 0x5e, 0x0c, 0x2a, 0x91, 0x5a, 0x8e, 0x2c, 0xc1, 0xd9, 0x38, 0xbc, 0xca, 0x4d, 0xbd, 0xbc, 0x14, - 0xc0, 0x34, 0xc1, 0x91, 0xff, 0xa7, 0x75, 0x28, 0x9b, 0xd6, 0x4a, 0x9c, 0x4e, 0x7b, 0xbb, 0xb5, - 0x12, 0xe7, 0xd6, 0xd4, 0x72, 0xea, 0xd7, 0x73, 0x72, 0x12, 0x8d, 0xfb, 0xd7, 0xb1, 0xe6, 0x7a, - 0xc4, 0x9d, 0x76, 0xb7, 0x43, 0xe6, 0x59, 0x11, 0x29, 0xc2, 0x68, 0x3b, 0xbe, 0xe7, 0x59, 0xf0, - 0x52, 0x1d, 0x81, 0xb2, 0x0f, 0x59, 0x40, 0x49, 0x2a, 0x90, 0x2f, 0x39, 0xab, 0xdc, 0x8c, 0xd9, - 0xe9, 0xf1, 0x8c, 0xee, 0xac, 0xba, 0xe9, 0x8f, 0x67, 0x18, 0x0b, 0xf5, 0x27, 0xb2, 0x9d, 0x12, - 0x50, 0x1c, 0x57, 0x87, 0x98, 0x43, 0x9c, 0x4f, 0xd2, 0x84, 0x73, 0xbc, 0xbd, 0x85, 0x0e, 0x4f, - 0x38, 0x4f, 0xcc, 0xf1, 0x80, 0xc2, 0x37, 0x4d, 0xcb, 0x20, 0x0f, 0xc2, 0x03, 0xb7, 0xaa, 0x53, - 0x5a, 0xed, 0x66, 0x65, 0xbe, 0x5c, 0xbb, 0x35, 0x5f, 0x5d, 0x9c, 0x9a, 0xac, 0x4c, 0x57, 0xa6, - 0xca, 0xa3, 0x3d, 0xe4, 0x34, 0x9c, 0x0a, 0x51, 0x33, 0xb7, 0xe6, 0x4a, 0xf3, 0xa3, 0x19, 0x32, - 0x06, 0xc3, 0x21, 0x70, 0x62, 0x61, 0x69, 0x34, 0xfb, 0xc4, 0x07, 0x61, 0x10, 0x77, 0x4c, 0x7c, - 0xe5, 0x27, 0x43, 0xd0, 0xbf, 0x30, 0x51, 0x9d, 0xd2, 0x6e, 0x23, 0x13, 0x80, 0x42, 0x79, 0x6a, - 0x9e, 0x31, 0xcc, 0x3c, 0xf1, 0xef, 0x32, 0x00, 0xd5, 0xe9, 0xa5, 0x45, 0x41, 0x38, 0x08, 0x7d, - 0x95, 0xf9, 0xdb, 0xa5, 0xd9, 0x0a, 0xa3, 0xeb, 0x87, 0xfc, 0xc2, 0xe2, 0x14, 0xab, 0x61, 0x00, - 0x7a, 0x27, 0x67, 0x17, 0xaa, 0x53, 0xa3, 0x59, 0x06, 0xd4, 0xa6, 0x4a, 0xe5, 0xd1, 0x1c, 0x03, - 0xde, 0xd1, 0x2a, 0x4b, 0x53, 0xa3, 0x79, 0xf6, 0xe7, 0x6c, 0x75, 0xa9, 0xb4, 0x34, 0xda, 0xcb, - 0xfe, 0x9c, 0xc6, 0x3f, 0x0b, 0x8c, 0x59, 0x75, 0x6a, 0x09, 0x7f, 0xf4, 0xb1, 0x26, 0x4c, 0xfb, - 0xbf, 0xfa, 0x19, 0x8a, 0xb1, 0x2e, 0x57, 0xb4, 0xd1, 0x01, 0xf6, 0x83, 0xb1, 0x64, 0x3f, 0x80, - 0x35, 0x4e, 0x9b, 0x9a, 0x5b, 0xb8, 0x3d, 0x35, 0x3a, 0xc8, 0x78, 0xcd, 0xdd, 0x64, 0xe0, 0x21, - 0xf6, 0xa7, 0x36, 0xc7, 0xfe, 0x1c, 0x66, 0x9c, 0xb4, 0xa9, 0xd2, 0xec, 0x62, 0x69, 0x69, 0x66, - 0x74, 0x84, 0xb5, 0x07, 0x79, 0x9e, 0xe2, 0x25, 0xe7, 0x4b, 0x73, 0x53, 0xa3, 0xa3, 0x82, 0xa6, - 0x3c, 0x5b, 0x99, 0xbf, 0x39, 0x3a, 0x86, 0x0d, 0x79, 0x63, 0x0e, 0x7f, 0x10, 0x56, 0x00, 0xff, - 0x3a, 0xfd, 0xc4, 0xa7, 0xa0, 0xb0, 0x50, 0x45, 0xfb, 0xf6, 0x1c, 0x9c, 0x5e, 0xa8, 0xd6, 0x96, - 0xde, 0x58, 0x9c, 0x8a, 0xc9, 0x7b, 0x0c, 0x86, 0x7d, 0xc4, 0x6c, 0x65, 0xfe, 0xd6, 0xc7, 0xb9, - 0xb4, 0x7d, 0xd0, 0x5c, 0x69, 0x72, 0xa1, 0x3a, 0x9a, 0x65, 0xbd, 0xe2, 0x83, 0xee, 0x54, 0xe6, - 0xcb, 0x0b, 0x77, 0xaa, 0xa3, 0xb9, 0x27, 0xee, 0xfa, 0x59, 0x48, 0x17, 0x1c, 0x73, 0xd5, 0xb4, - 0xc8, 0xc3, 0xf0, 0x60, 0x79, 0xea, 0x76, 0x65, 0x72, 0xaa, 0xb6, 0xa0, 0x55, 0x6e, 0x54, 0xe6, - 0x63, 0x35, 0x3d, 0x00, 0x63, 0x51, 0x74, 0x69, 0xb1, 0x32, 0x9a, 0x21, 0x67, 0x81, 0x44, 0xc1, - 0xaf, 0x95, 0xe6, 0xa6, 0x47, 0xb3, 0x44, 0x81, 0x33, 0x51, 0x78, 0x65, 0x7e, 0xe9, 0xd6, 0xfc, - 0xd4, 0x68, 0xee, 0x89, 0x9f, 0xcd, 0xc0, 0x03, 0xa9, 0x4f, 0xf6, 0x89, 0x0a, 0x17, 0xa7, 0x66, - 0x4b, 0xd5, 0xa5, 0xca, 0x64, 0x75, 0xaa, 0xa4, 0x4d, 0xce, 0xd4, 0x26, 0x4b, 0x4b, 0x53, 0x37, - 0x16, 0xb4, 0x37, 0x6a, 0x37, 0xa6, 0xe6, 0xa7, 0xb4, 0xd2, 0xec, 0x68, 0x0f, 0x79, 0x0c, 0x8a, - 0x1d, 0x68, 0xaa, 0x53, 0x93, 0xb7, 0xb4, 0xca, 0xd2, 0x1b, 0xa3, 0x19, 0xf2, 0x28, 0x3c, 0xdc, - 0x91, 0x88, 0xfd, 0x1e, 0xcd, 0x92, 0x8b, 0x70, 0xbe, 0x13, 0xc9, 0xeb, 0xb3, 0xa3, 0xb9, 0x27, - 0x7e, 0x2c, 0x03, 0x24, 0xf9, 0xe6, 0x9a, 0x3c, 0x02, 0x17, 0x98, 0x5e, 0xd4, 0x3a, 0x37, 0xf0, - 0x51, 0x78, 0x38, 0x95, 0x42, 0x6a, 0x5e, 0x11, 0x1e, 0xea, 0x40, 0x22, 0x1a, 0x77, 0x01, 0x94, - 0x74, 0x02, 0x6c, 0xda, 0xaf, 0x65, 0xe0, 0x81, 0x54, 0x63, 0x9b, 0x5c, 0x86, 0x0f, 0x94, 0xca, - 0x73, 0xac, 0x6f, 0x26, 0x97, 0x2a, 0x0b, 0xf3, 0xd5, 0xda, 0xdc, 0x74, 0xa9, 0xc6, 0xb4, 0xef, - 0x56, 0x35, 0xd6, 0x9b, 0x97, 0x40, 0xed, 0x42, 0x39, 0x39, 0x53, 0x9a, 0xbf, 0xc1, 0x86, 0x1f, - 0xf9, 0x00, 0x3c, 0xd2, 0x91, 0x6e, 0x6a, 0xbe, 0x34, 0x31, 0x3b, 0x55, 0x1e, 0xcd, 0x92, 0xc7, - 0xe1, 0xd1, 0x8e, 0x54, 0xe5, 0x4a, 0x95, 0x93, 0xe5, 0x26, 0xca, 0xef, 0xfc, 0x93, 0x8b, 0x3d, - 0xef, 0x7c, 0xfb, 0x62, 0xe6, 0x0f, 0xbe, 0x7d, 0x31, 0xf3, 0x67, 0xdf, 0xbe, 0x98, 0xf9, 0xc4, - 0xb5, 0xbd, 0xbc, 0xa5, 0xe7, 0xd3, 0xd6, 0x72, 0x01, 0x17, 0xbe, 0x67, 0xfe, 0x53, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x86, 0x00, 0xc7, 0x54, 0x45, 0x52, 0x01, 0x00, + // 15335 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x74, 0x24, 0xc7, + 0x75, 0x18, 0x8c, 0x79, 0x60, 0x00, 0x5c, 0x3c, 0x16, 0xa8, 0x5d, 0xee, 0x36, 0x97, 0xbb, 0x3b, + 0x64, 0x53, 0x5c, 0xed, 0x52, 0xe4, 0xae, 0xb8, 0x5c, 0x92, 0x22, 0x45, 0x8a, 0x1c, 0x60, 0x80, + 0xc5, 0x70, 0xf1, 0x62, 0x0f, 0x76, 0x57, 0xd4, 0x83, 0xe3, 0xc6, 0x74, 0x01, 0x68, 0x62, 0xa6, + 0x7b, 0xd4, 0xdd, 0xb3, 0x58, 0xf0, 0x7b, 0x59, 0xfe, 0xfc, 0x90, 0xfc, 0x49, 0xfa, 0xf4, 0xc9, + 0x9f, 0xdf, 0xfe, 0xbe, 0x4f, 0xb6, 0x8f, 0xbf, 0xd8, 0x3e, 0x8e, 0x1d, 0xe7, 0xe4, 0xd8, 0x96, + 0x1d, 0x9d, 0xd8, 0x51, 0x72, 0x42, 0x47, 0x76, 0x8e, 0xed, 0x24, 0x3e, 0x3e, 0x89, 0x03, 0x39, + 0x4a, 0x9c, 0x1f, 0x38, 0xc9, 0x39, 0x4e, 0xa2, 0x13, 0x2b, 0x8e, 0xf3, 0x38, 0x75, 0xab, 0xba, + 0xbb, 0xfa, 0x31, 0x83, 0x27, 0x0d, 0x82, 0x8b, 0x3f, 0xbb, 0x98, 0x7b, 0x6f, 0xdd, 0xaa, 0xbe, + 0x75, 0xab, 0xea, 0x56, 0xd5, 0xad, 0x7b, 0xe1, 0xb2, 0x47, 0x1b, 0xb4, 0x65, 0x3b, 0xde, 0xd5, + 0x06, 0x5d, 0xd1, 0xeb, 0x1b, 0x57, 0xbd, 0x8d, 0x16, 0x75, 0xaf, 0xd2, 0xbb, 0xd4, 0xf2, 0xfc, + 0xff, 0xae, 0xb4, 0x1c, 0xdb, 0xb3, 0x49, 0x81, 0xff, 0x3a, 0x7b, 0x6a, 0xc5, 0x5e, 0xb1, 0x11, + 0x74, 0x95, 0xfd, 0xc5, 0xb1, 0x67, 0xcf, 0xad, 0xd8, 0xf6, 0x4a, 0x83, 0x5e, 0xc5, 0x5f, 0x4b, + 0xed, 0xe5, 0xab, 0xae, 0xe7, 0xb4, 0xeb, 0x9e, 0xc0, 0x16, 0xe3, 0x58, 0xcf, 0x6c, 0x52, 0xd7, + 0xd3, 0x9b, 0x2d, 0x41, 0x70, 0x21, 0x4e, 0xb0, 0xee, 0xe8, 0xad, 0x16, 0x75, 0x44, 0xe5, 0x67, + 0x1f, 0x49, 0x6f, 0x27, 0xfe, 0x2b, 0x48, 0x9e, 0x4c, 0x27, 0xf1, 0x19, 0xc5, 0x38, 0xaa, 0x5f, + 0xca, 0x42, 0xff, 0x2c, 0xf5, 0x74, 0x43, 0xf7, 0x74, 0x72, 0x0e, 0x7a, 0x2b, 0x96, 0x41, 0xef, + 0x29, 0x99, 0x87, 0x33, 0x97, 0x72, 0xe3, 0x85, 0xad, 0xcd, 0x62, 0x96, 0x9a, 0x1a, 0x07, 0x92, + 0xf3, 0x90, 0x5f, 0xdc, 0x68, 0x51, 0x25, 0xfb, 0x70, 0xe6, 0xd2, 0xc0, 0xf8, 0xc0, 0xd6, 0x66, + 0xb1, 0x17, 0x65, 0xa1, 0x21, 0x98, 0x3c, 0x02, 0xd9, 0x4a, 0x59, 0xc9, 0x21, 0x72, 0x6c, 0x6b, + 0xb3, 0x38, 0xdc, 0x36, 0x8d, 0x27, 0xec, 0xa6, 0xe9, 0xd1, 0x66, 0xcb, 0xdb, 0xd0, 0xb2, 0x95, + 0x32, 0xb9, 0x08, 0xf9, 0x09, 0xdb, 0xa0, 0x4a, 0x1e, 0x89, 0xc8, 0xd6, 0x66, 0x71, 0xa4, 0x6e, + 0x1b, 0x54, 0xa2, 0x42, 0x3c, 0x79, 0x05, 0xf2, 0x8b, 0x66, 0x93, 0x2a, 0xbd, 0x0f, 0x67, 0x2e, + 0x0d, 0x5e, 0x3b, 0x7b, 0x85, 0x4b, 0xe5, 0x8a, 0x2f, 0x95, 0x2b, 0x8b, 0xbe, 0xd8, 0xc6, 0x47, + 0xdf, 0xde, 0x2c, 0xf6, 0x6c, 0x6d, 0x16, 0xf3, 0x4c, 0x92, 0x5f, 0xfc, 0x46, 0x31, 0xa3, 0x61, + 0x49, 0xf2, 0x22, 0x0c, 0x4e, 0x34, 0xda, 0xae, 0x47, 0x9d, 0x39, 0xbd, 0x49, 0x95, 0x02, 0x56, + 0x78, 0x76, 0x6b, 0xb3, 0x78, 0xba, 0xce, 0xc1, 0x35, 0x4b, 0x6f, 0xca, 0x15, 0xcb, 0xe4, 0xea, + 0xaf, 0x65, 0xe0, 0x44, 0x95, 0xba, 0xae, 0x69, 0x5b, 0x81, 0x6c, 0x1e, 0x83, 0x01, 0x01, 0xaa, + 0x94, 0x51, 0x3e, 0x03, 0xe3, 0x7d, 0x5b, 0x9b, 0xc5, 0x9c, 0x6b, 0x1a, 0x5a, 0x88, 0x21, 0x1f, + 0x84, 0xbe, 0x3b, 0xa6, 0xb7, 0x3a, 0x3b, 0x55, 0x12, 0x72, 0x3a, 0xbd, 0xb5, 0x59, 0x24, 0xeb, + 0xa6, 0xb7, 0x5a, 0x6b, 0x2e, 0xeb, 0x52, 0x85, 0x3e, 0x19, 0x99, 0x81, 0xd1, 0x05, 0xc7, 0xbc, + 0xab, 0x7b, 0xf4, 0x26, 0xdd, 0x58, 0xb0, 0x1b, 0x66, 0x7d, 0x43, 0x48, 0xf1, 0xe1, 0xad, 0xcd, + 0xe2, 0xb9, 0x16, 0xc7, 0xd5, 0xd6, 0xe8, 0x46, 0xad, 0x85, 0x58, 0x89, 0x49, 0xa2, 0xa4, 0xfa, + 0xeb, 0x05, 0x18, 0xba, 0xe5, 0x52, 0x27, 0x68, 0xf7, 0x45, 0xc8, 0xb3, 0xdf, 0xa2, 0xc9, 0x28, + 0xf3, 0xb6, 0x4b, 0x1d, 0x59, 0xe6, 0x0c, 0x4f, 0x2e, 0x43, 0xef, 0x8c, 0xbd, 0x62, 0x5a, 0xa2, + 0xd9, 0x27, 0xb7, 0x36, 0x8b, 0x27, 0x1a, 0x0c, 0x20, 0x51, 0x72, 0x0a, 0xf2, 0x11, 0x18, 0xaa, + 0x34, 0x99, 0x0e, 0xd9, 0x96, 0xee, 0xd9, 0x8e, 0x68, 0x2d, 0x4a, 0xd7, 0x94, 0xe0, 0x52, 0xc1, + 0x08, 0x3d, 0x79, 0x01, 0xa0, 0x74, 0xa7, 0xaa, 0xd9, 0x0d, 0x5a, 0xd2, 0xe6, 0x84, 0x32, 0x60, + 0x69, 0x7d, 0xdd, 0xad, 0x39, 0x76, 0x83, 0xd6, 0x74, 0x47, 0xae, 0x56, 0xa2, 0x26, 0x93, 0x30, + 0x52, 0xaa, 0xd7, 0xa9, 0xeb, 0x6a, 0xf4, 0x53, 0x6d, 0xea, 0x7a, 0xae, 0xd2, 0xfb, 0x70, 0xee, + 0xd2, 0xc0, 0xf8, 0xf9, 0xad, 0xcd, 0xe2, 0x83, 0x3a, 0x62, 0x6a, 0x8e, 0x40, 0x49, 0x2c, 0x62, + 0x85, 0xc8, 0x38, 0x0c, 0x97, 0xde, 0x6a, 0x3b, 0xb4, 0x62, 0x50, 0xcb, 0x33, 0xbd, 0x0d, 0xa1, + 0x21, 0xe7, 0xb6, 0x36, 0x8b, 0x8a, 0xce, 0x10, 0x35, 0x53, 0x60, 0x24, 0x26, 0xd1, 0x22, 0x64, + 0x1e, 0xc6, 0x6e, 0x4c, 0x2c, 0x54, 0xa9, 0x73, 0xd7, 0xac, 0xd3, 0x52, 0xbd, 0x6e, 0xb7, 0x2d, + 0x4f, 0xe9, 0x43, 0x3e, 0x8f, 0x6c, 0x6d, 0x16, 0xcf, 0xaf, 0xd4, 0x5b, 0x35, 0x97, 0x63, 0x6b, + 0x3a, 0x47, 0x4b, 0xcc, 0x92, 0x65, 0xc9, 0xc7, 0x60, 0x78, 0xd1, 0x61, 0x5a, 0x68, 0x94, 0x29, + 0x83, 0x2b, 0xfd, 0xa8, 0xff, 0xa7, 0xaf, 0x88, 0x09, 0x88, 0x43, 0xfd, 0x9e, 0xe5, 0x8d, 0xf5, + 0x78, 0x81, 0x9a, 0x81, 0x38, 0xb9, 0xb1, 0x11, 0x56, 0x84, 0x82, 0xc2, 0x3e, 0xde, 0x74, 0xa8, + 0x91, 0xd0, 0xb6, 0x01, 0x6c, 0xf3, 0xe5, 0xad, 0xcd, 0xe2, 0x63, 0x8e, 0xa0, 0xa9, 0x75, 0x55, + 0xbb, 0x8e, 0xac, 0xc8, 0x24, 0xf4, 0x33, 0x6d, 0xba, 0x69, 0x5a, 0x86, 0x02, 0x0f, 0x67, 0x2e, + 0x8d, 0x5c, 0x1b, 0xf5, 0x5b, 0xef, 0xc3, 0xc7, 0xcf, 0x6c, 0x6d, 0x16, 0x4f, 0x32, 0x1d, 0xac, + 0xad, 0x99, 0x96, 0x3c, 0x45, 0x04, 0x45, 0xd9, 0x28, 0x1a, 0xb7, 0x3d, 0x1c, 0xba, 0x83, 0xe1, + 0x28, 0x5a, 0xb2, 0xbd, 0xf8, 0xb0, 0xf5, 0xc9, 0xc8, 0x04, 0x0c, 0x8f, 0xdb, 0x5e, 0xc5, 0x72, + 0x3d, 0xdd, 0xaa, 0xd3, 0x4a, 0x59, 0x19, 0xc2, 0x72, 0xa8, 0x16, 0xac, 0x9c, 0x29, 0x30, 0xb5, + 0xc8, 0xa4, 0x14, 0x2d, 0xa3, 0xfe, 0x79, 0x1e, 0x46, 0x58, 0x9f, 0x48, 0xc3, 0xa7, 0xc4, 0x66, + 0x02, 0x06, 0x61, 0xb5, 0xb8, 0x2d, 0xbd, 0x4e, 0xc5, 0x48, 0xc2, 0xaf, 0xb0, 0x7c, 0xa0, 0xc4, + 0x33, 0x4e, 0x4f, 0x2e, 0x43, 0x3f, 0x07, 0x55, 0xca, 0x62, 0x70, 0x0d, 0x6f, 0x6d, 0x16, 0x07, + 0x5c, 0x84, 0xd5, 0x4c, 0x43, 0x0b, 0xd0, 0x4c, 0xbb, 0xf9, 0xdf, 0xd3, 0xb6, 0xeb, 0x31, 0xe6, + 0x62, 0x6c, 0xe1, 0x67, 0x88, 0x02, 0xab, 0x02, 0x25, 0x6b, 0x77, 0xb4, 0x10, 0x79, 0x1e, 0x80, + 0x43, 0x4a, 0x86, 0xe1, 0x88, 0x01, 0xf6, 0xe0, 0xd6, 0x66, 0xf1, 0x01, 0xc1, 0x42, 0x37, 0x0c, + 0x79, 0x74, 0x4a, 0xc4, 0xa4, 0x09, 0x43, 0xfc, 0xd7, 0x8c, 0xbe, 0x44, 0x1b, 0x7c, 0x74, 0x0d, + 0x5e, 0xbb, 0xe4, 0x77, 0x62, 0x54, 0x3a, 0x57, 0x64, 0xd2, 0x49, 0xcb, 0x73, 0x36, 0xc6, 0x8b, + 0x62, 0x42, 0x3e, 0x23, 0xaa, 0x6a, 0x20, 0x4e, 0x9e, 0x0a, 0xe4, 0x32, 0x6c, 0x9e, 0x9e, 0xb2, + 0x9d, 0x75, 0xdd, 0x31, 0xa8, 0x31, 0xbe, 0x21, 0xcf, 0xd3, 0xcb, 0x3e, 0xb8, 0xb6, 0x24, 0xab, + 0x9e, 0x4c, 0xce, 0x3a, 0x9d, 0x73, 0xab, 0xb6, 0x97, 0x50, 0xe5, 0xfa, 0x12, 0xd2, 0x72, 0xdb, + 0x4b, 0x71, 0x35, 0x8b, 0x96, 0x61, 0x53, 0x01, 0x07, 0xdc, 0xa6, 0x0e, 0x9b, 0xc4, 0x71, 0xd4, + 0x89, 0xa9, 0x40, 0x30, 0xb9, 0xcb, 0x31, 0x49, 0x1e, 0xa2, 0xc8, 0xd9, 0x97, 0x61, 0x2c, 0x21, + 0x0a, 0x32, 0x0a, 0xb9, 0x35, 0xba, 0xc1, 0xd5, 0x45, 0x63, 0x7f, 0x92, 0x53, 0xd0, 0x7b, 0x57, + 0x6f, 0xb4, 0xc5, 0x12, 0xaa, 0xf1, 0x1f, 0x2f, 0x64, 0x3f, 0x94, 0x61, 0x2b, 0x0e, 0x99, 0xb0, + 0x2d, 0x8b, 0xd6, 0x3d, 0x79, 0xd1, 0x79, 0x16, 0x06, 0x66, 0xec, 0xba, 0xde, 0xc0, 0x7e, 0xe4, + 0x7a, 0xa7, 0x6c, 0x6d, 0x16, 0x4f, 0xb1, 0x0e, 0xbc, 0xd2, 0x60, 0x18, 0xa9, 0x4d, 0x21, 0x29, + 0x53, 0x00, 0x8d, 0x36, 0x6d, 0x8f, 0x62, 0xc1, 0x6c, 0xa8, 0x00, 0x58, 0xd0, 0x41, 0x94, 0xac, + 0x00, 0x21, 0x31, 0xb9, 0x0a, 0xfd, 0x0b, 0x6c, 0x9d, 0xad, 0xdb, 0x0d, 0xa1, 0x7c, 0xb8, 0x14, + 0xe0, 0xda, 0x2b, 0x8f, 0x55, 0x9f, 0x48, 0x9d, 0x86, 0x91, 0x89, 0x86, 0x49, 0x2d, 0x4f, 0x6e, + 0x35, 0x1b, 0xc9, 0xa5, 0x15, 0x6a, 0x79, 0x72, 0xab, 0x71, 0xcc, 0xeb, 0x0c, 0x2a, 0xb7, 0x3a, + 0x20, 0x55, 0xff, 0x51, 0x0e, 0x1e, 0xbc, 0xd9, 0x5e, 0xa2, 0x8e, 0x45, 0x3d, 0xea, 0x8a, 0x05, + 0x39, 0xe0, 0x3a, 0x07, 0x63, 0x09, 0xa4, 0xe0, 0x8e, 0x0b, 0xe5, 0x5a, 0x80, 0xac, 0x89, 0x35, + 0x5e, 0x9e, 0x6d, 0x13, 0x45, 0xc9, 0x34, 0x9c, 0x08, 0x81, 0xac, 0x11, 0xae, 0x92, 0xc5, 0xa5, + 0xe4, 0xc2, 0xd6, 0x66, 0xf1, 0xac, 0xc4, 0x8d, 0x35, 0x5b, 0xd6, 0xe0, 0x78, 0x31, 0x72, 0x13, + 0x46, 0x43, 0xd0, 0x0d, 0xc7, 0x6e, 0xb7, 0x5c, 0x25, 0x87, 0xac, 0x8a, 0x5b, 0x9b, 0xc5, 0x87, + 0x24, 0x56, 0x2b, 0x88, 0x94, 0x17, 0xf0, 0x78, 0x41, 0xf2, 0xdd, 0x19, 0x99, 0x9b, 0x18, 0x85, + 0x79, 0x1c, 0x85, 0xcf, 0xf9, 0xa3, 0xb0, 0xa3, 0x90, 0xae, 0xc4, 0x4b, 0x8a, 0x41, 0x19, 0x6b, + 0x46, 0x62, 0x50, 0x26, 0x6a, 0x3c, 0x3b, 0x01, 0x0f, 0xa4, 0xf2, 0xda, 0x95, 0x56, 0xff, 0x69, + 0x4e, 0xe6, 0xb2, 0x60, 0x1b, 0x41, 0x67, 0xce, 0xcb, 0x9d, 0xb9, 0x60, 0x1b, 0x38, 0xd5, 0x67, + 0xc2, 0xb5, 0x53, 0x6a, 0x6c, 0xcb, 0x36, 0xe2, 0xb3, 0x7e, 0xb2, 0x2c, 0x79, 0x03, 0x4e, 0x27, + 0x80, 0x7c, 0xba, 0xe6, 0xda, 0x7f, 0x71, 0x6b, 0xb3, 0xa8, 0xa6, 0x70, 0x8d, 0xcf, 0xde, 0x1d, + 0xb8, 0x10, 0x1d, 0xce, 0x48, 0x52, 0xb7, 0x2d, 0x4f, 0x37, 0x2d, 0x61, 0x5c, 0xf2, 0x51, 0xf2, + 0xfe, 0xad, 0xcd, 0xe2, 0xa3, 0xb2, 0x0e, 0xfa, 0x34, 0xf1, 0xc6, 0x77, 0xe2, 0x43, 0x0c, 0x50, + 0x52, 0x50, 0x95, 0xa6, 0xbe, 0xe2, 0x5b, 0xcc, 0x97, 0xb6, 0x36, 0x8b, 0xef, 0x4b, 0xad, 0xc3, + 0x64, 0x54, 0xf2, 0x0a, 0xdd, 0x89, 0x13, 0xd1, 0x80, 0x84, 0xb8, 0x39, 0xdb, 0xa0, 0xf8, 0x0d, + 0xbd, 0xc8, 0x5f, 0xdd, 0xda, 0x2c, 0x5e, 0x90, 0xf8, 0x5b, 0xb6, 0x41, 0xe3, 0xcd, 0x4f, 0x29, + 0xad, 0xfe, 0x5a, 0x0e, 0x2e, 0x54, 0x4b, 0xb3, 0x33, 0x15, 0xc3, 0x37, 0x69, 0x16, 0x1c, 0xfb, + 0xae, 0x69, 0x48, 0xa3, 0x77, 0x09, 0xce, 0xc4, 0x50, 0x93, 0x68, 0x45, 0x05, 0xc6, 0x34, 0x7e, + 0x9b, 0x6f, 0x2e, 0xb5, 0x04, 0x4d, 0x8d, 0x9b, 0x5a, 0xd1, 0x45, 0xbb, 0x13, 0x23, 0xd6, 0x47, + 0x31, 0x54, 0x75, 0xd5, 0x76, 0xbc, 0x7a, 0xdb, 0x13, 0x4a, 0x80, 0x7d, 0x94, 0xa8, 0xc3, 0x15, + 0x44, 0x5d, 0xaa, 0xf0, 0xf9, 0x90, 0xcf, 0x66, 0x60, 0xb4, 0xe4, 0x79, 0x8e, 0xb9, 0xd4, 0xf6, + 0xe8, 0xac, 0xde, 0x6a, 0x99, 0xd6, 0x0a, 0x8e, 0xf5, 0xc1, 0x6b, 0x2f, 0x06, 0x6b, 0x64, 0x57, + 0x49, 0x5c, 0x89, 0x17, 0x97, 0x86, 0xa8, 0xee, 0xa3, 0x6a, 0x4d, 0x8e, 0x93, 0x87, 0x68, 0xbc, + 0x1c, 0x1b, 0xa2, 0xa9, 0xbc, 0x76, 0x35, 0x44, 0xbf, 0x94, 0x83, 0x73, 0xf3, 0x6b, 0x9e, 0xae, + 0x51, 0xd7, 0x6e, 0x3b, 0x75, 0xea, 0xde, 0x6a, 0x19, 0xba, 0x47, 0xc3, 0x91, 0x5a, 0x84, 0xde, + 0x92, 0x61, 0x50, 0x03, 0xd9, 0xf5, 0xf2, 0x6d, 0x9f, 0xce, 0x00, 0x1a, 0x87, 0x93, 0xc7, 0xa0, + 0x4f, 0x94, 0x41, 0xee, 0xbd, 0xe3, 0x83, 0x5b, 0x9b, 0xc5, 0xbe, 0x36, 0x07, 0x69, 0x3e, 0x8e, + 0x91, 0x95, 0x69, 0x83, 0x32, 0xb2, 0x5c, 0x48, 0x66, 0x70, 0x90, 0xe6, 0xe3, 0xc8, 0x6b, 0x30, + 0x82, 0x6c, 0x83, 0xf6, 0x88, 0xb9, 0xef, 0x94, 0x2f, 0x5d, 0xb9, 0xb1, 0x7c, 0x69, 0xc2, 0xd6, + 0xd4, 0x1c, 0xbf, 0x80, 0x16, 0x63, 0x40, 0xee, 0xc0, 0xa8, 0x68, 0x44, 0xc8, 0xb4, 0xb7, 0x0b, + 0xd3, 0x07, 0xb6, 0x36, 0x8b, 0x63, 0xa2, 0xfd, 0x12, 0xdb, 0x04, 0x13, 0xc6, 0x58, 0x34, 0x3b, + 0x64, 0x5c, 0xd8, 0x8e, 0xb1, 0xf8, 0x62, 0x99, 0x71, 0x9c, 0x89, 0xfa, 0x3a, 0x0c, 0xc9, 0x05, + 0xc9, 0x69, 0xdc, 0x5a, 0xf3, 0x71, 0x82, 0x9b, 0x72, 0xd3, 0xc0, 0xfd, 0xf4, 0x53, 0x30, 0x58, + 0xa6, 0x6e, 0xdd, 0x31, 0x5b, 0xcc, 0x6a, 0x10, 0x4a, 0x7e, 0x62, 0x6b, 0xb3, 0x38, 0x68, 0x84, + 0x60, 0x4d, 0xa6, 0x51, 0xff, 0x53, 0x06, 0x4e, 0x33, 0xde, 0x25, 0xd7, 0x35, 0x57, 0xac, 0xa6, + 0xbc, 0x6c, 0x3f, 0x01, 0x85, 0x2a, 0xd6, 0x27, 0x6a, 0x3a, 0xb5, 0xb5, 0x59, 0x1c, 0xe5, 0x2d, + 0x90, 0xf4, 0x50, 0xd0, 0x04, 0xfb, 0xca, 0xec, 0x36, 0xfb, 0x4a, 0x66, 0xd2, 0x7a, 0xba, 0xe3, + 0x99, 0xd6, 0x4a, 0xd5, 0xd3, 0xbd, 0xb6, 0x1b, 0x31, 0x69, 0x05, 0xa6, 0xe6, 0x22, 0x2a, 0x62, + 0xd2, 0x46, 0x0a, 0x91, 0x97, 0x61, 0x68, 0xd2, 0x32, 0x42, 0x26, 0x7c, 0x42, 0x7c, 0x88, 0x59, + 0x9a, 0x14, 0xe1, 0x49, 0x16, 0x91, 0x02, 0xea, 0x5f, 0xcf, 0x80, 0xc2, 0x37, 0x81, 0x33, 0xa6, + 0xeb, 0xcd, 0xd2, 0xe6, 0x92, 0x34, 0x3b, 0x4d, 0xf9, 0xbb, 0x4a, 0x86, 0x93, 0xd6, 0x22, 0x34, + 0x05, 0xc4, 0xae, 0xb2, 0x61, 0xba, 0x89, 0xed, 0x47, 0xac, 0x14, 0xa9, 0x40, 0x1f, 0xe7, 0xcc, + 0x6d, 0x89, 0xc1, 0x6b, 0x8a, 0xaf, 0x08, 0xf1, 0xaa, 0xb9, 0x32, 0x34, 0x39, 0xb1, 0xbc, 0xa1, + 0x11, 0xe5, 0xd5, 0xbf, 0x91, 0x85, 0xd1, 0x78, 0x21, 0x72, 0x07, 0xfa, 0x5f, 0xb5, 0x4d, 0x8b, + 0x1a, 0xf3, 0x16, 0xb6, 0xb0, 0xfb, 0xe1, 0x88, 0x6f, 0x8b, 0x9f, 0x7c, 0x13, 0xcb, 0xd4, 0x64, + 0x0b, 0x16, 0xcf, 0x4a, 0x02, 0x66, 0xe4, 0x63, 0x30, 0xc0, 0x6c, 0xc0, 0xbb, 0xc8, 0x39, 0xbb, + 0x2d, 0xe7, 0x87, 0x05, 0xe7, 0x53, 0x0e, 0x2f, 0x94, 0x64, 0x1d, 0xb2, 0x63, 0x7a, 0xa5, 0x51, + 0xdd, 0xb5, 0x2d, 0xd1, 0xf3, 0xa8, 0x57, 0x0e, 0x42, 0x64, 0xbd, 0xe2, 0x34, 0xcc, 0x74, 0xe5, + 0x1f, 0x8b, 0xdd, 0x20, 0xed, 0x5d, 0xb8, 0xac, 0xe2, 0x3d, 0x20, 0x11, 0xab, 0xdf, 0x9b, 0x85, + 0x27, 0x43, 0x91, 0x69, 0xf4, 0xae, 0x49, 0xd7, 0x85, 0x38, 0x57, 0xcd, 0x96, 0xd8, 0xb3, 0x32, + 0x95, 0x77, 0x27, 0x56, 0x75, 0x6b, 0x85, 0x1a, 0xe4, 0x32, 0xf4, 0x6a, 0x76, 0x83, 0xba, 0x4a, + 0x06, 0xcd, 0x35, 0x9c, 0x4e, 0x1c, 0x06, 0x90, 0x0f, 0x3d, 0x90, 0x82, 0xd8, 0x50, 0x58, 0x74, + 0x74, 0xd3, 0xf3, 0x7b, 0xb6, 0x94, 0xec, 0xd9, 0x1d, 0xd4, 0x78, 0x85, 0xf3, 0xe0, 0x73, 0x3e, + 0x0a, 0xc2, 0x43, 0x80, 0x2c, 0x08, 0x4e, 0x72, 0xf6, 0x79, 0x18, 0x94, 0x88, 0x77, 0x35, 0xa9, + 0x7f, 0x25, 0x2f, 0xeb, 0xba, 0xdf, 0x2c, 0xa1, 0xeb, 0x57, 0x99, 0x8e, 0xba, 0x2e, 0xb3, 0x2a, + 0xb8, 0x92, 0x0b, 0x4d, 0x44, 0x50, 0x54, 0x13, 0x11, 0x44, 0x9e, 0x86, 0x7e, 0xce, 0x22, 0xd8, + 0xbf, 0xe2, 0xde, 0xd7, 0x41, 0x58, 0x74, 0x69, 0x0e, 0x08, 0xc9, 0xcf, 0x67, 0xe0, 0x7c, 0x57, + 0x49, 0xa0, 0x32, 0x0c, 0x5e, 0x7b, 0x66, 0x4f, 0x62, 0x1c, 0x7f, 0x72, 0x6b, 0xb3, 0x78, 0xb9, + 0x19, 0x90, 0xd4, 0x1c, 0x89, 0xa6, 0x56, 0xe7, 0x44, 0x52, 0xbb, 0xba, 0x37, 0x85, 0x19, 0x8f, + 0xbc, 0xd2, 0x29, 0x3c, 0x3a, 0xb2, 0xea, 0x1b, 0x7e, 0x23, 0xf3, 0xa1, 0xf1, 0x28, 0xbe, 0x77, + 0xd9, 0x27, 0x49, 0xa9, 0xa6, 0x03, 0x17, 0x52, 0x87, 0x33, 0x1c, 0x53, 0xd6, 0x37, 0xe6, 0x97, + 0x67, 0x6d, 0xcb, 0x5b, 0xf5, 0x2b, 0xe8, 0x95, 0xcf, 0x5e, 0xb0, 0x02, 0x43, 0xdf, 0xa8, 0xd9, + 0xcb, 0xb5, 0x26, 0xa3, 0x4a, 0xa9, 0xa3, 0x13, 0x27, 0x36, 0xd1, 0x8a, 0x31, 0xe7, 0x4f, 0x41, + 0x85, 0xf0, 0x64, 0xcc, 0x1f, 0xa7, 0xc9, 0x09, 0x27, 0x56, 0x48, 0xad, 0xc0, 0xd0, 0x8c, 0x5d, + 0x5f, 0x0b, 0xd4, 0xe5, 0x79, 0x28, 0x2c, 0xea, 0xce, 0x0a, 0xf5, 0x50, 0x16, 0x83, 0xd7, 0xc6, + 0xae, 0xf0, 0xd3, 0x66, 0x46, 0xc4, 0x11, 0xe3, 0x23, 0x62, 0x36, 0x28, 0x78, 0xf8, 0x5b, 0x13, + 0x05, 0xd4, 0x6f, 0xf4, 0xc2, 0x90, 0x38, 0x19, 0xc5, 0xd9, 0x9c, 0xbc, 0x10, 0x9e, 0x35, 0x8b, + 0xe9, 0x2b, 0x38, 0x1d, 0x0a, 0x4e, 0xb5, 0x86, 0x18, 0xb3, 0xdf, 0xdb, 0x2c, 0x66, 0xb6, 0x36, + 0x8b, 0x3d, 0x5a, 0xbf, 0xb4, 0xa9, 0x0c, 0xd7, 0x1b, 0x69, 0x81, 0x95, 0xcf, 0x3a, 0x63, 0x65, + 0xf9, 0xfa, 0xf3, 0x32, 0xf4, 0x89, 0x36, 0x08, 0x8d, 0x3b, 0x13, 0x9e, 0x65, 0x44, 0x4e, 0x78, + 0x63, 0xa5, 0xfd, 0x52, 0xe4, 0x45, 0x28, 0xf0, 0xbd, 0xbd, 0x10, 0xc0, 0xe9, 0xf4, 0xb3, 0x90, + 0x58, 0x71, 0x51, 0x86, 0x4c, 0x03, 0x84, 0xfb, 0xfa, 0xe0, 0x40, 0x5b, 0x70, 0x48, 0xee, 0xf8, + 0x63, 0x5c, 0xa4, 0xb2, 0xe4, 0x59, 0x18, 0x5a, 0xa4, 0x4e, 0xd3, 0xb4, 0xf4, 0x46, 0xd5, 0x7c, + 0xcb, 0x3f, 0xd3, 0xc6, 0x85, 0xd7, 0x35, 0xdf, 0x92, 0x47, 0x6e, 0x84, 0x8e, 0x7c, 0x32, 0x6d, + 0xdf, 0xdc, 0x87, 0x0d, 0x79, 0x64, 0xdb, 0x0d, 0x65, 0xac, 0x3d, 0x29, 0xdb, 0xe8, 0xd7, 0x60, + 0x38, 0xb2, 0x65, 0x12, 0x87, 0x96, 0xe7, 0x93, 0xac, 0xa5, 0xfd, 0x5f, 0x8c, 0x6d, 0x94, 0x03, + 0xd3, 0xe4, 0x8a, 0x65, 0x7a, 0xa6, 0xde, 0x98, 0xb0, 0x9b, 0x4d, 0xdd, 0x32, 0x94, 0x81, 0x50, + 0x93, 0x4d, 0x8e, 0xa9, 0xd5, 0x39, 0x4a, 0xd6, 0xe4, 0x68, 0x21, 0xb6, 0x2d, 0x17, 0x7d, 0xa8, + 0xd1, 0xba, 0xed, 0x30, 0x5b, 0x00, 0xcf, 0x24, 0xc5, 0xb6, 0xdc, 0xe5, 0xb8, 0x9a, 0xe3, 0x23, + 0x65, 0x63, 0x3b, 0x5e, 0xf0, 0xd5, 0x7c, 0xff, 0xe0, 0xe8, 0x50, 0xfc, 0x18, 0x59, 0xfd, 0xb9, + 0x1c, 0x0c, 0x0a, 0x52, 0xb6, 0x94, 0x1e, 0x2b, 0xf8, 0x7e, 0x14, 0x3c, 0x55, 0x51, 0x0b, 0x07, + 0xa5, 0xa8, 0xea, 0xe7, 0xb2, 0xc1, 0x6c, 0xb4, 0xe0, 0x98, 0xd6, 0xfe, 0x66, 0xa3, 0x8b, 0x00, + 0x13, 0xab, 0x6d, 0x6b, 0x8d, 0x5f, 0x97, 0x65, 0xc3, 0xeb, 0xb2, 0xba, 0xa9, 0x49, 0x18, 0x72, + 0x1e, 0xf2, 0x65, 0xc6, 0x9f, 0xf5, 0xcc, 0xd0, 0xf8, 0xc0, 0xdb, 0x9c, 0x53, 0xe6, 0x49, 0x0d, + 0xc1, 0x6c, 0x73, 0x35, 0xbe, 0xe1, 0x51, 0x6e, 0xce, 0xe6, 0xf8, 0xe6, 0x6a, 0x89, 0x01, 0x34, + 0x0e, 0x27, 0xd7, 0x61, 0xac, 0x4c, 0x1b, 0xfa, 0xc6, 0xac, 0xd9, 0x68, 0x98, 0x2e, 0xad, 0xdb, + 0x96, 0xe1, 0xa2, 0x90, 0x45, 0x75, 0x4d, 0x57, 0x4b, 0x12, 0x10, 0x15, 0x0a, 0xf3, 0xcb, 0xcb, + 0x2e, 0xf5, 0x50, 0x7c, 0xb9, 0x71, 0x60, 0x93, 0xb3, 0x8d, 0x10, 0x4d, 0x60, 0xd4, 0x5f, 0xca, + 0xb0, 0xdd, 0x8b, 0xbb, 0xe6, 0xd9, 0xad, 0x40, 0xcb, 0xf7, 0x25, 0x92, 0xcb, 0xa1, 0x5d, 0x91, + 0xc5, 0xaf, 0x3d, 0x21, 0xbe, 0xb6, 0x4f, 0xd8, 0x16, 0xa1, 0x45, 0x91, 0xfa, 0x55, 0xb9, 0x6d, + 0xbe, 0x4a, 0xfd, 0xb3, 0x2c, 0x9c, 0x11, 0x2d, 0x9e, 0x68, 0x98, 0xad, 0x25, 0x5b, 0x77, 0x0c, + 0x8d, 0xd6, 0xa9, 0x79, 0x97, 0x1e, 0xcd, 0x81, 0x17, 0x1d, 0x3a, 0xf9, 0x7d, 0x0c, 0x9d, 0x6b, + 0xb8, 0x11, 0x64, 0x92, 0xc1, 0x03, 0x5f, 0x6e, 0x54, 0x8c, 0x6e, 0x6d, 0x16, 0x87, 0x0c, 0x0e, + 0xc6, 0x23, 0x7f, 0x4d, 0x26, 0x62, 0x4a, 0x32, 0x43, 0xad, 0x15, 0x6f, 0x15, 0x95, 0xa4, 0x97, + 0x2b, 0x49, 0x03, 0x21, 0x9a, 0xc0, 0xa8, 0xff, 0x2e, 0x0b, 0xa7, 0xe2, 0x22, 0xaf, 0x52, 0xcb, + 0x38, 0x96, 0xf7, 0x3b, 0x23, 0xef, 0x6f, 0xe5, 0xe0, 0x21, 0x51, 0xa6, 0xba, 0xaa, 0x3b, 0xd4, + 0x28, 0x9b, 0x0e, 0xad, 0x7b, 0xb6, 0xb3, 0x71, 0x84, 0x0d, 0xa8, 0x83, 0x13, 0xfb, 0x75, 0x28, + 0x88, 0xed, 0x3f, 0x5f, 0x67, 0x46, 0x82, 0x96, 0x20, 0x34, 0xb1, 0x42, 0xf1, 0xa3, 0x83, 0x58, + 0x67, 0x15, 0x76, 0xd2, 0x59, 0x1f, 0x82, 0xe1, 0x40, 0xf4, 0xb8, 0x11, 0xed, 0x0b, 0xad, 0x2d, + 0xc3, 0x47, 0xe0, 0x5e, 0x54, 0x8b, 0x12, 0x62, 0x6d, 0x3e, 0xa0, 0x52, 0x46, 0x6b, 0x68, 0x58, + 0xd4, 0x16, 0x94, 0x33, 0x0d, 0x4d, 0x26, 0x52, 0x37, 0xf3, 0x70, 0x36, 0xbd, 0xdb, 0x35, 0xaa, + 0x1b, 0xc7, 0xbd, 0xfe, 0x9e, 0xec, 0x75, 0xf2, 0x08, 0xe4, 0x17, 0x74, 0x6f, 0x55, 0x5c, 0xbf, + 0xe3, 0x9d, 0xf0, 0xb2, 0xd9, 0xa0, 0xb5, 0x96, 0xee, 0xad, 0x6a, 0x88, 0x92, 0xe6, 0x0c, 0x40, + 0x8e, 0x29, 0x73, 0x86, 0xb4, 0xd8, 0x0f, 0x3e, 0x9c, 0xb9, 0x94, 0x4f, 0x5d, 0xec, 0xbf, 0x91, + 0xef, 0x34, 0xaf, 0xdc, 0x71, 0x4c, 0x8f, 0x1e, 0x6b, 0xd8, 0xb1, 0x86, 0xed, 0x53, 0xc3, 0xfe, + 0x20, 0x0b, 0xc3, 0xc1, 0xa6, 0xe9, 0x4d, 0x5a, 0x3f, 0x9c, 0xb5, 0x2a, 0xdc, 0xca, 0xe4, 0xf6, + 0xbd, 0x95, 0xd9, 0x8f, 0x42, 0xa9, 0xc1, 0x91, 0x27, 0x37, 0x0d, 0x50, 0x62, 0xfc, 0xc8, 0x33, + 0x38, 0xe8, 0x7c, 0x04, 0xfa, 0x66, 0xf5, 0x7b, 0x66, 0xb3, 0xdd, 0x14, 0x56, 0x3a, 0xba, 0x93, + 0x35, 0xf5, 0x7b, 0x9a, 0x0f, 0x57, 0xff, 0x49, 0x06, 0x46, 0x84, 0x50, 0x05, 0xf3, 0x7d, 0x49, + 0x35, 0x94, 0x4e, 0x76, 0xdf, 0xd2, 0xc9, 0xed, 0x5d, 0x3a, 0xea, 0x4f, 0xe4, 0x40, 0x99, 0x32, + 0x1b, 0x74, 0xd1, 0xd1, 0x2d, 0x77, 0x99, 0x3a, 0x62, 0x3b, 0x3d, 0xc9, 0x58, 0xed, 0xeb, 0x03, + 0xa5, 0x29, 0x25, 0xbb, 0xa7, 0x29, 0xe5, 0x03, 0x30, 0x20, 0x1a, 0x13, 0xb8, 0x32, 0xe2, 0xa8, + 0x71, 0x7c, 0xa0, 0x16, 0xe2, 0x19, 0x71, 0xa9, 0xd5, 0x72, 0xec, 0xbb, 0xd4, 0xe1, 0xb7, 0x54, + 0x82, 0x58, 0xf7, 0x81, 0x5a, 0x88, 0x97, 0x38, 0x53, 0xdf, 0x5e, 0x94, 0x39, 0x53, 0x47, 0x0b, + 0xf1, 0xe4, 0x12, 0xf4, 0xcf, 0xd8, 0x75, 0x1d, 0x05, 0xcd, 0xa7, 0x95, 0xa1, 0xad, 0xcd, 0x62, + 0x7f, 0x43, 0xc0, 0xb4, 0x00, 0xcb, 0x28, 0xcb, 0xf6, 0xba, 0xd5, 0xb0, 0x75, 0xee, 0xfc, 0xd2, + 0xcf, 0x29, 0x0d, 0x01, 0xd3, 0x02, 0x2c, 0xa3, 0x64, 0x32, 0x47, 0xa7, 0xa2, 0xfe, 0x90, 0xe7, + 0xb2, 0x80, 0x69, 0x01, 0x56, 0xfd, 0xa5, 0x3c, 0xd3, 0x5e, 0xd7, 0x7c, 0xeb, 0xbe, 0x5f, 0x17, + 0xc2, 0x01, 0xd3, 0xbb, 0x87, 0x01, 0x73, 0xdf, 0x1c, 0xd8, 0xa9, 0x7f, 0xde, 0x07, 0x20, 0xa4, + 0x3f, 0x79, 0xbc, 0x39, 0xdc, 0x9f, 0xd6, 0x94, 0x61, 0x6c, 0xd2, 0x5a, 0xd5, 0xad, 0x3a, 0x35, + 0xc2, 0x63, 0xcb, 0x02, 0x0e, 0x6d, 0x74, 0x82, 0xa4, 0x02, 0x19, 0x9e, 0x5b, 0x6a, 0xc9, 0x02, + 0xe4, 0x29, 0x18, 0xac, 0x58, 0x1e, 0x75, 0xf4, 0xba, 0x67, 0xde, 0xa5, 0x62, 0x6a, 0xc0, 0x9b, + 0x61, 0x33, 0x04, 0x6b, 0x32, 0x0d, 0xb9, 0x0e, 0x43, 0x0b, 0xba, 0xe3, 0x99, 0x75, 0xb3, 0xa5, + 0x5b, 0x9e, 0xab, 0xf4, 0xe3, 0x8c, 0x86, 0x16, 0x46, 0x4b, 0x82, 0x6b, 0x11, 0x2a, 0xf2, 0x49, + 0x18, 0xc0, 0xad, 0x29, 0xfa, 0x6b, 0x0f, 0x6c, 0x7b, 0x71, 0xf8, 0x68, 0xe8, 0x1e, 0xc8, 0x4f, + 0x5f, 0xf1, 0x06, 0x38, 0x7e, 0x77, 0x18, 0x70, 0x24, 0x1f, 0x85, 0xbe, 0x49, 0xcb, 0x40, 0xe6, + 0xb0, 0x2d, 0x73, 0x55, 0x30, 0x3f, 0x1d, 0x32, 0xb7, 0x5b, 0x31, 0xde, 0x3e, 0xbb, 0xf4, 0x51, + 0x36, 0xf8, 0xce, 0x8d, 0xb2, 0xa1, 0x77, 0xe0, 0x58, 0x7c, 0xf8, 0xa0, 0x8e, 0xc5, 0x47, 0xf6, + 0x78, 0x2c, 0xae, 0xbe, 0x05, 0x83, 0xe3, 0x0b, 0x53, 0xc1, 0xe8, 0x7d, 0x10, 0x72, 0x0b, 0xc2, + 0x53, 0x21, 0xcf, 0xed, 0x99, 0x96, 0x69, 0x68, 0x0c, 0x46, 0x2e, 0x43, 0xff, 0x04, 0xba, 0xbf, + 0x89, 0x5b, 0xc4, 0x3c, 0x5f, 0xff, 0xea, 0x08, 0x43, 0x2f, 0x58, 0x1f, 0x4d, 0x1e, 0x83, 0xbe, + 0x05, 0xc7, 0x5e, 0x71, 0xf4, 0xa6, 0x58, 0x83, 0xd1, 0x55, 0xa4, 0xc5, 0x41, 0x9a, 0x8f, 0x53, + 0x7f, 0x20, 0xe3, 0x9b, 0xed, 0xac, 0x44, 0xb5, 0x8d, 0x47, 0xf3, 0x58, 0x77, 0x3f, 0x2f, 0xe1, + 0x72, 0x90, 0xe6, 0xe3, 0xc8, 0x65, 0xe8, 0x9d, 0x74, 0x1c, 0xdb, 0x91, 0x7d, 0xdc, 0x29, 0x03, + 0xc8, 0xd7, 0xbd, 0x48, 0x41, 0x9e, 0x83, 0x41, 0x3e, 0xe7, 0xf0, 0x13, 0xcd, 0x5c, 0xb7, 0x9b, + 0x52, 0x99, 0x52, 0xfd, 0x5a, 0x4e, 0xb2, 0xd9, 0xb8, 0xc4, 0xef, 0xc3, 0x5b, 0x81, 0xa7, 0x21, + 0x37, 0xbe, 0x30, 0x25, 0x26, 0xc0, 0x93, 0x7e, 0x51, 0x49, 0x55, 0x62, 0xe5, 0x18, 0x35, 0x39, + 0x07, 0xf9, 0x05, 0xa6, 0x3e, 0x05, 0x54, 0x8f, 0xfe, 0xad, 0xcd, 0x62, 0xbe, 0xc5, 0xf4, 0x07, + 0xa1, 0x88, 0x65, 0x9b, 0x19, 0xbe, 0x63, 0xe2, 0xd8, 0x70, 0x1f, 0x73, 0x0e, 0xf2, 0x25, 0x67, + 0xe5, 0xae, 0x98, 0xb5, 0x10, 0xab, 0x3b, 0x2b, 0x77, 0x35, 0x84, 0x92, 0xab, 0x00, 0x1a, 0xf5, + 0xda, 0x8e, 0x85, 0xcf, 0x4f, 0x06, 0xf0, 0xfc, 0x0d, 0x67, 0x43, 0x07, 0xa1, 0xb5, 0xba, 0x6d, + 0x50, 0x4d, 0x22, 0x51, 0x7f, 0x26, 0xbc, 0xd8, 0x29, 0x9b, 0xee, 0xda, 0x71, 0x17, 0xee, 0xa2, + 0x0b, 0x75, 0x71, 0xc4, 0x99, 0xec, 0xa4, 0x22, 0xf4, 0x4e, 0x35, 0xf4, 0x15, 0x17, 0xfb, 0x50, + 0xf8, 0x92, 0x2d, 0x33, 0x80, 0xc6, 0xe1, 0xb1, 0x7e, 0xea, 0xdf, 0xbe, 0x9f, 0x7e, 0xb8, 0x37, + 0x18, 0x6d, 0x73, 0xd4, 0x5b, 0xb7, 0x9d, 0xe3, 0xae, 0xda, 0x69, 0x57, 0x5d, 0x84, 0xbe, 0xaa, + 0x53, 0x97, 0x8e, 0x2e, 0x70, 0x3f, 0xe0, 0x3a, 0x75, 0x7e, 0x6c, 0xe1, 0x23, 0x19, 0x5d, 0xd9, + 0xf5, 0x90, 0xae, 0x2f, 0xa4, 0x33, 0x5c, 0x4f, 0xd0, 0x09, 0xa4, 0xa0, 0x5b, 0xb0, 0x1d, 0x4f, + 0x74, 0x5c, 0x40, 0xd7, 0xb2, 0x1d, 0x4f, 0xf3, 0x91, 0xe4, 0x03, 0x00, 0x8b, 0x13, 0x0b, 0xbe, + 0xb3, 0xfd, 0x40, 0xe8, 0x0b, 0x28, 0xbc, 0xec, 0x35, 0x09, 0x4d, 0x16, 0x61, 0x60, 0xbe, 0x45, + 0x1d, 0xbe, 0x15, 0xe2, 0x0f, 0x4a, 0xde, 0x1f, 0x13, 0xad, 0xe8, 0xf7, 0x2b, 0xe2, 0xff, 0x80, + 0x9c, 0xaf, 0x2f, 0xb6, 0xff, 0x53, 0x0b, 0x19, 0x91, 0xe7, 0xa0, 0x50, 0xe2, 0x76, 0xde, 0x20, + 0xb2, 0x0c, 0x44, 0x86, 0x5b, 0x50, 0x8e, 0xe2, 0x7b, 0x76, 0x1d, 0xff, 0xd6, 0x04, 0xb9, 0x7a, + 0x19, 0x46, 0xe3, 0xd5, 0x90, 0x41, 0xe8, 0x9b, 0x98, 0x9f, 0x9b, 0x9b, 0x9c, 0x58, 0x1c, 0xed, + 0x21, 0xfd, 0x90, 0xaf, 0x4e, 0xce, 0x95, 0x47, 0x33, 0xea, 0x2f, 0x48, 0x33, 0x08, 0x53, 0xad, + 0xe3, 0xab, 0xe1, 0x7d, 0xdd, 0xb7, 0x8c, 0xe2, 0x7d, 0x28, 0x9e, 0x18, 0x34, 0x4d, 0xcf, 0xa3, + 0x86, 0x58, 0x25, 0xf0, 0xbe, 0xd0, 0xbb, 0xa7, 0x25, 0xf0, 0xe4, 0x09, 0x18, 0x46, 0x98, 0xb8, + 0x22, 0xe4, 0xfb, 0x63, 0x51, 0xc0, 0xb9, 0xa7, 0x45, 0x91, 0xea, 0xd7, 0xc3, 0xdb, 0xe1, 0x19, + 0xaa, 0x1f, 0xd5, 0x1b, 0xc5, 0x77, 0x49, 0x7f, 0xa9, 0x7f, 0x99, 0xe7, 0x4f, 0x40, 0xf8, 0x7b, + 0xc1, 0xc3, 0x10, 0x65, 0x78, 0xa4, 0x9b, 0xdb, 0xc5, 0x91, 0xee, 0x13, 0x50, 0x98, 0xa5, 0xde, + 0xaa, 0xed, 0x3b, 0x7e, 0xa1, 0x87, 0x5e, 0x13, 0x21, 0xb2, 0x87, 0x1e, 0xa7, 0x21, 0x6b, 0x40, + 0xfc, 0xc7, 0x80, 0x81, 0x23, 0xb6, 0x7f, 0x84, 0x7c, 0x26, 0xb1, 0x4f, 0xa9, 0xe2, 0x4b, 0x60, + 0xf4, 0xb1, 0x3f, 0x15, 0x38, 0x7a, 0x4b, 0x9e, 0x58, 0x7f, 0xb1, 0x59, 0x2c, 0x70, 0x1a, 0x2d, + 0x85, 0x2d, 0x79, 0x0d, 0x06, 0x66, 0xa7, 0x4a, 0xe2, 0x61, 0x20, 0xf7, 0x8a, 0x78, 0x30, 0x90, + 0xa2, 0x8f, 0x08, 0x44, 0x82, 0xef, 0x6d, 0x9a, 0xcb, 0x7a, 0xf2, 0x5d, 0x60, 0xc8, 0x85, 0x69, + 0x0b, 0x7f, 0xb9, 0x23, 0x4e, 0x17, 0x02, 0x6d, 0x89, 0xbe, 0xe7, 0x89, 0xcb, 0x8a, 0x63, 0x63, + 0xda, 0xd2, 0xbf, 0x8f, 0xd1, 0x3d, 0x0f, 0x63, 0xa5, 0x56, 0xab, 0x61, 0x52, 0x03, 0xf5, 0x45, + 0x6b, 0x37, 0xa8, 0x2b, 0x5c, 0x7e, 0xf0, 0x31, 0x88, 0xce, 0x91, 0x35, 0x7c, 0x8e, 0x5a, 0x73, + 0xda, 0x51, 0xff, 0xcc, 0x64, 0x59, 0xf5, 0x87, 0xb2, 0x70, 0x7a, 0xc2, 0xa1, 0xba, 0x47, 0x67, + 0xa7, 0x4a, 0xa5, 0x36, 0xfa, 0xc8, 0x35, 0x1a, 0xd4, 0x5a, 0x39, 0x9c, 0x61, 0xfd, 0x61, 0x18, + 0x09, 0x1a, 0x50, 0xad, 0xdb, 0x2d, 0x2a, 0x3f, 0xac, 0xaa, 0xfb, 0x98, 0x9a, 0xcb, 0x50, 0x5a, + 0x8c, 0x94, 0xdc, 0x84, 0x93, 0x01, 0xa4, 0xd4, 0x68, 0xd8, 0xeb, 0x1a, 0x6d, 0xbb, 0xdc, 0x31, + 0xb6, 0x9f, 0x3b, 0xc6, 0x86, 0x1c, 0x74, 0x86, 0xaf, 0x39, 0x8c, 0x40, 0x4b, 0x2b, 0xa5, 0x7e, + 0x39, 0x07, 0x67, 0x6e, 0xeb, 0x0d, 0xd3, 0x08, 0x45, 0xa3, 0x51, 0xb7, 0x65, 0x5b, 0x2e, 0x3d, + 0x42, 0xa3, 0x34, 0x32, 0x14, 0xf2, 0x07, 0x32, 0x14, 0x92, 0x5d, 0xd4, 0xbb, 0xef, 0x2e, 0x2a, + 0xec, 0xa9, 0x8b, 0xfe, 0x6d, 0x06, 0x46, 0x7d, 0xc7, 0x7f, 0xf9, 0x11, 0xb7, 0xe4, 0x95, 0x8e, + 0x47, 0x88, 0x31, 0x3f, 0x68, 0xc4, 0x93, 0x2a, 0xf4, 0x4d, 0xde, 0x6b, 0x99, 0x0e, 0x75, 0x77, + 0xe0, 0xc4, 0x7d, 0x5e, 0x1c, 0x97, 0x8c, 0x51, 0x5e, 0x24, 0x71, 0x52, 0xc2, 0xc1, 0xf8, 0x9c, + 0x8f, 0x3f, 0x7d, 0x18, 0xf7, 0x5f, 0xa6, 0xf3, 0xe7, 0x7c, 0xe2, 0x89, 0x44, 0xe4, 0x7d, 0x66, + 0x48, 0x4a, 0x1e, 0x85, 0xdc, 0xe2, 0xe2, 0x8c, 0x98, 0x49, 0x31, 0x22, 0x80, 0xe7, 0xc9, 0xef, + 0x15, 0x19, 0x56, 0xfd, 0xe3, 0x2c, 0x00, 0x53, 0x05, 0x3e, 0x5c, 0x0f, 0x45, 0x09, 0xc7, 0xa1, + 0xdf, 0x17, 0xb8, 0x50, 0xc3, 0xc0, 0x6b, 0x3f, 0xde, 0x11, 0xf1, 0xba, 0x83, 0x17, 0x1a, 0x45, + 0xdf, 0x91, 0x9c, 0xdf, 0x03, 0xe0, 0xce, 0x06, 0x1d, 0xc9, 0x7d, 0xf7, 0xf1, 0x0f, 0xc0, 0x80, + 0x98, 0xf1, 0xec, 0xc8, 0xf9, 0x7f, 0xdd, 0x07, 0x6a, 0x21, 0x3e, 0x36, 0xb5, 0x16, 0xf6, 0xb1, + 0x10, 0xfb, 0xe2, 0xe5, 0xbd, 0x72, 0x2c, 0xde, 0x03, 0x16, 0xef, 0x17, 0x84, 0x78, 0xf9, 0x0b, + 0x9e, 0x23, 0x2b, 0xde, 0x03, 0x3b, 0xfb, 0x56, 0xff, 0x20, 0x03, 0x84, 0x35, 0x6b, 0x41, 0x77, + 0xdd, 0x75, 0xdb, 0x31, 0xb8, 0x73, 0xfa, 0xa1, 0x08, 0xe6, 0xe0, 0xee, 0x2b, 0xbf, 0xd6, 0x0f, + 0x27, 0x23, 0x8e, 0xbf, 0x47, 0x7c, 0xb2, 0xba, 0x1c, 0x1d, 0x4d, 0xdd, 0x5e, 0xbd, 0xbc, 0x4f, + 0xbe, 0x10, 0xed, 0x8d, 0x3c, 0x40, 0x93, 0x6e, 0x42, 0x9f, 0x84, 0x21, 0xf1, 0x83, 0xad, 0xd0, + 0xfe, 0x4d, 0x17, 0x8e, 0x52, 0x97, 0x01, 0xb4, 0x08, 0x9a, 0x3c, 0x03, 0x03, 0x6c, 0xc0, 0xac, + 0x60, 0xf0, 0x90, 0xbe, 0xf0, 0x45, 0x89, 0xe1, 0x03, 0xe5, 0xf5, 0x24, 0xa0, 0x94, 0xde, 0x11, + 0xf5, 0xef, 0xe0, 0x1d, 0xd1, 0x1b, 0x30, 0x58, 0xb2, 0x2c, 0xdb, 0xc3, 0x4d, 0xba, 0x2b, 0xae, + 0x26, 0x3a, 0x5a, 0xe5, 0x8f, 0xe2, 0xe3, 0xf8, 0x90, 0x3e, 0xd5, 0x2c, 0x97, 0x19, 0x92, 0x6b, + 0xfe, 0xab, 0x18, 0xea, 0x08, 0xaf, 0x72, 0xbc, 0x9e, 0x71, 0x04, 0x2c, 0xf9, 0x28, 0x06, 0x3b, + 0x6f, 0x78, 0xc1, 0xb1, 0x5b, 0xb6, 0x4b, 0x0d, 0x2e, 0xa8, 0xc1, 0x30, 0xd4, 0x40, 0x4b, 0x20, + 0xf0, 0x1d, 0x5b, 0x24, 0x90, 0x47, 0xa4, 0x08, 0x59, 0x86, 0x53, 0xfe, 0x45, 0x71, 0xf0, 0x62, + 0xb0, 0x52, 0x76, 0x95, 0x21, 0x7c, 0x95, 0x44, 0xe2, 0xca, 0x50, 0x29, 0x8f, 0x5f, 0xf0, 0xaf, + 0x45, 0xfc, 0x27, 0x87, 0x35, 0xd3, 0x90, 0xbb, 0x3a, 0x95, 0x1f, 0xf9, 0x0e, 0x18, 0x9c, 0xd5, + 0xef, 0x95, 0xdb, 0xe2, 0xec, 0x65, 0x78, 0xe7, 0xb7, 0x2f, 0x4d, 0xfd, 0x5e, 0xcd, 0x10, 0xe5, + 0x62, 0x36, 0x85, 0xcc, 0x92, 0xd4, 0xe0, 0xf4, 0x82, 0x63, 0x37, 0x6d, 0x8f, 0x1a, 0xb1, 0xc7, + 0x77, 0x27, 0xc2, 0xd7, 0xba, 0x2d, 0x41, 0x51, 0xeb, 0xf2, 0x0a, 0xaf, 0x03, 0x1b, 0xd2, 0x84, + 0x13, 0x25, 0xd7, 0x6d, 0x37, 0x69, 0x78, 0x43, 0x35, 0xba, 0xed, 0x67, 0xbc, 0x5f, 0x78, 0x2d, + 0x3f, 0xa4, 0x63, 0x51, 0x7e, 0x41, 0x55, 0xf3, 0x4c, 0xb9, 0x46, 0xfc, 0x96, 0x38, 0xef, 0x57, + 0xf3, 0xfd, 0x23, 0xa3, 0x27, 0xb4, 0x33, 0xc9, 0xc6, 0x2c, 0x9a, 0x5e, 0x83, 0xaa, 0x5f, 0xcd, + 0x00, 0x84, 0x02, 0x26, 0x4f, 0x46, 0x23, 0x14, 0x65, 0xc2, 0x8b, 0x0e, 0x11, 0xbd, 0x20, 0x12, + 0x92, 0x88, 0x9c, 0x83, 0x3c, 0x46, 0xb8, 0xc8, 0x86, 0x07, 0xab, 0x6b, 0xa6, 0x65, 0x68, 0x08, + 0x65, 0x58, 0xe9, 0x29, 0x3a, 0x62, 0xf1, 0x52, 0x9f, 0x5b, 0x85, 0x65, 0x38, 0x51, 0x6d, 0x2f, + 0xf9, 0x75, 0x4b, 0xef, 0xea, 0x30, 0xd0, 0x86, 0xdb, 0x5e, 0x0a, 0x1e, 0xa3, 0x46, 0xc2, 0x98, + 0x44, 0x8b, 0xa8, 0xbf, 0x94, 0x89, 0xcd, 0x82, 0x87, 0xb8, 0xe8, 0xbd, 0x2f, 0xe9, 0xa7, 0x91, + 0x9c, 0x96, 0xd4, 0xff, 0x2f, 0x0b, 0x83, 0x0b, 0xb6, 0xe3, 0x89, 0x90, 0x21, 0x47, 0x7b, 0x15, + 0x92, 0xf6, 0x4a, 0xf9, 0x5d, 0xec, 0x95, 0xce, 0x41, 0x5e, 0x72, 0x51, 0xe6, 0xf7, 0x22, 0x86, + 0xe1, 0x68, 0x08, 0x55, 0xbf, 0x33, 0x0b, 0xf0, 0xd1, 0xa7, 0x9e, 0xba, 0x8f, 0x05, 0xa4, 0xfe, + 0x78, 0x06, 0x4e, 0x88, 0x8b, 0x3a, 0x29, 0xd6, 0x57, 0x9f, 0x7f, 0xc5, 0x2a, 0x8f, 0x4b, 0x0e, + 0xd2, 0x7c, 0x1c, 0x5b, 0x02, 0x26, 0xef, 0x99, 0x1e, 0xde, 0x55, 0x48, 0xc1, 0xbe, 0xa8, 0x80, + 0xc9, 0x4b, 0x80, 0x4f, 0x47, 0x9e, 0xf4, 0xaf, 0x20, 0x73, 0xe1, 0xba, 0xc7, 0x0a, 0x4c, 0xa6, + 0x5e, 0x43, 0xaa, 0xbf, 0x92, 0x87, 0xfc, 0xe4, 0x3d, 0x5a, 0x3f, 0xe2, 0x5d, 0x23, 0x1d, 0x6c, + 0xe6, 0xf7, 0x79, 0xb0, 0xb9, 0x17, 0x9f, 0x8a, 0x97, 0xc3, 0xfe, 0x2c, 0x44, 0xab, 0x8f, 0xf5, + 0x7c, 0xbc, 0x7a, 0xbf, 0xa7, 0x8f, 0x9e, 0x4b, 0xce, 0xdf, 0xcf, 0x41, 0xae, 0x3a, 0xb1, 0x70, + 0xac, 0x37, 0x87, 0xaa, 0x37, 0xdd, 0xef, 0xac, 0xd5, 0xe0, 0x1a, 0xaa, 0x3f, 0xf4, 0x12, 0x8d, + 0xdd, 0x38, 0x7d, 0x2b, 0x07, 0x23, 0xd5, 0xa9, 0xc5, 0x05, 0xe9, 0x24, 0xf8, 0x26, 0xf7, 0xe4, + 0x43, 0x9f, 0x32, 0xde, 0xa5, 0xe7, 0x12, 0xf6, 0xcc, 0xad, 0x8a, 0xe5, 0x3d, 0x7b, 0xfd, 0xb6, + 0xde, 0x68, 0x53, 0x3c, 0x7a, 0xe1, 0x7e, 0xbf, 0xae, 0xf9, 0x16, 0xfd, 0x32, 0x3e, 0xfc, 0xf7, + 0x19, 0x90, 0x0f, 0x43, 0xee, 0x96, 0xf0, 0xc8, 0xe8, 0xc4, 0xe7, 0xe9, 0x6b, 0x9c, 0x0f, 0x9b, + 0x04, 0x73, 0x6d, 0xd3, 0x40, 0x0e, 0xac, 0x14, 0x2b, 0x7c, 0x43, 0x2c, 0xc0, 0x3b, 0x2a, 0xbc, + 0xe2, 0x17, 0xbe, 0x51, 0x29, 0x93, 0x2a, 0x0c, 0x2e, 0x50, 0xa7, 0x69, 0x62, 0x47, 0xf9, 0x73, + 0x76, 0x77, 0x26, 0x6c, 0xa7, 0x32, 0xd8, 0x0a, 0x0b, 0x21, 0x33, 0x99, 0x0b, 0x79, 0x1d, 0x80, + 0xdb, 0x28, 0x3b, 0x8c, 0x1f, 0x79, 0x1e, 0xed, 0x7e, 0x6e, 0x5a, 0xa6, 0xd8, 0x78, 0x12, 0x33, + 0xb2, 0x06, 0xa3, 0xb3, 0xb6, 0x61, 0x2e, 0x9b, 0xdc, 0xf5, 0x12, 0x2b, 0x28, 0x6c, 0xef, 0xf0, + 0xc4, 0x4c, 0xc9, 0xa6, 0x54, 0x2e, 0xad, 0x9a, 0x04, 0x63, 0xf5, 0xef, 0xf4, 0x42, 0x9e, 0x75, + 0xfb, 0xf1, 0xf8, 0xdd, 0xcf, 0xf8, 0x2d, 0xc1, 0xe8, 0x1d, 0xdb, 0x59, 0x33, 0xad, 0x95, 0xc0, + 0x2b, 0x5e, 0xec, 0x4d, 0xd1, 0x93, 0x67, 0x9d, 0xe3, 0x6a, 0x81, 0x03, 0xbd, 0x96, 0x20, 0xdf, + 0x66, 0x04, 0x3f, 0x0f, 0xc0, 0xdf, 0xba, 0x23, 0x4d, 0x7f, 0x18, 0xac, 0x82, 0xbf, 0x84, 0x47, + 0x47, 0x7b, 0x39, 0x58, 0x45, 0x48, 0xcc, 0x36, 0xe1, 0xdc, 0x17, 0x62, 0x00, 0xfd, 0xee, 0x71, + 0x13, 0x8e, 0xbe, 0x10, 0xb2, 0x11, 0xc0, 0xbd, 0x22, 0x16, 0x00, 0xa4, 0xfb, 0x25, 0x88, 0x09, + 0x22, 0x32, 0x39, 0x88, 0xf0, 0x70, 0x29, 0xd7, 0x4b, 0x9a, 0xc4, 0x83, 0x3c, 0x1b, 0xbb, 0x00, + 0x27, 0x11, 0x6e, 0x1d, 0xef, 0xbf, 0x43, 0x07, 0xaa, 0xa1, 0xed, 0x1c, 0xa8, 0xd4, 0xcf, 0x65, + 0x61, 0xa0, 0xda, 0x5e, 0x72, 0x37, 0x5c, 0x8f, 0x36, 0x8f, 0xb8, 0x1a, 0xfb, 0xdb, 0xab, 0x7c, + 0xea, 0xf6, 0xea, 0x51, 0x5f, 0x28, 0xd2, 0xb9, 0x63, 0x60, 0xd2, 0xf9, 0xe2, 0xf8, 0x9b, 0x59, + 0x18, 0xe5, 0x17, 0x67, 0x65, 0xd3, 0xad, 0x1f, 0x80, 0x33, 0xff, 0xe1, 0x4b, 0x65, 0x7f, 0x97, + 0xcd, 0x3b, 0x78, 0x22, 0xa1, 0x7e, 0x3a, 0x0b, 0x83, 0xa5, 0xb6, 0xb7, 0x5a, 0xf2, 0x50, 0xb7, + 0xee, 0xcb, 0xfd, 0xc9, 0x6f, 0x67, 0xe0, 0x04, 0x6b, 0xc8, 0xa2, 0xbd, 0x46, 0xad, 0x03, 0x38, + 0x78, 0x94, 0x0f, 0x10, 0xb3, 0x7b, 0x3c, 0x40, 0xf4, 0x65, 0x99, 0xdb, 0x9d, 0x2c, 0xf1, 0xb8, + 0x5c, 0xb3, 0x1b, 0xf4, 0x68, 0x7f, 0xc6, 0x01, 0x1e, 0x97, 0xfb, 0x02, 0x39, 0x80, 0xeb, 0x99, + 0xf7, 0x96, 0x40, 0x0e, 0xe0, 0x6c, 0xe9, 0xbd, 0x21, 0x90, 0xaf, 0x65, 0x60, 0x60, 0xdc, 0xf6, + 0x8e, 0xf8, 0xc0, 0x17, 0x5f, 0x71, 0xb4, 0xd5, 0xdc, 0xff, 0x8a, 0xa3, 0xad, 0x9b, 0xea, 0x8f, + 0x64, 0xe1, 0x94, 0x88, 0x0d, 0x2e, 0xce, 0x1f, 0x8e, 0xa7, 0x63, 0x31, 0xd8, 0x92, 0xa2, 0x39, + 0x9e, 0x87, 0x84, 0x68, 0x7e, 0x36, 0x07, 0xa7, 0x30, 0x94, 0x29, 0xdb, 0x96, 0xbd, 0x07, 0x6c, + 0x11, 0x52, 0x8f, 0x5e, 0x82, 0xce, 0xa6, 0x5c, 0x82, 0xfe, 0xc5, 0x66, 0xf1, 0xd9, 0x15, 0xd3, + 0x5b, 0x6d, 0x2f, 0x5d, 0xa9, 0xdb, 0xcd, 0xab, 0x2b, 0x8e, 0x7e, 0xd7, 0xe4, 0xd7, 0x7f, 0x7a, + 0xe3, 0x6a, 0x90, 0x66, 0x43, 0x6f, 0x99, 0x22, 0x01, 0x47, 0x15, 0xf7, 0x3a, 0x8c, 0xab, 0x7f, + 0x7d, 0xea, 0x02, 0xbc, 0x6a, 0x9b, 0x96, 0xf0, 0x29, 0xe4, 0x86, 0x6e, 0x95, 0xed, 0x0f, 0xdf, + 0xb4, 0x4d, 0xab, 0x16, 0x77, 0x2c, 0xdc, 0x6d, 0x7d, 0x21, 0x6b, 0x4d, 0xaa, 0x46, 0xfd, 0xc7, + 0x19, 0x78, 0x30, 0xaa, 0xc5, 0xef, 0x05, 0xdb, 0xf1, 0x47, 0xb3, 0xf0, 0xc0, 0x0d, 0x14, 0x4e, + 0xe0, 0xc8, 0x71, 0x3c, 0x6f, 0x89, 0xc1, 0x99, 0x22, 0x9b, 0x63, 0x8b, 0xb2, 0xb3, 0x6c, 0x8e, + 0x27, 0x75, 0x21, 0x9b, 0xdf, 0xcd, 0xc0, 0xc9, 0xf9, 0x4a, 0x79, 0xe2, 0x3d, 0x32, 0xa2, 0x92, + 0xdf, 0x73, 0xc4, 0x0d, 0xce, 0xc4, 0xf7, 0x1c, 0x71, 0xd3, 0x93, 0x7d, 0x4f, 0xb5, 0x34, 0x3b, + 0xf3, 0x5e, 0xd2, 0xb7, 0xc8, 0xf7, 0xbc, 0x07, 0xf4, 0x2d, 0xf2, 0x3d, 0x47, 0x5c, 0xdf, 0xfe, + 0x5e, 0x01, 0x06, 0x6f, 0xb6, 0x97, 0xa8, 0x70, 0x09, 0xb9, 0xaf, 0xcf, 0x5b, 0xaf, 0xc1, 0xa0, + 0x10, 0x03, 0xde, 0x55, 0x48, 0x21, 0xeb, 0x44, 0x08, 0x12, 0x1e, 0x15, 0x48, 0x26, 0x22, 0xe7, + 0x20, 0x7f, 0x9b, 0x3a, 0x4b, 0xf2, 0x6b, 0xce, 0xbb, 0xd4, 0x59, 0xd2, 0x10, 0x4a, 0x66, 0x42, + 0x47, 0xf5, 0xd2, 0x42, 0x05, 0xd3, 0x97, 0x88, 0x6b, 0x12, 0xcc, 0xc7, 0x12, 0x78, 0x9b, 0xe9, + 0x2d, 0x93, 0x27, 0x3e, 0x91, 0x5f, 0x92, 0xc7, 0x4b, 0x92, 0x39, 0x18, 0x93, 0xdd, 0x8d, 0x78, + 0xee, 0x8e, 0xfe, 0x14, 0x76, 0x69, 0x59, 0x3b, 0x92, 0x45, 0xc9, 0xcb, 0x30, 0xe4, 0x03, 0xd1, + 0x71, 0x6a, 0x20, 0x0c, 0x18, 0x1f, 0xb0, 0x8a, 0x25, 0x06, 0x8a, 0x14, 0x90, 0x19, 0xe0, 0xe1, + 0x3f, 0xa4, 0x30, 0x88, 0x39, 0xa2, 0x45, 0x0a, 0x90, 0x67, 0x90, 0x01, 0x3e, 0xae, 0x40, 0x17, + 0x91, 0x41, 0x7c, 0xea, 0x88, 0x8e, 0xf0, 0x8e, 0x80, 0xf3, 0x07, 0xad, 0x11, 0x32, 0x32, 0x0f, + 0x10, 0x5e, 0xe5, 0x8b, 0xb0, 0x01, 0xbb, 0x76, 0x32, 0x90, 0x58, 0xc8, 0x97, 0x70, 0xc3, 0x7b, + 0xb9, 0x84, 0x53, 0x7f, 0x3f, 0x0b, 0x83, 0xa5, 0x56, 0x2b, 0x18, 0x0a, 0x4f, 0x42, 0xa1, 0xd4, + 0x6a, 0xdd, 0xd2, 0x2a, 0x72, 0x00, 0x71, 0xbd, 0xd5, 0xaa, 0xb5, 0x1d, 0x53, 0xf6, 0xc4, 0xe4, + 0x44, 0x64, 0x02, 0x86, 0x4b, 0xad, 0xd6, 0x42, 0x7b, 0xa9, 0x61, 0xd6, 0xa5, 0x7c, 0x44, 0x3c, + 0x63, 0x5b, 0xab, 0x55, 0x6b, 0x21, 0x26, 0x9e, 0x94, 0x2a, 0x5a, 0x86, 0xbc, 0x81, 0xc1, 0x76, + 0x44, 0x3a, 0x1c, 0x9e, 0x70, 0x43, 0x0d, 0x42, 0x87, 0x87, 0x6d, 0xbb, 0x12, 0x10, 0xf1, 0x10, + 0xeb, 0xe7, 0xfc, 0x40, 0xf5, 0xac, 0xa2, 0x44, 0xda, 0x9b, 0x90, 0x25, 0xf9, 0x20, 0xf4, 0x95, + 0x5a, 0x2d, 0xe9, 0x96, 0x07, 0x5d, 0x79, 0x58, 0xa9, 0x78, 0xc6, 0x31, 0x41, 0x76, 0xf6, 0x45, + 0x18, 0x89, 0x56, 0xb6, 0xab, 0x10, 0xed, 0xdf, 0xce, 0xe0, 0x07, 0x1d, 0x71, 0x4f, 0xe2, 0xa7, + 0x21, 0x57, 0x6a, 0xb5, 0xc4, 0x7c, 0x74, 0x32, 0xa5, 0x3f, 0xe2, 0x0f, 0x8f, 0x4b, 0xad, 0x96, + 0xff, 0xe9, 0x47, 0xfc, 0x49, 0xc2, 0x9e, 0x3e, 0xfd, 0x6b, 0xfc, 0xd3, 0x8f, 0xf6, 0x73, 0x01, + 0xf5, 0x57, 0x72, 0x70, 0xa2, 0xd4, 0x6a, 0x1d, 0x87, 0x76, 0x3f, 0xa8, 0xe7, 0xcd, 0x4f, 0x01, + 0x48, 0xd3, 0x63, 0x5f, 0xf0, 0x60, 0x6a, 0x50, 0x9a, 0x1a, 0x95, 0x8c, 0x26, 0x11, 0xf9, 0xea, + 0xd7, 0xbf, 0x2b, 0xf5, 0xfb, 0x74, 0x0e, 0xa7, 0xe2, 0xa3, 0x1e, 0xaa, 0xe9, 0xdd, 0xd2, 0x6d, + 0xa2, 0x0f, 0x0a, 0xbb, 0xea, 0x83, 0xdf, 0x8a, 0x0c, 0x1e, 0x0c, 0x15, 0x7e, 0xdc, 0x0b, 0xbd, + 0xfb, 0x32, 0x8b, 0x47, 0x64, 0x61, 0x8a, 0xf8, 0x31, 0x7e, 0xfa, 0x22, 0x11, 0xcd, 0xa8, 0xce, + 0x50, 0x35, 0xd3, 0xd0, 0x62, 0xb4, 0x7e, 0x1f, 0xf6, 0xed, 0xaa, 0x0f, 0x37, 0xb3, 0xf8, 0x62, + 0x39, 0x88, 0x86, 0xb4, 0xff, 0xdd, 0xc5, 0x55, 0x00, 0x7e, 0xdf, 0x1f, 0x38, 0x13, 0x0f, 0xf3, + 0xc0, 0x27, 0x3c, 0xab, 0x91, 0x08, 0x7c, 0x12, 0x92, 0x04, 0x7e, 0x49, 0xb9, 0x54, 0xbf, 0xa4, + 0xcb, 0xd0, 0xaf, 0xe9, 0xeb, 0xaf, 0xb5, 0xa9, 0xb3, 0x21, 0xcc, 0x19, 0x1e, 0x6c, 0x50, 0x5f, + 0xaf, 0x7d, 0x8a, 0x01, 0xb5, 0x00, 0x4d, 0xd4, 0xe0, 0xc9, 0xbb, 0xe4, 0x87, 0xc1, 0x4f, 0xa6, + 0x83, 0x87, 0xee, 0x7b, 0x51, 0x74, 0xf2, 0x02, 0xe4, 0x4a, 0x77, 0xaa, 0x42, 0xb2, 0x41, 0xd7, + 0x96, 0xee, 0x54, 0x85, 0xbc, 0x3a, 0x96, 0xbd, 0x53, 0x55, 0x3f, 0x9d, 0x05, 0x92, 0xa4, 0x24, + 0xcf, 0xc2, 0x00, 0x42, 0x57, 0x98, 0xce, 0xc8, 0xe9, 0x30, 0xd7, 0xdd, 0x9a, 0x83, 0xd0, 0x88, + 0x71, 0xe7, 0x93, 0x92, 0xe7, 0x31, 0xe1, 0xb0, 0x48, 0xc8, 0x16, 0x49, 0x87, 0xb9, 0xee, 0xfa, + 0x29, 0x7a, 0x63, 0xf9, 0x86, 0x05, 0x31, 0xda, 0x85, 0x77, 0xaa, 0xd3, 0xb6, 0xeb, 0x09, 0x51, + 0x73, 0xbb, 0x70, 0xdd, 0xc5, 0x3c, 0xac, 0x11, 0xbb, 0x90, 0x93, 0x61, 0x2e, 0xa9, 0x3b, 0x55, + 0xfe, 0x38, 0xc4, 0xd0, 0xec, 0x86, 0x6f, 0x50, 0xf2, 0x5c, 0x52, 0xeb, 0x6e, 0x8d, 0x3f, 0x2c, + 0x31, 0x30, 0xd3, 0x71, 0x24, 0x97, 0x54, 0xa4, 0x94, 0xfa, 0xf9, 0x7e, 0x18, 0x2d, 0xeb, 0x9e, + 0xbe, 0xa4, 0xbb, 0x54, 0xda, 0x4d, 0x9f, 0xf0, 0x61, 0xfe, 0xe7, 0x48, 0x72, 0x30, 0x96, 0x52, + 0xbe, 0x26, 0x5e, 0x80, 0x7c, 0x38, 0xe4, 0x1b, 0x64, 0xfa, 0x94, 0x53, 0x87, 0x2d, 0xd5, 0x5a, + 0x02, 0xac, 0x25, 0x08, 0xc9, 0x13, 0x30, 0xe8, 0xc3, 0xd8, 0x06, 0x20, 0x17, 0xea, 0x8c, 0xb1, + 0xc4, 0xec, 0x7f, 0x4d, 0x46, 0x93, 0xe7, 0x61, 0xc8, 0xff, 0x29, 0x99, 0xd6, 0x3c, 0x0f, 0xda, + 0x52, 0x62, 0xf7, 0x24, 0x93, 0xca, 0x45, 0x71, 0x7e, 0xeb, 0x8d, 0x14, 0x8d, 0xa5, 0x1a, 0x8b, + 0x90, 0x92, 0x4f, 0xc1, 0x88, 0xff, 0x5b, 0x6c, 0x18, 0x78, 0x56, 0xb6, 0x27, 0x82, 0x44, 0xca, + 0x31, 0xb1, 0x5e, 0x89, 0x92, 0xf3, 0xad, 0xc3, 0x43, 0x7e, 0xf6, 0x2c, 0x63, 0x29, 0xb9, 0x73, + 0x88, 0x55, 0x40, 0x2a, 0x30, 0xe6, 0x43, 0x42, 0x0d, 0xed, 0x0b, 0x77, 0x8c, 0xc6, 0x52, 0x2d, + 0x55, 0x49, 0x93, 0xa5, 0x48, 0x03, 0xce, 0x45, 0x80, 0x86, 0xbb, 0x6a, 0x2e, 0x7b, 0x62, 0xbb, + 0x27, 0x22, 0xff, 0x8a, 0x74, 0x89, 0x01, 0x57, 0x4e, 0xe3, 0xe7, 0x3d, 0x8d, 0xe6, 0x64, 0xea, + 0xca, 0x8d, 0x54, 0xe1, 0x94, 0x8f, 0xbf, 0x31, 0xb1, 0xb0, 0xe0, 0xd8, 0x6f, 0xd2, 0xba, 0x57, + 0x29, 0x8b, 0xed, 0x32, 0x46, 0x84, 0x33, 0x96, 0x6a, 0x2b, 0xf5, 0x16, 0x53, 0x0a, 0x86, 0x8b, + 0x32, 0x4f, 0x2d, 0x4c, 0x6e, 0xc3, 0x03, 0x12, 0x5c, 0x4a, 0xca, 0x0c, 0xe1, 0x7e, 0x5e, 0x70, + 0x4d, 0xcf, 0xcb, 0x9c, 0x5e, 0x9c, 0xbc, 0x08, 0xc3, 0x3e, 0x82, 0xdf, 0xdd, 0x0d, 0xe2, 0xdd, + 0x1d, 0x0e, 0x49, 0x63, 0xa9, 0x16, 0x7f, 0xc3, 0x18, 0x25, 0x96, 0x35, 0x0a, 0xf3, 0xd8, 0x0f, + 0x45, 0x34, 0xca, 0xdb, 0x68, 0xa5, 0x2a, 0x23, 0xe6, 0xb6, 0x7f, 0x39, 0xd4, 0xa8, 0x79, 0xc7, + 0x5c, 0x31, 0xf9, 0x4e, 0xda, 0x7f, 0xb6, 0xb8, 0x54, 0xb3, 0x11, 0x98, 0xa6, 0x1f, 0x9c, 0xfc, + 0x6c, 0x09, 0x4e, 0xa6, 0xe8, 0xd8, 0xae, 0x76, 0x8c, 0x9f, 0xcb, 0x86, 0x8d, 0x38, 0xe2, 0xdb, + 0xc6, 0x71, 0xe8, 0xf7, 0xbf, 0x44, 0x18, 0x0f, 0x4a, 0xa7, 0xa1, 0x19, 0xe7, 0xe1, 0xe3, 0x23, + 0xe2, 0x38, 0xe2, 0x5b, 0xc9, 0x83, 0x10, 0xc7, 0xdb, 0x99, 0x50, 0x1c, 0x47, 0x7c, 0x7b, 0xf9, + 0xbb, 0xb9, 0x70, 0x4e, 0x3a, 0xde, 0x63, 0x1e, 0x94, 0x99, 0x1c, 0x7a, 0x9f, 0x16, 0x76, 0xf1, + 0x7c, 0x50, 0x56, 0xcd, 0xbe, 0x3d, 0xaa, 0xe6, 0x1f, 0x26, 0xfb, 0x93, 0x9b, 0x9e, 0x47, 0xb2, + 0x3f, 0x0f, 0x60, 0xb0, 0x92, 0x6b, 0xe1, 0x3a, 0xc6, 0x6d, 0xf4, 0x5e, 0x29, 0xb0, 0xde, 0x92, + 0x30, 0xd1, 0xa3, 0x24, 0xe4, 0xe3, 0x70, 0x26, 0x02, 0x58, 0xd0, 0x1d, 0xbd, 0x49, 0xbd, 0x30, + 0xcf, 0x1f, 0x86, 0x4a, 0xf2, 0x4b, 0xd7, 0x5a, 0x01, 0x5a, 0xce, 0x1d, 0xd8, 0x81, 0x83, 0xa4, + 0x1c, 0x7d, 0xbb, 0x70, 0x4d, 0xfe, 0xa3, 0x3c, 0x28, 0x81, 0x81, 0x18, 0x3c, 0xc2, 0x39, 0xc4, + 0xc9, 0xf8, 0x5d, 0xd1, 0xb9, 0x26, 0x8c, 0x85, 0xc2, 0xa8, 0xb6, 0x9b, 0x4d, 0x1d, 0x3b, 0x98, + 0x19, 0xa0, 0xc5, 0x38, 0xb3, 0x90, 0x90, 0xdb, 0x9c, 0x67, 0x85, 0xcd, 0x49, 0xc2, 0x47, 0x4e, + 0x35, 0x97, 0xb3, 0xd0, 0x92, 0x5c, 0xc9, 0x17, 0x32, 0x70, 0xaa, 0xb4, 0xbc, 0x4c, 0xeb, 0x1e, + 0x35, 0xe6, 0x97, 0x98, 0xf1, 0x35, 0x61, 0xb7, 0x2d, 0xcf, 0xb7, 0x77, 0x5f, 0xe8, 0x5c, 0x1d, + 0xef, 0xa4, 0x2b, 0x69, 0x85, 0x79, 0x4b, 0x82, 0xa0, 0x01, 0xba, 0x20, 0xa9, 0xd9, 0x48, 0x53, + 0xab, 0x23, 0x91, 0x96, 0x5a, 0xef, 0xd9, 0x1b, 0xf0, 0x60, 0x47, 0x96, 0xdb, 0x19, 0x3b, 0xbd, + 0xb2, 0xb1, 0xf3, 0x4f, 0x33, 0xa1, 0xba, 0xc7, 0x84, 0x44, 0xae, 0x00, 0x84, 0x20, 0xb1, 0xfd, + 0x19, 0xd9, 0xda, 0x2c, 0x42, 0x28, 0x34, 0x4d, 0xa2, 0x20, 0xf3, 0x50, 0x10, 0x62, 0xe1, 0x99, + 0x5b, 0x3f, 0xb0, 0x4d, 0x2f, 0x5c, 0x91, 0xe5, 0x80, 0x5b, 0x1b, 0xf1, 0xcd, 0x82, 0xcd, 0xd9, + 0xe7, 0x61, 0x70, 0xaf, 0xdf, 0xf5, 0x85, 0x1c, 0x10, 0x79, 0xaf, 0x72, 0x88, 0x86, 0xdc, 0xbb, + 0x62, 0xb0, 0xec, 0x2d, 0xf3, 0xca, 0x25, 0xe8, 0x67, 0x9f, 0x80, 0xb9, 0x0c, 0xa4, 0xd8, 0xa5, + 0x6d, 0x01, 0xd3, 0x02, 0x6c, 0x18, 0x38, 0xa8, 0x2f, 0x3d, 0x70, 0x90, 0xfa, 0x83, 0x39, 0x38, + 0x2d, 0x77, 0x48, 0x99, 0x62, 0x38, 0xf4, 0xe3, 0x4e, 0x79, 0x07, 0x3b, 0x45, 0x85, 0x02, 0x37, + 0x51, 0x45, 0x5c, 0x7a, 0x7e, 0x7c, 0x80, 0x10, 0x4d, 0x60, 0xd4, 0x7f, 0x95, 0x85, 0xe1, 0x05, + 0xdb, 0xf5, 0x56, 0x1c, 0xea, 0x2e, 0xe8, 0x8e, 0x7b, 0x1f, 0x77, 0xc7, 0x87, 0x60, 0x18, 0x43, + 0xbf, 0x34, 0xa9, 0xc5, 0xc3, 0xa3, 0xf4, 0x4a, 0x89, 0x24, 0x7c, 0x84, 0xc8, 0x19, 0x14, 0x21, + 0x64, 0xda, 0xcf, 0xed, 0x0b, 0x29, 0x20, 0x0f, 0x37, 0x2e, 0x38, 0x5c, 0xfd, 0xa9, 0x1c, 0x0c, + 0xf9, 0x52, 0x1e, 0x37, 0x8f, 0xea, 0x7d, 0xc0, 0xe1, 0x0a, 0xf9, 0x2a, 0xc0, 0x82, 0xed, 0x78, + 0x7a, 0x63, 0x2e, 0xd4, 0x7c, 0x3c, 0x48, 0x6b, 0x21, 0x94, 0x97, 0x91, 0x48, 0x70, 0xfd, 0x0a, + 0x8d, 0x37, 0x3e, 0x31, 0xf1, 0xf5, 0x2b, 0x80, 0x6a, 0x12, 0x85, 0xfa, 0x1b, 0x59, 0x38, 0xe1, + 0x77, 0xd2, 0xe4, 0x3d, 0x5a, 0x6f, 0xdf, 0xcf, 0x73, 0x53, 0x54, 0xda, 0xbd, 0xdb, 0x4a, 0x5b, + 0xfd, 0x8f, 0xd2, 0x44, 0x32, 0xd1, 0xb0, 0x8f, 0x27, 0x92, 0xbf, 0x0a, 0x1d, 0x57, 0xbf, 0x3b, + 0x07, 0xa7, 0x7c, 0xa9, 0x4f, 0xb5, 0x2d, 0xdc, 0x82, 0x4e, 0xe8, 0x8d, 0xc6, 0xfd, 0xbc, 0xe7, + 0x1b, 0xf4, 0x05, 0x31, 0x2f, 0x62, 0xa9, 0x89, 0xfc, 0x6d, 0xcb, 0x02, 0x5c, 0xb3, 0x4d, 0x43, + 0x93, 0x89, 0xc8, 0xcb, 0x30, 0xe4, 0xff, 0x2c, 0x39, 0x2b, 0xfe, 0x46, 0x0f, 0x0f, 0x94, 0x83, + 0x42, 0xba, 0x13, 0x79, 0x32, 0x1e, 0x29, 0xa0, 0xfe, 0x9b, 0x02, 0x9c, 0xbd, 0x63, 0x5a, 0x86, + 0xbd, 0xee, 0xfa, 0xe9, 0xff, 0x8e, 0xfc, 0x81, 0xca, 0x61, 0xa7, 0xfd, 0x7b, 0x0d, 0x1e, 0x88, + 0x8b, 0xd4, 0x09, 0x82, 0x32, 0x8b, 0xde, 0x59, 0xe7, 0x04, 0x35, 0x3f, 0x11, 0xa0, 0xb8, 0x95, + 0xd1, 0xd2, 0x4b, 0xc6, 0x33, 0x09, 0xf6, 0xed, 0x24, 0x93, 0xe0, 0xe3, 0x50, 0x28, 0xdb, 0x4d, + 0xdd, 0xf4, 0x83, 0x87, 0xe0, 0x28, 0x0e, 0xea, 0x45, 0x8c, 0x26, 0x28, 0x18, 0x7f, 0x51, 0x31, + 0x76, 0xd9, 0x40, 0xc8, 0xdf, 0x2f, 0xc0, 0xac, 0x34, 0x4d, 0x26, 0x22, 0x36, 0x0c, 0x8b, 0xea, + 0xc4, 0x1d, 0x0a, 0xe0, 0xe6, 0xe9, 0x19, 0x5f, 0x46, 0x9d, 0xd5, 0xea, 0x4a, 0xa4, 0x1c, 0xdf, + 0x46, 0xf1, 0x04, 0x87, 0xe2, 0x63, 0xf8, 0x6d, 0x8a, 0x16, 0xe5, 0x2f, 0x09, 0x01, 0x27, 0x99, + 0xc1, 0xa4, 0x10, 0x70, 0x96, 0x91, 0x89, 0xc8, 0x24, 0x8c, 0x61, 0xe8, 0xdc, 0x60, 0x2b, 0xc5, + 0x54, 0x62, 0x08, 0x8d, 0x4a, 0x3c, 0x9a, 0xe7, 0xd1, 0x76, 0xd9, 0xc7, 0xd5, 0xea, 0x02, 0xad, + 0x25, 0x4b, 0x9c, 0x7d, 0x05, 0x48, 0xb2, 0xcd, 0xbb, 0x3a, 0x9c, 0xff, 0x7c, 0x36, 0xdc, 0xd7, + 0x1d, 0x75, 0xf7, 0x8a, 0x83, 0x38, 0x8e, 0xfe, 0xc5, 0x0c, 0x8c, 0x25, 0x42, 0x31, 0x93, 0xa7, + 0x01, 0x38, 0x44, 0x0a, 0x79, 0x87, 0x31, 0x24, 0xc2, 0xf0, 0xcc, 0x62, 0x29, 0x09, 0xc9, 0xc8, + 0x55, 0xe8, 0xe7, 0xbf, 0x44, 0x98, 0x9a, 0x64, 0x91, 0x76, 0xdb, 0x34, 0xb4, 0x80, 0x28, 0xac, + 0x05, 0x6f, 0x79, 0x72, 0xa9, 0x45, 0xbc, 0x8d, 0x56, 0x50, 0x0b, 0x23, 0x63, 0x1d, 0x38, 0x14, + 0x34, 0xb8, 0x64, 0x1c, 0x56, 0xd7, 0x15, 0x44, 0x54, 0xeb, 0xdc, 0x76, 0x51, 0xad, 0x63, 0x73, + 0x93, 0x08, 0x63, 0x7d, 0x70, 0x4f, 0x43, 0xbe, 0x98, 0x85, 0x13, 0x41, 0xad, 0x87, 0x78, 0xa1, + 0xf0, 0x2e, 0x12, 0xc9, 0x17, 0x32, 0xa0, 0x8c, 0x9b, 0x8d, 0x86, 0x69, 0xad, 0x54, 0xac, 0x65, + 0xdb, 0x69, 0xe2, 0xe4, 0x71, 0x78, 0xc7, 0x9d, 0xea, 0xf7, 0x65, 0x60, 0x4c, 0x34, 0x68, 0x42, + 0x77, 0x8c, 0xc3, 0x3b, 0x4b, 0x8a, 0xb7, 0xe4, 0xf0, 0xf4, 0x45, 0xfd, 0x4a, 0x16, 0x60, 0xc6, + 0xae, 0xaf, 0x1d, 0xf1, 0xb7, 0x81, 0x1f, 0x86, 0x02, 0x8f, 0x15, 0x24, 0x34, 0x76, 0xec, 0x0a, + 0x7f, 0xf2, 0xc9, 0x3e, 0x8d, 0x23, 0xc6, 0x47, 0xc5, 0x09, 0x6d, 0x81, 0xc7, 0x1a, 0x52, 0x32, + 0x9a, 0x28, 0xc2, 0x2a, 0x65, 0x74, 0xc2, 0xaa, 0x09, 0x2a, 0x65, 0xb0, 0x68, 0xa5, 0x5b, 0x9b, + 0xc5, 0x7c, 0xc3, 0xae, 0xaf, 0x69, 0x48, 0xaf, 0xfe, 0x65, 0x86, 0xcb, 0xee, 0x88, 0xbf, 0x8f, + 0xf3, 0x3f, 0x3f, 0xbf, 0xcb, 0xcf, 0xff, 0xfe, 0x0c, 0x9c, 0xd2, 0x68, 0xdd, 0xbe, 0x4b, 0x9d, + 0x8d, 0x09, 0xdb, 0xa0, 0x37, 0xa8, 0x45, 0x9d, 0xc3, 0x1a, 0x51, 0x7f, 0x1b, 0xd3, 0x00, 0x84, + 0x8d, 0xb9, 0xe5, 0x52, 0xe3, 0xe8, 0xa4, 0x68, 0x50, 0xff, 0x56, 0x1f, 0x28, 0xa9, 0x16, 0xe2, + 0x91, 0xb5, 0x8a, 0x3a, 0x9a, 0xfd, 0xf9, 0x83, 0x32, 0xfb, 0x7b, 0x77, 0x67, 0xf6, 0x17, 0x76, + 0x6b, 0xf6, 0xf7, 0xed, 0xc4, 0xec, 0x6f, 0xc6, 0xcd, 0xfe, 0x7e, 0x34, 0xfb, 0x9f, 0xee, 0x6a, + 0xf6, 0x4f, 0x5a, 0xc6, 0x1e, 0x8d, 0xfe, 0x23, 0x9b, 0x3e, 0x74, 0x2f, 0xbb, 0x95, 0x4b, 0x6c, + 0x52, 0xac, 0xdb, 0x8e, 0x41, 0x0d, 0xb1, 0x49, 0xc1, 0x13, 0x72, 0x47, 0xc0, 0xb4, 0x00, 0x9b, + 0xc8, 0xc5, 0x3a, 0xbc, 0x93, 0x5c, 0xac, 0x07, 0xb0, 0x8d, 0xf9, 0x5c, 0x16, 0xc6, 0x26, 0xa8, + 0xe3, 0xf1, 0x60, 0x84, 0x07, 0xe1, 0x66, 0x54, 0x82, 0x13, 0x12, 0x43, 0xb4, 0xc8, 0xb3, 0xa1, + 0xeb, 0x54, 0x9d, 0x3a, 0x5e, 0xdc, 0xf3, 0x2a, 0x4e, 0xcf, 0xaa, 0xf7, 0xf3, 0x21, 0x89, 0xb1, + 0x1b, 0x54, 0xef, 0xc3, 0xb9, 0x20, 0x4d, 0xf1, 0x4b, 0x0b, 0xe8, 0xa5, 0x14, 0x47, 0xf9, 0xdd, + 0xa7, 0x38, 0x52, 0x7f, 0x21, 0x03, 0x17, 0x35, 0x6a, 0xd1, 0x75, 0x7d, 0xa9, 0x41, 0xa5, 0x66, + 0x89, 0x95, 0x81, 0xcd, 0x1a, 0xa6, 0xdb, 0xd4, 0xbd, 0xfa, 0xea, 0xbe, 0x64, 0x34, 0x05, 0x43, + 0xf2, 0xfc, 0xb5, 0x8b, 0xb9, 0x2d, 0x52, 0x4e, 0xfd, 0xef, 0x39, 0xe8, 0x1b, 0xb7, 0xbd, 0x57, + 0xed, 0x7d, 0xe6, 0xdc, 0x0a, 0xa7, 0xfc, 0xec, 0x2e, 0xce, 0x45, 0x3e, 0x88, 0x95, 0x4b, 0x61, + 0xc8, 0xd1, 0x2d, 0x6f, 0xc9, 0x4e, 0x84, 0x6b, 0xf7, 0xc9, 0x76, 0x99, 0x6d, 0xeb, 0x59, 0x18, + 0xc0, 0x38, 0x16, 0xd2, 0xc9, 0x25, 0x3a, 0xbd, 0x7a, 0x0c, 0x18, 0xaf, 0x23, 0x24, 0x25, 0x1f, + 0x8f, 0x44, 0x4f, 0x2c, 0xec, 0x3f, 0x3b, 0x97, 0x1c, 0x48, 0xf1, 0xe0, 0x92, 0x60, 0x4d, 0xc0, + 0xf0, 0xb8, 0xed, 0x49, 0xbe, 0x92, 0x03, 0xe1, 0x2b, 0x39, 0x26, 0xc4, 0x74, 0x47, 0xc9, 0x68, + 0x19, 0xf5, 0x5b, 0x79, 0x18, 0xf2, 0x7f, 0x1e, 0x92, 0x1a, 0x3c, 0x09, 0x85, 0x69, 0x5b, 0x8a, + 0xcb, 0x8e, 0xfe, 0x95, 0xab, 0xb6, 0x1b, 0x73, 0x1c, 0x15, 0x44, 0xe4, 0x69, 0xe8, 0x9f, 0xb3, + 0x0d, 0xd9, 0x3b, 0x18, 0x27, 0x06, 0xcb, 0x36, 0x12, 0xaf, 0x2b, 0x03, 0x42, 0x72, 0x11, 0xf2, + 0xe8, 0x58, 0x2d, 0x9d, 0x5f, 0xc7, 0x9c, 0xa9, 0x11, 0x2f, 0x29, 0x58, 0x61, 0xb7, 0x0a, 0xd6, + 0xb7, 0x57, 0x05, 0xeb, 0x3f, 0x58, 0x05, 0x7b, 0x1d, 0x86, 0xb0, 0x26, 0x3f, 0xad, 0xd3, 0xf6, + 0x6b, 0xe4, 0x83, 0x62, 0x19, 0x1b, 0xe6, 0xed, 0x16, 0xc9, 0x9d, 0x70, 0xf5, 0x8a, 0xb0, 0x8a, + 0xe9, 0x2e, 0xec, 0x63, 0x67, 0xfc, 0x87, 0x19, 0xe8, 0xbb, 0x65, 0xad, 0x59, 0xf6, 0xfa, 0xfe, + 0x34, 0xee, 0x69, 0x18, 0x14, 0x6c, 0xa4, 0x85, 0x02, 0x1f, 0xcc, 0xb6, 0x39, 0xb8, 0x86, 0x9c, + 0x34, 0x99, 0x8a, 0xbc, 0x18, 0x14, 0xc2, 0xb7, 0x13, 0xb9, 0x30, 0xb3, 0x81, 0x5f, 0xa8, 0x1e, + 0x0d, 0xc6, 0x2e, 0x93, 0x93, 0x73, 0x90, 0x2f, 0xb3, 0xa6, 0x4a, 0xa1, 0x3d, 0x59, 0x53, 0x34, + 0x84, 0xaa, 0xbf, 0x93, 0x85, 0x91, 0xd8, 0x19, 0xd6, 0xe3, 0x30, 0x20, 0xce, 0x90, 0x4c, 0x3f, + 0x3a, 0x3c, 0xbe, 0xad, 0x08, 0x80, 0x5a, 0x3f, 0xff, 0xb3, 0x62, 0x90, 0x8f, 0x40, 0x9f, 0xed, + 0xe2, 0xfa, 0x86, 0xdf, 0x32, 0x12, 0x0e, 0xa1, 0xf9, 0x2a, 0x6b, 0x3b, 0x1f, 0x1c, 0x82, 0x44, + 0xd6, 0x48, 0xdb, 0xc5, 0x4f, 0xbb, 0x0e, 0x03, 0xba, 0xeb, 0x52, 0xaf, 0xe6, 0xe9, 0x2b, 0x72, + 0xc0, 0xf8, 0x00, 0x28, 0x8f, 0x0e, 0x04, 0x2e, 0xea, 0x2b, 0xe4, 0x15, 0x18, 0xae, 0x3b, 0x14, + 0x57, 0x40, 0xbd, 0xc1, 0x5a, 0x29, 0x59, 0xa8, 0x11, 0x84, 0x7c, 0x6d, 0x10, 0x22, 0x2a, 0x06, + 0xb9, 0x0d, 0xc3, 0xe2, 0x73, 0xb8, 0x63, 0x33, 0x0e, 0xb4, 0x91, 0x70, 0x45, 0xe2, 0x22, 0xe1, + 0xae, 0xcd, 0xc2, 0xbf, 0x5d, 0x26, 0x97, 0xf9, 0x1a, 0x12, 0xa9, 0xfa, 0xf5, 0x0c, 0xb3, 0x9a, + 0x18, 0x00, 0x13, 0xad, 0x32, 0x5d, 0x69, 0xee, 0x52, 0x57, 0x9a, 0x61, 0x4a, 0xb4, 0x82, 0xdb, + 0x65, 0x76, 0xd2, 0x04, 0x96, 0x5c, 0x81, 0x82, 0x21, 0x1f, 0x20, 0x9d, 0x8e, 0x7e, 0x84, 0x5f, + 0x8f, 0x26, 0xa8, 0xc8, 0x25, 0xc8, 0x33, 0xab, 0x38, 0xbe, 0x7b, 0x94, 0x17, 0x5a, 0x0d, 0x29, + 0xd4, 0xef, 0xcc, 0xc2, 0x90, 0xf4, 0x35, 0xd7, 0xf6, 0xf5, 0x39, 0x2f, 0xec, 0xac, 0x99, 0xbe, + 0xaf, 0x04, 0x6e, 0x2b, 0xfc, 0x26, 0x5f, 0x0f, 0x44, 0xb1, 0xa3, 0x7b, 0x0c, 0x21, 0x98, 0x67, + 0xc5, 0x87, 0x16, 0x76, 0xbe, 0x93, 0x62, 0xf4, 0xaf, 0xe6, 0xfb, 0xb3, 0xa3, 0xb9, 0x57, 0xf3, + 0xfd, 0xf9, 0xd1, 0x5e, 0x0c, 0xae, 0x83, 0xf1, 0x6c, 0xf9, 0x36, 0xd5, 0x5a, 0x36, 0x57, 0x8e, + 0xb8, 0x6b, 0xfa, 0xc1, 0x06, 0x1e, 0x8a, 0xc9, 0xe6, 0x88, 0xfb, 0xa9, 0xbf, 0xa3, 0xb2, 0x39, + 0x4e, 0xa1, 0x26, 0x64, 0xf3, 0x47, 0x19, 0x50, 0x52, 0x65, 0x53, 0x3a, 0xa4, 0xeb, 0xf3, 0x83, + 0x4b, 0xa4, 0xf6, 0xcd, 0x2c, 0x8c, 0x55, 0x2c, 0x8f, 0xae, 0xf0, 0xcd, 0xd3, 0x11, 0x9f, 0x2a, + 0x6e, 0xc2, 0xa0, 0xf4, 0x31, 0xa2, 0xcf, 0x1f, 0x0a, 0xb6, 0xa6, 0x21, 0xaa, 0x03, 0x27, 0xb9, + 0xf4, 0x01, 0xe6, 0x5e, 0x8e, 0x09, 0xf9, 0x88, 0xcf, 0x39, 0x47, 0x43, 0xc8, 0x47, 0x7c, 0xf2, + 0x7a, 0x97, 0x0a, 0xf9, 0xdf, 0x67, 0xe0, 0x64, 0x4a, 0xe5, 0xe4, 0x22, 0xf4, 0x55, 0xdb, 0x4b, + 0x18, 0xd5, 0x27, 0x13, 0x3a, 0x9a, 0xba, 0xed, 0x25, 0x0c, 0xe8, 0xa3, 0xf9, 0x48, 0xb2, 0x88, + 0x6f, 0x77, 0xe7, 0x2b, 0xe5, 0x09, 0x21, 0x55, 0x55, 0x7a, 0x85, 0xcc, 0xc0, 0x69, 0x5f, 0x16, + 0xbc, 0xef, 0xb5, 0x4d, 0xa3, 0x1e, 0x7b, 0xdf, 0xcb, 0xca, 0x90, 0x4f, 0xc0, 0x40, 0xe9, 0xad, + 0xb6, 0x43, 0x91, 0x2f, 0x97, 0xf8, 0xfb, 0x02, 0xbe, 0x3e, 0x22, 0x8d, 0x33, 0x7f, 0xaa, 0xcc, + 0x28, 0xe2, 0xbc, 0x43, 0x86, 0xea, 0xe7, 0x33, 0x70, 0xb6, 0x73, 0xeb, 0xc8, 0x07, 0xa1, 0x8f, + 0xed, 0x6c, 0x4b, 0xda, 0x9c, 0xf8, 0x74, 0x9e, 0x74, 0xd0, 0x6e, 0xd0, 0x9a, 0xee, 0xc8, 0x86, + 0xb7, 0x4f, 0x46, 0x5e, 0x82, 0xc1, 0x8a, 0xeb, 0xb6, 0xa9, 0x53, 0x7d, 0xfa, 0x96, 0x56, 0x11, + 0x7b, 0x2a, 0xb4, 0xd9, 0x4d, 0x04, 0xd7, 0xdc, 0xa7, 0x63, 0x71, 0x7b, 0x64, 0x7a, 0xf5, 0x33, + 0x19, 0x38, 0xd7, 0xed, 0xab, 0xd8, 0x06, 0x7e, 0x91, 0x5a, 0xba, 0xc5, 0x76, 0xfc, 0x99, 0x70, + 0x8b, 0xe2, 0x21, 0x2c, 0xba, 0xc9, 0x08, 0x08, 0x59, 0x21, 0x7e, 0xc4, 0x16, 0xdc, 0xe9, 0xf3, + 0xe3, 0x40, 0x84, 0xc5, 0x0a, 0xf9, 0x84, 0xea, 0xef, 0xe8, 0xd0, 0x3b, 0x6f, 0xd1, 0xf9, 0x65, + 0xf2, 0x94, 0x94, 0x5d, 0x5e, 0x0c, 0xb4, 0x31, 0x79, 0xc0, 0x20, 0x62, 0xba, 0x47, 0x93, 0x72, + 0xd0, 0x5f, 0x97, 0xd3, 0x0c, 0x0b, 0x75, 0x20, 0x72, 0x19, 0x8e, 0x99, 0xee, 0xd1, 0xe4, 0x74, + 0xc4, 0xd7, 0xe5, 0xf4, 0xae, 0xa2, 0xb3, 0x23, 0xa5, 0x38, 0xc6, 0x2f, 0x25, 0xa6, 0x81, 0x99, + 0xb4, 0x1c, 0xa8, 0x71, 0x9b, 0x20, 0x49, 0x31, 0xdd, 0xa3, 0xa5, 0xe7, 0x4e, 0x1d, 0x92, 0xbd, + 0x6b, 0xe2, 0xb7, 0x7a, 0x32, 0x6e, 0xba, 0x47, 0x8b, 0xd0, 0x92, 0xe7, 0x60, 0x50, 0xfc, 0x7e, + 0xd5, 0x36, 0xad, 0xf8, 0x03, 0x7e, 0x09, 0x35, 0xdd, 0xa3, 0xc9, 0x94, 0x52, 0xa5, 0x0b, 0x8e, + 0x19, 0x24, 0x88, 0x8f, 0x57, 0x8a, 0x38, 0xa9, 0x52, 0xfc, 0x4d, 0x5e, 0x82, 0xe1, 0x20, 0x32, + 0xc2, 0x9b, 0xb4, 0xee, 0x89, 0x23, 0x91, 0x07, 0x62, 0x85, 0x39, 0x72, 0xba, 0x47, 0x8b, 0x52, + 0x93, 0x4b, 0x50, 0xd0, 0xa8, 0x6b, 0xbe, 0xe5, 0xdf, 0x07, 0x8c, 0x48, 0xd3, 0x99, 0xf9, 0x16, + 0x93, 0x92, 0xc0, 0xb3, 0xde, 0x09, 0x2f, 0x20, 0xc4, 0x01, 0x06, 0x89, 0xd5, 0x32, 0x69, 0x19, + 0xac, 0x77, 0xa4, 0xdb, 0xa7, 0x57, 0xc2, 0x78, 0x11, 0x22, 0xb7, 0xd3, 0x60, 0xfc, 0x61, 0x9e, + 0x8c, 0x9d, 0xee, 0xd1, 0x62, 0xf4, 0x92, 0x54, 0xcb, 0xa6, 0xbb, 0x26, 0x42, 0x74, 0xc5, 0xa5, + 0xca, 0x50, 0x92, 0x54, 0xd9, 0x4f, 0xa9, 0xea, 0x39, 0xea, 0xad, 0xdb, 0xce, 0x9a, 0x08, 0xc8, + 0x15, 0xaf, 0x5a, 0x60, 0xa5, 0xaa, 0x05, 0x44, 0xae, 0x9a, 0x2d, 0x32, 0x23, 0xe9, 0x55, 0xeb, + 0x9e, 0x2e, 0x57, 0xcd, 0xf7, 0x97, 0x7e, 0x27, 0xcd, 0x50, 0xfd, 0x2e, 0x4f, 0xb1, 0x99, 0xec, + 0x50, 0xc4, 0x49, 0x1d, 0x8a, 0xbf, 0x59, 0xa5, 0x52, 0x1a, 0x45, 0x91, 0x43, 0x33, 0xa8, 0x54, + 0x42, 0xb1, 0x4a, 0xe5, 0x84, 0x8b, 0xd7, 0xe5, 0xec, 0x82, 0xca, 0x58, 0xb4, 0x83, 0x42, 0x0c, + 0xeb, 0x20, 0x29, 0x0b, 0x61, 0x11, 0x33, 0x97, 0x29, 0x04, 0xc9, 0x07, 0x83, 0x16, 0x4e, 0x2c, + 0x4c, 0xf7, 0x68, 0x98, 0xd3, 0x4c, 0xe5, 0x39, 0xf1, 0x94, 0x93, 0x48, 0x31, 0xe4, 0x53, 0x30, + 0xd8, 0x74, 0x8f, 0xc6, 0xf3, 0xe5, 0x3d, 0x25, 0x65, 0x9f, 0x51, 0x4e, 0x45, 0xa7, 0x88, 0x00, + 0xc1, 0xa6, 0x88, 0x30, 0x47, 0xcd, 0x54, 0x32, 0x43, 0x8b, 0xf2, 0x40, 0x74, 0x45, 0x8d, 0xe3, + 0xa7, 0x7b, 0xb4, 0x64, 0x56, 0x97, 0xe7, 0x22, 0x49, 0x4b, 0x94, 0xd3, 0xb1, 0xa8, 0x19, 0x21, + 0x8a, 0x89, 0x4b, 0x4e, 0x6f, 0x32, 0x9f, 0x9a, 0x66, 0x58, 0x39, 0x13, 0x5d, 0x8e, 0x53, 0x48, + 0xa6, 0x7b, 0xb4, 0xd4, 0x04, 0xc5, 0x13, 0x89, 0xd4, 0x21, 0x8a, 0x12, 0xbd, 0xfc, 0x8c, 0xa1, + 0xa7, 0x7b, 0xb4, 0x44, 0xb2, 0x91, 0xeb, 0x72, 0xce, 0x0e, 0xe5, 0xc1, 0x68, 0x27, 0x86, 0x18, + 0xd6, 0x89, 0x52, 0x6e, 0x8f, 0xeb, 0x72, 0x1e, 0x07, 0xe5, 0x6c, 0xb2, 0x54, 0x38, 0x73, 0x4a, + 0xf9, 0x1e, 0xb4, 0xf4, 0xd0, 0xf4, 0xca, 0x43, 0x22, 0x39, 0x98, 0x28, 0x9f, 0x46, 0x33, 0xdd, + 0xa3, 0xa5, 0x87, 0xb5, 0xd7, 0xd2, 0x63, 0xba, 0x2b, 0xe7, 0xba, 0xf1, 0x0c, 0x5a, 0x97, 0x1e, + 0x0f, 0x5e, 0xef, 0x12, 0x61, 0x5b, 0x39, 0x1f, 0x0d, 0xd9, 0xd7, 0x91, 0x70, 0xba, 0x47, 0xeb, + 0x12, 0xa7, 0xfb, 0x56, 0x87, 0x70, 0xd7, 0xca, 0x85, 0x68, 0x6e, 0xc0, 0x54, 0xa2, 0xe9, 0x1e, + 0xad, 0x43, 0xb0, 0xec, 0x5b, 0x1d, 0xa2, 0x21, 0x2b, 0xc5, 0xae, 0x6c, 0x03, 0x79, 0x74, 0x88, + 0xa5, 0x3c, 0x9f, 0x1a, 0x48, 0x58, 0x79, 0x38, 0xaa, 0xba, 0x29, 0x24, 0x4c, 0x75, 0xd3, 0x42, + 0x10, 0xcf, 0xa7, 0x46, 0xbe, 0x55, 0x1e, 0xe9, 0xc2, 0x30, 0x68, 0x63, 0x6a, 0xcc, 0xdc, 0xf9, + 0xd4, 0xd0, 0xb3, 0x8a, 0x1a, 0x65, 0x98, 0x42, 0xc2, 0x18, 0xa6, 0x05, 0xad, 0x9d, 0x4f, 0x8d, + 0x95, 0xaa, 0x3c, 0xda, 0x85, 0x61, 0xd8, 0xc2, 0xb4, 0x28, 0xab, 0xcf, 0x45, 0x82, 0x95, 0x2a, + 0xef, 0x8b, 0xce, 0x1b, 0x12, 0x8a, 0xcd, 0x1b, 0x72, 0x58, 0xd3, 0x89, 0x44, 0x38, 0x36, 0xe5, + 0xb1, 0xe8, 0x30, 0x8f, 0xa1, 0xd9, 0x30, 0x8f, 0x07, 0x70, 0x9b, 0x48, 0x84, 0xa5, 0x52, 0x2e, + 0x76, 0x62, 0x82, 0xe8, 0x28, 0x13, 0x1e, 0xc8, 0xaa, 0x92, 0x12, 0x17, 0x49, 0x79, 0x7f, 0xd4, + 0x71, 0x2f, 0x41, 0x30, 0xdd, 0xa3, 0xa5, 0x44, 0x53, 0xd2, 0xd2, 0x83, 0x00, 0x28, 0x97, 0xa2, + 0xc3, 0x36, 0x8d, 0x86, 0x0d, 0xdb, 0xd4, 0x00, 0x02, 0x33, 0x69, 0x4e, 0xba, 0xca, 0xe5, 0xa8, + 0x61, 0x96, 0xa4, 0x60, 0x86, 0x59, 0x8a, 0x73, 0xaf, 0x96, 0xfe, 0xac, 0x5d, 0x79, 0xbc, 0x6b, + 0x0b, 0x91, 0x26, 0xa5, 0x85, 0xfc, 0x95, 0x77, 0x68, 0x3b, 0xdd, 0x6a, 0x35, 0x6c, 0xdd, 0x50, + 0x3e, 0x90, 0x6a, 0x3b, 0x71, 0xa4, 0x64, 0x3b, 0x71, 0x00, 0x5b, 0xe5, 0x65, 0x27, 0x56, 0xe5, + 0x89, 0xe8, 0x2a, 0x2f, 0xe3, 0xd8, 0x2a, 0x1f, 0x71, 0x78, 0x9d, 0x48, 0x38, 0x7c, 0x2a, 0x4f, + 0x46, 0x15, 0x20, 0x86, 0x66, 0x0a, 0x10, 0x77, 0x11, 0x7d, 0xa3, 0xb3, 0x8b, 0xa4, 0x72, 0x05, + 0xb9, 0x3d, 0xec, 0x73, 0xeb, 0x44, 0x37, 0xdd, 0xa3, 0x75, 0x76, 0xb3, 0xac, 0xa4, 0x78, 0x3c, + 0x2a, 0x57, 0xa3, 0x0a, 0x96, 0x20, 0x60, 0x0a, 0x96, 0xf4, 0x93, 0xac, 0xa4, 0xb8, 0x2c, 0x2a, + 0x1f, 0xec, 0xc8, 0x2a, 0xf8, 0xe6, 0x14, 0x47, 0xc7, 0xeb, 0xb2, 0xcf, 0xa1, 0xf2, 0x54, 0x74, + 0xb1, 0x0b, 0x31, 0x6c, 0xb1, 0x93, 0x7c, 0x13, 0xaf, 0xcb, 0xde, 0x76, 0xca, 0xb5, 0x64, 0xa9, + 0x70, 0x89, 0x94, 0xbc, 0xf2, 0xb4, 0x74, 0x27, 0x35, 0xe5, 0xe9, 0xa8, 0xd6, 0xa5, 0xd1, 0x30, + 0xad, 0x4b, 0x75, 0x70, 0x9b, 0x4a, 0xfa, 0x9a, 0x29, 0xd7, 0xe3, 0x67, 0x09, 0x51, 0x3c, 0xb3, + 0x7c, 0x12, 0xfe, 0x69, 0xaf, 0xc4, 0x23, 0xd4, 0x28, 0xcf, 0xc4, 0x2e, 0x33, 0x22, 0x58, 0x66, + 0xdf, 0xc6, 0x22, 0xda, 0xbc, 0x12, 0x0f, 0xea, 0xa2, 0x3c, 0x9b, 0xce, 0x21, 0xd0, 0x95, 0x78, + 0x10, 0x98, 0x57, 0xe2, 0x71, 0x50, 0x94, 0xe7, 0xd2, 0x39, 0x04, 0xd2, 0x8d, 0xc7, 0x4d, 0x79, + 0x4a, 0x8a, 0xcc, 0xaa, 0x7c, 0x28, 0x6a, 0x3a, 0x06, 0x08, 0x66, 0x3a, 0x86, 0xf1, 0x5b, 0x9f, + 0x92, 0x22, 0x9a, 0x2a, 0xcf, 0x27, 0x8a, 0x04, 0x8d, 0x95, 0xe2, 0x9e, 0x3e, 0x25, 0x45, 0x02, + 0x55, 0x5e, 0x48, 0x14, 0x09, 0x5a, 0x27, 0xc5, 0x0b, 0x35, 0xba, 0x3d, 0xe6, 0x51, 0x3e, 0x1c, + 0x3d, 0xe2, 0xe8, 0x4c, 0x39, 0xdd, 0xa3, 0x75, 0x7b, 0x14, 0xf4, 0x46, 0x67, 0xcf, 0x3d, 0xe5, + 0xc5, 0xe8, 0x10, 0xee, 0x44, 0xc7, 0x86, 0x70, 0x47, 0xef, 0xbf, 0x97, 0x62, 0x0f, 0x7b, 0x95, + 0x97, 0xa2, 0x53, 0x5c, 0x04, 0xc9, 0xa6, 0xb8, 0xf8, 0x33, 0xe0, 0xc8, 0x8b, 0x55, 0xe5, 0x23, + 0xd1, 0x29, 0x4e, 0xc6, 0xb1, 0x29, 0x2e, 0xf2, 0xba, 0x75, 0x22, 0xf1, 0x90, 0x52, 0x79, 0x39, + 0x3a, 0xc5, 0xc5, 0xd0, 0x6c, 0x8a, 0x8b, 0x3f, 0xbd, 0x7c, 0x29, 0xf6, 0x9e, 0x50, 0x79, 0x25, + 0xbd, 0xfd, 0x88, 0x94, 0xdb, 0xcf, 0x5f, 0x1f, 0x6a, 0xe9, 0x0f, 0xe3, 0x94, 0x52, 0x74, 0xfc, + 0xa6, 0xd1, 0xb0, 0xf1, 0x9b, 0xfa, 0xa8, 0x6e, 0x3e, 0x35, 0x33, 0xbf, 0x32, 0xde, 0x65, 0xe3, + 0x10, 0x9a, 0x22, 0x69, 0x39, 0xfd, 0xe5, 0x3d, 0x32, 0xdf, 0x08, 0x4d, 0x74, 0xd8, 0x23, 0xfb, + 0xdb, 0xa0, 0x18, 0x3d, 0x9b, 0x5d, 0x13, 0x8e, 0x64, 0x4a, 0x39, 0x3a, 0xbb, 0x26, 0x08, 0xd8, + 0xec, 0x9a, 0x74, 0x3f, 0x9b, 0x82, 0x51, 0xa1, 0x45, 0xdc, 0x3f, 0xce, 0xb4, 0x56, 0x94, 0xc9, + 0xd8, 0xbb, 0x94, 0x18, 0x9e, 0xcd, 0x4e, 0x71, 0x18, 0xae, 0xd7, 0x1c, 0x36, 0xd1, 0x30, 0x5b, + 0x4b, 0xb6, 0xee, 0x18, 0x55, 0x6a, 0x19, 0xca, 0x54, 0x6c, 0xbd, 0x4e, 0xa1, 0xc1, 0xf5, 0x3a, + 0x05, 0x8e, 0x51, 0x59, 0x62, 0x70, 0x8d, 0xd6, 0xa9, 0x79, 0x97, 0x2a, 0x37, 0x90, 0x6d, 0xb1, + 0x13, 0x5b, 0x41, 0x36, 0xdd, 0xa3, 0x75, 0xe2, 0xc0, 0x6c, 0xf5, 0xd9, 0x8d, 0xea, 0x6b, 0x33, + 0xc1, 0x5b, 0xcc, 0x05, 0x87, 0xb6, 0x74, 0x87, 0x2a, 0xd3, 0x51, 0x5b, 0x3d, 0x95, 0x88, 0xd9, + 0xea, 0xa9, 0x88, 0x24, 0x5b, 0x7f, 0x2c, 0x54, 0xba, 0xb1, 0x0d, 0x47, 0x44, 0x7a, 0x69, 0x36, + 0x3b, 0x45, 0x11, 0x4c, 0x40, 0x33, 0xb6, 0xb5, 0x82, 0x27, 0x15, 0xaf, 0x46, 0x67, 0xa7, 0xce, + 0x94, 0x6c, 0x76, 0xea, 0x8c, 0x65, 0xaa, 0x1e, 0xc5, 0xf2, 0x31, 0x78, 0x33, 0xaa, 0xea, 0x29, + 0x24, 0x4c, 0xd5, 0x53, 0xc0, 0x49, 0x86, 0x1a, 0x75, 0xa9, 0xa7, 0xcc, 0x74, 0x63, 0x88, 0x24, + 0x49, 0x86, 0x08, 0x4e, 0x32, 0x9c, 0xa2, 0x5e, 0x7d, 0x55, 0x99, 0xed, 0xc6, 0x10, 0x49, 0x92, + 0x0c, 0x11, 0xcc, 0x36, 0x9b, 0x51, 0xf0, 0x78, 0xbb, 0xb1, 0xe6, 0xf7, 0xd9, 0x5c, 0x74, 0xb3, + 0xd9, 0x91, 0x90, 0x6d, 0x36, 0x3b, 0x22, 0xc9, 0x67, 0x76, 0xec, 0xe8, 0xa8, 0xcc, 0x63, 0x85, + 0x57, 0x42, 0xbb, 0x60, 0x27, 0xa5, 0xa6, 0x7b, 0xb4, 0x9d, 0x3a, 0x52, 0x7e, 0x20, 0x70, 0x25, + 0x52, 0x16, 0xb0, 0xaa, 0x13, 0xc1, 0x59, 0x05, 0x07, 0x4f, 0xf7, 0x68, 0x81, 0xb3, 0xd1, 0x73, + 0x30, 0x88, 0x1f, 0x55, 0xb1, 0x4c, 0xaf, 0x3c, 0xae, 0xbc, 0x16, 0xdd, 0x32, 0x49, 0x28, 0xb6, + 0x65, 0x92, 0x7e, 0xb2, 0x49, 0x1c, 0x7f, 0xf2, 0x29, 0xa6, 0x3c, 0xae, 0x68, 0xd1, 0x49, 0x3c, + 0x82, 0x64, 0x93, 0x78, 0x04, 0x10, 0xd4, 0x5b, 0x76, 0xec, 0x56, 0x79, 0x5c, 0xa9, 0xa6, 0xd4, + 0xcb, 0x51, 0x41, 0xbd, 0xfc, 0x67, 0x50, 0x6f, 0x75, 0xb5, 0xed, 0x95, 0xd9, 0x37, 0x2e, 0xa6, + 0xd4, 0xeb, 0x23, 0x83, 0x7a, 0x7d, 0x00, 0x9b, 0x0a, 0x11, 0xb0, 0xe0, 0xd8, 0x6c, 0xd2, 0xbe, + 0x69, 0x36, 0x1a, 0xca, 0xad, 0xe8, 0x54, 0x18, 0xc7, 0xb3, 0xa9, 0x30, 0x0e, 0x63, 0xa6, 0x27, + 0x6f, 0x15, 0x5d, 0x6a, 0xaf, 0x28, 0xb7, 0xa3, 0xa6, 0x67, 0x88, 0x61, 0xa6, 0x67, 0xf8, 0x0b, + 0x77, 0x17, 0xec, 0x97, 0x46, 0x97, 0x1d, 0xea, 0xae, 0x2a, 0x77, 0x62, 0xbb, 0x0b, 0x09, 0x87, + 0xbb, 0x0b, 0xe9, 0x37, 0x59, 0x81, 0x87, 0x22, 0x0b, 0x8d, 0x7f, 0xf7, 0x54, 0xa5, 0xba, 0x53, + 0x5f, 0x55, 0x3e, 0x8a, 0xac, 0x1e, 0x4d, 0x5d, 0xaa, 0xa2, 0xa4, 0xd3, 0x3d, 0x5a, 0x37, 0x4e, + 0xb8, 0x2d, 0x7f, 0x6d, 0x86, 0x87, 0x4f, 0xd3, 0x16, 0x26, 0xfc, 0x4d, 0xe8, 0xeb, 0xb1, 0x6d, + 0x79, 0x92, 0x04, 0xb7, 0xe5, 0x49, 0x30, 0x69, 0xc1, 0x85, 0xd8, 0x56, 0x6d, 0x56, 0x6f, 0xb0, + 0x7d, 0x09, 0x35, 0x16, 0xf4, 0xfa, 0x1a, 0xf5, 0x94, 0x8f, 0x21, 0xef, 0x8b, 0x1d, 0x36, 0x7c, + 0x31, 0xea, 0xe9, 0x1e, 0x6d, 0x1b, 0x7e, 0x44, 0xe5, 0xb9, 0xdf, 0x95, 0x8f, 0x47, 0xcf, 0x37, + 0x19, 0x6c, 0xba, 0x47, 0xe3, 0x79, 0xe1, 0xdf, 0x00, 0xe5, 0x56, 0x6b, 0xc5, 0xd1, 0x0d, 0xca, + 0x0d, 0x2d, 0xb4, 0xdd, 0x84, 0x01, 0xfa, 0x89, 0xa8, 0x95, 0xd6, 0x89, 0x8e, 0x59, 0x69, 0x9d, + 0x70, 0x4c, 0x51, 0x23, 0x91, 0xc2, 0x95, 0x4f, 0x46, 0x15, 0x35, 0x82, 0x64, 0x8a, 0x1a, 0x8d, + 0x2b, 0xfe, 0x51, 0x38, 0x1d, 0xec, 0xe7, 0xc5, 0xfa, 0xcb, 0x3b, 0x4d, 0x79, 0x03, 0xf9, 0x5c, + 0x48, 0x5c, 0x06, 0x44, 0xa8, 0xa6, 0x7b, 0xb4, 0x0e, 0xe5, 0xd9, 0x8a, 0x9b, 0x48, 0x82, 0x21, + 0xcc, 0x8b, 0xef, 0x88, 0xae, 0xb8, 0x1d, 0xc8, 0xd8, 0x8a, 0xdb, 0x01, 0x95, 0xca, 0x5c, 0x08, + 0x55, 0xdf, 0x86, 0x79, 0x20, 0xd3, 0x4e, 0x1c, 0x52, 0x99, 0x0b, 0x4b, 0x6d, 0x69, 0x1b, 0xe6, + 0x81, 0xb5, 0xd6, 0x89, 0x03, 0xb9, 0x04, 0x85, 0x6a, 0x75, 0x56, 0x6b, 0x5b, 0x4a, 0x3d, 0xe6, + 0x03, 0x86, 0xd0, 0xe9, 0x1e, 0x4d, 0xe0, 0x99, 0x19, 0x34, 0xd9, 0xd0, 0x5d, 0xcf, 0xac, 0xbb, + 0x38, 0x62, 0xfc, 0x11, 0x62, 0x44, 0xcd, 0xa0, 0x34, 0x1a, 0x66, 0x06, 0xa5, 0xc1, 0x99, 0xbd, + 0x38, 0xa1, 0xbb, 0xae, 0x6e, 0x19, 0x8e, 0x3e, 0x8e, 0xcb, 0x04, 0x8d, 0xb9, 0xdb, 0x47, 0xb0, + 0xcc, 0x5e, 0x8c, 0x42, 0xf0, 0xf0, 0xdd, 0x87, 0xf8, 0x66, 0xce, 0x72, 0xec, 0xf0, 0x3d, 0x86, + 0xc7, 0xc3, 0xf7, 0x18, 0x0c, 0xed, 0x4e, 0x1f, 0xa6, 0xd1, 0x15, 0x93, 0x89, 0x48, 0x59, 0x89, + 0xd9, 0x9d, 0x71, 0x02, 0xb4, 0x3b, 0xe3, 0xc0, 0x48, 0x93, 0xfc, 0xe5, 0x76, 0xb5, 0x43, 0x93, + 0xc2, 0x55, 0x36, 0x51, 0x86, 0xad, 0xdf, 0xe1, 0xe0, 0x28, 0x6f, 0x58, 0x7a, 0xd3, 0x2e, 0x8f, + 0xfb, 0x52, 0x37, 0xa3, 0xeb, 0x77, 0x47, 0x42, 0xb6, 0x7e, 0x77, 0x44, 0xb2, 0xd9, 0xd5, 0xdf, + 0x68, 0xad, 0xea, 0x0e, 0x35, 0xca, 0xa6, 0x83, 0x27, 0x8b, 0x1b, 0x7c, 0x6b, 0xf8, 0x66, 0x74, + 0x76, 0xed, 0x42, 0xca, 0x66, 0xd7, 0x2e, 0x68, 0x66, 0xe4, 0xa5, 0xa3, 0x35, 0xaa, 0x1b, 0xca, + 0x5a, 0xd4, 0xc8, 0xeb, 0x4c, 0xc9, 0x8c, 0xbc, 0xce, 0xd8, 0xce, 0x9f, 0x73, 0xc7, 0x31, 0x3d, + 0xaa, 0x34, 0x76, 0xf2, 0x39, 0x48, 0xda, 0xf9, 0x73, 0x10, 0xcd, 0x36, 0x84, 0xf1, 0x0e, 0x69, + 0x46, 0x37, 0x84, 0xc9, 0x6e, 0x88, 0x97, 0x60, 0x16, 0x8b, 0x78, 0x75, 0xa1, 0x58, 0x51, 0x8b, + 0x45, 0x80, 0x99, 0xc5, 0x12, 0xbe, 0xcb, 0x88, 0x38, 0xe8, 0x2b, 0x76, 0x74, 0x0d, 0x95, 0x71, + 0x6c, 0x0d, 0x8d, 0x38, 0xf3, 0x3f, 0x17, 0xf1, 0x9e, 0x55, 0x5a, 0x51, 0xab, 0x43, 0x42, 0x31, + 0xab, 0x43, 0xf6, 0xb3, 0x9d, 0x80, 0x13, 0x78, 0x0b, 0xae, 0xb5, 0x83, 0x7b, 0x9c, 0x4f, 0x45, + 0x3f, 0x33, 0x86, 0x66, 0x9f, 0x19, 0x03, 0x45, 0x98, 0x88, 0x69, 0xcb, 0xe9, 0xc0, 0x24, 0x3c, + 0x1f, 0x8c, 0x81, 0xc8, 0x0c, 0x90, 0x6a, 0x69, 0x76, 0xa6, 0x62, 0x2c, 0xc8, 0x57, 0x64, 0x6e, + 0xf4, 0x04, 0x36, 0x49, 0x31, 0xdd, 0xa3, 0xa5, 0x94, 0x23, 0x6f, 0xc2, 0x39, 0x01, 0x15, 0x4f, + 0xea, 0x30, 0x43, 0xad, 0x11, 0x2c, 0x08, 0x5e, 0xd4, 0x3b, 0xa3, 0x1b, 0xed, 0x74, 0x8f, 0xd6, + 0x95, 0x57, 0xe7, 0xba, 0xc4, 0xfa, 0xd0, 0xde, 0x49, 0x5d, 0xc1, 0x22, 0xd1, 0x95, 0x57, 0xe7, + 0xba, 0x84, 0xdc, 0xef, 0xee, 0xa4, 0xae, 0xa0, 0x13, 0xba, 0xf2, 0x22, 0x2e, 0x14, 0xbb, 0xe1, + 0x4b, 0x8d, 0x86, 0xb2, 0x8e, 0xd5, 0xbd, 0x7f, 0x27, 0xd5, 0x95, 0xd0, 0xe0, 0xdc, 0x8e, 0x23, + 0x9b, 0xa5, 0xe7, 0x5b, 0xd4, 0xaa, 0x46, 0x16, 0xa0, 0x7b, 0xd1, 0x59, 0x3a, 0x41, 0xc0, 0x66, + 0xe9, 0x04, 0x90, 0x0d, 0x28, 0xd9, 0x09, 0x5b, 0xd9, 0x88, 0x0e, 0x28, 0x19, 0xc7, 0x06, 0x54, + 0xc4, 0x61, 0x7b, 0x1e, 0x4e, 0xce, 0xaf, 0x79, 0xba, 0x6f, 0x41, 0xba, 0xa2, 0x2b, 0xdf, 0x8a, + 0x5d, 0x32, 0x25, 0x49, 0xf0, 0x92, 0x29, 0x09, 0x66, 0x63, 0x84, 0x81, 0xab, 0x1b, 0x56, 0x7d, + 0x4a, 0x37, 0x1b, 0x6d, 0x87, 0x2a, 0xff, 0x53, 0x74, 0x8c, 0xc4, 0xd0, 0x6c, 0x8c, 0xc4, 0x40, + 0x6c, 0x81, 0x66, 0xa0, 0x92, 0xeb, 0x9a, 0x2b, 0x96, 0xd8, 0x57, 0xb6, 0x1b, 0x9e, 0xf2, 0x3f, + 0x47, 0x17, 0xe8, 0x34, 0x1a, 0xb6, 0x40, 0xa7, 0xc1, 0xf1, 0xd4, 0x29, 0x25, 0x7b, 0xb3, 0xf2, + 0xbf, 0xc4, 0x4e, 0x9d, 0x52, 0x68, 0xf0, 0xd4, 0x29, 0x2d, 0xf3, 0xf3, 0x14, 0x8c, 0x72, 0x9b, + 0x6c, 0xc6, 0x0c, 0xee, 0xaa, 0xff, 0xd7, 0xe8, 0xfa, 0x18, 0xc7, 0xb3, 0xf5, 0x31, 0x0e, 0x8b, + 0xf2, 0x11, 0x5d, 0xf0, 0xbf, 0x75, 0xe2, 0x13, 0xc8, 0x3f, 0x51, 0x86, 0xdc, 0x90, 0xf9, 0x88, + 0x91, 0xf2, 0x9d, 0x99, 0x4e, 0x8c, 0x82, 0xe1, 0x91, 0x28, 0x14, 0x65, 0xa4, 0xd1, 0xbb, 0x26, + 0x5d, 0x57, 0x3e, 0xdd, 0x91, 0x11, 0x27, 0x88, 0x32, 0xe2, 0x30, 0xf2, 0x3a, 0x9c, 0x0e, 0x61, + 0xb3, 0xb4, 0xb9, 0x14, 0xcc, 0x4c, 0xdf, 0x95, 0x89, 0x9a, 0xc1, 0xe9, 0x64, 0xcc, 0x0c, 0x4e, + 0xc7, 0xa4, 0xb1, 0x16, 0xa2, 0xfb, 0xdf, 0xb7, 0x61, 0x1d, 0x48, 0xb0, 0x03, 0x83, 0x34, 0xd6, + 0x42, 0x9a, 0xdf, 0xbd, 0x0d, 0xeb, 0x40, 0xa6, 0x1d, 0x18, 0x90, 0xcf, 0x66, 0xe0, 0x62, 0x3a, + 0xaa, 0xd4, 0x68, 0x4c, 0xd9, 0x4e, 0x88, 0x53, 0xbe, 0x27, 0x13, 0x3d, 0x68, 0xd8, 0x59, 0xb1, + 0xe9, 0x1e, 0x6d, 0x87, 0x15, 0x90, 0x8f, 0xc0, 0x70, 0xa9, 0x6d, 0x98, 0x1e, 0x5e, 0xbc, 0x31, + 0xc3, 0xf9, 0x7b, 0x33, 0xb1, 0x2d, 0x8e, 0x8c, 0xc5, 0x2d, 0x8e, 0x0c, 0x20, 0xaf, 0xc2, 0x58, + 0x95, 0xd6, 0xdb, 0x8e, 0xe9, 0x6d, 0x68, 0x98, 0x99, 0x9b, 0xf1, 0xf8, 0xbe, 0x4c, 0x74, 0x12, + 0x4b, 0x50, 0xb0, 0x49, 0x2c, 0x01, 0x24, 0xb7, 0x3b, 0xe4, 0x6f, 0x56, 0x3e, 0x93, 0xe9, 0x7a, + 0x2d, 0x1f, 0xf4, 0x65, 0x87, 0xf4, 0xcf, 0x0b, 0xa9, 0xf9, 0x70, 0x95, 0xcf, 0x66, 0xba, 0x5c, + 0xa3, 0x4b, 0x33, 0x5c, 0x4a, 0x2a, 0xdd, 0x85, 0xd4, 0x8c, 0xa7, 0xca, 0xf7, 0x67, 0xba, 0x5c, + 0x7b, 0x87, 0x1c, 0xd3, 0x92, 0xa5, 0x3e, 0xc3, 0x3d, 0x45, 0x04, 0xa3, 0xff, 0x23, 0x93, 0x74, + 0x15, 0x09, 0xca, 0x4b, 0x84, 0xac, 0xd8, 0x2d, 0x37, 0x50, 0xfa, 0xcf, 0x65, 0x92, 0xbe, 0x79, + 0x61, 0xb1, 0xf0, 0x17, 0xa1, 0x70, 0x76, 0xf2, 0x9e, 0x47, 0x1d, 0x4b, 0x6f, 0x60, 0x77, 0x56, + 0x3d, 0xdb, 0xd1, 0x57, 0xe8, 0xa4, 0xa5, 0x2f, 0x35, 0xa8, 0xf2, 0xf9, 0x4c, 0xd4, 0x82, 0xed, + 0x4c, 0xca, 0x2c, 0xd8, 0xce, 0x58, 0xb2, 0x0a, 0x0f, 0xa5, 0x61, 0xcb, 0xa6, 0x8b, 0xf5, 0x7c, + 0x21, 0x13, 0x35, 0x61, 0xbb, 0xd0, 0x32, 0x13, 0xb6, 0x0b, 0x9a, 0x5c, 0x83, 0x81, 0x71, 0xdb, + 0x9f, 0x7e, 0xff, 0xcf, 0x98, 0x33, 0x64, 0x80, 0x99, 0xee, 0xd1, 0x42, 0x32, 0x51, 0x46, 0x0c, + 0xea, 0x2f, 0x26, 0xcb, 0x84, 0x97, 0x4f, 0xc1, 0x0f, 0x51, 0x46, 0x88, 0xfb, 0xff, 0x4a, 0x96, + 0x09, 0xef, 0xb8, 0x82, 0x1f, 0x6c, 0x26, 0xe1, 0x35, 0xce, 0x4e, 0x95, 0x98, 0xdd, 0x36, 0xb1, + 0xaa, 0x37, 0x1a, 0xd4, 0x5a, 0xa1, 0xca, 0x97, 0x62, 0x33, 0x49, 0x3a, 0x19, 0x9b, 0x49, 0xd2, + 0x31, 0xe4, 0x13, 0x70, 0xe6, 0xb6, 0xde, 0x30, 0x8d, 0x10, 0xe7, 0x27, 0xd1, 0x54, 0x7e, 0x20, + 0x13, 0xdd, 0x4d, 0x77, 0xa0, 0x63, 0xbb, 0xe9, 0x0e, 0x28, 0x32, 0x0b, 0x04, 0x97, 0xd1, 0x60, + 0xb6, 0x60, 0xeb, 0xb3, 0xf2, 0x7f, 0x67, 0xa2, 0x76, 0x6a, 0x92, 0x84, 0xd9, 0xa9, 0x49, 0x28, + 0xa9, 0x75, 0x8e, 0x93, 0xae, 0xfc, 0x60, 0x26, 0x7a, 0x5a, 0xd3, 0x89, 0x70, 0xba, 0x47, 0xeb, + 0x1c, 0x6c, 0xfd, 0x06, 0x8c, 0x56, 0x17, 0x2a, 0x53, 0x53, 0x93, 0xd5, 0xdb, 0x95, 0x32, 0xba, + 0xef, 0x1a, 0xca, 0x0f, 0xc5, 0x56, 0xac, 0x38, 0x01, 0x5b, 0xb1, 0xe2, 0x30, 0x52, 0x85, 0x53, + 0x4c, 0x10, 0x0b, 0x0e, 0x5d, 0xa6, 0x0e, 0xb5, 0xea, 0xfe, 0xb0, 0xfc, 0x91, 0x4c, 0xd4, 0x50, + 0x48, 0x23, 0x62, 0x86, 0x42, 0x1a, 0x9c, 0xac, 0xc1, 0xb9, 0xf8, 0x61, 0x8e, 0xfc, 0x1e, 0x4a, + 0xf9, 0xd1, 0x4c, 0xcc, 0x9e, 0xed, 0x42, 0x8c, 0xf6, 0x6c, 0x17, 0x3c, 0xb1, 0xe0, 0xbc, 0x38, + 0x19, 0x11, 0x3e, 0x93, 0xf1, 0xda, 0x7e, 0x8c, 0xd7, 0xf6, 0x58, 0xe8, 0xd3, 0xd7, 0x85, 0x7a, + 0xba, 0x47, 0xeb, 0xce, 0x8e, 0xa9, 0x4a, 0x32, 0xa0, 0xb7, 0xf2, 0xe3, 0x99, 0x74, 0xa7, 0x92, + 0x88, 0xa7, 0x71, 0x5a, 0x24, 0xf0, 0xd7, 0x3b, 0x85, 0xa3, 0x56, 0x7e, 0x22, 0x36, 0x64, 0xd2, + 0xc9, 0xd8, 0x90, 0xe9, 0x10, 0xcf, 0xfa, 0x55, 0x18, 0xe3, 0x7a, 0xb9, 0xa0, 0xe3, 0x48, 0xb2, + 0x56, 0xa8, 0xa1, 0xfc, 0x3f, 0xb1, 0x05, 0x2b, 0x41, 0x81, 0xde, 0x39, 0x71, 0x20, 0x9b, 0x7d, + 0xab, 0x2d, 0xdd, 0xb2, 0xf0, 0xa4, 0x54, 0xf9, 0x7f, 0x63, 0xb3, 0x6f, 0x88, 0x42, 0xdf, 0xdb, + 0xe0, 0x17, 0x26, 0x06, 0x4a, 0x7b, 0x2e, 0xa8, 0x7c, 0x39, 0xb6, 0xce, 0xa5, 0x52, 0xb1, 0x75, + 0x2e, 0xfd, 0xb5, 0xe1, 0xed, 0x0e, 0x4f, 0xed, 0x94, 0x9f, 0xec, 0xce, 0x37, 0x5c, 0x3f, 0xd3, + 0x5f, 0xea, 0xdd, 0xee, 0xf0, 0x4c, 0x4d, 0xf9, 0xa9, 0xee, 0x7c, 0x43, 0x77, 0xb9, 0xf4, 0x57, + 0x6e, 0xb5, 0xce, 0x4f, 0xbc, 0x94, 0x9f, 0x8e, 0x4f, 0x08, 0x1d, 0x08, 0x71, 0x42, 0xe8, 0xf4, + 0x4e, 0xec, 0xd5, 0x94, 0x87, 0x56, 0xca, 0xcf, 0xc4, 0xfa, 0x3a, 0x41, 0xc1, 0xfa, 0x3a, 0xf9, + 0x3e, 0xeb, 0xd5, 0x94, 0xf7, 0x44, 0xca, 0xff, 0xdf, 0x99, 0x57, 0x20, 0xd4, 0x94, 0x67, 0x48, + 0xaf, 0xa6, 0x3c, 0x9b, 0x51, 0xfe, 0x5a, 0x67, 0x5e, 0xa1, 0xd7, 0x4d, 0xf2, 0xb5, 0xcd, 0xeb, + 0x70, 0x9a, 0xcf, 0x5f, 0x53, 0xd4, 0xa0, 0x91, 0x0f, 0xfd, 0xd9, 0xd8, 0x50, 0x49, 0x27, 0xc3, + 0x43, 0xe6, 0x54, 0x4c, 0x1a, 0x6b, 0xd1, 0xd6, 0x9f, 0xdb, 0x86, 0x75, 0x68, 0x02, 0xa7, 0x63, + 0xc6, 0xfb, 0xa0, 0x17, 0x77, 0x9f, 0xea, 0x97, 0x33, 0x30, 0x54, 0xf5, 0x1c, 0xaa, 0x37, 0x45, + 0xe4, 0x84, 0xb3, 0xd0, 0xcf, 0xdd, 0xb8, 0xfc, 0x97, 0x14, 0x5a, 0xf0, 0x9b, 0x5c, 0x84, 0x91, + 0x19, 0xdd, 0xf5, 0xb0, 0x64, 0xc5, 0x32, 0xe8, 0x3d, 0x7c, 0xc2, 0x90, 0xd3, 0x62, 0x50, 0x32, + 0xc3, 0xe9, 0x78, 0x39, 0x8c, 0x7b, 0x93, 0xdb, 0x36, 0x60, 0x40, 0xff, 0xdb, 0x9b, 0xc5, 0x1e, + 0x8c, 0x0f, 0x10, 0x2b, 0xab, 0x7e, 0x3d, 0x03, 0x09, 0x07, 0xb3, 0xbd, 0xbf, 0x70, 0x9a, 0x87, + 0x13, 0xb1, 0x58, 0x4b, 0xe2, 0x1d, 0xc6, 0x0e, 0x43, 0x31, 0xc5, 0x4b, 0x93, 0xf7, 0x07, 0xfe, + 0xff, 0xb7, 0xb4, 0x19, 0x11, 0x0c, 0xa2, 0x6f, 0x6b, 0xb3, 0x98, 0x6b, 0x3b, 0x0d, 0x4d, 0x42, + 0x89, 0xc7, 0xca, 0xdf, 0x1e, 0x0d, 0x03, 0xc9, 0x90, 0x8b, 0xe2, 0xb9, 0x55, 0x26, 0x0c, 0x21, + 0x11, 0xcb, 0x29, 0xc7, 0x9f, 0x57, 0x7d, 0x04, 0x86, 0x2a, 0xcd, 0x16, 0x75, 0x5c, 0xdb, 0xd2, + 0x3d, 0xdb, 0xcf, 0x5d, 0x8d, 0xe1, 0x05, 0x4c, 0x09, 0x2e, 0x3f, 0x79, 0x97, 0xe9, 0xc9, 0x65, + 0x3f, 0x01, 0x41, 0x0e, 0x43, 0xf8, 0x60, 0x1c, 0xca, 0x78, 0x9e, 0x32, 0x4e, 0xc1, 0x48, 0x6f, + 0xb9, 0x3a, 0xbe, 0x14, 0x09, 0x48, 0xdb, 0x0c, 0x20, 0x93, 0x22, 0x05, 0x79, 0x02, 0x0a, 0x78, + 0xb2, 0xe6, 0x62, 0x62, 0x11, 0x11, 0xd8, 0xa2, 0x81, 0x10, 0x39, 0x8c, 0x00, 0xa7, 0x21, 0x37, + 0x61, 0x34, 0xbc, 0x36, 0xc0, 0x6c, 0xeb, 0x7e, 0x28, 0x61, 0xcc, 0xef, 0xb6, 0x16, 0xe0, 0x78, + 0x9a, 0x76, 0x99, 0x45, 0xa2, 0x20, 0x99, 0x86, 0x13, 0x21, 0x8c, 0x89, 0xc8, 0x0f, 0x61, 0x8e, + 0xf9, 0x0d, 0x25, 0x5e, 0x4c, 0x9c, 0x32, 0xab, 0x78, 0x31, 0x52, 0x81, 0x3e, 0x3f, 0xaa, 0x45, + 0xff, 0xb6, 0x4a, 0x7a, 0x52, 0x44, 0xb5, 0xe8, 0x93, 0xe3, 0x59, 0xf8, 0xe5, 0xc9, 0x14, 0x8c, + 0x68, 0x76, 0xdb, 0xa3, 0x8b, 0xb6, 0x58, 0xac, 0x45, 0xf4, 0x14, 0x6c, 0x93, 0xc3, 0x30, 0x35, + 0xcf, 0xf6, 0xd3, 0xe3, 0xc9, 0x69, 0xda, 0xa2, 0xa5, 0xc8, 0x1c, 0x8c, 0x25, 0x2e, 0x58, 0xe4, + 0xa4, 0x75, 0xd2, 0xe7, 0x25, 0x99, 0x25, 0x8b, 0x92, 0xef, 0xcd, 0x40, 0x61, 0xd1, 0xd1, 0x4d, + 0xcf, 0x15, 0x8f, 0x4c, 0x1e, 0xb8, 0xb2, 0xee, 0xe8, 0x2d, 0xa6, 0x1f, 0x57, 0x30, 0x46, 0xd3, + 0x6d, 0xbd, 0xd1, 0xa6, 0xee, 0xf8, 0x1d, 0xf6, 0x75, 0xff, 0x6c, 0xb3, 0xf8, 0xe1, 0x15, 0xdc, + 0xc6, 0x5d, 0xa9, 0xdb, 0xcd, 0xab, 0x2b, 0x8e, 0x7e, 0xd7, 0xf4, 0x70, 0xea, 0xd0, 0x1b, 0x57, + 0x3d, 0xda, 0xc0, 0xdd, 0xe2, 0x55, 0xbd, 0x65, 0x5e, 0xc5, 0x58, 0x80, 0x57, 0x03, 0x4e, 0xbc, + 0x06, 0xa6, 0x02, 0x1e, 0xfe, 0x25, 0xab, 0x00, 0xc7, 0x91, 0x39, 0xb6, 0xc9, 0xc2, 0x4f, 0x2d, + 0xb5, 0x5a, 0xe2, 0xc5, 0x8a, 0xb4, 0xc7, 0xf2, 0x31, 0x5c, 0xb1, 0x03, 0x81, 0xe9, 0x2d, 0x39, + 0x67, 0xbf, 0xc4, 0x81, 0x69, 0xc1, 0xa2, 0x68, 0x91, 0x2f, 0xa6, 0xe1, 0x50, 0xe2, 0x7e, 0x63, + 0x53, 0x84, 0x14, 0x2f, 0x46, 0x96, 0xe0, 0x84, 0xe0, 0x1b, 0x04, 0x9d, 0x1d, 0x89, 0xce, 0x0a, + 0x31, 0x34, 0x57, 0xda, 0xa0, 0x8d, 0x86, 0x00, 0xcb, 0x75, 0xc4, 0x4a, 0x90, 0xf1, 0x30, 0xdf, + 0xd2, 0x9c, 0xde, 0xa4, 0xae, 0x72, 0x02, 0x35, 0xf6, 0xdc, 0xd6, 0x66, 0x51, 0xf1, 0xcb, 0x63, + 0x80, 0x97, 0xd4, 0xec, 0x81, 0x58, 0x44, 0xe6, 0xc1, 0xb5, 0x7e, 0x34, 0x85, 0x47, 0x5c, 0xe7, + 0xa3, 0x45, 0xc8, 0x04, 0x0c, 0x07, 0x0e, 0xb3, 0xb7, 0x6e, 0x55, 0xca, 0xf8, 0x24, 0x46, 0xc4, + 0xf8, 0x89, 0xc5, 0xb3, 0x95, 0x99, 0x44, 0xca, 0x48, 0x6f, 0xe7, 0xf8, 0x1b, 0x99, 0xd8, 0xdb, + 0xb9, 0x56, 0xca, 0xdb, 0xb9, 0x05, 0xf2, 0x12, 0x0c, 0x96, 0xee, 0x54, 0xc5, 0x9b, 0x40, 0x57, + 0x39, 0x19, 0x06, 0x12, 0xc7, 0x04, 0x92, 0xe2, 0xfd, 0xa0, 0xdc, 0x74, 0x99, 0x9e, 0x4c, 0xc2, + 0x48, 0xe4, 0xce, 0xdd, 0x55, 0x4e, 0x21, 0x07, 0x9e, 0xc3, 0x1f, 0x31, 0x35, 0x47, 0xa0, 0x22, + 0x29, 0x4d, 0x23, 0x85, 0x98, 0xd6, 0xb0, 0x6d, 0x6b, 0xa3, 0x61, 0xaf, 0x6b, 0x14, 0x9f, 0x1f, + 0xe2, 0x03, 0x9b, 0x7e, 0xae, 0x35, 0x86, 0x40, 0xd5, 0x1c, 0x8e, 0x8b, 0xe4, 0x30, 0x8d, 0x16, + 0x23, 0x6f, 0x02, 0xc1, 0x30, 0xce, 0xd4, 0xf0, 0x8f, 0x60, 0x2b, 0x65, 0x57, 0x39, 0x8d, 0xb1, + 0xea, 0x48, 0xfc, 0xfd, 0x6b, 0xa5, 0x3c, 0x7e, 0x51, 0x4c, 0x1f, 0x17, 0x74, 0x5e, 0xaa, 0xe6, + 0x08, 0x5c, 0xcd, 0x34, 0xe4, 0x16, 0xa7, 0x70, 0x25, 0xeb, 0x70, 0x66, 0xc1, 0xa1, 0x77, 0x4d, + 0xbb, 0xed, 0xfa, 0xcb, 0x87, 0x3f, 0x6f, 0x9d, 0xd9, 0x76, 0xde, 0x7a, 0x44, 0x54, 0xfc, 0x40, + 0xcb, 0xa1, 0x77, 0x6b, 0x7e, 0x84, 0xb2, 0x48, 0x54, 0x9e, 0x4e, 0xdc, 0x99, 0xb8, 0xf0, 0xe9, + 0xa5, 0x80, 0x9b, 0xd4, 0x55, 0x94, 0x70, 0xaa, 0xe5, 0x2f, 0x49, 0xcd, 0x00, 0x27, 0x8b, 0x2b, + 0x56, 0x8c, 0x68, 0x40, 0x6e, 0x4c, 0xf8, 0xc7, 0xf1, 0xa5, 0x3a, 0xcf, 0x67, 0xa4, 0x3c, 0x88, + 0xcc, 0x54, 0x26, 0x96, 0x95, 0x7a, 0x10, 0xad, 0xb0, 0xa6, 0x0b, 0xbc, 0x2c, 0x96, 0x64, 0x69, + 0x32, 0x03, 0xa3, 0x0b, 0x0e, 0xee, 0x2c, 0x6e, 0xd2, 0x8d, 0x05, 0xbb, 0x61, 0xd6, 0x37, 0xf0, + 0x9d, 0x8f, 0x98, 0x2a, 0x5b, 0x1c, 0x57, 0x5b, 0xa3, 0x1b, 0xb5, 0x16, 0x62, 0xe5, 0x65, 0x25, + 0x5e, 0x52, 0x8e, 0x1e, 0xf6, 0xd0, 0xce, 0xa2, 0x87, 0x51, 0x18, 0x15, 0x87, 0xf9, 0xf7, 0x3c, + 0x6a, 0xb1, 0xa5, 0xde, 0x15, 0x6f, 0x7a, 0x94, 0xd8, 0xe1, 0x7f, 0x80, 0x17, 0xf9, 0x4c, 0xf9, + 0x28, 0xa3, 0x01, 0x58, 0x6e, 0x58, 0xbc, 0x48, 0x32, 0x2e, 0xd7, 0xf9, 0x3d, 0xc4, 0xe5, 0xfa, + 0x42, 0x4e, 0x9e, 0x7f, 0xc9, 0x39, 0xc8, 0x4b, 0x11, 0xb0, 0x31, 0xe8, 0x10, 0x46, 0x0b, 0xcc, + 0x8b, 0xb0, 0x68, 0x03, 0xc2, 0x76, 0x09, 0x5e, 0xc7, 0x62, 0x7a, 0x10, 0x3f, 0x2c, 0xa1, 0x69, + 0x68, 0x21, 0x01, 0xa6, 0x66, 0x08, 0x73, 0xc7, 0xe7, 0xa4, 0xd4, 0x0c, 0x61, 0xee, 0xf8, 0x48, + 0xe6, 0xf8, 0x6b, 0x30, 0xe8, 0xef, 0x68, 0xc3, 0xa0, 0x5b, 0x18, 0x5a, 0xd0, 0x4f, 0x1f, 0xcb, + 0x23, 0x17, 0x4a, 0x44, 0xe4, 0x05, 0x4c, 0xa0, 0xec, 0xbf, 0x3c, 0xee, 0x0d, 0x6d, 0x20, 0x79, + 0xf6, 0x88, 0x65, 0x50, 0xf6, 0x1f, 0x20, 0x8f, 0xc3, 0xb0, 0xac, 0x8e, 0x7e, 0x32, 0x1a, 0x9c, + 0x38, 0x23, 0x3a, 0x2c, 0x2b, 0x48, 0xb4, 0x08, 0x99, 0x87, 0xb1, 0x84, 0x06, 0x8a, 0x10, 0x5d, + 0x98, 0xf6, 0x2e, 0x45, 0x7d, 0xe5, 0x85, 0x39, 0x51, 0x56, 0xfd, 0xae, 0x6c, 0x62, 0xd9, 0x61, + 0x82, 0x11, 0x54, 0x52, 0xe7, 0xa0, 0x60, 0x7c, 0xd6, 0x5c, 0x30, 0x12, 0x11, 0xb9, 0x04, 0xfd, + 0xb1, 0x1c, 0xca, 0xf8, 0x16, 0x3d, 0x48, 0xa0, 0x1c, 0x60, 0xc9, 0x35, 0x29, 0x3d, 0x92, 0x14, + 0x1f, 0xcf, 0x4f, 0x8f, 0x24, 0xcf, 0xda, 0x41, 0xa2, 0xa4, 0x6b, 0xb1, 0x48, 0xec, 0x7e, 0xaa, + 0xdb, 0xe4, 0x92, 0x17, 0xe6, 0x99, 0x08, 0x0c, 0xce, 0xde, 0xed, 0x0c, 0x4e, 0xf5, 0x37, 0x33, + 0xc9, 0x21, 0x44, 0xae, 0x27, 0xe3, 0x5b, 0xf1, 0x2c, 0xb7, 0x3e, 0x50, 0xae, 0x35, 0x88, 0x74, + 0x15, 0x89, 0x54, 0x95, 0xdd, 0x73, 0xa4, 0xaa, 0xdc, 0x2e, 0x23, 0x55, 0xa9, 0xff, 0x25, 0xdf, + 0xd5, 0xaf, 0xec, 0x50, 0x22, 0x32, 0x3c, 0xcf, 0x36, 0x4d, 0xac, 0xf6, 0x92, 0x9b, 0x30, 0xfd, + 0xb9, 0xdb, 0x4c, 0x4d, 0xe7, 0xa3, 0xc6, 0xd5, 0xa2, 0x94, 0xe4, 0x65, 0x18, 0xf2, 0x3f, 0x00, + 0x23, 0xa0, 0x49, 0x91, 0xbb, 0x82, 0x05, 0x2b, 0x9e, 0xa8, 0x58, 0x2e, 0x40, 0x9e, 0x81, 0x01, + 0x34, 0x57, 0x5a, 0x7a, 0xdd, 0x0f, 0x8f, 0xc7, 0xe3, 0xe9, 0xf9, 0x40, 0x39, 0xea, 0x40, 0x40, + 0x49, 0x3e, 0x09, 0x85, 0x48, 0xa6, 0xec, 0xab, 0x3b, 0x70, 0xc4, 0xbb, 0x22, 0x87, 0x7a, 0xe5, + 0x1b, 0x90, 0x78, 0x96, 0x6c, 0xc1, 0x94, 0x2c, 0xc2, 0xc9, 0x05, 0x87, 0x1a, 0xe8, 0xf2, 0x39, + 0x79, 0xaf, 0xe5, 0x88, 0x40, 0xbc, 0x7c, 0x00, 0xe3, 0xfa, 0xd3, 0xf2, 0xd1, 0x6c, 0x65, 0x14, + 0x78, 0x89, 0x51, 0x5a, 0x71, 0x66, 0x94, 0xf0, 0x96, 0xdc, 0xa4, 0x1b, 0xeb, 0xb6, 0x63, 0xf0, + 0x58, 0xb5, 0x62, 0x6a, 0x16, 0x82, 0x5e, 0x13, 0x28, 0xd9, 0x28, 0x89, 0x16, 0x3a, 0xfb, 0x3c, + 0x0c, 0xee, 0x35, 0x5c, 0xea, 0x2f, 0x67, 0x3b, 0x78, 0x68, 0xdf, 0xbf, 0x69, 0x6e, 0x82, 0x94, + 0x63, 0xbd, 0x1d, 0x52, 0x8e, 0x7d, 0x2b, 0xdb, 0xc1, 0xfd, 0xfc, 0xbe, 0x4e, 0x0d, 0x14, 0x08, + 0x23, 0x9a, 0x1a, 0x28, 0xcc, 0xca, 0x64, 0x1a, 0x9a, 0x4c, 0x14, 0x4b, 0x22, 0x56, 0xd8, 0x36, + 0x89, 0xd8, 0xcf, 0xe6, 0xba, 0xb9, 0xe7, 0x1f, 0xcb, 0x7e, 0x37, 0xb2, 0xbf, 0x06, 0x83, 0x81, + 0x64, 0x2b, 0x65, 0xb4, 0x67, 0x86, 0x83, 0xe0, 0xcc, 0x1c, 0x8c, 0x65, 0x24, 0x22, 0x72, 0x99, + 0xb7, 0xb5, 0x6a, 0xbe, 0xc5, 0x63, 0x8b, 0x0e, 0x8b, 0xa8, 0x91, 0xba, 0xa7, 0xd7, 0x5c, 0xf3, + 0x2d, 0xaa, 0x05, 0x68, 0xf5, 0xef, 0x66, 0x53, 0xdf, 0x38, 0x1c, 0xf7, 0xd1, 0x2e, 0xfa, 0x28, + 0x45, 0x88, 0xfc, 0x75, 0xc6, 0xb1, 0x10, 0x77, 0x21, 0xc4, 0x3f, 0xcb, 0xa6, 0xbe, 0x65, 0x39, + 0x16, 0xe2, 0x6e, 0x66, 0x8b, 0x27, 0x60, 0x40, 0xb3, 0xd7, 0x5d, 0xcc, 0x18, 0x2c, 0xe6, 0x0a, + 0x9c, 0xa8, 0x1d, 0x7b, 0xdd, 0xe5, 0xd9, 0x94, 0xb5, 0x90, 0x40, 0xfd, 0x76, 0xb6, 0xcb, 0x6b, + 0x9f, 0x63, 0xc1, 0xbf, 0x93, 0x4b, 0xe4, 0xaf, 0x66, 0x23, 0xaf, 0x89, 0xee, 0xeb, 0x1c, 0x9b, + 0xd5, 0xfa, 0x2a, 0x6d, 0xea, 0xf1, 0x1c, 0x9b, 0x2e, 0x42, 0x45, 0x8a, 0xae, 0x90, 0x44, 0xfd, + 0x4a, 0x36, 0xf6, 0x9c, 0xea, 0x58, 0x76, 0x3b, 0x96, 0x5d, 0xa0, 0x75, 0xe2, 0x85, 0xd8, 0xb1, + 0xe4, 0x76, 0x2a, 0xb9, 0xcf, 0x64, 0x63, 0x8f, 0xe9, 0xee, 0xdf, 0x74, 0x7b, 0x5f, 0xc9, 0x26, + 0x1f, 0x06, 0xde, 0xbf, 0x9a, 0xf4, 0x04, 0x0c, 0x08, 0x39, 0x04, 0x4b, 0x05, 0x9f, 0xf7, 0x39, + 0x10, 0x0f, 0x50, 0x03, 0x02, 0xf5, 0x7b, 0xb2, 0x10, 0x7d, 0xe4, 0x78, 0x9f, 0xea, 0xd0, 0xaf, + 0x66, 0xa3, 0xcf, 0x3b, 0xef, 0x5f, 0xfd, 0xb9, 0x02, 0x50, 0x6d, 0x2f, 0xd5, 0x45, 0x74, 0xc0, + 0x5e, 0xe9, 0x04, 0x3e, 0x80, 0x6a, 0x12, 0x85, 0xfa, 0x5f, 0xb3, 0xa9, 0x6f, 0x4e, 0xef, 0x5f, + 0x01, 0x3e, 0x8d, 0xa7, 0xe2, 0x75, 0x2b, 0x9c, 0xc8, 0xf1, 0x10, 0x92, 0x8d, 0xbf, 0x44, 0x52, + 0x0f, 0x9f, 0x90, 0x7c, 0x28, 0xc5, 0x5c, 0xc3, 0x90, 0xa9, 0xa1, 0xb9, 0x26, 0xdf, 0x30, 0x48, + 0x86, 0xdb, 0x3f, 0xcc, 0x6e, 0xf7, 0x44, 0xf7, 0x7e, 0x5e, 0x55, 0xfb, 0x16, 0xf4, 0x0d, 0x0c, + 0x25, 0xc5, 0x7a, 0x62, 0x88, 0xa7, 0x9c, 0x68, 0x71, 0x90, 0x7c, 0xad, 0x26, 0xa8, 0xd4, 0x3f, + 0xed, 0x4d, 0x7f, 0x1f, 0x7a, 0xff, 0x8a, 0xf0, 0x1c, 0xe4, 0x17, 0x74, 0x6f, 0x55, 0x68, 0x32, + 0xde, 0xd6, 0xb5, 0x74, 0x6f, 0x55, 0x43, 0x28, 0xb9, 0x0c, 0xfd, 0x9a, 0xbe, 0xce, 0xcf, 0x3c, + 0x0b, 0x61, 0x3a, 0x10, 0x47, 0x5f, 0xaf, 0xf1, 0x73, 0xcf, 0x00, 0x4d, 0xd4, 0x20, 0x1d, 0x0d, + 0x3f, 0xf9, 0xc6, 0x5c, 0x0e, 0x3c, 0x1d, 0x4d, 0x90, 0x84, 0xe6, 0x1c, 0xe4, 0xc7, 0x6d, 0x63, + 0x03, 0x3d, 0x62, 0x86, 0x78, 0x65, 0x4b, 0xb6, 0xb1, 0xa1, 0x21, 0x94, 0x7c, 0x36, 0x03, 0x7d, + 0xd3, 0x54, 0x37, 0xd8, 0x08, 0x19, 0xe8, 0xe6, 0x50, 0xf2, 0xd1, 0x83, 0x71, 0x28, 0x19, 0x5b, + 0xe5, 0x95, 0xc9, 0x8a, 0x22, 0xea, 0x27, 0x37, 0xa0, 0x7f, 0x42, 0xf7, 0xe8, 0x8a, 0xed, 0x6c, + 0xa0, 0x8b, 0xcc, 0x48, 0xe8, 0x0d, 0x19, 0xd1, 0x1f, 0x9f, 0x88, 0xdf, 0x8c, 0xd5, 0xc5, 0x2f, + 0x2d, 0x28, 0xcc, 0xc4, 0x22, 0x72, 0x5d, 0x0e, 0x86, 0x62, 0xe1, 0x49, 0x2d, 0x83, 0x94, 0x96, + 0xc1, 0xb1, 0xf2, 0x50, 0xfa, 0xb1, 0x32, 0x5a, 0x8f, 0xe8, 0x46, 0x87, 0x49, 0x60, 0x86, 0x71, + 0xd1, 0xe7, 0xd6, 0x23, 0x42, 0x31, 0x07, 0x8c, 0x26, 0x91, 0xa8, 0xdf, 0xe8, 0x85, 0xd4, 0xd7, + 0x64, 0xc7, 0x4a, 0x7e, 0xac, 0xe4, 0xa1, 0x92, 0x97, 0x13, 0x4a, 0x7e, 0x36, 0xf9, 0x3e, 0xf1, + 0x5d, 0xaa, 0xe1, 0x3f, 0x9c, 0x4f, 0xbc, 0x6e, 0xbe, 0xbf, 0x77, 0x97, 0xa1, 0xf4, 0x7a, 0xb7, + 0x95, 0x5e, 0x30, 0x20, 0x0a, 0xdb, 0x0e, 0x88, 0xbe, 0x9d, 0x0e, 0x88, 0xfe, 0x8e, 0x03, 0x22, + 0x54, 0x90, 0x81, 0x8e, 0x0a, 0x52, 0x11, 0x83, 0x06, 0xba, 0x27, 0x18, 0x3b, 0xb7, 0xb5, 0x59, + 0x1c, 0x61, 0xa3, 0x29, 0x35, 0xb5, 0x18, 0xb2, 0x50, 0xbf, 0x9e, 0xef, 0x12, 0x92, 0xe0, 0x50, + 0x74, 0xe4, 0x69, 0xc8, 0x95, 0x5a, 0x2d, 0xa1, 0x1f, 0x27, 0xa5, 0x68, 0x08, 0x1d, 0x4a, 0x31, + 0x6a, 0xf2, 0x02, 0xe4, 0x4a, 0x77, 0xaa, 0xf1, 0xc0, 0xea, 0xa5, 0x3b, 0x55, 0xf1, 0x25, 0x1d, + 0xcb, 0xde, 0xa9, 0x92, 0x17, 0xc3, 0x08, 0x67, 0xab, 0x6d, 0x6b, 0x4d, 0x6c, 0x14, 0x85, 0x27, + 0xad, 0xef, 0x69, 0x53, 0x67, 0x28, 0xb6, 0x5d, 0x8c, 0xd1, 0xc6, 0xb4, 0xa9, 0xb0, 0x73, 0x6d, + 0xea, 0xdb, 0x56, 0x9b, 0xfa, 0x77, 0xaa, 0x4d, 0x03, 0x3b, 0xd0, 0x26, 0xd8, 0x56, 0x9b, 0x06, + 0xf7, 0xaf, 0x4d, 0x2d, 0x38, 0x9b, 0x0c, 0x23, 0x13, 0x68, 0x84, 0x06, 0x24, 0x89, 0x15, 0x8e, + 0x25, 0x78, 0xf5, 0xdf, 0xe6, 0xd8, 0x1a, 0xcf, 0x49, 0x1b, 0xcf, 0xe8, 0xaa, 0xa5, 0x94, 0x56, + 0x7f, 0x39, 0xdb, 0x39, 0xfa, 0xcd, 0xd1, 0x9c, 0xe2, 0xbe, 0x23, 0x55, 0x4a, 0xf9, 0xe8, 0x6b, + 0xc4, 0xce, 0x52, 0x8e, 0xb1, 0x4d, 0x93, 0xd9, 0xd7, 0x32, 0x9d, 0x42, 0xf2, 0xec, 0x4b, 0x62, + 0x8f, 0x25, 0x9d, 0xd5, 0xd0, 0x05, 0xdf, 0x8d, 0x7a, 0xa9, 0xc5, 0x53, 0x9c, 0xe6, 0xf6, 0x98, + 0xe2, 0xf4, 0x37, 0x33, 0x70, 0xf2, 0x66, 0x7b, 0x89, 0x0a, 0xe7, 0xb4, 0xa0, 0x19, 0x6f, 0x02, + 0x30, 0xb0, 0x70, 0x62, 0xc9, 0xa0, 0x13, 0xcb, 0x07, 0xe4, 0x70, 0x3a, 0xb1, 0x02, 0x57, 0x42, + 0x6a, 0xee, 0xc0, 0x72, 0xde, 0xf7, 0xd3, 0x5c, 0x6b, 0x2f, 0xd1, 0x5a, 0xc2, 0x93, 0x45, 0xe2, + 0x7e, 0xf6, 0x25, 0xee, 0x01, 0xbf, 0x57, 0xa7, 0x91, 0x5f, 0xcc, 0x76, 0x8c, 0x60, 0x74, 0x64, + 0x13, 0xc8, 0x7c, 0x3c, 0xb5, 0x57, 0xe2, 0x89, 0x64, 0x52, 0x48, 0x62, 0x1c, 0xd3, 0xb8, 0xa4, + 0x0b, 0xec, 0x88, 0xa7, 0x35, 0x7a, 0x47, 0x05, 0xf6, 0xfb, 0x99, 0x8e, 0x91, 0xa6, 0x8e, 0xaa, + 0xc0, 0xd4, 0x7f, 0x9d, 0xf3, 0x03, 0x5c, 0xed, 0xeb, 0x13, 0x9e, 0x80, 0x01, 0x91, 0xc5, 0x23, + 0xea, 0x5b, 0x2b, 0x8e, 0xf2, 0xf0, 0x68, 0x38, 0x20, 0x60, 0xcb, 0xbc, 0xe4, 0xf8, 0x2b, 0xf9, + 0xd6, 0x4a, 0x4e, 0xbf, 0x9a, 0x44, 0xc2, 0x16, 0xf2, 0xc9, 0x7b, 0xa6, 0x87, 0x56, 0x01, 0xeb, + 0xcb, 0x1c, 0x5f, 0xc8, 0xe9, 0x3d, 0xd3, 0xe3, 0x36, 0x41, 0x80, 0x66, 0x8b, 0x74, 0x35, 0x4c, + 0xda, 0x28, 0x16, 0x69, 0x57, 0xe4, 0xae, 0x14, 0x2f, 0xc2, 0x9e, 0x80, 0x01, 0xe1, 0xb0, 0x2a, + 0xdc, 0x4c, 0x44, 0x6b, 0x85, 0x8b, 0x2b, 0xb6, 0x36, 0x20, 0x60, 0x1c, 0x35, 0xba, 0x12, 0x3a, + 0xd6, 0x21, 0x47, 0x07, 0x21, 0x9a, 0xc0, 0x90, 0x6b, 0x30, 0x52, 0xf5, 0x74, 0xcb, 0xd0, 0x1d, + 0x63, 0xbe, 0xed, 0xb5, 0xda, 0x9e, 0x6c, 0x94, 0xba, 0x9e, 0x61, 0xb7, 0x3d, 0x2d, 0x46, 0x41, + 0x3e, 0x08, 0xc3, 0x3e, 0x64, 0xd2, 0x71, 0x6c, 0x47, 0xb6, 0x3c, 0x5c, 0xcf, 0xa0, 0x8e, 0xa3, + 0x45, 0x09, 0xc8, 0x87, 0x60, 0xb8, 0x62, 0xdd, 0xb5, 0xeb, 0xfc, 0xe5, 0x9f, 0x36, 0x23, 0xec, + 0x10, 0x7c, 0x65, 0x65, 0x06, 0x88, 0x5a, 0xdb, 0x69, 0x68, 0x51, 0x42, 0x75, 0x2b, 0x9b, 0x8c, + 0x03, 0x76, 0xff, 0x6e, 0x5a, 0x2e, 0x47, 0x9d, 0xe9, 0xd0, 0x83, 0x14, 0x0d, 0x42, 0xd9, 0x97, + 0x97, 0xdb, 0x85, 0xd7, 0xa0, 0xff, 0x26, 0xdd, 0xe0, 0x7e, 0x9f, 0x85, 0xd0, 0x55, 0x78, 0x4d, + 0xc0, 0xe4, 0x13, 0x57, 0x9f, 0x4e, 0xfd, 0x6a, 0x36, 0x19, 0xe1, 0xec, 0xfe, 0x15, 0xf6, 0x07, + 0xa1, 0x0f, 0x45, 0x59, 0xf1, 0x8f, 0xfc, 0x51, 0x80, 0x28, 0xee, 0xa8, 0x07, 0xb2, 0x4f, 0xa6, + 0xfe, 0x64, 0x21, 0x1e, 0xf6, 0xee, 0xfe, 0x95, 0xde, 0x87, 0x61, 0x70, 0xc2, 0xb6, 0x5c, 0xd3, + 0xf5, 0xa8, 0x55, 0xf7, 0x15, 0xf6, 0x41, 0x66, 0x50, 0xd5, 0x43, 0xb0, 0xfc, 0xbc, 0x48, 0xa2, + 0xde, 0x8b, 0xf2, 0x92, 0x67, 0x61, 0x00, 0x45, 0x8e, 0x7e, 0xd2, 0x52, 0xb6, 0xee, 0x25, 0x06, + 0x8c, 0x3b, 0x49, 0x87, 0xa4, 0xe4, 0x16, 0xf4, 0x4f, 0xac, 0x9a, 0x0d, 0xc3, 0xa1, 0x16, 0xfa, + 0x0b, 0x4b, 0xc1, 0xf7, 0xa2, 0x7d, 0x79, 0x05, 0xff, 0x45, 0x5a, 0xde, 0x9c, 0xba, 0x28, 0x16, + 0x79, 0x60, 0x25, 0x60, 0x67, 0x7f, 0x30, 0x0b, 0x10, 0x16, 0x20, 0x0f, 0x43, 0x36, 0xc8, 0x87, + 0x86, 0x6e, 0x2a, 0x11, 0x0d, 0xca, 0xe2, 0x52, 0x21, 0xc6, 0x76, 0x76, 0xdb, 0xb1, 0x7d, 0x0b, + 0x0a, 0xfc, 0xc4, 0x0b, 0x3d, 0xc9, 0xa5, 0x48, 0x5c, 0x1d, 0x1b, 0x7c, 0x05, 0xe9, 0xf9, 0x66, + 0x16, 0x2d, 0xcf, 0x88, 0x57, 0x36, 0x67, 0x76, 0xb6, 0x0e, 0xbd, 0xf8, 0x17, 0xb9, 0x08, 0x79, + 0x94, 0x62, 0x06, 0xf7, 0xb1, 0x38, 0x4b, 0xc7, 0xe4, 0x87, 0x78, 0xd6, 0x4d, 0x13, 0xb6, 0xe5, + 0xb1, 0xaa, 0xb1, 0xd5, 0x43, 0x42, 0x2e, 0x02, 0x16, 0x91, 0x8b, 0x80, 0xa9, 0xff, 0x20, 0x9b, + 0x12, 0x90, 0xf1, 0xfe, 0x1d, 0x26, 0xcf, 0x03, 0xe0, 0x6b, 0x6d, 0x26, 0x4f, 0xff, 0x89, 0x06, + 0x8e, 0x12, 0x64, 0x84, 0x6a, 0x1b, 0xd9, 0x76, 0x84, 0xc4, 0xea, 0x6f, 0x67, 0x12, 0x51, 0xfc, + 0xf6, 0x25, 0x47, 0xd9, 0x2a, 0xcb, 0xee, 0xd1, 0x8c, 0xf5, 0xfb, 0x22, 0xb7, 0xbb, 0xbe, 0x88, + 0x7e, 0xcb, 0x01, 0x58, 0xa6, 0x87, 0xf9, 0x2d, 0xdf, 0xc8, 0xa6, 0xc5, 0x34, 0x3c, 0x9a, 0x2a, + 0x7e, 0x3d, 0x30, 0x4a, 0xf3, 0x3b, 0xc9, 0x24, 0x2e, 0xcc, 0xd4, 0x37, 0xe0, 0x44, 0x2c, 0xd2, + 0x9f, 0x48, 0x52, 0x78, 0xb1, 0x7b, 0xc8, 0xc0, 0xce, 0xef, 0xfc, 0x23, 0x64, 0xea, 0x7f, 0xcb, + 0x74, 0x8f, 0xf3, 0x78, 0xe8, 0xaa, 0x93, 0x22, 0x80, 0xdc, 0x5f, 0x8d, 0x00, 0x0e, 0x60, 0x1b, + 0x7c, 0xb4, 0x05, 0xf0, 0x2e, 0x99, 0x3c, 0xde, 0x69, 0x01, 0xfc, 0x64, 0x66, 0xdb, 0x30, 0x9d, + 0x87, 0x2d, 0x03, 0xf5, 0x5f, 0x64, 0x52, 0xc3, 0x69, 0xee, 0xab, 0x5d, 0x2f, 0x42, 0x81, 0xbb, + 0xd5, 0x88, 0x56, 0x49, 0x09, 0x48, 0x18, 0xb4, 0x43, 0x79, 0x51, 0x86, 0xcc, 0x40, 0x1f, 0x6f, + 0x83, 0x11, 0x4f, 0xd4, 0x9b, 0xd2, 0x4e, 0xa3, 0xd3, 0xe4, 0x28, 0xd0, 0xea, 0x6f, 0x65, 0x12, + 0xd1, 0x3d, 0x0f, 0xf1, 0xdb, 0xc2, 0xa9, 0x3a, 0xb7, 0xf3, 0xa9, 0x5a, 0xfd, 0x93, 0x6c, 0x7a, + 0x70, 0xd1, 0x43, 0xfc, 0x90, 0x83, 0x38, 0x4e, 0xdb, 0xdb, 0xba, 0xb5, 0x08, 0x23, 0x51, 0x59, + 0x88, 0x65, 0xeb, 0x42, 0x7a, 0x88, 0xd5, 0x0e, 0xad, 0x88, 0xf1, 0x50, 0xdf, 0xce, 0x24, 0xe3, + 0xa2, 0x1e, 0xfa, 0xfc, 0xb4, 0x37, 0x6d, 0x89, 0x7e, 0xca, 0xbb, 0x64, 0xad, 0x39, 0x88, 0x4f, + 0x79, 0x97, 0xac, 0x1a, 0x7b, 0xfb, 0x94, 0x9f, 0xcf, 0x76, 0x0a, 0x2b, 0x7b, 0xe8, 0x1f, 0xf4, + 0x31, 0x59, 0xc8, 0xbc, 0x65, 0xe2, 0xd3, 0x1e, 0xee, 0x14, 0xc7, 0xb5, 0x03, 0xcf, 0x04, 0x9f, + 0xbd, 0x8d, 0xf1, 0x54, 0x61, 0xbd, 0x4b, 0x14, 0xf9, 0x68, 0x08, 0xeb, 0x5d, 0x32, 0x54, 0xde, + 0x7d, 0xc2, 0xfa, 0xf5, 0xec, 0x4e, 0x63, 0x19, 0x1f, 0x0b, 0x2f, 0x21, 0xbc, 0x2f, 0x66, 0x93, + 0x31, 0xb6, 0x0f, 0x5d, 0x4c, 0x53, 0x50, 0x10, 0xd1, 0xbe, 0x3b, 0x0a, 0x87, 0xe3, 0x3b, 0x59, + 0x34, 0xe2, 0x3b, 0xae, 0x83, 0xb8, 0xc8, 0xd9, 0x99, 0x48, 0x38, 0xad, 0xfa, 0xed, 0x4c, 0x2c, + 0x20, 0xf5, 0xa1, 0x1c, 0x21, 0xec, 0x69, 0x49, 0x22, 0x2f, 0xf9, 0x87, 0x99, 0xf9, 0x58, 0x34, + 0xd1, 0xe0, 0x7b, 0xca, 0xd4, 0xd3, 0xcd, 0x46, 0xbc, 0xbc, 0x88, 0x09, 0xf0, 0xd5, 0x2c, 0x8c, + 0x25, 0x48, 0xc9, 0xc5, 0x48, 0x94, 0x1c, 0x3c, 0x96, 0x8c, 0x39, 0x8f, 0xf3, 0x78, 0x39, 0xbb, + 0x38, 0x49, 0xbd, 0x08, 0xf9, 0xb2, 0xbe, 0xc1, 0xbf, 0xad, 0x97, 0xb3, 0x34, 0xf4, 0x0d, 0xf9, + 0xc4, 0x0d, 0xf1, 0x64, 0x09, 0x1e, 0xe0, 0xf7, 0x21, 0xa6, 0x6d, 0x2d, 0x9a, 0x4d, 0x5a, 0xb1, + 0x66, 0xcd, 0x46, 0xc3, 0x74, 0xc5, 0xa5, 0xde, 0x13, 0x5b, 0x9b, 0xc5, 0x4b, 0x9e, 0xed, 0xe9, + 0x8d, 0x1a, 0xf5, 0xc9, 0x6a, 0x9e, 0xd9, 0xa4, 0x35, 0xd3, 0xaa, 0x35, 0x91, 0x52, 0x62, 0x99, + 0xce, 0x8a, 0x54, 0x78, 0xe0, 0xd8, 0x6a, 0x5d, 0xb7, 0x2c, 0x6a, 0x54, 0xac, 0xf1, 0x0d, 0x8f, + 0xf2, 0xcb, 0xc0, 0x1c, 0x3f, 0x12, 0xe4, 0x6f, 0xc3, 0x39, 0x9a, 0x31, 0x5e, 0x62, 0x04, 0x5a, + 0x4a, 0x21, 0xf5, 0x37, 0xf2, 0x29, 0xb1, 0xc8, 0x8f, 0x90, 0xfa, 0xf8, 0x3d, 0x9d, 0xdf, 0xa6, + 0xa7, 0xaf, 0x42, 0xdf, 0x6d, 0xea, 0xe0, 0xf9, 0x16, 0xbf, 0x60, 0x40, 0x67, 0xf6, 0xbb, 0x1c, + 0x24, 0xdf, 0xd0, 0x08, 0x2a, 0xd2, 0x80, 0xb3, 0x8b, 0xac, 0x9b, 0xd2, 0x3b, 0xb3, 0xb0, 0x87, + 0xce, 0xec, 0xc2, 0x8f, 0xbc, 0x0e, 0x67, 0x10, 0x9b, 0xd2, 0xad, 0x7d, 0x58, 0x15, 0x86, 0x9f, + 0xe2, 0x55, 0xa5, 0x77, 0x6e, 0xa7, 0xf2, 0xe4, 0x63, 0x30, 0x14, 0x0c, 0x10, 0x93, 0xba, 0xe2, + 0xe6, 0xa2, 0xcb, 0x38, 0xe3, 0xb1, 0xdd, 0x18, 0x18, 0x5d, 0xc8, 0xa2, 0xf1, 0xc1, 0x22, 0xbc, + 0xd4, 0x7f, 0x9e, 0xe9, 0x16, 0x13, 0xfd, 0xd0, 0x67, 0xe5, 0x97, 0xa0, 0xcf, 0xe0, 0x1f, 0x25, + 0x74, 0xaa, 0x7b, 0xd4, 0x74, 0x4e, 0xaa, 0xf9, 0x65, 0xd4, 0x3f, 0xce, 0x74, 0x0d, 0xc5, 0x7e, + 0xd4, 0x3f, 0xef, 0x8b, 0xb9, 0x0e, 0x9f, 0x27, 0x26, 0xd1, 0xcb, 0x30, 0x6a, 0x86, 0x91, 0x73, + 0x6b, 0x61, 0xf8, 0x29, 0xed, 0x84, 0x04, 0xc7, 0xd1, 0x75, 0x1d, 0x4e, 0xfb, 0x8e, 0x8f, 0x8e, + 0xef, 0x21, 0xe6, 0xd6, 0xda, 0x8e, 0xc9, 0xc7, 0xa5, 0x76, 0xca, 0x8d, 0xb9, 0x8f, 0xb9, 0xb7, + 0x1c, 0x93, 0x55, 0xa0, 0x7b, 0xab, 0xd4, 0xd2, 0x6b, 0xeb, 0xb6, 0xb3, 0x86, 0x01, 0x44, 0xf9, + 0xe0, 0xd4, 0x4e, 0x70, 0xf8, 0x1d, 0x1f, 0x4c, 0x1e, 0x85, 0xe1, 0x95, 0x46, 0x9b, 0x06, 0x21, + 0x1b, 0xf9, 0x5d, 0x9f, 0x36, 0xc4, 0x80, 0xc1, 0x0d, 0xc9, 0x79, 0x00, 0x24, 0xf2, 0x30, 0x50, + 0x3e, 0x5e, 0xec, 0x69, 0x03, 0x0c, 0xb2, 0x28, 0xba, 0xeb, 0x2c, 0xd7, 0x6a, 0x2e, 0xa4, 0x5a, + 0xc3, 0xb6, 0x56, 0x6a, 0x1e, 0x75, 0x9a, 0xd8, 0x50, 0x74, 0x66, 0xd0, 0x4e, 0x23, 0x05, 0x5e, + 0x9d, 0xb8, 0x33, 0xb6, 0xb5, 0xb2, 0x48, 0x9d, 0x26, 0x6b, 0xea, 0x13, 0x40, 0x44, 0x53, 0x1d, + 0x3c, 0xf4, 0xe0, 0x1f, 0x87, 0xde, 0x0c, 0x9a, 0xf8, 0x08, 0x7e, 0x1a, 0x82, 0x1f, 0x56, 0x84, + 0x41, 0x1e, 0xb7, 0x8e, 0x0b, 0x0d, 0x5d, 0x18, 0x34, 0xe0, 0x20, 0x94, 0xd7, 0x69, 0x10, 0xde, + 0x15, 0xdc, 0xab, 0x5b, 0x13, 0xbf, 0xd4, 0xcf, 0xe5, 0xd2, 0xa2, 0xc7, 0xef, 0x4b, 0xd1, 0xc2, + 0x69, 0x35, 0xbb, 0xab, 0x69, 0xf5, 0x84, 0xd5, 0x6e, 0xd6, 0xf4, 0x56, 0xab, 0xb6, 0x6c, 0x36, + 0xf0, 0x59, 0x15, 0x2e, 0x7c, 0xda, 0xb0, 0xd5, 0x6e, 0x96, 0x5a, 0xad, 0x29, 0x0e, 0x24, 0x8f, + 0xc3, 0x18, 0xa3, 0xc3, 0x4e, 0x0a, 0x28, 0xf3, 0x48, 0xc9, 0x18, 0x60, 0xe0, 0x57, 0x9f, 0xf6, + 0x41, 0xe8, 0x17, 0x3c, 0xf9, 0x5a, 0xd5, 0xab, 0xf5, 0x71, 0x66, 0x2e, 0xeb, 0xb9, 0x80, 0x0d, + 0x9f, 0x5c, 0x7b, 0xb5, 0x01, 0xbf, 0x3c, 0x86, 0x37, 0xb6, 0xda, 0x4d, 0x1e, 0x11, 0xab, 0x0f, + 0x91, 0xc1, 0x6f, 0x72, 0x11, 0x46, 0x18, 0x97, 0x40, 0x60, 0x3c, 0x22, 0x6c, 0xaf, 0x16, 0x83, + 0x92, 0x6b, 0x70, 0x2a, 0x02, 0xe1, 0x36, 0x28, 0x7f, 0x26, 0xd0, 0xab, 0xa5, 0xe2, 0xd4, 0xb7, + 0x73, 0xc9, 0xe0, 0xf8, 0x87, 0xb2, 0x36, 0x4e, 0x03, 0x88, 0xdc, 0x17, 0xe1, 0x05, 0x4d, 0xe0, + 0xb5, 0x1c, 0x62, 0x3a, 0xf0, 0x90, 0xca, 0x92, 0xcb, 0xd0, 0xcf, 0xbf, 0xa8, 0x52, 0x16, 0x6b, + 0x26, 0xba, 0x19, 0xb9, 0x2d, 0x73, 0x79, 0x19, 0x7d, 0x92, 0x02, 0x34, 0xb9, 0x08, 0x7d, 0xe5, + 0xb9, 0x6a, 0xb5, 0x34, 0xe7, 0xdf, 0x36, 0xe2, 0x1b, 0x05, 0xc3, 0x72, 0x6b, 0xae, 0x6e, 0xb9, + 0x9a, 0x8f, 0x24, 0x8f, 0x42, 0xa1, 0xb2, 0x80, 0x64, 0xfc, 0xe5, 0xdd, 0xe0, 0xd6, 0x66, 0xb1, + 0xcf, 0x6c, 0x71, 0x2a, 0x81, 0xc2, 0x7a, 0x6f, 0x57, 0xca, 0xd2, 0x95, 0x3b, 0xaf, 0xf7, 0xae, + 0x69, 0xe0, 0xd5, 0xa5, 0x16, 0xa0, 0xc9, 0x33, 0x30, 0x54, 0xa5, 0x8e, 0xa9, 0x37, 0xe6, 0xda, + 0xb8, 0xdd, 0xe0, 0x6e, 0x46, 0x63, 0x5b, 0x9b, 0xc5, 0x61, 0x17, 0xe1, 0x35, 0x0b, 0x11, 0x5a, + 0x84, 0x8c, 0x9c, 0x83, 0xfc, 0xb4, 0x69, 0xf9, 0x6e, 0xf0, 0xe8, 0x27, 0xbd, 0x6a, 0x5a, 0x9e, + 0x86, 0x50, 0xf5, 0x3f, 0x64, 0xd3, 0xd3, 0x13, 0x1c, 0xc2, 0xd8, 0xda, 0xe3, 0x6d, 0x61, 0x4c, + 0x09, 0xf2, 0xfb, 0x50, 0x82, 0x65, 0x38, 0x51, 0x32, 0x9a, 0xa6, 0x55, 0xc2, 0x9f, 0xee, 0xec, + 0x54, 0x09, 0x07, 0xa4, 0xf4, 0x0c, 0x2b, 0x86, 0x16, 0xdf, 0xc3, 0x63, 0xb6, 0x32, 0x54, 0x4d, + 0xe7, 0xb8, 0x5a, 0x73, 0x59, 0xaf, 0xd5, 0x79, 0x64, 0x7f, 0x2d, 0xce, 0x54, 0xfd, 0x81, 0xec, + 0x36, 0x19, 0x15, 0xee, 0x47, 0xe9, 0xab, 0x5f, 0xca, 0x76, 0x4f, 0x6a, 0x71, 0x5f, 0x0a, 0xe5, + 0xcf, 0xb2, 0x29, 0x29, 0x26, 0xf6, 0x25, 0x89, 0xcb, 0xd0, 0xcf, 0xd9, 0x04, 0xee, 0x9a, 0x38, + 0xe3, 0x70, 0x65, 0xc5, 0x99, 0xce, 0x47, 0x93, 0x39, 0x38, 0x55, 0x5a, 0x5e, 0xa6, 0x75, 0x2f, + 0x8c, 0xde, 0x3b, 0x17, 0x06, 0xdb, 0xe4, 0xd1, 0x4a, 0x05, 0x3e, 0x8c, 0xfe, 0x8b, 0x41, 0x25, + 0x52, 0xcb, 0x91, 0x45, 0x38, 0x1d, 0x87, 0x57, 0xb9, 0xa9, 0x97, 0x97, 0x02, 0x98, 0x26, 0x38, + 0xf2, 0xff, 0xb4, 0x0e, 0x65, 0xd3, 0x5a, 0x89, 0xd3, 0x69, 0x6f, 0xb7, 0x56, 0xe2, 0xdc, 0x9a, + 0x5a, 0x4e, 0xfd, 0x6a, 0x4e, 0xce, 0xc4, 0x71, 0xff, 0x3a, 0xd6, 0x5c, 0x8f, 0xb8, 0xd3, 0xee, + 0x74, 0xc8, 0x3c, 0x23, 0x22, 0x45, 0x18, 0x6d, 0xc7, 0xf7, 0x3c, 0x0b, 0x5e, 0xaa, 0x23, 0x50, + 0xf6, 0x21, 0x0b, 0x28, 0x49, 0x05, 0xf2, 0x25, 0x67, 0x85, 0x9b, 0x31, 0xdb, 0x3d, 0x9e, 0xd1, + 0x9d, 0x15, 0x37, 0xfd, 0xf1, 0x0c, 0x63, 0xa1, 0xfe, 0x58, 0xb6, 0x53, 0x16, 0x8b, 0xa3, 0xea, + 0x10, 0x73, 0x80, 0xf3, 0x49, 0x9a, 0x70, 0x8e, 0xb6, 0xb7, 0xd0, 0xc1, 0x09, 0xe7, 0xf1, 0x59, + 0x1e, 0x50, 0xf8, 0xa6, 0x69, 0x19, 0xe4, 0x41, 0x78, 0xe0, 0x56, 0x75, 0x52, 0xab, 0xdd, 0xac, + 0xcc, 0x95, 0x6b, 0xb7, 0xe6, 0xaa, 0x0b, 0x93, 0x13, 0x95, 0xa9, 0xca, 0x64, 0x79, 0xb4, 0x87, + 0x9c, 0x84, 0x13, 0x21, 0x6a, 0xfa, 0xd6, 0x6c, 0x69, 0x6e, 0x34, 0x43, 0xc6, 0x60, 0x38, 0x04, + 0x8e, 0xcf, 0x2f, 0x8e, 0x66, 0x1f, 0x7f, 0x3f, 0x0c, 0xe2, 0x8e, 0x89, 0xaf, 0xfc, 0x64, 0x08, + 0xfa, 0xe7, 0xc7, 0xab, 0x93, 0xda, 0x6d, 0x64, 0x02, 0x50, 0x28, 0x4f, 0xce, 0x31, 0x86, 0x99, + 0xc7, 0xff, 0x73, 0x06, 0xa0, 0x3a, 0xb5, 0xb8, 0x20, 0x08, 0x07, 0xa1, 0xaf, 0x32, 0x77, 0xbb, + 0x34, 0x53, 0x61, 0x74, 0xfd, 0x90, 0x9f, 0x5f, 0x98, 0x64, 0x35, 0x0c, 0x40, 0xef, 0xc4, 0xcc, + 0x7c, 0x75, 0x72, 0x34, 0xcb, 0x80, 0xda, 0x64, 0xa9, 0x3c, 0x9a, 0x63, 0xc0, 0x3b, 0x5a, 0x65, + 0x71, 0x72, 0x34, 0xcf, 0xfe, 0x9c, 0xa9, 0x2e, 0x96, 0x16, 0x47, 0x7b, 0xd9, 0x9f, 0x53, 0xf8, + 0x67, 0x81, 0x31, 0xab, 0x4e, 0x2e, 0xe2, 0x8f, 0x3e, 0xd6, 0x84, 0x29, 0xff, 0x57, 0x3f, 0x43, + 0x31, 0xd6, 0xe5, 0x8a, 0x36, 0x3a, 0xc0, 0x7e, 0x30, 0x96, 0xec, 0x07, 0xb0, 0xc6, 0x69, 0x93, + 0xb3, 0xf3, 0xb7, 0x27, 0x47, 0x07, 0x19, 0xaf, 0xd9, 0x9b, 0x0c, 0x3c, 0xc4, 0xfe, 0xd4, 0x66, + 0xd9, 0x9f, 0xc3, 0x8c, 0x93, 0x36, 0x59, 0x9a, 0x59, 0x28, 0x2d, 0x4e, 0x8f, 0x8e, 0xb0, 0xf6, + 0x20, 0xcf, 0x13, 0xbc, 0xe4, 0x5c, 0x69, 0x76, 0x72, 0x74, 0x54, 0xd0, 0x94, 0x67, 0x2a, 0x73, + 0x37, 0x47, 0xc7, 0xb0, 0x21, 0xaf, 0xcf, 0xe2, 0x0f, 0xc2, 0x0a, 0xe0, 0x5f, 0x27, 0x1f, 0xff, + 0x04, 0x14, 0xe6, 0xab, 0x68, 0xdf, 0x9e, 0x81, 0x93, 0xf3, 0xd5, 0xda, 0xe2, 0xeb, 0x0b, 0x93, + 0x31, 0x79, 0x8f, 0xc1, 0xb0, 0x8f, 0x98, 0xa9, 0xcc, 0xdd, 0xfa, 0x28, 0x97, 0xb6, 0x0f, 0x9a, + 0x2d, 0x4d, 0xcc, 0x57, 0x47, 0xb3, 0xac, 0x57, 0x7c, 0xd0, 0x9d, 0xca, 0x5c, 0x79, 0xfe, 0x4e, + 0x75, 0x34, 0xf7, 0xf8, 0x5d, 0x3f, 0x95, 0xe9, 0xbc, 0x63, 0xae, 0x98, 0x16, 0x39, 0x0f, 0x0f, + 0x96, 0x27, 0x6f, 0x57, 0x26, 0x26, 0x6b, 0xf3, 0x5a, 0xe5, 0x46, 0x65, 0x2e, 0x56, 0xd3, 0x03, + 0x30, 0x16, 0x45, 0x97, 0x16, 0x2a, 0xa3, 0x19, 0x72, 0x1a, 0x48, 0x14, 0xfc, 0x6a, 0x69, 0x76, + 0x6a, 0x34, 0x4b, 0x14, 0x38, 0x15, 0x85, 0x57, 0xe6, 0x16, 0x6f, 0xcd, 0x4d, 0x8e, 0xe6, 0x1e, + 0xff, 0xe9, 0x0c, 0x3c, 0x90, 0xfa, 0x64, 0x9f, 0xa8, 0x70, 0x61, 0x72, 0xa6, 0x54, 0x5d, 0xac, + 0x4c, 0x54, 0x27, 0x4b, 0xda, 0xc4, 0x74, 0x6d, 0xa2, 0xb4, 0x38, 0x79, 0x63, 0x5e, 0x7b, 0xbd, + 0x76, 0x63, 0x72, 0x6e, 0x52, 0x2b, 0xcd, 0x8c, 0xf6, 0x90, 0x47, 0xa1, 0xd8, 0x81, 0xa6, 0x3a, + 0x39, 0x71, 0x4b, 0xab, 0x2c, 0xbe, 0x3e, 0x9a, 0x21, 0x8f, 0xc0, 0xf9, 0x8e, 0x44, 0xec, 0xf7, + 0x68, 0x96, 0x5c, 0x80, 0xb3, 0x9d, 0x48, 0x5e, 0x9b, 0x19, 0xcd, 0x3d, 0xfe, 0x23, 0x19, 0x20, + 0xc9, 0x37, 0xd7, 0xe4, 0x61, 0x38, 0xc7, 0xf4, 0xa2, 0xd6, 0xb9, 0x81, 0x8f, 0xc0, 0xf9, 0x54, + 0x0a, 0xa9, 0x79, 0x45, 0x78, 0xa8, 0x03, 0x89, 0x68, 0xdc, 0x39, 0x50, 0xd2, 0x09, 0xb0, 0x69, + 0xbf, 0x92, 0x81, 0x07, 0x52, 0x8d, 0x6d, 0x72, 0x09, 0xde, 0x57, 0x2a, 0xcf, 0xb2, 0xbe, 0x99, + 0x58, 0xac, 0xcc, 0xcf, 0x55, 0x6b, 0xb3, 0x53, 0xa5, 0x1a, 0xd3, 0xbe, 0x5b, 0xd5, 0x58, 0x6f, + 0x5e, 0x04, 0xb5, 0x0b, 0xe5, 0xc4, 0x74, 0x69, 0xee, 0x06, 0x1b, 0x7e, 0xe4, 0x7d, 0xf0, 0x70, + 0x47, 0xba, 0xc9, 0xb9, 0xd2, 0xf8, 0xcc, 0x64, 0x79, 0x34, 0x4b, 0x1e, 0x83, 0x47, 0x3a, 0x52, + 0x95, 0x2b, 0x55, 0x4e, 0x96, 0x1b, 0x2f, 0xbf, 0xfd, 0x2f, 0x2f, 0xf4, 0xbc, 0xfd, 0xcd, 0x0b, + 0x99, 0xdf, 0xfb, 0xe6, 0x85, 0xcc, 0x9f, 0x7c, 0xf3, 0x42, 0xe6, 0x63, 0xd7, 0x76, 0xf3, 0x96, + 0x9e, 0x4f, 0x5b, 0x4b, 0x05, 0x5c, 0xf8, 0x9e, 0xfe, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x47, + 0x8b, 0xb0, 0xe1, 0x46, 0x53, 0x01, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -14610,6 +14624,20 @@ func (m *UserMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.BotInstanceID) > 0 { + i -= len(m.BotInstanceID) + copy(dAtA[i:], m.BotInstanceID) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BotInstanceID))) + i-- + dAtA[i] = 0x62 + } + if len(m.BotName) > 0 { + i -= len(m.BotName) + copy(dAtA[i:], m.BotName) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BotName))) + i-- + dAtA[i] = 0x5a + } if m.UserKind != 0 { i = encodeVarintEvents(dAtA, i, uint64(m.UserKind)) i-- @@ -23435,6 +23463,13 @@ func (m *BotJoin) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.BotInstanceID) > 0 { + i -= len(m.BotInstanceID) + copy(dAtA[i:], m.BotInstanceID) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BotInstanceID))) + i-- + dAtA[i] = 0x4a + } { size, err := m.ConnectionMetadata.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -28426,6 +28461,15 @@ func (m *Identity) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.BotInstanceID) > 0 { + i -= len(m.BotInstanceID) + copy(dAtA[i:], m.BotInstanceID) + i = encodeVarintEvents(dAtA, i, uint64(len(m.BotInstanceID))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xea + } if m.DeviceExtensions != nil { { size, err := m.DeviceExtensions.MarshalToSizedBuffer(dAtA[:i]) @@ -33933,6 +33977,14 @@ func (m *UserMetadata) Size() (n int) { if m.UserKind != 0 { n += 1 + sovEvents(uint64(m.UserKind)) } + l = len(m.BotName) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.BotInstanceID) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -37115,6 +37167,10 @@ func (m *BotJoin) Size() (n int) { } l = m.ConnectionMetadata.Size() n += 1 + l + sovEvents(uint64(l)) + l = len(m.BotInstanceID) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -39648,6 +39704,10 @@ func (m *Identity) Size() (n int) { l = m.DeviceExtensions.Size() n += 2 + l + sovEvents(uint64(l)) } + l = len(m.BotInstanceID) + if l > 0 { + n += 2 + l + sovEvents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -42219,6 +42279,70 @@ func (m *UserMetadata) Unmarshal(dAtA []byte) error { break } } + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BotName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotInstanceID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BotInstanceID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -68802,6 +68926,38 @@ func (m *BotJoin) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotInstanceID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BotInstanceID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -78718,6 +78874,38 @@ func (m *Identity) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 29: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotInstanceID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BotInstanceID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 6ebe51e4ca35e..81f11a97f9b7e 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -13144,10 +13144,20 @@ type RegisterUsingTokenRequest struct { // Expires is a desired time of the expiry of user certificates returned by // registration. This only applies to bot joining, and will be ignored by // node joining. - Expires *time.Time `protobuf:"bytes,12,opt,name=Expires,proto3,stdtime" json:"expires,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Expires *time.Time `protobuf:"bytes,12,opt,name=Expires,proto3,stdtime" json:"expires,omitempty"` + // BotInstanceID is a trusted instance identifier for a Machine ID bot, + // provided when rejoining. This parameters may only be provided by the join + // service and is ignored otherwise; bots should otherwise rejoin with their + // existing client certificate to prove their instance identity. + BotInstanceID string `protobuf:"bytes,13,opt,name=BotInstanceID,proto3" json:"bot_instance_id"` + // BotGeneration is a trusted generation counter value for Machine ID bots, + // provided to Auth by the Join Service when bots rejoin via a streamed/gRPC + // join method. Rejoining bots supply this value via a client certificate + // extension; it is ignored from other sources. + BotGeneration int32 `protobuf:"varint,14,opt,name=BotGeneration,proto3" json:"bot_generation"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *RegisterUsingTokenRequest) Reset() { *m = RegisterUsingTokenRequest{} } @@ -19160,1639 +19170,1643 @@ func init() { func init() { proto.RegisterFile("teleport/legacy/types/types.proto", fileDescriptor_9198ee693835762e) } var fileDescriptor_9198ee693835762e = []byte{ - // 26104 bytes of a gzipped FileDescriptorProto + // 26162 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x70, 0x5c, 0x59, 0x76, 0x18, 0x36, 0xfd, 0x01, 0xa0, 0x71, 0xf0, 0xd5, 0xb8, 0x00, 0x49, 0x10, 0x33, 0x1c, 0x70, 0x1e, 0x67, 0x38, 0xe4, 0x7c, 0x90, 0x4b, 0x70, 0x87, 0xbb, 0xb3, 0xf3, 0xd9, 0xe8, 0x06, 0x89, 0x26, 0x41, 0xa0, 0xf7, 0x35, 0x48, 0xec, 0x68, 0x76, 0xf7, 0xed, 0x43, 0xf7, 0x05, 0xf0, 0x06, 0xdd, 0xfd, 0x7a, 0xdf, 0x7b, 0x4d, 0x12, 0x2b, 0x3b, 0x5e, 0xc9, 0x96, 0x37, 0x8a, 0xad, 0x2f, 0x7b, 0x65, 0xad, 0x53, 0xb6, 0x4a, 0xa5, 0xb2, 0x1c, 0x25, 0xb1, 0x55, 0x29, 0xc9, 0x2e, 0x3b, - 0xa5, 0x58, 0xb1, 0x52, 0x2a, 0x95, 0x22, 0x97, 0x13, 0xa5, 0xe2, 0x54, 0x92, 0x8d, 0x0a, 0x8a, - 0x2c, 0x97, 0x2b, 0xc5, 0x4a, 0x52, 0x72, 0x94, 0x72, 0x25, 0x9b, 0x52, 0x92, 0xba, 0xe7, 0xde, + 0xa5, 0x58, 0xb1, 0x52, 0x2a, 0x95, 0x22, 0x97, 0x13, 0xa5, 0x92, 0x54, 0x92, 0x8d, 0x0a, 0x8a, + 0x2c, 0x97, 0x2b, 0xc5, 0x4a, 0x52, 0x72, 0x94, 0x72, 0x25, 0x9b, 0x92, 0x93, 0xba, 0xe7, 0xde, 0xfb, 0xde, 0xbd, 0xef, 0xbd, 0x6e, 0x34, 0x66, 0x38, 0x96, 0xb8, 0xc9, 0x1f, 0x12, 0x7d, 0xee, - 0x39, 0xe7, 0xde, 0x77, 0x3f, 0xcf, 0x3d, 0xf7, 0x7c, 0xc0, 0x0b, 0x01, 0x6d, 0xd1, 0xae, 0xeb, - 0x05, 0x57, 0x5b, 0x74, 0xcf, 0x6e, 0x1c, 0x5e, 0x0d, 0x0e, 0xbb, 0xd4, 0xe7, 0xff, 0x5e, 0xe9, - 0x7a, 0x6e, 0xe0, 0x92, 0x11, 0xfc, 0xb1, 0x38, 0xbf, 0xe7, 0xee, 0xb9, 0x08, 0xb9, 0xca, 0xfe, - 0xe2, 0x85, 0x8b, 0x4b, 0x7b, 0xae, 0xbb, 0xd7, 0xa2, 0x57, 0xf1, 0xd7, 0x4e, 0x6f, 0xf7, 0x6a, - 0xe0, 0xb4, 0xa9, 0x1f, 0xd8, 0xed, 0xae, 0x40, 0xb8, 0x1c, 0x56, 0x60, 0x07, 0x01, 0x2b, 0x09, - 0x1c, 0xb7, 0x73, 0xf5, 0xc1, 0x35, 0xf5, 0xa7, 0x40, 0x7d, 0x3d, 0xbd, 0x2d, 0x0f, 0x3d, 0xbb, - 0xdb, 0xa5, 0x5e, 0xf4, 0x07, 0x47, 0x37, 0xfe, 0x41, 0x0e, 0xc6, 0xef, 0x50, 0xda, 0x2d, 0xb5, - 0x9c, 0x07, 0x94, 0x5c, 0x80, 0xfc, 0x86, 0xdd, 0xa6, 0x0b, 0x99, 0xf3, 0x99, 0x4b, 0xe3, 0x2b, - 0x33, 0x8f, 0x8f, 0x96, 0x26, 0x7c, 0xea, 0x3d, 0xa0, 0x9e, 0xd5, 0xb1, 0xdb, 0xd4, 0xc4, 0x42, - 0xf2, 0x2a, 0x8c, 0xb3, 0xff, 0xfd, 0xae, 0xdd, 0xa0, 0x0b, 0x59, 0xc4, 0x9c, 0x7a, 0x7c, 0xb4, - 0x34, 0xde, 0x91, 0x40, 0x33, 0x2a, 0x27, 0x17, 0x61, 0x6c, 0x9d, 0xda, 0x3e, 0xad, 0x56, 0x16, - 0x72, 0xe7, 0x33, 0x97, 0x72, 0x2b, 0x93, 0x8f, 0x8f, 0x96, 0x0a, 0x2d, 0x06, 0xb2, 0x9c, 0xa6, - 0x29, 0x0b, 0x49, 0x15, 0xc6, 0x56, 0x1f, 0x75, 0x1d, 0x8f, 0xfa, 0x0b, 0xf9, 0xf3, 0x99, 0x4b, - 0x13, 0xcb, 0x8b, 0x57, 0x78, 0xa7, 0x5c, 0x91, 0x9d, 0x72, 0x65, 0x4b, 0x76, 0xca, 0xca, 0xdc, - 0x6f, 0x1d, 0x2d, 0x3d, 0xf3, 0xf8, 0x68, 0x69, 0x8c, 0x72, 0x92, 0x9f, 0xfc, 0xbd, 0xa5, 0x8c, - 0x29, 0xe9, 0xc9, 0xdb, 0x90, 0xdf, 0x3a, 0xec, 0xd2, 0x85, 0xf1, 0xf3, 0x99, 0x4b, 0xd3, 0xcb, - 0xcf, 0x5f, 0xe1, 0xc3, 0x10, 0x7e, 0x64, 0xf4, 0x17, 0xc3, 0x5a, 0x29, 0x3c, 0x3e, 0x5a, 0xca, - 0x33, 0x14, 0x13, 0xa9, 0xc8, 0xeb, 0x30, 0xba, 0xe6, 0xfa, 0x41, 0xb5, 0xb2, 0x00, 0xf8, 0x69, - 0xa7, 0x1e, 0x1f, 0x2d, 0xcd, 0xee, 0xbb, 0x7e, 0x60, 0x39, 0xcd, 0xd7, 0xdc, 0xb6, 0x13, 0xd0, - 0x76, 0x37, 0x38, 0x34, 0x05, 0x92, 0xf1, 0x08, 0xa6, 0x34, 0x7e, 0x64, 0x02, 0xc6, 0xee, 0x6d, - 0xdc, 0xd9, 0xd8, 0xdc, 0xde, 0x28, 0x3e, 0x43, 0x0a, 0x90, 0xdf, 0xd8, 0xac, 0xac, 0x16, 0x33, - 0x64, 0x0c, 0x72, 0xa5, 0x5a, 0xad, 0x98, 0x25, 0x93, 0x50, 0xa8, 0x94, 0xb6, 0x4a, 0x2b, 0xa5, - 0xfa, 0x6a, 0x31, 0x47, 0xe6, 0x60, 0x66, 0xbb, 0xba, 0x51, 0xd9, 0xdc, 0xae, 0x5b, 0x95, 0xd5, - 0xfa, 0x9d, 0xad, 0xcd, 0x5a, 0x31, 0x4f, 0xa6, 0x01, 0xee, 0xdc, 0x5b, 0x59, 0x35, 0x37, 0x56, - 0xb7, 0x56, 0xeb, 0xc5, 0x11, 0x32, 0x0f, 0x45, 0x49, 0x62, 0xd5, 0x57, 0xcd, 0xfb, 0xd5, 0xf2, - 0x6a, 0x71, 0xd4, 0xf8, 0x47, 0x39, 0x28, 0xdc, 0xa5, 0x81, 0xdd, 0xb4, 0x03, 0x9b, 0x3c, 0xa7, - 0x0d, 0x1c, 0x7e, 0x93, 0x32, 0x62, 0x17, 0x92, 0x23, 0x36, 0xf2, 0xf8, 0x68, 0x29, 0xf3, 0xba, - 0x3a, 0x52, 0x6f, 0xc1, 0x44, 0x85, 0xfa, 0x0d, 0xcf, 0xe9, 0xb2, 0xd9, 0x84, 0xa3, 0x35, 0xbe, - 0x72, 0xf6, 0xf1, 0xd1, 0xd2, 0xa9, 0x66, 0x04, 0x56, 0x7a, 0x40, 0xc5, 0x26, 0x55, 0x18, 0x5d, - 0xb7, 0x77, 0x68, 0xcb, 0x5f, 0x18, 0x39, 0x9f, 0xbb, 0x34, 0xb1, 0xfc, 0xac, 0xe8, 0x75, 0xd9, - 0xc0, 0x2b, 0xbc, 0x74, 0xb5, 0x13, 0x78, 0x87, 0x2b, 0xf3, 0x8f, 0x8f, 0x96, 0x8a, 0x2d, 0x04, - 0xa8, 0x3d, 0xca, 0x51, 0x48, 0x3d, 0x9a, 0x09, 0xa3, 0xc7, 0xce, 0x84, 0x73, 0xbf, 0x75, 0xb4, - 0x94, 0x61, 0x23, 0x24, 0x66, 0x42, 0xc4, 0x4f, 0x9f, 0x13, 0x06, 0x64, 0xab, 0x95, 0x85, 0x31, - 0x9c, 0x81, 0xe4, 0xf1, 0xd1, 0xd2, 0xa4, 0x3a, 0x98, 0x0b, 0x19, 0x33, 0x5b, 0xad, 0x90, 0x65, - 0x28, 0x98, 0xf4, 0x81, 0xe3, 0xb3, 0xaf, 0x2f, 0xe0, 0xd7, 0x9f, 0x7e, 0x7c, 0xb4, 0x44, 0x3c, - 0x01, 0x53, 0x9a, 0x1a, 0xe2, 0x2d, 0xbe, 0x09, 0x13, 0xca, 0x97, 0x91, 0x22, 0xe4, 0x0e, 0xe8, - 0x21, 0x1f, 0x05, 0x93, 0xfd, 0x49, 0xe6, 0x61, 0xe4, 0x81, 0xdd, 0xea, 0x89, 0x6e, 0x37, 0xf9, - 0x8f, 0x2f, 0x64, 0x3f, 0x9f, 0x31, 0xfe, 0x4a, 0x1e, 0x0a, 0xa6, 0xcb, 0xd7, 0x2e, 0xb9, 0x0c, - 0x23, 0xf5, 0xc0, 0x0e, 0xe4, 0x00, 0xce, 0x3d, 0x3e, 0x5a, 0x9a, 0x61, 0xeb, 0x9a, 0x2a, 0xb5, - 0x72, 0x0c, 0x86, 0x5a, 0xdb, 0xb7, 0x7d, 0x39, 0x90, 0x88, 0xda, 0x65, 0x00, 0x15, 0x15, 0x31, - 0xc8, 0x45, 0xc8, 0xdf, 0x75, 0x9b, 0x54, 0x8c, 0x25, 0xfb, 0xee, 0xe9, 0xb6, 0xdb, 0x54, 0x11, - 0xb1, 0x9c, 0xbc, 0x06, 0xe3, 0xe5, 0x9e, 0xe7, 0xd1, 0x0e, 0x9b, 0xf6, 0x79, 0x44, 0x9e, 0x7e, - 0x7c, 0xb4, 0x04, 0x0d, 0x0e, 0x64, 0x0b, 0x35, 0x42, 0x60, 0x03, 0x54, 0x0f, 0x6c, 0x2f, 0xa0, - 0xcd, 0x85, 0x91, 0xa1, 0x06, 0x88, 0x2d, 0xd5, 0x59, 0x9f, 0x93, 0xc4, 0x07, 0x48, 0x70, 0x22, - 0x6b, 0x30, 0x71, 0xcb, 0xb3, 0x1b, 0xb4, 0x46, 0x3d, 0xc7, 0x6d, 0xe2, 0xc8, 0xe7, 0x56, 0x2e, - 0x3e, 0x3e, 0x5a, 0x3a, 0xbd, 0xc7, 0xc0, 0x56, 0x17, 0xe1, 0x11, 0xf5, 0xf7, 0x8e, 0x96, 0x0a, - 0x95, 0x9e, 0x87, 0xbd, 0x67, 0xaa, 0xa4, 0xe4, 0x6b, 0x6c, 0x48, 0xfc, 0x00, 0xbb, 0x96, 0x36, - 0x71, 0xcc, 0x07, 0x37, 0xd1, 0x10, 0x4d, 0x3c, 0xdd, 0xb2, 0xfd, 0xc0, 0xf2, 0x38, 0x5d, 0xac, - 0x9d, 0x2a, 0x4b, 0xb2, 0x09, 0x85, 0x7a, 0x63, 0x9f, 0x36, 0x7b, 0x2d, 0x8a, 0x13, 0x65, 0x62, - 0xf9, 0x8c, 0x98, 0xee, 0x72, 0x3c, 0x65, 0xf1, 0xca, 0xa2, 0xe0, 0x4d, 0x7c, 0x01, 0x51, 0x67, - 0x91, 0xc4, 0xfa, 0x42, 0xe1, 0x3b, 0x3f, 0xb7, 0xf4, 0xcc, 0x37, 0x7f, 0xf7, 0xfc, 0x33, 0xc6, - 0x3f, 0xc8, 0x42, 0x31, 0xce, 0x84, 0xec, 0xc2, 0xd4, 0xbd, 0x6e, 0xd3, 0x0e, 0x68, 0xb9, 0xe5, - 0xd0, 0x4e, 0xe0, 0xe3, 0x24, 0x19, 0xfc, 0x4d, 0x2f, 0x8a, 0x7a, 0x17, 0x7a, 0x48, 0x68, 0x35, - 0x38, 0x65, 0xec, 0xab, 0x74, 0xb6, 0x51, 0x3d, 0x75, 0xdc, 0xf3, 0x7d, 0x9c, 0x61, 0x27, 0xab, - 0x87, 0x9f, 0x16, 0x7d, 0xea, 0x11, 0x6c, 0xc5, 0x04, 0xea, 0x34, 0x77, 0x0e, 0x71, 0x66, 0x0e, - 0x3f, 0x81, 0x18, 0x49, 0xca, 0x04, 0x62, 0x60, 0xe3, 0x5f, 0x64, 0x60, 0xda, 0xa4, 0xbe, 0xdb, - 0xf3, 0x1a, 0x74, 0x8d, 0xda, 0x4d, 0xea, 0xb1, 0xe9, 0x7f, 0xc7, 0xe9, 0x34, 0xc5, 0x9a, 0xc2, - 0xe9, 0x7f, 0xe0, 0x74, 0xd4, 0x5d, 0x1c, 0xcb, 0xc9, 0x67, 0x60, 0xac, 0xde, 0xdb, 0x41, 0xd4, - 0x6c, 0xb4, 0xee, 0xfd, 0xde, 0x8e, 0x15, 0x43, 0x97, 0x68, 0xe4, 0x2a, 0x8c, 0xdd, 0xa7, 0x9e, - 0x1f, 0xed, 0x93, 0x78, 0x4a, 0x3c, 0xe0, 0x20, 0x95, 0x40, 0x60, 0x91, 0x5b, 0xd1, 0x5e, 0x2d, - 0xce, 0xb7, 0x99, 0xd8, 0x0e, 0x19, 0x4d, 0x95, 0xb6, 0x80, 0xa8, 0x53, 0x45, 0x62, 0x19, 0x3f, - 0x95, 0x85, 0x62, 0xc5, 0x0e, 0xec, 0x1d, 0xdb, 0x17, 0xfd, 0x79, 0xff, 0x3a, 0xdb, 0xfd, 0x95, - 0x0f, 0xc5, 0xdd, 0x9f, 0xb5, 0xfc, 0x63, 0x7f, 0xde, 0x4b, 0xf1, 0xcf, 0x9b, 0x60, 0x87, 0xad, - 0xf8, 0xbc, 0xe8, 0xa3, 0xde, 0x39, 0xfe, 0xa3, 0x8a, 0xe2, 0xa3, 0x0a, 0xf2, 0xa3, 0xa2, 0x4f, - 0x21, 0xef, 0x40, 0xbe, 0xde, 0xa5, 0x0d, 0xb1, 0x89, 0xc8, 0x13, 0x43, 0xff, 0x38, 0x86, 0x70, - 0xff, 0xfa, 0xca, 0xa4, 0x60, 0x93, 0xf7, 0xbb, 0xb4, 0x61, 0x22, 0x99, 0xb2, 0x68, 0xfe, 0x61, - 0x0e, 0xe6, 0xd3, 0xc8, 0xd4, 0xef, 0x18, 0x1d, 0xf0, 0x1d, 0x97, 0xa0, 0xc0, 0x4e, 0x73, 0x76, - 0x60, 0xe2, 0x76, 0x31, 0xce, 0x85, 0x94, 0x7d, 0x01, 0x33, 0xc3, 0x52, 0x72, 0x21, 0x14, 0x0e, - 0x0a, 0x11, 0x3f, 0x21, 0x1c, 0x48, 0x91, 0x80, 0x8d, 0xb5, 0x5c, 0xc2, 0x28, 0x43, 0x44, 0xdd, - 0x22, 0xc1, 0xd1, 0x58, 0x7b, 0x02, 0xa2, 0x1d, 0x2e, 0xf2, 0x50, 0x58, 0x85, 0x82, 0xfc, 0xac, - 0x85, 0x49, 0x64, 0x34, 0x1b, 0xeb, 0xa4, 0xfb, 0xd7, 0xf9, 0x60, 0x36, 0xc5, 0x6f, 0x95, 0x8d, - 0xc4, 0x21, 0xd7, 0xa1, 0x50, 0xf3, 0xdc, 0x47, 0x87, 0xd5, 0x8a, 0xbf, 0x30, 0x75, 0x3e, 0x77, - 0x69, 0x7c, 0xe5, 0xcc, 0xe3, 0xa3, 0xa5, 0xb9, 0x2e, 0x83, 0x59, 0x4e, 0x53, 0x3d, 0x83, 0x43, - 0xc4, 0xdb, 0xf9, 0x42, 0xa6, 0x98, 0xbd, 0x9d, 0x2f, 0x64, 0x8b, 0xb9, 0xdb, 0xf9, 0x42, 0xae, - 0x98, 0xbf, 0x9d, 0x2f, 0xe4, 0x8b, 0x23, 0xb7, 0xf3, 0x85, 0x91, 0xe2, 0xe8, 0xed, 0x7c, 0x61, - 0xbc, 0x08, 0xb7, 0xf3, 0x85, 0x89, 0xe2, 0xa4, 0x26, 0x07, 0x20, 0x83, 0xc0, 0x6d, 0xb8, 0x2d, - 0x33, 0x77, 0xcf, 0xac, 0x9a, 0xa3, 0xe5, 0x52, 0x99, 0x7a, 0x81, 0x99, 0x2b, 0x6d, 0xd7, 0xcd, - 0xa9, 0xca, 0x61, 0xc7, 0x6e, 0x3b, 0x0d, 0x7e, 0x60, 0x9a, 0xb9, 0x5b, 0xe5, 0x9a, 0x51, 0x82, - 0xe9, 0xe8, 0x5b, 0xd6, 0x1d, 0x3f, 0x20, 0x57, 0x61, 0x5c, 0x42, 0xd8, 0x46, 0x97, 0x4b, 0xfd, - 0x6a, 0x33, 0xc2, 0x31, 0x7e, 0x33, 0x0b, 0x10, 0x95, 0x3c, 0xa5, 0x6b, 0xe1, 0x73, 0xda, 0x5a, - 0x38, 0x15, 0x5f, 0x0b, 0x7d, 0x57, 0x01, 0x79, 0x0f, 0x46, 0x99, 0x58, 0xd0, 0x93, 0xc2, 0xd2, - 0x99, 0x38, 0x29, 0x16, 0xde, 0xbf, 0xbe, 0x32, 0x2d, 0x88, 0x47, 0x7d, 0x84, 0x98, 0x82, 0x4c, - 0x59, 0x46, 0x3f, 0x3b, 0x16, 0x0d, 0x86, 0x58, 0x40, 0x97, 0x20, 0x1c, 0x50, 0xd1, 0xa1, 0xb8, - 0x32, 0xba, 0x72, 0x90, 0xc3, 0x52, 0x72, 0x16, 0xd8, 0x80, 0x8b, 0x4e, 0x1d, 0x7b, 0x7c, 0xb4, - 0x94, 0xeb, 0x79, 0x0e, 0x4e, 0x02, 0x72, 0x15, 0xc4, 0x34, 0x10, 0x1d, 0xc8, 0x66, 0xdf, 0x6c, - 0xc3, 0xb6, 0x1a, 0xd4, 0x0b, 0x34, 0x21, 0x4c, 0xa0, 0x91, 0x2e, 0xe8, 0x53, 0x65, 0x21, 0x8f, - 0xd3, 0xe0, 0x52, 0x6a, 0xaf, 0x5c, 0xd1, 0x50, 0xb9, 0x80, 0x79, 0x5e, 0x9e, 0x4a, 0x4d, 0x5e, - 0x66, 0x25, 0x84, 0x4d, 0xbd, 0x02, 0x72, 0x1d, 0xd8, 0x0c, 0x15, 0xbd, 0x0f, 0xa2, 0x9e, 0xd2, - 0x76, 0x7d, 0xe5, 0x94, 0xe0, 0x34, 0x65, 0x3f, 0x54, 0xc9, 0x19, 0x36, 0x79, 0x0b, 0xd8, 0x14, - 0x16, 0xfd, 0x4e, 0x04, 0xd1, 0xad, 0x72, 0xad, 0xdc, 0x72, 0x7b, 0xcd, 0xfa, 0x17, 0xd7, 0x23, - 0xe2, 0xbd, 0x46, 0x57, 0x25, 0xbe, 0x55, 0xae, 0x91, 0xb7, 0x60, 0xa4, 0xf4, 0x8d, 0x9e, 0x47, - 0x85, 0x7c, 0x32, 0x29, 0xeb, 0x64, 0xb0, 0x95, 0x33, 0x82, 0x70, 0xc6, 0x66, 0x3f, 0x55, 0xb9, - 0x0e, 0xcb, 0x59, 0xcd, 0x5b, 0xeb, 0x75, 0x21, 0x7b, 0x90, 0x58, 0xb7, 0x6c, 0xad, 0x2b, 0xcd, - 0x0e, 0xb4, 0xaf, 0x66, 0x54, 0xe4, 0x2a, 0x64, 0x4b, 0x15, 0xbc, 0x1c, 0x4d, 0x2c, 0x8f, 0xcb, - 0x6a, 0x2b, 0x2b, 0xf3, 0x82, 0x64, 0xd2, 0x56, 0x97, 0x41, 0xb6, 0x54, 0x21, 0x2b, 0x30, 0x72, - 0xf7, 0xb0, 0xfe, 0xc5, 0x75, 0xb1, 0x99, 0xcd, 0xc9, 0x79, 0xcd, 0x60, 0x9b, 0xb8, 0xec, 0xfd, - 0xa8, 0xc5, 0xed, 0x43, 0xff, 0xeb, 0x2d, 0xb5, 0xc5, 0x88, 0x46, 0x6a, 0x30, 0x5e, 0x6a, 0xb6, - 0x9d, 0xce, 0x3d, 0x9f, 0x7a, 0x0b, 0x13, 0xc8, 0x67, 0x21, 0xd6, 0xee, 0xb0, 0x7c, 0x65, 0xe1, - 0xf1, 0xd1, 0xd2, 0xbc, 0xcd, 0x7e, 0x5a, 0x3d, 0x9f, 0x7a, 0x0a, 0xb7, 0x88, 0x09, 0xa9, 0x01, - 0xdc, 0x75, 0x3b, 0x7b, 0x6e, 0x29, 0x68, 0xd9, 0x7e, 0x6c, 0x7b, 0x8c, 0x0a, 0x42, 0xf1, 0xe1, - 0x54, 0x9b, 0xc1, 0x2c, 0x9b, 0x01, 0x15, 0x86, 0x0a, 0x0f, 0x72, 0x13, 0x46, 0x37, 0x3d, 0xbb, - 0xd1, 0xa2, 0x0b, 0x53, 0xc8, 0x6d, 0x5e, 0x70, 0xe3, 0x40, 0xf9, 0xa5, 0x0b, 0x82, 0x61, 0xd1, - 0x45, 0xb0, 0x7a, 0x81, 0xe1, 0x88, 0x8b, 0xdb, 0x40, 0x92, 0x73, 0x32, 0xe5, 0x6a, 0xf0, 0xaa, - 0x7a, 0x35, 0x88, 0x16, 0x7d, 0xd9, 0x6d, 0xb7, 0xed, 0x4e, 0x13, 0x69, 0xef, 0x2f, 0xab, 0x37, - 0x86, 0xaf, 0xc3, 0x6c, 0xa2, 0xb3, 0x8e, 0xb9, 0xf9, 0xbd, 0x0b, 0x33, 0x15, 0xba, 0x6b, 0xf7, - 0x5a, 0x41, 0x78, 0x92, 0xf0, 0x25, 0x8a, 0x77, 0xb0, 0x26, 0x2f, 0xb2, 0xe4, 0xf1, 0x61, 0xc6, - 0x91, 0x8d, 0x77, 0x60, 0x4a, 0xfb, 0x7c, 0x76, 0x55, 0x28, 0xf5, 0x9a, 0x4e, 0x80, 0x03, 0x99, - 0x89, 0xae, 0x0a, 0x36, 0x03, 0xe2, 0x70, 0x99, 0x11, 0x82, 0xf1, 0xb7, 0x54, 0x69, 0x45, 0xec, - 0x44, 0xec, 0x86, 0x2d, 0xf6, 0x83, 0x4c, 0x24, 0x3b, 0x25, 0xf6, 0x83, 0x70, 0x37, 0xb8, 0xcc, - 0xd7, 0x66, 0x36, 0xb1, 0x36, 0x27, 0xc4, 0x48, 0xe4, 0xec, 0x87, 0x3e, 0x5f, 0x91, 0xe1, 0x4c, - 0xcd, 0x7d, 0xfc, 0x99, 0xfa, 0x1e, 0x4c, 0xde, 0xb5, 0x3b, 0xf6, 0x1e, 0x6d, 0xb2, 0x2f, 0xe0, - 0x7b, 0xcf, 0xf8, 0xca, 0xb3, 0x8f, 0x8f, 0x96, 0xce, 0xb4, 0x39, 0x1c, 0xbf, 0x52, 0x9d, 0x44, - 0x1a, 0x01, 0xb9, 0x26, 0x57, 0xf6, 0x48, 0xca, 0xca, 0x9e, 0x12, 0xb5, 0x8f, 0xe0, 0xca, 0x16, - 0xeb, 0xd9, 0xf8, 0xdf, 0x0b, 0xf8, 0x8d, 0xe4, 0x35, 0x18, 0x35, 0xe9, 0x1e, 0x3b, 0x6a, 0x32, - 0xd1, 0x20, 0x79, 0x08, 0x51, 0x3b, 0x86, 0xe3, 0xa0, 0x9c, 0x41, 0x9b, 0xfe, 0xbe, 0xb3, 0x1b, - 0x88, 0xde, 0x09, 0xe5, 0x0c, 0x01, 0x56, 0xe4, 0x0c, 0x01, 0xd1, 0x2f, 0xb1, 0x1c, 0xc6, 0x76, - 0x3f, 0xb3, 0x52, 0x17, 0x9d, 0x26, 0x7b, 0xd8, 0xac, 0x28, 0xdb, 0x88, 0xa7, 0x49, 0x09, 0x0c, - 0x9b, 0xdc, 0x80, 0xf1, 0x52, 0xa3, 0xe1, 0xf6, 0x94, 0x3b, 0x23, 0x5f, 0xb7, 0x1c, 0xa8, 0x6b, - 0x4b, 0x22, 0x54, 0x52, 0x87, 0x89, 0x55, 0x76, 0xd1, 0x72, 0xca, 0x76, 0x63, 0x5f, 0x76, 0x92, - 0xdc, 0xc3, 0x94, 0x92, 0x68, 0xe5, 0x52, 0x04, 0x36, 0x18, 0x50, 0x55, 0x3f, 0x28, 0xb8, 0x64, - 0x0b, 0x26, 0xea, 0xb4, 0xe1, 0xd1, 0xa0, 0x1e, 0xb8, 0x1e, 0x8d, 0x6d, 0xc9, 0x4a, 0xc9, 0xca, - 0xf3, 0xf2, 0xae, 0xe7, 0x23, 0xd0, 0xf2, 0x19, 0x54, 0xe5, 0xaa, 0x20, 0x73, 0xa1, 0xbd, 0xed, - 0x7a, 0x87, 0x95, 0x15, 0xb1, 0x4d, 0x47, 0x67, 0x3a, 0x07, 0xab, 0x42, 0x3b, 0x83, 0x34, 0x77, - 0x74, 0xa1, 0x9d, 0x63, 0xe1, 0x48, 0x55, 0xea, 0x28, 0x5b, 0x89, 0x4d, 0x7b, 0x26, 0xea, 0x65, - 0x04, 0x2b, 0x23, 0xd5, 0xf4, 0x51, 0x32, 0xd3, 0x46, 0x4a, 0x60, 0x91, 0x2e, 0x10, 0x39, 0x6a, - 0x5c, 0xd0, 0x6d, 0x51, 0xdf, 0x17, 0x7b, 0xf9, 0xd9, 0xd8, 0xe0, 0x47, 0x08, 0x2b, 0x2f, 0x09, - 0xe6, 0xe7, 0xe4, 0x34, 0x10, 0xf7, 0x34, 0x56, 0xa8, 0xd4, 0x93, 0xc2, 0x9b, 0xbc, 0x09, 0xb0, - 0xfa, 0x28, 0xa0, 0x5e, 0xc7, 0x6e, 0x85, 0x2a, 0x31, 0x54, 0x0a, 0x51, 0x01, 0xd5, 0x07, 0x5a, - 0x41, 0x26, 0x65, 0x98, 0x2a, 0xf9, 0x7e, 0xaf, 0x4d, 0x4d, 0xb7, 0x45, 0x4b, 0xe6, 0x06, 0xee, - 0xfb, 0xe3, 0x2b, 0xe7, 0x1e, 0x1f, 0x2d, 0x9d, 0xb5, 0xb1, 0xc0, 0xf2, 0xdc, 0x16, 0xb5, 0x6c, - 0x4f, 0x9d, 0xdd, 0x3a, 0x0d, 0xd9, 0x04, 0xd8, 0xec, 0xd2, 0x4e, 0x9d, 0xda, 0x5e, 0x63, 0x3f, - 0xb6, 0xcd, 0x47, 0x05, 0x2b, 0xcf, 0x89, 0x2f, 0x9c, 0x77, 0xbb, 0xb4, 0xe3, 0x23, 0x4c, 0x6d, - 0x55, 0x84, 0x49, 0xb6, 0x61, 0xa6, 0x5a, 0xba, 0x5b, 0x73, 0x5b, 0x4e, 0xe3, 0x50, 0x48, 0x4e, - 0xd3, 0xa8, 0x28, 0x3c, 0x2d, 0xb8, 0xc6, 0x4a, 0xf9, 0xf6, 0xe4, 0xd8, 0x6d, 0xab, 0x8b, 0x50, - 0x4b, 0xc8, 0x4f, 0x71, 0x2e, 0xe4, 0x03, 0x36, 0x07, 0x7d, 0x26, 0x0c, 0x6e, 0xd9, 0x7b, 0xfe, - 0xc2, 0x8c, 0xa6, 0x07, 0x2b, 0x6d, 0xd7, 0xaf, 0x28, 0xa5, 0x5c, 0x4c, 0x59, 0xe4, 0x13, 0x11, - 0xa1, 0x56, 0x60, 0xef, 0xf9, 0xfa, 0x44, 0x0c, 0xb1, 0x17, 0xdf, 0x85, 0x62, 0x9c, 0xf8, 0x24, - 0xaa, 0xa6, 0xdb, 0xf9, 0xc2, 0x54, 0x71, 0x5a, 0x69, 0xf1, 0xea, 0x23, 0xc7, 0x0f, 0x7c, 0xe3, - 0x07, 0xb5, 0x55, 0xc3, 0x56, 0xf4, 0x1d, 0x7a, 0x58, 0xf3, 0xe8, 0xae, 0xf3, 0x48, 0x6c, 0x40, - 0xb8, 0xa2, 0x0f, 0xe8, 0xa1, 0xd5, 0x45, 0xa8, 0xba, 0xa2, 0x43, 0x54, 0xf2, 0x59, 0x28, 0xdc, - 0xb9, 0x5b, 0xbf, 0x43, 0x0f, 0xab, 0x15, 0x71, 0xb8, 0x70, 0xb2, 0xb6, 0x6f, 0x31, 0x52, 0x6d, - 0x7e, 0x84, 0x98, 0xc6, 0x4a, 0xb4, 0x7b, 0xb1, 0x9a, 0xcb, 0xad, 0x9e, 0x1f, 0x50, 0xaf, 0x5a, - 0x51, 0x6b, 0x6e, 0x70, 0x60, 0x6c, 0x2f, 0x09, 0x51, 0x8d, 0x7f, 0x98, 0xc5, 0x9d, 0x8b, 0x4d, - 0xd2, 0x6a, 0xc7, 0x0f, 0xec, 0x4e, 0x83, 0x86, 0x0c, 0x70, 0x92, 0x3a, 0x02, 0x1a, 0x9b, 0xa4, - 0x11, 0xb2, 0x5e, 0x75, 0x76, 0xe8, 0xaa, 0x59, 0x95, 0x52, 0xdb, 0x20, 0x54, 0xdb, 0xa2, 0x4a, - 0x4f, 0x40, 0x63, 0x55, 0x46, 0xc8, 0xe4, 0x22, 0x8c, 0x55, 0x4b, 0x77, 0x4b, 0xbd, 0x60, 0x1f, - 0xf7, 0xcd, 0x02, 0x97, 0xa9, 0xd9, 0x0c, 0xb3, 0x7b, 0xc1, 0xbe, 0x29, 0x0b, 0xc9, 0x55, 0xbc, - 0xab, 0x74, 0x68, 0xc0, 0x95, 0xaa, 0xe2, 0xa0, 0xf4, 0x39, 0x28, 0x76, 0x55, 0x61, 0x20, 0xf2, - 0x0a, 0x8c, 0xdc, 0xaf, 0x95, 0xab, 0x15, 0x71, 0xd9, 0xc5, 0xd3, 0xe3, 0x41, 0xb7, 0xa1, 0xb7, - 0x84, 0xa3, 0x18, 0xbf, 0x9e, 0x89, 0xf6, 0x24, 0x72, 0x51, 0x93, 0x21, 0x50, 0x51, 0xc2, 0x64, - 0x08, 0x55, 0x51, 0x82, 0xd2, 0x84, 0x09, 0xa4, 0xdc, 0xf3, 0x03, 0xb7, 0xbd, 0xda, 0x69, 0x76, - 0x5d, 0xa7, 0x13, 0x20, 0x15, 0xef, 0x35, 0xe3, 0xf1, 0xd1, 0xd2, 0xf3, 0x0d, 0x2c, 0xb5, 0xa8, - 0x28, 0xb6, 0x62, 0x5c, 0x52, 0xa8, 0x3f, 0x41, 0x47, 0x1a, 0xbf, 0x9d, 0xd5, 0xce, 0x12, 0xd6, - 0x3c, 0x93, 0x76, 0x5b, 0x4e, 0x03, 0xaf, 0xcf, 0xb7, 0x3c, 0xb7, 0xd7, 0x0d, 0xa7, 0x03, 0x36, - 0xcf, 0x8b, 0x4a, 0xad, 0x3d, 0x56, 0xac, 0xf3, 0x4e, 0xa1, 0x26, 0xef, 0xc3, 0x24, 0x3b, 0xd6, - 0xc5, 0x4f, 0x7f, 0x21, 0x8b, 0x23, 0xf1, 0x1c, 0xaa, 0xbc, 0x7c, 0xea, 0x85, 0x6c, 0x34, 0x79, - 0x40, 0xa5, 0x20, 0x4d, 0x58, 0xd8, 0xf2, 0xec, 0x8e, 0xef, 0x04, 0xab, 0x9d, 0x86, 0x77, 0x88, - 0x62, 0xc8, 0x6a, 0xc7, 0xde, 0x69, 0xd1, 0x26, 0x7e, 0x6e, 0x61, 0xe5, 0xd2, 0xe3, 0xa3, 0xa5, - 0x17, 0x03, 0x8e, 0x63, 0xd1, 0x10, 0xc9, 0xa2, 0x1c, 0x4b, 0xe1, 0xdc, 0x97, 0x13, 0x13, 0x5b, - 0x64, 0xb7, 0xe2, 0xe3, 0x07, 0x3f, 0x91, 0x51, 0x6c, 0x09, 0x47, 0x83, 0x6d, 0x45, 0x6a, 0x33, - 0x55, 0x02, 0xe3, 0x5f, 0x67, 0xa2, 0xd3, 0x8e, 0xbc, 0x0d, 0x13, 0x62, 0xaa, 0x2b, 0xf3, 0x02, - 0xb7, 0x2b, 0xb9, 0x2e, 0x62, 0x23, 0xab, 0xa2, 0xb3, 0x4b, 0x76, 0xa9, 0xbc, 0xae, 0xcc, 0x0d, - 0xbc, 0x64, 0xdb, 0x8d, 0x56, 0x9c, 0x4a, 0xa2, 0xb1, 0x49, 0xb0, 0xb5, 0x5e, 0xd7, 0x7b, 0x05, - 0x27, 0x41, 0xd0, 0xf2, 0x53, 0xba, 0x41, 0x41, 0xfe, 0xe4, 0x1f, 0xfe, 0xdf, 0x66, 0xd2, 0x0e, - 0x55, 0xb2, 0x02, 0x53, 0xdb, 0xae, 0x77, 0x80, 0xe3, 0xab, 0x74, 0x02, 0x8e, 0xfc, 0x43, 0x59, - 0x10, 0xff, 0x20, 0x9d, 0x44, 0x6d, 0x9b, 0xd2, 0x1b, 0x7a, 0xdb, 0x62, 0x1c, 0x34, 0x02, 0x36, - 0x0e, 0x21, 0xc7, 0x70, 0x75, 0xe0, 0x38, 0x44, 0x4d, 0xd0, 0xa6, 0xb0, 0x8a, 0x6e, 0xfc, 0xa3, - 0x8c, 0x7a, 0x78, 0xb2, 0x4e, 0xae, 0xb8, 0x6d, 0xdb, 0xe9, 0x28, 0x9f, 0xc3, 0xdf, 0x77, 0x10, - 0x1a, 0x6f, 0x89, 0x82, 0x4c, 0xae, 0x43, 0x81, 0xff, 0x0a, 0x37, 0x49, 0x54, 0x21, 0x09, 0x42, - 0x7d, 0x87, 0x97, 0x88, 0x89, 0x91, 0xc9, 0x9d, 0x74, 0x64, 0xbe, 0x99, 0x81, 0x09, 0xe5, 0x3e, - 0xcd, 0xf6, 0xea, 0x9a, 0xe7, 0x7e, 0x44, 0x1b, 0x81, 0x7e, 0x4c, 0x74, 0x39, 0x30, 0xb6, 0x57, - 0x87, 0xa8, 0xb1, 0xe3, 0x21, 0x7b, 0x82, 0xe3, 0xc1, 0xf8, 0x57, 0x19, 0x21, 0xcd, 0x0f, 0xbd, - 0x47, 0xea, 0xfb, 0x59, 0xf6, 0x24, 0x07, 0xc3, 0xfb, 0x30, 0x62, 0xd2, 0xa6, 0xe3, 0x0b, 0x49, - 0x7c, 0x56, 0xbd, 0x39, 0x60, 0x41, 0x74, 0x79, 0xf1, 0xd8, 0x4f, 0x75, 0x57, 0xc7, 0x72, 0x26, - 0x72, 0x55, 0xfd, 0x9b, 0x2d, 0xfa, 0xc8, 0xe1, 0x33, 0x59, 0x1c, 0x30, 0x28, 0x72, 0x39, 0xbe, - 0xb5, 0xcb, 0x4a, 0x84, 0xec, 0xa7, 0xce, 0x5a, 0x8d, 0xc6, 0xf8, 0x00, 0x20, 0xaa, 0x92, 0xdc, - 0x81, 0xa2, 0x58, 0xdb, 0x4e, 0x67, 0x8f, 0x8b, 0x0f, 0xa2, 0x0f, 0x96, 0x1e, 0x1f, 0x2d, 0x3d, - 0xdb, 0x08, 0xcb, 0x84, 0x7c, 0xa4, 0xf0, 0x4d, 0x10, 0x1a, 0xff, 0x5e, 0x16, 0xb2, 0x25, 0x1c, - 0x90, 0x3b, 0xf4, 0x30, 0xb0, 0x77, 0x6e, 0x3a, 0x2d, 0x6d, 0x26, 0x1e, 0x20, 0xd4, 0xda, 0x75, - 0xb4, 0x8b, 0xb5, 0x82, 0xcc, 0x66, 0xe2, 0x1d, 0x6f, 0xe7, 0x0d, 0x24, 0x54, 0x66, 0xe2, 0x81, - 0xb7, 0xf3, 0x46, 0x9c, 0x2c, 0x44, 0x24, 0x06, 0x8c, 0xf2, 0x59, 0x29, 0xe6, 0x20, 0x3c, 0x3e, - 0x5a, 0x1a, 0xe5, 0x93, 0xd7, 0x14, 0x25, 0xe4, 0x2c, 0xe4, 0xea, 0xb5, 0x0d, 0xb1, 0x7d, 0xa0, - 0x02, 0xcb, 0xef, 0x76, 0x4c, 0x06, 0x63, 0x75, 0xae, 0x57, 0x4a, 0x35, 0xbc, 0xb2, 0x8e, 0x44, - 0x75, 0xb6, 0x9a, 0x76, 0x37, 0x7e, 0x69, 0x0d, 0x11, 0xc9, 0x3b, 0x30, 0x71, 0xa7, 0x52, 0x5e, - 0x73, 0x7d, 0xbe, 0xf4, 0x47, 0xa3, 0xc9, 0x7f, 0xd0, 0x6c, 0x58, 0xa8, 0x33, 0x8e, 0xef, 0xa1, - 0x0a, 0xbe, 0xf1, 0x23, 0x59, 0x98, 0x50, 0x34, 0x3a, 0xe4, 0xb3, 0xe2, 0x29, 0x2f, 0xa3, 0xc9, - 0xaa, 0x0a, 0x06, 0x2b, 0xe5, 0xd7, 0xff, 0xb6, 0xdb, 0xa4, 0xe2, 0x61, 0x2f, 0xba, 0x6a, 0x67, - 0x87, 0xb9, 0x6a, 0xbf, 0x09, 0xc0, 0xe7, 0x00, 0x36, 0x59, 0x39, 0x8b, 0x15, 0x23, 0x00, 0x75, - 0x5c, 0x22, 0x64, 0x72, 0x1f, 0xe6, 0xb6, 0xbc, 0x9e, 0x1f, 0xd4, 0x0f, 0xfd, 0x80, 0xb6, 0x19, - 0xb7, 0x9a, 0xeb, 0xb6, 0xc4, 0xfc, 0x7b, 0xf1, 0xf1, 0xd1, 0xd2, 0xf9, 0x80, 0x15, 0x5b, 0x3e, - 0x96, 0x63, 0x03, 0xac, 0xae, 0xeb, 0xaa, 0x17, 0xf0, 0x34, 0x06, 0x86, 0x09, 0x93, 0xea, 0xf5, - 0x9d, 0x6d, 0xcb, 0xe2, 0xd9, 0x43, 0x28, 0x65, 0x95, 0x6d, 0x59, 0xb4, 0x32, 0xf9, 0x0c, 0xa3, - 0x93, 0x18, 0x9f, 0x55, 0x55, 0x47, 0xc3, 0x2e, 0x6c, 0xe3, 0x87, 0x33, 0xd1, 0x36, 0x72, 0xff, - 0x1a, 0x79, 0x0b, 0x46, 0xf9, 0x33, 0x93, 0x78, 0x8d, 0x3b, 0x15, 0x5e, 0xbf, 0xd4, 0x37, 0x28, - 0xae, 0xb3, 0xfd, 0x1d, 0xfe, 0x48, 0xfd, 0x8c, 0x29, 0x48, 0x42, 0x75, 0xaf, 0xae, 0xf9, 0x91, - 0xdc, 0x51, 0xb1, 0x79, 0x2d, 0x4d, 0xdd, 0x6b, 0xfc, 0x46, 0x1e, 0xa6, 0x75, 0x34, 0xf5, 0x2d, - 0x2a, 0x33, 0xd4, 0x5b, 0xd4, 0xfb, 0x50, 0x60, 0xfd, 0xe1, 0x34, 0xa8, 0x14, 0x67, 0x5e, 0x44, - 0x25, 0xb8, 0x80, 0x69, 0x6f, 0xac, 0xc0, 0x87, 0x83, 0xdd, 0xc6, 0xcc, 0x90, 0x8a, 0x2c, 0x2b, - 0x0f, 0x26, 0xb9, 0xe8, 0x84, 0x97, 0x0f, 0x26, 0xea, 0x7a, 0x08, 0x9f, 0x4e, 0x5e, 0x87, 0x51, - 0x26, 0xd5, 0x86, 0xca, 0x02, 0x6c, 0x25, 0x13, 0x78, 0x63, 0x76, 0x15, 0x1c, 0x89, 0x6c, 0x43, - 0x61, 0xdd, 0xf6, 0x83, 0x3a, 0xa5, 0x9d, 0x21, 0x5e, 0x99, 0x97, 0x44, 0x57, 0xcd, 0xe1, 0x13, - 0xae, 0x4f, 0x69, 0x27, 0xf6, 0x4c, 0x18, 0x32, 0x23, 0x5f, 0x01, 0x28, 0xbb, 0x9d, 0xc0, 0x73, - 0x5b, 0xeb, 0xee, 0xde, 0xc2, 0x28, 0xde, 0xd2, 0x9e, 0x8f, 0x0d, 0x40, 0x84, 0xc0, 0x2f, 0x6a, - 0xa1, 0x2a, 0xa2, 0xc1, 0x0b, 0xac, 0x96, 0xbb, 0xa7, 0xae, 0x83, 0x08, 0x9f, 0xdc, 0x84, 0xa2, - 0xbc, 0x02, 0xdf, 0xeb, 0xee, 0x79, 0x38, 0x41, 0xc6, 0xa2, 0x63, 0x9b, 0x3e, 0x0a, 0xac, 0x9e, - 0x80, 0xab, 0x3b, 0x65, 0x9c, 0x86, 0x7c, 0x19, 0xce, 0xc4, 0x61, 0x72, 0x94, 0x0b, 0x91, 0x40, - 0xab, 0xb2, 0x4b, 0x99, 0xf7, 0xfd, 0x58, 0x18, 0xdf, 0xcb, 0xc2, 0x99, 0x3e, 0x1f, 0xcb, 0xd6, - 0x03, 0x1e, 0xd7, 0xca, 0x7a, 0x88, 0x9d, 0xd2, 0xdc, 0x50, 0xe6, 0x3c, 0x9a, 0x54, 0xb0, 0x19, - 0x9c, 0x5f, 0x29, 0xc6, 0x4d, 0x2a, 0xd0, 0xa0, 0xe2, 0x36, 0xe4, 0xd9, 0x10, 0x0d, 0xf1, 0xc8, - 0x2b, 0xb5, 0x1f, 0xd3, 0x81, 0xa3, 0x4e, 0x1f, 0x1c, 0x3a, 0xe4, 0x41, 0x3e, 0x0b, 0xb9, 0xad, - 0xad, 0x75, 0x9c, 0x3b, 0x39, 0xfc, 0xf6, 0xa9, 0x20, 0x68, 0x69, 0x53, 0x75, 0x8a, 0xd1, 0x5e, - 0x09, 0x6d, 0x02, 0x18, 0x3a, 0xf9, 0x52, 0xcc, 0x2c, 0xe5, 0x95, 0xc1, 0x03, 0x3d, 0xbc, 0x95, - 0xca, 0x27, 0x31, 0xfc, 0xf8, 0x1b, 0xd9, 0x68, 0x0d, 0xdf, 0x74, 0x5a, 0x01, 0xf5, 0xc8, 0x22, - 0x5f, 0x92, 0xd1, 0xfd, 0xd7, 0x0c, 0x7f, 0x93, 0x85, 0x68, 0x7d, 0x73, 0x56, 0xe1, 0x42, 0x7e, - 0x45, 0x59, 0xc8, 0x39, 0x5c, 0xc8, 0xd3, 0x7d, 0x97, 0xec, 0x2b, 0x29, 0xf3, 0x12, 0x17, 0x62, - 0xca, 0xdc, 0x7b, 0x11, 0xa6, 0x36, 0xdc, 0xd5, 0x47, 0x41, 0x88, 0xc8, 0x16, 0x60, 0xc1, 0xd4, - 0x81, 0x8c, 0xe3, 0x66, 0xab, 0x49, 0xbd, 0xad, 0x7d, 0xbb, 0xa3, 0xbd, 0xb2, 0x9a, 0x09, 0x38, - 0xc3, 0xdd, 0xa0, 0x0f, 0x75, 0xdc, 0x31, 0x8e, 0x1b, 0x87, 0x1b, 0x3f, 0x94, 0x95, 0x9d, 0x71, - 0x7f, 0xf9, 0x29, 0x7d, 0xcd, 0x7b, 0x43, 0x7b, 0xcd, 0x9b, 0x0b, 0xf5, 0x90, 0xe1, 0xd3, 0xf4, - 0xf2, 0x31, 0x2f, 0xda, 0xff, 0xdd, 0x08, 0x4c, 0xaa, 0xe8, 0xac, 0x1f, 0x4a, 0xcd, 0xa6, 0xa7, - 0xf6, 0x83, 0xdd, 0x6c, 0x7a, 0x26, 0x42, 0xb5, 0x07, 0xec, 0xdc, 0xc0, 0x07, 0xec, 0xaf, 0xc2, - 0x78, 0xb9, 0xdd, 0xd4, 0x9e, 0xd5, 0x8c, 0x94, 0xe6, 0x5d, 0x09, 0x91, 0xf8, 0x5a, 0x08, 0xd5, - 0x6b, 0x8d, 0x76, 0x33, 0xf9, 0x98, 0x16, 0xb1, 0xd4, 0xde, 0xbe, 0x47, 0x3e, 0xc9, 0xdb, 0xf7, - 0x0d, 0x18, 0xbf, 0xe7, 0xd3, 0xad, 0x5e, 0xa7, 0x43, 0x5b, 0x38, 0xad, 0x0a, 0x5c, 0xd6, 0xef, - 0xf9, 0xd4, 0x0a, 0x10, 0xaa, 0x36, 0x20, 0x44, 0x55, 0x07, 0x78, 0x6c, 0xc0, 0x00, 0x5f, 0x87, - 0x42, 0x8d, 0x52, 0x0f, 0xfb, 0x74, 0x22, 0x12, 0xe9, 0xba, 0x94, 0x7a, 0x16, 0xeb, 0x58, 0xed, - 0x4d, 0x5c, 0x20, 0x6a, 0x0f, 0xe9, 0x93, 0x43, 0x3e, 0xa4, 0x93, 0x17, 0x60, 0xb2, 0xdb, 0xdb, - 0x69, 0x39, 0x0d, 0xe4, 0x2b, 0x5e, 0xe0, 0xcd, 0x09, 0x0e, 0x63, 0x6c, 0x7d, 0xf2, 0x25, 0x98, - 0xc2, 0x3b, 0x4e, 0x38, 0xe5, 0xa6, 0xb5, 0xf7, 0x27, 0xad, 0x8c, 0x4b, 0x3a, 0x0d, 0x06, 0xb2, - 0x52, 0x0c, 0x45, 0x74, 0x46, 0x8b, 0x75, 0x98, 0xd6, 0x47, 0xf2, 0x09, 0x3c, 0x43, 0x85, 0x46, - 0x01, 0x85, 0xe2, 0xf8, 0xed, 0x7c, 0x01, 0x8a, 0x13, 0xdc, 0x1c, 0xc0, 0x84, 0x5a, 0xf8, 0x4d, - 0x26, 0xb9, 0xd3, 0xdb, 0xa1, 0x5e, 0x87, 0x06, 0xd4, 0x17, 0x97, 0x00, 0xdf, 0xcc, 0x97, 0xba, - 0x5d, 0xdf, 0xf8, 0x7b, 0x59, 0x18, 0x2b, 0x6d, 0xd7, 0xab, 0x9d, 0x5d, 0x17, 0x1f, 0x93, 0xc2, - 0x37, 0x04, 0xf5, 0x31, 0x29, 0x7c, 0x43, 0x50, 0x5f, 0x0e, 0xae, 0xa6, 0x5c, 0xe3, 0xd0, 0x44, - 0x55, 0xb9, 0xc6, 0x69, 0xba, 0xbd, 0xe8, 0x39, 0x25, 0x37, 0xc4, 0x73, 0x4a, 0xa8, 0x3d, 0xcb, - 0x1f, 0xab, 0x3d, 0x23, 0x6f, 0xc1, 0x44, 0xb5, 0x13, 0xd0, 0x3d, 0x2f, 0x9a, 0xe9, 0xe1, 0x95, - 0x32, 0x04, 0xab, 0xa2, 0xbd, 0x82, 0xcd, 0xa6, 0x11, 0xd7, 0xd8, 0x85, 0x9a, 0x3a, 0x9c, 0x46, - 0x5c, 0xb1, 0x17, 0xbb, 0x4c, 0x4b, 0x44, 0xa3, 0x12, 0x9b, 0x23, 0xf2, 0xc9, 0x9a, 0x0b, 0x9f, - 0xd3, 0x91, 0x9a, 0x99, 0x75, 0xec, 0xca, 0x6c, 0xfa, 0x93, 0xb5, 0xf1, 0xad, 0x2c, 0x4c, 0x94, - 0xba, 0xdd, 0xa7, 0xdc, 0x70, 0xe8, 0xf3, 0xda, 0xf6, 0x2a, 0xef, 0x42, 0xe1, 0x77, 0x0d, 0x65, - 0x33, 0xf4, 0x4b, 0x59, 0x98, 0x89, 0x51, 0xa8, 0xad, 0xcf, 0x0c, 0x69, 0x2e, 0x94, 0x1d, 0xd2, - 0x5c, 0x28, 0x37, 0x9c, 0xb9, 0x50, 0xfe, 0x93, 0x6c, 0x99, 0x2f, 0x43, 0xae, 0xd4, 0xed, 0xc6, - 0x9f, 0x1d, 0xbb, 0xdd, 0xfb, 0xd7, 0xf9, 0x7d, 0xd6, 0xee, 0x76, 0x4d, 0x86, 0xa1, 0xed, 0x63, - 0xa3, 0x43, 0xee, 0x63, 0xc6, 0xeb, 0x30, 0x8e, 0xbc, 0xd0, 0x48, 0xe7, 0x3c, 0xe0, 0x62, 0x16, - 0xf6, 0x39, 0x5a, 0x5d, 0x62, 0x99, 0xff, 0x5f, 0x19, 0x18, 0xc1, 0xdf, 0x4f, 0xe9, 0x1c, 0x5b, - 0xd6, 0xe6, 0x58, 0x51, 0x99, 0x63, 0xc3, 0xcc, 0xae, 0xff, 0x35, 0x8f, 0xbd, 0x25, 0xe6, 0x95, - 0xb0, 0x8d, 0xc9, 0xa4, 0xd8, 0xc6, 0xbc, 0x09, 0xca, 0xae, 0xa9, 0x6a, 0x8b, 0x94, 0x33, 0x43, - 0xbd, 0x69, 0x44, 0xc8, 0xe4, 0x20, 0x6e, 0x25, 0x93, 0xc3, 0xc1, 0xb8, 0x10, 0x6f, 0xea, 0x13, - 0x31, 0x90, 0x59, 0x03, 0x52, 0xed, 0xf8, 0xb4, 0xd1, 0xf3, 0x68, 0xfd, 0xc0, 0xe9, 0xde, 0xa7, - 0x9e, 0xb3, 0x7b, 0x28, 0x6e, 0xf7, 0x78, 0x2e, 0x3b, 0xa2, 0xd4, 0xf2, 0x0f, 0x9c, 0x2e, 0xbb, - 0x8a, 0x38, 0xbb, 0x87, 0x66, 0x0a, 0x0d, 0x79, 0x0f, 0xc6, 0x4c, 0xfa, 0xd0, 0x73, 0x02, 0xf9, - 0xf6, 0x3b, 0x1d, 0x5e, 0x9c, 0x11, 0xca, 0x2f, 0x86, 0x1e, 0xff, 0xa1, 0x8e, 0xbf, 0x28, 0x27, - 0xcb, 0x7c, 0xe3, 0xe3, 0x6f, 0xbc, 0x53, 0xd1, 0xd7, 0x96, 0xb6, 0xeb, 0xfd, 0xf6, 0x3d, 0x72, - 0x19, 0x46, 0x70, 0xf7, 0x14, 0x32, 0x01, 0xda, 0x4c, 0xe3, 0x19, 0xaa, 0x6e, 0xed, 0x88, 0x41, - 0x9e, 0x07, 0x08, 0xd5, 0xf7, 0xfe, 0x42, 0x01, 0x4f, 0x6b, 0x05, 0x12, 0xdf, 0xfa, 0xc7, 0x4f, - 0xb2, 0xf5, 0x7f, 0x7a, 0xa6, 0x21, 0x7f, 0x27, 0x0b, 0x17, 0xc2, 0xed, 0x6c, 0xd3, 0xab, 0x97, - 0xee, 0xae, 0x57, 0x9b, 0x35, 0x21, 0xfd, 0xd7, 0x3c, 0xf7, 0x81, 0xc3, 0x6e, 0x7f, 0xd7, 0x8e, - 0x59, 0x8c, 0xeb, 0x7c, 0xd6, 0x72, 0xd5, 0x61, 0x56, 0x7b, 0x44, 0x57, 0x4e, 0x0d, 0xf1, 0xce, - 0xdf, 0xed, 0x26, 0x34, 0x89, 0x6b, 0xcf, 0x98, 0x11, 0x03, 0xf2, 0xc3, 0x19, 0x38, 0x9d, 0xde, - 0x10, 0x71, 0x23, 0x5c, 0x92, 0x92, 0x67, 0x9f, 0xd6, 0xae, 0xbc, 0xfc, 0xf8, 0x68, 0xe9, 0x82, - 0x6f, 0xb7, 0x5b, 0x96, 0xd3, 0xe4, 0xb5, 0x39, 0x0d, 0x6a, 0x75, 0x05, 0x82, 0x56, 0x6f, 0x9f, - 0x9a, 0xa2, 0x35, 0xb9, 0x02, 0x50, 0x90, 0xba, 0x19, 0xe3, 0xef, 0x67, 0x40, 0x99, 0x4f, 0x05, - 0x93, 0x36, 0x1d, 0x8f, 0x36, 0x02, 0xdc, 0xcf, 0x42, 0xb3, 0x7f, 0x0e, 0x8b, 0x59, 0x4c, 0x20, - 0x8c, 0xbc, 0x0b, 0x63, 0x5c, 0x93, 0xc3, 0x35, 0x28, 0xd1, 0x3c, 0x14, 0x5a, 0x1f, 0xee, 0x34, - 0xc2, 0x31, 0xd4, 0x39, 0x2c, 0x88, 0x98, 0x74, 0x7b, 0x7b, 0x7b, 0xab, 0xdc, 0xb2, 0x9d, 0xb6, - 0x2f, 0x76, 0x31, 0xec, 0xd4, 0x8f, 0x1e, 0x06, 0x56, 0x03, 0xa1, 0xaa, 0x74, 0x1b, 0xa2, 0x1a, - 0xb7, 0xa4, 0xd2, 0xe9, 0x18, 0xb3, 0x9f, 0x25, 0x18, 0xb9, 0x1f, 0x5d, 0x3e, 0x57, 0xc6, 0x1f, - 0x1f, 0x2d, 0xf1, 0xc9, 0x62, 0x72, 0xb8, 0xf1, 0x97, 0x32, 0x30, 0xad, 0xcf, 0x26, 0x72, 0x05, - 0x46, 0x85, 0xf1, 0x7d, 0x06, 0x2f, 0xd9, 0xac, 0x17, 0x46, 0xb9, 0xd9, 0xbd, 0x66, 0x6c, 0x2f, - 0xb0, 0xd8, 0x3e, 0x2c, 0x38, 0x08, 0x2d, 0x12, 0xee, 0xc3, 0x0d, 0x0e, 0x32, 0x65, 0x19, 0x31, - 0x98, 0x10, 0xe6, 0xf7, 0x5a, 0x81, 0xaa, 0x7b, 0xf5, 0x10, 0x62, 0x8a, 0x12, 0xa3, 0x0c, 0xa3, - 0x7c, 0x01, 0xc7, 0xcc, 0x0d, 0x32, 0x27, 0x30, 0x37, 0x30, 0x8e, 0x32, 0x00, 0xf5, 0xfa, 0xda, - 0x1d, 0x7a, 0x58, 0xb3, 0x1d, 0x0f, 0x1f, 0x0b, 0x70, 0xb3, 0xbc, 0x23, 0x96, 0xd6, 0xa4, 0x78, - 0x2c, 0xe0, 0x1b, 0xeb, 0x01, 0x3d, 0xd4, 0x1e, 0x0b, 0x24, 0x2a, 0xee, 0xc8, 0x9e, 0xf3, 0xc0, - 0x0e, 0x28, 0x23, 0xcc, 0x22, 0x21, 0xdf, 0x91, 0x39, 0x34, 0x46, 0xa9, 0x20, 0x93, 0xaf, 0xc0, - 0x74, 0xf4, 0x2b, 0x7c, 0xf2, 0x98, 0x0e, 0x97, 0xaf, 0x5e, 0xb8, 0xf2, 0xfc, 0xe3, 0xa3, 0xa5, - 0x45, 0x85, 0x6b, 0xfc, 0x31, 0x24, 0xc6, 0xcc, 0xf8, 0xf9, 0x0c, 0xbe, 0x92, 0xc9, 0x0f, 0xbc, - 0x08, 0xf9, 0xd0, 0x88, 0x6a, 0x92, 0xeb, 0x69, 0x62, 0x6a, 0x5d, 0x2c, 0x27, 0x17, 0x20, 0x17, - 0x7d, 0x09, 0x6e, 0x90, 0xfa, 0x17, 0xb0, 0x52, 0x72, 0x0b, 0xc6, 0x86, 0x6a, 0x33, 0x2e, 0x8d, - 0x94, 0xb6, 0x4a, 0x6a, 0x1c, 0x85, 0xdb, 0xdb, 0x5b, 0xdf, 0xbf, 0xa3, 0xf0, 0x13, 0x59, 0x98, - 0x61, 0xfd, 0x5a, 0xea, 0x05, 0xfb, 0xae, 0xe7, 0x04, 0x87, 0x4f, 0xad, 0x96, 0xe2, 0x6d, 0x4d, - 0xc4, 0x59, 0x94, 0x67, 0x8c, 0xfa, 0x6d, 0x43, 0x29, 0x2b, 0x7e, 0x73, 0x04, 0xe6, 0x52, 0xa8, - 0xc8, 0x6b, 0x9a, 0x22, 0x71, 0x41, 0xfa, 0xd9, 0x7d, 0xef, 0x68, 0x69, 0x52, 0xa2, 0x6f, 0x45, - 0x7e, 0x77, 0xcb, 0xfa, 0x93, 0x33, 0xef, 0x29, 0xd4, 0x2b, 0xaa, 0x4f, 0xce, 0xfa, 0x43, 0xf3, - 0x65, 0x18, 0x31, 0xdd, 0x16, 0x95, 0xf6, 0x11, 0x78, 0xac, 0x7b, 0x0c, 0xa0, 0xbd, 0x8c, 0x31, - 0x00, 0x59, 0x83, 0x31, 0xf6, 0xc7, 0x5d, 0xbb, 0x2b, 0x74, 0xbe, 0x24, 0x14, 0xb2, 0x11, 0xda, - 0x75, 0x3a, 0x7b, 0xaa, 0x9c, 0xdd, 0xa2, 0x56, 0xdb, 0xee, 0x6a, 0xf2, 0x07, 0x47, 0xd4, 0xe4, - 0xf5, 0x42, 0x7f, 0x79, 0x3d, 0x73, 0xac, 0xbc, 0xde, 0x04, 0xa8, 0x3b, 0x7b, 0x1d, 0xa7, 0xb3, - 0x57, 0x6a, 0xed, 0x09, 0x6f, 0xc5, 0xcb, 0xfd, 0x47, 0xe1, 0x4a, 0x84, 0x8c, 0x13, 0x97, 0x3f, - 0xcc, 0x70, 0x98, 0x65, 0xb7, 0x34, 0x85, 0x74, 0x84, 0x4a, 0x36, 0x00, 0x4a, 0x8d, 0xc0, 0x79, - 0xc0, 0x26, 0xb0, 0x2f, 0x4c, 0x6f, 0x65, 0x83, 0xcb, 0xa5, 0x3b, 0xf4, 0xb0, 0x4e, 0x83, 0x48, - 0xc1, 0x6d, 0x23, 0x2a, 0x5b, 0x07, 0x9a, 0x95, 0x6c, 0xc4, 0x81, 0x74, 0xe1, 0x54, 0xa9, 0xd9, - 0x74, 0xd8, 0x17, 0xd8, 0x2d, 0x7c, 0xb1, 0xa1, 0x4d, 0x64, 0x3d, 0x99, 0xce, 0xfa, 0xb2, 0x60, - 0xfd, 0x82, 0x1d, 0x52, 0x59, 0x01, 0x27, 0x8b, 0x57, 0x93, 0xce, 0xd8, 0xd8, 0x84, 0x69, 0xfd, - 0xd3, 0x75, 0x1f, 0xcb, 0x49, 0x28, 0x98, 0xf5, 0x92, 0x55, 0x5f, 0x2b, 0x5d, 0x2b, 0x66, 0x48, - 0x11, 0x26, 0xc5, 0xaf, 0x65, 0x6b, 0xf9, 0x8d, 0x1b, 0xc5, 0xac, 0x06, 0x79, 0xe3, 0xda, 0x72, - 0xc2, 0x9f, 0x61, 0xac, 0x58, 0xe0, 0x6a, 0x0c, 0xe3, 0x97, 0x33, 0x50, 0x90, 0xed, 0x26, 0x37, - 0x20, 0x57, 0xaf, 0xaf, 0xc5, 0x3c, 0x10, 0xa2, 0xf3, 0x85, 0xef, 0xa4, 0xbe, 0xaf, 0x9a, 0x99, - 0x31, 0x02, 0x46, 0xb7, 0xb5, 0x5e, 0x17, 0x62, 0x81, 0xa4, 0x8b, 0xb6, 0x6d, 0x4e, 0x97, 0x62, - 0x96, 0x7d, 0x03, 0x72, 0xb7, 0xb7, 0xb7, 0x84, 0x10, 0x2f, 0xe9, 0xa2, 0x9d, 0x94, 0xd3, 0x7d, - 0xf4, 0x50, 0xdd, 0xdf, 0x19, 0x81, 0x61, 0xc2, 0x84, 0x32, 0x85, 0xf9, 0x71, 0xdb, 0x76, 0x43, - 0x4f, 0x42, 0x71, 0xdc, 0x32, 0x88, 0x29, 0x4a, 0x98, 0x74, 0xb0, 0xee, 0x36, 0xec, 0x96, 0x38, - 0xb7, 0x51, 0x3a, 0x68, 0x31, 0x80, 0xc9, 0xe1, 0xc6, 0xaf, 0x67, 0xa0, 0x88, 0x12, 0x14, 0x9a, - 0x9c, 0xb9, 0x07, 0xb4, 0x73, 0xff, 0x1a, 0x79, 0x5d, 0x2e, 0xb6, 0x4c, 0x78, 0x65, 0x1c, 0xc1, - 0xc5, 0x16, 0xd3, 0x39, 0x8b, 0x05, 0xa7, 0xb8, 0x71, 0x66, 0x87, 0x77, 0xf2, 0x3a, 0xc6, 0x8d, - 0x73, 0x09, 0x46, 0xb0, 0x39, 0x62, 0x5b, 0xc4, 0x96, 0x07, 0x0c, 0x60, 0x72, 0xb8, 0xb2, 0x2b, - 0xfd, 0x54, 0x36, 0xf1, 0x0d, 0xcb, 0xdf, 0x57, 0x8e, 0x52, 0xfa, 0xc7, 0x0d, 0xb5, 0x53, 0x7f, - 0x00, 0xf3, 0xf1, 0x2e, 0xc1, 0xeb, 0x7c, 0x09, 0x66, 0x74, 0xb8, 0xbc, 0xd9, 0x9f, 0x49, 0xad, - 0xeb, 0xfe, 0xb2, 0x19, 0xc7, 0x37, 0xfe, 0x79, 0x06, 0xc6, 0xf1, 0x4f, 0xb3, 0xd7, 0x42, 0x23, - 0x88, 0xd2, 0x76, 0x5d, 0xa8, 0xee, 0x54, 0x31, 0xce, 0x7e, 0xe8, 0x5b, 0x42, 0xbb, 0xa7, 0xed, - 0x2f, 0x21, 0xb2, 0x20, 0xe5, 0x3a, 0x39, 0xf9, 0x3e, 0x19, 0x92, 0x72, 0xe5, 0x9d, 0x1f, 0x23, - 0x15, 0xc8, 0x68, 0x77, 0xb4, 0x5d, 0x67, 0xd3, 0x4f, 0x7d, 0x95, 0x44, 0x3a, 0xb7, 0xa5, 0xdb, - 0x1d, 0x71, 0x34, 0x7c, 0x94, 0xdc, 0xae, 0x97, 0xcc, 0x0d, 0xed, 0x51, 0x92, 0xb5, 0x51, 0xb3, - 0x49, 0x15, 0x48, 0xc6, 0x3f, 0x1d, 0x8f, 0x77, 0xa0, 0x38, 0xea, 0x4e, 0xb8, 0x36, 0xde, 0x82, - 0x91, 0x52, 0xab, 0xe5, 0x3e, 0x14, 0xbb, 0x84, 0xd4, 0x2e, 0x84, 0xfd, 0xc7, 0x4f, 0x32, 0x9b, - 0xa1, 0x68, 0xce, 0x1f, 0x0c, 0x40, 0xca, 0x30, 0x5e, 0xda, 0xae, 0x57, 0xab, 0x95, 0xad, 0xad, - 0x75, 0xe1, 0x53, 0xff, 0x92, 0xec, 0x1f, 0xc7, 0x69, 0x5a, 0xf1, 0x77, 0xb1, 0x48, 0x72, 0x8f, - 0xe8, 0xc8, 0x3b, 0x00, 0xb7, 0x5d, 0xa7, 0x73, 0x97, 0x06, 0xfb, 0x6e, 0x53, 0x7c, 0xfc, 0xb9, - 0xc7, 0x47, 0x4b, 0x13, 0x1f, 0xb9, 0x4e, 0xc7, 0x6a, 0x23, 0x98, 0xb5, 0x3d, 0x42, 0x32, 0x95, - 0xbf, 0x59, 0x4f, 0xaf, 0xb8, 0xdc, 0xb0, 0x61, 0x24, 0xea, 0xe9, 0x1d, 0x37, 0x61, 0xd3, 0x20, - 0xd1, 0x48, 0x1b, 0x66, 0xea, 0xbd, 0xbd, 0x3d, 0xca, 0x76, 0x75, 0xa1, 0xaf, 0x18, 0x15, 0x77, - 0xdb, 0x30, 0x22, 0x01, 0xbf, 0x89, 0xb0, 0xfb, 0x89, 0xbf, 0xf2, 0x1a, 0x9b, 0xc8, 0xdf, 0x3d, - 0x5a, 0x12, 0xef, 0x6d, 0x4c, 0x48, 0xf3, 0x25, 0x7d, 0x52, 0x5b, 0x11, 0xe7, 0x4d, 0x36, 0x61, - 0xf4, 0x96, 0x13, 0xac, 0xf5, 0x76, 0x84, 0xe1, 0xf6, 0x0b, 0x03, 0x16, 0x0d, 0x47, 0xe4, 0x0a, - 0xdf, 0x3d, 0x27, 0xd8, 0xef, 0xa9, 0x46, 0xdc, 0x82, 0x0d, 0xd9, 0x86, 0x42, 0xd9, 0xf1, 0x1a, - 0x2d, 0x5a, 0xae, 0x8a, 0x53, 0xff, 0xc2, 0x00, 0x96, 0x12, 0x95, 0xf7, 0x4b, 0x03, 0x7f, 0x35, - 0x1c, 0x55, 0x0a, 0x90, 0x18, 0xe4, 0xaf, 0x66, 0xe0, 0xd9, 0xb0, 0xf5, 0xa5, 0x3d, 0xda, 0x09, - 0xee, 0xda, 0x41, 0x63, 0x9f, 0x7a, 0xa2, 0x97, 0xc6, 0x07, 0xf5, 0xd2, 0x17, 0x12, 0xbd, 0x74, - 0x29, 0xea, 0x25, 0x9b, 0x31, 0xb3, 0xda, 0x9c, 0x5b, 0xb2, 0xcf, 0x06, 0xd5, 0x4a, 0x2c, 0x80, - 0x48, 0x83, 0x2f, 0x1c, 0x7f, 0x5e, 0x1a, 0xf0, 0xc1, 0x11, 0xb2, 0x30, 0xfe, 0x0d, 0x7f, 0x6b, - 0x76, 0x3c, 0x21, 0x94, 0xdc, 0x91, 0x5e, 0x12, 0x5c, 0x22, 0x39, 0x3f, 0x80, 0x37, 0xf7, 0x9c, - 0x98, 0x1b, 0xe0, 0x0f, 0xc5, 0x47, 0x7b, 0xdd, 0xde, 0x11, 0x42, 0xc8, 0x31, 0xa3, 0xbd, 0x6e, - 0x47, 0xa3, 0xdd, 0xb2, 0xe3, 0xa3, 0xbd, 0x6e, 0xef, 0x90, 0x32, 0x77, 0xed, 0xe2, 0x7e, 0x40, - 0xcf, 0x0f, 0xe2, 0x56, 0xae, 0xf1, 0x93, 0x39, 0xc5, 0xc5, 0xeb, 0x43, 0x18, 0xaf, 0x77, 0xed, - 0x06, 0x6d, 0x39, 0xbb, 0x81, 0x78, 0xd2, 0x79, 0x71, 0x00, 0xab, 0x10, 0x57, 0x3c, 0x07, 0xc8, - 0x9f, 0xea, 0x05, 0x29, 0xc4, 0x61, 0x2d, 0xdc, 0xaa, 0xdd, 0x5d, 0x98, 0x39, 0xb6, 0x85, 0x5b, - 0xb5, 0xbb, 0x42, 0xe6, 0xe8, 0xb6, 0x35, 0x99, 0xa3, 0x76, 0xd7, 0xf8, 0xd5, 0x1c, 0x9c, 0xe9, - 0x43, 0x43, 0x36, 0xe4, 0x1e, 0x95, 0xd1, 0xd4, 0x8a, 0x7d, 0xd0, 0xaf, 0x1c, 0xbb, 0x6d, 0xad, - 0x43, 0x71, 0xf5, 0x0e, 0x8a, 0xb5, 0xec, 0x27, 0x6d, 0x96, 0x4b, 0x72, 0x77, 0x3f, 0xff, 0xf8, - 0x68, 0xe9, 0x39, 0x7a, 0x80, 0x26, 0x41, 0x36, 0x2f, 0xb4, 0x1a, 0x9a, 0x97, 0x56, 0x82, 0x72, - 0xf1, 0x87, 0xb2, 0x90, 0xc7, 0x93, 0x26, 0x16, 0xb5, 0x22, 0x73, 0xa2, 0xa8, 0x15, 0xef, 0xc3, - 0xe4, 0xea, 0x1d, 0x7e, 0xe9, 0x5c, 0xb3, 0xfd, 0x7d, 0xb1, 0x0f, 0xe2, 0x0b, 0x1b, 0x3d, 0xb0, - 0xc4, 0x1d, 0x75, 0xdf, 0xd6, 0x84, 0x3c, 0x8d, 0x82, 0xdc, 0x83, 0x39, 0xde, 0x36, 0x67, 0xd7, - 0x69, 0x70, 0x17, 0x77, 0xc7, 0x6e, 0x89, 0x4d, 0xf1, 0xc2, 0xe3, 0xa3, 0xa5, 0x25, 0x7a, 0x80, - 0xc6, 0x4e, 0xa2, 0xdc, 0xf2, 0x11, 0x41, 0xb5, 0x7a, 0x4a, 0xa1, 0x57, 0xfd, 0x6e, 0xcd, 0x71, - 0xac, 0x90, 0xd5, 0xc6, 0xea, 0x66, 0xb8, 0x1c, 0xc9, 0xf8, 0xfb, 0x23, 0xb0, 0xd8, 0x7f, 0x3f, - 0x23, 0x5f, 0xd4, 0x07, 0xf0, 0xe2, 0xb1, 0x3b, 0xe0, 0xf1, 0x63, 0xf8, 0x25, 0x98, 0x5f, 0xed, - 0x04, 0xd4, 0xeb, 0x7a, 0x8e, 0xf4, 0xb4, 0x5e, 0x73, 0x7d, 0x69, 0x5c, 0x86, 0x56, 0x5e, 0x34, - 0x2c, 0x17, 0xda, 0x41, 0x34, 0x75, 0x53, 0x58, 0xa5, 0x72, 0x20, 0xab, 0x30, 0xad, 0xc0, 0x5b, - 0xbd, 0x3d, 0x71, 0x82, 0xa3, 0xe5, 0xa2, 0xca, 0xb3, 0xd5, 0x53, 0x2f, 0x3a, 0x31, 0xa2, 0xc5, - 0x9f, 0xcf, 0x89, 0x69, 0x71, 0x01, 0x72, 0xf5, 0xde, 0x8e, 0x98, 0x0e, 0x5c, 0x54, 0xd7, 0xb6, - 0x75, 0x56, 0x4a, 0x3e, 0x0f, 0x60, 0xd2, 0xae, 0xeb, 0x3b, 0x81, 0xeb, 0x1d, 0xaa, 0xc6, 0xff, - 0x5e, 0x08, 0xd5, 0x2d, 0x35, 0x25, 0x94, 0xac, 0xc1, 0x4c, 0xf4, 0x6b, 0xf3, 0x61, 0x47, 0xa8, - 0x34, 0xc7, 0xb9, 0x36, 0x21, 0x22, 0xb7, 0x5c, 0x56, 0xa6, 0x1e, 0x54, 0x31, 0x32, 0xb2, 0x0c, - 0x85, 0x6d, 0xd7, 0x3b, 0xd8, 0x65, 0x03, 0x95, 0x8f, 0x8e, 0xd2, 0x87, 0x02, 0xa6, 0x1e, 0x19, - 0x12, 0x8f, 0xcd, 0xf9, 0xd5, 0xce, 0x03, 0xc7, 0x73, 0x3b, 0x6d, 0xda, 0x09, 0xd4, 0xd7, 0x47, - 0x1a, 0x81, 0x35, 0x57, 0xa9, 0x08, 0xcc, 0xee, 0xcc, 0xa5, 0x46, 0xe0, 0x7a, 0xe2, 0xe9, 0x91, - 0x0f, 0x37, 0x03, 0x68, 0xc3, 0xcd, 0x00, 0xac, 0x13, 0x4d, 0xba, 0x2b, 0x74, 0xe6, 0xd8, 0x89, - 0x1e, 0xdd, 0xd5, 0xfc, 0xc0, 0xe8, 0x2e, 0x13, 0x05, 0x4c, 0xba, 0x8b, 0x17, 0x7d, 0x2d, 0x68, - 0xca, 0x6e, 0x42, 0x45, 0x24, 0xd0, 0x8c, 0xdf, 0x1a, 0xef, 0x3b, 0x6f, 0xd9, 0xde, 0x7b, 0xb2, - 0x79, 0xbb, 0x6e, 0x0f, 0x31, 0x6f, 0x5f, 0x0b, 0xed, 0x3f, 0x55, 0xe7, 0x47, 0x84, 0xa8, 0x9b, - 0x3f, 0xc7, 0x59, 0xfc, 0xc5, 0xc2, 0x49, 0x26, 0x91, 0xe8, 0xa4, 0xec, 0xb0, 0x9d, 0x94, 0x1b, - 0xaa, 0x93, 0xc8, 0x0a, 0x4c, 0x85, 0xa1, 0x79, 0x6a, 0x76, 0xa0, 0xed, 0x4d, 0x61, 0xa0, 0x25, - 0xab, 0x6b, 0x07, 0xea, 0xde, 0xa4, 0x93, 0x90, 0xb7, 0x61, 0x42, 0x18, 0x41, 0x23, 0x87, 0x91, - 0xc8, 0x0c, 0x4d, 0x5a, 0x4c, 0xc7, 0xe8, 0x55, 0x74, 0xb6, 0x24, 0x6b, 0x4e, 0x97, 0xb6, 0x9c, - 0x0e, 0xad, 0xa3, 0xd6, 0x5c, 0xcc, 0x18, 0x5c, 0x92, 0x5d, 0x51, 0x62, 0x71, 0x85, 0xba, 0xa6, - 0x2f, 0xd3, 0x88, 0xe2, 0x93, 0x75, 0xec, 0x44, 0x93, 0x95, 0x5b, 0x81, 0x78, 0xeb, 0xee, 0x9e, - 0x23, 0xed, 0xde, 0xa4, 0x15, 0x88, 0x67, 0xb5, 0x18, 0x34, 0x66, 0x05, 0xc2, 0x51, 0x99, 0x5c, - 0xcf, 0x7e, 0x54, 0x2b, 0xe2, 0x7d, 0x06, 0xe5, 0x7a, 0x24, 0xd2, 0x8d, 0x0d, 0x39, 0x92, 0xac, - 0x66, 0xb5, 0x6d, 0x3b, 0x2d, 0xe1, 0xe3, 0x16, 0x55, 0x43, 0x19, 0x34, 0x5e, 0x0d, 0xa2, 0x92, - 0x06, 0x4c, 0x9a, 0x74, 0xb7, 0xe6, 0xb9, 0x01, 0x6d, 0x04, 0xb4, 0x29, 0x64, 0x19, 0x29, 0xce, - 0xaf, 0xb8, 0x2e, 0x97, 0xd3, 0x56, 0x5e, 0xff, 0xad, 0xa3, 0xa5, 0xcc, 0x77, 0x8f, 0x96, 0x80, - 0x81, 0xb8, 0x25, 0xeb, 0xe3, 0xa3, 0xa5, 0x33, 0x6c, 0xfc, 0xbb, 0x92, 0x58, 0x3d, 0x62, 0x54, - 0xa6, 0xe4, 0x07, 0xd9, 0xa6, 0x1b, 0x76, 0x49, 0x54, 0xd9, 0x64, 0x9f, 0xca, 0xde, 0x48, 0xad, - 0x6c, 0x49, 0xe9, 0xed, 0xd4, 0x4a, 0x53, 0x2b, 0x21, 0xef, 0xc0, 0x44, 0xb9, 0x5a, 0x76, 0x3b, - 0xbb, 0xce, 0x5e, 0x7d, 0xad, 0x84, 0x02, 0x91, 0xb0, 0x62, 0x6e, 0x38, 0x56, 0x03, 0xe1, 0x96, - 0xbf, 0x6f, 0x6b, 0x9e, 0x20, 0x11, 0x3e, 0xb9, 0x05, 0xd3, 0xf2, 0xa7, 0x49, 0x77, 0xef, 0x99, - 0x55, 0x94, 0x83, 0xa4, 0xe9, 0x78, 0xc8, 0x81, 0x75, 0x44, 0xcf, 0x53, 0xe5, 0xe3, 0x18, 0x19, - 0x9b, 0x8c, 0x15, 0xda, 0x6d, 0xb9, 0x87, 0xac, 0x79, 0x5b, 0x0e, 0xf5, 0x50, 0xf2, 0x11, 0x93, - 0xb1, 0x19, 0x96, 0x58, 0x81, 0xa3, 0x6d, 0xb7, 0x31, 0x22, 0xb2, 0x01, 0xb3, 0x62, 0x8a, 0xdf, - 0x77, 0x7c, 0x67, 0xc7, 0x69, 0x39, 0xc1, 0xe1, 0x42, 0x11, 0x39, 0xa1, 0x14, 0x22, 0xd7, 0xc5, - 0x83, 0xb0, 0x54, 0x61, 0x96, 0x24, 0x35, 0x7e, 0x39, 0x0b, 0xcf, 0x0d, 0x92, 0xff, 0x49, 0x5d, - 0xdf, 0xcc, 0x2e, 0x0d, 0x71, 0x67, 0x38, 0x7e, 0x3b, 0x5b, 0x85, 0xe9, 0x4d, 0x6f, 0xcf, 0xee, - 0x38, 0xdf, 0xc0, 0x7b, 0x5d, 0x68, 0x0c, 0x83, 0x9d, 0xe1, 0x2a, 0x25, 0xfa, 0x6c, 0x8f, 0x11, - 0x2d, 0x3e, 0x10, 0xdb, 0xdc, 0xc7, 0x75, 0xab, 0xb8, 0x01, 0xe3, 0x65, 0xb7, 0x13, 0xd0, 0x47, - 0x41, 0xcc, 0x75, 0x8e, 0x03, 0xe3, 0xae, 0x73, 0x12, 0xd5, 0xf8, 0x7f, 0xb2, 0x70, 0x6e, 0xa0, - 0x00, 0x4c, 0xb6, 0xf4, 0x5e, 0xbb, 0x3c, 0x8c, 0xd4, 0x7c, 0x7c, 0xb7, 0x2d, 0x27, 0xec, 0x36, - 0x8e, 0xb5, 0x5a, 0x5e, 0xfc, 0xaf, 0x33, 0xa2, 0x93, 0x3e, 0x03, 0x63, 0x58, 0x55, 0xd8, 0x45, - 0x5c, 0x37, 0x84, 0xbb, 0xb0, 0xa3, 0xeb, 0x86, 0x38, 0x1a, 0xb9, 0x0e, 0x85, 0xb2, 0xdd, 0x6a, - 0x29, 0x8e, 0x85, 0x28, 0xd7, 0x37, 0x10, 0x16, 0x33, 0xf3, 0x91, 0x88, 0xe4, 0x4d, 0x00, 0xfe, - 0xb7, 0x72, 0x56, 0xe0, 0x66, 0x29, 0xc8, 0x62, 0xc7, 0x85, 0x82, 0x8c, 0x21, 0xc4, 0x1a, 0x6e, - 0xe8, 0x01, 0xc5, 0x43, 0x88, 0x31, 0x80, 0x16, 0x42, 0x8c, 0x01, 0x8c, 0x5f, 0xc9, 0xc1, 0xf3, - 0x83, 0x6f, 0x71, 0xe4, 0x9e, 0x3e, 0x04, 0xaf, 0x0c, 0x75, 0xf7, 0x3b, 0x7e, 0x0c, 0x64, 0x6c, - 0x3e, 0xde, 0x21, 0x97, 0x92, 0xc6, 0xc5, 0xdf, 0x3b, 0x5a, 0x52, 0x6c, 0xc7, 0x6e, 0xbb, 0x4e, - 0x47, 0x79, 0x23, 0xf8, 0x3a, 0x40, 0x3d, 0xb0, 0x03, 0xa7, 0x71, 0x7b, 0xfb, 0x8e, 0xf4, 0x57, - 0xbf, 0x31, 0x5c, 0xcb, 0x22, 0x3a, 0xbe, 0xaf, 0x08, 0xf5, 0x39, 0x42, 0xad, 0x8f, 0x1e, 0x1e, - 0x68, 0xf7, 0xd4, 0x08, 0x79, 0xf1, 0x0b, 0x50, 0x8c, 0x93, 0x92, 0x8b, 0x90, 0xc7, 0x06, 0x28, - 0x16, 0xd2, 0x31, 0x0e, 0x58, 0xbe, 0x78, 0x57, 0xcc, 0x9d, 0x55, 0x98, 0x16, 0xcf, 0xd2, 0xba, - 0x46, 0x0c, 0xd7, 0xab, 0x7c, 0xd5, 0x4e, 0x6a, 0xc5, 0x62, 0x44, 0xc6, 0x1f, 0x67, 0xe0, 0x6c, - 0xdf, 0xfb, 0x31, 0xa9, 0xe9, 0x03, 0xf6, 0xd2, 0x71, 0x17, 0xea, 0x63, 0xc7, 0x6a, 0xf1, 0xc7, - 0xe4, 0xdc, 0x7f, 0x17, 0x26, 0xeb, 0xbd, 0x9d, 0xf8, 0x25, 0x8b, 0x7b, 0x2f, 0x2b, 0x70, 0xf5, - 0x04, 0x53, 0xf1, 0xd9, 0xf7, 0xcb, 0x97, 0x77, 0x61, 0x56, 0xc1, 0x2f, 0x7e, 0xf8, 0xfd, 0xa1, - 0x5b, 0x14, 0x7a, 0xad, 0xa9, 0x9d, 0x18, 0x23, 0x32, 0x7e, 0x29, 0x9b, 0x7e, 0x5b, 0x65, 0x77, - 0xed, 0x13, 0xdc, 0x56, 0x6f, 0x95, 0x6b, 0xc7, 0x7f, 0xfb, 0x7f, 0x26, 0xbf, 0x1d, 0x1f, 0x22, - 0xc5, 0x8e, 0x27, 0xd5, 0x7b, 0xe2, 0x21, 0x52, 0xee, 0x8e, 0xbe, 0xfe, 0x10, 0x29, 0x91, 0xc9, - 0x1b, 0x30, 0xbe, 0xee, 0x72, 0x6f, 0x52, 0xf9, 0xc5, 0xdc, 0x6f, 0x48, 0x02, 0xd5, 0xed, 0x31, - 0xc4, 0x64, 0x77, 0x0b, 0x7d, 0xe0, 0xa5, 0x71, 0x37, 0xde, 0x2d, 0x62, 0xd3, 0x45, 0x57, 0x82, - 0xe9, 0x64, 0xc6, 0x8f, 0x65, 0x61, 0x9a, 0x4f, 0x5e, 0xae, 0xa4, 0x7d, 0x6a, 0x15, 0xe0, 0x6f, - 0x69, 0x0a, 0x70, 0x19, 0xe8, 0x40, 0xfd, 0xb4, 0xa1, 0xd4, 0xdf, 0xfb, 0x40, 0x92, 0x34, 0xc4, - 0x84, 0x49, 0x15, 0x3a, 0x58, 0xf3, 0x7d, 0x2d, 0x8a, 0x89, 0x21, 0xf6, 0x0e, 0x7c, 0x7e, 0xf0, - 0x4d, 0x8d, 0x87, 0xf1, 0x97, 0xb2, 0x30, 0xa5, 0x3c, 0x54, 0x3e, 0xb5, 0x1d, 0xff, 0x05, 0xad, - 0xe3, 0x17, 0x42, 0x83, 0xe4, 0xf0, 0xcb, 0x86, 0xea, 0xf7, 0x1e, 0xcc, 0x26, 0x48, 0xe2, 0xef, - 0xbd, 0x99, 0x61, 0xde, 0x7b, 0x5f, 0x4b, 0x3a, 0xeb, 0xf3, 0x38, 0x95, 0xa1, 0xb3, 0xbe, 0x1a, - 0x1d, 0xe0, 0x27, 0xb2, 0x30, 0x2f, 0x7e, 0x61, 0x44, 0x1a, 0xbe, 0x7b, 0x3f, 0xb5, 0x63, 0x51, - 0xd2, 0xc6, 0x62, 0x49, 0x1f, 0x0b, 0xe5, 0x03, 0xfb, 0x0f, 0x89, 0xf1, 0x17, 0x00, 0x16, 0xfa, - 0x11, 0x0c, 0xed, 0xf7, 0x13, 0x59, 0x55, 0x67, 0x87, 0xb0, 0xaa, 0x5e, 0x87, 0x22, 0x56, 0x25, - 0xe2, 0x57, 0xf8, 0xec, 0x0e, 0x90, 0x8b, 0x04, 0x6e, 0x1e, 0x36, 0x48, 0xc4, 0xc0, 0xf0, 0x63, - 0x97, 0x80, 0x04, 0x25, 0xf9, 0xf9, 0x0c, 0x4c, 0x23, 0x70, 0xf5, 0x01, 0xed, 0x04, 0xc8, 0x2c, - 0x2f, 0x8c, 0x80, 0x43, 0xfd, 0x78, 0x3d, 0xf0, 0x9c, 0xce, 0x9e, 0x50, 0x90, 0xef, 0x08, 0x05, - 0xf9, 0xdb, 0x5c, 0xb1, 0x7f, 0xa5, 0xe1, 0xb6, 0xaf, 0xee, 0x79, 0xf6, 0x03, 0x87, 0xbf, 0xc1, - 0xdb, 0xad, 0xab, 0x51, 0x64, 0xe5, 0xae, 0x13, 0x8b, 0x95, 0x2c, 0x58, 0xe1, 0xe3, 0x03, 0x6f, - 0x28, 0xc5, 0x6a, 0xe3, 0x77, 0x15, 0xbd, 0x45, 0xe4, 0x07, 0xe0, 0x0c, 0x77, 0x4e, 0x67, 0x22, - 0xaf, 0xd3, 0xe9, 0xb9, 0x3d, 0x7f, 0xc5, 0x6e, 0x1c, 0xb0, 0x73, 0x8f, 0x3b, 0x32, 0xe0, 0x97, - 0x37, 0xc2, 0x42, 0x6b, 0x87, 0x97, 0x6a, 0x8e, 0x5b, 0xe9, 0x0c, 0xc8, 0x1a, 0xcc, 0xf2, 0xa2, - 0x52, 0x2f, 0x70, 0xeb, 0x0d, 0xbb, 0xe5, 0x74, 0xf6, 0xf0, 0x4e, 0x5d, 0xe0, 0xe7, 0xb1, 0xdd, - 0x0b, 0x5c, 0xcb, 0xe7, 0x70, 0xf5, 0xea, 0x92, 0x20, 0x22, 0x55, 0x98, 0x31, 0xa9, 0xdd, 0xbc, - 0x6b, 0x3f, 0x2a, 0xdb, 0x5d, 0xbb, 0xc1, 0x2e, 0x42, 0x05, 0x7c, 0x4c, 0xc2, 0xbb, 0x99, 0x47, - 0xed, 0xa6, 0xd5, 0xb6, 0x1f, 0x59, 0x0d, 0x51, 0xa8, 0xeb, 0xb0, 0x34, 0xba, 0x90, 0x95, 0xd3, - 0x09, 0x59, 0x8d, 0xc7, 0x59, 0x39, 0x9d, 0xfe, 0xac, 0x22, 0x3a, 0xc9, 0x6a, 0xcb, 0xf6, 0xf6, - 0x68, 0xc0, 0x4d, 0xd8, 0xd8, 0x7d, 0x3c, 0xa3, 0xb0, 0x0a, 0xb0, 0xcc, 0x42, 0x73, 0xb6, 0x38, - 0x2b, 0x85, 0x8e, 0xcd, 0xbc, 0x6d, 0xcf, 0x09, 0xa8, 0xfa, 0x85, 0x13, 0xd8, 0x2c, 0xec, 0x7f, - 0x34, 0xfe, 0xeb, 0xf7, 0x89, 0x09, 0xca, 0x88, 0x9b, 0xf2, 0x91, 0x93, 0x09, 0x6e, 0xe9, 0x5f, - 0x99, 0xa0, 0x0c, 0xb9, 0xa9, 0xdf, 0x39, 0x85, 0xdf, 0xa9, 0x70, 0xeb, 0xf3, 0xa1, 0x09, 0x4a, - 0xb2, 0xc1, 0x3a, 0x2d, 0xa0, 0x1d, 0x36, 0xa3, 0x85, 0x09, 0xdf, 0x34, 0x36, 0xed, 0x45, 0x61, - 0x87, 0x52, 0xf4, 0x64, 0xb1, 0x95, 0x62, 0xd0, 0x17, 0x27, 0x26, 0x7f, 0x06, 0x66, 0xee, 0xf9, - 0xf4, 0x66, 0xb5, 0x56, 0x97, 0xee, 0xf8, 0x78, 0xdb, 0x9e, 0x5e, 0xbe, 0x76, 0xcc, 0xa6, 0x73, - 0x45, 0xa5, 0xc1, 0x68, 0xc5, 0x7c, 0xdc, 0x7a, 0x3e, 0xb5, 0x76, 0x9d, 0xae, 0x1f, 0x06, 0x06, - 0x51, 0xc7, 0x2d, 0x56, 0x95, 0xb1, 0x06, 0xb3, 0x09, 0x36, 0x64, 0x1a, 0x80, 0x01, 0xad, 0x7b, - 0x1b, 0xf5, 0xd5, 0xad, 0xe2, 0x33, 0xa4, 0x08, 0x93, 0xf8, 0x7b, 0x75, 0xa3, 0xb4, 0xb2, 0xbe, - 0x5a, 0x29, 0x66, 0xc8, 0x2c, 0x4c, 0x21, 0xa4, 0x52, 0xad, 0x73, 0x50, 0x96, 0xc7, 0xaa, 0x34, - 0x8b, 0x7c, 0xe9, 0x06, 0x6c, 0x01, 0xe0, 0x99, 0x62, 0xfc, 0xf5, 0x2c, 0x9c, 0x95, 0xc7, 0x0a, - 0x0d, 0x1e, 0xba, 0xde, 0x81, 0xd3, 0xd9, 0x7b, 0xca, 0x4f, 0x87, 0x9b, 0xda, 0xe9, 0xf0, 0x62, - 0xec, 0xa4, 0x8e, 0x7d, 0xe5, 0x80, 0x23, 0xe2, 0x7f, 0x2e, 0xc0, 0xb9, 0x81, 0x54, 0xe4, 0x8b, - 0xec, 0x34, 0x77, 0x68, 0x27, 0xa8, 0x36, 0x5b, 0x74, 0xcb, 0x69, 0x53, 0xb7, 0x17, 0x08, 0x93, - 0xd1, 0x0b, 0x78, 0xc1, 0xc5, 0x42, 0xcb, 0x69, 0xb6, 0xa8, 0x15, 0xf0, 0x62, 0x6d, 0xba, 0x25, - 0xa9, 0x19, 0xcb, 0x30, 0x88, 0x7a, 0xb5, 0x13, 0x50, 0xef, 0x01, 0x1a, 0xa7, 0x84, 0x2c, 0x0f, - 0x28, 0xed, 0x5a, 0x36, 0x2b, 0xb5, 0x1c, 0x51, 0xac, 0xb3, 0x4c, 0x50, 0x93, 0x9b, 0x0a, 0xcb, - 0x32, 0x13, 0x87, 0xef, 0xda, 0x8f, 0xc4, 0x6b, 0xb9, 0x08, 0x6a, 0x14, 0xb2, 0xe4, 0xbe, 0x46, - 0x6d, 0xfb, 0x91, 0x99, 0x24, 0x21, 0x5f, 0x81, 0x53, 0xe2, 0x00, 0x12, 0xbe, 0xa2, 0xf2, 0x8b, - 0xb9, 0x27, 0xea, 0xcb, 0x8f, 0x8f, 0x96, 0xce, 0xc8, 0x10, 0x4e, 0xd2, 0x3b, 0x38, 0xed, 0xab, - 0xd3, 0xb9, 0x90, 0x2d, 0x76, 0x20, 0xc7, 0xba, 0xe3, 0x2e, 0xf5, 0x7d, 0x7b, 0x4f, 0xbe, 0xac, - 0x73, 0xeb, 0x7a, 0xa5, 0x33, 0xad, 0x36, 0x2f, 0x37, 0xfb, 0x52, 0x92, 0x35, 0x98, 0xde, 0xa6, - 0x3b, 0xea, 0xf8, 0x8c, 0x86, 0x5b, 0x55, 0xf1, 0x21, 0xdd, 0xe9, 0x3f, 0x38, 0x31, 0x3a, 0xe2, - 0xa0, 0xc2, 0xec, 0xd1, 0xe1, 0xba, 0xe3, 0x07, 0xb4, 0x43, 0x3d, 0x8c, 0x41, 0x30, 0x86, 0x9b, - 0xc1, 0x42, 0x24, 0x21, 0xeb, 0xe5, 0x2b, 0x2f, 0x3c, 0x3e, 0x5a, 0x3a, 0xc7, 0xbd, 0x49, 0x5a, - 0x02, 0x6e, 0xc5, 0xe2, 0x8e, 0x27, 0xb9, 0x92, 0xaf, 0xc1, 0x8c, 0xe9, 0xf6, 0x02, 0xa7, 0xb3, - 0x57, 0x0f, 0x3c, 0x3b, 0xa0, 0x7b, 0xfc, 0x40, 0x8a, 0x82, 0x1d, 0xc4, 0x4a, 0xc5, 0x5b, 0x0b, - 0x07, 0x5a, 0xbe, 0x80, 0x6a, 0x27, 0x82, 0x4e, 0x40, 0xbe, 0x0a, 0xd3, 0xdc, 0x4b, 0x30, 0xac, - 0x60, 0x5c, 0x8b, 0x99, 0xaa, 0x17, 0xde, 0xbf, 0xc6, 0x2f, 0xa8, 0xdc, 0xdb, 0x30, 0xad, 0x82, - 0x18, 0x37, 0xf2, 0xa1, 0xe8, 0xac, 0x9a, 0xd3, 0xd9, 0x0b, 0xa7, 0x31, 0x60, 0xcf, 0xbf, 0x1e, - 0x75, 0x49, 0x97, 0x35, 0x57, 0x4e, 0xe3, 0x3e, 0x96, 0x1a, 0x49, 0x3e, 0x24, 0x80, 0x73, 0x25, - 0xdf, 0x77, 0xfc, 0x40, 0x18, 0x56, 0xaf, 0x3e, 0xa2, 0x8d, 0x1e, 0x43, 0xde, 0x76, 0xbd, 0x03, - 0xea, 0x71, 0xd3, 0xbe, 0x91, 0x95, 0x2b, 0x8f, 0x8f, 0x96, 0x5e, 0xb1, 0x11, 0xd1, 0x12, 0xb6, - 0xd8, 0x16, 0x95, 0xa8, 0xd6, 0x43, 0x8e, 0xab, 0x7c, 0xc3, 0x60, 0xa6, 0xe4, 0xab, 0x70, 0xba, - 0x6c, 0xfb, 0xb4, 0xda, 0xf1, 0x69, 0xc7, 0x77, 0x02, 0xe7, 0x01, 0x15, 0x9d, 0x8a, 0x87, 0x5f, - 0x01, 0x23, 0xb4, 0x1b, 0x0d, 0x4c, 0xe6, 0x10, 0xa1, 0x58, 0x62, 0x50, 0x94, 0x6a, 0xfa, 0x70, - 0x31, 0x8e, 0x32, 0x50, 0x8c, 0x77, 0x3b, 0xf9, 0x12, 0x8c, 0x73, 0x93, 0x04, 0xea, 0xef, 0x0b, - 0x07, 0x37, 0xf9, 0xc2, 0x1d, 0xc2, 0x75, 0x22, 0xe1, 0x92, 0xc0, 0x0d, 0x1e, 0xa8, 0xfa, 0x5e, - 0x8b, 0x2e, 0x09, 0x92, 0x88, 0x34, 0x61, 0x92, 0xf7, 0x2c, 0xc5, 0xa8, 0x24, 0xc2, 0x32, 0xed, - 0x05, 0x75, 0x26, 0x8b, 0xa2, 0x18, 0x7f, 0x54, 0x79, 0x8b, 0xf1, 0xe3, 0x08, 0x5a, 0x15, 0x1a, - 0xd7, 0x15, 0x80, 0x82, 0x24, 0x34, 0xce, 0xc2, 0x99, 0x3e, 0x6d, 0x36, 0x1e, 0xe0, 0x33, 0x58, - 0x9f, 0x1a, 0xc9, 0x97, 0x60, 0x1e, 0x09, 0xcb, 0x6e, 0xa7, 0x43, 0x1b, 0x01, 0x6e, 0x1d, 0x52, - 0x75, 0x94, 0xe3, 0x6f, 0xad, 0xfc, 0x7b, 0x1b, 0x21, 0x82, 0x15, 0xd7, 0x20, 0xa5, 0x72, 0x30, - 0x7e, 0x26, 0x0b, 0x0b, 0x62, 0x37, 0x32, 0x69, 0xc3, 0xf5, 0x9a, 0x4f, 0xff, 0xe9, 0xb7, 0xaa, - 0x9d, 0x7e, 0x17, 0x42, 0x8f, 0xe6, 0xb4, 0x8f, 0x1c, 0x70, 0xf8, 0xfd, 0x52, 0x06, 0x9e, 0x1b, - 0x44, 0xc4, 0x7a, 0x27, 0x8c, 0xc2, 0x32, 0x9e, 0x88, 0xb6, 0xd2, 0x85, 0x39, 0x1c, 0xd0, 0xf2, - 0x3e, 0x6d, 0x1c, 0xf8, 0x6b, 0xae, 0x1f, 0xa0, 0x61, 0x6c, 0xb6, 0xcf, 0x43, 0xcd, 0x6b, 0xa9, - 0x0f, 0x35, 0xa7, 0xf9, 0x2c, 0x6b, 0x20, 0x0f, 0x1e, 0x27, 0xe6, 0x80, 0x1e, 0xfa, 0x66, 0x1a, - 0x6b, 0x34, 0x72, 0x2c, 0xf5, 0x82, 0xfd, 0x9a, 0x47, 0x77, 0xa9, 0x47, 0x3b, 0x0d, 0xfa, 0x7d, - 0x66, 0xe4, 0xa8, 0x7f, 0xdc, 0x50, 0xda, 0x86, 0x5f, 0x9a, 0x84, 0xf9, 0x34, 0x32, 0xd6, 0x2f, - 0xca, 0x05, 0x37, 0x9e, 0xf7, 0xe5, 0xcf, 0x67, 0x60, 0xb2, 0x4e, 0x1b, 0x6e, 0xa7, 0x79, 0x13, - 0x9f, 0xc3, 0x45, 0xef, 0x58, 0xfc, 0x80, 0x67, 0x70, 0x6b, 0x37, 0xf6, 0x4e, 0xfe, 0xbd, 0xa3, - 0xa5, 0xf7, 0x87, 0xbb, 0x57, 0x36, 0x5c, 0xf4, 0x4a, 0x0e, 0x30, 0x18, 0x69, 0x58, 0x05, 0x6a, - 0xb6, 0xb5, 0x4a, 0xc9, 0x0a, 0x4c, 0x89, 0xe5, 0xea, 0xaa, 0x41, 0x78, 0xb8, 0xd3, 0xb7, 0x2c, - 0x48, 0x44, 0x1d, 0xd3, 0x48, 0xc8, 0x75, 0xc8, 0xdd, 0x5b, 0xbe, 0x29, 0xc6, 0x40, 0x86, 0x73, - 0xbd, 0xb7, 0x7c, 0x13, 0x55, 0x57, 0xec, 0x3a, 0x30, 0xd5, 0x5b, 0xd6, 0x5e, 0xa8, 0xef, 0x2d, - 0xdf, 0x24, 0x7f, 0x0e, 0x4e, 0x55, 0x1c, 0x5f, 0x54, 0xc1, 0xcd, 0x6d, 0x9b, 0xe8, 0x5e, 0x32, - 0xda, 0x67, 0xf6, 0x7e, 0x2e, 0x75, 0xf6, 0xbe, 0xd0, 0x0c, 0x99, 0x58, 0xdc, 0x96, 0xb7, 0x19, - 0x0f, 0x36, 0x94, 0x5e, 0x0f, 0xf9, 0x08, 0xa6, 0x51, 0xf5, 0x8a, 0x16, 0xc8, 0x18, 0x1c, 0x71, - 0xac, 0x4f, 0xcd, 0x9f, 0x49, 0xad, 0x79, 0x11, 0x35, 0xb9, 0x16, 0xda, 0x31, 0x63, 0x20, 0x45, - 0xed, 0x86, 0xae, 0x71, 0x26, 0xb7, 0x61, 0x46, 0x88, 0x4a, 0x9b, 0xbb, 0x5b, 0xfb, 0xb4, 0x62, - 0x1f, 0x8a, 0xc7, 0x65, 0xbc, 0x7d, 0x09, 0xf9, 0xca, 0x72, 0x77, 0xad, 0x60, 0x9f, 0x5a, 0x4d, - 0x5b, 0x13, 0x2a, 0x62, 0x84, 0xe4, 0x07, 0x61, 0x62, 0xdd, 0x6d, 0x30, 0x29, 0x19, 0x77, 0x06, - 0xfe, 0xde, 0xfc, 0x01, 0xa6, 0x13, 0xe1, 0xe0, 0x98, 0xe8, 0xf3, 0xbd, 0xa3, 0xa5, 0xb7, 0x4e, - 0x3a, 0x69, 0x94, 0x0a, 0x4c, 0xb5, 0x36, 0x52, 0x86, 0xc2, 0x36, 0xdd, 0x61, 0x5f, 0x1b, 0x4f, - 0x35, 0x20, 0xc1, 0xc2, 0x9c, 0x44, 0xfc, 0xd2, 0xcc, 0x49, 0x04, 0x8c, 0x78, 0x30, 0x8b, 0xfd, - 0x53, 0xb3, 0x7d, 0xff, 0xa1, 0xeb, 0x35, 0x31, 0xa6, 0x6c, 0xbf, 0xa7, 0xec, 0xe5, 0xd4, 0xce, - 0x7f, 0x8e, 0x77, 0x7e, 0x57, 0xe1, 0xa0, 0x0a, 0x7b, 0x09, 0xf6, 0xe4, 0x6b, 0x30, 0x6d, 0xd2, - 0xaf, 0xf7, 0x1c, 0x8f, 0xde, 0xbd, 0x59, 0xc2, 0x55, 0x39, 0xa9, 0x39, 0xe9, 0xe8, 0x85, 0x5c, - 0xa2, 0xf4, 0x38, 0x4c, 0x6a, 0x8b, 0xac, 0xf6, 0xae, 0xad, 0xbf, 0x16, 0xa8, 0x24, 0xa4, 0x06, - 0x13, 0x15, 0xfa, 0xc0, 0x69, 0x50, 0x74, 0x25, 0x10, 0xa6, 0x7c, 0x61, 0xac, 0xf4, 0xa8, 0x84, - 0xeb, 0x4d, 0x9a, 0x08, 0xe0, 0x8e, 0x09, 0xba, 0xb5, 0x58, 0x88, 0x48, 0x6e, 0x40, 0xae, 0x5a, - 0xa9, 0x09, 0x4b, 0x3e, 0x69, 0xa1, 0x5f, 0x6d, 0xd6, 0x64, 0x64, 0x69, 0x34, 0xfe, 0x70, 0x9a, - 0x9a, 0x1d, 0x60, 0xb5, 0x52, 0x23, 0xbb, 0x30, 0x85, 0x1d, 0xb0, 0x46, 0x6d, 0xde, 0xb7, 0x33, - 0x7d, 0xfa, 0xf6, 0x4a, 0x6a, 0xdf, 0x2e, 0xf0, 0xbe, 0xdd, 0x17, 0xd4, 0x5a, 0xa8, 0x5c, 0x95, - 0x2d, 0x13, 0x3f, 0x45, 0xf8, 0x6e, 0x19, 0x2c, 0x76, 0x6b, 0x1d, 0x1f, 0xb7, 0x85, 0xf8, 0x29, - 0xa3, 0x7d, 0x87, 0x11, 0x67, 0xfb, 0x1a, 0x0a, 0x27, 0xf9, 0x90, 0x2f, 0x40, 0x7e, 0xf3, 0x20, - 0xb0, 0x17, 0x66, 0xb5, 0x7e, 0x64, 0x20, 0xf9, 0xf9, 0xa8, 0x31, 0x74, 0x0f, 0xb4, 0x70, 0x14, - 0x48, 0x43, 0x96, 0x61, 0xac, 0x56, 0xbd, 0x5f, 0x6f, 0xb9, 0xc1, 0x02, 0x09, 0xef, 0x34, 0xa4, - 0xeb, 0x3c, 0xb0, 0xfc, 0x96, 0xab, 0xa7, 0x00, 0x90, 0x88, 0x6c, 0xf8, 0xd6, 0x6c, 0xaf, 0xf9, - 0xd0, 0xf6, 0xd0, 0x03, 0x6c, 0x4e, 0xab, 0x56, 0x29, 0xe1, 0xc3, 0xb7, 0x2f, 0x00, 0x31, 0xb7, - 0x30, 0x95, 0x85, 0xd0, 0x06, 0xcc, 0x8a, 0x69, 0x22, 0x3e, 0xed, 0xee, 0xcd, 0x92, 0xf1, 0x1f, - 0x67, 0x70, 0xc3, 0x24, 0xaf, 0xa0, 0xc7, 0x7a, 0xf8, 0xc0, 0x8b, 0x7a, 0x4d, 0xbb, 0x1b, 0x0b, - 0xb0, 0xc8, 0x51, 0xc8, 0x6b, 0x30, 0x7a, 0xd3, 0x6e, 0xd0, 0x40, 0x3e, 0xec, 0x20, 0xf2, 0x2e, - 0x42, 0x54, 0x25, 0x28, 0xc7, 0x61, 0xb2, 0x1c, 0x9f, 0x48, 0xa5, 0x28, 0x5d, 0x5b, 0xb9, 0x24, - 0xdf, 0x75, 0x50, 0x96, 0x13, 0x13, 0x50, 0xc9, 0xe7, 0x16, 0xb3, 0x81, 0x4c, 0xe5, 0x60, 0xfc, - 0x61, 0x26, 0xda, 0x01, 0xc8, 0xcb, 0x90, 0x37, 0x6b, 0x61, 0xfb, 0xb9, 0x37, 0x54, 0xac, 0xf9, - 0x88, 0x40, 0x3e, 0x84, 0x53, 0x0a, 0x9f, 0x84, 0x41, 0xe6, 0x4b, 0xe8, 0xae, 0xa3, 0xb4, 0x24, - 0xdd, 0x2a, 0x33, 0x9d, 0x07, 0x0a, 0xae, 0x51, 0x41, 0x85, 0x76, 0x1c, 0xce, 0x5b, 0xf9, 0x58, - 0x95, 0x77, 0x13, 0x11, 0xe2, 0x1f, 0x9b, 0xc6, 0x81, 0x7b, 0xec, 0x18, 0xbf, 0x96, 0xd1, 0x56, - 0x76, 0x98, 0xe4, 0x2a, 0x73, 0x4c, 0x92, 0xab, 0x37, 0x01, 0x4a, 0xbd, 0xc0, 0x5d, 0xed, 0x78, - 0x6e, 0x8b, 0x6b, 0x17, 0x44, 0x8c, 0x51, 0xd4, 0x99, 0x52, 0x04, 0x6b, 0x8e, 0x05, 0x21, 0x72, - 0xaa, 0xed, 0x6a, 0xee, 0xe3, 0xda, 0xae, 0x1a, 0xbf, 0x9d, 0xd1, 0xe6, 0x36, 0x93, 0xc8, 0xe4, - 0xf2, 0x50, 0x4c, 0x0b, 0x92, 0xcb, 0x23, 0x5a, 0x1c, 0xff, 0x76, 0x06, 0x4e, 0x73, 0x23, 0xd0, - 0x8d, 0x5e, 0x7b, 0x87, 0x7a, 0xf7, 0xed, 0x96, 0xd3, 0xe4, 0x1e, 0x69, 0x5c, 0xd8, 0xbc, 0x94, - 0x5c, 0x28, 0xe9, 0xf8, 0xfc, 0x02, 0xc7, 0x8d, 0x52, 0xad, 0x0e, 0x16, 0x5a, 0x0f, 0xc2, 0x52, - 0xf5, 0x02, 0x97, 0x4e, 0x6f, 0xfc, 0x72, 0x06, 0x5e, 0x38, 0xb6, 0x16, 0x72, 0x15, 0xc6, 0x64, - 0x70, 0xd7, 0x0c, 0x76, 0x3c, 0x1a, 0x64, 0x25, 0x03, 0xbb, 0x4a, 0x2c, 0xf2, 0x65, 0x38, 0xa5, - 0xb2, 0xda, 0xf2, 0x6c, 0x47, 0x0d, 0xa1, 0x9a, 0xd2, 0xea, 0x80, 0xa1, 0xc4, 0x25, 0xa3, 0x74, - 0x26, 0xc6, 0xff, 0x99, 0x51, 0x12, 0xe2, 0x3d, 0xa5, 0xf2, 0xf2, 0x0d, 0x4d, 0x5e, 0x96, 0xb1, - 0x82, 0xc2, 0xaf, 0x62, 0x65, 0xa9, 0x77, 0x9c, 0x19, 0xc5, 0xb0, 0x10, 0x01, 0xdf, 0xca, 0xc2, - 0xc4, 0x3d, 0x9f, 0x7a, 0xfc, 0x81, 0xf3, 0xfb, 0x2b, 0x26, 0x4c, 0xf8, 0x5d, 0x43, 0x45, 0xed, - 0xf8, 0xfd, 0x0c, 0x2a, 0xbe, 0x55, 0x0a, 0xd6, 0x1b, 0x4a, 0xaa, 0x0b, 0xec, 0x0d, 0x4c, 0x72, - 0x81, 0x50, 0x1e, 0xd9, 0x63, 0x5d, 0xcf, 0x7a, 0x83, 0xa9, 0x8f, 0xd6, 0xc9, 0xfb, 0x30, 0x72, - 0x0f, 0xd5, 0x78, 0xba, 0xf7, 0x71, 0xc8, 0x1f, 0x0b, 0xf9, 0x26, 0xdd, 0x63, 0x7f, 0xaa, 0x67, - 0x0c, 0x96, 0x91, 0x3a, 0x8c, 0x95, 0x3d, 0x8a, 0x49, 0xec, 0xf2, 0xc3, 0x7b, 0xd0, 0x35, 0x38, - 0x49, 0xdc, 0x83, 0x4e, 0x70, 0x32, 0x7e, 0x3a, 0x0b, 0x24, 0xfa, 0x46, 0x8c, 0xfe, 0xee, 0x3f, - 0xb5, 0x83, 0xfe, 0x9e, 0x36, 0xe8, 0xe7, 0x12, 0x83, 0xce, 0x3f, 0x6f, 0xa8, 0xb1, 0xff, 0xf5, - 0x0c, 0x9c, 0x4e, 0x27, 0x24, 0x17, 0x60, 0x74, 0x73, 0xab, 0x26, 0x1d, 0xd8, 0xc5, 0xa7, 0xb8, - 0x5d, 0xbc, 0x97, 0x9b, 0xa2, 0x88, 0xbc, 0x0e, 0xa3, 0x5f, 0x34, 0xcb, 0xec, 0x1c, 0x52, 0x22, - 0xad, 0x7e, 0xdd, 0xb3, 0x1a, 0xfa, 0x51, 0x24, 0x90, 0xd4, 0xb1, 0xcd, 0x3d, 0xb1, 0xb1, 0xfd, - 0x89, 0x2c, 0xcc, 0x94, 0x1a, 0x0d, 0xea, 0xfb, 0x4c, 0xc8, 0xa1, 0x7e, 0xf0, 0xd4, 0x0e, 0x6c, - 0xba, 0x6b, 0xba, 0xf6, 0x6d, 0x43, 0x8d, 0xea, 0x6f, 0x66, 0xe0, 0x94, 0xa4, 0x7a, 0xe0, 0xd0, - 0x87, 0x5b, 0xfb, 0x1e, 0xf5, 0xf7, 0xdd, 0x56, 0x73, 0xe8, 0x70, 0xce, 0x4c, 0xd0, 0xc3, 0x18, - 0x8d, 0xea, 0x6b, 0xf7, 0x2e, 0x42, 0x34, 0x41, 0x8f, 0xc7, 0x71, 0xbc, 0x0a, 0x63, 0xa5, 0x6e, - 0xd7, 0x73, 0x1f, 0xf0, 0x65, 0x3f, 0x25, 0x1c, 0x0a, 0x39, 0x48, 0x73, 0x40, 0xe4, 0x20, 0xd6, - 0x8c, 0x0a, 0xed, 0xf0, 0x48, 0x3a, 0x53, 0xbc, 0x19, 0x4d, 0xda, 0x51, 0x65, 0x58, 0x2c, 0x37, - 0xea, 0x40, 0x6a, 0x9e, 0xdb, 0x76, 0x03, 0xda, 0xe4, 0xdf, 0x83, 0x7e, 0x9b, 0xc7, 0x06, 0x01, - 0xd9, 0x72, 0x82, 0x96, 0x16, 0x04, 0x24, 0x60, 0x00, 0x93, 0xc3, 0x8d, 0xff, 0x6d, 0x04, 0x26, - 0xd5, 0xde, 0x21, 0x06, 0x8f, 0xd1, 0xea, 0x7a, 0xaa, 0xf3, 0xb0, 0x8d, 0x10, 0x53, 0x94, 0x44, - 0x3e, 0xf7, 0xd9, 0x63, 0x7d, 0xee, 0xb7, 0x61, 0xaa, 0xe6, 0xb9, 0x5d, 0xd7, 0xa7, 0x4d, 0x9e, - 0xdc, 0x94, 0x6f, 0x85, 0x73, 0xca, 0x1d, 0x8f, 0x0d, 0x24, 0xbe, 0x13, 0xa2, 0x86, 0xa3, 0x2b, - 0xb0, 0xad, 0x78, 0xea, 0x53, 0x9d, 0x0f, 0x37, 0x41, 0xb0, 0x7d, 0x11, 0x30, 0x2b, 0x34, 0x41, - 0x60, 0x10, 0xdd, 0x04, 0x81, 0x41, 0xd4, 0xb5, 0x36, 0xf2, 0xa4, 0xd6, 0x1a, 0xf9, 0xe9, 0x0c, - 0x4c, 0x94, 0x3a, 0x1d, 0xe1, 0xcb, 0x7f, 0x8c, 0x33, 0xe3, 0x97, 0x85, 0x15, 0xc2, 0x5b, 0x1f, - 0xcb, 0x0a, 0x01, 0xe5, 0x16, 0x1f, 0x25, 0xd5, 0xa8, 0x42, 0xf5, 0x96, 0xa3, 0xb4, 0x83, 0xbc, - 0x05, 0xc5, 0x70, 0x92, 0x57, 0x3b, 0x4d, 0xfa, 0x88, 0xfa, 0x0b, 0x63, 0xe7, 0x73, 0x97, 0xa6, - 0x44, 0xa8, 0x3c, 0x55, 0x32, 0x8d, 0x23, 0x92, 0x2d, 0x00, 0x3b, 0x9c, 0x5d, 0xb1, 0xb4, 0x32, - 0xc9, 0xe9, 0x27, 0xa4, 0x67, 0xfc, 0x8d, 0x0f, 0x3d, 0xaa, 0xf4, 0x1c, 0xf1, 0x21, 0x6d, 0x98, - 0xe1, 0x39, 0x5d, 0x30, 0xd7, 0x2b, 0x46, 0x84, 0x85, 0x63, 0xc7, 0xe1, 0x65, 0xa1, 0xab, 0x7a, - 0x56, 0x64, 0x8a, 0xc1, 0xf4, 0xb1, 0x56, 0x4a, 0x78, 0xd8, 0x38, 0x6f, 0x1e, 0x98, 0xd0, 0x3c, - 0x93, 0x6c, 0x2f, 0x9f, 0xf4, 0x3f, 0x91, 0x81, 0xd3, 0xea, 0xa4, 0xaf, 0xf7, 0x76, 0xda, 0x0e, - 0xde, 0x05, 0xc9, 0x15, 0x18, 0x17, 0x73, 0x32, 0xbc, 0x44, 0x25, 0x03, 0xdb, 0x46, 0x28, 0x64, - 0x95, 0x4d, 0x43, 0xc6, 0x43, 0x48, 0xdd, 0x73, 0xb1, 0x7d, 0x8a, 0x15, 0x45, 0xf9, 0xc2, 0x3c, - 0xfc, 0xad, 0xcf, 0x4f, 0x06, 0x31, 0xde, 0x85, 0x59, 0x7d, 0x24, 0xea, 0x34, 0x20, 0x97, 0x61, - 0x4c, 0x0e, 0x5f, 0x26, 0x7d, 0xf8, 0x64, 0xb9, 0xb1, 0x0d, 0x24, 0x41, 0xef, 0xa3, 0xb9, 0x10, - 0x0d, 0xa4, 0x39, 0x9b, 0x7c, 0xac, 0x4b, 0x20, 0x86, 0xb9, 0xb4, 0x27, 0x34, 0xfb, 0x55, 0x46, - 0x6a, 0xfc, 0xe1, 0x34, 0xcc, 0xa5, 0xec, 0xb9, 0xc7, 0xc8, 0x44, 0x4b, 0xfa, 0x06, 0x31, 0x1e, - 0xfa, 0x42, 0xcb, 0x6d, 0xe1, 0x5d, 0x99, 0xeb, 0x78, 0xc0, 0x76, 0x30, 0x28, 0x01, 0xf2, 0xa7, - 0x21, 0x17, 0xa9, 0xe1, 0x0a, 0x46, 0x9e, 0x58, 0xb8, 0x82, 0x15, 0x98, 0x12, 0x5f, 0x25, 0xb6, - 0xab, 0xd1, 0x48, 0x9b, 0xeb, 0xf1, 0x02, 0x2b, 0xb1, 0x6d, 0xe9, 0x24, 0x9c, 0x87, 0xef, 0xb6, - 0x1e, 0x50, 0xc1, 0x63, 0x4c, 0xe5, 0x81, 0x05, 0xa9, 0x3c, 0x14, 0x12, 0xf2, 0x1f, 0x62, 0x8a, - 0x0b, 0x84, 0xa8, 0x7b, 0x56, 0x61, 0xd0, 0x9e, 0xd5, 0x7c, 0x32, 0x7b, 0xd6, 0x39, 0xd9, 0xc6, - 0xf4, 0xbd, 0x2b, 0xa5, 0x59, 0xe4, 0x17, 0x33, 0x30, 0xcb, 0x7d, 0xe6, 0xd5, 0xc6, 0x0e, 0xf4, - 0x83, 0x6e, 0x3c, 0x99, 0xc6, 0x3e, 0x27, 0xa2, 0xd3, 0xa7, 0xb7, 0x35, 0xd9, 0x28, 0xf2, 0x03, - 0x00, 0xe1, 0x8a, 0xf2, 0x17, 0x00, 0x97, 0xda, 0x73, 0x29, 0xbb, 0x40, 0x88, 0x14, 0x45, 0xd2, - 0x0d, 0x42, 0x3a, 0x2d, 0xb1, 0x49, 0x08, 0x25, 0x7f, 0x0e, 0xe6, 0xd9, 0x7a, 0x09, 0x21, 0x22, - 0xc2, 0xc7, 0xc2, 0x04, 0xd6, 0xf2, 0xd9, 0xfe, 0x32, 0xd1, 0x95, 0x34, 0x32, 0x1e, 0xf7, 0x2f, - 0x4a, 0xe8, 0x16, 0xa8, 0xce, 0xc0, 0xa9, 0x15, 0x61, 0xc8, 0x1c, 0x6c, 0x3d, 0x8f, 0x76, 0xdb, - 0x67, 0x7f, 0x3b, 0x2b, 0xd7, 0x02, 0xdf, 0xdf, 0x7c, 0xdd, 0x99, 0x0d, 0x41, 0xe4, 0x8b, 0x40, - 0x42, 0x67, 0x73, 0x0e, 0xa3, 0x32, 0x12, 0x2e, 0x57, 0xed, 0x46, 0x4e, 0xeb, 0x9e, 0x2c, 0x56, - 0x27, 0x49, 0x92, 0x98, 0x50, 0x98, 0x17, 0x1f, 0xcd, 0xa0, 0x32, 0x85, 0x86, 0xbf, 0x30, 0xad, - 0xc5, 0x4f, 0x89, 0x4a, 0xa2, 0xcc, 0x6f, 0x4a, 0x1e, 0x0e, 0x4d, 0xe5, 0x94, 0xc6, 0x8e, 0xdc, - 0x80, 0x71, 0xf4, 0x28, 0x5b, 0x93, 0x46, 0x50, 0xc2, 0x20, 0x03, 0x7d, 0xcf, 0xac, 0x7d, 0xdd, - 0x94, 0x29, 0x42, 0x65, 0xd7, 0x81, 0x8a, 0x77, 0x68, 0xf6, 0x3a, 0xa8, 0x80, 0x15, 0xfa, 0x8e, - 0xa6, 0x77, 0x68, 0x79, 0x3d, 0xdd, 0xe5, 0x10, 0x91, 0xc8, 0xd7, 0x60, 0xe2, 0xae, 0xfd, 0x48, - 0xea, 0x5f, 0x85, 0x92, 0x75, 0xa8, 0x9c, 0xe5, 0x6d, 0xfb, 0x91, 0xd5, 0xec, 0xc5, 0xa3, 0x0e, - 0xf2, 0x9c, 0xe5, 0x0a, 0x4b, 0xf2, 0x15, 0x00, 0x45, 0x2b, 0x4c, 0x8e, 0xad, 0xe0, 0x05, 0x19, - 0x11, 0x28, 0x55, 0x5b, 0x8c, 0xfc, 0x15, 0x86, 0x31, 0xc9, 0x61, 0xfe, 0xd3, 0x93, 0x1c, 0x4e, - 0x7d, 0x7a, 0x92, 0xc3, 0xe2, 0x0e, 0x9c, 0xed, 0xbb, 0x74, 0x52, 0x82, 0x34, 0x5e, 0xd5, 0x83, - 0x34, 0x9e, 0xed, 0x77, 0xc4, 0xfa, 0x7a, 0xf0, 0xe4, 0xb9, 0xe2, 0x7c, 0x7f, 0xe9, 0xe4, 0xbb, - 0xd9, 0xd8, 0x91, 0x2b, 0x2e, 0x16, 0x3c, 0xd8, 0x7e, 0x3f, 0x99, 0x24, 0x8b, 0x59, 0xc5, 0xf8, - 0xa1, 0x9c, 0x8d, 0x2e, 0x34, 0xb1, 0xe4, 0xa9, 0xfc, 0x78, 0xfe, 0xa4, 0xa7, 0xef, 0xdb, 0x30, - 0xcd, 0xf3, 0x09, 0xdd, 0xa1, 0x87, 0x0f, 0x5d, 0xaf, 0x29, 0x33, 0x64, 0xa2, 0x0c, 0x9e, 0xc8, - 0xbc, 0x17, 0xc3, 0x25, 0x15, 0xe9, 0xa4, 0x34, 0x82, 0xb5, 0x9f, 0x4d, 0xdd, 0xc5, 0x18, 0xc2, - 0x20, 0xff, 0x25, 0xf2, 0x46, 0x28, 0xa8, 0x51, 0x4f, 0x0d, 0xa1, 0xec, 0x49, 0x60, 0x8a, 0xbc, - 0x46, 0x3d, 0xe3, 0x77, 0x73, 0x40, 0x78, 0x4d, 0x65, 0xbb, 0x6b, 0xa3, 0x0b, 0x9f, 0x83, 0xa1, - 0x28, 0x8a, 0x02, 0xc7, 0xde, 0x69, 0x51, 0x35, 0x8e, 0x8b, 0x30, 0x3a, 0x0d, 0xcb, 0xac, 0xf8, - 0x45, 0x27, 0x41, 0xd8, 0x67, 0xab, 0xcb, 0x7e, 0x92, 0xad, 0xee, 0x6b, 0xf0, 0x6c, 0xa9, 0x8b, - 0x89, 0xc9, 0x64, 0x2d, 0x37, 0x5d, 0x4f, 0x6e, 0x52, 0x9a, 0x73, 0x88, 0x1d, 0xa2, 0x25, 0x5a, - 0x3a, 0x88, 0x85, 0x22, 0xa7, 0xb0, 0x79, 0xd9, 0x0d, 0x54, 0x67, 0x63, 0x29, 0xa7, 0x74, 0xb1, - 0x24, 0x45, 0x4e, 0xe1, 0x24, 0x92, 0x87, 0xe3, 0x49, 0x39, 0x05, 0x93, 0x06, 0x44, 0x3c, 0x1c, - 0x8f, 0xf6, 0x91, 0x75, 0x42, 0x12, 0xf2, 0x36, 0x4c, 0x94, 0x7a, 0x81, 0x2b, 0x18, 0x0b, 0x6b, - 0xe9, 0xc8, 0xae, 0x59, 0x34, 0x45, 0xbb, 0xfa, 0x44, 0xe8, 0xc6, 0x1f, 0xe4, 0xe0, 0x6c, 0x72, - 0x78, 0x45, 0x69, 0xb8, 0x3e, 0x32, 0xc7, 0xac, 0x8f, 0xb4, 0xd9, 0xc0, 0x1f, 0x0b, 0x9e, 0xd8, - 0x6c, 0xe0, 0xf9, 0xcd, 0x3e, 0xe6, 0x6c, 0xa8, 0xc3, 0x84, 0x7a, 0xde, 0xe5, 0x3f, 0xee, 0x79, - 0xa7, 0x72, 0x61, 0x97, 0x7a, 0xee, 0x63, 0x3d, 0x12, 0x3d, 0x1d, 0xc5, 0xdd, 0xab, 0x39, 0x06, - 0xf9, 0xb7, 0xe0, 0x3c, 0xdf, 0x93, 0xe2, 0x1f, 0xbb, 0x72, 0x28, 0x39, 0x8a, 0x81, 0x5b, 0x7e, - 0x7c, 0xb4, 0x74, 0x85, 0xab, 0x4a, 0xac, 0x44, 0xb7, 0x59, 0x3b, 0x87, 0x96, 0x6c, 0x99, 0x52, - 0xc9, 0xb1, 0xbc, 0x31, 0xa9, 0x99, 0x92, 0x33, 0xeb, 0xf5, 0x34, 0x37, 0x12, 0x1e, 0x89, 0x94, - 0x83, 0x75, 0x0f, 0x12, 0xa9, 0x0e, 0xcb, 0xa6, 0xaa, 0xc3, 0xa4, 0x3e, 0x25, 0x97, 0xaa, 0x4f, - 0xa9, 0xc0, 0x4c, 0xbd, 0xb7, 0x23, 0xeb, 0x46, 0xc4, 0xbc, 0xe6, 0x09, 0x97, 0xf6, 0x41, 0x71, - 0x12, 0xe3, 0x47, 0xb3, 0x30, 0x59, 0x6b, 0xf5, 0xf6, 0x9c, 0x4e, 0xc5, 0x0e, 0xec, 0xa7, 0x56, - 0x43, 0xf7, 0xa6, 0xa6, 0xa1, 0x0b, 0xbd, 0xa5, 0xc2, 0x0f, 0x1b, 0x4a, 0x3d, 0xf7, 0xed, 0x0c, - 0xcc, 0x44, 0x24, 0xfc, 0x9c, 0x5d, 0x83, 0x3c, 0xfb, 0x21, 0xee, 0xad, 0xe7, 0x13, 0x8c, 0x79, - 0xa2, 0x96, 0xf0, 0x2f, 0xa1, 0x33, 0xd3, 0xb3, 0x20, 0x20, 0x87, 0xc5, 0xcf, 0xc1, 0x78, 0xc4, - 0xf6, 0x24, 0x09, 0x5a, 0x7e, 0x25, 0x03, 0xc5, 0xf8, 0x97, 0x90, 0x3b, 0x30, 0xc6, 0x38, 0x39, - 0x54, 0x5e, 0xa9, 0x5f, 0xec, 0xf3, 0xcd, 0x57, 0x04, 0x1a, 0x6f, 0x1e, 0x76, 0x3e, 0xe5, 0x10, - 0x53, 0x72, 0x58, 0x34, 0x61, 0x52, 0xc5, 0x4a, 0x69, 0xdd, 0x6b, 0xba, 0x70, 0x71, 0x3a, 0xbd, - 0x1f, 0xb4, 0xb4, 0x32, 0x5a, 0xab, 0x85, 0xdc, 0x70, 0x51, 0x9b, 0x5c, 0xd8, 0x57, 0xb1, 0x79, - 0xc3, 0xa7, 0xd9, 0x72, 0x14, 0x1c, 0x59, 0x9d, 0x67, 0x29, 0x13, 0x3a, 0xc4, 0x23, 0xaf, 0xc1, - 0x28, 0xaf, 0x4f, 0x4d, 0xaf, 0xd0, 0x45, 0x88, 0x2a, 0xe2, 0x72, 0x1c, 0xe3, 0x6f, 0xe6, 0xe0, - 0x74, 0xd4, 0xbc, 0x7b, 0xdd, 0xa6, 0x1d, 0xd0, 0x9a, 0xed, 0xd9, 0x6d, 0xff, 0x98, 0x15, 0x70, - 0x29, 0xd1, 0x34, 0x0c, 0xb7, 0x2f, 0x9b, 0xa6, 0x34, 0xc8, 0x88, 0x35, 0x08, 0xd5, 0x97, 0xbc, - 0x41, 0xb2, 0x19, 0xe4, 0x0e, 0xe4, 0xea, 0x34, 0x10, 0xdb, 0xe6, 0xc5, 0x44, 0xaf, 0xaa, 0xed, - 0xba, 0x52, 0xa7, 0x01, 0x1f, 0x44, 0x1e, 0xfb, 0x83, 0x6a, 0xb1, 0x17, 0xeb, 0x34, 0x20, 0xdb, - 0x30, 0xba, 0xfa, 0xa8, 0x4b, 0x1b, 0x81, 0x48, 0x2f, 0x74, 0x79, 0x30, 0x3f, 0x8e, 0xab, 0x64, - 0x17, 0xa2, 0x08, 0x50, 0x3b, 0x8b, 0xa3, 0x2c, 0xde, 0x80, 0x82, 0xac, 0xfc, 0x24, 0x33, 0x77, - 0xf1, 0x4d, 0x98, 0x50, 0x2a, 0x39, 0xd1, 0xa4, 0xff, 0x59, 0xb6, 0xaf, 0xba, 0x2d, 0x99, 0x91, - 0x68, 0x35, 0x21, 0xe6, 0x65, 0x22, 0x9f, 0x5d, 0x2e, 0xe6, 0x59, 0x07, 0xa2, 0x68, 0x80, 0xbc, - 0x57, 0x85, 0x99, 0xfa, 0x81, 0xd3, 0x8d, 0x42, 0xe0, 0x69, 0x87, 0x29, 0xc6, 0x8a, 0x17, 0x77, - 0xee, 0xf8, 0x61, 0x1a, 0xa7, 0x33, 0xfe, 0x38, 0x03, 0xa3, 0xec, 0xaf, 0xfb, 0x37, 0x9e, 0xd2, - 0x2d, 0xf3, 0xba, 0xb6, 0x65, 0xce, 0x2a, 0xf1, 0x67, 0x71, 0xe3, 0xb8, 0x71, 0xcc, 0x66, 0x79, - 0x24, 0x06, 0x88, 0x23, 0x93, 0x5b, 0x30, 0x26, 0x2c, 0x6f, 0x84, 0x89, 0xb4, 0x1a, 0xd0, 0x56, - 0xda, 0xe4, 0x84, 0x97, 0x73, 0xb7, 0x1b, 0xd7, 0x66, 0x48, 0x6a, 0x26, 0x92, 0xcb, 0x60, 0x84, - 0x5a, 0x1e, 0x3b, 0x17, 0xfd, 0xcf, 0x78, 0x40, 0x56, 0x25, 0xf3, 0x64, 0x1f, 0xc7, 0xfe, 0x92, - 0x78, 0xc8, 0xc8, 0x0d, 0x62, 0x72, 0x5a, 0xa6, 0xf9, 0x4a, 0x7d, 0xe3, 0xf8, 0xbd, 0x39, 0x1e, - 0xca, 0x54, 0x36, 0xec, 0x1d, 0x98, 0xbc, 0xe9, 0x7a, 0x0f, 0x6d, 0x8f, 0x07, 0xa8, 0x13, 0x96, - 0x03, 0xec, 0xea, 0x38, 0xb5, 0xcb, 0xe1, 0x3c, 0xc4, 0xdd, 0xf7, 0x8e, 0x96, 0xf2, 0x2b, 0xae, - 0xdb, 0x32, 0x35, 0x74, 0xb2, 0x09, 0x53, 0x77, 0xed, 0x47, 0xca, 0xa5, 0x97, 0x3b, 0x94, 0x5c, - 0x66, 0x13, 0x98, 0xdd, 0x9a, 0x8f, 0x37, 0x83, 0xd2, 0xe9, 0x89, 0x03, 0xd3, 0x35, 0xd7, 0x0b, - 0x44, 0x25, 0x4e, 0x67, 0x4f, 0x7c, 0x6c, 0xd2, 0x90, 0xeb, 0x6a, 0xaa, 0x21, 0xd7, 0xd9, 0xae, - 0xeb, 0x05, 0xd6, 0x6e, 0x48, 0xae, 0x05, 0xcd, 0xd1, 0x18, 0x93, 0x77, 0x60, 0x56, 0x09, 0x0a, - 0x76, 0xd3, 0xf5, 0xda, 0xb6, 0x14, 0xca, 0x51, 0x0f, 0x8c, 0xf6, 0x26, 0xbb, 0x08, 0x36, 0x93, - 0x98, 0xe4, 0xc3, 0x34, 0x17, 0x9d, 0x91, 0xc8, 0x12, 0x2c, 0xc5, 0x45, 0xa7, 0x9f, 0x25, 0x58, - 0xd2, 0x59, 0x67, 0x6f, 0x90, 0xa5, 0x68, 0x61, 0xe5, 0x9a, 0xb8, 0x7e, 0x1f, 0x6f, 0x09, 0x1a, - 0x8e, 0x5b, 0x1f, 0x8b, 0xd0, 0x65, 0xc8, 0xad, 0xd4, 0x6e, 0xe2, 0xeb, 0x85, 0x34, 0xb4, 0xe9, - 0xec, 0xdb, 0x9d, 0x06, 0x0a, 0xcb, 0xc2, 0x3a, 0x5b, 0xdd, 0x91, 0x57, 0x6a, 0x37, 0x89, 0x0d, - 0x73, 0x35, 0xea, 0xb5, 0x9d, 0xe0, 0x4b, 0xd7, 0xae, 0x29, 0x03, 0x55, 0xc0, 0xa6, 0x5d, 0x15, - 0x4d, 0x5b, 0xea, 0x22, 0x8a, 0xf5, 0xe8, 0xda, 0xb5, 0xd4, 0xe1, 0x08, 0x1b, 0x96, 0xc6, 0x8b, - 0xed, 0x8c, 0x77, 0xed, 0x47, 0x91, 0x51, 0xbd, 0x2f, 0x9c, 0x1d, 0xcf, 0xc9, 0x89, 0x15, 0x19, - 0xe4, 0x6b, 0x3b, 0xa3, 0x4e, 0xc4, 0xee, 0x3a, 0xd1, 0xf4, 0xf2, 0x85, 0x9b, 0xc8, 0xa2, 0x54, - 0xe9, 0x48, 0x8f, 0x58, 0x55, 0x60, 0x57, 0xd0, 0xc9, 0xbd, 0xf0, 0xc6, 0xc6, 0x6f, 0x3c, 0x22, - 0x89, 0xd5, 0x55, 0xf5, 0xc6, 0xc6, 0x15, 0x29, 0xda, 0x67, 0xcd, 0x84, 0xd7, 0x7c, 0xee, 0x65, - 0x60, 0xea, 0x5c, 0x92, 0x17, 0xc1, 0xc9, 0x93, 0x5f, 0x04, 0x29, 0xe4, 0xd7, 0xdd, 0xc6, 0x81, - 0x88, 0xf4, 0xf3, 0x45, 0xb6, 0xdc, 0x5b, 0x6e, 0xe3, 0xe0, 0xc9, 0x59, 0xc0, 0x22, 0x7b, 0xb2, - 0xc1, 0x9a, 0xca, 0x66, 0x81, 0xe8, 0x13, 0x61, 0x55, 0x39, 0x1f, 0xde, 0x84, 0x94, 0x32, 0x2e, - 0xf8, 0xf0, 0x49, 0x23, 0xbb, 0xd6, 0xd4, 0xc9, 0x09, 0x85, 0x62, 0x85, 0xfa, 0x07, 0x81, 0xdb, - 0x2d, 0xb7, 0x9c, 0xee, 0x8e, 0x6b, 0x7b, 0x4d, 0xd4, 0xdd, 0xa5, 0xad, 0xef, 0x97, 0x53, 0xd7, - 0xf7, 0x6c, 0x93, 0xd3, 0x5b, 0x0d, 0xc9, 0xc0, 0x4c, 0xb0, 0x24, 0x1f, 0xc2, 0x34, 0x9b, 0xdc, - 0xab, 0x8f, 0x02, 0xda, 0xe1, 0x23, 0x3f, 0x8b, 0xa2, 0xc3, 0xbc, 0x12, 0xf8, 0x3b, 0x2c, 0xe4, - 0x73, 0x0a, 0x17, 0x3b, 0x0d, 0x09, 0xb4, 0x28, 0x49, 0x1a, 0x2b, 0xd2, 0x84, 0x85, 0xbb, 0xf6, - 0x23, 0x25, 0xf5, 0x96, 0x32, 0x49, 0x09, 0x4e, 0x30, 0x4c, 0x35, 0xce, 0x26, 0x58, 0x14, 0xa0, - 0xb3, 0xcf, 0x7c, 0xed, 0xcb, 0x89, 0xfc, 0x20, 0x9c, 0x11, 0x9f, 0x55, 0xc1, 0x6c, 0x18, 0xae, - 0x77, 0x58, 0xdf, 0xb7, 0xd1, 0x9f, 0x66, 0xee, 0x64, 0x1b, 0xa2, 0xec, 0xb0, 0xa6, 0xe4, 0x63, - 0xf9, 0x9c, 0x91, 0xd9, 0xaf, 0x06, 0xf2, 0x11, 0x4c, 0xf3, 0x27, 0x9b, 0x35, 0xd7, 0x0f, 0xf0, - 0x42, 0x3f, 0x7f, 0x32, 0x33, 0x71, 0xfe, 0x0e, 0xc4, 0x1d, 0x2b, 0x62, 0x0a, 0x80, 0x18, 0x67, - 0xf2, 0x16, 0x4c, 0xd4, 0x9c, 0x0e, 0x8f, 0x63, 0x56, 0xad, 0xa1, 0xea, 0x51, 0x9c, 0x3f, 0x5d, - 0xa7, 0x63, 0xc9, 0x5b, 0x75, 0x37, 0xdc, 0x2e, 0x54, 0x6c, 0xb2, 0x0d, 0x13, 0xf5, 0xfa, 0xda, - 0x4d, 0x87, 0x1d, 0x80, 0xdd, 0xc3, 0x85, 0xd3, 0x7d, 0x5a, 0x79, 0x21, 0xb5, 0x95, 0x53, 0xbe, - 0xbf, 0x8f, 0xe9, 0x8c, 0xad, 0x86, 0xdb, 0x3d, 0x34, 0x55, 0x4e, 0x29, 0xa6, 0xd3, 0x67, 0x9e, - 0xb0, 0xe9, 0x74, 0x15, 0x66, 0x14, 0x03, 0x4b, 0x34, 0xae, 0x5c, 0x88, 0xc2, 0x76, 0xa9, 0xa6, - 0xd2, 0x71, 0xb7, 0xbe, 0x38, 0x9d, 0xb4, 0x99, 0x3e, 0x7b, 0x52, 0x9b, 0x69, 0x07, 0x66, 0xf9, - 0x60, 0x88, 0x79, 0x80, 0x23, 0xbd, 0xd8, 0xa7, 0x0f, 0x2f, 0xa7, 0xf6, 0xe1, 0x9c, 0x18, 0x69, - 0x39, 0xc9, 0xf0, 0x89, 0x32, 0xc9, 0x95, 0xec, 0x02, 0x11, 0x40, 0x91, 0x4c, 0x19, 0xeb, 0x7a, - 0xb6, 0x4f, 0x5d, 0x2f, 0xa6, 0xd6, 0x35, 0x2d, 0xeb, 0xda, 0xe1, 0xd5, 0xa4, 0x70, 0x24, 0x1d, - 0x59, 0x8f, 0x9c, 0x5f, 0xd8, 0xb1, 0xcf, 0x69, 0x7a, 0xd0, 0x24, 0x02, 0x0f, 0x22, 0x1a, 0x9f, - 0xb4, 0xf1, 0x7e, 0x4f, 0xe1, 0x4c, 0x1e, 0xc1, 0xe9, 0x64, 0x2b, 0xb0, 0xce, 0x73, 0x58, 0xe7, - 0x39, 0xad, 0xce, 0x38, 0x12, 0x9f, 0x37, 0xfa, 0x67, 0xc5, 0x6b, 0xed, 0xc3, 0xff, 0x76, 0xbe, - 0x30, 0x55, 0x9c, 0x4e, 0xb3, 0xb4, 0xfe, 0xc7, 0xd9, 0xd8, 0xa6, 0x4d, 0xaa, 0x30, 0x26, 0xc6, - 0x42, 0x48, 0xb1, 0xc9, 0x1e, 0x3f, 0x97, 0xda, 0xe3, 0x63, 0x62, 0x58, 0x4d, 0x49, 0x4f, 0x1e, - 0x32, 0x56, 0x68, 0xb6, 0x2e, 0xc4, 0xfe, 0xaf, 0xf0, 0x3d, 0x19, 0x41, 0xda, 0xe9, 0x53, 0x39, - 0xb9, 0xd3, 0x8e, 0xee, 0x13, 0x86, 0xc7, 0x90, 0xac, 0x8d, 0x1c, 0xf0, 0x4c, 0x01, 0xb9, 0xd0, - 0xf3, 0x43, 0x4f, 0x0b, 0xf0, 0xc4, 0x2a, 0x64, 0xb5, 0x18, 0xbf, 0x96, 0x81, 0x29, 0x6d, 0xd7, - 0x27, 0x37, 0x14, 0xb7, 0xa6, 0xc8, 0x2b, 0x57, 0xc3, 0xc1, 0x8d, 0x20, 0xee, 0xf0, 0x74, 0x43, - 0xd8, 0x4d, 0x67, 0xfb, 0xd3, 0xa5, 0xe6, 0x14, 0x1f, 0xac, 0x24, 0x0b, 0x33, 0x0f, 0xe5, 0xfb, - 0x64, 0x1e, 0xfa, 0xe7, 0x8b, 0x30, 0xad, 0x5f, 0x0b, 0xc8, 0x6b, 0x30, 0x8a, 0xba, 0x45, 0x79, - 0xc7, 0xe4, 0x99, 0x77, 0x11, 0xa2, 0x65, 0xde, 0x45, 0x08, 0x79, 0x09, 0x20, 0x34, 0x60, 0x95, - 0x9a, 0xf5, 0x91, 0xc7, 0x47, 0x4b, 0x99, 0xd7, 0x4d, 0xa5, 0x80, 0x7c, 0x15, 0x60, 0xc3, 0x6d, - 0xd2, 0x30, 0x37, 0xda, 0x80, 0xd7, 0xe3, 0x97, 0x13, 0x51, 0xb4, 0x4f, 0x75, 0xdc, 0x26, 0x4d, - 0x86, 0xcc, 0x56, 0x38, 0x92, 0x2f, 0xc0, 0x88, 0xd9, 0x63, 0xf7, 0x59, 0xae, 0x4a, 0x98, 0x90, - 0xbb, 0x6f, 0xaf, 0x45, 0x95, 0x34, 0xfd, 0xbd, 0xb8, 0x61, 0x14, 0x03, 0x90, 0xf7, 0x78, 0x74, - 0x6d, 0x11, 0x0c, 0x6b, 0x24, 0x7a, 0x6b, 0x50, 0x4e, 0xe5, 0x44, 0x38, 0x2c, 0x85, 0x84, 0x6c, - 0xc2, 0x98, 0xaa, 0x24, 0x57, 0xfc, 0x63, 0xd5, 0x87, 0x14, 0xe5, 0xe6, 0x25, 0x92, 0xaa, 0xc5, - 0xf5, 0xe7, 0x92, 0x0b, 0x79, 0x1b, 0xc6, 0x19, 0x7b, 0xb6, 0x84, 0x7d, 0x21, 0x71, 0xe3, 0x8b, - 0x82, 0xd2, 0x20, 0xb6, 0x03, 0x68, 0x21, 0xab, 0x42, 0x02, 0xf2, 0x21, 0xe6, 0x0d, 0x13, 0x5d, - 0x3d, 0xd0, 0xaa, 0xe0, 0x62, 0xa2, 0xab, 0x31, 0x91, 0x58, 0x32, 0xa5, 0x6c, 0xc8, 0x8f, 0xec, - 0x85, 0xa1, 0x94, 0x86, 0x89, 0x88, 0xfe, 0x4a, 0xa2, 0x82, 0x05, 0x19, 0x1d, 0x28, 0x99, 0xe3, - 0x4e, 0xe3, 0x4b, 0xba, 0x50, 0x8c, 0x04, 0x1e, 0x51, 0x17, 0x0c, 0xaa, 0xeb, 0xf5, 0x44, 0x5d, - 0xea, 0x00, 0x26, 0xaa, 0x4b, 0x70, 0x27, 0x4d, 0x98, 0x96, 0x9b, 0xa7, 0xa8, 0x6f, 0x62, 0x50, - 0x7d, 0x2f, 0x25, 0xea, 0x9b, 0x6b, 0xee, 0x24, 0xeb, 0x89, 0xf1, 0x24, 0x6f, 0xc3, 0x94, 0x84, - 0xe0, 0xfa, 0x10, 0xb9, 0x6b, 0x51, 0x2b, 0xd2, 0xdc, 0x41, 0x93, 0x79, 0x3d, 0xf3, 0x9f, 0x8a, - 0xac, 0x52, 0xf3, 0xd9, 0x31, 0xa5, 0x51, 0xc7, 0x67, 0x85, 0x8e, 0x4c, 0x3e, 0x80, 0x89, 0x6a, - 0x9b, 0x7d, 0x88, 0xdb, 0xb1, 0x03, 0x2a, 0x7c, 0xa7, 0xa4, 0x85, 0x84, 0x52, 0xa2, 0x4c, 0x55, - 0x9e, 0x4b, 0x2f, 0x2a, 0xd2, 0x72, 0xe9, 0x45, 0x60, 0xd6, 0x79, 0xfc, 0x55, 0x44, 0xcc, 0x61, - 0xe9, 0x57, 0x75, 0x2e, 0xc5, 0x4a, 0x41, 0x61, 0x2f, 0x82, 0xce, 0x31, 0xa8, 0x7c, 0x95, 0x88, - 0x05, 0x9d, 0x53, 0x79, 0x92, 0x77, 0x60, 0x42, 0x24, 0x8b, 0x28, 0x99, 0x1b, 0xfe, 0x42, 0x11, - 0x3f, 0x1e, 0xbd, 0xc1, 0x65, 0x5e, 0x09, 0xcb, 0xf6, 0x62, 0xe6, 0x78, 0x11, 0x3e, 0xf9, 0x12, - 0xcc, 0x6f, 0x3b, 0x9d, 0xa6, 0xfb, 0xd0, 0x17, 0xc7, 0x94, 0xd8, 0xe8, 0x66, 0x23, 0x67, 0x98, - 0x87, 0xbc, 0x3c, 0x94, 0x53, 0x12, 0x1b, 0x5f, 0x2a, 0x07, 0xf2, 0x67, 0x13, 0x9c, 0xf9, 0x0c, - 0x22, 0x83, 0x66, 0xd0, 0x72, 0x62, 0x06, 0x25, 0xab, 0x8f, 0x4f, 0xa7, 0xd4, 0x6a, 0x88, 0x0b, - 0x44, 0x3f, 0xdf, 0x6f, 0xbb, 0x4e, 0x67, 0x61, 0x0e, 0xf7, 0xc2, 0x67, 0xe3, 0xfe, 0xd7, 0x88, - 0x57, 0x73, 0x5b, 0x4e, 0xe3, 0x90, 0xe7, 0xad, 0x8f, 0xcb, 0xa3, 0x1f, 0xb9, 0x9a, 0xce, 0x38, - 0x85, 0x35, 0xf9, 0x00, 0x26, 0xd9, 0xff, 0xe1, 0x85, 0x79, 0x5e, 0xb3, 0x6b, 0x53, 0x30, 0x45, - 0x3d, 0x38, 0x46, 0x98, 0xcd, 0x22, 0xe5, 0x2e, 0xad, 0xb1, 0x22, 0x6f, 0x02, 0x30, 0xc9, 0x49, - 0x6c, 0xc7, 0xa7, 0xa2, 0x18, 0x7f, 0x28, 0x6f, 0x25, 0x37, 0xe2, 0x08, 0x99, 0xdd, 0xe2, 0xd9, - 0xaf, 0x7a, 0xaf, 0xe9, 0xb2, 0xb5, 0x71, 0x1a, 0x69, 0xb9, 0x4b, 0x1a, 0xa3, 0xf5, 0x39, 0x5c, - 0x73, 0x49, 0x8b, 0xd0, 0xc9, 0x1a, 0xcc, 0x60, 0x2c, 0xc6, 0x6a, 0x93, 0x76, 0x02, 0x7c, 0xad, - 0x5c, 0x38, 0xa3, 0xbc, 0xe6, 0xb2, 0x22, 0xcb, 0x09, 0xcb, 0x54, 0x39, 0x3b, 0x46, 0x46, 0x7c, - 0x98, 0x8b, 0x76, 0x97, 0xe8, 0x6d, 0x78, 0x01, 0x3b, 0x49, 0x4a, 0x97, 0x49, 0x0c, 0xbe, 0x1f, - 0xb3, 0x11, 0x51, 0x36, 0x2e, 0xa9, 0x59, 0x57, 0x2b, 0x4c, 0xe3, 0x4e, 0x4c, 0x20, 0xb7, 0xca, - 0xb5, 0x78, 0xb0, 0xc2, 0xb3, 0xf8, 0x05, 0x38, 0xcc, 0x7b, 0x8d, 0x28, 0x6b, 0x63, 0x4a, 0xc0, - 0xc2, 0x14, 0x6a, 0xf2, 0x0d, 0x38, 0x25, 0x77, 0x10, 0x51, 0x24, 0xe6, 0xf5, 0xe2, 0x09, 0x77, - 0xe2, 0xe6, 0x4e, 0x58, 0x75, 0x62, 0x4a, 0xa7, 0x57, 0x41, 0x6c, 0x98, 0xc0, 0x61, 0x15, 0x35, - 0x3e, 0x3b, 0xa8, 0xc6, 0x4b, 0x89, 0x1a, 0x4f, 0xe3, 0x44, 0x49, 0x56, 0xa6, 0xf2, 0x24, 0x2b, - 0x30, 0x25, 0xd6, 0x91, 0x98, 0x6d, 0xcf, 0x61, 0x6f, 0xa1, 0x82, 0x45, 0xae, 0xc0, 0xc4, 0x84, - 0xd3, 0x49, 0xd4, 0x1d, 0x99, 0x6b, 0xd4, 0xcf, 0x69, 0x3b, 0x72, 0x5c, 0x91, 0xae, 0x23, 0xb3, - 0x1d, 0x29, 0x92, 0x62, 0x56, 0x1f, 0x75, 0x3d, 0xa1, 0x3e, 0x79, 0x3e, 0x8a, 0xe1, 0xaf, 0x08, - 0x3f, 0x16, 0x0d, 0x31, 0xd4, 0x2d, 0x21, 0x8d, 0x03, 0xb9, 0x07, 0x73, 0xe1, 0xa9, 0xad, 0x30, - 0x5e, 0x8a, 0x72, 0x21, 0x44, 0x47, 0x7d, 0x3a, 0xdf, 0x34, 0x7a, 0x62, 0xc3, 0x19, 0xed, 0x9c, - 0x56, 0x58, 0x9f, 0x47, 0xd6, 0x98, 0x25, 0x54, 0x3f, 0xe4, 0xd3, 0xd9, 0xf7, 0xe3, 0x43, 0x3e, - 0x82, 0xc5, 0xf8, 0xd9, 0xac, 0xd4, 0xf2, 0x02, 0xd6, 0xf2, 0xca, 0xe3, 0xa3, 0xa5, 0x8b, 0x89, - 0xe3, 0x3d, 0xbd, 0xa2, 0x01, 0xdc, 0xc8, 0x57, 0x61, 0x41, 0x3f, 0x9f, 0x95, 0x9a, 0x0c, 0xac, - 0x09, 0x97, 0x4e, 0x78, 0xb0, 0xa7, 0xd7, 0xd0, 0x97, 0x07, 0x09, 0x60, 0x29, 0x75, 0x76, 0x2b, - 0xd5, 0x5c, 0x88, 0x3e, 0x28, 0xb1, 0x4a, 0xd2, 0xab, 0x3b, 0x8e, 0x25, 0x79, 0x08, 0xcf, 0xa7, - 0x1d, 0x13, 0x4a, 0xa5, 0x2f, 0x86, 0x0a, 0xca, 0x57, 0xd3, 0x8f, 0x9c, 0xf4, 0x9a, 0x8f, 0x61, - 0x4b, 0x3e, 0x84, 0x53, 0xca, 0xfa, 0x52, 0xea, 0x7b, 0x09, 0xeb, 0x43, 0x57, 0x56, 0x75, 0x61, - 0xa6, 0xd7, 0x92, 0xce, 0x83, 0xb4, 0x61, 0x4e, 0x7e, 0x38, 0x6a, 0x82, 0xc5, 0xd1, 0x73, 0x51, - 0xdb, 0x55, 0x93, 0x18, 0x4a, 0x7a, 0xe5, 0x1d, 0xab, 0x1b, 0x11, 0xaa, 0x33, 0x3d, 0x85, 0x2f, - 0x59, 0x83, 0xd1, 0x7a, 0xad, 0x7a, 0xf3, 0xe6, 0xea, 0xc2, 0xcb, 0x58, 0x83, 0xf4, 0x7b, 0xe1, - 0x40, 0xed, 0xd2, 0x24, 0xcc, 0xad, 0xba, 0xce, 0xee, 0xae, 0xe6, 0x5e, 0xc4, 0x51, 0x8d, 0x9f, - 0xcd, 0xc0, 0x5c, 0x0a, 0x15, 0xb9, 0x08, 0x79, 0x4c, 0x05, 0xa0, 0x3c, 0x07, 0xc7, 0x52, 0x00, - 0x60, 0x39, 0xf9, 0x0c, 0x8c, 0x55, 0x36, 0xea, 0xf5, 0xd2, 0x86, 0xbc, 0x60, 0xf1, 0xcd, 0xa5, - 0xe3, 0x5b, 0xbe, 0xad, 0xbf, 0x22, 0x09, 0x34, 0xf2, 0x3a, 0x8c, 0x56, 0x6b, 0x48, 0xc0, 0xed, - 0x91, 0xf0, 0xc2, 0xe1, 0x74, 0xe3, 0xf8, 0x02, 0xc9, 0xf8, 0xb1, 0x0c, 0x90, 0x64, 0x17, 0x90, - 0x6b, 0x30, 0xa1, 0x76, 0x34, 0xbf, 0x0e, 0xe2, 0x8b, 0x87, 0xd2, 0x8d, 0xa6, 0x8a, 0x43, 0x2a, - 0x30, 0x82, 0xa9, 0x8b, 0xc2, 0xe7, 0xab, 0xd4, 0xed, 0xfa, 0x4c, 0x62, 0xbb, 0x1e, 0xc1, 0xc4, - 0x48, 0x26, 0x27, 0x36, 0x7e, 0x33, 0x03, 0x24, 0x79, 0xc4, 0x0d, 0xfd, 0x7c, 0xfe, 0x86, 0xe2, - 0x4f, 0xaa, 0x06, 0xfb, 0x0e, 0x33, 0x35, 0xa8, 0x57, 0x9b, 0xc8, 0xf3, 0xf4, 0xa2, 0x76, 0x95, - 0xee, 0xef, 0x84, 0x74, 0x19, 0x46, 0xee, 0x53, 0x6f, 0x47, 0x9a, 0xda, 0xa1, 0x79, 0xce, 0x03, - 0x06, 0x50, 0xaf, 0x96, 0x88, 0x61, 0xfc, 0x41, 0x06, 0xe6, 0xd3, 0xe4, 0xae, 0x63, 0x7c, 0x85, - 0x8c, 0x98, 0x9b, 0x13, 0x3e, 0x9d, 0x73, 0xdb, 0x9d, 0xd0, 0xb9, 0x69, 0x09, 0x46, 0xd8, 0xc7, - 0xca, 0x11, 0xc6, 0xab, 0x3d, 0xeb, 0x0d, 0xdf, 0xe4, 0x70, 0x86, 0xc0, 0x63, 0x14, 0xe5, 0x31, - 0x14, 0x15, 0x22, 0xe0, 0xb1, 0x6e, 0x72, 0x38, 0x43, 0xb8, 0xeb, 0x36, 0xc3, 0x7c, 0x9d, 0x88, - 0xd0, 0x66, 0x00, 0x93, 0xc3, 0xc9, 0x45, 0x18, 0xdb, 0xec, 0xac, 0x53, 0xfb, 0x81, 0x4c, 0x36, - 0x81, 0x4f, 0xfd, 0x6e, 0xc7, 0x6a, 0x31, 0x98, 0x29, 0x0b, 0x8d, 0x6f, 0x67, 0x60, 0x36, 0x21, - 0xf2, 0x1d, 0xef, 0x0e, 0x35, 0xd8, 0x2f, 0x61, 0x98, 0xef, 0xe3, 0xcd, 0xcf, 0xa7, 0x37, 0xdf, - 0xf8, 0x3f, 0xf2, 0x70, 0xa6, 0xcf, 0x0d, 0x3c, 0xf2, 0x9b, 0xca, 0x1c, 0xeb, 0x37, 0xf5, 0x65, - 0x76, 0xe3, 0xb5, 0x9d, 0xb6, 0xbf, 0xe5, 0x46, 0x2d, 0x8e, 0xcc, 0xaf, 0xb1, 0x4c, 0xa6, 0x2c, - 0x95, 0x76, 0xba, 0x67, 0x79, 0xda, 0x68, 0x2b, 0x70, 0x93, 0x02, 0x80, 0xc6, 0x2c, 0xe1, 0xb9, - 0x94, 0xfb, 0x53, 0xe2, 0xb9, 0xa4, 0xdb, 0xd2, 0xe7, 0x9f, 0xa8, 0x2d, 0x7d, 0xba, 0x1d, 0xde, - 0xc8, 0x27, 0xb1, 0xca, 0x2c, 0xc3, 0x14, 0xb7, 0x75, 0x28, 0xf9, 0x7c, 0x90, 0x46, 0x13, 0xf6, - 0x11, 0xb6, 0x9f, 0x1c, 0x0b, 0x8d, 0x86, 0xac, 0xe9, 0x76, 0xdf, 0x63, 0xf8, 0x46, 0x73, 0xb1, - 0xbf, 0x5d, 0xb7, 0xf6, 0x36, 0xab, 0x92, 0x1a, 0xdf, 0xce, 0xea, 0x6e, 0x4d, 0x7f, 0x1a, 0x67, - 0xde, 0x65, 0x18, 0xd9, 0xde, 0xa7, 0x9e, 0xdc, 0xef, 0xb0, 0x21, 0x0f, 0x19, 0x40, 0x6d, 0x08, - 0x62, 0x90, 0x9b, 0x30, 0x5d, 0xe3, 0x23, 0x21, 0xbb, 0x37, 0x1f, 0x5d, 0x8c, 0xba, 0xe2, 0xfa, - 0x9e, 0xd2, 0xbf, 0x31, 0x2a, 0xe3, 0x16, 0x9c, 0xd3, 0x16, 0xa4, 0x08, 0xc3, 0xc0, 0xcd, 0xaf, - 0xf9, 0x89, 0x38, 0x1d, 0x19, 0x9c, 0x47, 0xbb, 0x87, 0x19, 0x83, 0x1a, 0xbb, 0xf0, 0xfc, 0x40, - 0x46, 0xec, 0x20, 0x82, 0x6e, 0xf8, 0x2b, 0x66, 0x23, 0x36, 0x90, 0xd4, 0x54, 0xe8, 0x8c, 0x1f, - 0x84, 0x49, 0xb5, 0x97, 0x71, 0x4f, 0x65, 0xbf, 0xc5, 0xa6, 0xc6, 0xf7, 0x54, 0x06, 0x30, 0x39, - 0xfc, 0xd8, 0x54, 0xef, 0xd1, 0xf0, 0xe7, 0x8e, 0x1b, 0x7e, 0x56, 0x39, 0x2e, 0x59, 0xa5, 0x72, - 0xfc, 0xad, 0x56, 0x8e, 0x71, 0x16, 0x4c, 0x0e, 0x7f, 0xa2, 0x95, 0xff, 0x86, 0x0c, 0xb9, 0x8f, - 0xd6, 0xdd, 0xf2, 0x06, 0x1b, 0x25, 0xd4, 0x9c, 0x4b, 0xbb, 0x97, 0x46, 0x98, 0xd1, 0x21, 0x99, - 0x3d, 0xee, 0x90, 0x3c, 0xc9, 0x44, 0xbc, 0x0a, 0x63, 0x25, 0xf1, 0x82, 0x9a, 0x8f, 0x04, 0x1b, - 0x3b, 0xf1, 0x5c, 0x2a, 0xb1, 0x8c, 0xef, 0x64, 0xe0, 0x54, 0xaa, 0x62, 0x8b, 0xd5, 0xca, 0x35, - 0x68, 0xca, 0x3a, 0x8c, 0xab, 0xcf, 0x38, 0xc6, 0x49, 0x9c, 0x6c, 0x87, 0xff, 0x16, 0xe3, 0x05, - 0x18, 0x0f, 0x9f, 0x55, 0xc8, 0xbc, 0x1c, 0x3a, 0x34, 0xab, 0x91, 0xda, 0xf9, 0x3a, 0x00, 0x6b, - 0xc1, 0x13, 0x35, 0x02, 0x33, 0x7e, 0x23, 0xcb, 0xd3, 0x31, 0x3d, 0xb5, 0xb1, 0xe9, 0xd2, 0x2d, - 0xb7, 0xd8, 0x27, 0xf5, 0x8f, 0x48, 0x47, 0x56, 0x61, 0xb4, 0x1e, 0xd8, 0x41, 0x4f, 0xfa, 0x06, - 0xcf, 0xa9, 0x64, 0x58, 0x70, 0x7f, 0x39, 0xf2, 0x0e, 0xf5, 0x11, 0xa2, 0x89, 0xf2, 0x08, 0x51, - 0x0c, 0xc0, 0x1c, 0x98, 0x54, 0x69, 0xc9, 0x07, 0x30, 0x2d, 0x03, 0x6e, 0x71, 0x87, 0x69, 0xf1, - 0x04, 0x24, 0x4d, 0x09, 0x64, 0xc0, 0x2d, 0xd5, 0xc1, 0x5a, 0xc3, 0x57, 0x77, 0xea, 0xae, 0x8a, - 0x6c, 0xfc, 0xe1, 0x28, 0x9f, 0x07, 0x22, 0x72, 0xde, 0x0e, 0x4c, 0x6f, 0x56, 0x2b, 0x65, 0x45, - 0x4d, 0xa5, 0x27, 0x49, 0x58, 0x7d, 0x14, 0x50, 0xaf, 0x63, 0xb7, 0x04, 0xc2, 0x61, 0x74, 0x36, - 0xb8, 0x4e, 0xb3, 0x91, 0xae, 0xc2, 0x8a, 0x71, 0x64, 0x75, 0xd4, 0x4b, 0x77, 0xd7, 0x95, 0x3a, - 0xb2, 0x43, 0xd6, 0xe1, 0xdb, 0xed, 0x56, 0x9f, 0x3a, 0x74, 0x8e, 0x64, 0x1f, 0x8a, 0xb7, 0x50, - 0x8e, 0x51, 0x6a, 0xc9, 0x0d, 0xae, 0xe5, 0x82, 0xa8, 0xe5, 0x59, 0x2e, 0x00, 0xa5, 0xd7, 0x93, - 0xe0, 0x1a, 0x2d, 0xe0, 0xfc, 0xb1, 0x0b, 0xf8, 0x2f, 0x66, 0x60, 0x94, 0x0b, 0x4a, 0x62, 0x7e, - 0xf5, 0x11, 0xc5, 0xb6, 0x9f, 0x8c, 0x28, 0x56, 0xc4, 0x0d, 0x5c, 0x9b, 0x69, 0xbc, 0x8c, 0x54, - 0x62, 0x13, 0x56, 0x1a, 0x14, 0xa2, 0xc2, 0x99, 0x97, 0x1c, 0x3f, 0x5f, 0x49, 0x35, 0x72, 0xa4, - 0x1d, 0x3b, 0xd6, 0x57, 0x4b, 0x3a, 0x1f, 0x8f, 0x09, 0x47, 0x5a, 0xdd, 0x7d, 0x76, 0x1d, 0xc6, - 0x85, 0x7b, 0xee, 0xca, 0xa1, 0x78, 0x56, 0x2a, 0x6a, 0x8f, 0xd6, 0xcd, 0x95, 0xc3, 0x48, 0x08, - 0x14, 0x0e, 0xbe, 0xd6, 0xce, 0xa1, 0x96, 0x76, 0x4a, 0x22, 0x92, 0x4d, 0x9e, 0x8e, 0x85, 0xc7, - 0x16, 0xd4, 0x03, 0xff, 0x86, 0x70, 0x11, 0xf8, 0x43, 0xfa, 0xf8, 0xa5, 0x84, 0x12, 0x8c, 0x78, - 0x90, 0x75, 0x28, 0x8a, 0x34, 0xf5, 0xdc, 0xea, 0xa1, 0x5a, 0xe1, 0x2e, 0xa0, 0xc2, 0x58, 0x4d, - 0x26, 0xb9, 0x17, 0xf6, 0x12, 0xba, 0xf7, 0x45, 0x82, 0x92, 0x5d, 0xdc, 0x8a, 0xf1, 0xd9, 0x47, - 0xde, 0x86, 0x89, 0x30, 0xb6, 0x63, 0xe8, 0xff, 0x85, 0xea, 0xe5, 0x28, 0x18, 0xa4, 0xe6, 0x09, - 0xa6, 0xa2, 0x93, 0x65, 0x28, 0xb0, 0x45, 0x1c, 0x4f, 0x78, 0xd5, 0x13, 0x30, 0xd5, 0xa8, 0x5b, - 0xe2, 0x91, 0x3a, 0xcc, 0xb1, 0x45, 0x53, 0x77, 0x3a, 0x7b, 0x2d, 0xba, 0xee, 0xee, 0xb9, 0xbd, - 0xe0, 0x9e, 0xb9, 0x2e, 0x36, 0x57, 0x2e, 0x2a, 0xdb, 0xed, 0x96, 0x56, 0xec, 0x69, 0xe9, 0x4c, - 0x53, 0xa8, 0x95, 0x3d, 0xec, 0xf7, 0xb2, 0x30, 0xa1, 0xcc, 0x27, 0x72, 0x19, 0x0a, 0x55, 0x7f, - 0xdd, 0x6d, 0x1c, 0x84, 0x91, 0xa1, 0xa6, 0x1e, 0x1f, 0x2d, 0x8d, 0x3b, 0xbe, 0xd5, 0x42, 0xa0, - 0x19, 0x16, 0x93, 0x15, 0x98, 0xe2, 0x7f, 0xc9, 0xf8, 0xd8, 0xd9, 0xc8, 0x36, 0x8d, 0x23, 0xcb, - 0xc8, 0xd8, 0xea, 0xbe, 0xa6, 0x91, 0x90, 0xaf, 0x00, 0x70, 0x00, 0xfa, 0x12, 0xe6, 0x86, 0xf7, - 0x82, 0x14, 0x15, 0xa4, 0x78, 0x11, 0x2a, 0x0c, 0xc9, 0xd7, 0x78, 0x2c, 0x48, 0x39, 0xff, 0xf3, - 0xc3, 0xbb, 0x71, 0x32, 0xfe, 0x56, 0xba, 0x37, 0xb9, 0xca, 0x52, 0x04, 0xb1, 0x5b, 0x34, 0x69, - 0xc3, 0x7d, 0x40, 0xbd, 0xc3, 0x52, 0x80, 0x88, 0x0a, 0x86, 0xf1, 0xdf, 0x67, 0x94, 0x55, 0x43, - 0x36, 0x30, 0x47, 0x1b, 0x9f, 0x11, 0xc2, 0xc2, 0x22, 0x14, 0xe6, 0x25, 0xdc, 0xa4, 0xbb, 0x2b, - 0xcf, 0x0a, 0xd3, 0xc8, 0xb9, 0x70, 0x5e, 0xc5, 0x72, 0xb7, 0x71, 0x20, 0x79, 0x1f, 0xf2, 0xd8, - 0x75, 0xc7, 0xa7, 0xf4, 0x97, 0xe7, 0x69, 0x9e, 0xf5, 0x19, 0x7e, 0x08, 0x52, 0x92, 0xcf, 0x08, - 0x3f, 0x2c, 0xde, 0xf9, 0xd3, 0xca, 0xa1, 0xc8, 0xda, 0x11, 0x1e, 0xa4, 0x51, 0x40, 0x01, 0x65, - 0xf6, 0xfc, 0xb5, 0x2c, 0x14, 0xe3, 0x6b, 0x95, 0xbc, 0x07, 0x93, 0xf2, 0xa4, 0xc3, 0x24, 0xbe, - 0xec, 0x2b, 0x27, 0x45, 0xc0, 0x66, 0x79, 0xdc, 0xc5, 0x73, 0xf8, 0xaa, 0x04, 0x4c, 0xea, 0xd8, - 0x12, 0x01, 0x7e, 0x94, 0x55, 0x12, 0xb8, 0x41, 0x37, 0x16, 0x4e, 0x50, 0xa2, 0x91, 0x37, 0x20, - 0x77, 0xf7, 0x66, 0x49, 0x18, 0xfd, 0xcb, 0x2d, 0xe9, 0xee, 0xcd, 0x12, 0x5f, 0xcd, 0xdc, 0xa8, - 0x49, 0x37, 0xb1, 0x62, 0xf8, 0x64, 0x5d, 0x89, 0xd6, 0x39, 0xaa, 0x65, 0xd4, 0x91, 0xe0, 0xf0, - 0xe3, 0x8e, 0x0f, 0xdb, 0xc9, 0xb3, 0x03, 0x8b, 0x98, 0x78, 0xff, 0x7e, 0x0e, 0xc6, 0xc3, 0xfa, - 0x09, 0x01, 0x14, 0xaa, 0xc4, 0x4d, 0x06, 0xff, 0x26, 0x67, 0xa1, 0x20, 0xe5, 0x28, 0x61, 0xfb, - 0x3f, 0xe6, 0x0b, 0x19, 0x6a, 0x01, 0xa4, 0xc0, 0xc4, 0x97, 0xb9, 0x29, 0x7f, 0x92, 0x6b, 0x10, - 0x4a, 0x43, 0xfd, 0xc4, 0xa6, 0x3c, 0x1b, 0x30, 0x33, 0x44, 0x23, 0xd3, 0x90, 0x75, 0x78, 0x9c, - 0x95, 0x71, 0x33, 0xeb, 0x34, 0xc9, 0x7b, 0x50, 0xb0, 0x9b, 0x4d, 0xda, 0xb4, 0x6c, 0x69, 0xaa, - 0x30, 0x68, 0xd2, 0x14, 0x18, 0x37, 0x7e, 0x08, 0x20, 0x55, 0x29, 0x20, 0x25, 0x18, 0x6f, 0xd9, - 0xdc, 0xec, 0xa9, 0x39, 0xc4, 0x89, 0x12, 0x71, 0x28, 0x30, 0xb2, 0x7b, 0x3e, 0x6d, 0x92, 0x97, - 0x21, 0xcf, 0x46, 0x53, 0x1c, 0x21, 0x52, 0x7c, 0x63, 0x83, 0xc9, 0x3b, 0x6c, 0xed, 0x19, 0x13, - 0x11, 0xc8, 0x8b, 0x90, 0xeb, 0x2d, 0xef, 0x8a, 0xc3, 0xa1, 0x18, 0x45, 0xce, 0x0d, 0xd1, 0x58, - 0x31, 0xb9, 0x0e, 0x85, 0x87, 0x7a, 0xd0, 0xd5, 0x53, 0xb1, 0x61, 0x0c, 0xf1, 0x43, 0xc4, 0x95, - 0x02, 0x8c, 0xf2, 0x83, 0xc0, 0x78, 0x1e, 0x20, 0xaa, 0x3a, 0xe9, 0xa2, 0x61, 0x7c, 0x05, 0xc6, - 0xc3, 0x2a, 0xc9, 0x39, 0x80, 0x03, 0x7a, 0x68, 0xed, 0xdb, 0x9d, 0x66, 0x8b, 0xcb, 0x77, 0x93, - 0xe6, 0xf8, 0x01, 0x3d, 0x5c, 0x43, 0x00, 0x39, 0x03, 0x63, 0x5d, 0x36, 0xaa, 0x62, 0xea, 0x4e, - 0x9a, 0xa3, 0xdd, 0xde, 0x0e, 0x9b, 0xa1, 0x0b, 0x30, 0x86, 0x9a, 0x37, 0xb1, 0xd0, 0xa6, 0x4c, - 0xf9, 0xd3, 0xf8, 0xcf, 0xb3, 0x98, 0x1c, 0x40, 0x69, 0x27, 0xb9, 0x00, 0x53, 0x0d, 0x8f, 0xe2, - 0x99, 0x63, 0x33, 0x49, 0x4a, 0xd4, 0x33, 0x19, 0x01, 0xab, 0x4d, 0x72, 0x11, 0x66, 0x44, 0x42, - 0x6c, 0xd6, 0xa0, 0xc6, 0x8e, 0x88, 0x90, 0x3c, 0x69, 0x4e, 0x71, 0xf0, 0x1d, 0x7a, 0x58, 0xde, - 0xc1, 0xf8, 0x40, 0x45, 0x35, 0xbc, 0x63, 0x10, 0xe6, 0x31, 0x34, 0x67, 0x14, 0x38, 0x5a, 0x20, - 0x9d, 0x86, 0x51, 0xdb, 0xde, 0xeb, 0x39, 0x3c, 0x8e, 0xc7, 0xa4, 0x29, 0x7e, 0x91, 0x57, 0x61, - 0xd6, 0x77, 0xf6, 0x3a, 0x76, 0xd0, 0xf3, 0x44, 0x76, 0x06, 0xea, 0xe1, 0x94, 0x9a, 0x32, 0x8b, - 0x61, 0x41, 0x99, 0xc3, 0xc9, 0xeb, 0x40, 0xd4, 0xfa, 0xdc, 0x9d, 0x8f, 0x68, 0x83, 0x4f, 0xb5, - 0x49, 0x73, 0x56, 0x29, 0xd9, 0xc4, 0x02, 0xf2, 0x02, 0x4c, 0x7a, 0xd4, 0x47, 0x29, 0x0e, 0xbb, - 0x0d, 0x73, 0xe7, 0x98, 0x13, 0x12, 0xc6, 0xfa, 0xee, 0x12, 0x14, 0x95, 0xee, 0xc0, 0x08, 0x9a, - 0x3c, 0x3c, 0xb0, 0x39, 0x1d, 0xc1, 0xcd, 0x6e, 0xb5, 0x69, 0xac, 0xc0, 0x6c, 0x62, 0xe5, 0x2a, - 0xb9, 0x67, 0xf9, 0x4e, 0x34, 0x38, 0xf7, 0xac, 0xd1, 0x81, 0x49, 0x75, 0x27, 0x3e, 0x26, 0x4a, - 0xf5, 0x69, 0xf4, 0x03, 0xe7, 0xdb, 0xd4, 0xe8, 0xe3, 0xa3, 0xa5, 0xac, 0xd3, 0x44, 0xef, 0xef, - 0x4b, 0x50, 0x90, 0x42, 0x83, 0x38, 0xab, 0x51, 0x73, 0x2a, 0xa4, 0xd5, 0x43, 0x33, 0x2c, 0x35, - 0x5e, 0x86, 0x31, 0xb1, 0xd9, 0x0e, 0xd6, 0x97, 0x1a, 0x3f, 0x92, 0x85, 0x19, 0x93, 0xb2, 0xad, - 0x80, 0xf2, 0xd0, 0xf4, 0x4f, 0xed, 0xf5, 0x2d, 0x3d, 0x9a, 0x98, 0xf6, 0x6d, 0x03, 0x82, 0xc2, - 0xff, 0xdd, 0x0c, 0xcc, 0xa5, 0xe0, 0x7e, 0xac, 0x04, 0x66, 0x37, 0x60, 0xbc, 0xe2, 0xd8, 0xad, - 0x52, 0xb3, 0x19, 0x3a, 0x85, 0xa3, 0xa8, 0xd9, 0x64, 0x33, 0xcd, 0x66, 0x50, 0xf5, 0xd8, 0x0d, - 0x51, 0xc9, 0x2b, 0x62, 0x52, 0x44, 0xc9, 0xa3, 0x71, 0x52, 0x7c, 0xef, 0x68, 0x09, 0x78, 0x9b, - 0xa2, 0x24, 0x99, 0x18, 0xe1, 0x8f, 0x03, 0x23, 0xa3, 0xed, 0xa7, 0x76, 0xe8, 0xd2, 0x23, 0xfc, - 0xc5, 0x3f, 0x6f, 0xa8, 0xb8, 0xf0, 0x3f, 0x9e, 0x85, 0xd3, 0xe9, 0x84, 0x1f, 0x37, 0x17, 0x1d, - 0x46, 0xe4, 0x57, 0xa2, 0x92, 0x62, 0x2e, 0x3a, 0x1e, 0xbe, 0x1f, 0xf1, 0x23, 0x04, 0xb2, 0x0b, - 0x53, 0xeb, 0xb6, 0x1f, 0xac, 0x51, 0xdb, 0x0b, 0x76, 0xa8, 0x1d, 0x0c, 0x21, 0x7b, 0xbe, 0x28, - 0x1f, 0x11, 0xf1, 0xf8, 0xdb, 0x97, 0x94, 0x31, 0xe9, 0x50, 0x67, 0x1b, 0x4e, 0x94, 0xfc, 0x10, - 0x13, 0xe5, 0xeb, 0x30, 0x53, 0xa7, 0x6d, 0xbb, 0xbb, 0xef, 0x7a, 0xd2, 0xeb, 0xef, 0x0a, 0x4c, - 0x85, 0xa0, 0xd4, 0xd9, 0xa2, 0x17, 0x6b, 0xf8, 0x4a, 0x47, 0x44, 0x5b, 0x89, 0x5e, 0x6c, 0xfc, - 0xf5, 0x2c, 0x9c, 0x29, 0x35, 0x84, 0x6d, 0x8f, 0x28, 0x90, 0x26, 0x88, 0x9f, 0x72, 0xdd, 0xe4, - 0x2a, 0x8c, 0xdf, 0xb5, 0x1f, 0xad, 0x53, 0xdb, 0xa7, 0xbe, 0xc8, 0x04, 0xc4, 0x05, 0x35, 0xfb, - 0x51, 0x64, 0xf2, 0x62, 0x46, 0x38, 0xea, 0x4d, 0x36, 0xff, 0x09, 0x6f, 0xb2, 0x06, 0x8c, 0xae, - 0xb9, 0xad, 0xa6, 0x38, 0xc6, 0xc4, 0xf3, 0xda, 0x3e, 0x42, 0x4c, 0x51, 0xc2, 0x2e, 0x80, 0xd3, - 0x61, 0x8b, 0xb1, 0x09, 0x9f, 0x7a, 0x97, 0x5c, 0x84, 0x31, 0xac, 0xa8, 0x5a, 0x51, 0x0f, 0x8d, - 0x16, 0xc5, 0x7c, 0x2e, 0x4d, 0x53, 0x16, 0xaa, 0x3d, 0x31, 0xf2, 0xc9, 0x7a, 0xc2, 0xf8, 0x0f, - 0xf0, 0xe5, 0x4e, 0xfd, 0x4a, 0x76, 0x12, 0x29, 0x0d, 0xc9, 0x0c, 0xd9, 0x90, 0xec, 0x13, 0x1b, - 0x92, 0x5c, 0xdf, 0x21, 0xf9, 0x56, 0x16, 0x26, 0xc2, 0xc6, 0x7e, 0x9f, 0x85, 0xc6, 0x0d, 0xbf, - 0x6b, 0x28, 0x4f, 0xfd, 0xba, 0xb2, 0x57, 0x08, 0x87, 0xf8, 0xf7, 0x61, 0x54, 0x2c, 0xa6, 0x4c, - 0xcc, 0x14, 0x2f, 0x36, 0xba, 0x2b, 0xd3, 0x82, 0xf5, 0x28, 0x0e, 0xa8, 0x6f, 0x0a, 0x3a, 0x0c, - 0x85, 0xb0, 0x4d, 0x77, 0xc4, 0x43, 0xee, 0x53, 0x7b, 0x46, 0xa5, 0x87, 0x42, 0x88, 0x3e, 0x6c, - 0xa8, 0xd3, 0xe9, 0x68, 0x04, 0x8a, 0x71, 0x92, 0xe3, 0x83, 0x0f, 0xd7, 0x7a, 0x3b, 0x5c, 0x0a, - 0xe7, 0xc1, 0x87, 0xbb, 0xbd, 0x1d, 0x93, 0xc1, 0xd0, 0xce, 0xc3, 0x73, 0x1e, 0xe0, 0x57, 0x4f, - 0x0a, 0x3b, 0x0f, 0xcf, 0x79, 0xa0, 0xd9, 0x79, 0x78, 0xce, 0x03, 0xbc, 0xfa, 0xae, 0xd7, 0xd1, - 0x7b, 0x13, 0x45, 0x70, 0x71, 0xf5, 0x6d, 0xf9, 0xf1, 0xa4, 0x1d, 0x12, 0x8d, 0x1d, 0x95, 0x2b, - 0xd4, 0xf6, 0x44, 0xa0, 0x5c, 0xb1, 0x9d, 0xe1, 0x51, 0xb9, 0x83, 0x60, 0x9e, 0x0f, 0xd7, 0x54, - 0x91, 0x48, 0x0b, 0x88, 0xf2, 0x53, 0x2e, 0xe0, 0xe3, 0x6f, 0x83, 0xd2, 0x8c, 0x66, 0x5e, 0x65, - 0x6d, 0xa9, 0xab, 0x39, 0x85, 0xef, 0x93, 0x54, 0x40, 0xd6, 0x44, 0xf4, 0x2f, 0x54, 0x79, 0x14, - 0x8e, 0x65, 0x26, 0xdd, 0x9b, 0x81, 0x47, 0x07, 0x0b, 0x15, 0x1f, 0x11, 0x13, 0xf2, 0x2e, 0x4c, - 0xa8, 0x3e, 0xb9, 0xdc, 0x73, 0xf4, 0x39, 0x1e, 0xd0, 0xa9, 0x4f, 0x4a, 0x36, 0x95, 0x80, 0xec, - 0xc0, 0x99, 0xb2, 0xdb, 0xf1, 0x7b, 0x6d, 0x19, 0x3a, 0x2a, 0x0a, 0x58, 0x09, 0x61, 0x4a, 0xf5, - 0x17, 0x1b, 0x02, 0x45, 0xb8, 0x80, 0x4a, 0x3b, 0x67, 0xfd, 0x02, 0xd2, 0x8f, 0x11, 0xd9, 0x82, - 0x09, 0x54, 0xe2, 0x09, 0x43, 0xaa, 0x09, 0x7d, 0xdb, 0x88, 0x4a, 0x2a, 0x6c, 0x61, 0xf0, 0xd8, - 0x27, 0x76, 0xbb, 0x25, 0xcd, 0x6c, 0x55, 0x65, 0xa4, 0x82, 0x6c, 0x7c, 0x46, 0x9d, 0xdf, 0x42, - 0xdc, 0x18, 0x38, 0xbf, 0x8d, 0xff, 0x66, 0x14, 0x66, 0x62, 0xd5, 0x89, 0xfb, 0x4f, 0x26, 0x71, - 0xff, 0xa9, 0x03, 0x70, 0xa5, 0xd7, 0x90, 0xda, 0x29, 0xe9, 0xa1, 0x31, 0x21, 0x3c, 0x9c, 0xc2, - 0xb1, 0x52, 0xd8, 0x30, 0xa6, 0x7c, 0x26, 0x0c, 0xa9, 0x2d, 0x0c, 0x99, 0xf2, 0xc9, 0xa4, 0x30, - 0x8d, 0xd8, 0x90, 0x25, 0x18, 0xc1, 0xc0, 0x60, 0xaa, 0x83, 0x8c, 0xc3, 0x00, 0x26, 0x87, 0x93, - 0x0b, 0x30, 0xca, 0x0e, 0xe7, 0x6a, 0x45, 0x2c, 0x2e, 0xdc, 0xb3, 0xd8, 0xe9, 0xcd, 0x4e, 0x42, - 0x51, 0x44, 0x6e, 0xc0, 0x24, 0xff, 0x4b, 0xf8, 0x86, 0x8f, 0xea, 0x16, 0x44, 0x96, 0xd3, 0x94, - 0xee, 0xe1, 0x1a, 0x1e, 0x93, 0x5a, 0xeb, 0xbd, 0x1d, 0x9e, 0xa1, 0x5c, 0x44, 0x92, 0x44, 0xa9, - 0xd5, 0xe7, 0x40, 0xcc, 0xa0, 0x1c, 0x22, 0xb0, 0x33, 0x52, 0x98, 0xa9, 0x16, 0xf0, 0xae, 0x82, - 0x67, 0x24, 0x37, 0x4f, 0x35, 0x45, 0x09, 0xb9, 0xcc, 0x95, 0xcc, 0x28, 0x6e, 0xf0, 0xe4, 0x37, - 0xa8, 0xc1, 0xc5, 0x0b, 0x2f, 0xca, 0x1c, 0x61, 0x31, 0xab, 0x9c, 0xfd, 0xbd, 0xda, 0xb6, 0x9d, - 0x96, 0x98, 0xae, 0x58, 0x39, 0xe2, 0x52, 0x06, 0x35, 0x23, 0x04, 0xf2, 0x36, 0x4c, 0xb3, 0x1f, - 0x65, 0xb7, 0xdd, 0x76, 0x3b, 0xc8, 0x7e, 0x22, 0x0a, 0x33, 0x82, 0x24, 0x0d, 0x2c, 0xe2, 0xb5, - 0xc4, 0x70, 0xd9, 0x3e, 0x85, 0x0f, 0x58, 0x3d, 0xae, 0xfe, 0x9e, 0x8c, 0xf6, 0x29, 0x24, 0xf5, - 0x39, 0xdc, 0x54, 0x91, 0xc8, 0x9b, 0x30, 0xc5, 0x7e, 0xde, 0x72, 0x1e, 0x50, 0x5e, 0xe1, 0x54, - 0xf4, 0xa4, 0x8a, 0x54, 0x7b, 0xac, 0x84, 0xd7, 0xa7, 0x63, 0x92, 0x2f, 0xc2, 0x29, 0xe4, 0xd4, - 0x70, 0xbb, 0xb4, 0x59, 0xda, 0xdd, 0x75, 0x5a, 0x0e, 0x37, 0xe9, 0xe0, 0x5e, 0xd0, 0xa8, 0x8d, - 0xe4, 0x15, 0x23, 0x86, 0x65, 0x47, 0x28, 0x66, 0x3a, 0x25, 0xd9, 0x86, 0x62, 0xb9, 0xe7, 0x07, - 0x6e, 0xbb, 0x14, 0x04, 0x9e, 0xb3, 0xd3, 0x0b, 0xa8, 0xbf, 0x30, 0xa3, 0xf9, 0x0a, 0xb3, 0xc5, - 0x11, 0x16, 0x72, 0x3d, 0x43, 0x03, 0x29, 0x2c, 0x3b, 0x24, 0x31, 0x13, 0x4c, 0x8c, 0x7f, 0x96, - 0x81, 0x29, 0x8d, 0x94, 0xbc, 0x01, 0x93, 0x37, 0x3d, 0x87, 0x76, 0x9a, 0xad, 0x43, 0xe5, 0x02, - 0x84, 0xd2, 0xf1, 0xae, 0x80, 0xf3, 0xaf, 0xd6, 0xd0, 0x42, 0xfd, 0x41, 0x36, 0xd5, 0xde, 0xea, - 0x2a, 0xf7, 0xd3, 0x12, 0x13, 0x34, 0x17, 0x05, 0x2f, 0xc0, 0x09, 0x2a, 0x66, 0xa7, 0x82, 0x42, - 0xde, 0x81, 0x51, 0xfe, 0xd4, 0x25, 0x8c, 0x7f, 0xce, 0xa6, 0x7d, 0x26, 0xf7, 0x09, 0xc4, 0x89, - 0x88, 0x86, 0x06, 0xbe, 0x29, 0x88, 0x8c, 0x9f, 0xce, 0x00, 0x49, 0xa2, 0x1e, 0xa3, 0x4f, 0x39, - 0xd6, 0x80, 0xe1, 0xfd, 0x70, 0x35, 0xe6, 0x34, 0xed, 0x21, 0xab, 0x89, 0x17, 0xf0, 0x8e, 0x17, - 0xab, 0x4e, 0x55, 0xf0, 0xf0, 0x62, 0xe3, 0x2f, 0x64, 0x01, 0x22, 0x6c, 0xf2, 0x79, 0x9e, 0x7f, - 0xe1, 0x8b, 0x3d, 0xbb, 0xe5, 0xec, 0x3a, 0x7a, 0x40, 0x32, 0x64, 0xf2, 0x75, 0x59, 0x62, 0xea, - 0x88, 0xe4, 0x3d, 0x98, 0xa9, 0xd7, 0x74, 0x5a, 0x25, 0xd6, 0xbc, 0xdf, 0xb5, 0x62, 0xe4, 0x71, - 0x6c, 0x34, 0xf2, 0x53, 0x47, 0x83, 0x1b, 0xf9, 0xf1, 0x81, 0x10, 0x25, 0x6c, 0x63, 0xa9, 0xd7, - 0x30, 0xe9, 0x7d, 0x93, 0x36, 0xab, 0x15, 0xb1, 0x4b, 0x61, 0xeb, 0xfc, 0xae, 0xd5, 0xe5, 0x05, - 0x98, 0x69, 0x5d, 0xc3, 0x8b, 0x3a, 0x72, 0xa4, 0x8f, 0xdf, 0xdf, 0xcf, 0xa0, 0x3a, 0xa9, 0xed, - 0x06, 0x54, 0xdc, 0xa2, 0x9f, 0x5a, 0x79, 0x3a, 0x7a, 0x27, 0x1d, 0xd1, 0xdc, 0x99, 0xb4, 0xaf, - 0x13, 0xaf, 0xf4, 0xd7, 0x23, 0xe1, 0x97, 0xbf, 0x98, 0xa6, 0xbc, 0xeb, 0xff, 0x42, 0x06, 0x4e, - 0xa5, 0xd2, 0x92, 0x2b, 0x00, 0x91, 0xae, 0x42, 0xf4, 0x12, 0x4f, 0x78, 0x1f, 0x42, 0x4d, 0x05, - 0x83, 0x7c, 0x39, 0xae, 0x65, 0x38, 0xfe, 0x20, 0x5c, 0x94, 0x21, 0x59, 0x74, 0x2d, 0x43, 0x8a, - 0x6e, 0xc1, 0xf8, 0xbb, 0x39, 0x98, 0x55, 0x22, 0x02, 0xf0, 0xb6, 0x1e, 0x63, 0x74, 0x79, 0x00, - 0x93, 0xec, 0x6b, 0x9c, 0x86, 0xf0, 0xa9, 0xe0, 0x6f, 0xfa, 0xaf, 0x24, 0x1c, 0x52, 0x04, 0xb7, - 0x2b, 0x2a, 0x32, 0x0f, 0x94, 0x84, 0x5b, 0x27, 0xea, 0x70, 0x1b, 0x49, 0xdf, 0x0a, 0x8d, 0x39, - 0xf1, 0x61, 0xaa, 0x72, 0xd8, 0xb1, 0xdb, 0x61, 0x6d, 0xfc, 0x6d, 0xff, 0xd5, 0xbe, 0xb5, 0x69, - 0xd8, 0xbc, 0xba, 0xc8, 0x74, 0x9b, 0x97, 0xa5, 0x78, 0x0d, 0x6a, 0x54, 0x8b, 0xef, 0xc1, 0x6c, - 0xa2, 0xd1, 0x27, 0x8a, 0xd9, 0xb4, 0x0d, 0x24, 0xd9, 0x8e, 0x14, 0x0e, 0xaf, 0xea, 0x11, 0xc1, - 0x4e, 0x85, 0xcf, 0x78, 0x98, 0xb9, 0x95, 0x5b, 0x0a, 0x2c, 0xab, 0x11, 0x9d, 0x7e, 0x26, 0xab, - 0x3a, 0x05, 0x3d, 0xed, 0xab, 0xee, 0x7d, 0xed, 0x96, 0xf5, 0x7c, 0xbf, 0x31, 0x1d, 0xea, 0x36, - 0xfb, 0xdd, 0x1c, 0x9c, 0xe9, 0x43, 0x49, 0x0e, 0xe3, 0x93, 0x88, 0xdf, 0x6e, 0xaf, 0x0d, 0xae, - 0xf0, 0x49, 0x4c, 0x25, 0xf2, 0x79, 0xee, 0x16, 0xdc, 0xc0, 0x8c, 0xa3, 0xe2, 0x5e, 0xc7, 0x93, - 0x55, 0x87, 0xd0, 0xb8, 0x3f, 0x30, 0x87, 0x92, 0xf7, 0x60, 0x04, 0x3d, 0xc2, 0x62, 0x11, 0x89, - 0x18, 0x06, 0xc2, 0x95, 0xf0, 0x4d, 0xec, 0xa7, 0x16, 0xbe, 0x89, 0x01, 0xc8, 0xe7, 0x20, 0x57, - 0xda, 0xae, 0x8b, 0x71, 0x99, 0x56, 0xc9, 0xb7, 0xeb, 0x51, 0xd4, 0x68, 0x5b, 0x0b, 0xef, 0xcc, - 0x28, 0x18, 0xe1, 0xad, 0x72, 0x4d, 0x8c, 0x8a, 0x4a, 0x78, 0xab, 0x5c, 0x8b, 0x08, 0xf7, 0x1a, - 0x5a, 0x84, 0x87, 0x5b, 0xe5, 0xda, 0xa7, 0x37, 0xed, 0xff, 0x72, 0x96, 0xfb, 0x32, 0xf3, 0x0f, - 0x7b, 0x0f, 0x26, 0xb5, 0x88, 0x8d, 0x99, 0x48, 0x1e, 0x0b, 0x03, 0x63, 0xc6, 0x8c, 0x21, 0x34, - 0x02, 0x19, 0x7f, 0x9d, 0xfd, 0x46, 0x89, 0x57, 0x35, 0x3b, 0x08, 0x39, 0xa0, 0x4c, 0x1c, 0x8f, - 0xbf, 0x1e, 0x92, 0x90, 0xeb, 0x50, 0xd8, 0xa2, 0x1d, 0xbb, 0x13, 0x84, 0x8a, 0x36, 0x34, 0x68, - 0x0c, 0x10, 0xa6, 0x4b, 0x0d, 0x21, 0x22, 0x1a, 0xdf, 0xf5, 0x76, 0xfc, 0x86, 0xe7, 0x60, 0xcc, - 0x83, 0xf0, 0x2c, 0xe6, 0xc6, 0x77, 0x4a, 0x89, 0xce, 0x20, 0x46, 0x64, 0xfc, 0x4c, 0x06, 0xc6, - 0xc4, 0x40, 0xf2, 0xbc, 0x19, 0x7b, 0xd1, 0x59, 0x22, 0xf2, 0x66, 0xec, 0x39, 0xf1, 0xbc, 0x19, - 0x7b, 0x3c, 0xb0, 0xc0, 0xb8, 0x70, 0xcb, 0x0b, 0x9f, 0x9c, 0x78, 0x9a, 0x65, 0x0e, 0xd4, 0xab, - 0x8d, 0x50, 0x87, 0xf5, 0x6a, 0x30, 0xfe, 0xa6, 0x68, 0xd9, 0xad, 0x72, 0x8d, 0x2c, 0x43, 0x61, - 0xdd, 0x6d, 0xd8, 0xca, 0x39, 0x87, 0xdb, 0x4e, 0x4b, 0xc0, 0xd4, 0x0e, 0x92, 0x78, 0xac, 0x7d, - 0x35, 0xcf, 0x15, 0x77, 0x19, 0xa5, 0x7d, 0x5d, 0x0e, 0x8c, 0xb5, 0x2f, 0x44, 0x1d, 0xba, 0x7d, - 0x34, 0x65, 0x93, 0xb8, 0x7f, 0x1d, 0x03, 0x53, 0xdf, 0x56, 0xbd, 0x45, 0x44, 0x91, 0xdc, 0x29, - 0x16, 0xfb, 0xed, 0x14, 0xf7, 0xaf, 0x9b, 0x29, 0x54, 0xf8, 0x5e, 0x13, 0x81, 0xeb, 0xd4, 0x7b, - 0xf0, 0x14, 0xef, 0xd2, 0xe9, 0xef, 0x35, 0xf1, 0xcf, 0x1b, 0x6a, 0x93, 0xfe, 0x2f, 0xb3, 0x70, - 0x3a, 0x9d, 0x50, 0xfd, 0x96, 0xcc, 0x80, 0x6f, 0xb9, 0x04, 0x85, 0x35, 0xd7, 0x0f, 0x14, 0xfb, - 0x27, 0x54, 0x2b, 0xef, 0x0b, 0x98, 0x19, 0x96, 0xb2, 0x3b, 0x37, 0xfb, 0x3b, 0x5c, 0x9e, 0xc8, - 0x0f, 0x3d, 0x78, 0xd9, 0x9d, 0x9b, 0x17, 0x91, 0x5b, 0x50, 0x30, 0x85, 0xb7, 0x42, 0xac, 0x6b, - 0x24, 0x38, 0x94, 0xa6, 0x88, 0x27, 0x20, 0x5a, 0xe0, 0x4c, 0x01, 0x23, 0x25, 0x18, 0x13, 0xa3, - 0x1f, 0x7b, 0x92, 0x4c, 0x99, 0x32, 0x7a, 0x2c, 0x5b, 0x49, 0xc7, 0x76, 0x14, 0x7c, 0x5c, 0xaa, - 0x56, 0xa4, 0xe3, 0x01, 0xee, 0x28, 0xfc, 0xf1, 0x49, 0x37, 0x35, 0x0b, 0x11, 0x8d, 0x1f, 0xc9, - 0x02, 0x6c, 0xd3, 0x9d, 0xa7, 0x3b, 0xd1, 0xdb, 0xe7, 0xb4, 0x19, 0xa6, 0x58, 0x5e, 0x0c, 0x9f, - 0xe7, 0x6d, 0x13, 0x2d, 0x20, 0x86, 0xcf, 0xf2, 0xb6, 0x04, 0x23, 0x5c, 0xdb, 0xa9, 0x26, 0x52, - 0x42, 0x35, 0x27, 0x87, 0x1b, 0x3b, 0x30, 0x7f, 0x8b, 0x06, 0x91, 0x7a, 0x4b, 0x3e, 0x69, 0x0d, - 0x66, 0xfb, 0x1a, 0x8c, 0x0b, 0xfc, 0x70, 0xff, 0xe2, 0xba, 0x18, 0xe1, 0x14, 0x8f, 0xba, 0x18, - 0x89, 0xc0, 0x76, 0xa3, 0x0a, 0x6d, 0xd1, 0x80, 0x7e, 0xba, 0xd5, 0xd4, 0x81, 0xf0, 0x4f, 0xc1, - 0x2f, 0x1b, 0xae, 0x86, 0x63, 0xfb, 0xe7, 0x3e, 0x9c, 0x0a, 0xdb, 0xfe, 0x24, 0xf9, 0x5e, 0x65, - 0x57, 0x4a, 0x11, 0x06, 0x36, 0xe2, 0x38, 0xc0, 0xa6, 0xe1, 0x11, 0x2c, 0x4a, 0x82, 0x6d, 0x27, - 0x34, 0x21, 0x1b, 0x8a, 0x96, 0xbc, 0x0d, 0x13, 0x0a, 0x8d, 0x08, 0x63, 0x8a, 0xea, 0xcf, 0x87, - 0x4e, 0xb0, 0x6f, 0xf9, 0x1c, 0xae, 0xaa, 0x3f, 0x15, 0x74, 0xe3, 0x43, 0x78, 0x36, 0x74, 0x55, - 0x48, 0xa9, 0x3a, 0xc6, 0x3c, 0x73, 0x32, 0xe6, 0x1b, 0xd1, 0x67, 0x55, 0x3b, 0xa1, 0x7b, 0xa1, - 0xe4, 0x4d, 0xd4, 0xcf, 0x12, 0x1f, 0xf3, 0x5c, 0xc2, 0x61, 0x51, 0xf1, 0x4b, 0x34, 0xde, 0x52, - 0x1a, 0x9b, 0xc2, 0x50, 0x23, 0xce, 0xc4, 0x89, 0x7f, 0x24, 0x0b, 0x33, 0x9b, 0xd5, 0x4a, 0x39, - 0xb4, 0x6a, 0xf9, 0x3e, 0xcb, 0x42, 0xa7, 0x7d, 0x5b, 0xff, 0xfd, 0xc6, 0xb8, 0x07, 0x73, 0xb1, - 0x6e, 0x40, 0xd1, 0xe1, 0x5d, 0x6e, 0x4b, 0x1f, 0x82, 0xa5, 0xd8, 0x70, 0x3a, 0x8d, 0xfd, 0xfd, - 0xeb, 0x66, 0x0c, 0xdb, 0xf8, 0x17, 0xe3, 0x31, 0xbe, 0x62, 0x0b, 0x7b, 0x0d, 0xc6, 0xab, 0xbe, - 0xdf, 0xa3, 0xde, 0x3d, 0x73, 0x5d, 0x55, 0x15, 0x38, 0x08, 0xb4, 0x7a, 0x5e, 0xcb, 0x8c, 0x10, - 0xc8, 0x65, 0x28, 0x88, 0xc8, 0x9e, 0x72, 0x4f, 0x40, 0xad, 0x6d, 0x18, 0x18, 0xd4, 0x0c, 0x8b, - 0xc9, 0x1b, 0x30, 0xc9, 0xff, 0xe6, 0xb3, 0x4d, 0x74, 0x38, 0x2a, 0x07, 0x05, 0x3a, 0x9f, 0x9d, - 0xa6, 0x86, 0x46, 0x5e, 0x81, 0x5c, 0xa9, 0x6c, 0x0a, 0x75, 0x90, 0x90, 0x1b, 0x31, 0xb7, 0x6c, - 0x8f, 0xea, 0x97, 0x88, 0xb2, 0xc9, 0xa4, 0x3f, 0xa1, 0x4a, 0x92, 0xe9, 0x1c, 0x78, 0x0a, 0x5c, - 0x01, 0x8b, 0x1d, 0x66, 0x08, 0x23, 0x57, 0x61, 0xac, 0xe2, 0xf8, 0xdd, 0x96, 0x7d, 0x28, 0xf4, - 0xd8, 0x3c, 0xc5, 0x0a, 0x07, 0x69, 0x1e, 0xca, 0x1c, 0x44, 0x2e, 0xcb, 0xd4, 0x13, 0x85, 0xc8, - 0x24, 0xbf, 0x4f, 0x7e, 0x89, 0xd7, 0x60, 0x54, 0xc4, 0xbf, 0x1c, 0x57, 0x22, 0x5b, 0xc7, 0xe3, - 0x5e, 0x0a, 0x9c, 0xa4, 0xd3, 0x1c, 0x3c, 0x49, 0xa7, 0xb9, 0x1d, 0x38, 0x73, 0x0b, 0xb5, 0x37, - 0x7a, 0xa4, 0x8c, 0x7b, 0x66, 0x55, 0xe8, 0xc3, 0xf1, 0xc5, 0x87, 0x2b, 0x78, 0xe2, 0xc1, 0x36, - 0xac, 0x9e, 0xa7, 0x66, 0x0c, 0xeb, 0xc7, 0x88, 0x7c, 0x09, 0xe6, 0xd3, 0x8a, 0x84, 0xd6, 0x1c, - 0x63, 0x42, 0xa4, 0x57, 0xa0, 0xc6, 0x84, 0x48, 0xe3, 0x40, 0xd6, 0xa1, 0xc8, 0xe1, 0xa5, 0x66, - 0xdb, 0xe9, 0x70, 0xcd, 0xff, 0x54, 0x94, 0x6a, 0x5f, 0x70, 0xb5, 0x59, 0x21, 0x7f, 0x01, 0xd0, - 0xbc, 0x2a, 0x62, 0x94, 0xe4, 0x27, 0x33, 0xec, 0x36, 0xc7, 0xa3, 0x45, 0xde, 0x33, 0xd7, 0x7d, - 0x11, 0x4f, 0xe8, 0x74, 0xe4, 0x30, 0x51, 0x0f, 0x3c, 0xa7, 0xb3, 0x27, 0x3c, 0x26, 0xb6, 0x84, - 0xc7, 0xc4, 0xdb, 0x1f, 0xcb, 0x63, 0x82, 0xb3, 0xf2, 0x1f, 0x1f, 0x2d, 0x4d, 0x7a, 0xa2, 0x4e, - 0x5c, 0x45, 0x5a, 0x0b, 0x30, 0xdb, 0x75, 0xab, 0xe5, 0x3e, 0xbc, 0xd7, 0x79, 0x40, 0x3d, 0x67, - 0xd7, 0xa1, 0x4d, 0xfe, 0x91, 0x33, 0xb8, 0x83, 0xf3, 0x6c, 0xd7, 0x98, 0xbf, 0xbd, 0x17, 0x22, - 0x24, 0x3e, 0x34, 0x95, 0x03, 0xbb, 0x78, 0x4a, 0xab, 0x7c, 0xee, 0x01, 0x58, 0x8c, 0x2e, 0x9e, - 0xd2, 0x84, 0xdf, 0xc2, 0x69, 0xa4, 0x4e, 0x1e, 0x8d, 0x84, 0x5c, 0x85, 0xd1, 0xbb, 0xf6, 0xa3, - 0xd2, 0x1e, 0x15, 0x29, 0x85, 0xa6, 0xe4, 0xf6, 0x87, 0xc0, 0x95, 0xc2, 0xef, 0x70, 0xab, 0xef, - 0x67, 0x4c, 0x81, 0x46, 0xbe, 0x99, 0x81, 0xd3, 0x7c, 0x19, 0xcb, 0xaf, 0xac, 0xd3, 0x20, 0x60, - 0xfd, 0x20, 0x02, 0x0b, 0xc9, 0x80, 0xfc, 0xf5, 0xfa, 0x66, 0x3a, 0x1e, 0xcf, 0xcd, 0x2c, 0x76, - 0x86, 0xb0, 0xe3, 0x7c, 0x51, 0xaa, 0x45, 0x0f, 0x4c, 0xa5, 0x17, 0x16, 0xcd, 0x9f, 0x93, 0x2d, - 0x27, 0xaf, 0xab, 0x8e, 0x6a, 0x39, 0x94, 0x73, 0xc7, 0xda, 0xf6, 0x23, 0xcb, 0xde, 0xa3, 0xda, - 0x3b, 0x69, 0xe8, 0xc1, 0x76, 0xb6, 0x6f, 0xdb, 0xc8, 0x0d, 0x38, 0x23, 0xb3, 0x74, 0xef, 0x07, - 0x41, 0xd7, 0xb7, 0xe4, 0x5d, 0x40, 0x78, 0xb6, 0x99, 0xa7, 0x44, 0xf1, 0x1a, 0x2b, 0x95, 0xd7, - 0x03, 0xdf, 0xf8, 0x6b, 0xe3, 0xfc, 0x4c, 0x2b, 0xf5, 0x82, 0x7d, 0x79, 0x0a, 0x2e, 0xa7, 0xf9, - 0x66, 0x70, 0xa3, 0x31, 0xc5, 0x37, 0x43, 0xf7, 0xc8, 0x90, 0x8f, 0x11, 0xd9, 0xd4, 0xc7, 0x88, - 0xd7, 0x60, 0xbc, 0xbc, 0x4f, 0x1b, 0x07, 0xa1, 0x7d, 0x7c, 0x41, 0x68, 0x7b, 0x19, 0x90, 0x07, - 0x96, 0x8c, 0x10, 0xc8, 0x55, 0x00, 0x74, 0xd6, 0xe2, 0x22, 0x92, 0x12, 0x1c, 0x1a, 0x7d, 0xbb, - 0xc4, 0x3b, 0xbc, 0x82, 0x82, 0xec, 0xeb, 0xe6, 0x4d, 0xf5, 0xe1, 0x9e, 0xb3, 0xf7, 0xbd, 0x5d, - 0x81, 0x1e, 0x21, 0xb0, 0xcf, 0x53, 0x26, 0xba, 0xd8, 0x96, 0x8b, 0x89, 0xd5, 0xa0, 0x22, 0xa1, - 0x4d, 0x9c, 0x34, 0x06, 0xc6, 0x5d, 0x79, 0x52, 0xd8, 0xc4, 0x85, 0x86, 0xc3, 0x66, 0x84, 0x40, - 0x3e, 0x07, 0x63, 0x65, 0xea, 0x05, 0x5b, 0x5b, 0xeb, 0xf8, 0xb6, 0xce, 0x23, 0x28, 0x17, 0x30, - 0xda, 0x6d, 0x10, 0xb4, 0xbe, 0x77, 0xb4, 0x34, 0x15, 0x38, 0x6d, 0x7a, 0x25, 0x1c, 0x60, 0x89, - 0x4d, 0x56, 0xa0, 0xc8, 0x5f, 0x69, 0x23, 0x51, 0x18, 0x37, 0xea, 0x02, 0x3f, 0x36, 0xc4, 0x93, - 0xee, 0x43, 0xba, 0x13, 0xc6, 0xfa, 0x4d, 0xe0, 0x93, 0x55, 0x19, 0x22, 0x5b, 0xfd, 0x48, 0x88, - 0x74, 0x33, 0xf1, 0x09, 0xcc, 0xbe, 0x35, 0x49, 0x41, 0x4a, 0x30, 0x55, 0x76, 0xdb, 0x5d, 0x3b, - 0x70, 0x30, 0xdf, 0xcc, 0xa1, 0xd8, 0x93, 0x51, 0xbf, 0xd4, 0x50, 0x0b, 0xb4, 0x0d, 0x5e, 0x2d, - 0x20, 0x37, 0x61, 0xda, 0x74, 0x7b, 0x6c, 0x90, 0xe4, 0xa5, 0x90, 0x6f, 0xbb, 0xe8, 0xea, 0xec, - 0xb1, 0x12, 0x76, 0x4a, 0x88, 0x1b, 0xa0, 0x16, 0xa9, 0x4c, 0xa3, 0x22, 0x1b, 0x29, 0xda, 0x79, - 0x75, 0xaf, 0x55, 0x23, 0xfe, 0x26, 0x98, 0xa5, 0x28, 0xf6, 0xaf, 0xc3, 0x44, 0xbd, 0xbe, 0xb9, - 0x45, 0xfd, 0xe0, 0x66, 0xcb, 0x7d, 0x88, 0x5b, 0x6d, 0x41, 0x64, 0x42, 0xf0, 0x5d, 0x2b, 0xa0, - 0x7e, 0x60, 0xed, 0xb6, 0xdc, 0x87, 0xa6, 0x8a, 0x45, 0xbe, 0xca, 0xfa, 0x43, 0x11, 0x4c, 0x44, - 0x4c, 0xb6, 0x41, 0xb2, 0x13, 0x6e, 0x68, 0xd1, 0x92, 0x61, 0x12, 0x94, 0xde, 0x59, 0x0a, 0x3a, - 0x3a, 0x7b, 0xb0, 0xeb, 0x6c, 0xa9, 0xd9, 0xf4, 0xa8, 0xef, 0x8b, 0x3d, 0x91, 0x3b, 0x7b, 0xe0, - 0xdd, 0xd7, 0xe6, 0x05, 0x9a, 0xb3, 0x87, 0x42, 0x40, 0xbe, 0x95, 0x81, 0x53, 0xaa, 0xbd, 0x38, - 0x2e, 0x96, 0x36, 0xed, 0x04, 0x62, 0x87, 0x7c, 0xfd, 0x8a, 0x3c, 0x13, 0xae, 0x28, 0x68, 0x57, - 0x1e, 0x5c, 0xbb, 0x52, 0x8a, 0x7e, 0xd6, 0x25, 0x91, 0x08, 0x6b, 0x94, 0xc6, 0x4f, 0xdd, 0xdf, - 0xed, 0x14, 0x52, 0x52, 0x66, 0x62, 0x03, 0x9b, 0x4f, 0x68, 0x1d, 0x52, 0xad, 0xe1, 0x06, 0x2b, - 0xd4, 0x7b, 0x62, 0xf6, 0x71, 0x3b, 0x12, 0xa7, 0xab, 0x4b, 0x07, 0x0a, 0x0d, 0x0a, 0xdb, 0xf5, - 0xd2, 0xdd, 0xf5, 0x48, 0x62, 0xfc, 0xfe, 0x32, 0xd2, 0xd6, 0xbe, 0x6d, 0x80, 0x91, 0xf6, 0x3d, - 0xee, 0xb6, 0xa6, 0x74, 0x83, 0x14, 0xb6, 0x35, 0x70, 0x5c, 0xd8, 0x8e, 0xd1, 0x98, 0x31, 0x6c, - 0xe3, 0x7b, 0x85, 0x18, 0x5f, 0x61, 0x98, 0x65, 0xc0, 0x28, 0x97, 0xa5, 0xd5, 0x44, 0xc9, 0x5c, - 0xd2, 0x36, 0x45, 0x09, 0x39, 0x0b, 0xb9, 0x7a, 0x7d, 0x53, 0xcd, 0x0d, 0xef, 0xfb, 0xae, 0xc9, - 0x60, 0x6c, 0x84, 0xd0, 0xe6, 0x4a, 0x09, 0xa1, 0xca, 0xb6, 0x3d, 0x13, 0xa1, 0xac, 0xbf, 0xa5, - 0x64, 0x9b, 0x8f, 0xfa, 0x5b, 0x48, 0xb6, 0x91, 0x3c, 0x5b, 0x86, 0x85, 0x92, 0xef, 0x53, 0x8f, - 0xcd, 0x2a, 0x61, 0xca, 0xe3, 0x09, 0xe9, 0x4b, 0xec, 0xee, 0x58, 0xa9, 0xdd, 0xf0, 0xcd, 0xbe, - 0x88, 0xe4, 0x12, 0x14, 0x4a, 0xbd, 0xa6, 0x43, 0x3b, 0x0d, 0x2d, 0xe2, 0x8a, 0x2d, 0x60, 0x66, - 0x58, 0x4a, 0xbe, 0x08, 0xa7, 0x04, 0x91, 0x14, 0xc1, 0x45, 0x0f, 0x8c, 0x45, 0x4b, 0x50, 0x4a, - 0x87, 0xd1, 0x33, 0x31, 0xef, 0x92, 0x74, 0x4a, 0x52, 0x82, 0xe2, 0x2a, 0x3a, 0x25, 0x54, 0x28, - 0xd7, 0x58, 0xbb, 0x1e, 0x77, 0xb4, 0xe0, 0xb2, 0x3c, 0x77, 0x58, 0xb0, 0x9a, 0x61, 0xa1, 0x99, - 0x40, 0x27, 0x77, 0x60, 0x2e, 0x0e, 0x63, 0x1b, 0x39, 0x17, 0xdb, 0x31, 0x86, 0x5f, 0x82, 0x0b, - 0x6e, 0xe5, 0x69, 0x54, 0x64, 0x07, 0x66, 0x23, 0x33, 0x09, 0x5d, 0x98, 0x97, 0x56, 0x7d, 0x61, - 0xb9, 0x14, 0xe8, 0x9f, 0x15, 0x93, 0x71, 0x2e, 0x32, 0xb9, 0x08, 0x85, 0x7a, 0x33, 0xc9, 0x8e, - 0x34, 0x61, 0xba, 0xee, 0xec, 0x75, 0x9c, 0xce, 0xde, 0x1d, 0x7a, 0x58, 0xb3, 0x1d, 0x4f, 0xd8, - 0x57, 0x49, 0xeb, 0xc9, 0x92, 0x7f, 0xd8, 0x6e, 0xd3, 0xc0, 0xc3, 0x23, 0x92, 0x95, 0xa3, 0x8f, - 0x20, 0x13, 0xd2, 0x16, 0x7d, 0x4e, 0x87, 0xfe, 0x37, 0x5d, 0xdb, 0xd1, 0xce, 0x02, 0x9d, 0xa7, - 0x76, 0xa1, 0x9a, 0x1c, 0xf2, 0x42, 0xd5, 0x82, 0xd9, 0xd5, 0x4e, 0xc3, 0x3b, 0xc4, 0x87, 0x03, - 0xd9, 0xb8, 0xa9, 0x63, 0x1a, 0xf7, 0xa2, 0x68, 0xdc, 0x73, 0xb6, 0x9c, 0x61, 0x69, 0xcd, 0x4b, - 0x32, 0x26, 0x75, 0x98, 0x45, 0xa9, 0xb7, 0x5a, 0xa9, 0x55, 0x3b, 0x4e, 0xe0, 0x60, 0x3a, 0x5f, - 0x7e, 0xc6, 0xbc, 0x24, 0x78, 0x9e, 0xe3, 0x82, 0xb3, 0xd3, 0xec, 0x5a, 0x8e, 0x44, 0x51, 0x99, - 0x26, 0xe8, 0x07, 0x49, 0xaf, 0x33, 0xff, 0x66, 0xa4, 0x57, 0x4c, 0x78, 0x13, 0xf3, 0x9d, 0x2d, - 0x46, 0xb1, 0xd3, 0x7d, 0x2c, 0x62, 0xfb, 0xba, 0xdb, 0x43, 0x99, 0x42, 0x4b, 0x78, 0xa3, 0xd3, - 0x19, 0xff, 0x49, 0x81, 0xef, 0xed, 0xaa, 0xd0, 0xd9, 0xcf, 0xfe, 0x2d, 0x26, 0x8c, 0x66, 0x4f, - 0x22, 0x8c, 0xe6, 0x8e, 0x17, 0x46, 0xf3, 0xc7, 0x09, 0xa3, 0x31, 0x69, 0x71, 0xe4, 0xc4, 0xd2, - 0xe2, 0xe8, 0x09, 0xa4, 0xc5, 0xb1, 0x13, 0x49, 0x8b, 0x9a, 0xd8, 0x5b, 0x38, 0x4e, 0xec, 0xfd, - 0xff, 0x65, 0xcb, 0xa7, 0x55, 0xb6, 0x4c, 0x13, 0x15, 0x4e, 0x24, 0x5b, 0xf6, 0x17, 0x0d, 0x8b, - 0x7f, 0xd2, 0xa2, 0xe1, 0xec, 0xc7, 0x10, 0x0d, 0xff, 0x0c, 0x14, 0xe3, 0xa7, 0xd5, 0xf1, 0x11, - 0xd2, 0x9e, 0x58, 0x34, 0x1f, 0x76, 0x96, 0xc6, 0x4f, 0x0b, 0x76, 0x65, 0xad, 0x79, 0xce, 0x03, - 0x3b, 0xa0, 0x77, 0xe4, 0x23, 0xbf, 0x88, 0xee, 0xc7, 0xa1, 0xb8, 0xe6, 0x15, 0x94, 0x50, 0x50, - 0xca, 0xa6, 0x09, 0x4a, 0xc6, 0x8f, 0x66, 0x61, 0x96, 0x47, 0xde, 0x78, 0xfa, 0x75, 0xcd, 0xef, - 0x6a, 0xe2, 0xaf, 0x34, 0x29, 0x8b, 0x7d, 0xdd, 0x00, 0x6d, 0xf3, 0x57, 0xe0, 0x54, 0xa2, 0x2b, - 0x50, 0x04, 0xae, 0xc8, 0x98, 0x27, 0x09, 0x21, 0x78, 0x21, 0xbd, 0x92, 0xfb, 0xd7, 0xcd, 0x04, - 0x85, 0xf1, 0xaf, 0xf2, 0x09, 0xfe, 0x42, 0xef, 0xac, 0x6a, 0x92, 0x33, 0x27, 0xd3, 0x24, 0x67, - 0x87, 0xd3, 0x24, 0xc7, 0xce, 0x96, 0xdc, 0x30, 0x67, 0xcb, 0x17, 0x61, 0x6a, 0x8b, 0xda, 0x6d, - 0x7f, 0xcb, 0x15, 0x01, 0xb7, 0xb9, 0x49, 0xa9, 0x0c, 0x69, 0xc2, 0xca, 0xa4, 0x04, 0x17, 0x9a, - 0xc6, 0x04, 0x8c, 0x80, 0xed, 0x87, 0x3c, 0x02, 0xb7, 0xa9, 0x73, 0x50, 0xc5, 0xf2, 0x91, 0x01, - 0x62, 0x79, 0x1d, 0x26, 0x05, 0x5d, 0x14, 0x16, 0x2e, 0x92, 0x1f, 0x59, 0x11, 0xc2, 0x65, 0xed, - 0x61, 0x4a, 0xb4, 0xb0, 0x76, 0x2e, 0x3a, 0x6a, 0x4c, 0x58, 0x17, 0xac, 0x76, 0x9a, 0x5d, 0xd7, - 0xe9, 0x60, 0x17, 0x8c, 0x45, 0x5d, 0x40, 0x05, 0x98, 0x77, 0x81, 0x82, 0x44, 0xde, 0x86, 0xe9, - 0x52, 0xad, 0xaa, 0x92, 0x15, 0x22, 0x65, 0xb6, 0xdd, 0x75, 0x2c, 0x8d, 0x34, 0x86, 0x3b, 0x48, - 0x94, 0x1a, 0xff, 0x37, 0x23, 0x4a, 0x19, 0xdf, 0x1c, 0x97, 0xcb, 0xfb, 0xd3, 0x55, 0xbb, 0xe9, - 0x8a, 0xb4, 0xdc, 0x09, 0x15, 0x69, 0xf9, 0xe3, 0x24, 0x0a, 0x4d, 0xcc, 0x19, 0x39, 0x81, 0x98, - 0x33, 0xfa, 0x89, 0x95, 0x62, 0x63, 0x27, 0x14, 0x5c, 0x62, 0x2b, 0xad, 0x30, 0xcc, 0x4a, 0x4b, - 0x15, 0x76, 0xc6, 0x3f, 0xb9, 0xb0, 0x03, 0x27, 0x16, 0x76, 0xea, 0x91, 0xe3, 0xcf, 0xc4, 0xb1, - 0x76, 0xaf, 0xe7, 0xc4, 0x25, 0x63, 0x36, 0x3d, 0xe8, 0x4a, 0xe8, 0x02, 0xf4, 0x7d, 0x25, 0x41, - 0x7d, 0x2d, 0x5d, 0x82, 0x1a, 0x7c, 0xda, 0xfc, 0x7f, 0x59, 0x86, 0xf2, 0xb0, 0x97, 0xb7, 0x6d, - 0xaf, 0x83, 0x97, 0xbb, 0xab, 0x30, 0x26, 0x83, 0x0f, 0x65, 0x22, 0x3d, 0x45, 0x32, 0xea, 0x90, - 0xc4, 0x62, 0xf7, 0x70, 0x49, 0xac, 0x06, 0x52, 0x7e, 0x28, 0x60, 0x5a, 0x5c, 0x17, 0x01, 0x33, - 0xfe, 0x76, 0x5e, 0xae, 0x64, 0x76, 0xb3, 0x12, 0x29, 0x72, 0x57, 0x94, 0x91, 0x53, 0x24, 0xb8, - 0xd8, 0xd8, 0xc4, 0xcc, 0xd8, 0x74, 0x92, 0x8f, 0x15, 0x0e, 0x2a, 0x4a, 0xcd, 0x93, 0x1b, 0x22, - 0x35, 0xcf, 0x9b, 0x5a, 0x5e, 0x9b, 0x7c, 0x94, 0x48, 0x81, 0xcd, 0xee, 0xc1, 0x19, 0x6d, 0x6e, - 0xa8, 0x09, 0x68, 0x46, 0xa2, 0xc8, 0x08, 0x48, 0x39, 0x20, 0xf5, 0x4c, 0x28, 0x92, 0x8e, 0x9e, - 0x24, 0xd0, 0xda, 0xd8, 0x9f, 0x68, 0xa0, 0xb5, 0x55, 0x00, 0x25, 0x2d, 0x29, 0x7f, 0xfb, 0x78, - 0x89, 0x75, 0xd3, 0xf1, 0x29, 0x49, 0x15, 0x42, 0xe3, 0xb7, 0x09, 0xcc, 0xd6, 0xeb, 0x9b, 0x15, - 0xc7, 0xde, 0xeb, 0xb8, 0x7e, 0xe0, 0x34, 0xaa, 0x9d, 0x5d, 0x97, 0xc9, 0x63, 0xe1, 0xae, 0xa0, - 0x44, 0xd4, 0x8a, 0x76, 0x84, 0xb0, 0x98, 0xc9, 0xfb, 0xab, 0x9e, 0xe7, 0x7a, 0xaa, 0xbc, 0x4f, - 0x19, 0xc0, 0xe4, 0x70, 0x26, 0xf2, 0xd4, 0x7b, 0x3c, 0xbf, 0x24, 0x7f, 0x8e, 0x42, 0x91, 0xc7, - 0xe7, 0x20, 0x53, 0x96, 0x11, 0x9a, 0x9c, 0xb0, 0x42, 0x04, 0x3e, 0xa3, 0x85, 0x6b, 0x8b, 0x8a, - 0xf9, 0x9e, 0x27, 0xce, 0x24, 0xf4, 0x8b, 0xea, 0x22, 0x5c, 0x7d, 0xfd, 0x4d, 0xac, 0x81, 0x43, - 0x38, 0xa5, 0xf9, 0xf7, 0x0c, 0xab, 0xa2, 0x7b, 0x45, 0x88, 0x58, 0x06, 0xba, 0x29, 0xa6, 0xe8, - 0xe9, 0xd4, 0x40, 0xf0, 0xa9, 0x35, 0x90, 0x1f, 0xcd, 0xc0, 0xb9, 0xd4, 0x92, 0x70, 0x75, 0x4f, - 0x68, 0x21, 0xf3, 0x94, 0x4d, 0x83, 0x87, 0xbc, 0xef, 0x57, 0xb5, 0x95, 0xb2, 0x15, 0x0c, 0xae, - 0x89, 0xfc, 0x6a, 0x06, 0xce, 0x68, 0x18, 0xe1, 0x9e, 0xe7, 0xe3, 0xd9, 0xd4, 0x77, 0x5e, 0x7f, - 0xf4, 0x64, 0xe6, 0xf5, 0x05, 0xfd, 0x5b, 0xa2, 0x2d, 0x59, 0xfd, 0x86, 0x7e, 0x2d, 0x24, 0x0f, - 0x60, 0x16, 0x8b, 0xa4, 0xba, 0x90, 0xcd, 0x59, 0xa1, 0x65, 0x9c, 0x8f, 0x9a, 0xcd, 0x7d, 0xd6, - 0x30, 0x6d, 0xd9, 0xf2, 0x77, 0x8f, 0x96, 0xa6, 0x34, 0x74, 0x19, 0x84, 0xce, 0x8a, 0x74, 0x8e, - 0x4e, 0x67, 0xd7, 0x55, 0xcf, 0xcb, 0x44, 0x15, 0xe4, 0x3f, 0xcd, 0xc0, 0x02, 0x83, 0xf2, 0xcf, - 0xb8, 0xe9, 0xb9, 0xed, 0xb0, 0x5c, 0x9a, 0x11, 0xf4, 0xe9, 0xb6, 0xd6, 0x93, 0xe9, 0xb6, 0x97, - 0xb0, 0xc9, 0x7c, 0x4f, 0xb0, 0x76, 0x3d, 0xb7, 0x1d, 0x35, 0x5f, 0x4b, 0xbb, 0xd9, 0xaf, 0x91, - 0xe4, 0x87, 0x32, 0x70, 0x56, 0xd3, 0x71, 0xa8, 0xa1, 0x7a, 0x85, 0x67, 0xa0, 0xb4, 0x39, 0x51, - 0x8b, 0x56, 0xae, 0x88, 0xf9, 0x7f, 0x11, 0x5b, 0x10, 0x9d, 0x16, 0xd8, 0x16, 0xab, 0xcd, 0xb1, - 0x94, 0x26, 0xf4, 0xaf, 0x85, 0x38, 0x30, 0x8b, 0x4f, 0x78, 0x9a, 0xb9, 0xcb, 0x7c, 0x7f, 0x73, - 0x97, 0x30, 0xbd, 0x0c, 0xc6, 0x01, 0xed, 0x6f, 0xf3, 0x92, 0xe4, 0x4a, 0xfe, 0x2c, 0x9c, 0x4d, - 0x00, 0xc3, 0xd5, 0x76, 0xaa, 0xef, 0x6a, 0x7b, 0xf5, 0xf1, 0xd1, 0xd2, 0xcb, 0x69, 0xb5, 0xa5, - 0xad, 0xb4, 0xfe, 0x35, 0x10, 0x1b, 0x20, 0x2a, 0x14, 0xd9, 0x3b, 0xd3, 0x27, 0xe8, 0xab, 0x62, - 0x7e, 0x28, 0xf8, 0x6c, 0x2f, 0x57, 0xda, 0xa0, 0x1e, 0x79, 0x11, 0x12, 0xa1, 0x30, 0xa9, 0xc4, - 0x40, 0x3d, 0xc4, 0x34, 0x9e, 0x7d, 0x2b, 0xf9, 0xee, 0xd1, 0x92, 0x86, 0xcd, 0xe4, 0x62, 0x35, - 0xb8, 0xaa, 0x2a, 0x17, 0x6b, 0x88, 0xe4, 0x57, 0x32, 0x30, 0xcf, 0x00, 0xd1, 0xa4, 0x12, 0x1f, - 0xb5, 0x30, 0x68, 0xd6, 0xef, 0x3f, 0x99, 0x59, 0xff, 0x02, 0xb6, 0x51, 0x9d, 0xf5, 0x89, 0x2e, - 0x49, 0x6d, 0x1c, 0xce, 0x76, 0xed, 0xb5, 0x58, 0x9b, 0xed, 0x67, 0x87, 0x98, 0xed, 0x7c, 0x00, - 0x8e, 0x9f, 0xed, 0x7d, 0x6b, 0x21, 0x5b, 0x30, 0x29, 0x44, 0x62, 0xde, 0x61, 0xcf, 0x6b, 0xf1, - 0x13, 0xd5, 0x22, 0x7e, 0x4f, 0x11, 0x21, 0x62, 0x13, 0x5f, 0xa8, 0x71, 0x21, 0x1d, 0x98, 0xe3, - 0xbf, 0x75, 0x05, 0xc5, 0x52, 0x5f, 0x05, 0xc5, 0x25, 0xf1, 0x45, 0xe7, 0x05, 0xff, 0x98, 0x9e, - 0x42, 0x0d, 0xbe, 0x99, 0xc2, 0x98, 0x74, 0x81, 0x68, 0x60, 0xbe, 0x68, 0xcf, 0x0f, 0x56, 0x4b, - 0xbc, 0x2c, 0xea, 0x5c, 0x8a, 0xd7, 0x19, 0x5f, 0xb9, 0x29, 0xbc, 0x89, 0x0d, 0x33, 0x02, 0xca, - 0x2e, 0xc0, 0xb8, 0xc3, 0xbf, 0xa0, 0x05, 0x11, 0x88, 0x95, 0xf2, 0xb7, 0x11, 0x59, 0x13, 0x06, - 0x79, 0x88, 0x6d, 0xe8, 0x71, 0x7e, 0x64, 0x13, 0x66, 0x4b, 0xdd, 0x6e, 0xcb, 0xa1, 0x4d, 0xfc, - 0x4a, 0x9e, 0x89, 0xd1, 0x88, 0xe2, 0xf9, 0xdb, 0xbc, 0x50, 0x88, 0xf8, 0xf1, 0x34, 0x8c, 0x49, - 0x5a, 0xe3, 0x5b, 0x99, 0x44, 0xa3, 0xd9, 0xcd, 0x1d, 0x7f, 0x28, 0xfe, 0xc3, 0x78, 0x73, 0xe7, - 0x4d, 0x44, 0x0d, 0x42, 0x84, 0xc0, 0x84, 0x25, 0x35, 0x36, 0x4d, 0x8e, 0x0b, 0x4b, 0xe2, 0x7a, - 0x19, 0x5d, 0x28, 0x97, 0xa4, 0x19, 0x62, 0x2e, 0x12, 0xba, 0xd0, 0x0c, 0x51, 0x18, 0x1f, 0x1a, - 0x3f, 0x94, 0xd5, 0xa7, 0x1d, 0xb9, 0xa4, 0xc8, 0xed, 0x4a, 0x74, 0x1c, 0x29, 0xb7, 0x2b, 0xd2, - 0xfa, 0x2f, 0x64, 0x60, 0x6e, 0xd3, 0xdb, 0xb3, 0x3b, 0xce, 0x37, 0x78, 0x94, 0x3d, 0x17, 0xc7, - 0x65, 0x70, 0x6a, 0x94, 0x27, 0x95, 0xe2, 0xc1, 0x55, 0x2a, 0x66, 0x33, 0x05, 0xa7, 0x8c, 0x99, - 0xd6, 0x1e, 0x34, 0xec, 0xc6, 0x86, 0x29, 0x99, 0x36, 0x38, 0x3a, 0x87, 0x1b, 0x3f, 0x9e, 0x85, - 0x09, 0x65, 0x09, 0x90, 0xcf, 0xc2, 0xa4, 0xca, 0x47, 0xd5, 0xfa, 0xa8, 0xd5, 0x9a, 0x1a, 0x16, - 0xaa, 0x7d, 0xa8, 0xdd, 0xd6, 0xd4, 0x3e, 0x6c, 0xa2, 0x23, 0xf4, 0x84, 0x57, 0x9b, 0xf7, 0x52, - 0xae, 0x36, 0x27, 0x4a, 0xd9, 0xf9, 0x76, 0xf2, 0x82, 0x33, 0x7c, 0x86, 0x4d, 0xe3, 0xa7, 0x32, - 0x50, 0x8c, 0x2f, 0xd2, 0x4f, 0xa5, 0x57, 0x4e, 0xa0, 0xe2, 0xff, 0xb1, 0x6c, 0x18, 0x00, 0x59, - 0xba, 0xab, 0x3c, 0xad, 0xc6, 0x27, 0xef, 0x68, 0xda, 0xf7, 0x67, 0xc3, 0x73, 0x45, 0xfd, 0xb8, - 0x01, 0x61, 0x7c, 0xf2, 0xdf, 0xf9, 0xb9, 0xa5, 0x67, 0x8c, 0x0f, 0x60, 0x3e, 0xde, 0x1d, 0xa8, - 0x81, 0x2f, 0xc1, 0x8c, 0x0e, 0x8f, 0x87, 0x4f, 0x8f, 0x53, 0x99, 0x71, 0x7c, 0xe3, 0x77, 0xb2, - 0x71, 0xde, 0xc2, 0x10, 0x85, 0x6d, 0x3a, 0x1d, 0x7b, 0xa7, 0x15, 0x86, 0x4f, 0xe6, 0x9b, 0x0e, - 0x07, 0x99, 0xb2, 0xec, 0x24, 0xf9, 0x04, 0x42, 0xa7, 0x8b, 0x5c, 0xba, 0xd3, 0x05, 0xb9, 0x11, - 0x33, 0xc1, 0x52, 0x22, 0x04, 0x3c, 0xa4, 0x3b, 0x56, 0x64, 0x86, 0x15, 0xb3, 0xbc, 0x2a, 0xc3, - 0xbc, 0x16, 0x46, 0x51, 0xd2, 0x8f, 0x44, 0x0a, 0xd7, 0x00, 0x0b, 0x38, 0x71, 0x2a, 0x32, 0x59, - 0x83, 0x31, 0xd6, 0xcc, 0xbb, 0x76, 0x57, 0x28, 0xd6, 0x49, 0xe8, 0x82, 0xd5, 0x0a, 0x2f, 0x7c, - 0x8a, 0x17, 0x56, 0x8b, 0xb2, 0x23, 0x5f, 0xcb, 0x78, 0xcb, 0x11, 0x8d, 0x3f, 0xca, 0xb0, 0xf5, - 0xdf, 0x38, 0xf8, 0x3e, 0x4b, 0x4a, 0xc0, 0x3e, 0x69, 0x80, 0x9d, 0xd4, 0xef, 0x67, 0x79, 0x04, - 0x6c, 0x31, 0x7d, 0xde, 0x84, 0xd1, 0x2d, 0xdb, 0xdb, 0xa3, 0x81, 0x88, 0x0d, 0xad, 0x72, 0xe1, - 0x05, 0x51, 0xfc, 0x82, 0x00, 0x7f, 0x9b, 0x82, 0x40, 0xd5, 0x85, 0x65, 0x87, 0xd2, 0x85, 0x29, - 0xea, 0xd9, 0xdc, 0x13, 0x53, 0xcf, 0xfe, 0x40, 0x18, 0xec, 0xba, 0x14, 0x0c, 0x11, 0xa5, 0xef, - 0x7c, 0x3c, 0x58, 0x7c, 0x22, 0x9e, 0x62, 0xc4, 0x8e, 0xdc, 0x50, 0xc3, 0xcf, 0x2b, 0x7e, 0x0c, - 0xc7, 0x04, 0x9a, 0x37, 0x7e, 0x3f, 0xc7, 0xfb, 0x58, 0x74, 0xd4, 0x45, 0xcd, 0xc7, 0x09, 0xd7, - 0x09, 0xdb, 0xe8, 0x55, 0x77, 0x53, 0x34, 0xa1, 0xb8, 0x08, 0x79, 0x36, 0x37, 0x45, 0x6f, 0x22, - 0x1e, 0x9b, 0xbf, 0x2a, 0x1e, 0x2b, 0x67, 0x6b, 0x19, 0xcf, 0x24, 0x35, 0xe1, 0x07, 0x1e, 0x5b, - 0xea, 0x5a, 0x46, 0x0c, 0x72, 0x09, 0xf2, 0x1b, 0x6e, 0x53, 0x46, 0x83, 0x9c, 0x47, 0x4f, 0x57, - 0x2d, 0x85, 0xfb, 0x42, 0xc6, 0x44, 0x0c, 0xf6, 0xad, 0x61, 0xfc, 0x68, 0xf5, 0x5b, 0xdb, 0xbb, - 0xb6, 0x08, 0x60, 0xaf, 0x7e, 0x6b, 0x14, 0x6a, 0x7a, 0x15, 0xa6, 0xf5, 0x04, 0x7d, 0xc2, 0x8a, - 0x0c, 0xd5, 0xac, 0xb1, 0x3c, 0x7f, 0xaa, 0x76, 0x5c, 0x27, 0x22, 0x2b, 0x30, 0xa5, 0x45, 0xa1, - 0x12, 0x2f, 0x5c, 0xa8, 0xde, 0xd4, 0x63, 0x58, 0xa9, 0xea, 0x4d, 0x8d, 0x84, 0x9d, 0xe7, 0xa2, - 0xfd, 0xca, 0x3b, 0x57, 0xa2, 0xed, 0x02, 0x87, 0x5c, 0x87, 0x02, 0x77, 0x29, 0xad, 0x56, 0xd4, - 0xd7, 0x0a, 0x1f, 0x61, 0x31, 0x97, 0x6c, 0x89, 0xa8, 0xb8, 0x10, 0x7e, 0x06, 0x8a, 0x62, 0x4b, - 0x8a, 0x92, 0xeb, 0x3d, 0x07, 0xf9, 0x72, 0xb5, 0x62, 0xaa, 0xdb, 0x48, 0xc3, 0x69, 0x7a, 0x26, - 0x42, 0x8d, 0x6f, 0x67, 0xe0, 0xec, 0x06, 0x0d, 0x1e, 0xba, 0xde, 0x81, 0x49, 0xfd, 0xc0, 0x73, - 0x78, 0xbe, 0x18, 0x5c, 0x88, 0x9f, 0x25, 0x6f, 0xc3, 0x08, 0x9a, 0x33, 0xc5, 0x4e, 0x86, 0x78, - 0x1d, 0x2b, 0x53, 0x62, 0x02, 0x8f, 0xa0, 0x6d, 0x94, 0xc9, 0x89, 0xc8, 0x9b, 0x90, 0xaf, 0xd0, - 0xce, 0x61, 0x2c, 0x63, 0x46, 0x82, 0x38, 0xdc, 0x10, 0x9a, 0xb4, 0x73, 0x68, 0x22, 0x89, 0xf1, - 0x53, 0x59, 0x38, 0x95, 0xd2, 0xac, 0xfb, 0x9f, 0x7d, 0x4a, 0x77, 0xc5, 0x15, 0x6d, 0x57, 0x94, - 0x8f, 0x94, 0x7d, 0x3b, 0x3e, 0x75, 0x93, 0xfc, 0x1b, 0x19, 0x38, 0xa3, 0x4f, 0x50, 0x61, 0xbf, - 0x78, 0xff, 0x3a, 0x79, 0x0b, 0x46, 0xd7, 0xa8, 0xdd, 0xa4, 0x32, 0x9a, 0xfe, 0xa9, 0x30, 0xf8, - 0x0b, 0xf7, 0x97, 0xe3, 0x85, 0x9c, 0x6d, 0xe4, 0x5d, 0xc1, 0xa1, 0xa4, 0x22, 0x1a, 0xc7, 0xe5, - 0x71, 0x43, 0xfa, 0xae, 0xa6, 0x55, 0x35, 0xe0, 0xa9, 0xff, 0xbb, 0x19, 0x78, 0x76, 0x00, 0x0d, - 0x1b, 0x38, 0x36, 0xf4, 0xea, 0xc0, 0xe1, 0x89, 0x8a, 0x50, 0xf2, 0x2e, 0xcc, 0x6c, 0x09, 0x79, - 0x5e, 0x0e, 0x47, 0x36, 0x5a, 0x2f, 0x52, 0xd4, 0xb7, 0xe4, 0xb8, 0xc4, 0x91, 0x35, 0xa7, 0xea, - 0xdc, 0x40, 0xa7, 0x6a, 0xd5, 0x47, 0x39, 0x3f, 0xac, 0x8f, 0xf2, 0x07, 0xf1, 0xb4, 0xd6, 0x22, - 0x54, 0x5c, 0xe4, 0xa1, 0x9d, 0xe9, 0xef, 0xa1, 0x3d, 0x30, 0x20, 0x95, 0xf1, 0xe3, 0x19, 0x28, - 0xea, 0xbc, 0x3f, 0xe9, 0x78, 0xbe, 0xa3, 0x8d, 0xe7, 0xb3, 0xe9, 0xe3, 0xd9, 0x7f, 0x20, 0xff, - 0x97, 0x4c, 0xfc, 0x63, 0x87, 0x1a, 0x41, 0x03, 0x46, 0x2b, 0x6e, 0xdb, 0x76, 0x3a, 0x6a, 0xae, - 0xc6, 0x26, 0x42, 0x4c, 0x51, 0x32, 0x9c, 0x43, 0xfb, 0x79, 0x18, 0xd9, 0x70, 0x3b, 0xa5, 0x8a, - 0x30, 0xef, 0x43, 0x3e, 0x1d, 0xb7, 0x63, 0xd9, 0x4d, 0x93, 0x17, 0x90, 0x75, 0x80, 0x7a, 0xc3, - 0xa3, 0xb4, 0x53, 0x77, 0xbe, 0x41, 0x63, 0x92, 0x06, 0xeb, 0xa1, 0x56, 0x0f, 0x37, 0x16, 0x7c, - 0xe3, 0xf1, 0x11, 0xd1, 0xf2, 0x9d, 0x6f, 0xa8, 0xfb, 0xad, 0x42, 0x6f, 0x50, 0x80, 0x88, 0x08, - 0x13, 0x57, 0x39, 0x4d, 0x91, 0x8c, 0x74, 0x4a, 0x24, 0xae, 0x62, 0x00, 0x2d, 0x71, 0x15, 0x03, - 0xb0, 0xad, 0x7d, 0x8d, 0x3a, 0x7b, 0xfb, 0xdc, 0x64, 0x64, 0x8a, 0x4f, 0xd5, 0x7d, 0x84, 0xa8, - 0x5b, 0x3b, 0xc7, 0x31, 0x7e, 0x74, 0x04, 0xce, 0x9a, 0x74, 0xcf, 0x61, 0x62, 0xf2, 0x3d, 0xdf, - 0xe9, 0xec, 0x69, 0x2e, 0xc7, 0x46, 0x6c, 0x22, 0x89, 0xb8, 0xaf, 0x0c, 0x12, 0x76, 0xcc, 0x65, - 0x28, 0xb0, 0x53, 0x51, 0x99, 0x4b, 0xf8, 0x86, 0x82, 0x79, 0x91, 0xf9, 0x24, 0x97, 0xc5, 0xe4, - 0x15, 0x71, 0x6a, 0x2b, 0x91, 0xb9, 0xd9, 0xa9, 0xfd, 0xbd, 0xa3, 0x25, 0xa8, 0x1f, 0xfa, 0x01, - 0xc5, 0x1b, 0x9b, 0x38, 0xb9, 0x43, 0xd1, 0x3a, 0xdf, 0x47, 0xb4, 0xbe, 0x0b, 0xf3, 0xa5, 0x26, - 0xdf, 0xac, 0xed, 0x56, 0xcd, 0x73, 0x3a, 0x0d, 0xa7, 0x6b, 0xb7, 0xe4, 0x75, 0x11, 0x7b, 0xd9, - 0x0e, 0xcb, 0xad, 0x6e, 0x88, 0x60, 0xa6, 0x92, 0xb1, 0xcf, 0xa8, 0x6c, 0xd4, 0x79, 0xce, 0x7f, - 0xfe, 0x3c, 0x86, 0x9f, 0xd1, 0xec, 0xf8, 0x3c, 0xe9, 0xbf, 0x19, 0x16, 0xa3, 0x50, 0x8f, 0x36, - 0x08, 0x5b, 0xeb, 0xf5, 0xc8, 0x79, 0x87, 0x07, 0x0e, 0xe5, 0x76, 0x0a, 0x41, 0xcb, 0x47, 0x5b, - 0x05, 0x0d, 0x2f, 0xa2, 0xab, 0xd7, 0xd7, 0x18, 0x5d, 0x21, 0x41, 0xe7, 0xfb, 0xfb, 0x2a, 0x1d, - 0xc7, 0x23, 0x57, 0xd9, 0x54, 0x68, 0xbb, 0x01, 0xc5, 0x79, 0x3e, 0x1e, 0x5d, 0x01, 0x3c, 0x84, - 0xf2, 0x2b, 0x80, 0x82, 0x42, 0xde, 0x86, 0xb9, 0xd5, 0xf2, 0xb2, 0x54, 0x6a, 0x56, 0xdc, 0x46, - 0x0f, 0x5f, 0x95, 0x01, 0xeb, 0xc3, 0x31, 0xa4, 0x8d, 0x65, 0x36, 0xb9, 0xd3, 0xd0, 0xc8, 0x45, - 0x18, 0xab, 0x56, 0x78, 0xdf, 0x4f, 0xa8, 0xd1, 0xf1, 0x85, 0xb5, 0x86, 0x2c, 0x24, 0x9b, 0x91, - 0x8c, 0x3a, 0x79, 0xac, 0x30, 0x79, 0xf6, 0x78, 0xf9, 0x54, 0x04, 0xd1, 0xe7, 0xc9, 0x5a, 0xca, - 0x6e, 0x93, 0xfa, 0xf7, 0xaf, 0x7d, 0x9f, 0x05, 0xd1, 0x57, 0xbe, 0x0d, 0x77, 0xaf, 0x6b, 0xa9, - 0x5b, 0xdd, 0xbf, 0x8b, 0x41, 0xf4, 0x13, 0xb8, 0xe4, 0xf3, 0x30, 0x82, 0x3f, 0x85, 0xdc, 0x33, - 0x97, 0xc2, 0x36, 0x92, 0x79, 0x1a, 0x3c, 0xd7, 0x2a, 0x12, 0x90, 0x2a, 0x8c, 0x09, 0x91, 0xfb, - 0x24, 0xa1, 0xa0, 0x85, 0xec, 0xce, 0x07, 0x49, 0xd0, 0x1b, 0x4d, 0x98, 0x54, 0x2b, 0x64, 0x93, - 0x73, 0xcd, 0xf6, 0xf7, 0x69, 0x93, 0xfd, 0x12, 0x59, 0x1c, 0x70, 0x72, 0xee, 0x23, 0xd4, 0x62, - 0xed, 0x30, 0x15, 0x14, 0xb6, 0xdb, 0x56, 0xfd, 0x7b, 0xbe, 0x68, 0x8a, 0xb8, 0x84, 0x3b, 0xa8, - 0xd0, 0x69, 0x9a, 0xa2, 0xc8, 0xf8, 0x01, 0x98, 0xdf, 0xe8, 0xb5, 0x5a, 0xec, 0x42, 0x2e, 0xa3, - 0xfc, 0x06, 0x76, 0x40, 0xc9, 0x0a, 0x8c, 0xd4, 0x95, 0xec, 0x6d, 0x73, 0x61, 0x18, 0xe5, 0x08, - 0x07, 0x6d, 0xd4, 0x32, 0xe8, 0xb0, 0x1c, 0xcb, 0xdb, 0xc6, 0x49, 0x8d, 0xdf, 0x8a, 0xb2, 0xfe, - 0x6e, 0x79, 0x76, 0xe3, 0x20, 0xcc, 0xe0, 0x37, 0x6c, 0x02, 0xe3, 0xdb, 0xb2, 0x11, 0xfa, 0x51, - 0x96, 0xd6, 0xe0, 0xe3, 0x1a, 0x43, 0xde, 0x86, 0x09, 0x71, 0x9c, 0x29, 0x61, 0x76, 0x30, 0x96, - 0x81, 0x4c, 0xf8, 0x1d, 0x33, 0x37, 0x50, 0xd1, 0xf1, 0x94, 0xd6, 0x3f, 0xe5, 0xfe, 0xb5, 0x4f, - 0xe3, 0x94, 0xd6, 0xeb, 0x18, 0x30, 0x75, 0xff, 0xf1, 0x44, 0xbc, 0x6f, 0xc5, 0xdc, 0xbd, 0xa1, - 0x06, 0xd6, 0xc8, 0x44, 0x77, 0xa6, 0x28, 0xb0, 0x86, 0x7a, 0x67, 0x0a, 0x51, 0xc3, 0x31, 0xc9, - 0x1e, 0x33, 0x26, 0xef, 0xca, 0x31, 0xc9, 0xf5, 0x9f, 0x18, 0x73, 0x03, 0xc6, 0xa1, 0x1e, 0xad, - 0x90, 0xfc, 0x50, 0x17, 0xee, 0x67, 0x30, 0x82, 0x28, 0x27, 0x89, 0x6f, 0x68, 0x82, 0x93, 0x7a, - 0x8b, 0x1f, 0x19, 0x9e, 0xe9, 0x31, 0xb7, 0xf8, 0x2f, 0xc0, 0x64, 0x29, 0x08, 0xec, 0xc6, 0x3e, - 0x6d, 0x56, 0xd8, 0xf6, 0xa4, 0xc4, 0x00, 0xb0, 0x05, 0x5c, 0x7d, 0x4e, 0x51, 0x71, 0x79, 0x4c, - 0x2b, 0xdb, 0x17, 0xd6, 0x6e, 0x61, 0x4c, 0x2b, 0x06, 0xd1, 0x63, 0x5a, 0x31, 0x08, 0xb9, 0x0a, - 0x63, 0xd5, 0xce, 0x03, 0x87, 0xf5, 0x49, 0x41, 0xc9, 0x53, 0xce, 0x41, 0xea, 0xe6, 0x2a, 0xb0, - 0xc8, 0x9b, 0x8a, 0xb8, 0x3b, 0x1e, 0x5d, 0x6d, 0xb9, 0x32, 0x24, 0x74, 0x1f, 0x56, 0x45, 0xd9, - 0x50, 0xfe, 0xbd, 0x01, 0x63, 0x52, 0xc7, 0x05, 0xd1, 0x75, 0x56, 0x50, 0x26, 0xfd, 0x14, 0x25, - 0x32, 0x26, 0x7d, 0x53, 0xb2, 0x51, 0x4c, 0x28, 0x49, 0xdf, 0x94, 0x6c, 0x14, 0x5a, 0xd2, 0x37, - 0x25, 0x2f, 0x45, 0xa8, 0x1e, 0x98, 0x3c, 0x56, 0x3d, 0x70, 0x1f, 0x26, 0x6b, 0xb6, 0x17, 0x38, - 0x4c, 0x5c, 0xe8, 0x04, 0xfe, 0xc2, 0x94, 0xa6, 0x51, 0x53, 0x8a, 0x56, 0x9e, 0x97, 0x79, 0xca, - 0xba, 0x0a, 0xbe, 0x9e, 0x50, 0x2b, 0x82, 0xa7, 0xdb, 0xba, 0x4d, 0x7f, 0x12, 0x5b, 0x37, 0xec, - 0x54, 0xd4, 0xa2, 0xcc, 0x44, 0x77, 0x75, 0x14, 0x67, 0x63, 0xaa, 0x94, 0x10, 0x91, 0x7c, 0x19, - 0x26, 0xd9, 0xdf, 0x98, 0x1a, 0xdc, 0xa1, 0xfe, 0x42, 0x11, 0x3f, 0xee, 0xf9, 0xd4, 0xd5, 0xcf, - 0xf3, 0x87, 0xd7, 0x69, 0xc0, 0x17, 0x30, 0x32, 0x8e, 0xab, 0x47, 0x35, 0x6e, 0xe4, 0x3d, 0x98, - 0x94, 0xe9, 0xeb, 0x71, 0x90, 0x66, 0x23, 0x6b, 0xc5, 0xa6, 0x80, 0x27, 0xc2, 0xca, 0xa9, 0x04, - 0xec, 0x98, 0x2f, 0x75, 0xf9, 0x06, 0x49, 0x94, 0xd9, 0xde, 0x4d, 0x6c, 0x8e, 0x12, 0x8d, 0xbc, - 0x0f, 0x93, 0xa5, 0x6e, 0x37, 0xda, 0x71, 0xe6, 0x14, 0x15, 0x49, 0xb7, 0x6b, 0xa5, 0xee, 0x3a, - 0x1a, 0x45, 0x7c, 0x63, 0x9e, 0x3f, 0xd1, 0xc6, 0x4c, 0x5e, 0x0f, 0x05, 0xe7, 0x53, 0x91, 0xbe, - 0x4f, 0x5c, 0x29, 0x34, 0x29, 0x9c, 0xcb, 0xd0, 0x65, 0x98, 0xe2, 0x0a, 0x30, 0x29, 0xcd, 0x9c, - 0x4e, 0xac, 0x9e, 0x14, 0xa1, 0x46, 0xa7, 0x21, 0xab, 0x30, 0xcd, 0xbd, 0xbb, 0x5a, 0x22, 0xde, - 0xdf, 0xc2, 0x99, 0x28, 0x01, 0x2d, 0x77, 0x0a, 0x6b, 0x61, 0x18, 0x68, 0x5b, 0xe3, 0x12, 0x23, - 0x32, 0xfe, 0x20, 0x03, 0x67, 0xfa, 0x8c, 0x78, 0x18, 0x0d, 0x2e, 0x73, 0x4c, 0x0e, 0xfe, 0xab, - 0x91, 0x94, 0xa5, 0xe8, 0x3b, 0x85, 0x94, 0xa5, 0x8e, 0x97, 0x94, 0xb7, 0x5c, 0x20, 0x22, 0x03, - 0xbf, 0x92, 0xa9, 0x5e, 0x84, 0x24, 0x8d, 0x1d, 0x42, 0x5a, 0xa6, 0xfe, 0x15, 0xe3, 0xf1, 0xd1, - 0xd2, 0xf3, 0x1e, 0x07, 0x85, 0xc3, 0xfa, 0x91, 0xab, 0xad, 0xe0, 0x14, 0xd6, 0xc6, 0x51, 0x06, - 0x26, 0x94, 0x75, 0x48, 0xce, 0x2b, 0xbe, 0x62, 0x45, 0x1e, 0x62, 0x5e, 0xe1, 0x90, 0xe5, 0x27, - 0x11, 0x2e, 0xaa, 0xec, 0xf1, 0xaa, 0xc9, 0xbb, 0x4c, 0x14, 0x52, 0x22, 0xe6, 0xb5, 0x35, 0x3d, - 0xa2, 0x89, 0xe5, 0x98, 0x5e, 0xd1, 0xf6, 0x83, 0x52, 0x23, 0x70, 0x1e, 0xd0, 0x21, 0x0e, 0x9d, - 0x28, 0xbd, 0xa2, 0xed, 0x07, 0x96, 0x8d, 0x64, 0x89, 0xf4, 0x8a, 0x21, 0x43, 0xe3, 0x87, 0x33, - 0x00, 0xf7, 0xaa, 0x65, 0x0c, 0x79, 0xf9, 0x49, 0x85, 0x82, 0xf4, 0x30, 0x62, 0x92, 0xfb, 0x00, - 0x71, 0xa0, 0x06, 0xd3, 0x3a, 0x16, 0x79, 0x17, 0x66, 0xea, 0x0d, 0xcf, 0x6d, 0xb5, 0x76, 0xec, - 0xc6, 0xc1, 0xba, 0xd3, 0xa1, 0x3c, 0x7e, 0xd3, 0x08, 0x3f, 0x8a, 0xfc, 0xb0, 0xc8, 0x6a, 0xb1, - 0x32, 0x33, 0x8e, 0x6c, 0xfc, 0x71, 0x06, 0x26, 0xaa, 0x1d, 0x3f, 0xb0, 0x5b, 0x2d, 0x14, 0x76, - 0xbe, 0x9f, 0xb2, 0x8c, 0x84, 0xdf, 0x35, 0xa0, 0x47, 0xdf, 0x80, 0x99, 0x18, 0x1a, 0xbb, 0xa4, - 0xd7, 0xd1, 0x31, 0x57, 0xbd, 0xa4, 0x73, 0x57, 0x5d, 0x53, 0x94, 0x18, 0xab, 0x0a, 0xd9, 0xfd, - 0x6b, 0xf8, 0xd2, 0xb6, 0x0c, 0xe0, 0x48, 0x90, 0xbc, 0x52, 0x90, 0x78, 0x4b, 0xee, 0x5f, 0x33, - 0x15, 0x2c, 0x63, 0x03, 0x46, 0xeb, 0xae, 0x17, 0xac, 0x1c, 0x72, 0x29, 0xbe, 0x42, 0xfd, 0x86, - 0xfa, 0x94, 0xe6, 0xa0, 0xfa, 0xba, 0x61, 0x8a, 0x22, 0x76, 0x87, 0xbf, 0xe9, 0xd0, 0x56, 0x53, - 0xb5, 0x99, 0xdc, 0x65, 0x00, 0x93, 0xc3, 0xd9, 0x4d, 0xe7, 0x74, 0x14, 0x92, 0x39, 0x32, 0xce, - 0xfc, 0xa4, 0x13, 0xb6, 0xac, 0xf5, 0xef, 0x0b, 0x7a, 0x12, 0x4f, 0xad, 0xa6, 0x01, 0x5d, 0xfd, - 0x1f, 0x65, 0x60, 0xb1, 0x3f, 0x89, 0x6a, 0xef, 0x99, 0x19, 0x60, 0xef, 0xf9, 0x52, 0xfc, 0xe9, - 0x07, 0xd1, 0xc4, 0xd3, 0x4f, 0xf4, 0xe0, 0x53, 0x41, 0x73, 0xdb, 0x46, 0x98, 0x63, 0xf9, 0xfc, - 0x80, 0x36, 0x23, 0x22, 0x1f, 0xe6, 0x00, 0x69, 0x4c, 0x41, 0x6b, 0xfc, 0x5a, 0x1e, 0xce, 0xf6, - 0xa5, 0x20, 0x6b, 0x4a, 0x74, 0xf7, 0xe9, 0x30, 0xae, 0x74, 0x5f, 0xfc, 0x2b, 0xf8, 0x2f, 0x5a, - 0x54, 0xc5, 0xbd, 0x40, 0x36, 0xc3, 0xa8, 0xde, 0x59, 0xe4, 0xf5, 0xea, 0xb1, 0xbc, 0x38, 0x3a, - 0x32, 0x83, 0x64, 0x80, 0x6f, 0xf4, 0x17, 0xa2, 0x81, 0xed, 0xb4, 0x7c, 0x75, 0xd9, 0x35, 0x39, - 0xc8, 0x94, 0x65, 0x91, 0x11, 0x6e, 0x3e, 0xdd, 0x08, 0xd7, 0xf8, 0xbf, 0x33, 0x30, 0x1e, 0x36, - 0x9b, 0x2c, 0xc2, 0xe9, 0x2d, 0xb3, 0x54, 0x5e, 0xb5, 0xb6, 0x3e, 0xa8, 0xad, 0x5a, 0xf7, 0x36, - 0xea, 0xb5, 0xd5, 0x72, 0xf5, 0x66, 0x75, 0xb5, 0x52, 0x7c, 0x86, 0xcc, 0xc2, 0xd4, 0xbd, 0x8d, - 0x3b, 0x1b, 0x9b, 0xdb, 0x1b, 0xd6, 0xaa, 0x69, 0x6e, 0x9a, 0xc5, 0x0c, 0x99, 0x82, 0x71, 0x73, - 0xa5, 0x54, 0xb6, 0x36, 0x36, 0x2b, 0xab, 0xc5, 0x2c, 0x29, 0xc2, 0x64, 0x79, 0x73, 0x63, 0x63, - 0xb5, 0xbc, 0x55, 0xbd, 0x5f, 0xdd, 0xfa, 0xa0, 0x98, 0x23, 0x04, 0xa6, 0x11, 0xa1, 0x66, 0x56, - 0x37, 0xca, 0xd5, 0x5a, 0x69, 0xbd, 0x98, 0x67, 0x30, 0x86, 0xaf, 0xc0, 0x46, 0x42, 0x46, 0x77, - 0xee, 0xad, 0xac, 0x16, 0x47, 0x19, 0x0a, 0xfb, 0x4b, 0x41, 0x19, 0x63, 0xd5, 0x23, 0x4a, 0xa5, - 0xb4, 0x55, 0x5a, 0x29, 0xd5, 0x57, 0x8b, 0x05, 0x72, 0x06, 0xe6, 0x34, 0x90, 0xb5, 0xbe, 0x79, - 0xab, 0xba, 0x51, 0x1c, 0x27, 0xf3, 0x50, 0x0c, 0x61, 0x95, 0x15, 0xeb, 0x5e, 0x7d, 0xd5, 0x2c, - 0x42, 0x1c, 0xba, 0x51, 0xba, 0xbb, 0x5a, 0x9c, 0x30, 0xde, 0xe1, 0xfe, 0x39, 0xbc, 0xab, 0xc9, - 0x69, 0x20, 0xf5, 0xad, 0xd2, 0xd6, 0xbd, 0x7a, 0xec, 0xe3, 0x27, 0x60, 0xac, 0x7e, 0xaf, 0x5c, - 0x5e, 0xad, 0xd7, 0x8b, 0x19, 0x02, 0x30, 0x7a, 0xb3, 0x54, 0x5d, 0x5f, 0xad, 0x14, 0xb3, 0xc6, - 0x4f, 0x66, 0x60, 0x56, 0x8a, 0x5e, 0x52, 0x8f, 0xff, 0x09, 0xd7, 0xe2, 0xbb, 0xda, 0x8d, 0x52, - 0xba, 0x4f, 0xc4, 0x2a, 0x19, 0xb0, 0x0c, 0x3d, 0x38, 0x95, 0x8a, 0x4c, 0x3e, 0x80, 0xa2, 0x6c, - 0xc0, 0x5d, 0x3b, 0x68, 0xec, 0x47, 0xdb, 0xd8, 0xf3, 0xb1, 0x4a, 0x62, 0x68, 0x5c, 0xb3, 0x17, - 0xa5, 0x31, 0x4b, 0xb0, 0x31, 0xbe, 0x93, 0x81, 0x33, 0x7d, 0x88, 0x49, 0x19, 0x46, 0xc3, 0x60, - 0xd7, 0x03, 0x2c, 0x85, 0xe6, 0xbf, 0x7b, 0xb4, 0x24, 0x10, 0x31, 0x9b, 0x13, 0xfe, 0x65, 0x8e, - 0x86, 0xd1, 0xab, 0x31, 0x84, 0x34, 0xef, 0x93, 0xb3, 0xb1, 0xee, 0x14, 0x35, 0x95, 0xb6, 0xeb, - 0x2b, 0x13, 0xa2, 0x43, 0x72, 0xf6, 0x43, 0x1f, 0x63, 0x48, 0x1b, 0xdf, 0xce, 0x30, 0x51, 0x29, - 0x8e, 0xc8, 0x24, 0xc8, 0x92, 0xef, 0xf7, 0xda, 0xd4, 0x74, 0x5b, 0xb4, 0x64, 0x6e, 0x88, 0xb3, - 0x00, 0x65, 0x3f, 0x1b, 0x0b, 0x50, 0x48, 0xb7, 0x6c, 0xaf, 0xa3, 0xbd, 0x0a, 0xaa, 0x34, 0xe4, - 0x4d, 0x80, 0x30, 0xab, 0xb6, 0xf4, 0x8b, 0xe7, 0x71, 0x21, 0x04, 0x54, 0x97, 0x5e, 0x15, 0x64, - 0xe3, 0x2f, 0x66, 0x60, 0x52, 0x5c, 0x41, 0x4a, 0x2d, 0xea, 0x05, 0x9f, 0x6c, 0xce, 0xbc, 0xa9, - 0xcd, 0x99, 0xd0, 0x30, 0x5e, 0xe1, 0xcf, 0x8a, 0x53, 0xa7, 0xcb, 0x7f, 0x91, 0x81, 0x62, 0x1c, - 0x91, 0xbc, 0x0b, 0x85, 0x3a, 0x7d, 0x40, 0x3d, 0x27, 0x38, 0x8c, 0xe5, 0xfd, 0xe7, 0x38, 0xa2, - 0x8c, 0x6b, 0x3a, 0x7d, 0xf1, 0xcb, 0x0c, 0x69, 0x86, 0xdd, 0xc4, 0x15, 0x25, 0x42, 0xee, 0x49, - 0x29, 0x11, 0x8c, 0xff, 0x31, 0x0b, 0x67, 0x6e, 0xd1, 0x40, 0xfd, 0xa6, 0xf0, 0x19, 0xf7, 0x33, - 0xc3, 0x7d, 0x97, 0xf2, 0x25, 0x0b, 0x30, 0x86, 0x45, 0x72, 0x7c, 0x4d, 0xf9, 0x93, 0xac, 0x84, - 0xf3, 0x3a, 0xa7, 0xe5, 0x1d, 0xe8, 0x53, 0xf7, 0x15, 0x25, 0x12, 0x79, 0x38, 0xad, 0x2f, 0xc2, - 0x34, 0x86, 0xda, 0xec, 0xb1, 0xe5, 0x40, 0x9b, 0x42, 0x99, 0x52, 0x30, 0x63, 0x50, 0xf2, 0x0a, - 0x14, 0x19, 0xa4, 0xd4, 0x38, 0xe8, 0xb8, 0x0f, 0x5b, 0xb4, 0xb9, 0x47, 0x79, 0x1a, 0xe4, 0x82, - 0x99, 0x80, 0x4b, 0x9e, 0xf7, 0x3a, 0xfc, 0x22, 0x44, 0x9b, 0xa8, 0xf1, 0x10, 0x3c, 0x23, 0xe8, - 0xe2, 0x9b, 0x30, 0xf1, 0x31, 0xb3, 0x0a, 0x18, 0xff, 0x43, 0x06, 0xe6, 0xf1, 0xe3, 0x94, 0x8a, - 0x51, 0x15, 0xfe, 0x99, 0xa8, 0xb7, 0x94, 0x40, 0xdb, 0x36, 0x03, 0xe9, 0x4b, 0x21, 0xec, 0xc5, - 0x48, 0xc3, 0x92, 0x1d, 0x42, 0xc3, 0x52, 0x3f, 0x49, 0xd6, 0xc4, 0x21, 0x15, 0x44, 0x3c, 0xd7, - 0x75, 0x34, 0xe4, 0xc6, 0x9f, 0xcf, 0xc2, 0x98, 0x49, 0x31, 0x9d, 0x1c, 0xb9, 0x08, 0x63, 0x1b, - 0x6e, 0x40, 0xfd, 0xbb, 0x5a, 0xee, 0xc0, 0x0e, 0x03, 0x59, 0xed, 0xa6, 0x29, 0x0b, 0xd9, 0x84, - 0xaf, 0x79, 0x6e, 0xb3, 0xd7, 0x08, 0xd4, 0x09, 0xdf, 0xe5, 0x20, 0x53, 0x96, 0x91, 0xd7, 0x60, - 0x5c, 0x70, 0x0e, 0x1f, 0xcf, 0xd0, 0xe8, 0xd3, 0xa3, 0x61, 0x3a, 0xc2, 0x08, 0x01, 0x05, 0x55, - 0x2e, 0x35, 0xe4, 0x15, 0x41, 0x35, 0x21, 0x08, 0x48, 0xf9, 0x7b, 0x64, 0x80, 0xfc, 0xfd, 0x19, - 0x18, 0x2d, 0xf9, 0x3e, 0x0d, 0xa4, 0xcb, 0xf0, 0x64, 0x18, 0x74, 0xc5, 0xa7, 0x01, 0x67, 0x6c, - 0x63, 0xb9, 0x29, 0xf0, 0x8c, 0x3f, 0xca, 0xc2, 0x08, 0xfe, 0x89, 0x0f, 0x86, 0x5e, 0x63, 0x5f, - 0x7b, 0x30, 0xf4, 0x1a, 0xfb, 0x26, 0x42, 0xc9, 0x35, 0xbc, 0xf7, 0xcb, 0x98, 0xf0, 0xe2, 0xeb, - 0x51, 0xa1, 0xdd, 0x8c, 0xc0, 0xa6, 0x8a, 0x13, 0xbe, 0xa4, 0xe6, 0x52, 0x03, 0x05, 0x9c, 0x86, - 0xec, 0x66, 0x5d, 0x7c, 0x31, 0x46, 0x21, 0x71, 0x7d, 0x33, 0xbb, 0x59, 0xc7, 0xde, 0x58, 0x2b, - 0x2d, 0xbf, 0x71, 0x43, 0x4d, 0x73, 0xe9, 0xef, 0xdb, 0xcb, 0x6f, 0xdc, 0x30, 0x45, 0x09, 0xeb, - 0x5f, 0x6c, 0x33, 0xbe, 0x28, 0x72, 0x17, 0x57, 0xec, 0x5f, 0xfc, 0x36, 0x7c, 0x3d, 0x34, 0x23, - 0x04, 0xb2, 0x0c, 0x13, 0xc2, 0xb1, 0x1a, 0xf1, 0x15, 0xc7, 0x67, 0xe1, 0x78, 0xcd, 0x29, 0x54, - 0x24, 0xfe, 0xb6, 0x24, 0x06, 0x48, 0x66, 0xae, 0x12, 0x6f, 0x4b, 0x72, 0x08, 0x7d, 0x53, 0x41, - 0x89, 0x3c, 0x74, 0x23, 0xd7, 0x55, 0xd5, 0x43, 0x17, 0x43, 0xa7, 0x86, 0x08, 0xc6, 0x2f, 0x66, - 0xa1, 0x50, 0x6b, 0xf5, 0xf6, 0x9c, 0xce, 0xfd, 0x6b, 0x7f, 0xa2, 0xa9, 0xd6, 0x5f, 0x07, 0x3c, - 0x24, 0xc4, 0x8d, 0x40, 0xaa, 0x87, 0x79, 0xd3, 0x84, 0xf0, 0xc1, 0x49, 0x10, 0x8d, 0x5c, 0x07, - 0x31, 0x31, 0x45, 0xe6, 0xbd, 0x53, 0x3a, 0x01, 0xcf, 0x39, 0x23, 0x49, 0x04, 0x2a, 0x79, 0x1b, - 0x26, 0xa2, 0x9c, 0xd7, 0x51, 0x42, 0x3d, 0x95, 0xb2, 0x1c, 0x95, 0xdf, 0xbf, 0x66, 0xaa, 0xe8, - 0xc6, 0x2f, 0x8c, 0xc2, 0xa4, 0xda, 0x1e, 0x62, 0xc2, 0x9c, 0xdf, 0x62, 0x57, 0x61, 0x61, 0xd4, - 0xd3, 0xc5, 0x42, 0x71, 0x9c, 0x9e, 0xd7, 0x1b, 0xc4, 0xf0, 0xb8, 0x85, 0x8f, 0xf4, 0x08, 0x5f, - 0x7b, 0xc6, 0x9c, 0xf5, 0x23, 0x30, 0xc7, 0x23, 0x25, 0x28, 0xb8, 0x5d, 0x7f, 0x8f, 0x76, 0x1c, - 0xf9, 0x7a, 0x71, 0x41, 0x63, 0xb4, 0x29, 0x0a, 0x13, 0xbc, 0x42, 0x32, 0xf2, 0x06, 0x8c, 0xba, - 0x5d, 0xda, 0xb1, 0x1d, 0x71, 0xc6, 0x3d, 0x1b, 0x63, 0x40, 0x3b, 0xa5, 0xaa, 0x42, 0x28, 0x90, - 0xc9, 0x55, 0xc8, 0xbb, 0x07, 0xe1, 0x78, 0x9d, 0xd5, 0x89, 0x0e, 0x02, 0x5b, 0x21, 0x41, 0x44, - 0x46, 0xf0, 0x91, 0xdd, 0xde, 0x15, 0x23, 0xa6, 0x13, 0xdc, 0xb6, 0xdb, 0xbb, 0x2a, 0x01, 0x43, - 0x24, 0xef, 0x01, 0x74, 0xed, 0x3d, 0xea, 0x59, 0xcd, 0x5e, 0x70, 0x28, 0xc6, 0xed, 0x79, 0x8d, - 0xac, 0xc6, 0x8a, 0x2b, 0xbd, 0xe0, 0x50, 0xa1, 0x1d, 0xef, 0x4a, 0x20, 0x29, 0x01, 0xb4, 0xed, - 0x20, 0xa0, 0x5e, 0xdb, 0x15, 0x56, 0x55, 0x13, 0xcb, 0x4b, 0x1a, 0x83, 0xbb, 0x61, 0xb1, 0xc2, - 0x41, 0x21, 0xc2, 0x46, 0x3b, 0x9e, 0x2d, 0xf2, 0x1f, 0xc6, 0x1a, 0xed, 0x78, 0xda, 0x57, 0x32, - 0x44, 0xf2, 0x79, 0x18, 0x6b, 0x3a, 0x7e, 0xc3, 0xf5, 0x9a, 0x22, 0x54, 0xc0, 0x73, 0x1a, 0x4d, - 0x85, 0x97, 0x29, 0x64, 0x12, 0x9d, 0xb5, 0x56, 0x84, 0x10, 0xdb, 0x70, 0x1f, 0x8a, 0xdc, 0xfa, - 0x7a, 0x6b, 0xeb, 0x61, 0xb1, 0xda, 0xda, 0x88, 0x88, 0x0d, 0xe5, 0x9e, 0x13, 0xb4, 0xec, 0x1d, - 0xf1, 0x80, 0xab, 0x0f, 0xe5, 0x2d, 0x2c, 0x52, 0x87, 0x92, 0x23, 0x93, 0x37, 0xa1, 0x40, 0x3b, - 0x81, 0x67, 0x5b, 0x4e, 0x53, 0x78, 0xa3, 0xe9, 0x8d, 0x66, 0x07, 0xb0, 0x5d, 0xad, 0xa8, 0x8d, - 0x46, 0xfc, 0x6a, 0x93, 0xf5, 0x8f, 0xdf, 0x70, 0xda, 0xc2, 0x89, 0x4c, 0xef, 0x9f, 0x7a, 0xb9, - 0x7a, 0x57, 0xed, 0x1f, 0x86, 0xf8, 0x85, 0xfc, 0xff, 0xf4, 0x73, 0x4b, 0x99, 0x15, 0x80, 0x82, - 0x8c, 0x85, 0x60, 0xac, 0xc3, 0xd9, 0xbe, 0x93, 0x9e, 0x5c, 0x86, 0xe2, 0xae, 0x2d, 0x34, 0x48, - 0x8d, 0x7d, 0xbb, 0xd3, 0xa1, 0x2d, 0xb1, 0xdd, 0xcc, 0x48, 0x78, 0x99, 0x83, 0x39, 0x67, 0xe3, - 0x3d, 0x98, 0x4f, 0xfb, 0x5a, 0xf2, 0x02, 0x4c, 0xaa, 0x61, 0x1f, 0x04, 0x93, 0x09, 0xbb, 0xeb, - 0xc8, 0xc0, 0x0f, 0x82, 0xc1, 0xaf, 0x66, 0xe0, 0xb9, 0x41, 0x6b, 0x87, 0x2c, 0x42, 0xa1, 0xeb, - 0x39, 0x2e, 0xca, 0x68, 0x7c, 0x87, 0x0b, 0x7f, 0x93, 0x73, 0x00, 0x5c, 0x98, 0x08, 0xec, 0x3d, - 0x61, 0x45, 0x6e, 0x8e, 0x23, 0x64, 0xcb, 0xde, 0xf3, 0xc9, 0xab, 0x30, 0xdb, 0xa4, 0xbb, 0x76, - 0xaf, 0x15, 0x58, 0x7e, 0x63, 0x9f, 0x36, 0xd1, 0x71, 0x03, 0xad, 0x83, 0xcc, 0xa2, 0x28, 0xa8, - 0x4b, 0x78, 0xa2, 0xc5, 0x23, 0x7d, 0x5a, 0x7c, 0x3b, 0x5f, 0xc8, 0x14, 0xb3, 0x26, 0x1a, 0xc9, - 0x18, 0xdf, 0xcc, 0xc2, 0x42, 0xbf, 0xc9, 0x42, 0xde, 0x49, 0xeb, 0x03, 0xae, 0x03, 0x57, 0xe1, - 0xaa, 0x0e, 0x5c, 0xa9, 0x8d, 0x2c, 0x43, 0xe8, 0x76, 0x71, 0x9c, 0x0b, 0xb5, 0x84, 0x31, 0x9a, - 0xae, 0xed, 0xfb, 0x0f, 0xd9, 0x7a, 0xc8, 0x29, 0xb1, 0xd8, 0x04, 0x4c, 0xa5, 0x91, 0x30, 0xf2, - 0x39, 0x80, 0x46, 0xcb, 0xf5, 0x29, 0x3e, 0x35, 0x8b, 0x83, 0x96, 0xdb, 0x9e, 0x86, 0x50, 0xf5, - 0x6d, 0x11, 0xa1, 0x65, 0xb7, 0x49, 0xc5, 0x00, 0xda, 0x70, 0xa6, 0xcf, 0xee, 0xc0, 0x86, 0x27, - 0x4a, 0xb7, 0x28, 0x83, 0xb7, 0xf7, 0xc2, 0xa4, 0x8b, 0xf1, 0x1e, 0xcf, 0xf6, 0x9b, 0x23, 0x87, - 0x40, 0x92, 0x5b, 0x00, 0xe3, 0x2e, 0x2c, 0x28, 0x7b, 0x5e, 0xc8, 0x9d, 0x43, 0xee, 0x79, 0x2d, - 0xb2, 0x04, 0x13, 0x32, 0x39, 0x0b, 0x13, 0x64, 0x39, 0x73, 0x10, 0xa0, 0x3b, 0x14, 0x27, 0x0f, - 0x86, 0x0c, 0x44, 0xe7, 0x1a, 0x71, 0x44, 0x8e, 0x23, 0x84, 0xdd, 0xfd, 0x45, 0xd5, 0xcf, 0xc9, - 0xf9, 0xad, 0x6f, 0xcc, 0xa2, 0xf4, 0xa7, 0x33, 0x72, 0xf8, 0x93, 0x3b, 0xdb, 0x71, 0xed, 0x23, - 0x80, 0xae, 0x10, 0xa2, 0x61, 0xf8, 0x37, 0x3b, 0xb2, 0xe5, 0xaa, 0x13, 0x47, 0xb6, 0xf8, 0x49, - 0x2e, 0xc2, 0x8c, 0xc7, 0x8d, 0xe5, 0x02, 0x57, 0xf4, 0x27, 0x8e, 0x94, 0x39, 0xc5, 0xc1, 0x5b, - 0x2e, 0xf6, 0xa9, 0x68, 0xd7, 0xed, 0xb0, 0xc3, 0x94, 0x8d, 0x9e, 0x5c, 0x81, 0x71, 0xb6, 0xd1, - 0x63, 0x54, 0x85, 0x98, 0x0d, 0x36, 0xe2, 0xe1, 0xb1, 0x69, 0x16, 0x3e, 0x12, 0x7f, 0x0b, 0x5e, - 0xff, 0x24, 0x23, 0x99, 0xa9, 0xc7, 0x0c, 0x39, 0x03, 0x63, 0xae, 0xb7, 0xa7, 0x7c, 0xda, 0xa8, - 0xeb, 0xed, 0xb1, 0xef, 0xba, 0x04, 0x45, 0xee, 0x12, 0xc0, 0x7d, 0xad, 0xfd, 0xc3, 0x0e, 0xbf, - 0x87, 0x16, 0xcc, 0x69, 0x0e, 0xc7, 0x0c, 0x94, 0x87, 0x9d, 0x06, 0xc3, 0xf4, 0x7d, 0xd7, 0x52, - 0x43, 0xa9, 0x88, 0xcf, 0x9e, 0xf6, 0x7d, 0x37, 0x8a, 0xa9, 0xd2, 0x24, 0x2b, 0x30, 0xc5, 0xf8, - 0x84, 0x01, 0x5d, 0xc4, 0x29, 0x78, 0x2e, 0x79, 0x0a, 0x1e, 0x76, 0x1a, 0xb2, 0x89, 0xe6, 0xa4, - 0xaf, 0xfc, 0x12, 0x5f, 0xf3, 0x33, 0x59, 0x38, 0x9d, 0x8e, 0x8e, 0xe3, 0xc5, 0x2a, 0x41, 0xcf, - 0x18, 0xae, 0x93, 0x34, 0xc7, 0x19, 0x84, 0x3b, 0xff, 0xa7, 0xb5, 0x36, 0x9b, 0xda, 0xda, 0x57, - 0x60, 0x16, 0x19, 0x09, 0xb9, 0xa3, 0xe5, 0xf8, 0x81, 0xf0, 0x69, 0x37, 0x67, 0x58, 0x01, 0xdf, - 0xe0, 0xd6, 0x19, 0x98, 0xbc, 0x04, 0xd3, 0x72, 0x8b, 0x72, 0x1f, 0x76, 0x58, 0xc5, 0x7c, 0x7f, - 0x9a, 0x12, 0xd0, 0x4d, 0x04, 0x92, 0x53, 0x30, 0x6a, 0x77, 0xbb, 0xac, 0x4a, 0xbe, 0x2d, 0x8d, - 0xd8, 0xdd, 0x6e, 0xb5, 0x49, 0x2e, 0xc0, 0x14, 0xfa, 0x01, 0x59, 0xbb, 0x68, 0x81, 0x21, 0x2c, - 0xaf, 0xcc, 0x49, 0x04, 0x72, 0xab, 0x0c, 0x9f, 0x2d, 0x04, 0x46, 0x2b, 0x51, 0xc6, 0x10, 0x05, - 0xec, 0xae, 0x44, 0x10, 0x3d, 0xf3, 0x79, 0x98, 0x11, 0xa7, 0xa5, 0xd8, 0xe1, 0x91, 0x52, 0xcc, - 0x3f, 0x26, 0xc6, 0x8a, 0xa8, 0xd5, 0x20, 0x40, 0xd5, 0xa6, 0xa4, 0xfc, 0xdd, 0x0c, 0x9c, 0x4a, - 0x3d, 0x6e, 0xc9, 0xd7, 0x80, 0xbb, 0x45, 0x04, 0xae, 0xe5, 0xd1, 0x86, 0xd3, 0x75, 0xd0, 0x71, - 0x9c, 0x2b, 0x99, 0x96, 0x07, 0x1d, 0xd4, 0xe8, 0x62, 0xb1, 0xe5, 0x9a, 0x21, 0x11, 0xbf, 0x27, - 0x17, 0xbd, 0x18, 0x78, 0xf1, 0x43, 0x38, 0x95, 0x8a, 0x9a, 0x72, 0x7f, 0x7d, 0x4d, 0x4f, 0xee, - 0x25, 0x5f, 0x0d, 0x62, 0x1f, 0xad, 0xdc, 0x6b, 0xc5, 0xe7, 0xfd, 0x7a, 0xf8, 0x79, 0xb1, 0x83, - 0x99, 0xac, 0xc6, 0xa7, 0x65, 0x9a, 0x6c, 0x29, 0x89, 0xfa, 0xce, 0x4c, 0xf2, 0x21, 0x9c, 0x12, - 0x53, 0x65, 0xcf, 0xb3, 0xbb, 0xfb, 0x11, 0x3b, 0xde, 0xd0, 0x97, 0xd3, 0xd8, 0xf1, 0x39, 0x74, - 0x8b, 0xe1, 0x87, 0x5c, 0xe7, 0xec, 0x24, 0x50, 0x7c, 0x83, 0x27, 0x0f, 0xfd, 0x94, 0xd6, 0xa4, - 0xcc, 0xc1, 0x4c, 0xda, 0x1c, 0x1c, 0x7a, 0x01, 0x88, 0x3a, 0x7f, 0x28, 0x03, 0xe7, 0x8f, 0x6b, - 0x33, 0xd9, 0x86, 0xd3, 0xf8, 0xa0, 0xec, 0xbb, 0xe1, 0x67, 0x5b, 0x0d, 0xbb, 0xb1, 0x4f, 0xc5, - 0x2c, 0x31, 0x52, 0x3f, 0xbe, 0xdb, 0xad, 0xd7, 0x37, 0x95, 0xef, 0xee, 0x76, 0xeb, 0xbe, 0x2b, - 0x7f, 0x97, 0x19, 0xb9, 0x68, 0x43, 0x13, 0x9e, 0x1d, 0x40, 0xa9, 0x2c, 0xab, 0x8c, 0xba, 0xac, - 0x2e, 0x41, 0x71, 0x97, 0x36, 0xa9, 0x87, 0x9e, 0x17, 0xac, 0x69, 0x0f, 0x96, 0x79, 0x86, 0x3c, - 0x73, 0x3a, 0x84, 0xd7, 0x7d, 0xf7, 0xfe, 0xb2, 0xa8, 0xa5, 0x2d, 0x77, 0x48, 0x55, 0x04, 0x23, - 0x57, 0x60, 0x2e, 0xe6, 0x04, 0x1f, 0x79, 0x55, 0x9a, 0xb3, 0xac, 0x48, 0x0f, 0x99, 0xf2, 0x02, - 0x4c, 0xca, 0x61, 0xf0, 0x42, 0xdf, 0x0c, 0x73, 0x42, 0xc0, 0xd8, 0x2c, 0x17, 0xd5, 0xfd, 0xed, - 0xac, 0x14, 0x99, 0x56, 0x5c, 0x37, 0xf0, 0x03, 0xcf, 0xee, 0x6a, 0xf7, 0x22, 0xd2, 0x86, 0xb3, - 0xae, 0xdd, 0x0b, 0xf6, 0x97, 0x2d, 0xf6, 0xaf, 0xeb, 0x49, 0x47, 0xc9, 0x86, 0x34, 0x31, 0x9b, - 0x58, 0xbe, 0xaa, 0x6f, 0x9d, 0x25, 0x86, 0x5d, 0x52, 0x91, 0xd9, 0x09, 0xaf, 0x70, 0x5d, 0x7b, - 0xc6, 0x3c, 0xc3, 0x79, 0x26, 0xb0, 0xc8, 0x1a, 0x68, 0xf9, 0xd8, 0x53, 0x2f, 0x46, 0x4a, 0xee, - 0x74, 0x9d, 0xeb, 0xc4, 0x8e, 0x92, 0xbc, 0xfd, 0x5d, 0x18, 0x77, 0x9a, 0x22, 0x30, 0x9b, 0xb8, - 0x1e, 0xe9, 0x22, 0x79, 0xb5, 0xc9, 0xe3, 0xb4, 0x45, 0x3c, 0xd8, 0xdd, 0xca, 0x11, 0xd0, 0x95, - 0x29, 0xed, 0x06, 0x69, 0xac, 0xc8, 0xd3, 0x39, 0x49, 0x46, 0xa6, 0x21, 0x1b, 0x0e, 0x7b, 0xd6, - 0x69, 0x92, 0xd3, 0x30, 0xea, 0x2b, 0x91, 0xe2, 0x4c, 0xf1, 0xcb, 0xf8, 0x33, 0x70, 0x69, 0xd8, - 0x3e, 0x22, 0xaf, 0x03, 0xe9, 0xd3, 0xe1, 0xe3, 0xe6, 0xac, 0x9d, 0xe8, 0xb7, 0x17, 0x40, 0x0d, - 0x75, 0xe5, 0xc8, 0x01, 0x97, 0xb0, 0x7b, 0x9e, 0x63, 0xfc, 0x57, 0x59, 0x98, 0xd6, 0xef, 0xcc, - 0xe4, 0x55, 0xc8, 0x87, 0x6c, 0xa7, 0x43, 0xdd, 0xae, 0x8a, 0xc4, 0x98, 0x9b, 0x88, 0xc4, 0x0e, - 0x08, 0x7c, 0xdf, 0xb1, 0xda, 0xaa, 0xfa, 0xd5, 0x9c, 0x44, 0xa0, 0x54, 0xbb, 0xde, 0x06, 0x9e, - 0x90, 0x15, 0xf7, 0xb2, 0x60, 0xb8, 0xf4, 0xe3, 0x05, 0x76, 0x73, 0x47, 0xbd, 0xd9, 0x24, 0xa3, - 0x65, 0xfb, 0x09, 0x66, 0x1c, 0x8f, 0xae, 0x44, 0xf9, 0xfe, 0x57, 0x22, 0xf1, 0x29, 0x7d, 0xae, - 0x44, 0x23, 0x03, 0xae, 0x44, 0x11, 0x65, 0x78, 0x25, 0x7a, 0x51, 0xb4, 0xde, 0xb3, 0x1f, 0x5a, - 0xf8, 0x59, 0xdc, 0xa2, 0x8b, 0xb7, 0xcb, 0xb4, 0x1f, 0xe2, 0xc3, 0xd6, 0xca, 0x38, 0xc8, 0xd7, - 0x30, 0xe3, 0xaf, 0x66, 0x62, 0x77, 0x16, 0xd9, 0xb3, 0x2f, 0xc1, 0xb4, 0xd3, 0x66, 0xc2, 0x14, - 0x6d, 0x2a, 0x42, 0xc0, 0x94, 0x39, 0x25, 0xa1, 0x5c, 0x10, 0x78, 0x19, 0x66, 0x42, 0x34, 0xee, - 0x85, 0xcb, 0x2d, 0xc5, 0xcd, 0x90, 0x5a, 0x78, 0xe1, 0xbe, 0x0a, 0xb3, 0x21, 0xa2, 0x90, 0x3b, - 0xb9, 0x1c, 0x30, 0x65, 0x16, 0x65, 0x81, 0xc8, 0x14, 0xe8, 0x1b, 0x7b, 0xf1, 0x43, 0xe6, 0x53, - 0x6a, 0x95, 0xf1, 0x2f, 0xb3, 0x30, 0x97, 0xa2, 0x4c, 0x21, 0x1f, 0xc2, 0x9c, 0xdc, 0x34, 0xf8, - 0x61, 0xc4, 0x17, 0x33, 0xdf, 0x2e, 0x2e, 0xa7, 0x6d, 0x17, 0x88, 0x96, 0xb2, 0xa4, 0x67, 0xc5, - 0x46, 0x11, 0x95, 0xff, 0xe9, 0xd9, 0x22, 0xc8, 0x07, 0x70, 0x5a, 0x24, 0xf8, 0x55, 0x76, 0x0a, - 0xcb, 0xa3, 0xbb, 0x62, 0xc2, 0xbe, 0x90, 0x58, 0x50, 0x4e, 0x43, 0x69, 0x8e, 0x49, 0x77, 0xd7, - 0x9e, 0x31, 0xe7, 0xfd, 0x14, 0x78, 0x7c, 0xf7, 0xf9, 0x3b, 0x19, 0x30, 0x8e, 0xef, 0x2f, 0xbc, - 0x05, 0xc5, 0x3b, 0x9c, 0xdd, 0x82, 0x94, 0xde, 0xbb, 0x00, 0x53, 0x1e, 0xdd, 0xf5, 0xa8, 0xbf, - 0xaf, 0x74, 0xdf, 0xb8, 0x39, 0x29, 0x80, 0xb2, 0x63, 0xa4, 0xff, 0xff, 0x89, 0x96, 0xaf, 0x24, - 0x32, 0x6e, 0x86, 0x87, 0x4a, 0xea, 0x38, 0x90, 0x79, 0x18, 0x51, 0x1b, 0xc8, 0x7f, 0xdc, 0xce, - 0x17, 0xb2, 0xc5, 0x9c, 0x29, 0xa2, 0x14, 0xec, 0x3a, 0x2d, 0x6a, 0xfc, 0xbd, 0x0c, 0x2c, 0xf6, - 0xef, 0x3c, 0xf2, 0xa1, 0xf2, 0xfc, 0x97, 0xe3, 0x41, 0xda, 0x8e, 0xe9, 0x6f, 0xf5, 0xa5, 0x44, - 0x38, 0xce, 0xc7, 0x73, 0xdb, 0x0a, 0x96, 0x9f, 0xe4, 0x0d, 0xe3, 0x4d, 0xa9, 0x3d, 0x64, 0x72, - 0xf9, 0xfd, 0x6b, 0xe4, 0x32, 0x8c, 0x71, 0x85, 0xa1, 0x6c, 0xe8, 0x8c, 0xd6, 0xd0, 0xfb, 0xd7, - 0x4c, 0x59, 0x6e, 0x7c, 0x27, 0x13, 0xaa, 0x54, 0xe2, 0xcd, 0xbf, 0x7f, 0x8d, 0x7c, 0x6e, 0xb8, - 0x87, 0xbc, 0x82, 0x7c, 0xc8, 0x0b, 0x1f, 0xf1, 0x3e, 0xaf, 0x3d, 0xe2, 0xbd, 0x38, 0xb8, 0x9f, - 0xc4, 0xe5, 0x2d, 0x9e, 0x7d, 0xf0, 0x5f, 0x67, 0xe0, 0xdc, 0x40, 0x0a, 0xf2, 0x1c, 0x14, 0x4a, - 0xb5, 0xea, 0x56, 0x34, 0xb2, 0x6c, 0xb5, 0x48, 0x08, 0xb9, 0x05, 0xe3, 0x2b, 0xb6, 0xef, 0x34, - 0xd8, 0x04, 0x4e, 0x15, 0x47, 0x13, 0x6c, 0x43, 0xf4, 0xb5, 0x67, 0xcc, 0x88, 0x96, 0x58, 0x30, - 0x8b, 0xab, 0x20, 0x91, 0xdd, 0x2b, 0x2e, 0x8a, 0x24, 0x18, 0x26, 0xc8, 0xd8, 0x0e, 0x93, 0x00, - 0xc6, 0x17, 0xdf, 0x03, 0x29, 0x7b, 0xf6, 0x6f, 0xe0, 0x09, 0x62, 0x5d, 0x5c, 0x82, 0x42, 0x4d, - 0xaa, 0x55, 0x94, 0xe4, 0x9e, 0x52, 0x85, 0x62, 0x86, 0xa5, 0xc6, 0x5f, 0xce, 0x48, 0x79, 0xe1, - 0xf8, 0x0f, 0x51, 0xc2, 0xd9, 0x36, 0x07, 0x87, 0xb3, 0x6d, 0x7e, 0xcc, 0x70, 0xb6, 0xc6, 0x2f, - 0x8a, 0x48, 0x54, 0xd5, 0x66, 0x2d, 0x96, 0x16, 0xe1, 0x93, 0x9a, 0x25, 0xac, 0x6a, 0xb3, 0xf3, - 0x82, 0x12, 0x17, 0x3b, 0x59, 0x57, 0x7f, 0xeb, 0x04, 0x65, 0xaa, 0xfe, 0xcb, 0x2c, 0x3c, 0x37, - 0x88, 0x3c, 0x35, 0x83, 0x43, 0xe6, 0x64, 0x19, 0x1c, 0x2e, 0x43, 0x81, 0xc3, 0xf4, 0x4c, 0x74, - 0x82, 0x94, 0x75, 0xb8, 0x2c, 0x26, 0x17, 0x60, 0xb4, 0x54, 0xae, 0x47, 0x31, 0x80, 0xf1, 0x1d, - 0xcd, 0x6e, 0xf8, 0xf8, 0x42, 0x23, 0x8a, 0xc8, 0x57, 0x93, 0x61, 0xaf, 0x45, 0xf0, 0xdf, 0x67, - 0x95, 0x0e, 0x49, 0x04, 0x89, 0xc3, 0xf6, 0x46, 0x41, 0xcd, 0x44, 0x9c, 0x20, 0x33, 0x19, 0x42, - 0xdb, 0x80, 0xd1, 0x9a, 0x47, 0x7d, 0x1a, 0xa8, 0x6f, 0x5c, 0x5d, 0x84, 0x98, 0xa2, 0x44, 0xbc, - 0x40, 0xd9, 0x87, 0xdc, 0x7c, 0x7f, 0x54, 0xf5, 0x6e, 0xc2, 0x27, 0x2b, 0x06, 0x36, 0x15, 0x14, - 0xe3, 0x5b, 0x19, 0x98, 0x4f, 0x6b, 0x16, 0x79, 0x0e, 0xf2, 0x9d, 0xd4, 0x80, 0xdd, 0x1d, 0x6e, - 0x44, 0x3c, 0x81, 0x59, 0xc0, 0x76, 0x5d, 0xaf, 0x6d, 0x07, 0xea, 0xc3, 0x9e, 0x02, 0x36, 0x81, - 0xfd, 0xb8, 0x89, 0x7f, 0x93, 0x25, 0xb9, 0xd9, 0xe6, 0x12, 0x21, 0xbe, 0xf1, 0x3f, 0xa3, 0x04, - 0x50, 0x6d, 0xd6, 0x36, 0xbb, 0x3c, 0xe6, 0xd8, 0x75, 0xc8, 0xb3, 0x66, 0xc5, 0x26, 0x23, 0x9b, - 0x0e, 0xa5, 0xbb, 0xeb, 0x02, 0x89, 0xb7, 0x8a, 0xdd, 0x9d, 0x4c, 0x44, 0x36, 0xb6, 0x61, 0x5a, - 0xc7, 0x20, 0xab, 0x7a, 0x94, 0x8a, 0x28, 0x41, 0xf9, 0x8a, 0xeb, 0x72, 0xe3, 0x92, 0x95, 0xb3, - 0xdf, 0x3d, 0x5a, 0x02, 0xf6, 0x93, 0xd3, 0xa4, 0x45, 0xb1, 0x30, 0x7e, 0x22, 0x0b, 0xf3, 0x91, - 0x75, 0xb8, 0x5c, 0x12, 0x4f, 0xad, 0xc5, 0x64, 0x49, 0xb3, 0xe8, 0x5b, 0x4a, 0xe4, 0x00, 0x96, - 0x1f, 0x38, 0xc0, 0x90, 0xe8, 0x16, 0x2c, 0xf4, 0xc3, 0x27, 0xaf, 0x26, 0xb2, 0x74, 0x0a, 0x2f, - 0xc6, 0x30, 0x9d, 0xa7, 0x92, 0xb4, 0xf3, 0x9f, 0x66, 0x60, 0x51, 0x98, 0x44, 0xdc, 0xb5, 0x9d, - 0x0e, 0x66, 0x26, 0x6f, 0xd0, 0x27, 0x63, 0x6a, 0x7b, 0x4b, 0xdb, 0x96, 0x5e, 0xd2, 0x2d, 0x5f, - 0x12, 0xb5, 0xf5, 0xff, 0x5a, 0x72, 0x19, 0xfd, 0x55, 0x1b, 0x7c, 0xf2, 0xe6, 0xb9, 0x6b, 0x43, - 0x87, 0x01, 0x54, 0xd7, 0x06, 0xc4, 0x30, 0xfe, 0x1c, 0x3c, 0x3f, 0xb8, 0x02, 0xf2, 0x15, 0x98, - 0x2a, 0xed, 0xd1, 0x4e, 0x70, 0xaf, 0xbb, 0xe7, 0xd9, 0x4d, 0x2a, 0x15, 0x45, 0xf2, 0xfd, 0x46, - 0x2d, 0xe3, 0x3e, 0xba, 0xc2, 0xd4, 0x9e, 0xc1, 0xad, 0x9e, 0x20, 0xd2, 0xec, 0x8e, 0x54, 0x6e, - 0xc6, 0x37, 0x33, 0x40, 0x92, 0x3c, 0xc8, 0x0d, 0x98, 0xbc, 0xb7, 0x55, 0xae, 0x07, 0xb6, 0x17, - 0xac, 0xb9, 0x3d, 0x4f, 0xf8, 0xbe, 0x72, 0xcb, 0xeb, 0xa0, 0xc1, 0x76, 0x06, 0x2f, 0xb0, 0xf6, - 0xdd, 0x9e, 0x67, 0x6a, 0x78, 0x18, 0x48, 0x96, 0xd2, 0x83, 0xa6, 0x7d, 0xa8, 0x07, 0x92, 0x15, - 0x30, 0x2d, 0x90, 0xac, 0x80, 0x19, 0x7f, 0x2b, 0x03, 0xcf, 0xca, 0xb7, 0x94, 0x66, 0x4a, 0x5b, - 0xca, 0xe8, 0x5f, 0xe4, 0xc9, 0xd8, 0x1f, 0x83, 0x64, 0xd3, 0x59, 0xe9, 0x82, 0x87, 0x0d, 0x44, - 0x21, 0x95, 0xd3, 0x92, 0xf7, 0x21, 0x5f, 0x0f, 0xdc, 0xee, 0x10, 0x3e, 0x78, 0xc5, 0x70, 0x44, - 0x03, 0xb7, 0x8b, 0x2c, 0x90, 0xd2, 0xa0, 0x30, 0xaf, 0x36, 0x4e, 0xb6, 0x98, 0xdc, 0x85, 0x31, - 0xe1, 0x1c, 0x1d, 0xd3, 0x3b, 0x0d, 0xf8, 0xa6, 0x95, 0x19, 0xe9, 0xe8, 0x27, 0x62, 0x4f, 0x98, - 0x92, 0x87, 0xf1, 0xe3, 0x19, 0x98, 0x60, 0xc2, 0x03, 0x5e, 0xb9, 0x3e, 0xe9, 0x94, 0xd6, 0xe5, - 0x40, 0xa9, 0xb6, 0x0c, 0xd9, 0x0f, 0x75, 0xb8, 0xbe, 0x01, 0x33, 0x31, 0x02, 0x62, 0xa0, 0x8b, - 0x47, 0xcb, 0xe1, 0x09, 0xee, 0xa5, 0xce, 0x4f, 0x83, 0x19, 0xff, 0x4e, 0x06, 0xe6, 0x37, 0x0f, - 0x02, 0xbb, 0x8a, 0x57, 0x48, 0xb3, 0xd7, 0x92, 0xeb, 0x9d, 0x09, 0x44, 0xf2, 0x51, 0x8e, 0xdb, - 0x9f, 0x73, 0x81, 0x48, 0xc0, 0xcc, 0xb0, 0x94, 0xac, 0x41, 0x41, 0x9c, 0x2f, 0xbe, 0x08, 0x19, - 0x21, 0xdf, 0x94, 0x75, 0xc6, 0x02, 0x89, 0x7d, 0x09, 0x6e, 0x61, 0x82, 0xc6, 0x0c, 0xa9, 0x8d, - 0x3f, 0xca, 0xc0, 0x99, 0x3e, 0x34, 0xe4, 0x1d, 0x18, 0x41, 0x63, 0x3e, 0x31, 0x7a, 0xcf, 0xf5, - 0xa9, 0x22, 0x68, 0xec, 0xdf, 0xbf, 0xc6, 0x0f, 0xa2, 0x36, 0xfb, 0x61, 0x72, 0x2a, 0xf2, 0x21, - 0x8c, 0x97, 0x9a, 0x4d, 0x71, 0x2f, 0xc9, 0x6a, 0xf7, 0x92, 0x3e, 0x35, 0x5e, 0x09, 0xf1, 0xf9, - 0xbd, 0x84, 0x9b, 0x95, 0x34, 0x9b, 0x96, 0x30, 0x54, 0x8c, 0xf8, 0x2d, 0xbe, 0x0d, 0xd3, 0x3a, - 0xf2, 0x89, 0xee, 0x25, 0xdf, 0xc9, 0x40, 0x51, 0x6f, 0xc3, 0xa7, 0xe3, 0xa2, 0x98, 0x36, 0xcc, - 0xc7, 0x4c, 0xaa, 0x9f, 0xca, 0xc2, 0xa9, 0xd4, 0x1e, 0x26, 0xaf, 0xc3, 0x68, 0xa9, 0xdb, 0xad, - 0x56, 0xc4, 0xac, 0x12, 0x02, 0x0f, 0x6a, 0x5a, 0xb5, 0x6b, 0x1b, 0x47, 0x22, 0xd7, 0xa1, 0x80, - 0x33, 0x93, 0x11, 0x64, 0xa3, 0xe0, 0x0d, 0xfc, 0x69, 0x23, 0x16, 0xbc, 0x41, 0x22, 0x92, 0x9b, - 0x30, 0x2d, 0xbc, 0x95, 0x4c, 0xba, 0x47, 0x1f, 0x85, 0x51, 0xc4, 0x30, 0xd0, 0x99, 0xf4, 0x6d, - 0xb2, 0x3c, 0x5e, 0xa6, 0xfa, 0xeb, 0xe8, 0x54, 0x98, 0x35, 0x96, 0xf1, 0x54, 0x39, 0xf1, 0x08, - 0x12, 0x3c, 0x6b, 0x2c, 0x36, 0xa2, 0x0f, 0xaf, 0x04, 0x65, 0x38, 0x5c, 0x25, 0xdf, 0x77, 0xf6, - 0x3a, 0x6d, 0xda, 0x09, 0x3e, 0xbd, 0xe1, 0x8a, 0xea, 0x18, 0x6a, 0xb8, 0xbe, 0x9d, 0xe7, 0x8b, - 0x39, 0x4e, 0x76, 0x4c, 0x62, 0xf4, 0x0a, 0x8c, 0x71, 0x3f, 0x29, 0xb9, 0x32, 0xce, 0xa5, 0x36, - 0x81, 0xe3, 0xdc, 0xbf, 0xc6, 0xc5, 0x17, 0x6e, 0x55, 0xe8, 0x9b, 0x92, 0x94, 0xdc, 0x87, 0x89, - 0x72, 0x8b, 0xda, 0x9d, 0x5e, 0x77, 0x6b, 0x38, 0x05, 0xe3, 0x82, 0xf8, 0x96, 0xc9, 0x06, 0x27, - 0x43, 0xc5, 0x24, 0xee, 0xe4, 0x2a, 0x23, 0xb2, 0x15, 0x1a, 0x1a, 0xe5, 0x51, 0x1f, 0xfa, 0x99, - 0x01, 0xfd, 0x13, 0x07, 0x22, 0x9d, 0x6e, 0x45, 0x27, 0x2c, 0x91, 0x2c, 0x98, 0x5e, 0xb7, 0xfd, - 0x60, 0xcb, 0xb3, 0x3b, 0x3e, 0x86, 0x3a, 0x18, 0xc2, 0xff, 0x54, 0x26, 0x67, 0x9b, 0x41, 0x6d, - 0x64, 0x10, 0x92, 0x62, 0x9b, 0x63, 0xec, 0x98, 0xbc, 0x74, 0xd3, 0xe9, 0xd8, 0x2d, 0xe7, 0x1b, - 0xd2, 0x1e, 0x93, 0xcb, 0x4b, 0xbb, 0x12, 0x68, 0x46, 0xe5, 0xc6, 0x97, 0x13, 0xe3, 0xc6, 0x5b, - 0x39, 0x01, 0x63, 0xc2, 0x04, 0x9f, 0x9b, 0xa4, 0xd7, 0x56, 0x37, 0x2a, 0xd5, 0x8d, 0x5b, 0xc5, - 0x0c, 0x99, 0x06, 0xa8, 0x99, 0x9b, 0xe5, 0xd5, 0x7a, 0x9d, 0xfd, 0xce, 0xb2, 0xdf, 0xc2, 0x5e, - 0xfd, 0xe6, 0xbd, 0xf5, 0x62, 0x4e, 0x31, 0x59, 0xcf, 0x1b, 0xff, 0x24, 0x03, 0xa7, 0xd3, 0x87, - 0x92, 0x6c, 0x01, 0x3a, 0x2d, 0x08, 0x55, 0xf3, 0x8d, 0x81, 0xe3, 0x9e, 0x0a, 0x8e, 0x3b, 0x3f, - 0x04, 0xdc, 0xa8, 0x3e, 0x2b, 0x5f, 0x8e, 0xa2, 0xb4, 0x62, 0x4e, 0xd3, 0x28, 0xc3, 0x42, 0x3f, - 0x1e, 0xfa, 0xa7, 0xce, 0xc0, 0x44, 0xa9, 0x56, 0x5b, 0xaf, 0x96, 0x4b, 0x5b, 0xd5, 0xcd, 0x8d, - 0x62, 0x86, 0x8c, 0xc3, 0xc8, 0x2d, 0x73, 0xf3, 0x5e, 0xad, 0x98, 0x35, 0xfe, 0x4a, 0x06, 0xa6, - 0xaa, 0x9d, 0x80, 0xee, 0xf1, 0x18, 0xe6, 0x9f, 0x74, 0xf1, 0x7d, 0x41, 0x5b, 0x7c, 0x0b, 0xa1, - 0x7b, 0x4f, 0x58, 0xc1, 0x50, 0x2b, 0xef, 0x9f, 0x65, 0x60, 0x36, 0x41, 0x43, 0xea, 0x30, 0x56, - 0xda, 0xae, 0x6f, 0x56, 0x2b, 0x65, 0xd1, 0x32, 0x29, 0x95, 0x0b, 0x68, 0xb2, 0x16, 0x6e, 0x3d, - 0xfb, 0xd0, 0xb7, 0x5c, 0xa7, 0xa9, 0xe4, 0x45, 0x58, 0x7b, 0xc6, 0x94, 0x9c, 0xf0, 0x24, 0xfb, - 0x46, 0xcf, 0xfb, 0x7f, 0xa9, 0xbb, 0x9e, 0xde, 0x36, 0x8e, 0x2b, 0xae, 0x25, 0x25, 0x45, 0x7a, - 0x94, 0xac, 0xd5, 0xd8, 0x91, 0x55, 0xd9, 0x96, 0x5d, 0xc2, 0x35, 0xea, 0x6d, 0xe3, 0x34, 0x71, - 0x83, 0xc4, 0x29, 0x52, 0x63, 0x45, 0x0e, 0xc5, 0xb5, 0x96, 0xbb, 0xf4, 0xee, 0xd2, 0x8a, 0xdd, - 0x3f, 0x0b, 0x5a, 0x5a, 0xdb, 0x6c, 0xe9, 0x25, 0x43, 0x52, 0x71, 0xdd, 0x5b, 0x2f, 0xb9, 0x14, - 0x01, 0x8a, 0x5e, 0x7b, 0xe8, 0x25, 0x97, 0x7e, 0x86, 0x7e, 0x81, 0x00, 0x45, 0x81, 0xdc, 0x0b, - 0x04, 0xad, 0x81, 0x5e, 0x7a, 0xef, 0x25, 0xa7, 0x62, 0xde, 0xcc, 0xec, 0xce, 0xee, 0x92, 0x8a, - 0xe4, 0x18, 0x2d, 0x7a, 0x13, 0xdf, 0xbc, 0x19, 0xcd, 0xce, 0x9f, 0x37, 0xef, 0xcd, 0xbc, 0xf7, - 0x7b, 0x11, 0x36, 0x5b, 0xca, 0xdc, 0x68, 0x26, 0xf4, 0x62, 0xc3, 0x3c, 0x65, 0x3a, 0x2b, 0x2f, - 0x36, 0x9d, 0xb6, 0xb7, 0xb3, 0x0a, 0x15, 0x61, 0xb5, 0xa0, 0x41, 0xf0, 0xa9, 0x06, 0x9b, 0xb3, - 0xfa, 0xca, 0x0c, 0xa1, 0xac, 0x2b, 0xfd, 0x46, 0x02, 0x92, 0x97, 0xf5, 0xa1, 0x97, 0x6c, 0xe4, - 0x36, 0x54, 0x78, 0xae, 0x46, 0xff, 0x66, 0xc7, 0xb3, 0xc4, 0x02, 0xb9, 0xf4, 0xaf, 0x2f, 0x2f, - 0x9f, 0x17, 0x69, 0xe5, 0xc7, 0x37, 0xb3, 0x39, 0xc6, 0x37, 0x35, 0x4f, 0xad, 0x51, 0xfd, 0x44, - 0x83, 0xad, 0xd9, 0x1f, 0xc9, 0x4e, 0x99, 0x80, 0xe9, 0xe6, 0xa9, 0x37, 0x32, 0x9e, 0x32, 0xa8, - 0xaf, 0xe7, 0xdc, 0x91, 0x13, 0x46, 0x56, 0x29, 0x97, 0xbb, 0x5e, 0x4d, 0x34, 0x92, 0xad, 0x24, - 0x19, 0xab, 0x7f, 0x28, 0xc1, 0x06, 0x5b, 0x40, 0xfd, 0x68, 0x3c, 0x36, 0x8f, 0x26, 0x4f, 0xa2, - 0x78, 0x22, 0x54, 0x2a, 0xf2, 0x2e, 0x2c, 0x3e, 0x39, 0xdd, 0x6d, 0x20, 0x67, 0x27, 0x04, 0x50, - 0x28, 0x4b, 0x77, 0x11, 0xf6, 0x37, 0xb9, 0x04, 0x4a, 0x62, 0x17, 0x94, 0xa9, 0x2b, 0xde, 0xf2, - 0x30, 0x49, 0xef, 0xf2, 0x1e, 0x2c, 0xa0, 0xf5, 0x2f, 0x44, 0xa3, 0x54, 0x69, 0xa7, 0xf7, 0x0c, - 0xef, 0x06, 0x3c, 0x5e, 0x81, 0xbc, 0x09, 0x90, 0x82, 0xb1, 0x09, 0xd9, 0x27, 0xcd, 0xe8, 0x04, - 0x8f, 0xcd, 0x5b, 0x7e, 0xfa, 0xa8, 0x2b, 0x10, 0xce, 0x0c, 0x58, 0x97, 0x43, 0x32, 0x94, 0xe1, - 0xe6, 0xe2, 0x1d, 0x66, 0x8d, 0x17, 0x58, 0x43, 0x11, 0x72, 0x5e, 0xfd, 0x67, 0x09, 0x96, 0xf7, - 0x99, 0xa2, 0x80, 0xe6, 0xef, 0xf1, 0xe6, 0xf4, 0xdb, 0x50, 0xb1, 0x07, 0x5d, 0x71, 0x77, 0x3f, - 0x16, 0x88, 0x17, 0xe8, 0x92, 0xdb, 0x1f, 0x74, 0xe5, 0x33, 0xc0, 0xd8, 0x53, 0x99, 0xbe, 0xc6, - 0x9d, 0xf8, 0x0e, 0x2c, 0x72, 0xbf, 0x07, 0x71, 0x51, 0x23, 0x55, 0xc5, 0xa4, 0x47, 0x37, 0x78, - 0xb1, 0x72, 0xdd, 0xcc, 0x3d, 0x27, 0x54, 0xbd, 0x45, 0x00, 0x5e, 0x28, 0xc6, 0xfe, 0xc2, 0xc9, - 0x8c, 0x7d, 0x25, 0xb0, 0x77, 0xf1, 0x24, 0x81, 0xbd, 0x5b, 0xb7, 0xa0, 0xa2, 0xf4, 0xe7, 0x54, - 0x9a, 0xe3, 0x6f, 0x4a, 0xb0, 0x8a, 0x5f, 0x95, 0x3c, 0x25, 0xfd, 0x7f, 0x5e, 0x5d, 0xbc, 0x9f, - 0xb9, 0xba, 0xd8, 0x54, 0xe7, 0x8b, 0x7f, 0xd9, 0x31, 0x77, 0x16, 0x77, 0x60, 0xbd, 0xc0, 0x48, - 0xde, 0x81, 0x05, 0xd6, 0x7d, 0x69, 0xea, 0xe9, 0xf9, 0x15, 0x90, 0x82, 0xc0, 0xb0, 0x0f, 0x1f, - 0x7b, 0x9c, 0xbb, 0xfa, 0x6f, 0x0d, 0x56, 0x04, 0x3a, 0x5f, 0xfc, 0x68, 0xf0, 0xb5, 0xc3, 0x79, - 0x2d, 0x3f, 0x9c, 0x3c, 0x38, 0x46, 0x0c, 0xe7, 0x7f, 0x7b, 0x10, 0x6f, 0x65, 0x06, 0xf1, 0x7c, - 0x12, 0x12, 0x2e, 0x3f, 0xe7, 0x98, 0x31, 0xfc, 0x33, 0x82, 0xa4, 0x64, 0x19, 0xc9, 0xcf, 0x61, - 0xd9, 0x89, 0x9e, 0x65, 0x2c, 0xa6, 0x6b, 0x33, 0x1a, 0xbd, 0x91, 0x30, 0xf2, 0x3d, 0x85, 0x87, - 0x4d, 0x1c, 0x3d, 0x0b, 0x0b, 0xcf, 0x38, 0x69, 0x93, 0xcc, 0x68, 0xca, 0x56, 0x3b, 0xcd, 0xd2, - 0x17, 0x2e, 0x9a, 0x18, 0xef, 0xf5, 0xa7, 0x32, 0x40, 0xea, 0xdd, 0xc6, 0x36, 0x60, 0x94, 0xc1, - 0xb0, 0x15, 0x77, 0xc7, 0x48, 0x52, 0xd7, 0xb8, 0x20, 0x91, 0x6b, 0xe2, 0x52, 0xb4, 0x34, 0x3b, - 0x64, 0x1f, 0xaf, 0x47, 0x6b, 0xc2, 0x7b, 0xec, 0x30, 0xea, 0x77, 0xb9, 0x2c, 0x2e, 0xef, 0x5c, - 0x45, 0x84, 0x96, 0x84, 0x3a, 0x23, 0xcd, 0x0a, 0xfa, 0x98, 0xd5, 0x19, 0x43, 0xc1, 0x63, 0x74, - 0xfe, 0xe5, 0x3d, 0x46, 0x17, 0x5e, 0xc2, 0x63, 0x74, 0xf1, 0x84, 0x1e, 0xa3, 0x6d, 0x58, 0xee, - 0xc5, 0x1f, 0x47, 0xf1, 0x64, 0x30, 0x7a, 0x8e, 0xfe, 0x64, 0xe9, 0x55, 0x16, 0x1b, 0x6a, 0x4b, - 0x96, 0xf1, 0xf9, 0xc6, 0x03, 0x33, 0xe1, 0x57, 0xa7, 0x3b, 0x21, 0x0a, 0xc7, 0x96, 0xaf, 0x4a, - 0x40, 0x8a, 0x0d, 0x90, 0xf7, 0xa1, 0xc2, 0x45, 0x70, 0x38, 0x1a, 0x7f, 0x24, 0xdc, 0x0d, 0x79, - 0x5c, 0x9d, 0x42, 0x56, 0xe3, 0xea, 0x38, 0xd9, 0x1b, 0x7f, 0xd4, 0x27, 0x3f, 0x83, 0xb3, 0x38, - 0x01, 0xc3, 0x68, 0xd4, 0x1b, 0x1c, 0x86, 0x08, 0x29, 0xd2, 0xed, 0x0b, 0xd0, 0xf4, 0x37, 0x30, - 0xbb, 0x47, 0xb1, 0x78, 0xc6, 0x44, 0xa1, 0x57, 0x5f, 0x1b, 0x39, 0xdb, 0x9c, 0x91, 0x04, 0xa0, - 0xab, 0xf5, 0x1f, 0x1d, 0xf5, 0xfb, 0x62, 0xee, 0x0d, 0xcc, 0xa2, 0x9c, 0x2b, 0x9b, 0xd1, 0xf0, - 0x99, 0xb4, 0xe1, 0xc6, 0x51, 0xbf, 0x4f, 0xde, 0x05, 0x18, 0xc4, 0xe1, 0xd3, 0xde, 0x78, 0xcc, - 0x1f, 0x14, 0x12, 0x8f, 0xdc, 0x94, 0xaa, 0x0e, 0xe3, 0x20, 0x6e, 0x71, 0x22, 0xf9, 0x21, 0xa0, - 0x3b, 0x3e, 0xc6, 0xa9, 0xe0, 0x0a, 0x58, 0x10, 0x30, 0x88, 0x92, 0x98, 0x9d, 0xce, 0xc7, 0x91, - 0xdf, 0xfb, 0xb5, 0xf4, 0x2a, 0x7a, 0x00, 0xeb, 0xc2, 0x21, 0x64, 0xbf, 0x37, 0x79, 0x22, 0xf4, - 0xdf, 0x6f, 0xa2, 0x3c, 0x2b, 0x0a, 0xf0, 0xdf, 0xe6, 0x01, 0xcc, 0x7d, 0x5f, 0x86, 0x80, 0x5e, - 0x87, 0x05, 0xa6, 0xd5, 0xcb, 0xdb, 0x01, 0xbc, 0x5b, 0xc5, 0x76, 0xd5, 0xbb, 0x55, 0xe4, 0x60, - 0xfb, 0xd5, 0x8b, 0x1e, 0xe3, 0x05, 0x55, 0x29, 0xbd, 0x4a, 0x18, 0x71, 0x52, 0x46, 0x8b, 0xe4, - 0x24, 0x62, 0x03, 0xa4, 0x41, 0x99, 0xc2, 0xce, 0x5c, 0x4f, 0xa3, 0x9b, 0x44, 0x81, 0xc0, 0xb7, - 0x4b, 0x03, 0x3b, 0xd5, 0xe5, 0x93, 0xb2, 0x91, 0x3d, 0x98, 0x0f, 0xba, 0x89, 0xbf, 0xe9, 0x8c, - 0x50, 0xd5, 0x2b, 0x02, 0xd4, 0x3e, 0x0d, 0x57, 0x3d, 0x33, 0xe9, 0x66, 0x72, 0x7f, 0x60, 0x23, - 0x84, 0xc2, 0xa2, 0x48, 0x58, 0x34, 0x03, 0xb7, 0x40, 0xe4, 0x2b, 0x12, 0x30, 0x41, 0x48, 0x54, - 0xb5, 0x0e, 0x91, 0x9a, 0xe8, 0x6d, 0x28, 0xfb, 0x7e, 0x4b, 0x04, 0x68, 0xac, 0xa6, 0x36, 0x83, - 0xef, 0xb7, 0x64, 0x52, 0xb6, 0xa7, 0x4a, 0x35, 0xc6, 0x4c, 0x7e, 0x04, 0x15, 0x45, 0x21, 0x16, - 0xa1, 0x4d, 0x38, 0x06, 0xbd, 0x94, 0xac, 0x8a, 0x15, 0x85, 0x9b, 0xd8, 0xa0, 0xef, 0x1d, 0x3d, - 0x8c, 0xcc, 0xe1, 0x10, 0x7d, 0x25, 0x3f, 0x8e, 0x46, 0x1c, 0x7b, 0x6f, 0x29, 0x45, 0xd8, 0x09, - 0xbb, 0xc3, 0x61, 0x78, 0x28, 0x4b, 0xd5, 0x1b, 0x92, 0x7c, 0x4d, 0xd2, 0x86, 0x75, 0x3f, 0x9a, - 0x1c, 0x0d, 0xb9, 0x3b, 0x44, 0x63, 0x30, 0x62, 0x26, 0x02, 0x0f, 0x84, 0x42, 0x30, 0x92, 0x31, - 0x2b, 0x94, 0x3e, 0x28, 0x8f, 0x06, 0xa3, 0x9c, 0xb9, 0x50, 0xac, 0x5c, 0x8d, 0xd4, 0x29, 0x67, - 0xe7, 0x6e, 0xd6, 0xf0, 0xc0, 0x73, 0x57, 0x1a, 0x1e, 0xa9, 0xb9, 0xf1, 0xe6, 0x94, 0x60, 0x5d, - 0x7c, 0xce, 0x52, 0x82, 0x75, 0x33, 0x21, 0xba, 0x9f, 0xcd, 0x2b, 0x20, 0x10, 0x62, 0x2e, 0x3e, - 0x00, 0xb8, 0x33, 0xe8, 0xc5, 0xad, 0x68, 0xf2, 0x64, 0x70, 0xa8, 0xc4, 0x0c, 0x57, 0x7e, 0x31, - 0xe8, 0xc5, 0xe1, 0x53, 0x24, 0x7f, 0xf5, 0xe5, 0x65, 0x85, 0xc9, 0x53, 0xfe, 0x26, 0xdf, 0x87, - 0x65, 0xf6, 0x2b, 0x48, 0x9d, 0x3a, 0xf8, 0x45, 0x22, 0xd6, 0x16, 0xc9, 0x1d, 0x13, 0x06, 0x72, - 0x0b, 0x01, 0x32, 0x7b, 0xc3, 0x89, 0xa2, 0xde, 0x4a, 0x34, 0xcc, 0xde, 0x70, 0x92, 0x07, 0xd4, - 0x51, 0x98, 0x49, 0x33, 0xe9, 0xba, 0x84, 0x58, 0x15, 0x38, 0x9c, 0x78, 0x5b, 0x26, 0xd6, 0x5a, - 0x28, 0x01, 0x59, 0xd5, 0x64, 0x18, 0xb9, 0x6a, 0xd8, 0x09, 0xbf, 0x59, 0xe7, 0xcf, 0x1b, 0xe2, - 0x94, 0xe1, 0x9d, 0x18, 0x3f, 0x39, 0x0c, 0x0f, 0x90, 0x9c, 0xe9, 0x44, 0xc2, 0x4c, 0x76, 0x60, - 0x8d, 0x47, 0xb6, 0x25, 0x50, 0xed, 0xe2, 0xc4, 0x41, 0xd9, 0x96, 0x62, 0xb9, 0xab, 0xff, 0x3e, - 0x57, 0x81, 0x34, 0x60, 0x01, 0x4d, 0x3c, 0x11, 0x5e, 0x74, 0x41, 0xb5, 0x6d, 0xf3, 0xfb, 0x08, - 0xe5, 0x0a, 0x5a, 0xb5, 0xaa, 0x5c, 0x41, 0x56, 0xf2, 0x21, 0x00, 0x8d, 0x47, 0x83, 0x7e, 0x1f, - 0xb1, 0x66, 0x96, 0xd0, 0x40, 0xba, 0x94, 0xdd, 0x8f, 0xd8, 0x4a, 0xca, 0x24, 0x33, 0xfc, 0xb3, - 0xdf, 0x61, 0x0e, 0x91, 0x46, 0x69, 0xab, 0x6a, 0xc1, 0x22, 0xdf, 0x8c, 0x88, 0xdb, 0x24, 0x40, - 0x21, 0x15, 0xd4, 0x1f, 0x8e, 0xdb, 0x24, 0xe8, 0x45, 0xdc, 0x26, 0xa5, 0x42, 0x75, 0x0f, 0xce, - 0x4d, 0xfb, 0xb0, 0x8c, 0x51, 0xaa, 0x9d, 0xd4, 0x28, 0xfd, 0x63, 0x19, 0x56, 0xb0, 0x35, 0x29, - 0x85, 0x4d, 0x58, 0xf5, 0x8f, 0x1e, 0x26, 0x61, 0x98, 0x52, 0x1a, 0x63, 0xff, 0xc6, 0x6a, 0x81, - 0xfa, 0xf0, 0x94, 0xa9, 0x41, 0x28, 0x9c, 0x91, 0x27, 0xc1, 0xae, 0xf4, 0x39, 0x4b, 0x20, 0x93, - 0x24, 0x40, 0x40, 0x31, 0x55, 0x45, 0xae, 0x52, 0x7a, 0x1e, 0x94, 0x4f, 0x73, 0x1e, 0xcc, 0x9f, - 0xe8, 0x3c, 0xf8, 0x09, 0xac, 0xc8, 0xff, 0x86, 0x92, 0x7c, 0xe1, 0x9b, 0x49, 0xf2, 0x4c, 0x63, - 0xc4, 0x4e, 0x24, 0xfa, 0xe2, 0xb1, 0x12, 0x1d, 0x5f, 0xf3, 0xe4, 0x2e, 0x2b, 0x64, 0x9f, 0x13, - 0x6d, 0x20, 0x96, 0xfb, 0x6e, 0xad, 0xfd, 0x12, 0xa7, 0xe4, 0x3b, 0xb0, 0x6c, 0x0f, 0xe4, 0x43, - 0x8e, 0x72, 0x83, 0xde, 0x97, 0x44, 0x55, 0x5d, 0x48, 0x38, 0x93, 0xd3, 0xad, 0xfc, 0x2a, 0x4e, - 0xb7, 0x5b, 0x00, 0xc2, 0x99, 0x31, 0xc5, 0x60, 0xc6, 0x2d, 0x23, 0xa3, 0x70, 0xb2, 0x17, 0xf9, - 0x0a, 0x33, 0x93, 0x4e, 0xc2, 0xe5, 0xc3, 0x3c, 0x38, 0x18, 0x1c, 0xc5, 0x93, 0x4c, 0xd2, 0x12, - 0x11, 0x70, 0xc7, 0x8e, 0x04, 0x2c, 0x53, 0xc5, 0x43, 0xae, 0xda, 0xab, 0x9d, 0x10, 0x72, 0x37, - 0xf1, 0x55, 0x3b, 0x36, 0x87, 0x63, 0xb5, 0x30, 0x42, 0x33, 0x3d, 0xd4, 0xaa, 0x7f, 0xd1, 0x54, - 0xbc, 0xba, 0x97, 0x98, 0xea, 0xf7, 0x00, 0x92, 0x97, 0x74, 0x39, 0xd7, 0xdc, 0xa2, 0x4a, 0xa8, - 0xea, 0x28, 0xa7, 0xbc, 0xca, 0xd7, 0x94, 0x5f, 0xd5, 0xd7, 0x04, 0x50, 0x71, 0x7f, 0x39, 0xe9, - 0xa6, 0xae, 0x17, 0xe0, 0x27, 0x9a, 0x2c, 0x4a, 0x26, 0x99, 0x6b, 0x32, 0xd5, 0x83, 0x67, 0xe6, - 0x9a, 0x4c, 0x2a, 0x56, 0xef, 0xc2, 0x9a, 0x1a, 0x2a, 0xf0, 0x3c, 0x3e, 0x20, 0x3f, 0xe6, 0x78, - 0x1f, 0x5a, 0xc6, 0xd6, 0x50, 0x98, 0x98, 0xc4, 0x7d, 0x1e, 0x1f, 0x70, 0xfd, 0xa7, 0xfb, 0x4c, - 0xed, 0x2b, 0x5a, 0x81, 0x5f, 0x68, 0x40, 0x8a, 0xec, 0xaa, 0x34, 0xd1, 0xfe, 0x07, 0xda, 0x65, - 0x4e, 0x2b, 0x9b, 0x3f, 0x8d, 0x56, 0x66, 0xfc, 0x4e, 0x83, 0x35, 0xcb, 0x6c, 0x09, 0x70, 0x39, - 0xfe, 0x22, 0xf0, 0x6d, 0xb8, 0x64, 0x99, 0xad, 0xb0, 0xed, 0xda, 0x56, 0xed, 0x7e, 0x38, 0x15, - 0xba, 0xe6, 0x12, 0x7c, 0xab, 0xc8, 0x92, 0xbe, 0x1c, 0x5c, 0x84, 0xcd, 0x62, 0xb1, 0x84, 0xb7, - 0x99, 0x5e, 0x59, 0x22, 0xe1, 0x94, 0x8d, 0xdb, 0xb0, 0x26, 0x51, 0x5f, 0x02, 0xdb, 0x47, 0x94, - 0xb6, 0x35, 0xa8, 0xdc, 0xa3, 0x9e, 0xd5, 0xb8, 0x1f, 0x36, 0x3a, 0xb6, 0xad, 0xcf, 0x91, 0x55, - 0x58, 0x16, 0x84, 0x9a, 0xa9, 0x6b, 0x64, 0x05, 0x96, 0x2c, 0xc7, 0xa7, 0xb5, 0x8e, 0x47, 0xf5, - 0x92, 0x71, 0x1b, 0xce, 0xa4, 0x09, 0xf9, 0xf1, 0xe2, 0xff, 0x35, 0x28, 0x7b, 0xe6, 0xbe, 0x3e, - 0x47, 0x00, 0x16, 0xdb, 0x7b, 0x35, 0xff, 0xad, 0xb7, 0x74, 0x8d, 0x54, 0xe0, 0xb5, 0xdd, 0x5a, - 0x3b, 0xdc, 0x6b, 0xf9, 0x7a, 0x89, 0xfd, 0x30, 0xf7, 0x7d, 0xfc, 0x51, 0x36, 0x7e, 0x00, 0xeb, - 0xa8, 0x2b, 0xd8, 0xbd, 0xf1, 0x24, 0x8a, 0xa3, 0x11, 0xf6, 0x61, 0x05, 0x96, 0xfc, 0x88, 0x6d, - 0xf2, 0x49, 0xc4, 0x3b, 0xd0, 0x3a, 0xea, 0x4f, 0x7a, 0xc3, 0x7e, 0xf4, 0x2b, 0x5d, 0x33, 0x6e, - 0xc1, 0x9a, 0x37, 0x38, 0x9a, 0xf4, 0xe2, 0xc7, 0xfe, 0x84, 0x71, 0x3c, 0x7e, 0x4e, 0x5e, 0x87, - 0xf5, 0x8e, 0x63, 0xb6, 0x76, 0xac, 0xdd, 0x8e, 0xdb, 0xf1, 0xc3, 0x96, 0x19, 0xd4, 0x9a, 0xfc, - 0xd9, 0xa1, 0xe5, 0xfa, 0x41, 0xe8, 0xd1, 0x1a, 0x75, 0x02, 0x5d, 0x33, 0x7e, 0xab, 0xc1, 0x99, - 0xce, 0x58, 0xb8, 0xca, 0x76, 0xd0, 0x95, 0xfe, 0x0a, 0x5c, 0xec, 0xf8, 0xd4, 0x0b, 0x03, 0x77, - 0x8f, 0x3a, 0x61, 0xc7, 0x37, 0x77, 0xf3, 0xb8, 0x49, 0x97, 0xe1, 0x82, 0xc2, 0xe1, 0xd1, 0x9a, - 0x7b, 0x8f, 0x7a, 0x61, 0xdb, 0xf4, 0xfd, 0x7d, 0xd7, 0xab, 0xeb, 0x1a, 0xd9, 0x82, 0x8d, 0x29, - 0x0c, 0xad, 0x86, 0xa9, 0x97, 0x0a, 0x65, 0x0e, 0xdd, 0x37, 0xed, 0x70, 0xc7, 0x0d, 0xf4, 0xb2, - 0xd1, 0x62, 0x07, 0x1d, 0x42, 0x8b, 0x70, 0x44, 0xd6, 0x25, 0x98, 0x77, 0x5c, 0x87, 0xe6, 0x9f, - 0x86, 0x56, 0x60, 0xc9, 0x6c, 0xb7, 0x3d, 0xf7, 0x1e, 0x4e, 0x28, 0xc0, 0x62, 0x9d, 0x3a, 0xac, - 0x67, 0x65, 0x56, 0xd2, 0xf6, 0xdc, 0x96, 0x1b, 0xd0, 0xba, 0x3e, 0x6f, 0x78, 0x72, 0xc3, 0xc8, - 0x46, 0x0f, 0x06, 0xfc, 0x1d, 0xa6, 0x4e, 0x1b, 0x66, 0xc7, 0x0e, 0xc4, 0x80, 0xdc, 0x0f, 0x3d, - 0x7a, 0xb7, 0x43, 0xfd, 0xc0, 0xd7, 0x35, 0xa2, 0xc3, 0x8a, 0x43, 0x69, 0xdd, 0x0f, 0x3d, 0x7a, - 0xcf, 0xa2, 0xfb, 0x7a, 0x89, 0xb5, 0xc9, 0xff, 0x66, 0xff, 0xc1, 0xf8, 0x4c, 0x03, 0xc2, 0x61, - 0x59, 0x24, 0x72, 0x26, 0xce, 0xcf, 0x36, 0x6c, 0x35, 0xd9, 0xc0, 0xe2, 0xa7, 0xb5, 0xdc, 0x7a, - 0x7e, 0xc8, 0x36, 0x80, 0xe4, 0xca, 0xdd, 0x46, 0x43, 0xd7, 0xc8, 0x05, 0x38, 0x9b, 0xa3, 0xd7, - 0x3d, 0xb7, 0xad, 0x97, 0xb6, 0x4a, 0x4b, 0x1a, 0x39, 0x5f, 0x28, 0xdc, 0xa3, 0xb4, 0xad, 0x97, - 0xd9, 0x14, 0xe5, 0x0a, 0xe4, 0x02, 0xe4, 0xd5, 0xe7, 0x8d, 0x4f, 0x34, 0xd8, 0xe0, 0xdd, 0x94, - 0xab, 0x39, 0xe9, 0xea, 0x45, 0xd8, 0x14, 0x08, 0x52, 0xd3, 0x3a, 0x7a, 0x0e, 0xf4, 0x4c, 0x29, - 0xef, 0xe6, 0xeb, 0xb0, 0x9e, 0xa1, 0x62, 0x3f, 0x4a, 0x6c, 0xaf, 0x66, 0xc8, 0x3b, 0xd4, 0x0f, - 0x42, 0xda, 0x68, 0xb8, 0x5e, 0xc0, 0x3b, 0x52, 0x36, 0xaa, 0xb0, 0x5e, 0x8b, 0x46, 0x13, 0x66, - 0x83, 0xc4, 0xe3, 0xde, 0x20, 0xc6, 0x2e, 0xac, 0xc2, 0x32, 0xfd, 0x30, 0xa0, 0x8e, 0x6f, 0xb9, - 0x8e, 0x3e, 0x67, 0x5c, 0xcc, 0xf1, 0xc8, 0x5d, 0xe3, 0xfb, 0x4d, 0x7d, 0xce, 0xe8, 0xc2, 0xaa, - 0x74, 0x4d, 0xe5, 0xab, 0x62, 0x1b, 0xb6, 0xe4, 0x5a, 0xc3, 0xfd, 0x9b, 0xff, 0x84, 0x4d, 0x38, - 0x57, 0x2c, 0xa7, 0x81, 0xae, 0xb1, 0x59, 0xc8, 0x95, 0x30, 0x7a, 0xc9, 0xf8, 0x29, 0xac, 0x64, - 0x20, 0xa6, 0xcf, 0xc3, 0x59, 0xf5, 0x77, 0x3b, 0x8a, 0x0f, 0x7b, 0xf1, 0x63, 0x7d, 0x2e, 0x5f, - 0xe0, 0x1d, 0xc5, 0x31, 0x2b, 0xc0, 0x15, 0xaf, 0x16, 0x04, 0xd1, 0xe8, 0x69, 0x2f, 0xee, 0x4e, - 0xa2, 0x43, 0xbd, 0x64, 0xdc, 0x80, 0xd5, 0x0c, 0x14, 0x0f, 0xfb, 0x34, 0xdb, 0x15, 0x02, 0xa1, - 0x45, 0xeb, 0x56, 0xa7, 0xa5, 0x2f, 0xb0, 0xb5, 0xde, 0xb4, 0x76, 0x9b, 0x3a, 0x18, 0xbf, 0xd7, - 0x98, 0x4a, 0x8a, 0x70, 0x95, 0xad, 0x86, 0x29, 0x07, 0x83, 0x4d, 0x04, 0x47, 0xed, 0xa2, 0xbe, - 0xcf, 0xdf, 0x0c, 0x2f, 0xc2, 0xa6, 0xf8, 0x11, 0x9a, 0x4e, 0x3d, 0x6c, 0x9a, 0x5e, 0x7d, 0xdf, - 0xf4, 0xd8, 0xec, 0xdc, 0xd7, 0x4b, 0xb8, 0xe4, 0x14, 0x4a, 0x18, 0xb8, 0x9d, 0x5a, 0x53, 0x2f, - 0xb3, 0x19, 0xce, 0xd0, 0xdb, 0x96, 0xa3, 0xcf, 0xe3, 0x02, 0x2e, 0x70, 0x63, 0xb3, 0xac, 0x7c, - 0xc1, 0xe8, 0x81, 0x9e, 0x8f, 0xcf, 0x29, 0x3c, 0xde, 0x7a, 0x1d, 0xc7, 0xe1, 0x3b, 0x74, 0x0d, - 0x2a, 0x6e, 0xd0, 0xa4, 0x9e, 0xc0, 0x55, 0x43, 0x20, 0xb5, 0x8e, 0x63, 0x76, 0x82, 0xa6, 0xeb, - 0x59, 0x0f, 0x70, 0xab, 0x6e, 0xc2, 0x39, 0xdf, 0x36, 0x6b, 0x7b, 0xa1, 0xe3, 0x06, 0xa1, 0xe5, - 0x84, 0xb5, 0xa6, 0xe9, 0x38, 0xd4, 0xd6, 0xc1, 0xf8, 0xab, 0x06, 0x17, 0x8e, 0x79, 0xe0, 0x21, - 0x6f, 0xc0, 0xf5, 0x26, 0x35, 0xeb, 0x36, 0xf5, 0xfd, 0x90, 0x35, 0x49, 0x9d, 0x40, 0xbc, 0xa3, - 0x4e, 0x5d, 0x0e, 0xd7, 0xe1, 0x3b, 0xc7, 0xb3, 0xa7, 0x82, 0xe5, 0xbb, 0x70, 0xf5, 0x78, 0x56, - 0x21, 0x68, 0x4a, 0xc4, 0x80, 0x6b, 0xc7, 0x73, 0x26, 0x02, 0xaa, 0x6c, 0x7c, 0xaa, 0xc1, 0xc6, - 0x74, 0x7b, 0x8c, 0xf5, 0xcd, 0x72, 0xfc, 0xc0, 0xb4, 0xed, 0xb0, 0x6d, 0x7a, 0x66, 0x2b, 0xa4, - 0x8e, 0xe7, 0xda, 0xf6, 0xb4, 0x8d, 0x79, 0x15, 0xae, 0xcc, 0x66, 0xf5, 0x6b, 0x9e, 0xd5, 0x66, - 0x2b, 0xbc, 0x0a, 0xdb, 0xb3, 0xb9, 0xa8, 0x55, 0xa3, 0x7a, 0x69, 0xe7, 0x83, 0xcf, 0xff, 0xb1, - 0x3d, 0xf7, 0xf9, 0x8b, 0x6d, 0xed, 0x8b, 0x17, 0xdb, 0xda, 0xdf, 0x5f, 0x6c, 0x6b, 0x0f, 0xbe, - 0x77, 0x8a, 0x54, 0x86, 0x0f, 0x17, 0xd1, 0x71, 0xe0, 0xe6, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x72, 0x39, 0x20, 0x2a, 0xc5, 0x81, 0x01, 0x00, + 0x39, 0xe7, 0x7e, 0xbe, 0x73, 0xcf, 0x3d, 0xf7, 0x9c, 0x73, 0xe1, 0x85, 0x80, 0xb6, 0x68, 0xd7, + 0xf5, 0x82, 0xab, 0x2d, 0xba, 0x67, 0x37, 0x0e, 0xaf, 0x06, 0x87, 0x5d, 0xea, 0xf3, 0x7f, 0xaf, + 0x74, 0x3d, 0x37, 0x70, 0xc9, 0x08, 0xfe, 0x58, 0x9c, 0xdf, 0x73, 0xf7, 0x5c, 0x84, 0x5c, 0x65, + 0x7f, 0xf1, 0xc2, 0xc5, 0xa5, 0x3d, 0xd7, 0xdd, 0x6b, 0xd1, 0xab, 0xf8, 0x6b, 0xa7, 0xb7, 0x7b, + 0x35, 0x70, 0xda, 0xd4, 0x0f, 0xec, 0x76, 0x57, 0x20, 0x5c, 0x0e, 0x2b, 0xb0, 0x83, 0x80, 0x95, + 0x04, 0x8e, 0xdb, 0xb9, 0xfa, 0xe0, 0x9a, 0xfa, 0x53, 0xa0, 0xbe, 0x9e, 0xde, 0x96, 0x87, 0x9e, + 0xdd, 0xed, 0x52, 0x2f, 0xfa, 0x83, 0xa3, 0x1b, 0xff, 0x20, 0x07, 0xe3, 0x77, 0x28, 0xed, 0x96, + 0x5a, 0xce, 0x03, 0x4a, 0x2e, 0x40, 0x7e, 0xc3, 0x6e, 0xd3, 0x85, 0xcc, 0xf9, 0xcc, 0xa5, 0xf1, + 0x95, 0x99, 0xc7, 0x47, 0x4b, 0x13, 0x3e, 0xf5, 0x1e, 0x50, 0xcf, 0xea, 0xd8, 0x6d, 0x6a, 0x62, + 0x21, 0x79, 0x15, 0xc6, 0xd9, 0xff, 0x7e, 0xd7, 0x6e, 0xd0, 0x85, 0x2c, 0x62, 0x4e, 0x3d, 0x3e, + 0x5a, 0x1a, 0xef, 0x48, 0xa0, 0x19, 0x95, 0x93, 0x8b, 0x30, 0xb6, 0x4e, 0x6d, 0x9f, 0x56, 0x2b, + 0x0b, 0xb9, 0xf3, 0x99, 0x4b, 0xb9, 0x95, 0xc9, 0xc7, 0x47, 0x4b, 0x85, 0x16, 0x03, 0x59, 0x4e, + 0xd3, 0x94, 0x85, 0xa4, 0x0a, 0x63, 0xab, 0x8f, 0xba, 0x8e, 0x47, 0xfd, 0x85, 0xfc, 0xf9, 0xcc, + 0xa5, 0x89, 0xe5, 0xc5, 0x2b, 0x7c, 0x50, 0xae, 0xc8, 0x41, 0xb9, 0xb2, 0x25, 0x07, 0x65, 0x65, + 0xee, 0xb7, 0x8e, 0x96, 0x9e, 0x79, 0x7c, 0xb4, 0x34, 0x46, 0x39, 0xc9, 0x4f, 0xfe, 0xde, 0x52, + 0xc6, 0x94, 0xf4, 0xe4, 0x6d, 0xc8, 0x6f, 0x1d, 0x76, 0xe9, 0xc2, 0xf8, 0xf9, 0xcc, 0xa5, 0xe9, + 0xe5, 0xe7, 0xaf, 0xf0, 0x69, 0x08, 0x3b, 0x19, 0xfd, 0xc5, 0xb0, 0x56, 0x0a, 0x8f, 0x8f, 0x96, + 0xf2, 0x0c, 0xc5, 0x44, 0x2a, 0xf2, 0x3a, 0x8c, 0xae, 0xb9, 0x7e, 0x50, 0xad, 0x2c, 0x00, 0x76, + 0xed, 0xd4, 0xe3, 0xa3, 0xa5, 0xd9, 0x7d, 0xd7, 0x0f, 0x2c, 0xa7, 0xf9, 0x9a, 0xdb, 0x76, 0x02, + 0xda, 0xee, 0x06, 0x87, 0xa6, 0x40, 0x32, 0x1e, 0xc1, 0x94, 0xc6, 0x8f, 0x4c, 0xc0, 0xd8, 0xbd, + 0x8d, 0x3b, 0x1b, 0x9b, 0xdb, 0x1b, 0xc5, 0x67, 0x48, 0x01, 0xf2, 0x1b, 0x9b, 0x95, 0xd5, 0x62, + 0x86, 0x8c, 0x41, 0xae, 0x54, 0xab, 0x15, 0xb3, 0x64, 0x12, 0x0a, 0x95, 0xd2, 0x56, 0x69, 0xa5, + 0x54, 0x5f, 0x2d, 0xe6, 0xc8, 0x1c, 0xcc, 0x6c, 0x57, 0x37, 0x2a, 0x9b, 0xdb, 0x75, 0xab, 0xb2, + 0x5a, 0xbf, 0xb3, 0xb5, 0x59, 0x2b, 0xe6, 0xc9, 0x34, 0xc0, 0x9d, 0x7b, 0x2b, 0xab, 0xe6, 0xc6, + 0xea, 0xd6, 0x6a, 0xbd, 0x38, 0x42, 0xe6, 0xa1, 0x28, 0x49, 0xac, 0xfa, 0xaa, 0x79, 0xbf, 0x5a, + 0x5e, 0x2d, 0x8e, 0x1a, 0xff, 0x28, 0x07, 0x85, 0xbb, 0x34, 0xb0, 0x9b, 0x76, 0x60, 0x93, 0xe7, + 0xb4, 0x89, 0xc3, 0x3e, 0x29, 0x33, 0x76, 0x21, 0x39, 0x63, 0x23, 0x8f, 0x8f, 0x96, 0x32, 0xaf, + 0xab, 0x33, 0xf5, 0x16, 0x4c, 0x54, 0xa8, 0xdf, 0xf0, 0x9c, 0x2e, 0x5b, 0x4d, 0x38, 0x5b, 0xe3, + 0x2b, 0x67, 0x1f, 0x1f, 0x2d, 0x9d, 0x6a, 0x46, 0x60, 0x65, 0x04, 0x54, 0x6c, 0x52, 0x85, 0xd1, + 0x75, 0x7b, 0x87, 0xb6, 0xfc, 0x85, 0x91, 0xf3, 0xb9, 0x4b, 0x13, 0xcb, 0xcf, 0x8a, 0x51, 0x97, + 0x0d, 0xbc, 0xc2, 0x4b, 0x57, 0x3b, 0x81, 0x77, 0xb8, 0x32, 0xff, 0xf8, 0x68, 0xa9, 0xd8, 0x42, + 0x80, 0x3a, 0xa2, 0x1c, 0x85, 0xd4, 0xa3, 0x95, 0x30, 0x7a, 0xec, 0x4a, 0x38, 0xf7, 0x5b, 0x47, + 0x4b, 0x19, 0x36, 0x43, 0x62, 0x25, 0x44, 0xfc, 0xf4, 0x35, 0x61, 0x40, 0xb6, 0x5a, 0x59, 0x18, + 0xc3, 0x15, 0x48, 0x1e, 0x1f, 0x2d, 0x4d, 0xaa, 0x93, 0xb9, 0x90, 0x31, 0xb3, 0xd5, 0x0a, 0x59, + 0x86, 0x82, 0x49, 0x1f, 0x38, 0x3e, 0xeb, 0x7d, 0x01, 0x7b, 0x7f, 0xfa, 0xf1, 0xd1, 0x12, 0xf1, + 0x04, 0x4c, 0x69, 0x6a, 0x88, 0xb7, 0xf8, 0x26, 0x4c, 0x28, 0x3d, 0x23, 0x45, 0xc8, 0x1d, 0xd0, + 0x43, 0x3e, 0x0b, 0x26, 0xfb, 0x93, 0xcc, 0xc3, 0xc8, 0x03, 0xbb, 0xd5, 0x13, 0xc3, 0x6e, 0xf2, + 0x1f, 0x5f, 0xc8, 0x7e, 0x3e, 0x63, 0xfc, 0x95, 0x3c, 0x14, 0x4c, 0x97, 0x7f, 0xbb, 0xe4, 0x32, + 0x8c, 0xd4, 0x03, 0x3b, 0x90, 0x13, 0x38, 0xf7, 0xf8, 0x68, 0x69, 0x86, 0x7d, 0xd7, 0x54, 0xa9, + 0x95, 0x63, 0x30, 0xd4, 0xda, 0xbe, 0xed, 0xcb, 0x89, 0x44, 0xd4, 0x2e, 0x03, 0xa8, 0xa8, 0x88, + 0x41, 0x2e, 0x42, 0xfe, 0xae, 0xdb, 0xa4, 0x62, 0x2e, 0x59, 0xbf, 0xa7, 0xdb, 0x6e, 0x53, 0x45, + 0xc4, 0x72, 0xf2, 0x1a, 0x8c, 0x97, 0x7b, 0x9e, 0x47, 0x3b, 0x6c, 0xd9, 0xe7, 0x11, 0x79, 0xfa, + 0xf1, 0xd1, 0x12, 0x34, 0x38, 0x90, 0x7d, 0xa8, 0x11, 0x02, 0x9b, 0xa0, 0x7a, 0x60, 0x7b, 0x01, + 0x6d, 0x2e, 0x8c, 0x0c, 0x35, 0x41, 0xec, 0x53, 0x9d, 0xf5, 0x39, 0x49, 0x7c, 0x82, 0x04, 0x27, + 0xb2, 0x06, 0x13, 0xb7, 0x3c, 0xbb, 0x41, 0x6b, 0xd4, 0x73, 0xdc, 0x26, 0xce, 0x7c, 0x6e, 0xe5, + 0xe2, 0xe3, 0xa3, 0xa5, 0xd3, 0x7b, 0x0c, 0x6c, 0x75, 0x11, 0x1e, 0x51, 0x7f, 0xef, 0x68, 0xa9, + 0x50, 0xe9, 0x79, 0x38, 0x7a, 0xa6, 0x4a, 0x4a, 0xbe, 0xc6, 0xa6, 0xc4, 0x0f, 0x70, 0x68, 0x69, + 0x13, 0xe7, 0x7c, 0x70, 0x13, 0x0d, 0xd1, 0xc4, 0xd3, 0x2d, 0xdb, 0x0f, 0x2c, 0x8f, 0xd3, 0xc5, + 0xda, 0xa9, 0xb2, 0x24, 0x9b, 0x50, 0xa8, 0x37, 0xf6, 0x69, 0xb3, 0xd7, 0xa2, 0xb8, 0x50, 0x26, + 0x96, 0xcf, 0x88, 0xe5, 0x2e, 0xe7, 0x53, 0x16, 0xaf, 0x2c, 0x0a, 0xde, 0xc4, 0x17, 0x10, 0x75, + 0x15, 0x49, 0xac, 0x2f, 0x14, 0xbe, 0xf3, 0x73, 0x4b, 0xcf, 0x7c, 0xf3, 0x77, 0xcf, 0x3f, 0x63, + 0xfc, 0x83, 0x2c, 0x14, 0xe3, 0x4c, 0xc8, 0x2e, 0x4c, 0xdd, 0xeb, 0x36, 0xed, 0x80, 0x96, 0x5b, + 0x0e, 0xed, 0x04, 0x3e, 0x2e, 0x92, 0xc1, 0x7d, 0x7a, 0x51, 0xd4, 0xbb, 0xd0, 0x43, 0x42, 0xab, + 0xc1, 0x29, 0x63, 0xbd, 0xd2, 0xd9, 0x46, 0xf5, 0xd4, 0x51, 0xe6, 0xfb, 0xb8, 0xc2, 0x4e, 0x56, + 0x0f, 0xdf, 0x2d, 0xfa, 0xd4, 0x23, 0xd8, 0x8a, 0x05, 0xd4, 0x69, 0xee, 0x1c, 0xe2, 0xca, 0x1c, + 0x7e, 0x01, 0x31, 0x92, 0x94, 0x05, 0xc4, 0xc0, 0xc6, 0x3f, 0xcf, 0xc0, 0xb4, 0x49, 0x7d, 0xb7, + 0xe7, 0x35, 0xe8, 0x1a, 0xb5, 0x9b, 0xd4, 0x63, 0xcb, 0xff, 0x8e, 0xd3, 0x69, 0x8a, 0x6f, 0x0a, + 0x97, 0xff, 0x81, 0xd3, 0x51, 0xa5, 0x38, 0x96, 0x93, 0xcf, 0xc0, 0x58, 0xbd, 0xb7, 0x83, 0xa8, + 0xd9, 0xe8, 0xbb, 0xf7, 0x7b, 0x3b, 0x56, 0x0c, 0x5d, 0xa2, 0x91, 0xab, 0x30, 0x76, 0x9f, 0x7a, + 0x7e, 0x24, 0x27, 0x71, 0x97, 0x78, 0xc0, 0x41, 0x2a, 0x81, 0xc0, 0x22, 0xb7, 0x22, 0x59, 0x2d, + 0xf6, 0xb7, 0x99, 0x98, 0x84, 0x8c, 0x96, 0x4a, 0x5b, 0x40, 0xd4, 0xa5, 0x22, 0xb1, 0x8c, 0x9f, + 0xca, 0x42, 0xb1, 0x62, 0x07, 0xf6, 0x8e, 0xed, 0x8b, 0xf1, 0xbc, 0x7f, 0x9d, 0x49, 0x7f, 0xa5, + 0xa3, 0x28, 0xfd, 0x59, 0xcb, 0x3f, 0x76, 0xf7, 0x5e, 0x8a, 0x77, 0x6f, 0x82, 0x6d, 0xb6, 0xa2, + 0x7b, 0x51, 0xa7, 0xde, 0x39, 0xbe, 0x53, 0x45, 0xd1, 0xa9, 0x82, 0xec, 0x54, 0xd4, 0x15, 0xf2, + 0x0e, 0xe4, 0xeb, 0x5d, 0xda, 0x10, 0x42, 0x44, 0xee, 0x18, 0x7a, 0xe7, 0x18, 0xc2, 0xfd, 0xeb, + 0x2b, 0x93, 0x82, 0x4d, 0xde, 0xef, 0xd2, 0x86, 0x89, 0x64, 0xca, 0x47, 0xf3, 0x0f, 0x73, 0x30, + 0x9f, 0x46, 0xa6, 0xf6, 0x63, 0x74, 0x40, 0x3f, 0x2e, 0x41, 0x81, 0xed, 0xe6, 0x6c, 0xc3, 0x44, + 0x71, 0x31, 0xce, 0x95, 0x94, 0x7d, 0x01, 0x33, 0xc3, 0x52, 0x72, 0x21, 0x54, 0x0e, 0x0a, 0x11, + 0x3f, 0xa1, 0x1c, 0x48, 0x95, 0x80, 0xcd, 0xb5, 0xfc, 0x84, 0x51, 0x87, 0x88, 0x86, 0x45, 0x82, + 0xa3, 0xb9, 0xf6, 0x04, 0x44, 0xdb, 0x5c, 0xe4, 0xa6, 0xb0, 0x0a, 0x05, 0xd9, 0xad, 0x85, 0x49, + 0x64, 0x34, 0x1b, 0x1b, 0xa4, 0xfb, 0xd7, 0xf9, 0x64, 0x36, 0xc5, 0x6f, 0x95, 0x8d, 0xc4, 0x21, + 0xd7, 0xa1, 0x50, 0xf3, 0xdc, 0x47, 0x87, 0xd5, 0x8a, 0xbf, 0x30, 0x75, 0x3e, 0x77, 0x69, 0x7c, + 0xe5, 0xcc, 0xe3, 0xa3, 0xa5, 0xb9, 0x2e, 0x83, 0x59, 0x4e, 0x53, 0xdd, 0x83, 0x43, 0xc4, 0xdb, + 0xf9, 0x42, 0xa6, 0x98, 0xbd, 0x9d, 0x2f, 0x64, 0x8b, 0xb9, 0xdb, 0xf9, 0x42, 0xae, 0x98, 0xbf, + 0x9d, 0x2f, 0xe4, 0x8b, 0x23, 0xb7, 0xf3, 0x85, 0x91, 0xe2, 0xe8, 0xed, 0x7c, 0x61, 0xbc, 0x08, + 0xb7, 0xf3, 0x85, 0x89, 0xe2, 0xa4, 0xa6, 0x07, 0x20, 0x83, 0xc0, 0x6d, 0xb8, 0x2d, 0x33, 0x77, + 0xcf, 0xac, 0x9a, 0xa3, 0xe5, 0x52, 0x99, 0x7a, 0x81, 0x99, 0x2b, 0x6d, 0xd7, 0xcd, 0xa9, 0xca, + 0x61, 0xc7, 0x6e, 0x3b, 0x0d, 0xbe, 0x61, 0x9a, 0xb9, 0x5b, 0xe5, 0x9a, 0x51, 0x82, 0xe9, 0xa8, + 0x2f, 0xeb, 0x8e, 0x1f, 0x90, 0xab, 0x30, 0x2e, 0x21, 0x4c, 0xd0, 0xe5, 0x52, 0x7b, 0x6d, 0x46, + 0x38, 0xc6, 0x6f, 0x66, 0x01, 0xa2, 0x92, 0xa7, 0xf4, 0x5b, 0xf8, 0x9c, 0xf6, 0x2d, 0x9c, 0x8a, + 0x7f, 0x0b, 0x7d, 0xbf, 0x02, 0xf2, 0x1e, 0x8c, 0x32, 0xb5, 0xa0, 0x27, 0x95, 0xa5, 0x33, 0x71, + 0x52, 0x2c, 0xbc, 0x7f, 0x7d, 0x65, 0x5a, 0x10, 0x8f, 0xfa, 0x08, 0x31, 0x05, 0x99, 0xf2, 0x19, + 0xfd, 0xec, 0x58, 0x34, 0x19, 0xe2, 0x03, 0xba, 0x04, 0xe1, 0x84, 0x8a, 0x01, 0xc5, 0x2f, 0xa3, + 0x2b, 0x27, 0x39, 0x2c, 0x25, 0x67, 0x81, 0x4d, 0xb8, 0x18, 0xd4, 0xb1, 0xc7, 0x47, 0x4b, 0xb9, + 0x9e, 0xe7, 0xe0, 0x22, 0x20, 0x57, 0x41, 0x2c, 0x03, 0x31, 0x80, 0x6c, 0xf5, 0xcd, 0x36, 0x6c, + 0xab, 0x41, 0xbd, 0x40, 0x53, 0xc2, 0x04, 0x1a, 0xe9, 0x82, 0xbe, 0x54, 0x16, 0xf2, 0xb8, 0x0c, + 0x2e, 0xa5, 0x8e, 0xca, 0x15, 0x0d, 0x95, 0x2b, 0x98, 0xe7, 0xe5, 0xae, 0xd4, 0xe4, 0x65, 0x56, + 0x42, 0xd9, 0xd4, 0x2b, 0x20, 0xd7, 0x81, 0xad, 0x50, 0x31, 0xfa, 0x20, 0xea, 0x29, 0x6d, 0xd7, + 0x57, 0x4e, 0x09, 0x4e, 0x53, 0xf6, 0x43, 0x95, 0x9c, 0x61, 0x93, 0xb7, 0x80, 0x2d, 0x61, 0x31, + 0xee, 0x44, 0x10, 0xdd, 0x2a, 0xd7, 0xca, 0x2d, 0xb7, 0xd7, 0xac, 0x7f, 0x71, 0x3d, 0x22, 0xde, + 0x6b, 0x74, 0x55, 0xe2, 0x5b, 0xe5, 0x1a, 0x79, 0x0b, 0x46, 0x4a, 0xdf, 0xe8, 0x79, 0x54, 0xe8, + 0x27, 0x93, 0xb2, 0x4e, 0x06, 0x5b, 0x39, 0x23, 0x08, 0x67, 0x6c, 0xf6, 0x53, 0xd5, 0xeb, 0xb0, + 0x9c, 0xd5, 0xbc, 0xb5, 0x5e, 0x17, 0xba, 0x07, 0x89, 0x0d, 0xcb, 0xd6, 0xba, 0xd2, 0xec, 0x40, + 0xeb, 0x35, 0xa3, 0x22, 0x57, 0x21, 0x5b, 0xaa, 0xe0, 0xe1, 0x68, 0x62, 0x79, 0x5c, 0x56, 0x5b, + 0x59, 0x99, 0x17, 0x24, 0x93, 0xb6, 0xfa, 0x19, 0x64, 0x4b, 0x15, 0xb2, 0x02, 0x23, 0x77, 0x0f, + 0xeb, 0x5f, 0x5c, 0x17, 0xc2, 0x6c, 0x4e, 0xae, 0x6b, 0x06, 0xdb, 0xc4, 0xcf, 0xde, 0x8f, 0x5a, + 0xdc, 0x3e, 0xf4, 0xbf, 0xde, 0x52, 0x5b, 0x8c, 0x68, 0xa4, 0x06, 0xe3, 0xa5, 0x66, 0xdb, 0xe9, + 0xdc, 0xf3, 0xa9, 0xb7, 0x30, 0x81, 0x7c, 0x16, 0x62, 0xed, 0x0e, 0xcb, 0x57, 0x16, 0x1e, 0x1f, + 0x2d, 0xcd, 0xdb, 0xec, 0xa7, 0xd5, 0xf3, 0xa9, 0xa7, 0x70, 0x8b, 0x98, 0x90, 0x1a, 0xc0, 0x5d, + 0xb7, 0xb3, 0xe7, 0x96, 0x82, 0x96, 0xed, 0xc7, 0xc4, 0x63, 0x54, 0x10, 0xaa, 0x0f, 0xa7, 0xda, + 0x0c, 0x66, 0xd9, 0x0c, 0xa8, 0x30, 0x54, 0x78, 0x90, 0x9b, 0x30, 0xba, 0xe9, 0xd9, 0x8d, 0x16, + 0x5d, 0x98, 0x42, 0x6e, 0xf3, 0x82, 0x1b, 0x07, 0xca, 0x9e, 0x2e, 0x08, 0x86, 0x45, 0x17, 0xc1, + 0xea, 0x01, 0x86, 0x23, 0x2e, 0x6e, 0x03, 0x49, 0xae, 0xc9, 0x94, 0xa3, 0xc1, 0xab, 0xea, 0xd1, + 0x20, 0xfa, 0xe8, 0xcb, 0x6e, 0xbb, 0x6d, 0x77, 0x9a, 0x48, 0x7b, 0x7f, 0x59, 0x3d, 0x31, 0x7c, + 0x1d, 0x66, 0x13, 0x83, 0x75, 0xcc, 0xc9, 0xef, 0x5d, 0x98, 0xa9, 0xd0, 0x5d, 0xbb, 0xd7, 0x0a, + 0xc2, 0x9d, 0x84, 0x7f, 0xa2, 0x78, 0x06, 0x6b, 0xf2, 0x22, 0x4b, 0x6e, 0x1f, 0x66, 0x1c, 0xd9, + 0x78, 0x07, 0xa6, 0xb4, 0xee, 0xb3, 0xa3, 0x42, 0xa9, 0xd7, 0x74, 0x02, 0x9c, 0xc8, 0x4c, 0x74, + 0x54, 0xb0, 0x19, 0x10, 0xa7, 0xcb, 0x8c, 0x10, 0x8c, 0xbf, 0xa5, 0x6a, 0x2b, 0x42, 0x12, 0xb1, + 0x13, 0xb6, 0x90, 0x07, 0x99, 0x48, 0x77, 0x4a, 0xc8, 0x83, 0x50, 0x1a, 0x5c, 0xe6, 0xdf, 0x66, + 0x36, 0xf1, 0x6d, 0x4e, 0x88, 0x99, 0xc8, 0xd9, 0x0f, 0x7d, 0xfe, 0x45, 0x86, 0x2b, 0x35, 0xf7, + 0xf1, 0x57, 0xea, 0x7b, 0x30, 0x79, 0xd7, 0xee, 0xd8, 0x7b, 0xb4, 0xc9, 0x7a, 0xc0, 0x65, 0xcf, + 0xf8, 0xca, 0xb3, 0x8f, 0x8f, 0x96, 0xce, 0xb4, 0x39, 0x1c, 0x7b, 0xa9, 0x2e, 0x22, 0x8d, 0x80, + 0x5c, 0x93, 0x5f, 0xf6, 0x48, 0xca, 0x97, 0x3d, 0x25, 0x6a, 0x1f, 0xc1, 0x2f, 0x5b, 0x7c, 0xcf, + 0xc6, 0xff, 0x51, 0xc0, 0x3e, 0x92, 0xd7, 0x60, 0xd4, 0xa4, 0x7b, 0x6c, 0xab, 0xc9, 0x44, 0x93, + 0xe4, 0x21, 0x44, 0x1d, 0x18, 0x8e, 0x83, 0x7a, 0x06, 0x6d, 0xfa, 0xfb, 0xce, 0x6e, 0x20, 0x46, + 0x27, 0xd4, 0x33, 0x04, 0x58, 0xd1, 0x33, 0x04, 0x44, 0x3f, 0xc4, 0x72, 0x18, 0x93, 0x7e, 0x66, + 0xa5, 0x2e, 0x06, 0x4d, 0x8e, 0xb0, 0x59, 0x51, 0xc4, 0x88, 0xa7, 0x69, 0x09, 0x0c, 0x9b, 0xdc, + 0x80, 0xf1, 0x52, 0xa3, 0xe1, 0xf6, 0x94, 0x33, 0x23, 0xff, 0x6e, 0x39, 0x50, 0xb7, 0x96, 0x44, + 0xa8, 0xa4, 0x0e, 0x13, 0xab, 0xec, 0xa0, 0xe5, 0x94, 0xed, 0xc6, 0xbe, 0x1c, 0x24, 0x29, 0xc3, + 0x94, 0x92, 0xe8, 0xcb, 0xa5, 0x08, 0x6c, 0x30, 0xa0, 0x6a, 0x7e, 0x50, 0x70, 0xc9, 0x16, 0x4c, + 0xd4, 0x69, 0xc3, 0xa3, 0x41, 0x3d, 0x70, 0x3d, 0x1a, 0x13, 0xc9, 0x4a, 0xc9, 0xca, 0xf3, 0xf2, + 0xac, 0xe7, 0x23, 0xd0, 0xf2, 0x19, 0x54, 0xe5, 0xaa, 0x20, 0x73, 0xa5, 0xbd, 0xed, 0x7a, 0x87, + 0x95, 0x15, 0x21, 0xa6, 0xa3, 0x3d, 0x9d, 0x83, 0x55, 0xa5, 0x9d, 0x41, 0x9a, 0x3b, 0xba, 0xd2, + 0xce, 0xb1, 0x70, 0xa6, 0x2a, 0x75, 0xd4, 0xad, 0x84, 0xd0, 0x9e, 0x89, 0x46, 0x19, 0xc1, 0xca, + 0x4c, 0x35, 0x7d, 0xd4, 0xcc, 0xb4, 0x99, 0x12, 0x58, 0xa4, 0x0b, 0x44, 0xce, 0x1a, 0x57, 0x74, + 0x5b, 0xd4, 0xf7, 0x85, 0x2c, 0x3f, 0x1b, 0x9b, 0xfc, 0x08, 0x61, 0xe5, 0x25, 0xc1, 0xfc, 0x9c, + 0x5c, 0x06, 0xe2, 0x9c, 0xc6, 0x0a, 0x95, 0x7a, 0x52, 0x78, 0x93, 0x37, 0x01, 0x56, 0x1f, 0x05, + 0xd4, 0xeb, 0xd8, 0xad, 0xd0, 0x24, 0x86, 0x46, 0x21, 0x2a, 0xa0, 0xfa, 0x44, 0x2b, 0xc8, 0xa4, + 0x0c, 0x53, 0x25, 0xdf, 0xef, 0xb5, 0xa9, 0xe9, 0xb6, 0x68, 0xc9, 0xdc, 0x40, 0xb9, 0x3f, 0xbe, + 0x72, 0xee, 0xf1, 0xd1, 0xd2, 0x59, 0x1b, 0x0b, 0x2c, 0xcf, 0x6d, 0x51, 0xcb, 0xf6, 0xd4, 0xd5, + 0xad, 0xd3, 0x90, 0x4d, 0x80, 0xcd, 0x2e, 0xed, 0xd4, 0xa9, 0xed, 0x35, 0xf6, 0x63, 0x62, 0x3e, + 0x2a, 0x58, 0x79, 0x4e, 0xf4, 0x70, 0xde, 0xed, 0xd2, 0x8e, 0x8f, 0x30, 0xb5, 0x55, 0x11, 0x26, + 0xd9, 0x86, 0x99, 0x6a, 0xe9, 0x6e, 0xcd, 0x6d, 0x39, 0x8d, 0x43, 0xa1, 0x39, 0x4d, 0xa3, 0xa1, + 0xf0, 0xb4, 0xe0, 0x1a, 0x2b, 0xe5, 0xe2, 0xc9, 0xb1, 0xdb, 0x56, 0x17, 0xa1, 0x96, 0xd0, 0x9f, + 0xe2, 0x5c, 0xc8, 0x07, 0x6c, 0x0d, 0xfa, 0x4c, 0x19, 0xdc, 0xb2, 0xf7, 0xfc, 0x85, 0x19, 0xcd, + 0x0e, 0x56, 0xda, 0xae, 0x5f, 0x51, 0x4a, 0xb9, 0x9a, 0xb2, 0xc8, 0x17, 0x22, 0x42, 0xad, 0xc0, + 0xde, 0xf3, 0xf5, 0x85, 0x18, 0x62, 0x2f, 0xbe, 0x0b, 0xc5, 0x38, 0xf1, 0x49, 0x4c, 0x4d, 0xb7, + 0xf3, 0x85, 0xa9, 0xe2, 0xb4, 0xd2, 0xe2, 0xd5, 0x47, 0x8e, 0x1f, 0xf8, 0xc6, 0x0f, 0x6a, 0x5f, + 0x0d, 0xfb, 0xa2, 0xef, 0xd0, 0xc3, 0x9a, 0x47, 0x77, 0x9d, 0x47, 0x42, 0x00, 0xe1, 0x17, 0x7d, + 0x40, 0x0f, 0xad, 0x2e, 0x42, 0xd5, 0x2f, 0x3a, 0x44, 0x25, 0x9f, 0x85, 0xc2, 0x9d, 0xbb, 0xf5, + 0x3b, 0xf4, 0xb0, 0x5a, 0x11, 0x9b, 0x0b, 0x27, 0x6b, 0xfb, 0x16, 0x23, 0xd5, 0xd6, 0x47, 0x88, + 0x69, 0xac, 0x44, 0xd2, 0x8b, 0xd5, 0x5c, 0x6e, 0xf5, 0xfc, 0x80, 0x7a, 0xd5, 0x8a, 0x5a, 0x73, + 0x83, 0x03, 0x63, 0xb2, 0x24, 0x44, 0x35, 0xfe, 0x61, 0x16, 0x25, 0x17, 0x5b, 0xa4, 0xd5, 0x8e, + 0x1f, 0xd8, 0x9d, 0x06, 0x0d, 0x19, 0xe0, 0x22, 0x75, 0x04, 0x34, 0xb6, 0x48, 0x23, 0x64, 0xbd, + 0xea, 0xec, 0xd0, 0x55, 0xb3, 0x2a, 0xa5, 0xb5, 0x41, 0x98, 0xb6, 0x45, 0x95, 0x9e, 0x80, 0xc6, + 0xaa, 0x8c, 0x90, 0xc9, 0x45, 0x18, 0xab, 0x96, 0xee, 0x96, 0x7a, 0xc1, 0x3e, 0xca, 0xcd, 0x02, + 0xd7, 0xa9, 0xd9, 0x0a, 0xb3, 0x7b, 0xc1, 0xbe, 0x29, 0x0b, 0xc9, 0x55, 0x3c, 0xab, 0x74, 0x68, + 0xc0, 0x8d, 0xaa, 0x62, 0xa3, 0xf4, 0x39, 0x28, 0x76, 0x54, 0x61, 0x20, 0xf2, 0x0a, 0x8c, 0xdc, + 0xaf, 0x95, 0xab, 0x15, 0x71, 0xd8, 0xc5, 0xdd, 0xe3, 0x41, 0xb7, 0xa1, 0xb7, 0x84, 0xa3, 0x18, + 0xbf, 0x9e, 0x89, 0x64, 0x12, 0xb9, 0xa8, 0xe9, 0x10, 0x68, 0x28, 0x61, 0x3a, 0x84, 0x6a, 0x28, + 0x41, 0x6d, 0xc2, 0x04, 0x52, 0xee, 0xf9, 0x81, 0xdb, 0x5e, 0xed, 0x34, 0xbb, 0xae, 0xd3, 0x09, + 0x90, 0x8a, 0x8f, 0x9a, 0xf1, 0xf8, 0x68, 0xe9, 0xf9, 0x06, 0x96, 0x5a, 0x54, 0x14, 0x5b, 0x31, + 0x2e, 0x29, 0xd4, 0x9f, 0x60, 0x20, 0x8d, 0xdf, 0xce, 0x6a, 0x7b, 0x09, 0x6b, 0x9e, 0x49, 0xbb, + 0x2d, 0xa7, 0x81, 0xc7, 0xe7, 0x5b, 0x9e, 0xdb, 0xeb, 0x86, 0xcb, 0x01, 0x9b, 0xe7, 0x45, 0xa5, + 0xd6, 0x1e, 0x2b, 0xd6, 0x79, 0xa7, 0x50, 0x93, 0xf7, 0x61, 0x92, 0x6d, 0xeb, 0xe2, 0xa7, 0xbf, + 0x90, 0xc5, 0x99, 0x78, 0x0e, 0x4d, 0x5e, 0x3e, 0xf5, 0x42, 0x36, 0x9a, 0x3e, 0xa0, 0x52, 0x90, + 0x26, 0x2c, 0x6c, 0x79, 0x76, 0xc7, 0x77, 0x82, 0xd5, 0x4e, 0xc3, 0x3b, 0x44, 0x35, 0x64, 0xb5, + 0x63, 0xef, 0xb4, 0x68, 0x13, 0xbb, 0x5b, 0x58, 0xb9, 0xf4, 0xf8, 0x68, 0xe9, 0xc5, 0x80, 0xe3, + 0x58, 0x34, 0x44, 0xb2, 0x28, 0xc7, 0x52, 0x38, 0xf7, 0xe5, 0xc4, 0xd4, 0x16, 0x39, 0xac, 0x78, + 0xf9, 0xc1, 0x77, 0x64, 0x54, 0x5b, 0xc2, 0xd9, 0x60, 0xa2, 0x48, 0x6d, 0xa6, 0x4a, 0x60, 0xfc, + 0xab, 0x4c, 0xb4, 0xdb, 0x91, 0xb7, 0x61, 0x42, 0x2c, 0x75, 0x65, 0x5d, 0xa0, 0xb8, 0x92, 0xdf, + 0x45, 0x6c, 0x66, 0x55, 0x74, 0x76, 0xc8, 0x2e, 0x95, 0xd7, 0x95, 0xb5, 0x81, 0x87, 0x6c, 0xbb, + 0xd1, 0x8a, 0x53, 0x49, 0x34, 0xb6, 0x08, 0xb6, 0xd6, 0xeb, 0xfa, 0xa8, 0xe0, 0x22, 0x08, 0x5a, + 0x7e, 0xca, 0x30, 0x28, 0xc8, 0x9f, 0xbc, 0xe3, 0xff, 0x5d, 0x26, 0x6d, 0x53, 0x25, 0x2b, 0x30, + 0xb5, 0xed, 0x7a, 0x07, 0x38, 0xbf, 0xca, 0x20, 0xe0, 0xcc, 0x3f, 0x94, 0x05, 0xf1, 0x0e, 0xe9, + 0x24, 0x6a, 0xdb, 0x94, 0xd1, 0xd0, 0xdb, 0x16, 0xe3, 0xa0, 0x11, 0xb0, 0x79, 0x08, 0x39, 0x86, + 0x5f, 0x07, 0xce, 0x43, 0xd4, 0x04, 0x6d, 0x09, 0xab, 0xe8, 0xc6, 0x3f, 0xca, 0xa8, 0x9b, 0x27, + 0x1b, 0xe4, 0x8a, 0xdb, 0xb6, 0x9d, 0x8e, 0xd2, 0x1d, 0x7e, 0xbf, 0x83, 0xd0, 0x78, 0x4b, 0x14, + 0x64, 0x72, 0x1d, 0x0a, 0xfc, 0x57, 0x28, 0x24, 0xd1, 0x84, 0x24, 0x08, 0x75, 0x09, 0x2f, 0x11, + 0x13, 0x33, 0x93, 0x3b, 0xe9, 0xcc, 0x7c, 0x33, 0x03, 0x13, 0xca, 0x79, 0x9a, 0xc9, 0xea, 0x9a, + 0xe7, 0x7e, 0x44, 0x1b, 0x81, 0xbe, 0x4d, 0x74, 0x39, 0x30, 0x26, 0xab, 0x43, 0xd4, 0xd8, 0xf6, + 0x90, 0x3d, 0xc1, 0xf6, 0x60, 0xfc, 0xcb, 0x8c, 0xd0, 0xe6, 0x87, 0x96, 0x91, 0xba, 0x3c, 0xcb, + 0x9e, 0x64, 0x63, 0x78, 0x1f, 0x46, 0x4c, 0xda, 0x74, 0x7c, 0xa1, 0x89, 0xcf, 0xaa, 0x27, 0x07, + 0x2c, 0x88, 0x0e, 0x2f, 0x1e, 0xfb, 0xa9, 0x4a, 0x75, 0x2c, 0x67, 0x2a, 0x57, 0xd5, 0xbf, 0xd9, + 0xa2, 0x8f, 0x1c, 0xbe, 0x92, 0xc5, 0x06, 0x83, 0x2a, 0x97, 0xe3, 0x5b, 0xbb, 0xac, 0x44, 0xe8, + 0x7e, 0xea, 0xaa, 0xd5, 0x68, 0x8c, 0x0f, 0x00, 0xa2, 0x2a, 0xc9, 0x1d, 0x28, 0x8a, 0x6f, 0xdb, + 0xe9, 0xec, 0x71, 0xf5, 0x41, 0x8c, 0xc1, 0xd2, 0xe3, 0xa3, 0xa5, 0x67, 0x1b, 0x61, 0x99, 0xd0, + 0x8f, 0x14, 0xbe, 0x09, 0x42, 0xe3, 0xdf, 0xcb, 0x42, 0xb6, 0x84, 0x13, 0x72, 0x87, 0x1e, 0x06, + 0xf6, 0xce, 0x4d, 0xa7, 0xa5, 0xad, 0xc4, 0x03, 0x84, 0x5a, 0xbb, 0x8e, 0x76, 0xb0, 0x56, 0x90, + 0xd9, 0x4a, 0xbc, 0xe3, 0xed, 0xbc, 0x81, 0x84, 0xca, 0x4a, 0x3c, 0xf0, 0x76, 0xde, 0x88, 0x93, + 0x85, 0x88, 0xc4, 0x80, 0x51, 0xbe, 0x2a, 0xc5, 0x1a, 0x84, 0xc7, 0x47, 0x4b, 0xa3, 0x7c, 0xf1, + 0x9a, 0xa2, 0x84, 0x9c, 0x85, 0x5c, 0xbd, 0xb6, 0x21, 0xc4, 0x07, 0x1a, 0xb0, 0xfc, 0x6e, 0xc7, + 0x64, 0x30, 0x56, 0xe7, 0x7a, 0xa5, 0x54, 0xc3, 0x23, 0xeb, 0x48, 0x54, 0x67, 0xab, 0x69, 0x77, + 0xe3, 0x87, 0xd6, 0x10, 0x91, 0xbc, 0x03, 0x13, 0x77, 0x2a, 0xe5, 0x35, 0xd7, 0xe7, 0x9f, 0xfe, + 0x68, 0xb4, 0xf8, 0x0f, 0x9a, 0x0d, 0x0b, 0x6d, 0xc6, 0x71, 0x19, 0xaa, 0xe0, 0x1b, 0x3f, 0x92, + 0x85, 0x09, 0xc5, 0xa2, 0x43, 0x3e, 0x2b, 0xae, 0xf2, 0x32, 0x9a, 0xae, 0xaa, 0x60, 0xb0, 0x52, + 0x7e, 0xfc, 0x6f, 0xbb, 0x4d, 0x2a, 0x2e, 0xf6, 0xa2, 0xa3, 0x76, 0x76, 0x98, 0xa3, 0xf6, 0x9b, + 0x00, 0x7c, 0x0d, 0x60, 0x93, 0x95, 0xbd, 0x58, 0x71, 0x02, 0x50, 0xe7, 0x25, 0x42, 0x26, 0xf7, + 0x61, 0x6e, 0xcb, 0xeb, 0xf9, 0x41, 0xfd, 0xd0, 0x0f, 0x68, 0x9b, 0x71, 0xab, 0xb9, 0x6e, 0x4b, + 0xac, 0xbf, 0x17, 0x1f, 0x1f, 0x2d, 0x9d, 0x0f, 0x58, 0xb1, 0xe5, 0x63, 0x39, 0x36, 0xc0, 0xea, + 0xba, 0xae, 0x7a, 0x00, 0x4f, 0x63, 0x60, 0x98, 0x30, 0xa9, 0x1e, 0xdf, 0x99, 0x58, 0x16, 0xd7, + 0x1e, 0xc2, 0x28, 0xab, 0x88, 0x65, 0xd1, 0xca, 0xe4, 0x35, 0x8c, 0x4e, 0x62, 0x7c, 0x56, 0x35, + 0x1d, 0x0d, 0xfb, 0x61, 0x1b, 0x3f, 0x9c, 0x89, 0xc4, 0xc8, 0xfd, 0x6b, 0xe4, 0x2d, 0x18, 0xe5, + 0xd7, 0x4c, 0xe2, 0x36, 0xee, 0x54, 0x78, 0xfc, 0x52, 0xef, 0xa0, 0xb8, 0xcd, 0xf6, 0x77, 0xf8, + 0x25, 0xf5, 0x33, 0xa6, 0x20, 0x09, 0xcd, 0xbd, 0xba, 0xe5, 0x47, 0x72, 0x47, 0xc3, 0xe6, 0xb5, + 0x34, 0x73, 0xaf, 0xf1, 0x1b, 0x79, 0x98, 0xd6, 0xd1, 0xd4, 0xbb, 0xa8, 0xcc, 0x50, 0x77, 0x51, + 0xef, 0x43, 0x81, 0x8d, 0x87, 0xd3, 0xa0, 0x52, 0x9d, 0x79, 0x11, 0x8d, 0xe0, 0x02, 0xa6, 0xdd, + 0xb1, 0x02, 0x9f, 0x0e, 0x76, 0x1a, 0x33, 0x43, 0x2a, 0xb2, 0xac, 0x5c, 0x98, 0xe4, 0xa2, 0x1d, + 0x5e, 0x5e, 0x98, 0xa8, 0xdf, 0x43, 0x78, 0x75, 0xf2, 0x3a, 0x8c, 0x32, 0xad, 0x36, 0x34, 0x16, + 0x60, 0x2b, 0x99, 0xc2, 0x1b, 0xf3, 0xab, 0xe0, 0x48, 0x64, 0x1b, 0x0a, 0xeb, 0xb6, 0x1f, 0xd4, + 0x29, 0xed, 0x0c, 0x71, 0xcb, 0xbc, 0x24, 0x86, 0x6a, 0x0e, 0xaf, 0x70, 0x7d, 0x4a, 0x3b, 0xb1, + 0x6b, 0xc2, 0x90, 0x19, 0xf9, 0x0a, 0x40, 0xd9, 0xed, 0x04, 0x9e, 0xdb, 0x5a, 0x77, 0xf7, 0x16, + 0x46, 0xf1, 0x94, 0xf6, 0x7c, 0x6c, 0x02, 0x22, 0x04, 0x7e, 0x50, 0x0b, 0x4d, 0x11, 0x0d, 0x5e, + 0x60, 0xb5, 0xdc, 0x3d, 0xf5, 0x3b, 0x88, 0xf0, 0xc9, 0x4d, 0x28, 0xca, 0x23, 0xf0, 0xbd, 0xee, + 0x9e, 0x87, 0x0b, 0x64, 0x2c, 0xda, 0xb6, 0xe9, 0xa3, 0xc0, 0xea, 0x09, 0xb8, 0x2a, 0x29, 0xe3, + 0x34, 0xe4, 0xcb, 0x70, 0x26, 0x0e, 0x93, 0xb3, 0x5c, 0x88, 0x14, 0x5a, 0x95, 0x5d, 0xca, 0xba, + 0xef, 0xc7, 0xc2, 0xf8, 0x5e, 0x16, 0xce, 0xf4, 0xe9, 0x2c, 0xfb, 0x1e, 0x70, 0xbb, 0x56, 0xbe, + 0x87, 0xd8, 0x2e, 0xcd, 0x1d, 0x65, 0xce, 0xa3, 0x4b, 0x05, 0x5b, 0xc1, 0xf9, 0x95, 0x62, 0xdc, + 0xa5, 0x02, 0x1d, 0x2a, 0x6e, 0x43, 0x9e, 0x4d, 0xd1, 0x10, 0x97, 0xbc, 0xd2, 0xfa, 0x31, 0x1d, + 0x38, 0xea, 0xf2, 0xc1, 0xa9, 0x43, 0x1e, 0xe4, 0xb3, 0x90, 0xdb, 0xda, 0x5a, 0xc7, 0xb5, 0x93, + 0xc3, 0xbe, 0x4f, 0x05, 0x41, 0x4b, 0x5b, 0xaa, 0x53, 0x8c, 0xf6, 0x4a, 0xe8, 0x13, 0xc0, 0xd0, + 0xc9, 0x97, 0x62, 0x6e, 0x29, 0xaf, 0x0c, 0x9e, 0xe8, 0xe1, 0xbd, 0x54, 0x3e, 0x89, 0xe3, 0xc7, + 0xdf, 0xc8, 0x46, 0xdf, 0xf0, 0x4d, 0xa7, 0x15, 0x50, 0x8f, 0x2c, 0xf2, 0x4f, 0x32, 0x3a, 0xff, + 0x9a, 0xe1, 0x6f, 0xb2, 0x10, 0x7d, 0xdf, 0x9c, 0x55, 0xf8, 0x21, 0xbf, 0xa2, 0x7c, 0xc8, 0x39, + 0xfc, 0x90, 0xa7, 0xfb, 0x7e, 0xb2, 0xaf, 0xa4, 0xac, 0x4b, 0xfc, 0x10, 0x53, 0xd6, 0xde, 0x8b, + 0x30, 0xb5, 0xe1, 0xae, 0x3e, 0x0a, 0x42, 0x44, 0xf6, 0x01, 0x16, 0x4c, 0x1d, 0xc8, 0x38, 0x6e, + 0xb6, 0x9a, 0xd4, 0xdb, 0xda, 0xb7, 0x3b, 0xda, 0x2d, 0xab, 0x99, 0x80, 0x33, 0xdc, 0x0d, 0xfa, + 0x50, 0xc7, 0x1d, 0xe3, 0xb8, 0x71, 0xb8, 0xf1, 0x43, 0x59, 0x39, 0x18, 0xf7, 0x97, 0x9f, 0xd2, + 0xdb, 0xbc, 0x37, 0xb4, 0xdb, 0xbc, 0xb9, 0xd0, 0x0e, 0x19, 0x5e, 0x4d, 0x2f, 0x1f, 0x73, 0xa3, + 0xfd, 0xdf, 0x8f, 0xc0, 0xa4, 0x8a, 0xce, 0xc6, 0xa1, 0xd4, 0x6c, 0x7a, 0xea, 0x38, 0xd8, 0xcd, + 0xa6, 0x67, 0x22, 0x54, 0xbb, 0xc0, 0xce, 0x0d, 0xbc, 0xc0, 0xfe, 0x2a, 0x8c, 0x97, 0xdb, 0x4d, + 0xed, 0x5a, 0xcd, 0x48, 0x69, 0xde, 0x95, 0x10, 0x89, 0x7f, 0x0b, 0xa1, 0x79, 0xad, 0xd1, 0x6e, + 0x26, 0x2f, 0xd3, 0x22, 0x96, 0xda, 0xdd, 0xf7, 0xc8, 0x27, 0xb9, 0xfb, 0xbe, 0x01, 0xe3, 0xf7, + 0x7c, 0xba, 0xd5, 0xeb, 0x74, 0x68, 0x0b, 0x97, 0x55, 0x81, 0xeb, 0xfa, 0x3d, 0x9f, 0x5a, 0x01, + 0x42, 0xd5, 0x06, 0x84, 0xa8, 0xea, 0x04, 0x8f, 0x0d, 0x98, 0xe0, 0xeb, 0x50, 0xa8, 0x51, 0xea, + 0xe1, 0x98, 0x4e, 0x44, 0x2a, 0x5d, 0x97, 0x52, 0xcf, 0x62, 0x03, 0xab, 0xdd, 0x89, 0x0b, 0x44, + 0xed, 0x22, 0x7d, 0x72, 0xc8, 0x8b, 0x74, 0xf2, 0x02, 0x4c, 0x76, 0x7b, 0x3b, 0x2d, 0xa7, 0x81, + 0x7c, 0xc5, 0x0d, 0xbc, 0x39, 0xc1, 0x61, 0x8c, 0xad, 0x4f, 0xbe, 0x04, 0x53, 0x78, 0xc6, 0x09, + 0x97, 0xdc, 0xb4, 0x76, 0xff, 0xa4, 0x95, 0x71, 0x4d, 0xa7, 0xc1, 0x40, 0x56, 0x8a, 0xa3, 0x88, + 0xce, 0x68, 0xb1, 0x0e, 0xd3, 0xfa, 0x4c, 0x3e, 0x81, 0x6b, 0xa8, 0xd0, 0x29, 0xa0, 0x50, 0x1c, + 0xbf, 0x9d, 0x2f, 0x40, 0x71, 0x82, 0xbb, 0x03, 0x98, 0x50, 0x0b, 0xfb, 0x64, 0x92, 0x3b, 0xbd, + 0x1d, 0xea, 0x75, 0x68, 0x40, 0x7d, 0x71, 0x08, 0xf0, 0xcd, 0x7c, 0xa9, 0xdb, 0xf5, 0x8d, 0xbf, + 0x97, 0x85, 0xb1, 0xd2, 0x76, 0xbd, 0xda, 0xd9, 0x75, 0xf1, 0x32, 0x29, 0xbc, 0x43, 0x50, 0x2f, + 0x93, 0xc2, 0x3b, 0x04, 0xf5, 0xe6, 0xe0, 0x6a, 0xca, 0x31, 0x0e, 0x5d, 0x54, 0x95, 0x63, 0x9c, + 0x66, 0xdb, 0x8b, 0xae, 0x53, 0x72, 0x43, 0x5c, 0xa7, 0x84, 0xd6, 0xb3, 0xfc, 0xb1, 0xd6, 0x33, + 0xf2, 0x16, 0x4c, 0x54, 0x3b, 0x01, 0xdd, 0xf3, 0xa2, 0x95, 0x1e, 0x1e, 0x29, 0x43, 0xb0, 0xaa, + 0xda, 0x2b, 0xd8, 0x6c, 0x19, 0x71, 0x8b, 0x5d, 0x68, 0xa9, 0xc3, 0x65, 0xc4, 0x0d, 0x7b, 0xb1, + 0xc3, 0xb4, 0x44, 0x34, 0x2a, 0xb1, 0x35, 0x22, 0xaf, 0xac, 0xb9, 0xf2, 0x39, 0x1d, 0x99, 0x99, + 0xd9, 0xc0, 0xae, 0xcc, 0xa6, 0x5f, 0x59, 0x1b, 0xdf, 0xca, 0xc2, 0x44, 0xa9, 0xdb, 0x7d, 0xca, + 0x1d, 0x87, 0x3e, 0xaf, 0x89, 0x57, 0x79, 0x16, 0x0a, 0xfb, 0x35, 0x94, 0xcf, 0xd0, 0x2f, 0x65, + 0x61, 0x26, 0x46, 0xa1, 0xb6, 0x3e, 0x33, 0xa4, 0xbb, 0x50, 0x76, 0x48, 0x77, 0xa1, 0xdc, 0x70, + 0xee, 0x42, 0xf9, 0x4f, 0x22, 0x32, 0x5f, 0x86, 0x5c, 0xa9, 0xdb, 0x8d, 0x5f, 0x3b, 0x76, 0xbb, + 0xf7, 0xaf, 0xf3, 0xf3, 0xac, 0xdd, 0xed, 0x9a, 0x0c, 0x43, 0x93, 0x63, 0xa3, 0x43, 0xca, 0x31, + 0xe3, 0x75, 0x18, 0x47, 0x5e, 0xe8, 0xa4, 0x73, 0x1e, 0xf0, 0x63, 0x16, 0xfe, 0x39, 0x5a, 0x5d, + 0xe2, 0x33, 0xff, 0xbf, 0x33, 0x30, 0x82, 0xbf, 0x9f, 0xd2, 0x35, 0xb6, 0xac, 0xad, 0xb1, 0xa2, + 0xb2, 0xc6, 0x86, 0x59, 0x5d, 0xff, 0x5b, 0x1e, 0x47, 0x4b, 0xac, 0x2b, 0xe1, 0x1b, 0x93, 0x49, + 0xf1, 0x8d, 0x79, 0x13, 0x14, 0xa9, 0xa9, 0x5a, 0x8b, 0x94, 0x3d, 0x43, 0x3d, 0x69, 0x44, 0xc8, + 0xe4, 0x20, 0xee, 0x25, 0x93, 0xc3, 0xc9, 0xb8, 0x10, 0x6f, 0xea, 0x13, 0x71, 0x90, 0x59, 0x03, + 0x52, 0xed, 0xf8, 0xb4, 0xd1, 0xf3, 0x68, 0xfd, 0xc0, 0xe9, 0xde, 0xa7, 0x9e, 0xb3, 0x7b, 0x28, + 0x4e, 0xf7, 0xb8, 0x2f, 0x3b, 0xa2, 0xd4, 0xf2, 0x0f, 0x9c, 0x2e, 0x3b, 0x8a, 0x38, 0xbb, 0x87, + 0x66, 0x0a, 0x0d, 0x79, 0x0f, 0xc6, 0x4c, 0xfa, 0xd0, 0x73, 0x02, 0x79, 0xf7, 0x3b, 0x1d, 0x1e, + 0x9c, 0x11, 0xca, 0x0f, 0x86, 0x1e, 0xff, 0xa1, 0xce, 0xbf, 0x28, 0x27, 0xcb, 0x5c, 0xf0, 0xf1, + 0x3b, 0xde, 0xa9, 0xa8, 0xb7, 0xa5, 0xed, 0x7a, 0x3f, 0xb9, 0x47, 0x2e, 0xc3, 0x08, 0x4a, 0x4f, + 0xa1, 0x13, 0xa0, 0xcf, 0x34, 0xee, 0xa1, 0xaa, 0x68, 0x47, 0x0c, 0xf2, 0x3c, 0x40, 0x68, 0xbe, + 0xf7, 0x17, 0x0a, 0xb8, 0x5b, 0x2b, 0x90, 0xb8, 0xe8, 0x1f, 0x3f, 0x89, 0xe8, 0xff, 0xf4, 0x5c, + 0x43, 0xfe, 0x4e, 0x16, 0x2e, 0x84, 0xe2, 0x6c, 0xd3, 0xab, 0x97, 0xee, 0xae, 0x57, 0x9b, 0x35, + 0xa1, 0xfd, 0xd7, 0x3c, 0xf7, 0x81, 0xc3, 0x4e, 0x7f, 0xd7, 0x8e, 0xf9, 0x18, 0xd7, 0xf9, 0xaa, + 0xe5, 0xa6, 0xc3, 0xac, 0x76, 0x89, 0xae, 0xec, 0x1a, 0xe2, 0x9e, 0xbf, 0xdb, 0x4d, 0x58, 0x12, + 0xd7, 0x9e, 0x31, 0x23, 0x06, 0xe4, 0x87, 0x33, 0x70, 0x3a, 0xbd, 0x21, 0xe2, 0x44, 0xb8, 0x24, + 0x35, 0xcf, 0x3e, 0xad, 0x5d, 0x79, 0xf9, 0xf1, 0xd1, 0xd2, 0x05, 0xdf, 0x6e, 0xb7, 0x2c, 0xa7, + 0xc9, 0x6b, 0x73, 0x1a, 0xd4, 0xea, 0x0a, 0x04, 0xad, 0xde, 0x3e, 0x35, 0x45, 0xdf, 0xe4, 0x0a, + 0x40, 0x41, 0xda, 0x66, 0x8c, 0xbf, 0x9f, 0x01, 0x65, 0x3d, 0x15, 0x4c, 0xda, 0x74, 0x3c, 0xda, + 0x08, 0x50, 0x9e, 0x85, 0x6e, 0xff, 0x1c, 0x16, 0xf3, 0x98, 0x40, 0x18, 0x79, 0x17, 0xc6, 0xb8, + 0x25, 0x87, 0x5b, 0x50, 0xa2, 0x75, 0x28, 0xac, 0x3e, 0x3c, 0x68, 0x84, 0x63, 0xa8, 0x6b, 0x58, + 0x10, 0x31, 0xed, 0xf6, 0xf6, 0xf6, 0x56, 0xb9, 0x65, 0x3b, 0x6d, 0x5f, 0x48, 0x31, 0x1c, 0xd4, + 0x8f, 0x1e, 0x06, 0x56, 0x03, 0xa1, 0xaa, 0x76, 0x1b, 0xa2, 0x1a, 0xb7, 0xa4, 0xd1, 0xe9, 0x18, + 0xb7, 0x9f, 0x25, 0x18, 0xb9, 0x1f, 0x1d, 0x3e, 0x57, 0xc6, 0x1f, 0x1f, 0x2d, 0xf1, 0xc5, 0x62, + 0x72, 0xb8, 0xf1, 0x97, 0x32, 0x30, 0xad, 0xaf, 0x26, 0x72, 0x05, 0x46, 0x85, 0xf3, 0x7d, 0x06, + 0x0f, 0xd9, 0x6c, 0x14, 0x46, 0xb9, 0xdb, 0xbd, 0xe6, 0x6c, 0x2f, 0xb0, 0x98, 0x1c, 0x16, 0x1c, + 0x84, 0x15, 0x09, 0xe5, 0x70, 0x83, 0x83, 0x4c, 0x59, 0x46, 0x0c, 0xa6, 0x84, 0xf9, 0xbd, 0x56, + 0xa0, 0xda, 0x5e, 0x3d, 0x84, 0x98, 0xa2, 0xc4, 0x28, 0xc3, 0x28, 0xff, 0x80, 0x63, 0xee, 0x06, + 0x99, 0x13, 0xb8, 0x1b, 0x18, 0x47, 0x19, 0x80, 0x7a, 0x7d, 0xed, 0x0e, 0x3d, 0xac, 0xd9, 0x8e, + 0x87, 0x97, 0x05, 0x28, 0x2c, 0xef, 0x88, 0x4f, 0x6b, 0x52, 0x5c, 0x16, 0x70, 0xc1, 0x7a, 0x40, + 0x0f, 0xb5, 0xcb, 0x02, 0x89, 0x8a, 0x12, 0xd9, 0x73, 0x1e, 0xd8, 0x01, 0x65, 0x84, 0x59, 0x24, + 0xe4, 0x12, 0x99, 0x43, 0x63, 0x94, 0x0a, 0x32, 0xf9, 0x0a, 0x4c, 0x47, 0xbf, 0xc2, 0x2b, 0x8f, + 0xe9, 0xf0, 0xf3, 0xd5, 0x0b, 0x57, 0x9e, 0x7f, 0x7c, 0xb4, 0xb4, 0xa8, 0x70, 0x8d, 0x5f, 0x86, + 0xc4, 0x98, 0x19, 0x3f, 0x9f, 0xc1, 0x5b, 0x32, 0xd9, 0xc1, 0x8b, 0x90, 0x0f, 0x9d, 0xa8, 0x26, + 0xb9, 0x9d, 0x26, 0x66, 0xd6, 0xc5, 0x72, 0x72, 0x01, 0x72, 0x51, 0x4f, 0x50, 0x40, 0xea, 0x3d, + 0x60, 0xa5, 0xe4, 0x16, 0x8c, 0x0d, 0xd5, 0x66, 0xfc, 0x34, 0x52, 0xda, 0x2a, 0xa9, 0x71, 0x16, + 0x6e, 0x6f, 0x6f, 0x7d, 0xff, 0xce, 0xc2, 0x4f, 0x64, 0x61, 0x86, 0x8d, 0x6b, 0xa9, 0x17, 0xec, + 0xbb, 0x9e, 0x13, 0x1c, 0x3e, 0xb5, 0x56, 0x8a, 0xb7, 0x35, 0x15, 0x67, 0x51, 0xee, 0x31, 0x6a, + 0xdf, 0x86, 0x32, 0x56, 0xfc, 0xe6, 0x08, 0xcc, 0xa5, 0x50, 0x91, 0xd7, 0x34, 0x43, 0xe2, 0x82, + 0x8c, 0xb3, 0xfb, 0xde, 0xd1, 0xd2, 0xa4, 0x44, 0xdf, 0x8a, 0xe2, 0xee, 0x96, 0xf5, 0x2b, 0x67, + 0x3e, 0x52, 0x68, 0x57, 0x54, 0xaf, 0x9c, 0xf5, 0x8b, 0xe6, 0xcb, 0x30, 0x62, 0xba, 0x2d, 0x2a, + 0xfd, 0x23, 0x70, 0x5b, 0xf7, 0x18, 0x40, 0xbb, 0x19, 0x63, 0x00, 0xb2, 0x06, 0x63, 0xec, 0x8f, + 0xbb, 0x76, 0x57, 0xd8, 0x7c, 0x49, 0xa8, 0x64, 0x23, 0xb4, 0xeb, 0x74, 0xf6, 0x54, 0x3d, 0xbb, + 0x45, 0xad, 0xb6, 0xdd, 0xd5, 0xf4, 0x0f, 0x8e, 0xa8, 0xe9, 0xeb, 0x85, 0xfe, 0xfa, 0x7a, 0xe6, + 0x58, 0x7d, 0xbd, 0x09, 0x50, 0x77, 0xf6, 0x3a, 0x4e, 0x67, 0xaf, 0xd4, 0xda, 0x13, 0xd1, 0x8a, + 0x97, 0xfb, 0xcf, 0xc2, 0x95, 0x08, 0x19, 0x17, 0x2e, 0xbf, 0x98, 0xe1, 0x30, 0xcb, 0x6e, 0x69, + 0x06, 0xe9, 0x08, 0x95, 0x6c, 0x00, 0x94, 0x1a, 0x81, 0xf3, 0x80, 0x2d, 0x60, 0x5f, 0xb8, 0xde, + 0xca, 0x06, 0x97, 0x4b, 0x77, 0xe8, 0x61, 0x9d, 0x06, 0x91, 0x81, 0xdb, 0x46, 0x54, 0xf6, 0x1d, + 0x68, 0x5e, 0xb2, 0x11, 0x07, 0xd2, 0x85, 0x53, 0xa5, 0x66, 0xd3, 0x61, 0x3d, 0xb0, 0x5b, 0x78, + 0x63, 0x43, 0x9b, 0xc8, 0x7a, 0x32, 0x9d, 0xf5, 0x65, 0xc1, 0xfa, 0x05, 0x3b, 0xa4, 0xb2, 0x02, + 0x4e, 0x16, 0xaf, 0x26, 0x9d, 0xb1, 0xb1, 0x09, 0xd3, 0x7a, 0xd7, 0xf5, 0x18, 0xcb, 0x49, 0x28, + 0x98, 0xf5, 0x92, 0x55, 0x5f, 0x2b, 0x5d, 0x2b, 0x66, 0x48, 0x11, 0x26, 0xc5, 0xaf, 0x65, 0x6b, + 0xf9, 0x8d, 0x1b, 0xc5, 0xac, 0x06, 0x79, 0xe3, 0xda, 0x72, 0x22, 0x9e, 0x61, 0xac, 0x58, 0xe0, + 0x66, 0x0c, 0xe3, 0x97, 0x33, 0x50, 0x90, 0xed, 0x26, 0x37, 0x20, 0x57, 0xaf, 0xaf, 0xc5, 0x22, + 0x10, 0xa2, 0xfd, 0x85, 0x4b, 0x52, 0xdf, 0x57, 0xdd, 0xcc, 0x18, 0x01, 0xa3, 0xdb, 0x5a, 0xaf, + 0x0b, 0xb5, 0x40, 0xd2, 0x45, 0x62, 0x9b, 0xd3, 0xa5, 0xb8, 0x65, 0xdf, 0x80, 0xdc, 0xed, 0xed, + 0x2d, 0xa1, 0xc4, 0x4b, 0xba, 0x48, 0x92, 0x72, 0xba, 0x8f, 0x1e, 0xaa, 0xf2, 0x9d, 0x11, 0x18, + 0x26, 0x4c, 0x28, 0x4b, 0x98, 0x6f, 0xb7, 0x6d, 0x37, 0x8c, 0x24, 0x14, 0xdb, 0x2d, 0x83, 0x98, + 0xa2, 0x84, 0x69, 0x07, 0xeb, 0x6e, 0xc3, 0x6e, 0x89, 0x7d, 0x1b, 0xb5, 0x83, 0x16, 0x03, 0x98, + 0x1c, 0x6e, 0xfc, 0x7a, 0x06, 0x8a, 0xa8, 0x41, 0xa1, 0xcb, 0x99, 0x7b, 0x40, 0x3b, 0xf7, 0xaf, + 0x91, 0xd7, 0xe5, 0xc7, 0x96, 0x09, 0x8f, 0x8c, 0x23, 0xf8, 0xb1, 0xc5, 0x6c, 0xce, 0xe2, 0x83, + 0x53, 0xc2, 0x38, 0xb3, 0xc3, 0x07, 0x79, 0x1d, 0x13, 0xc6, 0xb9, 0x04, 0x23, 0xd8, 0x1c, 0x21, + 0x16, 0xb1, 0xe5, 0x01, 0x03, 0x98, 0x1c, 0xae, 0x48, 0xa5, 0x9f, 0xca, 0x26, 0xfa, 0xb0, 0xfc, + 0x7d, 0x15, 0x28, 0xa5, 0x77, 0x6e, 0x28, 0x49, 0xfd, 0x01, 0xcc, 0xc7, 0x87, 0x04, 0x8f, 0xf3, + 0x25, 0x98, 0xd1, 0xe1, 0xf2, 0x64, 0x7f, 0x26, 0xb5, 0xae, 0xfb, 0xcb, 0x66, 0x1c, 0xdf, 0xf8, + 0x67, 0x19, 0x18, 0xc7, 0x3f, 0xcd, 0x5e, 0x0b, 0x9d, 0x20, 0x4a, 0xdb, 0x75, 0x61, 0xba, 0x53, + 0xd5, 0x38, 0xfb, 0xa1, 0x6f, 0x09, 0xeb, 0x9e, 0x26, 0x5f, 0x42, 0x64, 0x41, 0xca, 0x6d, 0x72, + 0xf2, 0x7e, 0x32, 0x24, 0xe5, 0xc6, 0x3b, 0x3f, 0x46, 0x2a, 0x90, 0xd1, 0xef, 0x68, 0xbb, 0xce, + 0x96, 0x9f, 0x7a, 0x2b, 0x89, 0x74, 0x6e, 0x4b, 0xf7, 0x3b, 0xe2, 0x68, 0x78, 0x29, 0xb9, 0x5d, + 0x2f, 0x99, 0x1b, 0xda, 0xa5, 0x24, 0x6b, 0xa3, 0xe6, 0x93, 0x2a, 0x90, 0x8c, 0x7f, 0x3a, 0x1e, + 0x1f, 0x40, 0xb1, 0xd5, 0x9d, 0xf0, 0xdb, 0x78, 0x0b, 0x46, 0x4a, 0xad, 0x96, 0xfb, 0x50, 0x48, + 0x09, 0x69, 0x5d, 0x08, 0xc7, 0x8f, 0xef, 0x64, 0x36, 0x43, 0xd1, 0x82, 0x3f, 0x18, 0x80, 0x94, + 0x61, 0xbc, 0xb4, 0x5d, 0xaf, 0x56, 0x2b, 0x5b, 0x5b, 0xeb, 0x22, 0xa6, 0xfe, 0x25, 0x39, 0x3e, + 0x8e, 0xd3, 0xb4, 0xe2, 0xf7, 0x62, 0x91, 0xe6, 0x1e, 0xd1, 0x91, 0x77, 0x00, 0x6e, 0xbb, 0x4e, + 0xe7, 0x2e, 0x0d, 0xf6, 0xdd, 0xa6, 0xe8, 0xfc, 0xb9, 0xc7, 0x47, 0x4b, 0x13, 0x1f, 0xb9, 0x4e, + 0xc7, 0x6a, 0x23, 0x98, 0xb5, 0x3d, 0x42, 0x32, 0x95, 0xbf, 0xd9, 0x48, 0xaf, 0xb8, 0xdc, 0xb1, + 0x61, 0x24, 0x1a, 0xe9, 0x1d, 0x37, 0xe1, 0xd3, 0x20, 0xd1, 0x48, 0x1b, 0x66, 0xea, 0xbd, 0xbd, + 0x3d, 0xca, 0xa4, 0xba, 0xb0, 0x57, 0x8c, 0x8a, 0xb3, 0x6d, 0x98, 0x91, 0x80, 0x9f, 0x44, 0xd8, + 0xf9, 0xc4, 0x5f, 0x79, 0x8d, 0x2d, 0xe4, 0xef, 0x1e, 0x2d, 0x89, 0xfb, 0x36, 0xa6, 0xa4, 0xf9, + 0x92, 0x3e, 0x69, 0xad, 0x88, 0xf3, 0x26, 0x9b, 0x30, 0x7a, 0xcb, 0x09, 0xd6, 0x7a, 0x3b, 0xc2, + 0x71, 0xfb, 0x85, 0x01, 0x1f, 0x0d, 0x47, 0xe4, 0x06, 0xdf, 0x3d, 0x27, 0xd8, 0xef, 0xa9, 0x4e, + 0xdc, 0x82, 0x0d, 0xd9, 0x86, 0x42, 0xd9, 0xf1, 0x1a, 0x2d, 0x5a, 0xae, 0x8a, 0x5d, 0xff, 0xc2, + 0x00, 0x96, 0x12, 0x95, 0x8f, 0x4b, 0x03, 0x7f, 0x35, 0x1c, 0x55, 0x0b, 0x90, 0x18, 0xe4, 0xaf, + 0x66, 0xe0, 0xd9, 0xb0, 0xf5, 0xa5, 0x3d, 0xda, 0x09, 0xee, 0xda, 0x41, 0x63, 0x9f, 0x7a, 0x62, + 0x94, 0xc6, 0x07, 0x8d, 0xd2, 0x17, 0x12, 0xa3, 0x74, 0x29, 0x1a, 0x25, 0x9b, 0x31, 0xb3, 0xda, + 0x9c, 0x5b, 0x72, 0xcc, 0x06, 0xd5, 0x4a, 0x2c, 0x80, 0xc8, 0x82, 0x2f, 0x02, 0x7f, 0x5e, 0x1a, + 0xd0, 0xe1, 0x08, 0x59, 0x38, 0xff, 0x86, 0xbf, 0x35, 0x3f, 0x9e, 0x10, 0x4a, 0xee, 0xc8, 0x28, + 0x09, 0xae, 0x91, 0x9c, 0x1f, 0xc0, 0x9b, 0x47, 0x4e, 0xcc, 0x0d, 0x88, 0x87, 0xe2, 0xb3, 0xbd, + 0x6e, 0xef, 0x08, 0x25, 0xe4, 0x98, 0xd9, 0x5e, 0xb7, 0xa3, 0xd9, 0x6e, 0xd9, 0xf1, 0xd9, 0x5e, + 0xb7, 0x77, 0x48, 0x99, 0x87, 0x76, 0xf1, 0x38, 0xa0, 0xe7, 0x07, 0x71, 0x2b, 0xd7, 0xf8, 0xce, + 0x9c, 0x12, 0xe2, 0xf5, 0x21, 0x8c, 0xd7, 0xbb, 0x76, 0x83, 0xb6, 0x9c, 0xdd, 0x40, 0x5c, 0xe9, + 0xbc, 0x38, 0x80, 0x55, 0x88, 0x2b, 0xae, 0x03, 0xe4, 0x4f, 0xf5, 0x80, 0x14, 0xe2, 0xb0, 0x16, + 0x6e, 0xd5, 0xee, 0x2e, 0xcc, 0x1c, 0xdb, 0xc2, 0xad, 0xda, 0x5d, 0xa1, 0x73, 0x74, 0xdb, 0x9a, + 0xce, 0x51, 0xbb, 0x6b, 0xfc, 0x6a, 0x0e, 0xce, 0xf4, 0xa1, 0x21, 0x1b, 0x52, 0x46, 0x65, 0x34, + 0xb3, 0x62, 0x1f, 0xf4, 0x2b, 0xc7, 0x8a, 0xad, 0x75, 0x28, 0xae, 0xde, 0x41, 0xb5, 0x96, 0xfd, + 0xa4, 0xcd, 0x72, 0x49, 0x4a, 0xf7, 0xf3, 0x8f, 0x8f, 0x96, 0x9e, 0xa3, 0x07, 0xe8, 0x12, 0x64, + 0xf3, 0x42, 0xab, 0xa1, 0x45, 0x69, 0x25, 0x28, 0x17, 0x7f, 0x28, 0x0b, 0x79, 0xdc, 0x69, 0x62, + 0x59, 0x2b, 0x32, 0x27, 0xca, 0x5a, 0xf1, 0x3e, 0x4c, 0xae, 0xde, 0xe1, 0x87, 0xce, 0x35, 0xdb, + 0xdf, 0x17, 0x72, 0x10, 0x6f, 0xd8, 0xe8, 0x81, 0x25, 0xce, 0xa8, 0xfb, 0xb6, 0xa6, 0xe4, 0x69, + 0x14, 0xe4, 0x1e, 0xcc, 0xf1, 0xb6, 0x39, 0xbb, 0x4e, 0x83, 0x87, 0xb8, 0x3b, 0x76, 0x4b, 0x08, + 0xc5, 0x0b, 0x8f, 0x8f, 0x96, 0x96, 0xe8, 0x01, 0x3a, 0x3b, 0x89, 0x72, 0xcb, 0x47, 0x04, 0xd5, + 0xeb, 0x29, 0x85, 0x5e, 0x8d, 0xbb, 0x35, 0xc7, 0xb1, 0x42, 0x56, 0x1b, 0xab, 0x9b, 0xe1, 0x72, + 0x24, 0xe3, 0xef, 0x8f, 0xc0, 0x62, 0x7f, 0x79, 0x46, 0xbe, 0xa8, 0x4f, 0xe0, 0xc5, 0x63, 0x25, + 0xe0, 0xf1, 0x73, 0xf8, 0x25, 0x98, 0x5f, 0xed, 0x04, 0xd4, 0xeb, 0x7a, 0x8e, 0x8c, 0xb4, 0x5e, + 0x73, 0x7d, 0xe9, 0x5c, 0x86, 0x5e, 0x5e, 0x34, 0x2c, 0x17, 0xd6, 0x41, 0x74, 0x75, 0x53, 0x58, + 0xa5, 0x72, 0x20, 0xab, 0x30, 0xad, 0xc0, 0x5b, 0xbd, 0x3d, 0xb1, 0x83, 0xa3, 0xe7, 0xa2, 0xca, + 0xb3, 0xd5, 0x53, 0x0f, 0x3a, 0x31, 0xa2, 0xc5, 0x9f, 0xcf, 0x89, 0x65, 0x71, 0x01, 0x72, 0xf5, + 0xde, 0x8e, 0x58, 0x0e, 0x5c, 0x55, 0xd7, 0xc4, 0x3a, 0x2b, 0x25, 0x9f, 0x07, 0x30, 0x69, 0xd7, + 0xf5, 0x9d, 0xc0, 0xf5, 0x0e, 0x55, 0xe7, 0x7f, 0x2f, 0x84, 0xea, 0x9e, 0x9a, 0x12, 0x4a, 0xd6, + 0x60, 0x26, 0xfa, 0xb5, 0xf9, 0xb0, 0x23, 0x4c, 0x9a, 0xe3, 0xdc, 0x9a, 0x10, 0x91, 0x5b, 0x2e, + 0x2b, 0x53, 0x37, 0xaa, 0x18, 0x19, 0x59, 0x86, 0xc2, 0xb6, 0xeb, 0x1d, 0xec, 0xb2, 0x89, 0xca, + 0x47, 0x5b, 0xe9, 0x43, 0x01, 0x53, 0xb7, 0x0c, 0x89, 0xc7, 0xd6, 0xfc, 0x6a, 0xe7, 0x81, 0xe3, + 0xb9, 0x9d, 0x36, 0xed, 0x04, 0xea, 0xed, 0x23, 0x8d, 0xc0, 0x5a, 0xa8, 0x54, 0x04, 0x66, 0x67, + 0xe6, 0x52, 0x23, 0x70, 0x3d, 0x71, 0xf5, 0xc8, 0xa7, 0x9b, 0x01, 0xb4, 0xe9, 0x66, 0x00, 0x36, + 0x88, 0x26, 0xdd, 0x15, 0x36, 0x73, 0x1c, 0x44, 0x8f, 0xee, 0x6a, 0x71, 0x60, 0x74, 0x97, 0xa9, + 0x02, 0x26, 0xdd, 0xc5, 0x83, 0xbe, 0x96, 0x34, 0x65, 0x37, 0x61, 0x22, 0x12, 0x68, 0xc6, 0x6f, + 0x8d, 0xf7, 0x5d, 0xb7, 0x4c, 0xf6, 0x9e, 0x6c, 0xdd, 0xae, 0xdb, 0x43, 0xac, 0xdb, 0xd7, 0x42, + 0xff, 0x4f, 0x35, 0xf8, 0x11, 0x21, 0xaa, 0xf0, 0xe7, 0x38, 0x8b, 0xbf, 0x58, 0x38, 0xc9, 0x22, + 0x12, 0x83, 0x94, 0x1d, 0x76, 0x90, 0x72, 0x43, 0x0d, 0x12, 0x59, 0x81, 0xa9, 0x30, 0x35, 0x4f, + 0xcd, 0x0e, 0x34, 0xd9, 0x14, 0x26, 0x5a, 0xb2, 0xba, 0x76, 0xa0, 0xca, 0x26, 0x9d, 0x84, 0xbc, + 0x0d, 0x13, 0xc2, 0x09, 0x1a, 0x39, 0x8c, 0x44, 0x6e, 0x68, 0xd2, 0x63, 0x3a, 0x46, 0xaf, 0xa2, + 0xb3, 0x4f, 0xb2, 0xe6, 0x74, 0x69, 0xcb, 0xe9, 0xd0, 0x3a, 0x5a, 0xcd, 0xc5, 0x8a, 0xc1, 0x4f, + 0xb2, 0x2b, 0x4a, 0x2c, 0x6e, 0x50, 0xd7, 0xec, 0x65, 0x1a, 0x51, 0x7c, 0xb1, 0x8e, 0x9d, 0x68, + 0xb1, 0x72, 0x2f, 0x10, 0x6f, 0xdd, 0xdd, 0x73, 0xa4, 0xdf, 0x9b, 0xf4, 0x02, 0xf1, 0xac, 0x16, + 0x83, 0xc6, 0xbc, 0x40, 0x38, 0x2a, 0xd3, 0xeb, 0xd9, 0x8f, 0x6a, 0x45, 0xdc, 0xcf, 0xa0, 0x5e, + 0x8f, 0x44, 0xba, 0xb3, 0x21, 0x47, 0x92, 0xd5, 0xac, 0xb6, 0x6d, 0xa7, 0x25, 0x62, 0xdc, 0xa2, + 0x6a, 0x28, 0x83, 0xc6, 0xab, 0x41, 0x54, 0xd2, 0x80, 0x49, 0x93, 0xee, 0xd6, 0x3c, 0x37, 0xa0, + 0x8d, 0x80, 0x36, 0x85, 0x2e, 0x23, 0xd5, 0xf9, 0x15, 0xd7, 0xe5, 0x7a, 0xda, 0xca, 0xeb, 0xbf, + 0x75, 0xb4, 0x94, 0xf9, 0xee, 0xd1, 0x12, 0x30, 0x10, 0xf7, 0x64, 0x7d, 0x7c, 0xb4, 0x74, 0x86, + 0xcd, 0x7f, 0x57, 0x12, 0xab, 0x5b, 0x8c, 0xca, 0x94, 0xfc, 0x20, 0x13, 0xba, 0xe1, 0x90, 0x44, + 0x95, 0x4d, 0xf6, 0xa9, 0xec, 0x8d, 0xd4, 0xca, 0x96, 0x94, 0xd1, 0x4e, 0xad, 0x34, 0xb5, 0x12, + 0xf2, 0x0e, 0x4c, 0x94, 0xab, 0x65, 0xb7, 0xb3, 0xeb, 0xec, 0xd5, 0xd7, 0x4a, 0xa8, 0x10, 0x09, + 0x2f, 0xe6, 0x86, 0x63, 0x35, 0x10, 0x6e, 0xf9, 0xfb, 0xb6, 0x16, 0x09, 0x12, 0xe1, 0x93, 0x5b, + 0x30, 0x2d, 0x7f, 0x9a, 0x74, 0xf7, 0x9e, 0x59, 0x45, 0x3d, 0x48, 0xba, 0x8e, 0x87, 0x1c, 0xd8, + 0x40, 0xf4, 0x3c, 0x55, 0x3f, 0x8e, 0x91, 0xb1, 0xc5, 0x58, 0xa1, 0xdd, 0x96, 0x7b, 0xc8, 0x9a, + 0xb7, 0xe5, 0x50, 0x0f, 0x35, 0x1f, 0xb1, 0x18, 0x9b, 0x61, 0x89, 0x15, 0x38, 0x9a, 0xb8, 0x8d, + 0x11, 0x91, 0x0d, 0x98, 0x15, 0x4b, 0xfc, 0xbe, 0xe3, 0x3b, 0x3b, 0x4e, 0xcb, 0x09, 0x0e, 0x17, + 0x8a, 0xc8, 0x09, 0xb5, 0x10, 0xf9, 0x5d, 0x3c, 0x08, 0x4b, 0x15, 0x66, 0x49, 0x52, 0xe3, 0x97, + 0xb3, 0xf0, 0xdc, 0x20, 0xfd, 0x9f, 0xd4, 0x75, 0x61, 0x76, 0x69, 0x88, 0x33, 0xc3, 0xf1, 0xe2, + 0x6c, 0x15, 0xa6, 0x37, 0xbd, 0x3d, 0xbb, 0xe3, 0x7c, 0x03, 0xcf, 0x75, 0xa1, 0x33, 0x0c, 0x0e, + 0x86, 0xab, 0x94, 0xe8, 0xab, 0x3d, 0x46, 0xb4, 0xf8, 0x40, 0x88, 0xb9, 0x8f, 0x1b, 0x56, 0x71, + 0x03, 0xc6, 0xcb, 0x6e, 0x27, 0xa0, 0x8f, 0x82, 0x58, 0xe8, 0x1c, 0x07, 0xc6, 0x43, 0xe7, 0x24, + 0xaa, 0xf1, 0xff, 0x64, 0xe1, 0xdc, 0x40, 0x05, 0x98, 0x6c, 0xe9, 0xa3, 0x76, 0x79, 0x18, 0xad, + 0xf9, 0xf8, 0x61, 0x5b, 0x4e, 0xf8, 0x6d, 0x1c, 0xeb, 0xb5, 0xbc, 0xf8, 0x5f, 0x67, 0xc4, 0x20, + 0x7d, 0x06, 0xc6, 0xb0, 0xaa, 0x70, 0x88, 0xb8, 0x6d, 0x08, 0xa5, 0xb0, 0xa3, 0xdb, 0x86, 0x38, + 0x1a, 0xb9, 0x0e, 0x85, 0xb2, 0xdd, 0x6a, 0x29, 0x81, 0x85, 0xa8, 0xd7, 0x37, 0x10, 0x16, 0x73, + 0xf3, 0x91, 0x88, 0xe4, 0x4d, 0x00, 0xfe, 0xb7, 0xb2, 0x57, 0xa0, 0xb0, 0x14, 0x64, 0xb1, 0xed, + 0x42, 0x41, 0xc6, 0x14, 0x62, 0x0d, 0x37, 0x8c, 0x80, 0xe2, 0x29, 0xc4, 0x18, 0x40, 0x4b, 0x21, + 0xc6, 0x00, 0xc6, 0xaf, 0xe4, 0xe0, 0xf9, 0xc1, 0xa7, 0x38, 0x72, 0x4f, 0x9f, 0x82, 0x57, 0x86, + 0x3a, 0xfb, 0x1d, 0x3f, 0x07, 0x32, 0x37, 0x1f, 0x1f, 0x90, 0x4b, 0x49, 0xe7, 0xe2, 0xef, 0x1d, + 0x2d, 0x29, 0xbe, 0x63, 0xb7, 0x5d, 0xa7, 0xa3, 0xdc, 0x11, 0x7c, 0x1d, 0xa0, 0x1e, 0xd8, 0x81, + 0xd3, 0xb8, 0xbd, 0x7d, 0x47, 0xc6, 0xab, 0xdf, 0x18, 0xae, 0x65, 0x11, 0x1d, 0x97, 0x2b, 0xc2, + 0x7c, 0x8e, 0x50, 0xeb, 0xa3, 0x87, 0x07, 0xda, 0x39, 0x35, 0x42, 0x5e, 0xfc, 0x02, 0x14, 0xe3, + 0xa4, 0xe4, 0x22, 0xe4, 0xb1, 0x01, 0x8a, 0x87, 0x74, 0x8c, 0x03, 0x96, 0x2f, 0xde, 0x15, 0x6b, + 0x67, 0x15, 0xa6, 0xc5, 0xb5, 0xb4, 0x6e, 0x11, 0xc3, 0xef, 0x55, 0xde, 0x6a, 0x27, 0xad, 0x62, + 0x31, 0x22, 0xe3, 0x8f, 0x33, 0x70, 0xb6, 0xef, 0xf9, 0x98, 0xd4, 0xf4, 0x09, 0x7b, 0xe9, 0xb8, + 0x03, 0xf5, 0xb1, 0x73, 0xb5, 0xf8, 0x63, 0x72, 0xed, 0xbf, 0x0b, 0x93, 0xf5, 0xde, 0x4e, 0xfc, + 0x90, 0xc5, 0xa3, 0x97, 0x15, 0xb8, 0xba, 0x83, 0xa9, 0xf8, 0xac, 0xff, 0xf2, 0xe6, 0x5d, 0xb8, + 0x55, 0xf0, 0x83, 0x1f, 0xf6, 0x3f, 0x0c, 0x8b, 0xc2, 0xa8, 0x35, 0x75, 0x10, 0x63, 0x44, 0xc6, + 0x2f, 0x65, 0xd3, 0x4f, 0xab, 0xec, 0xac, 0x7d, 0x82, 0xd3, 0xea, 0xad, 0x72, 0xed, 0xf8, 0xbe, + 0xff, 0x67, 0xb2, 0xef, 0x78, 0x11, 0x29, 0x24, 0x9e, 0x34, 0xef, 0x89, 0x8b, 0x48, 0x29, 0x1d, + 0x7d, 0xfd, 0x22, 0x52, 0x22, 0x93, 0x37, 0x60, 0x7c, 0xdd, 0xe5, 0xd1, 0xa4, 0xb2, 0xc7, 0x3c, + 0x6e, 0x48, 0x02, 0x55, 0xf1, 0x18, 0x62, 0xb2, 0xb3, 0x85, 0x3e, 0xf1, 0xd2, 0xb9, 0x1b, 0xcf, + 0x16, 0xb1, 0xe5, 0xa2, 0x1b, 0xc1, 0x74, 0x32, 0xe3, 0xc7, 0xb2, 0x30, 0xcd, 0x17, 0x2f, 0x37, + 0xd2, 0x3e, 0xb5, 0x06, 0xf0, 0xb7, 0x34, 0x03, 0xb8, 0x4c, 0x74, 0xa0, 0x76, 0x6d, 0x28, 0xf3, + 0xf7, 0x3e, 0x90, 0x24, 0x0d, 0x31, 0x61, 0x52, 0x85, 0x0e, 0xb6, 0x7c, 0x5f, 0x8b, 0x72, 0x62, + 0x08, 0xd9, 0x81, 0xd7, 0x0f, 0xbe, 0xa9, 0xf1, 0x30, 0xfe, 0x52, 0x16, 0xa6, 0x94, 0x8b, 0xca, + 0xa7, 0x76, 0xe0, 0xbf, 0xa0, 0x0d, 0xfc, 0x42, 0xe8, 0x90, 0x1c, 0xf6, 0x6c, 0xa8, 0x71, 0xef, + 0xc1, 0x6c, 0x82, 0x24, 0x7e, 0xdf, 0x9b, 0x19, 0xe6, 0xbe, 0xf7, 0xb5, 0x64, 0xb0, 0x3e, 0xcf, + 0x53, 0x19, 0x06, 0xeb, 0xab, 0xd9, 0x01, 0x7e, 0x22, 0x0b, 0xf3, 0xe2, 0x17, 0x66, 0xa4, 0xe1, + 0xd2, 0xfb, 0xa9, 0x9d, 0x8b, 0x92, 0x36, 0x17, 0x4b, 0xfa, 0x5c, 0x28, 0x1d, 0xec, 0x3f, 0x25, + 0xc6, 0x5f, 0x00, 0x58, 0xe8, 0x47, 0x30, 0x74, 0xdc, 0x4f, 0xe4, 0x55, 0x9d, 0x1d, 0xc2, 0xab, + 0x7a, 0x1d, 0x8a, 0x58, 0x95, 0xc8, 0x5f, 0xe1, 0xb3, 0x33, 0x40, 0x2e, 0x52, 0xb8, 0x79, 0xda, + 0x20, 0x91, 0x03, 0xc3, 0x8f, 0x1d, 0x02, 0x12, 0x94, 0xe4, 0xe7, 0x33, 0x30, 0x8d, 0xc0, 0xd5, + 0x07, 0xb4, 0x13, 0x20, 0xb3, 0xbc, 0x70, 0x02, 0x0e, 0xed, 0xe3, 0xf5, 0xc0, 0x73, 0x3a, 0x7b, + 0xc2, 0x40, 0xbe, 0x23, 0x0c, 0xe4, 0x6f, 0x73, 0xc3, 0xfe, 0x95, 0x86, 0xdb, 0xbe, 0xba, 0xe7, + 0xd9, 0x0f, 0x1c, 0x7e, 0x07, 0x6f, 0xb7, 0xae, 0x46, 0x99, 0x95, 0xbb, 0x4e, 0x2c, 0x57, 0xb2, + 0x60, 0x85, 0x97, 0x0f, 0xbc, 0xa1, 0x14, 0xab, 0x8d, 0x9f, 0x55, 0xf4, 0x16, 0x91, 0x1f, 0x80, + 0x33, 0x3c, 0x38, 0x9d, 0xa9, 0xbc, 0x4e, 0xa7, 0xe7, 0xf6, 0xfc, 0x15, 0xbb, 0x71, 0xc0, 0xf6, + 0x3d, 0x1e, 0xc8, 0x80, 0x3d, 0x6f, 0x84, 0x85, 0xd6, 0x0e, 0x2f, 0xd5, 0x02, 0xb7, 0xd2, 0x19, + 0x90, 0x35, 0x98, 0xe5, 0x45, 0xa5, 0x5e, 0xe0, 0xd6, 0x1b, 0x76, 0xcb, 0xe9, 0xec, 0xe1, 0x99, + 0xba, 0xc0, 0xf7, 0x63, 0xbb, 0x17, 0xb8, 0x96, 0xcf, 0xe1, 0xea, 0xd1, 0x25, 0x41, 0x44, 0xaa, + 0x30, 0x63, 0x52, 0xbb, 0x79, 0xd7, 0x7e, 0x54, 0xb6, 0xbb, 0x76, 0x83, 0x1d, 0x84, 0x0a, 0x78, + 0x99, 0x84, 0x67, 0x33, 0x8f, 0xda, 0x4d, 0xab, 0x6d, 0x3f, 0xb2, 0x1a, 0xa2, 0x50, 0xb7, 0x61, + 0x69, 0x74, 0x21, 0x2b, 0xa7, 0x13, 0xb2, 0x1a, 0x8f, 0xb3, 0x72, 0x3a, 0xfd, 0x59, 0x45, 0x74, + 0x92, 0xd5, 0x96, 0xed, 0xed, 0xd1, 0x80, 0xbb, 0xb0, 0xb1, 0xf3, 0x78, 0x46, 0x61, 0x15, 0x60, + 0x99, 0x85, 0xee, 0x6c, 0x71, 0x56, 0x0a, 0x1d, 0x5b, 0x79, 0xdb, 0x9e, 0x13, 0x50, 0xb5, 0x87, + 0x13, 0xd8, 0x2c, 0x1c, 0x7f, 0x74, 0xfe, 0xeb, 0xd7, 0xc5, 0x04, 0x65, 0xc4, 0x4d, 0xe9, 0xe4, + 0x64, 0x82, 0x5b, 0x7a, 0x2f, 0x13, 0x94, 0x21, 0x37, 0xb5, 0x9f, 0x53, 0xd8, 0x4f, 0x85, 0x5b, + 0x9f, 0x8e, 0x26, 0x28, 0xc9, 0x06, 0x1b, 0xb4, 0x80, 0x76, 0xd8, 0x8a, 0x16, 0x2e, 0x7c, 0xd3, + 0xd8, 0xb4, 0x17, 0x85, 0x1f, 0x4a, 0xd1, 0x93, 0xc5, 0x56, 0x8a, 0x43, 0x5f, 0x9c, 0x98, 0xfc, + 0x19, 0x98, 0xb9, 0xe7, 0xd3, 0x9b, 0xd5, 0x5a, 0x5d, 0x86, 0xe3, 0xe3, 0x69, 0x7b, 0x7a, 0xf9, + 0xda, 0x31, 0x42, 0xe7, 0x8a, 0x4a, 0x83, 0xd9, 0x8a, 0xf9, 0xbc, 0xf5, 0x7c, 0x6a, 0xed, 0x3a, + 0x5d, 0x3f, 0x4c, 0x0c, 0xa2, 0xce, 0x5b, 0xac, 0x2a, 0x63, 0x0d, 0x66, 0x13, 0x6c, 0xc8, 0x34, + 0x00, 0x03, 0x5a, 0xf7, 0x36, 0xea, 0xab, 0x5b, 0xc5, 0x67, 0x48, 0x11, 0x26, 0xf1, 0xf7, 0xea, + 0x46, 0x69, 0x65, 0x7d, 0xb5, 0x52, 0xcc, 0x90, 0x59, 0x98, 0x42, 0x48, 0xa5, 0x5a, 0xe7, 0xa0, + 0x2c, 0xcf, 0x55, 0x69, 0x16, 0xf9, 0xa7, 0x1b, 0xb0, 0x0f, 0x00, 0xf7, 0x14, 0xe3, 0xaf, 0x67, + 0xe1, 0xac, 0xdc, 0x56, 0x68, 0xf0, 0xd0, 0xf5, 0x0e, 0x9c, 0xce, 0xde, 0x53, 0xbe, 0x3b, 0xdc, + 0xd4, 0x76, 0x87, 0x17, 0x63, 0x3b, 0x75, 0xac, 0x97, 0x03, 0xb6, 0x88, 0xff, 0xa5, 0x00, 0xe7, + 0x06, 0x52, 0x91, 0x2f, 0xb2, 0xdd, 0xdc, 0xa1, 0x9d, 0xa0, 0xda, 0x6c, 0xd1, 0x2d, 0xa7, 0x4d, + 0xdd, 0x5e, 0x20, 0x5c, 0x46, 0x2f, 0xe0, 0x01, 0x17, 0x0b, 0x2d, 0xa7, 0xd9, 0xa2, 0x56, 0xc0, + 0x8b, 0xb5, 0xe5, 0x96, 0xa4, 0x66, 0x2c, 0xc3, 0x24, 0xea, 0xd5, 0x4e, 0x40, 0xbd, 0x07, 0xe8, + 0x9c, 0x12, 0xb2, 0x3c, 0xa0, 0xb4, 0x6b, 0xd9, 0xac, 0xd4, 0x72, 0x44, 0xb1, 0xce, 0x32, 0x41, + 0x4d, 0x6e, 0x2a, 0x2c, 0xcb, 0x4c, 0x1d, 0xbe, 0x6b, 0x3f, 0x12, 0xb7, 0xe5, 0x22, 0xa9, 0x51, + 0xc8, 0x92, 0xc7, 0x1a, 0xb5, 0xed, 0x47, 0x66, 0x92, 0x84, 0x7c, 0x05, 0x4e, 0x89, 0x0d, 0x48, + 0xc4, 0x8a, 0xca, 0x1e, 0xf3, 0x48, 0xd4, 0x97, 0x1f, 0x1f, 0x2d, 0x9d, 0x91, 0x29, 0x9c, 0x64, + 0x74, 0x70, 0x5a, 0xaf, 0xd3, 0xb9, 0x90, 0x2d, 0xb6, 0x21, 0xc7, 0x86, 0xe3, 0x2e, 0xf5, 0x7d, + 0x7b, 0x4f, 0xde, 0xac, 0x73, 0xef, 0x7a, 0x65, 0x30, 0xad, 0x36, 0x2f, 0x37, 0xfb, 0x52, 0x92, + 0x35, 0x98, 0xde, 0xa6, 0x3b, 0xea, 0xfc, 0x8c, 0x86, 0xa2, 0xaa, 0xf8, 0x90, 0xee, 0xf4, 0x9f, + 0x9c, 0x18, 0x1d, 0x71, 0xd0, 0x60, 0xf6, 0xe8, 0x70, 0xdd, 0xf1, 0x03, 0xda, 0xa1, 0x1e, 0xe6, + 0x20, 0x18, 0x43, 0x61, 0xb0, 0x10, 0x69, 0xc8, 0x7a, 0xf9, 0xca, 0x0b, 0x8f, 0x8f, 0x96, 0xce, + 0xf1, 0x68, 0x92, 0x96, 0x80, 0x5b, 0xb1, 0xbc, 0xe3, 0x49, 0xae, 0xe4, 0x6b, 0x30, 0x63, 0xba, + 0xbd, 0xc0, 0xe9, 0xec, 0xd5, 0x03, 0xcf, 0x0e, 0xe8, 0x1e, 0xdf, 0x90, 0xa2, 0x64, 0x07, 0xb1, + 0x52, 0x71, 0xd7, 0xc2, 0x81, 0x96, 0x2f, 0xa0, 0xda, 0x8e, 0xa0, 0x13, 0x90, 0xaf, 0xc2, 0x34, + 0x8f, 0x12, 0x0c, 0x2b, 0x18, 0xd7, 0x72, 0xa6, 0xea, 0x85, 0xf7, 0xaf, 0xf1, 0x03, 0x2a, 0x8f, + 0x36, 0x4c, 0xab, 0x20, 0xc6, 0x8d, 0x7c, 0x28, 0x06, 0xab, 0xe6, 0x74, 0xf6, 0xc2, 0x65, 0x0c, + 0x38, 0xf2, 0xaf, 0x47, 0x43, 0xd2, 0x65, 0xcd, 0x95, 0xcb, 0xb8, 0x8f, 0xa7, 0x46, 0x92, 0x0f, + 0x09, 0xe0, 0x5c, 0xc9, 0xf7, 0x1d, 0x3f, 0x10, 0x8e, 0xd5, 0xab, 0x8f, 0x68, 0xa3, 0xc7, 0x90, + 0xb7, 0x5d, 0xef, 0x80, 0x7a, 0xdc, 0xb5, 0x6f, 0x64, 0xe5, 0xca, 0xe3, 0xa3, 0xa5, 0x57, 0x6c, + 0x44, 0xb4, 0x84, 0x2f, 0xb6, 0x45, 0x25, 0xaa, 0xf5, 0x90, 0xe3, 0x2a, 0x7d, 0x18, 0xcc, 0x94, + 0x7c, 0x15, 0x4e, 0x97, 0x6d, 0x9f, 0x56, 0x3b, 0x3e, 0xed, 0xf8, 0x4e, 0xe0, 0x3c, 0xa0, 0x62, + 0x50, 0x71, 0xf3, 0x2b, 0x60, 0x86, 0x76, 0xa3, 0x81, 0x8f, 0x39, 0x44, 0x28, 0x96, 0x98, 0x14, + 0xa5, 0x9a, 0x3e, 0x5c, 0x8c, 0xa3, 0x0c, 0x14, 0xe3, 0xc3, 0x4e, 0xbe, 0x04, 0xe3, 0xdc, 0x25, + 0x81, 0xfa, 0xfb, 0x22, 0xc0, 0x4d, 0xde, 0x70, 0x87, 0x70, 0x9d, 0x48, 0x84, 0x24, 0x70, 0x87, + 0x07, 0xaa, 0xde, 0xd7, 0x62, 0x48, 0x82, 0x24, 0x22, 0x4d, 0x98, 0xe4, 0x23, 0x4b, 0x31, 0x2b, + 0x89, 0xf0, 0x4c, 0x7b, 0x41, 0x5d, 0xc9, 0xa2, 0x28, 0xc6, 0x1f, 0x4d, 0xde, 0x62, 0xfe, 0x38, + 0x82, 0x56, 0x85, 0xc6, 0x75, 0x05, 0xa0, 0x20, 0x09, 0x8d, 0xb3, 0x70, 0xa6, 0x4f, 0x9b, 0x8d, + 0x07, 0x78, 0x0d, 0xd6, 0xa7, 0x46, 0xf2, 0x25, 0x98, 0x47, 0xc2, 0xb2, 0xdb, 0xe9, 0xd0, 0x46, + 0x80, 0xa2, 0x43, 0x9a, 0x8e, 0x72, 0xfc, 0xae, 0x95, 0xf7, 0xb7, 0x11, 0x22, 0x58, 0x71, 0x0b, + 0x52, 0x2a, 0x07, 0xe3, 0x67, 0xb2, 0xb0, 0x20, 0xa4, 0x91, 0x49, 0x1b, 0xae, 0xd7, 0x7c, 0xfa, + 0x77, 0xbf, 0x55, 0x6d, 0xf7, 0xbb, 0x10, 0x46, 0x34, 0xa7, 0x75, 0x72, 0xc0, 0xe6, 0xf7, 0x4b, + 0x19, 0x78, 0x6e, 0x10, 0x11, 0x1b, 0x9d, 0x30, 0x0b, 0xcb, 0x78, 0x22, 0xdb, 0x4a, 0x17, 0xe6, + 0x70, 0x42, 0xcb, 0xfb, 0xb4, 0x71, 0xe0, 0xaf, 0xb9, 0x7e, 0x80, 0x8e, 0xb1, 0xd9, 0x3e, 0x17, + 0x35, 0xaf, 0xa5, 0x5e, 0xd4, 0x9c, 0xe6, 0xab, 0xac, 0x81, 0x3c, 0x78, 0x9e, 0x98, 0x03, 0x7a, + 0xe8, 0x9b, 0x69, 0xac, 0xd1, 0xc9, 0xb1, 0xd4, 0x0b, 0xf6, 0x6b, 0x1e, 0xdd, 0xa5, 0x1e, 0xed, + 0x34, 0xe8, 0xf7, 0x99, 0x93, 0xa3, 0xde, 0xb9, 0xa1, 0xac, 0x0d, 0xbf, 0x34, 0x09, 0xf3, 0x69, + 0x64, 0x6c, 0x5c, 0x94, 0x03, 0x6e, 0xfc, 0xdd, 0x97, 0x3f, 0x9f, 0x81, 0xc9, 0x3a, 0x6d, 0xb8, + 0x9d, 0xe6, 0x4d, 0xbc, 0x0e, 0x17, 0xa3, 0x63, 0xf1, 0x0d, 0x9e, 0xc1, 0xad, 0xdd, 0xd8, 0x3d, + 0xf9, 0xf7, 0x8e, 0x96, 0xde, 0x1f, 0xee, 0x5c, 0xd9, 0x70, 0x31, 0x2a, 0x39, 0xc0, 0x64, 0xa4, + 0x61, 0x15, 0x68, 0xd9, 0xd6, 0x2a, 0x25, 0x2b, 0x30, 0x25, 0x3e, 0x57, 0x57, 0x4d, 0xc2, 0xc3, + 0x83, 0xbe, 0x65, 0x41, 0x22, 0xeb, 0x98, 0x46, 0x42, 0xae, 0x43, 0xee, 0xde, 0xf2, 0x4d, 0x31, + 0x07, 0x32, 0x9d, 0xeb, 0xbd, 0xe5, 0x9b, 0x68, 0xba, 0x62, 0xc7, 0x81, 0xa9, 0xde, 0xb2, 0x76, + 0x43, 0x7d, 0x6f, 0xf9, 0x26, 0xf9, 0x73, 0x70, 0xaa, 0xe2, 0xf8, 0xa2, 0x0a, 0xee, 0x6e, 0xdb, + 0xc4, 0xf0, 0x92, 0xd1, 0x3e, 0xab, 0xf7, 0x73, 0xa9, 0xab, 0xf7, 0x85, 0x66, 0xc8, 0xc4, 0xe2, + 0xbe, 0xbc, 0xcd, 0x78, 0xb2, 0xa1, 0xf4, 0x7a, 0xc8, 0x47, 0x30, 0x8d, 0xa6, 0x57, 0xf4, 0x40, + 0xc6, 0xe4, 0x88, 0x63, 0x7d, 0x6a, 0xfe, 0x4c, 0x6a, 0xcd, 0x8b, 0x68, 0xc9, 0xb5, 0xd0, 0x8f, + 0x19, 0x13, 0x29, 0x6a, 0x27, 0x74, 0x8d, 0x33, 0xb9, 0x0d, 0x33, 0x42, 0x55, 0xda, 0xdc, 0xdd, + 0xda, 0xa7, 0x15, 0xfb, 0x50, 0x5c, 0x2e, 0xe3, 0xe9, 0x4b, 0xe8, 0x57, 0x96, 0xbb, 0x6b, 0x05, + 0xfb, 0xd4, 0x6a, 0xda, 0x9a, 0x52, 0x11, 0x23, 0x24, 0x3f, 0x08, 0x13, 0xeb, 0x6e, 0x83, 0x69, + 0xc9, 0x28, 0x19, 0xf8, 0x7d, 0xf3, 0x07, 0xf8, 0x9c, 0x08, 0x07, 0xc7, 0x54, 0x9f, 0xef, 0x1d, + 0x2d, 0xbd, 0x75, 0xd2, 0x45, 0xa3, 0x54, 0x60, 0xaa, 0xb5, 0x91, 0x32, 0x14, 0xb6, 0xe9, 0x0e, + 0xeb, 0x6d, 0xfc, 0xa9, 0x01, 0x09, 0x16, 0xee, 0x24, 0xe2, 0x97, 0xe6, 0x4e, 0x22, 0x60, 0xc4, + 0x83, 0x59, 0x1c, 0x9f, 0x9a, 0xed, 0xfb, 0x0f, 0x5d, 0xaf, 0x89, 0x39, 0x65, 0xfb, 0x5d, 0x65, + 0x2f, 0xa7, 0x0e, 0xfe, 0x73, 0x7c, 0xf0, 0xbb, 0x0a, 0x07, 0x55, 0xd9, 0x4b, 0xb0, 0x27, 0x5f, + 0x83, 0x69, 0x93, 0x7e, 0xbd, 0xe7, 0x78, 0xf4, 0xee, 0xcd, 0x12, 0x7e, 0x95, 0x93, 0x5a, 0x90, + 0x8e, 0x5e, 0xc8, 0x35, 0x4a, 0x8f, 0xc3, 0xa4, 0xb5, 0xc8, 0x6a, 0xef, 0xda, 0xfa, 0x6d, 0x81, + 0x4a, 0x42, 0x6a, 0x30, 0x51, 0xa1, 0x0f, 0x9c, 0x06, 0xc5, 0x50, 0x02, 0xe1, 0xca, 0x17, 0xe6, + 0x4a, 0x8f, 0x4a, 0xb8, 0xdd, 0xa4, 0x89, 0x00, 0x1e, 0x98, 0xa0, 0x7b, 0x8b, 0x85, 0x88, 0xe4, + 0x06, 0xe4, 0xaa, 0x95, 0x9a, 0xf0, 0xe4, 0x93, 0x1e, 0xfa, 0xd5, 0x66, 0x4d, 0x66, 0x96, 0x46, + 0xe7, 0x0f, 0xa7, 0xa9, 0xf9, 0x01, 0x56, 0x2b, 0x35, 0xb2, 0x0b, 0x53, 0x38, 0x00, 0x6b, 0xd4, + 0xe6, 0x63, 0x3b, 0xd3, 0x67, 0x6c, 0xaf, 0xa4, 0x8e, 0xed, 0x02, 0x1f, 0xdb, 0x7d, 0x41, 0xad, + 0xa5, 0xca, 0x55, 0xd9, 0x32, 0xf5, 0x53, 0xa4, 0xef, 0x96, 0xc9, 0x62, 0xb7, 0xd6, 0xf1, 0x72, + 0x5b, 0xa8, 0x9f, 0x32, 0xdb, 0x77, 0x98, 0x71, 0xb6, 0xaf, 0xa3, 0x70, 0x92, 0x0f, 0xf9, 0x02, + 0xe4, 0x37, 0x0f, 0x02, 0x7b, 0x61, 0x56, 0x1b, 0x47, 0x06, 0x92, 0xdd, 0x47, 0x8b, 0xa1, 0x7b, + 0xa0, 0xa5, 0xa3, 0x40, 0x1a, 0xb2, 0x0c, 0x63, 0xb5, 0xea, 0xfd, 0x7a, 0xcb, 0x0d, 0x16, 0x48, + 0x78, 0xa6, 0x21, 0x5d, 0xe7, 0x81, 0xe5, 0xb7, 0x5c, 0xfd, 0x09, 0x00, 0x89, 0xc8, 0xa6, 0x6f, + 0xcd, 0xf6, 0x9a, 0x0f, 0x6d, 0x0f, 0x23, 0xc0, 0xe6, 0xb4, 0x6a, 0x95, 0x12, 0x3e, 0x7d, 0xfb, + 0x02, 0x10, 0x0b, 0x0b, 0x53, 0x59, 0x08, 0x6b, 0xc0, 0xac, 0x58, 0x26, 0xa2, 0x6b, 0x77, 0x6f, + 0x96, 0x8c, 0xff, 0x38, 0x83, 0x02, 0x93, 0xbc, 0x82, 0x11, 0xeb, 0xe1, 0x05, 0x2f, 0xda, 0x35, + 0xed, 0x6e, 0x2c, 0xc1, 0x22, 0x47, 0x21, 0xaf, 0xc1, 0xe8, 0x4d, 0xbb, 0x41, 0x03, 0x79, 0xb1, + 0x83, 0xc8, 0xbb, 0x08, 0x51, 0x8d, 0xa0, 0x1c, 0x87, 0xe9, 0x72, 0x7c, 0x21, 0x95, 0xa2, 0xe7, + 0xda, 0xca, 0x25, 0x79, 0xaf, 0x83, 0xba, 0x9c, 0x58, 0x80, 0xca, 0x7b, 0x6e, 0x31, 0x1f, 0xc8, + 0x54, 0x0e, 0xc6, 0x1f, 0x66, 0x22, 0x09, 0x40, 0x5e, 0x86, 0xbc, 0x59, 0x0b, 0xdb, 0xcf, 0xa3, + 0xa1, 0x62, 0xcd, 0x47, 0x04, 0xf2, 0x21, 0x9c, 0x52, 0xf8, 0x24, 0x1c, 0x32, 0x5f, 0xc2, 0x70, + 0x1d, 0xa5, 0x25, 0xe9, 0x5e, 0x99, 0xe9, 0x3c, 0x50, 0x71, 0x8d, 0x0a, 0x2a, 0xb4, 0xe3, 0x70, + 0xde, 0x4a, 0x67, 0x55, 0xde, 0x4d, 0x44, 0x88, 0x77, 0x36, 0x8d, 0x03, 0x8f, 0xd8, 0x31, 0x7e, + 0x2d, 0xa3, 0x7d, 0xd9, 0xe1, 0x23, 0x57, 0x99, 0x63, 0x1e, 0xb9, 0x7a, 0x13, 0xa0, 0xd4, 0x0b, + 0xdc, 0xd5, 0x8e, 0xe7, 0xb6, 0xb8, 0x75, 0x41, 0xe4, 0x18, 0x45, 0x9b, 0x29, 0x45, 0xb0, 0x16, + 0x58, 0x10, 0x22, 0xa7, 0xfa, 0xae, 0xe6, 0x3e, 0xae, 0xef, 0xaa, 0xf1, 0xdb, 0x19, 0x6d, 0x6d, + 0x33, 0x8d, 0x4c, 0x7e, 0x1e, 0x8a, 0x6b, 0x41, 0xf2, 0xf3, 0x88, 0x3e, 0x8e, 0x7f, 0x3b, 0x03, + 0xa7, 0xb9, 0x13, 0xe8, 0x46, 0xaf, 0xbd, 0x43, 0xbd, 0xfb, 0x76, 0xcb, 0x69, 0xf2, 0x88, 0x34, + 0xae, 0x6c, 0x5e, 0x4a, 0x7e, 0x28, 0xe9, 0xf8, 0xfc, 0x00, 0xc7, 0x9d, 0x52, 0xad, 0x0e, 0x16, + 0x5a, 0x0f, 0xc2, 0x52, 0xf5, 0x00, 0x97, 0x4e, 0x6f, 0xfc, 0x72, 0x06, 0x5e, 0x38, 0xb6, 0x16, + 0x72, 0x15, 0xc6, 0x64, 0x72, 0xd7, 0x0c, 0x0e, 0x3c, 0x3a, 0x64, 0x25, 0x13, 0xbb, 0x4a, 0x2c, + 0xf2, 0x65, 0x38, 0xa5, 0xb2, 0xda, 0xf2, 0x6c, 0x47, 0x4d, 0xa1, 0x9a, 0xd2, 0xea, 0x80, 0xa1, + 0xc4, 0x35, 0xa3, 0x74, 0x26, 0xc6, 0xff, 0x95, 0x51, 0x1e, 0xc4, 0x7b, 0x4a, 0xf5, 0xe5, 0x1b, + 0x9a, 0xbe, 0x2c, 0x73, 0x05, 0x85, 0xbd, 0x62, 0x65, 0xa9, 0x67, 0x9c, 0x19, 0xc5, 0xb1, 0x10, + 0x01, 0xdf, 0xca, 0xc2, 0xc4, 0x3d, 0x9f, 0x7a, 0xfc, 0x82, 0xf3, 0xfb, 0x2b, 0x27, 0x4c, 0xd8, + 0xaf, 0xa1, 0xb2, 0x76, 0xfc, 0x7e, 0x06, 0x0d, 0xdf, 0x2a, 0x05, 0x1b, 0x0d, 0xe5, 0xa9, 0x0b, + 0x1c, 0x0d, 0x7c, 0xe4, 0x02, 0xa1, 0x3c, 0xb3, 0xc7, 0xba, 0xfe, 0xea, 0x0d, 0x3e, 0x7d, 0xb4, + 0x4e, 0xde, 0x87, 0x91, 0x7b, 0x68, 0xc6, 0xd3, 0xa3, 0x8f, 0x43, 0xfe, 0x58, 0xc8, 0x85, 0x74, + 0x8f, 0xfd, 0xa9, 0xee, 0x31, 0x58, 0x46, 0xea, 0x30, 0x56, 0xf6, 0x28, 0x3e, 0x62, 0x97, 0x1f, + 0x3e, 0x82, 0xae, 0xc1, 0x49, 0xe2, 0x11, 0x74, 0x82, 0x93, 0xf1, 0xd3, 0x59, 0x20, 0x51, 0x1f, + 0x31, 0xfb, 0xbb, 0xff, 0xd4, 0x4e, 0xfa, 0x7b, 0xda, 0xa4, 0x9f, 0x4b, 0x4c, 0x3a, 0xef, 0xde, + 0x50, 0x73, 0xff, 0xeb, 0x19, 0x38, 0x9d, 0x4e, 0x48, 0x2e, 0xc0, 0xe8, 0xe6, 0x56, 0x4d, 0x06, + 0xb0, 0x8b, 0xae, 0xb8, 0x5d, 0x3c, 0x97, 0x9b, 0xa2, 0x88, 0xbc, 0x0e, 0xa3, 0x5f, 0x34, 0xcb, + 0x6c, 0x1f, 0x52, 0x32, 0xad, 0x7e, 0xdd, 0xb3, 0x1a, 0xfa, 0x56, 0x24, 0x90, 0xd4, 0xb9, 0xcd, + 0x3d, 0xb1, 0xb9, 0xfd, 0x89, 0x2c, 0xcc, 0x94, 0x1a, 0x0d, 0xea, 0xfb, 0x4c, 0xc9, 0xa1, 0x7e, + 0xf0, 0xd4, 0x4e, 0x6c, 0x7a, 0x68, 0xba, 0xd6, 0xb7, 0xa1, 0x66, 0xf5, 0x37, 0x33, 0x70, 0x4a, + 0x52, 0x3d, 0x70, 0xe8, 0xc3, 0xad, 0x7d, 0x8f, 0xfa, 0xfb, 0x6e, 0xab, 0x39, 0x74, 0x3a, 0x67, + 0xa6, 0xe8, 0x61, 0x8e, 0x46, 0xf5, 0xb6, 0x7b, 0x17, 0x21, 0x9a, 0xa2, 0xc7, 0xf3, 0x38, 0x5e, + 0x85, 0xb1, 0x52, 0xb7, 0xeb, 0xb9, 0x0f, 0xf8, 0x67, 0x3f, 0x25, 0x02, 0x0a, 0x39, 0x48, 0x0b, + 0x40, 0xe4, 0x20, 0xd6, 0x8c, 0x0a, 0xed, 0xf0, 0x4c, 0x3a, 0x53, 0xbc, 0x19, 0x4d, 0xda, 0x51, + 0x75, 0x58, 0x2c, 0x37, 0xea, 0x40, 0x6a, 0x9e, 0xdb, 0x76, 0x03, 0xda, 0xe4, 0xfd, 0xc1, 0xb8, + 0xcd, 0x63, 0x93, 0x80, 0x6c, 0x39, 0x41, 0x4b, 0x4b, 0x02, 0x12, 0x30, 0x80, 0xc9, 0xe1, 0xc6, + 0xff, 0x3e, 0x02, 0x93, 0xea, 0xe8, 0x10, 0x83, 0xe7, 0x68, 0x75, 0x3d, 0x35, 0x78, 0xd8, 0x46, + 0x88, 0x29, 0x4a, 0xa2, 0x98, 0xfb, 0xec, 0xb1, 0x31, 0xf7, 0xdb, 0x30, 0x55, 0xf3, 0xdc, 0xae, + 0xeb, 0xd3, 0x26, 0x7f, 0xdc, 0x94, 0x8b, 0xc2, 0x39, 0xe5, 0x8c, 0xc7, 0x26, 0x12, 0xef, 0x09, + 0xd1, 0xc2, 0xd1, 0x15, 0xd8, 0x56, 0xfc, 0xe9, 0x53, 0x9d, 0x0f, 0x77, 0x41, 0xb0, 0x7d, 0x91, + 0x30, 0x2b, 0x74, 0x41, 0x60, 0x10, 0xdd, 0x05, 0x81, 0x41, 0xd4, 0x6f, 0x6d, 0xe4, 0x49, 0x7d, + 0x6b, 0xe4, 0xa7, 0x33, 0x30, 0x51, 0xea, 0x74, 0x44, 0x2c, 0xff, 0x31, 0xc1, 0x8c, 0x5f, 0x16, + 0x5e, 0x08, 0x6f, 0x7d, 0x2c, 0x2f, 0x04, 0xd4, 0x5b, 0x7c, 0xd4, 0x54, 0xa3, 0x0a, 0xd5, 0x53, + 0x8e, 0xd2, 0x0e, 0xf2, 0x16, 0x14, 0xc3, 0x45, 0x5e, 0xed, 0x34, 0xe9, 0x23, 0xea, 0x2f, 0x8c, + 0x9d, 0xcf, 0x5d, 0x9a, 0x12, 0xa9, 0xf2, 0x54, 0xcd, 0x34, 0x8e, 0x48, 0xb6, 0x00, 0xec, 0x70, + 0x75, 0xc5, 0x9e, 0x95, 0x49, 0x2e, 0x3f, 0xa1, 0x3d, 0xe3, 0x6f, 0xbc, 0xe8, 0x51, 0xb5, 0xe7, + 0x88, 0x0f, 0x69, 0xc3, 0x0c, 0x7f, 0xd3, 0x05, 0xdf, 0x7a, 0xc5, 0x8c, 0xb0, 0x70, 0xec, 0x3c, + 0xbc, 0x2c, 0x6c, 0x55, 0xcf, 0x8a, 0x97, 0x62, 0xf0, 0xf9, 0x58, 0x2b, 0x25, 0x3d, 0x6c, 0x9c, + 0x37, 0x4f, 0x4c, 0x68, 0x9e, 0x49, 0xb6, 0x97, 0x2f, 0xfa, 0x9f, 0xc8, 0xc0, 0x69, 0x75, 0xd1, + 0xd7, 0x7b, 0x3b, 0x6d, 0x07, 0xcf, 0x82, 0xe4, 0x0a, 0x8c, 0x8b, 0x35, 0x19, 0x1e, 0xa2, 0x92, + 0x89, 0x6d, 0x23, 0x14, 0xb2, 0xca, 0x96, 0x21, 0xe3, 0x21, 0xb4, 0xee, 0xb9, 0x98, 0x9c, 0x62, + 0x45, 0xd1, 0x7b, 0x61, 0x1e, 0xfe, 0xd6, 0xd7, 0x27, 0x83, 0x18, 0xef, 0xc2, 0xac, 0x3e, 0x13, + 0x75, 0x1a, 0x90, 0xcb, 0x30, 0x26, 0xa7, 0x2f, 0x93, 0x3e, 0x7d, 0xb2, 0xdc, 0xd8, 0x06, 0x92, + 0xa0, 0xf7, 0xd1, 0x5d, 0x88, 0x06, 0xd2, 0x9d, 0x4d, 0x5e, 0xd6, 0x25, 0x10, 0xc3, 0xb7, 0xb4, + 0x27, 0x34, 0xff, 0x55, 0x46, 0x6a, 0xfc, 0xe1, 0x34, 0xcc, 0xa5, 0xc8, 0xdc, 0x63, 0x74, 0xa2, + 0x25, 0x5d, 0x40, 0x8c, 0x87, 0xb1, 0xd0, 0x52, 0x2c, 0xbc, 0x2b, 0xdf, 0x3a, 0x1e, 0x20, 0x0e, + 0x06, 0x3d, 0x80, 0xfc, 0x69, 0xe8, 0x45, 0x6a, 0xba, 0x82, 0x91, 0x27, 0x96, 0xae, 0x60, 0x05, + 0xa6, 0x44, 0xaf, 0x84, 0xb8, 0x1a, 0x8d, 0xac, 0xb9, 0x1e, 0x2f, 0xb0, 0x12, 0x62, 0x4b, 0x27, + 0xe1, 0x3c, 0x7c, 0xb7, 0xf5, 0x80, 0x0a, 0x1e, 0x63, 0x2a, 0x0f, 0x2c, 0x48, 0xe5, 0xa1, 0x90, + 0x90, 0xff, 0x10, 0x9f, 0xb8, 0x40, 0x88, 0x2a, 0xb3, 0x0a, 0x83, 0x64, 0x56, 0xf3, 0xc9, 0xc8, + 0xac, 0x73, 0xb2, 0x8d, 0xe9, 0xb2, 0x2b, 0xa5, 0x59, 0xe4, 0x17, 0x33, 0x30, 0xcb, 0x63, 0xe6, + 0xd5, 0xc6, 0x0e, 0x8c, 0x83, 0x6e, 0x3c, 0x99, 0xc6, 0x3e, 0x27, 0xb2, 0xd3, 0xa7, 0xb7, 0x35, + 0xd9, 0x28, 0xf2, 0x03, 0x00, 0xe1, 0x17, 0xe5, 0x2f, 0x00, 0x7e, 0x6a, 0xcf, 0xa5, 0x48, 0x81, + 0x10, 0x29, 0xca, 0xa4, 0x1b, 0x84, 0x74, 0xda, 0xc3, 0x26, 0x21, 0x94, 0xfc, 0x39, 0x98, 0x67, + 0xdf, 0x4b, 0x08, 0x11, 0x19, 0x3e, 0x16, 0x26, 0xb0, 0x96, 0xcf, 0xf6, 0xd7, 0x89, 0xae, 0xa4, + 0x91, 0xf1, 0xbc, 0x7f, 0xd1, 0x83, 0x6e, 0x81, 0x1a, 0x0c, 0x9c, 0x5a, 0x11, 0xa6, 0xcc, 0xc1, + 0xd6, 0xf3, 0x6c, 0xb7, 0x7d, 0xe4, 0xdb, 0x59, 0xf9, 0x2d, 0x70, 0xf9, 0xe6, 0xeb, 0xc1, 0x6c, + 0x08, 0x22, 0x5f, 0x04, 0x12, 0x06, 0x9b, 0x73, 0x18, 0x95, 0x99, 0x70, 0xb9, 0x69, 0x37, 0x0a, + 0x5a, 0xf7, 0x64, 0xb1, 0xba, 0x48, 0x92, 0xc4, 0x84, 0xc2, 0xbc, 0xe8, 0x34, 0x83, 0xca, 0x27, + 0x34, 0xfc, 0x85, 0x69, 0x2d, 0x7f, 0x4a, 0x54, 0x12, 0xbd, 0xfc, 0xa6, 0xbc, 0xc3, 0xa1, 0x99, + 0x9c, 0xd2, 0xd8, 0x91, 0x1b, 0x30, 0x8e, 0x11, 0x65, 0x6b, 0xd2, 0x09, 0x4a, 0x38, 0x64, 0x60, + 0xec, 0x99, 0xb5, 0xaf, 0xbb, 0x32, 0x45, 0xa8, 0xec, 0x38, 0x50, 0xf1, 0x0e, 0xcd, 0x5e, 0x07, + 0x0d, 0xb0, 0xc2, 0xde, 0xd1, 0xf4, 0x0e, 0x2d, 0xaf, 0xa7, 0x87, 0x1c, 0x22, 0x12, 0xf9, 0x1a, + 0x4c, 0xdc, 0xb5, 0x1f, 0x49, 0xfb, 0xab, 0x30, 0xb2, 0x0e, 0xf5, 0x66, 0x79, 0xdb, 0x7e, 0x64, + 0x35, 0x7b, 0xf1, 0xac, 0x83, 0xfc, 0xcd, 0x72, 0x85, 0x25, 0xf9, 0x0a, 0x80, 0x62, 0x15, 0x26, + 0xc7, 0x56, 0xf0, 0x82, 0xcc, 0x08, 0x94, 0x6a, 0x2d, 0x46, 0xfe, 0x0a, 0xc3, 0x98, 0xe6, 0x30, + 0xff, 0xe9, 0x69, 0x0e, 0xa7, 0x3e, 0x3d, 0xcd, 0x61, 0x71, 0x07, 0xce, 0xf6, 0xfd, 0x74, 0x52, + 0x92, 0x34, 0x5e, 0xd5, 0x93, 0x34, 0x9e, 0xed, 0xb7, 0xc5, 0xfa, 0x7a, 0xf2, 0xe4, 0xb9, 0xe2, + 0x7c, 0x7f, 0xed, 0xe4, 0xbb, 0xd9, 0xd8, 0x96, 0x2b, 0x0e, 0x16, 0x3c, 0xd9, 0x7e, 0x3f, 0x9d, + 0x24, 0x8b, 0xaf, 0x8a, 0xf1, 0x4d, 0x39, 0x1b, 0x1d, 0x68, 0x62, 0x8f, 0xa7, 0xf2, 0xed, 0xf9, + 0x93, 0xee, 0xbe, 0x6f, 0xc3, 0x34, 0x7f, 0x4f, 0xe8, 0x0e, 0x3d, 0x7c, 0xe8, 0x7a, 0x4d, 0xf9, + 0x42, 0x26, 0xea, 0xe0, 0x89, 0x97, 0xf7, 0x62, 0xb8, 0xa4, 0x22, 0x83, 0x94, 0x46, 0xb0, 0xf6, + 0xb3, 0xa9, 0x52, 0x8c, 0x21, 0x0c, 0x8a, 0x5f, 0x22, 0x6f, 0x84, 0x8a, 0x1a, 0xf5, 0xd4, 0x14, + 0xca, 0x9e, 0x04, 0xa6, 0xe8, 0x6b, 0xd4, 0x33, 0x7e, 0x37, 0x07, 0x84, 0xd7, 0x54, 0xb6, 0xbb, + 0x36, 0x86, 0xf0, 0x39, 0x98, 0x8a, 0xa2, 0x28, 0x70, 0xec, 0x9d, 0x16, 0x55, 0xf3, 0xb8, 0x08, + 0xa7, 0xd3, 0xb0, 0xcc, 0x8a, 0x1f, 0x74, 0x12, 0x84, 0x7d, 0x44, 0x5d, 0xf6, 0x93, 0x88, 0xba, + 0xaf, 0xc1, 0xb3, 0xa5, 0x2e, 0x3e, 0x4c, 0x26, 0x6b, 0xb9, 0xe9, 0x7a, 0x52, 0x48, 0x69, 0xc1, + 0x21, 0x76, 0x88, 0x96, 0x68, 0xe9, 0x20, 0x16, 0x8a, 0x9e, 0xc2, 0xd6, 0x65, 0x37, 0x50, 0x83, + 0x8d, 0xa5, 0x9e, 0xd2, 0xc5, 0x92, 0x14, 0x3d, 0x85, 0x93, 0x48, 0x1e, 0x8e, 0x27, 0xf5, 0x14, + 0x7c, 0x34, 0x20, 0xe2, 0xe1, 0x78, 0xb4, 0x8f, 0xae, 0x13, 0x92, 0x90, 0xb7, 0x61, 0xa2, 0xd4, + 0x0b, 0x5c, 0xc1, 0x58, 0x78, 0x4b, 0x47, 0x7e, 0xcd, 0xa2, 0x29, 0xda, 0xd1, 0x27, 0x42, 0x37, + 0xfe, 0x20, 0x07, 0x67, 0x93, 0xd3, 0x2b, 0x4a, 0xc3, 0xef, 0x23, 0x73, 0xcc, 0xf7, 0x91, 0xb6, + 0x1a, 0xf8, 0x65, 0xc1, 0x13, 0x5b, 0x0d, 0xfc, 0x7d, 0xb3, 0x8f, 0xb9, 0x1a, 0xea, 0x30, 0xa1, + 0xee, 0x77, 0xf9, 0x8f, 0xbb, 0xdf, 0xa9, 0x5c, 0xd8, 0xa1, 0x9e, 0xc7, 0x58, 0x8f, 0x44, 0x57, + 0x47, 0xf1, 0xf0, 0x6a, 0x8e, 0x41, 0xfe, 0x2d, 0x38, 0xcf, 0x65, 0x52, 0xbc, 0xb3, 0x2b, 0x87, + 0x92, 0xa3, 0x98, 0xb8, 0xe5, 0xc7, 0x47, 0x4b, 0x57, 0xb8, 0xa9, 0xc4, 0x4a, 0x0c, 0x9b, 0xb5, + 0x73, 0x68, 0xc9, 0x96, 0x29, 0x95, 0x1c, 0xcb, 0x1b, 0x1f, 0x35, 0x53, 0xde, 0xcc, 0x7a, 0x3d, + 0x2d, 0x8c, 0x84, 0x67, 0x22, 0xe5, 0x60, 0x3d, 0x82, 0x44, 0x9a, 0xc3, 0xb2, 0xa9, 0xe6, 0x30, + 0x69, 0x4f, 0xc9, 0xa5, 0xda, 0x53, 0x2a, 0x30, 0x53, 0xef, 0xed, 0xc8, 0xba, 0x11, 0x31, 0xaf, + 0x45, 0xc2, 0xa5, 0x75, 0x28, 0x4e, 0x62, 0xfc, 0x68, 0x16, 0x26, 0x6b, 0xad, 0xde, 0x9e, 0xd3, + 0xa9, 0xd8, 0x81, 0xfd, 0xd4, 0x5a, 0xe8, 0xde, 0xd4, 0x2c, 0x74, 0x61, 0xb4, 0x54, 0xd8, 0xb1, + 0xa1, 0xcc, 0x73, 0xdf, 0xce, 0xc0, 0x4c, 0x44, 0xc2, 0xf7, 0xd9, 0x35, 0xc8, 0xb3, 0x1f, 0xe2, + 0xdc, 0x7a, 0x3e, 0xc1, 0x98, 0x3f, 0xd4, 0x12, 0xfe, 0x25, 0x6c, 0x66, 0xfa, 0x2b, 0x08, 0xc8, + 0x61, 0xf1, 0x73, 0x30, 0x1e, 0xb1, 0x3d, 0xc9, 0x03, 0x2d, 0xbf, 0x92, 0x81, 0x62, 0xbc, 0x27, + 0xe4, 0x0e, 0x8c, 0x31, 0x4e, 0x0e, 0x95, 0x47, 0xea, 0x17, 0xfb, 0xf4, 0xf9, 0x8a, 0x40, 0xe3, + 0xcd, 0xc3, 0xc1, 0xa7, 0x1c, 0x62, 0x4a, 0x0e, 0x8b, 0x26, 0x4c, 0xaa, 0x58, 0x29, 0xad, 0x7b, + 0x4d, 0x57, 0x2e, 0x4e, 0xa7, 0x8f, 0x83, 0xf6, 0xac, 0x8c, 0xd6, 0x6a, 0xa1, 0x37, 0x5c, 0xd4, + 0x16, 0x17, 0x8e, 0x55, 0x6c, 0xdd, 0xf0, 0x65, 0xb6, 0x1c, 0x25, 0x47, 0x56, 0xd7, 0x59, 0xca, + 0x82, 0x0e, 0xf1, 0xc8, 0x6b, 0x30, 0xca, 0xeb, 0x53, 0x9f, 0x57, 0xe8, 0x22, 0x44, 0x55, 0x71, + 0x39, 0x8e, 0xf1, 0x37, 0x73, 0x70, 0x3a, 0x6a, 0xde, 0xbd, 0x6e, 0xd3, 0x0e, 0x68, 0xcd, 0xf6, + 0xec, 0xb6, 0x7f, 0xcc, 0x17, 0x70, 0x29, 0xd1, 0x34, 0x4c, 0xb7, 0x2f, 0x9b, 0xa6, 0x34, 0xc8, + 0x88, 0x35, 0x08, 0xcd, 0x97, 0xbc, 0x41, 0xb2, 0x19, 0xe4, 0x0e, 0xe4, 0xea, 0x34, 0x10, 0x62, + 0xf3, 0x62, 0x62, 0x54, 0xd5, 0x76, 0x5d, 0xa9, 0xd3, 0x80, 0x4f, 0x22, 0xcf, 0xfd, 0x41, 0xb5, + 0xdc, 0x8b, 0x75, 0x1a, 0x90, 0x6d, 0x18, 0x5d, 0x7d, 0xd4, 0xa5, 0x8d, 0x40, 0x3c, 0x2f, 0x74, + 0x79, 0x30, 0x3f, 0x8e, 0xab, 0xbc, 0x2e, 0x44, 0x11, 0xa0, 0x0e, 0x16, 0x47, 0x59, 0xbc, 0x01, + 0x05, 0x59, 0xf9, 0x49, 0x56, 0xee, 0xe2, 0x9b, 0x30, 0xa1, 0x54, 0x72, 0xa2, 0x45, 0xff, 0xb3, + 0x4c, 0xae, 0xba, 0x2d, 0xf9, 0x22, 0xd1, 0x6a, 0x42, 0xcd, 0xcb, 0x44, 0x31, 0xbb, 0x5c, 0xcd, + 0xb3, 0x0e, 0x44, 0xd1, 0x00, 0x7d, 0xaf, 0x0a, 0x33, 0xf5, 0x03, 0xa7, 0x1b, 0xa5, 0xc0, 0xd3, + 0x36, 0x53, 0xcc, 0x15, 0x2f, 0xce, 0xdc, 0xf1, 0xcd, 0x34, 0x4e, 0x67, 0xfc, 0x71, 0x06, 0x46, + 0xd9, 0x5f, 0xf7, 0x6f, 0x3c, 0xa5, 0x22, 0xf3, 0xba, 0x26, 0x32, 0x67, 0x95, 0xfc, 0xb3, 0x28, + 0x38, 0x6e, 0x1c, 0x23, 0x2c, 0x8f, 0xc4, 0x04, 0x71, 0x64, 0x72, 0x0b, 0xc6, 0x84, 0xe7, 0x8d, + 0x70, 0x91, 0x56, 0x13, 0xda, 0x4a, 0x9f, 0x9c, 0xf0, 0x70, 0xee, 0x76, 0xe3, 0xd6, 0x0c, 0x49, + 0xcd, 0x54, 0x72, 0x99, 0x8c, 0x50, 0x7b, 0xc7, 0xce, 0xc5, 0xf8, 0x33, 0x9e, 0x90, 0x55, 0x79, + 0x79, 0xb2, 0x4f, 0x60, 0x7f, 0x49, 0x5c, 0x64, 0xe4, 0x06, 0x31, 0x39, 0x2d, 0x9f, 0xf9, 0x4a, + 0xbd, 0xe3, 0xf8, 0xbd, 0x39, 0x9e, 0xca, 0x54, 0x36, 0xec, 0x1d, 0x98, 0xbc, 0xe9, 0x7a, 0x0f, + 0x6d, 0x8f, 0x27, 0xa8, 0x13, 0x9e, 0x03, 0xec, 0xe8, 0x38, 0xb5, 0xcb, 0xe1, 0x3c, 0xc5, 0xdd, + 0xf7, 0x8e, 0x96, 0xf2, 0x2b, 0xae, 0xdb, 0x32, 0x35, 0x74, 0xb2, 0x09, 0x53, 0x77, 0xed, 0x47, + 0xca, 0xa1, 0x97, 0x07, 0x94, 0x5c, 0x66, 0x0b, 0x98, 0x9d, 0x9a, 0x8f, 0x77, 0x83, 0xd2, 0xe9, + 0x89, 0x03, 0xd3, 0x35, 0xd7, 0x0b, 0x44, 0x25, 0x4e, 0x67, 0x4f, 0x74, 0x36, 0xe9, 0xc8, 0x75, + 0x35, 0xd5, 0x91, 0xeb, 0x6c, 0xd7, 0xf5, 0x02, 0x6b, 0x37, 0x24, 0xd7, 0x92, 0xe6, 0x68, 0x8c, + 0xc9, 0x3b, 0x30, 0xab, 0x24, 0x05, 0xbb, 0xe9, 0x7a, 0x6d, 0x5b, 0x2a, 0xe5, 0x68, 0x07, 0x46, + 0x7f, 0x93, 0x5d, 0x04, 0x9b, 0x49, 0x4c, 0xf2, 0x61, 0x5a, 0x88, 0xce, 0x48, 0xe4, 0x09, 0x96, + 0x12, 0xa2, 0xd3, 0xcf, 0x13, 0x2c, 0x19, 0xac, 0xb3, 0x37, 0xc8, 0x53, 0xb4, 0xb0, 0x72, 0x4d, + 0x1c, 0xbf, 0x8f, 0xf7, 0x04, 0x0d, 0xe7, 0xad, 0x8f, 0x47, 0xe8, 0x32, 0xe4, 0x56, 0x6a, 0x37, + 0xf1, 0xf6, 0x42, 0x3a, 0xda, 0x74, 0xf6, 0xed, 0x4e, 0x03, 0x95, 0x65, 0xe1, 0x9d, 0xad, 0x4a, + 0xe4, 0x95, 0xda, 0x4d, 0x62, 0xc3, 0x5c, 0x8d, 0x7a, 0x6d, 0x27, 0xf8, 0xd2, 0xb5, 0x6b, 0xca, + 0x44, 0x15, 0xb0, 0x69, 0x57, 0x45, 0xd3, 0x96, 0xba, 0x88, 0x62, 0x3d, 0xba, 0x76, 0x2d, 0x75, + 0x3a, 0xc2, 0x86, 0xa5, 0xf1, 0x62, 0x92, 0xf1, 0xae, 0xfd, 0x28, 0x72, 0xaa, 0xf7, 0x45, 0xb0, + 0xe3, 0x39, 0xb9, 0xb0, 0x22, 0x87, 0x7c, 0x4d, 0x32, 0xea, 0x44, 0xec, 0xac, 0x13, 0x2d, 0x2f, + 0x5f, 0x84, 0x89, 0x2c, 0x4a, 0x93, 0x8e, 0x8c, 0x88, 0x55, 0x15, 0x76, 0x05, 0x9d, 0xdc, 0x0b, + 0x4f, 0x6c, 0xfc, 0xc4, 0x23, 0x1e, 0xb1, 0xba, 0xaa, 0x9e, 0xd8, 0xb8, 0x21, 0x45, 0xeb, 0xd6, + 0x4c, 0x78, 0xcc, 0xe7, 0x51, 0x06, 0xa6, 0xce, 0x25, 0x79, 0x10, 0x9c, 0x3c, 0xf9, 0x41, 0x90, + 0x42, 0x7e, 0xdd, 0x6d, 0x1c, 0x88, 0x4c, 0x3f, 0x5f, 0x64, 0x9f, 0x7b, 0xcb, 0x6d, 0x1c, 0x3c, + 0x39, 0x0f, 0x58, 0x64, 0x4f, 0x36, 0x58, 0x53, 0xd9, 0x2a, 0x10, 0x63, 0x22, 0xbc, 0x2a, 0xe7, + 0xc3, 0x93, 0x90, 0x52, 0xc6, 0x15, 0x1f, 0xbe, 0x68, 0xe4, 0xd0, 0x9a, 0x3a, 0x39, 0xa1, 0x50, + 0xac, 0x50, 0xff, 0x20, 0x70, 0xbb, 0xe5, 0x96, 0xd3, 0xdd, 0x71, 0x6d, 0xaf, 0x89, 0xb6, 0xbb, + 0xb4, 0xef, 0xfb, 0xe5, 0xd4, 0xef, 0x7b, 0xb6, 0xc9, 0xe9, 0xad, 0x86, 0x64, 0x60, 0x26, 0x58, + 0x92, 0x0f, 0x61, 0x9a, 0x2d, 0xee, 0xd5, 0x47, 0x01, 0xed, 0xf0, 0x99, 0x9f, 0x45, 0xd5, 0x61, + 0x5e, 0x49, 0xfc, 0x1d, 0x16, 0xf2, 0x35, 0x85, 0x1f, 0x3b, 0x0d, 0x09, 0xb4, 0x2c, 0x49, 0x1a, + 0x2b, 0xd2, 0x84, 0x85, 0xbb, 0xf6, 0x23, 0xe5, 0xe9, 0x2d, 0x65, 0x91, 0x12, 0x5c, 0x60, 0xf8, + 0xd4, 0x38, 0x5b, 0x60, 0x51, 0x82, 0xce, 0x3e, 0xeb, 0xb5, 0x2f, 0x27, 0xf2, 0x83, 0x70, 0x46, + 0x74, 0xab, 0x82, 0xaf, 0x61, 0xb8, 0xde, 0x61, 0x7d, 0xdf, 0xc6, 0x78, 0x9a, 0xb9, 0x93, 0x09, + 0x44, 0x39, 0x60, 0x4d, 0xc9, 0xc7, 0xf2, 0x39, 0x23, 0xb3, 0x5f, 0x0d, 0xe4, 0x23, 0x98, 0xe6, + 0x57, 0x36, 0x6b, 0xae, 0x1f, 0xe0, 0x81, 0x7e, 0xfe, 0x64, 0x6e, 0xe2, 0xfc, 0x1e, 0x88, 0x07, + 0x56, 0xc4, 0x0c, 0x00, 0x31, 0xce, 0xe4, 0x2d, 0x98, 0xa8, 0x39, 0x1d, 0x9e, 0xc7, 0xac, 0x5a, + 0x43, 0xd3, 0xa3, 0xd8, 0x7f, 0xba, 0x4e, 0xc7, 0x92, 0xa7, 0xea, 0x6e, 0x28, 0x2e, 0x54, 0x6c, + 0xb2, 0x0d, 0x13, 0xf5, 0xfa, 0xda, 0x4d, 0x87, 0x6d, 0x80, 0xdd, 0xc3, 0x85, 0xd3, 0x7d, 0x5a, + 0x79, 0x21, 0xb5, 0x95, 0x53, 0xbe, 0xbf, 0x8f, 0xcf, 0x19, 0x5b, 0x0d, 0xb7, 0x7b, 0x68, 0xaa, + 0x9c, 0x52, 0x5c, 0xa7, 0xcf, 0x3c, 0x61, 0xd7, 0xe9, 0x2a, 0xcc, 0x28, 0x0e, 0x96, 0xe8, 0x5c, + 0xb9, 0x10, 0xa5, 0xed, 0x52, 0x5d, 0xa5, 0xe3, 0x61, 0x7d, 0x71, 0x3a, 0xe9, 0x33, 0x7d, 0xf6, + 0xa4, 0x3e, 0xd3, 0x0e, 0xcc, 0xf2, 0xc9, 0x10, 0xeb, 0x00, 0x67, 0x7a, 0xb1, 0xcf, 0x18, 0x5e, + 0x4e, 0x1d, 0xc3, 0x39, 0x31, 0xd3, 0x72, 0x91, 0xe1, 0x15, 0x65, 0x92, 0x2b, 0xd9, 0x05, 0x22, + 0x80, 0xe2, 0x31, 0x65, 0xac, 0xeb, 0xd9, 0x3e, 0x75, 0xbd, 0x98, 0x5a, 0xd7, 0xb4, 0xac, 0x6b, + 0x87, 0x57, 0x93, 0xc2, 0x91, 0x74, 0x64, 0x3d, 0x72, 0x7d, 0xe1, 0xc0, 0x3e, 0xa7, 0xd9, 0x41, + 0x93, 0x08, 0x3c, 0x89, 0x68, 0x7c, 0xd1, 0xc6, 0xc7, 0x3d, 0x85, 0x33, 0x79, 0x04, 0xa7, 0x93, + 0xad, 0xc0, 0x3a, 0xcf, 0x61, 0x9d, 0xe7, 0xb4, 0x3a, 0xe3, 0x48, 0x7c, 0xdd, 0xe8, 0xdd, 0x8a, + 0xd7, 0xda, 0x87, 0xff, 0xed, 0x7c, 0x61, 0xaa, 0x38, 0x9d, 0xe6, 0x69, 0xfd, 0x8f, 0xb3, 0x31, + 0xa1, 0x4d, 0xaa, 0x30, 0x26, 0xe6, 0x42, 0x68, 0xb1, 0xc9, 0x11, 0x3f, 0x97, 0x3a, 0xe2, 0x63, + 0x62, 0x5a, 0x4d, 0x49, 0x4f, 0x1e, 0x32, 0x56, 0xe8, 0xb6, 0x2e, 0xd4, 0xfe, 0xaf, 0x70, 0x99, + 0x8c, 0x20, 0x6d, 0xf7, 0xa9, 0x9c, 0x3c, 0x68, 0x47, 0x8f, 0x09, 0xc3, 0x6d, 0x48, 0xd6, 0x46, + 0x0e, 0xf8, 0x4b, 0x01, 0xb9, 0x30, 0xf2, 0x43, 0x7f, 0x16, 0xe0, 0x89, 0x55, 0xc8, 0x6a, 0x31, + 0x7e, 0x2d, 0x03, 0x53, 0x9a, 0xd4, 0x27, 0x37, 0x94, 0xb0, 0xa6, 0x28, 0x2a, 0x57, 0xc3, 0x41, + 0x41, 0x10, 0x0f, 0x78, 0xba, 0x21, 0xfc, 0xa6, 0xb3, 0xfd, 0xe9, 0x52, 0xdf, 0x14, 0x1f, 0x6c, + 0x24, 0x0b, 0x5f, 0x1e, 0xca, 0xf7, 0x79, 0x79, 0xe8, 0x9f, 0x2d, 0xc2, 0xb4, 0x7e, 0x2c, 0x20, + 0xaf, 0xc1, 0x28, 0xda, 0x16, 0xe5, 0x19, 0x93, 0xbf, 0xbc, 0x8b, 0x10, 0xed, 0xe5, 0x5d, 0x84, + 0x90, 0x97, 0x00, 0x42, 0x07, 0x56, 0x69, 0x59, 0x1f, 0x79, 0x7c, 0xb4, 0x94, 0x79, 0xdd, 0x54, + 0x0a, 0xc8, 0x57, 0x01, 0x36, 0xdc, 0x26, 0x0d, 0xdf, 0x46, 0x1b, 0x70, 0x7b, 0xfc, 0x72, 0x22, + 0x8b, 0xf6, 0xa9, 0x8e, 0xdb, 0xa4, 0xc9, 0x94, 0xd9, 0x0a, 0x47, 0xf2, 0x05, 0x18, 0x31, 0x7b, + 0xec, 0x3c, 0xcb, 0x4d, 0x09, 0x13, 0x52, 0xfa, 0xf6, 0x5a, 0x54, 0x79, 0xa6, 0xbf, 0x17, 0x77, + 0x8c, 0x62, 0x00, 0xf2, 0x1e, 0xcf, 0xae, 0x2d, 0x92, 0x61, 0x8d, 0x44, 0x77, 0x0d, 0xca, 0xae, + 0x9c, 0x48, 0x87, 0xa5, 0x90, 0x90, 0x4d, 0x18, 0x53, 0x8d, 0xe4, 0x4a, 0x7c, 0xac, 0x7a, 0x91, + 0xa2, 0x9c, 0xbc, 0xc4, 0xa3, 0x6a, 0x71, 0xfb, 0xb9, 0xe4, 0x42, 0xde, 0x86, 0x71, 0xc6, 0x9e, + 0x7d, 0xc2, 0xbe, 0xd0, 0xb8, 0xf1, 0x46, 0x41, 0x69, 0x10, 0x93, 0x00, 0x5a, 0xca, 0xaa, 0x90, + 0x80, 0x7c, 0x88, 0xef, 0x86, 0x89, 0xa1, 0x1e, 0xe8, 0x55, 0x70, 0x31, 0x31, 0xd4, 0xf8, 0x90, + 0x58, 0xf2, 0x49, 0xd9, 0x90, 0x1f, 0xd9, 0x0b, 0x53, 0x29, 0x0d, 0x93, 0x11, 0xfd, 0x95, 0x44, + 0x05, 0x0b, 0x32, 0x3b, 0x50, 0xf2, 0x8d, 0x3b, 0x8d, 0x2f, 0xe9, 0x42, 0x31, 0x52, 0x78, 0x44, + 0x5d, 0x30, 0xa8, 0xae, 0xd7, 0x13, 0x75, 0xa9, 0x13, 0x98, 0xa8, 0x2e, 0xc1, 0x9d, 0x34, 0x61, + 0x5a, 0x0a, 0x4f, 0x51, 0xdf, 0xc4, 0xa0, 0xfa, 0x5e, 0x4a, 0xd4, 0x37, 0xd7, 0xdc, 0x49, 0xd6, + 0x13, 0xe3, 0x49, 0xde, 0x86, 0x29, 0x09, 0xc1, 0xef, 0x43, 0xbc, 0x5d, 0x8b, 0x56, 0x91, 0xe6, + 0x0e, 0xba, 0xcc, 0xeb, 0x2f, 0xff, 0xa9, 0xc8, 0x2a, 0x35, 0x5f, 0x1d, 0x53, 0x1a, 0x75, 0x7c, + 0x55, 0xe8, 0xc8, 0xe4, 0x03, 0x98, 0xa8, 0xb6, 0x59, 0x47, 0xdc, 0x8e, 0x1d, 0x50, 0x11, 0x3b, + 0x25, 0x3d, 0x24, 0x94, 0x12, 0x65, 0xa9, 0xf2, 0xb7, 0xf4, 0xa2, 0x22, 0xed, 0x2d, 0xbd, 0x08, + 0xcc, 0x06, 0x8f, 0xdf, 0x8a, 0x88, 0x35, 0x2c, 0xe3, 0xaa, 0xce, 0xa5, 0x78, 0x29, 0x28, 0xec, + 0x45, 0xd2, 0x39, 0x06, 0x95, 0xb7, 0x12, 0xb1, 0xa4, 0x73, 0x2a, 0x4f, 0xf2, 0x0e, 0x4c, 0x88, + 0xc7, 0x22, 0x4a, 0xe6, 0x86, 0xbf, 0x50, 0xc4, 0xce, 0x63, 0x34, 0xb8, 0x7c, 0x57, 0xc2, 0xb2, + 0xbd, 0x98, 0x3b, 0x5e, 0x84, 0x4f, 0xbe, 0x04, 0xf3, 0xdb, 0x4e, 0xa7, 0xe9, 0x3e, 0xf4, 0xc5, + 0x36, 0x25, 0x04, 0xdd, 0x6c, 0x14, 0x0c, 0xf3, 0x90, 0x97, 0x87, 0x7a, 0x4a, 0x42, 0xf0, 0xa5, + 0x72, 0x20, 0x7f, 0x36, 0xc1, 0x99, 0xaf, 0x20, 0x32, 0x68, 0x05, 0x2d, 0x27, 0x56, 0x50, 0xb2, + 0xfa, 0xf8, 0x72, 0x4a, 0xad, 0x86, 0xb8, 0x40, 0xf4, 0xfd, 0xfd, 0xb6, 0xeb, 0x74, 0x16, 0xe6, + 0x50, 0x16, 0x3e, 0x1b, 0x8f, 0xbf, 0x46, 0xbc, 0x9a, 0xdb, 0x72, 0x1a, 0x87, 0xfc, 0xdd, 0xfa, + 0xb8, 0x3e, 0xfa, 0x91, 0xab, 0xd9, 0x8c, 0x53, 0x58, 0x93, 0x0f, 0x60, 0x92, 0xfd, 0x1f, 0x1e, + 0x98, 0xe7, 0x35, 0xbf, 0x36, 0x05, 0x53, 0xd4, 0x83, 0x73, 0x84, 0xaf, 0x59, 0xa4, 0x9c, 0xa5, + 0x35, 0x56, 0xe4, 0x4d, 0x00, 0xa6, 0x39, 0x09, 0x71, 0x7c, 0x2a, 0xca, 0xf1, 0x87, 0xfa, 0x56, + 0x52, 0x10, 0x47, 0xc8, 0xec, 0x14, 0xcf, 0x7e, 0xd5, 0x7b, 0x4d, 0x97, 0x7d, 0x1b, 0xa7, 0x91, + 0x96, 0x87, 0xa4, 0x31, 0x5a, 0x9f, 0xc3, 0xb5, 0x90, 0xb4, 0x08, 0x9d, 0xac, 0xc1, 0x0c, 0xe6, + 0x62, 0xac, 0x36, 0x69, 0x27, 0xc0, 0xdb, 0xca, 0x85, 0x33, 0xca, 0x6d, 0x2e, 0x2b, 0xb2, 0x9c, + 0xb0, 0x4c, 0xd5, 0xb3, 0x63, 0x64, 0xc4, 0x87, 0xb9, 0x48, 0xba, 0x44, 0x77, 0xc3, 0x0b, 0x38, + 0x48, 0x52, 0xbb, 0x4c, 0x62, 0x70, 0x79, 0xcc, 0x66, 0x44, 0x11, 0x5c, 0xd2, 0xb2, 0xae, 0x56, + 0x98, 0xc6, 0x9d, 0x98, 0x40, 0x6e, 0x95, 0x6b, 0xf1, 0x64, 0x85, 0x67, 0xb1, 0x07, 0x38, 0xcd, + 0x7b, 0x8d, 0xe8, 0xd5, 0xc6, 0x94, 0x84, 0x85, 0x29, 0xd4, 0xe4, 0x1b, 0x70, 0x4a, 0x4a, 0x10, + 0x51, 0x24, 0xd6, 0xf5, 0xe2, 0x09, 0x25, 0x71, 0x73, 0x27, 0xac, 0x3a, 0xb1, 0xa4, 0xd3, 0xab, + 0x20, 0x36, 0x4c, 0xe0, 0xb4, 0x8a, 0x1a, 0x9f, 0x1d, 0x54, 0xe3, 0xa5, 0x44, 0x8d, 0xa7, 0x71, + 0xa1, 0x24, 0x2b, 0x53, 0x79, 0x92, 0x15, 0x98, 0x12, 0xdf, 0x91, 0x58, 0x6d, 0xcf, 0xe1, 0x68, + 0xa1, 0x81, 0x45, 0x7e, 0x81, 0x89, 0x05, 0xa7, 0x93, 0xa8, 0x12, 0x99, 0x5b, 0xd4, 0xcf, 0x69, + 0x12, 0x39, 0x6e, 0x48, 0xd7, 0x91, 0x99, 0x44, 0x8a, 0xb4, 0x98, 0xd5, 0x47, 0x5d, 0x4f, 0x98, + 0x4f, 0x9e, 0x8f, 0x72, 0xf8, 0x2b, 0xca, 0x8f, 0x45, 0x43, 0x0c, 0x55, 0x24, 0xa4, 0x71, 0x20, + 0xf7, 0x60, 0x2e, 0xdc, 0xb5, 0x15, 0xc6, 0x4b, 0xd1, 0x5b, 0x08, 0xd1, 0x56, 0x9f, 0xce, 0x37, + 0x8d, 0x9e, 0xd8, 0x70, 0x46, 0xdb, 0xa7, 0x15, 0xd6, 0xe7, 0x91, 0x35, 0xbe, 0x12, 0xaa, 0x6f, + 0xf2, 0xe9, 0xec, 0xfb, 0xf1, 0x21, 0x1f, 0xc1, 0x62, 0x7c, 0x6f, 0x56, 0x6a, 0x79, 0x01, 0x6b, + 0x79, 0xe5, 0xf1, 0xd1, 0xd2, 0xc5, 0xc4, 0xf6, 0x9e, 0x5e, 0xd1, 0x00, 0x6e, 0xe4, 0xab, 0xb0, + 0xa0, 0xef, 0xcf, 0x4a, 0x4d, 0x06, 0xd6, 0x84, 0x9f, 0x4e, 0xb8, 0xb1, 0xa7, 0xd7, 0xd0, 0x97, + 0x07, 0x09, 0x60, 0x29, 0x75, 0x75, 0x2b, 0xd5, 0x5c, 0x88, 0x3a, 0x94, 0xf8, 0x4a, 0xd2, 0xab, + 0x3b, 0x8e, 0x25, 0x79, 0x08, 0xcf, 0xa7, 0x6d, 0x13, 0x4a, 0xa5, 0x2f, 0x86, 0x06, 0xca, 0x57, + 0xd3, 0xb7, 0x9c, 0xf4, 0x9a, 0x8f, 0x61, 0x4b, 0x3e, 0x84, 0x53, 0xca, 0xf7, 0xa5, 0xd4, 0xf7, + 0x12, 0xd6, 0x87, 0xa1, 0xac, 0xea, 0x87, 0x99, 0x5e, 0x4b, 0x3a, 0x0f, 0xd2, 0x86, 0x39, 0xd9, + 0x71, 0xb4, 0x04, 0x8b, 0xad, 0xe7, 0xa2, 0x26, 0x55, 0x93, 0x18, 0xca, 0xf3, 0xca, 0x3b, 0x56, + 0x37, 0x22, 0x54, 0x57, 0x7a, 0x0a, 0x5f, 0xb2, 0x06, 0xa3, 0xf5, 0x5a, 0xf5, 0xe6, 0xcd, 0xd5, + 0x85, 0x97, 0xb1, 0x06, 0x19, 0xf7, 0xc2, 0x81, 0xda, 0xa1, 0x49, 0xb8, 0x5b, 0x75, 0x9d, 0xdd, + 0x5d, 0x2d, 0xbc, 0x88, 0xa3, 0x1a, 0x3f, 0x9b, 0x81, 0xb9, 0x14, 0x2a, 0x72, 0x11, 0xf2, 0xf8, + 0x14, 0x80, 0x72, 0x1d, 0x1c, 0x7b, 0x02, 0x00, 0xcb, 0xc9, 0x67, 0x60, 0xac, 0xb2, 0x51, 0xaf, + 0x97, 0x36, 0xe4, 0x01, 0x8b, 0x0b, 0x97, 0x8e, 0x6f, 0xf9, 0xb6, 0x7e, 0x8b, 0x24, 0xd0, 0xc8, + 0xeb, 0x30, 0x5a, 0xad, 0x21, 0x01, 0xf7, 0x47, 0xc2, 0x03, 0x87, 0xd3, 0x8d, 0xe3, 0x0b, 0x24, + 0xe3, 0xc7, 0x32, 0x40, 0x92, 0x43, 0x40, 0xae, 0xc1, 0x84, 0x3a, 0xd0, 0xfc, 0x38, 0x88, 0x37, + 0x1e, 0xca, 0x30, 0x9a, 0x2a, 0x0e, 0xa9, 0xc0, 0x08, 0x3e, 0x5d, 0x14, 0x5e, 0x5f, 0xa5, 0x8a, + 0xeb, 0x33, 0x09, 0x71, 0x3d, 0x82, 0x0f, 0x23, 0x99, 0x9c, 0xd8, 0xf8, 0xcd, 0x0c, 0x90, 0xe4, + 0x16, 0x37, 0xf4, 0xf5, 0xf9, 0x1b, 0x4a, 0x3c, 0xa9, 0x9a, 0xec, 0x3b, 0x7c, 0xa9, 0x41, 0x3d, + 0xda, 0x44, 0x91, 0xa7, 0x17, 0xb5, 0xa3, 0x74, 0xff, 0x20, 0xa4, 0xcb, 0x30, 0x72, 0x9f, 0x7a, + 0x3b, 0xd2, 0xd5, 0x0e, 0xdd, 0x73, 0x1e, 0x30, 0x80, 0x7a, 0xb4, 0x44, 0x0c, 0xe3, 0x0f, 0x32, + 0x30, 0x9f, 0xa6, 0x77, 0x1d, 0x13, 0x2b, 0x64, 0xc4, 0xc2, 0x9c, 0xf0, 0xea, 0x9c, 0xfb, 0xee, + 0x84, 0xc1, 0x4d, 0x4b, 0x30, 0xc2, 0x3a, 0x2b, 0x67, 0x18, 0x8f, 0xf6, 0x6c, 0x34, 0x7c, 0x93, + 0xc3, 0x19, 0x02, 0xcf, 0x51, 0x94, 0xc7, 0x54, 0x54, 0x88, 0x80, 0xdb, 0xba, 0xc9, 0xe1, 0x0c, + 0xe1, 0xae, 0xdb, 0x0c, 0xdf, 0xeb, 0x44, 0x84, 0x36, 0x03, 0x98, 0x1c, 0x4e, 0x2e, 0xc2, 0xd8, + 0x66, 0x67, 0x9d, 0xda, 0x0f, 0xe4, 0x63, 0x13, 0x78, 0xd5, 0xef, 0x76, 0xac, 0x16, 0x83, 0x99, + 0xb2, 0xd0, 0xf8, 0x76, 0x06, 0x66, 0x13, 0x2a, 0xdf, 0xf1, 0xe1, 0x50, 0x83, 0xe3, 0x12, 0x86, + 0xe9, 0x1f, 0x6f, 0x7e, 0x3e, 0xbd, 0xf9, 0xc6, 0xff, 0x99, 0x87, 0x33, 0x7d, 0x4e, 0xe0, 0x51, + 0xdc, 0x54, 0xe6, 0xd8, 0xb8, 0xa9, 0x2f, 0xb3, 0x13, 0xaf, 0xed, 0xb4, 0xfd, 0x2d, 0x37, 0x6a, + 0x71, 0xe4, 0x7e, 0x8d, 0x65, 0xf2, 0xc9, 0x52, 0xe9, 0xa7, 0x7b, 0x96, 0x3f, 0x1b, 0x6d, 0x05, + 0x6e, 0x52, 0x01, 0xd0, 0x98, 0x25, 0x22, 0x97, 0x72, 0x7f, 0x4a, 0x22, 0x97, 0x74, 0x5f, 0xfa, + 0xfc, 0x13, 0xf5, 0xa5, 0x4f, 0xf7, 0xc3, 0x1b, 0xf9, 0x24, 0x5e, 0x99, 0x65, 0x98, 0xe2, 0xbe, + 0x0e, 0x25, 0x9f, 0x4f, 0xd2, 0x68, 0xc2, 0x3f, 0xc2, 0xf6, 0x93, 0x73, 0xa1, 0xd1, 0x90, 0x35, + 0xdd, 0xef, 0x7b, 0x0c, 0xef, 0x68, 0x2e, 0xf6, 0xf7, 0xeb, 0xd6, 0xee, 0x66, 0x55, 0x52, 0xe3, + 0xdb, 0x59, 0x3d, 0xac, 0xe9, 0x4f, 0xe3, 0xca, 0xbb, 0x0c, 0x23, 0xdb, 0xfb, 0xd4, 0x93, 0xf2, + 0x0e, 0x1b, 0xf2, 0x90, 0x01, 0xd4, 0x86, 0x20, 0x06, 0xb9, 0x09, 0xd3, 0x35, 0x3e, 0x13, 0x72, + 0x78, 0xf3, 0xd1, 0xc1, 0xa8, 0x2b, 0x8e, 0xef, 0x29, 0xe3, 0x1b, 0xa3, 0x32, 0x6e, 0xc1, 0x39, + 0xed, 0x83, 0x14, 0x69, 0x18, 0xb8, 0xfb, 0x35, 0xdf, 0x11, 0xa7, 0x23, 0x87, 0xf3, 0x48, 0x7a, + 0x98, 0x31, 0xa8, 0xb1, 0x0b, 0xcf, 0x0f, 0x64, 0xc4, 0x36, 0x22, 0xe8, 0x86, 0xbf, 0x62, 0x3e, + 0x62, 0x03, 0x49, 0x4d, 0x85, 0xce, 0xf8, 0x41, 0x98, 0x54, 0x47, 0x19, 0x65, 0x2a, 0xfb, 0x2d, + 0x84, 0x1a, 0x97, 0xa9, 0x0c, 0x60, 0x72, 0xf8, 0xb1, 0x4f, 0xbd, 0x47, 0xd3, 0x9f, 0x3b, 0x6e, + 0xfa, 0x59, 0xe5, 0xf8, 0xc9, 0x2a, 0x95, 0xe3, 0x6f, 0xb5, 0x72, 0xcc, 0xb3, 0x60, 0x72, 0xf8, + 0x13, 0xad, 0xfc, 0x37, 0x64, 0xca, 0x7d, 0xf4, 0xee, 0x96, 0x27, 0xd8, 0xe8, 0x41, 0xcd, 0xb9, + 0xb4, 0x73, 0x69, 0x84, 0x19, 0x6d, 0x92, 0xd9, 0xe3, 0x36, 0xc9, 0x93, 0x2c, 0xc4, 0xab, 0x30, + 0x56, 0x12, 0x37, 0xa8, 0xf9, 0x48, 0xb1, 0xb1, 0x13, 0xd7, 0xa5, 0x12, 0xcb, 0xf8, 0x4e, 0x06, + 0x4e, 0xa5, 0x1a, 0xb6, 0x58, 0xad, 0xdc, 0x82, 0xa6, 0x7c, 0x87, 0x71, 0xf3, 0x19, 0xc7, 0x38, + 0x49, 0x90, 0xed, 0xf0, 0x7d, 0x31, 0x5e, 0x80, 0xf1, 0xf0, 0x5a, 0x85, 0xcc, 0xcb, 0xa9, 0x43, + 0xb7, 0x1a, 0x69, 0x9d, 0xaf, 0x03, 0xb0, 0x16, 0x3c, 0x51, 0x27, 0x30, 0xe3, 0x37, 0xb2, 0xfc, + 0x39, 0xa6, 0xa7, 0x36, 0x37, 0x5d, 0xba, 0xe7, 0x16, 0xeb, 0x52, 0xff, 0x8c, 0x74, 0x64, 0x15, + 0x46, 0xeb, 0x81, 0x1d, 0xf4, 0x64, 0x6c, 0xf0, 0x9c, 0x4a, 0x86, 0x05, 0xf7, 0x97, 0xa3, 0xe8, + 0x50, 0x1f, 0x21, 0x9a, 0x2a, 0x8f, 0x10, 0xc5, 0x01, 0xcc, 0x81, 0x49, 0x95, 0x96, 0x7c, 0x00, + 0xd3, 0x32, 0xe1, 0x16, 0x0f, 0x98, 0x16, 0x57, 0x40, 0xd2, 0x95, 0x40, 0x26, 0xdc, 0x52, 0x03, + 0xac, 0x35, 0x7c, 0x55, 0x52, 0x77, 0x55, 0x64, 0xe3, 0x0f, 0x47, 0xf9, 0x3a, 0x10, 0x99, 0xf3, + 0x76, 0x60, 0x7a, 0xb3, 0x5a, 0x29, 0x2b, 0x66, 0x2a, 0xfd, 0x91, 0x84, 0xd5, 0x47, 0x01, 0xf5, + 0x3a, 0x76, 0x4b, 0x20, 0x1c, 0x46, 0x7b, 0x83, 0xeb, 0x34, 0x1b, 0xe9, 0x26, 0xac, 0x18, 0x47, + 0x56, 0x47, 0xbd, 0x74, 0x77, 0x5d, 0xa9, 0x23, 0x3b, 0x64, 0x1d, 0xbe, 0xdd, 0x6e, 0xf5, 0xa9, + 0x43, 0xe7, 0x48, 0xf6, 0xa1, 0x78, 0x0b, 0xf5, 0x18, 0xa5, 0x96, 0xdc, 0xe0, 0x5a, 0x2e, 0x88, + 0x5a, 0x9e, 0xe5, 0x0a, 0x50, 0x7a, 0x3d, 0x09, 0xae, 0xd1, 0x07, 0x9c, 0x3f, 0xf6, 0x03, 0xfe, + 0x8b, 0x19, 0x18, 0xe5, 0x8a, 0x92, 0x58, 0x5f, 0x7d, 0x54, 0xb1, 0xed, 0x27, 0xa3, 0x8a, 0x15, + 0x51, 0x80, 0x6b, 0x2b, 0x8d, 0x97, 0x91, 0x4a, 0x6c, 0xc1, 0x4a, 0x87, 0x42, 0x34, 0x38, 0xf3, + 0x92, 0xe3, 0xd7, 0x2b, 0xa9, 0x46, 0x81, 0xb4, 0x63, 0xc7, 0xc6, 0x6a, 0xc9, 0xe0, 0xe3, 0x31, + 0x11, 0x48, 0xab, 0x87, 0xcf, 0xae, 0xc3, 0xb8, 0x08, 0xcf, 0x5d, 0x39, 0x14, 0xd7, 0x4a, 0x45, + 0xed, 0xd2, 0xba, 0xb9, 0x72, 0x18, 0x29, 0x81, 0x22, 0xc0, 0xd7, 0xda, 0x39, 0xd4, 0x9e, 0x9d, + 0x92, 0x88, 0x64, 0x93, 0x3f, 0xc7, 0xc2, 0x73, 0x0b, 0xea, 0x89, 0x7f, 0x43, 0xb8, 0x48, 0xfc, + 0x21, 0x63, 0xfc, 0x52, 0x52, 0x09, 0x46, 0x3c, 0xc8, 0x3a, 0x14, 0xc5, 0x33, 0xf5, 0xdc, 0xeb, + 0xa1, 0x5a, 0xe1, 0x21, 0xa0, 0xc2, 0x59, 0x4d, 0x3e, 0x72, 0x2f, 0xfc, 0x25, 0xf4, 0xe8, 0x8b, + 0x04, 0x25, 0x3b, 0xb8, 0x15, 0xe3, 0xab, 0x8f, 0xbc, 0x0d, 0x13, 0x61, 0x6e, 0xc7, 0x30, 0xfe, + 0x0b, 0xcd, 0xcb, 0x51, 0x32, 0x48, 0x2d, 0x12, 0x4c, 0x45, 0x27, 0xcb, 0x50, 0x60, 0x1f, 0x71, + 0xfc, 0xc1, 0xab, 0x9e, 0x80, 0xa9, 0x4e, 0xdd, 0x12, 0x8f, 0xd4, 0x61, 0x8e, 0x7d, 0x34, 0x75, + 0xa7, 0xb3, 0xd7, 0xa2, 0xeb, 0xee, 0x9e, 0xdb, 0x0b, 0xee, 0x99, 0xeb, 0x42, 0xb8, 0x72, 0x55, + 0xd9, 0x6e, 0xb7, 0xb4, 0x62, 0x4f, 0x7b, 0xce, 0x34, 0x85, 0x5a, 0x91, 0x61, 0xbf, 0x97, 0x85, + 0x09, 0x65, 0x3d, 0x91, 0xcb, 0x50, 0xa8, 0xfa, 0xeb, 0x6e, 0xe3, 0x20, 0xcc, 0x0c, 0x35, 0xf5, + 0xf8, 0x68, 0x69, 0xdc, 0xf1, 0xad, 0x16, 0x02, 0xcd, 0xb0, 0x98, 0xac, 0xc0, 0x14, 0xff, 0x4b, + 0xe6, 0xc7, 0xce, 0x46, 0xbe, 0x69, 0x1c, 0x59, 0x66, 0xc6, 0x56, 0xe5, 0x9a, 0x46, 0x42, 0xbe, + 0x02, 0xc0, 0x01, 0x18, 0x4b, 0x98, 0x1b, 0x3e, 0x0a, 0x52, 0x54, 0x90, 0x12, 0x45, 0xa8, 0x30, + 0x24, 0x5f, 0xe3, 0xb9, 0x20, 0xe5, 0xfa, 0xcf, 0x0f, 0x1f, 0xc6, 0xc9, 0xf8, 0x5b, 0xe9, 0xd1, + 0xe4, 0x2a, 0x4b, 0x91, 0xc4, 0x6e, 0xd1, 0xa4, 0x0d, 0xf7, 0x01, 0xf5, 0x0e, 0x4b, 0x01, 0x22, + 0x2a, 0x18, 0xc6, 0xff, 0x90, 0x51, 0xbe, 0x1a, 0xb2, 0x81, 0x6f, 0xb4, 0xf1, 0x15, 0x21, 0x3c, + 0x2c, 0x42, 0x65, 0x5e, 0xc2, 0x4d, 0xba, 0xbb, 0xf2, 0xac, 0x70, 0x8d, 0x9c, 0x0b, 0xd7, 0x55, + 0xec, 0xed, 0x36, 0x0e, 0x24, 0xef, 0x43, 0x1e, 0x87, 0xee, 0xf8, 0x27, 0xfd, 0xe5, 0x7e, 0x9a, + 0x67, 0x63, 0x86, 0x1d, 0x41, 0x4a, 0xf2, 0x19, 0x11, 0x87, 0xc5, 0x07, 0x7f, 0x5a, 0xd9, 0x14, + 0x59, 0x3b, 0xc2, 0x8d, 0x34, 0x4a, 0x28, 0xa0, 0xac, 0x9e, 0xbf, 0x96, 0x85, 0x62, 0xfc, 0x5b, + 0x25, 0xef, 0xc1, 0xa4, 0xdc, 0xe9, 0xf0, 0x11, 0x5f, 0xd6, 0xcb, 0x49, 0x91, 0xb0, 0x59, 0x6e, + 0x77, 0xf1, 0x37, 0x7c, 0x55, 0x02, 0xa6, 0x75, 0x6c, 0x89, 0x04, 0x3f, 0xca, 0x57, 0x12, 0xb8, + 0x41, 0x37, 0x96, 0x4e, 0x50, 0xa2, 0x91, 0x37, 0x20, 0x77, 0xf7, 0x66, 0x49, 0x38, 0xfd, 0x4b, + 0x91, 0x74, 0xf7, 0x66, 0x89, 0x7f, 0xcd, 0xdc, 0xa9, 0x49, 0x77, 0xb1, 0x62, 0xf8, 0x64, 0x5d, + 0xc9, 0xd6, 0x39, 0xaa, 0xbd, 0xa8, 0x23, 0xc1, 0x61, 0xe7, 0x8e, 0x4f, 0xdb, 0xc9, 0x5f, 0x07, + 0x16, 0x39, 0xf1, 0xfe, 0xfd, 0x1c, 0x8c, 0x87, 0xf5, 0x13, 0x02, 0xa8, 0x54, 0x89, 0x93, 0x0c, + 0xfe, 0x4d, 0xce, 0x42, 0x41, 0xea, 0x51, 0xc2, 0xf7, 0x7f, 0xcc, 0x17, 0x3a, 0xd4, 0x02, 0x48, + 0x85, 0x89, 0x7f, 0xe6, 0xa6, 0xfc, 0x49, 0xae, 0x41, 0xa8, 0x0d, 0xf5, 0x53, 0x9b, 0xf2, 0x6c, + 0xc2, 0xcc, 0x10, 0x8d, 0x4c, 0x43, 0xd6, 0xe1, 0x79, 0x56, 0xc6, 0xcd, 0xac, 0xd3, 0x24, 0xef, + 0x41, 0xc1, 0x6e, 0x36, 0x69, 0xd3, 0xb2, 0xa5, 0xab, 0xc2, 0xa0, 0x45, 0x53, 0x60, 0xdc, 0xf8, + 0x26, 0x80, 0x54, 0xa5, 0x80, 0x94, 0x60, 0xbc, 0x65, 0x73, 0xb7, 0xa7, 0xe6, 0x10, 0x3b, 0x4a, + 0xc4, 0xa1, 0xc0, 0xc8, 0xee, 0xf9, 0xb4, 0x49, 0x5e, 0x86, 0x3c, 0x9b, 0x4d, 0xb1, 0x85, 0x48, + 0xf5, 0x8d, 0x4d, 0x26, 0x1f, 0xb0, 0xb5, 0x67, 0x4c, 0x44, 0x20, 0x2f, 0x42, 0xae, 0xb7, 0xbc, + 0x2b, 0x36, 0x87, 0x62, 0x94, 0x39, 0x37, 0x44, 0x63, 0xc5, 0xe4, 0x3a, 0x14, 0x1e, 0xea, 0x49, + 0x57, 0x4f, 0xc5, 0xa6, 0x31, 0xc4, 0x0f, 0x11, 0x57, 0x0a, 0x30, 0xca, 0x37, 0x02, 0xe3, 0x79, + 0x80, 0xa8, 0xea, 0x64, 0x88, 0x86, 0xf1, 0x15, 0x18, 0x0f, 0xab, 0x24, 0xe7, 0x00, 0x0e, 0xe8, + 0xa1, 0xb5, 0x6f, 0x77, 0x9a, 0x2d, 0xae, 0xdf, 0x4d, 0x9a, 0xe3, 0x07, 0xf4, 0x70, 0x0d, 0x01, + 0xe4, 0x0c, 0x8c, 0x75, 0xd9, 0xac, 0x8a, 0xa5, 0x3b, 0x69, 0x8e, 0x76, 0x7b, 0x3b, 0x6c, 0x85, + 0x2e, 0xc0, 0x18, 0x5a, 0xde, 0xc4, 0x87, 0x36, 0x65, 0xca, 0x9f, 0xc6, 0x7f, 0x9e, 0xc5, 0xc7, + 0x01, 0x94, 0x76, 0x92, 0x0b, 0x30, 0xd5, 0xf0, 0x28, 0xee, 0x39, 0x36, 0xd3, 0xa4, 0x44, 0x3d, + 0x93, 0x11, 0xb0, 0xda, 0x24, 0x17, 0x61, 0x46, 0x3c, 0x88, 0xcd, 0x1a, 0xd4, 0xd8, 0x11, 0x19, + 0x92, 0x27, 0xcd, 0x29, 0x0e, 0xbe, 0x43, 0x0f, 0xcb, 0x3b, 0x98, 0x1f, 0xa8, 0xa8, 0xa6, 0x77, + 0x0c, 0xc2, 0x77, 0x0c, 0xcd, 0x19, 0x05, 0x8e, 0x1e, 0x48, 0xa7, 0x61, 0xd4, 0xb6, 0xf7, 0x7a, + 0x0e, 0xcf, 0xe3, 0x31, 0x69, 0x8a, 0x5f, 0xe4, 0x55, 0x98, 0xf5, 0x9d, 0xbd, 0x8e, 0x1d, 0xf4, + 0x3c, 0xf1, 0x3a, 0x03, 0xf5, 0x70, 0x49, 0x4d, 0x99, 0xc5, 0xb0, 0xa0, 0xcc, 0xe1, 0xe4, 0x75, + 0x20, 0x6a, 0x7d, 0xee, 0xce, 0x47, 0xb4, 0xc1, 0x97, 0xda, 0xa4, 0x39, 0xab, 0x94, 0x6c, 0x62, + 0x01, 0x79, 0x01, 0x26, 0x3d, 0xea, 0xa3, 0x16, 0x87, 0xc3, 0x86, 0x6f, 0xe7, 0x98, 0x13, 0x12, + 0xc6, 0xc6, 0xee, 0x12, 0x14, 0x95, 0xe1, 0xc0, 0x0c, 0x9a, 0x3c, 0x3d, 0xb0, 0x39, 0x1d, 0xc1, + 0xcd, 0x6e, 0xb5, 0x69, 0xac, 0xc0, 0x6c, 0xe2, 0xcb, 0x55, 0xde, 0x9e, 0xe5, 0x92, 0x68, 0xf0, + 0xdb, 0xb3, 0x46, 0x07, 0x26, 0x55, 0x49, 0x7c, 0x4c, 0x96, 0xea, 0xd3, 0x18, 0x07, 0xce, 0xc5, + 0xd4, 0xe8, 0xe3, 0xa3, 0xa5, 0xac, 0xd3, 0xc4, 0xe8, 0xef, 0x4b, 0x50, 0x90, 0x4a, 0x83, 0xd8, + 0xab, 0xd1, 0x72, 0x2a, 0xb4, 0xd5, 0x43, 0x33, 0x2c, 0x35, 0x5e, 0x86, 0x31, 0x21, 0x6c, 0x07, + 0xdb, 0x4b, 0x8d, 0x1f, 0xc9, 0xc2, 0x8c, 0x49, 0x99, 0x28, 0xa0, 0x3c, 0x35, 0xfd, 0x53, 0x7b, + 0x7c, 0x4b, 0xcf, 0x26, 0xa6, 0xf5, 0x6d, 0x40, 0x52, 0xf8, 0xbf, 0x9b, 0x81, 0xb9, 0x14, 0xdc, + 0x8f, 0xf5, 0x80, 0xd9, 0x0d, 0x18, 0xaf, 0x38, 0x76, 0xab, 0xd4, 0x6c, 0x86, 0x41, 0xe1, 0xa8, + 0x6a, 0x36, 0xd9, 0x4a, 0xb3, 0x19, 0x54, 0xdd, 0x76, 0x43, 0x54, 0xf2, 0x8a, 0x58, 0x14, 0xd1, + 0xe3, 0xd1, 0xb8, 0x28, 0xbe, 0x77, 0xb4, 0x04, 0xbc, 0x4d, 0xd1, 0x23, 0x99, 0x98, 0xe1, 0x8f, + 0x03, 0x23, 0xa7, 0xed, 0xa7, 0x76, 0xea, 0xd2, 0x33, 0xfc, 0xc5, 0xbb, 0x37, 0x54, 0x5e, 0xf8, + 0x1f, 0xcf, 0xc2, 0xe9, 0x74, 0xc2, 0x8f, 0xfb, 0x16, 0x1d, 0x66, 0xe4, 0x57, 0xb2, 0x92, 0xe2, + 0x5b, 0x74, 0x3c, 0x7d, 0x3f, 0xe2, 0x47, 0x08, 0x64, 0x17, 0xa6, 0xd6, 0x6d, 0x3f, 0x58, 0xa3, + 0xb6, 0x17, 0xec, 0x50, 0x3b, 0x18, 0x42, 0xf7, 0x7c, 0x51, 0x5e, 0x22, 0xe2, 0xf6, 0xb7, 0x2f, + 0x29, 0x63, 0xda, 0xa1, 0xce, 0x36, 0x5c, 0x28, 0xf9, 0x21, 0x16, 0xca, 0xd7, 0x61, 0xa6, 0x4e, + 0xdb, 0x76, 0x77, 0xdf, 0xf5, 0x64, 0xd4, 0xdf, 0x15, 0x98, 0x0a, 0x41, 0xa9, 0xab, 0x45, 0x2f, + 0xd6, 0xf0, 0x95, 0x81, 0x88, 0x44, 0x89, 0x5e, 0x6c, 0xfc, 0xf5, 0x2c, 0x9c, 0x29, 0x35, 0x84, + 0x6f, 0x8f, 0x28, 0x90, 0x2e, 0x88, 0x9f, 0x72, 0xdd, 0xe4, 0x2a, 0x8c, 0xdf, 0xb5, 0x1f, 0xad, + 0x53, 0xdb, 0xa7, 0xbe, 0x78, 0x09, 0x88, 0x2b, 0x6a, 0xf6, 0xa3, 0xc8, 0xe5, 0xc5, 0x8c, 0x70, + 0xd4, 0x93, 0x6c, 0xfe, 0x13, 0x9e, 0x64, 0x0d, 0x18, 0x5d, 0x73, 0x5b, 0x4d, 0xb1, 0x8d, 0x89, + 0xeb, 0xb5, 0x7d, 0x84, 0x98, 0xa2, 0x84, 0x1d, 0x00, 0xa7, 0xc3, 0x16, 0x63, 0x13, 0x3e, 0xf5, + 0x21, 0xb9, 0x08, 0x63, 0x58, 0x51, 0xb5, 0xa2, 0x6e, 0x1a, 0x2d, 0x8a, 0xef, 0xb9, 0x34, 0x4d, + 0x59, 0xa8, 0x8e, 0xc4, 0xc8, 0x27, 0x1b, 0x09, 0xe3, 0x3f, 0xc0, 0x9b, 0x3b, 0xb5, 0x97, 0x6c, + 0x27, 0x52, 0x1a, 0x92, 0x19, 0xb2, 0x21, 0xd9, 0x27, 0x36, 0x25, 0xb9, 0xbe, 0x53, 0xf2, 0xad, + 0x2c, 0x4c, 0x84, 0x8d, 0xfd, 0x3e, 0x4b, 0x8d, 0x1b, 0xf6, 0x6b, 0xa8, 0x48, 0xfd, 0xba, 0x22, + 0x2b, 0x44, 0x40, 0xfc, 0xfb, 0x30, 0x2a, 0x3e, 0xa6, 0x4c, 0xcc, 0x15, 0x2f, 0x36, 0xbb, 0x2b, + 0xd3, 0x82, 0xf5, 0x28, 0x4e, 0xa8, 0x6f, 0x0a, 0x3a, 0x4c, 0x85, 0xb0, 0x4d, 0x77, 0xc4, 0x45, + 0xee, 0x53, 0xbb, 0x47, 0xa5, 0xa7, 0x42, 0x88, 0x3a, 0x36, 0xd4, 0xee, 0x74, 0x34, 0x02, 0xc5, + 0x38, 0xc9, 0xf1, 0xc9, 0x87, 0x6b, 0xbd, 0x1d, 0xae, 0x85, 0xf3, 0xe4, 0xc3, 0xdd, 0xde, 0x8e, + 0xc9, 0x60, 0xe8, 0xe7, 0xe1, 0x39, 0x0f, 0xb0, 0xd7, 0x93, 0xc2, 0xcf, 0xc3, 0x73, 0x1e, 0x68, + 0x7e, 0x1e, 0x9e, 0xf3, 0x00, 0x8f, 0xbe, 0xeb, 0x75, 0x8c, 0xde, 0x44, 0x15, 0x5c, 0x1c, 0x7d, + 0x5b, 0x7e, 0xfc, 0xd1, 0x0e, 0x89, 0xc6, 0xb6, 0xca, 0x15, 0x6a, 0x7b, 0x22, 0x51, 0xae, 0x10, + 0x67, 0xb8, 0x55, 0xee, 0x20, 0x98, 0xbf, 0x87, 0x6b, 0xaa, 0x48, 0xa4, 0x05, 0x44, 0xf9, 0x29, + 0x3f, 0xe0, 0xe3, 0x4f, 0x83, 0xd2, 0x8d, 0x66, 0x5e, 0x65, 0x6d, 0xa9, 0x5f, 0x73, 0x0a, 0xdf, + 0x27, 0x69, 0x80, 0xac, 0x89, 0xec, 0x5f, 0x68, 0xf2, 0x28, 0x1c, 0xcb, 0x4c, 0x86, 0x37, 0x03, + 0xcf, 0x0e, 0x16, 0x1a, 0x3e, 0x22, 0x26, 0xe4, 0x5d, 0x98, 0x50, 0x63, 0x72, 0x79, 0xe4, 0xe8, + 0x73, 0x3c, 0xa1, 0x53, 0x9f, 0x27, 0xd9, 0x54, 0x02, 0xb2, 0x03, 0x67, 0xca, 0x6e, 0xc7, 0xef, + 0xb5, 0x65, 0xea, 0xa8, 0x28, 0x61, 0x25, 0x84, 0x4f, 0xaa, 0xbf, 0xd8, 0x10, 0x28, 0x22, 0x04, + 0x54, 0xfa, 0x39, 0xeb, 0x07, 0x90, 0x7e, 0x8c, 0xc8, 0x16, 0x4c, 0xa0, 0x11, 0x4f, 0x38, 0x52, + 0x4d, 0xe8, 0x62, 0x23, 0x2a, 0xa9, 0xb0, 0x0f, 0x83, 0xe7, 0x3e, 0xb1, 0xdb, 0x2d, 0xe9, 0x66, + 0xab, 0x1a, 0x23, 0x15, 0x64, 0xe3, 0x33, 0xea, 0xfa, 0x16, 0xea, 0xc6, 0xc0, 0xf5, 0x6d, 0xfc, + 0xb7, 0xa3, 0x30, 0x13, 0xab, 0x4e, 0x9c, 0x7f, 0x32, 0x89, 0xf3, 0x4f, 0x1d, 0x80, 0x1b, 0xbd, + 0x86, 0xb4, 0x4e, 0xc9, 0x08, 0x8d, 0x09, 0x11, 0xe1, 0x14, 0xce, 0x95, 0xc2, 0x86, 0x31, 0xe5, + 0x2b, 0x61, 0x48, 0x6b, 0x61, 0xc8, 0x94, 0x2f, 0x26, 0x85, 0x69, 0xc4, 0x86, 0x2c, 0xc1, 0x08, + 0x26, 0x06, 0x53, 0x03, 0x64, 0x1c, 0x06, 0x30, 0x39, 0x9c, 0x5c, 0x80, 0x51, 0xb6, 0x39, 0x57, + 0x2b, 0xe2, 0xe3, 0x42, 0x99, 0xc5, 0x76, 0x6f, 0xb6, 0x13, 0x8a, 0x22, 0x72, 0x03, 0x26, 0xf9, + 0x5f, 0x22, 0x36, 0x7c, 0x54, 0xf7, 0x20, 0xb2, 0x9c, 0xa6, 0x0c, 0x0f, 0xd7, 0xf0, 0x98, 0xd6, + 0x5a, 0xef, 0xed, 0xf0, 0x17, 0xca, 0x45, 0x26, 0x49, 0xd4, 0x5a, 0x7d, 0x0e, 0xc4, 0x17, 0x94, + 0x43, 0x04, 0xb6, 0x47, 0x0a, 0x37, 0xd5, 0x02, 0x9e, 0x55, 0x70, 0x8f, 0xe4, 0xee, 0xa9, 0xa6, + 0x28, 0x21, 0x97, 0xb9, 0x91, 0x19, 0xd5, 0x0d, 0xfe, 0xf8, 0x0d, 0x5a, 0x70, 0xf1, 0xc0, 0x8b, + 0x3a, 0x47, 0x58, 0xcc, 0x2a, 0x67, 0x7f, 0xaf, 0xb6, 0x6d, 0xa7, 0x25, 0x96, 0x2b, 0x56, 0x8e, + 0xb8, 0x94, 0x41, 0xcd, 0x08, 0x81, 0xbc, 0x0d, 0xd3, 0xec, 0x47, 0xd9, 0x6d, 0xb7, 0xdd, 0x0e, + 0xb2, 0x9f, 0x88, 0xd2, 0x8c, 0x20, 0x49, 0x03, 0x8b, 0x78, 0x2d, 0x31, 0x5c, 0x26, 0xa7, 0xf0, + 0x02, 0xab, 0xc7, 0xcd, 0xdf, 0x93, 0x91, 0x9c, 0x42, 0x52, 0x9f, 0xc3, 0x4d, 0x15, 0x89, 0xbc, + 0x09, 0x53, 0xec, 0xe7, 0x2d, 0xe7, 0x01, 0xe5, 0x15, 0x4e, 0x45, 0x57, 0xaa, 0x48, 0xb5, 0xc7, + 0x4a, 0x78, 0x7d, 0x3a, 0x26, 0xf9, 0x22, 0x9c, 0x42, 0x4e, 0x0d, 0xb7, 0x4b, 0x9b, 0xa5, 0xdd, + 0x5d, 0xa7, 0xe5, 0x70, 0x97, 0x0e, 0x1e, 0x05, 0x8d, 0xd6, 0x48, 0x5e, 0x31, 0x62, 0x58, 0x76, + 0x84, 0x62, 0xa6, 0x53, 0x92, 0x6d, 0x28, 0x96, 0x7b, 0x7e, 0xe0, 0xb6, 0x4b, 0x41, 0xe0, 0x39, + 0x3b, 0xbd, 0x80, 0xfa, 0x0b, 0x33, 0x5a, 0xac, 0x30, 0xfb, 0x38, 0xc2, 0x42, 0x6e, 0x67, 0x68, + 0x20, 0x85, 0x65, 0x87, 0x24, 0x66, 0x82, 0x89, 0xf1, 0xdf, 0x64, 0x60, 0x4a, 0x23, 0x25, 0x6f, + 0xc0, 0xe4, 0x4d, 0xcf, 0xa1, 0x9d, 0x66, 0xeb, 0x50, 0x39, 0x00, 0xa1, 0x76, 0xbc, 0x2b, 0xe0, + 0xbc, 0xd7, 0x1a, 0x5a, 0x68, 0x3f, 0xc8, 0xa6, 0xfa, 0x5b, 0x5d, 0xe5, 0x71, 0x5a, 0x62, 0x81, + 0xe6, 0xa2, 0xe4, 0x05, 0xb8, 0x40, 0xc5, 0xea, 0x54, 0x50, 0xc8, 0x3b, 0x30, 0xca, 0xaf, 0xba, + 0x84, 0xf3, 0xcf, 0xd9, 0xb4, 0x6e, 0xf2, 0x98, 0x40, 0x5c, 0x88, 0xe8, 0x68, 0xe0, 0x9b, 0x82, + 0xc8, 0xf8, 0xe9, 0x0c, 0x90, 0x24, 0xea, 0x31, 0xf6, 0x94, 0x63, 0x1d, 0x18, 0xde, 0x0f, 0xbf, + 0xc6, 0x9c, 0x66, 0x3d, 0x64, 0x35, 0xf1, 0x02, 0x3e, 0xf0, 0xe2, 0xab, 0x53, 0x0d, 0x3c, 0xbc, + 0xd8, 0xf8, 0x0b, 0x59, 0x80, 0x08, 0x9b, 0x7c, 0x9e, 0xbf, 0xbf, 0xf0, 0xc5, 0x9e, 0xdd, 0x72, + 0x76, 0x1d, 0x3d, 0x21, 0x19, 0x32, 0xf9, 0xba, 0x2c, 0x31, 0x75, 0x44, 0xf2, 0x1e, 0xcc, 0xd4, + 0x6b, 0x3a, 0xad, 0x92, 0x6b, 0xde, 0xef, 0x5a, 0x31, 0xf2, 0x38, 0x36, 0x3a, 0xf9, 0xa9, 0xb3, + 0xc1, 0x9d, 0xfc, 0xf8, 0x44, 0x88, 0x12, 0x26, 0x58, 0xea, 0x35, 0x7c, 0xf4, 0xbe, 0x49, 0x9b, + 0xd5, 0x8a, 0x90, 0x52, 0xd8, 0x3a, 0xbf, 0x6b, 0x75, 0x79, 0x01, 0xbe, 0xb4, 0xae, 0xe1, 0x45, + 0x03, 0x39, 0xd2, 0x27, 0xee, 0xef, 0x67, 0xd0, 0x9c, 0xd4, 0x76, 0x03, 0x2a, 0x4e, 0xd1, 0x4f, + 0xad, 0x3e, 0x1d, 0xdd, 0x93, 0x8e, 0x68, 0xe1, 0x4c, 0x5a, 0xef, 0xc4, 0x2d, 0xfd, 0xf5, 0x48, + 0xf9, 0xe5, 0x37, 0xa6, 0x29, 0xf7, 0xfa, 0xbf, 0x90, 0x81, 0x53, 0xa9, 0xb4, 0xe4, 0x0a, 0x40, + 0x64, 0xab, 0x10, 0xa3, 0xc4, 0x1f, 0xbc, 0x0f, 0xa1, 0xa6, 0x82, 0x41, 0xbe, 0x1c, 0xb7, 0x32, + 0x1c, 0xbf, 0x11, 0x2e, 0xca, 0x94, 0x2c, 0xba, 0x95, 0x21, 0xc5, 0xb6, 0x60, 0xfc, 0xdd, 0x1c, + 0xcc, 0x2a, 0x19, 0x01, 0x78, 0x5b, 0x8f, 0x71, 0xba, 0x3c, 0x80, 0x49, 0xd6, 0x1b, 0xa7, 0x21, + 0x62, 0x2a, 0xf8, 0x9d, 0xfe, 0x2b, 0x89, 0x80, 0x14, 0xc1, 0xed, 0x8a, 0x8a, 0xcc, 0x13, 0x25, + 0xa1, 0xe8, 0x44, 0x1b, 0x6e, 0x23, 0x19, 0x5b, 0xa1, 0x31, 0x27, 0x3e, 0x4c, 0x55, 0x0e, 0x3b, + 0x76, 0x3b, 0xac, 0x8d, 0xdf, 0xed, 0xbf, 0xda, 0xb7, 0x36, 0x0d, 0x9b, 0x57, 0x17, 0xb9, 0x6e, + 0xf3, 0xb2, 0x94, 0xa8, 0x41, 0x8d, 0x6a, 0xf1, 0x3d, 0x98, 0x4d, 0x34, 0xfa, 0x44, 0x39, 0x9b, + 0xb6, 0x81, 0x24, 0xdb, 0x91, 0xc2, 0xe1, 0x55, 0x3d, 0x23, 0xd8, 0xa9, 0xf0, 0x1a, 0x0f, 0x5f, + 0x6e, 0xe5, 0x9e, 0x02, 0xcb, 0x6a, 0x46, 0xa7, 0x9f, 0xc9, 0xaa, 0x41, 0x41, 0x4f, 0xfb, 0x57, + 0xf7, 0xbe, 0x76, 0xca, 0x7a, 0xbe, 0xdf, 0x9c, 0x0e, 0x75, 0x9a, 0xfd, 0x6e, 0x0e, 0xce, 0xf4, + 0xa1, 0x24, 0x87, 0xf1, 0x45, 0xc4, 0x4f, 0xb7, 0xd7, 0x06, 0x57, 0xf8, 0x24, 0x96, 0x12, 0xf9, + 0x3c, 0x0f, 0x0b, 0x6e, 0xe0, 0x8b, 0xa3, 0xe2, 0x5c, 0xc7, 0x1f, 0xab, 0x0e, 0xa1, 0xf1, 0x78, + 0x60, 0x0e, 0x25, 0xef, 0xc1, 0x08, 0x46, 0x84, 0xc5, 0x32, 0x12, 0x31, 0x0c, 0x84, 0x2b, 0xe9, + 0x9b, 0xd8, 0x4f, 0x2d, 0x7d, 0x13, 0x03, 0x90, 0xcf, 0x41, 0xae, 0xb4, 0x5d, 0x17, 0xf3, 0x32, + 0xad, 0x92, 0x6f, 0xd7, 0xa3, 0xac, 0xd1, 0xb6, 0x96, 0xde, 0x99, 0x51, 0x30, 0xc2, 0x5b, 0xe5, + 0x9a, 0x98, 0x15, 0x95, 0xf0, 0x56, 0xb9, 0x16, 0x11, 0xee, 0x35, 0xb4, 0x0c, 0x0f, 0xb7, 0xca, + 0xb5, 0x4f, 0x6f, 0xd9, 0xff, 0xe5, 0x2c, 0x8f, 0x65, 0xe6, 0x1d, 0x7b, 0x0f, 0x26, 0xb5, 0x8c, + 0x8d, 0x99, 0x48, 0x1f, 0x0b, 0x13, 0x63, 0xc6, 0x9c, 0x21, 0x34, 0x02, 0x99, 0x7f, 0x9d, 0xfd, + 0x46, 0x8d, 0x57, 0x75, 0x3b, 0x08, 0x39, 0xa0, 0x4e, 0x1c, 0xcf, 0xbf, 0x1e, 0x92, 0x90, 0xeb, + 0x50, 0xd8, 0xa2, 0x1d, 0xbb, 0x13, 0x84, 0x86, 0x36, 0x74, 0x68, 0x0c, 0x10, 0xa6, 0x6b, 0x0d, + 0x21, 0x22, 0x3a, 0xdf, 0xf5, 0x76, 0xfc, 0x86, 0xe7, 0x60, 0xce, 0x83, 0x70, 0x2f, 0xe6, 0xce, + 0x77, 0x4a, 0x89, 0xce, 0x20, 0x46, 0x64, 0xfc, 0x4c, 0x06, 0xc6, 0xc4, 0x44, 0xf2, 0x77, 0x33, + 0xf6, 0xa2, 0xbd, 0x44, 0xbc, 0x9b, 0xb1, 0xe7, 0xc4, 0xdf, 0xcd, 0xd8, 0xe3, 0x89, 0x05, 0xc6, + 0x45, 0x58, 0x5e, 0x78, 0xe5, 0xc4, 0x9f, 0x59, 0xe6, 0x40, 0xbd, 0xda, 0x08, 0x75, 0xd8, 0xa8, + 0x06, 0xe3, 0x6f, 0x8a, 0x96, 0xdd, 0x2a, 0xd7, 0xc8, 0x32, 0x14, 0xd6, 0xdd, 0x86, 0xad, 0xec, + 0x73, 0x28, 0x76, 0x5a, 0x02, 0xa6, 0x0e, 0x90, 0xc4, 0x63, 0xed, 0xab, 0x79, 0xae, 0x38, 0xcb, + 0x28, 0xed, 0xeb, 0x72, 0x60, 0xac, 0x7d, 0x21, 0xea, 0xd0, 0xed, 0xa3, 0x29, 0x42, 0xe2, 0xfe, + 0x75, 0x4c, 0x4c, 0x7d, 0x5b, 0x8d, 0x16, 0x11, 0x45, 0x52, 0x52, 0x2c, 0xf6, 0x93, 0x14, 0xf7, + 0xaf, 0x9b, 0x29, 0x54, 0x78, 0x5f, 0x13, 0x81, 0xeb, 0xd4, 0x7b, 0xf0, 0x14, 0x4b, 0xe9, 0xf4, + 0xfb, 0x9a, 0x78, 0xf7, 0x86, 0x12, 0xd2, 0xff, 0x65, 0x16, 0x4e, 0xa7, 0x13, 0xaa, 0x7d, 0xc9, + 0x0c, 0xe8, 0xcb, 0x25, 0x28, 0xac, 0xb9, 0x7e, 0xa0, 0xf8, 0x3f, 0xa1, 0x59, 0x79, 0x5f, 0xc0, + 0xcc, 0xb0, 0x94, 0x9d, 0xb9, 0xd9, 0xdf, 0xe1, 0xe7, 0x89, 0xfc, 0x30, 0x82, 0x97, 0x9d, 0xb9, + 0x79, 0x11, 0xb9, 0x05, 0x05, 0x53, 0x44, 0x2b, 0xc4, 0x86, 0x46, 0x82, 0x43, 0x6d, 0x8a, 0x78, + 0x02, 0xa2, 0x25, 0xce, 0x14, 0x30, 0x52, 0x82, 0x31, 0x31, 0xfb, 0xb1, 0x2b, 0xc9, 0x94, 0x25, + 0xa3, 0xe7, 0xb2, 0x95, 0x74, 0x4c, 0xa2, 0xe0, 0xe5, 0x52, 0xb5, 0x22, 0x03, 0x0f, 0x50, 0xa2, + 0xf0, 0xcb, 0x27, 0xdd, 0xd5, 0x2c, 0x44, 0x34, 0x7e, 0x24, 0x0b, 0xb0, 0x4d, 0x77, 0x9e, 0xee, + 0x87, 0xde, 0x3e, 0xa7, 0xad, 0x30, 0xc5, 0xf3, 0x62, 0xf8, 0x77, 0xde, 0x36, 0xd1, 0x03, 0x62, + 0xf8, 0x57, 0xde, 0x96, 0x60, 0x84, 0x5b, 0x3b, 0xd5, 0x87, 0x94, 0xd0, 0xcc, 0xc9, 0xe1, 0xc6, + 0x0e, 0xcc, 0xdf, 0xa2, 0x41, 0x64, 0xde, 0x92, 0x57, 0x5a, 0x83, 0xd9, 0xbe, 0x06, 0xe3, 0x02, + 0x3f, 0x94, 0x5f, 0xdc, 0x16, 0x23, 0x82, 0xe2, 0xd1, 0x16, 0x23, 0x11, 0x98, 0x34, 0xaa, 0xd0, + 0x16, 0x0d, 0xe8, 0xa7, 0x5b, 0x4d, 0x1d, 0x08, 0xef, 0x0a, 0xf6, 0x6c, 0xb8, 0x1a, 0x8e, 0x1d, + 0x9f, 0xfb, 0x70, 0x2a, 0x6c, 0xfb, 0x93, 0xe4, 0x7b, 0x95, 0x1d, 0x29, 0x45, 0x1a, 0xd8, 0x88, + 0xe3, 0x00, 0x9f, 0x86, 0x47, 0xb0, 0x28, 0x09, 0xb6, 0x9d, 0xd0, 0x85, 0x6c, 0x28, 0x5a, 0xf2, + 0x36, 0x4c, 0x28, 0x34, 0x22, 0x8d, 0x29, 0x9a, 0x3f, 0x1f, 0x3a, 0xc1, 0xbe, 0xe5, 0x73, 0xb8, + 0x6a, 0xfe, 0x54, 0xd0, 0x8d, 0x0f, 0xe1, 0xd9, 0x30, 0x54, 0x21, 0xa5, 0xea, 0x18, 0xf3, 0xcc, + 0xc9, 0x98, 0x6f, 0x44, 0xdd, 0xaa, 0x76, 0xc2, 0xf0, 0x42, 0xc9, 0x9b, 0xa8, 0xdd, 0x12, 0x9d, + 0x79, 0x2e, 0x11, 0xb0, 0xa8, 0xc4, 0x25, 0x1a, 0x6f, 0x29, 0x8d, 0x4d, 0x61, 0xa8, 0x11, 0x67, + 0xe2, 0xc4, 0x3f, 0x92, 0x85, 0x99, 0xcd, 0x6a, 0xa5, 0x1c, 0x7a, 0xb5, 0x7c, 0x9f, 0xbd, 0x42, + 0xa7, 0xf5, 0xad, 0xbf, 0xbc, 0x31, 0xee, 0xc1, 0x5c, 0x6c, 0x18, 0x50, 0x75, 0x78, 0x97, 0xfb, + 0xd2, 0x87, 0x60, 0xa9, 0x36, 0x9c, 0x4e, 0x63, 0x7f, 0xff, 0xba, 0x19, 0xc3, 0x36, 0xfe, 0xf9, + 0x78, 0x8c, 0xaf, 0x10, 0x61, 0xaf, 0xc1, 0x78, 0xd5, 0xf7, 0x7b, 0xd4, 0xbb, 0x67, 0xae, 0xab, + 0xa6, 0x02, 0x07, 0x81, 0x56, 0xcf, 0x6b, 0x99, 0x11, 0x02, 0xb9, 0x0c, 0x05, 0x91, 0xd9, 0x53, + 0xca, 0x04, 0xb4, 0xda, 0x86, 0x89, 0x41, 0xcd, 0xb0, 0x98, 0xbc, 0x01, 0x93, 0xfc, 0x6f, 0xbe, + 0xda, 0xc4, 0x80, 0xa3, 0x71, 0x50, 0xa0, 0xf3, 0xd5, 0x69, 0x6a, 0x68, 0xe4, 0x15, 0xc8, 0x95, + 0xca, 0xa6, 0x30, 0x07, 0x09, 0xbd, 0x11, 0xdf, 0x96, 0xed, 0x51, 0xfd, 0x10, 0x51, 0x36, 0x99, + 0xf6, 0x27, 0x4c, 0x49, 0xf2, 0x39, 0x07, 0xfe, 0x04, 0xae, 0x80, 0xc5, 0x36, 0x33, 0x84, 0x91, + 0xab, 0x30, 0x56, 0x71, 0xfc, 0x6e, 0xcb, 0x3e, 0x14, 0x76, 0x6c, 0xfe, 0xc4, 0x0a, 0x07, 0x69, + 0x11, 0xca, 0x1c, 0x44, 0x2e, 0xcb, 0xa7, 0x27, 0x0a, 0x91, 0x4b, 0x7e, 0x9f, 0xf7, 0x25, 0x5e, + 0x83, 0x51, 0x91, 0xff, 0x72, 0x5c, 0xc9, 0x6c, 0x1d, 0xcf, 0x7b, 0x29, 0x70, 0x92, 0x41, 0x73, + 0xf0, 0x24, 0x83, 0xe6, 0x76, 0xe0, 0xcc, 0x2d, 0xb4, 0xde, 0xe8, 0x99, 0x32, 0xee, 0x99, 0x55, + 0x61, 0x0f, 0xc7, 0x1b, 0x1f, 0x6e, 0xe0, 0x89, 0x27, 0xdb, 0xb0, 0x7a, 0x9e, 0xfa, 0x62, 0x58, + 0x3f, 0x46, 0xe4, 0x4b, 0x30, 0x9f, 0x56, 0x24, 0xac, 0xe6, 0x98, 0x13, 0x22, 0xbd, 0x02, 0x35, + 0x27, 0x44, 0x1a, 0x07, 0xb2, 0x0e, 0x45, 0x0e, 0x2f, 0x35, 0xdb, 0x4e, 0x87, 0x5b, 0xfe, 0xa7, + 0xa2, 0xa7, 0xf6, 0x05, 0x57, 0x9b, 0x15, 0xf2, 0x1b, 0x00, 0x2d, 0xaa, 0x22, 0x46, 0x49, 0x7e, + 0x32, 0xc3, 0x4e, 0x73, 0x3c, 0x5b, 0xe4, 0x3d, 0x73, 0xdd, 0x17, 0xf9, 0x84, 0x4e, 0x47, 0x01, + 0x13, 0xf5, 0xc0, 0x73, 0x3a, 0x7b, 0x22, 0x62, 0x62, 0x4b, 0x44, 0x4c, 0xbc, 0xfd, 0xb1, 0x22, + 0x26, 0x38, 0x2b, 0xff, 0xf1, 0xd1, 0xd2, 0xa4, 0x27, 0xea, 0xc4, 0xaf, 0x48, 0x6b, 0x01, 0xbe, + 0x76, 0xdd, 0x6a, 0xb9, 0x0f, 0xef, 0x75, 0x1e, 0x50, 0xcf, 0xd9, 0x75, 0x68, 0x93, 0x77, 0x72, + 0x06, 0x25, 0x38, 0x7f, 0xed, 0x1a, 0xdf, 0x6f, 0xef, 0x85, 0x08, 0x89, 0x8e, 0xa6, 0x72, 0x60, + 0x07, 0x4f, 0xe9, 0x95, 0xcf, 0x23, 0x00, 0x8b, 0xd1, 0xc1, 0x53, 0xba, 0xf0, 0x5b, 0xb8, 0x8c, + 0xd4, 0xc5, 0xa3, 0x91, 0x90, 0xab, 0x30, 0x7a, 0xd7, 0x7e, 0x54, 0xda, 0xa3, 0xe2, 0x49, 0xa1, + 0x29, 0x29, 0xfe, 0x10, 0xb8, 0x52, 0xf8, 0x1d, 0xee, 0xf5, 0xfd, 0x8c, 0x29, 0xd0, 0xc8, 0x37, + 0x33, 0x70, 0x9a, 0x7f, 0xc6, 0xb2, 0x97, 0x75, 0x1a, 0x04, 0x6c, 0x1c, 0x44, 0x62, 0x21, 0x99, + 0x90, 0xbf, 0x5e, 0xdf, 0x4c, 0xc7, 0xe3, 0x6f, 0x33, 0x0b, 0xc9, 0x10, 0x0e, 0x9c, 0x2f, 0x4a, + 0xb5, 0xec, 0x81, 0xa9, 0xf4, 0xc2, 0xa3, 0xf9, 0x73, 0xb2, 0xe5, 0xe4, 0x75, 0x35, 0x50, 0x2d, + 0x87, 0x7a, 0xee, 0x58, 0xdb, 0x7e, 0x64, 0xd9, 0x7b, 0x54, 0xbb, 0x27, 0x0d, 0x23, 0xd8, 0xce, + 0xf6, 0x6d, 0x1b, 0xb9, 0x01, 0x67, 0xe4, 0x2b, 0xdd, 0xfb, 0x41, 0xd0, 0xf5, 0x2d, 0x79, 0x16, + 0x10, 0x91, 0x6d, 0xe6, 0x29, 0x51, 0xbc, 0xc6, 0x4a, 0xe5, 0xf1, 0xc0, 0x37, 0xfe, 0xda, 0x38, + 0xdf, 0xd3, 0x4a, 0xbd, 0x60, 0x5f, 0xee, 0x82, 0xcb, 0x69, 0xb1, 0x19, 0xdc, 0x69, 0x4c, 0x89, + 0xcd, 0xd0, 0x23, 0x32, 0xe4, 0x65, 0x44, 0x36, 0xf5, 0x32, 0xe2, 0x35, 0x18, 0x2f, 0xef, 0xd3, + 0xc6, 0x41, 0xe8, 0x1f, 0x5f, 0x10, 0xd6, 0x5e, 0x06, 0xe4, 0x89, 0x25, 0x23, 0x04, 0x72, 0x15, + 0x00, 0x83, 0xb5, 0xb8, 0x8a, 0xa4, 0x24, 0x87, 0xc6, 0xd8, 0x2e, 0x71, 0x0f, 0xaf, 0xa0, 0x20, + 0xfb, 0xba, 0x79, 0x53, 0xbd, 0xb8, 0xe7, 0xec, 0x7d, 0x6f, 0x57, 0xa0, 0x47, 0x08, 0xac, 0x7b, + 0xca, 0x42, 0x17, 0x62, 0xb9, 0x98, 0xf8, 0x1a, 0x54, 0x24, 0xf4, 0x89, 0x93, 0xce, 0xc0, 0x28, + 0x95, 0x27, 0x85, 0x4f, 0x5c, 0xe8, 0x38, 0x6c, 0x46, 0x08, 0xe4, 0x73, 0x30, 0x56, 0xa6, 0x5e, + 0xb0, 0xb5, 0xb5, 0x8e, 0x77, 0xeb, 0x3c, 0x83, 0x72, 0x01, 0xb3, 0xdd, 0x06, 0x41, 0xeb, 0x7b, + 0x47, 0x4b, 0x53, 0x81, 0xd3, 0xa6, 0x57, 0xc2, 0x09, 0x96, 0xd8, 0x64, 0x05, 0x8a, 0xfc, 0x96, + 0x36, 0x52, 0x85, 0x51, 0x50, 0x17, 0xf8, 0xb6, 0x21, 0xae, 0x74, 0x1f, 0xd2, 0x9d, 0x30, 0xd7, + 0x6f, 0x02, 0x9f, 0xac, 0xca, 0x14, 0xd9, 0x6a, 0x27, 0x21, 0xb2, 0xcd, 0xc4, 0x17, 0x30, 0xeb, + 0x6b, 0x92, 0x82, 0x94, 0x60, 0xaa, 0xec, 0xb6, 0xbb, 0x76, 0xe0, 0xe0, 0x7b, 0x33, 0x87, 0x42, + 0x26, 0xa3, 0x7d, 0xa9, 0xa1, 0x16, 0x68, 0x02, 0x5e, 0x2d, 0x20, 0x37, 0x61, 0xda, 0x74, 0x7b, + 0x6c, 0x92, 0xe4, 0xa1, 0x90, 0x8b, 0x5d, 0x0c, 0x75, 0xf6, 0x58, 0x09, 0xdb, 0x25, 0xc4, 0x09, + 0x50, 0xcb, 0x54, 0xa6, 0x51, 0x91, 0x8d, 0x14, 0xeb, 0xbc, 0x2a, 0x6b, 0xd5, 0x8c, 0xbf, 0x09, + 0x66, 0x29, 0x86, 0xfd, 0xeb, 0x30, 0x51, 0xaf, 0x6f, 0x6e, 0x51, 0x3f, 0xb8, 0xd9, 0x72, 0x1f, + 0xa2, 0xa8, 0x2d, 0x88, 0x97, 0x10, 0x7c, 0xd7, 0x0a, 0xa8, 0x1f, 0x58, 0xbb, 0x2d, 0xf7, 0xa1, + 0xa9, 0x62, 0x91, 0xaf, 0xb2, 0xf1, 0x50, 0x14, 0x13, 0x91, 0x93, 0x6d, 0x90, 0xee, 0x84, 0x02, + 0x2d, 0xfa, 0x64, 0x98, 0x06, 0xa5, 0x0f, 0x96, 0x82, 0x8e, 0xc1, 0x1e, 0xec, 0x38, 0x5b, 0x6a, + 0x36, 0x3d, 0xea, 0xfb, 0x42, 0x26, 0xf2, 0x60, 0x0f, 0x3c, 0xfb, 0xda, 0xbc, 0x40, 0x0b, 0xf6, + 0x50, 0x08, 0xc8, 0xb7, 0x32, 0x70, 0x4a, 0xf5, 0x17, 0xc7, 0x8f, 0xa5, 0x4d, 0x3b, 0x81, 0x90, + 0x90, 0xaf, 0x5f, 0x91, 0x7b, 0xc2, 0x15, 0x05, 0xed, 0xca, 0x83, 0x6b, 0x57, 0x4a, 0xd1, 0xcf, + 0xba, 0x24, 0x12, 0x69, 0x8d, 0xd2, 0xf8, 0xa9, 0xf2, 0xdd, 0x4e, 0x21, 0x25, 0x65, 0xa6, 0x36, + 0xb0, 0xf5, 0x84, 0xde, 0x21, 0xd5, 0x1a, 0x0a, 0x58, 0x61, 0xde, 0x13, 0xab, 0x8f, 0xfb, 0x91, + 0x38, 0x5d, 0x5d, 0x3b, 0x50, 0x68, 0x50, 0xd9, 0xae, 0x97, 0xee, 0xae, 0x47, 0x1a, 0xe3, 0xf7, + 0x97, 0x93, 0xb6, 0xd6, 0xb7, 0x01, 0x4e, 0xda, 0xf7, 0x78, 0xd8, 0x9a, 0x32, 0x0c, 0x52, 0xd9, + 0xd6, 0xc0, 0x71, 0x65, 0x3b, 0x46, 0x63, 0xc6, 0xb0, 0x8d, 0xef, 0x15, 0x62, 0x7c, 0x85, 0x63, + 0x96, 0x01, 0xa3, 0x5c, 0x97, 0x56, 0x1f, 0x4a, 0xe6, 0x9a, 0xb6, 0x29, 0x4a, 0xc8, 0x59, 0xc8, + 0xd5, 0xeb, 0x9b, 0xea, 0xdb, 0xf0, 0xbe, 0xef, 0x9a, 0x0c, 0xc6, 0x66, 0x08, 0x7d, 0xae, 0x94, + 0x14, 0xaa, 0x4c, 0xec, 0x99, 0x08, 0x65, 0xe3, 0x2d, 0x35, 0xdb, 0x7c, 0x34, 0xde, 0x42, 0xb3, + 0x8d, 0xf4, 0xd9, 0x32, 0x2c, 0x94, 0x7c, 0x9f, 0x7a, 0x6c, 0x55, 0x09, 0x57, 0x1e, 0x4f, 0x68, + 0x5f, 0x42, 0xba, 0x63, 0xa5, 0x76, 0xc3, 0x37, 0xfb, 0x22, 0x92, 0x4b, 0x50, 0x28, 0xf5, 0x9a, + 0x0e, 0xed, 0x34, 0xb4, 0x8c, 0x2b, 0xb6, 0x80, 0x99, 0x61, 0x29, 0xf9, 0x22, 0x9c, 0x12, 0x44, + 0x52, 0x05, 0x17, 0x23, 0x30, 0x16, 0x7d, 0x82, 0x52, 0x3b, 0x8c, 0xae, 0x89, 0xf9, 0x90, 0xa4, + 0x53, 0x92, 0x12, 0x14, 0x57, 0x31, 0x28, 0xa1, 0x42, 0xb9, 0xc5, 0xda, 0xf5, 0x78, 0xa0, 0x05, + 0xd7, 0xe5, 0x79, 0xc0, 0x82, 0xd5, 0x0c, 0x0b, 0xcd, 0x04, 0x3a, 0xb9, 0x03, 0x73, 0x71, 0x18, + 0x13, 0xe4, 0x5c, 0x6d, 0xc7, 0x1c, 0x7e, 0x09, 0x2e, 0x28, 0xca, 0xd3, 0xa8, 0xc8, 0x0e, 0xcc, + 0x46, 0x6e, 0x12, 0xba, 0x32, 0x2f, 0xbd, 0xfa, 0xc2, 0x72, 0xa9, 0xd0, 0x3f, 0x2b, 0x16, 0xe3, + 0x5c, 0xe4, 0x72, 0x11, 0x2a, 0xf5, 0x66, 0x92, 0x1d, 0x69, 0xc2, 0x74, 0xdd, 0xd9, 0xeb, 0x38, + 0x9d, 0xbd, 0x3b, 0xf4, 0xb0, 0x66, 0x3b, 0x9e, 0xf0, 0xaf, 0x92, 0xde, 0x93, 0x25, 0xff, 0xb0, + 0xdd, 0xa6, 0x81, 0x87, 0x5b, 0x24, 0x2b, 0xc7, 0x18, 0x41, 0xa6, 0xa4, 0x2d, 0xfa, 0x9c, 0x0e, + 0xe3, 0x6f, 0xba, 0xb6, 0xa3, 0xed, 0x05, 0x3a, 0x4f, 0xed, 0x40, 0x35, 0x39, 0xe4, 0x81, 0xaa, + 0x05, 0xb3, 0xab, 0x9d, 0x86, 0x77, 0x88, 0x17, 0x07, 0xb2, 0x71, 0x53, 0xc7, 0x34, 0xee, 0x45, + 0xd1, 0xb8, 0xe7, 0x6c, 0xb9, 0xc2, 0xd2, 0x9a, 0x97, 0x64, 0x4c, 0xea, 0x30, 0x8b, 0x5a, 0x6f, + 0xb5, 0x52, 0xab, 0x76, 0x9c, 0xc0, 0xc1, 0xe7, 0x7c, 0xf9, 0x1e, 0xf3, 0x92, 0xe0, 0x79, 0x8e, + 0x2b, 0xce, 0x4e, 0xb3, 0x6b, 0x39, 0x12, 0x45, 0x65, 0x9a, 0xa0, 0x1f, 0xa4, 0xbd, 0xce, 0xfc, + 0x9b, 0xd1, 0x5e, 0xf1, 0xc1, 0x9b, 0x58, 0xec, 0x6c, 0x31, 0xca, 0x9d, 0xee, 0x63, 0x11, 0x93, + 0xeb, 0x6e, 0x0f, 0x75, 0x0a, 0xed, 0xc1, 0x1b, 0x9d, 0xce, 0xf8, 0x4f, 0x0a, 0x5c, 0xb6, 0xab, + 0x4a, 0x67, 0x3f, 0xff, 0xb7, 0x98, 0x32, 0x9a, 0x3d, 0x89, 0x32, 0x9a, 0x3b, 0x5e, 0x19, 0xcd, + 0x1f, 0xa7, 0x8c, 0xc6, 0xb4, 0xc5, 0x91, 0x13, 0x6b, 0x8b, 0xa3, 0x27, 0xd0, 0x16, 0xc7, 0x4e, + 0xa4, 0x2d, 0x6a, 0x6a, 0x6f, 0xe1, 0x38, 0xb5, 0xf7, 0xff, 0xd7, 0x2d, 0x9f, 0x56, 0xdd, 0x32, + 0x4d, 0x55, 0x38, 0x91, 0x6e, 0xd9, 0x5f, 0x35, 0x2c, 0xfe, 0x49, 0xab, 0x86, 0xb3, 0x1f, 0x43, + 0x35, 0xfc, 0x33, 0x50, 0x8c, 0xef, 0x56, 0xc7, 0x67, 0x48, 0x7b, 0x62, 0xd9, 0x7c, 0xd8, 0x5e, + 0x1a, 0xdf, 0x2d, 0xd8, 0x91, 0xb5, 0xe6, 0x39, 0x0f, 0xec, 0x80, 0xde, 0x91, 0x97, 0xfc, 0x22, + 0xbb, 0x1f, 0x87, 0xe2, 0x37, 0xaf, 0xa0, 0x84, 0x8a, 0x52, 0x36, 0x4d, 0x51, 0x32, 0x7e, 0x34, + 0x0b, 0xb3, 0x3c, 0xf3, 0xc6, 0xd3, 0x6f, 0x6b, 0x7e, 0x57, 0x53, 0x7f, 0xa5, 0x4b, 0x59, 0xac, + 0x77, 0x03, 0xac, 0xcd, 0x5f, 0x81, 0x53, 0x89, 0xa1, 0x40, 0x15, 0xb8, 0x22, 0x73, 0x9e, 0x24, + 0x94, 0xe0, 0x85, 0xf4, 0x4a, 0xee, 0x5f, 0x37, 0x13, 0x14, 0xc6, 0xbf, 0xcc, 0x27, 0xf8, 0x0b, + 0xbb, 0xb3, 0x6a, 0x49, 0xce, 0x9c, 0xcc, 0x92, 0x9c, 0x1d, 0xce, 0x92, 0x1c, 0xdb, 0x5b, 0x72, + 0xc3, 0xec, 0x2d, 0x5f, 0x84, 0xa9, 0x2d, 0x6a, 0xb7, 0xfd, 0x2d, 0x57, 0x24, 0xdc, 0xe6, 0x2e, + 0xa5, 0x32, 0xa5, 0x09, 0x2b, 0x93, 0x1a, 0x5c, 0xe8, 0x1a, 0x13, 0x30, 0x02, 0x26, 0x0f, 0x79, + 0x06, 0x6e, 0x53, 0xe7, 0xa0, 0xaa, 0xe5, 0x23, 0x03, 0xd4, 0xf2, 0x3a, 0x4c, 0x0a, 0xba, 0x28, + 0x2d, 0x5c, 0xa4, 0x3f, 0xb2, 0x22, 0x84, 0xcb, 0xda, 0xc3, 0x27, 0xd1, 0xc2, 0xda, 0xb9, 0xea, + 0xa8, 0x31, 0x61, 0x43, 0xb0, 0xda, 0x69, 0x76, 0x5d, 0xa7, 0x83, 0x43, 0x30, 0x16, 0x0d, 0x01, + 0x15, 0x60, 0x3e, 0x04, 0x0a, 0x12, 0x79, 0x1b, 0xa6, 0x4b, 0xb5, 0xaa, 0x4a, 0x56, 0x88, 0x8c, + 0xd9, 0x76, 0xd7, 0xb1, 0x34, 0xd2, 0x18, 0xee, 0x20, 0x55, 0x6a, 0xfc, 0xdf, 0x8c, 0x2a, 0x65, + 0x7c, 0x73, 0x5c, 0x7e, 0xde, 0x9f, 0xae, 0xd9, 0x4d, 0x37, 0xa4, 0xe5, 0x4e, 0x68, 0x48, 0xcb, + 0x1f, 0xa7, 0x51, 0x68, 0x6a, 0xce, 0xc8, 0x09, 0xd4, 0x9c, 0xd1, 0x4f, 0x6c, 0x14, 0x1b, 0x3b, + 0xa1, 0xe2, 0x12, 0xfb, 0xd2, 0x0a, 0xc3, 0x7c, 0x69, 0xa9, 0xca, 0xce, 0xf8, 0x27, 0x57, 0x76, + 0xe0, 0xc4, 0xca, 0x4e, 0x3d, 0x0a, 0xfc, 0x99, 0x38, 0xd6, 0xef, 0xf5, 0x9c, 0x38, 0x64, 0xcc, + 0xa6, 0x27, 0x5d, 0x09, 0x43, 0x80, 0xbe, 0xaf, 0x34, 0xa8, 0xaf, 0xa5, 0x6b, 0x50, 0x83, 0x77, + 0x9b, 0xff, 0x2f, 0xeb, 0x50, 0x1e, 0x8e, 0xf2, 0xb6, 0xed, 0x75, 0xf0, 0x70, 0x77, 0x15, 0xc6, + 0x64, 0xf2, 0xa1, 0x4c, 0x64, 0xa7, 0x48, 0x66, 0x1d, 0x92, 0x58, 0xec, 0x1c, 0x2e, 0x89, 0xd5, + 0x44, 0xca, 0x0f, 0x05, 0x4c, 0xcb, 0xeb, 0x22, 0x60, 0xc6, 0xdf, 0xce, 0xcb, 0x2f, 0x99, 0x9d, + 0xac, 0xc4, 0x13, 0xb9, 0x2b, 0xca, 0xcc, 0x29, 0x1a, 0x5c, 0x6c, 0x6e, 0x62, 0x6e, 0x6c, 0x3a, + 0xc9, 0xc7, 0x4a, 0x07, 0x15, 0x3d, 0xcd, 0x93, 0x1b, 0xe2, 0x69, 0x9e, 0x37, 0xb5, 0x77, 0x6d, + 0xf2, 0xd1, 0x43, 0x0a, 0x6c, 0x75, 0x0f, 0x7e, 0xd1, 0xe6, 0x86, 0xfa, 0x00, 0xcd, 0x48, 0x94, + 0x19, 0x01, 0x29, 0x07, 0x3c, 0x3d, 0x13, 0xaa, 0xa4, 0xa3, 0x27, 0x49, 0xb4, 0x36, 0xf6, 0x27, + 0x9a, 0x68, 0x6d, 0x15, 0x40, 0x79, 0x96, 0x94, 0xdf, 0x7d, 0xbc, 0xc4, 0x86, 0xe9, 0xf8, 0x27, + 0x49, 0x15, 0x42, 0xe3, 0xb7, 0x09, 0xcc, 0xd6, 0xeb, 0x9b, 0x15, 0xc7, 0xde, 0xeb, 0xb8, 0x7e, + 0xe0, 0x34, 0xaa, 0x9d, 0x5d, 0x97, 0xe9, 0x63, 0xa1, 0x54, 0x50, 0x32, 0x6a, 0x45, 0x12, 0x21, + 0x2c, 0x66, 0xfa, 0xfe, 0xaa, 0xe7, 0xb9, 0x9e, 0xaa, 0xef, 0x53, 0x06, 0x30, 0x39, 0x9c, 0xa9, + 0x3c, 0xf5, 0x1e, 0x7f, 0x5f, 0x92, 0x5f, 0x47, 0xa1, 0xca, 0xe3, 0x73, 0x90, 0x29, 0xcb, 0x08, + 0x4d, 0x2e, 0x58, 0xa1, 0x02, 0x9f, 0xd1, 0xd2, 0xb5, 0x45, 0xc5, 0x5c, 0xe6, 0x89, 0x3d, 0x09, + 0xe3, 0xa2, 0xba, 0x08, 0x57, 0x6f, 0x7f, 0x13, 0xdf, 0xc0, 0x21, 0x9c, 0xd2, 0xe2, 0x7b, 0x86, + 0x35, 0xd1, 0xbd, 0x22, 0x54, 0x2c, 0x03, 0xc3, 0x14, 0x53, 0xec, 0x74, 0x6a, 0x22, 0xf8, 0xd4, + 0x1a, 0xc8, 0x8f, 0x66, 0xe0, 0x5c, 0x6a, 0x49, 0xf8, 0x75, 0x4f, 0x68, 0x29, 0xf3, 0x14, 0xa1, + 0xc1, 0x53, 0xde, 0xf7, 0xab, 0xda, 0x4a, 0x11, 0x05, 0x83, 0x6b, 0x22, 0xbf, 0x9a, 0x81, 0x33, + 0x1a, 0x46, 0x28, 0xf3, 0x7c, 0xdc, 0x9b, 0xfa, 0xae, 0xeb, 0x8f, 0x9e, 0xcc, 0xba, 0xbe, 0xa0, + 0xf7, 0x25, 0x12, 0xc9, 0x6a, 0x1f, 0xfa, 0xb5, 0x90, 0x3c, 0x80, 0x59, 0x2c, 0x92, 0xe6, 0x42, + 0xb6, 0x66, 0x85, 0x95, 0x71, 0x3e, 0x6a, 0x36, 0x8f, 0x59, 0xc3, 0x67, 0xcb, 0x96, 0xbf, 0x7b, + 0xb4, 0x34, 0xa5, 0xa1, 0xcb, 0x24, 0x74, 0x56, 0x64, 0x73, 0x74, 0x3a, 0xbb, 0xae, 0xba, 0x5f, + 0x26, 0xaa, 0x20, 0xff, 0x69, 0x06, 0x16, 0x18, 0x94, 0x77, 0xe3, 0xa6, 0xe7, 0xb6, 0xc3, 0x72, + 0xe9, 0x46, 0xd0, 0x67, 0xd8, 0x5a, 0x4f, 0x66, 0xd8, 0x5e, 0xc2, 0x26, 0x73, 0x99, 0x60, 0xed, + 0x7a, 0x6e, 0x3b, 0x6a, 0xbe, 0xf6, 0xec, 0x66, 0xbf, 0x46, 0x92, 0x1f, 0xca, 0xc0, 0x59, 0xcd, + 0xc6, 0xa1, 0xa6, 0xea, 0x15, 0x91, 0x81, 0xd2, 0xe7, 0x44, 0x2d, 0x5a, 0xb9, 0x22, 0xd6, 0xff, + 0x45, 0x6c, 0x41, 0xb4, 0x5b, 0x60, 0x5b, 0xac, 0x36, 0xc7, 0x52, 0x9a, 0xd0, 0xbf, 0x16, 0xe2, + 0xc0, 0x2c, 0x5e, 0xe1, 0x69, 0xee, 0x2e, 0xf3, 0xfd, 0xdd, 0x5d, 0xc2, 0xe7, 0x65, 0x30, 0x0f, + 0x68, 0x7f, 0x9f, 0x97, 0x24, 0x57, 0xf2, 0x67, 0xe1, 0x6c, 0x02, 0x18, 0x7e, 0x6d, 0xa7, 0xfa, + 0x7e, 0x6d, 0xaf, 0x3e, 0x3e, 0x5a, 0x7a, 0x39, 0xad, 0xb6, 0xb4, 0x2f, 0xad, 0x7f, 0x0d, 0xc4, + 0x06, 0x88, 0x0a, 0xc5, 0xeb, 0x9d, 0xe9, 0x0b, 0xf4, 0x55, 0xb1, 0x3e, 0x14, 0x7c, 0x26, 0xcb, + 0x95, 0x36, 0xa8, 0x5b, 0x5e, 0x84, 0x44, 0x28, 0x4c, 0x2a, 0x39, 0x50, 0x0f, 0xf1, 0x19, 0xcf, + 0xbe, 0x95, 0x7c, 0xf7, 0x68, 0x49, 0xc3, 0x66, 0x7a, 0xb1, 0x9a, 0x5c, 0x55, 0xd5, 0x8b, 0x35, + 0x44, 0xf2, 0x2b, 0x19, 0x98, 0x67, 0x80, 0x68, 0x51, 0x89, 0x4e, 0x2d, 0x0c, 0x5a, 0xf5, 0xfb, + 0x4f, 0x66, 0xd5, 0xbf, 0x80, 0x6d, 0x54, 0x57, 0x7d, 0x62, 0x48, 0x52, 0x1b, 0x87, 0xab, 0x5d, + 0xbb, 0x2d, 0xd6, 0x56, 0xfb, 0xd9, 0x21, 0x56, 0x3b, 0x9f, 0x80, 0xe3, 0x57, 0x7b, 0xdf, 0x5a, + 0xc8, 0x16, 0x4c, 0x0a, 0x95, 0x98, 0x0f, 0xd8, 0xf3, 0x5a, 0xfe, 0x44, 0xb5, 0x88, 0x9f, 0x53, + 0x44, 0x8a, 0xd8, 0x44, 0x0f, 0x35, 0x2e, 0xa4, 0x03, 0x73, 0xfc, 0xb7, 0x6e, 0xa0, 0x58, 0xea, + 0x6b, 0xa0, 0xb8, 0x24, 0x7a, 0x74, 0x5e, 0xf0, 0x8f, 0xd9, 0x29, 0xd4, 0xe4, 0x9b, 0x29, 0x8c, + 0x49, 0x17, 0x88, 0x06, 0xe6, 0x1f, 0xed, 0xf9, 0xc1, 0x66, 0x89, 0x97, 0x45, 0x9d, 0x4b, 0xf1, + 0x3a, 0xe3, 0x5f, 0x6e, 0x0a, 0x6f, 0x62, 0xc3, 0x8c, 0x80, 0xb2, 0x03, 0x30, 0x4a, 0xf8, 0x17, + 0xb4, 0x24, 0x02, 0xb1, 0x52, 0x7e, 0x37, 0x22, 0x6b, 0xc2, 0x24, 0x0f, 0x31, 0x81, 0x1e, 0xe7, + 0x47, 0x36, 0x61, 0xb6, 0xd4, 0xed, 0xb6, 0x1c, 0xda, 0xc4, 0x5e, 0xf2, 0x97, 0x18, 0x8d, 0x28, + 0x9f, 0xbf, 0xcd, 0x0b, 0x85, 0x8a, 0x1f, 0x7f, 0x86, 0x31, 0x49, 0x6b, 0x7c, 0x2b, 0x93, 0x68, + 0x34, 0x3b, 0xb9, 0xe3, 0x0f, 0x25, 0x7e, 0x18, 0x4f, 0xee, 0xbc, 0x89, 0x68, 0x41, 0x88, 0x10, + 0x98, 0xb2, 0xa4, 0xe6, 0xa6, 0xc9, 0x71, 0x65, 0x49, 0x1c, 0x2f, 0xa3, 0x03, 0xe5, 0x92, 0x74, + 0x43, 0xcc, 0x45, 0x4a, 0x17, 0xba, 0x21, 0x0a, 0xe7, 0x43, 0xe3, 0x87, 0xb2, 0xfa, 0xb2, 0x23, + 0x97, 0x14, 0xbd, 0x5d, 0xc9, 0x8e, 0x23, 0xf5, 0x76, 0x45, 0x5b, 0xff, 0x85, 0x0c, 0xcc, 0x6d, + 0x7a, 0x7b, 0x76, 0xc7, 0xf9, 0x06, 0xcf, 0xb2, 0xe7, 0xe2, 0xbc, 0x0c, 0x7e, 0x1a, 0xe5, 0x49, + 0x3d, 0xf1, 0xe0, 0x2a, 0x15, 0xb3, 0x95, 0x82, 0x4b, 0xc6, 0x4c, 0x6b, 0x0f, 0x3a, 0x76, 0x63, + 0xc3, 0x94, 0x97, 0x36, 0x38, 0x3a, 0x87, 0x1b, 0x3f, 0x9e, 0x85, 0x09, 0xe5, 0x13, 0x20, 0x9f, + 0x85, 0x49, 0x95, 0x8f, 0x6a, 0xf5, 0x51, 0xab, 0x35, 0x35, 0x2c, 0x34, 0xfb, 0x50, 0xbb, 0xad, + 0x99, 0x7d, 0xd8, 0x42, 0x47, 0xe8, 0x09, 0x8f, 0x36, 0xef, 0xa5, 0x1c, 0x6d, 0x4e, 0xf4, 0x64, + 0xe7, 0xdb, 0xc9, 0x03, 0xce, 0xf0, 0x2f, 0x6c, 0x1a, 0x3f, 0x95, 0x81, 0x62, 0xfc, 0x23, 0xfd, + 0x54, 0x46, 0xe5, 0x04, 0x26, 0xfe, 0x1f, 0xcb, 0x86, 0x09, 0x90, 0x65, 0xb8, 0xca, 0xd3, 0xea, + 0x7c, 0xf2, 0x8e, 0x66, 0x7d, 0x7f, 0x36, 0xdc, 0x57, 0xd4, 0xce, 0x0d, 0x48, 0xe3, 0x93, 0xff, + 0xce, 0xcf, 0x2d, 0x3d, 0x63, 0x7c, 0x00, 0xf3, 0xf1, 0xe1, 0x40, 0x0b, 0x7c, 0x09, 0x66, 0x74, + 0x78, 0x3c, 0x7d, 0x7a, 0x9c, 0xca, 0x8c, 0xe3, 0x1b, 0xbf, 0x93, 0x8d, 0xf3, 0x16, 0x8e, 0x28, + 0x4c, 0xe8, 0x74, 0xec, 0x9d, 0x56, 0x98, 0x3e, 0x99, 0x0b, 0x1d, 0x0e, 0x32, 0x65, 0xd9, 0x49, + 0xde, 0x13, 0x08, 0x83, 0x2e, 0x72, 0xe9, 0x41, 0x17, 0xe4, 0x46, 0xcc, 0x05, 0x4b, 0xc9, 0x10, + 0xf0, 0x90, 0xee, 0x58, 0x91, 0x1b, 0x56, 0xcc, 0xf3, 0xaa, 0x0c, 0xf3, 0x5a, 0x1a, 0x45, 0x49, + 0x3f, 0x12, 0x19, 0x5c, 0x03, 0x2c, 0xe0, 0xc4, 0xa9, 0xc8, 0x64, 0x0d, 0xc6, 0x58, 0x33, 0xef, + 0xda, 0x5d, 0x61, 0x58, 0x27, 0x61, 0x08, 0x56, 0x2b, 0x3c, 0xf0, 0x29, 0x51, 0x58, 0x2d, 0xca, + 0xb6, 0x7c, 0xed, 0xc5, 0x5b, 0x8e, 0x68, 0xfc, 0x51, 0x86, 0x7d, 0xff, 0x8d, 0x83, 0xef, 0xb3, + 0x47, 0x09, 0x58, 0x97, 0x06, 0xf8, 0x49, 0xfd, 0x7e, 0x96, 0x67, 0xc0, 0x16, 0xcb, 0xe7, 0x4d, + 0x18, 0xdd, 0xb2, 0xbd, 0x3d, 0x1a, 0x88, 0xdc, 0xd0, 0x2a, 0x17, 0x5e, 0x10, 0xe5, 0x2f, 0x08, + 0xf0, 0xb7, 0x29, 0x08, 0x54, 0x5b, 0x58, 0x76, 0x28, 0x5b, 0x98, 0x62, 0x9e, 0xcd, 0x3d, 0x31, + 0xf3, 0xec, 0x0f, 0x84, 0xc9, 0xae, 0x4b, 0xc1, 0x10, 0x59, 0xfa, 0xce, 0xc7, 0x93, 0xc5, 0x27, + 0xf2, 0x29, 0x46, 0xec, 0xc8, 0x0d, 0x35, 0xfd, 0xbc, 0x12, 0xc7, 0x70, 0x4c, 0xa2, 0x79, 0xe3, + 0xf7, 0x73, 0x7c, 0x8c, 0xc5, 0x40, 0x5d, 0xd4, 0x62, 0x9c, 0xf0, 0x3b, 0x61, 0x82, 0x5e, 0x0d, + 0x37, 0x45, 0x17, 0x8a, 0x8b, 0x90, 0x67, 0x6b, 0x53, 0x8c, 0x26, 0xe2, 0xb1, 0xf5, 0xab, 0xe2, + 0xb1, 0x72, 0xf6, 0x2d, 0xe3, 0x9e, 0xa4, 0x3e, 0xf8, 0x81, 0xdb, 0x96, 0xfa, 0x2d, 0x23, 0x06, + 0xb9, 0x04, 0xf9, 0x0d, 0xb7, 0x29, 0xb3, 0x41, 0xce, 0x63, 0xa4, 0xab, 0xf6, 0x84, 0xfb, 0x42, + 0xc6, 0x44, 0x0c, 0xd6, 0xd7, 0x30, 0x7f, 0xb4, 0xda, 0xd7, 0xf6, 0xae, 0x2d, 0x12, 0xd8, 0xab, + 0x7d, 0x8d, 0x52, 0x4d, 0xaf, 0xc2, 0xb4, 0xfe, 0x40, 0x9f, 0xf0, 0x22, 0x43, 0x33, 0x6b, 0xec, + 0x9d, 0x3f, 0xd5, 0x3a, 0xae, 0x13, 0x91, 0x15, 0x98, 0xd2, 0xb2, 0x50, 0x89, 0x1b, 0x2e, 0x34, + 0x6f, 0xea, 0x39, 0xac, 0x54, 0xf3, 0xa6, 0x46, 0xc2, 0xf6, 0x73, 0xd1, 0x7e, 0xe5, 0x9e, 0x2b, + 0xd1, 0x76, 0x81, 0x43, 0xae, 0x43, 0x81, 0x87, 0x94, 0x56, 0x2b, 0xea, 0x6d, 0x85, 0x8f, 0xb0, + 0x58, 0x48, 0xb6, 0x44, 0x54, 0x42, 0x08, 0x3f, 0x03, 0x45, 0x21, 0x92, 0xa2, 0xc7, 0xf5, 0x9e, + 0x83, 0x7c, 0xb9, 0x5a, 0x31, 0x55, 0x31, 0xd2, 0x70, 0x9a, 0x9e, 0x89, 0x50, 0xe3, 0xdb, 0x19, + 0x38, 0xbb, 0x41, 0x83, 0x87, 0xae, 0x77, 0x60, 0x52, 0x3f, 0xf0, 0x1c, 0xfe, 0x5e, 0x0c, 0x7e, + 0x88, 0x9f, 0x25, 0x6f, 0xc3, 0x08, 0xba, 0x33, 0xc5, 0x76, 0x86, 0x78, 0x1d, 0x2b, 0x53, 0x62, + 0x01, 0x8f, 0xa0, 0x6f, 0x94, 0xc9, 0x89, 0xc8, 0x9b, 0x90, 0xaf, 0xd0, 0xce, 0x61, 0xec, 0xc5, + 0x8c, 0x04, 0x71, 0x28, 0x10, 0x9a, 0xb4, 0x73, 0x68, 0x22, 0x89, 0xf1, 0x53, 0x59, 0x38, 0x95, + 0xd2, 0xac, 0xfb, 0x9f, 0x7d, 0x4a, 0xa5, 0xe2, 0x8a, 0x26, 0x15, 0xe5, 0x25, 0x65, 0xdf, 0x81, + 0x4f, 0x15, 0x92, 0x7f, 0x23, 0x03, 0x67, 0xf4, 0x05, 0x2a, 0xfc, 0x17, 0xef, 0x5f, 0x27, 0x6f, + 0xc1, 0xe8, 0x1a, 0xb5, 0x9b, 0x54, 0x66, 0xd3, 0x3f, 0x15, 0x26, 0x7f, 0xe1, 0xf1, 0x72, 0xbc, + 0x90, 0xb3, 0x8d, 0xa2, 0x2b, 0x38, 0x94, 0x54, 0x44, 0xe3, 0xb8, 0x3e, 0x6e, 0xc8, 0xd8, 0xd5, + 0xb4, 0xaa, 0x06, 0x5c, 0xf5, 0x7f, 0x37, 0x03, 0xcf, 0x0e, 0xa0, 0x61, 0x13, 0xc7, 0xa6, 0x5e, + 0x9d, 0x38, 0xdc, 0x51, 0x11, 0x4a, 0xde, 0x85, 0x99, 0x2d, 0xa1, 0xcf, 0xcb, 0xe9, 0xc8, 0x46, + 0xdf, 0x8b, 0x54, 0xf5, 0x2d, 0x39, 0x2f, 0x71, 0x64, 0x2d, 0xa8, 0x3a, 0x37, 0x30, 0xa8, 0x5a, + 0x8d, 0x51, 0xce, 0x0f, 0x1b, 0xa3, 0xfc, 0x41, 0xfc, 0x59, 0x6b, 0x91, 0x2a, 0x2e, 0x8a, 0xd0, + 0xce, 0xf4, 0x8f, 0xd0, 0x1e, 0x98, 0x90, 0xca, 0xf8, 0xf1, 0x0c, 0x14, 0x75, 0xde, 0x9f, 0x74, + 0x3e, 0xdf, 0xd1, 0xe6, 0xf3, 0xd9, 0xf4, 0xf9, 0xec, 0x3f, 0x91, 0xff, 0x6b, 0x26, 0xde, 0xd9, + 0xa1, 0x66, 0xd0, 0x80, 0xd1, 0x8a, 0xdb, 0xb6, 0x9d, 0x8e, 0xfa, 0x56, 0x63, 0x13, 0x21, 0xa6, + 0x28, 0x19, 0x2e, 0xa0, 0xfd, 0x3c, 0x8c, 0x6c, 0xb8, 0x9d, 0x52, 0x45, 0xb8, 0xf7, 0x21, 0x9f, + 0x8e, 0xdb, 0xb1, 0xec, 0xa6, 0xc9, 0x0b, 0xc8, 0x3a, 0x40, 0xbd, 0xe1, 0x51, 0xda, 0xa9, 0x3b, + 0xdf, 0xa0, 0x31, 0x4d, 0x83, 0x8d, 0x50, 0xab, 0x87, 0x82, 0x05, 0xef, 0x78, 0x7c, 0x44, 0xb4, + 0x7c, 0xe7, 0x1b, 0xaa, 0xbc, 0x55, 0xe8, 0x0d, 0x0a, 0x10, 0x11, 0xe1, 0xc3, 0x55, 0x4e, 0x53, + 0x3c, 0x46, 0x3a, 0x25, 0x1e, 0xae, 0x62, 0x00, 0xed, 0xe1, 0x2a, 0x06, 0x60, 0xa2, 0x7d, 0x8d, + 0x3a, 0x7b, 0xfb, 0xdc, 0x65, 0x64, 0x8a, 0x2f, 0xd5, 0x7d, 0x84, 0xa8, 0xa2, 0x9d, 0xe3, 0x18, + 0xff, 0x7a, 0x04, 0xce, 0x9a, 0x74, 0xcf, 0x61, 0x6a, 0xf2, 0x3d, 0xdf, 0xe9, 0xec, 0x69, 0x21, + 0xc7, 0x46, 0x6c, 0x21, 0x89, 0xbc, 0xaf, 0x0c, 0x12, 0x0e, 0xcc, 0x65, 0x28, 0xb0, 0x5d, 0x51, + 0x59, 0x4b, 0x78, 0x87, 0x82, 0xef, 0x22, 0xf3, 0x45, 0x2e, 0x8b, 0xc9, 0x2b, 0x62, 0xd7, 0x56, + 0x32, 0x73, 0xb3, 0x5d, 0xfb, 0x7b, 0x47, 0x4b, 0x50, 0x3f, 0xf4, 0x03, 0x8a, 0x27, 0x36, 0xb1, + 0x73, 0x87, 0xaa, 0x75, 0xbe, 0x8f, 0x6a, 0x7d, 0x17, 0xe6, 0x4b, 0x4d, 0x2e, 0xac, 0xed, 0x56, + 0xcd, 0x73, 0x3a, 0x0d, 0xa7, 0x6b, 0xb7, 0xe4, 0x71, 0x11, 0x47, 0xd9, 0x0e, 0xcb, 0xad, 0x6e, + 0x88, 0x60, 0xa6, 0x92, 0xb1, 0x6e, 0x54, 0x36, 0xea, 0xfc, 0xcd, 0x7f, 0x7e, 0x3d, 0x86, 0xdd, + 0x68, 0x76, 0x7c, 0xfe, 0xe8, 0xbf, 0x19, 0x16, 0xa3, 0x52, 0x8f, 0x3e, 0x08, 0x5b, 0xeb, 0xf5, + 0x28, 0x78, 0x87, 0x27, 0x0e, 0xe5, 0x7e, 0x0a, 0x41, 0xcb, 0x47, 0x5f, 0x05, 0x0d, 0x2f, 0xa2, + 0xab, 0xd7, 0xd7, 0x18, 0x5d, 0x21, 0x41, 0xe7, 0xfb, 0xfb, 0x2a, 0x1d, 0xc7, 0x23, 0x57, 0xd9, + 0x52, 0x68, 0xbb, 0x01, 0xc5, 0x75, 0x3e, 0x1e, 0x1d, 0x01, 0x3c, 0x84, 0xf2, 0x23, 0x80, 0x82, + 0x42, 0xde, 0x86, 0xb9, 0xd5, 0xf2, 0xb2, 0x34, 0x6a, 0x56, 0xdc, 0x46, 0x0f, 0x6f, 0x95, 0x01, + 0xeb, 0xc3, 0x39, 0xa4, 0x8d, 0x65, 0xb6, 0xb8, 0xd3, 0xd0, 0xc8, 0x45, 0x18, 0xab, 0x56, 0xf8, + 0xd8, 0x4f, 0xa8, 0xd9, 0xf1, 0x85, 0xb7, 0x86, 0x2c, 0x24, 0x9b, 0x91, 0x8e, 0x3a, 0x79, 0xac, + 0x32, 0x79, 0x76, 0x08, 0xfd, 0xf4, 0x4d, 0x98, 0x5a, 0x71, 0x83, 0x6a, 0xc7, 0x0f, 0xec, 0x4e, + 0x83, 0x56, 0x2b, 0x6a, 0x4a, 0xc1, 0x1d, 0x37, 0xb0, 0x1c, 0x51, 0xc2, 0x5a, 0xae, 0x63, 0x92, + 0xcf, 0x23, 0xe9, 0x2d, 0xda, 0xa1, 0x5e, 0x94, 0x4a, 0x70, 0x84, 0x8f, 0x2d, 0x23, 0xdd, 0x0b, + 0x4b, 0x4c, 0x1d, 0x51, 0x64, 0xee, 0xe7, 0x2f, 0xc4, 0x94, 0xdd, 0x26, 0xf5, 0xef, 0x5f, 0xfb, + 0x3e, 0xcb, 0xdc, 0xaf, 0xf4, 0x0d, 0x45, 0xe6, 0xb5, 0x54, 0xf9, 0xfa, 0xef, 0x62, 0xe6, 0xfe, + 0x04, 0x2e, 0xf9, 0x3c, 0x8c, 0xe0, 0x4f, 0xa1, 0x6c, 0xcd, 0xa5, 0xb0, 0x8d, 0x14, 0xad, 0x06, + 0x7f, 0xe0, 0x15, 0x09, 0x48, 0x15, 0xc6, 0x84, 0x9e, 0x7f, 0x92, 0xfc, 0xd3, 0xe2, 0xc0, 0xc0, + 0x57, 0x86, 0xa0, 0x37, 0x9a, 0x30, 0xa9, 0x56, 0xc8, 0xbe, 0x88, 0x35, 0xdb, 0xdf, 0xa7, 0x4d, + 0xf6, 0x4b, 0x3c, 0x1d, 0x81, 0x5f, 0xc4, 0x3e, 0x42, 0x2d, 0xd6, 0x0e, 0x53, 0x41, 0x61, 0x22, + 0xbe, 0xea, 0xdf, 0xf3, 0x45, 0x53, 0xc4, 0xc9, 0xdf, 0x41, 0x2b, 0x52, 0xd3, 0x14, 0x45, 0xc6, + 0x0f, 0xc0, 0xfc, 0x46, 0xaf, 0xd5, 0xb2, 0x77, 0x5a, 0x54, 0xa6, 0x16, 0x0e, 0xec, 0x80, 0x92, + 0x15, 0x18, 0xa9, 0x2b, 0x4f, 0xc6, 0xcd, 0x85, 0xb9, 0x9b, 0x23, 0x1c, 0x74, 0x8c, 0xcb, 0x60, + 0x94, 0x74, 0xec, 0xb1, 0x38, 0x4e, 0x6a, 0xfc, 0x56, 0xf4, 0xd4, 0xf0, 0x96, 0x67, 0x37, 0x0e, + 0xc2, 0x67, 0x03, 0x87, 0x7d, 0x35, 0xf9, 0xb6, 0x6c, 0x84, 0xbe, 0x7f, 0xa6, 0x35, 0xf8, 0xb8, + 0xc6, 0x90, 0xb7, 0x61, 0x42, 0xec, 0xa1, 0x4a, 0x6e, 0x1f, 0x4c, 0xa0, 0x20, 0x5f, 0x19, 0x8f, + 0xf9, 0x38, 0xa8, 0xe8, 0xa8, 0x1a, 0xe8, 0x5d, 0xb9, 0x7f, 0xed, 0xd3, 0x50, 0x0d, 0xf4, 0x3a, + 0x06, 0x2c, 0xdd, 0x7f, 0x3c, 0x11, 0x1f, 0x5b, 0xb1, 0x76, 0x6f, 0xa8, 0xd9, 0x3c, 0x32, 0xd1, + 0x41, 0x2d, 0xca, 0xe6, 0xa1, 0x1e, 0xd4, 0x42, 0xd4, 0x70, 0x4e, 0xb2, 0xc7, 0xcc, 0xc9, 0xbb, + 0x72, 0x4e, 0x72, 0xfd, 0x17, 0xc6, 0xdc, 0x80, 0x79, 0xa8, 0x47, 0x5f, 0x48, 0x7e, 0xa8, 0x53, + 0xfe, 0x33, 0x98, 0xb6, 0x94, 0x93, 0xc4, 0xa5, 0xa8, 0xe0, 0xa4, 0x9a, 0x0e, 0x46, 0x86, 0x67, + 0x7a, 0x8c, 0x68, 0xfe, 0x02, 0x4c, 0x96, 0x82, 0xc0, 0x6e, 0xec, 0xd3, 0x66, 0x85, 0x89, 0x27, + 0x25, 0xf1, 0x80, 0x2d, 0xe0, 0xea, 0x1d, 0x8e, 0x8a, 0xcb, 0x13, 0x69, 0xd9, 0xbe, 0x70, 0xb1, + 0x0b, 0x13, 0x69, 0x31, 0x88, 0x9e, 0x48, 0x8b, 0x41, 0xc8, 0x55, 0x18, 0xab, 0x76, 0x1e, 0x38, + 0x6c, 0x4c, 0x0a, 0xca, 0xe3, 0xe8, 0x1c, 0xa4, 0x0a, 0x57, 0x81, 0x45, 0xde, 0x54, 0x74, 0xec, + 0xf1, 0xe8, 0x3c, 0xcd, 0x2d, 0x30, 0x61, 0xcc, 0xb2, 0xaa, 0x3f, 0x87, 0x4a, 0xf7, 0x0d, 0x18, + 0x93, 0x86, 0x35, 0x88, 0xce, 0xd0, 0x82, 0x32, 0x19, 0x1c, 0x29, 0x91, 0xf1, 0xa5, 0x39, 0xe5, + 0x09, 0x8c, 0x09, 0xe5, 0xa5, 0x39, 0xe5, 0x09, 0x0c, 0xed, 0xa5, 0x39, 0xe5, 0x31, 0x8c, 0xd0, + 0x26, 0x31, 0x79, 0xac, 0x4d, 0xe2, 0x3e, 0x4c, 0xd6, 0x6c, 0x2f, 0x70, 0x98, 0x8e, 0xd2, 0x09, + 0xfc, 0x85, 0x29, 0xcd, 0x8c, 0xa7, 0x14, 0xad, 0x3c, 0x2f, 0x1f, 0x47, 0xeb, 0x2a, 0xf8, 0xfa, + 0x2b, 0x5e, 0x11, 0x3c, 0xdd, 0xc1, 0x6e, 0xfa, 0x93, 0x38, 0xd8, 0xe1, 0xa0, 0xa2, 0xe9, 0x66, + 0x26, 0x32, 0x10, 0xa0, 0x0e, 0x1d, 0xb3, 0xdf, 0x84, 0x88, 0xe4, 0xcb, 0x30, 0xc9, 0xfe, 0xc6, + 0xf7, 0xc8, 0x1d, 0xea, 0x2f, 0x14, 0xb1, 0x73, 0xcf, 0xa7, 0x7e, 0xfd, 0xfc, 0xd1, 0xf2, 0x3a, + 0x0d, 0xf8, 0x07, 0x8c, 0x8c, 0xe3, 0x36, 0x59, 0x8d, 0x1b, 0x79, 0x0f, 0x26, 0xe5, 0x9b, 0xf9, + 0x38, 0x49, 0xb3, 0x91, 0x8b, 0x64, 0x53, 0xc0, 0x13, 0xb9, 0xec, 0x54, 0x02, 0xb6, 0xcd, 0x97, + 0xba, 0x5c, 0x40, 0x12, 0x65, 0xb5, 0x77, 0x13, 0xc2, 0x51, 0xa2, 0x91, 0xf7, 0x61, 0xb2, 0xd4, + 0xed, 0x46, 0x12, 0x67, 0x4e, 0xb1, 0xcb, 0x74, 0xbb, 0x56, 0xaa, 0xd4, 0xd1, 0x28, 0xe2, 0x82, + 0x79, 0xfe, 0x44, 0x82, 0x99, 0xbc, 0x1e, 0x6a, 0xeb, 0xa7, 0x22, 0x23, 0xa3, 0x38, 0xc7, 0x68, + 0xaa, 0x3f, 0x57, 0xdc, 0xcb, 0x30, 0xc5, 0xad, 0x6e, 0x52, 0x9b, 0x39, 0x9d, 0xf8, 0x7a, 0x52, + 0x94, 0x1a, 0x9d, 0x86, 0xac, 0xc2, 0x34, 0x0f, 0x29, 0x6b, 0x89, 0x24, 0x83, 0x0b, 0x67, 0xa2, + 0x57, 0x6f, 0x79, 0x24, 0x5a, 0x0b, 0x73, 0x4f, 0xdb, 0x1a, 0x97, 0x18, 0x91, 0xf1, 0x07, 0x19, + 0x38, 0xd3, 0x67, 0xc6, 0xc3, 0x14, 0x74, 0x99, 0x63, 0x1e, 0xfe, 0xbf, 0x1a, 0x69, 0x59, 0x8a, + 0x91, 0x55, 0x68, 0x59, 0xea, 0x7c, 0x49, 0x7d, 0xcb, 0x05, 0x22, 0x9e, 0xfd, 0x57, 0x9e, 0xc7, + 0x17, 0x79, 0x50, 0x63, 0x9b, 0x90, 0xc0, 0xe3, 0x8d, 0x5a, 0x31, 0x1e, 0x1f, 0x2d, 0x3d, 0xef, + 0x71, 0x50, 0x38, 0xad, 0x1f, 0xb9, 0xda, 0x17, 0x9c, 0xc2, 0xda, 0x38, 0xca, 0xc0, 0x84, 0xf2, + 0x1d, 0x92, 0xf3, 0x4a, 0x80, 0x5a, 0x91, 0xe7, 0xb5, 0x57, 0x38, 0x64, 0xf9, 0x4e, 0x84, 0x1f, + 0x55, 0xf6, 0x78, 0x7b, 0xe8, 0x5d, 0xa6, 0x0a, 0x29, 0x69, 0xfa, 0xda, 0x9a, 0xf1, 0xd2, 0xc4, + 0x72, 0x7c, 0xd3, 0xd1, 0xf6, 0x83, 0x52, 0x23, 0x70, 0x1e, 0xd0, 0x21, 0x36, 0x9d, 0xe8, 0x4d, + 0x47, 0xdb, 0x0f, 0x2c, 0x1b, 0xc9, 0x12, 0x6f, 0x3a, 0x86, 0x0c, 0x8d, 0x1f, 0xce, 0x00, 0xdc, + 0xab, 0x96, 0x31, 0xcf, 0xe6, 0x27, 0x55, 0x0a, 0xd2, 0x73, 0x97, 0x49, 0xee, 0x03, 0xd4, 0x81, + 0x1a, 0x4c, 0xeb, 0x58, 0xe4, 0x5d, 0x98, 0xa9, 0x37, 0x3c, 0xb7, 0xd5, 0xda, 0xb1, 0x1b, 0x07, + 0xeb, 0x4e, 0x87, 0xf2, 0xa4, 0x51, 0x23, 0x7c, 0x2b, 0xf2, 0xc3, 0x22, 0xab, 0xc5, 0xca, 0xcc, + 0x38, 0xb2, 0xf1, 0xc7, 0x19, 0x98, 0xc0, 0xc3, 0x46, 0xab, 0x85, 0xca, 0xce, 0xf7, 0xd3, 0xd3, + 0x26, 0x61, 0xbf, 0x06, 0x8c, 0xe8, 0x1b, 0x30, 0x13, 0x43, 0x23, 0x06, 0x8c, 0xd6, 0x31, 0x1a, + 0x58, 0xb5, 0x0c, 0xf0, 0xf8, 0x60, 0x53, 0x94, 0x18, 0xab, 0x0a, 0xd9, 0xfd, 0x6b, 0x78, 0xbd, + 0xb7, 0x0c, 0xe0, 0x48, 0x90, 0x3c, 0x52, 0x90, 0x78, 0x4b, 0xee, 0x5f, 0x33, 0x15, 0x2c, 0x63, + 0x03, 0x46, 0xeb, 0xae, 0x17, 0xac, 0x1c, 0x72, 0x2d, 0xbe, 0x42, 0xfd, 0x86, 0x7a, 0x7f, 0xe7, + 0xa0, 0xcd, 0xbc, 0x61, 0x8a, 0x22, 0xb2, 0x04, 0x23, 0x37, 0x1d, 0xda, 0x6a, 0xaa, 0x8e, 0x9a, + 0xbb, 0x0c, 0x60, 0x72, 0x38, 0x3b, 0xe9, 0x9c, 0x8e, 0xf2, 0x40, 0x47, 0x1e, 0xa1, 0x9f, 0x74, + 0xc1, 0x96, 0xb5, 0xf1, 0x7d, 0x41, 0x7f, 0x39, 0x54, 0xab, 0x69, 0xc0, 0x50, 0xff, 0x47, 0x19, + 0x58, 0xec, 0x4f, 0xa2, 0x3a, 0x99, 0x66, 0x06, 0x38, 0x99, 0xbe, 0x14, 0xbf, 0x6f, 0x42, 0x34, + 0x71, 0xdf, 0x14, 0xdd, 0x32, 0x55, 0xd0, 0xc7, 0xb7, 0x11, 0x3e, 0xec, 0x7c, 0x7e, 0x40, 0x9b, + 0x11, 0x91, 0x4f, 0x73, 0x80, 0x34, 0xa6, 0xa0, 0x35, 0x7e, 0x2d, 0x0f, 0x67, 0xfb, 0x52, 0x90, + 0x35, 0x25, 0xa5, 0xfc, 0x74, 0x98, 0xcc, 0xba, 0x2f, 0xfe, 0x15, 0xfc, 0x17, 0xdd, 0xb8, 0xe2, + 0xa1, 0x27, 0x9b, 0x61, 0x2a, 0xf1, 0x2c, 0xf2, 0x7a, 0xf5, 0x58, 0x5e, 0x1c, 0x1d, 0x99, 0x41, + 0x32, 0xab, 0x38, 0x06, 0x29, 0xd1, 0xc0, 0x76, 0x5a, 0xbe, 0xfa, 0xd9, 0x35, 0x39, 0xc8, 0x94, + 0x65, 0x91, 0xe7, 0x6f, 0x3e, 0xdd, 0xf3, 0xd7, 0xf8, 0xd7, 0x19, 0x18, 0x0f, 0x9b, 0x4d, 0x16, + 0xe1, 0xf4, 0x96, 0x59, 0x2a, 0xaf, 0x5a, 0x5b, 0x1f, 0xd4, 0x56, 0xad, 0x7b, 0x1b, 0xf5, 0xda, + 0x6a, 0xb9, 0x7a, 0xb3, 0xba, 0x5a, 0x29, 0x3e, 0x43, 0x66, 0x61, 0xea, 0xde, 0xc6, 0x9d, 0x8d, + 0xcd, 0xed, 0x0d, 0x6b, 0xd5, 0x34, 0x37, 0xcd, 0x62, 0x86, 0x4c, 0xc1, 0xb8, 0xb9, 0x52, 0x2a, + 0x5b, 0x1b, 0x9b, 0x95, 0xd5, 0x62, 0x96, 0x14, 0x61, 0xb2, 0xbc, 0xb9, 0xb1, 0xb1, 0x5a, 0xde, + 0xaa, 0xde, 0xaf, 0x6e, 0x7d, 0x50, 0xcc, 0x11, 0x02, 0xd3, 0x88, 0x50, 0x33, 0xab, 0x1b, 0xe5, + 0x6a, 0xad, 0xb4, 0x5e, 0xcc, 0x33, 0x18, 0xc3, 0x57, 0x60, 0x23, 0x21, 0xa3, 0x3b, 0xf7, 0x56, + 0x56, 0x8b, 0xa3, 0x0c, 0x85, 0xfd, 0xa5, 0xa0, 0x8c, 0xb1, 0xea, 0x11, 0xa5, 0x52, 0xda, 0x2a, + 0xad, 0x94, 0xea, 0xab, 0xc5, 0x02, 0x39, 0x03, 0x73, 0x1a, 0xc8, 0x5a, 0xdf, 0xbc, 0x55, 0xdd, + 0x28, 0x8e, 0x93, 0x79, 0x28, 0x86, 0xb0, 0xca, 0x8a, 0x75, 0xaf, 0xbe, 0x6a, 0x16, 0x21, 0x0e, + 0xdd, 0x28, 0xdd, 0x5d, 0x2d, 0x4e, 0x18, 0xef, 0xf0, 0xa0, 0x20, 0x3e, 0xd4, 0xe4, 0x34, 0x90, + 0xfa, 0x56, 0x69, 0xeb, 0x5e, 0x3d, 0xd6, 0xf9, 0x09, 0x18, 0xab, 0xdf, 0x2b, 0x97, 0x57, 0xeb, + 0xf5, 0x62, 0x86, 0x00, 0x8c, 0xde, 0x2c, 0x55, 0xd7, 0x57, 0x2b, 0xc5, 0xac, 0xf1, 0x93, 0x19, + 0x98, 0x95, 0xaa, 0x97, 0xbc, 0x3c, 0xf8, 0x84, 0xdf, 0xe2, 0xbb, 0xda, 0x89, 0x52, 0xc6, 0x6c, + 0xc4, 0x2a, 0x19, 0xf0, 0x19, 0x7a, 0x70, 0x2a, 0x15, 0x99, 0x7c, 0x00, 0x45, 0xd9, 0x80, 0xbb, + 0x76, 0xd0, 0xd8, 0x8f, 0xc4, 0xd8, 0xf3, 0xb1, 0x4a, 0x62, 0x68, 0xdc, 0x9c, 0x18, 0xbd, 0x9d, + 0x96, 0x60, 0x63, 0x7c, 0x27, 0x03, 0x67, 0xfa, 0x10, 0x93, 0x32, 0x8c, 0x86, 0x19, 0xb6, 0x07, + 0xb8, 0x27, 0xcd, 0x7f, 0xf7, 0x68, 0x49, 0x20, 0xe2, 0x13, 0x52, 0xf8, 0x97, 0x39, 0x1a, 0xa6, + 0xcc, 0xc6, 0xbc, 0xd5, 0x7c, 0x4c, 0xce, 0xc6, 0x86, 0x53, 0xd4, 0x54, 0xda, 0xae, 0xaf, 0x4c, + 0x88, 0x01, 0xc9, 0xd9, 0x0f, 0x7d, 0x4c, 0x5c, 0x6d, 0x7c, 0x3b, 0xc3, 0x54, 0xa5, 0x38, 0x22, + 0xd3, 0x20, 0x4b, 0xbe, 0xdf, 0x6b, 0x53, 0xd3, 0x6d, 0xd1, 0x92, 0xb9, 0x21, 0xf6, 0x02, 0xd4, + 0xfd, 0x6c, 0x2c, 0x40, 0x25, 0xdd, 0xb2, 0xbd, 0x8e, 0x76, 0x15, 0xa9, 0xd2, 0x90, 0x37, 0x01, + 0xc2, 0xa7, 0xbc, 0x65, 0x30, 0x3e, 0x4f, 0x46, 0x21, 0xa0, 0xba, 0xf6, 0xaa, 0x20, 0x1b, 0x7f, + 0x31, 0x03, 0x93, 0xe2, 0x08, 0x52, 0x6a, 0x51, 0x2f, 0xf8, 0x64, 0x6b, 0xe6, 0x4d, 0x6d, 0xcd, + 0x84, 0xde, 0xf8, 0x0a, 0x7f, 0x56, 0x9c, 0xba, 0x5c, 0xfe, 0x8b, 0x0c, 0x14, 0xe3, 0x88, 0xe4, + 0x5d, 0x28, 0xd4, 0xe9, 0x03, 0xea, 0x39, 0xc1, 0xa1, 0x90, 0x7e, 0xf2, 0x2d, 0x12, 0x8e, 0x23, + 0xca, 0xb8, 0x79, 0xd5, 0x17, 0xbf, 0xcc, 0x90, 0x66, 0x58, 0x21, 0xae, 0x18, 0x11, 0x72, 0x4f, + 0xca, 0x88, 0x60, 0xfc, 0x4f, 0x59, 0x38, 0x73, 0x8b, 0x06, 0x6a, 0x9f, 0xc2, 0xbb, 0xe3, 0xcf, + 0x0c, 0xd7, 0x2f, 0xa5, 0x27, 0x0b, 0x30, 0x86, 0x45, 0x72, 0x7e, 0x4d, 0xf9, 0x93, 0xac, 0x84, + 0xeb, 0x3a, 0xa7, 0x3d, 0x76, 0xd0, 0xa7, 0xee, 0x2b, 0x4a, 0xfa, 0xf3, 0x70, 0x59, 0x5f, 0x84, + 0x69, 0xcc, 0xef, 0xd9, 0x63, 0x9f, 0x03, 0x6d, 0x0a, 0x63, 0x4a, 0xc1, 0x8c, 0x41, 0xc9, 0x2b, + 0x50, 0x64, 0x90, 0x52, 0xe3, 0xa0, 0xe3, 0x3e, 0x6c, 0xd1, 0xe6, 0x1e, 0xe5, 0x6f, 0x2f, 0x17, + 0xcc, 0x04, 0x5c, 0xf2, 0xbc, 0xd7, 0xe1, 0x07, 0x21, 0xda, 0x44, 0x8b, 0x87, 0xe0, 0x19, 0x41, + 0x17, 0xdf, 0x84, 0x89, 0x8f, 0xf9, 0x94, 0x81, 0xf1, 0x3f, 0x66, 0x60, 0x1e, 0x3b, 0xa7, 0x54, + 0x8c, 0xf6, 0xf7, 0xcf, 0x44, 0xa3, 0xa5, 0x64, 0xf7, 0xb6, 0x19, 0x48, 0xff, 0x14, 0xc2, 0x51, + 0x8c, 0x2c, 0x2c, 0xd9, 0x21, 0x2c, 0x2c, 0xf5, 0x93, 0x3c, 0xd5, 0x38, 0xa4, 0x81, 0x88, 0x3f, + 0xb0, 0x1d, 0x4d, 0xb9, 0xf1, 0xe7, 0xb3, 0x30, 0x66, 0x52, 0x7c, 0xc3, 0x8e, 0x5c, 0x84, 0xb1, + 0x0d, 0x37, 0xa0, 0xfe, 0x5d, 0xed, 0xc1, 0xc2, 0x0e, 0x03, 0x59, 0xed, 0xa6, 0x29, 0x0b, 0xd9, + 0x82, 0xaf, 0x79, 0x6e, 0xb3, 0xd7, 0x08, 0xd4, 0x05, 0xdf, 0xe5, 0x20, 0x53, 0x96, 0x91, 0xd7, + 0x60, 0x5c, 0x70, 0x0e, 0x6f, 0xec, 0xd0, 0xd3, 0xd4, 0xa3, 0xe1, 0x1b, 0x88, 0x11, 0x02, 0x2a, + 0xaa, 0x5c, 0x6b, 0xc8, 0x2b, 0x8a, 0x6a, 0x42, 0x11, 0x90, 0xfa, 0xf7, 0xc8, 0x00, 0xfd, 0xfb, + 0x33, 0x30, 0x5a, 0xf2, 0x7d, 0x1a, 0xc8, 0x38, 0xe5, 0xc9, 0x30, 0xd3, 0x8b, 0x4f, 0x03, 0xce, + 0xd8, 0xc6, 0x72, 0x53, 0xe0, 0x19, 0x7f, 0x94, 0x85, 0x11, 0xfc, 0x13, 0x6f, 0x29, 0xbd, 0xc6, + 0xbe, 0x76, 0x4b, 0xe9, 0x35, 0xf6, 0x4d, 0x84, 0x92, 0x6b, 0x78, 0xee, 0x97, 0x89, 0xe8, 0x45, + 0xef, 0xd1, 0xa0, 0xdd, 0x8c, 0xc0, 0xa6, 0x8a, 0x13, 0x5e, 0xdf, 0xe6, 0x52, 0xb3, 0x13, 0x9c, + 0x86, 0xec, 0x66, 0x5d, 0xf4, 0x18, 0x53, 0x9f, 0xb8, 0xbe, 0x99, 0xdd, 0xac, 0xe3, 0x68, 0xac, + 0x95, 0x96, 0xdf, 0xb8, 0xa1, 0xbe, 0xad, 0xe9, 0xef, 0xdb, 0xcb, 0x6f, 0xdc, 0x30, 0x45, 0x09, + 0x1b, 0x5f, 0x6c, 0x33, 0x5e, 0x63, 0xf2, 0xb8, 0x5a, 0x1c, 0x5f, 0xec, 0x1b, 0x5e, 0x59, 0x9a, + 0x11, 0x02, 0x59, 0x86, 0x09, 0x11, 0xcd, 0x8d, 0xf8, 0x4a, 0xb4, 0xb5, 0x88, 0xf6, 0xe6, 0x14, + 0x2a, 0x12, 0xbf, 0xd0, 0x12, 0x13, 0x24, 0x9f, 0xcb, 0x12, 0x17, 0x5a, 0x72, 0x0a, 0x7d, 0x53, + 0x41, 0x89, 0xc2, 0x82, 0xa3, 0x78, 0x59, 0x35, 0x2c, 0x18, 0xf3, 0xb5, 0x86, 0x08, 0xc6, 0x2f, + 0x66, 0xa1, 0x50, 0x6b, 0xf5, 0xf6, 0x9c, 0xce, 0xfd, 0x6b, 0x7f, 0xa2, 0xef, 0xbb, 0xbf, 0x0e, + 0xb8, 0x49, 0x88, 0x13, 0x81, 0x34, 0x0f, 0xf3, 0xa6, 0x09, 0xe5, 0x83, 0x93, 0x20, 0x1a, 0xb9, + 0x0e, 0x62, 0x61, 0x8a, 0xe7, 0xfe, 0x4e, 0xe9, 0x04, 0xfc, 0xa1, 0x1b, 0x49, 0x22, 0x50, 0xc9, + 0xdb, 0x30, 0x11, 0x3d, 0xb4, 0x1d, 0xbd, 0xe2, 0xa7, 0x52, 0x96, 0xa3, 0xf2, 0xfb, 0xd7, 0x4c, + 0x15, 0xdd, 0xf8, 0x85, 0x51, 0x98, 0x54, 0xdb, 0x43, 0x4c, 0x98, 0xf3, 0x5b, 0xec, 0x28, 0x2c, + 0x3c, 0x89, 0xba, 0x58, 0x28, 0xb6, 0xd3, 0xf3, 0x7a, 0x83, 0x18, 0x1e, 0x77, 0x2b, 0x92, 0x61, + 0xe8, 0x6b, 0xcf, 0x98, 0xb3, 0x7e, 0x04, 0xe6, 0x78, 0xa4, 0x04, 0x05, 0xb7, 0xeb, 0xef, 0xd1, + 0x8e, 0x23, 0x6f, 0x2f, 0x2e, 0x68, 0x8c, 0x36, 0x45, 0x61, 0x82, 0x57, 0x48, 0x46, 0xde, 0x80, + 0x51, 0xb7, 0x4b, 0x3b, 0xb6, 0x23, 0xf6, 0xb8, 0x67, 0x63, 0x0c, 0x68, 0xa7, 0x54, 0x55, 0x08, + 0x05, 0x32, 0xb9, 0x0a, 0x79, 0xf7, 0x20, 0x9c, 0xaf, 0xb3, 0x3a, 0xd1, 0x41, 0x60, 0x2b, 0x24, + 0x88, 0xc8, 0x08, 0x3e, 0xb2, 0xdb, 0xbb, 0x62, 0xc6, 0x74, 0x82, 0xdb, 0x76, 0x7b, 0x57, 0x25, + 0x60, 0x88, 0xe4, 0x3d, 0x80, 0xae, 0xbd, 0x47, 0x3d, 0xab, 0xd9, 0x0b, 0x0e, 0xc5, 0xbc, 0x3d, + 0xaf, 0x91, 0xd5, 0x58, 0x71, 0xa5, 0x17, 0x1c, 0x2a, 0xb4, 0xe3, 0x5d, 0x09, 0x24, 0x25, 0x80, + 0xb6, 0x1d, 0x04, 0xd4, 0x6b, 0xbb, 0xc2, 0x95, 0x6b, 0x62, 0x79, 0x49, 0x63, 0x70, 0x37, 0x2c, + 0x56, 0x38, 0x28, 0x44, 0xd8, 0x68, 0xc7, 0xb3, 0xc5, 0xa3, 0x8b, 0xb1, 0x46, 0x3b, 0x9e, 0xd6, + 0x4b, 0x86, 0x48, 0x3e, 0x0f, 0x63, 0x4d, 0xc7, 0x6f, 0xb8, 0x5e, 0x53, 0xe4, 0x27, 0x78, 0x4e, + 0xa3, 0xa9, 0xf0, 0x32, 0x85, 0x4c, 0xa2, 0xb3, 0xd6, 0x8a, 0xbc, 0x65, 0x1b, 0xee, 0x43, 0xf1, + 0xa0, 0xbf, 0xde, 0xda, 0x7a, 0x58, 0xac, 0xb6, 0x36, 0x22, 0x62, 0x53, 0xb9, 0xe7, 0x04, 0x2d, + 0x7b, 0x47, 0xdc, 0x1a, 0xeb, 0x53, 0x79, 0x0b, 0x8b, 0xd4, 0xa9, 0xe4, 0xc8, 0xe4, 0x4d, 0x28, + 0xd0, 0x4e, 0xe0, 0xd9, 0x96, 0xd3, 0x14, 0x21, 0x70, 0x7a, 0xa3, 0xd9, 0x06, 0x6c, 0x57, 0x2b, + 0x6a, 0xa3, 0x11, 0xbf, 0xda, 0x64, 0xe3, 0xe3, 0x37, 0x9c, 0xb6, 0x88, 0x5c, 0xd3, 0xc7, 0xa7, + 0x5e, 0xae, 0xde, 0x55, 0xc7, 0x87, 0x21, 0x7e, 0x21, 0xff, 0x3f, 0xff, 0xdc, 0x52, 0x66, 0x05, + 0xa0, 0x20, 0x13, 0x30, 0x18, 0xeb, 0x70, 0xb6, 0xef, 0xa2, 0x27, 0x97, 0xa1, 0xb8, 0x6b, 0x0b, + 0x0b, 0x52, 0x63, 0xdf, 0xee, 0x74, 0x68, 0x4b, 0x88, 0x9b, 0x19, 0x09, 0x2f, 0x73, 0x30, 0xe7, + 0x6c, 0xbc, 0x07, 0xf3, 0x69, 0xbd, 0x25, 0x2f, 0xc0, 0xa4, 0x9a, 0x6b, 0x42, 0x30, 0x99, 0xb0, + 0xbb, 0x8e, 0xcc, 0x36, 0x21, 0x18, 0xfc, 0x6a, 0x06, 0x9e, 0x1b, 0xf4, 0xed, 0x90, 0x45, 0x28, + 0x74, 0x3d, 0xc7, 0x45, 0x1d, 0x8d, 0x4b, 0xb8, 0xf0, 0x37, 0x39, 0x07, 0xc0, 0x95, 0x89, 0xc0, + 0xde, 0x13, 0xae, 0xeb, 0xe6, 0x38, 0x42, 0xb6, 0xec, 0x3d, 0x9f, 0xbc, 0x0a, 0xb3, 0x4d, 0xba, + 0x6b, 0xf7, 0x5a, 0x81, 0xe5, 0x37, 0xf6, 0x69, 0x13, 0xa3, 0x45, 0xd0, 0x25, 0xc9, 0x2c, 0x8a, + 0x82, 0xba, 0x84, 0x27, 0x5a, 0x3c, 0xd2, 0xa7, 0xc5, 0xb7, 0xf3, 0x85, 0x4c, 0x31, 0x6b, 0xa2, + 0x67, 0x8e, 0xf1, 0xcd, 0x2c, 0x2c, 0xf4, 0x5b, 0x2c, 0xe4, 0x9d, 0xb4, 0x31, 0xe0, 0x36, 0x70, + 0x15, 0xae, 0xda, 0xc0, 0x95, 0xda, 0xc8, 0x32, 0x84, 0xb1, 0x1e, 0xc7, 0xc5, 0x6d, 0x4b, 0x18, + 0xa3, 0xe9, 0xda, 0xbe, 0xff, 0x90, 0x7d, 0x0f, 0x39, 0x25, 0x01, 0x9c, 0x80, 0xa9, 0x34, 0x12, + 0x46, 0x3e, 0x07, 0xd0, 0x68, 0xb9, 0x3e, 0xc5, 0xab, 0x66, 0xb1, 0xd1, 0x72, 0x87, 0xd7, 0x10, + 0xaa, 0xde, 0x2d, 0x22, 0xb4, 0xec, 0x36, 0xa9, 0x98, 0x40, 0x1b, 0xce, 0xf4, 0x91, 0x0e, 0x6c, + 0x7a, 0xa2, 0x37, 0x1e, 0x65, 0xc6, 0xf8, 0x5e, 0xf8, 0xd2, 0x63, 0x7c, 0xc4, 0xb3, 0xfd, 0xd6, + 0xc8, 0x21, 0x90, 0xa4, 0x08, 0x60, 0xdc, 0x85, 0xdb, 0x66, 0xcf, 0x0b, 0xb9, 0x73, 0xc8, 0x3d, + 0xaf, 0x45, 0x96, 0x60, 0x42, 0xbe, 0x08, 0xc3, 0x14, 0x59, 0xce, 0x1c, 0x04, 0xe8, 0x0e, 0xc5, + 0xc5, 0x83, 0x79, 0x0a, 0x31, 0xa2, 0x47, 0x6c, 0x91, 0xe3, 0x08, 0x61, 0x67, 0x7f, 0x51, 0xf5, + 0x73, 0x72, 0x7d, 0xeb, 0x82, 0x59, 0x94, 0xfe, 0x74, 0x46, 0x4e, 0x7f, 0x52, 0xb2, 0x1d, 0xd7, + 0x3e, 0x02, 0x18, 0x7f, 0x21, 0x1a, 0x86, 0x7f, 0xb3, 0x2d, 0x5b, 0x7e, 0x75, 0x62, 0xcb, 0x16, + 0x3f, 0xc9, 0x45, 0x98, 0xf1, 0xb8, 0x87, 0x5e, 0xe0, 0x8a, 0xf1, 0xc4, 0x99, 0x32, 0xa7, 0x38, + 0x78, 0xcb, 0xc5, 0x31, 0x15, 0xed, 0xba, 0x1d, 0x0e, 0x98, 0x22, 0xe8, 0xc9, 0x15, 0x18, 0x67, + 0x82, 0x1e, 0x53, 0x39, 0xc4, 0x1c, 0xbf, 0x11, 0x0f, 0xb7, 0x4d, 0xb3, 0xf0, 0x91, 0xf8, 0x5b, + 0xf0, 0xfa, 0x27, 0x19, 0xc9, 0x4c, 0xdd, 0x66, 0xc8, 0x19, 0x18, 0x73, 0xbd, 0x3d, 0xa5, 0x6b, + 0xa3, 0xae, 0xb7, 0xc7, 0xfa, 0x75, 0x09, 0x8a, 0x3c, 0x0e, 0x81, 0x07, 0x78, 0xfb, 0x87, 0x1d, + 0x7e, 0x0e, 0x2d, 0x98, 0xd3, 0x1c, 0x8e, 0xcf, 0x5e, 0x1e, 0x76, 0x1a, 0x0c, 0xd3, 0xf7, 0x5d, + 0x4b, 0xcd, 0xdf, 0x22, 0xba, 0x3d, 0xed, 0xfb, 0x6e, 0x94, 0xc8, 0xa5, 0x49, 0x56, 0x60, 0x8a, + 0xf1, 0x09, 0xb3, 0xc8, 0x88, 0x5d, 0xf0, 0x5c, 0x72, 0x17, 0x3c, 0xec, 0x34, 0x64, 0x13, 0xcd, + 0x49, 0x5f, 0xf9, 0x25, 0x7a, 0xf3, 0x33, 0x59, 0x38, 0x9d, 0x8e, 0x8e, 0xf3, 0xc5, 0x2a, 0xc1, + 0x70, 0x1c, 0x6e, 0x93, 0x34, 0xc7, 0x19, 0x84, 0x67, 0x1c, 0x48, 0x6b, 0x6d, 0x36, 0xb5, 0xb5, + 0xaf, 0xc0, 0x2c, 0x32, 0x12, 0x7a, 0x47, 0xcb, 0xf1, 0x03, 0x11, 0x48, 0x6f, 0xce, 0xb0, 0x02, + 0x2e, 0xe0, 0xd6, 0x19, 0x98, 0xbc, 0x04, 0xd3, 0x52, 0x44, 0xb9, 0x0f, 0x3b, 0xac, 0x62, 0x2e, + 0x9f, 0xa6, 0x04, 0x74, 0x13, 0x81, 0xe4, 0x14, 0x8c, 0xda, 0xdd, 0x2e, 0xab, 0x92, 0x8b, 0xa5, + 0x11, 0xbb, 0xdb, 0xad, 0x36, 0xc9, 0x05, 0x98, 0xc2, 0xe0, 0x23, 0x6b, 0x17, 0x3d, 0x30, 0x84, + 0xbb, 0x97, 0x39, 0x89, 0x40, 0xee, 0x95, 0xe1, 0xb3, 0x0f, 0x81, 0xd1, 0x4a, 0x94, 0x31, 0x44, + 0x01, 0xbb, 0x2b, 0x11, 0xc4, 0xc8, 0x7c, 0x1e, 0x66, 0xc4, 0x6e, 0x29, 0x24, 0x3c, 0x52, 0x8a, + 0xf5, 0xc7, 0xd4, 0x58, 0x91, 0x2a, 0x1b, 0x04, 0xa8, 0xda, 0x94, 0x94, 0xbf, 0x9b, 0x81, 0x53, + 0xa9, 0xdb, 0x2d, 0xf9, 0x1a, 0xf0, 0x58, 0x8c, 0xc0, 0xb5, 0x3c, 0xda, 0x70, 0xba, 0x0e, 0x46, + 0xab, 0x73, 0x23, 0xd3, 0xf2, 0xa0, 0x8d, 0x1a, 0xe3, 0x3a, 0xb6, 0x5c, 0x33, 0x24, 0xe2, 0xe7, + 0xe4, 0xa2, 0x17, 0x03, 0x2f, 0x7e, 0x08, 0xa7, 0x52, 0x51, 0x53, 0xce, 0xaf, 0xaf, 0xe9, 0x2f, + 0x8a, 0xc9, 0x5b, 0x83, 0x58, 0xa7, 0x95, 0x73, 0xad, 0xe8, 0xde, 0xaf, 0x87, 0xdd, 0x8b, 0x6d, + 0xcc, 0x64, 0x35, 0xbe, 0x2c, 0xd3, 0x74, 0x4b, 0x49, 0xd4, 0x77, 0x65, 0x92, 0x0f, 0xe1, 0x94, + 0x58, 0x2a, 0x7b, 0x9e, 0xdd, 0xdd, 0x8f, 0xd8, 0xf1, 0x86, 0xbe, 0x9c, 0xc6, 0x8e, 0xaf, 0xa1, + 0x5b, 0x0c, 0x3f, 0xe4, 0x3a, 0x67, 0x27, 0x81, 0xa2, 0x0f, 0x9e, 0xdc, 0xf4, 0x53, 0x5a, 0x93, + 0xb2, 0x06, 0x33, 0x69, 0x6b, 0x70, 0xe8, 0x0f, 0x40, 0xd4, 0xf9, 0x43, 0x19, 0x38, 0x7f, 0x5c, + 0x9b, 0xc9, 0x36, 0x9c, 0xc6, 0x0b, 0x65, 0xdf, 0x0d, 0xbb, 0x6d, 0x35, 0xec, 0xc6, 0x3e, 0x15, + 0xab, 0xc4, 0x48, 0xed, 0x7c, 0xb7, 0x5b, 0xaf, 0x6f, 0x2a, 0xfd, 0xee, 0x76, 0xeb, 0xbe, 0x2b, + 0x7f, 0x97, 0x19, 0xb9, 0x68, 0x43, 0x13, 0x9e, 0x1d, 0x40, 0xa9, 0x7c, 0x56, 0x19, 0xf5, 0xb3, + 0xba, 0x04, 0xc5, 0x5d, 0xda, 0xa4, 0x1e, 0x86, 0x7b, 0xb0, 0xa6, 0x3d, 0x58, 0xe6, 0xcf, 0xf2, + 0x99, 0xd3, 0x21, 0xbc, 0xee, 0xbb, 0xf7, 0x97, 0x45, 0x2d, 0x6d, 0x29, 0x21, 0x55, 0x15, 0x8c, + 0x5c, 0x81, 0xb9, 0x58, 0xe4, 0x7d, 0x14, 0xca, 0x69, 0xce, 0xb2, 0x22, 0x3d, 0x4f, 0xcb, 0x0b, + 0x30, 0x29, 0xa7, 0xc1, 0x0b, 0x03, 0x42, 0xcc, 0x09, 0x01, 0x63, 0xab, 0x5c, 0x54, 0xf7, 0xb7, + 0xb3, 0x52, 0x65, 0x5a, 0x71, 0xdd, 0xc0, 0x0f, 0x3c, 0xbb, 0xab, 0x9d, 0x8b, 0x48, 0x1b, 0xce, + 0xba, 0x76, 0x2f, 0xd8, 0x5f, 0xb6, 0xd8, 0xbf, 0xae, 0x27, 0xa3, 0x33, 0x1b, 0xd2, 0xc5, 0x6c, + 0x62, 0xf9, 0xaa, 0x2e, 0x3a, 0x4b, 0x0c, 0xbb, 0xa4, 0x22, 0xb3, 0x1d, 0x5e, 0xe1, 0xba, 0xf6, + 0x8c, 0x79, 0x86, 0xf3, 0x4c, 0x60, 0x91, 0x35, 0xd0, 0x1e, 0x81, 0x4f, 0x3d, 0x18, 0x29, 0x0f, + 0xb6, 0xeb, 0x5c, 0x27, 0x76, 0x94, 0x17, 0xe3, 0xdf, 0x85, 0x71, 0xa7, 0x29, 0xb2, 0xc1, 0x89, + 0xe3, 0x91, 0xae, 0x92, 0x57, 0x9b, 0x3c, 0x39, 0x5c, 0xc4, 0x83, 0x9d, 0xad, 0x1c, 0x01, 0x5d, + 0x99, 0xd2, 0x4e, 0x90, 0xc6, 0x8a, 0xdc, 0x9d, 0x93, 0x64, 0x64, 0x1a, 0xb2, 0xe1, 0xb4, 0x67, + 0x9d, 0x26, 0x39, 0x0d, 0xa3, 0xbe, 0x92, 0x9e, 0xce, 0x14, 0xbf, 0x8c, 0x3f, 0x03, 0x97, 0x86, + 0x1d, 0x23, 0xf2, 0x3a, 0x90, 0x3e, 0x03, 0x3e, 0x6e, 0xce, 0xda, 0x89, 0x71, 0x7b, 0x01, 0xd4, + 0xfc, 0x5a, 0x8e, 0x9c, 0x70, 0x09, 0xbb, 0xe7, 0x39, 0xc6, 0x7f, 0x95, 0x85, 0x69, 0xfd, 0xcc, + 0x4c, 0x5e, 0x85, 0x7c, 0xc8, 0x76, 0x3a, 0xb4, 0xed, 0xaa, 0x48, 0x8c, 0xb9, 0x89, 0x48, 0x6c, + 0x83, 0xc0, 0xfb, 0x1d, 0xab, 0xad, 0x9a, 0x5f, 0xcd, 0x49, 0x04, 0x4a, 0xb3, 0xeb, 0x6d, 0xe0, + 0xaf, 0xc0, 0xa2, 0x2c, 0x0b, 0x86, 0x7b, 0xf3, 0xbc, 0xc0, 0x4e, 0xee, 0x68, 0x37, 0x9b, 0x64, + 0xb4, 0x4c, 0x9e, 0xe0, 0x33, 0xe7, 0xd1, 0x91, 0x28, 0xdf, 0xff, 0x48, 0x24, 0xba, 0xd2, 0xe7, + 0x48, 0x34, 0x32, 0xe0, 0x48, 0x14, 0x51, 0x86, 0x47, 0xa2, 0x17, 0x45, 0xeb, 0x3d, 0xfb, 0xa1, + 0x85, 0xdd, 0xe2, 0x1e, 0x5d, 0xbc, 0x5d, 0xa6, 0xfd, 0x10, 0x2f, 0xb6, 0x56, 0xc6, 0x41, 0xde, + 0x86, 0x19, 0x7f, 0x35, 0x13, 0x3b, 0xb3, 0xc8, 0x91, 0x7d, 0x09, 0xa6, 0x9d, 0x36, 0x53, 0xa6, + 0x68, 0x53, 0x51, 0x02, 0xa6, 0xcc, 0x29, 0x09, 0xe5, 0x8a, 0xc0, 0xcb, 0x30, 0x13, 0xa2, 0xf1, + 0xd0, 0x5f, 0xee, 0x9e, 0x6e, 0x86, 0xd4, 0x22, 0xf4, 0xf7, 0x55, 0x98, 0x0d, 0x11, 0x85, 0xde, + 0xc9, 0xf5, 0x80, 0x29, 0xb3, 0x28, 0x0b, 0xc4, 0xf3, 0x84, 0xbe, 0xb1, 0x17, 0xdf, 0x64, 0x3e, + 0xa5, 0x56, 0x19, 0xff, 0x22, 0x0b, 0x73, 0x29, 0xc6, 0x14, 0xf2, 0x21, 0xcc, 0x49, 0xa1, 0xc1, + 0x37, 0x23, 0xfe, 0x31, 0x73, 0x71, 0x71, 0x39, 0x4d, 0x5c, 0x20, 0x5a, 0xca, 0x27, 0x3d, 0x2b, + 0x04, 0x45, 0x54, 0xfe, 0xa7, 0x47, 0x44, 0x90, 0x0f, 0xe0, 0xb4, 0x78, 0x55, 0x58, 0x91, 0x14, + 0x96, 0x47, 0x77, 0xc5, 0x82, 0x7d, 0x21, 0xf1, 0x41, 0x39, 0x0d, 0xa5, 0x39, 0x26, 0xdd, 0x5d, + 0x7b, 0xc6, 0x9c, 0xf7, 0x53, 0xe0, 0x71, 0xe9, 0xf3, 0x77, 0x32, 0x60, 0x1c, 0x3f, 0x5e, 0x78, + 0x0a, 0x8a, 0x0f, 0x38, 0x3b, 0x05, 0x29, 0xa3, 0x77, 0x01, 0xa6, 0x3c, 0xba, 0xeb, 0x51, 0x7f, + 0x5f, 0x19, 0xbe, 0x71, 0x73, 0x52, 0x00, 0xe5, 0xc0, 0xc8, 0xa4, 0x03, 0x27, 0xfa, 0x7c, 0x25, + 0x91, 0x71, 0x33, 0xdc, 0x54, 0x52, 0xe7, 0x81, 0xcc, 0xc3, 0x88, 0xda, 0x40, 0xfe, 0xe3, 0x76, + 0xbe, 0x90, 0x2d, 0xe6, 0x4c, 0x91, 0x1a, 0x61, 0xd7, 0x69, 0x51, 0xe3, 0xef, 0x65, 0x60, 0xb1, + 0xff, 0xe0, 0x91, 0x0f, 0x95, 0xeb, 0xbf, 0x1c, 0xcf, 0x0c, 0x77, 0xcc, 0x78, 0xab, 0x37, 0x25, + 0x22, 0x5a, 0x3f, 0xfe, 0xa0, 0xae, 0x60, 0xf9, 0x49, 0xee, 0x30, 0xde, 0x94, 0xd6, 0x43, 0xa6, + 0x97, 0xdf, 0xbf, 0x46, 0x2e, 0xc3, 0x18, 0x37, 0x18, 0xca, 0x86, 0xce, 0x68, 0x0d, 0xbd, 0x7f, + 0xcd, 0x94, 0xe5, 0xc6, 0x77, 0x32, 0xa1, 0x49, 0x25, 0xde, 0xfc, 0xfb, 0xd7, 0xc8, 0xe7, 0x86, + 0xbb, 0xc8, 0x2b, 0xc8, 0x8b, 0xbc, 0xf0, 0x12, 0xef, 0xf3, 0xda, 0x25, 0xde, 0x8b, 0x83, 0xc7, + 0x49, 0x1c, 0xde, 0xe2, 0x4f, 0x1e, 0xfe, 0xab, 0x0c, 0x9c, 0x1b, 0x48, 0x41, 0x9e, 0x83, 0x42, + 0xa9, 0x56, 0xdd, 0x8a, 0x66, 0x96, 0x7d, 0x2d, 0x12, 0x42, 0x6e, 0xc1, 0xf8, 0x8a, 0xed, 0x3b, + 0x0d, 0xb6, 0x80, 0x53, 0xd5, 0xd1, 0x04, 0xdb, 0x10, 0x7d, 0xed, 0x19, 0x33, 0xa2, 0x25, 0x16, + 0xcc, 0xe2, 0x57, 0x90, 0x78, 0x52, 0x2c, 0xae, 0x8a, 0x24, 0x18, 0x26, 0xc8, 0x98, 0x84, 0x49, + 0x00, 0xe3, 0x1f, 0xdf, 0x03, 0xa9, 0x7b, 0xf6, 0x6f, 0xe0, 0x09, 0x12, 0x6c, 0x5c, 0x82, 0x42, + 0x4d, 0x9a, 0x55, 0x94, 0x17, 0x45, 0xa5, 0x09, 0xc5, 0x0c, 0x4b, 0x8d, 0xbf, 0x9c, 0x91, 0xfa, + 0xc2, 0xf1, 0x1d, 0x51, 0x72, 0xe8, 0x36, 0x07, 0xe7, 0xd0, 0x6d, 0x7e, 0xcc, 0x1c, 0xba, 0xc6, + 0x2f, 0x8a, 0xf4, 0x57, 0xd5, 0x66, 0x2d, 0xf6, 0x16, 0xc3, 0x27, 0x75, 0x4b, 0x58, 0xd5, 0x56, + 0xe7, 0x05, 0x25, 0x19, 0x77, 0xb2, 0xae, 0xfe, 0xde, 0x09, 0xca, 0x52, 0xfd, 0x17, 0x59, 0x78, + 0x6e, 0x10, 0x79, 0xea, 0xb3, 0x11, 0x99, 0x93, 0x3d, 0x1b, 0x71, 0x19, 0x0a, 0x1c, 0xa6, 0x3f, + 0x7f, 0x27, 0x48, 0xd9, 0x80, 0xcb, 0x62, 0x72, 0x01, 0x46, 0x4b, 0xe5, 0x7a, 0x94, 0x78, 0x18, + 0xef, 0xd1, 0xec, 0x86, 0x8f, 0x37, 0x34, 0xa2, 0x88, 0x7c, 0x35, 0x99, 0x6b, 0x5b, 0x64, 0x1c, + 0x7e, 0x56, 0x19, 0x90, 0x44, 0x66, 0x3a, 0x6c, 0x6f, 0x94, 0x49, 0x4d, 0x24, 0x27, 0x32, 0x93, + 0x79, 0xbb, 0x0d, 0x18, 0xad, 0x79, 0xd4, 0xa7, 0x81, 0x7a, 0xc7, 0xd5, 0x45, 0x88, 0x29, 0x4a, + 0xc4, 0x0d, 0x94, 0x7d, 0xc8, 0xdd, 0xf7, 0x47, 0xd5, 0x90, 0x2a, 0xbc, 0xb2, 0x62, 0x60, 0x53, + 0x41, 0x31, 0xbe, 0x95, 0x81, 0xf9, 0xb4, 0x66, 0x91, 0xe7, 0x20, 0xdf, 0x49, 0xcd, 0x12, 0xde, + 0xe1, 0x4e, 0xc4, 0x13, 0xf8, 0xf4, 0xd8, 0xae, 0xeb, 0xb5, 0xed, 0x40, 0xbd, 0xd8, 0x53, 0xc0, + 0x26, 0xb0, 0x1f, 0x37, 0xf1, 0x6f, 0xb2, 0x24, 0x85, 0x6d, 0x2e, 0x91, 0x57, 0x1c, 0xff, 0x33, + 0x4a, 0x00, 0xd5, 0x66, 0x6d, 0xb3, 0xcb, 0x13, 0x9d, 0x5d, 0x87, 0x3c, 0x6b, 0x56, 0x6c, 0x31, + 0xb2, 0xe5, 0x50, 0xba, 0xbb, 0x2e, 0x90, 0x78, 0xab, 0xd8, 0xd9, 0xc9, 0x44, 0x64, 0x63, 0x1b, + 0xa6, 0x75, 0x0c, 0xb2, 0xaa, 0xa7, 0xc6, 0x88, 0x5e, 0x45, 0x5f, 0x71, 0x5d, 0xee, 0x5c, 0xb2, + 0x72, 0xf6, 0xbb, 0x47, 0x4b, 0xc0, 0x7e, 0x72, 0x9a, 0xb4, 0xd4, 0x19, 0xc6, 0x4f, 0x64, 0x61, + 0x3e, 0xf2, 0x0e, 0x97, 0x9f, 0xc4, 0x53, 0xeb, 0x31, 0x59, 0xd2, 0x3c, 0xfa, 0x96, 0x12, 0x0f, + 0x0f, 0xcb, 0x0e, 0x0e, 0x70, 0x24, 0xba, 0x05, 0x0b, 0xfd, 0xf0, 0xc9, 0xab, 0x89, 0xa7, 0x41, + 0x45, 0xe8, 0x64, 0xf8, 0x86, 0xa8, 0xf2, 0x52, 0xe8, 0x3f, 0xcd, 0xc0, 0xa2, 0x70, 0x89, 0xb8, + 0x6b, 0x3b, 0x1d, 0x7c, 0x0e, 0xbd, 0x41, 0x9f, 0x8c, 0xab, 0xed, 0x2d, 0x4d, 0x2c, 0xbd, 0xa4, + 0x7b, 0xbe, 0x24, 0x6a, 0xeb, 0xdf, 0x5b, 0x72, 0x19, 0x83, 0x64, 0x1b, 0x7c, 0xf1, 0xe6, 0x79, + 0x68, 0x43, 0x87, 0x01, 0xd4, 0xd0, 0x06, 0xc4, 0x30, 0xfe, 0x1c, 0x3c, 0x3f, 0xb8, 0x02, 0xf2, + 0x15, 0x98, 0x2a, 0xed, 0xd1, 0x4e, 0x70, 0xaf, 0xbb, 0xe7, 0xd9, 0x4d, 0x2a, 0x0d, 0x45, 0xf2, + 0xfe, 0x46, 0x2d, 0xe3, 0x81, 0xc1, 0xc2, 0xd5, 0x9e, 0xc1, 0xad, 0x9e, 0x20, 0xd2, 0xfc, 0x8e, + 0x54, 0x6e, 0xc6, 0x37, 0x33, 0x40, 0x92, 0x3c, 0xc8, 0x0d, 0x98, 0xbc, 0xb7, 0x55, 0xae, 0x07, + 0xb6, 0x17, 0xac, 0xb9, 0x3d, 0x4f, 0x04, 0xdc, 0x72, 0xcf, 0xeb, 0xa0, 0xc1, 0x24, 0x83, 0x17, + 0x58, 0xfb, 0x6e, 0xcf, 0x33, 0x35, 0x3c, 0xcc, 0x5e, 0x4b, 0xe9, 0x41, 0xd3, 0x3e, 0xd4, 0xb3, + 0xd7, 0x0a, 0x98, 0x96, 0xbd, 0x56, 0xc0, 0x8c, 0xbf, 0x95, 0x81, 0x67, 0xe5, 0x5d, 0x4a, 0x33, + 0xa5, 0x2d, 0x65, 0x8c, 0x2f, 0xf2, 0x64, 0xc2, 0x91, 0x41, 0xba, 0xe9, 0xac, 0x0c, 0xc1, 0xc3, + 0x06, 0xa2, 0x92, 0xca, 0x69, 0xc9, 0xfb, 0x90, 0xaf, 0x07, 0x6e, 0x77, 0x88, 0x18, 0xbc, 0x62, + 0x38, 0xa3, 0x81, 0xdb, 0x45, 0x16, 0x48, 0x69, 0x50, 0x98, 0x57, 0x1b, 0x27, 0x5b, 0x4c, 0xee, + 0xc2, 0x98, 0x88, 0xc8, 0x8e, 0xd9, 0x9d, 0x06, 0xf4, 0x69, 0x65, 0x46, 0x06, 0xfa, 0x89, 0x84, + 0x17, 0xa6, 0xe4, 0x61, 0xfc, 0x78, 0x06, 0x26, 0x98, 0xf2, 0x80, 0x47, 0xae, 0x4f, 0xba, 0xa4, + 0x75, 0x3d, 0x50, 0x9a, 0x2d, 0x43, 0xf6, 0x43, 0x6d, 0xae, 0x6f, 0xc0, 0x4c, 0x8c, 0x80, 0x18, + 0x18, 0xe2, 0xd1, 0x72, 0xf8, 0xab, 0xfa, 0xd2, 0xe6, 0xa7, 0xc1, 0x8c, 0x7f, 0x27, 0x03, 0xf3, + 0x9b, 0x07, 0x81, 0x5d, 0xc5, 0x23, 0xa4, 0xd9, 0x6b, 0xc9, 0xef, 0x9d, 0x29, 0x44, 0xf2, 0x52, + 0x8e, 0xfb, 0x9f, 0x73, 0x85, 0x48, 0xc0, 0xcc, 0xb0, 0x94, 0xac, 0x41, 0x41, 0xec, 0x2f, 0xbe, + 0xc8, 0x53, 0x21, 0xef, 0x94, 0x75, 0xc6, 0x02, 0x89, 0xf5, 0x04, 0x45, 0x98, 0xa0, 0x31, 0x43, + 0x6a, 0xe3, 0x8f, 0x32, 0x70, 0xa6, 0x0f, 0x0d, 0x79, 0x07, 0x46, 0xd0, 0x99, 0x4f, 0xcc, 0xde, + 0x73, 0x7d, 0xaa, 0x08, 0x1a, 0xfb, 0xf7, 0xaf, 0xf1, 0x8d, 0xa8, 0xcd, 0x7e, 0x98, 0x9c, 0x8a, + 0x7c, 0x08, 0xe3, 0xa5, 0x66, 0x53, 0x9c, 0x4b, 0xb2, 0xda, 0xb9, 0xa4, 0x4f, 0x8d, 0x57, 0x42, + 0x7c, 0x7e, 0x2e, 0xe1, 0x6e, 0x25, 0xcd, 0xa6, 0x25, 0x1c, 0x15, 0x23, 0x7e, 0x8b, 0x6f, 0xc3, + 0xb4, 0x8e, 0x7c, 0xa2, 0x73, 0xc9, 0x77, 0x32, 0x50, 0xd4, 0xdb, 0xf0, 0xe9, 0x84, 0x28, 0xa6, + 0x4d, 0xf3, 0x31, 0x8b, 0xea, 0xa7, 0xb2, 0x70, 0x2a, 0x75, 0x84, 0xc9, 0xeb, 0x30, 0x5a, 0xea, + 0x76, 0xab, 0x15, 0xb1, 0xaa, 0x84, 0xc2, 0x83, 0x96, 0x56, 0xed, 0xd8, 0xc6, 0x91, 0xc8, 0x75, + 0x28, 0xe0, 0xca, 0x64, 0x04, 0xd9, 0x28, 0x63, 0x04, 0xbf, 0xda, 0x88, 0x65, 0x8c, 0x90, 0x88, + 0xe4, 0x26, 0x4c, 0x8b, 0x68, 0x25, 0x93, 0xee, 0xd1, 0x47, 0x61, 0xea, 0x32, 0xcc, 0xae, 0x26, + 0x63, 0x9b, 0x2c, 0x8f, 0x97, 0xa9, 0xf1, 0x3a, 0x3a, 0x15, 0x3e, 0x55, 0xcb, 0x78, 0xaa, 0x9c, + 0x78, 0xda, 0x0a, 0xfe, 0x54, 0x2d, 0x36, 0xa2, 0x0f, 0xaf, 0x04, 0x65, 0x38, 0x5d, 0x25, 0xdf, + 0x77, 0xf6, 0x3a, 0x6d, 0xda, 0x09, 0x3e, 0xbd, 0xe9, 0x8a, 0xea, 0x18, 0x6a, 0xba, 0xbe, 0x9d, + 0xe7, 0x1f, 0x73, 0x9c, 0xec, 0x98, 0xd7, 0xd8, 0x2b, 0x30, 0xc6, 0xe3, 0xa4, 0xe4, 0x97, 0x71, + 0x2e, 0xb5, 0x09, 0x1c, 0xe7, 0xfe, 0x35, 0xae, 0xbe, 0x70, 0xaf, 0x42, 0xdf, 0x94, 0xa4, 0xe4, + 0x3e, 0x4c, 0x94, 0x5b, 0xd4, 0xee, 0xf4, 0xba, 0x5b, 0xc3, 0x19, 0x18, 0x17, 0x44, 0x5f, 0x26, + 0x1b, 0x9c, 0x0c, 0x0d, 0x93, 0x28, 0xc9, 0x55, 0x46, 0x64, 0x2b, 0x74, 0x34, 0xca, 0xa3, 0x3d, + 0xf4, 0x33, 0x03, 0xc6, 0x27, 0x0e, 0x44, 0x3a, 0xdd, 0x8b, 0x4e, 0x78, 0x22, 0x59, 0x30, 0xbd, + 0x6e, 0xfb, 0xc1, 0x96, 0x67, 0x77, 0x7c, 0xcc, 0xaf, 0x30, 0x44, 0xfc, 0xa9, 0x7c, 0x11, 0x6e, + 0x06, 0xad, 0x91, 0x41, 0x48, 0x8a, 0x6d, 0x8e, 0xb1, 0x63, 0xfa, 0xd2, 0x4d, 0xa7, 0x63, 0xb7, + 0x9c, 0x6f, 0x48, 0x7f, 0x4c, 0xae, 0x2f, 0xed, 0x4a, 0xa0, 0x19, 0x95, 0x1b, 0x5f, 0x4e, 0xcc, + 0x1b, 0x6f, 0xe5, 0x04, 0x8c, 0x09, 0x17, 0x7c, 0xee, 0x92, 0x5e, 0x5b, 0xdd, 0xa8, 0x54, 0x37, + 0x6e, 0x15, 0x33, 0x64, 0x1a, 0xa0, 0x66, 0x6e, 0x96, 0x57, 0xeb, 0x75, 0xf6, 0x3b, 0xcb, 0x7e, + 0x0b, 0x7f, 0xf5, 0x9b, 0xf7, 0xd6, 0x8b, 0x39, 0xc5, 0x65, 0x3d, 0x6f, 0xfc, 0x93, 0x0c, 0x9c, + 0x4e, 0x9f, 0x4a, 0xb2, 0x05, 0x18, 0xb4, 0x20, 0x4c, 0xcd, 0x37, 0x06, 0xce, 0x7b, 0x2a, 0x38, + 0x1e, 0xfc, 0x10, 0x70, 0xa7, 0xfa, 0xac, 0xbc, 0x39, 0x8a, 0xde, 0x32, 0x73, 0x9a, 0x46, 0x19, + 0x16, 0xfa, 0xf1, 0xd0, 0xbb, 0x3a, 0x03, 0x13, 0xa5, 0x5a, 0x6d, 0xbd, 0x5a, 0x2e, 0x6d, 0x55, + 0x37, 0x37, 0x8a, 0x19, 0x32, 0x0e, 0x23, 0xb7, 0xcc, 0xcd, 0x7b, 0xb5, 0x62, 0xd6, 0xf8, 0x2b, + 0x19, 0x98, 0xaa, 0xfe, 0xbf, 0xd4, 0x5d, 0xcd, 0x6f, 0x1b, 0xc7, 0x15, 0xd7, 0x92, 0x92, 0x22, + 0x3d, 0x4a, 0xd6, 0x6a, 0xec, 0xc8, 0xaa, 0x6c, 0xcb, 0x2e, 0xe1, 0x1a, 0xf5, 0xb6, 0x71, 0x9a, + 0xb8, 0x41, 0x62, 0x17, 0xa9, 0xb1, 0x22, 0x97, 0xe2, 0x5a, 0xe4, 0x2e, 0xbd, 0xb3, 0xb4, 0x62, + 0xf7, 0x63, 0x41, 0x4b, 0x6b, 0x99, 0x2d, 0xbd, 0x64, 0xf8, 0x61, 0x57, 0xb9, 0xf5, 0x92, 0x4b, + 0x11, 0xa0, 0xe8, 0xb5, 0x87, 0x5e, 0x72, 0xe9, 0xdf, 0xd0, 0x7f, 0x20, 0x40, 0x51, 0x20, 0x87, + 0xde, 0x0a, 0x04, 0xad, 0x81, 0x5e, 0x7a, 0xef, 0x25, 0xa7, 0x62, 0xde, 0xcc, 0xec, 0xce, 0xee, + 0x8a, 0x8a, 0x64, 0x1b, 0x2d, 0x7a, 0x13, 0xdf, 0xbc, 0x19, 0xcd, 0xce, 0xc7, 0x9b, 0xf7, 0x66, + 0xde, 0xfb, 0xbd, 0x68, 0x1c, 0x1e, 0x70, 0x4c, 0x84, 0x57, 0xdd, 0x7c, 0xb7, 0x53, 0x9b, 0x6f, + 0x3d, 0x0e, 0xef, 0x89, 0xff, 0xc1, 0x89, 0x76, 0xde, 0x5f, 0x35, 0x58, 0xcd, 0xd5, 0x21, 0x14, + 0xde, 0x30, 0x77, 0xa9, 0x6b, 0x57, 0x2b, 0xa2, 0x67, 0x52, 0x2b, 0x17, 0xd4, 0xfc, 0x7f, 0xe1, + 0xde, 0xb3, 0xcf, 0x47, 0x41, 0xbf, 0xbb, 0xaf, 0x24, 0x63, 0xa8, 0xcf, 0x78, 0xb2, 0x25, 0x3c, + 0xc9, 0x3e, 0x99, 0x0c, 0x43, 0x6c, 0xb6, 0x90, 0xba, 0xd1, 0x8c, 0xe9, 0xf9, 0x86, 0x79, 0x9e, + 0x76, 0x56, 0x9e, 0x6f, 0x3a, 0x69, 0x6f, 0x6b, 0x19, 0x4a, 0xc2, 0x6a, 0x41, 0x83, 0xe0, 0x33, + 0x0d, 0xd6, 0xa7, 0xf5, 0x95, 0x19, 0x42, 0x69, 0x57, 0xfa, 0xb5, 0x18, 0x99, 0x2f, 0xed, 0x43, + 0x2f, 0xd9, 0xc8, 0x1d, 0x28, 0xf1, 0x04, 0x91, 0xf4, 0x66, 0xdb, 0xb3, 0xc5, 0x02, 0xb9, 0xf4, + 0xaf, 0xaf, 0x2e, 0x9f, 0x17, 0xb9, 0xec, 0x47, 0x37, 0xd3, 0x89, 0xcd, 0xd7, 0x35, 0x4f, 0xad, + 0x51, 0xfe, 0x54, 0x83, 0x8d, 0xe9, 0x1f, 0xc9, 0x4e, 0x19, 0x9f, 0xe9, 0xe6, 0x89, 0x37, 0x32, + 0x9e, 0x32, 0xa8, 0xaf, 0x67, 0xdc, 0x91, 0x63, 0x46, 0x56, 0x29, 0x93, 0x30, 0x5f, 0xcd, 0x6e, + 0x92, 0xae, 0x24, 0x19, 0xcb, 0xbf, 0x2f, 0xc0, 0x1a, 0x5b, 0x40, 0xbd, 0x70, 0x34, 0x32, 0x27, + 0xe3, 0x27, 0x61, 0x34, 0x16, 0x2a, 0x15, 0x79, 0x1f, 0xe6, 0x9f, 0x9c, 0xee, 0x36, 0x90, 0xb3, + 0x13, 0x02, 0x28, 0x94, 0xa5, 0xbb, 0x08, 0xfb, 0x9b, 0x5c, 0x02, 0x25, 0x9b, 0x0c, 0xca, 0xd4, + 0x25, 0x6f, 0x71, 0x10, 0xe7, 0x94, 0xf9, 0x00, 0xe6, 0xd0, 0xfa, 0x17, 0xa2, 0x51, 0xaa, 0xb4, + 0x47, 0xf7, 0x0c, 0xef, 0x06, 0x3c, 0x5e, 0x81, 0xbc, 0x0d, 0x90, 0x20, 0xc0, 0x09, 0xd9, 0x27, + 0xcd, 0xe8, 0x18, 0x04, 0xce, 0x5b, 0x7c, 0xfa, 0xb8, 0x23, 0x60, 0xd5, 0x0c, 0x58, 0x95, 0x43, + 0x32, 0x90, 0xe1, 0xe6, 0xe2, 0x1d, 0x66, 0x85, 0x17, 0xd8, 0x03, 0x11, 0x72, 0x5e, 0xfe, 0x67, + 0x01, 0x16, 0x77, 0x99, 0xa2, 0x80, 0xe6, 0xef, 0xf1, 0xe6, 0xf4, 0xbb, 0x50, 0x6a, 0xf4, 0x3b, + 0xe2, 0xee, 0x7e, 0x24, 0x10, 0x2f, 0xd0, 0x25, 0xb7, 0xd7, 0xef, 0xc8, 0x67, 0x80, 0x91, 0xa7, + 0x32, 0x7d, 0x83, 0x3b, 0xf1, 0x5d, 0x98, 0xe7, 0x7e, 0x0f, 0xe2, 0xa2, 0x46, 0xaa, 0x8a, 0x71, + 0x8f, 0x6e, 0xf0, 0x62, 0xe5, 0xba, 0x99, 0x7b, 0x4e, 0xa8, 0x7a, 0x8b, 0x00, 0xbc, 0x50, 0x8c, + 0xfd, 0xb9, 0x93, 0x19, 0xfb, 0x4a, 0x60, 0xef, 0xfc, 0x49, 0x02, 0x7b, 0x37, 0x6e, 0x41, 0x49, + 0xe9, 0xcf, 0xa9, 0x34, 0xc7, 0x5f, 0x17, 0x60, 0x19, 0xbf, 0x2a, 0x7e, 0x4a, 0xfa, 0xff, 0xbc, + 0xba, 0xb8, 0x9d, 0xba, 0xba, 0x58, 0x57, 0xe7, 0x8b, 0x7f, 0xd9, 0x31, 0x77, 0x16, 0x77, 0x61, + 0x35, 0xc7, 0x48, 0xde, 0x83, 0x39, 0xd6, 0x7d, 0x69, 0xea, 0xe9, 0xd9, 0x15, 0x90, 0x80, 0xc0, + 0xb0, 0x0f, 0x1f, 0x79, 0x9c, 0xbb, 0xfc, 0x6f, 0x0d, 0x96, 0x04, 0x24, 0x60, 0xf4, 0xb8, 0xff, + 0x8d, 0xc3, 0x79, 0x2d, 0x3b, 0x9c, 0x3c, 0x38, 0x46, 0x0c, 0xe7, 0x7f, 0x7b, 0x10, 0x6f, 0xa5, + 0x06, 0xf1, 0x7c, 0x1c, 0x12, 0x2e, 0x3f, 0xe7, 0x98, 0x31, 0xfc, 0x13, 0x82, 0xa4, 0xa4, 0x19, + 0xc9, 0xcf, 0x61, 0xd1, 0x09, 0x9f, 0xa7, 0x2c, 0xa6, 0x6b, 0x53, 0x1a, 0xbd, 0x11, 0x33, 0xf2, + 0x3d, 0x85, 0x87, 0x4d, 0x14, 0x3e, 0x0f, 0x72, 0xcf, 0x38, 0x49, 0x93, 0xcc, 0x68, 0x4a, 0x57, + 0x3b, 0xcd, 0xd2, 0x17, 0x2e, 0x9a, 0x18, 0xef, 0xf5, 0xc7, 0x22, 0x40, 0xe2, 0xdd, 0xc6, 0x36, + 0x60, 0x98, 0x02, 0xce, 0x15, 0x77, 0xc7, 0x48, 0x52, 0xd7, 0xb8, 0x20, 0x91, 0x6b, 0xe2, 0x52, + 0xb4, 0x30, 0x3d, 0x64, 0x1f, 0xaf, 0x47, 0x2b, 0xc2, 0x7b, 0x6c, 0x3f, 0xec, 0x75, 0xb8, 0x2c, + 0x2e, 0x6e, 0x5d, 0x45, 0x84, 0x96, 0x98, 0x3a, 0x25, 0xb7, 0x0b, 0xfa, 0x98, 0x55, 0x19, 0x43, + 0xce, 0x63, 0x74, 0xf6, 0xe5, 0x3d, 0x46, 0xe7, 0x5e, 0xc2, 0x63, 0x74, 0xfe, 0x84, 0x1e, 0xa3, + 0x2d, 0x58, 0xec, 0x46, 0xcf, 0xc2, 0x68, 0xdc, 0x1f, 0x1e, 0xa2, 0x3f, 0x59, 0x72, 0x95, 0xc5, + 0x86, 0xda, 0x96, 0x65, 0x7c, 0xbe, 0xf1, 0xc0, 0x8c, 0xf9, 0xd5, 0xe9, 0x8e, 0x89, 0xc2, 0xb1, + 0xe5, 0xeb, 0x02, 0x90, 0x7c, 0x03, 0xe4, 0x36, 0x94, 0xb8, 0x08, 0x0e, 0x86, 0xa3, 0x8f, 0x85, + 0xbb, 0x21, 0x8f, 0xab, 0x53, 0xc8, 0x6a, 0x5c, 0x1d, 0x27, 0x7b, 0xa3, 0x8f, 0x7b, 0xe4, 0x67, + 0x70, 0x16, 0x27, 0x60, 0x10, 0x0e, 0xbb, 0xfd, 0xfd, 0x00, 0x21, 0x45, 0x3a, 0x3d, 0x81, 0xd4, + 0xfe, 0x16, 0xa6, 0x14, 0xc9, 0x17, 0x4f, 0x99, 0x28, 0xf4, 0xea, 0x6b, 0x21, 0x67, 0x8b, 0x33, + 0x12, 0x1f, 0x74, 0xb5, 0xfe, 0xe3, 0x49, 0xaf, 0x27, 0xe6, 0xde, 0xc0, 0xd4, 0xcd, 0x99, 0xb2, + 0x29, 0x0d, 0x9f, 0x49, 0x1a, 0xae, 0x4d, 0x7a, 0x3d, 0xf2, 0x3e, 0x40, 0x3f, 0x0a, 0x9e, 0x76, + 0x47, 0x23, 0xfe, 0xa0, 0x10, 0x7b, 0xe4, 0x26, 0x54, 0x75, 0x18, 0xfb, 0x51, 0x93, 0x13, 0xc9, + 0x0f, 0x01, 0xdd, 0xf1, 0x31, 0x4e, 0x05, 0x57, 0xc0, 0x9c, 0xc0, 0x5e, 0x94, 0xc4, 0xf4, 0x74, + 0x1e, 0x84, 0xb4, 0xfb, 0x89, 0xf4, 0x2a, 0x7a, 0x08, 0xab, 0xc2, 0x21, 0x64, 0xb7, 0x3b, 0x7e, + 0x22, 0xf4, 0xdf, 0x57, 0x51, 0x9e, 0x15, 0x05, 0xf8, 0x6f, 0xb3, 0x00, 0xe6, 0x2e, 0x95, 0x21, + 0xa0, 0xd7, 0x61, 0x8e, 0x69, 0xf5, 0xf2, 0x76, 0x00, 0xef, 0x56, 0xb1, 0x5d, 0xf5, 0x6e, 0x15, + 0x39, 0xd8, 0x7e, 0xf5, 0xc2, 0x03, 0xbc, 0xa0, 0x2a, 0x24, 0x57, 0x09, 0x43, 0x4e, 0x4a, 0x69, + 0x91, 0x9c, 0x44, 0x1a, 0x00, 0x49, 0x50, 0xa6, 0xb0, 0x33, 0x57, 0x93, 0xe8, 0x26, 0x51, 0x20, + 0x40, 0xf5, 0x92, 0xc0, 0x4e, 0x75, 0xf9, 0x24, 0x6c, 0x64, 0x07, 0x66, 0xfd, 0x4e, 0xec, 0x6f, + 0x3a, 0x25, 0x54, 0xf5, 0x8a, 0x40, 0xd2, 0x4f, 0xc2, 0x55, 0xcf, 0x8c, 0x3b, 0xa9, 0x84, 0x23, + 0xd8, 0x08, 0xb1, 0x60, 0x5e, 0x64, 0x49, 0x9a, 0x82, 0x5b, 0x20, 0x92, 0x24, 0x09, 0x98, 0x20, + 0x24, 0xaa, 0x5a, 0x87, 0xc8, 0x87, 0xf4, 0x2e, 0x14, 0x29, 0x6d, 0x8a, 0x00, 0x8d, 0xe5, 0xc4, + 0x66, 0xa0, 0xb4, 0x29, 0x33, 0xc1, 0x3d, 0x55, 0xaa, 0x31, 0x66, 0xf2, 0x23, 0x28, 0x29, 0x0a, + 0xb1, 0x08, 0x6d, 0xc2, 0x31, 0xe8, 0x26, 0x64, 0x55, 0xac, 0x28, 0xdc, 0xa4, 0x01, 0xfa, 0xce, + 0xe4, 0x51, 0x68, 0x0e, 0x06, 0xe8, 0x2b, 0xf9, 0x2c, 0x1c, 0x72, 0xc0, 0xbf, 0x85, 0x04, 0x61, + 0x27, 0xe8, 0x0c, 0x06, 0xc1, 0xbe, 0x2c, 0x55, 0x6f, 0x48, 0xb2, 0x35, 0x49, 0x0b, 0x56, 0x69, + 0x38, 0x9e, 0x0c, 0xb8, 0x3b, 0x44, 0xad, 0x3f, 0x64, 0x26, 0x02, 0x0f, 0x84, 0x42, 0x30, 0x92, + 0x11, 0x2b, 0x94, 0x3e, 0x28, 0x8f, 0xfb, 0xc3, 0x8c, 0xb9, 0x90, 0xaf, 0x5c, 0x0e, 0xd5, 0x29, + 0x67, 0xe7, 0x6e, 0xda, 0xf0, 0xc0, 0x73, 0x57, 0x1a, 0x1e, 0x89, 0xb9, 0xf1, 0xf6, 0x11, 0xc1, + 0xba, 0xf8, 0x9c, 0xa5, 0x04, 0xeb, 0xa6, 0x42, 0x74, 0x3f, 0x9f, 0x55, 0x40, 0x20, 0xc4, 0x5c, + 0x7c, 0x08, 0x70, 0xb7, 0xdf, 0x8d, 0x9a, 0xe1, 0xf8, 0x49, 0x7f, 0x5f, 0x89, 0x19, 0x2e, 0xfd, + 0xa2, 0xdf, 0x8d, 0x82, 0xa7, 0x48, 0xfe, 0xfa, 0xab, 0xcb, 0x0a, 0x93, 0xa7, 0xfc, 0x4d, 0xbe, + 0x0f, 0x8b, 0xec, 0x97, 0x9f, 0x38, 0x75, 0xf0, 0x8b, 0x44, 0xac, 0x2d, 0x32, 0x4a, 0xc6, 0x0c, + 0xe4, 0x16, 0xa2, 0x72, 0x76, 0x07, 0x63, 0x45, 0xbd, 0x95, 0x10, 0x9c, 0xdd, 0xc1, 0x38, 0x0b, + 0xa8, 0xa3, 0x30, 0x93, 0x7a, 0xdc, 0x75, 0x89, 0xeb, 0x2a, 0xc0, 0x3f, 0xf1, 0xb6, 0x4c, 0xac, + 0xb5, 0x40, 0xa2, 0xc0, 0xaa, 0x19, 0x38, 0x32, 0xd5, 0xb0, 0x13, 0xb4, 0x5e, 0xe5, 0xcf, 0x1b, + 0xe2, 0x94, 0xe1, 0x9d, 0x18, 0x3d, 0xd9, 0x0f, 0xf6, 0x90, 0x9c, 0xea, 0x44, 0xcc, 0x4c, 0xb6, + 0x60, 0x85, 0x47, 0xb6, 0xc5, 0xf8, 0xf0, 0xe2, 0xc4, 0x41, 0xd9, 0x96, 0x00, 0xc8, 0xab, 0xff, + 0x3e, 0x53, 0x81, 0xd4, 0x60, 0x0e, 0x4d, 0x3c, 0x11, 0x5e, 0x74, 0x41, 0xb5, 0x6d, 0xb3, 0xfb, + 0x08, 0xe5, 0x0a, 0x5a, 0xb5, 0xaa, 0x5c, 0x41, 0x56, 0xf2, 0x11, 0x80, 0x15, 0x0d, 0xfb, 0xbd, + 0x1e, 0x62, 0xcd, 0x2c, 0xa0, 0x81, 0x74, 0x29, 0xbd, 0x1f, 0xb1, 0x95, 0x84, 0x49, 0x44, 0x72, + 0xe3, 0xef, 0x20, 0x83, 0x48, 0xa3, 0xb4, 0x55, 0xb6, 0x61, 0x9e, 0x6f, 0x46, 0xc4, 0x6d, 0x12, + 0x48, 0x94, 0x0a, 0xea, 0x0f, 0xc7, 0x6d, 0x12, 0xf4, 0x3c, 0x6e, 0x93, 0x52, 0xa1, 0xbc, 0x03, + 0xe7, 0x8e, 0xfa, 0xb0, 0x94, 0x51, 0xaa, 0x9d, 0xd4, 0x28, 0xfd, 0x43, 0x11, 0x96, 0xb0, 0x35, + 0x29, 0x85, 0x4d, 0x58, 0xa6, 0x93, 0x47, 0x71, 0x18, 0xa6, 0x94, 0xc6, 0xd8, 0xbf, 0x91, 0x5a, + 0xa0, 0x3e, 0x3c, 0xa5, 0x6a, 0x10, 0x0b, 0xce, 0xc8, 0x93, 0x60, 0x5b, 0xfa, 0x9c, 0xc5, 0x90, + 0x49, 0x12, 0x20, 0x20, 0x9f, 0x1f, 0x23, 0x53, 0x29, 0x39, 0x0f, 0x8a, 0xa7, 0x39, 0x0f, 0x66, + 0x4f, 0x74, 0x1e, 0xfc, 0x04, 0x96, 0xe4, 0x7f, 0x43, 0x49, 0x3e, 0xf7, 0x6a, 0x92, 0x3c, 0xd5, + 0x18, 0x69, 0xc4, 0x12, 0x7d, 0xfe, 0x58, 0x89, 0x8e, 0xaf, 0x79, 0x72, 0x97, 0xe5, 0x52, 0xde, + 0x89, 0x36, 0x10, 0x40, 0x7e, 0xbb, 0xd2, 0x7a, 0x89, 0x53, 0xf2, 0x3d, 0x58, 0x6c, 0xf4, 0xe5, + 0x43, 0x8e, 0x72, 0x83, 0xde, 0x93, 0x44, 0x55, 0x5d, 0x88, 0x39, 0xe3, 0xd3, 0xad, 0xf8, 0x3a, + 0x4e, 0xb7, 0x5b, 0x00, 0xc2, 0x99, 0x31, 0x01, 0x7e, 0xc6, 0x2d, 0x23, 0xa3, 0x70, 0xd2, 0x17, + 0xf9, 0x0a, 0x33, 0x93, 0x4e, 0xc2, 0xe5, 0xc3, 0xdc, 0xdb, 0xeb, 0x4f, 0xa2, 0x71, 0x2a, 0x53, + 0x8a, 0x08, 0xb8, 0x63, 0x47, 0x02, 0x96, 0xa9, 0xe2, 0x21, 0x53, 0xed, 0xf5, 0x4e, 0x08, 0xb9, + 0x17, 0xfb, 0xaa, 0x1d, 0x9b, 0x38, 0xb2, 0x9c, 0x1b, 0xa1, 0xa9, 0x1e, 0x6a, 0xe5, 0x3f, 0x6b, + 0x2a, 0x5e, 0xdd, 0x4b, 0x4c, 0xf5, 0x07, 0x00, 0xf1, 0x4b, 0xba, 0x9c, 0x6b, 0x6e, 0x51, 0xc5, + 0x54, 0x75, 0x94, 0x13, 0x5e, 0xe5, 0x6b, 0x8a, 0xaf, 0xeb, 0x6b, 0x7c, 0x28, 0xb9, 0xbf, 0x1c, + 0x77, 0x12, 0xd7, 0x0b, 0xa0, 0xb1, 0x26, 0x8b, 0x92, 0x49, 0x26, 0xb8, 0x4c, 0xf4, 0xe0, 0xa9, + 0x09, 0x2e, 0xe3, 0x8a, 0xe5, 0x7b, 0xb0, 0xa2, 0x86, 0x0a, 0x1c, 0x46, 0x7b, 0xe4, 0xc7, 0x1c, + 0xef, 0x43, 0x4b, 0xd9, 0x1a, 0x0a, 0x13, 0x93, 0xb8, 0x87, 0xd1, 0x1e, 0xd7, 0x7f, 0x3a, 0xcf, + 0xd5, 0xbe, 0xa2, 0x15, 0xf8, 0xa5, 0x06, 0x24, 0xcf, 0xae, 0x4a, 0x13, 0xed, 0x7f, 0xa0, 0x5d, + 0x66, 0xb4, 0xb2, 0xd9, 0xd3, 0x68, 0x65, 0xc6, 0x6f, 0x35, 0x58, 0xb1, 0xcd, 0xa6, 0x00, 0x97, + 0xe3, 0x2f, 0x02, 0xdf, 0x86, 0x4b, 0xb6, 0xd9, 0x0c, 0x5a, 0x6e, 0xc3, 0xae, 0x3c, 0x08, 0x8e, + 0x84, 0xae, 0xb9, 0x04, 0xdf, 0xca, 0xb3, 0x24, 0x2f, 0x07, 0x17, 0x61, 0x3d, 0x5f, 0x2c, 0xe1, + 0x6d, 0x8e, 0xae, 0x2c, 0x91, 0x70, 0x8a, 0xc6, 0x1d, 0x58, 0x91, 0xa8, 0x2f, 0x7e, 0x83, 0x22, + 0x4a, 0xdb, 0x0a, 0x94, 0xee, 0x5b, 0x9e, 0x5d, 0x7b, 0x10, 0xd4, 0xda, 0x8d, 0x86, 0x3e, 0x43, + 0x96, 0x61, 0x51, 0x10, 0x2a, 0xa6, 0xae, 0x91, 0x25, 0x58, 0xb0, 0x1d, 0x6a, 0x55, 0xda, 0x9e, + 0xa5, 0x17, 0x8c, 0x3b, 0x70, 0xa6, 0x35, 0xec, 0x3e, 0xeb, 0x8c, 0xc3, 0x9d, 0xf0, 0x10, 0x2f, + 0xfe, 0xdf, 0x80, 0xa2, 0x67, 0xee, 0xea, 0x33, 0x04, 0x60, 0xbe, 0xb5, 0x53, 0xa1, 0xef, 0xbc, + 0xa3, 0x6b, 0xa4, 0x04, 0x6f, 0x6c, 0x57, 0x5a, 0xc1, 0x4e, 0x93, 0xea, 0x05, 0xf6, 0xc3, 0xdc, + 0xa5, 0xf8, 0xa3, 0x68, 0xfc, 0x00, 0x56, 0x51, 0x57, 0x68, 0x74, 0x47, 0xe3, 0x30, 0x0a, 0x87, + 0xd8, 0x87, 0x25, 0x58, 0xa0, 0x21, 0xdb, 0xe4, 0xe3, 0x90, 0x77, 0xa0, 0x39, 0xe9, 0x8d, 0xbb, + 0x83, 0x5e, 0xf8, 0x2b, 0x5d, 0x33, 0x6e, 0xc1, 0x8a, 0xd7, 0x9f, 0x8c, 0xbb, 0xd1, 0x01, 0x1d, + 0x33, 0x8e, 0x83, 0x43, 0xf2, 0x26, 0xac, 0xb6, 0x1d, 0xb3, 0xb9, 0x65, 0x6f, 0xb7, 0xdd, 0x36, + 0x0d, 0x9a, 0xa6, 0x5f, 0xa9, 0xf3, 0x67, 0x87, 0xa6, 0x4b, 0xfd, 0xc0, 0xb3, 0x2a, 0x96, 0xe3, + 0xeb, 0x9a, 0xf1, 0x1b, 0x0d, 0xce, 0xb4, 0x47, 0xc2, 0x55, 0xb6, 0x8d, 0xae, 0xf4, 0x57, 0xe0, + 0x62, 0x9b, 0x5a, 0x5e, 0xe0, 0xbb, 0x3b, 0x96, 0x13, 0xb4, 0xa9, 0xb9, 0x9d, 0xc5, 0x4d, 0xba, + 0x0c, 0x17, 0x14, 0x0e, 0xcf, 0xaa, 0xb8, 0xf7, 0x2d, 0x2f, 0x68, 0x99, 0x94, 0xee, 0xba, 0x5e, + 0x55, 0xd7, 0xc8, 0x06, 0xac, 0x1d, 0xc1, 0xd0, 0xac, 0x99, 0x7a, 0x21, 0x57, 0xe6, 0x58, 0xbb, + 0x66, 0x23, 0xd8, 0x72, 0x7d, 0xbd, 0x68, 0x34, 0xd9, 0x41, 0x87, 0xd0, 0x22, 0x1c, 0x91, 0x75, + 0x01, 0x66, 0x1d, 0xd7, 0xb1, 0xb2, 0x4f, 0x43, 0x4b, 0xb0, 0x60, 0xb6, 0x5a, 0x9e, 0x7b, 0x1f, + 0x27, 0x14, 0x60, 0xbe, 0x6a, 0x39, 0xac, 0x67, 0x45, 0x56, 0xd2, 0xf2, 0xdc, 0xa6, 0xeb, 0x5b, + 0x55, 0x7d, 0xd6, 0xf0, 0xe4, 0x86, 0x91, 0x8d, 0xee, 0xf5, 0xf9, 0x3b, 0x4c, 0xd5, 0xaa, 0x99, + 0xed, 0x86, 0x2f, 0x06, 0xe4, 0x41, 0xe0, 0x59, 0xf7, 0xda, 0x16, 0xf5, 0xa9, 0xae, 0x11, 0x1d, + 0x96, 0x1c, 0xcb, 0xaa, 0xd2, 0xc0, 0xb3, 0xee, 0xdb, 0xd6, 0xae, 0x5e, 0x60, 0x6d, 0xf2, 0xbf, + 0xd9, 0x7f, 0x30, 0x3e, 0xd7, 0x80, 0x70, 0x58, 0x16, 0x89, 0x9c, 0x89, 0xf3, 0xb3, 0x09, 0x1b, + 0x75, 0x36, 0xb0, 0xf8, 0x69, 0x4d, 0xb7, 0x9a, 0x1d, 0xb2, 0x35, 0x20, 0x99, 0x72, 0xb7, 0x56, + 0xd3, 0x35, 0x72, 0x01, 0xce, 0x66, 0xe8, 0x55, 0xcf, 0x6d, 0xe9, 0x85, 0x8d, 0xc2, 0x82, 0x46, + 0xce, 0xe7, 0x0a, 0x77, 0x2c, 0xab, 0xa5, 0x17, 0xd9, 0x14, 0x65, 0x0a, 0xe4, 0x02, 0xe4, 0xd5, + 0x67, 0x8d, 0x4f, 0x35, 0x58, 0xe3, 0xdd, 0x94, 0xab, 0x39, 0xee, 0xea, 0x45, 0x58, 0x17, 0x08, + 0x52, 0x47, 0x75, 0xf4, 0x1c, 0xe8, 0xa9, 0x52, 0xde, 0xcd, 0x37, 0x61, 0x35, 0x45, 0xc5, 0x7e, + 0x14, 0xd8, 0x5e, 0x4d, 0x91, 0xb7, 0x2c, 0xea, 0x07, 0x56, 0xad, 0xe6, 0x7a, 0x3e, 0xef, 0x48, + 0xd1, 0x28, 0xc3, 0x6a, 0x25, 0x1c, 0x8e, 0x99, 0x0d, 0x12, 0x8d, 0xba, 0xfd, 0x08, 0xbb, 0xb0, + 0x0c, 0x8b, 0xd6, 0x47, 0xbe, 0xe5, 0x50, 0xdb, 0x75, 0xf4, 0x19, 0xe3, 0x62, 0x86, 0x47, 0xee, + 0x1a, 0x4a, 0xeb, 0xfa, 0x8c, 0xd1, 0x81, 0x65, 0xe9, 0x9a, 0xca, 0x57, 0xc5, 0x26, 0x6c, 0xc8, + 0xb5, 0x86, 0xfb, 0x37, 0xfb, 0x09, 0xeb, 0x70, 0x2e, 0x5f, 0x6e, 0xf9, 0xba, 0xc6, 0x66, 0x21, + 0x53, 0xc2, 0xe8, 0x05, 0xe3, 0xa7, 0xb0, 0x94, 0x82, 0x98, 0x3e, 0x0f, 0x67, 0xd5, 0xdf, 0xad, + 0x30, 0xda, 0xef, 0x46, 0x07, 0xfa, 0x4c, 0xb6, 0xc0, 0x9b, 0x44, 0x11, 0x2b, 0xc0, 0x15, 0xaf, + 0x16, 0xf8, 0xe1, 0xf0, 0x69, 0x37, 0xea, 0x8c, 0xc3, 0x7d, 0xbd, 0x60, 0xdc, 0x80, 0xe5, 0x14, + 0x14, 0x0f, 0xfb, 0xb4, 0x86, 0x2b, 0x04, 0x42, 0xd3, 0xaa, 0xda, 0xed, 0xa6, 0x3e, 0xc7, 0xd6, + 0x7a, 0xdd, 0xde, 0xae, 0xeb, 0x60, 0xfc, 0x4e, 0x63, 0x2a, 0x29, 0xc2, 0x55, 0x36, 0x6b, 0xa6, + 0x1c, 0x0c, 0x36, 0x11, 0x1c, 0xb5, 0xcb, 0xa2, 0x94, 0xbf, 0x19, 0x5e, 0x84, 0x75, 0xf1, 0x23, + 0x30, 0x9d, 0x6a, 0x50, 0x37, 0xbd, 0xea, 0xae, 0xe9, 0xb1, 0xd9, 0x79, 0xa0, 0x17, 0x70, 0xc9, + 0x29, 0x94, 0xc0, 0x77, 0xdb, 0x95, 0xba, 0x5e, 0x64, 0x33, 0x9c, 0xa2, 0xb7, 0x6c, 0x47, 0x9f, + 0xc5, 0x05, 0x9c, 0xe3, 0xc6, 0x66, 0x59, 0xf9, 0x9c, 0xd1, 0x05, 0x3d, 0x1b, 0x9f, 0x93, 0x7b, + 0xbc, 0xf5, 0xda, 0x8e, 0xc3, 0x77, 0xe8, 0x0a, 0x94, 0x5c, 0xbf, 0x6e, 0x79, 0x02, 0x57, 0x0d, + 0x81, 0xd4, 0xda, 0x8e, 0xd9, 0xf6, 0xeb, 0xae, 0x67, 0x3f, 0xc4, 0xad, 0xba, 0x0e, 0xe7, 0x68, + 0xc3, 0xac, 0xec, 0x04, 0x8e, 0xeb, 0x07, 0xb6, 0x13, 0x54, 0xea, 0xa6, 0xe3, 0x58, 0x0d, 0x1d, + 0x8c, 0xbf, 0x68, 0x70, 0xe1, 0x98, 0x07, 0x1e, 0xf2, 0x16, 0x5c, 0xaf, 0x5b, 0x66, 0xb5, 0x61, + 0x51, 0x1a, 0xb0, 0x26, 0x2d, 0xc7, 0x17, 0xef, 0xa8, 0x47, 0x2e, 0x87, 0xeb, 0xf0, 0x9d, 0xe3, + 0xd9, 0x13, 0xc1, 0xf2, 0x5d, 0xb8, 0x7a, 0x3c, 0xab, 0x10, 0x34, 0x05, 0x62, 0xc0, 0xb5, 0xe3, + 0x39, 0x63, 0x01, 0x55, 0x34, 0x3e, 0xd3, 0x60, 0xed, 0x68, 0x7b, 0x8c, 0xf5, 0xcd, 0x76, 0xa8, + 0x6f, 0x36, 0x1a, 0x41, 0xcb, 0xf4, 0xcc, 0x66, 0x60, 0x39, 0x9e, 0xdb, 0x68, 0x1c, 0xb5, 0x31, + 0xaf, 0xc2, 0x95, 0xe9, 0xac, 0xb4, 0xe2, 0xd9, 0x2d, 0xb6, 0xc2, 0xcb, 0xb0, 0x39, 0x9d, 0xcb, + 0xb2, 0x2b, 0x96, 0x5e, 0xd8, 0xfa, 0xf0, 0x8b, 0x7f, 0x6c, 0xce, 0x7c, 0xf1, 0x62, 0x53, 0xfb, + 0xf2, 0xc5, 0xa6, 0xf6, 0xf7, 0x17, 0x9b, 0xda, 0xc3, 0xef, 0x9d, 0x22, 0x7f, 0xe2, 0xa3, 0x79, + 0x74, 0x1c, 0xb8, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x74, 0xf9, 0xb6, 0x3a, 0x82, + 0x01, 0x00, } func (this *PluginSpecV1) Equal(that interface{}) bool { @@ -37547,6 +37561,18 @@ func (m *RegisterUsingTokenRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.BotGeneration != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.BotGeneration)) + i-- + dAtA[i] = 0x70 + } + if len(m.BotInstanceID) > 0 { + i -= len(m.BotInstanceID) + copy(dAtA[i:], m.BotInstanceID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.BotInstanceID))) + i-- + dAtA[i] = 0x6a + } if m.Expires != nil { n270, err270 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) if err270 != nil { @@ -50989,6 +51015,13 @@ func (m *RegisterUsingTokenRequest) Size() (n int) { l = github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires) n += 1 + l + sovTypes(uint64(l)) } + l = len(m.BotInstanceID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.BotGeneration != 0 { + n += 1 + sovTypes(uint64(m.BotGeneration)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -101093,6 +101126,57 @@ func (m *RegisterUsingTokenRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotInstanceID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BotInstanceID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BotGeneration", wireType) + } + m.BotGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BotGeneration |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/constants.go b/constants.go index fa231f3d0c4b4..3b55a69080c6e 100644 --- a/constants.go +++ b/constants.go @@ -502,6 +502,10 @@ const ( // CertExtensionBotName indicates the name of the Machine ID bot this // certificate was issued to, if any. CertExtensionBotName = "bot-name@goteleport.com" + // CertExtensionBotInstanceID indicates the unique identifier of this + // Machine ID bot instance, if any. This identifier is persisted through + // certificate renewals. + CertExtensionBotInstanceID = "bot-instance-id@goteleport.com" // CertCriticalOptionSourceAddress is a critical option that defines IP addresses (in CIDR notation) // from which this certificate is accepted for authentication. diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 4d19e289b4ff9..3bd69ea0cfaeb 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -334,6 +334,12 @@ func NewServer(cfg *InitConfig, opts ...ServerOption) (*Server, error) { return nil, trace.Wrap(err) } } + if cfg.BotInstance == nil { + cfg.BotInstance, err = local.NewBotInstanceService(cfg.Backend, cfg.Clock) + if err != nil { + return nil, trace.Wrap(err) + } + } limiter, err := limiter.NewConnectionsLimiter(limiter.Config{ MaxConnections: defaults.LimiterMaxConcurrentSignatures, @@ -421,6 +427,7 @@ func NewServer(cfg *InitConfig, opts ...ServerOption) (*Server, error) { Notifications: cfg.Notifications, AccessMonitoringRules: cfg.AccessMonitoringRules, CrownJewels: cfg.CrownJewels, + BotInstance: cfg.BotInstance, } as := Server{ @@ -618,6 +625,7 @@ type Services struct { services.KubeWaitingContainer services.AccessMonitoringRules services.CrownJewels + services.BotInstance } // GetWebSession returns existing web session described by req. @@ -1957,6 +1965,9 @@ type certRequest struct { deviceExtensions DeviceExtensions // botName is the name of the bot requesting this cert, if any botName string + // botInstanceID is the unique identifier of the bot instance associated + // with this cert, if any + botInstanceID string } // check verifies the cert request is valid. @@ -2782,6 +2793,7 @@ func generateCert(ctx context.Context, a *Server, req certRequest, caType types. Renewable: req.renewable, Generation: req.generation, BotName: req.botName, + BotInstanceID: req.botInstanceID, CertificateExtensions: req.checker.CertificateExtensions(), AllowedResourceIDs: requestedResourcesStr, ConnectionDiagnosticID: req.connectionDiagnosticID, @@ -2877,6 +2889,7 @@ func generateCert(ctx context.Context, a *Server, req certRequest, caType types. Renewable: req.renewable, Generation: req.generation, BotName: req.botName, + BotInstanceID: req.botInstanceID, AllowedResourceIDs: req.checker.GetAllowedResourceIDs(), PrivateKeyPolicy: attestedKeyPolicy, ConnectionDiagnosticID: req.connectionDiagnosticID, diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 67da561b3a2ee..ebde61dde9695 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -19,6 +19,7 @@ package auth import ( + "cmp" "context" "fmt" "net/url" @@ -602,13 +603,43 @@ func (a *ServerWithRoles) GetClusterCACert( } func (a *ServerWithRoles) RegisterUsingToken(ctx context.Context, req *types.RegisterUsingTokenRequest) (*proto.Certs, error) { + isProxy := a.hasBuiltinRole(types.RoleProxy) + // We do not trust remote addr in the request unless it's coming from the Proxy. - if !a.hasBuiltinRole(types.RoleProxy) || req.RemoteAddr == "" { + if !isProxy || req.RemoteAddr == "" { if err := setRemoteAddrFromContext(ctx, req); err != nil { return nil, trace.Wrap(err) } } + // Similarly, do not trust bot instance IDs or generation values in the + // request unless from a component with the proxy role (e.g. the join + // service). They will be derived from the client certificate otherwise. + if !isProxy { + if req.BotInstanceID != "" { + log.WithFields(logrus.Fields{ + "bot_instance_id": req.BotInstanceID, + }).Warnf("Untrusted client attempted to provide a bot instance ID, this will be ignored") + + req.BotInstanceID = "" + } + + if req.BotGeneration > 0 { + log.WithFields(logrus.Fields{ + "bot_generation": req.BotGeneration, + }).Warnf("Untrusted client attempted to provide a bot generation, this will be ignored") + + req.BotGeneration = 0 + } + } + + // If the identity has a BotInstanceID or BotGeneration included, copy it + // onto the request - but only if one wasn't already passed along via the + // proxy. + ident := a.context.Identity.GetIdentity() + req.BotInstanceID = cmp.Or(req.BotInstanceID, ident.BotInstanceID) + req.BotGeneration = cmp.Or(req.BotGeneration, int32(ident.Generation)) + // tokens have authz mechanism on their own, no need to check return a.authServer.RegisterUsingToken(ctx, req) } @@ -3153,7 +3184,14 @@ func (a *ServerWithRoles) generateUserCerts(ctx context.Context, req proto.UserC connectionDiagnosticID: req.ConnectionDiagnosticID, attestationStatement: keys.AttestationStatementFromProto(req.AttestationStatement), botName: getBotName(user), + + // Always pass through a bot instance ID if available. Legacy bots + // joining without an instance ID may have one generated when + // `updateBotInstance()` is called below, and this (empty) value will be + // overridden. + botInstanceID: a.context.Identity.GetIdentity().BotInstanceID, } + if user.GetName() != a.context.User.GetName() { certReq.impersonator = a.context.User.GetName() } else if isRoleImpersonation(req) { @@ -3199,10 +3237,24 @@ func (a *ServerWithRoles) generateUserCerts(ctx context.Context, req proto.UserC certReq.renewable = true } - // If the cert is renewable, process any certificate generation counter. + // If the cert is renewable, process any bot instance updates (generation + // counter, auth records, etc). `updateBotInstance()` may modify certain + // `certReq` attributes (generation, botInstanceID). if certReq.renewable { currentIdentityGeneration := a.context.Identity.GetIdentity().Generation - if err := a.authServer.validateGenerationLabel(ctx, user.GetName(), &certReq, currentIdentityGeneration); err != nil { + + // If we're handling a renewal for a bot, we want to return the + // Host CAs as well as the User CAs. + if certReq.botName != "" { + certReq.includeHostCA = true + } + + // Update the bot instance based on this authentication. This may create + // a new bot instance record if the identity is missing an instance ID. + if err := a.authServer.updateBotInstance( + ctx, &certReq, user.GetName(), certReq.botName, + certReq.botInstanceID, nil, int32(currentIdentityGeneration), + ); err != nil { return nil, trace.Wrap(err) } } diff --git a/lib/auth/authclient/clt.go b/lib/auth/authclient/clt.go index fd0d6ba856139..14a9df3fcac41 100644 --- a/lib/auth/authclient/clt.go +++ b/lib/auth/authclient/clt.go @@ -1542,12 +1542,19 @@ type ClientI interface { // (as per the default gRPC behavior). SecReportsClient() *secreport.Client - // BotServiceClient returns a client for security reports. + // BotServiceClient returns a client for the Machine ID Bot Service. // Clients connecting to older Teleport versions, still get a bot service client // when calling this method, but all RPCs will return "not implemented" errors // (as per the default gRPC behavior). BotServiceClient() machineidv1pb.BotServiceClient + // BotInstanceServiceClient returns a client for interacting with Machine ID + // Bot Instances. + // Clients connecting to older Teleport versions, still get a bot service client + // when calling this method, but all RPCs will return "not implemented" errors + // (as per the default gRPC behavior). + BotInstanceServiceClient() machineidv1pb.BotInstanceServiceClient + // UserLoginStateClient returns a user login state client. // Clients connecting to older Teleport versions still get a user login state client // when calling this method, but all RPCs will return "not implemented" errors diff --git a/lib/auth/bot.go b/lib/auth/bot.go index 472d5f672e922..801000c759412 100644 --- a/lib/auth/bot.go +++ b/lib/auth/bot.go @@ -20,25 +20,39 @@ package auth import ( "context" + "crypto/rsa" + "crypto/x509" + "encoding/pem" "fmt" "strconv" "time" "github.com/google/uuid" "github.com/gravitational/trace" + "github.com/sirupsen/logrus" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/gravitational/teleport/api/client/proto" + headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" + machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" apiutils "github.com/gravitational/teleport/api/utils" + "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/defaults" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" + "github.com/gravitational/teleport/lib/sshutils" ) -// validateGenerationLabel validates and updates a generation label. -func (a *Server) validateGenerationLabel(ctx context.Context, username string, certReq *certRequest, currentIdentityGeneration uint64) error { +// legacyValidateGenerationLabel validates and updates a generation label. +// TODO(timothyb89): This is deprecated in favor of bot instance generation +// counters. Upgrade/downgrade compatibility will be provided through v17. +// TODO(timothyb89): In v18, we should explicitly remove generation counters +// labels from the bot user. +// REMOVE IN V18: Use bot instance generation counters instead. +func (a *Server) legacyValidateGenerationLabel(ctx context.Context, username string, certReq *certRequest, currentIdentityGeneration uint64) error { // Fetch the user, bypassing the cache. We might otherwise fetch a stale // value in case of a rapid certificate renewal. user, err := a.Services.GetUser(ctx, username, false) @@ -108,33 +122,8 @@ func (a *Server) validateGenerationLabel(ctx context.Context, username string, c // The current generations must match to continue: if currentIdentityGeneration != currentUserGeneration { - // Lock the bot user indefinitely. - lock, err := types.NewLock(uuid.New().String(), types.LockSpecV2{ - Target: types.LockTarget{ - User: user.GetName(), - }, - Message: fmt.Sprintf( - "The bot user %q has been locked due to a certificate generation mismatch, possibly indicating a stolen certificate.", - user.GetName(), - ), - }) - if err != nil { - return trace.Wrap(err) - } - if err := a.UpsertLock(ctx, lock); err != nil { - return trace.Wrap(err) - } - - // Emit an audit event. - userMetadata := authz.ClientUserMetadata(ctx) - if err := a.emitter.EmitAuditEvent(a.closeCtx, &apievents.RenewableCertificateGenerationMismatch{ - Metadata: apievents.Metadata{ - Type: events.RenewableCertificateGenerationMismatchEvent, - Code: events.RenewableCertificateGenerationMismatchCode, - }, - UserMetadata: userMetadata, - }); err != nil { - log.WithError(err).Warn("Failed to emit renewable cert generation mismatch event") + if err := a.tryLockBotDueToGenerationMismatch(ctx, user.GetName()); err != nil { + log.WithError(err).Warnf("Failed to lock bot %q when a generation mismatch was detected", user.GetName()) } return trace.AccessDenied( @@ -168,6 +157,334 @@ func (a *Server) validateGenerationLabel(ctx context.Context, username string, c return nil } +func sshPublicKeyToPKIXPEM(pubKey []byte) ([]byte, error) { + cryptoPubKey, err := sshutils.CryptoPublicKey(pubKey) + if err != nil { + return nil, trace.Wrap(err) + } + + // Note: Manually unrolled `MarshalPublicKey` from + // https://github.com/gravitational/teleport/pull/43260 as it was not + // backported to v15. + switch pubKey := cryptoPubKey.(type) { + case *rsa.PublicKey: + pubPEM := pem.EncodeToMemory(&pem.Block{ + Type: "RSA PUBLIC KEY", + Bytes: x509.MarshalPKCS1PublicKey(pubKey), + }) + return pubPEM, nil + default: + return nil, trace.BadParameter("unsupported public key type %T", cryptoPubKey) + } +} + +// commitGenerationCounterToBotUser updates the legacy generation counter label +// for a user, but only when the counter is greater than the previous value. If +// multiple bot instances exist for a given bot user, only the largest counter +// value is persisted. This ensures that, if a cluster is downgraded, exactly +// one bot instance (with the largest generation value) will be able to +// reauthenticate. +func (a *Server) commitLegacyGenerationCounterToBotUser(ctx context.Context, username string, newValue uint64) error { + var err error + + for i := 0; i < 3; i++ { + user, err := a.Services.GetUser(ctx, username, false) + if err != nil { + return trace.Wrap(err) + } + + var currentUserGeneration uint64 + label := user.BotGenerationLabel() + if label != "" { + currentUserGeneration, err = strconv.ParseUint(label, 10, 64) + if err != nil { + return trace.BadParameter("user has invalid value for label %q", types.BotGenerationLabel) + } + } + + if newValue <= currentUserGeneration { + // Nothing to do, value is up to date + return nil + } + + // Clone the user and update the generation label. + userV2, ok := user.(*types.UserV2) + if !ok { + return trace.BadParameter("unsupported version of user: %T", user) + } + newUser := apiutils.CloneProtoMsg(userV2) + metadata := newUser.GetMetadata() + metadata.Labels[types.BotGenerationLabel] = fmt.Sprint(newValue) + newUser.SetMetadata(metadata) + + // Attempt to commit the change. If it fails due to a comparison + // failure, try again. + err = a.CompareAndSwapUser(ctx, newUser, user) + if err == nil { + return nil + } else if trace.IsCompareFailed(err) { + continue + } else { + return trace.Wrap(err) + } + } + + return trace.Wrap(err) +} + +// tryLockBotDueToGenerationMismatch creates a lock for the given bot user and +// emits a `RenewableCertificateGenerationMismatch` audit event. +func (a *Server) tryLockBotDueToGenerationMismatch(ctx context.Context, username string) error { + // TODO: In the future, consider only locking the current join method / token. + + // Lock the bot user indefinitely. + lock, err := types.NewLock(uuid.New().String(), types.LockSpecV2{ + Target: types.LockTarget{ + User: username, + }, + Message: fmt.Sprintf( + "The bot user %q has been locked due to a certificate generation mismatch, possibly indicating a stolen certificate.", + username, + ), + }) + if err != nil { + return trace.Wrap(err) + } + if err := a.UpsertLock(ctx, lock); err != nil { + return trace.Wrap(err) + } + + // Emit an audit event. + userMetadata := authz.ClientUserMetadata(ctx) + if err := a.emitter.EmitAuditEvent(a.closeCtx, &apievents.RenewableCertificateGenerationMismatch{ + Metadata: apievents.Metadata{ + Type: events.RenewableCertificateGenerationMismatchEvent, + Code: events.RenewableCertificateGenerationMismatchCode, + }, + UserMetadata: userMetadata, + }); err != nil { + log.WithError(err).Warn("Failed to emit renewable cert generation mismatch event") + } + + return nil +} + +// updateBotInstance updates the bot instance associated with the context +// identity, if any. If the optional `templateAuthRecord` is provided, various +// metadata fields will be copied into the newly generated auth record. +func (a *Server) updateBotInstance( + ctx context.Context, req *certRequest, + username, botName, botInstanceID string, + templateAuthRecord *machineidv1pb.BotInstanceStatusAuthentication, + currentIdentityGeneration int32, +) error { + if botName == "" { + // Only applies to bot identities + return nil + } + + // Check if this bot instance actually exists. + var instanceGeneration int32 + instanceNotFound := false + if botInstanceID != "" { + existingInstance, err := a.BotInstance.GetBotInstance(ctx, botName, botInstanceID) + if trace.IsNotFound(err) { + instanceNotFound = true + } else if err != nil { + // Some other error, bail. + return trace.Wrap(err) + } else { + // We have an existing instance, so fetch its generation. + auths := existingInstance.Status.LatestAuthentications + if len(auths) > 0 { + latest := auths[len(auths)-1] + instanceGeneration = latest.Generation + } + } + } + + // req.PublicKey is in SSH Authorized Keys format. For consistency, we + // only store public keys in PEM wrapped PKIX, DER format within + // BotInstances. + pkixPEM, err := sshPublicKeyToPKIXPEM(req.publicKey) + if err != nil { + return trace.Wrap(err, "converting key") + } + + authRecord := &machineidv1pb.BotInstanceStatusAuthentication{ + AuthenticatedAt: timestamppb.New(a.GetClock().Now()), + PublicKey: pkixPEM, + + // Note: This is presumed to be a token join. If not, a + // `templateAuthRecord` should be provided to override this value. + JoinMethod: string(types.JoinMethodToken), + } + + if templateAuthRecord != nil { + authRecord.JoinToken = templateAuthRecord.JoinToken + authRecord.JoinMethod = templateAuthRecord.JoinMethod + authRecord.Metadata = templateAuthRecord.Metadata + } + + // An empty bot instance most likely means a bot is rejoining after an + // upgrade, so a new bot instance should be generated. We may consider + // making this an error in the future. + if botInstanceID == "" || instanceNotFound { + instanceID, err := uuid.NewRandom() + if err != nil { + return trace.Wrap(err) + } + + // TODO(timothyb89): consider making this the only path where bot + // instances are created. We could call `updateBotInstance()` + // unconditionally from `generateInitialBotCerts()` and have only one + // codepath. (But may need to clean up log messages.) + + // Set the initial generation counter. Note that with bot instances, the + // counter is now set for all join methods, but only enforced for token + // joins. + if currentIdentityGeneration > 0 { + // If the incoming identity has a nonzero generation, validate it + // using the legacy check. This will increment the counter on the + // request automatically + if err := a.legacyValidateGenerationLabel(ctx, username, req, uint64(currentIdentityGeneration)); err != nil { + return trace.Wrap(err) + } + + // Copy the value from the request into the auth record. + authRecord.Generation = int32(req.generation) + } else { + // Otherwise, just set it to 1. + req.generation = 1 + authRecord.Generation = 1 + } + + log.WithFields(logrus.Fields{ + "bot_name": botName, + "invalid_instance_id": botInstanceID, + "new_instance_id": instanceID.String(), + }).Info("bot has no valid instance ID, a new instance will be generated") + + expires := a.GetClock().Now().Add(req.ttl + machineidv1.ExpiryMargin) + + bi := newBotInstance(&machineidv1pb.BotInstanceSpec{ + BotName: botName, + InstanceId: instanceID.String(), + }, authRecord, expires) + + if _, err := a.BotInstance.CreateBotInstance(ctx, bi); err != nil { + return trace.Wrap(err) + } + + // Add the new ID to the cert request + req.botInstanceID = instanceID.String() + + return nil + } + + l := log.WithFields(logrus.Fields{ + "bot_name": botName, + "bot_instance_id": botInstanceID, + }) + + if currentIdentityGeneration == 0 { + // Nothing to do. + l.Warn("bot attempted to fetch certificates without providing a current identity generation, this is not allowed") + + return trace.AccessDenied("a current identity generation must be provided") + } else if currentIdentityGeneration > 0 && currentIdentityGeneration != instanceGeneration { + // For now, continue to only enforce generation counter checks on + // renewable (i.e. token) identities. + if req.renewable { + if err := a.tryLockBotDueToGenerationMismatch(ctx, username); err != nil { + l.WithError(err).Warn("Failed to lock bot when a generation mismatch was detected") + } + + return trace.AccessDenied( + "renewable cert generation mismatch for bot %s/%s: stored=%v, presented=%v", + botName, botInstanceID, + instanceGeneration, currentIdentityGeneration, + ) + } else { + // We'll still log the check failure, but won't deny access. This + // log data will help make an informed decision about reliability of + // the generation counter for all join methods in the future. + l.WithFields(logrus.Fields{ + "bot_instance_generation": instanceGeneration, + "bot_identity_generation": currentIdentityGeneration, + "bot_join_method": authRecord.JoinMethod, + }).Warn("Bot generation counter mismatch detected. This check is not enforced for this join method, " + + "but may indicate multiple uses of a bot identity and possibly a compromised certificate.") + } + } + + // Increment the generation counter the cert and bot instance. The counter + // should be incremented and stored even if it is not validated above. + newGeneration := instanceGeneration + 1 + authRecord.Generation = newGeneration + req.generation = uint64(newGeneration) + + // Commit the generation counter to the bot user for downgrade + // compatibility, but only if this is a renewable identity. Previous + // versions only expect a nonzero generation counter for token joins, so + // setting this for other methods will break compatibility. + if req.renewable { + if err := a.commitLegacyGenerationCounterToBotUser(ctx, username, uint64(newGeneration)); err != nil { + l.WithError(err).Warn("unable to commit legacy generation counter to bot user") + } + } + + _, err = a.BotInstance.PatchBotInstance(ctx, botName, botInstanceID, func(bi *machineidv1pb.BotInstance) (*machineidv1pb.BotInstance, error) { + if bi.Status == nil { + bi.Status = &machineidv1pb.BotInstanceStatus{} + } + + // Update the record's expiration timestamp based on the request TTL + // plus an expiry margin. + bi.Metadata.Expires = timestamppb.New(a.GetClock().Now().Add(req.ttl + machineidv1.ExpiryMargin)) + + // If we're at or above the limit, remove enough of the front elements + // to make room for the new one at the end. + if len(bi.Status.LatestAuthentications) >= machineidv1.AuthenticationHistoryLimit { + toRemove := len(bi.Status.LatestAuthentications) - machineidv1.AuthenticationHistoryLimit + 1 + bi.Status.LatestAuthentications = bi.Status.LatestAuthentications[toRemove:] + } + + // An initial auth record should have been added during initial join, + // but if not, add it now. + if bi.Status.InitialAuthentication == nil { + l.Warn("bot instance is missing its initial authentication record, a new one will be added") + bi.Status.InitialAuthentication = authRecord + } + + bi.Status.LatestAuthentications = append(bi.Status.LatestAuthentications, authRecord) + + return bi, nil + }) + + return trace.Wrap(err) +} + +// newBotInstance constructs a new bot instance from a spec and initial authentication +func newBotInstance( + spec *machineidv1pb.BotInstanceSpec, + initialAuth *machineidv1pb.BotInstanceStatusAuthentication, + expires time.Time, +) *machineidv1pb.BotInstance { + return &machineidv1pb.BotInstance{ + Kind: types.KindBotInstance, + Version: types.V1, + Metadata: &headerv1.Metadata{ + Expires: timestamppb.New(expires), + }, + Spec: spec, + Status: &machineidv1pb.BotInstanceStatus{ + InitialAuthentication: initialAuth, + LatestAuthentications: []*machineidv1pb.BotInstanceStatusAuthentication{initialAuth}, + }, + } +} + // generateInitialBotCerts is used to generate bot certs and overlaps // significantly with `generateUserCerts()`. However, it omits a number of // options (impersonation, access requests, role requests, actual cert renewal, @@ -175,7 +492,14 @@ func (a *Server) validateGenerationLabel(ctx context.Context, username string, c // care if the current identity is Nop. This function does not validate the // current identity at all; the caller is expected to validate that the client // is allowed to issue the (possibly renewable) certificates. -func (a *Server) generateInitialBotCerts(ctx context.Context, botName, username, loginIP string, pubKey []byte, expires time.Time, renewable bool) (*proto.Certs, error) { +// +// Returns a second argument of the bot instance ID for inclusion in audit logs. +func (a *Server) generateInitialBotCerts( + ctx context.Context, botName, username, loginIP string, pubKey []byte, + expires time.Time, renewable bool, + initialAuth *machineidv1pb.BotInstanceStatusAuthentication, + existingInstanceID string, currentIdentityGeneration int32, +) (*proto.Certs, string, error) { var err error // Extract the user and role set for whom the certificate will be generated. @@ -187,13 +511,13 @@ func (a *Server) generateInitialBotCerts(ctx context.Context, botName, username, userState, err := a.GetUserOrLoginState(ctx, username) if err != nil { log.WithError(err).Debugf("Could not impersonate user %v. The user could not be fetched from local store.", username) - return nil, trace.AccessDenied("access denied") + return nil, "", trace.AccessDenied("access denied") } // Do not allow SSO users to be impersonated. if userState.GetUserType() == types.UserTypeSSO { log.Warningf("Tried to issue a renewable cert for externally managed user %v, this is not supported.", username) - return nil, trace.AccessDenied("access denied") + return nil, "", trace.AccessDenied("access denied") } // Cap the cert TTL to the MaxRenewableCertTTL. @@ -205,17 +529,11 @@ func (a *Server) generateInitialBotCerts(ctx context.Context, botName, username, accessInfo := services.AccessInfoFromUserState(userState) clusterName, err := a.GetClusterName() if err != nil { - return nil, trace.Wrap(err) + return nil, "", trace.Wrap(err) } checker, err := services.NewAccessChecker(accessInfo, clusterName.GetClusterName(), a) if err != nil { - return nil, trace.Wrap(err) - } - - // renewable cert request must include a generation - var generation uint64 - if renewable { - generation = 1 + return nil, "", trace.Wrap(err) } // Generate certificate @@ -227,19 +545,55 @@ func (a *Server) generateInitialBotCerts(ctx context.Context, botName, username, traits: accessInfo.Traits, renewable: renewable, includeHostCA: true, - generation: generation, loginIP: loginIP, botName: botName, } - if err := a.validateGenerationLabel(ctx, userState.GetName(), &certReq, 0); err != nil { - return nil, trace.Wrap(err) + if existingInstanceID == "" { + // If no existing instance ID is known, create a new one. + uuid, err := uuid.NewRandom() + if err != nil { + return nil, "", trace.Wrap(err) + } + + initialAuth.Generation = 1 + + bi := newBotInstance(&machineidv1pb.BotInstanceSpec{ + BotName: botName, + InstanceId: uuid.String(), + }, initialAuth, expires.Add(machineidv1.ExpiryMargin)) + + _, err = a.BotInstance.CreateBotInstance(ctx, bi) + if err != nil { + return nil, "", trace.Wrap(err) + } + + certReq.botInstanceID = uuid.String() + certReq.generation = 1 + } else { + // Otherwise, reuse the existing instance ID, and pass the + // initialAuth along. + + // Note: botName is derived from the provision token rather than any + // value sent by the client, so we can trust it. + if err := a.updateBotInstance( + ctx, &certReq, username, botName, existingInstanceID, + initialAuth, currentIdentityGeneration, + ); err != nil { + return nil, "", trace.Wrap(err) + } + + // Only set the bot instance ID if it's empty; `updateBotInstance()` + // may set it if a new instance is created. + if certReq.botInstanceID == "" { + certReq.botInstanceID = existingInstanceID + } } certs, err := a.generateUserCert(ctx, certReq) if err != nil { - return nil, trace.Wrap(err) + return nil, "", trace.Wrap(err) } - return certs, nil + return certs, certReq.botInstanceID, nil } diff --git a/lib/auth/bot_test.go b/lib/auth/bot_test.go index 4c54114a96522..bff50bdb7558a 100644 --- a/lib/auth/bot_test.go +++ b/lib/auth/bot_test.go @@ -31,23 +31,38 @@ import ( "testing" "time" + "github.com/aws/aws-sdk-go/aws/credentials" "github.com/digitorus/pkcs7" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "github.com/sirupsen/logrus" "github.com/stretchr/testify/require" "golang.org/x/crypto/ssh" + "google.golang.org/grpc" + "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/client/webclient" headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/metadata" "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/lib/auth/authclient" "github.com/gravitational/teleport/lib/auth/join" "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" "github.com/gravitational/teleport/lib/auth/state" "github.com/gravitational/teleport/lib/auth/testauthority" "github.com/gravitational/teleport/lib/cloud/azure" + libevents "github.com/gravitational/teleport/lib/events" + "github.com/gravitational/teleport/lib/events/eventstest" "github.com/gravitational/teleport/lib/fixtures" + "github.com/gravitational/teleport/lib/kubernetestoken" + "github.com/gravitational/teleport/lib/reversetunnelclient" + "github.com/gravitational/teleport/lib/tbot/identity" "github.com/gravitational/teleport/lib/tlsca" "github.com/gravitational/teleport/lib/utils" ) @@ -60,12 +75,13 @@ func renewBotCerts( publicKey []byte, privateKey []byte, ) (*authclient.Client, *proto.Certs, tls.Certificate, error) { + fakeClock := srv.Clock().(clockwork.FakeClock) client := srv.NewClientWithCert(tlsCert) certs, err := client.GenerateUserCerts(ctx, proto.UserCertsRequest{ PublicKey: publicKey, Username: botUser, - Expires: time.Now().Add(time.Hour), + Expires: fakeClock.Now().Add(time.Hour), }) if err != nil { return nil, nil, tls.Certificate{}, trace.Wrap(err) @@ -84,8 +100,10 @@ func renewBotCerts( // work in ordinary conditions, with several rapid renewals. func TestRegisterBotCertificateGenerationCheck(t *testing.T) { t.Parallel() + srv := newTestTLSServer(t) ctx := context.Background() + fakeClock := srv.Clock().(clockwork.FakeClock) _, err := CreateRole(ctx, srv.Auth(), "example", types.RoleSpecV6{}) require.NoError(t, err) @@ -131,29 +149,220 @@ func TestRegisterBotCertificateGenerationCheck(t *testing.T) { require.NoError(t, err) checkCertLoginIP(t, certs.TLS, "127.0.0.1") + initialCert, err := tlsca.ParseCertificatePEM(certs.TLS) + require.NoError(t, err) + initialIdent, err := tlsca.FromSubject(initialCert.Subject, initialCert.NotAfter) + require.NoError(t, err) + + require.Equal(t, uint64(1), initialIdent.Generation) + require.Equal(t, "test", initialIdent.BotName) + require.NotEmpty(t, initialIdent.BotInstanceID) + tlsCert, err := tls.X509KeyPair(certs.TLS, privateKey) require.NoError(t, err) // Renew the cert a bunch of times. for i := 0; i < 10; i++ { + // Ensure the state of the bot instance before renewal is sane. + bi, err := srv.Auth().BotInstance.GetBotInstance(ctx, initialIdent.BotName, initialIdent.BotInstanceID) + require.NoError(t, err) + + // There should always be at least 1 entry as the initial join is + // duplicated in the list. + require.Len(t, bi.Status.LatestAuthentications, min(i+1, machineidv1.AuthenticationHistoryLimit)) + + // Generation starts at 1 for initial certs. + latest := bi.Status.LatestAuthentications[len(bi.Status.LatestAuthentications)-1] + require.Equal(t, int32(i+1), latest.Generation) + + lastExpires := bi.Metadata.Expires.AsTime() + + // Advance the clock a bit. + fakeClock.Advance(time.Minute) + _, certs, tlsCert, err = renewBotCerts(ctx, srv, tlsCert, bot.Status.UserName, publicKey, privateKey) require.NoError(t, err) // Parse the Identity - impersonatedTLSCert, err := tlsca.ParseCertificatePEM(certs.TLS) + renewedCert, err := tlsca.ParseCertificatePEM(certs.TLS) require.NoError(t, err) - impersonatedIdent, err := tlsca.FromSubject(impersonatedTLSCert.Subject, impersonatedTLSCert.NotAfter) + renewedIdent, err := tlsca.FromSubject(renewedCert.Subject, renewedCert.NotAfter) require.NoError(t, err) + // Validate that we receive 2 TLS CAs (Host and User) + require.Len(t, certs.TLSCACerts, 2) + // Cert must be renewable. - require.True(t, impersonatedIdent.Renewable) - require.False(t, impersonatedIdent.DisallowReissue) + require.True(t, renewedIdent.Renewable) + require.False(t, renewedIdent.DisallowReissue) // Initial certs have generation=1 and we start the loop with a renewal, so add 2 - require.Equal(t, uint64(i+2), impersonatedIdent.Generation) + require.Equal(t, uint64(i+2), renewedIdent.Generation) + + // Ensure the bot instance after renewal is sane. + bi, err = srv.Auth().BotInstance.GetBotInstance(ctx, initialIdent.BotName, initialIdent.BotInstanceID) + require.NoError(t, err) + + require.Len(t, bi.Status.LatestAuthentications, min(i+2, machineidv1.AuthenticationHistoryLimit)) + + latest = bi.Status.LatestAuthentications[len(bi.Status.LatestAuthentications)-1] + require.Equal(t, int32(i+2), latest.Generation) + + require.True(t, bi.Metadata.Expires.AsTime().After(lastExpires), "Metadata.Expires must be extended") } } +// TestRegisterBotInstance tests that bot instances are created properly on join +func TestRegisterBotInstance(t *testing.T) { + t.Parallel() + + srv := newTestTLSServer(t) + // Inject mockEmitter to capture audit events + mockEmitter := &eventstest.MockRecorderEmitter{} + srv.Auth().SetEmitter(mockEmitter) + ctx := context.Background() + + _, err := CreateRole(ctx, srv.Auth(), "example", types.RoleSpecV6{}) + require.NoError(t, err) + + // Create a new bot. + client, err := srv.NewClient(TestAdmin()) + require.NoError(t, err) + bot, err := client.BotServiceClient().CreateBot(ctx, &machineidv1pb.CreateBotRequest{ + Bot: &machineidv1pb.Bot{ + Metadata: &headerv1.Metadata{ + Name: "test", + }, + Spec: &machineidv1pb.BotSpec{ + Roles: []string{"example"}, + }, + }, + }) + require.NoError(t, err) + + token, err := types.NewProvisionTokenFromSpec("testxyzzy", time.Time{}, types.ProvisionTokenSpecV2{ + Roles: types.SystemRoles{types.RoleBot}, + BotName: bot.Metadata.Name, + }) + require.NoError(t, err) + require.NoError(t, client.CreateToken(ctx, token)) + + privateKey, publicKey, err := testauthority.New().GenerateKeyPair() + require.NoError(t, err) + sshPrivateKey, err := ssh.ParseRawPrivateKey(privateKey) + require.NoError(t, err) + tlsPublicKey, err := tlsca.MarshalPublicKeyFromPrivateKeyPEM(sshPrivateKey) + require.NoError(t, err) + + certs, err := join.Register(ctx, join.RegisterParams{ + Token: token.GetName(), + ID: state.IdentityID{ + Role: types.RoleBot, + }, + AuthServers: []utils.NetAddr{*utils.MustParseAddr(srv.Addr().String())}, + PublicTLSKey: tlsPublicKey, + PublicSSHKey: publicKey, + }) + require.NoError(t, err) + + // The returned certs should have a bot instance ID. + cert, err := tlsca.ParseCertificatePEM(certs.TLS) + require.NoError(t, err) + + ident, err := tlsca.FromSubject(cert.Subject, cert.NotAfter) + require.NoError(t, err) + + require.NotEmpty(t, ident.BotInstanceID) + + // The instance ID should match a bot instance record. + botInstance, err := srv.Auth().BotInstance.GetBotInstance(ctx, ident.BotName, ident.BotInstanceID) + require.NoError(t, err) + + require.Equal(t, ident.BotName, botInstance.GetSpec().BotName) + require.Equal(t, ident.BotInstanceID, botInstance.GetSpec().InstanceId) + + // The initial authentication record should be sane + ia := botInstance.GetStatus().InitialAuthentication + require.NotNil(t, ia) + require.Equal(t, int32(1), ia.Generation) + require.Equal(t, string(types.JoinMethodToken), ia.JoinMethod) + require.Equal(t, token.GetSafeName(), ia.JoinToken) + + // The latest authentications field should contain the same record (and + // only that record.) + require.Len(t, botInstance.GetStatus().LatestAuthentications, 1) + require.EqualExportedValues(t, ia, botInstance.GetStatus().LatestAuthentications[0]) + + // Validate that expected audit events were emitted... + auditEvents := mockEmitter.Events() + var joinEvent *events.BotJoin + for _, event := range auditEvents { + evt, ok := event.(*events.BotJoin) + if ok { + joinEvent = evt + break + } + } + require.NotNil(t, joinEvent) + require.Empty(t, + cmp.Diff(joinEvent, &events.BotJoin{ + Metadata: events.Metadata{ + Type: libevents.BotJoinEvent, + Code: libevents.BotJoinCode, + }, + Status: events.Status{ + Success: true, + }, + BotName: "test", + Method: string(types.JoinMethodToken), + TokenName: token.GetSafeName(), + ConnectionMetadata: events.ConnectionMetadata{ + RemoteAddr: "127.0.0.1", + }, + BotInstanceID: ident.BotInstanceID, + }, + // There appears to be a bug with cmp.Diff and nil event.Struct that + // causes a panic so let's just ignore it. + cmpopts.IgnoreFields(events.BotJoin{}, "Attributes"), + cmpopts.IgnoreFields(events.Metadata{}, "Time"), + cmpopts.EquateEmpty(), + ), + ) + + var certIssueEvent *events.CertificateCreate + for _, event := range auditEvents { + evt, ok := event.(*events.CertificateCreate) + if ok { + certIssueEvent = evt + break + } + } + require.NotNil(t, certIssueEvent) + require.Empty(t, + cmp.Diff(certIssueEvent, &events.CertificateCreate{ + Metadata: events.Metadata{ + Type: libevents.CertificateCreateEvent, + Code: libevents.CertificateCreateCode, + }, + CertificateType: "user", + Identity: &events.Identity{ + User: "bot-test", + Roles: []string{"bot-test"}, + RouteToCluster: "localhost", + ClientIP: "127.0.0.1", + TeleportCluster: "localhost", + PrivateKeyPolicy: "none", + BotName: "test", + BotInstanceID: ident.BotInstanceID, + }, + }, + cmpopts.IgnoreFields(events.Metadata{}, "Time"), + cmpopts.IgnoreFields(events.Identity{}, "Logins", "Expires"), + cmpopts.EquateEmpty(), + ), + ) +} + // TestRegisterBotCertificateGenerationStolen simulates a stolen renewable // certificate where a generation check is expected to fail. func TestRegisterBotCertificateGenerationStolen(t *testing.T) { @@ -462,6 +671,490 @@ func TestRegisterBot_RemoteAddr(t *testing.T) { }) } +// authClientForCerts is a test helper that creates an auth client for the given certs. +func authClientForCerts(t *testing.T, ctx context.Context, addr *utils.NetAddr, tlsPrivateKey, sshPublicKey []byte, certs *proto.Certs) *authclient.Client { + t.Helper() + + ident, err := identity.ReadIdentityFromStore(&identity.LoadIdentityParams{ + PrivateKeyBytes: tlsPrivateKey, + PublicKeyBytes: sshPublicKey, + TokenHashBytes: []byte{}, + }, certs) + require.NoError(t, err) + + facade := identity.NewFacade(false, true, ident) + + tlsConfig, err := facade.TLSConfig() + require.NoError(t, err) + sshConfig, err := facade.SSHClientConfig() + require.NoError(t, err) + + resolver, err := reversetunnelclient.CachingResolver( + ctx, + reversetunnelclient.WebClientResolver(&webclient.Config{ + Context: ctx, + ProxyAddr: addr.String(), + Insecure: true, + }), + nil /* clock */) + require.NoError(t, err) + + dialer, err := reversetunnelclient.NewTunnelAuthDialer(reversetunnelclient.TunnelAuthDialerConfig{ + Resolver: resolver, + ClientConfig: sshConfig, + Log: logrus.StandardLogger(), + InsecureSkipTLSVerify: true, + ClusterCAs: tlsConfig.RootCAs, + }) + require.NoError(t, err) + + authClientConfig := &authclient.Config{ + TLS: tlsConfig, + SSH: sshConfig, + AuthServers: []utils.NetAddr{*addr}, + Log: logrus.StandardLogger(), + Insecure: true, + ProxyDialer: dialer, + DialOpts: []grpc.DialOption{ + metadata.WithUserAgentFromTeleportComponent(teleport.ComponentTBot), + }, + } + + c, err := authclient.Connect(ctx, authClientConfig) + require.NoError(t, err) + + return c +} + +// instanceIDFromCerts parses a TLS identity from the certificates and returns +// the embedded BotInstanceID and generation, if any. +func instanceIDFromCerts(t *testing.T, certs *proto.Certs) (string, uint64) { + t.Helper() + + cert, err := tlsca.ParseCertificatePEM(certs.TLS) + require.NoError(t, err) + + ident, err := tlsca.FromSubject(cert.Subject, cert.NotAfter) + require.NoError(t, err) + + return ident.BotInstanceID, ident.Generation +} + +// registerHelper calls `join.Register` with the given token, prefilling params +// where possible. Overrides may be applied with `fns`. +func registerHelper( + ctx context.Context, token types.ProvisionToken, + addr *utils.NetAddr, tlsPublicKey, sshPublicKey []byte, + fns ...func(*join.RegisterParams), +) (*proto.Certs, error) { + params := join.RegisterParams{ + JoinMethod: token.GetJoinMethod(), + Token: token.GetName(), + ID: state.IdentityID{ + Role: types.RoleBot, + }, + AuthServers: []utils.NetAddr{*addr}, + PublicTLSKey: tlsPublicKey, + PublicSSHKey: sshPublicKey, + KubernetesReadFileFunc: func(name string) ([]byte, error) { + return []byte("jwks-matching-service-account"), nil + }, + } + + for _, fn := range fns { + fn(¶ms) + } + + return join.Register(ctx, params) +} + +// TestRegisterBot_BotInstanceRejoin validates that bot instance IDs are +// preserved when rejoining with an authenticated auth client. +func TestRegisterBot_BotInstanceRejoin(t *testing.T) { + // Note: we can't enable parallel testing for this due to use of t.Setenv() + // for AWS client configuration. + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + srv := newTestTLSServer(t) + a := srv.Auth() + addr := utils.MustParseAddr(srv.Addr().String()) + + // Configure mock join methods + k8sTokenName := "jwks-matching-service-account" + k8sReadFileFunc := func(name string) ([]byte, error) { + return []byte(k8sTokenName), nil + } + a.k8sJWKSValidator = func(_ time.Time, _ []byte, _ string, token string) (*kubernetestoken.ValidationResult, error) { + if token == k8sTokenName { + return &kubernetestoken.ValidationResult{Username: "system:serviceaccount:static-jwks:matching"}, nil + } + + return nil, errMockInvalidToken + } + + a.httpClientForAWSSTS = &mockClient{ + respStatusCode: http.StatusOK, + respBody: responseFromAWSIdentity(awsIdentity{ + Account: "1234", + Arn: "arn:aws::1111", + }), + } + + nodeCredentials, err := credentials.NewStaticCredentials("FAKE_ID", "FAKE_KEY", "FAKE_TOKEN").Get() + require.NoError(t, err) + t.Setenv("AWS_ACCESS_KEY_ID", nodeCredentials.AccessKeyID) + t.Setenv("AWS_SECRET_ACCESS_KEY", nodeCredentials.SecretAccessKey) + t.Setenv("AWS_SESSION_TOKEN", nodeCredentials.SessionToken) + t.Setenv("AWS_REGION", "us-west-2") + + // Create a bot + sshPrivateKey, sshPublicKey, err := testauthority.New().GenerateKeyPair() + require.NoError(t, err) + + tlsPublicKey, err := PrivateKeyToPublicKeyTLS(sshPrivateKey) + require.NoError(t, err) + + roleName := "test-role" + _, err = CreateRole(ctx, a, roleName, types.RoleSpecV6{}) + require.NoError(t, err) + + botName := "bot" + _, err = machineidv1.UpsertBot(ctx, a, &machineidv1pb.Bot{ + Metadata: &headerv1.Metadata{ + Name: botName, + }, + Spec: &machineidv1pb.BotSpec{ + Roles: []string{roleName}, + }, + }, a.clock.Now(), "") + require.NoError(t, err) + + // Create k8s and IAM join tokens + k8sToken, err := types.NewProvisionTokenFromSpec("static-jwks", time.Now().Add(10*time.Minute), types.ProvisionTokenSpecV2{ + JoinMethod: types.JoinMethodKubernetes, + Roles: []types.SystemRole{types.RoleBot}, + BotName: botName, + Kubernetes: &types.ProvisionTokenSpecV2Kubernetes{ + Type: types.KubernetesJoinTypeStaticJWKS, + Allow: []*types.ProvisionTokenSpecV2Kubernetes_Rule{ + {ServiceAccount: "static-jwks:matching"}, + }, + StaticJWKS: &types.ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig{ + JWKS: "fake-jwks", + }, + }, + }) + require.NoError(t, err) + require.NoError(t, a.CreateToken(ctx, k8sToken)) + + awsToken, err := types.NewProvisionTokenFromSpec( + "aws-test-token", + time.Now().Add(10*time.Minute), + types.ProvisionTokenSpecV2{ + Roles: []types.SystemRole{types.RoleBot}, + Allow: []*types.TokenRule{ + { + AWSAccount: "1234", + AWSARN: "arn:aws::1111", + }, + }, + BotName: botName, + JoinMethod: types.JoinMethodIAM, + }) + require.NoError(t, err) + require.NoError(t, a.UpsertToken(ctx, awsToken)) + + // Join as a "bot" with both token types. + k8sCerts, err := registerHelper(ctx, k8sToken, addr, tlsPublicKey, sshPublicKey, func(p *join.RegisterParams) { + p.KubernetesReadFileFunc = k8sReadFileFunc + }) + require.NoError(t, err) + initialK8sInstanceID, initialK8sGeneration := instanceIDFromCerts(t, k8sCerts) + require.NotEmpty(t, initialK8sInstanceID) + require.Equal(t, uint64(1), initialK8sGeneration) + + awsCerts, err := registerHelper(ctx, awsToken, addr, tlsPublicKey, sshPublicKey) + require.NoError(t, err) + initialAWSInstanceID, initialAWSGeneration := instanceIDFromCerts(t, awsCerts) + require.NotEmpty(t, initialAWSInstanceID) + require.Equal(t, uint64(1), initialAWSGeneration) + + // They should be issued unique IDs despite being the same bot. + require.NotEqual(t, initialK8sInstanceID, initialAWSInstanceID, "instance IDs must not be the same when no client certs are provided") + + // Rejoin using the k8s client and make sure we're issued certs with the + // same instance ID. + k8sClient := authClientForCerts(t, ctx, addr, sshPrivateKey, sshPublicKey, k8sCerts) + rejoinedK8sCerts, err := registerHelper(ctx, k8sToken, addr, tlsPublicKey, sshPublicKey, func(p *join.RegisterParams) { + p.KubernetesReadFileFunc = k8sReadFileFunc + p.AuthClient = k8sClient + }) + require.NoError(t, err) + + rejoinedK8sID, rejoinedK8sGeneration := instanceIDFromCerts(t, rejoinedK8sCerts) + require.Equal(t, initialK8sInstanceID, rejoinedK8sID) + require.Equal(t, uint64(2), rejoinedK8sGeneration) + + // Repeat for the AWS client. Note that the AWS client is routed through the + // join service, the instance ID must be provided to auth by the proxy as + // part of the `RegisterUsingTokenRequest`. + iamClient := authClientForCerts(t, ctx, addr, sshPrivateKey, sshPublicKey, awsCerts) + rejoinedAWSCerts, err := registerHelper(ctx, awsToken, addr, tlsPublicKey, sshPublicKey, func(p *join.RegisterParams) { + p.AuthClient = iamClient + }) + require.NoError(t, err) + + rejoinedAWSID, rejoinedAWSGeneration := instanceIDFromCerts(t, rejoinedAWSCerts) + require.Equal(t, initialAWSInstanceID, rejoinedAWSID) + require.Equal(t, uint64(2), rejoinedAWSGeneration) + + // Last, try to lie to auth. The k8s value should be overwritten with the + // correct instance ID since auth can directly inspect the client identity. + // For good measure, we'll include a "legitimate" instance ID from the AWS + // bot. + certs, err := k8sClient.RegisterUsingToken(ctx, &types.RegisterUsingTokenRequest{ + Token: k8sToken.GetName(), + HostID: "test-bot", + IDToken: k8sTokenName, + Role: types.RoleBot, + PublicSSHKey: sshPublicKey, + PublicTLSKey: tlsPublicKey, + BotInstanceID: initialAWSInstanceID, + }) + require.NoError(t, err) + + rejoinedK8sID, rejoinedK8sGeneration = instanceIDFromCerts(t, certs) + require.Equal(t, initialK8sInstanceID, rejoinedK8sID) + require.Equal(t, uint64(3), rejoinedK8sGeneration) + + // Note: Lying via IAM join not tested as that must be routed through the + // join service (along with Azure and TPM). +} + +// TestRegisterBotWithInvalidInstanceID ensures that client-specified instance +// IDs from untrusted sources are ignored and will be issued a new bot instance +// ID. +func TestRegisterBotWithInvalidInstanceID(t *testing.T) { + t.Parallel() + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + srv := newTestTLSServer(t) + a := srv.Auth() + + botName := "bot" + k8sTokenName := "jwks-matching-service-account" + a.k8sJWKSValidator = func(_ time.Time, _ []byte, _ string, token string) (*kubernetestoken.ValidationResult, error) { + if token == k8sTokenName { + return &kubernetestoken.ValidationResult{Username: "system:serviceaccount:static-jwks:matching"}, nil + } + + return nil, errMockInvalidToken + } + token, err := types.NewProvisionTokenFromSpec("static-jwks", time.Now().Add(10*time.Minute), types.ProvisionTokenSpecV2{ + JoinMethod: types.JoinMethodKubernetes, + Roles: []types.SystemRole{types.RoleBot}, + BotName: botName, + Kubernetes: &types.ProvisionTokenSpecV2Kubernetes{ + Type: types.KubernetesJoinTypeStaticJWKS, + Allow: []*types.ProvisionTokenSpecV2Kubernetes_Rule{ + {ServiceAccount: "static-jwks:matching"}, + }, + StaticJWKS: &types.ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig{ + JWKS: "fake-jwks", + }, + }, + }) + require.NoError(t, err) + require.NoError(t, a.CreateToken(ctx, token)) + + roleName := "test-role" + _, err = CreateRole(ctx, a, roleName, types.RoleSpecV6{}) + require.NoError(t, err) + + _, err = machineidv1.UpsertBot(ctx, a, &machineidv1pb.Bot{ + Metadata: &headerv1.Metadata{ + Name: botName, + }, + Spec: &machineidv1pb.BotSpec{ + Roles: []string{roleName}, + }, + }, a.clock.Now(), "") + require.NoError(t, err) + + client, err := srv.NewClient(TestAdmin()) + require.NoError(t, err) + + privateKey, sshPublicKey, err := testauthority.New().GenerateKeyPair() + require.NoError(t, err) + sshPrivateKey, err := ssh.ParseRawPrivateKey(privateKey) + require.NoError(t, err) + tlsPublicKey, err := tlsca.MarshalPublicKeyFromPrivateKeyPEM(sshPrivateKey) + require.NoError(t, err) + + // Try registering with a proxy client; this is trusted but the invalid + // instance ID should be overwritten and a new instance generated. + certs, err := srv.Auth().RegisterUsingToken(ctx, &types.RegisterUsingTokenRequest{ + Token: token.GetName(), + HostID: "test-bot", + Role: types.RoleBot, + PublicSSHKey: sshPublicKey, + PublicTLSKey: tlsPublicKey, + IDToken: k8sTokenName, + BotInstanceID: "foo", + }) + + // Should not generate any errors, especially some variety of "instance not + // found" which might indicate improper behavior when encountering a + // nonexistent token. + require.NoError(t, err) + + // Should not issue certs with an obviously invalid instance ID, or no ID. + id, generation := instanceIDFromCerts(t, certs) + require.NotEmpty(t, id) + require.NotEqual(t, "foo", id) + require.Equal(t, uint64(1), generation) + + // Try registering with a non-proxy client; this is untrusted and the + // client-provided ID should be discarded. + certs, err = client.RegisterUsingToken(ctx, &types.RegisterUsingTokenRequest{ + Token: token.GetName(), + HostID: "test-bot", + Role: types.RoleBot, + PublicSSHKey: sshPublicKey, + PublicTLSKey: tlsPublicKey, + IDToken: k8sTokenName, + BotInstanceID: "foo", + }) + + // As above, should not generate any errors, and a new ID should be + // generated. + require.NoError(t, err) + + id, generation = instanceIDFromCerts(t, certs) + require.NotEmpty(t, id) + require.NotEqual(t, "foo", id) + require.Equal(t, uint64(1), generation) +} + +func TestRegisterBotMultipleTokens(t *testing.T) { + t.Parallel() + + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + srv := newTestTLSServer(t) + + // Initial setup, create a bot and join token. + client, err := srv.NewClient(TestAdmin()) + require.NoError(t, err) + bot, err := client.BotServiceClient().CreateBot(ctx, &machineidv1pb.CreateBotRequest{ + Bot: &machineidv1pb.Bot{ + Metadata: &headerv1.Metadata{ + Name: "test", + }, + Spec: &machineidv1pb.BotSpec{ + Roles: []string{"example"}, + }, + }, + }) + require.NoError(t, err) + + tokenA, err := types.NewProvisionTokenFromSpec("a", time.Time{}, types.ProvisionTokenSpecV2{ + Roles: types.SystemRoles{types.RoleBot}, + BotName: bot.Metadata.Name, + }) + require.NoError(t, err) + require.NoError(t, client.CreateToken(ctx, tokenA)) + + tokenB, err := types.NewProvisionTokenFromSpec("b", time.Time{}, types.ProvisionTokenSpecV2{ + Roles: types.SystemRoles{types.RoleBot}, + BotName: bot.Metadata.Name, + }) + require.NoError(t, err) + require.NoError(t, client.CreateToken(ctx, tokenB)) + + privateKey, publicKey, err := testauthority.New().GenerateKeyPair() + require.NoError(t, err) + sshPrivateKey, err := ssh.ParseRawPrivateKey(privateKey) + require.NoError(t, err) + tlsPublicKey, err := tlsca.MarshalPublicKeyFromPrivateKeyPEM(sshPrivateKey) + require.NoError(t, err) + + certsA, err := join.Register(ctx, join.RegisterParams{ + Token: tokenA.GetName(), + ID: state.IdentityID{ + Role: types.RoleBot, + }, + AuthServers: []utils.NetAddr{*utils.MustParseAddr(srv.Addr().String())}, + PublicTLSKey: tlsPublicKey, + PublicSSHKey: publicKey, + }) + require.NoError(t, err) + + initialInstanceA, _ := instanceIDFromCerts(t, certsA) + require.NotEmpty(t, initialInstanceA) + + tlsA, err := tls.X509KeyPair(certsA.TLS, privateKey) + require.NoError(t, err) + + certsB, err := join.Register(ctx, join.RegisterParams{ + Token: tokenB.GetName(), + ID: state.IdentityID{ + Role: types.RoleBot, + }, + AuthServers: []utils.NetAddr{*utils.MustParseAddr(srv.Addr().String())}, + PublicTLSKey: tlsPublicKey, + PublicSSHKey: publicKey, + }) + require.NoError(t, err) + + initialInstanceB, _ := instanceIDFromCerts(t, certsB) + require.NotEmpty(t, initialInstanceB) + + require.NotEqual(t, initialInstanceA, initialInstanceB) + + tlsB, err := tls.X509KeyPair(certsB.TLS, privateKey) + require.NoError(t, err) + + for i := 0; i < 6; i++ { + _, certsA, tlsA, err = renewBotCerts(ctx, srv, tlsA, bot.Status.UserName, publicKey, privateKey) + require.NoError(t, err) + + instanceA, generationA := instanceIDFromCerts(t, certsA) + require.Equal(t, initialInstanceA, instanceA) + require.Equal(t, uint64(i+2), generationA) + + // Only renew bot B 3x. + if i < 3 { + _, certsB, tlsB, err = renewBotCerts(ctx, srv, tlsB, bot.Status.UserName, publicKey, privateKey) + require.NoError(t, err) + + instanceB, generationB := instanceIDFromCerts(t, certsB) + require.Equal(t, initialInstanceB, instanceB) + require.Equal(t, uint64(i+2), generationB) + } + } + + // Renew B again. This will be the final renewal, but the legacy generation + // counter on the user will be greater as it should have been incremented by + // bot A. + _, certsB, _, err = renewBotCerts(ctx, srv, tlsB, bot.Status.UserName, publicKey, privateKey) + require.NoError(t, err) + + instanceB, generationB := instanceIDFromCerts(t, certsB) + require.Equal(t, initialInstanceB, instanceB) + require.Equal(t, uint64(5), generationB) + + botUser, err := client.GetUser(ctx, bot.Status.UserName, false) + require.NoError(t, err) + genStr := botUser.BotGenerationLabel() + require.Equal(t, "7", genStr) +} + func checkCertLoginIP(t *testing.T, certBytes []byte, loginIP string) { t.Helper() diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 69da074a9b6c4..987095ee8610a 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -5787,6 +5787,16 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) { } machineidv1pb.RegisterBotServiceServer(server, botService) + botInstanceService, err := machineidv1.NewBotInstanceService(machineidv1.BotInstanceServiceConfig{ + Authorizer: cfg.Authorizer, + Backend: cfg.AuthServer.Services.BotInstance, + Clock: cfg.AuthServer.GetClock(), + }) + if err != nil { + return nil, trace.Wrap(err, "creating bot instance service") + } + machineidv1pb.RegisterBotInstanceServiceServer(server, botInstanceService) + dbObjectImportRuleService, err := dbobjectimportrulev1.NewDatabaseObjectImportRuleService(dbobjectimportrulev1.DatabaseObjectImportRuleServiceConfig{ Authorizer: cfg.Authorizer, Backend: cfg.AuthServer.Services, diff --git a/lib/auth/init.go b/lib/auth/init.go index 1577fce2f4cde..8e5d00de6e3cc 100644 --- a/lib/auth/init.go +++ b/lib/auth/init.go @@ -312,6 +312,9 @@ type InitConfig struct { // Notifications is a service that manages notifications. Notifications services.Notifications + + // BotInstance is a service that manages Machine ID bot instances + BotInstance services.BotInstance } // Init instantiates and configures an instance of AuthServer diff --git a/lib/auth/join.go b/lib/auth/join.go index 53572c677b056..9aecba74ad90b 100644 --- a/lib/auth/join.go +++ b/lib/auth/join.go @@ -30,8 +30,11 @@ import ( "github.com/gravitational/trace" "github.com/sirupsen/logrus" "google.golang.org/grpc/peer" + "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" "github.com/gravitational/teleport/api/client/proto" + machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" @@ -346,24 +349,7 @@ func (a *Server) generateCertsBot( expires = *req.Expires } - certs, err := a.generateInitialBotCerts( - ctx, botName, machineidv1.BotResourceName(botName), req.RemoteAddr, req.PublicSSHKey, expires, renewable, - ) - if err != nil { - return nil, trace.Wrap(err) - } - - if shouldDeleteToken { - // delete ephemeral bot join tokens so they can't be re-used - if err := a.DeleteToken(ctx, provisionToken.GetName()); err != nil { - log.WithError(err).Warnf("Could not delete bot provision token %q after generating certs", - provisionToken.GetSafeName(), - ) - } - } - - // Emit audit event for bot join. - log.Infof("Bot %q has joined the cluster.", botName) + // Construct a Join event to be sent later. joinEvent := &apievents.BotJoin{ Metadata: apievents.Metadata{ Type: events.BotJoinEvent, @@ -379,6 +365,24 @@ func (a *Server) generateCertsBot( RemoteAddr: req.RemoteAddr, }, } + + // req.PublicSSHKey is in SSH Authorized Keys format. For consistency, we + // only store public keys in PEM wrapped PKIX, DER format within + // BotInstances. + pkixPEM, err := sshPublicKeyToPKIXPEM(req.PublicSSHKey) + if err != nil { + return nil, trace.Wrap(err, "converting key") + } + auth := &machineidv1pb.BotInstanceStatusAuthentication{ + AuthenticatedAt: timestamppb.New(a.GetClock().Now()), + // TODO: GetSafeName may not return an appropriate value for later + // comparison / locking purposes, and this also shouldn't contain + // secrets. Should we hash it? + JoinToken: provisionToken.GetSafeName(), + JoinMethod: string(provisionToken.GetJoinMethod()), + PublicKey: pkixPEM, + } + if joinAttributeSrc != nil { attributes, err := joinAttributeSrc.JoinAuditAttributes() if err != nil { @@ -388,7 +392,34 @@ func (a *Server) generateCertsBot( if err != nil { log.WithError(err).Warn("Unable to encode join attributes for audit event.") } + + auth.Metadata, err = structpb.NewStruct(attributes) + if err != nil { + log.WithError(err).Warn("Unable to encode struct value for join metadata.") + } + } + + certs, botInstanceID, err := a.generateInitialBotCerts( + ctx, botName, machineidv1.BotResourceName(botName), req.RemoteAddr, req.PublicSSHKey, expires, renewable, auth, + req.BotInstanceID, + req.BotGeneration, + ) + if err != nil { + return nil, trace.Wrap(err) } + joinEvent.BotInstanceID = botInstanceID + + if shouldDeleteToken { + // delete ephemeral bot join tokens so they can't be re-used + if err := a.DeleteToken(ctx, provisionToken.GetName()); err != nil { + log.WithError(err).Warnf("Could not delete bot provision token %q after generating certs", + provisionToken.GetSafeName(), + ) + } + } + + // Emit audit event for bot join. + log.Infof("Bot %q (instance: %s) has joined the cluster.", botName, botInstanceID) if err := a.emitter.EmitAuditEvent(ctx, joinEvent); err != nil { log.WithError(err).Warn("Failed to emit bot join event.") } diff --git a/lib/auth/join/join.go b/lib/auth/join/join.go index 367b091612ac5..0415f5356be98 100644 --- a/lib/auth/join/join.go +++ b/lib/auth/join/join.go @@ -82,8 +82,10 @@ type RegisterParams struct { // ID is identity ID ID state.IdentityID // AuthServers is a list of auth servers to dial + // Ignored if AuthClient is provided. AuthServers []utils.NetAddr // ProxyServer is a proxy server to dial + // Ignored if AuthClient is provided. ProxyServer utils.NetAddr // AdditionalPrincipals is a list of additional principals to dial AdditionalPrincipals []string @@ -94,12 +96,16 @@ type RegisterParams struct { // PublicSSHKey is a server's public SSH key to sign PublicSSHKey []byte // CipherSuites is a list of cipher suites to use for TLS client connection + // Ignored if AuthClient is provided. CipherSuites []uint16 // CAPins are the SKPI hashes of the CAs used to verify the Auth Server. + // Ignored if AuthClient is provided. CAPins []string // CAPath is the path to the CA file. + // Ignored if AuthClient is provided. CAPath string // GetHostCredentials is a client that can fetch host credentials. + // Ignored if AuthClient is provided. GetHostCredentials HostCredentials // Clock specifies the time provider. Will be used to override the time anchor // for TLS certificate verification. @@ -113,8 +119,10 @@ type RegisterParams struct { // AzureParams is the parameters specific to the azure join method. AzureParams AzureParams // CircuitBreakerConfig defines how the circuit breaker should behave. + // Ignored if AuthClient is provided. CircuitBreakerConfig breaker.Config // FIPS means FedRAMP/FIPS 140-2 compliant configuration was requested. + // Ignored if AuthClient is provided. FIPS bool // IDToken is a token retrieved from a workload identity provider for // certain join types e.g GitHub, Google. @@ -124,7 +132,16 @@ type RegisterParams struct { // It should not be specified for non-bot registrations. Expires *time.Time // Insecure trusts the certificates from the Auth Server or Proxy during registration without verification. + // Ignored if AuthClient is provided. Insecure bool + // AuthClient allows an existing client with a connection to the auth + // server to be used for the registration process. If specified, then the + // Register method will not attempt to dial, and many other parameters + // may be ignored. + AuthClient AuthJoinClient + // KubernetesReadFileFunc is a function used to read the Kubernetes token + // from disk. Used in tests, and set to `os.ReadFile` if unset. + KubernetesReadFileFunc func(name string) ([]byte, error) } func (r *RegisterParams) checkAndSetDefaults() error { @@ -132,6 +149,10 @@ func (r *RegisterParams) checkAndSetDefaults() error { r.Clock = clockwork.NewRealClock() } + if r.KubernetesReadFileFunc == nil { + r.KubernetesReadFileFunc = os.ReadFile + } + if err := r.verifyAuthOrProxyAddress(); err != nil { return trace.BadParameter("no auth or proxy servers set") } @@ -140,6 +161,11 @@ func (r *RegisterParams) checkAndSetDefaults() error { } func (r *RegisterParams) verifyAuthOrProxyAddress() error { + // If AuthClient is provided we do not need addresses to dial with. + if r.AuthClient != nil { + return nil + } + haveAuthServers := len(r.AuthServers) > 0 haveProxyServer := !r.ProxyServer.IsEmpty() @@ -202,7 +228,7 @@ func Register(ctx context.Context, params RegisterParams) (certs *proto.Certs, e return nil, trace.Wrap(err) } case types.JoinMethodKubernetes: - params.IDToken, err = kubernetestoken.GetIDToken(os.Getenv, os.ReadFile) + params.IDToken, err = kubernetestoken.GetIDToken(os.Getenv, params.KubernetesReadFileFunc) if err != nil { return nil, trace.Wrap(err) } @@ -218,6 +244,19 @@ func Register(ctx context.Context, params RegisterParams) (certs *proto.Certs, e } } + // If an explicit AuthClient has been provided, we want to go straight to + // using that rather than trying both proxy and auth dialing. + if params.AuthClient != nil { + log.Info("Attempting registration with existing auth client.") + certs, err := registerThroughAuthClient(ctx, token, params, params.AuthClient) + if err != nil { + log.WithError(err).Error("Registration with existing auth client failed.") + return nil, trace.Wrap(err) + } + log.Info("Successfully registered with existing auth client.") + return certs, nil + } + type registerMethod struct { call func(ctx context.Context, token string, params RegisterParams) (*proto.Certs, error) desc string @@ -371,6 +410,26 @@ func registerThroughAuth( } defer client.Close() + certs, err = registerThroughAuthClient(ctx, token, params, client) + if err != nil { + return nil, trace.Wrap(err) + } + return certs, nil +} + +// AuthJoinClient is a client that allows access to the Auth Servers join +// service and RegisterUsingToken method for the purposes of joining. +type AuthJoinClient interface { + joinServiceClient + RegisterUsingToken(ctx context.Context, req *types.RegisterUsingTokenRequest) (*proto.Certs, error) +} + +func registerThroughAuthClient( + ctx context.Context, + token string, + params RegisterParams, + client AuthJoinClient, +) (certs *proto.Certs, err error) { switch params.JoinMethod { // IAM and Azure methods use unique gRPC endpoints case types.JoinMethodIAM: diff --git a/lib/auth/join/join_test.go b/lib/auth/join/join_test.go index c0f29758de2ea..bf05e63c46c2e 100644 --- a/lib/auth/join/join_test.go +++ b/lib/auth/join/join_test.go @@ -24,11 +24,14 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/gravitational/trace" "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/crypto/ssh" + "github.com/gravitational/teleport/api/client/proto" headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/types" @@ -319,3 +322,48 @@ func TestVerifyALPNUpgradedConn(t *testing.T) { }) } } + +type authJoinClientMock struct { + AuthJoinClient + registerUsingToken func(ctx context.Context, req *types.RegisterUsingTokenRequest) (*proto.Certs, error) +} + +func (a *authJoinClientMock) RegisterUsingToken(ctx context.Context, req *types.RegisterUsingTokenRequest) (*proto.Certs, error) { + return a.registerUsingToken(ctx, req) +} + +// TestRegisterWithAuthClient is a unit test to validate joining using a +// auth client supplied via RegisterParams +func TestRegisterWithAuthClient(t *testing.T) { + ctx := context.Background() + expectedCerts := &proto.Certs{ + SSH: []byte("ssh-cert"), + } + expectedToken := "test-token" + expectedRole := types.RoleBot + called := false + m := &authJoinClientMock{ + registerUsingToken: func(ctx context.Context, req *types.RegisterUsingTokenRequest) (*proto.Certs, error) { + assert.Empty(t, cmp.Diff( + req, + &types.RegisterUsingTokenRequest{ + Token: expectedToken, + Role: expectedRole, + }, + )) + called = true + return expectedCerts, nil + }, + } + + gotCerts, gotErr := Register(ctx, RegisterParams{ + Token: expectedToken, + ID: state.IdentityID{ + Role: expectedRole, + }, + AuthClient: m, + }) + require.NoError(t, gotErr) + assert.True(t, called) + assert.Equal(t, expectedCerts, gotCerts) +} diff --git a/lib/auth/keygen/keygen.go b/lib/auth/keygen/keygen.go index 2d432b6a89170..5aef3d45e9fcf 100644 --- a/lib/auth/keygen/keygen.go +++ b/lib/auth/keygen/keygen.go @@ -209,6 +209,9 @@ func (k *Keygen) GenerateUserCertWithoutValidation(c services.UserCertParams) ([ if c.BotName != "" { cert.Permissions.Extensions[teleport.CertExtensionBotName] = c.BotName } + if c.BotInstanceID != "" { + cert.Permissions.Extensions[teleport.CertExtensionBotInstanceID] = c.BotInstanceID + } if c.AllowedResourceIDs != "" { cert.Permissions.Extensions[teleport.CertExtensionAllowedResources] = c.AllowedResourceIDs } diff --git a/lib/auth/machineid/machineidv1/bot_instance_service.go b/lib/auth/machineid/machineidv1/bot_instance_service.go new file mode 100644 index 0000000000000..025c5b0e64827 --- /dev/null +++ b/lib/auth/machineid/machineidv1/bot_instance_service.go @@ -0,0 +1,208 @@ +/* + * Teleport + * Copyright (C) 2024 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package machineidv1 + +import ( + "context" + "log/slog" + "time" + + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "google.golang.org/protobuf/types/known/emptypb" + + "github.com/gravitational/teleport" + pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/services" + logutils "github.com/gravitational/teleport/lib/utils/log" +) + +const ( + // AuthenticationHistoryLimit is the maximum number of authentication + // records to be recorded in a bot instance's .Status.LatestAuthentications + // field. + AuthenticationHistoryLimit = 10 + heartbeatHistoryLimit = 10 + + // ExpiryMargin is the duration added to bot instance expiration times to + // ensure the instance remains accessible until shortly after the last + // issued certificate expires. + ExpiryMargin = time.Minute * 5 +) + +// BotInstanceServiceConfig holds configuration options for the BotInstance gRPC +// service. +type BotInstanceServiceConfig struct { + Authorizer authz.Authorizer + Backend services.BotInstance + Logger *slog.Logger + Clock clockwork.Clock +} + +// NewBotInstanceService returns a new instance of the BotInstanceService. +func NewBotInstanceService(cfg BotInstanceServiceConfig) (*BotInstanceService, error) { + switch { + case cfg.Backend == nil: + return nil, trace.BadParameter("backend service is required") + case cfg.Authorizer == nil: + return nil, trace.BadParameter("authorizer is required") + } + + if cfg.Logger == nil { + cfg.Logger = slog.With(teleport.ComponentKey, "bot_instance.service") + } + if cfg.Clock == nil { + cfg.Clock = clockwork.NewRealClock() + } + + return &BotInstanceService{ + logger: cfg.Logger, + authorizer: cfg.Authorizer, + backend: cfg.Backend, + clock: cfg.Clock, + }, nil +} + +// BotInstanceService implements the teleport.machineid.v1.BotInstanceService RPC service. +type BotInstanceService struct { + pb.UnimplementedBotInstanceServiceServer + + backend services.BotInstance + authorizer authz.Authorizer + logger *slog.Logger + clock clockwork.Clock +} + +// DeleteBotInstance deletes a bot specific bot instance +func (b *BotInstanceService) DeleteBotInstance(ctx context.Context, req *pb.DeleteBotInstanceRequest) (*emptypb.Empty, error) { + authCtx, err := b.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if err := authCtx.CheckAccessToKind(types.KindBotInstance, types.VerbDelete); err != nil { + return nil, trace.Wrap(err) + } + + if err := authCtx.AuthorizeAdminAction(); err != nil { + return nil, trace.Wrap(err) + } + + if err := b.backend.DeleteBotInstance(ctx, req.BotName, req.InstanceId); err != nil { + return nil, trace.Wrap(err) + } + + return &emptypb.Empty{}, nil +} + +// GetBotInstance retrieves a specific bot instance +func (b *BotInstanceService) GetBotInstance(ctx context.Context, req *pb.GetBotInstanceRequest) (*pb.BotInstance, error) { + authCtx, err := b.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if err := authCtx.CheckAccessToKind(types.KindBotInstance, types.VerbRead); err != nil { + return nil, trace.Wrap(err) + } + + res, err := b.backend.GetBotInstance(ctx, req.BotName, req.InstanceId) + if err != nil { + return nil, trace.Wrap(err) + } + + return res, nil +} + +// ListBotInstances returns a list of bot instances matching the criteria in the request +func (b *BotInstanceService) ListBotInstances(ctx context.Context, req *pb.ListBotInstancesRequest) (*pb.ListBotInstancesResponse, error) { + authCtx, err := b.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if err := authCtx.CheckAccessToKind(types.KindBotInstance, types.VerbRead, types.VerbList); err != nil { + return nil, trace.Wrap(err) + } + + res, nextToken, err := b.backend.ListBotInstances(ctx, req.FilterBotName, int(req.PageSize), req.PageToken) + if err != nil { + return nil, trace.Wrap(err) + } + + return &pb.ListBotInstancesResponse{ + BotInstances: res, + NextPageToken: nextToken, + }, nil +} + +// SubmitHeartbeat records heartbeat information for a bot +func (b *BotInstanceService) SubmitHeartbeat(ctx context.Context, req *pb.SubmitHeartbeatRequest) (*pb.SubmitHeartbeatResponse, error) { + authCtx, err := b.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if req.Heartbeat == nil { + return nil, trace.BadParameter("heartbeat: must be non-nil") + } + + // Enforce that the connecting client is a bot and has a bot instance ID. + botName := authCtx.Identity.GetIdentity().BotName + botInstanceID := authCtx.Identity.GetIdentity().BotInstanceID + switch { + case botName == "": + return nil, trace.AccessDenied("identity did not contain bot name") + case botInstanceID == "": + return nil, trace.AccessDenied("identity did not contain bot instance ID") + } + + b.logger.DebugContext( + ctx, + "Received bot instance heartbeat", + "bot_name", botName, + "bot_instance", botInstanceID, + "heartbeat", logutils.StringerAttr(req.Heartbeat), + ) + _, err = b.backend.PatchBotInstance(ctx, botName, botInstanceID, func(instance *pb.BotInstance) (*pb.BotInstance, error) { + if instance.Status == nil { + instance.Status = &pb.BotInstanceStatus{} + } + // Set initial heartbeat if not set. + if instance.Status.InitialHeartbeat == nil { + instance.Status.InitialHeartbeat = req.Heartbeat + } + // If we're at or above the limit, remove enough of the front + // elements to make room for the new one at the end. + if len(instance.Status.LatestHeartbeats) >= heartbeatHistoryLimit { + toRemove := len(instance.Status.LatestHeartbeats) - heartbeatHistoryLimit + 1 + instance.Status.LatestHeartbeats = instance.Status.LatestHeartbeats[toRemove:] + } + // Append the new heartbeat to the end. + instance.Status.LatestHeartbeats = append(instance.Status.LatestHeartbeats, req.Heartbeat) + + return instance, nil + }) + if err != nil { + return nil, trace.Wrap(err, "patching bot instance") + } + + return &pb.SubmitHeartbeatResponse{}, nil +} diff --git a/lib/auth/machineid/machineidv1/bot_instance_service_test.go b/lib/auth/machineid/machineidv1/bot_instance_service_test.go new file mode 100644 index 0000000000000..69dc11f54a620 --- /dev/null +++ b/lib/auth/machineid/machineidv1/bot_instance_service_test.go @@ -0,0 +1,586 @@ +/* + * Teleport + * Copyright (C) 2024 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package machineidv1 + +import ( + "context" + "fmt" + "slices" + "strconv" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/uuid" + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/testing/protocmp" + + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/backend/memory" + "github.com/gravitational/teleport/lib/services" + "github.com/gravitational/teleport/lib/services/local" + "github.com/gravitational/teleport/lib/tlsca" + "github.com/gravitational/teleport/lib/utils" +) + +// TestBotInstanceServiceAccess ensures RBAC an admin state rules are applied properly +func TestBotInstanceServiceAccess(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + allowedVerbs []string + allowedStates []authz.AdminActionAuthState + skip bool + }{ + { + name: "GetBotInstance", + allowedStates: []authz.AdminActionAuthState{ + authz.AdminActionAuthUnauthorized, authz.AdminActionAuthNotRequired, + authz.AdminActionAuthMFAVerified, authz.AdminActionAuthMFAVerifiedWithReuse, + }, + allowedVerbs: []string{types.VerbRead}, + }, + { + name: "ListBotInstances", + allowedStates: []authz.AdminActionAuthState{ + authz.AdminActionAuthUnauthorized, authz.AdminActionAuthNotRequired, + authz.AdminActionAuthMFAVerified, authz.AdminActionAuthMFAVerifiedWithReuse, + }, + allowedVerbs: []string{types.VerbRead, types.VerbList}, + }, + { + name: "DeleteBotInstance", + allowedStates: []authz.AdminActionAuthState{authz.AdminActionAuthNotRequired, authz.AdminActionAuthMFAVerified}, + allowedVerbs: []string{types.VerbDelete}, + }, + { + name: "SubmitHeartbeat", + + // SubmitHeartbeat has its own authz and does not follow normal RBAC rules + skip: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // test the method with allowed admin states, each one separately. + t.Run("allowed admin states", func(t *testing.T) { + for _, state := range tt.allowedStates { + t.Run(stateToString(state), func(t *testing.T) { + for _, verbs := range utils.Combinations(tt.allowedVerbs) { + t.Run(fmt.Sprintf("verbs=%v", verbs), func(t *testing.T) { + backend := newBotInstanceBackend(t) + service := newBotInstanceService(t, backend, state, fakeChecker{allowedVerbs: verbs}) + err := callMethod(t, service, tt.name) + + // expect access denied except with full set of verbs. + if len(verbs) == len(tt.allowedVerbs) { + require.False(t, trace.IsAccessDenied(err)) + } else { + require.True(t, trace.IsAccessDenied(err), "expected access denied for verbs %v, got err=%v", verbs, err) + } + }) + } + }) + } + }) + + // test the method with disallowed admin states; expect failures. + t.Run("disallowed admin states", func(t *testing.T) { + if tt.skip { + t.Skipf("method %+v is excluded from tests", tt.name) + } + + disallowedStates := otherAdminStates(tt.allowedStates) + for _, state := range disallowedStates { + t.Run(stateToString(state), func(t *testing.T) { + // it is enough to test against tt.allowedVerbs, + // this is the only different data point compared to the test cases above. + backend := newBotInstanceBackend(t) + service := newBotInstanceService(t, backend, state, fakeChecker{allowedVerbs: tt.allowedVerbs}) + err := callMethod(t, service, tt.name) + require.True(t, trace.IsAccessDenied(err)) + }) + } + }) + }) + } + + // verify that all declared methods have matching test cases + t.Run("verify coverage", func(t *testing.T) { + for _, method := range machineidv1.BotInstanceService_ServiceDesc.Methods { + t.Run(method.MethodName, func(t *testing.T) { + match := false + for _, testCase := range tests { + match = match || testCase.name == method.MethodName + } + require.True(t, match, "method %v without coverage, no matching tests", method.MethodName) + }) + } + }) +} + +// TestBotInstanceServiceReadDelete tests read and delete functionality exposed +// by the BotInstanceService. +func TestBotInstanceServiceReadDelete(t *testing.T) { + t.Parallel() + + ctx := context.Background() + + backend := newBotInstanceBackend(t) + idsFoo := createInstances(t, ctx, backend, "foo", 3) + idsBar := createInstances(t, ctx, backend, "bar", 3) + + idsAll := map[string]struct{}{} + for i := range idsFoo { + idsAll[i] = struct{}{} + } + for i := range idsBar { + idsAll[i] = struct{}{} + } + + // Make a service with all useful permissions that doesn't require admin auth + checker := fakeChecker{allowedVerbs: []string{types.VerbRead, types.VerbList, types.VerbDelete}} + service := newBotInstanceService(t, backend, authz.AdminActionAuthNotRequired, checker) + + // Make sure we can get all foo instances + for id := range idsFoo { + ins, err := service.GetBotInstance(ctx, &machineidv1.GetBotInstanceRequest{ + BotName: "foo", + InstanceId: id, + }) + require.NoError(t, err) + + require.Equal(t, "foo", ins.Spec.BotName) + require.Equal(t, id, ins.Spec.InstanceId) + } + + // Make sure we can get all bar instances + for id := range idsBar { + ins, err := service.GetBotInstance(ctx, &machineidv1.GetBotInstanceRequest{ + BotName: "bar", + InstanceId: id, + }) + require.NoError(t, err) + + require.Equal(t, "bar", ins.Spec.BotName) + require.Equal(t, id, ins.Spec.InstanceId) + } + + // List should work + fooInstances := listInstances(t, ctx, service, "foo") + require.Len(t, fooInstances, 3) + for _, bi := range fooInstances { + require.Contains(t, idsFoo, bi.Spec.InstanceId) + } + + barInstances := listInstances(t, ctx, service, "bar") + require.Len(t, barInstances, 3) + for _, bi := range barInstances { + require.Contains(t, idsBar, bi.Spec.InstanceId) + } + + allInstances := listInstances(t, ctx, service, "") + require.Len(t, allInstances, 6) + for _, bi := range allInstances { + require.Contains(t, idsAll, bi.Spec.InstanceId) + } + + // Attempt to delete everything + for id := range idsFoo { + _, err := service.DeleteBotInstance(ctx, &machineidv1.DeleteBotInstanceRequest{ + BotName: "foo", + InstanceId: id, + }) + require.NoError(t, err) + } + + for id := range idsBar { + _, err := service.DeleteBotInstance(ctx, &machineidv1.DeleteBotInstanceRequest{ + BotName: "bar", + InstanceId: id, + }) + require.NoError(t, err) + } + + allInstances = listInstances(t, ctx, service, "") + require.Empty(t, allInstances) +} + +type identityGetterFn func() tlsca.Identity + +func (f identityGetterFn) GetIdentity() tlsca.Identity { + return f() +} + +func TestBotInstanceServiceSubmitHeartbeat(t *testing.T) { + t.Parallel() + ctx := context.Background() + + const botName = "test-bot" + const botInstanceID = "123-456" + + goodIdentity := tlsca.Identity{ + BotName: botName, + BotInstanceID: botInstanceID, + } + + tests := []struct { + name string + identity tlsca.Identity + req *machineidv1.SubmitHeartbeatRequest + createBotInstance bool + assertErr assert.ErrorAssertionFunc + wantHeartbeat bool + }{ + { + name: "success", + createBotInstance: true, + req: &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: "llama", + }, + }, + identity: goodIdentity, + assertErr: assert.NoError, + wantHeartbeat: true, + }, + { + name: "missing bot name", + createBotInstance: true, + req: &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: "llama", + }, + }, + identity: tlsca.Identity{ + BotInstanceID: botInstanceID, + }, + assertErr: func(t assert.TestingT, err error, i ...interface{}) bool { + return assert.True(t, trace.IsAccessDenied(err)) && assert.Contains(t, err.Error(), "identity did not contain bot name") + }, + wantHeartbeat: false, + }, + { + name: "missing instance id", + createBotInstance: true, + req: &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: "llama", + }, + }, + identity: tlsca.Identity{ + BotName: botName, + }, + assertErr: func(t assert.TestingT, err error, i ...interface{}) bool { + return assert.True(t, trace.IsAccessDenied(err)) && assert.Contains(t, err.Error(), "identity did not contain bot instance") + }, + wantHeartbeat: false, + }, + { + name: "bot instance does not exist", + createBotInstance: false, + req: &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: "llama", + }, + }, + identity: goodIdentity, + assertErr: func(t assert.TestingT, err error, i ...interface{}) bool { + return assert.True(t, trace.IsNotFound(err)) + }, + }, + { + name: "missing heartbeat", + createBotInstance: true, + req: &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: nil, + }, + identity: goodIdentity, + assertErr: func(t assert.TestingT, err error, i ...interface{}) bool { + return assert.True(t, trace.IsBadParameter(err)) && assert.Contains(t, err.Error(), "heartbeat: must be non-nil") + }, + wantHeartbeat: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + backend := newBotInstanceBackend(t) + service, err := NewBotInstanceService(BotInstanceServiceConfig{ + Backend: backend, + Authorizer: authz.AuthorizerFunc(func(ctx context.Context) (*authz.Context, error) { + return &authz.Context{ + Identity: identityGetterFn(func() tlsca.Identity { + return tt.identity + }), + }, nil + }), + }) + require.NoError(t, err) + + if tt.createBotInstance { + bi := newBotInstance(botName) + bi.Spec.InstanceId = botInstanceID + _, err := backend.CreateBotInstance(ctx, bi) + require.NoError(t, err) + } + + _, err = service.SubmitHeartbeat(ctx, tt.req) + tt.assertErr(t, err) + if tt.createBotInstance { + bi, err := backend.GetBotInstance(ctx, botName, botInstanceID) + require.NoError(t, err) + if tt.wantHeartbeat { + assert.Empty( + t, + cmp.Diff( + bi.Status.InitialHeartbeat, + tt.req.Heartbeat, + protocmp.Transform()), + ) + assert.Len(t, bi.Status.LatestHeartbeats, 1) + assert.Empty( + t, + cmp.Diff( + bi.Status.LatestHeartbeats[0], + tt.req.Heartbeat, + protocmp.Transform()), + ) + } else { + assert.Nil(t, bi.Status.InitialHeartbeat) + assert.Empty(t, bi.Status.LatestHeartbeats) + } + } + }) + } +} + +func TestBotInstanceServiceSubmitHeartbeat_HeartbeatLimit(t *testing.T) { + t.Parallel() + ctx := context.Background() + + const botName = "test-bot" + const botInstanceID = "123-456" + + backend := newBotInstanceBackend(t) + service, err := NewBotInstanceService(BotInstanceServiceConfig{ + Backend: backend, + Authorizer: authz.AuthorizerFunc(func(ctx context.Context) (*authz.Context, error) { + return &authz.Context{ + Identity: identityGetterFn(func() tlsca.Identity { + return tlsca.Identity{ + BotName: botName, + BotInstanceID: botInstanceID, + } + }), + }, nil + }), + }) + require.NoError(t, err) + + bi := newBotInstance(botName) + bi.Spec.InstanceId = botInstanceID + _, err = backend.CreateBotInstance(ctx, bi) + require.NoError(t, err) + + extraHeartbeats := 5 + for i := 0; i < (heartbeatHistoryLimit + extraHeartbeats); i++ { + _, err = service.SubmitHeartbeat(ctx, &machineidv1.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: strconv.Itoa(i), + }, + }) + require.NoError(t, err) + } + + bi, err = backend.GetBotInstance(ctx, botName, botInstanceID) + require.NoError(t, err) + assert.Len(t, bi.Status.LatestHeartbeats, heartbeatHistoryLimit) + assert.Equal(t, "0", bi.Status.InitialHeartbeat.Hostname) + // Ensure we have the last 10 heartbeats + for i := 0; i < heartbeatHistoryLimit; i++ { + wantHostname := strconv.Itoa(i + extraHeartbeats) + assert.Equal(t, wantHostname, bi.Status.LatestHeartbeats[i].Hostname) + } +} + +var allAdminStates = map[authz.AdminActionAuthState]string{ + authz.AdminActionAuthUnauthorized: "Unauthorized", + authz.AdminActionAuthNotRequired: "NotRequired", + authz.AdminActionAuthMFAVerified: "MFAVerified", + authz.AdminActionAuthMFAVerifiedWithReuse: "MFAVerifiedWithReuse", +} + +func stateToString(state authz.AdminActionAuthState) string { + str, ok := allAdminStates[state] + if !ok { + return fmt.Sprintf("unknown(%v)", state) + } + return str +} + +// otherAdminStates returns all admin states except for those passed in +func otherAdminStates(states []authz.AdminActionAuthState) []authz.AdminActionAuthState { + var out []authz.AdminActionAuthState + for state := range allAdminStates { + found := slices.Index(states, state) != -1 + if !found { + out = append(out, state) + } + } + return out +} + +type fakeChecker struct { + allowedVerbs []string + services.AccessChecker +} + +func (f fakeChecker) CheckAccessToRule(_ services.RuleContext, _ string, resource string, verb string) error { + if resource == types.KindBotInstance { + for _, allowedVerb := range f.allowedVerbs { + if allowedVerb == verb { + return nil + } + } + } + + return trace.AccessDenied("access denied to rule=%v/verb=%v", resource, verb) +} + +// callMethod calls a method with given name in the BotInstanceService +func callMethod(t *testing.T, service *BotInstanceService, method string) error { + for _, desc := range machineidv1.BotInstanceService_ServiceDesc.Methods { + if desc.MethodName == method { + _, err := desc.Handler(service, context.Background(), func(_ any) error { return nil }, nil) + return err + } + } + require.FailNow(t, "method %v not found", method) + panic("this line should never be reached: FailNow() should interrupt the test") +} + +// newBotInstance creates a new bot instance for the named bot with a random ID +func newBotInstance(botName string) *machineidv1.BotInstance { + id := uuid.New() + + bi := &machineidv1.BotInstance{ + Kind: types.KindBotInstance, + Version: types.V1, + Spec: &machineidv1.BotInstanceSpec{ + BotName: botName, + InstanceId: id.String(), + }, + Status: &machineidv1.BotInstanceStatus{}, + } + + return bi +} + +// createInstances creates and inserts many random bot instances for the named bot +func createInstances(t *testing.T, ctx context.Context, backend *local.BotInstanceService, botName string, count int) map[string]struct{} { + t.Helper() + + ids := map[string]struct{}{} + + for i := 0; i < count; i++ { + bi := newBotInstance(botName) + _, err := backend.CreateBotInstance(ctx, bi) + require.NoError(t, err) + + ids[bi.Spec.InstanceId] = struct{}{} + } + + return ids +} + +// listInstances lists all instances for the named bot (if any) +func listInstances(t *testing.T, ctx context.Context, service *BotInstanceService, botName string) []*machineidv1.BotInstance { + t.Helper() + + var resources []*machineidv1.BotInstance + var nextKey string + + for { + res, err := service.ListBotInstances(ctx, &machineidv1.ListBotInstancesRequest{ + FilterBotName: botName, + PageSize: 0, + PageToken: nextKey, + }) + require.NoError(t, err) + + resources = append(resources, res.BotInstances...) + + nextKey = res.NextPageToken + if nextKey == "" { + break + } + } + + return resources +} + +// newBotInstanceBackend creates a new local backend for BotInstance CRUD +// operations. +func newBotInstanceBackend(t *testing.T) *local.BotInstanceService { + b, err := memory.New(memory.Config{}) + require.NoError(t, err) + + backendService, err := local.NewBotInstanceService(b, clockwork.NewFakeClock()) + require.NoError(t, err) + + return backendService +} + +// newBotInstanceService creates a gRPC bot instance service for testing +func newBotInstanceService( + t *testing.T, + backendService *local.BotInstanceService, + authState authz.AdminActionAuthState, + checker services.AccessChecker, +) *BotInstanceService { + t.Helper() + + authorizer := authz.AuthorizerFunc(func(ctx context.Context) (*authz.Context, error) { + user, err := types.NewUser("example") + if err != nil { + return nil, err + } + + return &authz.Context{ + User: user, + Checker: checker, + AdminActionAuthState: authState, + }, nil + }) + + service, err := NewBotInstanceService(BotInstanceServiceConfig{ + Authorizer: authorizer, + Backend: backendService, + }) + require.NoError(t, err) + + return service +} diff --git a/lib/joinserver/joinserver.go b/lib/joinserver/joinserver.go index 7284ecc36a84a..735dae1e6ab08 100644 --- a/lib/joinserver/joinserver.go +++ b/lib/joinserver/joinserver.go @@ -133,6 +133,7 @@ func (s *JoinServiceGRPCServer) registerUsingIAMMethod(srv proto.JoinService_Reg if err := setClientRemoteAddr(ctx, req.RegisterUsingTokenRequest); err != nil { return nil, trace.Wrap(err) } + setBotParameters(ctx, req.RegisterUsingTokenRequest) return req, nil }) @@ -204,6 +205,38 @@ func setClientRemoteAddr(ctx context.Context, req *types.RegisterUsingTokenReque return nil } +// setBotParameters extracts a bot instance ID from either the incoming request +// or the context identity. +func setBotParameters(ctx context.Context, req *types.RegisterUsingTokenRequest) { + user, err := authz.UserFromContext(ctx) + if err != nil { + return + } + + ident := user.GetIdentity() + if checkForProxyRole(ident) { + // The request is coming from the proxy, so we can trust whatever + // parameter value it does (or doesn't) provide + return + } + + if ident.BotInstanceID != "" { + // Trust the instance ID from the incoming identity: bots will + // attempt to provide it on renewal, assuming it's still valid. + logrus.WithFields(logrus.Fields{ + "bot_name": ident.BotName, + "bot_instance_id": ident.BotInstanceID, + }).Info("bot is rejoining") + req.BotInstanceID = ident.BotInstanceID + } else { + // Clear any other value from the request: the value must come from a + // trusted source, i.e. another proxy or certificate field. + req.BotInstanceID = "" + } + + req.BotGeneration = int32(ident.Generation) +} + func (s *JoinServiceGRPCServer) registerUsingAzureMethod(srv proto.JoinService_RegisterUsingAzureMethodServer) error { ctx := srv.Context() certs, err := s.joinServiceClient.RegisterUsingAzureMethod(ctx, func(challenge string) (*proto.RegisterUsingAzureMethodRequest, error) { @@ -221,6 +254,7 @@ func (s *JoinServiceGRPCServer) registerUsingAzureMethod(srv proto.JoinService_R if err := setClientRemoteAddr(ctx, req.RegisterUsingTokenRequest); err != nil { return nil, trace.Wrap(err) } + setBotParameters(ctx, req.RegisterUsingTokenRequest) return req, nil }) @@ -298,6 +332,8 @@ func (s *JoinServiceGRPCServer) registerUsingTPMMethod( return trace.Wrap(err, "setting client address") } + setBotParameters(ctx, initReq.JoinRequest) + certs, err := s.joinServiceClient.RegisterUsingTPMMethod( ctx, initReq, diff --git a/lib/services/authority.go b/lib/services/authority.go index 1a5e60bf45494..bc66fde3ba0dc 100644 --- a/lib/services/authority.go +++ b/lib/services/authority.go @@ -383,6 +383,9 @@ type UserCertParams struct { // BotName is set to the name of the bot, if the user is a Machine ID bot user. // Empty for human users. BotName string + // BotInstanceID is the unique identifier for the bot instance, if this is a + // Machine ID bot. It is empty for human users. + BotInstanceID string // AllowedResourceIDs lists the resources the user should be able to access. AllowedResourceIDs string // ConnectionDiagnosticID references the ConnectionDiagnostic that we should use to append traces when testing a Connection. diff --git a/lib/services/bot_instance.go b/lib/services/bot_instance.go new file mode 100644 index 0000000000000..75932fad91843 --- /dev/null +++ b/lib/services/bot_instance.go @@ -0,0 +1,80 @@ +// Teleport +// Copyright (C) 2024 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package services + +import ( + "context" + + "github.com/gravitational/trace" + + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" +) + +// BotInstance is an interface for the BotInstance service. +type BotInstance interface { + // CreateBotInstance + CreateBotInstance(ctx context.Context, botInstance *machineidv1.BotInstance) (*machineidv1.BotInstance, error) + + // GetBotInstance + GetBotInstance(ctx context.Context, botName, instanceID string) (*machineidv1.BotInstance, error) + + // ListBotInstances + ListBotInstances(ctx context.Context, botName string, pageSize int, lastToken string) ([]*machineidv1.BotInstance, string, error) + + // DeleteBotInstance + DeleteBotInstance(ctx context.Context, botName, instanceID string) error + + // PatchBotInstance fetches an existing bot instance by bot name and ID, + // then calls `updateFn` to apply any changes before persisting the + // resource. + PatchBotInstance( + ctx context.Context, + botName, instanceID string, + updateFn func(*machineidv1.BotInstance) (*machineidv1.BotInstance, error), + ) (*machineidv1.BotInstance, error) +} + +// ValidateBotInstance verifies that required fields for a new BotInstance are present +func ValidateBotInstance(b *machineidv1.BotInstance) error { + if b.Spec == nil { + return trace.BadParameter("spec is required") + } + + if b.Spec.BotName == "" { + return trace.BadParameter("spec.bot_name is required") + } + + if b.Spec.InstanceId == "" { + return trace.BadParameter("spec.instance_id is required") + } + + if b.Status == nil { + return trace.BadParameter("status is required") + } + + return nil +} + +// MarshalBotInstance marshals the BotInstance object into a JSON byte array. +func MarshalBotInstance(object *machineidv1.BotInstance, opts ...MarshalOption) ([]byte, error) { + return MarshalProtoResource(object, opts...) +} + +// UnmarshalBotInstance unmarshals the BotInstance object from a JSON byte array. +func UnmarshalBotInstance(data []byte, opts ...MarshalOption) (*machineidv1.BotInstance, error) { + return UnmarshalProtoResource[*machineidv1.BotInstance](data, opts...) +} diff --git a/lib/services/local/bot_instance.go b/lib/services/local/bot_instance.go new file mode 100644 index 0000000000000..2db2712473daa --- /dev/null +++ b/lib/services/local/bot_instance.go @@ -0,0 +1,161 @@ +// Teleport +// Copyright (C) 2024 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package local + +import ( + "context" + + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + + headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/api/utils" + "github.com/gravitational/teleport/lib/backend" + "github.com/gravitational/teleport/lib/services" + "github.com/gravitational/teleport/lib/services/local/generic" +) + +const ( + botInstancePrefix = "bot_instance" +) + +// BotInstanceService exposes backend functionality for storing bot instances. +type BotInstanceService struct { + service *generic.ServiceWrapper[*machineidv1.BotInstance] + + clock clockwork.Clock +} + +// NewBotInstanceService creates a new BotInstanceService with the given backend. +func NewBotInstanceService(backend backend.Backend, clock clockwork.Clock) (*BotInstanceService, error) { + service, err := generic.NewServiceWrapper(backend, + types.KindBotInstance, + botInstancePrefix, + services.MarshalBotInstance, + services.UnmarshalBotInstance) + if err != nil { + return nil, trace.Wrap(err) + } + return &BotInstanceService{ + service: service, + clock: clock, + }, nil +} + +// CreateBotInstance inserts a new BotInstance into the backend. +// +// Note that new BotInstances will have their .Metadata.Name overwritten by the +// instance UUID. +func (b *BotInstanceService) CreateBotInstance(ctx context.Context, instance *machineidv1.BotInstance) (*machineidv1.BotInstance, error) { + if err := services.ValidateBotInstance(instance); err != nil { + return nil, trace.Wrap(err) + } + + instance.Kind = types.KindBotInstance + instance.Version = types.V1 + + if instance.Metadata == nil { + instance.Metadata = &headerv1.Metadata{} + } + + instance.Metadata.Name = instance.Spec.InstanceId + + serviceWithPrefix := b.service.WithPrefix(instance.Spec.BotName) + created, err := serviceWithPrefix.CreateResource(ctx, instance) + return created, trace.Wrap(err) +} + +// GetBotInstance retreives a specific bot instance given a bot name and +// instance ID. +func (b *BotInstanceService) GetBotInstance(ctx context.Context, botName, instanceID string) (*machineidv1.BotInstance, error) { + serviceWithPrefix := b.service.WithPrefix(botName) + instance, err := serviceWithPrefix.GetResource(ctx, instanceID) + return instance, trace.Wrap(err) +} + +// ListBotInstances lists all bot instances matching the given bot name filter. +// If an empty bot name is provided, all bot instances will be fetched. +func (b *BotInstanceService) ListBotInstances(ctx context.Context, botName string, pageSize int, lastKey string) ([]*machineidv1.BotInstance, string, error) { + // If botName is empty, return instances for all bots by not using a service prefix + if botName == "" { + r, nextToken, err := b.service.ListResources(ctx, pageSize, lastKey) + return r, nextToken, trace.Wrap(err) + } + + serviceWithPrefix := b.service.WithPrefix(botName) + r, nextToken, err := serviceWithPrefix.ListResources(ctx, pageSize, lastKey) + return r, nextToken, trace.Wrap(err) +} + +// DeleteBotInstance deletes a specific bot instance matching the given bot name +// and instance ID. +func (b *BotInstanceService) DeleteBotInstance(ctx context.Context, botName, instanceID string) error { + serviceWithPrefix := b.service.WithPrefix(botName) + return trace.Wrap(serviceWithPrefix.DeleteResource(ctx, instanceID)) +} + +// PatchBotInstance uses the supplied function to patch the bot instance +// matching the given (botName, instanceID) key and persists the patched +// resource. It will make multiple attempts if a `CompareFailed` error is +// raised, automatically re-applying `updateFn()`. +func (b *BotInstanceService) PatchBotInstance( + ctx context.Context, + botName, instanceID string, + updateFn func(*machineidv1.BotInstance) (*machineidv1.BotInstance, error), +) (*machineidv1.BotInstance, error) { + const iterLimit = 3 + + for i := 0; i < iterLimit; i++ { + existing, err := b.GetBotInstance(ctx, botName, instanceID) + if err != nil { + return nil, trace.Wrap(err) + } + + updated, err := updateFn(utils.CloneProtoMsg(existing)) + if err != nil { + return nil, trace.Wrap(err) + } + + switch { + case updated.GetMetadata().GetName() != existing.GetMetadata().GetName(): + return nil, trace.BadParameter("metadata.name: cannot be patched") + case updated.GetMetadata().GetRevision() != existing.GetMetadata().GetRevision(): + return nil, trace.BadParameter("metadata.revision: cannot be patched") + case updated.GetSpec().GetInstanceId() != existing.GetSpec().GetInstanceId(): + return nil, trace.BadParameter("spec.instance_id: cannot be patched") + case updated.GetSpec().GetBotName() != existing.GetSpec().GetBotName(): + return nil, trace.BadParameter("spec.bot_name: cannot be patched") + } + + serviceWithPrefix := b.service.WithPrefix(botName) + lease, err := serviceWithPrefix.ConditionalUpdateResource(ctx, updated) + if err != nil { + if trace.IsCompareFailed(err) { + continue + } + + return nil, trace.Wrap(err) + } + + updated.GetMetadata().Revision = lease.GetMetadata().Revision + return updated, nil + } + + return nil, trace.CompareFailed("failed to update bot instance within %v iterations", iterLimit) +} diff --git a/lib/services/local/bot_instance_test.go b/lib/services/local/bot_instance_test.go new file mode 100644 index 0000000000000..68c3eb040c62e --- /dev/null +++ b/lib/services/local/bot_instance_test.go @@ -0,0 +1,324 @@ +/* + * Teleport + * Copyright (C) 2024 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package local + +import ( + "context" + "testing" + "time" + + "github.com/google/uuid" + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/timestamppb" + + headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/backend" + "github.com/gravitational/teleport/lib/backend/memory" +) + +// newBotInstance creates (but does not insert) a bot instance that is ready for +// insertion into the backend. If any modifier functions are provided, they will +// be executed on the instance before it is returned. +func newBotInstance(botName string, fns ...func(*machineidv1.BotInstance)) *machineidv1.BotInstance { + id := uuid.New() + + bi := &machineidv1.BotInstance{ + Kind: types.KindBotInstance, + Version: types.V1, + Spec: &machineidv1.BotInstanceSpec{ + BotName: botName, + InstanceId: id.String(), + }, + Status: &machineidv1.BotInstanceStatus{}, + } + + for _, fn := range fns { + fn(bi) + } + + return bi +} + +// withBotInstanceInvalidMetadata modifies a BotInstance such that it should +// raise an error during an insert attempt. +func withBotInstanceInvalidMetadata() func(*machineidv1.BotInstance) { + return func(bi *machineidv1.BotInstance) { + bi.Metadata = &headerv1.Metadata{ + Name: "invalid", + } + } +} + +// withBotInstanceExpiry sets the .Metadata.Expires field of a bot instance to +// the given timestamp. +func withBotInstanceExpiry(expiry time.Time) func(*machineidv1.BotInstance) { + return func(bi *machineidv1.BotInstance) { + if bi.Metadata == nil { + bi.Metadata = &headerv1.Metadata{} + } + + bi.Metadata.Expires = timestamppb.New(expiry) + } +} + +// createInstances creates new bot instances for the named bot with random UUIDs +func createInstances(t *testing.T, ctx context.Context, service *BotInstanceService, botName string, count int) map[string]struct{} { + t.Helper() + + ids := map[string]struct{}{} + + for i := 0; i < count; i++ { + bi := newBotInstance(botName) + _, err := service.CreateBotInstance(ctx, bi) + require.NoError(t, err) + + ids[bi.Spec.InstanceId] = struct{}{} + } + + return ids +} + +// listInstances fetches all instances from the BotInstanceService matching the botName filter +func listInstances(t *testing.T, ctx context.Context, service *BotInstanceService, botName string) []*machineidv1.BotInstance { + t.Helper() + + var resources []*machineidv1.BotInstance + var bis []*machineidv1.BotInstance + var nextKey string + var err error + + for { + bis, nextKey, err = service.ListBotInstances(ctx, botName, 0, nextKey) + require.NoError(t, err) + + resources = append(resources, bis...) + + if nextKey == "" { + break + } + } + + return resources +} + +// TestBotInstanceCreateMetadata ensures bot instance metadata is constructed +// correctly when a new bot instance is inserted into the backend. +func TestBotInstanceCreateMetadata(t *testing.T) { + t.Parallel() + + clock := clockwork.NewFakeClock() + + tests := []struct { + name string + instance *machineidv1.BotInstance + assertError require.ErrorAssertionFunc + assertValue require.ValueAssertionFunc + }{ + { + name: "non-nil metadata", + instance: newBotInstance("foo", withBotInstanceInvalidMetadata()), + assertError: require.NoError, + assertValue: func(t require.TestingT, i interface{}, _ ...interface{}) { + bi, ok := i.(*machineidv1.BotInstance) + require.True(t, ok) + + // .Metadata.Name should be overwritten with the correct value + require.Equal(t, bi.Spec.InstanceId, bi.Metadata.Name) + require.Nil(t, bi.Metadata.Expires) + }, + }, + { + name: "valid without expiry", + instance: newBotInstance("foo"), + assertError: require.NoError, + assertValue: func(t require.TestingT, i interface{}, _ ...interface{}) { + bi, ok := i.(*machineidv1.BotInstance) + require.True(t, ok) + + require.Equal(t, bi.Spec.InstanceId, bi.Metadata.Name) + require.Nil(t, bi.Metadata.Expires) + }, + }, + { + name: "valid with expiry", + instance: newBotInstance("foo", withBotInstanceExpiry(clock.Now().Add(time.Hour))), + assertError: require.NoError, + assertValue: func(t require.TestingT, i interface{}, _ ...interface{}) { + bi, ok := i.(*machineidv1.BotInstance) + require.True(t, ok) + + require.Equal(t, bi.Spec.InstanceId, bi.Metadata.Name) + require.Equal(t, clock.Now().Add(time.Hour).UTC(), bi.Metadata.Expires.AsTime()) + }, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + ctx := context.Background() + + mem, err := memory.New(memory.Config{ + Context: ctx, + Clock: clock, + }) + require.NoError(t, err) + + service, err := NewBotInstanceService(backend.NewSanitizer(mem), clock) + require.NoError(t, err) + + value, err := service.CreateBotInstance(ctx, tc.instance) + tc.assertError(t, err) + tc.assertValue(t, value) + }) + } +} + +// TestBotInstanceInvalidGetters ensures proper behavior for an invalid +// GetBotInstance call. +func TestBotInstanceInvalidGetters(t *testing.T) { + t.Parallel() + + ctx := context.Background() + clock := clockwork.NewFakeClock() + + mem, err := memory.New(memory.Config{ + Context: ctx, + Clock: clock, + }) + require.NoError(t, err) + + service, err := NewBotInstanceService(backend.NewSanitizer(mem), clock) + require.NoError(t, err) + + _, err = service.CreateBotInstance(ctx, newBotInstance("example")) + require.NoError(t, err) + + _, err = service.GetBotInstance(ctx, "example", "invalid") + require.True(t, trace.IsNotFound(err)) +} + +// TestBotInstanceCRUD tests backend CRUD functionality for the bot instance +// service. +func TestBotInstanceCRUD(t *testing.T) { + t.Parallel() + + ctx := context.Background() + clock := clockwork.NewFakeClock() + + mem, err := memory.New(memory.Config{ + Context: ctx, + Clock: clock, + }) + require.NoError(t, err) + + service, err := NewBotInstanceService(backend.NewSanitizer(mem), clock) + require.NoError(t, err) + + bi := newBotInstance("example") + patched, err := service.CreateBotInstance(ctx, bi) + require.NoError(t, err) + + // metadata should be generated from the bot spec + require.Equal(t, bi.Spec.InstanceId, patched.Metadata.Name) + + // we should be able to retrieve a matching instance + bi2, err := service.GetBotInstance(ctx, bi.Spec.BotName, bi.Spec.InstanceId) + require.NoError(t, err) + require.EqualExportedValues(t, patched, bi2) + require.Equal(t, bi.Metadata.Name, bi2.Metadata.Name) + + resources := listInstances(t, ctx, service, "example") + + require.Len(t, resources, 1, "must list only 1 bot instance") + require.EqualExportedValues(t, patched, resources[0]) + + // append a heartbeat to a stored instance + heartbeat := &machineidv1.BotInstanceStatusHeartbeat{ + Hostname: "foo", + } + + patched, err = service.PatchBotInstance(ctx, bi.Spec.BotName, bi.Spec.InstanceId, func(bi *machineidv1.BotInstance) (*machineidv1.BotInstance, error) { + bi.Status.LatestHeartbeats = append([]*machineidv1.BotInstanceStatusHeartbeat{heartbeat}, bi.Status.LatestHeartbeats...) + return bi, nil + }) + require.NoError(t, err) + + require.Len(t, patched.Status.LatestHeartbeats, 1) + require.EqualExportedValues(t, heartbeat, patched.Status.LatestHeartbeats[0]) + + // delete the stored instance + require.NoError(t, service.DeleteBotInstance(ctx, bi.Spec.BotName, bi.Spec.InstanceId)) + + // subsequent delete attempts should fail + require.Error(t, service.DeleteBotInstance(ctx, bi.Spec.BotName, bi.Spec.InstanceId)) +} + +// TestBotInstanceList verifies list and filtering functionality for bot +// instances. +func TestBotInstanceList(t *testing.T) { + t.Parallel() + + ctx := context.Background() + clock := clockwork.NewFakeClock() + + mem, err := memory.New(memory.Config{ + Context: ctx, + Clock: clock, + }) + require.NoError(t, err) + + service, err := NewBotInstanceService(backend.NewSanitizer(mem), clock) + require.NoError(t, err) + + aIds := createInstances(t, ctx, service, "a", 3) + bIds := createInstances(t, ctx, service, "b", 4) + + // listing "a" should only return known "a" instances + aInstances := listInstances(t, ctx, service, "a") + require.Len(t, aInstances, 3) + for _, ins := range aInstances { + require.Contains(t, aIds, ins.Spec.InstanceId) + } + + // listing "b" should only return known "b" instances + bInstances := listInstances(t, ctx, service, "b") + require.Len(t, bInstances, 4) + for _, ins := range bInstances { + require.Contains(t, bIds, ins.Spec.InstanceId) + } + + allIds := map[string]struct{}{} + for i := range aIds { + allIds[i] = struct{}{} + } + for i := range bIds { + allIds[i] = struct{}{} + } + + // Listing an empty bot name ("") should return all instances. + allInstances := listInstances(t, ctx, service, "") + require.Len(t, allInstances, 7) + for _, ins := range allInstances { + require.Contains(t, allIds, ins.Spec.InstanceId) + } +} diff --git a/lib/services/local/events.go b/lib/services/local/events.go index b9079e7d8a2de..8d69a7fd69407 100644 --- a/lib/services/local/events.go +++ b/lib/services/local/events.go @@ -29,7 +29,9 @@ import ( "github.com/gravitational/teleport" apidefaults "github.com/gravitational/teleport/api/defaults" + headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" kubewaitingcontainerpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" + machineidv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/kubewaitingcontainer" "github.com/gravitational/teleport/lib/backend" @@ -204,6 +206,8 @@ func (e *EventsService) NewWatcher(ctx context.Context, watch types.Watch) (type parser = newGlobalNotificationParser() case types.KindAccessMonitoringRule: parser = newAccessMonitoringRuleParser() + case types.KindBotInstance: + parser = newBotInstanceParser() case types.KindInstance: parser = newInstanceParser() default: @@ -2081,6 +2085,57 @@ func (p *globalNotificationParser) parse(event backend.Event) (types.Resource, e } } +func newBotInstanceParser() *botInstanceParser { + return &botInstanceParser{ + baseParser: newBaseParser(backend.Key(botInstancePrefix)), + } +} + +type botInstanceParser struct { + baseParser +} + +func (p *botInstanceParser) parse(event backend.Event) (types.Resource, error) { + switch event.Type { + case types.OpDelete: + // Remove the first separator so none of the separated parts will be + // empty strings + key := string(event.Item.Key) + key = strings.TrimPrefix(key, string(backend.Separator)) + + // bot_instance/<1: bot name>/<2: uuid> + parts := strings.Split(key, string(backend.Separator)) + if len(parts) != 3 { + return nil, trace.BadParameter("malformed key for %s event: %s", types.KindBotInstance, event.Item.Key) + } + + botInstance := &machineidv1.BotInstance{ + Kind: types.KindBotInstance, + Version: types.V1, + Spec: &machineidv1.BotInstanceSpec{ + BotName: parts[1], + InstanceId: parts[2], + }, + Metadata: &headerv1.Metadata{ + Name: parts[2], + }, + } + + return types.Resource153ToLegacy(botInstance), nil + case types.OpPut: + botInstance, err := services.UnmarshalBotInstance( + event.Item.Value, + services.WithExpires(event.Item.Expires), + services.WithRevision(event.Item.Revision)) + if err != nil { + return nil, trace.Wrap(err) + } + return types.Resource153ToLegacy(botInstance), nil + default: + return nil, trace.BadParameter("event %v is not supported", event.Type) + } +} + func newInstanceParser() *instanceParser { return &instanceParser{ baseParser: newBaseParser(backend.Key(instancePrefix)), diff --git a/lib/services/presets.go b/lib/services/presets.go index 1d7992d1bea3a..2e34e01dfa0a9 100644 --- a/lib/services/presets.go +++ b/lib/services/presets.go @@ -176,6 +176,7 @@ func NewPresetEditorRole() types.Role { types.NewRule(types.KindServerInfo, RW()), types.NewRule(types.KindAppServer, RW()), types.NewRule(types.KindAccessMonitoringRule, RW()), + types.NewRule(types.KindBotInstance, RW()), }, }, }, @@ -282,6 +283,7 @@ func NewPresetAuditorRole() types.Role { types.NewRule(types.KindInstance, RO()), types.NewRule(types.KindSecurityReport, append(RO(), types.VerbUse)), types.NewRule(types.KindAuditQuery, append(RO(), types.VerbUse)), + types.NewRule(types.KindBotInstance, RO()), }, }, }, diff --git a/lib/services/resource.go b/lib/services/resource.go index aeba9adb6131a..db7a393de3333 100644 --- a/lib/services/resource.go +++ b/lib/services/resource.go @@ -234,6 +234,8 @@ func ParseShortcut(in string) (string, error) { return types.KindServerInfo, nil case types.KindBot, "bots": return types.KindBot, nil + case types.KindBotInstance, types.KindBotInstance + "s": + return types.KindBotInstance, nil case types.KindDatabaseObjectImportRule, "db_object_import_rules", "database_object_import_rule": return types.KindDatabaseObjectImportRule, nil case types.KindAccessMonitoringRule: diff --git a/lib/services/useracl.go b/lib/services/useracl.go index a5f0116e2933f..03af83c04dd57 100644 --- a/lib/services/useracl.go +++ b/lib/services/useracl.go @@ -106,6 +106,8 @@ type UserACL struct { AccessGraph ResourceAccess `json:"accessGraph"` // Bots defines access to manage Bots. Bots ResourceAccess `json:"bots"` + // BotInstances defines access to manage bot instances + BotInstances ResourceAccess `json:"botInstances"` // AccessMonitoringRule defines access to manage access monitoring rule resources. AccessMonitoringRule ResourceAccess `json:"accessMonitoringRule"` // CrownJewel defines access to manage CrownJewel resources. @@ -199,6 +201,7 @@ func NewUserACL(user types.User, userRoles RoleSet, features proto.Features, des accessListAccess := newAccess(userRoles, ctx, types.KindAccessList) externalAuditStorage := newAccess(userRoles, ctx, types.KindExternalAuditStorage) bots := newAccess(userRoles, ctx, types.KindBot) + botInstances := newAccess(userRoles, ctx, types.KindBotInstance) crownJewelAccess := newAccess(userRoles, ctx, types.KindCrownJewel) var auditQuery ResourceAccess @@ -244,6 +247,7 @@ func NewUserACL(user types.User, userRoles RoleSet, features proto.Features, des ExternalAuditStorage: externalAuditStorage, AccessGraph: accessGraphAccess, Bots: bots, + BotInstances: botInstances, AccessMonitoringRule: accessMonitoringRules, CrownJewel: crownJewelAccess, } diff --git a/lib/srv/authhandlers.go b/lib/srv/authhandlers.go index 8404b02fc0ce9..d80f5704acfe4 100644 --- a/lib/srv/authhandlers.go +++ b/lib/srv/authhandlers.go @@ -209,6 +209,9 @@ func (h *AuthHandlers) CreateIdentityContext(sconn *ssh.ServerConn) (IdentityCon if botName, ok := certificate.Extensions[teleport.CertExtensionBotName]; ok { identity.BotName = botName } + if botInstanceID, ok := certificate.Extensions[teleport.CertExtensionBotInstanceID]; ok { + identity.BotInstanceID = botInstanceID + } if generationStr, ok := certificate.Extensions[teleport.CertExtensionGeneration]; ok { generation, err := strconv.ParseUint(generationStr, 10, 64) if err != nil { diff --git a/lib/srv/ctx.go b/lib/srv/ctx.go index cccf7e0f95ae6..2c72a7a46b348 100644 --- a/lib/srv/ctx.go +++ b/lib/srv/ctx.go @@ -280,6 +280,10 @@ type IdentityContext struct { // with, if any. BotName string + // BotInstanceID is the unique identifier of the Machine ID bot instance + // this identity is associated with, if any. + BotInstanceID string + // AllowedResourceIDs lists the resources this identity should be allowed to // access AllowedResourceIDs []types.ResourceID @@ -1233,6 +1237,8 @@ func (id *IdentityContext) GetUserMetadata() apievents.UserMetadata { AccessRequests: id.ActiveRequests, TrustedDevice: eventDeviceMetadataFromCert(id.Certificate), UserKind: userKind, + BotName: id.BotName, + BotInstanceID: id.BotInstanceID, } } diff --git a/lib/srv/ctx_test.go b/lib/srv/ctx_test.go index c9edf04f0baf2..6bc99ca6e7dd3 100644 --- a/lib/srv/ctx_test.go +++ b/lib/srv/ctx_test.go @@ -232,6 +232,22 @@ func TestIdentityContext_GetUserMetadata(t *testing.T) { UserKind: apievents.UserKind_USER_KIND_HUMAN, }, }, + { + name: "bot metadata", + idCtx: IdentityContext{ + TeleportUser: "bot-alpaca", + Login: "alpaca1", + BotName: "alpaca", + BotInstanceID: "123-123-123", + }, + want: apievents.UserMetadata{ + User: "bot-alpaca", + Login: "alpaca1", + UserKind: apievents.UserKind_USER_KIND_BOT, + BotName: "alpaca", + BotInstanceID: "123-123-123", + }, + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { diff --git a/lib/tbot/bot/destination.go b/lib/tbot/bot/destination.go index a52a96b08ef9f..ab1d6b4310106 100644 --- a/lib/tbot/bot/destination.go +++ b/lib/tbot/bot/destination.go @@ -57,6 +57,11 @@ type Destination interface { // as YAML including the type header. MarshalYAML() (interface{}, error) + // IsPersistent indicates whether this destination is persistent. + // This is true for most production destinations, but will be false for + // Nop or Memory destinations. + IsPersistent() bool + // Stringer so that Destination's implements fmt.Stringer which allows for // better logging. fmt.Stringer diff --git a/lib/tbot/config/config.go b/lib/tbot/config/config.go index bb4ca66d35449..7eb702cae28e0 100644 --- a/lib/tbot/config/config.go +++ b/lib/tbot/config/config.go @@ -250,12 +250,6 @@ func (conf *OnboardingConfig) HasToken() bool { return conf.TokenValue != "" } -// RenewableJoinMethod indicates that certificate renewal should be used with -// this join method rather than rejoining each time. -func (conf *OnboardingConfig) RenewableJoinMethod() bool { - return conf.JoinMethod == types.JoinMethodToken -} - // SetToken stores the value for --token or auth_token in the config // // In the case of the token value pointing to a file, this allows us to diff --git a/lib/tbot/config/destination_directory.go b/lib/tbot/config/destination_directory.go index d0b67e2171198..6287f4f40b93d 100644 --- a/lib/tbot/config/destination_directory.go +++ b/lib/tbot/config/destination_directory.go @@ -275,3 +275,7 @@ func (dm *DestinationDirectory) MarshalYAML() (interface{}, error) { type raw DestinationDirectory return withTypeHeader((*raw)(dm), DestinationDirectoryType) } + +func (dd *DestinationDirectory) IsPersistent() bool { + return true +} diff --git a/lib/tbot/config/destination_kubernetes_secret.go b/lib/tbot/config/destination_kubernetes_secret.go index e0a7740944cb3..57eb78fc78cc9 100644 --- a/lib/tbot/config/destination_kubernetes_secret.go +++ b/lib/tbot/config/destination_kubernetes_secret.go @@ -287,3 +287,7 @@ func (dks *DestinationKubernetesSecret) MarshalYAML() (interface{}, error) { type raw DestinationKubernetesSecret return withTypeHeader((*raw)(dks), DestinationKubernetesSecretType) } + +func (dks *DestinationKubernetesSecret) IsPersistent() bool { + return true +} diff --git a/lib/tbot/config/destination_memory.go b/lib/tbot/config/destination_memory.go index c357e98b9998e..ce4f3a9151e9a 100644 --- a/lib/tbot/config/destination_memory.go +++ b/lib/tbot/config/destination_memory.go @@ -120,3 +120,7 @@ func (dm *DestinationMemory) MarshalYAML() (interface{}, error) { type raw DestinationMemory return withTypeHeader((*raw)(dm), DestinationMemoryType) } + +func (dm *DestinationMemory) IsPersistent() bool { + return false +} diff --git a/lib/tbot/config/destination_nop.go b/lib/tbot/config/destination_nop.go index 7b7eb10d5002f..e5682ab4e6a7d 100644 --- a/lib/tbot/config/destination_nop.go +++ b/lib/tbot/config/destination_nop.go @@ -79,3 +79,7 @@ func (dm *DestinationNop) MarshalYAML() (interface{}, error) { type raw DestinationNop return withTypeHeader((*raw)(dm), DestinationNopType) } + +func (dm *DestinationNop) IsPersistent() bool { + return false +} diff --git a/lib/tbot/identity/identity.go b/lib/tbot/identity/identity.go index 4bb06f33e4325..3c147a50085e9 100644 --- a/lib/tbot/identity/identity.go +++ b/lib/tbot/identity/identity.go @@ -105,6 +105,8 @@ type Identity struct { // ClusterName is a name of host's cluster determined from the // x509 certificate. ClusterName string + // TLSIdentity is the parsed TLS identity based on the X509 certificate. + TLSIdentity *tlsca.Identity } // LoadIdentityParams contains parameters beyond proto.Certs needed to load a @@ -170,7 +172,7 @@ func ReadIdentityFromStore(params *LoadIdentityParams, certs *proto.Certs) (*Ide return nil, trace.Wrap(err, "parsing ssh identity") } - clusterName, x509Cert, tlsCert, tlsCAPool, err := ParseTLSIdentity( + clusterName, tlsIdent, x509Cert, tlsCert, tlsCAPool, err := ParseTLSIdentity( params.PrivateKeyBytes, certs.TLS, certs.TLSCACerts, ) if err != nil { @@ -195,41 +197,54 @@ func ReadIdentityFromStore(params *LoadIdentityParams, certs *proto.Certs) (*Ide X509Cert: x509Cert, TLSCert: tlsCert, TLSCAPool: tlsCAPool, + TLSIdentity: tlsIdent, }, nil } // ParseTLSIdentity reads TLS identity from key pair func ParseTLSIdentity( keyBytes []byte, certBytes []byte, caCertsBytes [][]byte, -) (clusterName string, x509Cert *x509.Certificate, tlsCert *tls.Certificate, certPool *x509.CertPool, err error) { +) ( + clusterName string, + tlsIdentity *tlsca.Identity, + x509Cert *x509.Certificate, + tlsCert *tls.Certificate, + certPool *x509.CertPool, + err error, +) { x509Cert, err = tlsca.ParseCertificatePEM(certBytes) if err != nil { - return "", nil, nil, nil, trace.Wrap(err, "parsing certificate") + return "", nil, nil, nil, nil, trace.Wrap(err, "parsing certificate") } if len(x509Cert.Issuer.Organization) == 0 { - return "", nil, nil, nil, trace.BadParameter("certificate missing CA organization") + return "", nil, nil, nil, nil, trace.BadParameter("certificate missing CA organization") } clusterName = x509Cert.Issuer.Organization[0] if clusterName == "" { - return "", nil, nil, nil, trace.BadParameter("certificate missing cluster name") + return "", nil, nil, nil, nil, trace.BadParameter("certificate missing cluster name") } certPool = x509.NewCertPool() for j := range caCertsBytes { parsedCert, err := tlsca.ParseCertificatePEM(caCertsBytes[j]) if err != nil { - return "", nil, nil, nil, trace.Wrap(err, "parsing CA certificate") + return "", nil, nil, nil, nil, trace.Wrap(err, "parsing CA certificate") } certPool.AddCert(parsedCert) } cert, err := keys.X509KeyPair(certBytes, keyBytes) if err != nil { - return "", nil, nil, nil, trace.Wrap(err, "parse private key") + return "", nil, nil, nil, nil, trace.Wrap(err, "parse private key") } - return clusterName, x509Cert, &cert, certPool, nil + tlsIdent, err := tlsca.FromSubject(x509Cert.Subject, x509Cert.NotAfter) + if err != nil { + return "", nil, nil, nil, nil, trace.Wrap(err, "parse tls identity") + } + + return clusterName, tlsIdent, x509Cert, &cert, certPool, nil } // parseSSHIdentity reads identity from initialized keypair diff --git a/lib/tbot/output_utils.go b/lib/tbot/output_utils.go index 417f12458d0c8..0f1ba0c071450 100644 --- a/lib/tbot/output_utils.go +++ b/lib/tbot/output_utils.go @@ -273,9 +273,16 @@ func describeTLSIdentity(ctx context.Context, log *slog.Logger, ident *identity. } } + botDesc := "" + if tlsIdent.BotInstanceID != "" { + botDesc = fmt.Sprintf(", id=%s", tlsIdent.BotInstanceID) + } + duration := cert.NotAfter.Sub(cert.NotBefore) return fmt.Sprintf( - "valid: after=%v, before=%v, duration=%s | kind=tls, renewable=%v, disallow-reissue=%v, roles=%v, principals=%v, generation=%v", + "%s%s | valid: after=%v, before=%v, duration=%s | kind=tls, renewable=%v, disallow-reissue=%v, roles=%v, principals=%v, generation=%v", + tlsIdent.BotName, + botDesc, cert.NotBefore.Format(time.RFC3339), cert.NotAfter.Format(time.RFC3339), duration, diff --git a/lib/tbot/service_bot_identity.go b/lib/tbot/service_bot_identity.go index 41a4f341c545f..a49ce52f17049 100644 --- a/lib/tbot/service_bot_identity.go +++ b/lib/tbot/service_bot_identity.go @@ -92,20 +92,27 @@ func hasTokenChanged(configTokenBytes, identityBytes []byte) bool { } // loadIdentityFromStore attempts to load a persisted identity from a store. -// It checks this loaded identity against the configured onboarding profile -// and ignores the loaded identity if there has been a configuration change. -func (s *identityService) loadIdentityFromStore(ctx context.Context, store bot.Destination) (*identity.Identity, error) { +// It then checks: +// - This identity against the configured onboarding profile. +// - This identity is not expired +// If any checks fail, it will not return the loaded identity. +func (s *identityService) loadIdentityFromStore(ctx context.Context, store bot.Destination) *identity.Identity { ctx, span := tracer.Start(ctx, "identityService/loadIdentityFromStore") defer span.End() - s.log.InfoContext(ctx, "Loading existing bot identity from store.", "store", store) + s.log.InfoContext(ctx, "Loading existing bot identity from store", "store", store) loadedIdent, err := identity.LoadIdentity(ctx, store, identity.BotKinds()...) if err != nil { if trace.IsNotFound(err) { - s.log.InfoContext(ctx, "No existing bot identity found in store. Bot will join using configured token.") - return nil, nil + s.log.InfoContext(ctx, "No existing bot identity found in store") + return nil } else { - return nil, trace.Wrap(err) + s.log.WarnContext( + ctx, + "Failed to load existing bot identity from store", + "error", err, + ) + return nil } } @@ -116,77 +123,99 @@ func (s *identityService) loadIdentityFromStore(ctx context.Context, store bot.D sha := sha256.Sum256([]byte(token)) configTokenHashBytes := []byte(hex.EncodeToString(sha[:])) if hasTokenChanged(loadedIdent.TokenHashBytes, configTokenHashBytes) { - s.log.InfoContext(ctx, "Bot identity loaded from store does not match configured token. Bot will fetch identity using configured token.") + s.log.InfoContext(ctx, "Bot identity loaded from store does not match configured token") // If the token has changed, do not return the loaded // identity. - return nil, nil + return nil } } else { // we failed to get the newly configured token to compare to, // we'll assume the last good credentials written to disk should // still be used. - s.log.ErrorContext(ctx, "There was an error loading the configured token. Bot identity loaded from store will be tried.", "error", err) + s.log.WarnContext( + ctx, + "There was an error loading the configured token to compare to existing identity. Identity loaded from store will be tried", + "error", err, + ) } } - s.log.InfoContext(ctx, "Loaded existing bot identity from store.", "identity", describeTLSIdentity(ctx, s.log, loadedIdent)) - return loadedIdent, nil + s.log.InfoContext( + ctx, + "Loaded existing bot identity from store", + "identity", describeTLSIdentity(ctx, s.log, loadedIdent), + ) + + now := time.Now().UTC() + if now.After(loadedIdent.X509Cert.NotAfter) { + s.log.WarnContext( + ctx, + "Identity loaded from store is expired, it will not be used", + "not_after", loadedIdent.X509Cert.NotAfter.Format(time.RFC3339), + "current_time", now.Format(time.RFC3339), + ) + return nil + } else if now.Before(loadedIdent.X509Cert.NotBefore) { + s.log.WarnContext( + ctx, + "Identity loaded from store is not yet valid, it will not be used. Confirm that the system time is correct", + "not_before", loadedIdent.X509Cert.NotBefore.Format(time.RFC3339), + "current_time", now.Format(time.RFC3339), + ) + return nil + } + + return loadedIdent } -// Initialize attempts to load an existing identity from the bot's storage. -// If an identity is found, it is checked against the configured onboarding -// settings. It is then renewed and persisted. +// Initialize sets up the bot identity at startup. This process has a few +// steps to it. +// +// First, we attempt to load an existing identity from the configured storage. +// This is ignored if we know that the onboarding settings have changed. +// +// If the identity is found, and seems valid, we attempt to renew using this +// identity to give us a fresh set of certificates. // -// If no identity is found, or the identity is no longer valid, a new identity -// is requested using the configured onboarding settings. +// If there is no identity, or the identity is invalid, we'll join using the +// configured onboarding settings. func (s *identityService) Initialize(ctx context.Context) error { ctx, span := tracer.Start(ctx, "identityService/Initialize") defer span.End() - s.log.InfoContext(ctx, "Initializing bot identity.") - var loadedIdent *identity.Identity - var err error - if s.cfg.Onboarding.RenewableJoinMethod() { - // Nil, nil will be returned if no identity can be found in store or - // the identity in the store is no longer relevant. - loadedIdent, err = s.loadIdentityFromStore(ctx, s.cfg.Storage.Destination) - if err != nil { - return trace.Wrap(err) + s.log.InfoContext(ctx, "Initializing bot identity") + // nil will be returned if no identity can be found in store or + // the identity in the store is no longer relevant or valid. + loadedIdent := s.loadIdentityFromStore(ctx, s.cfg.Storage.Destination) + if loadedIdent == nil { + if !s.cfg.Onboarding.HasToken() { + // There's no loaded identity to work with, and they've not + // configured a token to use to request an identity :( + return trace.BadParameter( + "no existing identity found on disk or join token configured", + ) } + s.log.InfoContext( + ctx, + "Bot was unable to load a valid existing identity from the store, will attempt to join using configured token", + ) } + var err error var newIdentity *identity.Identity - if s.cfg.Onboarding.RenewableJoinMethod() && loadedIdent != nil { - // If using a renewable join method and we loaded an identity, let's - // immediately renew it so we know that after initialisation we have the - // full certificate TTL. - if err := checkIdentity(ctx, s.log, loadedIdent); err != nil { - return trace.Wrap(err) - } - facade := identity.NewFacade(s.cfg.FIPS, s.cfg.Insecure, loadedIdent) - authClient, err := clientForFacade(ctx, s.log, s.cfg, facade, s.resolver) - if err != nil { - return trace.Wrap(err) - } - defer authClient.Close() - newIdentity, err = botIdentityFromAuth( - ctx, s.log, loadedIdent, authClient, s.cfg.CertificateTTL, - ) + if loadedIdent != nil { + newIdentity, err = renewIdentity(ctx, s.log, s.cfg, s.resolver, loadedIdent) if err != nil { - return trace.Wrap(err) + return trace.Wrap(err, "renewing identity using loaded identity") } - } else if s.cfg.Onboarding.HasToken() { - // If using a non-renewable join method, or we weren't able to load an - // identity from the store, let's get a new identity using the - // configured token. - newIdentity, err = botIdentityFromToken(ctx, s.log, s.cfg) + } else { + // TODO(noah): If the above renewal fails, do we want to try joining + // instead? Is there a sane amount of times to try renewing before + // giving up and rejoining? + newIdentity, err = botIdentityFromToken(ctx, s.log, s.cfg, nil) if err != nil { - return trace.Wrap(err) + return trace.Wrap(err, "joining with token") } - } else { - // There's no loaded identity to work with, and they've not configured - // a token to use to request an identity :( - return trace.BadParameter("no existing identity found on disk or join token configured") } s.log.InfoContext(ctx, "Fetched new bot identity", "identity", describeTLSIdentity(ctx, s.log, newIdentity)) @@ -262,32 +291,9 @@ func (s *identityService) renew( return trace.Wrap(err, "Cannot write to destination %s, aborting.", botDestination) } - var newIdentity *identity.Identity - var err error - if s.cfg.Onboarding.RenewableJoinMethod() { - // When using a renewable join method, we use GenerateUserCerts to - // request a new certificate using our current identity. - // We explicitly create a new client here to ensure that the latest - // identity is being used! - facade := identity.NewFacade(s.cfg.FIPS, s.cfg.Insecure, currentIdentity) - authClient, err := clientForFacade(ctx, s.log, s.cfg, facade, s.resolver) - if err != nil { - return trace.Wrap(err, "creating auth client") - } - defer authClient.Close() - newIdentity, err = botIdentityFromAuth( - ctx, s.log, currentIdentity, authClient, s.cfg.CertificateTTL, - ) - if err != nil { - return trace.Wrap(err, "renewing identity with existing identity") - } - } else { - // When using the non-renewable join methods, we rejoin each time rather - // than using certificate renewal. - newIdentity, err = botIdentityFromToken(ctx, s.log, s.cfg) - if err != nil { - return trace.Wrap(err, "renewing identity with token") - } + newIdentity, err := renewIdentity(ctx, s.log, s.cfg, s.resolver, currentIdentity) + if err != nil { + return trace.Wrap(err, "renewing identity") } s.log.InfoContext(ctx, "Fetched new bot identity", "identity", describeTLSIdentity(ctx, s.log, newIdentity)) @@ -301,6 +307,44 @@ func (s *identityService) renew( return nil } +func renewIdentity( + ctx context.Context, + log *slog.Logger, + botCfg *config.BotConfig, + resolver reversetunnelclient.Resolver, + oldIdentity *identity.Identity, +) (*identity.Identity, error) { + ctx, span := tracer.Start(ctx, "renewIdentity") + defer span.End() + // Explicitly create a new client - this guarantees that requests will be + // made with the most recent identity and that a connection associated with + // an old identity will not be used. + facade := identity.NewFacade(botCfg.FIPS, botCfg.Insecure, oldIdentity) + authClient, err := clientForFacade(ctx, log, botCfg, facade, resolver) + if err != nil { + return nil, trace.Wrap(err, "creating auth client") + } + defer authClient.Close() + + if oldIdentity.TLSIdentity.Renewable { + // When using a renewable join method, we use GenerateUserCerts to + // request a new certificate using our current identity. + newIdentity, err := botIdentityFromAuth( + ctx, log, oldIdentity, authClient, botCfg.CertificateTTL, + ) + if err != nil { + return nil, trace.Wrap(err, "renewing identity using GenerateUserCert") + } + return newIdentity, nil + } + + newIdentity, err := botIdentityFromToken(ctx, log, botCfg, authClient) + if err != nil { + return nil, trace.Wrap(err, "renewing identity using Register") + } + return newIdentity, nil +} + // botIdentityFromAuth uses an existing identity to request a new from the auth // server using GenerateUserCerts. This only works for renewable join types. func botIdentityFromAuth( @@ -341,7 +385,16 @@ func botIdentityFromAuth( // botIdentityFromToken uses a join token to request a bot identity from an auth // server using auth.Register. -func botIdentityFromToken(ctx context.Context, log *slog.Logger, cfg *config.BotConfig) (*identity.Identity, error) { +// +// The authClient parameter is optional - if provided - this will be used for +// the request. This saves the overhead of trying to create a new client as +// part of the join process and allows us to preserve the bot instance id. +func botIdentityFromToken( + ctx context.Context, + log *slog.Logger, + cfg *config.BotConfig, + authClient *authclient.Client, +) (*identity.Identity, error) { _, span := tracer.Start(ctx, "botIdentityFromToken") defer span.End() @@ -363,16 +416,21 @@ func botIdentityFromToken(ctx context.Context, log *slog.Logger, cfg *config.Bot ID: state.IdentityID{ Role: types.RoleBot, }, - PublicTLSKey: tlsPublicKey, - PublicSSHKey: sshPublicKey, + PublicTLSKey: tlsPublicKey, + PublicSSHKey: sshPublicKey, + JoinMethod: cfg.Onboarding.JoinMethod, + Expires: &expires, + + // Below options are effectively ignored if AuthClient is not-nil + Insecure: cfg.Insecure, CAPins: cfg.Onboarding.CAPins, CAPath: cfg.Onboarding.CAPath, - GetHostCredentials: client.HostCredentials, - JoinMethod: cfg.Onboarding.JoinMethod, - Expires: &expires, FIPS: cfg.FIPS, + GetHostCredentials: client.HostCredentials, CipherSuites: cfg.CipherSuites(), - Insecure: cfg.Insecure, + } + if authClient != nil { + params.AuthClient = authClient } addr, addrKind := cfg.Address() diff --git a/lib/tbot/service_heartbeat_test.go b/lib/tbot/service_heartbeat_test.go new file mode 100644 index 0000000000000..c51039c88dd92 --- /dev/null +++ b/lib/tbot/service_heartbeat_test.go @@ -0,0 +1,111 @@ +/* + * Teleport + * Copyright (C) 2024 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package tbot + +import ( + "context" + "os" + "runtime" + "testing" + "time" + + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/protobuf/testing/protocmp" + "google.golang.org/protobuf/types/known/durationpb" + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/gravitational/teleport" + machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/tbot/config" + "github.com/gravitational/teleport/lib/utils" +) + +type fakeHeartbeatSubmitter struct { + ch chan *machineidv1pb.SubmitHeartbeatRequest +} + +func (f *fakeHeartbeatSubmitter) SubmitHeartbeat( + ctx context.Context, in *machineidv1pb.SubmitHeartbeatRequest, opts ...grpc.CallOption, +) (*machineidv1pb.SubmitHeartbeatResponse, error) { + f.ch <- in + return &machineidv1pb.SubmitHeartbeatResponse{}, nil +} + +func TestHeartbeatService(t *testing.T) { + t.Parallel() + + log := utils.NewSlogLoggerForTests() + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + fhs := &fakeHeartbeatSubmitter{ + ch: make(chan *machineidv1pb.SubmitHeartbeatRequest, 2), + } + svc := heartbeatService{ + now: func() time.Time { + return time.Date(2024, time.April, 1, 12, 0, 0, 0, time.UTC) + }, + log: log, + botCfg: &config.BotConfig{ + Oneshot: false, + Onboarding: config.OnboardingConfig{ + JoinMethod: types.JoinMethodGitHub, + }, + }, + startedAt: time.Date(2024, time.April, 1, 11, 0, 0, 0, time.UTC), + heartbeatSubmitter: fhs, + interval: time.Second, + retryLimit: 3, + } + + hostName, err := os.Hostname() + require.NoError(t, err) + + errCh := make(chan error, 1) + go func() { + errCh <- svc.Run(ctx) + }() + + got := <-fhs.ch + want := &machineidv1pb.SubmitHeartbeatRequest{ + Heartbeat: &machineidv1pb.BotInstanceStatusHeartbeat{ + RecordedAt: timestamppb.New(svc.now()), + Hostname: hostName, + IsStartup: true, + OneShot: false, + Uptime: durationpb.New(time.Hour), + Version: teleport.Version, + Architecture: runtime.GOARCH, + Os: runtime.GOOS, + JoinMethod: string(types.JoinMethodGitHub), + }, + } + assert.Empty(t, cmp.Diff(want, got, protocmp.Transform())) + + got = <-fhs.ch + want.Heartbeat.IsStartup = false + assert.Empty(t, cmp.Diff(want, got, protocmp.Transform())) + + cancel() + assert.NoError(t, <-errCh) +} diff --git a/lib/tbot/service_heatbeat.go b/lib/tbot/service_heatbeat.go new file mode 100644 index 0000000000000..02f976cc6a0f8 --- /dev/null +++ b/lib/tbot/service_heatbeat.go @@ -0,0 +1,125 @@ +/* + * Teleport + * Copyright (C) 2024 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package tbot + +import ( + "context" + "log/slog" + "os" + "runtime" + "time" + + "github.com/gravitational/trace" + "google.golang.org/grpc" + "google.golang.org/protobuf/types/known/durationpb" + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/gravitational/teleport" + machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + "github.com/gravitational/teleport/lib/tbot/config" +) + +type heartbeatSubmitter interface { + SubmitHeartbeat( + ctx context.Context, in *machineidv1pb.SubmitHeartbeatRequest, opts ...grpc.CallOption, + ) (*machineidv1pb.SubmitHeartbeatResponse, error) +} + +type heartbeatService struct { + now func() time.Time + log *slog.Logger + botCfg *config.BotConfig + startedAt time.Time + heartbeatSubmitter heartbeatSubmitter + interval time.Duration + retryLimit int +} + +func (s *heartbeatService) heartbeat(ctx context.Context, isStartup bool) error { + s.log.DebugContext(ctx, "Sending heartbeat") + hostName, err := os.Hostname() + if err != nil { + s.log.WarnContext(ctx, "Failed to determine hostname for heartbeat", "error", err) + } + + hb := &machineidv1pb.BotInstanceStatusHeartbeat{ + RecordedAt: timestamppb.New(s.now()), + Hostname: hostName, + IsStartup: isStartup, + Uptime: durationpb.New(s.now().Sub(s.startedAt)), + OneShot: s.botCfg.Oneshot, + JoinMethod: string(s.botCfg.Onboarding.JoinMethod), + Version: teleport.Version, + Architecture: runtime.GOARCH, + Os: runtime.GOOS, + } + + _, err = s.heartbeatSubmitter.SubmitHeartbeat(ctx, &machineidv1pb.SubmitHeartbeatRequest{ + Heartbeat: hb, + }) + if err != nil { + return trace.Wrap(err, "submitting heartbeat") + } + + s.log.InfoContext(ctx, "Sent heartbeat", "data", hb.String()) + return nil +} + +func (s *heartbeatService) OneShot(ctx context.Context) error { + err := s.heartbeat(ctx, true) + // Ignore not implemented as this is likely confusing. + // TODO(noah): Remove NotImplemented check at V18 assuming V17 first major + // with heartbeating. + if err != nil && !trace.IsNotImplemented(err) { + return trace.Wrap(err) + } + return nil +} + +func (s *heartbeatService) Run(ctx context.Context) error { + isStartup := true + err := runOnInterval(ctx, runOnIntervalConfig{ + name: "submit-heartbeat", + log: s.log, + interval: s.interval, + retryLimit: s.retryLimit, + f: func(ctx context.Context) error { + err := s.heartbeat(ctx, isStartup) + // TODO(noah): Remove NotImplemented check at V18 assuming V17 first + // major with heartbeating. + if trace.IsNotImplemented(err) { + s.log.DebugContext( + ctx, + "Cluster does not support Bot Instance heartbeats", + ) + return nil + } + if err != nil { + return trace.Wrap(err, "submitting heartbeat") + } + isStartup = false + return nil + }, + }) + return trace.Wrap(err) +} + +func (s *heartbeatService) String() string { + return "heartbeat" +} diff --git a/lib/tbot/tbot.go b/lib/tbot/tbot.go index ff4516979232d..955879160fcd3 100644 --- a/lib/tbot/tbot.go +++ b/lib/tbot/tbot.go @@ -39,6 +39,7 @@ import ( "github.com/gravitational/teleport/api/client" "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/client/webclient" + machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" "github.com/gravitational/teleport/api/metadata" apitracing "github.com/gravitational/teleport/api/observability/tracing" "github.com/gravitational/teleport/api/types" @@ -128,6 +129,7 @@ func (b *Bot) BotIdentity() *identity.Identity { func (b *Bot) Run(ctx context.Context) (err error) { ctx, span := tracer.Start(ctx, "Bot/Run") defer func() { apitracing.EndSpan(span, err) }() + startedAt := time.Now() if err := metrics.RegisterPrometheusCollectors(clientMetrics); err != nil { return trace.Wrap(err) @@ -238,6 +240,21 @@ func (b *Bot) Run(ctx context.Context) (err error) { ), }) } + + services = append(services, &heartbeatService{ + now: time.Now, + botCfg: b.cfg, + startedAt: startedAt, + log: b.log.With( + teleport.ComponentKey, teleport.Component(componentTBot, "heartbeat"), + ), + heartbeatSubmitter: machineidv1pb.NewBotInstanceServiceClient( + b.botIdentitySvc.GetClient().GetConnection(), + ), + interval: time.Minute * 30, + retryLimit: 5, + }) + services = append(services, &caRotationService{ getBotIdentity: b.botIdentitySvc.GetIdentity, botClient: b.botIdentitySvc.GetClient(), @@ -527,6 +544,13 @@ func (b *Bot) preRunChecks(ctx context.Context) (_ func() error, err error) { return unlock, trace.Wrap(err) } + if !store.IsPersistent() { + b.log.WarnContext( + ctx, + "Bot is configured with a non-persistent storage destination. If the bot is running in a non-ephemeral environment, this will impact the ability to provide a long-lived bot instance identity", + ) + } + return unlock, nil } @@ -555,42 +579,6 @@ func checkDestinations(ctx context.Context, cfg *config.BotConfig) error { return nil } -// checkIdentity performs basic startup checks on an identity and loudly warns -// end users if it is unlikely to work. -func checkIdentity(ctx context.Context, log *slog.Logger, ident *identity.Identity) error { - var validAfter time.Time - var validBefore time.Time - - if ident.X509Cert != nil { - validAfter = ident.X509Cert.NotBefore - validBefore = ident.X509Cert.NotAfter - } else if ident.SSHCert != nil { - validAfter = time.Unix(int64(ident.SSHCert.ValidAfter), 0) - validBefore = time.Unix(int64(ident.SSHCert.ValidBefore), 0) - } else { - return trace.BadParameter("identity is invalid and contains no certificates") - } - - now := time.Now().UTC() - if now.After(validBefore) { - log.WarnContext( - ctx, - "Identity has expired. The renewal is likely to fail", - "expires", validBefore.Format(time.RFC3339), - "current_time", now.Format(time.RFC3339), - ) - } else if now.Before(validAfter) { - log.WarnContext( - ctx, - "Identity is not yet valid. Confirm that the system time is correct", - "valid_after", validAfter.Format(time.RFC3339), - "current_time", now.Format(time.RFC3339), - ) - } - - return nil -} - // clientForFacade creates a new auth client from the given // facade. Note that depending on the connection address given, this may // attempt to connect via the proxy and therefore requires both SSH and TLS diff --git a/lib/tbot/tbot_test.go b/lib/tbot/tbot_test.go index 410c3ffb00759..1b6faa4cb7972 100644 --- a/lib/tbot/tbot_test.go +++ b/lib/tbot/tbot_test.go @@ -498,11 +498,7 @@ func tlsIdentFromDest(ctx context.Context, t *testing.T, dest bot.Destination) * require.NoError(t, err) hostCABytes, err := dest.Read(ctx, config.HostCAPath) require.NoError(t, err) - _, x509Cert, _, _, err := identity.ParseTLSIdentity(keyBytes, certBytes, [][]byte{hostCABytes}) - require.NoError(t, err) - tlsIdent, err := tlsca.FromSubject( - x509Cert.Subject, x509Cert.NotAfter, - ) + _, tlsIdent, _, _, _, err := identity.ParseTLSIdentity(keyBytes, certBytes, [][]byte{hostCABytes}) require.NoError(t, err) return tlsIdent } diff --git a/lib/tlsca/ca.go b/lib/tlsca/ca.go index d10ca4af0f7ba..bc58bd40703c6 100644 --- a/lib/tlsca/ca.go +++ b/lib/tlsca/ca.go @@ -184,6 +184,9 @@ type Identity struct { // BotName indicates the name of the Machine ID bot this identity was issued // to, if any. BotName string + // BotInstanceID is a unique identifier for Machine ID bots that is + // persisted through renewals. + BotInstanceID string // AllowedResourceIDs lists the resources the identity should be allowed to // access. AllowedResourceIDs []types.ResourceID @@ -354,6 +357,8 @@ func (id *Identity) GetEventIdentity() events.Identity { AllowedResourceIDs: events.ResourceIDs(id.AllowedResourceIDs), PrivateKeyPolicy: string(id.PrivateKeyPolicy), DeviceExtensions: devExts, + BotName: id.BotName, + BotInstanceID: id.BotInstanceID, } } @@ -528,6 +533,10 @@ var ( // RequestedDatabaseRolesExtensionOID is an extension OID used when // encoding/decoding requested database roles. RequestedDatabaseRolesExtensionOID = asn1.ObjectIdentifier{1, 3, 9999, 2, 19} + + // BotInstanceASN1ExtensionOID is an extension that encodes a unique bot + // instance identifier into a certificate. + BotInstanceASN1ExtensionOID = asn1.ObjectIdentifier{1, 3, 9999, 2, 20} ) // Device Trust OIDs. @@ -810,6 +819,14 @@ func (id *Identity) Subject() (pkix.Name, error) { }) } + if id.BotInstanceID != "" { + subject.ExtraNames = append(subject.ExtraNames, + pkix.AttributeTypeAndValue{ + Type: BotInstanceASN1ExtensionOID, + Value: id.BotInstanceID, + }) + } + if len(id.AllowedResourceIDs) > 0 { allowedResourcesStr, err := types.ResourceIDsToString(id.AllowedResourceIDs) if err != nil { @@ -1050,6 +1067,11 @@ func FromSubject(subject pkix.Name, expires time.Time) (*Identity, error) { if ok { id.BotName = val } + case attr.Type.Equal(BotInstanceASN1ExtensionOID): + val, ok := attr.Value.(string) + if ok { + id.BotInstanceID = val + } case attr.Type.Equal(AllowedResourcesASN1ExtensionOID): allowedResourcesStr, ok := attr.Value.(string) if ok { @@ -1118,6 +1140,8 @@ func (id Identity) GetUserMetadata() events.UserMetadata { AccessRequests: id.ActiveRequests, UserKind: userKind, TrustedDevice: device, + BotName: id.BotName, + BotInstanceID: id.BotInstanceID, } } diff --git a/lib/tlsca/ca_test.go b/lib/tlsca/ca_test.go index a2129769b5663..fa3d3b5a19158 100644 --- a/lib/tlsca/ca_test.go +++ b/lib/tlsca/ca_test.go @@ -429,24 +429,15 @@ func TestIdentity_GetUserMetadata(t *testing.T) { { name: "user metadata for bot", identity: Identity{ - Username: "alpaca", - Impersonator: "llama", - RouteToApp: RouteToApp{ - AWSRoleARN: "awsrolearn", - AzureIdentity: "azureidentity", - GCPServiceAccount: "gcpaccount", - }, - ActiveRequests: []string{"accessreq1", "accessreq2"}, - BotName: "foo", + Username: "bot-alpaca", + BotName: "alpaca", + BotInstanceID: "123-123", }, want: apievents.UserMetadata{ - User: "alpaca", - Impersonator: "llama", - AWSRoleARN: "awsrolearn", - AccessRequests: []string{"accessreq1", "accessreq2"}, - AzureIdentity: "azureidentity", - GCPServiceAccount: "gcpaccount", - UserKind: apievents.UserKind_USER_KIND_BOT, + User: "bot-alpaca", + UserKind: apievents.UserKind_USER_KIND_BOT, + BotName: "alpaca", + BotInstanceID: "123-123", }, }, { diff --git a/tool/tctl/common/collection.go b/tool/tctl/common/collection.go index 3ed204084af06..143744f99cc61 100644 --- a/tool/tctl/common/collection.go +++ b/tool/tctl/common/collection.go @@ -1624,3 +1624,33 @@ func (c *pluginCollection) writeText(w io.Writer, verbose bool) error { _, err := t.AsBuffer().WriteTo(w) return trace.Wrap(err) } + +type botInstanceCollection struct { + items []*machineidv1pb.BotInstance +} + +func (c *botInstanceCollection) resources() []types.Resource { + r := make([]types.Resource, 0, len(c.items)) + for _, resource := range c.items { + r = append(r, types.Resource153ToLegacy(resource)) + } + return r +} + +func (c *botInstanceCollection) writeText(w io.Writer, verbose bool) error { + headers := []string{"Bot Name", "Instance ID"} + + // TODO: consider adding additional (possibly verbose) fields showing + // last heartbeat, last auth, etc. + var rows [][]string + for _, item := range c.items { + rows = append(rows, []string{item.Spec.BotName, item.Spec.InstanceId}) + } + + t := asciitable.MakeTable(headers, rows...) + + // stable sort by name. + t.SortRowsBy([]int{0}, true) + _, err := t.AsBuffer().WriteTo(w) + return trace.Wrap(err) +} diff --git a/tool/tctl/common/resource_command.go b/tool/tctl/common/resource_command.go index e985f3686fff4..e77faef635b41 100644 --- a/tool/tctl/common/resource_command.go +++ b/tool/tctl/common/resource_command.go @@ -2814,6 +2814,45 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client *authclient startKey = resp.NextKey } return &pluginCollection{plugins: plugins}, nil + case types.KindBotInstance: + if rc.ref.Name != "" && rc.ref.SubKind != "" { + // Gets a specific bot instance, e.g. bot_instance// + bi, err := client.BotInstanceServiceClient().GetBotInstance(ctx, &machineidv1pb.GetBotInstanceRequest{ + BotName: rc.ref.SubKind, + InstanceId: rc.ref.Name, + }) + if err != nil { + return nil, trace.Wrap(err) + } + + return &botInstanceCollection{items: []*machineidv1pb.BotInstance{bi}}, nil + } + + var instances []*machineidv1pb.BotInstance + startKey := "" + + for { + resp, err := client.BotInstanceServiceClient().ListBotInstances(ctx, &machineidv1pb.ListBotInstancesRequest{ + PageSize: 100, + PageToken: startKey, + + // Note: empty filter lists all bot instances + FilterBotName: rc.ref.Name, + }) + if err != nil { + return nil, trace.Wrap(err) + } + + instances = append(instances, resp.BotInstances...) + + if resp.NextPageToken == "" { + break + } + + startKey = resp.NextPageToken + } + + return &botInstanceCollection{items: instances}, nil } return nil, trace.BadParameter("getting %q is not supported", rc.ref.String()) }