From fb760dc2677abf3ae021aa05559b9505f909bc7a Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Wed, 4 Dec 2024 10:30:11 -0800 Subject: [PATCH 01/19] Add UpsertTrustedClusterV2 rpc This supersedes UpsertTrustedCluster rpc. V2 performs resource name validation. --- api/client/client.go | 27 +- api/client/proto/authservice.pb.go | 1934 +++++++++-------- .../legacy/client/proto/authservice.proto | 8 +- api/types/trustedcluster.go | 14 +- integration/integration_test.go | 30 +- lib/auth/auth_with_roles.go | 18 + lib/auth/grpcserver.go | 22 + lib/auth/trustedcluster.go | 28 +- 8 files changed, 1117 insertions(+), 964 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index c9a89cfdf820e..71b4d82a39f0c 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2277,16 +2277,29 @@ func (c *Client) GetTrustedClusters(ctx context.Context) ([]types.TrustedCluster } // UpsertTrustedCluster creates or updates a Trusted Cluster. -func (c *Client) UpsertTrustedCluster(ctx context.Context, trusedCluster types.TrustedCluster) (types.TrustedCluster, error) { - trustedCluster, ok := trusedCluster.(*types.TrustedClusterV2) +func (c *Client) UpsertTrustedCluster(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { + trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) if !ok { - return nil, trace.BadParameter("invalid type %T", trusedCluster) + return nil, trace.BadParameter("invalid type %T", trustedCluster) } - resp, err := c.grpc.UpsertTrustedCluster(ctx, trustedCluster) - if err != nil { - return nil, trace.Wrap(err) + if trustedCluster.Origin() != types.OriginKubernetes { + resp, err := c.grpc.UpsertTrustedCluster(ctx, trustedClusterV2) + return resp, trace.Wrap(err) } - return resp, nil + // The Kubernetes Operator must use UpsertTrustedClusterV2 to ensure that + // the trusted_cluster resource name is valid before it is created. + resp, err := c.grpc.UpsertTrustedClusterV2(ctx, trustedClusterV2) + if trace.IsNotImplemented(err) { + // Try to print a nicer error message when newer clients connect to + // older auth servers that don't recognize the new gRPC. + authVersion := "unknown" + if pingResp, err := c.Ping(ctx); err == nil && pingResp.ServerVersion != "" { + authVersion = pingResp.ServerVersion + } + return resp, trace.Wrap(err, "client version (%s) is likely newer than your auth server version (%s), "+ + "consider upgrading your auth server", api.Version, authVersion) + } + return resp, trace.Wrap(err) } // DeleteTrustedCluster deletes a Trusted Cluster by name. diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index ea0cb89fb6621..5eaddd944ea3b 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -15836,955 +15836,956 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 15156 bytes of a gzipped FileDescriptorProto + // 15169 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5b, 0x6c, 0x5c, 0x59, 0x76, 0x18, 0xaa, 0x2a, 0xbe, 0x17, 0x1f, 0x2a, 0x6d, 0x92, 0x62, 0x89, 0x7a, 0x94, 0x74, 0xd4, 0xea, 0x51, 0x6b, 0x7a, 0xf4, 0x60, 0x3f, 0xa6, 0x5f, 0xd3, 0xdd, 0x55, 0x24, 0x25, 0x52, 0xe2, 0xab, 0x4f, 0x91, 0x54, 0xbf, 0x3c, 0x35, 0x47, 0x55, 0x5b, 0xe4, 0xb1, 0x8a, 0xe7, 0xd4, 0x9c, - 0x73, 0x4a, 0x6a, 0x8d, 0xaf, 0x7d, 0x61, 0xfb, 0x3e, 0x7c, 0x71, 0x71, 0x6f, 0x6c, 0x20, 0x09, - 0x9c, 0xe4, 0xc3, 0x09, 0x90, 0x00, 0x41, 0x80, 0x00, 0xfe, 0x09, 0xfc, 0x13, 0x23, 0xc8, 0x57, - 0x26, 0x06, 0x82, 0xc4, 0xb0, 0xfd, 0x13, 0x20, 0x74, 0x32, 0x80, 0x7f, 0x88, 0xe4, 0xc3, 0x08, - 0x12, 0x20, 0x03, 0x18, 0x08, 0xf6, 0xda, 0x8f, 0xb3, 0xf7, 0x79, 0x54, 0x91, 0x92, 0x7a, 0x9c, - 0x1f, 0x89, 0xb5, 0xf6, 0x5a, 0x6b, 0x3f, 0xcf, 0xde, 0x6b, 0xad, 0xbd, 0xf6, 0x5a, 0x70, 0x33, - 0xa2, 0x6d, 0xda, 0xf1, 0x83, 0xe8, 0x56, 0x9b, 0xee, 0x39, 0xcd, 0xe7, 0xb7, 0x9a, 0x6d, 0x97, - 0x7a, 0xd1, 0xad, 0x4e, 0xe0, 0x47, 0xfe, 0x2d, 0xa7, 0x1b, 0xed, 0x87, 0x34, 0x78, 0xea, 0x36, - 0xe9, 0x4d, 0x84, 0x90, 0x21, 0xfc, 0x6f, 0x7e, 0x66, 0xcf, 0xdf, 0xf3, 0x39, 0x0e, 0xfb, 0x8b, - 0x17, 0xce, 0x9f, 0xdf, 0xf3, 0xfd, 0xbd, 0x36, 0xe5, 0xc4, 0x8f, 0xba, 0x8f, 0x6f, 0xd1, 0x83, - 0x4e, 0xf4, 0x5c, 0x14, 0x56, 0x92, 0x85, 0x91, 0x7b, 0x40, 0xc3, 0xc8, 0x39, 0xe8, 0x08, 0x84, - 0x37, 0x54, 0x53, 0x9c, 0x28, 0x62, 0x25, 0x91, 0xeb, 0x7b, 0xb7, 0x9e, 0xde, 0xd1, 0x7f, 0x0a, - 0xd4, 0xeb, 0x3d, 0x5b, 0xdd, 0xa4, 0x41, 0x14, 0x1e, 0x0b, 0x93, 0x3e, 0xa5, 0x5e, 0x94, 0xaa, - 0x5e, 0x60, 0x46, 0xcf, 0x3b, 0x34, 0xe4, 0x28, 0xf2, 0x3f, 0x81, 0x7a, 0x25, 0x1b, 0x15, 0xff, - 0x15, 0x28, 0xdf, 0xcb, 0x46, 0x79, 0x46, 0x1f, 0xb1, 0x31, 0xf5, 0xd4, 0x1f, 0x7d, 0xd0, 0x03, - 0xa7, 0xd3, 0xa1, 0x41, 0xfc, 0x87, 0x40, 0x3f, 0xa7, 0xd0, 0x0f, 0x1e, 0x3b, 0x6c, 0x88, 0x0e, - 0x1e, 0x3b, 0xa9, 0x6e, 0x74, 0x43, 0x67, 0x8f, 0x8a, 0xe6, 0x3f, 0xbd, 0xa3, 0xff, 0xe4, 0xa8, - 0xd6, 0xef, 0x15, 0x60, 0xe8, 0xa1, 0x13, 0x35, 0xf7, 0xc9, 0x27, 0x30, 0xf4, 0xc0, 0xf5, 0x5a, - 0x61, 0xb9, 0x70, 0x79, 0xe0, 0xfa, 0xf8, 0x42, 0xe9, 0x26, 0xef, 0x0a, 0x16, 0xb2, 0x82, 0xda, - 0xdc, 0x4f, 0x0f, 0x2b, 0xa7, 0x8e, 0x0e, 0x2b, 0xa7, 0x9f, 0x30, 0xb4, 0x37, 0xfd, 0x03, 0x37, - 0xc2, 0xb9, 0xb5, 0x39, 0x1d, 0xd9, 0x81, 0xe9, 0x6a, 0xbb, 0xed, 0x3f, 0xdb, 0x72, 0x82, 0xc8, - 0x75, 0xda, 0xf5, 0x6e, 0xb3, 0x49, 0xc3, 0xb0, 0x5c, 0xbc, 0x5c, 0xb8, 0x3e, 0x5a, 0xbb, 0x7a, - 0x74, 0x58, 0xa9, 0x38, 0xac, 0xb8, 0xd1, 0xe1, 0xe5, 0x8d, 0x90, 0x23, 0x68, 0x8c, 0xb2, 0xe8, - 0xad, 0x3f, 0x1a, 0x86, 0xd2, 0x8a, 0x1f, 0x46, 0x8b, 0x6c, 0x46, 0x6d, 0xfa, 0xe3, 0x2e, 0x0d, - 0x23, 0x72, 0x15, 0x86, 0x19, 0x6c, 0x75, 0xa9, 0x5c, 0xb8, 0x5c, 0xb8, 0x3e, 0x56, 0x1b, 0x3f, - 0x3a, 0xac, 0x8c, 0xec, 0xfb, 0x61, 0xd4, 0x70, 0x5b, 0xb6, 0x28, 0x22, 0x6f, 0xc0, 0xe8, 0x86, - 0xdf, 0xa2, 0x1b, 0xce, 0x01, 0xc5, 0x56, 0x8c, 0xd5, 0x26, 0x8f, 0x0e, 0x2b, 0x63, 0x9e, 0xdf, - 0xa2, 0x0d, 0xcf, 0x39, 0xa0, 0xb6, 0x2a, 0x26, 0xbb, 0x30, 0x68, 0xfb, 0x6d, 0x5a, 0x1e, 0x40, - 0xb4, 0xda, 0xd1, 0x61, 0x65, 0x30, 0xf0, 0xdb, 0xf4, 0xe7, 0x87, 0x95, 0x77, 0xf7, 0xdc, 0x68, - 0xbf, 0xfb, 0xe8, 0x66, 0xd3, 0x3f, 0xb8, 0xb5, 0x17, 0x38, 0x4f, 0x5d, 0xbe, 0x08, 0x9d, 0xf6, - 0xad, 0x78, 0xa9, 0x76, 0x5c, 0x31, 0xef, 0xf5, 0xe7, 0x61, 0x44, 0x0f, 0x18, 0x27, 0x1b, 0xf9, - 0x91, 0x87, 0x30, 0x53, 0x6d, 0xb5, 0x5c, 0x4e, 0xb1, 0x15, 0xb8, 0x5e, 0xd3, 0xed, 0x38, 0xed, - 0xb0, 0x3c, 0x78, 0x79, 0xe0, 0xfa, 0x98, 0x18, 0x14, 0x55, 0xde, 0xe8, 0x28, 0x04, 0x6d, 0x50, - 0x32, 0x19, 0x90, 0xb7, 0x60, 0x74, 0x69, 0xa3, 0xce, 0xda, 0x1e, 0x96, 0x87, 0x90, 0xd9, 0xdc, - 0xd1, 0x61, 0x65, 0xba, 0xe5, 0x85, 0xd8, 0x35, 0x9d, 0x81, 0x42, 0x24, 0xef, 0xc2, 0xc4, 0x56, - 0xf7, 0x51, 0xdb, 0x6d, 0x6e, 0xaf, 0xd5, 0x1f, 0xd0, 0xe7, 0xe5, 0xe1, 0xcb, 0x85, 0xeb, 0x13, - 0x35, 0x72, 0x74, 0x58, 0x99, 0xea, 0x20, 0xbc, 0x11, 0xb5, 0xc3, 0xc6, 0x13, 0xfa, 0xdc, 0x36, - 0xf0, 0x62, 0xba, 0x7a, 0x7d, 0x85, 0xd1, 0x8d, 0xa4, 0xe8, 0xc2, 0x70, 0x5f, 0xa7, 0xe3, 0x78, - 0xe4, 0x16, 0x80, 0x4d, 0x0f, 0xfc, 0x88, 0x56, 0x5b, 0xad, 0xa0, 0x3c, 0x8a, 0x63, 0x7b, 0xfa, - 0xe8, 0xb0, 0x32, 0x1e, 0x20, 0xb4, 0xe1, 0xb4, 0x5a, 0x81, 0xad, 0xa1, 0x90, 0x45, 0x18, 0xb5, - 0x7d, 0x3e, 0xc0, 0xe5, 0xb1, 0xcb, 0x85, 0xeb, 0xe3, 0x0b, 0xa7, 0xc5, 0x32, 0x94, 0xe0, 0xda, - 0xd9, 0xa3, 0xc3, 0x0a, 0x09, 0xc4, 0x2f, 0xbd, 0x97, 0x12, 0x83, 0x54, 0x60, 0x64, 0xc3, 0x5f, - 0x74, 0x9a, 0xfb, 0xb4, 0x0c, 0xb8, 0xf6, 0x86, 0x8e, 0x0e, 0x2b, 0x85, 0xef, 0xd9, 0x12, 0x4a, - 0x9e, 0xc2, 0x78, 0x3c, 0x51, 0x61, 0x79, 0x1c, 0x87, 0x6f, 0xfb, 0xe8, 0xb0, 0x72, 0x36, 0x44, - 0x70, 0x83, 0x4d, 0xbd, 0x36, 0x82, 0x2f, 0xb1, 0x0a, 0xf4, 0x8a, 0xc8, 0xd7, 0x30, 0x1b, 0xff, - 0xac, 0x86, 0x21, 0x0d, 0x18, 0x8f, 0xd5, 0xa5, 0xf2, 0x24, 0x8e, 0xcc, 0xeb, 0x47, 0x87, 0x15, - 0x4b, 0x6b, 0x41, 0xc3, 0x91, 0x28, 0x0d, 0xb7, 0xa5, 0xf5, 0x34, 0x9b, 0xc9, 0xfd, 0xc1, 0xd1, - 0x89, 0xd2, 0xa4, 0x7d, 0x71, 0xc7, 0x0b, 0x23, 0xe7, 0x51, 0x9b, 0x66, 0x22, 0x59, 0x7f, 0x55, - 0x00, 0xb2, 0xd9, 0xa1, 0x5e, 0xbd, 0xbe, 0xc2, 0xbe, 0x27, 0xf9, 0x39, 0xbd, 0x09, 0x63, 0x7c, - 0xe2, 0xd8, 0xec, 0x16, 0x71, 0x76, 0xa7, 0x8e, 0x0e, 0x2b, 0x20, 0x66, 0x97, 0xcd, 0x6c, 0x8c, - 0x40, 0xae, 0xc1, 0xc0, 0xf6, 0xf6, 0x1a, 0x7e, 0x2b, 0x03, 0xb5, 0xe9, 0xa3, 0xc3, 0xca, 0x40, - 0x14, 0xb5, 0x7f, 0x7e, 0x58, 0x19, 0x5d, 0xea, 0x06, 0x38, 0x2c, 0x36, 0x2b, 0x27, 0xd7, 0x60, - 0x64, 0xb1, 0xdd, 0x0d, 0x23, 0x1a, 0x94, 0x07, 0xe3, 0x8f, 0xb4, 0xc9, 0x41, 0xb6, 0x2c, 0x23, - 0xdf, 0x85, 0xc1, 0x9d, 0x90, 0x06, 0xe5, 0x21, 0x9c, 0xef, 0x49, 0x31, 0xdf, 0x0c, 0xb4, 0xbb, - 0x50, 0x1b, 0x65, 0x5f, 0x62, 0x37, 0xa4, 0x81, 0x8d, 0x48, 0xe4, 0x26, 0x0c, 0xf1, 0x49, 0x1b, - 0xc6, 0x4d, 0x6a, 0x52, 0xad, 0x8e, 0x36, 0xdd, 0x7d, 0xb7, 0x36, 0x76, 0x74, 0x58, 0x19, 0xc2, - 0xc9, 0xb3, 0x39, 0xda, 0xfd, 0xc1, 0xd1, 0x42, 0xa9, 0x68, 0x8f, 0x32, 0x5a, 0xf6, 0x59, 0x58, - 0xdf, 0x85, 0x71, 0xad, 0xfb, 0xe4, 0x02, 0x0c, 0xb2, 0xff, 0x71, 0x13, 0x99, 0xe0, 0x95, 0xb1, - 0x83, 0xc3, 0x46, 0xa8, 0xf5, 0xf7, 0xa7, 0xa1, 0xc4, 0x28, 0x8d, 0x9d, 0xe7, 0xa6, 0x3e, 0x54, - 0x9c, 0xae, 0x64, 0x0e, 0x55, 0xb9, 0xa0, 0x0f, 0xd6, 0x75, 0x50, 0xb5, 0x8b, 0x4d, 0x68, 0xe2, - 0xe8, 0xb0, 0x32, 0xda, 0x15, 0xb0, 0xb8, 0x6d, 0xa4, 0x0e, 0x23, 0xcb, 0xdf, 0x74, 0xdc, 0x80, - 0x86, 0x38, 0xb4, 0xe3, 0x0b, 0xf3, 0x37, 0xf9, 0x71, 0x79, 0x53, 0x1e, 0x97, 0x37, 0xb7, 0xe5, - 0x71, 0x59, 0xbb, 0x28, 0x36, 0xe3, 0x33, 0x94, 0x93, 0xc4, 0xeb, 0xe3, 0xb7, 0xff, 0xbc, 0x52, - 0xb0, 0x25, 0x27, 0xf2, 0x26, 0x0c, 0xdf, 0xf5, 0x83, 0x03, 0x27, 0x12, 0x73, 0x30, 0x73, 0x74, - 0x58, 0x29, 0x3d, 0x46, 0x88, 0xb6, 0xa4, 0x04, 0x0e, 0xb9, 0x0b, 0x53, 0xb6, 0xdf, 0x8d, 0xe8, - 0xb6, 0x2f, 0x67, 0x6e, 0x08, 0xa9, 0x2e, 0x1d, 0x1d, 0x56, 0xe6, 0x03, 0x56, 0xd2, 0x88, 0xfc, - 0x86, 0x98, 0x42, 0x8d, 0x3e, 0x41, 0x45, 0x96, 0x61, 0xaa, 0x8a, 0xbb, 0xb7, 0x18, 0x35, 0x3e, - 0x5f, 0x63, 0xb5, 0x8b, 0x47, 0x87, 0x95, 0x73, 0x0e, 0x96, 0x34, 0x02, 0x51, 0xa4, 0xb3, 0x31, - 0x89, 0xc8, 0x06, 0x9c, 0x79, 0xd0, 0x7d, 0x44, 0x03, 0x8f, 0x46, 0x34, 0x94, 0x2d, 0x1a, 0xc1, - 0x16, 0x5d, 0x3e, 0x3a, 0xac, 0x5c, 0x78, 0xa2, 0x0a, 0x33, 0xda, 0x94, 0x26, 0x25, 0x14, 0x4e, - 0x8b, 0x86, 0x2e, 0x39, 0x91, 0xf3, 0xc8, 0x09, 0x29, 0x6e, 0x4a, 0xe3, 0x0b, 0x67, 0xf9, 0x10, - 0xdf, 0x4c, 0x94, 0xd6, 0xae, 0x8a, 0x51, 0x3e, 0xaf, 0xfa, 0xde, 0x12, 0x45, 0x5a, 0x45, 0x49, - 0x9e, 0x6c, 0x6f, 0x56, 0xe7, 0xce, 0x18, 0xb6, 0x16, 0xf7, 0x66, 0x75, 0xee, 0xe8, 0xbb, 0x96, - 0x3a, 0x81, 0xd6, 0x60, 0x68, 0x87, 0x9d, 0xce, 0xb8, 0x67, 0x4d, 0x2d, 0x5c, 0x11, 0x2d, 0x4a, - 0xae, 0xbf, 0x9b, 0xec, 0x07, 0x22, 0xe2, 0x97, 0x77, 0x1a, 0x4f, 0x74, 0xfd, 0x2c, 0xc6, 0x32, - 0xf2, 0x19, 0x80, 0x68, 0x55, 0xb5, 0xd3, 0x29, 0x8f, 0x63, 0x27, 0xcf, 0x98, 0x9d, 0xac, 0x76, - 0x3a, 0xb5, 0x4b, 0xa2, 0x7f, 0x67, 0x55, 0xff, 0x9c, 0x4e, 0x47, 0xe3, 0xa6, 0x31, 0x21, 0x9f, - 0xc0, 0x04, 0x6e, 0x69, 0x72, 0x46, 0x27, 0x70, 0x46, 0xcf, 0x1f, 0x1d, 0x56, 0xe6, 0x70, 0xb7, - 0xca, 0x98, 0x4f, 0x83, 0x80, 0xfc, 0x1a, 0xcc, 0x0a, 0x76, 0x0f, 0x5d, 0xaf, 0xe5, 0x3f, 0x0b, - 0x97, 0x68, 0xf8, 0x24, 0xf2, 0x3b, 0xb8, 0xfd, 0x8d, 0x2f, 0x5c, 0x30, 0x9b, 0x67, 0xe2, 0xd4, - 0x6e, 0x88, 0x96, 0x5a, 0xaa, 0xa5, 0xcf, 0x38, 0x42, 0xa3, 0xc5, 0x31, 0xf4, 0x0d, 0x32, 0x93, - 0x05, 0x59, 0x85, 0xd3, 0x3b, 0x21, 0x35, 0xfa, 0x30, 0x85, 0xe7, 0x43, 0x85, 0xcd, 0x70, 0x37, - 0xa4, 0x8d, 0xbc, 0x7e, 0x24, 0xe9, 0x88, 0x0d, 0x64, 0x29, 0xf0, 0x3b, 0x89, 0x35, 0x7e, 0x1a, - 0x47, 0xc4, 0x3a, 0x3a, 0xac, 0x5c, 0x6a, 0x05, 0x7e, 0xa7, 0x91, 0xbf, 0xd0, 0x33, 0xa8, 0xc9, - 0x0f, 0xe1, 0xec, 0xa2, 0xef, 0x79, 0xb4, 0xc9, 0x76, 0xd0, 0x25, 0xd7, 0xd9, 0xf3, 0xfc, 0x30, - 0x72, 0x9b, 0xab, 0x4b, 0xe5, 0x52, 0x7c, 0x3c, 0x34, 0x15, 0x46, 0xa3, 0xa5, 0x50, 0xcc, 0xe3, - 0x21, 0x87, 0x0b, 0xf9, 0x0a, 0x26, 0x45, 0x5d, 0x34, 0xc0, 0xa5, 0x79, 0xa6, 0xf7, 0x42, 0x53, - 0xc8, 0xfc, 0xa0, 0x0f, 0xe4, 0x4f, 0x2e, 0x3a, 0x99, 0xbc, 0xc8, 0xd7, 0x30, 0xbe, 0x7e, 0xb7, - 0x6a, 0xd3, 0xb0, 0xe3, 0x7b, 0x21, 0x2d, 0x13, 0x9c, 0xd1, 0x4b, 0x82, 0xf5, 0xfa, 0xdd, 0x6a, - 0xb5, 0x1b, 0xed, 0x53, 0x2f, 0x72, 0x9b, 0x4e, 0x44, 0x25, 0x56, 0x6d, 0x9e, 0xad, 0xbc, 0x83, - 0xc7, 0x4e, 0x23, 0x10, 0x10, 0xad, 0x17, 0x3a, 0x3b, 0x32, 0x0f, 0xa3, 0xf5, 0xfa, 0xca, 0x9a, - 0xbf, 0xe7, 0x7a, 0xe5, 0x69, 0x36, 0x18, 0xb6, 0xfa, 0x4d, 0x1e, 0xc3, 0xac, 0xa6, 0x1b, 0x34, - 0xd8, 0xff, 0xf4, 0x80, 0x7a, 0x51, 0x79, 0x06, 0xdb, 0xf0, 0x3d, 0xa5, 0xdc, 0xdc, 0xd4, 0x55, - 0x88, 0xa7, 0x77, 0x6e, 0x56, 0xe3, 0x9f, 0x75, 0x49, 0x54, 0x2b, 0x96, 0x0b, 0xf6, 0x8c, 0x93, - 0x51, 0x42, 0xb6, 0x61, 0x64, 0xab, 0x1b, 0x74, 0xfc, 0x90, 0x96, 0x67, 0x71, 0xe0, 0xae, 0xf6, - 0xfa, 0x42, 0x05, 0x6a, 0x6d, 0x96, 0x6d, 0xd1, 0x1d, 0xfe, 0x43, 0xeb, 0x9d, 0x64, 0x45, 0x3e, - 0x85, 0x89, 0x7a, 0x7d, 0x25, 0x3e, 0x50, 0xce, 0xe2, 0x81, 0x72, 0xe1, 0xe8, 0xb0, 0x52, 0x66, - 0x22, 0x55, 0x7c, 0xa8, 0xe8, 0x5f, 0x95, 0x4e, 0xc1, 0x38, 0x6c, 0xaf, 0xd5, 0x63, 0x0e, 0x73, - 0x31, 0x07, 0x26, 0xcc, 0x65, 0x73, 0xd0, 0x29, 0xc8, 0x3f, 0x2d, 0xc0, 0x65, 0x9d, 0x65, 0xd6, - 0xc0, 0x94, 0xcf, 0xbd, 0xc8, 0x68, 0x2e, 0x1c, 0x1d, 0x56, 0x6e, 0x9a, 0xfd, 0x68, 0x64, 0x4e, - 0x96, 0xd6, 0xb6, 0xbe, 0x4d, 0xc1, 0xf6, 0xea, 0x1d, 0xc8, 0x6c, 0xef, 0xfc, 0x0b, 0xb7, 0xd7, - 0x1c, 0xb5, 0xfe, 0xed, 0xed, 0xd7, 0x14, 0xeb, 0x73, 0x18, 0x53, 0x9b, 0x36, 0x19, 0x81, 0x81, - 0x6a, 0xbb, 0x5d, 0x3a, 0xc5, 0xfe, 0xa8, 0xd7, 0x57, 0x4a, 0x05, 0x32, 0x05, 0x10, 0x9f, 0x54, - 0xa5, 0x22, 0x99, 0x80, 0x51, 0x79, 0x92, 0x94, 0x06, 0x10, 0xbf, 0xd3, 0x29, 0x0d, 0x12, 0x02, - 0x53, 0xe6, 0x7e, 0x56, 0x1a, 0xb2, 0x7e, 0xa7, 0x00, 0x63, 0xea, 0x3b, 0x24, 0xa7, 0x61, 0x7c, - 0x67, 0xa3, 0xbe, 0xb5, 0xbc, 0xb8, 0x7a, 0x77, 0x75, 0x79, 0xa9, 0x74, 0x8a, 0x5c, 0x84, 0x73, - 0xdb, 0xf5, 0x95, 0xc6, 0x52, 0xad, 0xb1, 0xb6, 0xb9, 0x58, 0x5d, 0x6b, 0x6c, 0xd9, 0x9b, 0x9f, - 0x7f, 0xd1, 0xd8, 0xde, 0xd9, 0xd8, 0x58, 0x5e, 0x2b, 0x15, 0x48, 0x19, 0x66, 0x58, 0xf1, 0x83, - 0x9d, 0xda, 0xb2, 0x8e, 0x50, 0x2a, 0x92, 0x2b, 0x70, 0x31, 0xab, 0xa4, 0xb1, 0xb2, 0x5c, 0x5d, - 0x5a, 0x5b, 0xae, 0xd7, 0x4b, 0x03, 0x64, 0x0e, 0xa6, 0x19, 0x4a, 0x75, 0x6b, 0xcb, 0xa0, 0x1d, - 0xb4, 0xda, 0x30, 0xae, 0x7d, 0x00, 0xe4, 0x02, 0x94, 0x17, 0x97, 0xed, 0xed, 0xc6, 0xd6, 0x8e, - 0xbd, 0xb5, 0x59, 0x5f, 0x6e, 0x98, 0x2d, 0x4c, 0x96, 0xae, 0x6d, 0xde, 0x5b, 0xdd, 0x68, 0x30, - 0x50, 0xbd, 0x54, 0x60, 0xcd, 0x30, 0x4a, 0xeb, 0xab, 0x1b, 0xf7, 0xd6, 0x96, 0x1b, 0x3b, 0xf5, - 0x65, 0x81, 0x52, 0xb4, 0x7e, 0xa3, 0x98, 0x3a, 0xd2, 0xc9, 0x02, 0x8c, 0xd7, 0xb9, 0xbd, 0x02, - 0xb7, 0x39, 0xae, 0x20, 0x32, 0x19, 0x6d, 0x42, 0x98, 0x31, 0xf8, 0x0e, 0xa6, 0x23, 0x31, 0x29, - 0x6d, 0x8b, 0x7d, 0xcd, 0x4d, 0xbf, 0xad, 0x4b, 0x69, 0x1d, 0x01, 0xb3, 0x55, 0x29, 0x59, 0xd0, - 0xe4, 0x39, 0xae, 0x2d, 0xa2, 0x46, 0x22, 0xe5, 0x39, 0xfd, 0x6c, 0x57, 0x92, 0xdd, 0x42, 0x3c, - 0xa5, 0x42, 0x0c, 0x43, 0x9a, 0x0c, 0x59, 0x42, 0xe1, 0x91, 0x37, 0xa4, 0xa4, 0xcb, 0xb5, 0x3b, - 0x3c, 0xec, 0x13, 0x7a, 0x89, 0x10, 0x72, 0xad, 0x6e, 0xce, 0xc1, 0x4a, 0x3e, 0x4c, 0xae, 0x19, - 0x31, 0x18, 0xc8, 0x2c, 0x71, 0x7e, 0xda, 0x09, 0x54, 0x52, 0x81, 0x21, 0xbe, 0xe3, 0xf2, 0xf1, - 0x40, 0xd9, 0xba, 0xcd, 0x00, 0x36, 0x87, 0x5b, 0x7f, 0x3c, 0xa0, 0x0b, 0x19, 0x4c, 0x96, 0xd6, - 0xc6, 0x1b, 0x65, 0x69, 0x1c, 0x67, 0x84, 0x32, 0x55, 0x90, 0x7f, 0x25, 0xa8, 0x0a, 0x0e, 0xc4, - 0xaa, 0xa0, 0xf8, 0xd4, 0xb8, 0x2a, 0x18, 0xa3, 0xb0, 0x59, 0x14, 0x62, 0x1b, 0x72, 0x1d, 0x8c, - 0x67, 0x51, 0x88, 0x7a, 0x62, 0x16, 0x35, 0x24, 0xf2, 0x01, 0x40, 0xf5, 0x61, 0x1d, 0x75, 0x1e, - 0x7b, 0x43, 0x88, 0xae, 0x78, 0xc8, 0x38, 0xcf, 0x42, 0xa1, 0x52, 0x05, 0xba, 0xce, 0xa8, 0x61, - 0x93, 0x1a, 0x4c, 0x56, 0x7f, 0xd2, 0x0d, 0xe8, 0x6a, 0x8b, 0x9d, 0x53, 0x11, 0x57, 0x8e, 0xc7, - 0xf8, 0x46, 0xea, 0xb0, 0x82, 0x86, 0x2b, 0x4a, 0x34, 0x06, 0x26, 0x09, 0xd9, 0x84, 0x33, 0xf7, - 0x16, 0xb7, 0xc4, 0xba, 0xaa, 0x36, 0x9b, 0x7e, 0xd7, 0x8b, 0x84, 0xbc, 0x7a, 0xe5, 0xe8, 0xb0, - 0x72, 0x71, 0xaf, 0xd9, 0x69, 0xc8, 0x35, 0xe8, 0xf0, 0x62, 0x5d, 0x60, 0x4d, 0xd1, 0x92, 0xab, - 0x30, 0xb0, 0x63, 0xaf, 0x0a, 0xcd, 0xf9, 0xcc, 0xd1, 0x61, 0x65, 0xb2, 0x1b, 0xb8, 0x1a, 0x09, - 0x2b, 0x25, 0xef, 0x03, 0x6c, 0x3b, 0xc1, 0x1e, 0x8d, 0xb6, 0xfc, 0x20, 0x42, 0x81, 0x73, 0xb2, - 0x76, 0xee, 0xe8, 0xb0, 0x32, 0x1b, 0x21, 0xb4, 0xc1, 0xb6, 0x3f, 0xbd, 0xd3, 0x31, 0xf2, 0xfd, - 0xc1, 0xd1, 0x62, 0x69, 0xc0, 0x1e, 0xab, 0xd3, 0x30, 0xe4, 0xfa, 0x61, 0x1b, 0xa6, 0xee, 0xd1, - 0x88, 0x2d, 0x5c, 0xa9, 0xef, 0xf4, 0x9e, 0xd6, 0x8f, 0x60, 0xfc, 0xa1, 0x1b, 0xed, 0xd7, 0x69, - 0x33, 0xa0, 0x91, 0xb4, 0xf5, 0xe0, 0x90, 0x3f, 0x73, 0xa3, 0xfd, 0x46, 0xc8, 0xe1, 0xfa, 0xb9, - 0xae, 0xa1, 0x5b, 0xcb, 0x70, 0x5a, 0xd4, 0xa6, 0xd4, 0xab, 0x05, 0x93, 0x61, 0x01, 0x19, 0xe2, - 0xb4, 0xeb, 0x0c, 0x4d, 0x36, 0xff, 0xac, 0x08, 0xb3, 0x8b, 0xfb, 0x8e, 0xb7, 0x47, 0xb7, 0x9c, - 0x30, 0x7c, 0xe6, 0x07, 0x2d, 0xad, 0xf1, 0xa8, 0x5b, 0xa6, 0x1a, 0x8f, 0xca, 0xe4, 0x02, 0x8c, - 0x6f, 0xb6, 0x5b, 0x92, 0x46, 0xe8, 0xbd, 0x58, 0x97, 0xdf, 0x6e, 0x35, 0x3a, 0x92, 0x97, 0x8e, - 0xc4, 0x68, 0x36, 0xe8, 0x33, 0x45, 0x33, 0x10, 0xd3, 0x78, 0xf4, 0x99, 0x46, 0xa3, 0x21, 0x91, - 0x65, 0x38, 0x53, 0xa7, 0x4d, 0xdf, 0x6b, 0xdd, 0x75, 0x9a, 0x91, 0x1f, 0x6c, 0xfb, 0x4f, 0xa8, - 0x27, 0x16, 0x34, 0x2a, 0x06, 0x21, 0x16, 0x36, 0x1e, 0x63, 0x69, 0x23, 0x62, 0xc5, 0x76, 0x9a, - 0x82, 0x6c, 0xc2, 0xe8, 0x43, 0x61, 0x31, 0x14, 0xca, 0xf2, 0xb5, 0x9b, 0xca, 0x84, 0xb8, 0x18, - 0x50, 0x5c, 0x85, 0x4e, 0x5b, 0xa9, 0xfb, 0x4a, 0xce, 0xc2, 0xad, 0x4c, 0x62, 0xda, 0x8a, 0x89, - 0xb5, 0x03, 0x93, 0x5b, 0xed, 0xee, 0x9e, 0xeb, 0xb1, 0x4d, 0xa7, 0x4e, 0x7f, 0x4c, 0x96, 0x00, - 0x62, 0x80, 0xb0, 0x03, 0x4e, 0x0b, 0x15, 0x3b, 0x2e, 0xd8, 0x7d, 0x4b, 0x7c, 0xb9, 0x08, 0x41, - 0x8d, 0xc8, 0xd6, 0xe8, 0xac, 0xff, 0x31, 0x00, 0x44, 0x4c, 0x00, 0x1e, 0x82, 0x75, 0x1a, 0xb1, - 0xe3, 0xe9, 0x2c, 0x14, 0x95, 0xb9, 0x6e, 0xf8, 0xe8, 0xb0, 0x52, 0x74, 0x5b, 0x76, 0x71, 0x75, - 0x89, 0xbc, 0x0d, 0x43, 0x88, 0x86, 0xe3, 0x3f, 0xa5, 0xea, 0xd3, 0x39, 0xf0, 0xcd, 0x07, 0x4f, - 0x5f, 0x9b, 0x23, 0x93, 0x77, 0x60, 0x6c, 0x89, 0xb6, 0xe9, 0x9e, 0x13, 0xf9, 0x72, 0x3b, 0xe1, - 0x06, 0x30, 0x09, 0xd4, 0xd6, 0x5c, 0x8c, 0xc9, 0xd4, 0x61, 0x9b, 0x3a, 0xa1, 0xef, 0xe9, 0xea, - 0x70, 0x80, 0x10, 0x5d, 0x1d, 0xe6, 0x38, 0xe4, 0x6f, 0x15, 0x60, 0xbc, 0xea, 0x79, 0xc2, 0xb0, - 0x14, 0x8a, 0x51, 0x9f, 0xbd, 0xa9, 0x2c, 0xb1, 0x6b, 0xce, 0x23, 0xda, 0xde, 0x75, 0xda, 0x5d, - 0x1a, 0xd6, 0xbe, 0x66, 0x1a, 0xca, 0xbf, 0x3f, 0xac, 0x7c, 0x78, 0x02, 0x53, 0x51, 0x6c, 0xd3, - 0xdd, 0x0e, 0x1c, 0x37, 0x0a, 0xd9, 0x57, 0xeb, 0xc4, 0x15, 0xea, 0xdf, 0x8d, 0xd6, 0x8e, 0xf8, - 0x6c, 0x18, 0xee, 0x77, 0x36, 0x90, 0x03, 0x38, 0x5d, 0x0d, 0xc3, 0xee, 0x01, 0xad, 0x47, 0x4e, - 0x10, 0x6d, 0xbb, 0x07, 0x14, 0x37, 0xa4, 0xde, 0xc6, 0x85, 0xef, 0xfc, 0xf4, 0xb0, 0x52, 0x60, - 0x4a, 0x91, 0x83, 0xa4, 0x4c, 0xee, 0x09, 0xa2, 0x46, 0xe4, 0xea, 0xc7, 0x1b, 0x9a, 0x19, 0x92, - 0xbc, 0xad, 0xab, 0x4a, 0x20, 0x59, 0x5d, 0xca, 0x9b, 0x71, 0x6b, 0x11, 0x2e, 0xdc, 0xa3, 0x91, - 0x4d, 0x43, 0x1a, 0xc9, 0x6f, 0x04, 0x57, 0x78, 0x6c, 0xdc, 0x1d, 0xc1, 0xdf, 0x8a, 0x18, 0xa7, - 0x9f, 0x7f, 0x17, 0xb2, 0xc4, 0xfa, 0x3f, 0x0a, 0x50, 0x59, 0x0c, 0x28, 0xd7, 0x27, 0x72, 0x18, - 0xf5, 0xde, 0xbb, 0x2e, 0xc0, 0xe0, 0xf6, 0xf3, 0x8e, 0xb4, 0xca, 0x60, 0x29, 0x9b, 0x14, 0x1b, - 0xa1, 0xc7, 0x34, 0x72, 0x59, 0x8f, 0x61, 0xd6, 0xa6, 0x1e, 0x7d, 0xe6, 0x3c, 0x6a, 0x53, 0xc3, - 0x4e, 0x54, 0x81, 0x21, 0xfe, 0xa1, 0xa7, 0xba, 0xc0, 0xe1, 0x27, 0xb3, 0xb9, 0x59, 0x93, 0x30, - 0xbe, 0xe5, 0x7a, 0x7b, 0x82, 0xbb, 0xf5, 0x17, 0x83, 0x30, 0xc1, 0x7f, 0x0b, 0x15, 0x29, 0x71, - 0x5c, 0x16, 0x8e, 0x73, 0x5c, 0xbe, 0x07, 0x93, 0xec, 0xbc, 0xa1, 0xc1, 0x2e, 0x0d, 0xd8, 0xfe, - 0x2f, 0x46, 0x02, 0xd5, 0xbd, 0x10, 0x0b, 0x1a, 0x4f, 0x79, 0x89, 0x6d, 0x22, 0x92, 0x35, 0x98, - 0xe2, 0x80, 0xbb, 0xd4, 0x89, 0xba, 0xb1, 0xc5, 0xea, 0xb4, 0xd0, 0x89, 0x24, 0x98, 0x2f, 0x4d, - 0xc1, 0xeb, 0xb1, 0x00, 0xda, 0x09, 0x5a, 0xf2, 0x09, 0x9c, 0xde, 0x0a, 0xfc, 0x6f, 0x9e, 0x6b, - 0x02, 0x02, 0xff, 0x3a, 0xb9, 0xf6, 0xc4, 0x8a, 0x1a, 0xba, 0x98, 0x90, 0xc4, 0x26, 0x6f, 0xc0, - 0xe8, 0x6a, 0x58, 0xf3, 0x03, 0xd7, 0xdb, 0xc3, 0x6f, 0x74, 0x94, 0x1b, 0xfa, 0xdd, 0xb0, 0xf1, - 0x08, 0x81, 0xb6, 0x2a, 0x4e, 0x98, 0xa4, 0x47, 0xfa, 0x9b, 0xa4, 0x6f, 0x03, 0xac, 0xf9, 0x4e, - 0xab, 0xda, 0x6e, 0x2f, 0x56, 0x43, 0x3c, 0x89, 0xc5, 0x79, 0xd4, 0xf6, 0x9d, 0x56, 0xc3, 0x69, - 0xb7, 0x1b, 0x4d, 0x27, 0xb4, 0x35, 0x1c, 0xf2, 0x25, 0x9c, 0x0b, 0xdd, 0x3d, 0x0f, 0x3b, 0xd7, - 0x70, 0xda, 0x7b, 0x7e, 0xe0, 0x46, 0xfb, 0x07, 0x8d, 0xb0, 0xeb, 0x46, 0xdc, 0x1e, 0x34, 0xb5, - 0x70, 0x49, 0x6c, 0x72, 0x75, 0x89, 0x57, 0x95, 0x68, 0x75, 0x86, 0x65, 0xcf, 0x85, 0xd9, 0x05, - 0xe4, 0x21, 0x4c, 0xae, 0xb9, 0x4d, 0xea, 0x85, 0x14, 0x0d, 0x7c, 0xcf, 0xd1, 0x5a, 0xd4, 0xfb, - 0x63, 0x66, 0x83, 0x38, 0xd9, 0xd6, 0x89, 0xf0, 0xd3, 0x35, 0xf9, 0xdc, 0x1f, 0x1c, 0x1d, 0x2e, - 0x8d, 0xd8, 0xa7, 0x05, 0xf0, 0xa1, 0x13, 0x78, 0xae, 0xb7, 0x17, 0x5a, 0xff, 0x2f, 0x81, 0x51, - 0x35, 0x4f, 0x37, 0x75, 0x4d, 0x45, 0x1c, 0xcd, 0xb8, 0x64, 0x63, 0x3b, 0x9c, 0xad, 0x61, 0x90, - 0x73, 0xa8, 0xbb, 0x08, 0xa1, 0x60, 0x84, 0x7d, 0x42, 0x4e, 0xa7, 0x63, 0x33, 0x18, 0xdb, 0x1a, - 0x96, 0x6a, 0xb8, 0x68, 0x46, 0xf9, 0xd6, 0xd0, 0x7a, 0x64, 0x17, 0x97, 0x6a, 0xec, 0x9b, 0xdc, - 0x5c, 0x5d, 0x5a, 0xc4, 0xf9, 0x1f, 0xe5, 0xdf, 0xa4, 0xef, 0xb6, 0x9a, 0x36, 0x42, 0x59, 0x69, - 0xbd, 0xba, 0xbe, 0x26, 0xe6, 0x18, 0x4b, 0x43, 0xe7, 0xa0, 0x6d, 0x23, 0x94, 0x49, 0xbb, 0xdc, - 0xa4, 0xb2, 0xe8, 0x7b, 0x51, 0xe0, 0xb7, 0x43, 0x14, 0xe1, 0x46, 0xf9, 0x1a, 0x14, 0xb6, 0x98, - 0xa6, 0x28, 0xb2, 0x13, 0xa8, 0xe4, 0x21, 0xcc, 0x55, 0x5b, 0x4f, 0x1d, 0xaf, 0x49, 0x5b, 0xbc, - 0xe4, 0xa1, 0x1f, 0x3c, 0x79, 0xdc, 0xf6, 0x9f, 0x85, 0xb8, 0x48, 0x46, 0x85, 0xe9, 0x52, 0xa0, - 0x48, 0xd3, 0xce, 0x33, 0x89, 0x64, 0xe7, 0x51, 0xb3, 0x7d, 0x60, 0xb1, 0xed, 0x77, 0x5b, 0x62, - 0xe9, 0xe0, 0x3e, 0xd0, 0x64, 0x00, 0x9b, 0xc3, 0xd9, 0x28, 0xad, 0xd4, 0xd7, 0x71, 0x61, 0x88, - 0x51, 0xda, 0x0f, 0x0f, 0x6c, 0x06, 0x23, 0xd7, 0x60, 0x44, 0x0a, 0xee, 0xfc, 0x26, 0x03, 0x2d, - 0xe8, 0x52, 0x60, 0x97, 0x65, 0xec, 0x3b, 0xb6, 0x69, 0xd3, 0x7f, 0x4a, 0x83, 0xe7, 0x8b, 0x7e, - 0x8b, 0x4a, 0xb3, 0x96, 0x30, 0xdb, 0xf0, 0x82, 0x46, 0x93, 0x95, 0xd8, 0x26, 0x22, 0xab, 0x80, - 0x1f, 0xdc, 0x61, 0xf9, 0x74, 0x5c, 0x01, 0x3f, 0xd8, 0x43, 0x5b, 0x96, 0x91, 0x25, 0x38, 0x53, - 0xed, 0x46, 0xfe, 0x81, 0x13, 0xb9, 0xcd, 0x9d, 0xce, 0x5e, 0xe0, 0xb0, 0x4a, 0x4a, 0x48, 0x80, - 0x8a, 0x8c, 0x23, 0x0b, 0x1b, 0x5d, 0x51, 0x6a, 0xa7, 0x09, 0xc8, 0xbb, 0x30, 0xb1, 0x1a, 0x72, - 0xd3, 0xa5, 0x13, 0xd2, 0x16, 0xda, 0x9f, 0x44, 0x2b, 0xdd, 0xb0, 0x81, 0x86, 0xcc, 0x06, 0x53, - 0x7d, 0x5a, 0xb6, 0x81, 0x47, 0x2c, 0x18, 0xae, 0x86, 0xa1, 0x1b, 0x46, 0x68, 0x56, 0x1a, 0xad, - 0xc1, 0xd1, 0x61, 0x65, 0xd8, 0x41, 0x88, 0x2d, 0x4a, 0xc8, 0x43, 0x18, 0x5f, 0xa2, 0x4c, 0x72, - 0xde, 0x0e, 0xba, 0x61, 0x84, 0x46, 0xa2, 0xf1, 0x85, 0x73, 0x62, 0x37, 0xd2, 0x4a, 0xc4, 0x5a, - 0xe6, 0x22, 0x6a, 0x0b, 0xe1, 0x8d, 0x88, 0x15, 0xe8, 0x47, 0xad, 0x86, 0xcf, 0xd4, 0x02, 0x41, - 0xb3, 0xe2, 0xb6, 0xd8, 0xfe, 0x32, 0x83, 0x6d, 0x40, 0xb5, 0x40, 0x6c, 0x68, 0x8d, 0x7d, 0x2c, - 0xd1, 0xd5, 0x02, 0x83, 0x84, 0x34, 0x53, 0xd6, 0xf0, 0x59, 0xc3, 0xe2, 0x69, 0x16, 0xca, 0x26, - 0x9e, 0xd0, 0x56, 0xfe, 0x11, 0x8c, 0x2f, 0x76, 0xc3, 0xc8, 0x3f, 0xd8, 0xde, 0xa7, 0x07, 0x14, - 0x0d, 0x49, 0x42, 0xf9, 0x69, 0x22, 0xb8, 0x11, 0x31, 0xb8, 0xde, 0x4d, 0x0d, 0x9d, 0x7c, 0x06, - 0x44, 0x6a, 0x31, 0xf7, 0xd8, 0xfa, 0xf0, 0xd8, 0x5a, 0x46, 0x5b, 0xd2, 0x28, 0x57, 0x5d, 0xa4, - 0xf2, 0xd3, 0xd8, 0x53, 0xc5, 0xba, 0x3d, 0x33, 0x4d, 0xcc, 0x1a, 0xc4, 0x9b, 0x78, 0x2f, 0x70, - 0x3a, 0xfb, 0xe5, 0x72, 0xac, 0x1a, 0x88, 0x4e, 0xed, 0x31, 0xb8, 0x21, 0xe2, 0xc4, 0xe8, 0xa4, - 0x0e, 0xc0, 0x7f, 0xae, 0xb1, 0x89, 0xe7, 0xd6, 0xa7, 0xb2, 0x31, 0x5e, 0xac, 0x40, 0x8e, 0x15, - 0xaa, 0x3b, 0x82, 0x6d, 0xdb, 0x35, 0x66, 0x53, 0x63, 0x43, 0x9e, 0x40, 0x89, 0xff, 0x5a, 0xf7, - 0x3d, 0x37, 0xe2, 0xe7, 0xc5, 0xbc, 0x61, 0xaa, 0x4c, 0x16, 0xcb, 0x0a, 0xd0, 0x44, 0x2c, 0x2a, - 0x38, 0x50, 0xa5, 0x5a, 0x35, 0x29, 0xc6, 0x64, 0x0b, 0xc6, 0xb7, 0x02, 0xbf, 0xd5, 0x6d, 0x46, - 0x28, 0x65, 0x9c, 0xc7, 0x8d, 0x9f, 0x88, 0x7a, 0xb4, 0x12, 0x3e, 0x26, 0x1d, 0x0e, 0x68, 0xb0, - 0x73, 0x41, 0x1f, 0x13, 0x0d, 0x91, 0xd4, 0x60, 0x78, 0xcb, 0x6f, 0xbb, 0xcd, 0xe7, 0xe5, 0x0b, - 0xd8, 0xe8, 0x19, 0xc9, 0x0c, 0x81, 0xb2, 0xa9, 0x28, 0xd2, 0x76, 0x10, 0xa4, 0x8b, 0xb4, 0x1c, - 0x89, 0x54, 0x61, 0xf2, 0x33, 0xb6, 0x60, 0x5c, 0xdf, 0xf3, 0x1c, 0x37, 0xa0, 0xe5, 0x8b, 0x38, - 0x2f, 0x68, 0xc6, 0xff, 0xb1, 0x5e, 0xa0, 0x2f, 0x67, 0x83, 0x82, 0xac, 0xc2, 0xe9, 0xd5, 0xb0, - 0x1e, 0x05, 0x6e, 0x87, 0xae, 0x3b, 0x9e, 0xb3, 0x47, 0x5b, 0xe5, 0x4b, 0xb1, 0x1d, 0xdd, 0x0d, - 0x1b, 0x21, 0x96, 0x35, 0x0e, 0x78, 0xa1, 0x6e, 0x47, 0x4f, 0xd0, 0x91, 0xcf, 0x61, 0x66, 0xf9, - 0x9b, 0x88, 0xad, 0x98, 0x76, 0xb5, 0xdb, 0x72, 0xa3, 0x7a, 0xe4, 0x07, 0xce, 0x1e, 0x2d, 0x57, - 0x90, 0xdf, 0x6b, 0x47, 0x87, 0x95, 0xcb, 0x54, 0x94, 0x37, 0x1c, 0x86, 0xd0, 0x08, 0x39, 0x86, - 0x7e, 0x3f, 0x9e, 0xc5, 0x81, 0x8d, 0x7e, 0xbd, 0xdb, 0x61, 0xd2, 0x36, 0x8e, 0xfe, 0x65, 0x63, - 0xf4, 0xb5, 0x12, 0x3e, 0xfa, 0x21, 0x07, 0xa4, 0x46, 0x5f, 0x43, 0x24, 0x36, 0x90, 0xfb, 0xbe, - 0xeb, 0x55, 0x9b, 0x91, 0xfb, 0x94, 0x0a, 0x8d, 0x39, 0x2c, 0x5f, 0xc1, 0x96, 0xa2, 0xcd, 0xff, - 0x97, 0x7d, 0xd7, 0x6b, 0x38, 0x58, 0xdc, 0x08, 0x45, 0xb9, 0xfe, 0x8d, 0xa4, 0xa9, 0xc9, 0x0f, - 0xe1, 0xec, 0xba, 0xff, 0xc8, 0x6d, 0x53, 0xbe, 0xe5, 0xf0, 0x61, 0x41, 0xfb, 0xa5, 0x85, 0x7c, - 0xd1, 0xe6, 0x7f, 0x80, 0x18, 0x0d, 0xb1, 0x5b, 0x1d, 0x28, 0x1c, 0xdd, 0xe6, 0x9f, 0xcd, 0x85, - 0x2c, 0xc3, 0x04, 0x7e, 0x97, 0x6d, 0xfc, 0x19, 0x96, 0xaf, 0xa2, 0x4a, 0x77, 0x25, 0x21, 0xa5, - 0xdd, 0x5c, 0xd6, 0x70, 0x96, 0xbd, 0x28, 0x78, 0x6e, 0x1b, 0x64, 0xe4, 0x63, 0x98, 0x4f, 0x2e, - 0xef, 0x45, 0xdf, 0x7b, 0xec, 0xee, 0x75, 0x03, 0xda, 0x2a, 0xbf, 0xc6, 0x9a, 0x6a, 0xf7, 0xc0, - 0x20, 0x5f, 0xc1, 0x2c, 0x9e, 0x75, 0x55, 0xcf, 0xf7, 0x9e, 0x1f, 0xb8, 0x3f, 0x41, 0xf9, 0x99, - 0x89, 0xbd, 0xd7, 0x50, 0xec, 0xbd, 0x76, 0x74, 0x58, 0xb9, 0x82, 0x67, 0x62, 0xc3, 0xd1, 0x31, - 0x12, 0x56, 0xeb, 0x6c, 0x1e, 0xf3, 0x0f, 0xe1, 0x4c, 0xaa, 0xfd, 0xa4, 0x04, 0x03, 0x4f, 0xc4, - 0xfd, 0xec, 0x98, 0xcd, 0xfe, 0x24, 0x6f, 0xc2, 0xd0, 0x53, 0xa6, 0xa8, 0xa1, 0x38, 0x12, 0xdf, - 0xf8, 0x69, 0xa4, 0xab, 0xde, 0x63, 0xdf, 0xe6, 0x48, 0x1f, 0x14, 0xdf, 0x2b, 0xdc, 0x1f, 0x1c, - 0x1d, 0x2f, 0x4d, 0xf0, 0x6b, 0xf5, 0xfb, 0x83, 0xa3, 0x93, 0xa5, 0x29, 0xab, 0x0a, 0xa7, 0x13, - 0xf8, 0xa4, 0x0c, 0x23, 0xd4, 0x63, 0xc2, 0x7f, 0x8b, 0x0b, 0x44, 0xb6, 0xfc, 0x49, 0x66, 0x60, - 0xa8, 0xed, 0x1e, 0xb8, 0x11, 0x56, 0x38, 0x64, 0xf3, 0x1f, 0xd6, 0xef, 0x16, 0x80, 0xa4, 0xcf, - 0x23, 0x72, 0x2b, 0xc1, 0x86, 0x8b, 0xbe, 0x02, 0xa4, 0x5f, 0x1c, 0x48, 0xee, 0x9f, 0xc1, 0x34, - 0x5f, 0x10, 0xf2, 0xe4, 0xd4, 0xea, 0xe2, 0x3b, 0x76, 0x46, 0xb1, 0x6e, 0x6c, 0x12, 0xc5, 0x78, - 0xce, 0xae, 0x61, 0xd3, 0xba, 0x30, 0x9b, 0x79, 0x12, 0x91, 0x75, 0x98, 0x3d, 0xf0, 0xbd, 0x68, - 0xbf, 0xfd, 0x5c, 0x1e, 0x44, 0xa2, 0xb6, 0x02, 0xd6, 0x86, 0x9b, 0x6f, 0x26, 0x82, 0x3d, 0x2d, - 0xc0, 0x82, 0x23, 0xd6, 0x23, 0x8c, 0x4e, 0xb2, 0x27, 0x96, 0x0d, 0x67, 0x52, 0x1b, 0x3a, 0xf9, - 0x01, 0x4c, 0x34, 0x51, 0xb9, 0x33, 0x6a, 0xe2, 0xc7, 0x99, 0x06, 0xd7, 0xbf, 0x55, 0x0e, 0xe7, - 0x5d, 0xf9, 0x47, 0x05, 0x98, 0xcb, 0xd9, 0xca, 0x4f, 0x3e, 0xd4, 0x5f, 0xc0, 0xd9, 0x03, 0xe7, - 0x9b, 0x46, 0x80, 0xba, 0x7b, 0x23, 0x70, 0xbc, 0xc4, 0x68, 0xe3, 0x36, 0x95, 0x8d, 0xa1, 0xfb, - 0x36, 0x1d, 0x38, 0xdf, 0xd8, 0x88, 0x60, 0xb3, 0x72, 0xde, 0xce, 0x4f, 0x61, 0xd2, 0xd8, 0xbc, - 0x4f, 0xdc, 0x38, 0xeb, 0x0e, 0x9c, 0x59, 0xa2, 0x6d, 0x1a, 0xd1, 0x63, 0xdb, 0xec, 0xac, 0x2d, - 0x80, 0x3a, 0x3d, 0x70, 0x3a, 0xfb, 0x3e, 0x13, 0xea, 0x6b, 0xfa, 0x2f, 0x61, 0xf3, 0x21, 0x52, - 0x3d, 0x91, 0x05, 0xbb, 0x6f, 0x71, 0x41, 0x3f, 0x54, 0x98, 0xb6, 0x46, 0x65, 0xfd, 0x9b, 0x22, - 0x10, 0xb1, 0xfb, 0x06, 0xd4, 0x39, 0x90, 0xcd, 0x78, 0x1f, 0x26, 0xb8, 0x86, 0xce, 0xc1, 0xd8, - 0x9c, 0xf1, 0x85, 0x69, 0xf1, 0xe5, 0xe9, 0x45, 0x2b, 0xa7, 0x6c, 0x03, 0x95, 0x91, 0xda, 0x94, - 0x9b, 0x16, 0x90, 0xb4, 0x68, 0x90, 0xea, 0x45, 0x8c, 0x54, 0xff, 0x4d, 0x3e, 0x81, 0xa9, 0x45, - 0xff, 0xa0, 0xc3, 0xc6, 0x44, 0x10, 0x0f, 0x08, 0xb3, 0x8d, 0xa8, 0xd7, 0x28, 0x5c, 0x39, 0x65, - 0x27, 0xd0, 0xc9, 0x06, 0x4c, 0xdf, 0x6d, 0x77, 0xc3, 0xfd, 0xaa, 0xd7, 0x5a, 0x6c, 0xfb, 0xa1, - 0xe4, 0x32, 0x28, 0x34, 0x2d, 0xb1, 0x77, 0xa6, 0x31, 0x56, 0x4e, 0xd9, 0x59, 0x84, 0xe4, 0x1a, - 0x0c, 0x2d, 0x3f, 0x65, 0x7b, 0xba, 0xf4, 0x70, 0x11, 0x0e, 0x78, 0x9b, 0x1e, 0xdd, 0x7c, 0xbc, - 0x72, 0xca, 0xe6, 0xa5, 0xb5, 0x31, 0x18, 0x91, 0xda, 0xfd, 0x2d, 0x26, 0x6f, 0xab, 0xe1, 0xac, - 0x47, 0x4e, 0xd4, 0x0d, 0xc9, 0x3c, 0x8c, 0xee, 0x74, 0x98, 0xd2, 0x29, 0xcd, 0x22, 0xb6, 0xfa, - 0x6d, 0xbd, 0x69, 0x8e, 0x34, 0xb9, 0x00, 0xb1, 0x4d, 0x57, 0x20, 0x6b, 0x46, 0xde, 0x15, 0x73, - 0x70, 0x7b, 0x63, 0x1b, 0xf5, 0x16, 0x13, 0xf5, 0x96, 0x92, 0x63, 0x6d, 0xcd, 0x66, 0x0e, 0x9e, - 0xf5, 0x39, 0x5c, 0xda, 0xe9, 0x84, 0x34, 0x88, 0xaa, 0x9d, 0x4e, 0xdb, 0x6d, 0xf2, 0x1b, 0x32, - 0xb4, 0x02, 0xc8, 0xc5, 0xf2, 0x2e, 0x0c, 0x73, 0x80, 0x58, 0x26, 0x72, 0x0d, 0x56, 0x3b, 0x1d, - 0x61, 0x7b, 0x78, 0x8b, 0x4b, 0xfe, 0xdc, 0x9a, 0x60, 0x0b, 0x6c, 0xeb, 0xb7, 0x0b, 0x70, 0x89, - 0x7f, 0x01, 0xb9, 0xac, 0xbf, 0x0b, 0x63, 0xe8, 0xff, 0xd6, 0x71, 0x9a, 0xf2, 0x9b, 0xe0, 0x8e, - 0x80, 0x12, 0x68, 0xc7, 0xe5, 0x9a, 0x67, 0x61, 0x31, 0xdf, 0xb3, 0x50, 0x7e, 0x60, 0x03, 0x99, - 0x1f, 0xd8, 0x67, 0x60, 0x89, 0x16, 0xb5, 0xdb, 0xa9, 0x46, 0x85, 0x2f, 0xd2, 0x2a, 0xeb, 0xbf, - 0x14, 0x61, 0xee, 0x1e, 0xf5, 0x68, 0xe0, 0x60, 0x3f, 0x0d, 0x2b, 0x97, 0xee, 0x61, 0x54, 0xe8, - 0xe9, 0x61, 0x54, 0x91, 0x76, 0xc3, 0x22, 0xda, 0x0d, 0x53, 0xee, 0x52, 0x4c, 0x17, 0xdd, 0xb1, - 0x57, 0x45, 0xb7, 0x50, 0x17, 0xed, 0x06, 0x2e, 0xbf, 0x65, 0x58, 0x8d, 0xbd, 0x93, 0x06, 0xfb, - 0xda, 0x1c, 0xa6, 0x85, 0xb7, 0xc6, 0x88, 0xf0, 0x4e, 0x32, 0x7d, 0x92, 0x36, 0x60, 0x98, 0x9b, - 0x3b, 0xf1, 0x6e, 0x6b, 0x7c, 0xe1, 0x86, 0xf8, 0xa6, 0x72, 0x3a, 0x28, 0x6c, 0xa3, 0x78, 0xb0, - 0xf3, 0x25, 0x10, 0x21, 0xc0, 0x16, 0x5c, 0xe6, 0x3f, 0x83, 0x71, 0x0d, 0xe5, 0x38, 0x67, 0xbf, - 0x32, 0xbb, 0x32, 0x71, 0xd4, 0xdb, 0xe3, 0x16, 0x5c, 0xed, 0xec, 0xb7, 0x3e, 0x84, 0x72, 0xba, - 0x35, 0xc2, 0xd4, 0xd6, 0xcf, 0xb2, 0x67, 0x2d, 0xc1, 0xcc, 0x3d, 0x1a, 0xe1, 0xc2, 0xc5, 0x8f, - 0x48, 0xf3, 0xb2, 0x4b, 0x7c, 0x67, 0x72, 0x57, 0x45, 0x20, 0x5b, 0x60, 0xda, 0x57, 0x5a, 0x87, - 0xd9, 0x04, 0x17, 0x51, 0xff, 0x07, 0x30, 0x22, 0x40, 0x6a, 0x47, 0x15, 0xae, 0xba, 0xf4, 0x91, - 0x28, 0xd8, 0x5d, 0xe0, 0xeb, 0x56, 0x70, 0xb6, 0x25, 0x81, 0xb5, 0x0f, 0x67, 0xd9, 0x31, 0x1b, - 0x73, 0x55, 0xcb, 0xf1, 0x3c, 0x8c, 0x75, 0x98, 0xa0, 0x10, 0xba, 0x3f, 0xe1, 0xcb, 0x68, 0xc8, - 0x1e, 0x65, 0x80, 0xba, 0xfb, 0x13, 0x4a, 0x2e, 0x02, 0x60, 0x21, 0x76, 0x53, 0xec, 0x02, 0x88, - 0xce, 0x4d, 0x99, 0x04, 0xd0, 0x47, 0x8f, 0xaf, 0x1b, 0x1b, 0xff, 0xb6, 0x02, 0x98, 0x4b, 0xd5, - 0x24, 0x3a, 0x70, 0x0b, 0x46, 0xa5, 0x7c, 0x9c, 0xb8, 0x64, 0xd0, 0x7b, 0x60, 0x2b, 0x24, 0xf2, - 0x3a, 0x9c, 0xf6, 0xe8, 0x37, 0x51, 0x23, 0xd5, 0x86, 0x49, 0x06, 0xde, 0x92, 0xed, 0xb0, 0x7e, - 0x09, 0x0d, 0xcb, 0x75, 0xcf, 0x7f, 0xf6, 0xb8, 0xed, 0x3c, 0xa1, 0xa9, 0x8a, 0x7f, 0x00, 0xa3, - 0xf5, 0xfe, 0x15, 0xf3, 0xcf, 0x47, 0x56, 0x6e, 0x2b, 0x12, 0xab, 0x0d, 0xf3, 0xac, 0x4b, 0xf5, - 0xea, 0xfa, 0xda, 0x6a, 0x6b, 0xeb, 0xdb, 0x1e, 0xc0, 0xa7, 0x70, 0x3e, 0xb3, 0xb6, 0x6f, 0x7b, - 0x10, 0xff, 0x70, 0x10, 0xe6, 0xf8, 0x61, 0x92, 0x5e, 0xc1, 0xc7, 0xdf, 0x6a, 0x7e, 0x21, 0xf7, - 0xbd, 0xb7, 0x33, 0xee, 0x7b, 0x91, 0x44, 0xbf, 0xef, 0x35, 0x6e, 0x79, 0xdf, 0xcb, 0xbe, 0xe5, - 0x45, 0x23, 0x94, 0x79, 0xcb, 0x9b, 0xbc, 0xdb, 0x5d, 0xce, 0xbf, 0xdb, 0xc5, 0x8b, 0xa7, 0x8c, - 0xbb, 0xdd, 0xac, 0x1b, 0xdd, 0x84, 0xa3, 0xd4, 0xe8, 0xab, 0x75, 0x94, 0x7a, 0x1d, 0x46, 0xaa, - 0x9d, 0x8e, 0xe6, 0x78, 0x88, 0xd3, 0xe3, 0x74, 0x3a, 0x7c, 0xf0, 0x64, 0xa1, 0xdc, 0xe7, 0x21, - 0x63, 0x9f, 0x7f, 0x1f, 0x60, 0x11, 0x9f, 0x47, 0xe0, 0xc4, 0x8d, 0x23, 0x06, 0x4a, 0xf8, 0xfc, - 0xd1, 0x04, 0x4e, 0x9c, 0x6e, 0x5e, 0x89, 0x91, 0xb9, 0x60, 0x6f, 0xed, 0x42, 0x39, 0xbd, 0x7c, - 0x5e, 0xc1, 0xd6, 0xf5, 0x07, 0x05, 0xb8, 0x28, 0x84, 0x9c, 0xc4, 0x07, 0x7e, 0xf2, 0xd5, 0xf9, - 0x0e, 0x4c, 0x08, 0xda, 0xed, 0xf8, 0x43, 0xe0, 0x17, 0xec, 0x72, 0x33, 0xe6, 0x3b, 0xba, 0x81, - 0x46, 0xde, 0x81, 0x51, 0xfc, 0x23, 0xbe, 0x18, 0x62, 0x23, 0x33, 0x86, 0xa8, 0x8d, 0xe4, 0xf5, - 0x90, 0x42, 0xb5, 0xbe, 0x86, 0x4b, 0x79, 0x0d, 0x7f, 0x05, 0xe3, 0xf2, 0x2f, 0x0b, 0x70, 0x5e, - 0xb0, 0x37, 0xb6, 0x8a, 0x17, 0x3a, 0x75, 0x4e, 0xe0, 0xae, 0x7c, 0x1f, 0xc6, 0x59, 0x85, 0xb2, - 0xdd, 0x03, 0xe2, 0x68, 0x15, 0x9a, 0x43, 0x5c, 0xb2, 0xe4, 0x44, 0x8e, 0x70, 0xbf, 0x71, 0x0e, - 0xda, 0xd2, 0x32, 0x62, 0xeb, 0xc4, 0xd6, 0x97, 0x70, 0x21, 0xbb, 0x0b, 0xaf, 0x60, 0x7c, 0xee, - 0xc3, 0x7c, 0xc6, 0xa1, 0xf0, 0x62, 0x67, 0xf2, 0x17, 0x70, 0x3e, 0x93, 0xd7, 0x2b, 0x68, 0xe6, - 0x0a, 0x93, 0x38, 0xa2, 0x57, 0x30, 0x85, 0xd6, 0x43, 0x38, 0x97, 0xc1, 0xe9, 0x15, 0x34, 0xf1, - 0x1e, 0xcc, 0x29, 0x49, 0xfb, 0xa5, 0x5a, 0xb8, 0x0e, 0x17, 0x39, 0xa3, 0x57, 0x33, 0x2b, 0x0f, - 0xe0, 0xbc, 0x60, 0xf7, 0x0a, 0x46, 0x6f, 0x05, 0x2e, 0xc4, 0x0a, 0x75, 0x86, 0x9c, 0x74, 0xec, - 0x4d, 0xc6, 0x5a, 0x83, 0xcb, 0x31, 0xa7, 0x1c, 0xa1, 0xe1, 0xf8, 0xdc, 0xb8, 0x38, 0x18, 0xcf, - 0xd2, 0x2b, 0x99, 0xd1, 0x87, 0x70, 0xd6, 0x60, 0xfa, 0xca, 0x44, 0xa5, 0x55, 0x98, 0xe6, 0x8c, - 0x4d, 0xd1, 0x79, 0x41, 0x17, 0x9d, 0xc7, 0x17, 0xce, 0xc4, 0x2c, 0x11, 0xbc, 0xfb, 0x56, 0x86, - 0x34, 0xbd, 0x8e, 0xd2, 0xb4, 0x44, 0x89, 0x5b, 0xf8, 0x0e, 0x0c, 0x73, 0x88, 0x68, 0x5f, 0x06, - 0x33, 0xae, 0x2c, 0x70, 0x32, 0x81, 0x6c, 0xfd, 0x10, 0x2e, 0x72, 0x4d, 0x34, 0xbe, 0xa8, 0x34, - 0xb5, 0xc5, 0x1f, 0x24, 0x14, 0xd1, 0x73, 0x82, 0x6f, 0x12, 0x3f, 0x47, 0x1f, 0x7d, 0x24, 0xd7, - 0x76, 0x1e, 0xff, 0x63, 0x3d, 0x5d, 0x93, 0x0a, 0x66, 0x31, 0x53, 0xc1, 0xbc, 0x0a, 0x57, 0x94, - 0x82, 0x99, 0xac, 0x46, 0x2e, 0x2d, 0xeb, 0x4b, 0x38, 0xcf, 0x3b, 0x2a, 0x5d, 0x0a, 0xcd, 0x66, - 0x7c, 0x98, 0xe8, 0xe6, 0x9c, 0xe8, 0xa6, 0x89, 0x9d, 0xd3, 0xc9, 0xff, 0xaf, 0x20, 0x3f, 0xb9, - 0x6c, 0xe6, 0xbf, 0x68, 0x8d, 0x7b, 0x03, 0x2a, 0x6a, 0x40, 0xcc, 0x16, 0xbd, 0x98, 0xba, 0xbd, - 0x0e, 0xb3, 0x3a, 0x1b, 0xb7, 0x49, 0x77, 0xef, 0xe0, 0x0d, 0xd2, 0xdb, 0xec, 0xb3, 0x40, 0x80, - 0x5c, 0x76, 0xe5, 0x8c, 0x71, 0x43, 0x7c, 0x5b, 0x61, 0x5a, 0x0d, 0xb8, 0x90, 0x9e, 0x0a, 0xb7, - 0x29, 0xdf, 0x13, 0x90, 0x4f, 0xd8, 0x27, 0x8c, 0x10, 0x31, 0x19, 0xb9, 0x4c, 0xe5, 0x77, 0xcc, - 0xc9, 0x25, 0x95, 0x65, 0xc9, 0xad, 0x26, 0xd1, 0x7f, 0x56, 0xbb, 0x5c, 0x0f, 0xbf, 0x0a, 0x44, - 0x16, 0x2d, 0xd6, 0x6d, 0x59, 0xf5, 0x39, 0x18, 0x58, 0xac, 0xdb, 0xe2, 0x21, 0x13, 0x4a, 0x82, - 0xcd, 0x30, 0xb0, 0x19, 0x2c, 0x29, 0x91, 0x17, 0x8f, 0x21, 0x91, 0xdf, 0x1f, 0x1c, 0x1d, 0x28, - 0x0d, 0xda, 0xa4, 0xee, 0xee, 0x79, 0x0f, 0xdd, 0x68, 0x5f, 0x55, 0x58, 0xb5, 0xbe, 0x82, 0x69, - 0xa3, 0x7a, 0xf1, 0x15, 0xf7, 0x7c, 0x81, 0xc5, 0xe4, 0xd9, 0xc5, 0x2a, 0xba, 0xd5, 0xa0, 0xc9, - 0x62, 0x82, 0xef, 0x37, 0x4d, 0xa7, 0x81, 0xcf, 0x7b, 0x6d, 0x59, 0x68, 0xfd, 0xc3, 0x41, 0x8d, - 0xbb, 0xf6, 0xae, 0xad, 0x47, 0xef, 0xee, 0x00, 0xf0, 0x15, 0xa2, 0x75, 0x8e, 0x09, 0x80, 0xe3, - 0xc2, 0x5b, 0x85, 0x6f, 0xc9, 0xb6, 0x86, 0x74, 0xdc, 0x77, 0x6f, 0xc2, 0xff, 0x98, 0x13, 0xc9, - 0xa7, 0x9e, 0xca, 0xff, 0x58, 0xb0, 0x0e, 0x6d, 0x1d, 0x89, 0xfc, 0x30, 0xf9, 0x38, 0x63, 0x08, - 0x2f, 0xac, 0x5e, 0x93, 0x37, 0xd8, 0xe9, 0xbe, 0x9d, 0xec, 0x7d, 0xc6, 0x33, 0x98, 0x65, 0xb4, - 0xee, 0x63, 0x54, 0x2c, 0x96, 0xbf, 0x89, 0xa8, 0xc7, 0xf7, 0xf6, 0x61, 0xac, 0xe7, 0x5a, 0x8f, - 0x7a, 0x62, 0x64, 0x61, 0x7f, 0x8f, 0xf9, 0x34, 0xa8, 0x2a, 0xb3, 0xb3, 0xf9, 0xe3, 0x22, 0xb2, - 0xd7, 0x96, 0xbd, 0x56, 0xc7, 0x77, 0x95, 0xc2, 0xc4, 0x17, 0x51, 0xd0, 0x6e, 0x50, 0x01, 0xb7, - 0x75, 0x24, 0xeb, 0xf5, 0x9e, 0x5e, 0xed, 0xa3, 0x30, 0xb8, 0xbd, 0xb8, 0xbd, 0x56, 0x2a, 0x58, - 0xb7, 0x00, 0xb4, 0x9a, 0x00, 0x86, 0x37, 0x36, 0xed, 0xf5, 0xea, 0x5a, 0xe9, 0x14, 0x99, 0x85, - 0x33, 0x0f, 0x57, 0x37, 0x96, 0x36, 0x1f, 0xd6, 0x1b, 0xf5, 0xf5, 0xaa, 0xbd, 0xbd, 0x58, 0xb5, - 0x97, 0x4a, 0x05, 0xeb, 0x6b, 0x98, 0x31, 0x7b, 0xf8, 0x4a, 0x17, 0x61, 0x04, 0xd3, 0x4a, 0x9e, - 0xb9, 0xff, 0x70, 0x5b, 0xf3, 0x68, 0x15, 0xca, 0x5f, 0xd2, 0x33, 0x4b, 0xa8, 0x89, 0xe2, 0x33, - 0xd2, 0x90, 0xc8, 0x1b, 0x5c, 0x2c, 0x48, 0xbe, 0x5c, 0x66, 0x62, 0x41, 0x23, 0x96, 0x0b, 0x70, - 0xeb, 0xfb, 0x3e, 0xcc, 0x98, 0xb5, 0x1e, 0xd7, 0x4a, 0xf5, 0x1a, 0xba, 0xfa, 0x6a, 0xcf, 0x9a, - 0x08, 0xd1, 0xaf, 0x0d, 0xc4, 0xce, 0xfa, 0x7d, 0x28, 0x09, 0xac, 0xf8, 0xe4, 0xbd, 0x2a, 0xcd, - 0x88, 0x85, 0x8c, 0x47, 0x98, 0xd2, 0x29, 0xdd, 0x87, 0x12, 0xdb, 0x31, 0x05, 0x25, 0xaf, 0x60, - 0x06, 0x86, 0xd6, 0xe2, 0xeb, 0x1c, 0x9b, 0xff, 0xc0, 0xd7, 0x3d, 0x91, 0x13, 0x44, 0xd2, 0x0f, - 0x6e, 0xcc, 0x56, 0xbf, 0xc9, 0x1b, 0x30, 0x7c, 0xd7, 0x6d, 0x47, 0xc2, 0x34, 0x12, 0x1f, 0xf2, - 0x8c, 0x2d, 0x2f, 0xb0, 0x05, 0x82, 0x65, 0xc3, 0x19, 0xad, 0xc2, 0x13, 0x34, 0x95, 0x94, 0x61, - 0x64, 0x83, 0x7e, 0xa3, 0xd5, 0x2f, 0x7f, 0x5a, 0xef, 0xc2, 0x19, 0xe1, 0x63, 0xa8, 0x0d, 0xd3, - 0x15, 0xf1, 0x56, 0xbc, 0x60, 0x3c, 0x58, 0x15, 0x2c, 0xb1, 0x88, 0xd1, 0xed, 0x74, 0x5a, 0x2f, - 0x48, 0xc7, 0x0e, 0x8a, 0x13, 0xd2, 0x7d, 0x47, 0xde, 0x02, 0xf5, 0x9b, 0xce, 0xff, 0xab, 0x08, - 0xe5, 0x84, 0x95, 0x61, 0x71, 0xdf, 0x69, 0xb7, 0xa9, 0xb7, 0x47, 0xc9, 0x75, 0x18, 0xdc, 0xde, - 0xdc, 0xde, 0x12, 0x56, 0x52, 0xe9, 0x5d, 0xc0, 0x40, 0x0a, 0xc7, 0x46, 0x0c, 0xf2, 0x00, 0xce, - 0x48, 0x2f, 0x62, 0x55, 0x24, 0x66, 0xe8, 0x62, 0x6f, 0x9f, 0xe4, 0x34, 0x1d, 0x79, 0x5b, 0x98, - 0x44, 0x7e, 0xdc, 0x75, 0x03, 0xda, 0x42, 0xcb, 0x4f, 0x7c, 0x55, 0xaf, 0x95, 0xd8, 0x3a, 0x1a, - 0xf9, 0x3e, 0x4c, 0xd4, 0xeb, 0x9b, 0x71, 0xed, 0x43, 0xc6, 0x0d, 0x91, 0x5e, 0x64, 0x1b, 0x88, - 0xfc, 0x49, 0xb0, 0xf5, 0x87, 0x05, 0x98, 0xcb, 0x31, 0xb7, 0x90, 0x37, 0x8c, 0x71, 0x98, 0xd6, - 0xc6, 0x41, 0xa2, 0xac, 0x9c, 0x12, 0x03, 0xb1, 0xa8, 0xf9, 0x64, 0x0f, 0x9c, 0xc0, 0x27, 0x7b, - 0xe5, 0x54, 0xec, 0x87, 0x4d, 0x5e, 0x87, 0x81, 0x7a, 0x7d, 0x53, 0x98, 0xd5, 0x49, 0xdc, 0x03, - 0x0d, 0x99, 0x21, 0xd4, 0x00, 0x46, 0x25, 0xc8, 0x3a, 0x0d, 0x93, 0xc6, 0xc4, 0x58, 0x16, 0x4c, - 0xe8, 0x2d, 0x64, 0xb3, 0xbf, 0xe8, 0xb7, 0xd4, 0xec, 0xb3, 0xbf, 0xad, 0x5f, 0x35, 0xc7, 0x8c, - 0x5c, 0x04, 0x90, 0xf7, 0xb5, 0x6e, 0x4b, 0xde, 0xfc, 0x08, 0xc8, 0x6a, 0x8b, 0x5c, 0x81, 0x89, - 0x80, 0xb6, 0xdc, 0x80, 0x36, 0xa3, 0x46, 0x37, 0x10, 0x0f, 0x63, 0xec, 0x71, 0x09, 0xdb, 0x09, - 0xda, 0xe4, 0xbb, 0x30, 0xcc, 0x2f, 0x92, 0x45, 0xef, 0xa5, 0x92, 0x50, 0xaf, 0x6f, 0xae, 0xdf, - 0xad, 0xf2, 0x8b, 0x6e, 0x5b, 0xa0, 0x58, 0x35, 0x18, 0xd7, 0x7a, 0xd5, 0xaf, 0xf6, 0x19, 0x18, - 0xd2, 0xad, 0x94, 0xfc, 0x87, 0xf5, 0x3b, 0x05, 0x98, 0xc1, 0x65, 0xb0, 0xe7, 0xb2, 0xe3, 0x21, - 0xee, 0xcb, 0x82, 0x31, 0x69, 0x17, 0x8c, 0x49, 0x4b, 0xe0, 0xaa, 0xd9, 0xfb, 0x20, 0x35, 0x7b, - 0x17, 0xb2, 0x66, 0x0f, 0xb7, 0x00, 0xd7, 0xf7, 0xf4, 0x49, 0xd3, 0xaf, 0xeb, 0x7e, 0xb7, 0x00, - 0xd3, 0x5a, 0x9b, 0x54, 0x07, 0xef, 0x18, 0x4d, 0x3a, 0x9f, 0xd1, 0xa4, 0xd4, 0x7a, 0xaa, 0xa5, - 0x5a, 0xf4, 0x5a, 0xaf, 0x16, 0x65, 0x2d, 0x27, 0x63, 0x99, 0xfc, 0x45, 0x01, 0x66, 0x33, 0xc7, - 0x80, 0x9c, 0x65, 0xf2, 0x7f, 0x33, 0xa0, 0x91, 0x18, 0x79, 0xf1, 0x8b, 0xc1, 0x57, 0xc3, 0xb0, - 0x4b, 0x03, 0x31, 0xee, 0xe2, 0x17, 0x79, 0x0d, 0x26, 0xb7, 0x68, 0xe0, 0xfa, 0x2d, 0xfe, 0x30, - 0x81, 0x7b, 0xfc, 0x4e, 0xda, 0x26, 0x90, 0x5c, 0x80, 0x31, 0xe5, 0xb1, 0xca, 0x6d, 0xb8, 0x76, - 0x0c, 0x60, 0xbc, 0x97, 0xdc, 0x3d, 0x7e, 0xf1, 0xc3, 0x88, 0xc5, 0x2f, 0xb6, 0x01, 0x4b, 0x8b, - 0xea, 0x30, 0xdf, 0x80, 0xa5, 0xb9, 0xf4, 0x2c, 0x0c, 0x7f, 0x66, 0xe3, 0x3a, 0xc6, 0x98, 0x13, - 0xb6, 0xf8, 0x45, 0xa6, 0xd0, 0xb5, 0x1c, 0xdf, 0xc5, 0xa0, 0x4b, 0xf9, 0x07, 0x30, 0x93, 0x35, - 0xae, 0x59, 0x5f, 0x81, 0xa0, 0x2d, 0x2a, 0xda, 0x2f, 0x61, 0xba, 0xda, 0x6a, 0xc5, 0xcb, 0x95, - 0xcf, 0x2a, 0xdf, 0x27, 0xb8, 0x4d, 0x53, 0x88, 0xb5, 0x83, 0xab, 0x9e, 0x1b, 0xd9, 0xd3, 0xcb, - 0xdf, 0xb8, 0x61, 0xe4, 0x7a, 0x7b, 0x9a, 0xe1, 0xd5, 0x3e, 0xbb, 0x41, 0x9f, 0x65, 0x2c, 0x01, - 0x26, 0x71, 0x98, 0xbc, 0x39, 0x3c, 0x83, 0xf9, 0x8c, 0xc6, 0x36, 0xde, 0xba, 0xe6, 0x4c, 0xbe, - 0x71, 0xc1, 0x40, 0xb5, 0xf9, 0xc4, 0xfa, 0x3e, 0x9c, 0xe5, 0xdb, 0x7e, 0xaf, 0xc6, 0x8b, 0x66, - 0xeb, 0x76, 0x62, 0xeb, 0x3d, 0x69, 0xc9, 0xe9, 0xd9, 0x32, 0x7b, 0xc2, 0x68, 0x0b, 0x56, 0xf9, - 0x9f, 0x0b, 0x30, 0x9f, 0x20, 0xad, 0x3f, 0xf7, 0x9a, 0xf2, 0xcc, 0x79, 0x3d, 0xe9, 0xba, 0x8f, - 0xb2, 0x12, 0x37, 0x90, 0xba, 0x2d, 0xe5, 0xbd, 0x4f, 0x6e, 0x01, 0x70, 0x62, 0x4d, 0xc4, 0xc1, - 0xeb, 0x01, 0xe1, 0xe5, 0x84, 0x42, 0x8e, 0x86, 0x42, 0xba, 0x90, 0x35, 0xee, 0xe2, 0x1b, 0xe9, - 0x67, 0x3f, 0xc7, 0x38, 0x2b, 0x54, 0x90, 0x37, 0x72, 0x0c, 0xe9, 0x59, 0xfc, 0xad, 0xff, 0x7f, - 0x00, 0xe6, 0xf4, 0x09, 0x7c, 0x91, 0xbe, 0x6e, 0xc1, 0xf8, 0xa2, 0xef, 0x45, 0xf4, 0x9b, 0x48, - 0x8b, 0x73, 0x41, 0x94, 0x37, 0x82, 0x2a, 0x11, 0xe2, 0x35, 0x07, 0x34, 0x98, 0xac, 0x67, 0x78, - 0x6b, 0xc6, 0x88, 0x64, 0x11, 0x26, 0x37, 0xe8, 0xb3, 0xd4, 0x00, 0xa2, 0xc7, 0xa8, 0x47, 0x9f, - 0x35, 0xb4, 0x41, 0xd4, 0xdd, 0xf8, 0x0c, 0x1a, 0xf2, 0x08, 0xa6, 0xe4, 0xe2, 0x32, 0x06, 0x73, - 0x5e, 0x3f, 0x79, 0xcd, 0xe5, 0xcc, 0xe3, 0x40, 0xb0, 0x1a, 0x72, 0xc6, 0x30, 0xc1, 0x91, 0x75, - 0x9d, 0xd7, 0xc8, 0x43, 0x1b, 0x98, 0x47, 0xbb, 0x56, 0x62, 0xf8, 0xe3, 0x26, 0x43, 0x1a, 0xe8, - 0x2c, 0xac, 0x2d, 0x28, 0xa7, 0xe7, 0x43, 0xd4, 0xf6, 0x36, 0x0c, 0x73, 0xa8, 0x10, 0x95, 0x64, - 0x08, 0x23, 0x85, 0xcd, 0x6d, 0x19, 0x2d, 0x71, 0x2a, 0x71, 0x98, 0xb5, 0x82, 0xf6, 0x25, 0x85, - 0xa3, 0x84, 0xd5, 0xdb, 0xc9, 0xe9, 0x45, 0x57, 0x67, 0x39, 0xbd, 0xba, 0x2f, 0x8e, 0x7c, 0x92, - 0xb2, 0x88, 0x26, 0x3a, 0x9d, 0x93, 0x68, 0xd8, 0x0d, 0x18, 0x11, 0xa0, 0x44, 0x70, 0xa5, 0xf8, - 0xf3, 0x93, 0x08, 0xd6, 0x07, 0x70, 0x0e, 0xed, 0x85, 0xae, 0xb7, 0xd7, 0xa6, 0x3b, 0xa1, 0xf1, - 0xa8, 0xa4, 0xdf, 0x67, 0xfd, 0x11, 0xcc, 0x67, 0xd1, 0xf6, 0xfd, 0xb2, 0x79, 0xb8, 0x93, 0x3f, - 0x2b, 0xc2, 0xcc, 0x6a, 0xa8, 0x0b, 0x5c, 0x2a, 0xe4, 0x49, 0x46, 0x18, 0x0e, 0x1c, 0x93, 0x95, - 0x53, 0x59, 0x61, 0x36, 0xde, 0xd6, 0x9e, 0xbb, 0x16, 0x7b, 0xc5, 0xd7, 0x60, 0xc7, 0x96, 0x7a, - 0xf0, 0xfa, 0x3a, 0x0c, 0x6e, 0xb0, 0xad, 0x7a, 0x40, 0xcc, 0x1d, 0xa7, 0x60, 0x20, 0x7c, 0x6e, - 0xca, 0x8e, 0x48, 0xf6, 0x83, 0xdc, 0x4d, 0x3d, 0x6a, 0x1d, 0xec, 0x1f, 0x3f, 0x62, 0xe5, 0x54, - 0xea, 0x7d, 0xeb, 0xbb, 0x30, 0x5e, 0x6d, 0x1d, 0x70, 0x97, 0x4c, 0xdf, 0x4b, 0x7c, 0x96, 0x5a, - 0xc9, 0xca, 0x29, 0x5b, 0x47, 0x24, 0xd7, 0xf8, 0xab, 0x86, 0xe1, 0x9c, 0x98, 0x1a, 0x4c, 0x58, - 0xab, 0x76, 0x3a, 0xb5, 0x51, 0x18, 0xe6, 0x0f, 0x2d, 0xad, 0x2f, 0x61, 0x5e, 0x38, 0xf2, 0x70, - 0xeb, 0x28, 0xba, 0xfb, 0x84, 0xb1, 0xaf, 0x56, 0x2f, 0xe7, 0x9b, 0x4b, 0x00, 0xa8, 0x0b, 0xad, - 0x7a, 0x2d, 0xfa, 0x8d, 0xf0, 0x24, 0xd4, 0x20, 0xd6, 0x3b, 0x30, 0xa6, 0x46, 0x08, 0x05, 0x7e, - 0xed, 0xb0, 0xc3, 0xd1, 0x9a, 0x31, 0x5e, 0xf1, 0xca, 0xa7, 0xbb, 0xe7, 0x8c, 0xbe, 0x8b, 0x28, - 0x39, 0x5c, 0x43, 0x70, 0x61, 0x36, 0xb1, 0x08, 0xe2, 0x20, 0x0c, 0x4a, 0x46, 0xe7, 0xae, 0x8e, - 0xea, 0x77, 0x52, 0x84, 0x2f, 0x1e, 0x4b, 0x84, 0xb7, 0xfe, 0x49, 0x11, 0x95, 0xcb, 0xd4, 0x78, - 0x24, 0xec, 0x74, 0xba, 0xad, 0xb0, 0x06, 0x63, 0xd8, 0xfb, 0x25, 0xf9, 0x60, 0xb0, 0xb7, 0x1f, - 0xca, 0xe8, 0x4f, 0x0f, 0x2b, 0xa7, 0xd0, 0xf9, 0x24, 0x26, 0x23, 0x1f, 0xc3, 0xc8, 0xb2, 0xd7, - 0x42, 0x0e, 0x03, 0x27, 0xe0, 0x20, 0x89, 0xd8, 0x9c, 0x60, 0x93, 0xb7, 0xd9, 0x27, 0xcc, 0xcd, - 0x3b, 0xb6, 0x06, 0x89, 0xb5, 0xdc, 0xa1, 0x3c, 0x2d, 0x77, 0x38, 0xa1, 0xe5, 0x5a, 0x30, 0xb4, - 0x19, 0xb4, 0x44, 0x6c, 0x9b, 0xa9, 0x85, 0x09, 0x31, 0x70, 0x08, 0xb3, 0x79, 0x91, 0xf5, 0x5f, - 0x0b, 0x30, 0x77, 0x8f, 0x46, 0x99, 0x6b, 0xc8, 0x18, 0x95, 0xc2, 0x4b, 0x8f, 0x4a, 0xf1, 0x45, - 0x46, 0x45, 0xf5, 0x7a, 0x20, 0xaf, 0xd7, 0x83, 0x79, 0xbd, 0x1e, 0xca, 0xef, 0xf5, 0x3d, 0x18, - 0xe6, 0x5d, 0x65, 0x9a, 0xfc, 0x6a, 0x44, 0x0f, 0x62, 0x4d, 0x5e, 0xf7, 0xa2, 0xb3, 0x79, 0x19, - 0x13, 0x24, 0xd7, 0x9c, 0x50, 0xd7, 0xe4, 0xc5, 0x4f, 0xeb, 0x47, 0xf8, 0xd4, 0x78, 0xcd, 0x6f, - 0x3e, 0xd1, 0x2c, 0xc2, 0x23, 0xfc, 0x0b, 0x4d, 0xde, 0x20, 0x30, 0x2c, 0x5e, 0x62, 0x4b, 0x0c, - 0x72, 0x19, 0xc6, 0x57, 0xbd, 0xbb, 0x7e, 0xd0, 0xa4, 0x9b, 0x5e, 0x9b, 0x73, 0x1f, 0xb5, 0x75, - 0x90, 0xb0, 0x94, 0x88, 0x1a, 0x62, 0xf3, 0x03, 0x02, 0x12, 0xe6, 0x07, 0x06, 0xdb, 0x5d, 0xb0, - 0x79, 0x99, 0x30, 0xc4, 0xb0, 0xbf, 0x7b, 0x69, 0xee, 0x4a, 0xc5, 0xef, 0x87, 0xf8, 0x08, 0xce, - 0xd9, 0xb4, 0xd3, 0x76, 0x98, 0x4c, 0x77, 0xe0, 0x73, 0x7c, 0xd5, 0xe7, 0xcb, 0x19, 0xcf, 0x04, - 0x4d, 0x9f, 0x0a, 0xd5, 0xe4, 0x62, 0x8f, 0x26, 0x1f, 0xc0, 0x95, 0x7b, 0x34, 0x32, 0x37, 0xd4, - 0xd8, 0xde, 0x2c, 0x3a, 0xbf, 0x02, 0xa3, 0xa1, 0x69, 0x2b, 0x97, 0xcf, 0xde, 0x32, 0x09, 0x77, - 0xdf, 0x92, 0xb7, 0x49, 0x82, 0x8f, 0xfa, 0xcb, 0xfa, 0x04, 0x2a, 0x79, 0xd5, 0x1d, 0xcf, 0xe5, - 0xd5, 0x85, 0xcb, 0xf9, 0x0c, 0x44, 0x73, 0x97, 0x41, 0xda, 0xd5, 0xc5, 0x27, 0xd4, 0xaf, 0xb5, - 0xa6, 0x29, 0x5e, 0xfc, 0x61, 0xd5, 0xa4, 0xf3, 0xdf, 0x4b, 0x34, 0xb7, 0x81, 0x57, 0xd6, 0x26, - 0x83, 0x78, 0x5c, 0xab, 0x30, 0x2a, 0x61, 0x62, 0x5c, 0xe7, 0x32, 0x5b, 0x2a, 0x07, 0xb4, 0x25, - 0x19, 0x28, 0x32, 0xeb, 0x47, 0xf2, 0xfa, 0xc6, 0xa4, 0x38, 0xde, 0xbb, 0xd9, 0xe3, 0xdc, 0xd7, - 0x58, 0x3e, 0x9c, 0x33, 0x79, 0xeb, 0x66, 0xf9, 0x92, 0x66, 0x96, 0xe7, 0xd6, 0xf8, 0xcb, 0xa6, - 0x99, 0x58, 0x58, 0x1a, 0x34, 0x10, 0xb9, 0xa4, 0x1b, 0xdf, 0x27, 0xd2, 0x0f, 0x71, 0x6f, 0xc3, - 0x7c, 0x56, 0x85, 0x9a, 0x1e, 0xa8, 0x2c, 0xbc, 0x42, 0xde, 0x59, 0x82, 0x4b, 0x32, 0xba, 0x94, - 0xef, 0x47, 0x61, 0x14, 0x38, 0x9d, 0x7a, 0x33, 0x70, 0x3b, 0x31, 0x95, 0x05, 0xc3, 0x1c, 0x22, - 0x46, 0x82, 0x5f, 0x85, 0x71, 0x1c, 0x51, 0x62, 0xfd, 0x7a, 0x01, 0x2c, 0xc3, 0x4f, 0x0b, 0xe7, - 0x79, 0x2b, 0xf0, 0x9f, 0xba, 0x2d, 0xed, 0xfa, 0xe9, 0x0d, 0xc3, 0xf4, 0xc9, 0xdf, 0x24, 0x26, - 0x5d, 0xc4, 0xc5, 0x9e, 0x79, 0x3b, 0x61, 0x8e, 0xe4, 0x82, 0x27, 0xfa, 0x6e, 0x99, 0x0f, 0x22, - 0x94, 0x99, 0xf2, 0xbf, 0x17, 0xe0, 0x6a, 0xcf, 0x36, 0x88, 0xfe, 0x3c, 0x82, 0x52, 0xb2, 0x4c, - 0xac, 0xa0, 0x8a, 0xe6, 0xb7, 0x91, 0xe6, 0xb0, 0x7b, 0x87, 0xfb, 0xa1, 0x4b, 0xff, 0xa6, 0x8e, - 0xe2, 0x9c, 0xe2, 0x77, 0xf2, 0xd6, 0x63, 0xfc, 0x0a, 0x3f, 0x72, 0xda, 0x8b, 0x68, 0x00, 0x18, - 0x88, 0xdf, 0x14, 0x44, 0x0c, 0xda, 0x48, 0x86, 0xc9, 0xd0, 0x90, 0xad, 0x4f, 0xf1, 0xbb, 0xce, - 0x6e, 0xf4, 0xf1, 0x3e, 0xb5, 0x45, 0xb8, 0x9a, 0xf0, 0x1d, 0x78, 0x01, 0x26, 0x11, 0xcc, 0xb2, - 0xe1, 0x67, 0xb2, 0xf7, 0xbd, 0xc0, 0xef, 0x76, 0x7e, 0x31, 0xb3, 0xfe, 0x47, 0x05, 0xee, 0xcc, - 0xa9, 0x57, 0x2b, 0x26, 0x7a, 0x11, 0x20, 0x86, 0x26, 0x9c, 0xfa, 0x55, 0xc1, 0xee, 0x1d, 0xae, - 0x72, 0xe3, 0xad, 0xc2, 0x1e, 0x67, 0xa0, 0x91, 0xfd, 0x62, 0x67, 0xf2, 0x2d, 0x74, 0x18, 0x50, - 0xb5, 0x1f, 0x6f, 0xdc, 0xdf, 0x95, 0xf6, 0x8f, 0x13, 0xd2, 0xed, 0xc3, 0x0c, 0xdb, 0x01, 0xaa, - 0xdd, 0x68, 0xdf, 0x0f, 0xdc, 0x48, 0x3e, 0x4f, 0x21, 0x5b, 0x22, 0x22, 0x00, 0xa7, 0xfa, 0xe8, - 0xe7, 0x87, 0x95, 0xf7, 0x4e, 0x12, 0xf7, 0x53, 0xf2, 0xdc, 0x56, 0x51, 0x04, 0xac, 0x39, 0x18, - 0x58, 0xb4, 0xd7, 0x70, 0xc3, 0xb3, 0xd7, 0xd4, 0x86, 0x67, 0xaf, 0x59, 0x7f, 0x59, 0x84, 0x0a, - 0x8f, 0x59, 0x82, 0x7e, 0x26, 0xb1, 0xd5, 0x42, 0x73, 0x5c, 0x39, 0xae, 0x81, 0x21, 0x11, 0x93, - 0xa4, 0x78, 0x9c, 0x98, 0x24, 0xbf, 0x02, 0x39, 0x26, 0xab, 0x63, 0x58, 0x01, 0xbe, 0x73, 0x74, - 0x58, 0xb9, 0x1a, 0x5b, 0x01, 0x78, 0x69, 0x96, 0x39, 0x20, 0xa7, 0x8a, 0xb4, 0xfd, 0x62, 0xf0, - 0x05, 0xec, 0x17, 0xb7, 0x61, 0x04, 0x95, 0x99, 0xd5, 0x2d, 0xe1, 0xf9, 0x89, 0xcb, 0x13, 0x23, - 0x14, 0x35, 0x5c, 0x3d, 0x1c, 0xa0, 0x44, 0xb3, 0xfe, 0x76, 0x11, 0x2e, 0xe7, 0x8f, 0xb9, 0x68, - 0xdb, 0x12, 0x40, 0xec, 0xe1, 0xd2, 0xcb, 0xa3, 0x06, 0xbf, 0x9d, 0x67, 0xf4, 0x91, 0xf2, 0x68, - 0xd3, 0xe8, 0x98, 0xec, 0x23, 0x5f, 0x5a, 0x27, 0xae, 0x53, 0x8c, 0x07, 0xd8, 0x22, 0x9a, 0xad, - 0x00, 0x19, 0xd1, 0x6c, 0x05, 0x8c, 0x3c, 0x82, 0xb9, 0xad, 0xc0, 0x7d, 0xea, 0x44, 0xf4, 0x01, - 0x7d, 0xce, 0x1f, 0x0b, 0x2d, 0x8b, 0x17, 0x42, 0xfc, 0xf9, 0xfc, 0xf5, 0xa3, 0xc3, 0xca, 0x6b, - 0x1d, 0x8e, 0x82, 0x11, 0xcb, 0xf8, 0xdb, 0xcf, 0x46, 0xfa, 0xd1, 0x50, 0x1e, 0x23, 0xeb, 0x5f, - 0x17, 0xe0, 0x3c, 0x8a, 0xe5, 0xc2, 0xec, 0x2a, 0x2b, 0x7f, 0x21, 0xc7, 0x4a, 0xbd, 0x83, 0x62, - 0x2d, 0xa2, 0x63, 0xa5, 0xf1, 0x12, 0xdd, 0x36, 0xd0, 0xc8, 0x2a, 0x8c, 0x8b, 0xdf, 0xf8, 0xfd, - 0x0d, 0xa0, 0x42, 0x30, 0xab, 0x6d, 0x58, 0xb8, 0xd4, 0xb9, 0xa9, 0x08, 0x17, 0xb6, 0x60, 0x86, - 0x0f, 0x36, 0x6d, 0x9d, 0xd6, 0xfa, 0x59, 0x11, 0x2e, 0xec, 0xd2, 0xc0, 0x7d, 0xfc, 0x3c, 0xa7, - 0x33, 0x9b, 0x30, 0x23, 0x41, 0x3c, 0x6e, 0x89, 0xf1, 0x89, 0xf1, 0x78, 0x96, 0xb2, 0xa9, 0x22, - 0xf0, 0x89, 0xfc, 0xe2, 0x32, 0x09, 0x4f, 0xe0, 0x32, 0xf9, 0x36, 0x8c, 0x26, 0x22, 0x07, 0xe1, - 0xfc, 0xcb, 0x2f, 0x34, 0x9e, 0xaa, 0x95, 0x53, 0xb6, 0xc2, 0x24, 0xbf, 0x99, 0x7f, 0x55, 0x25, - 0x4c, 0x1f, 0xfd, 0xec, 0x9f, 0xf8, 0xc1, 0xb2, 0x8f, 0xd5, 0xd1, 0x4a, 0x33, 0x3e, 0xd8, 0x95, - 0x53, 0x76, 0x5e, 0x4d, 0xb5, 0x71, 0x18, 0xab, 0xe2, 0xbd, 0x1d, 0xd3, 0xdc, 0xff, 0x5b, 0x11, - 0x2e, 0xc9, 0x87, 0x3f, 0x39, 0xc3, 0xfc, 0x39, 0xcc, 0x49, 0x50, 0xb5, 0xc3, 0x04, 0x06, 0xda, - 0x32, 0x47, 0x9a, 0xc7, 0x94, 0x95, 0x23, 0xed, 0x08, 0x9c, 0x78, 0xb0, 0xf3, 0xc8, 0x5f, 0x8d, - 0xf5, 0xf3, 0xe3, 0xac, 0x38, 0x4e, 0x68, 0x85, 0xd4, 0xf7, 0x4c, 0x63, 0x68, 0x8c, 0xfd, 0xb3, - 0x95, 0xb2, 0x9e, 0x0e, 0xbe, 0xac, 0xf5, 0x74, 0xe5, 0x54, 0xd2, 0x7e, 0x5a, 0x9b, 0x82, 0x89, - 0x0d, 0xfa, 0x2c, 0x1e, 0xf7, 0xff, 0xb3, 0x90, 0x08, 0xf5, 0xc0, 0x24, 0x0c, 0x1e, 0xf3, 0xa1, - 0x10, 0x87, 0x02, 0xc2, 0x50, 0x0f, 0xba, 0x84, 0xc1, 0x51, 0x57, 0x61, 0x84, 0x5f, 0x66, 0xb7, - 0x8e, 0xa1, 0xe1, 0xab, 0x17, 0x3c, 0xfc, 0x59, 0x65, 0x8b, 0x2b, 0xfb, 0x82, 0xde, 0x7a, 0x00, - 0x57, 0x84, 0x8f, 0xb7, 0x39, 0xf9, 0x58, 0xd1, 0x09, 0x8f, 0x2f, 0xcb, 0x81, 0x4b, 0xf7, 0x68, - 0x72, 0xeb, 0x31, 0x5e, 0x38, 0x7d, 0x02, 0xa7, 0x0d, 0xb8, 0xe2, 0x88, 0x52, 0xa9, 0x5a, 0x43, - 0x8a, 0x75, 0x12, 0xdb, 0xba, 0x9c, 0x55, 0x85, 0xde, 0x58, 0x8b, 0x62, 0x70, 0xd8, 0x20, 0xbe, - 0x62, 0x0b, 0x4f, 0xb0, 0xeb, 0x5d, 0xd7, 0xbe, 0x6b, 0xbe, 0xe3, 0xf1, 0xe8, 0x81, 0xf2, 0xe4, - 0x55, 0xa5, 0xd6, 0xa4, 0x71, 0x17, 0x60, 0x4d, 0xc1, 0x84, 0x2c, 0x6a, 0xd3, 0x30, 0xb4, 0xfe, - 0xc3, 0x10, 0x58, 0x62, 0x60, 0xb3, 0x6e, 0xe8, 0xe5, 0x78, 0x3c, 0x4a, 0x35, 0x56, 0x1c, 0x54, - 0x67, 0xf5, 0x98, 0xa4, 0x71, 0x29, 0x5f, 0x79, 0x28, 0xe7, 0x35, 0x63, 0xa8, 0xb1, 0xf2, 0x52, - 0xbd, 0xff, 0x2a, 0x67, 0x9b, 0xe4, 0x1f, 0x1b, 0x3e, 0xd9, 0xce, 0xd9, 0x26, 0x0d, 0xbe, 0xd9, - 0x5b, 0xa6, 0x6d, 0x5e, 0x89, 0x0c, 0xbc, 0xc8, 0x95, 0x08, 0xfb, 0x22, 0xf5, 0x4b, 0x91, 0x1d, - 0x73, 0x2c, 0xc5, 0xf7, 0x28, 0x6f, 0xef, 0xf5, 0x22, 0x11, 0x71, 0x41, 0x83, 0x18, 0x5c, 0x0d, - 0x36, 0xc4, 0x85, 0x92, 0x66, 0xb3, 0x5c, 0xdc, 0xa7, 0xcd, 0x27, 0xc2, 0x56, 0x2c, 0x2f, 0x74, - 0xb3, 0x6c, 0xe6, 0x3c, 0x3e, 0x35, 0xff, 0xce, 0x79, 0x41, 0xa3, 0xc9, 0x48, 0xf5, 0x88, 0x11, - 0x49, 0xb6, 0xe4, 0x27, 0x30, 0xad, 0xa6, 0x3a, 0xe1, 0xa2, 0x35, 0xbe, 0xf0, 0x5a, 0x1c, 0xca, - 0xf4, 0xe0, 0xb1, 0x73, 0xf3, 0xe9, 0x9d, 0x9b, 0x19, 0xb8, 0x3c, 0x10, 0x41, 0x53, 0x16, 0x68, - 0xfe, 0x59, 0xfa, 0x45, 0x57, 0x06, 0x21, 0xf9, 0x02, 0x66, 0xea, 0xf5, 0x4d, 0xfe, 0x98, 0xc3, - 0x96, 0x17, 0xfc, 0xf6, 0x9a, 0x70, 0xd8, 0xc2, 0xe9, 0x0e, 0x43, 0xbf, 0x21, 0x1e, 0x81, 0xe8, - 0x6e, 0x01, 0x7a, 0x28, 0x86, 0x2c, 0x16, 0xfa, 0x4d, 0xf9, 0xdf, 0x54, 0x6f, 0x15, 0x98, 0x28, - 0xe2, 0xb6, 0xa9, 0x78, 0x74, 0x24, 0x17, 0x76, 0xce, 0x2d, 0x5f, 0xe1, 0x5b, 0xbe, 0xe5, 0xfb, - 0xfd, 0xa2, 0x7c, 0xa1, 0x91, 0xbe, 0x68, 0x3d, 0xf1, 0x65, 0x5f, 0x66, 0x0f, 0x8e, 0x75, 0x4e, - 0x67, 0x36, 0x8e, 0xd4, 0xe4, 0x55, 0xa9, 0x0a, 0x56, 0x36, 0xa5, 0xae, 0x1d, 0xe2, 0x02, 0xe3, - 0xf6, 0x14, 0xa5, 0x22, 0x8d, 0x2a, 0x79, 0x0f, 0x37, 0xf0, 0xf2, 0xf7, 0x70, 0xff, 0x7c, 0x0c, - 0xce, 0x6c, 0x39, 0x7b, 0xae, 0xc7, 0xce, 0x03, 0x9b, 0x86, 0x7e, 0x37, 0x68, 0x52, 0x52, 0x85, - 0x29, 0xd3, 0xfd, 0xb6, 0x8f, 0x73, 0x31, 0x3b, 0xf2, 0x4c, 0x18, 0x59, 0x80, 0x31, 0xf5, 0xe4, - 0x57, 0x9c, 0x53, 0x19, 0x4f, 0x81, 0x57, 0x4e, 0xd9, 0x31, 0x1a, 0x79, 0xdf, 0xb8, 0x3a, 0x3a, - 0xad, 0x5e, 0xaf, 0x23, 0xee, 0x02, 0xf7, 0x8f, 0xf4, 0xfc, 0x96, 0x79, 0xd6, 0xf2, 0xfb, 0x91, - 0x1f, 0xa5, 0x6e, 0x93, 0x86, 0x8c, 0x16, 0xa7, 0x4c, 0x6a, 0x28, 0x66, 0xe4, 0xc6, 0x1e, 0xcf, - 0xb8, 0x67, 0xfa, 0x12, 0xc6, 0x1f, 0x74, 0x1f, 0x51, 0x79, 0x6f, 0x36, 0x2c, 0x8e, 0xde, 0xa4, - 0x53, 0xb9, 0x28, 0xdf, 0x7d, 0x8b, 0xcf, 0xc1, 0x93, 0xee, 0x23, 0x9a, 0x0e, 0x6a, 0xcf, 0xf6, - 0x3c, 0x8d, 0x19, 0xd9, 0x87, 0x52, 0xd2, 0xff, 0x5b, 0x84, 0xf7, 0xeb, 0xe1, 0xb5, 0x8e, 0x61, - 0x5a, 0xb4, 0xd0, 0xf9, 0xdc, 0x2b, 0xd5, 0xa8, 0x24, 0xc5, 0x95, 0xfc, 0x2a, 0xcc, 0x66, 0x1a, - 0x34, 0xd5, 0x0b, 0xb6, 0xde, 0xb6, 0x52, 0xdc, 0x40, 0x12, 0xa3, 0x26, 0x9f, 0xcb, 0x19, 0x35, - 0x67, 0xd7, 0x42, 0x5a, 0x70, 0x3a, 0xe1, 0xd7, 0x2c, 0xf2, 0x83, 0xe4, 0x7b, 0x4a, 0xe3, 0x99, - 0x27, 0x43, 0xec, 0x66, 0xd6, 0x95, 0x64, 0x49, 0xd6, 0x60, 0x4c, 0x59, 0x12, 0x44, 0x64, 0xb5, - 0x2c, 0xab, 0x49, 0xf9, 0xe8, 0xb0, 0x32, 0x13, 0x5b, 0x4d, 0x0c, 0x9e, 0x31, 0x03, 0xf2, 0x6b, - 0x70, 0x45, 0x2d, 0xd1, 0xcd, 0x20, 0xdb, 0xbe, 0x24, 0x42, 0xf3, 0xdf, 0x48, 0xae, 0xf0, 0x3c, - 0xfc, 0xdd, 0x3b, 0xb5, 0x62, 0xb9, 0xb0, 0x72, 0xca, 0xee, 0xcf, 0x9a, 0xfc, 0x46, 0x01, 0xce, - 0xe6, 0xd4, 0x3a, 0x81, 0xb5, 0xf6, 0x35, 0xfa, 0xa1, 0xde, 0x80, 0xaf, 0xb6, 0xdc, 0x56, 0xfc, - 0xba, 0x51, 0x5a, 0xff, 0x8c, 0x7e, 0xe7, 0xd4, 0x44, 0xde, 0x84, 0x61, 0x54, 0xbf, 0xc3, 0xf2, - 0x24, 0x0a, 0xa8, 0x18, 0x9d, 0x08, 0x95, 0x74, 0xfd, 0x48, 0x12, 0x38, 0x64, 0x85, 0x09, 0x7a, - 0x78, 0x24, 0x4a, 0xc1, 0x4c, 0xc4, 0x32, 0x13, 0xca, 0x02, 0x2f, 0x92, 0x41, 0x46, 0x8c, 0x1c, - 0x0c, 0x26, 0x59, 0x0d, 0x60, 0x34, 0x10, 0xbb, 0xd2, 0xfd, 0xc1, 0xd1, 0xc1, 0xd2, 0x10, 0xff, - 0x70, 0xa4, 0xc3, 0xfc, 0x6f, 0x8d, 0xf2, 0xd7, 0xb5, 0x3b, 0x9e, 0xfb, 0xd8, 0x8d, 0x37, 0x30, - 0xdd, 0x70, 0x17, 0x27, 0x43, 0x12, 0x62, 0x75, 0x4e, 0xda, 0x23, 0x65, 0xe3, 0x2b, 0xf6, 0xb5, - 0xf1, 0xbd, 0xa5, 0xdd, 0x86, 0x69, 0x31, 0x4b, 0xb9, 0xf8, 0x64, 0xda, 0xd4, 0xe2, 0x6b, 0xb2, - 0xaf, 0x61, 0x18, 0xc3, 0x8c, 0xf2, 0xab, 0xc6, 0xf1, 0x85, 0x9b, 0x62, 0xdb, 0xee, 0xd1, 0x7c, - 0x1e, 0x97, 0x54, 0xbc, 0x98, 0xe7, 0x23, 0x8e, 0x00, 0x63, 0xc4, 0x11, 0x42, 0xb6, 0x61, 0x7a, - 0x8b, 0x9d, 0xe6, 0xdc, 0x6d, 0xbb, 0x13, 0x08, 0xbb, 0x07, 0xb7, 0xa8, 0xa0, 0x34, 0xd1, 0x91, - 0xc5, 0x0d, 0xaa, 0xca, 0xf5, 0x03, 0x35, 0x83, 0x9c, 0x2c, 0xc3, 0x54, 0x9d, 0x3a, 0x41, 0x73, - 0xff, 0x01, 0x7d, 0xce, 0x24, 0x29, 0x23, 0xff, 0x47, 0x88, 0x25, 0xac, 0xbf, 0x58, 0xa4, 0xbb, - 0x8f, 0x98, 0x44, 0xe4, 0x53, 0x18, 0xae, 0xfb, 0x41, 0x54, 0x7b, 0x2e, 0x36, 0x35, 0x79, 0x19, - 0xc5, 0x81, 0xb5, 0x73, 0x32, 0x07, 0x4a, 0xe8, 0x07, 0x51, 0xe3, 0x91, 0x11, 0xee, 0x8a, 0xa3, - 0x90, 0xe7, 0x30, 0x63, 0x6e, 0x28, 0xc2, 0x9b, 0x78, 0x54, 0x48, 0x70, 0x59, 0xbb, 0x16, 0x47, - 0xa9, 0x5d, 0x17, 0xdc, 0x2f, 0x27, 0xb7, 0xad, 0xc7, 0x58, 0xae, 0x8b, 0x3d, 0x59, 0xf4, 0x64, - 0x1d, 0x93, 0xc7, 0xf0, 0x1e, 0x55, 0x43, 0xee, 0x85, 0x3c, 0x16, 0x07, 0x54, 0xeb, 0xe2, 0xa6, - 0x84, 0x23, 0xe1, 0x84, 0xc9, 0x8c, 0x43, 0x76, 0x8a, 0x94, 0x6c, 0xc1, 0x99, 0x9d, 0x90, 0x6e, - 0x05, 0xf4, 0xa9, 0x4b, 0x9f, 0x49, 0x7e, 0x10, 0x47, 0x9f, 0x62, 0xfc, 0x3a, 0xbc, 0x34, 0x8b, - 0x61, 0x9a, 0x98, 0xbc, 0x0f, 0xb0, 0xe5, 0x7a, 0x1e, 0x6d, 0xe1, 0x8d, 0xe6, 0x38, 0xb2, 0x42, - 0x6b, 0x6d, 0x07, 0xa1, 0x0d, 0xdf, 0x6b, 0xeb, 0x43, 0xaa, 0x21, 0x93, 0x1a, 0x4c, 0xae, 0x7a, - 0xcd, 0x76, 0x57, 0x78, 0x1e, 0x84, 0xb8, 0xa1, 0x88, 0xa8, 0x78, 0x2e, 0x2f, 0x68, 0xa4, 0x3e, - 0x72, 0x93, 0x84, 0x3c, 0x00, 0x22, 0x00, 0x62, 0xd5, 0x3a, 0x8f, 0xda, 0x54, 0x7c, 0xee, 0x68, - 0x85, 0x91, 0x8c, 0x70, 0xb9, 0x1b, 0xc1, 0xe6, 0x52, 0x64, 0xf3, 0xef, 0xc3, 0xb8, 0xb6, 0xe6, - 0x33, 0x42, 0x40, 0xcc, 0xe8, 0x21, 0x20, 0xc6, 0xf4, 0x50, 0x0f, 0xff, 0xa0, 0x00, 0x17, 0xb2, - 0xbf, 0x25, 0x21, 0x80, 0x6d, 0xc2, 0x98, 0x02, 0xaa, 0x47, 0x3f, 0x52, 0xab, 0x48, 0x48, 0x40, - 0xfc, 0x83, 0x96, 0x3b, 0x8f, 0xde, 0xfb, 0x98, 0xc7, 0x0b, 0x98, 0xfa, 0xff, 0xef, 0x51, 0x98, - 0x41, 0xe7, 0xf6, 0xe4, 0x3e, 0xf5, 0x09, 0x86, 0x72, 0x41, 0x98, 0x66, 0xb9, 0x16, 0x46, 0x2c, - 0x0e, 0x4f, 0x06, 0x35, 0x33, 0x08, 0xc8, 0x3b, 0xba, 0xbb, 0x45, 0x51, 0x4b, 0x56, 0x23, 0x81, - 0x7a, 0x17, 0x62, 0x3f, 0x8c, 0x37, 0x8c, 0xdb, 0xfe, 0x63, 0x6f, 0x7a, 0x83, 0xc7, 0xdd, 0xf4, - 0x76, 0xd4, 0xa6, 0xc7, 0x43, 0x84, 0x7c, 0x47, 0xdb, 0xf4, 0x5e, 0xfd, 0x6e, 0x37, 0xfc, 0xaa, - 0x77, 0xbb, 0x91, 0x97, 0xdb, 0xed, 0x46, 0x5f, 0x70, 0xb7, 0xbb, 0x0b, 0x53, 0x1b, 0x94, 0xb6, - 0xb4, 0x3b, 0x98, 0xb1, 0xf8, 0xf4, 0xf4, 0x28, 0x5a, 0xd7, 0xb2, 0x2e, 0x62, 0x12, 0x54, 0xb9, - 0xbb, 0x26, 0xfc, 0xf5, 0xec, 0x9a, 0xe3, 0xaf, 0x78, 0xd7, 0x9c, 0x78, 0x99, 0x5d, 0x33, 0xb5, - 0xf5, 0x4d, 0x9e, 0x78, 0xeb, 0x7b, 0x99, 0xdd, 0xea, 0x63, 0xf4, 0x56, 0xac, 0xd7, 0x57, 0x84, - 0x63, 0x8a, 0xe6, 0x09, 0xb2, 0xe2, 0x87, 0xd2, 0x99, 0x1b, 0xff, 0x66, 0x30, 0x4c, 0x09, 0xc0, - 0x99, 0xe0, 0xdf, 0x56, 0x0d, 0x7d, 0x14, 0x75, 0x7a, 0xf5, 0xe8, 0x61, 0x44, 0xbc, 0x98, 0x14, - 0x7b, 0x5c, 0x52, 0x8d, 0xb2, 0x65, 0xb9, 0xf5, 0x67, 0x05, 0x7e, 0xdf, 0xf9, 0xbf, 0xe2, 0x56, - 0xf9, 0x32, 0x77, 0x90, 0xbf, 0x19, 0x47, 0x52, 0x10, 0x51, 0x1f, 0x02, 0xa7, 0xf9, 0x24, 0xbe, - 0x04, 0xfe, 0x21, 0xfb, 0xce, 0xf5, 0x02, 0x0c, 0x9a, 0x1b, 0xeb, 0x8a, 0x66, 0xe1, 0xee, 0x1d, - 0xb9, 0x01, 0x88, 0x80, 0x12, 0x1c, 0x6c, 0x6e, 0x00, 0x3a, 0x01, 0xba, 0xe1, 0x9d, 0xb6, 0x6c, - 0x1e, 0x08, 0x20, 0xb3, 0x05, 0xef, 0xa6, 0x9f, 0xb2, 0xa3, 0x32, 0x12, 0x3f, 0x65, 0xd7, 0x87, - 0x31, 0x7e, 0xd4, 0xbe, 0x03, 0xe7, 0x6d, 0x7a, 0xe0, 0x3f, 0xa5, 0xaf, 0x96, 0xed, 0x57, 0x70, - 0xce, 0x64, 0xc8, 0x1f, 0x3d, 0xf1, 0x08, 0xfd, 0x1f, 0x67, 0xc7, 0xf5, 0x17, 0x04, 0x3c, 0xae, - 0x3f, 0x0f, 0x0f, 0xce, 0xfe, 0xd4, 0xcf, 0x0d, 0x2c, 0xb3, 0x7c, 0xb8, 0x60, 0x32, 0xaf, 0xb6, - 0x5a, 0x98, 0x1a, 0xb4, 0xe9, 0x76, 0x1c, 0x2f, 0x22, 0x9b, 0x30, 0xae, 0xfd, 0x4c, 0x98, 0x0a, - 0xb4, 0x12, 0x21, 0xd3, 0xc4, 0x00, 0x23, 0xbc, 0x6a, 0x0c, 0xb6, 0x28, 0x54, 0x92, 0xc3, 0xc3, - 0x86, 0x4c, 0xaf, 0xb3, 0x06, 0x93, 0xda, 0x4f, 0x65, 0x0d, 0xc5, 0x8f, 0x5f, 0xab, 0xc1, 0x1c, - 0x30, 0x93, 0xc4, 0x6a, 0xc2, 0x7c, 0xd6, 0xa0, 0xf1, 0x38, 0xdc, 0x64, 0x39, 0x0e, 0xb3, 0xd5, - 0xdf, 0x91, 0xef, 0x74, 0x5e, 0x88, 0x2d, 0xeb, 0x6f, 0x0c, 0xc2, 0x79, 0x31, 0x19, 0xaf, 0x72, - 0xc6, 0xc9, 0x8f, 0x60, 0x5c, 0x9b, 0x63, 0x31, 0xe8, 0x97, 0xe5, 0x93, 0xa5, 0xbc, 0xb5, 0xc0, - 0x4d, 0x1a, 0x5d, 0x04, 0x34, 0x12, 0xd3, 0xbd, 0x72, 0xca, 0xd6, 0x59, 0x92, 0x36, 0x4c, 0x99, - 0x13, 0x2d, 0xac, 0x3a, 0x57, 0x33, 0x2b, 0x31, 0x51, 0x65, 0x90, 0xee, 0x56, 0x23, 0x73, 0xba, - 0x57, 0x4e, 0xd9, 0x09, 0xde, 0xe4, 0x1b, 0x38, 0x93, 0x9a, 0x65, 0x61, 0xac, 0x7b, 0x3d, 0xb3, - 0xc2, 0x14, 0x36, 0xb7, 0xf4, 0x06, 0x08, 0xce, 0xad, 0x36, 0x5d, 0x09, 0x69, 0xc1, 0x84, 0x3e, - 0xf1, 0xc2, 0xec, 0x74, 0xa5, 0xc7, 0x50, 0x72, 0x44, 0x2e, 0xdc, 0x89, 0xb1, 0xc4, 0xb9, 0x7f, - 0x6e, 0x5a, 0xaf, 0x0d, 0xe4, 0x51, 0x18, 0xe6, 0xbf, 0xad, 0xdf, 0x2f, 0xc0, 0xf9, 0xad, 0x80, - 0x86, 0xd4, 0x6b, 0x52, 0xc3, 0xf9, 0xfb, 0x25, 0x57, 0x44, 0x9e, 0xe1, 0xb8, 0xf8, 0xd2, 0x86, - 0x63, 0xeb, 0x5f, 0x15, 0xa0, 0x9c, 0xd5, 0xe4, 0x3a, 0xf5, 0x5a, 0x64, 0x0b, 0x4a, 0xc9, 0x3e, - 0x88, 0x2f, 0xc6, 0x52, 0x31, 0x96, 0x73, 0x7b, 0xbb, 0x72, 0xca, 0x4e, 0x51, 0x93, 0x0d, 0x38, - 0xa3, 0xc1, 0x84, 0xe1, 0xb6, 0x78, 0x1c, 0xc3, 0x2d, 0x9b, 0xe1, 0x14, 0xa9, 0x6e, 0xf7, 0x5e, - 0xc1, 0x53, 0x77, 0xc9, 0x3f, 0x70, 0x5c, 0x8f, 0x09, 0xd1, 0x5a, 0x14, 0x2f, 0x88, 0xa1, 0x62, - 0xd8, 0xb9, 0x25, 0x17, 0xa1, 0xf2, 0x1d, 0x8c, 0x42, 0xb1, 0x3e, 0xc2, 0xd3, 0x41, 0xd8, 0xff, - 0xf8, 0xcb, 0x63, 0xc5, 0xec, 0x32, 0x0c, 0x6d, 0xaf, 0xd5, 0x17, 0xab, 0xe2, 0x1d, 0x33, 0x8f, - 0x7e, 0xd1, 0x0e, 0x1b, 0x4d, 0xc7, 0xe6, 0x05, 0xd6, 0x87, 0x40, 0xee, 0xd1, 0x48, 0x04, 0xf9, - 0x57, 0x74, 0xd7, 0x60, 0x44, 0x80, 0x04, 0x25, 0x7a, 0xf4, 0x89, 0x94, 0x01, 0xb6, 0x2c, 0xb3, - 0xb6, 0xa4, 0x0e, 0xd2, 0xa6, 0x4e, 0xa8, 0x1d, 0xfa, 0xef, 0xc1, 0x68, 0x20, 0x60, 0xe2, 0xcc, - 0x9f, 0x52, 0x39, 0x5c, 0x10, 0xcc, 0x6d, 0xe5, 0x12, 0xc7, 0x56, 0x7f, 0x59, 0x6b, 0x18, 0xa9, - 0x66, 0x73, 0x75, 0x69, 0x91, 0x8d, 0xaa, 0x18, 0x2c, 0x39, 0x1d, 0xb7, 0xd0, 0xf5, 0x3d, 0xa2, - 0xfa, 0x2b, 0x66, 0x1c, 0x1a, 0xdc, 0x40, 0x44, 0x7c, 0x26, 0x0d, 0xc5, 0x7a, 0x4b, 0xc5, 0xbd, - 0xc9, 0xe0, 0x96, 0x97, 0x8b, 0x64, 0x03, 0x23, 0xfa, 0xdc, 0x43, 0x2f, 0x9f, 0x57, 0xd1, 0x08, - 0x07, 0xe6, 0xb9, 0x08, 0xc1, 0x7a, 0x25, 0x32, 0x31, 0xfa, 0x6a, 0xdb, 0x5d, 0x84, 0x31, 0x05, - 0x53, 0x57, 0x76, 0x7c, 0xac, 0x0c, 0xfc, 0xdd, 0xb7, 0xf8, 0x83, 0xef, 0xa6, 0x62, 0x10, 0xd3, - 0xb1, 0x2a, 0xf8, 0x37, 0xfd, 0x2d, 0x57, 0x11, 0xd2, 0x20, 0xfa, 0x56, 0xab, 0x88, 0x43, 0x3e, - 0x9d, 0xa4, 0x0a, 0x03, 0x7f, 0x77, 0xe1, 0x38, 0x03, 0xf5, 0x2d, 0x57, 0xc1, 0x06, 0xea, 0xdb, - 0xab, 0x82, 0xca, 0xd8, 0x58, 0x7c, 0x91, 0xa6, 0x2a, 0x59, 0x4e, 0x57, 0x22, 0x8d, 0xe2, 0x09, - 0x8a, 0x9e, 0xf3, 0x41, 0xe1, 0x02, 0x1f, 0xac, 0x5f, 0x40, 0x35, 0x6c, 0xc0, 0xbe, 0xdd, 0x6a, - 0xfe, 0x4e, 0x81, 0x47, 0xea, 0xaa, 0x6f, 0x6a, 0x39, 0x50, 0xbd, 0xc7, 0xbe, 0xe6, 0x51, 0xa0, - 0x7d, 0xed, 0x0f, 0x5c, 0xaf, 0xa5, 0x7b, 0x14, 0x38, 0xdd, 0x68, 0x5f, 0x45, 0xb2, 0x7e, 0xe2, - 0x7a, 0x2d, 0x3b, 0x89, 0x4d, 0xde, 0x87, 0x49, 0x0d, 0xa4, 0x24, 0x41, 0x9e, 0x6b, 0x44, 0x27, - 0x77, 0x5b, 0xb6, 0x89, 0x69, 0xfd, 0x55, 0x01, 0xa6, 0x33, 0xb2, 0x73, 0xa3, 0xa1, 0x04, 0x35, - 0x2c, 0xb5, 0x51, 0x89, 0xec, 0x60, 0x18, 0x34, 0xc4, 0x38, 0x7f, 0x15, 0x22, 0x66, 0x59, 0xd0, - 0x32, 0x89, 0x17, 0xb5, 0x9c, 0x77, 0xd9, 0xd9, 0xc3, 0x75, 0x74, 0x12, 0x02, 0xc4, 0x2d, 0x11, - 0x26, 0xe9, 0x3a, 0x13, 0x97, 0xb5, 0x34, 0xe4, 0xaf, 0x24, 0x0f, 0xba, 0x56, 0x8d, 0xf5, 0x9b, - 0x45, 0x38, 0x9b, 0xd1, 0xff, 0x3a, 0x8d, 0xfe, 0x3a, 0x86, 0x20, 0x91, 0x0c, 0x7e, 0xe0, 0x17, - 0x94, 0x0c, 0xde, 0xfa, 0xe3, 0x22, 0x9c, 0xdd, 0xe9, 0x84, 0xf8, 0x30, 0x6c, 0xd5, 0x7b, 0x4a, - 0xbd, 0xc8, 0x0f, 0x9e, 0xe3, 0x63, 0x16, 0xf2, 0x0e, 0x0c, 0xad, 0xd0, 0x76, 0xdb, 0x17, 0xeb, - 0xff, 0xa2, 0x74, 0xea, 0x48, 0x62, 0x23, 0xd2, 0xca, 0x29, 0x9b, 0x63, 0x93, 0xf7, 0x61, 0x6c, - 0x85, 0x3a, 0x41, 0xf4, 0x88, 0x3a, 0x52, 0x1d, 0x92, 0x19, 0x50, 0x34, 0x12, 0x81, 0xb0, 0x72, - 0xca, 0x8e, 0xb1, 0xc9, 0x02, 0x0c, 0x6e, 0xf9, 0xde, 0x9e, 0x7a, 0x04, 0x9f, 0x53, 0x21, 0xc3, - 0x59, 0x39, 0x65, 0x23, 0x2e, 0x59, 0x87, 0xc9, 0xea, 0x1e, 0xf5, 0xa2, 0x75, 0x1a, 0x39, 0x2d, - 0x27, 0x72, 0x84, 0xd8, 0x7c, 0x2d, 0x8f, 0xd8, 0x40, 0x5e, 0x39, 0x65, 0x9b, 0xd4, 0xe4, 0x43, - 0x18, 0xb9, 0xe7, 0xfb, 0xad, 0x47, 0xcf, 0x65, 0x28, 0x87, 0x4a, 0x1e, 0x23, 0x81, 0xb6, 0x72, - 0xca, 0x96, 0x14, 0xb5, 0x21, 0x18, 0x58, 0x0f, 0xf7, 0xac, 0xc3, 0x02, 0x94, 0x97, 0xfc, 0x67, - 0x5e, 0xe6, 0xa8, 0x7e, 0xdf, 0x1c, 0x55, 0xc9, 0x3e, 0x03, 0x3f, 0x31, 0xae, 0x6f, 0xc3, 0xe0, - 0x96, 0xeb, 0xed, 0x25, 0x44, 0xc1, 0x0c, 0x3a, 0x86, 0x85, 0xc3, 0xe3, 0x7a, 0x7b, 0x64, 0x4d, - 0xca, 0xf7, 0xc2, 0x8e, 0x39, 0x60, 0x28, 0x15, 0x19, 0xd4, 0x3a, 0x76, 0x2c, 0xc7, 0xf3, 0xdf, - 0xb2, 0x83, 0x6f, 0xc0, 0x5c, 0x4e, 0xbd, 0xe2, 0x55, 0x3b, 0xeb, 0xdb, 0x20, 0x0a, 0x36, 0xff, - 0x4f, 0x01, 0x66, 0x33, 0x27, 0x30, 0x89, 0xc9, 0x74, 0x3a, 0xbe, 0x30, 0x17, 0xdb, 0x7e, 0xf3, - 0xc9, 0x31, 0x7c, 0xc3, 0x2c, 0x99, 0x35, 0x5c, 0x7c, 0x21, 0x4d, 0x46, 0x97, 0xc8, 0x0c, 0xa7, - 0xb3, 0xb4, 0xfe, 0x71, 0xd6, 0x5a, 0xe7, 0x83, 0x5b, 0x86, 0x11, 0x99, 0x7d, 0x8c, 0x9b, 0xae, - 0xe4, 0x4f, 0x7c, 0x3a, 0x26, 0xf7, 0x02, 0x19, 0x16, 0x46, 0x7e, 0xf2, 0xbb, 0x5a, 0x18, 0x2e, - 0xfe, 0xc5, 0x7e, 0xf0, 0x12, 0xdf, 0xa5, 0xe2, 0xc5, 0xea, 0x5c, 0xf1, 0xc3, 0xc8, 0x53, 0x3e, - 0xc9, 0xb6, 0xfa, 0x4d, 0x6e, 0x40, 0x49, 0x66, 0x1a, 0x11, 0x29, 0x8d, 0x44, 0x76, 0x7c, 0x3b, - 0x05, 0x27, 0xef, 0xc1, 0x5c, 0x12, 0x26, 0x7b, 0xc9, 0xdf, 0xfe, 0xe5, 0x15, 0x5b, 0x7f, 0x5a, - 0xc4, 0x48, 0xe9, 0x3d, 0x3e, 0x1d, 0x36, 0x7f, 0x9b, 0x75, 0x31, 0x5a, 0xc5, 0xcd, 0x3a, 0xb9, - 0x00, 0x63, 0x9b, 0x75, 0x23, 0x85, 0x9b, 0x1d, 0x03, 0x58, 0xb3, 0x59, 0x17, 0xaa, 0x41, 0x73, - 0xdf, 0x8d, 0x68, 0x33, 0xea, 0x06, 0x62, 0xa3, 0xb7, 0x53, 0x70, 0x62, 0xc1, 0xc4, 0xbd, 0xb6, - 0xfb, 0xa8, 0x29, 0x99, 0xf1, 0x21, 0x30, 0x60, 0xe4, 0x75, 0x98, 0x5a, 0xf5, 0xc2, 0xc8, 0x69, - 0xb7, 0xd7, 0x69, 0xb4, 0xef, 0xb7, 0x44, 0x82, 0x5a, 0x3b, 0x01, 0x65, 0xf5, 0x2e, 0xfa, 0x5e, - 0xe4, 0xb8, 0x1e, 0x0d, 0xec, 0xae, 0x17, 0xb9, 0x07, 0x54, 0xf4, 0x3d, 0x05, 0x27, 0x6f, 0xc3, - 0xac, 0x82, 0x6d, 0x06, 0xcd, 0x7d, 0x1a, 0x46, 0x01, 0x26, 0x76, 0x44, 0xef, 0x23, 0x3b, 0xbb, - 0x10, 0x6b, 0x68, 0xfb, 0xdd, 0xd6, 0xb2, 0xf7, 0xd4, 0x0d, 0x7c, 0x0f, 0xd3, 0xa6, 0x8c, 0x8a, - 0x1a, 0x12, 0x70, 0xeb, 0xf7, 0x46, 0x33, 0x77, 0x86, 0x97, 0x59, 0x83, 0x5f, 0xc0, 0xc4, 0xa2, - 0xd3, 0x71, 0x1e, 0xb9, 0x6d, 0x37, 0x72, 0x55, 0x06, 0xbc, 0x77, 0xfa, 0x6c, 0x2b, 0x32, 0xf7, - 0x0c, 0x6d, 0xe9, 0xc4, 0xb6, 0xc1, 0x6a, 0xfe, 0x2f, 0x87, 0x61, 0x36, 0x13, 0x8f, 0x5c, 0x17, - 0xa9, 0xf2, 0xd4, 0xd6, 0x2d, 0xf2, 0xb0, 0xd9, 0x49, 0x30, 0x9b, 0x4b, 0x04, 0x2d, 0xb6, 0xa9, - 0xe3, 0x75, 0x45, 0x16, 0x36, 0xdb, 0x80, 0xb1, 0xb9, 0x64, 0xa2, 0x89, 0xc6, 0x0c, 0x5d, 0xca, - 0xed, 0x04, 0x94, 0x5c, 0x86, 0x71, 0x06, 0x91, 0xac, 0x06, 0xf9, 0xe3, 0x47, 0x0d, 0xc4, 0x38, - 0x6d, 0xf8, 0x2d, 0xaa, 0x71, 0x1a, 0xe2, 0x9c, 0x4c, 0x28, 0xe3, 0xc4, 0x20, 0x92, 0xd3, 0x30, - 0xe7, 0xa4, 0x81, 0xc8, 0x6b, 0x30, 0x59, 0xed, 0x74, 0x34, 0x46, 0x98, 0x7e, 0xcd, 0x36, 0x81, - 0xe4, 0x12, 0x40, 0xb5, 0xd3, 0x91, 0x6c, 0x30, 0xb5, 0x9a, 0xad, 0x41, 0xc8, 0xcd, 0x38, 0xd8, - 0x9d, 0xc6, 0x0a, 0x6f, 0x43, 0xec, 0x8c, 0x12, 0x36, 0xae, 0x2a, 0x32, 0x98, 0x60, 0x0a, 0x7c, - 0x5c, 0x13, 0x60, 0xf2, 0x11, 0x9c, 0x4b, 0xb8, 0x8d, 0x68, 0x15, 0xe0, 0x4d, 0x85, 0x9d, 0x8f, - 0x40, 0xde, 0x85, 0xb3, 0x89, 0x42, 0x59, 0x1d, 0x5e, 0x4a, 0xd8, 0x39, 0xa5, 0xe4, 0x03, 0x28, - 0x27, 0x1e, 0xb4, 0xc7, 0x95, 0xe2, 0x05, 0x84, 0x9d, 0x5b, 0xce, 0xbe, 0xae, 0xc4, 0xcb, 0x38, - 0x51, 0x25, 0xde, 0xb5, 0xda, 0xd9, 0x85, 0x64, 0x05, 0x2a, 0x99, 0xae, 0x38, 0x5a, 0xc5, 0x98, - 0x32, 0xce, 0xee, 0x87, 0x46, 0x6a, 0x70, 0x21, 0x13, 0x45, 0x36, 0x03, 0x13, 0xc9, 0xd9, 0x3d, - 0x71, 0xc8, 0x02, 0xcc, 0xc4, 0x2e, 0x49, 0x5a, 0x13, 0x30, 0x87, 0x9c, 0x9d, 0x59, 0x46, 0xde, - 0x34, 0xc3, 0x16, 0xf0, 0xca, 0x30, 0x85, 0x9c, 0x9d, 0x2e, 0xb0, 0x8e, 0x0a, 0x70, 0x21, 0xf3, - 0x2c, 0x96, 0x2a, 0xc3, 0x7c, 0x52, 0x36, 0xd5, 0xf6, 0x82, 0x1b, 0x30, 0x88, 0x3a, 0x04, 0x37, - 0x75, 0x4b, 0x2f, 0x5c, 0xa4, 0xe7, 0xac, 0x58, 0xa9, 0x8d, 0x38, 0xe4, 0x9e, 0xba, 0xda, 0x1c, - 0x40, 0x63, 0xc9, 0xad, 0xa4, 0x8c, 0x96, 0x51, 0xb9, 0x7e, 0xc5, 0x29, 0x2f, 0x33, 0x5f, 0xe6, - 0x16, 0xe9, 0x4f, 0x0b, 0x50, 0xe9, 0x23, 0x82, 0xa8, 0x3e, 0x15, 0x8e, 0xd1, 0xa7, 0xfb, 0xaa, - 0x4f, 0xfc, 0xd5, 0xf0, 0xc2, 0xf1, 0xc4, 0x9c, 0x57, 0xdd, 0xad, 0xbf, 0x2a, 0x00, 0x49, 0x8b, - 0xba, 0xe4, 0x7b, 0x30, 0x56, 0xaf, 0xaf, 0x18, 0x0e, 0x89, 0xa9, 0xcb, 0xad, 0x18, 0x83, 0xdc, - 0x3e, 0x96, 0x07, 0xa2, 0xee, 0x7f, 0xf8, 0x49, 0xca, 0xed, 0x71, 0xa0, 0xa7, 0xdb, 0x63, 0xca, - 0xe9, 0x71, 0x39, 0xc3, 0x8f, 0x6f, 0xb0, 0x8f, 0x1f, 0x5f, 0xda, 0x49, 0xcf, 0x5a, 0x82, 0x72, - 0x9e, 0xb4, 0x8c, 0x3b, 0x1c, 0x0f, 0x11, 0xa7, 0x5d, 0xd0, 0xf1, 0x1d, 0xce, 0x04, 0x5b, 0xef, - 0xc2, 0x59, 0x45, 0xcd, 0x73, 0xcf, 0x68, 0xb1, 0x19, 0x84, 0x8a, 0xad, 0x62, 0x40, 0xc4, 0x00, - 0xeb, 0x4f, 0x06, 0x53, 0x84, 0xf5, 0xee, 0xc1, 0x81, 0x13, 0x3c, 0x27, 0x55, 0x93, 0x70, 0xa0, - 0xaf, 0x56, 0x53, 0x1b, 0x64, 0x32, 0xa6, 0xc6, 0x9d, 0x9d, 0x0b, 0x28, 0x61, 0x78, 0x4d, 0xca, - 0xaf, 0xf6, 0x8a, 0x3c, 0xfe, 0x94, 0x01, 0x24, 0xbb, 0x30, 0x29, 0xce, 0x6e, 0xfc, 0x2d, 0xbf, - 0xb1, 0xdb, 0xc9, 0x6f, 0xcc, 0x68, 0xde, 0x4d, 0x83, 0x84, 0xaf, 0x46, 0x93, 0x0d, 0xf9, 0x02, - 0xa6, 0xa4, 0xa4, 0x26, 0x18, 0x73, 0x67, 0xac, 0x3b, 0xbd, 0x19, 0x9b, 0x34, 0x9c, 0x73, 0x82, - 0x11, 0x6b, 0xb2, 0xdc, 0xec, 0x38, 0xe7, 0xa1, 0xe3, 0x34, 0xd9, 0x20, 0x11, 0x4d, 0x36, 0x60, - 0xf3, 0x9f, 0x02, 0x49, 0xf7, 0xab, 0xdf, 0xe7, 0x34, 0xa9, 0x7d, 0x4e, 0xf3, 0x55, 0x98, 0xce, - 0xe8, 0xc0, 0x89, 0x58, 0x7c, 0x0a, 0x24, 0xdd, 0xd2, 0x93, 0x70, 0xb0, 0xae, 0xc3, 0xeb, 0x6a, - 0x08, 0xd4, 0x6a, 0x30, 0x78, 0x4a, 0x23, 0xfb, 0xaf, 0x17, 0xa1, 0xd2, 0x07, 0x95, 0xfc, 0xbd, - 0x42, 0x72, 0xb4, 0xf9, 0x6a, 0x7c, 0x3f, 0x39, 0xda, 0xd9, 0xf4, 0x19, 0xc3, 0x5e, 0xfb, 0xe0, - 0x37, 0xfe, 0xfc, 0x85, 0x35, 0x8f, 0xf4, 0x94, 0x9d, 0x7c, 0xb4, 0x06, 0xf5, 0xd1, 0xda, 0x85, - 0x19, 0x43, 0x2d, 0x3c, 0xce, 0xe1, 0x65, 0x01, 0x88, 0x34, 0xb8, 0x6b, 0xfe, 0x9e, 0xc8, 0xd6, - 0x5b, 0x2c, 0x17, 0x6c, 0x0d, 0x6a, 0xdd, 0x85, 0xd9, 0x04, 0x5f, 0x61, 0xfc, 0xff, 0x1e, 0xa8, - 0x77, 0xf8, 0xc8, 0x78, 0xa0, 0x76, 0xe6, 0xe7, 0x87, 0x95, 0x49, 0x26, 0xd6, 0xdf, 0x8c, 0x53, - 0x21, 0xc8, 0xbf, 0xac, 0x75, 0xfd, 0xfa, 0xa2, 0xda, 0xd6, 0xe3, 0x13, 0x91, 0x3b, 0x30, 0xcc, - 0x21, 0x89, 0x80, 0xe3, 0x3a, 0xb6, 0xd8, 0x17, 0x04, 0xa2, 0x35, 0x8b, 0xaf, 0x86, 0xf1, 0x47, - 0x35, 0x8e, 0x72, 0x61, 0xed, 0xf0, 0x04, 0x3c, 0x31, 0x58, 0x05, 0x35, 0x1f, 0xac, 0xc6, 0xd1, - 0x38, 0xa4, 0x1f, 0x8b, 0xc4, 0xf3, 0xfc, 0x67, 0x6d, 0xda, 0xe2, 0x99, 0x13, 0x6b, 0x13, 0x42, - 0xc7, 0x1d, 0x74, 0x18, 0x03, 0x24, 0xb3, 0x3e, 0x81, 0x59, 0x26, 0x2d, 0x04, 0xc9, 0xfa, 0x30, - 0xed, 0x06, 0x83, 0x99, 0x8f, 0x03, 0x1c, 0x06, 0xc2, 0xc7, 0x01, 0xa2, 0xd0, 0x5a, 0x83, 0x73, - 0xdc, 0xf8, 0xa9, 0x77, 0x29, 0xbe, 0x6a, 0x18, 0xc2, 0xdf, 0x89, 0x37, 0xa7, 0x19, 0xbd, 0xe7, - 0x78, 0xd6, 0xc7, 0xf8, 0xa8, 0x49, 0x2c, 0x54, 0xd7, 0xf7, 0x62, 0x4b, 0xe7, 0xf1, 0x5e, 0x41, - 0xff, 0xef, 0x70, 0xa1, 0xda, 0xe9, 0x50, 0xaf, 0x15, 0x13, 0x6e, 0x07, 0xce, 0x31, 0x63, 0x54, - 0x90, 0x2a, 0x0c, 0x21, 0xb6, 0xba, 0x03, 0x16, 0xcd, 0xcd, 0x68, 0x0e, 0xe2, 0x89, 0x08, 0xb4, - 0x58, 0x01, 0xa7, 0xb4, 0x5a, 0x30, 0x57, 0xef, 0x3e, 0x3a, 0x70, 0x23, 0x7c, 0x52, 0x80, 0x71, - 0x5e, 0x64, 0xdd, 0xab, 0x32, 0x67, 0x1a, 0x1f, 0x8c, 0xeb, 0xf1, 0xe3, 0x17, 0x7c, 0x95, 0x20, - 0x62, 0xbf, 0x3c, 0xbd, 0x73, 0x33, 0x26, 0x45, 0x2b, 0x0f, 0xaf, 0x05, 0x8b, 0x45, 0x5e, 0x35, - 0x6b, 0x1a, 0xce, 0xe8, 0x77, 0x5e, 0x7c, 0x85, 0xcc, 0xc2, 0xb4, 0x79, 0x97, 0xc5, 0xc1, 0x5f, - 0xc3, 0x0c, 0xb7, 0xb5, 0xf3, 0x08, 0xf2, 0x0b, 0x71, 0xb0, 0xf4, 0xe2, 0xee, 0x42, 0xe2, 0x2d, - 0x03, 0xba, 0x38, 0xab, 0xdc, 0x20, 0xbb, 0x0b, 0xfc, 0x61, 0xea, 0xd3, 0x05, 0xe3, 0x36, 0xb6, - 0xb8, 0xbb, 0x50, 0x1b, 0x11, 0x91, 0x78, 0x19, 0x77, 0x3e, 0xfd, 0xdf, 0x0a, 0xf7, 0x05, 0x8c, - 0x85, 0xb0, 0x42, 0x1d, 0x7c, 0xb7, 0x94, 0xfd, 0xa2, 0x7c, 0x0a, 0x8a, 0x2a, 0xd4, 0x66, 0xd1, - 0x6d, 0x59, 0x7f, 0x50, 0x80, 0xeb, 0x5c, 0x20, 0xcb, 0xa6, 0xc3, 0x8b, 0xad, 0x1c, 0x62, 0xf2, - 0x1e, 0x0c, 0x85, 0x9a, 0x83, 0x87, 0x25, 0x5a, 0xde, 0x8b, 0x13, 0x27, 0x20, 0x55, 0x98, 0xd0, - 0x9f, 0xe7, 0x1c, 0x2f, 0x8a, 0x9f, 0x3d, 0x7e, 0xf0, 0xd8, 0x51, 0x4f, 0x76, 0x9e, 0xc0, 0xf9, - 0xe5, 0x6f, 0xd8, 0x82, 0x10, 0x27, 0x94, 0xd0, 0x1e, 0xe2, 0x17, 0xcb, 0xa7, 0xb7, 0xc5, 0x8a, - 0x31, 0x55, 0xfb, 0x24, 0x98, 0xe9, 0xc9, 0xf2, 0x90, 0x53, 0x22, 0xfc, 0x98, 0x6d, 0xc0, 0xac, - 0x3f, 0x29, 0xc0, 0x85, 0xec, 0xda, 0xc4, 0xc6, 0xb2, 0x0a, 0x67, 0x16, 0x1d, 0xcf, 0xf7, 0xdc, - 0xa6, 0xd3, 0xae, 0x37, 0xf7, 0x69, 0xab, 0xab, 0xe2, 0xf5, 0xaa, 0x5d, 0x66, 0x8f, 0x7a, 0x92, - 0x5c, 0xa2, 0xd8, 0x69, 0x2a, 0xa6, 0x21, 0xe2, 0x0b, 0x0f, 0xbe, 0xf7, 0xb6, 0x69, 0xa0, 0xf8, - 0xf1, 0x96, 0xe5, 0x94, 0x92, 0xdb, 0xf2, 0x52, 0xa1, 0xb5, 0xe3, 0xb9, 0x91, 0x22, 0xe2, 0xa6, - 0x9e, 0xac, 0x22, 0xeb, 0xdf, 0x16, 0xe0, 0x1c, 0xa6, 0xe8, 0x32, 0x92, 0x7e, 0xc6, 0x61, 0xab, - 0x65, 0xe4, 0xe5, 0x82, 0xf1, 0x62, 0xc5, 0xc0, 0x36, 0x43, 0x30, 0x93, 0x37, 0x61, 0xb0, 0x2e, - 0x1d, 0xce, 0xa6, 0x12, 0xe9, 0x9a, 0x05, 0x05, 0x2b, 0xb7, 0x11, 0x8b, 0xe9, 0xf0, 0x4b, 0x34, - 0x6c, 0x52, 0x0f, 0xf3, 0x6a, 0x73, 0xcb, 0x83, 0x06, 0x89, 0x23, 0x4a, 0x0d, 0xe6, 0x45, 0x94, - 0x1a, 0x32, 0x23, 0x4a, 0x59, 0x4f, 0x79, 0x82, 0xae, 0x64, 0x87, 0xc4, 0x24, 0x7d, 0x9c, 0x4a, - 0xc3, 0xcd, 0xcf, 0x81, 0xb3, 0x59, 0x3d, 0x63, 0x42, 0x7a, 0x22, 0xc3, 0x76, 0x7e, 0x98, 0xe8, - 0x2d, 0x78, 0xcd, 0xc0, 0xad, 0xb6, 0xdb, 0xfe, 0x33, 0xda, 0xda, 0x0a, 0xfc, 0x03, 0x3f, 0x32, - 0x12, 0x14, 0x89, 0x3c, 0xf4, 0xf1, 0xb5, 0x91, 0x58, 0x95, 0x09, 0xb0, 0xf5, 0xbf, 0xc1, 0xb5, - 0x3e, 0x1c, 0x45, 0xa7, 0xea, 0x70, 0xc6, 0x49, 0x94, 0x49, 0xcf, 0xa1, 0x6b, 0x59, 0xfd, 0x4a, - 0x32, 0x0a, 0xed, 0x34, 0xfd, 0x8d, 0x6d, 0x23, 0x75, 0x35, 0x29, 0xc3, 0xcc, 0x96, 0xbd, 0xb9, - 0xb4, 0xb3, 0xb8, 0xdd, 0xd8, 0xfe, 0x62, 0x6b, 0xb9, 0xb1, 0xb3, 0xf1, 0x60, 0x63, 0xf3, 0xe1, - 0x06, 0x8f, 0xb3, 0x6e, 0x94, 0x6c, 0x2f, 0x57, 0xd7, 0x4b, 0x05, 0x32, 0x03, 0x25, 0x03, 0xbc, - 0xbc, 0x53, 0x2b, 0x15, 0x6f, 0x7c, 0x6d, 0xa4, 0x64, 0x26, 0x17, 0xa0, 0x5c, 0xdf, 0xd9, 0xda, - 0xda, 0xb4, 0x15, 0x57, 0x3d, 0xca, 0xfb, 0x2c, 0x9c, 0x31, 0x4a, 0xef, 0xda, 0xcb, 0xcb, 0xa5, - 0x02, 0x6b, 0x8a, 0x01, 0xde, 0xb2, 0x97, 0xd7, 0x57, 0x77, 0xd6, 0x4b, 0xc5, 0x1b, 0x0d, 0xfd, - 0x99, 0x1c, 0x39, 0x0f, 0x73, 0x4b, 0xcb, 0xbb, 0xab, 0x8b, 0xcb, 0x59, 0xbc, 0x67, 0xa0, 0xa4, - 0x17, 0x6e, 0x6f, 0x6e, 0x6f, 0x71, 0xd6, 0x3a, 0xf4, 0xe1, 0x72, 0xad, 0xba, 0xb3, 0xbd, 0xb2, - 0x51, 0x1a, 0xb0, 0x06, 0x47, 0x8b, 0xa5, 0xe2, 0x8d, 0x1f, 0x19, 0x6f, 0xe8, 0x58, 0xf3, 0x05, - 0xfa, 0x4e, 0xbd, 0x7a, 0x2f, 0xbf, 0x0a, 0x5e, 0xba, 0x7e, 0xb7, 0x5a, 0x2a, 0x90, 0x8b, 0x70, - 0xce, 0x80, 0x6e, 0x55, 0xeb, 0xf5, 0x87, 0x9b, 0xf6, 0xd2, 0xda, 0x72, 0xbd, 0x5e, 0x2a, 0xde, - 0xd8, 0x35, 0xa2, 0xe8, 0xb1, 0x1a, 0xd6, 0xef, 0x56, 0x1b, 0xf6, 0xf2, 0x67, 0x3b, 0xab, 0xf6, - 0xf2, 0x52, 0xba, 0x06, 0xa3, 0xf4, 0x8b, 0xe5, 0x7a, 0xa9, 0x40, 0xa6, 0xe1, 0xb4, 0x01, 0xdd, - 0xd8, 0x2c, 0x15, 0x6f, 0xbc, 0x2e, 0x02, 0xad, 0x91, 0x29, 0x80, 0xa5, 0xe5, 0xfa, 0xe2, 0xf2, - 0xc6, 0xd2, 0xea, 0xc6, 0xbd, 0xd2, 0x29, 0x32, 0x09, 0x63, 0x55, 0xf5, 0xb3, 0x70, 0xe3, 0x03, - 0x38, 0x9d, 0x50, 0xef, 0x19, 0x86, 0x52, 0x8c, 0x4b, 0xa7, 0x70, 0xf8, 0xe5, 0x4f, 0xb4, 0xb1, - 0x72, 0x4d, 0xbd, 0x54, 0xb8, 0x51, 0x93, 0x59, 0x7c, 0xb5, 0xef, 0x9c, 0x8c, 0xc3, 0xc8, 0xd2, - 0xf2, 0xdd, 0xea, 0xce, 0xda, 0x76, 0xe9, 0x14, 0xfb, 0xb1, 0x68, 0x2f, 0x57, 0xb7, 0x97, 0x97, - 0x4a, 0x05, 0x32, 0x06, 0x43, 0xf5, 0xed, 0xea, 0xf6, 0x72, 0xa9, 0x48, 0x46, 0x61, 0x70, 0xa7, - 0xbe, 0x6c, 0x97, 0x06, 0x16, 0xfe, 0xc5, 0xdf, 0x2d, 0x70, 0x43, 0xa3, 0x7c, 0x8f, 0xf5, 0xb5, - 0xa6, 0x50, 0x8a, 0x2d, 0x4f, 0xa4, 0x2c, 0xcd, 0xd5, 0x1e, 0x51, 0x0a, 0x98, 0xef, 0x71, 0xb9, - 0x83, 0x08, 0xd7, 0x0b, 0xb7, 0x0b, 0xc4, 0x46, 0x67, 0x98, 0x84, 0x7e, 0xa5, 0x38, 0x67, 0xab, - 0xc0, 0xf3, 0x17, 0x7b, 0xaa, 0x65, 0xe4, 0x57, 0xc0, 0xd2, 0x79, 0xe6, 0x68, 0x21, 0xdf, 0x3b, - 0x9e, 0xb6, 0x21, 0xeb, 0x7c, 0xfd, 0x78, 0xe8, 0xe4, 0x3e, 0x4c, 0x32, 0xd9, 0x5c, 0xa1, 0x91, - 0xf3, 0x49, 0x42, 0x4d, 0x25, 0x98, 0xbf, 0x90, 0x5d, 0xa8, 0xb2, 0x0a, 0x4d, 0x60, 0x47, 0xb8, - 0x72, 0x1d, 0x12, 0x19, 0x8c, 0x43, 0x42, 0xf8, 0x8e, 0x3f, 0x7f, 0x26, 0x01, 0xde, 0xbd, 0x73, - 0xbb, 0x40, 0xea, 0x18, 0x09, 0xcf, 0x10, 0xf2, 0x89, 0x7c, 0x20, 0x98, 0x96, 0xfe, 0x79, 0x6b, - 0x2a, 0x2a, 0x07, 0x68, 0x8e, 0x76, 0xb0, 0x01, 0x24, 0x2d, 0x3b, 0x93, 0xcb, 0xf1, 0x3a, 0xc8, - 0x16, 0xab, 0xe7, 0xcf, 0xa6, 0x2e, 0xb2, 0x96, 0x99, 0xf4, 0x44, 0x96, 0x61, 0x4a, 0xbc, 0xb4, - 0x17, 0xd2, 0x3c, 0xe9, 0xa5, 0x0f, 0xe4, 0xb2, 0xb9, 0x87, 0xe3, 0xa4, 0x34, 0x02, 0x32, 0x1f, - 0xf7, 0x23, 0xa9, 0x26, 0xcc, 0x9f, 0xcf, 0x2c, 0x13, 0xfd, 0xbb, 0x0b, 0x53, 0xa6, 0x72, 0x41, - 0xe4, 0x04, 0x65, 0xea, 0x1c, 0xb9, 0x0d, 0x6a, 0xc0, 0xdc, 0xba, 0xe3, 0xe2, 0x7d, 0x89, 0x70, - 0xd2, 0x93, 0x7e, 0x70, 0xa4, 0xd2, 0xc3, 0x31, 0xae, 0x4e, 0xbd, 0x96, 0x9a, 0x84, 0xbc, 0x0c, - 0x01, 0xf8, 0xd9, 0xd4, 0xa5, 0x8c, 0x6c, 0xfa, 0x28, 0x12, 0xcb, 0xcc, 0xeb, 0x9c, 0xe5, 0x76, - 0x3a, 0x9f, 0xe7, 0x29, 0x4d, 0xd6, 0x51, 0x48, 0x4f, 0x70, 0xd4, 0xd6, 0xc4, 0x89, 0xd9, 0x95, - 0x31, 0xde, 0x83, 0x96, 0x6c, 0x5f, 0x14, 0x86, 0x24, 0x67, 0xe0, 0x72, 0x99, 0xdd, 0x2e, 0x90, - 0xaf, 0xf1, 0xab, 0xce, 0x64, 0xf7, 0xd0, 0x8d, 0xf6, 0x85, 0xf4, 0x73, 0x3e, 0x93, 0x81, 0xf8, - 0x50, 0x7a, 0x70, 0xb7, 0x61, 0x26, 0xcb, 0x39, 0x5b, 0x0d, 0x68, 0x0f, 0xcf, 0xed, 0xdc, 0x55, - 0x60, 0x33, 0x55, 0xa3, 0x95, 0x3f, 0x49, 0x3d, 0x7c, 0x83, 0x73, 0x79, 0x7e, 0x04, 0x53, 0x6c, - 0x95, 0x3c, 0xa0, 0xb4, 0x53, 0x6d, 0xbb, 0x4f, 0x69, 0x48, 0x64, 0x18, 0x63, 0x05, 0xca, 0xa3, - 0xbd, 0x5e, 0x20, 0xdf, 0x85, 0xf1, 0x87, 0x4e, 0xd4, 0xdc, 0x17, 0xe1, 0x3c, 0x65, 0xb4, 0x4f, - 0x84, 0xcd, 0xcb, 0x5f, 0x58, 0x78, 0xbb, 0x40, 0x7e, 0x00, 0x23, 0xf7, 0x68, 0x84, 0x0f, 0xb4, - 0xaf, 0x28, 0x5f, 0x42, 0x6e, 0x9f, 0x5c, 0xf5, 0xd4, 0x2b, 0x24, 0xd9, 0xe0, 0xa4, 0x31, 0x97, - 0xdc, 0x02, 0xe0, 0x1b, 0x02, 0x72, 0x48, 0x16, 0xcf, 0xa7, 0x9a, 0x4d, 0xee, 0x31, 0xe1, 0xa1, - 0x4d, 0x23, 0x7a, 0xdc, 0x2a, 0xf3, 0xc6, 0x68, 0x0d, 0xa6, 0x54, 0x22, 0xa6, 0x0d, 0x8c, 0xba, - 0x62, 0x25, 0x98, 0x85, 0x27, 0xe0, 0xf6, 0x01, 0xfb, 0x2a, 0x78, 0x16, 0x62, 0x0c, 0xcf, 0x81, - 0x3b, 0xe9, 0x9c, 0x1e, 0xe3, 0x43, 0xdf, 0x42, 0xe5, 0x20, 0x72, 0x34, 0x8d, 0x76, 0xc5, 0x0f, - 0x23, 0x93, 0x56, 0x41, 0xb2, 0x69, 0x7f, 0x19, 0xe6, 0xf5, 0x7a, 0xcd, 0x78, 0xd2, 0xf1, 0x9e, - 0x9b, 0x17, 0xa6, 0x7a, 0xfe, 0x4a, 0x0f, 0x0c, 0xa1, 0xbf, 0x0d, 0xfc, 0x56, 0xb1, 0x80, 0xdb, - 0xc9, 0x12, 0x4c, 0xcb, 0xba, 0x36, 0x3b, 0xd4, 0xab, 0xd7, 0x57, 0x30, 0xe9, 0x8e, 0xf4, 0x5c, - 0xd1, 0x60, 0x92, 0x3b, 0x49, 0x17, 0xb1, 0xa3, 0xcf, 0x08, 0xc3, 0x41, 0x7a, 0x05, 0xe7, 0x88, - 0x8f, 0xbe, 0xcc, 0x40, 0xc7, 0x0f, 0xb8, 0x51, 0xc9, 0x10, 0xfe, 0x77, 0x17, 0x48, 0x0f, 0x05, - 0x68, 0x3e, 0x47, 0x85, 0xb8, 0x5d, 0x20, 0x5f, 0x00, 0x49, 0xab, 0x24, 0x6a, 0x08, 0x73, 0xd5, - 0x2f, 0x35, 0x84, 0x3d, 0xf4, 0x99, 0x7b, 0x30, 0xab, 0x82, 0xf0, 0x68, 0xb5, 0x2e, 0x90, 0x9c, - 0xd6, 0xe4, 0xb5, 0x92, 0x7c, 0x02, 0xd3, 0x62, 0xd1, 0xea, 0x05, 0xa4, 0xa4, 0xf6, 0x1f, 0xa1, - 0x95, 0xe4, 0xae, 0xd3, 0xfb, 0x30, 0x5b, 0x4f, 0x8c, 0x18, 0x77, 0xe6, 0x3f, 0x67, 0xb2, 0x40, - 0x60, 0x9d, 0x46, 0x7c, 0xc8, 0xb2, 0x79, 0x3d, 0x00, 0xc2, 0x8d, 0x42, 0x92, 0xdd, 0x53, 0x97, - 0x3e, 0x23, 0x17, 0x13, 0x4d, 0x67, 0x40, 0x44, 0xc3, 0x0d, 0x2c, 0xb7, 0x67, 0xdb, 0x3c, 0x87, - 0x36, 0x42, 0x8d, 0x7b, 0xf4, 0xcb, 0x06, 0x81, 0x71, 0x15, 0x2f, 0x26, 0xe0, 0x5c, 0x2e, 0x06, - 0xf9, 0x35, 0x8c, 0x7e, 0xdb, 0x5b, 0xad, 0x22, 0xdf, 0xcd, 0xd2, 0x7e, 0x73, 0x14, 0xc3, 0xf9, - 0x37, 0x8f, 0x87, 0xac, 0x14, 0xd9, 0xc9, 0x7b, 0x34, 0xda, 0x6a, 0x77, 0xf7, 0x5c, 0xcc, 0xae, - 0x4a, 0x94, 0xd1, 0x48, 0x81, 0xc4, 0xba, 0x94, 0x41, 0xe7, 0xe2, 0x82, 0x3a, 0xfd, 0x31, 0x59, - 0x85, 0x12, 0xdf, 0xff, 0x35, 0x16, 0x17, 0x53, 0x2c, 0x04, 0x8a, 0x13, 0x38, 0x07, 0x61, 0xee, - 0x6c, 0xdd, 0xe2, 0xbe, 0x51, 0x44, 0x7e, 0x93, 0xba, 0x80, 0x39, 0x6d, 0xc0, 0x54, 0x46, 0x00, - 0x36, 0x23, 0x36, 0x0d, 0x69, 0x24, 0xc3, 0xec, 0xf0, 0xdc, 0xba, 0x57, 0xe3, 0xc3, 0x3e, 0x5d, - 0x1a, 0x7f, 0xfa, 0x89, 0x90, 0x70, 0xbb, 0x6f, 0x11, 0x95, 0x6f, 0x38, 0x83, 0xe9, 0xeb, 0x86, - 0x4c, 0x72, 0x32, 0xbe, 0x6f, 0xe3, 0x19, 0x84, 0xa1, 0x85, 0x66, 0xe3, 0xb6, 0xb1, 0xdf, 0x92, - 0x6a, 0x52, 0xa3, 0xda, 0x5d, 0xc0, 0x2d, 0x8d, 0x1d, 0x92, 0x4c, 0x84, 0xed, 0x06, 0x01, 0xf5, - 0x38, 0x71, 0x9e, 0xbc, 0x91, 0x45, 0xfd, 0x31, 0x6e, 0x3d, 0x1a, 0x35, 0x7f, 0x73, 0xd8, 0x8f, - 0x05, 0xcf, 0x05, 0x75, 0xbb, 0x40, 0xde, 0x83, 0x51, 0xd1, 0x46, 0x46, 0x64, 0x34, 0x3a, 0xec, - 0xd1, 0x6a, 0xa4, 0x04, 0x3e, 0x48, 0xd8, 0x66, 0x13, 0x27, 0x6f, 0xf6, 0x79, 0x9b, 0xdf, 0x63, - 0x87, 0x6d, 0xeb, 0x45, 0x28, 0x17, 0xe5, 0xa9, 0x8b, 0x94, 0x65, 0x15, 0x8e, 0x46, 0x82, 0xfa, - 0x1c, 0x8f, 0x9c, 0x09, 0x93, 0x9b, 0x31, 0xa6, 0xa3, 0x0a, 0xcd, 0xa6, 0xe4, 0x66, 0x03, 0xdc, - 0xef, 0xac, 0x5d, 0x85, 0x52, 0xb5, 0x89, 0x27, 0x41, 0x9d, 0x1e, 0x38, 0x9d, 0x7d, 0x3f, 0xa0, - 0x4a, 0x69, 0x49, 0x16, 0x48, 0x5e, 0xb3, 0x4a, 0xb2, 0x10, 0x05, 0x6b, 0xd4, 0xc1, 0xc0, 0xd7, - 0x73, 0x4a, 0xb4, 0x48, 0x14, 0x65, 0x53, 0xf4, 0x50, 0x52, 0x66, 0x16, 0x99, 0x5a, 0xd5, 0x7e, - 0x39, 0x36, 0x1f, 0xe0, 0x86, 0xa1, 0x90, 0x43, 0x75, 0x42, 0x28, 0x90, 0x52, 0xe7, 0xe4, 0xf3, - 0x23, 0x85, 0x5a, 0x95, 0xf7, 0xc6, 0xf1, 0xb0, 0xe4, 0x51, 0xe7, 0x55, 0xff, 0x7d, 0x98, 0x5a, - 0x66, 0x1b, 0x7a, 0xb7, 0xe5, 0xf2, 0x60, 0xff, 0xc4, 0x8c, 0xde, 0x9e, 0x4b, 0xb8, 0x22, 0xd3, - 0xaf, 0x21, 0xa9, 0x50, 0xfd, 0xe5, 0x99, 0xa2, 0xc1, 0xe4, 0x7c, 0xcc, 0x48, 0xb6, 0x22, 0xdf, - 0x02, 0xaa, 0xe6, 0x42, 0xd7, 0x9f, 0xe3, 0x12, 0x61, 0xb5, 0xd3, 0x69, 0x4b, 0x93, 0x34, 0xbf, - 0x7b, 0xbf, 0x66, 0xa8, 0x90, 0xa9, 0x72, 0xc9, 0x3b, 0x2d, 0x34, 0x7e, 0xae, 0xa5, 0x43, 0xce, - 0xe1, 0x99, 0x53, 0xde, 0x6f, 0x2d, 0xaa, 0xf0, 0xdc, 0xd5, 0x76, 0x3b, 0x45, 0x1c, 0x92, 0x37, - 0x4c, 0xee, 0x59, 0x38, 0xfd, 0x6a, 0x40, 0x15, 0x9d, 0x4b, 0x5d, 0xd5, 0x4e, 0x87, 0x6f, 0x96, - 0x97, 0xd4, 0x86, 0x61, 0x16, 0xa4, 0x55, 0xf4, 0x64, 0xb9, 0xd8, 0xdb, 0xef, 0xe3, 0x32, 0x8b, - 0x73, 0x26, 0x13, 0x5d, 0xe1, 0x4d, 0xa6, 0x8c, 0x56, 0x42, 0x58, 0xa2, 0x50, 0x9d, 0x13, 0xa7, - 0x51, 0xf4, 0x89, 0x13, 0x30, 0x2b, 0xcb, 0x4c, 0x02, 0x2e, 0xf9, 0x5d, 0xca, 0x2b, 0x56, 0x96, - 0xd2, 0x52, 0x32, 0x2f, 0xbd, 0xea, 0x72, 0x3a, 0x61, 0xbd, 0xd9, 0xe5, 0xdc, 0x84, 0xf6, 0xf7, - 0xa1, 0x94, 0x4c, 0x89, 0xad, 0x98, 0xe6, 0xe4, 0xca, 0xce, 0x9d, 0x93, 0xbb, 0x30, 0xa3, 0xcf, - 0xa8, 0xea, 0x77, 0xde, 0xee, 0x9f, 0xc7, 0x67, 0x1b, 0x66, 0x33, 0x33, 0x58, 0xab, 0x23, 0xb6, - 0x57, 0x7e, 0xeb, 0x5c, 0xae, 0x14, 0xce, 0x66, 0x27, 0xb1, 0x27, 0xaf, 0x99, 0x8a, 0x7f, 0x76, - 0x4a, 0xef, 0xf9, 0x6b, 0x7d, 0xb0, 0xc4, 0x80, 0x7e, 0x8d, 0x27, 0x60, 0xaa, 0x8e, 0x2b, 0x9a, - 0x29, 0x20, 0xa7, 0x02, 0xab, 0x17, 0x8a, 0x5a, 0x03, 0x33, 0x19, 0xc5, 0xf9, 0x43, 0x7c, 0x35, - 0x9f, 0x67, 0xbc, 0xb0, 0x76, 0x65, 0x14, 0xea, 0xdc, 0x91, 0xe9, 0x99, 0xec, 0xbc, 0x87, 0x2e, - 0x39, 0xaf, 0xd6, 0xc3, 0xf1, 0x9b, 0x9c, 0xc7, 0xad, 0xa5, 0xcc, 0x36, 0x46, 0x26, 0xf2, 0xa4, - 0xd9, 0x26, 0x2b, 0x83, 0xba, 0x1a, 0x86, 0x5e, 0x39, 0xfa, 0xf9, 0x69, 0xfc, 0x15, 0xb7, 0xe3, - 0x98, 0x55, 0xe8, 0x76, 0x9c, 0x4c, 0xfe, 0x97, 0xf3, 0x11, 0x74, 0xe6, 0x0e, 0xbf, 0xb4, 0x4d, - 0xa4, 0x52, 0x27, 0xba, 0xaa, 0x94, 0x9d, 0x66, 0x5d, 0xad, 0x8d, 0x4c, 0x14, 0xbd, 0x8a, 0x87, - 0xf2, 0x1b, 0xcc, 0x19, 0xa5, 0x1e, 0x79, 0xe6, 0x7b, 0x8b, 0x29, 0x9b, 0x50, 0x8e, 0x27, 0x33, - 0xd1, 0x81, 0x13, 0x4e, 0xa5, 0x1c, 0x8c, 0x73, 0xb9, 0xd9, 0xe5, 0xc9, 0x77, 0x52, 0x5f, 0x7a, - 0xce, 0xc0, 0xf4, 0xac, 0x82, 0xef, 0xe7, 0x5a, 0x54, 0xeb, 0xf3, 0xb1, 0x11, 0x57, 0x4f, 0x44, - 0x9f, 0xda, 0xcf, 0x33, 0xb2, 0xd4, 0xdf, 0x43, 0xb9, 0x58, 0xcb, 0x34, 0x9f, 0xdb, 0xeb, 0x8b, - 0x59, 0x7c, 0xc2, 0xf4, 0x8e, 0xab, 0xb5, 0x4b, 0xca, 0x69, 0xc9, 0x82, 0x93, 0xec, 0xb8, 0xc7, - 0x69, 0x5a, 0x1e, 0x9f, 0x25, 0x18, 0xd7, 0x52, 0xd4, 0x93, 0x73, 0xc6, 0x30, 0x19, 0x67, 0xe8, - 0xbc, 0xd1, 0x39, 0xf3, 0xf8, 0x5c, 0x44, 0x53, 0xb2, 0x4a, 0x74, 0x9f, 0xdb, 0x8a, 0xf3, 0x69, - 0x1e, 0x86, 0x19, 0x59, 0x8d, 0x02, 0x6f, 0xcd, 0x85, 0xe4, 0xe0, 0x18, 0x0d, 0xca, 0xef, 0x12, - 0xd1, 0x87, 0xa6, 0x4f, 0x93, 0xf2, 0xe5, 0xd7, 0x69, 0x91, 0x07, 0x17, 0x53, 0xd1, 0xc8, 0xb0, - 0x85, 0x67, 0x95, 0x4d, 0x4c, 0x83, 0xa2, 0x81, 0x22, 0x9b, 0xcd, 0x16, 0x3e, 0x1f, 0xc9, 0xc8, - 0xd9, 0xaf, 0x76, 0xd8, 0x9e, 0x29, 0xfd, 0x33, 0x64, 0x37, 0xb5, 0x67, 0xe7, 0x72, 0xec, 0x99, - 0xc4, 0x3f, 0xb7, 0xa5, 0x3f, 0xd4, 0xf6, 0xec, 0x54, 0x66, 0x7e, 0x72, 0x3d, 0x29, 0xb8, 0xe5, - 0x25, 0xef, 0xef, 0x71, 0x26, 0xcc, 0x64, 0x25, 0xf5, 0xd7, 0xec, 0xba, 0xb9, 0x19, 0xff, 0x33, - 0x46, 0xc1, 0x96, 0xeb, 0x3f, 0x87, 0x5b, 0x8f, 0x14, 0xff, 0xb9, 0x2d, 0xfc, 0x52, 0xdb, 0xe8, - 0x12, 0xa9, 0xf8, 0x95, 0x3a, 0xde, 0x27, 0x57, 0x7f, 0x2e, 0xef, 0x0d, 0x7c, 0xd2, 0x94, 0xce, - 0xa3, 0xaf, 0x24, 0x9b, 0x5e, 0x59, 0xf6, 0x33, 0xcd, 0xbe, 0xb3, 0xe9, 0x2e, 0x32, 0x7e, 0x67, - 0x13, 0x46, 0xdb, 0x7e, 0x0d, 0xfb, 0x5a, 0x6e, 0xc6, 0x19, 0xf9, 0xf7, 0x13, 0x9b, 0x71, 0x7e, - 0x86, 0xfe, 0x1e, 0x6a, 0xd0, 0xe9, 0xba, 0xbb, 0xe7, 0x69, 0xe9, 0xf3, 0x95, 0x12, 0x94, 0xce, - 0xe8, 0xaf, 0xb6, 0x98, 0xac, 0x6c, 0xfb, 0x9b, 0x4c, 0xfe, 0xe1, 0xd2, 0xbb, 0x9e, 0x08, 0x9d, - 0xcc, 0xe7, 0xe7, 0x7f, 0x57, 0xdb, 0x4d, 0x66, 0xe6, 0x74, 0x8d, 0xa1, 0x9e, 0x85, 0x5c, 0x31, - 0xcc, 0x48, 0x88, 0xae, 0x18, 0x66, 0xa6, 0x2d, 0xbf, 0x85, 0x56, 0x17, 0xdb, 0x6f, 0x53, 0xdd, - 0xea, 0xa2, 0xa5, 0xb5, 0x4e, 0x18, 0x3d, 0xc8, 0xc7, 0x30, 0xa6, 0xd2, 0x7e, 0x2b, 0xfb, 0x76, - 0x32, 0xf3, 0xf8, 0x7c, 0x39, 0x5d, 0x20, 0x2a, 0x7c, 0x47, 0x1a, 0x3e, 0xb0, 0xce, 0xb2, 0x69, - 0x30, 0xca, 0xaf, 0xf6, 0x1d, 0x69, 0xf5, 0x30, 0xc8, 0x52, 0x49, 0xbf, 0x93, 0x64, 0xdf, 0x87, - 0x89, 0x38, 0xc1, 0xf7, 0xee, 0x82, 0x46, 0x98, 0xc8, 0xfa, 0x9d, 0x24, 0x7c, 0x4f, 0x5e, 0x69, - 0x60, 0x7d, 0x66, 0x61, 0xef, 0x53, 0xfc, 0x63, 0x69, 0x65, 0x31, 0x5a, 0x9a, 0x4a, 0x17, 0xde, - 0x63, 0xf3, 0x9d, 0xd0, 0x33, 0x6e, 0xaa, 0xa9, 0xcd, 0xc8, 0x99, 0xab, 0xa6, 0x36, 0x2b, 0xe7, - 0x6d, 0x6c, 0xf2, 0xff, 0x42, 0x9a, 0x14, 0x62, 0xa6, 0x17, 0x8d, 0x66, 0xa5, 0xf8, 0x5e, 0xca, - 0x2b, 0x4e, 0xb2, 0xae, 0x43, 0x29, 0x99, 0x1e, 0x54, 0xe9, 0x63, 0x39, 0x79, 0x5c, 0x95, 0x92, - 0x97, 0x9b, 0x57, 0x74, 0x4b, 0xda, 0xc7, 0x4d, 0xbe, 0x57, 0xb2, 0x1b, 0xa5, 0xb3, 0xce, 0x37, - 0x98, 0x4f, 0x1a, 0x99, 0x42, 0x75, 0x4d, 0x39, 0x95, 0x89, 0x54, 0x97, 0xac, 0x32, 0x92, 0x8b, - 0xba, 0x32, 0x68, 0x55, 0x76, 0x52, 0xf7, 0x37, 0x4c, 0x15, 0xb6, 0x47, 0x58, 0xf9, 0xbe, 0xd7, - 0xbf, 0xe4, 0x97, 0x60, 0x2e, 0x27, 0x4c, 0x36, 0xb9, 0x96, 0xb0, 0xb4, 0x66, 0x87, 0xd1, 0x56, - 0x0b, 0x24, 0x33, 0x85, 0xf7, 0x3a, 0xfa, 0x0d, 0x18, 0x21, 0x24, 0x52, 0x77, 0x71, 0x0f, 0xdd, - 0x68, 0x9f, 0x67, 0xaa, 0xd6, 0xb6, 0xcd, 0xcc, 0xd8, 0x13, 0xa4, 0x8e, 0xba, 0x88, 0x01, 0xcd, - 0xb8, 0x8e, 0xcb, 0x60, 0x38, 0x9f, 0xcd, 0x90, 0xed, 0x1d, 0x6c, 0x2d, 0x64, 0xc4, 0xf7, 0x50, - 0x6b, 0x21, 0x3f, 0xf6, 0x47, 0x6e, 0x33, 0xb7, 0xa4, 0x8c, 0x94, 0xcd, 0x31, 0x3f, 0xd4, 0x47, - 0x2e, 0xc7, 0xfb, 0x8c, 0x63, 0x2a, 0x7a, 0x07, 0xc9, 0x41, 0xef, 0xbd, 0x7b, 0xd8, 0xf2, 0xc8, - 0x35, 0xa9, 0x16, 0xb4, 0xf6, 0xe5, 0xc5, 0x09, 0xc9, 0x6d, 0xdf, 0xb2, 0xfc, 0x9e, 0xb2, 0xdb, - 0x77, 0xdc, 0x43, 0x57, 0xdd, 0x7f, 0x25, 0x02, 0xc8, 0x18, 0x1d, 0xd5, 0xe0, 0xf3, 0x39, 0x70, - 0xb2, 0x81, 0x8e, 0x40, 0x49, 0xa8, 0xa6, 0x94, 0x66, 0x47, 0xa8, 0xc9, 0xe5, 0xc7, 0xd7, 0xb1, - 0x11, 0xe1, 0xe3, 0x24, 0xeb, 0x38, 0x11, 0x1a, 0x44, 0xac, 0x63, 0x03, 0x7a, 0xb2, 0x75, 0x9c, - 0x60, 0x68, 0xae, 0xe3, 0x64, 0x33, 0x93, 0x9a, 0x7e, 0xee, 0xac, 0x26, 0x9b, 0xa9, 0xd6, 0x71, - 0x36, 0xc7, 0xfc, 0x48, 0x2c, 0xb9, 0x1c, 0xd5, 0x3a, 0x36, 0x39, 0xe6, 0xa0, 0x1f, 0x73, 0x1d, - 0x27, 0x2b, 0x31, 0xd7, 0xf1, 0x89, 0xda, 0xa7, 0xd6, 0x71, 0x76, 0xfb, 0x4e, 0xbc, 0x8e, 0x13, - 0xa1, 0x8b, 0x8c, 0x8e, 0x66, 0xad, 0xe3, 0x24, 0x3e, 0x5f, 0xc7, 0x49, 0x68, 0xc2, 0xb8, 0xd2, - 0x63, 0x1d, 0x27, 0x29, 0x3f, 0x43, 0x7e, 0x89, 0xb0, 0x2b, 0xc7, 0x59, 0xc9, 0xb9, 0x11, 0x5b, - 0xc8, 0x43, 0x34, 0xef, 0x25, 0xe0, 0xc7, 0x5b, 0xcd, 0x17, 0xf2, 0x98, 0xe2, 0x7a, 0xde, 0x95, - 0x83, 0x98, 0x6c, 0xae, 0x69, 0xbb, 0xca, 0x8e, 0x3a, 0xd3, 0xa3, 0xc1, 0xbb, 0x6c, 0xdd, 0xb4, - 0x7a, 0xf0, 0xed, 0x15, 0x34, 0xa7, 0x07, 0x5f, 0xa5, 0xca, 0x24, 0xf9, 0xe6, 0x92, 0xf4, 0x5e, - 0xdf, 0x9f, 0xcb, 0x0b, 0x8e, 0x24, 0xdd, 0x42, 0x42, 0x39, 0x3a, 0x71, 0x4b, 0x95, 0x92, 0x94, - 0x6c, 0xe9, 0x49, 0xd7, 0xf9, 0xba, 0x94, 0x1e, 0x52, 0xd1, 0xb6, 0x12, 0x9d, 0xd6, 0xd7, 0x7a, - 0x6e, 0x09, 0xd9, 0x46, 0x5b, 0x6e, 0x1a, 0xae, 0xd9, 0x81, 0xf3, 0xc2, 0x7a, 0xf5, 0xe5, 0x9a, - 0x8a, 0x1b, 0xa4, 0x73, 0xcd, 0x0b, 0x2a, 0xa4, 0xb8, 0xa6, 0xa9, 0x3f, 0x41, 0xeb, 0x97, 0x78, - 0x71, 0xe5, 0x3d, 0xf6, 0xf3, 0x2d, 0x29, 0xd3, 0x86, 0xb3, 0x12, 0xc3, 0x45, 0x1f, 0xb1, 0x8f, - 0xc4, 0x0d, 0x9e, 0x04, 0xe6, 0x0e, 0x7e, 0x16, 0x3d, 0xf9, 0x04, 0x4a, 0x62, 0x7b, 0x8b, 0x19, - 0x64, 0x21, 0xe6, 0x4e, 0x5d, 0x4d, 0x1a, 0xdd, 0x8e, 0xd1, 0x82, 0xe3, 0x18, 0xdb, 0x8e, 0x33, - 0x12, 0xf9, 0x96, 0x29, 0x76, 0x1c, 0x6e, 0x07, 0xdd, 0x30, 0xa2, 0xad, 0xb4, 0x45, 0xc9, 0x6c, - 0x8c, 0xf4, 0x8c, 0x30, 0xd1, 0x77, 0x17, 0xc8, 0x2a, 0xee, 0x6d, 0x26, 0xb8, 0x97, 0xc9, 0x2d, - 0x9b, 0x0d, 0x6e, 0x3d, 0x2b, 0xea, 0x59, 0x8f, 0xd9, 0xa6, 0xbc, 0xba, 0xf3, 0x1b, 0xa5, 0x86, - 0xe8, 0x98, 0xbd, 0xcb, 0x1b, 0xa2, 0x0f, 0xd1, 0x0d, 0x80, 0x9b, 0xff, 0xfa, 0x8d, 0x4c, 0xf2, - 0xa1, 0x11, 0xf9, 0x14, 0xc6, 0x24, 0x71, 0xff, 0x01, 0x49, 0x52, 0xe3, 0x80, 0x2c, 0xc1, 0xa4, - 0xf1, 0x8a, 0x4a, 0x69, 0x37, 0x59, 0x6f, 0xab, 0x7a, 0xcc, 0xf3, 0xa4, 0xf1, 0x5a, 0x4a, 0x71, - 0xc9, 0x7a, 0x43, 0x95, 0xcb, 0xe5, 0x07, 0x30, 0x2e, 0x86, 0xb4, 0xe7, 0x68, 0xe4, 0xdb, 0xdb, - 0x66, 0x35, 0x8f, 0xe4, 0x6e, 0xcb, 0x8d, 0x16, 0x7d, 0xef, 0xb1, 0xbb, 0xd7, 0x77, 0x60, 0xd2, - 0x24, 0xbb, 0x0b, 0xe4, 0x2b, 0xcc, 0xeb, 0x2c, 0xb3, 0x6d, 0xd3, 0xe8, 0x99, 0x1f, 0x3c, 0x71, - 0xbd, 0xbd, 0x3e, 0x2c, 0x2f, 0x9b, 0x2c, 0x93, 0x74, 0xd2, 0x77, 0xe4, 0x2b, 0x98, 0xaf, 0xe7, - 0x33, 0xef, 0xcb, 0xa4, 0xf7, 0xf1, 0x52, 0x87, 0x0b, 0xe8, 0x3d, 0x73, 0xd2, 0xb6, 0xf7, 0x64, - 0xfa, 0x05, 0x0f, 0xd8, 0x28, 0x6d, 0xf5, 0x4d, 0x3f, 0x68, 0xf5, 0xe7, 0x58, 0x31, 0x1d, 0x69, - 0x13, 0x64, 0x72, 0x30, 0xbe, 0x80, 0x73, 0xf5, 0x5c, 0xd6, 0xfd, 0x58, 0xf4, 0x93, 0x24, 0xcf, - 0xe3, 0x50, 0x9c, 0xb0, 0xdd, 0x3d, 0x79, 0xae, 0xe2, 0x9e, 0xc6, 0xce, 0xa1, 0xad, 0x80, 0x3e, - 0xa6, 0x01, 0xba, 0x6b, 0xf7, 0x73, 0x54, 0x36, 0xd1, 0x65, 0xcf, 0x57, 0xe1, 0x4c, 0x3d, 0xc5, - 0x2a, 0x8f, 0xa4, 0xdf, 0xfd, 0xcf, 0x34, 0xf6, 0xf4, 0x98, 0xed, 0xea, 0xe3, 0x25, 0x34, 0x7e, - 0x8f, 0x46, 0x3b, 0xab, 0x7d, 0x46, 0x49, 0xbe, 0x27, 0x90, 0x88, 0xbb, 0x77, 0x18, 0x65, 0x5d, - 0xa3, 0x4c, 0x63, 0xe4, 0x7e, 0xbc, 0x9f, 0xca, 0xbb, 0x90, 0xbe, 0xd5, 0xe6, 0x71, 0x78, 0x0b, - 0xf7, 0x42, 0xe1, 0xb2, 0x3c, 0x17, 0x8b, 0x00, 0x1c, 0x12, 0x9b, 0xea, 0x34, 0xef, 0xe5, 0x90, - 0x54, 0xb9, 0xfa, 0xc7, 0x97, 0x87, 0x80, 0x5d, 0x4a, 0xb9, 0xb2, 0xf7, 0x64, 0xc1, 0xad, 0xa0, - 0x6b, 0x7e, 0xf3, 0x89, 0x6e, 0x05, 0xd5, 0x32, 0xff, 0xcf, 0x9b, 0x79, 0xf9, 0xc5, 0x8e, 0x8f, - 0xc9, 0xf9, 0x75, 0xc7, 0x2f, 0x3d, 0xf7, 0xff, 0xfc, 0x5c, 0x0a, 0x2e, 0x2c, 0x48, 0x6f, 0x49, - 0xdb, 0x22, 0x56, 0x68, 0x72, 0xce, 0x1d, 0x1a, 0x65, 0x56, 0x44, 0x22, 0xd3, 0xac, 0xa8, 0x37, - 0x34, 0xdf, 0x96, 0x4f, 0x6c, 0xda, 0x69, 0xa3, 0x17, 0xf4, 0x81, 0xcf, 0x69, 0x62, 0xc7, 0xd8, - 0x74, 0x51, 0x7f, 0xff, 0xad, 0x69, 0xe1, 0xf5, 0x63, 0x0c, 0xbc, 0x0a, 0xa8, 0x9c, 0x2e, 0x8b, - 0x87, 0x52, 0x77, 0x46, 0xba, 0x5d, 0x20, 0x1b, 0x70, 0xf6, 0x1e, 0x8d, 0xc4, 0x1e, 0x67, 0xd3, - 0x30, 0x0a, 0xdc, 0x66, 0xd4, 0xf3, 0x62, 0x50, 0xea, 0x26, 0x19, 0x34, 0xbb, 0x6f, 0x33, 0x7e, - 0xf5, 0x6c, 0x7e, 0x3d, 0xe9, 0x7a, 0xb8, 0xc8, 0x8a, 0xdb, 0x86, 0x93, 0x34, 0x31, 0x7f, 0x89, - 0x8f, 0x70, 0x0f, 0x9c, 0x7c, 0xd2, 0x52, 0x1c, 0xfd, 0x44, 0x68, 0x5b, 0x37, 0x61, 0x98, 0x13, - 0xe5, 0x1e, 0xa8, 0x13, 0x3a, 0x0d, 0xb9, 0x03, 0x63, 0xca, 0x85, 0x86, 0x18, 0x45, 0xb9, 0xed, - 0xba, 0x03, 0x63, 0x5c, 0xb5, 0x3a, 0x3e, 0xc9, 0x87, 0x30, 0xa6, 0x7c, 0x6e, 0x4e, 0x7c, 0xd2, - 0x7f, 0x02, 0x93, 0xba, 0xf7, 0xcd, 0xc9, 0x07, 0xf2, 0x07, 0x78, 0x7d, 0x2b, 0x6f, 0x49, 0xf2, - 0xe9, 0x67, 0x13, 0x41, 0x61, 0xc4, 0x90, 0xf2, 0x0d, 0x52, 0x02, 0x73, 0x9b, 0x7f, 0x26, 0x45, - 0x4d, 0x3e, 0x94, 0x2f, 0x99, 0x14, 0x71, 0x1a, 0xa9, 0xc7, 0x98, 0x4d, 0xf1, 0x61, 0x7e, 0x11, - 0x62, 0xb5, 0xc1, 0xf6, 0x6d, 0xf6, 0x71, 0xae, 0x99, 0xfb, 0x0f, 0x5d, 0x1e, 0x97, 0x4d, 0x94, - 0xd2, 0x52, 0xb9, 0xf4, 0xf2, 0x19, 0x5d, 0xca, 0x4f, 0xbf, 0x87, 0x93, 0x71, 0x1f, 0xb5, 0xc0, - 0x54, 0x69, 0x6e, 0xf7, 0x7a, 0xa4, 0xf3, 0x8b, 0xd5, 0xde, 0x34, 0xbb, 0x1e, 0x64, 0xbd, 0xb4, - 0x68, 0xf1, 0x3e, 0xf3, 0x95, 0xb0, 0x5b, 0x95, 0x4e, 0x8c, 0xc7, 0xef, 0x6c, 0x7e, 0xcb, 0xce, - 0x67, 0x5c, 0x6c, 0xf7, 0x9d, 0x8b, 0x3c, 0x76, 0xbf, 0x84, 0xd2, 0x61, 0x66, 0x54, 0xb0, 0x7c, - 0x66, 0xd7, 0x35, 0xdf, 0x88, 0x4c, 0x4a, 0x75, 0xe8, 0x3d, 0xc1, 0x27, 0x62, 0xd9, 0xd9, 0x06, - 0x5f, 0xef, 0xc3, 0x45, 0x8e, 0xc4, 0x77, 0xfa, 0xe2, 0xa9, 0x6b, 0xd2, 0xf3, 0xfc, 0x84, 0xcd, - 0xae, 0xaf, 0x4f, 0xf6, 0xc4, 0x8c, 0x9b, 0x6b, 0xe5, 0x21, 0x9a, 0xcd, 0xd0, 0xf4, 0x10, 0xed, - 0xd9, 0x87, 0xbc, 0xe1, 0xff, 0x0c, 0x2a, 0xb1, 0x03, 0xc8, 0xc9, 0x26, 0x21, 0xdf, 0x31, 0x91, - 0xa4, 0x46, 0x2a, 0x24, 0xbd, 0xd2, 0x09, 0xcd, 0x5f, 0xc9, 0x1b, 0x61, 0xfd, 0x19, 0x8c, 0x70, - 0x6c, 0x4b, 0xe4, 0xdd, 0xcc, 0xcb, 0xe0, 0xd9, 0xc3, 0x0e, 0x2b, 0xde, 0xcc, 0xbd, 0x12, 0x46, - 0xe9, 0xd9, 0x3e, 0x39, 0x23, 0xe5, 0x9f, 0x91, 0x60, 0x64, 0xf5, 0x98, 0xde, 0xfe, 0x57, 0x8f, - 0xe5, 0x9c, 0x79, 0x3d, 0xf9, 0x84, 0x3a, 0xf1, 0x3b, 0xb1, 0x44, 0x10, 0x41, 0xfd, 0x6d, 0x6e, - 0xba, 0x28, 0xf9, 0xc8, 0x29, 0x0b, 0x43, 0x39, 0x45, 0x95, 0x65, 0x15, 0x0c, 0xce, 0x54, 0x11, - 0x3f, 0x70, 0xa3, 0xe7, 0x8b, 0xf6, 0x5a, 0x6c, 0x56, 0xd0, 0x0b, 0x24, 0x6f, 0x90, 0x85, 0xf6, - 0x1a, 0xf9, 0x12, 0xb7, 0x12, 0xc1, 0xbe, 0xe6, 0xfb, 0x51, 0x18, 0x05, 0x4e, 0xa7, 0xde, 0x0c, - 0xdc, 0x4e, 0x94, 0xdb, 0xe9, 0xd8, 0x87, 0x3b, 0x8b, 0x4c, 0x73, 0x29, 0x15, 0x71, 0xec, 0xb3, - 0x22, 0xdf, 0xa8, 0x67, 0x35, 0x59, 0x85, 0x3d, 0x34, 0x97, 0xba, 0x8c, 0x5c, 0xff, 0x2a, 0x99, - 0x36, 0x60, 0x2e, 0x27, 0x5e, 0x90, 0xba, 0xbd, 0xed, 0x1d, 0x4f, 0x68, 0xbe, 0x77, 0xc5, 0xe4, - 0x2b, 0x98, 0xcd, 0x0c, 0x28, 0xa4, 0x2c, 0xd0, 0xbd, 0xc2, 0x0d, 0xf5, 0x63, 0xfe, 0x04, 0xca, - 0xfc, 0x41, 0x07, 0xfa, 0x2d, 0x1b, 0xb1, 0x65, 0xe2, 0x67, 0x3e, 0x39, 0x08, 0xc9, 0xfd, 0x3a, - 0x1f, 0x4f, 0x3d, 0x36, 0x9f, 0xc1, 0xa0, 0x22, 0x89, 0x8c, 0xf1, 0xea, 0xc3, 0xcb, 0x2a, 0xec, - 0xf5, 0x96, 0x68, 0x0b, 0x66, 0x77, 0x69, 0xe0, 0x3e, 0x7e, 0x9e, 0x64, 0x28, 0x47, 0x26, 0xb3, - 0xb4, 0x17, 0xc7, 0xcf, 0x61, 0x6e, 0xd1, 0x3f, 0xe8, 0x88, 0x57, 0x7b, 0x06, 0x4f, 0x75, 0x15, - 0x9f, 0x5d, 0xde, 0xdf, 0x97, 0x69, 0x3e, 0x3f, 0xb7, 0xbf, 0x72, 0x61, 0xeb, 0x9b, 0xfe, 0x5f, - 0xbd, 0x3d, 0x33, 0xe9, 0xb7, 0x71, 0x11, 0x66, 0x25, 0xfb, 0xd7, 0x17, 0x61, 0x56, 0x79, 0xef, - 0x37, 0x60, 0x73, 0x39, 0xf9, 0xfd, 0x7b, 0x70, 0x3d, 0x46, 0x6b, 0x37, 0xe4, 0xd9, 0x62, 0xa6, - 0x2b, 0x4f, 0x38, 0x4d, 0x67, 0xe6, 0x32, 0xcf, 0x6c, 0xa7, 0x16, 0x55, 0xa1, 0xdd, 0xee, 0x21, - 0x62, 0x11, 0x3d, 0xac, 0x02, 0xc3, 0x44, 0x23, 0xfe, 0xa4, 0x4e, 0xdb, 0x6b, 0xb7, 0x4e, 0x11, - 0xa3, 0x50, 0xfb, 0x01, 0x4c, 0xd4, 0xf5, 0xca, 0x33, 0x2a, 0xc9, 0x5d, 0x14, 0xea, 0x15, 0x50, - 0xff, 0xb6, 0xf7, 0xf0, 0x05, 0x55, 0x07, 0xcf, 0xb1, 0x7a, 0x91, 0xeb, 0x3a, 0x63, 0xe4, 0x9e, - 0x53, 0xa7, 0x40, 0x56, 0x6a, 0x48, 0xe5, 0x3a, 0x93, 0x9d, 0xae, 0xae, 0xc1, 0x33, 0xda, 0x24, - 0x33, 0x7f, 0x12, 0xab, 0x7f, 0x8a, 0x5d, 0xe5, 0x13, 0xdf, 0x33, 0x75, 0x28, 0xf7, 0xf3, 0x89, - 0xb3, 0xed, 0xe9, 0x7e, 0x3e, 0xa9, 0x1c, 0x7e, 0xba, 0x9f, 0x4f, 0x46, 0x82, 0xbe, 0x65, 0xe4, - 0x15, 0xa7, 0x02, 0xea, 0x61, 0x8c, 0x50, 0x6c, 0x32, 0x32, 0x0e, 0x3d, 0xd0, 0x83, 0x73, 0xf0, - 0x04, 0x42, 0x3d, 0x6c, 0xad, 0xc9, 0xa0, 0x1c, 0x89, 0x8c, 0x43, 0x77, 0xa1, 0xc4, 0x73, 0x29, - 0xc4, 0x31, 0x0d, 0x63, 0xd7, 0xbf, 0x74, 0x8a, 0x87, 0x1e, 0x93, 0x5a, 0x4a, 0x46, 0x82, 0x53, - 0x26, 0xb3, 0x9c, 0x10, 0x71, 0x3d, 0x96, 0x2a, 0xc4, 0xf1, 0xde, 0x94, 0x61, 0x2a, 0x15, 0x02, - 0x6e, 0xfe, 0x5c, 0x46, 0x89, 0x12, 0x29, 0x27, 0xf4, 0xe8, 0x70, 0xaa, 0x4b, 0x19, 0x21, 0xe3, - 0xe6, 0xcf, 0x67, 0x96, 0x09, 0x46, 0x11, 0xcf, 0x32, 0x9d, 0x9d, 0x1b, 0x3b, 0x7e, 0xc8, 0xd5, - 0x03, 0x47, 0x56, 0x73, 0xe3, 0x38, 0xa8, 0xa2, 0x56, 0xaa, 0x12, 0x21, 0x65, 0x24, 0xe4, 0xfe, - 0x4e, 0xc6, 0x5b, 0x0b, 0x03, 0x23, 0xf6, 0x06, 0xeb, 0x9d, 0x1d, 0x9c, 0x3c, 0x94, 0x89, 0x69, - 0x72, 0x6a, 0xea, 0xc7, 0x20, 0x77, 0x06, 0x1f, 0xca, 0x54, 0x34, 0xaf, 0x9a, 0xf1, 0x23, 0xb8, - 0x90, 0x78, 0xc0, 0x61, 0x32, 0xbe, 0x91, 0xfd, 0xca, 0x23, 0x73, 0x78, 0xf2, 0x65, 0xf6, 0xcb, - 0xe9, 0x87, 0x1e, 0x89, 0x79, 0x3f, 0xe9, 0x9e, 0xb7, 0x0e, 0x53, 0xb8, 0xcd, 0xc8, 0xd4, 0xf2, - 0x71, 0x6c, 0x18, 0x13, 0x9c, 0x0c, 0x52, 0x94, 0x2c, 0x55, 0xef, 0xc7, 0x27, 0xc4, 0xa3, 0x60, - 0x9e, 0xa8, 0x7e, 0xde, 0x7c, 0x29, 0x8c, 0xc0, 0xac, 0x53, 0x4c, 0xe4, 0xbf, 0x27, 0x3f, 0x80, - 0xd3, 0xf1, 0x5b, 0x61, 0xce, 0x22, 0x03, 0xad, 0x87, 0xa1, 0xec, 0x74, 0xfc, 0x60, 0xf8, 0xe4, - 0xe4, 0x2b, 0xf2, 0x28, 0x8a, 0xc9, 0x2f, 0xa6, 0x9e, 0xbb, 0x18, 0x7d, 0x38, 0xce, 0x89, 0xa4, - 0x8d, 0xed, 0x49, 0x67, 0xa7, 0x89, 0x9f, 0x5b, 0x76, 0xd8, 0x43, 0xfd, 0x73, 0xeb, 0x19, 0x9a, - 0x51, 0x89, 0xbf, 0x39, 0x7c, 0xd6, 0xe1, 0x2a, 0x86, 0x4a, 0xd9, 0xe2, 0xc1, 0xf1, 0xb2, 0xb1, - 0xf2, 0xdb, 0x9e, 0x0c, 0xb0, 0xd2, 0x86, 0x2b, 0x7d, 0xe3, 0x3e, 0x92, 0x5b, 0x86, 0x8b, 0x4b, - 0xff, 0x08, 0x91, 0x3d, 0x34, 0x8f, 0x99, 0xac, 0xf0, 0x89, 0xea, 0x9c, 0xed, 0x11, 0xc9, 0x51, - 0x9d, 0xb3, 0x3d, 0xe3, 0x2f, 0x7e, 0x8e, 0xd9, 0x9e, 0xc4, 0x19, 0x85, 0xe1, 0x8f, 0xa8, 0xc7, - 0x83, 0x42, 0xf7, 0xbc, 0xf6, 0xb9, 0x62, 0x5e, 0x8a, 0xa6, 0x08, 0x51, 0xa7, 0xb9, 0x24, 0x34, - 0xb1, 0x3c, 0xe6, 0xfd, 0x99, 0xf4, 0x70, 0xad, 0xbe, 0xc4, 0x17, 0xe0, 0x89, 0x5b, 0x9e, 0x03, - 0xaf, 0x2d, 0xfd, 0xf4, 0x3f, 0x5d, 0x2a, 0xfc, 0xf4, 0x67, 0x97, 0x0a, 0xff, 0xee, 0x67, 0x97, - 0x0a, 0xff, 0xf1, 0x67, 0x97, 0x0a, 0x5f, 0x2e, 0x1c, 0x2f, 0x34, 0x31, 0xcf, 0xcf, 0x78, 0x8b, - 0xb3, 0x1b, 0xc6, 0xff, 0xde, 0xfa, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xa1, 0x18, 0xaf, - 0x19, 0xec, 0x00, 0x00, + 0x73, 0x4a, 0x6a, 0x8d, 0xaf, 0x7d, 0x61, 0xfb, 0x3e, 0x7c, 0x71, 0x91, 0xc4, 0x06, 0x92, 0xc0, + 0x81, 0x3f, 0x9c, 0x00, 0x09, 0x10, 0x04, 0x08, 0xe0, 0x9f, 0xc0, 0x3f, 0xf1, 0x47, 0xbe, 0x32, + 0x31, 0x10, 0x24, 0x86, 0xed, 0x9f, 0x00, 0xa1, 0x93, 0x01, 0xfc, 0x43, 0x24, 0x1f, 0x46, 0x90, + 0x00, 0x19, 0xc0, 0x40, 0xb0, 0xd7, 0x7e, 0x9c, 0xbd, 0xcf, 0xa3, 0x8a, 0x94, 0xd4, 0xe3, 0xfc, + 0x48, 0xac, 0xb5, 0xd7, 0x5a, 0xfb, 0x79, 0xf6, 0x5e, 0x6b, 0xed, 0xb5, 0xd7, 0x82, 0x9b, 0x11, + 0x6d, 0xd3, 0x8e, 0x1f, 0x44, 0xb7, 0xda, 0x74, 0xcf, 0x69, 0x3e, 0xbf, 0xd5, 0x6c, 0xbb, 0xd4, + 0x8b, 0x6e, 0x75, 0x02, 0x3f, 0xf2, 0x6f, 0x39, 0xdd, 0x68, 0x3f, 0xa4, 0xc1, 0x53, 0xb7, 0x49, + 0x6f, 0x22, 0x84, 0x0c, 0xe1, 0x7f, 0xf3, 0x33, 0x7b, 0xfe, 0x9e, 0xcf, 0x71, 0xd8, 0x5f, 0xbc, + 0x70, 0xfe, 0xfc, 0x9e, 0xef, 0xef, 0xb5, 0x29, 0x27, 0x7e, 0xd4, 0x7d, 0x7c, 0x8b, 0x1e, 0x74, + 0xa2, 0xe7, 0xa2, 0xb0, 0x92, 0x2c, 0x8c, 0xdc, 0x03, 0x1a, 0x46, 0xce, 0x41, 0x47, 0x20, 0xbc, + 0xa1, 0x9a, 0xe2, 0x44, 0x11, 0x2b, 0x89, 0x5c, 0xdf, 0xbb, 0xf5, 0xf4, 0x8e, 0xfe, 0x53, 0xa0, + 0x5e, 0xef, 0xd9, 0xea, 0x26, 0x0d, 0xa2, 0xf0, 0x58, 0x98, 0xf4, 0x29, 0xf5, 0xa2, 0x54, 0xf5, + 0x02, 0x33, 0x7a, 0xde, 0xa1, 0x21, 0x47, 0x91, 0xff, 0x09, 0xd4, 0x2b, 0xd9, 0xa8, 0xf8, 0xaf, + 0x40, 0xf9, 0x5e, 0x36, 0xca, 0x33, 0xfa, 0x88, 0x8d, 0xa9, 0xa7, 0xfe, 0xe8, 0x83, 0x1e, 0x38, + 0x9d, 0x0e, 0x0d, 0xe2, 0x3f, 0x04, 0xfa, 0x39, 0x85, 0x7e, 0xf0, 0xd8, 0x61, 0x43, 0x74, 0xf0, + 0xd8, 0x49, 0x75, 0xa3, 0x1b, 0x3a, 0x7b, 0x54, 0x34, 0xff, 0xe9, 0x1d, 0xfd, 0x27, 0x47, 0xb5, + 0x7e, 0xbf, 0x00, 0x43, 0x0f, 0x9d, 0xa8, 0xb9, 0x4f, 0x3e, 0x81, 0xa1, 0x07, 0xae, 0xd7, 0x0a, + 0xcb, 0x85, 0xcb, 0x03, 0xd7, 0xc7, 0x17, 0x4a, 0x37, 0x79, 0x57, 0xb0, 0x90, 0x15, 0xd4, 0xe6, + 0x7e, 0x7a, 0x58, 0x39, 0x75, 0x74, 0x58, 0x39, 0xfd, 0x84, 0xa1, 0xbd, 0xe9, 0x1f, 0xb8, 0x11, + 0xce, 0xad, 0xcd, 0xe9, 0xc8, 0x0e, 0x4c, 0x57, 0xdb, 0x6d, 0xff, 0xd9, 0x96, 0x13, 0x44, 0xae, + 0xd3, 0xae, 0x77, 0x9b, 0x4d, 0x1a, 0x86, 0xe5, 0xe2, 0xe5, 0xc2, 0xf5, 0xd1, 0xda, 0xd5, 0xa3, + 0xc3, 0x4a, 0xc5, 0x61, 0xc5, 0x8d, 0x0e, 0x2f, 0x6f, 0x84, 0x1c, 0x41, 0x63, 0x94, 0x45, 0x6f, + 0xfd, 0xf1, 0x30, 0x94, 0x56, 0xfc, 0x30, 0x5a, 0x64, 0x33, 0x6a, 0xd3, 0x1f, 0x77, 0x69, 0x18, + 0x91, 0xab, 0x30, 0xcc, 0x60, 0xab, 0x4b, 0xe5, 0xc2, 0xe5, 0xc2, 0xf5, 0xb1, 0xda, 0xf8, 0xd1, + 0x61, 0x65, 0x64, 0xdf, 0x0f, 0xa3, 0x86, 0xdb, 0xb2, 0x45, 0x11, 0x79, 0x03, 0x46, 0x37, 0xfc, + 0x16, 0xdd, 0x70, 0x0e, 0x28, 0xb6, 0x62, 0xac, 0x36, 0x79, 0x74, 0x58, 0x19, 0xf3, 0xfc, 0x16, + 0x6d, 0x78, 0xce, 0x01, 0xb5, 0x55, 0x31, 0xd9, 0x85, 0x41, 0xdb, 0x6f, 0xd3, 0xf2, 0x00, 0xa2, + 0xd5, 0x8e, 0x0e, 0x2b, 0x83, 0x81, 0xdf, 0xa6, 0x3f, 0x3f, 0xac, 0xbc, 0xbb, 0xe7, 0x46, 0xfb, + 0xdd, 0x47, 0x37, 0x9b, 0xfe, 0xc1, 0xad, 0xbd, 0xc0, 0x79, 0xea, 0xf2, 0x45, 0xe8, 0xb4, 0x6f, + 0xc5, 0x4b, 0xb5, 0xe3, 0x8a, 0x79, 0xaf, 0x3f, 0x0f, 0x23, 0x7a, 0xc0, 0x38, 0xd9, 0xc8, 0x8f, + 0x3c, 0x84, 0x99, 0x6a, 0xab, 0xe5, 0x72, 0x8a, 0xad, 0xc0, 0xf5, 0x9a, 0x6e, 0xc7, 0x69, 0x87, + 0xe5, 0xc1, 0xcb, 0x03, 0xd7, 0xc7, 0xc4, 0xa0, 0xa8, 0xf2, 0x46, 0x47, 0x21, 0x68, 0x83, 0x92, + 0xc9, 0x80, 0xbc, 0x05, 0xa3, 0x4b, 0x1b, 0x75, 0xd6, 0xf6, 0xb0, 0x3c, 0x84, 0xcc, 0xe6, 0x8e, + 0x0e, 0x2b, 0xd3, 0x2d, 0x2f, 0xc4, 0xae, 0xe9, 0x0c, 0x14, 0x22, 0x79, 0x17, 0x26, 0xb6, 0xba, + 0x8f, 0xda, 0x6e, 0x73, 0x7b, 0xad, 0xfe, 0x80, 0x3e, 0x2f, 0x0f, 0x5f, 0x2e, 0x5c, 0x9f, 0xa8, + 0x91, 0xa3, 0xc3, 0xca, 0x54, 0x07, 0xe1, 0x8d, 0xa8, 0x1d, 0x36, 0x9e, 0xd0, 0xe7, 0xb6, 0x81, + 0x17, 0xd3, 0xd5, 0xeb, 0x2b, 0x8c, 0x6e, 0x24, 0x45, 0x17, 0x86, 0xfb, 0x3a, 0x1d, 0xc7, 0x23, + 0xb7, 0x00, 0x6c, 0x7a, 0xe0, 0x47, 0xb4, 0xda, 0x6a, 0x05, 0xe5, 0x51, 0x1c, 0xdb, 0xd3, 0x47, + 0x87, 0x95, 0xf1, 0x00, 0xa1, 0x0d, 0xa7, 0xd5, 0x0a, 0x6c, 0x0d, 0x85, 0x2c, 0xc2, 0xa8, 0xed, + 0xf3, 0x01, 0x2e, 0x8f, 0x5d, 0x2e, 0x5c, 0x1f, 0x5f, 0x38, 0x2d, 0x96, 0xa1, 0x04, 0xd7, 0xce, + 0x1e, 0x1d, 0x56, 0x48, 0x20, 0x7e, 0xe9, 0xbd, 0x94, 0x18, 0xa4, 0x02, 0x23, 0x1b, 0xfe, 0xa2, + 0xd3, 0xdc, 0xa7, 0x65, 0xc0, 0xb5, 0x37, 0x74, 0x74, 0x58, 0x29, 0x7c, 0xcf, 0x96, 0x50, 0xf2, + 0x14, 0xc6, 0xe3, 0x89, 0x0a, 0xcb, 0xe3, 0x38, 0x7c, 0xdb, 0x47, 0x87, 0x95, 0xb3, 0x21, 0x82, + 0x1b, 0x6c, 0xea, 0xb5, 0x11, 0x7c, 0x89, 0x55, 0xa0, 0x57, 0x44, 0xbe, 0x86, 0xd9, 0xf8, 0x67, + 0x35, 0x0c, 0x69, 0xc0, 0x78, 0xac, 0x2e, 0x95, 0x27, 0x71, 0x64, 0x5e, 0x3f, 0x3a, 0xac, 0x58, + 0x5a, 0x0b, 0x1a, 0x8e, 0x44, 0x69, 0xb8, 0x2d, 0xad, 0xa7, 0xd9, 0x4c, 0xee, 0x0f, 0x8e, 0x4e, + 0x94, 0x26, 0xed, 0x8b, 0x3b, 0x5e, 0x18, 0x39, 0x8f, 0xda, 0x34, 0x13, 0xc9, 0xfa, 0xeb, 0x02, + 0x90, 0xcd, 0x0e, 0xf5, 0xea, 0xf5, 0x15, 0xf6, 0x3d, 0xc9, 0xcf, 0xe9, 0x4d, 0x18, 0xe3, 0x13, + 0xc7, 0x66, 0xb7, 0x88, 0xb3, 0x3b, 0x75, 0x74, 0x58, 0x01, 0x31, 0xbb, 0x6c, 0x66, 0x63, 0x04, + 0x72, 0x0d, 0x06, 0xb6, 0xb7, 0xd7, 0xf0, 0x5b, 0x19, 0xa8, 0x4d, 0x1f, 0x1d, 0x56, 0x06, 0xa2, + 0xa8, 0xfd, 0xf3, 0xc3, 0xca, 0xe8, 0x52, 0x37, 0xc0, 0x61, 0xb1, 0x59, 0x39, 0xb9, 0x06, 0x23, + 0x8b, 0xed, 0x6e, 0x18, 0xd1, 0xa0, 0x3c, 0x18, 0x7f, 0xa4, 0x4d, 0x0e, 0xb2, 0x65, 0x19, 0xf9, + 0x2e, 0x0c, 0xee, 0x84, 0x34, 0x28, 0x0f, 0xe1, 0x7c, 0x4f, 0x8a, 0xf9, 0x66, 0xa0, 0xdd, 0x85, + 0xda, 0x28, 0xfb, 0x12, 0xbb, 0x21, 0x0d, 0x6c, 0x44, 0x22, 0x37, 0x61, 0x88, 0x4f, 0xda, 0x30, + 0x6e, 0x52, 0x93, 0x6a, 0x75, 0xb4, 0xe9, 0xee, 0xbb, 0xb5, 0xb1, 0xa3, 0xc3, 0xca, 0x10, 0x4e, + 0x9e, 0xcd, 0xd1, 0xee, 0x0f, 0x8e, 0x16, 0x4a, 0x45, 0x7b, 0x94, 0xd1, 0xb2, 0xcf, 0xc2, 0xfa, + 0x2e, 0x8c, 0x6b, 0xdd, 0x27, 0x17, 0x60, 0x90, 0xfd, 0x8f, 0x9b, 0xc8, 0x04, 0xaf, 0x8c, 0x1d, + 0x1c, 0x36, 0x42, 0xad, 0x7f, 0x38, 0x0d, 0x25, 0x46, 0x69, 0xec, 0x3c, 0x37, 0xf5, 0xa1, 0xe2, + 0x74, 0x25, 0x73, 0xa8, 0xca, 0x05, 0x7d, 0xb0, 0xae, 0x83, 0xaa, 0x5d, 0x6c, 0x42, 0x13, 0x47, + 0x87, 0x95, 0xd1, 0xae, 0x80, 0xc5, 0x6d, 0x23, 0x75, 0x18, 0x59, 0xfe, 0xa6, 0xe3, 0x06, 0x34, + 0xc4, 0xa1, 0x1d, 0x5f, 0x98, 0xbf, 0xc9, 0x8f, 0xcb, 0x9b, 0xf2, 0xb8, 0xbc, 0xb9, 0x2d, 0x8f, + 0xcb, 0xda, 0x45, 0xb1, 0x19, 0x9f, 0xa1, 0x9c, 0x24, 0x5e, 0x1f, 0xbf, 0xfd, 0x17, 0x95, 0x82, + 0x2d, 0x39, 0x91, 0x37, 0x61, 0xf8, 0xae, 0x1f, 0x1c, 0x38, 0x91, 0x98, 0x83, 0x99, 0xa3, 0xc3, + 0x4a, 0xe9, 0x31, 0x42, 0xb4, 0x25, 0x25, 0x70, 0xc8, 0x5d, 0x98, 0xb2, 0xfd, 0x6e, 0x44, 0xb7, + 0x7d, 0x39, 0x73, 0x43, 0x48, 0x75, 0xe9, 0xe8, 0xb0, 0x32, 0x1f, 0xb0, 0x92, 0x46, 0xe4, 0x37, + 0xc4, 0x14, 0x6a, 0xf4, 0x09, 0x2a, 0xb2, 0x0c, 0x53, 0x55, 0xdc, 0xbd, 0xc5, 0xa8, 0xf1, 0xf9, + 0x1a, 0xab, 0x5d, 0x3c, 0x3a, 0xac, 0x9c, 0x73, 0xb0, 0xa4, 0x11, 0x88, 0x22, 0x9d, 0x8d, 0x49, + 0x44, 0x36, 0xe0, 0xcc, 0x83, 0xee, 0x23, 0x1a, 0x78, 0x34, 0xa2, 0xa1, 0x6c, 0xd1, 0x08, 0xb6, + 0xe8, 0xf2, 0xd1, 0x61, 0xe5, 0xc2, 0x13, 0x55, 0x98, 0xd1, 0xa6, 0x34, 0x29, 0xa1, 0x70, 0x5a, + 0x34, 0x74, 0xc9, 0x89, 0x9c, 0x47, 0x4e, 0x48, 0x71, 0x53, 0x1a, 0x5f, 0x38, 0xcb, 0x87, 0xf8, + 0x66, 0xa2, 0xb4, 0x76, 0x55, 0x8c, 0xf2, 0x79, 0xd5, 0xf7, 0x96, 0x28, 0xd2, 0x2a, 0x4a, 0xf2, + 0x64, 0x7b, 0xb3, 0x3a, 0x77, 0xc6, 0xb0, 0xb5, 0xb8, 0x37, 0xab, 0x73, 0x47, 0xdf, 0xb5, 0xd4, + 0x09, 0xb4, 0x06, 0x43, 0x3b, 0xec, 0x74, 0xc6, 0x3d, 0x6b, 0x6a, 0xe1, 0x8a, 0x68, 0x51, 0x72, + 0xfd, 0xdd, 0x64, 0x3f, 0x10, 0x11, 0xbf, 0xbc, 0xd3, 0x78, 0xa2, 0xeb, 0x67, 0x31, 0x96, 0x91, + 0xcf, 0x00, 0x44, 0xab, 0xaa, 0x9d, 0x4e, 0x79, 0x1c, 0x3b, 0x79, 0xc6, 0xec, 0x64, 0xb5, 0xd3, + 0xa9, 0x5d, 0x12, 0xfd, 0x3b, 0xab, 0xfa, 0xe7, 0x74, 0x3a, 0x1a, 0x37, 0x8d, 0x09, 0xf9, 0x04, + 0x26, 0x70, 0x4b, 0x93, 0x33, 0x3a, 0x81, 0x33, 0x7a, 0xfe, 0xe8, 0xb0, 0x32, 0x87, 0xbb, 0x55, + 0xc6, 0x7c, 0x1a, 0x04, 0xe4, 0xd7, 0x60, 0x56, 0xb0, 0x7b, 0xe8, 0x7a, 0x2d, 0xff, 0x59, 0xb8, + 0x44, 0xc3, 0x27, 0x91, 0xdf, 0xc1, 0xed, 0x6f, 0x7c, 0xe1, 0x82, 0xd9, 0x3c, 0x13, 0xa7, 0x76, + 0x43, 0xb4, 0xd4, 0x52, 0x2d, 0x7d, 0xc6, 0x11, 0x1a, 0x2d, 0x8e, 0xa1, 0x6f, 0x90, 0x99, 0x2c, + 0xc8, 0x2a, 0x9c, 0xde, 0x09, 0xa9, 0xd1, 0x87, 0x29, 0x3c, 0x1f, 0x2a, 0x6c, 0x86, 0xbb, 0x21, + 0x6d, 0xe4, 0xf5, 0x23, 0x49, 0x47, 0x6c, 0x20, 0x4b, 0x81, 0xdf, 0x49, 0xac, 0xf1, 0xd3, 0x38, + 0x22, 0xd6, 0xd1, 0x61, 0xe5, 0x52, 0x2b, 0xf0, 0x3b, 0x8d, 0xfc, 0x85, 0x9e, 0x41, 0x4d, 0x7e, + 0x08, 0x67, 0x17, 0x7d, 0xcf, 0xa3, 0x4d, 0xb6, 0x83, 0x2e, 0xb9, 0xce, 0x9e, 0xe7, 0x87, 0x91, + 0xdb, 0x5c, 0x5d, 0x2a, 0x97, 0xe2, 0xe3, 0xa1, 0xa9, 0x30, 0x1a, 0x2d, 0x85, 0x62, 0x1e, 0x0f, + 0x39, 0x5c, 0xc8, 0x57, 0x30, 0x29, 0xea, 0xa2, 0x01, 0x2e, 0xcd, 0x33, 0xbd, 0x17, 0x9a, 0x42, + 0xe6, 0x07, 0x7d, 0x20, 0x7f, 0x72, 0xd1, 0xc9, 0xe4, 0x45, 0xbe, 0x86, 0xf1, 0xf5, 0xbb, 0x55, + 0x9b, 0x86, 0x1d, 0xdf, 0x0b, 0x69, 0x99, 0xe0, 0x8c, 0x5e, 0x12, 0xac, 0xd7, 0xef, 0x56, 0xab, + 0xdd, 0x68, 0x9f, 0x7a, 0x91, 0xdb, 0x74, 0x22, 0x2a, 0xb1, 0x6a, 0xf3, 0x6c, 0xe5, 0x1d, 0x3c, + 0x76, 0x1a, 0x81, 0x80, 0x68, 0xbd, 0xd0, 0xd9, 0x91, 0x79, 0x18, 0xad, 0xd7, 0x57, 0xd6, 0xfc, + 0x3d, 0xd7, 0x2b, 0x4f, 0xb3, 0xc1, 0xb0, 0xd5, 0x6f, 0xf2, 0x18, 0x66, 0x35, 0xdd, 0xa0, 0xc1, + 0xfe, 0xa7, 0x07, 0xd4, 0x8b, 0xca, 0x33, 0xd8, 0x86, 0xef, 0x29, 0xe5, 0xe6, 0xa6, 0xae, 0x42, + 0x3c, 0xbd, 0x73, 0xb3, 0x1a, 0xff, 0xac, 0x4b, 0xa2, 0x5a, 0xb1, 0x5c, 0xb0, 0x67, 0x9c, 0x8c, + 0x12, 0xb2, 0x0d, 0x23, 0x5b, 0xdd, 0xa0, 0xe3, 0x87, 0xb4, 0x3c, 0x8b, 0x03, 0x77, 0xb5, 0xd7, + 0x17, 0x2a, 0x50, 0x6b, 0xb3, 0x6c, 0x8b, 0xee, 0xf0, 0x1f, 0x5a, 0xef, 0x24, 0x2b, 0xf2, 0x29, + 0x4c, 0xd4, 0xeb, 0x2b, 0xf1, 0x81, 0x72, 0x16, 0x0f, 0x94, 0x0b, 0x47, 0x87, 0x95, 0x32, 0x13, + 0xa9, 0xe2, 0x43, 0x45, 0xff, 0xaa, 0x74, 0x0a, 0xc6, 0x61, 0x7b, 0xad, 0x1e, 0x73, 0x98, 0x8b, + 0x39, 0x30, 0x61, 0x2e, 0x9b, 0x83, 0x4e, 0x41, 0xfe, 0x79, 0x01, 0x2e, 0xeb, 0x2c, 0xb3, 0x06, + 0xa6, 0x7c, 0xee, 0x45, 0x46, 0x73, 0xe1, 0xe8, 0xb0, 0x72, 0xd3, 0xec, 0x47, 0x23, 0x73, 0xb2, + 0xb4, 0xb6, 0xf5, 0x6d, 0x0a, 0xb6, 0x57, 0xef, 0x40, 0x66, 0x7b, 0xe7, 0x5f, 0xb8, 0xbd, 0xe6, + 0xa8, 0xf5, 0x6f, 0x6f, 0xbf, 0xa6, 0x58, 0x9f, 0xc3, 0x98, 0xda, 0xb4, 0xc9, 0x08, 0x0c, 0x54, + 0xdb, 0xed, 0xd2, 0x29, 0xf6, 0x47, 0xbd, 0xbe, 0x52, 0x2a, 0x90, 0x29, 0x80, 0xf8, 0xa4, 0x2a, + 0x15, 0xc9, 0x04, 0x8c, 0xca, 0x93, 0xa4, 0x34, 0x80, 0xf8, 0x9d, 0x4e, 0x69, 0x90, 0x10, 0x98, + 0x32, 0xf7, 0xb3, 0xd2, 0x90, 0xf5, 0x3b, 0x05, 0x18, 0x53, 0xdf, 0x21, 0x39, 0x0d, 0xe3, 0x3b, + 0x1b, 0xf5, 0xad, 0xe5, 0xc5, 0xd5, 0xbb, 0xab, 0xcb, 0x4b, 0xa5, 0x53, 0xe4, 0x22, 0x9c, 0xdb, + 0xae, 0xaf, 0x34, 0x96, 0x6a, 0x8d, 0xb5, 0xcd, 0xc5, 0xea, 0x5a, 0x63, 0xcb, 0xde, 0xfc, 0xfc, + 0x8b, 0xc6, 0xf6, 0xce, 0xc6, 0xc6, 0xf2, 0x5a, 0xa9, 0x40, 0xca, 0x30, 0xc3, 0x8a, 0x1f, 0xec, + 0xd4, 0x96, 0x75, 0x84, 0x52, 0x91, 0x5c, 0x81, 0x8b, 0x59, 0x25, 0x8d, 0x95, 0xe5, 0xea, 0xd2, + 0xda, 0x72, 0xbd, 0x5e, 0x1a, 0x20, 0x73, 0x30, 0xcd, 0x50, 0xaa, 0x5b, 0x5b, 0x06, 0xed, 0xa0, + 0xd5, 0x86, 0x71, 0xed, 0x03, 0x20, 0x17, 0xa0, 0xbc, 0xb8, 0x6c, 0x6f, 0x37, 0xb6, 0x76, 0xec, + 0xad, 0xcd, 0xfa, 0x72, 0xc3, 0x6c, 0x61, 0xb2, 0x74, 0x6d, 0xf3, 0xde, 0xea, 0x46, 0x83, 0x81, + 0xea, 0xa5, 0x02, 0x6b, 0x86, 0x51, 0x5a, 0x5f, 0xdd, 0xb8, 0xb7, 0xb6, 0xdc, 0xd8, 0xa9, 0x2f, + 0x0b, 0x94, 0xa2, 0xf5, 0x1b, 0xc5, 0xd4, 0x91, 0x4e, 0x16, 0x60, 0xbc, 0xce, 0xed, 0x15, 0xb8, + 0xcd, 0x71, 0x05, 0x91, 0xc9, 0x68, 0x13, 0xc2, 0x8c, 0xc1, 0x77, 0x30, 0x1d, 0x89, 0x49, 0x69, + 0x5b, 0xec, 0x6b, 0x6e, 0xfa, 0x6d, 0x5d, 0x4a, 0xeb, 0x08, 0x98, 0xad, 0x4a, 0xc9, 0x82, 0x26, + 0xcf, 0x71, 0x6d, 0x11, 0x35, 0x12, 0x29, 0xcf, 0xe9, 0x67, 0xbb, 0x92, 0xec, 0x16, 0xe2, 0x29, + 0x15, 0x62, 0x18, 0xd2, 0x64, 0xc8, 0x12, 0x0a, 0x8f, 0xbc, 0x21, 0x25, 0x5d, 0xae, 0xdd, 0xe1, + 0x61, 0x9f, 0xd0, 0x4b, 0x84, 0x90, 0x6b, 0x75, 0x73, 0x0e, 0x56, 0xf2, 0x61, 0x72, 0xcd, 0x88, + 0xc1, 0x40, 0x66, 0x89, 0xf3, 0xd3, 0x4e, 0xa0, 0x92, 0x0a, 0x0c, 0xf1, 0x1d, 0x97, 0x8f, 0x07, + 0xca, 0xd6, 0x6d, 0x06, 0xb0, 0x39, 0xdc, 0xfa, 0x93, 0x01, 0x5d, 0xc8, 0x60, 0xb2, 0xb4, 0x36, + 0xde, 0x28, 0x4b, 0xe3, 0x38, 0x23, 0x94, 0xa9, 0x82, 0xfc, 0x2b, 0x41, 0x55, 0x70, 0x20, 0x56, + 0x05, 0xc5, 0xa7, 0xc6, 0x55, 0xc1, 0x18, 0x85, 0xcd, 0xa2, 0x10, 0xdb, 0x90, 0xeb, 0x60, 0x3c, + 0x8b, 0x42, 0xd4, 0x13, 0xb3, 0xa8, 0x21, 0x91, 0x0f, 0x00, 0xaa, 0x0f, 0xeb, 0xa8, 0xf3, 0xd8, + 0x1b, 0x42, 0x74, 0xc5, 0x43, 0xc6, 0x79, 0x16, 0x0a, 0x95, 0x2a, 0xd0, 0x75, 0x46, 0x0d, 0x9b, + 0xd4, 0x60, 0xb2, 0xfa, 0x93, 0x6e, 0x40, 0x57, 0x5b, 0xec, 0x9c, 0x8a, 0xb8, 0x72, 0x3c, 0xc6, + 0x37, 0x52, 0x87, 0x15, 0x34, 0x5c, 0x51, 0xa2, 0x31, 0x30, 0x49, 0xc8, 0x26, 0x9c, 0xb9, 0xb7, + 0xb8, 0x25, 0xd6, 0x55, 0xb5, 0xd9, 0xf4, 0xbb, 0x5e, 0x24, 0xe4, 0xd5, 0x2b, 0x47, 0x87, 0x95, + 0x8b, 0x7b, 0xcd, 0x4e, 0x43, 0xae, 0x41, 0x87, 0x17, 0xeb, 0x02, 0x6b, 0x8a, 0x96, 0x5c, 0x85, + 0x81, 0x1d, 0x7b, 0x55, 0x68, 0xce, 0x67, 0x8e, 0x0e, 0x2b, 0x93, 0xdd, 0xc0, 0xd5, 0x48, 0x58, + 0x29, 0x79, 0x1f, 0x60, 0xdb, 0x09, 0xf6, 0x68, 0xb4, 0xe5, 0x07, 0x11, 0x0a, 0x9c, 0x93, 0xb5, + 0x73, 0x47, 0x87, 0x95, 0xd9, 0x08, 0xa1, 0x0d, 0xb6, 0xfd, 0xe9, 0x9d, 0x8e, 0x91, 0xef, 0x0f, + 0x8e, 0x16, 0x4b, 0x03, 0xf6, 0x58, 0x9d, 0x86, 0x21, 0xd7, 0x0f, 0xdb, 0x30, 0x75, 0x8f, 0x46, + 0x6c, 0xe1, 0x4a, 0x7d, 0xa7, 0xf7, 0xb4, 0x7e, 0x04, 0xe3, 0x0f, 0xdd, 0x68, 0xbf, 0x4e, 0x9b, + 0x01, 0x8d, 0xa4, 0xad, 0x07, 0x87, 0xfc, 0x99, 0x1b, 0xed, 0x37, 0x42, 0x0e, 0xd7, 0xcf, 0x75, + 0x0d, 0xdd, 0x5a, 0x86, 0xd3, 0xa2, 0x36, 0xa5, 0x5e, 0x2d, 0x98, 0x0c, 0x0b, 0xc8, 0x10, 0xa7, + 0x5d, 0x67, 0x68, 0xb2, 0xf9, 0x17, 0x45, 0x98, 0x5d, 0xdc, 0x77, 0xbc, 0x3d, 0xba, 0xe5, 0x84, + 0xe1, 0x33, 0x3f, 0x68, 0x69, 0x8d, 0x47, 0xdd, 0x32, 0xd5, 0x78, 0x54, 0x26, 0x17, 0x60, 0x7c, + 0xb3, 0xdd, 0x92, 0x34, 0x42, 0xef, 0xc5, 0xba, 0xfc, 0x76, 0xab, 0xd1, 0x91, 0xbc, 0x74, 0x24, + 0x46, 0xb3, 0x41, 0x9f, 0x29, 0x9a, 0x81, 0x98, 0xc6, 0xa3, 0xcf, 0x34, 0x1a, 0x0d, 0x89, 0x2c, + 0xc3, 0x99, 0x3a, 0x6d, 0xfa, 0x5e, 0xeb, 0xae, 0xd3, 0x8c, 0xfc, 0x60, 0xdb, 0x7f, 0x42, 0x3d, + 0xb1, 0xa0, 0x51, 0x31, 0x08, 0xb1, 0xb0, 0xf1, 0x18, 0x4b, 0x1b, 0x11, 0x2b, 0xb6, 0xd3, 0x14, + 0x64, 0x13, 0x46, 0x1f, 0x0a, 0x8b, 0xa1, 0x50, 0x96, 0xaf, 0xdd, 0x54, 0x26, 0xc4, 0xc5, 0x80, + 0xe2, 0x2a, 0x74, 0xda, 0x4a, 0xdd, 0x57, 0x72, 0x16, 0x6e, 0x65, 0x12, 0xd3, 0x56, 0x4c, 0xac, + 0x1d, 0x98, 0xdc, 0x6a, 0x77, 0xf7, 0x5c, 0x8f, 0x6d, 0x3a, 0x75, 0xfa, 0x63, 0xb2, 0x04, 0x10, + 0x03, 0x84, 0x1d, 0x70, 0x5a, 0xa8, 0xd8, 0x71, 0xc1, 0xee, 0x5b, 0xe2, 0xcb, 0x45, 0x08, 0x6a, + 0x44, 0xb6, 0x46, 0x67, 0xfd, 0xcf, 0x01, 0x20, 0x62, 0x02, 0xf0, 0x10, 0xac, 0xd3, 0x88, 0x1d, + 0x4f, 0x67, 0xa1, 0xa8, 0xcc, 0x75, 0xc3, 0x47, 0x87, 0x95, 0xa2, 0xdb, 0xb2, 0x8b, 0xab, 0x4b, + 0xe4, 0x6d, 0x18, 0x42, 0x34, 0x1c, 0xff, 0x29, 0x55, 0x9f, 0xce, 0x81, 0x6f, 0x3e, 0x78, 0xfa, + 0xda, 0x1c, 0x99, 0xbc, 0x03, 0x63, 0x4b, 0xb4, 0x4d, 0xf7, 0x9c, 0xc8, 0x97, 0xdb, 0x09, 0x37, + 0x80, 0x49, 0xa0, 0xb6, 0xe6, 0x62, 0x4c, 0xa6, 0x0e, 0xdb, 0xd4, 0x09, 0x7d, 0x4f, 0x57, 0x87, + 0x03, 0x84, 0xe8, 0xea, 0x30, 0xc7, 0x21, 0x7f, 0xaf, 0x00, 0xe3, 0x55, 0xcf, 0x13, 0x86, 0xa5, + 0x50, 0x8c, 0xfa, 0xec, 0x4d, 0x65, 0x89, 0x5d, 0x73, 0x1e, 0xd1, 0xf6, 0xae, 0xd3, 0xee, 0xd2, + 0xb0, 0xf6, 0x35, 0xd3, 0x50, 0xfe, 0xc3, 0x61, 0xe5, 0xc3, 0x13, 0x98, 0x8a, 0x62, 0x9b, 0xee, + 0x76, 0xe0, 0xb8, 0x51, 0xc8, 0xbe, 0x5a, 0x27, 0xae, 0x50, 0xff, 0x6e, 0xb4, 0x76, 0xc4, 0x67, + 0xc3, 0x70, 0xbf, 0xb3, 0x81, 0x1c, 0xc0, 0xe9, 0x6a, 0x18, 0x76, 0x0f, 0x68, 0x3d, 0x72, 0x82, + 0x68, 0xdb, 0x3d, 0xa0, 0xb8, 0x21, 0xf5, 0x36, 0x2e, 0x7c, 0xe7, 0xa7, 0x87, 0x95, 0x02, 0x53, + 0x8a, 0x1c, 0x24, 0x65, 0x72, 0x4f, 0x10, 0x35, 0x22, 0x57, 0x3f, 0xde, 0xd0, 0xcc, 0x90, 0xe4, + 0x6d, 0x5d, 0x55, 0x02, 0xc9, 0xea, 0x52, 0xde, 0x8c, 0x5b, 0x8b, 0x70, 0xe1, 0x1e, 0x8d, 0x6c, + 0x1a, 0xd2, 0x48, 0x7e, 0x23, 0xb8, 0xc2, 0x63, 0xe3, 0xee, 0x08, 0xfe, 0x56, 0xc4, 0x38, 0xfd, + 0xfc, 0xbb, 0x90, 0x25, 0xd6, 0xff, 0x55, 0x80, 0xca, 0x62, 0x40, 0xb9, 0x3e, 0x91, 0xc3, 0xa8, + 0xf7, 0xde, 0x75, 0x01, 0x06, 0xb7, 0x9f, 0x77, 0xa4, 0x55, 0x06, 0x4b, 0xd9, 0xa4, 0xd8, 0x08, + 0x3d, 0xa6, 0x91, 0xcb, 0x7a, 0x0c, 0xb3, 0x36, 0xf5, 0xe8, 0x33, 0xe7, 0x51, 0x9b, 0x1a, 0x76, + 0xa2, 0x0a, 0x0c, 0xf1, 0x0f, 0x3d, 0xd5, 0x05, 0x0e, 0x3f, 0x99, 0xcd, 0xcd, 0x9a, 0x84, 0xf1, + 0x2d, 0xd7, 0xdb, 0x13, 0xdc, 0xad, 0xbf, 0x1c, 0x84, 0x09, 0xfe, 0x5b, 0xa8, 0x48, 0x89, 0xe3, + 0xb2, 0x70, 0x9c, 0xe3, 0xf2, 0x3d, 0x98, 0x64, 0xe7, 0x0d, 0x0d, 0x76, 0x69, 0xc0, 0xf6, 0x7f, + 0x31, 0x12, 0xa8, 0xee, 0x85, 0x58, 0xd0, 0x78, 0xca, 0x4b, 0x6c, 0x13, 0x91, 0xac, 0xc1, 0x14, + 0x07, 0xdc, 0xa5, 0x4e, 0xd4, 0x8d, 0x2d, 0x56, 0xa7, 0x85, 0x4e, 0x24, 0xc1, 0x7c, 0x69, 0x0a, + 0x5e, 0x8f, 0x05, 0xd0, 0x4e, 0xd0, 0x92, 0x4f, 0xe0, 0xf4, 0x56, 0xe0, 0x7f, 0xf3, 0x5c, 0x13, + 0x10, 0xf8, 0xd7, 0xc9, 0xb5, 0x27, 0x56, 0xd4, 0xd0, 0xc5, 0x84, 0x24, 0x36, 0x79, 0x03, 0x46, + 0x57, 0xc3, 0x9a, 0x1f, 0xb8, 0xde, 0x1e, 0x7e, 0xa3, 0xa3, 0xdc, 0xd0, 0xef, 0x86, 0x8d, 0x47, + 0x08, 0xb4, 0x55, 0x71, 0xc2, 0x24, 0x3d, 0xd2, 0xdf, 0x24, 0x7d, 0x1b, 0x60, 0xcd, 0x77, 0x5a, + 0xd5, 0x76, 0x7b, 0xb1, 0x1a, 0xe2, 0x49, 0x2c, 0xce, 0xa3, 0xb6, 0xef, 0xb4, 0x1a, 0x4e, 0xbb, + 0xdd, 0x68, 0x3a, 0xa1, 0xad, 0xe1, 0x90, 0x2f, 0xe1, 0x5c, 0xe8, 0xee, 0x79, 0xd8, 0xb9, 0x86, + 0xd3, 0xde, 0xf3, 0x03, 0x37, 0xda, 0x3f, 0x68, 0x84, 0x5d, 0x37, 0xe2, 0xf6, 0xa0, 0xa9, 0x85, + 0x4b, 0x62, 0x93, 0xab, 0x4b, 0xbc, 0xaa, 0x44, 0xab, 0x33, 0x2c, 0x7b, 0x2e, 0xcc, 0x2e, 0x20, + 0x0f, 0x61, 0x72, 0xcd, 0x6d, 0x52, 0x2f, 0xa4, 0x68, 0xe0, 0x7b, 0x8e, 0xd6, 0xa2, 0xde, 0x1f, + 0x33, 0x1b, 0xc4, 0xc9, 0xb6, 0x4e, 0x84, 0x9f, 0xae, 0xc9, 0xe7, 0xfe, 0xe0, 0xe8, 0x70, 0x69, + 0xc4, 0x3e, 0x2d, 0x80, 0x0f, 0x9d, 0xc0, 0x73, 0xbd, 0xbd, 0xd0, 0xfa, 0xff, 0x09, 0x8c, 0xaa, + 0x79, 0xba, 0xa9, 0x6b, 0x2a, 0xe2, 0x68, 0xc6, 0x25, 0x1b, 0xdb, 0xe1, 0x6c, 0x0d, 0x83, 0x9c, + 0x43, 0xdd, 0x45, 0x08, 0x05, 0x23, 0xec, 0x13, 0x72, 0x3a, 0x1d, 0x9b, 0xc1, 0xd8, 0xd6, 0xb0, + 0x54, 0xc3, 0x45, 0x33, 0xca, 0xb7, 0x86, 0xd6, 0x23, 0xbb, 0xb8, 0x54, 0x63, 0xdf, 0xe4, 0xe6, + 0xea, 0xd2, 0x22, 0xce, 0xff, 0x28, 0xff, 0x26, 0x7d, 0xb7, 0xd5, 0xb4, 0x11, 0xca, 0x4a, 0xeb, + 0xd5, 0xf5, 0x35, 0x31, 0xc7, 0x58, 0x1a, 0x3a, 0x07, 0x6d, 0x1b, 0xa1, 0x4c, 0xda, 0xe5, 0x26, + 0x95, 0x45, 0xdf, 0x8b, 0x02, 0xbf, 0x1d, 0xa2, 0x08, 0x37, 0xca, 0xd7, 0xa0, 0xb0, 0xc5, 0x34, + 0x45, 0x91, 0x9d, 0x40, 0x25, 0x0f, 0x61, 0xae, 0xda, 0x7a, 0xea, 0x78, 0x4d, 0xda, 0xe2, 0x25, + 0x0f, 0xfd, 0xe0, 0xc9, 0xe3, 0xb6, 0xff, 0x2c, 0xc4, 0x45, 0x32, 0x2a, 0x4c, 0x97, 0x02, 0x45, + 0x9a, 0x76, 0x9e, 0x49, 0x24, 0x3b, 0x8f, 0x9a, 0xed, 0x03, 0x8b, 0x6d, 0xbf, 0xdb, 0x12, 0x4b, + 0x07, 0xf7, 0x81, 0x26, 0x03, 0xd8, 0x1c, 0xce, 0x46, 0x69, 0xa5, 0xbe, 0x8e, 0x0b, 0x43, 0x8c, + 0xd2, 0x7e, 0x78, 0x60, 0x33, 0x18, 0xb9, 0x06, 0x23, 0x52, 0x70, 0xe7, 0x37, 0x19, 0x68, 0x41, + 0x97, 0x02, 0xbb, 0x2c, 0x63, 0xdf, 0xb1, 0x4d, 0x9b, 0xfe, 0x53, 0x1a, 0x3c, 0x5f, 0xf4, 0x5b, + 0x54, 0x9a, 0xb5, 0x84, 0xd9, 0x86, 0x17, 0x34, 0x9a, 0xac, 0xc4, 0x36, 0x11, 0x59, 0x05, 0xfc, + 0xe0, 0x0e, 0xcb, 0xa7, 0xe3, 0x0a, 0xf8, 0xc1, 0x1e, 0xda, 0xb2, 0x8c, 0x2c, 0xc1, 0x99, 0x6a, + 0x37, 0xf2, 0x0f, 0x9c, 0xc8, 0x6d, 0xee, 0x74, 0xf6, 0x02, 0x87, 0x55, 0x52, 0x42, 0x02, 0x54, + 0x64, 0x1c, 0x59, 0xd8, 0xe8, 0x8a, 0x52, 0x3b, 0x4d, 0x40, 0xde, 0x85, 0x89, 0xd5, 0x90, 0x9b, + 0x2e, 0x9d, 0x90, 0xb6, 0xd0, 0xfe, 0x24, 0x5a, 0xe9, 0x86, 0x0d, 0x34, 0x64, 0x36, 0x98, 0xea, + 0xd3, 0xb2, 0x0d, 0x3c, 0x62, 0xc1, 0x70, 0x35, 0x0c, 0xdd, 0x30, 0x42, 0xb3, 0xd2, 0x68, 0x0d, + 0x8e, 0x0e, 0x2b, 0xc3, 0x0e, 0x42, 0x6c, 0x51, 0x42, 0x1e, 0xc2, 0xf8, 0x12, 0x65, 0x92, 0xf3, + 0x76, 0xd0, 0x0d, 0x23, 0x34, 0x12, 0x8d, 0x2f, 0x9c, 0x13, 0xbb, 0x91, 0x56, 0x22, 0xd6, 0x32, + 0x17, 0x51, 0x5b, 0x08, 0x6f, 0x44, 0xac, 0x40, 0x3f, 0x6a, 0x35, 0x7c, 0xa6, 0x16, 0x08, 0x9a, + 0x15, 0xb7, 0xc5, 0xf6, 0x97, 0x19, 0x6c, 0x03, 0xaa, 0x05, 0x62, 0x43, 0x6b, 0xec, 0x63, 0x89, + 0xae, 0x16, 0x18, 0x24, 0xa4, 0x99, 0xb2, 0x86, 0xcf, 0x1a, 0x16, 0x4f, 0xb3, 0x50, 0x36, 0xf1, + 0x84, 0xb6, 0xf2, 0x8f, 0x60, 0x7c, 0xb1, 0x1b, 0x46, 0xfe, 0xc1, 0xf6, 0x3e, 0x3d, 0xa0, 0x68, + 0x48, 0x12, 0xca, 0x4f, 0x13, 0xc1, 0x8d, 0x88, 0xc1, 0xf5, 0x6e, 0x6a, 0xe8, 0xe4, 0x33, 0x20, + 0x52, 0x8b, 0xb9, 0xc7, 0xd6, 0x87, 0xc7, 0xd6, 0x32, 0xda, 0x92, 0x46, 0xb9, 0xea, 0x22, 0x95, + 0x9f, 0xc6, 0x9e, 0x2a, 0xd6, 0xed, 0x99, 0x69, 0x62, 0xd6, 0x20, 0xde, 0xc4, 0x7b, 0x81, 0xd3, + 0xd9, 0x2f, 0x97, 0x63, 0xd5, 0x40, 0x74, 0x6a, 0x8f, 0xc1, 0x0d, 0x11, 0x27, 0x46, 0x27, 0x75, + 0x00, 0xfe, 0x73, 0x8d, 0x4d, 0x3c, 0xb7, 0x3e, 0x95, 0x8d, 0xf1, 0x62, 0x05, 0x72, 0xac, 0x50, + 0xdd, 0x11, 0x6c, 0xdb, 0xae, 0x31, 0x9b, 0x1a, 0x1b, 0xf2, 0x04, 0x4a, 0xfc, 0xd7, 0xba, 0xef, + 0xb9, 0x11, 0x3f, 0x2f, 0xe6, 0x0d, 0x53, 0x65, 0xb2, 0x58, 0x56, 0x80, 0x26, 0x62, 0x51, 0xc1, + 0x81, 0x2a, 0xd5, 0xaa, 0x49, 0x31, 0x26, 0x5b, 0x30, 0xbe, 0x15, 0xf8, 0xad, 0x6e, 0x33, 0x42, + 0x29, 0xe3, 0x3c, 0x6e, 0xfc, 0x44, 0xd4, 0xa3, 0x95, 0xf0, 0x31, 0xe9, 0x70, 0x40, 0x83, 0x9d, + 0x0b, 0xfa, 0x98, 0x68, 0x88, 0xa4, 0x06, 0xc3, 0x5b, 0x7e, 0xdb, 0x6d, 0x3e, 0x2f, 0x5f, 0xc0, + 0x46, 0xcf, 0x48, 0x66, 0x08, 0x94, 0x4d, 0x45, 0x91, 0xb6, 0x83, 0x20, 0x5d, 0xa4, 0xe5, 0x48, + 0xa4, 0x0a, 0x93, 0x9f, 0xb1, 0x05, 0xe3, 0xfa, 0x9e, 0xe7, 0xb8, 0x01, 0x2d, 0x5f, 0xc4, 0x79, + 0x41, 0x33, 0xfe, 0x8f, 0xf5, 0x02, 0x7d, 0x39, 0x1b, 0x14, 0x64, 0x15, 0x4e, 0xaf, 0x86, 0xf5, + 0x28, 0x70, 0x3b, 0x74, 0xdd, 0xf1, 0x9c, 0x3d, 0xda, 0x2a, 0x5f, 0x8a, 0xed, 0xe8, 0x6e, 0xd8, + 0x08, 0xb1, 0xac, 0x71, 0xc0, 0x0b, 0x75, 0x3b, 0x7a, 0x82, 0x8e, 0x7c, 0x0e, 0x33, 0xcb, 0xdf, + 0x44, 0x6c, 0xc5, 0xb4, 0xab, 0xdd, 0x96, 0x1b, 0xd5, 0x23, 0x3f, 0x70, 0xf6, 0x68, 0xb9, 0x82, + 0xfc, 0x5e, 0x3b, 0x3a, 0xac, 0x5c, 0xa6, 0xa2, 0xbc, 0xe1, 0x30, 0x84, 0x46, 0xc8, 0x31, 0xf4, + 0xfb, 0xf1, 0x2c, 0x0e, 0x6c, 0xf4, 0xeb, 0xdd, 0x0e, 0x93, 0xb6, 0x71, 0xf4, 0x2f, 0x1b, 0xa3, + 0xaf, 0x95, 0xf0, 0xd1, 0x0f, 0x39, 0x20, 0x35, 0xfa, 0x1a, 0x22, 0xb1, 0x81, 0xdc, 0xf7, 0x5d, + 0xaf, 0xda, 0x8c, 0xdc, 0xa7, 0x54, 0x68, 0xcc, 0x61, 0xf9, 0x0a, 0xb6, 0x14, 0x6d, 0xfe, 0xbf, + 0xec, 0xbb, 0x5e, 0xc3, 0xc1, 0xe2, 0x46, 0x28, 0xca, 0xf5, 0x6f, 0x24, 0x4d, 0x4d, 0x7e, 0x08, + 0x67, 0xd7, 0xfd, 0x47, 0x6e, 0x9b, 0xf2, 0x2d, 0x87, 0x0f, 0x0b, 0xda, 0x2f, 0x2d, 0xe4, 0x8b, + 0x36, 0xff, 0x03, 0xc4, 0x68, 0x88, 0xdd, 0xea, 0x40, 0xe1, 0xe8, 0x36, 0xff, 0x6c, 0x2e, 0x64, + 0x19, 0x26, 0xf0, 0xbb, 0x6c, 0xe3, 0xcf, 0xb0, 0x7c, 0x15, 0x55, 0xba, 0x2b, 0x09, 0x29, 0xed, + 0xe6, 0xb2, 0x86, 0xb3, 0xec, 0x45, 0xc1, 0x73, 0xdb, 0x20, 0x23, 0x1f, 0xc3, 0x7c, 0x72, 0x79, + 0x2f, 0xfa, 0xde, 0x63, 0x77, 0xaf, 0x1b, 0xd0, 0x56, 0xf9, 0x35, 0xd6, 0x54, 0xbb, 0x07, 0x06, + 0xf9, 0x0a, 0x66, 0xf1, 0xac, 0xab, 0x7a, 0xbe, 0xf7, 0xfc, 0xc0, 0xfd, 0x09, 0xca, 0xcf, 0x4c, + 0xec, 0xbd, 0x86, 0x62, 0xef, 0xb5, 0xa3, 0xc3, 0xca, 0x15, 0x3c, 0x13, 0x1b, 0x8e, 0x8e, 0x91, + 0xb0, 0x5a, 0x67, 0xf3, 0x98, 0x7f, 0x08, 0x67, 0x52, 0xed, 0x27, 0x25, 0x18, 0x78, 0x22, 0xee, + 0x67, 0xc7, 0x6c, 0xf6, 0x27, 0x79, 0x13, 0x86, 0x9e, 0x32, 0x45, 0x0d, 0xc5, 0x91, 0xf8, 0xc6, + 0x4f, 0x23, 0x5d, 0xf5, 0x1e, 0xfb, 0x36, 0x47, 0xfa, 0xa0, 0xf8, 0x5e, 0xe1, 0xfe, 0xe0, 0xe8, + 0x78, 0x69, 0x82, 0x5f, 0xab, 0xdf, 0x1f, 0x1c, 0x9d, 0x2c, 0x4d, 0x59, 0x55, 0x38, 0x9d, 0xc0, + 0x27, 0x65, 0x18, 0xa1, 0x1e, 0x13, 0xfe, 0x5b, 0x5c, 0x20, 0xb2, 0xe5, 0x4f, 0x32, 0x03, 0x43, + 0x6d, 0xf7, 0xc0, 0x8d, 0xb0, 0xc2, 0x21, 0x9b, 0xff, 0xb0, 0x7e, 0xb7, 0x00, 0x24, 0x7d, 0x1e, + 0x91, 0x5b, 0x09, 0x36, 0x5c, 0xf4, 0x15, 0x20, 0xfd, 0xe2, 0x40, 0x72, 0xff, 0x0c, 0xa6, 0xf9, + 0x82, 0x90, 0x27, 0xa7, 0x56, 0x17, 0xdf, 0xb1, 0x33, 0x8a, 0x75, 0x63, 0x93, 0x28, 0xc6, 0x73, + 0x76, 0x0d, 0x9b, 0xd6, 0x85, 0xd9, 0xcc, 0x93, 0x88, 0xac, 0xc3, 0xec, 0x81, 0xef, 0x45, 0xfb, + 0xed, 0xe7, 0xf2, 0x20, 0x12, 0xb5, 0x15, 0xb0, 0x36, 0xdc, 0x7c, 0x33, 0x11, 0xec, 0x69, 0x01, + 0x16, 0x1c, 0xb1, 0x1e, 0x61, 0x74, 0x92, 0x3d, 0xb1, 0x6c, 0x38, 0x93, 0xda, 0xd0, 0xc9, 0x0f, + 0x60, 0xa2, 0x89, 0xca, 0x9d, 0x51, 0x13, 0x3f, 0xce, 0x34, 0xb8, 0xfe, 0xad, 0x72, 0x38, 0xef, + 0xca, 0x3f, 0x29, 0xc0, 0x5c, 0xce, 0x56, 0x7e, 0xf2, 0xa1, 0xfe, 0x02, 0xce, 0x1e, 0x38, 0xdf, + 0x34, 0x02, 0xd4, 0xdd, 0x1b, 0x81, 0xe3, 0x25, 0x46, 0x1b, 0xb7, 0xa9, 0x6c, 0x0c, 0xdd, 0xb7, + 0xe9, 0xc0, 0xf9, 0xc6, 0x46, 0x04, 0x9b, 0x95, 0xf3, 0x76, 0x7e, 0x0a, 0x93, 0xc6, 0xe6, 0x7d, + 0xe2, 0xc6, 0x59, 0x77, 0xe0, 0xcc, 0x12, 0x6d, 0xd3, 0x88, 0x1e, 0xdb, 0x66, 0x67, 0x6d, 0x01, + 0xd4, 0xe9, 0x81, 0xd3, 0xd9, 0xf7, 0x99, 0x50, 0x5f, 0xd3, 0x7f, 0x09, 0x9b, 0x0f, 0x91, 0xea, + 0x89, 0x2c, 0xd8, 0x7d, 0x8b, 0x0b, 0xfa, 0xa1, 0xc2, 0xb4, 0x35, 0x2a, 0xeb, 0xdf, 0x16, 0x81, + 0x88, 0xdd, 0x37, 0xa0, 0xce, 0x81, 0x6c, 0xc6, 0xfb, 0x30, 0xc1, 0x35, 0x74, 0x0e, 0xc6, 0xe6, + 0x8c, 0x2f, 0x4c, 0x8b, 0x2f, 0x4f, 0x2f, 0x5a, 0x39, 0x65, 0x1b, 0xa8, 0x8c, 0xd4, 0xa6, 0xdc, + 0xb4, 0x80, 0xa4, 0x45, 0x83, 0x54, 0x2f, 0x62, 0xa4, 0xfa, 0x6f, 0xf2, 0x09, 0x4c, 0x2d, 0xfa, + 0x07, 0x1d, 0x36, 0x26, 0x82, 0x78, 0x40, 0x98, 0x6d, 0x44, 0xbd, 0x46, 0xe1, 0xca, 0x29, 0x3b, + 0x81, 0x4e, 0x36, 0x60, 0xfa, 0x6e, 0xbb, 0x1b, 0xee, 0x57, 0xbd, 0xd6, 0x62, 0xdb, 0x0f, 0x25, + 0x97, 0x41, 0xa1, 0x69, 0x89, 0xbd, 0x33, 0x8d, 0xb1, 0x72, 0xca, 0xce, 0x22, 0x24, 0xd7, 0x60, + 0x68, 0xf9, 0x29, 0xdb, 0xd3, 0xa5, 0x87, 0x8b, 0x70, 0xc0, 0xdb, 0xf4, 0xe8, 0xe6, 0xe3, 0x95, + 0x53, 0x36, 0x2f, 0xad, 0x8d, 0xc1, 0x88, 0xd4, 0xee, 0x6f, 0x31, 0x79, 0x5b, 0x0d, 0x67, 0x3d, + 0x72, 0xa2, 0x6e, 0x48, 0xe6, 0x61, 0x74, 0xa7, 0xc3, 0x94, 0x4e, 0x69, 0x16, 0xb1, 0xd5, 0x6f, + 0xeb, 0x4d, 0x73, 0xa4, 0xc9, 0x05, 0x88, 0x6d, 0xba, 0x02, 0x59, 0x33, 0xf2, 0xae, 0x98, 0x83, + 0xdb, 0x1b, 0xdb, 0xa8, 0xb7, 0x98, 0xa8, 0xb7, 0x94, 0x1c, 0x6b, 0x6b, 0x36, 0x73, 0xf0, 0xac, + 0xcf, 0xe1, 0xd2, 0x4e, 0x27, 0xa4, 0x41, 0x54, 0xed, 0x74, 0xda, 0x6e, 0x93, 0xdf, 0x90, 0xa1, + 0x15, 0x40, 0x2e, 0x96, 0x77, 0x61, 0x98, 0x03, 0xc4, 0x32, 0x91, 0x6b, 0xb0, 0xda, 0xe9, 0x08, + 0xdb, 0xc3, 0x5b, 0x5c, 0xf2, 0xe7, 0xd6, 0x04, 0x5b, 0x60, 0x5b, 0xbf, 0x5d, 0x80, 0x4b, 0xfc, + 0x0b, 0xc8, 0x65, 0xfd, 0x5d, 0x18, 0x43, 0xff, 0xb7, 0x8e, 0xd3, 0x94, 0xdf, 0x04, 0x77, 0x04, + 0x94, 0x40, 0x3b, 0x2e, 0xd7, 0x3c, 0x0b, 0x8b, 0xf9, 0x9e, 0x85, 0xf2, 0x03, 0x1b, 0xc8, 0xfc, + 0xc0, 0x3e, 0x03, 0x4b, 0xb4, 0xa8, 0xdd, 0x4e, 0x35, 0x2a, 0x7c, 0x91, 0x56, 0x59, 0xff, 0xb5, + 0x08, 0x73, 0xf7, 0xa8, 0x47, 0x03, 0x07, 0xfb, 0x69, 0x58, 0xb9, 0x74, 0x0f, 0xa3, 0x42, 0x4f, + 0x0f, 0xa3, 0x8a, 0xb4, 0x1b, 0x16, 0xd1, 0x6e, 0x98, 0x72, 0x97, 0x62, 0xba, 0xe8, 0x8e, 0xbd, + 0x2a, 0xba, 0x85, 0xba, 0x68, 0x37, 0x70, 0xf9, 0x2d, 0xc3, 0x6a, 0xec, 0x9d, 0x34, 0xd8, 0xd7, + 0xe6, 0x30, 0x2d, 0xbc, 0x35, 0x46, 0x84, 0x77, 0x92, 0xe9, 0x93, 0xb4, 0x01, 0xc3, 0xdc, 0xdc, + 0x89, 0x77, 0x5b, 0xe3, 0x0b, 0x37, 0xc4, 0x37, 0x95, 0xd3, 0x41, 0x61, 0x1b, 0xc5, 0x83, 0x9d, + 0x2f, 0x81, 0x08, 0x01, 0xb6, 0xe0, 0x32, 0xff, 0x19, 0x8c, 0x6b, 0x28, 0xc7, 0x39, 0xfb, 0x95, + 0xd9, 0x95, 0x89, 0xa3, 0xde, 0x1e, 0xb7, 0xe0, 0x6a, 0x67, 0xbf, 0xf5, 0x21, 0x94, 0xd3, 0xad, + 0x11, 0xa6, 0xb6, 0x7e, 0x96, 0x3d, 0x6b, 0x09, 0x66, 0xee, 0xd1, 0x08, 0x17, 0x2e, 0x7e, 0x44, + 0x9a, 0x97, 0x5d, 0xe2, 0x3b, 0x93, 0xbb, 0x2a, 0x02, 0xd9, 0x02, 0xd3, 0xbe, 0xd2, 0x3a, 0xcc, + 0x26, 0xb8, 0x88, 0xfa, 0x3f, 0x80, 0x11, 0x01, 0x52, 0x3b, 0xaa, 0x70, 0xd5, 0xa5, 0x8f, 0x44, + 0xc1, 0xee, 0x02, 0x5f, 0xb7, 0x82, 0xb3, 0x2d, 0x09, 0xac, 0x7d, 0x38, 0xcb, 0x8e, 0xd9, 0x98, + 0xab, 0x5a, 0x8e, 0xe7, 0x61, 0xac, 0xc3, 0x04, 0x85, 0xd0, 0xfd, 0x09, 0x5f, 0x46, 0x43, 0xf6, + 0x28, 0x03, 0xd4, 0xdd, 0x9f, 0x50, 0x72, 0x11, 0x00, 0x0b, 0xb1, 0x9b, 0x62, 0x17, 0x40, 0x74, + 0x6e, 0xca, 0x24, 0x80, 0x3e, 0x7a, 0x7c, 0xdd, 0xd8, 0xf8, 0xb7, 0x15, 0xc0, 0x5c, 0xaa, 0x26, + 0xd1, 0x81, 0x5b, 0x30, 0x2a, 0xe5, 0xe3, 0xc4, 0x25, 0x83, 0xde, 0x03, 0x5b, 0x21, 0x91, 0xd7, + 0xe1, 0xb4, 0x47, 0xbf, 0x89, 0x1a, 0xa9, 0x36, 0x4c, 0x32, 0xf0, 0x96, 0x6c, 0x87, 0xf5, 0x4b, + 0x68, 0x58, 0xae, 0x7b, 0xfe, 0xb3, 0xc7, 0x6d, 0xe7, 0x09, 0x4d, 0x55, 0xfc, 0x03, 0x18, 0xad, + 0xf7, 0xaf, 0x98, 0x7f, 0x3e, 0xb2, 0x72, 0x5b, 0x91, 0x58, 0x6d, 0x98, 0x67, 0x5d, 0xaa, 0x57, + 0xd7, 0xd7, 0x56, 0x5b, 0x5b, 0xdf, 0xf6, 0x00, 0x3e, 0x85, 0xf3, 0x99, 0xb5, 0x7d, 0xdb, 0x83, + 0xf8, 0x47, 0x83, 0x30, 0xc7, 0x0f, 0x93, 0xf4, 0x0a, 0x3e, 0xfe, 0x56, 0xf3, 0x0b, 0xb9, 0xef, + 0xbd, 0x9d, 0x71, 0xdf, 0x8b, 0x24, 0xfa, 0x7d, 0xaf, 0x71, 0xcb, 0xfb, 0x5e, 0xf6, 0x2d, 0x2f, + 0x1a, 0xa1, 0xcc, 0x5b, 0xde, 0xe4, 0xdd, 0xee, 0x72, 0xfe, 0xdd, 0x2e, 0x5e, 0x3c, 0x65, 0xdc, + 0xed, 0x66, 0xdd, 0xe8, 0x26, 0x1c, 0xa5, 0x46, 0x5f, 0xad, 0xa3, 0xd4, 0xeb, 0x30, 0x52, 0xed, + 0x74, 0x34, 0xc7, 0x43, 0x9c, 0x1e, 0xa7, 0xd3, 0xe1, 0x83, 0x27, 0x0b, 0xe5, 0x3e, 0x0f, 0x19, + 0xfb, 0xfc, 0xfb, 0x00, 0x8b, 0xf8, 0x3c, 0x02, 0x27, 0x6e, 0x1c, 0x31, 0x50, 0xc2, 0xe7, 0x8f, + 0x26, 0x70, 0xe2, 0x74, 0xf3, 0x4a, 0x8c, 0xcc, 0x05, 0x7b, 0x6b, 0x17, 0xca, 0xe9, 0xe5, 0xf3, + 0x0a, 0xb6, 0xae, 0x3f, 0x2c, 0xc0, 0x45, 0x21, 0xe4, 0x24, 0x3e, 0xf0, 0x93, 0xaf, 0xce, 0x77, + 0x60, 0x42, 0xd0, 0x6e, 0xc7, 0x1f, 0x02, 0xbf, 0x60, 0x97, 0x9b, 0x31, 0xdf, 0xd1, 0x0d, 0x34, + 0xf2, 0x0e, 0x8c, 0xe2, 0x1f, 0xf1, 0xc5, 0x10, 0x1b, 0x99, 0x31, 0x44, 0x6d, 0x24, 0xaf, 0x87, + 0x14, 0xaa, 0xf5, 0x35, 0x5c, 0xca, 0x6b, 0xf8, 0x2b, 0x18, 0x97, 0x7f, 0x55, 0x80, 0xf3, 0x82, + 0xbd, 0xb1, 0x55, 0xbc, 0xd0, 0xa9, 0x73, 0x02, 0x77, 0xe5, 0xfb, 0x30, 0xce, 0x2a, 0x94, 0xed, + 0x1e, 0x10, 0x47, 0xab, 0xd0, 0x1c, 0xe2, 0x92, 0x25, 0x27, 0x72, 0x84, 0xfb, 0x8d, 0x73, 0xd0, + 0x96, 0x96, 0x11, 0x5b, 0x27, 0xb6, 0xbe, 0x84, 0x0b, 0xd9, 0x5d, 0x78, 0x05, 0xe3, 0x73, 0x1f, + 0xe6, 0x33, 0x0e, 0x85, 0x17, 0x3b, 0x93, 0xbf, 0x80, 0xf3, 0x99, 0xbc, 0x5e, 0x41, 0x33, 0x57, + 0x98, 0xc4, 0x11, 0xbd, 0x82, 0x29, 0xb4, 0x1e, 0xc2, 0xb9, 0x0c, 0x4e, 0xaf, 0xa0, 0x89, 0xf7, + 0x60, 0x4e, 0x49, 0xda, 0x2f, 0xd5, 0xc2, 0x75, 0xb8, 0xc8, 0x19, 0xbd, 0x9a, 0x59, 0x79, 0x00, + 0xe7, 0x05, 0xbb, 0x57, 0x30, 0x7a, 0x2b, 0x70, 0x21, 0x56, 0xa8, 0x33, 0xe4, 0xa4, 0x63, 0x6f, + 0x32, 0xd6, 0x1a, 0x5c, 0x8e, 0x39, 0xe5, 0x08, 0x0d, 0xc7, 0xe7, 0xc6, 0xc5, 0xc1, 0x78, 0x96, + 0x5e, 0xc9, 0x8c, 0x3e, 0x84, 0xb3, 0x06, 0xd3, 0x57, 0x26, 0x2a, 0xad, 0xc2, 0x34, 0x67, 0x6c, + 0x8a, 0xce, 0x0b, 0xba, 0xe8, 0x3c, 0xbe, 0x70, 0x26, 0x66, 0x89, 0xe0, 0xdd, 0xb7, 0x32, 0xa4, + 0xe9, 0x75, 0x94, 0xa6, 0x25, 0x4a, 0xdc, 0xc2, 0x77, 0x60, 0x98, 0x43, 0x44, 0xfb, 0x32, 0x98, + 0x71, 0x65, 0x81, 0x93, 0x09, 0x64, 0xeb, 0x87, 0x70, 0x91, 0x6b, 0xa2, 0xf1, 0x45, 0xa5, 0xa9, + 0x2d, 0xfe, 0x20, 0xa1, 0x88, 0x9e, 0x13, 0x7c, 0x93, 0xf8, 0x39, 0xfa, 0xe8, 0x23, 0xb9, 0xb6, + 0xf3, 0xf8, 0x1f, 0xeb, 0xe9, 0x9a, 0x54, 0x30, 0x8b, 0x99, 0x0a, 0xe6, 0x55, 0xb8, 0xa2, 0x14, + 0xcc, 0x64, 0x35, 0x72, 0x69, 0x59, 0x5f, 0xc2, 0x79, 0xde, 0x51, 0xe9, 0x52, 0x68, 0x36, 0xe3, + 0xc3, 0x44, 0x37, 0xe7, 0x44, 0x37, 0x4d, 0xec, 0x9c, 0x4e, 0xfe, 0xad, 0x82, 0xfc, 0xe4, 0xb2, + 0x99, 0xff, 0xa2, 0x35, 0xee, 0x0d, 0xa8, 0xa8, 0x01, 0x31, 0x5b, 0xf4, 0x62, 0xea, 0xf6, 0x3a, + 0xcc, 0xea, 0x6c, 0xdc, 0x26, 0xdd, 0xbd, 0x83, 0x37, 0x48, 0x6f, 0xb3, 0xcf, 0x02, 0x01, 0x72, + 0xd9, 0x95, 0x33, 0xc6, 0x0d, 0xf1, 0x6d, 0x85, 0x69, 0x35, 0xe0, 0x42, 0x7a, 0x2a, 0xdc, 0xa6, + 0x7c, 0x4f, 0x40, 0x3e, 0x61, 0x9f, 0x30, 0x42, 0xc4, 0x64, 0xe4, 0x32, 0x95, 0xdf, 0x31, 0x27, + 0x97, 0x54, 0x96, 0x25, 0xb7, 0x9a, 0x44, 0xff, 0x59, 0xed, 0x72, 0x3d, 0xfc, 0x2a, 0x10, 0x59, + 0xb4, 0x58, 0xb7, 0x65, 0xd5, 0xe7, 0x60, 0x60, 0xb1, 0x6e, 0x8b, 0x87, 0x4c, 0x28, 0x09, 0x36, + 0xc3, 0xc0, 0x66, 0xb0, 0xa4, 0x44, 0x5e, 0x3c, 0x86, 0x44, 0x7e, 0x7f, 0x70, 0x74, 0xa0, 0x34, + 0x68, 0x93, 0xba, 0xbb, 0xe7, 0x3d, 0x74, 0xa3, 0x7d, 0x55, 0x61, 0xd5, 0xfa, 0x0a, 0xa6, 0x8d, + 0xea, 0xc5, 0x57, 0xdc, 0xf3, 0x05, 0x16, 0x93, 0x67, 0x17, 0xab, 0xe8, 0x56, 0x83, 0x26, 0x8b, + 0x09, 0xbe, 0xdf, 0x34, 0x9d, 0x06, 0x3e, 0xef, 0xb5, 0x65, 0xa1, 0xf5, 0x8f, 0x07, 0x35, 0xee, + 0xda, 0xbb, 0xb6, 0x1e, 0xbd, 0xbb, 0x03, 0xc0, 0x57, 0x88, 0xd6, 0x39, 0x26, 0x00, 0x8e, 0x0b, + 0x6f, 0x15, 0xbe, 0x25, 0xdb, 0x1a, 0xd2, 0x71, 0xdf, 0xbd, 0x09, 0xff, 0x63, 0x4e, 0x24, 0x9f, + 0x7a, 0x2a, 0xff, 0x63, 0xc1, 0x3a, 0xb4, 0x75, 0x24, 0xf2, 0xc3, 0xe4, 0xe3, 0x8c, 0x21, 0xbc, + 0xb0, 0x7a, 0x4d, 0xde, 0x60, 0xa7, 0xfb, 0x76, 0xb2, 0xf7, 0x19, 0xcf, 0x60, 0x96, 0xd1, 0xba, + 0x8f, 0x51, 0xb1, 0x58, 0xfe, 0x26, 0xa2, 0x1e, 0xdf, 0xdb, 0x87, 0xb1, 0x9e, 0x6b, 0x3d, 0xea, + 0x89, 0x91, 0x85, 0xfd, 0x3d, 0xe6, 0xd3, 0xa0, 0xaa, 0xcc, 0xce, 0xe6, 0x8f, 0x8b, 0xc8, 0x5e, + 0x5b, 0xf6, 0x5a, 0x1d, 0xdf, 0x55, 0x0a, 0x13, 0x5f, 0x44, 0x41, 0xbb, 0x41, 0x05, 0xdc, 0xd6, + 0x91, 0xac, 0xd7, 0x7b, 0x7a, 0xb5, 0x8f, 0xc2, 0xe0, 0xf6, 0xe2, 0xf6, 0x5a, 0xa9, 0x60, 0xdd, + 0x02, 0xd0, 0x6a, 0x02, 0x18, 0xde, 0xd8, 0xb4, 0xd7, 0xab, 0x6b, 0xa5, 0x53, 0x64, 0x16, 0xce, + 0x3c, 0x5c, 0xdd, 0x58, 0xda, 0x7c, 0x58, 0x6f, 0xd4, 0xd7, 0xab, 0xf6, 0xf6, 0x62, 0xd5, 0x5e, + 0x2a, 0x15, 0xac, 0xaf, 0x61, 0xc6, 0xec, 0xe1, 0x2b, 0x5d, 0x84, 0x11, 0x4c, 0x2b, 0x79, 0xe6, + 0xfe, 0xc3, 0x6d, 0xcd, 0xa3, 0x55, 0x28, 0x7f, 0x49, 0xcf, 0x2c, 0xa1, 0x26, 0x8a, 0xcf, 0x48, + 0x43, 0x22, 0x6f, 0x70, 0xb1, 0x20, 0xf9, 0x72, 0x99, 0x89, 0x05, 0x8d, 0x58, 0x2e, 0xc0, 0xad, + 0xef, 0xfb, 0x30, 0x63, 0xd6, 0x7a, 0x5c, 0x2b, 0xd5, 0x6b, 0xe8, 0xea, 0xab, 0x3d, 0x6b, 0x22, + 0x44, 0xbf, 0x36, 0x10, 0x3b, 0xeb, 0xf7, 0xa1, 0x24, 0xb0, 0xe2, 0x93, 0xf7, 0xaa, 0x34, 0x23, + 0x16, 0x32, 0x1e, 0x61, 0x4a, 0xa7, 0x74, 0x1f, 0x4a, 0x6c, 0xc7, 0x14, 0x94, 0xbc, 0x82, 0x19, + 0x18, 0x5a, 0x8b, 0xaf, 0x73, 0x6c, 0xfe, 0x03, 0x5f, 0xf7, 0x44, 0x4e, 0x10, 0x49, 0x3f, 0xb8, + 0x31, 0x5b, 0xfd, 0x26, 0x6f, 0xc0, 0xf0, 0x5d, 0xb7, 0x1d, 0x09, 0xd3, 0x48, 0x7c, 0xc8, 0x33, + 0xb6, 0xbc, 0xc0, 0x16, 0x08, 0x96, 0x0d, 0x67, 0xb4, 0x0a, 0x4f, 0xd0, 0x54, 0x52, 0x86, 0x91, + 0x0d, 0xfa, 0x8d, 0x56, 0xbf, 0xfc, 0x69, 0xbd, 0x0b, 0x67, 0x84, 0x8f, 0xa1, 0x36, 0x4c, 0x57, + 0xc4, 0x5b, 0xf1, 0x82, 0xf1, 0x60, 0x55, 0xb0, 0xc4, 0x22, 0x46, 0xb7, 0xd3, 0x69, 0xbd, 0x20, + 0x1d, 0x3b, 0x28, 0x4e, 0x48, 0xf7, 0x1d, 0x79, 0x0b, 0xd4, 0x6f, 0x3a, 0xff, 0x9f, 0x22, 0x94, + 0x13, 0x56, 0x86, 0xc5, 0x7d, 0xa7, 0xdd, 0xa6, 0xde, 0x1e, 0x25, 0xd7, 0x61, 0x70, 0x7b, 0x73, + 0x7b, 0x4b, 0x58, 0x49, 0xa5, 0x77, 0x01, 0x03, 0x29, 0x1c, 0x1b, 0x31, 0xc8, 0x03, 0x38, 0x23, + 0xbd, 0x88, 0x55, 0x91, 0x98, 0xa1, 0x8b, 0xbd, 0x7d, 0x92, 0xd3, 0x74, 0xe4, 0x6d, 0x61, 0x12, + 0xf9, 0x71, 0xd7, 0x0d, 0x68, 0x0b, 0x2d, 0x3f, 0xf1, 0x55, 0xbd, 0x56, 0x62, 0xeb, 0x68, 0xe4, + 0xfb, 0x30, 0x51, 0xaf, 0x6f, 0xc6, 0xb5, 0x0f, 0x19, 0x37, 0x44, 0x7a, 0x91, 0x6d, 0x20, 0xf2, + 0x27, 0xc1, 0xd6, 0x1f, 0x15, 0x60, 0x2e, 0xc7, 0xdc, 0x42, 0xde, 0x30, 0xc6, 0x61, 0x5a, 0x1b, + 0x07, 0x89, 0xb2, 0x72, 0x4a, 0x0c, 0xc4, 0xa2, 0xe6, 0x93, 0x3d, 0x70, 0x02, 0x9f, 0xec, 0x95, + 0x53, 0xb1, 0x1f, 0x36, 0x79, 0x1d, 0x06, 0xea, 0xf5, 0x4d, 0x61, 0x56, 0x27, 0x71, 0x0f, 0x34, + 0x64, 0x86, 0x50, 0x03, 0x18, 0x95, 0x20, 0xeb, 0x34, 0x4c, 0x1a, 0x13, 0x63, 0x59, 0x30, 0xa1, + 0xb7, 0x90, 0xcd, 0xfe, 0xa2, 0xdf, 0x52, 0xb3, 0xcf, 0xfe, 0xb6, 0x7e, 0xd5, 0x1c, 0x33, 0x72, + 0x11, 0x40, 0xde, 0xd7, 0xba, 0x2d, 0x79, 0xf3, 0x23, 0x20, 0xab, 0x2d, 0x72, 0x05, 0x26, 0x02, + 0xda, 0x72, 0x03, 0xda, 0x8c, 0x1a, 0xdd, 0x40, 0x3c, 0x8c, 0xb1, 0xc7, 0x25, 0x6c, 0x27, 0x68, + 0x93, 0xef, 0xc2, 0x30, 0xbf, 0x48, 0x16, 0xbd, 0x97, 0x4a, 0x42, 0xbd, 0xbe, 0xb9, 0x7e, 0xb7, + 0xca, 0x2f, 0xba, 0x6d, 0x81, 0x62, 0xd5, 0x60, 0x5c, 0xeb, 0x55, 0xbf, 0xda, 0x67, 0x60, 0x48, + 0xb7, 0x52, 0xf2, 0x1f, 0xd6, 0xef, 0x14, 0x60, 0x06, 0x97, 0xc1, 0x9e, 0xcb, 0x8e, 0x87, 0xb8, + 0x2f, 0x0b, 0xc6, 0xa4, 0x5d, 0x30, 0x26, 0x2d, 0x81, 0xab, 0x66, 0xef, 0x83, 0xd4, 0xec, 0x5d, + 0xc8, 0x9a, 0x3d, 0xdc, 0x02, 0x5c, 0xdf, 0xd3, 0x27, 0x4d, 0xbf, 0xae, 0xfb, 0xdd, 0x02, 0x4c, + 0x6b, 0x6d, 0x52, 0x1d, 0xbc, 0x63, 0x34, 0xe9, 0x7c, 0x46, 0x93, 0x52, 0xeb, 0xa9, 0x96, 0x6a, + 0xd1, 0x6b, 0xbd, 0x5a, 0x94, 0xb5, 0x9c, 0x8c, 0x65, 0xf2, 0x97, 0x05, 0x98, 0xcd, 0x1c, 0x03, + 0x72, 0x96, 0xc9, 0xff, 0xcd, 0x80, 0x46, 0x62, 0xe4, 0xc5, 0x2f, 0x06, 0x5f, 0x0d, 0xc3, 0x2e, + 0x0d, 0xc4, 0xb8, 0x8b, 0x5f, 0xe4, 0x35, 0x98, 0xdc, 0xa2, 0x81, 0xeb, 0xb7, 0xf8, 0xc3, 0x04, + 0xee, 0xf1, 0x3b, 0x69, 0x9b, 0x40, 0x72, 0x01, 0xc6, 0x94, 0xc7, 0x2a, 0xb7, 0xe1, 0xda, 0x31, + 0x80, 0xf1, 0x5e, 0x72, 0xf7, 0xf8, 0xc5, 0x0f, 0x23, 0x16, 0xbf, 0xd8, 0x06, 0x2c, 0x2d, 0xaa, + 0xc3, 0x7c, 0x03, 0x96, 0xe6, 0xd2, 0xb3, 0x30, 0xfc, 0x99, 0x8d, 0xeb, 0x18, 0x63, 0x4e, 0xd8, + 0xe2, 0x17, 0x99, 0x42, 0xd7, 0x72, 0x7c, 0x17, 0x83, 0x2e, 0xe5, 0x1f, 0xc0, 0x4c, 0xd6, 0xb8, + 0x66, 0x7d, 0x05, 0x82, 0xb6, 0xa8, 0x68, 0xbf, 0x84, 0xe9, 0x6a, 0xab, 0x15, 0x2f, 0x57, 0x3e, + 0xab, 0x7c, 0x9f, 0xe0, 0x36, 0x4d, 0x21, 0xd6, 0x0e, 0xae, 0x7a, 0x6e, 0x64, 0x4f, 0x2f, 0x7f, + 0xe3, 0x86, 0x91, 0xeb, 0xed, 0x69, 0x86, 0x57, 0xfb, 0xec, 0x06, 0x7d, 0x96, 0xb1, 0x04, 0x98, + 0xc4, 0x61, 0xf2, 0xe6, 0xf0, 0x0c, 0xe6, 0x33, 0x1a, 0xdb, 0x78, 0xeb, 0x9a, 0x33, 0xf9, 0xc6, + 0x05, 0x03, 0xd5, 0xe6, 0x13, 0xeb, 0xfb, 0x70, 0x96, 0x6f, 0xfb, 0xbd, 0x1a, 0x2f, 0x9a, 0xad, + 0xdb, 0x89, 0xad, 0xf7, 0xa4, 0x25, 0xa7, 0x67, 0xcb, 0xec, 0x09, 0xa3, 0x2d, 0x58, 0xe5, 0x7f, + 0x29, 0xc0, 0x7c, 0x82, 0xb4, 0xfe, 0xdc, 0x6b, 0xca, 0x33, 0xe7, 0xf5, 0xa4, 0xeb, 0x3e, 0xca, + 0x4a, 0xdc, 0x40, 0xea, 0xb6, 0x94, 0xf7, 0x3e, 0xb9, 0x05, 0xc0, 0x89, 0x35, 0x11, 0x07, 0xaf, + 0x07, 0x84, 0x97, 0x13, 0x0a, 0x39, 0x1a, 0x0a, 0xe9, 0x42, 0xd6, 0xb8, 0x8b, 0x6f, 0xa4, 0x9f, + 0xfd, 0x1c, 0xe3, 0xac, 0x50, 0x41, 0xde, 0xc8, 0x31, 0xa4, 0x67, 0xf1, 0xb7, 0xfe, 0xf6, 0x00, + 0xcc, 0xe9, 0x13, 0xf8, 0x22, 0x7d, 0xdd, 0x82, 0xf1, 0x45, 0xdf, 0x8b, 0xe8, 0x37, 0x91, 0x16, + 0xe7, 0x82, 0x28, 0x6f, 0x04, 0x55, 0x22, 0xc4, 0x6b, 0x0e, 0x68, 0x30, 0x59, 0xcf, 0xf0, 0xd6, + 0x8c, 0x11, 0xc9, 0x22, 0x4c, 0x6e, 0xd0, 0x67, 0xa9, 0x01, 0x44, 0x8f, 0x51, 0x8f, 0x3e, 0x6b, + 0x68, 0x83, 0xa8, 0xbb, 0xf1, 0x19, 0x34, 0xe4, 0x11, 0x4c, 0xc9, 0xc5, 0x65, 0x0c, 0xe6, 0xbc, + 0x7e, 0xf2, 0x9a, 0xcb, 0x99, 0xc7, 0x81, 0x60, 0x35, 0xe4, 0x8c, 0x61, 0x82, 0x23, 0xeb, 0x3a, + 0xaf, 0x91, 0x87, 0x36, 0x30, 0x8f, 0x76, 0xad, 0xc4, 0xf0, 0xc7, 0x4d, 0x86, 0x34, 0xd0, 0x59, + 0x58, 0x5b, 0x50, 0x4e, 0xcf, 0x87, 0xa8, 0xed, 0x6d, 0x18, 0xe6, 0x50, 0x21, 0x2a, 0xc9, 0x10, + 0x46, 0x0a, 0x9b, 0xdb, 0x32, 0x5a, 0xe2, 0x54, 0xe2, 0x30, 0x6b, 0x05, 0xed, 0x4b, 0x0a, 0x47, + 0x09, 0xab, 0xb7, 0x93, 0xd3, 0x8b, 0xae, 0xce, 0x72, 0x7a, 0x75, 0x5f, 0x1c, 0xf9, 0x24, 0x65, + 0x11, 0x4d, 0x74, 0x3a, 0x27, 0xd1, 0xb0, 0x1b, 0x30, 0x22, 0x40, 0x89, 0xe0, 0x4a, 0xf1, 0xe7, + 0x27, 0x11, 0xac, 0x0f, 0xe0, 0x1c, 0xda, 0x0b, 0x5d, 0x6f, 0xaf, 0x4d, 0x77, 0x42, 0xe3, 0x51, + 0x49, 0xbf, 0xcf, 0xfa, 0x23, 0x98, 0xcf, 0xa2, 0xed, 0xfb, 0x65, 0xf3, 0x70, 0x27, 0x7f, 0x5e, + 0x84, 0x99, 0xd5, 0x50, 0x17, 0xb8, 0x54, 0xc8, 0x93, 0x8c, 0x30, 0x1c, 0x38, 0x26, 0x2b, 0xa7, + 0xb2, 0xc2, 0x6c, 0xbc, 0xad, 0x3d, 0x77, 0x2d, 0xf6, 0x8a, 0xaf, 0xc1, 0x8e, 0x2d, 0xf5, 0xe0, + 0xf5, 0x75, 0x18, 0xdc, 0x60, 0x5b, 0xf5, 0x80, 0x98, 0x3b, 0x4e, 0xc1, 0x40, 0xf8, 0xdc, 0x94, + 0x1d, 0x91, 0xec, 0x07, 0xb9, 0x9b, 0x7a, 0xd4, 0x3a, 0xd8, 0x3f, 0x7e, 0xc4, 0xca, 0xa9, 0xd4, + 0xfb, 0xd6, 0x77, 0x61, 0xbc, 0xda, 0x3a, 0xe0, 0x2e, 0x99, 0xbe, 0x97, 0xf8, 0x2c, 0xb5, 0x92, + 0x95, 0x53, 0xb6, 0x8e, 0x48, 0xae, 0xf1, 0x57, 0x0d, 0xc3, 0x39, 0x31, 0x35, 0x98, 0xb0, 0x56, + 0xed, 0x74, 0x6a, 0xa3, 0x30, 0xcc, 0x1f, 0x5a, 0x5a, 0x5f, 0xc2, 0xbc, 0x70, 0xe4, 0xe1, 0xd6, + 0x51, 0x74, 0xf7, 0x09, 0x63, 0x5f, 0xad, 0x5e, 0xce, 0x37, 0x97, 0x00, 0x50, 0x17, 0x5a, 0xf5, + 0x5a, 0xf4, 0x1b, 0xe1, 0x49, 0xa8, 0x41, 0xac, 0x77, 0x60, 0x4c, 0x8d, 0x10, 0x0a, 0xfc, 0xda, + 0x61, 0x87, 0xa3, 0x35, 0x63, 0xbc, 0xe2, 0x95, 0x4f, 0x77, 0xcf, 0x19, 0x7d, 0x17, 0x51, 0x72, + 0xb8, 0x86, 0xe0, 0xc2, 0x6c, 0x62, 0x11, 0xc4, 0x41, 0x18, 0x94, 0x8c, 0xce, 0x5d, 0x1d, 0xd5, + 0xef, 0xa4, 0x08, 0x5f, 0x3c, 0x96, 0x08, 0x6f, 0xfd, 0xb3, 0x22, 0x2a, 0x97, 0xa9, 0xf1, 0x48, + 0xd8, 0xe9, 0x74, 0x5b, 0x61, 0x0d, 0xc6, 0xb0, 0xf7, 0x4b, 0xf2, 0xc1, 0x60, 0x6f, 0x3f, 0x94, + 0xd1, 0x9f, 0x1e, 0x56, 0x4e, 0xa1, 0xf3, 0x49, 0x4c, 0x46, 0x3e, 0x86, 0x91, 0x65, 0xaf, 0x85, + 0x1c, 0x06, 0x4e, 0xc0, 0x41, 0x12, 0xb1, 0x39, 0xc1, 0x26, 0x6f, 0xb3, 0x4f, 0x98, 0x9b, 0x77, + 0x6c, 0x0d, 0x12, 0x6b, 0xb9, 0x43, 0x79, 0x5a, 0xee, 0x70, 0x42, 0xcb, 0xb5, 0x60, 0x68, 0x33, + 0x68, 0x89, 0xd8, 0x36, 0x53, 0x0b, 0x13, 0x62, 0xe0, 0x10, 0x66, 0xf3, 0x22, 0xeb, 0xbf, 0x15, + 0x60, 0xee, 0x1e, 0x8d, 0x32, 0xd7, 0x90, 0x31, 0x2a, 0x85, 0x97, 0x1e, 0x95, 0xe2, 0x8b, 0x8c, + 0x8a, 0xea, 0xf5, 0x40, 0x5e, 0xaf, 0x07, 0xf3, 0x7a, 0x3d, 0x94, 0xdf, 0xeb, 0x7b, 0x30, 0xcc, + 0xbb, 0xca, 0x34, 0xf9, 0xd5, 0x88, 0x1e, 0xc4, 0x9a, 0xbc, 0xee, 0x45, 0x67, 0xf3, 0x32, 0x26, + 0x48, 0xae, 0x39, 0xa1, 0xae, 0xc9, 0x8b, 0x9f, 0xd6, 0x8f, 0xf0, 0xa9, 0xf1, 0x9a, 0xdf, 0x7c, + 0xa2, 0x59, 0x84, 0x47, 0xf8, 0x17, 0x9a, 0xbc, 0x41, 0x60, 0x58, 0xbc, 0xc4, 0x96, 0x18, 0xe4, + 0x32, 0x8c, 0xaf, 0x7a, 0x77, 0xfd, 0xa0, 0x49, 0x37, 0xbd, 0x36, 0xe7, 0x3e, 0x6a, 0xeb, 0x20, + 0x61, 0x29, 0x11, 0x35, 0xc4, 0xe6, 0x07, 0x04, 0x24, 0xcc, 0x0f, 0x0c, 0xb6, 0xbb, 0x60, 0xf3, + 0x32, 0x61, 0x88, 0x61, 0x7f, 0xf7, 0xd2, 0xdc, 0x95, 0x8a, 0xdf, 0x0f, 0xf1, 0x11, 0x9c, 0xb3, + 0x69, 0xa7, 0xed, 0x30, 0x99, 0xee, 0xc0, 0xe7, 0xf8, 0xaa, 0xcf, 0x97, 0x33, 0x9e, 0x09, 0x9a, + 0x3e, 0x15, 0xaa, 0xc9, 0xc5, 0x1e, 0x4d, 0x3e, 0x80, 0x2b, 0xf7, 0x68, 0x64, 0x6e, 0xa8, 0xb1, + 0xbd, 0x59, 0x74, 0x7e, 0x05, 0x46, 0x43, 0xd3, 0x56, 0x2e, 0x9f, 0xbd, 0x65, 0x12, 0xee, 0xbe, + 0x25, 0x6f, 0x93, 0x04, 0x1f, 0xf5, 0x97, 0xf5, 0x09, 0x54, 0xf2, 0xaa, 0x3b, 0x9e, 0xcb, 0xab, + 0x0b, 0x97, 0xf3, 0x19, 0x88, 0xe6, 0x2e, 0x83, 0xb4, 0xab, 0x8b, 0x4f, 0xa8, 0x5f, 0x6b, 0x4d, + 0x53, 0xbc, 0xf8, 0xc3, 0xaa, 0x49, 0xe7, 0xbf, 0x97, 0x68, 0x6e, 0x03, 0xaf, 0xac, 0x4d, 0x06, + 0xf1, 0xb8, 0x56, 0x61, 0x54, 0xc2, 0xc4, 0xb8, 0xce, 0x65, 0xb6, 0x54, 0x0e, 0x68, 0x4b, 0x32, + 0x50, 0x64, 0xd6, 0x8f, 0xe4, 0xf5, 0x8d, 0x49, 0x71, 0xbc, 0x77, 0xb3, 0xc7, 0xb9, 0xaf, 0xb1, + 0x7c, 0x38, 0x67, 0xf2, 0xd6, 0xcd, 0xf2, 0x25, 0xcd, 0x2c, 0xcf, 0xad, 0xf1, 0x97, 0x4d, 0x33, + 0xb1, 0xb0, 0x34, 0x68, 0x20, 0x72, 0x49, 0x37, 0xbe, 0x4f, 0xa4, 0x1f, 0xe2, 0xde, 0x86, 0xf9, + 0xac, 0x0a, 0x35, 0x3d, 0x50, 0x59, 0x78, 0x85, 0xbc, 0xb3, 0x04, 0x97, 0x64, 0x74, 0x29, 0xdf, + 0x8f, 0xc2, 0x28, 0x70, 0x3a, 0xf5, 0x66, 0xe0, 0x76, 0x62, 0x2a, 0x0b, 0x86, 0x39, 0x44, 0x8c, + 0x04, 0xbf, 0x0a, 0xe3, 0x38, 0xa2, 0xc4, 0xfa, 0xf5, 0x02, 0x58, 0x86, 0x9f, 0x16, 0xce, 0xf3, + 0x56, 0xe0, 0x3f, 0x75, 0x5b, 0xda, 0xf5, 0xd3, 0x1b, 0x86, 0xe9, 0x93, 0xbf, 0x49, 0x4c, 0xba, + 0x88, 0x8b, 0x3d, 0xf3, 0x76, 0xc2, 0x1c, 0xc9, 0x05, 0x4f, 0xf4, 0xdd, 0x32, 0x1f, 0x44, 0x28, + 0x33, 0xe5, 0xff, 0x28, 0xc0, 0xd5, 0x9e, 0x6d, 0x10, 0xfd, 0x79, 0x04, 0xa5, 0x64, 0x99, 0x58, + 0x41, 0x15, 0xcd, 0x6f, 0x23, 0xcd, 0x61, 0xf7, 0x0e, 0xf7, 0x43, 0x97, 0xfe, 0x4d, 0x1d, 0xc5, + 0x39, 0xc5, 0xef, 0xe4, 0xad, 0xc7, 0xf8, 0x15, 0x7e, 0xe4, 0xb4, 0x17, 0xd1, 0x00, 0x30, 0x10, + 0xbf, 0x29, 0x88, 0x18, 0xb4, 0x91, 0x0c, 0x93, 0xa1, 0x21, 0x5b, 0x9f, 0xe2, 0x77, 0x9d, 0xdd, + 0xe8, 0xe3, 0x7d, 0x6a, 0x8b, 0x70, 0x35, 0xe1, 0x3b, 0xf0, 0x02, 0x4c, 0x22, 0x98, 0x65, 0xc3, + 0xcf, 0x64, 0xef, 0x7b, 0x81, 0xdf, 0xed, 0xfc, 0x62, 0x66, 0xfd, 0x8f, 0x0b, 0xdc, 0x99, 0x53, + 0xaf, 0x56, 0x4c, 0xf4, 0x22, 0x40, 0x0c, 0x4d, 0x38, 0xf5, 0xab, 0x82, 0xdd, 0x3b, 0x5c, 0xe5, + 0xc6, 0x5b, 0x85, 0x3d, 0xce, 0x40, 0x23, 0xfb, 0xc5, 0xce, 0xe4, 0x5b, 0xe8, 0x30, 0xa0, 0x6a, + 0x3f, 0xde, 0xb8, 0xbf, 0x2b, 0xed, 0x1f, 0x27, 0xa4, 0xdb, 0x87, 0x19, 0xb6, 0x03, 0x54, 0xbb, + 0xd1, 0xbe, 0x1f, 0xb8, 0x91, 0x7c, 0x9e, 0x42, 0xb6, 0x44, 0x44, 0x00, 0x4e, 0xf5, 0xd1, 0xcf, + 0x0f, 0x2b, 0xef, 0x9d, 0x24, 0xee, 0xa7, 0xe4, 0xb9, 0xad, 0xa2, 0x08, 0x58, 0x73, 0x30, 0xb0, + 0x68, 0xaf, 0xe1, 0x86, 0x67, 0xaf, 0xa9, 0x0d, 0xcf, 0x5e, 0xb3, 0xfe, 0xaa, 0x08, 0x15, 0x1e, + 0xb3, 0x04, 0xfd, 0x4c, 0x62, 0xab, 0x85, 0xe6, 0xb8, 0x72, 0x5c, 0x03, 0x43, 0x22, 0x26, 0x49, + 0xf1, 0x38, 0x31, 0x49, 0x7e, 0x05, 0x72, 0x4c, 0x56, 0xc7, 0xb0, 0x02, 0x7c, 0xe7, 0xe8, 0xb0, + 0x72, 0x35, 0xb6, 0x02, 0xf0, 0xd2, 0x2c, 0x73, 0x40, 0x4e, 0x15, 0x69, 0xfb, 0xc5, 0xe0, 0x0b, + 0xd8, 0x2f, 0x6e, 0xc3, 0x08, 0x2a, 0x33, 0xab, 0x5b, 0xc2, 0xf3, 0x13, 0x97, 0x27, 0x46, 0x28, + 0x6a, 0xb8, 0x7a, 0x38, 0x40, 0x89, 0x66, 0xfd, 0xfd, 0x22, 0x5c, 0xce, 0x1f, 0x73, 0xd1, 0xb6, + 0x25, 0x80, 0xd8, 0xc3, 0xa5, 0x97, 0x47, 0x0d, 0x7e, 0x3b, 0xcf, 0xe8, 0x23, 0xe5, 0xd1, 0xa6, + 0xd1, 0x31, 0xd9, 0x47, 0xbe, 0xb4, 0x4e, 0x5c, 0xa7, 0x18, 0x0f, 0xb0, 0x45, 0x34, 0x5b, 0x01, + 0x32, 0xa2, 0xd9, 0x0a, 0x18, 0x79, 0x04, 0x73, 0x5b, 0x81, 0xfb, 0xd4, 0x89, 0xe8, 0x03, 0xfa, + 0x9c, 0x3f, 0x16, 0x5a, 0x16, 0x2f, 0x84, 0xf8, 0xf3, 0xf9, 0xeb, 0x47, 0x87, 0x95, 0xd7, 0x3a, + 0x1c, 0x05, 0x23, 0x96, 0xf1, 0xb7, 0x9f, 0x8d, 0xf4, 0xa3, 0xa1, 0x3c, 0x46, 0xd6, 0xbf, 0x29, + 0xc0, 0x79, 0x14, 0xcb, 0x85, 0xd9, 0x55, 0x56, 0xfe, 0x42, 0x8e, 0x95, 0x7a, 0x07, 0xc5, 0x5a, + 0x44, 0xc7, 0x4a, 0xe3, 0x25, 0xba, 0x6d, 0xa0, 0x91, 0x55, 0x18, 0x17, 0xbf, 0xf1, 0xfb, 0x1b, + 0x40, 0x85, 0x60, 0x56, 0xdb, 0xb0, 0x70, 0xa9, 0x73, 0x53, 0x11, 0x2e, 0x6c, 0xc1, 0x0c, 0x1f, + 0x6c, 0xda, 0x3a, 0xad, 0xf5, 0xb3, 0x22, 0x5c, 0xd8, 0xa5, 0x81, 0xfb, 0xf8, 0x79, 0x4e, 0x67, + 0x36, 0x61, 0x46, 0x82, 0x78, 0xdc, 0x12, 0xe3, 0x13, 0xe3, 0xf1, 0x2c, 0x65, 0x53, 0x45, 0xe0, + 0x13, 0xf9, 0xc5, 0x65, 0x12, 0x9e, 0xc0, 0x65, 0xf2, 0x6d, 0x18, 0x4d, 0x44, 0x0e, 0xc2, 0xf9, + 0x97, 0x5f, 0x68, 0x3c, 0x55, 0x2b, 0xa7, 0x6c, 0x85, 0x49, 0x7e, 0x33, 0xff, 0xaa, 0x4a, 0x98, + 0x3e, 0xfa, 0xd9, 0x3f, 0xf1, 0x83, 0x65, 0x1f, 0xab, 0xa3, 0x95, 0x66, 0x7c, 0xb0, 0x2b, 0xa7, + 0xec, 0xbc, 0x9a, 0x6a, 0xe3, 0x30, 0x56, 0xc5, 0x7b, 0x3b, 0xa6, 0xb9, 0xff, 0xf7, 0x22, 0x5c, + 0x92, 0x0f, 0x7f, 0x72, 0x86, 0xf9, 0x73, 0x98, 0x93, 0xa0, 0x6a, 0x87, 0x09, 0x0c, 0xb4, 0x65, + 0x8e, 0x34, 0x8f, 0x29, 0x2b, 0x47, 0xda, 0x11, 0x38, 0xf1, 0x60, 0xe7, 0x91, 0xbf, 0x1a, 0xeb, + 0xe7, 0xc7, 0x59, 0x71, 0x9c, 0xd0, 0x0a, 0xa9, 0xef, 0x99, 0xc6, 0xd0, 0x18, 0xfb, 0x67, 0x2b, + 0x65, 0x3d, 0x1d, 0x7c, 0x59, 0xeb, 0xe9, 0xca, 0xa9, 0xa4, 0xfd, 0xb4, 0x36, 0x05, 0x13, 0x1b, + 0xf4, 0x59, 0x3c, 0xee, 0xff, 0x77, 0x21, 0x11, 0xea, 0x81, 0x49, 0x18, 0x3c, 0xe6, 0x43, 0x21, + 0x0e, 0x05, 0x84, 0xa1, 0x1e, 0x74, 0x09, 0x83, 0xa3, 0xae, 0xc2, 0x08, 0xbf, 0xcc, 0x6e, 0x1d, + 0x43, 0xc3, 0x57, 0x2f, 0x78, 0xf8, 0xb3, 0xca, 0x16, 0x57, 0xf6, 0x05, 0xbd, 0xf5, 0x00, 0xae, + 0x08, 0x1f, 0x6f, 0x73, 0xf2, 0xb1, 0xa2, 0x13, 0x1e, 0x5f, 0x96, 0x03, 0x97, 0xee, 0xd1, 0xe4, + 0xd6, 0x63, 0xbc, 0x70, 0xfa, 0x04, 0x4e, 0x1b, 0x70, 0xc5, 0x11, 0xa5, 0x52, 0xb5, 0x86, 0x14, + 0xeb, 0x24, 0xb6, 0x75, 0x39, 0xab, 0x0a, 0xbd, 0xb1, 0x16, 0xc5, 0xe0, 0xb0, 0x41, 0x7c, 0xc5, + 0x16, 0x9e, 0x60, 0xd7, 0xbb, 0xae, 0x7d, 0xd7, 0x7c, 0xc7, 0xe3, 0xd1, 0x03, 0xe5, 0xc9, 0xab, + 0x4a, 0xad, 0x49, 0xe3, 0x2e, 0xc0, 0x9a, 0x82, 0x09, 0x59, 0xd4, 0xa6, 0x61, 0x68, 0xfd, 0xc7, + 0x21, 0xb0, 0xc4, 0xc0, 0x66, 0xdd, 0xd0, 0xcb, 0xf1, 0x78, 0x94, 0x6a, 0xac, 0x38, 0xa8, 0xce, + 0xea, 0x31, 0x49, 0xe3, 0x52, 0xbe, 0xf2, 0x50, 0xce, 0x6b, 0xc6, 0x50, 0x63, 0xe5, 0xa5, 0x7a, + 0xff, 0x55, 0xce, 0x36, 0xc9, 0x3f, 0x36, 0x7c, 0xb2, 0x9d, 0xb3, 0x4d, 0x1a, 0x7c, 0xb3, 0xb7, + 0x4c, 0xdb, 0xbc, 0x12, 0x19, 0x78, 0x91, 0x2b, 0x11, 0xf6, 0x45, 0xea, 0x97, 0x22, 0x3b, 0xe6, + 0x58, 0x8a, 0xef, 0x51, 0xde, 0xde, 0xeb, 0x45, 0x22, 0xe2, 0x82, 0x06, 0x31, 0xb8, 0x1a, 0x6c, + 0x88, 0x0b, 0x25, 0xcd, 0x66, 0xb9, 0xb8, 0x4f, 0x9b, 0x4f, 0x84, 0xad, 0x58, 0x5e, 0xe8, 0x66, + 0xd9, 0xcc, 0x79, 0x7c, 0x6a, 0xfe, 0x9d, 0xf3, 0x82, 0x46, 0x93, 0x91, 0xea, 0x11, 0x23, 0x92, + 0x6c, 0xc9, 0x4f, 0x60, 0x5a, 0x4d, 0x75, 0xc2, 0x45, 0x6b, 0x7c, 0xe1, 0xb5, 0x38, 0x94, 0xe9, + 0xc1, 0x63, 0xe7, 0xe6, 0xd3, 0x3b, 0x37, 0x33, 0x70, 0x79, 0x20, 0x82, 0xa6, 0x2c, 0xd0, 0xfc, + 0xb3, 0xf4, 0x8b, 0xae, 0x0c, 0x42, 0xf2, 0x05, 0xcc, 0xd4, 0xeb, 0x9b, 0xfc, 0x31, 0x87, 0x2d, + 0x2f, 0xf8, 0xed, 0x35, 0xe1, 0xb0, 0x85, 0xd3, 0x1d, 0x86, 0x7e, 0x43, 0x3c, 0x02, 0xd1, 0xdd, + 0x02, 0xf4, 0x50, 0x0c, 0x59, 0x2c, 0xf4, 0x9b, 0xf2, 0xbf, 0xab, 0xde, 0x2a, 0x30, 0x51, 0xc4, + 0x6d, 0x53, 0xf1, 0xe8, 0x48, 0x2e, 0xec, 0x9c, 0x5b, 0xbe, 0xc2, 0xb7, 0x7c, 0xcb, 0xf7, 0x07, + 0x45, 0xf9, 0x42, 0x23, 0x7d, 0xd1, 0x7a, 0xe2, 0xcb, 0xbe, 0xcc, 0x1e, 0x1c, 0xeb, 0x9c, 0xce, + 0x6c, 0x1c, 0xa9, 0xc9, 0xab, 0x52, 0x15, 0xac, 0x6c, 0x4a, 0x5d, 0x3b, 0xc4, 0x05, 0xc6, 0xed, + 0x29, 0x4a, 0x45, 0x1a, 0x55, 0xf2, 0x1e, 0x6e, 0xe0, 0xe5, 0xef, 0xe1, 0xfe, 0xe5, 0x18, 0x9c, + 0xd9, 0x72, 0xf6, 0x5c, 0x8f, 0x9d, 0x07, 0x36, 0x0d, 0xfd, 0x6e, 0xd0, 0xa4, 0xa4, 0x0a, 0x53, + 0xa6, 0xfb, 0x6d, 0x1f, 0xe7, 0x62, 0x76, 0xe4, 0x99, 0x30, 0xb2, 0x00, 0x63, 0xea, 0xc9, 0xaf, + 0x38, 0xa7, 0x32, 0x9e, 0x02, 0xaf, 0x9c, 0xb2, 0x63, 0x34, 0xf2, 0xbe, 0x71, 0x75, 0x74, 0x5a, + 0xbd, 0x5e, 0x47, 0xdc, 0x05, 0xee, 0x1f, 0xe9, 0xf9, 0x2d, 0xf3, 0xac, 0xe5, 0xf7, 0x23, 0x3f, + 0x4a, 0xdd, 0x26, 0x0d, 0x19, 0x2d, 0x4e, 0x99, 0xd4, 0x50, 0xcc, 0xc8, 0x8d, 0x3d, 0x9e, 0x71, + 0xcf, 0xf4, 0x25, 0x8c, 0x3f, 0xe8, 0x3e, 0xa2, 0xf2, 0xde, 0x6c, 0x58, 0x1c, 0xbd, 0x49, 0xa7, + 0x72, 0x51, 0xbe, 0xfb, 0x16, 0x9f, 0x83, 0x27, 0xdd, 0x47, 0x34, 0x1d, 0xd4, 0x9e, 0xed, 0x79, + 0x1a, 0x33, 0xb2, 0x0f, 0xa5, 0xa4, 0xff, 0xb7, 0x08, 0xef, 0xd7, 0xc3, 0x6b, 0x1d, 0xc3, 0xb4, + 0x68, 0xa1, 0xf3, 0xb9, 0x57, 0xaa, 0x51, 0x49, 0x8a, 0x2b, 0xf9, 0x55, 0x98, 0xcd, 0x34, 0x68, + 0xaa, 0x17, 0x6c, 0xbd, 0x6d, 0xa5, 0xb8, 0x81, 0x24, 0x46, 0x4d, 0x3e, 0x97, 0x33, 0x6a, 0xce, + 0xae, 0x85, 0xb4, 0xe0, 0x74, 0xc2, 0xaf, 0x59, 0xe4, 0x07, 0xc9, 0xf7, 0x94, 0xc6, 0x33, 0x4f, + 0x86, 0xd8, 0xcd, 0xac, 0x2b, 0xc9, 0x92, 0xac, 0xc1, 0x98, 0xb2, 0x24, 0x88, 0xc8, 0x6a, 0x59, + 0x56, 0x93, 0xf2, 0xd1, 0x61, 0x65, 0x26, 0xb6, 0x9a, 0x18, 0x3c, 0x63, 0x06, 0xe4, 0xd7, 0xe0, + 0x8a, 0x5a, 0xa2, 0x9b, 0x41, 0xb6, 0x7d, 0x49, 0x84, 0xe6, 0xbf, 0x91, 0x5c, 0xe1, 0x79, 0xf8, + 0xbb, 0x77, 0x6a, 0xc5, 0x72, 0x61, 0xe5, 0x94, 0xdd, 0x9f, 0x35, 0xf9, 0x8d, 0x02, 0x9c, 0xcd, + 0xa9, 0x75, 0x02, 0x6b, 0xed, 0x6b, 0xf4, 0x43, 0xbd, 0x01, 0x5f, 0x6d, 0xb9, 0xad, 0xf8, 0x75, + 0xa3, 0xb4, 0xfe, 0x19, 0xfd, 0xce, 0xa9, 0x89, 0xbc, 0x09, 0xc3, 0xa8, 0x7e, 0x87, 0xe5, 0x49, + 0x14, 0x50, 0x31, 0x3a, 0x11, 0x2a, 0xe9, 0xfa, 0x91, 0x24, 0x70, 0xc8, 0x0a, 0x13, 0xf4, 0xf0, + 0x48, 0x94, 0x82, 0x99, 0x88, 0x65, 0x26, 0x94, 0x05, 0x5e, 0x24, 0x83, 0x8c, 0x18, 0x39, 0x18, + 0x4c, 0xb2, 0x1a, 0xc0, 0x68, 0x20, 0x76, 0xa5, 0xfb, 0x83, 0xa3, 0x83, 0xa5, 0x21, 0xfe, 0xe1, + 0x48, 0x87, 0xf9, 0xdf, 0x1a, 0xe5, 0xaf, 0x6b, 0x77, 0x3c, 0xf7, 0xb1, 0x1b, 0x6f, 0x60, 0xba, + 0xe1, 0x2e, 0x4e, 0x86, 0x24, 0xc4, 0xea, 0x9c, 0xb4, 0x47, 0xca, 0xc6, 0x57, 0xec, 0x6b, 0xe3, + 0x7b, 0x4b, 0xbb, 0x0d, 0xd3, 0x62, 0x96, 0x72, 0xf1, 0xc9, 0xb4, 0xa9, 0xc5, 0xd7, 0x64, 0x5f, + 0xc3, 0x30, 0x86, 0x19, 0xe5, 0x57, 0x8d, 0xe3, 0x0b, 0x37, 0xc5, 0xb6, 0xdd, 0xa3, 0xf9, 0x3c, + 0x2e, 0xa9, 0x78, 0x31, 0xcf, 0x47, 0x1c, 0x01, 0xc6, 0x88, 0x23, 0x84, 0x6c, 0xc3, 0xf4, 0x16, + 0x3b, 0xcd, 0xb9, 0xdb, 0x76, 0x27, 0x10, 0x76, 0x0f, 0x6e, 0x51, 0x41, 0x69, 0xa2, 0x23, 0x8b, + 0x1b, 0x54, 0x95, 0xeb, 0x07, 0x6a, 0x06, 0x39, 0x59, 0x86, 0xa9, 0x3a, 0x75, 0x82, 0xe6, 0xfe, + 0x03, 0xfa, 0x9c, 0x49, 0x52, 0x46, 0xfe, 0x8f, 0x10, 0x4b, 0x58, 0x7f, 0xb1, 0x48, 0x77, 0x1f, + 0x31, 0x89, 0xc8, 0xa7, 0x30, 0x5c, 0xf7, 0x83, 0xa8, 0xf6, 0x5c, 0x6c, 0x6a, 0xf2, 0x32, 0x8a, + 0x03, 0x6b, 0xe7, 0x64, 0x0e, 0x94, 0xd0, 0x0f, 0xa2, 0xc6, 0x23, 0x23, 0xdc, 0x15, 0x47, 0x21, + 0xcf, 0x61, 0xc6, 0xdc, 0x50, 0x84, 0x37, 0xf1, 0xa8, 0x90, 0xe0, 0xb2, 0x76, 0x2d, 0x8e, 0x52, + 0xbb, 0x2e, 0xb8, 0x5f, 0x4e, 0x6e, 0x5b, 0x8f, 0xb1, 0x5c, 0x17, 0x7b, 0xb2, 0xe8, 0xc9, 0x3a, + 0x26, 0x8f, 0xe1, 0x3d, 0xaa, 0x86, 0xdc, 0x0b, 0x79, 0x2c, 0x0e, 0xa8, 0xd6, 0xc5, 0x4d, 0x09, + 0x47, 0xc2, 0x09, 0x93, 0x19, 0x87, 0xec, 0x14, 0x29, 0xd9, 0x82, 0x33, 0x3b, 0x21, 0xdd, 0x0a, + 0xe8, 0x53, 0x97, 0x3e, 0x93, 0xfc, 0x20, 0x8e, 0x3e, 0xc5, 0xf8, 0x75, 0x78, 0x69, 0x16, 0xc3, + 0x34, 0x31, 0x79, 0x1f, 0x60, 0xcb, 0xf5, 0x3c, 0xda, 0xc2, 0x1b, 0xcd, 0x71, 0x64, 0x85, 0xd6, + 0xda, 0x0e, 0x42, 0x1b, 0xbe, 0xd7, 0xd6, 0x87, 0x54, 0x43, 0x26, 0x35, 0x98, 0x5c, 0xf5, 0x9a, + 0xed, 0xae, 0xf0, 0x3c, 0x08, 0x71, 0x43, 0x11, 0x51, 0xf1, 0x5c, 0x5e, 0xd0, 0x48, 0x7d, 0xe4, + 0x26, 0x09, 0x79, 0x00, 0x44, 0x00, 0xc4, 0xaa, 0x75, 0x1e, 0xb5, 0xa9, 0xf8, 0xdc, 0xd1, 0x0a, + 0x23, 0x19, 0xe1, 0x72, 0x37, 0x82, 0xcd, 0xa5, 0xc8, 0xe6, 0xdf, 0x87, 0x71, 0x6d, 0xcd, 0x67, + 0x84, 0x80, 0x98, 0xd1, 0x43, 0x40, 0x8c, 0xe9, 0xa1, 0x1e, 0xfe, 0x51, 0x01, 0x2e, 0x64, 0x7f, + 0x4b, 0x42, 0x00, 0xdb, 0x84, 0x31, 0x05, 0x54, 0x8f, 0x7e, 0xa4, 0x56, 0x91, 0x90, 0x80, 0xf8, + 0x07, 0x2d, 0x77, 0x1e, 0xbd, 0xf7, 0x31, 0x8f, 0x17, 0x30, 0xf5, 0xff, 0xbf, 0xa3, 0x30, 0x83, + 0xce, 0xed, 0xc9, 0x7d, 0xea, 0x13, 0x0c, 0xe5, 0x82, 0x30, 0xcd, 0x72, 0x2d, 0x8c, 0x58, 0x1c, + 0x9e, 0x0c, 0x6a, 0x66, 0x10, 0x90, 0x77, 0x74, 0x77, 0x8b, 0xa2, 0x96, 0xac, 0x46, 0x02, 0xf5, + 0x2e, 0xc4, 0x7e, 0x18, 0x6f, 0x18, 0xb7, 0xfd, 0xc7, 0xde, 0xf4, 0x06, 0x8f, 0xbb, 0xe9, 0xed, + 0xa8, 0x4d, 0x8f, 0x87, 0x08, 0xf9, 0x8e, 0xb6, 0xe9, 0xbd, 0xfa, 0xdd, 0x6e, 0xf8, 0x55, 0xef, + 0x76, 0x23, 0x2f, 0xb7, 0xdb, 0x8d, 0xbe, 0xe0, 0x6e, 0x77, 0x17, 0xa6, 0x36, 0x28, 0x6d, 0x69, + 0x77, 0x30, 0x63, 0xf1, 0xe9, 0xe9, 0x51, 0xb4, 0xae, 0x65, 0x5d, 0xc4, 0x24, 0xa8, 0x72, 0x77, + 0x4d, 0xf8, 0x9b, 0xd9, 0x35, 0xc7, 0x5f, 0xf1, 0xae, 0x39, 0xf1, 0x32, 0xbb, 0x66, 0x6a, 0xeb, + 0x9b, 0x3c, 0xf1, 0xd6, 0xf7, 0x32, 0xbb, 0xd5, 0xc7, 0xe8, 0xad, 0x58, 0xaf, 0xaf, 0x08, 0xc7, + 0x14, 0xcd, 0x13, 0x64, 0xc5, 0x0f, 0xa5, 0x33, 0x37, 0xfe, 0xcd, 0x60, 0x98, 0x12, 0x80, 0x33, + 0xc1, 0xbf, 0xad, 0x1a, 0xfa, 0x28, 0xea, 0xf4, 0xea, 0xd1, 0xc3, 0x88, 0x78, 0x31, 0x29, 0xf6, + 0xb8, 0xa4, 0x1a, 0x65, 0xcb, 0x72, 0xeb, 0xcf, 0x0b, 0xfc, 0xbe, 0xf3, 0x7f, 0xc7, 0xad, 0xf2, + 0x65, 0xee, 0x20, 0x7f, 0x33, 0x8e, 0xa4, 0x20, 0xa2, 0x3e, 0x04, 0x4e, 0xf3, 0x49, 0x7c, 0x09, + 0xfc, 0x43, 0xf6, 0x9d, 0xeb, 0x05, 0x18, 0x34, 0x37, 0xd6, 0x15, 0xcd, 0xc2, 0xdd, 0x3b, 0x72, + 0x03, 0x10, 0x01, 0x25, 0x38, 0xd8, 0xdc, 0x00, 0x74, 0x02, 0x74, 0xc3, 0x3b, 0x6d, 0xd9, 0x3c, + 0x10, 0x40, 0x66, 0x0b, 0xde, 0x4d, 0x3f, 0x65, 0x47, 0x65, 0x24, 0x7e, 0xca, 0xae, 0x0f, 0x63, + 0xfc, 0xa8, 0x7d, 0x07, 0xce, 0xdb, 0xf4, 0xc0, 0x7f, 0x4a, 0x5f, 0x2d, 0xdb, 0xaf, 0xe0, 0x9c, + 0xc9, 0x90, 0x3f, 0x7a, 0xe2, 0x11, 0xfa, 0x3f, 0xce, 0x8e, 0xeb, 0x2f, 0x08, 0x78, 0x5c, 0x7f, + 0x1e, 0x1e, 0x9c, 0xfd, 0xa9, 0x9f, 0x1b, 0x58, 0x66, 0xf9, 0x70, 0xc1, 0x64, 0x5e, 0x6d, 0xb5, + 0x30, 0x35, 0x68, 0xd3, 0xed, 0x38, 0x5e, 0x44, 0x36, 0x61, 0x5c, 0xfb, 0x99, 0x30, 0x15, 0x68, + 0x25, 0x42, 0xa6, 0x89, 0x01, 0x46, 0x78, 0xd5, 0x18, 0x6c, 0x51, 0xa8, 0x24, 0x87, 0x87, 0x0d, + 0x99, 0x5e, 0x67, 0x0d, 0x26, 0xb5, 0x9f, 0xca, 0x1a, 0x8a, 0x1f, 0xbf, 0x56, 0x83, 0x39, 0x60, + 0x26, 0x89, 0xd5, 0x84, 0xf9, 0xac, 0x41, 0xe3, 0x71, 0xb8, 0xc9, 0x72, 0x1c, 0x66, 0xab, 0xbf, + 0x23, 0xdf, 0xe9, 0xbc, 0x10, 0x5b, 0xd6, 0xdf, 0x19, 0x84, 0xf3, 0x62, 0x32, 0x5e, 0xe5, 0x8c, + 0x93, 0x1f, 0xc1, 0xb8, 0x36, 0xc7, 0x62, 0xd0, 0x2f, 0xcb, 0x27, 0x4b, 0x79, 0x6b, 0x81, 0x9b, + 0x34, 0xba, 0x08, 0x68, 0x24, 0xa6, 0x7b, 0xe5, 0x94, 0xad, 0xb3, 0x24, 0x6d, 0x98, 0x32, 0x27, + 0x5a, 0x58, 0x75, 0xae, 0x66, 0x56, 0x62, 0xa2, 0xca, 0x20, 0xdd, 0xad, 0x46, 0xe6, 0x74, 0xaf, + 0x9c, 0xb2, 0x13, 0xbc, 0xc9, 0x37, 0x70, 0x26, 0x35, 0xcb, 0xc2, 0x58, 0xf7, 0x7a, 0x66, 0x85, + 0x29, 0x6c, 0x6e, 0xe9, 0x0d, 0x10, 0x9c, 0x5b, 0x6d, 0xba, 0x12, 0xd2, 0x82, 0x09, 0x7d, 0xe2, + 0x85, 0xd9, 0xe9, 0x4a, 0x8f, 0xa1, 0xe4, 0x88, 0x5c, 0xb8, 0x13, 0x63, 0x89, 0x73, 0xff, 0xdc, + 0xb4, 0x5e, 0x1b, 0xc8, 0xa3, 0x30, 0xcc, 0x7f, 0x5b, 0x7f, 0x50, 0x80, 0xf3, 0x5b, 0x01, 0x0d, + 0xa9, 0xd7, 0xa4, 0x86, 0xf3, 0xf7, 0x4b, 0xae, 0x88, 0x3c, 0xc3, 0x71, 0xf1, 0xa5, 0x0d, 0xc7, + 0xd6, 0xbf, 0x2e, 0x40, 0x39, 0xab, 0xc9, 0x75, 0xea, 0xb5, 0xc8, 0x16, 0x94, 0x92, 0x7d, 0x10, + 0x5f, 0x8c, 0xa5, 0x62, 0x2c, 0xe7, 0xf6, 0x76, 0xe5, 0x94, 0x9d, 0xa2, 0x26, 0x1b, 0x70, 0x46, + 0x83, 0x09, 0xc3, 0x6d, 0xf1, 0x38, 0x86, 0x5b, 0x36, 0xc3, 0x29, 0x52, 0xdd, 0xee, 0xbd, 0x82, + 0xa7, 0xee, 0x92, 0x7f, 0xe0, 0xb8, 0x1e, 0x13, 0xa2, 0xb5, 0x28, 0x5e, 0x10, 0x43, 0xc5, 0xb0, + 0x73, 0x4b, 0x2e, 0x42, 0xe5, 0x3b, 0x18, 0x85, 0x62, 0x7d, 0x84, 0xa7, 0x83, 0xb0, 0xff, 0xf1, + 0x97, 0xc7, 0x8a, 0xd9, 0x65, 0x18, 0xda, 0x5e, 0xab, 0x2f, 0x56, 0xc5, 0x3b, 0x66, 0x1e, 0xfd, + 0xa2, 0x1d, 0x36, 0x9a, 0x8e, 0xcd, 0x0b, 0xac, 0x0f, 0x81, 0xdc, 0xa3, 0x91, 0x08, 0xf2, 0xaf, + 0xe8, 0xae, 0xc1, 0x88, 0x00, 0x09, 0x4a, 0xf4, 0xe8, 0x13, 0x29, 0x03, 0x6c, 0x59, 0x66, 0x6d, + 0x49, 0x1d, 0xa4, 0x4d, 0x9d, 0x50, 0x3b, 0xf4, 0xdf, 0x83, 0xd1, 0x40, 0xc0, 0xc4, 0x99, 0x3f, + 0xa5, 0x72, 0xb8, 0x20, 0x98, 0xdb, 0xca, 0x25, 0x8e, 0xad, 0xfe, 0xb2, 0xd6, 0x30, 0x52, 0xcd, + 0xe6, 0xea, 0xd2, 0x22, 0x1b, 0x55, 0x31, 0x58, 0x72, 0x3a, 0x6e, 0xa1, 0xeb, 0x7b, 0x44, 0xf5, + 0x57, 0xcc, 0x38, 0x34, 0xb8, 0x81, 0x88, 0xf8, 0x4c, 0x1a, 0x8a, 0xf5, 0x96, 0x8a, 0x7b, 0x93, + 0xc1, 0x2d, 0x2f, 0x17, 0xc9, 0x06, 0x46, 0xf4, 0xb9, 0x87, 0x5e, 0x3e, 0xaf, 0xa2, 0x11, 0x0e, + 0xcc, 0x73, 0x11, 0x82, 0xf5, 0x4a, 0x64, 0x62, 0xf4, 0xd5, 0xb6, 0xbb, 0x08, 0x63, 0x0a, 0xa6, + 0xae, 0xec, 0xf8, 0x58, 0x19, 0xf8, 0xbb, 0x6f, 0xf1, 0x07, 0xdf, 0x4d, 0xc5, 0x20, 0xa6, 0x63, + 0x55, 0xf0, 0x6f, 0xfa, 0x5b, 0xae, 0x22, 0xa4, 0x41, 0xf4, 0xad, 0x56, 0x11, 0x87, 0x7c, 0x3a, + 0x49, 0x15, 0x06, 0xfe, 0xee, 0xc2, 0x71, 0x06, 0xea, 0x5b, 0xae, 0x82, 0x0d, 0xd4, 0xb7, 0x57, + 0x05, 0x95, 0xb1, 0xb1, 0xf8, 0x22, 0x4d, 0x55, 0xb2, 0x9c, 0xae, 0x44, 0x1a, 0xc5, 0x13, 0x14, + 0x3d, 0xe7, 0x83, 0xc2, 0x05, 0x3e, 0x58, 0xbf, 0x80, 0x6a, 0xd8, 0x80, 0x7d, 0xbb, 0xd5, 0xfc, + 0x83, 0x02, 0x8f, 0xd4, 0x55, 0xdf, 0xd4, 0x72, 0xa0, 0x7a, 0x8f, 0x7d, 0xcd, 0xa3, 0x40, 0xfb, + 0xda, 0x1f, 0xb8, 0x5e, 0x4b, 0xf7, 0x28, 0x70, 0xba, 0xd1, 0xbe, 0x8a, 0x64, 0xfd, 0xc4, 0xf5, + 0x5a, 0x76, 0x12, 0x9b, 0xbc, 0x0f, 0x93, 0x1a, 0x48, 0x49, 0x82, 0x3c, 0xd7, 0x88, 0x4e, 0xee, + 0xb6, 0x6c, 0x13, 0xd3, 0xfa, 0xeb, 0x02, 0x4c, 0x67, 0x64, 0xe7, 0x46, 0x43, 0x09, 0x6a, 0x58, + 0x6a, 0xa3, 0x12, 0xd9, 0xc1, 0x30, 0x68, 0x88, 0x71, 0xfe, 0x2a, 0x44, 0xcc, 0xb2, 0xa0, 0x65, + 0x12, 0x2f, 0x6a, 0x39, 0xef, 0xb2, 0xb3, 0x87, 0xeb, 0xe8, 0x24, 0x04, 0x88, 0x5b, 0x22, 0x4c, + 0xd2, 0x75, 0x26, 0x2e, 0x6b, 0x69, 0xc8, 0x5f, 0x49, 0x1e, 0x74, 0xad, 0x1a, 0xeb, 0x37, 0x8b, + 0x70, 0x36, 0xa3, 0xff, 0x75, 0x1a, 0xfd, 0x4d, 0x0c, 0x41, 0x22, 0x19, 0xfc, 0xc0, 0x2f, 0x28, + 0x19, 0xbc, 0xf5, 0x27, 0x45, 0x38, 0xbb, 0xd3, 0x09, 0xf1, 0x61, 0xd8, 0xaa, 0xf7, 0x94, 0x7a, + 0x91, 0x1f, 0x3c, 0xc7, 0xc7, 0x2c, 0xe4, 0x1d, 0x18, 0x5a, 0xa1, 0xed, 0xb6, 0x2f, 0xd6, 0xff, + 0x45, 0xe9, 0xd4, 0x91, 0xc4, 0x46, 0xa4, 0x95, 0x53, 0x36, 0xc7, 0x26, 0xef, 0xc3, 0xd8, 0x0a, + 0x75, 0x82, 0xe8, 0x11, 0x75, 0xa4, 0x3a, 0x24, 0x33, 0xa0, 0x68, 0x24, 0x02, 0x61, 0xe5, 0x94, + 0x1d, 0x63, 0x93, 0x05, 0x18, 0xdc, 0xf2, 0xbd, 0x3d, 0xf5, 0x08, 0x3e, 0xa7, 0x42, 0x86, 0xb3, + 0x72, 0xca, 0x46, 0x5c, 0xb2, 0x0e, 0x93, 0xd5, 0x3d, 0xea, 0x45, 0xeb, 0x34, 0x72, 0x5a, 0x4e, + 0xe4, 0x08, 0xb1, 0xf9, 0x5a, 0x1e, 0xb1, 0x81, 0xbc, 0x72, 0xca, 0x36, 0xa9, 0xc9, 0x87, 0x30, + 0x72, 0xcf, 0xf7, 0x5b, 0x8f, 0x9e, 0xcb, 0x50, 0x0e, 0x95, 0x3c, 0x46, 0x02, 0x6d, 0xe5, 0x94, + 0x2d, 0x29, 0x6a, 0x43, 0x30, 0xb0, 0x1e, 0xee, 0x59, 0x87, 0x05, 0x28, 0x2f, 0xf9, 0xcf, 0xbc, + 0xcc, 0x51, 0xfd, 0xbe, 0x39, 0xaa, 0x92, 0x7d, 0x06, 0x7e, 0x62, 0x5c, 0xdf, 0x86, 0xc1, 0x2d, + 0xd7, 0xdb, 0x4b, 0x88, 0x82, 0x19, 0x74, 0x0c, 0x0b, 0x87, 0xc7, 0xf5, 0xf6, 0xc8, 0x9a, 0x94, + 0xef, 0x85, 0x1d, 0x73, 0xc0, 0x50, 0x2a, 0x32, 0xa8, 0x75, 0xec, 0x58, 0x8e, 0xe7, 0xbf, 0x65, + 0x07, 0xdf, 0x80, 0xb9, 0x9c, 0x7a, 0xc5, 0xab, 0x76, 0xd6, 0xb7, 0x41, 0x14, 0x6c, 0xfe, 0xbf, + 0x02, 0xcc, 0x66, 0x4e, 0x60, 0x12, 0x93, 0xe9, 0x74, 0x7c, 0x61, 0x2e, 0xb6, 0xfd, 0xe6, 0x93, + 0x63, 0xf8, 0x86, 0x59, 0x32, 0x6b, 0xb8, 0xf8, 0x42, 0x9a, 0x8c, 0x2e, 0x91, 0x19, 0x4e, 0x67, + 0x69, 0xfd, 0xd3, 0xac, 0xb5, 0xce, 0x07, 0xb7, 0x0c, 0x23, 0x32, 0xfb, 0x18, 0x37, 0x5d, 0xc9, + 0x9f, 0xf8, 0x74, 0x4c, 0xee, 0x05, 0x32, 0x2c, 0x8c, 0xfc, 0xe4, 0x77, 0xb5, 0x30, 0x5c, 0xfc, + 0x8b, 0xfd, 0xe0, 0x25, 0xbe, 0x4b, 0xc5, 0x8b, 0xd5, 0xb9, 0xe2, 0x87, 0x91, 0xa7, 0x7c, 0x92, + 0x6d, 0xf5, 0x9b, 0xdc, 0x80, 0x92, 0xcc, 0x34, 0x22, 0x52, 0x1a, 0x89, 0xec, 0xf8, 0x76, 0x0a, + 0x4e, 0xde, 0x83, 0xb9, 0x24, 0x4c, 0xf6, 0x92, 0xbf, 0xfd, 0xcb, 0x2b, 0xb6, 0xfe, 0xac, 0x88, + 0x91, 0xd2, 0x7b, 0x7c, 0x3a, 0x6c, 0xfe, 0x36, 0xeb, 0x62, 0xb4, 0x8a, 0x9b, 0x75, 0x72, 0x01, + 0xc6, 0x36, 0xeb, 0x46, 0x0a, 0x37, 0x3b, 0x06, 0xb0, 0x66, 0xb3, 0x2e, 0x54, 0x83, 0xe6, 0xbe, + 0x1b, 0xd1, 0x66, 0xd4, 0x0d, 0xc4, 0x46, 0x6f, 0xa7, 0xe0, 0xc4, 0x82, 0x89, 0x7b, 0x6d, 0xf7, + 0x51, 0x53, 0x32, 0xe3, 0x43, 0x60, 0xc0, 0xc8, 0xeb, 0x30, 0xb5, 0xea, 0x85, 0x91, 0xd3, 0x6e, + 0xaf, 0xd3, 0x68, 0xdf, 0x6f, 0x89, 0x04, 0xb5, 0x76, 0x02, 0xca, 0xea, 0x5d, 0xf4, 0xbd, 0xc8, + 0x71, 0x3d, 0x1a, 0xd8, 0x5d, 0x2f, 0x72, 0x0f, 0xa8, 0xe8, 0x7b, 0x0a, 0x4e, 0xde, 0x86, 0x59, + 0x05, 0xdb, 0x0c, 0x9a, 0xfb, 0x34, 0x8c, 0x02, 0x4c, 0xec, 0x88, 0xde, 0x47, 0x76, 0x76, 0x21, + 0xd6, 0xd0, 0xf6, 0xbb, 0xad, 0x65, 0xef, 0xa9, 0x1b, 0xf8, 0x1e, 0xa6, 0x4d, 0x19, 0x15, 0x35, + 0x24, 0xe0, 0xd6, 0xef, 0x8f, 0x66, 0xee, 0x0c, 0x2f, 0xb3, 0x06, 0xbf, 0x80, 0x89, 0x45, 0xa7, + 0xe3, 0x3c, 0x72, 0xdb, 0x6e, 0xe4, 0xaa, 0x0c, 0x78, 0xef, 0xf4, 0xd9, 0x56, 0x64, 0xee, 0x19, + 0xda, 0xd2, 0x89, 0x6d, 0x83, 0xd5, 0xfc, 0x5f, 0x0d, 0xc3, 0x6c, 0x26, 0x1e, 0xb9, 0x2e, 0x52, + 0xe5, 0xa9, 0xad, 0x5b, 0xe4, 0x61, 0xb3, 0x93, 0x60, 0x36, 0x97, 0x08, 0x5a, 0x6c, 0x53, 0xc7, + 0xeb, 0x8a, 0x2c, 0x6c, 0xb6, 0x01, 0x63, 0x73, 0xc9, 0x44, 0x13, 0x8d, 0x19, 0xba, 0x94, 0xdb, + 0x09, 0x28, 0xb9, 0x0c, 0xe3, 0x0c, 0x22, 0x59, 0x0d, 0xf2, 0xc7, 0x8f, 0x1a, 0x88, 0x71, 0xda, + 0xf0, 0x5b, 0x54, 0xe3, 0x34, 0xc4, 0x39, 0x99, 0x50, 0xc6, 0x89, 0x41, 0x24, 0xa7, 0x61, 0xce, + 0x49, 0x03, 0x91, 0xd7, 0x60, 0xb2, 0xda, 0xe9, 0x68, 0x8c, 0x30, 0xfd, 0x9a, 0x6d, 0x02, 0xc9, + 0x25, 0x80, 0x6a, 0xa7, 0x23, 0xd9, 0x60, 0x6a, 0x35, 0x5b, 0x83, 0x90, 0x9b, 0x71, 0xb0, 0x3b, + 0x8d, 0x15, 0xde, 0x86, 0xd8, 0x19, 0x25, 0x6c, 0x5c, 0x55, 0x64, 0x30, 0xc1, 0x14, 0xf8, 0xb8, + 0x26, 0xc0, 0xe4, 0x23, 0x38, 0x97, 0x70, 0x1b, 0xd1, 0x2a, 0xc0, 0x9b, 0x0a, 0x3b, 0x1f, 0x81, + 0xbc, 0x0b, 0x67, 0x13, 0x85, 0xb2, 0x3a, 0xbc, 0x94, 0xb0, 0x73, 0x4a, 0xc9, 0x07, 0x50, 0x4e, + 0x3c, 0x68, 0x8f, 0x2b, 0xc5, 0x0b, 0x08, 0x3b, 0xb7, 0x9c, 0x7d, 0x5d, 0x89, 0x97, 0x71, 0xa2, + 0x4a, 0xbc, 0x6b, 0xb5, 0xb3, 0x0b, 0xc9, 0x0a, 0x54, 0x32, 0x5d, 0x71, 0xb4, 0x8a, 0x31, 0x65, + 0x9c, 0xdd, 0x0f, 0x8d, 0xd4, 0xe0, 0x42, 0x26, 0x8a, 0x6c, 0x06, 0x26, 0x92, 0xb3, 0x7b, 0xe2, + 0x90, 0x05, 0x98, 0x89, 0x5d, 0x92, 0xb4, 0x26, 0x60, 0x0e, 0x39, 0x3b, 0xb3, 0x8c, 0xbc, 0x69, + 0x86, 0x2d, 0xe0, 0x95, 0x61, 0x0a, 0x39, 0x3b, 0x5d, 0x60, 0x1d, 0x15, 0xe0, 0x42, 0xe6, 0x59, + 0x2c, 0x55, 0x86, 0xf9, 0xa4, 0x6c, 0xaa, 0xed, 0x05, 0x37, 0x60, 0x10, 0x75, 0x08, 0x6e, 0xea, + 0x96, 0x5e, 0xb8, 0x48, 0xcf, 0x59, 0xb1, 0x52, 0x1b, 0x71, 0xc8, 0x3d, 0x75, 0xb5, 0x39, 0x80, + 0xc6, 0x92, 0x5b, 0x49, 0x19, 0x2d, 0xa3, 0x72, 0xfd, 0x8a, 0x53, 0x5e, 0x66, 0xbe, 0xcc, 0x2d, + 0xd2, 0x9f, 0x15, 0xa0, 0xd2, 0x47, 0x04, 0x51, 0x7d, 0x2a, 0x1c, 0xa3, 0x4f, 0xf7, 0x55, 0x9f, + 0xf8, 0xab, 0xe1, 0x85, 0xe3, 0x89, 0x39, 0xaf, 0xba, 0x5b, 0x7f, 0x5d, 0x00, 0x92, 0x16, 0x75, + 0xc9, 0xf7, 0x60, 0xac, 0x5e, 0x5f, 0x31, 0x1c, 0x12, 0x53, 0x97, 0x5b, 0x31, 0x06, 0xb9, 0x7d, + 0x2c, 0x0f, 0x44, 0xdd, 0xff, 0xf0, 0x93, 0x94, 0xdb, 0xe3, 0x40, 0x4f, 0xb7, 0xc7, 0x94, 0xd3, + 0xe3, 0x72, 0x86, 0x1f, 0xdf, 0x60, 0x1f, 0x3f, 0xbe, 0xb4, 0x93, 0x9e, 0xb5, 0x04, 0xe5, 0x3c, + 0x69, 0x19, 0x77, 0x38, 0x1e, 0x22, 0x4e, 0xbb, 0xa0, 0xe3, 0x3b, 0x9c, 0x09, 0xb6, 0xde, 0x85, + 0xb3, 0x8a, 0x9a, 0xe7, 0x9e, 0xd1, 0x62, 0x33, 0x08, 0x15, 0x5b, 0xc5, 0x80, 0x88, 0x01, 0xd6, + 0x9f, 0x0e, 0xa6, 0x08, 0xeb, 0xdd, 0x83, 0x03, 0x27, 0x78, 0x4e, 0xaa, 0x26, 0xe1, 0x40, 0x5f, + 0xad, 0xa6, 0x36, 0xc8, 0x64, 0x4c, 0x8d, 0x3b, 0x3b, 0x17, 0x50, 0xc2, 0xf0, 0x9a, 0x94, 0x5f, + 0xed, 0x15, 0x79, 0xfc, 0x29, 0x03, 0x48, 0x76, 0x61, 0x52, 0x9c, 0xdd, 0xf8, 0x5b, 0x7e, 0x63, + 0xb7, 0x93, 0xdf, 0x98, 0xd1, 0xbc, 0x9b, 0x06, 0x09, 0x5f, 0x8d, 0x26, 0x1b, 0xf2, 0x05, 0x4c, + 0x49, 0x49, 0x4d, 0x30, 0xe6, 0xce, 0x58, 0x77, 0x7a, 0x33, 0x36, 0x69, 0x38, 0xe7, 0x04, 0x23, + 0xd6, 0x64, 0xb9, 0xd9, 0x71, 0xce, 0x43, 0xc7, 0x69, 0xb2, 0x41, 0x22, 0x9a, 0x6c, 0xc0, 0xe6, + 0x3f, 0x05, 0x92, 0xee, 0x57, 0xbf, 0xcf, 0x69, 0x52, 0xfb, 0x9c, 0xe6, 0xab, 0x30, 0x9d, 0xd1, + 0x81, 0x13, 0xb1, 0xf8, 0x14, 0x48, 0xba, 0xa5, 0x27, 0xe1, 0x60, 0x5d, 0x87, 0xd7, 0xd5, 0x10, + 0xa8, 0xd5, 0x60, 0xf0, 0x94, 0x46, 0xf6, 0x5f, 0x2f, 0x42, 0xa5, 0x0f, 0x2a, 0xf9, 0xbd, 0x42, + 0x72, 0xb4, 0xf9, 0x6a, 0x7c, 0x3f, 0x39, 0xda, 0xd9, 0xf4, 0x19, 0xc3, 0x5e, 0xfb, 0xe0, 0x37, + 0xfe, 0xe2, 0x85, 0x35, 0x8f, 0xf4, 0x94, 0x9d, 0x7c, 0xb4, 0x06, 0xf5, 0xd1, 0xda, 0x85, 0x19, + 0x43, 0x2d, 0x3c, 0xce, 0xe1, 0x65, 0x01, 0x88, 0x34, 0xb8, 0x6b, 0xfe, 0x9e, 0xc8, 0xd6, 0x5b, + 0x2c, 0x17, 0x6c, 0x0d, 0x6a, 0xdd, 0x85, 0xd9, 0x04, 0x5f, 0x61, 0xfc, 0xff, 0x1e, 0xa8, 0x77, + 0xf8, 0xc8, 0x78, 0xa0, 0x76, 0xe6, 0xe7, 0x87, 0x95, 0x49, 0x26, 0xd6, 0xdf, 0x8c, 0x53, 0x21, + 0xc8, 0xbf, 0xac, 0x75, 0xfd, 0xfa, 0xa2, 0xda, 0xd6, 0xe3, 0x13, 0x91, 0x3b, 0x30, 0xcc, 0x21, + 0x89, 0x80, 0xe3, 0x3a, 0xb6, 0xd8, 0x17, 0x04, 0xa2, 0x35, 0x8b, 0xaf, 0x86, 0xf1, 0x47, 0x35, + 0x8e, 0x72, 0x61, 0xed, 0xf0, 0x04, 0x3c, 0x31, 0x58, 0x05, 0x35, 0x1f, 0xac, 0xc6, 0xd1, 0x38, + 0xa4, 0x1f, 0x8b, 0xc4, 0xf3, 0xfc, 0x67, 0x6d, 0xda, 0xe2, 0x99, 0x13, 0x6b, 0x13, 0x42, 0xc7, + 0x1d, 0x74, 0x18, 0x03, 0x24, 0xb3, 0x3e, 0x81, 0x59, 0x26, 0x2d, 0x04, 0xc9, 0xfa, 0x30, 0xed, + 0x06, 0x83, 0x99, 0x8f, 0x03, 0x1c, 0x06, 0xc2, 0xc7, 0x01, 0xa2, 0xd0, 0x5a, 0x83, 0x73, 0xdc, + 0xf8, 0xa9, 0x77, 0x29, 0xbe, 0x6a, 0x18, 0xc2, 0xdf, 0x89, 0x37, 0xa7, 0x19, 0xbd, 0xe7, 0x78, + 0xd6, 0xc7, 0xf8, 0xa8, 0x49, 0x2c, 0x54, 0xd7, 0xf7, 0x62, 0x4b, 0xe7, 0xf1, 0x5e, 0x41, 0xff, + 0x9f, 0x70, 0xa1, 0xda, 0xe9, 0x50, 0xaf, 0x15, 0x13, 0x6e, 0x07, 0xce, 0x31, 0x63, 0x54, 0x90, + 0x2a, 0x0c, 0x21, 0xb6, 0xba, 0x03, 0x16, 0xcd, 0xcd, 0x68, 0x0e, 0xe2, 0x89, 0x08, 0xb4, 0x58, + 0x01, 0xa7, 0xb4, 0x5a, 0x30, 0x57, 0xef, 0x3e, 0x3a, 0x70, 0x23, 0x7c, 0x52, 0x80, 0x71, 0x5e, + 0x64, 0xdd, 0xab, 0x32, 0x67, 0x1a, 0x1f, 0x8c, 0xeb, 0xf1, 0xe3, 0x17, 0x7c, 0x95, 0x20, 0x62, + 0xbf, 0x3c, 0xbd, 0x73, 0x33, 0x26, 0x45, 0x2b, 0x0f, 0xaf, 0x05, 0x8b, 0x45, 0x5e, 0x35, 0x6b, + 0x1a, 0xce, 0xe8, 0x77, 0x5e, 0x7c, 0x85, 0xcc, 0xc2, 0xb4, 0x79, 0x97, 0xc5, 0xc1, 0x5f, 0xc3, + 0x0c, 0xb7, 0xb5, 0xf3, 0x08, 0xf2, 0x0b, 0x71, 0xb0, 0xf4, 0xe2, 0xee, 0x42, 0xe2, 0x2d, 0x03, + 0xba, 0x38, 0xab, 0xdc, 0x20, 0xbb, 0x0b, 0xfc, 0x61, 0xea, 0xd3, 0x05, 0xe3, 0x36, 0xb6, 0xb8, + 0xbb, 0x50, 0x1b, 0x11, 0x91, 0x78, 0x19, 0x77, 0x3e, 0xfd, 0xdf, 0x0a, 0xf7, 0x05, 0x8c, 0x85, + 0xb0, 0x42, 0x1d, 0x7c, 0xb7, 0x94, 0xfd, 0xa2, 0x7c, 0x0a, 0x8a, 0x2a, 0xd4, 0x66, 0xd1, 0x6d, + 0x59, 0x7f, 0x58, 0x80, 0xeb, 0x5c, 0x20, 0xcb, 0xa6, 0xc3, 0x8b, 0xad, 0x1c, 0x62, 0xf2, 0x1e, + 0x0c, 0x85, 0x9a, 0x83, 0x87, 0x25, 0x5a, 0xde, 0x8b, 0x13, 0x27, 0x20, 0x55, 0x98, 0xd0, 0x9f, + 0xe7, 0x1c, 0x2f, 0x8a, 0x9f, 0x3d, 0x7e, 0xf0, 0xd8, 0x51, 0x4f, 0x76, 0x9e, 0xc0, 0xf9, 0xe5, + 0x6f, 0xd8, 0x82, 0x10, 0x27, 0x94, 0xd0, 0x1e, 0xe2, 0x17, 0xcb, 0xa7, 0xb7, 0xc5, 0x8a, 0x31, + 0x55, 0xfb, 0x24, 0x98, 0xe9, 0xc9, 0xf2, 0x90, 0x53, 0x22, 0xfc, 0x98, 0x6d, 0xc0, 0xac, 0x3f, + 0x2d, 0xc0, 0x85, 0xec, 0xda, 0xc4, 0xc6, 0xb2, 0x0a, 0x67, 0x16, 0x1d, 0xcf, 0xf7, 0xdc, 0xa6, + 0xd3, 0xae, 0x37, 0xf7, 0x69, 0xab, 0xab, 0xe2, 0xf5, 0xaa, 0x5d, 0x66, 0x8f, 0x7a, 0x92, 0x5c, + 0xa2, 0xd8, 0x69, 0x2a, 0xa6, 0x21, 0xe2, 0x0b, 0x0f, 0xbe, 0xf7, 0xb6, 0x69, 0xa0, 0xf8, 0xf1, + 0x96, 0xe5, 0x94, 0x92, 0xdb, 0xf2, 0x52, 0xa1, 0xb5, 0xe3, 0xb9, 0x91, 0x22, 0xe2, 0xa6, 0x9e, + 0xac, 0x22, 0xeb, 0xdf, 0x15, 0xe0, 0x1c, 0xa6, 0xe8, 0x32, 0x92, 0x7e, 0xc6, 0x61, 0xab, 0x65, + 0xe4, 0xe5, 0x82, 0xf1, 0x62, 0xc5, 0xc0, 0x36, 0x43, 0x30, 0x93, 0x37, 0x61, 0xb0, 0x2e, 0x1d, + 0xce, 0xa6, 0x12, 0xe9, 0x9a, 0x05, 0x05, 0x2b, 0xb7, 0x11, 0x8b, 0xe9, 0xf0, 0x4b, 0x34, 0x6c, + 0x52, 0x0f, 0xf3, 0x6a, 0x73, 0xcb, 0x83, 0x06, 0x89, 0x23, 0x4a, 0x0d, 0xe6, 0x45, 0x94, 0x1a, + 0x32, 0x23, 0x4a, 0x59, 0x4f, 0x79, 0x82, 0xae, 0x64, 0x87, 0xc4, 0x24, 0x7d, 0x9c, 0x4a, 0xc3, + 0xcd, 0xcf, 0x81, 0xb3, 0x59, 0x3d, 0x63, 0x42, 0x7a, 0x22, 0xc3, 0x76, 0x7e, 0x98, 0xe8, 0x2d, + 0x78, 0xcd, 0xc0, 0xad, 0xb6, 0xdb, 0xfe, 0x33, 0xda, 0xda, 0x0a, 0xfc, 0x03, 0x3f, 0x32, 0x12, + 0x14, 0x89, 0x3c, 0xf4, 0xf1, 0xb5, 0x91, 0x58, 0x95, 0x09, 0xb0, 0xf5, 0x7f, 0xc0, 0xb5, 0x3e, + 0x1c, 0x45, 0xa7, 0xea, 0x70, 0xc6, 0x49, 0x94, 0x49, 0xcf, 0xa1, 0x6b, 0x59, 0xfd, 0x4a, 0x32, + 0x0a, 0xed, 0x34, 0xfd, 0x8d, 0x6d, 0x23, 0x75, 0x35, 0x29, 0xc3, 0xcc, 0x96, 0xbd, 0xb9, 0xb4, + 0xb3, 0xb8, 0xdd, 0xd8, 0xfe, 0x62, 0x6b, 0xb9, 0xb1, 0xb3, 0xf1, 0x60, 0x63, 0xf3, 0xe1, 0x06, + 0x8f, 0xb3, 0x6e, 0x94, 0x6c, 0x2f, 0x57, 0xd7, 0x4b, 0x05, 0x32, 0x03, 0x25, 0x03, 0xbc, 0xbc, + 0x53, 0x2b, 0x15, 0x6f, 0x7c, 0x6d, 0xa4, 0x64, 0x26, 0x17, 0xa0, 0x5c, 0xdf, 0xd9, 0xda, 0xda, + 0xb4, 0x15, 0x57, 0x3d, 0xca, 0xfb, 0x2c, 0x9c, 0x31, 0x4a, 0xef, 0xda, 0xcb, 0xcb, 0xa5, 0x02, + 0x6b, 0x8a, 0x01, 0xde, 0xb2, 0x97, 0xd7, 0x57, 0x77, 0xd6, 0x4b, 0xc5, 0x1b, 0x0d, 0xfd, 0x99, + 0x1c, 0x39, 0x0f, 0x73, 0x4b, 0xcb, 0xbb, 0xab, 0x8b, 0xcb, 0x59, 0xbc, 0x67, 0xa0, 0xa4, 0x17, + 0x6e, 0x6f, 0x6e, 0x6f, 0x71, 0xd6, 0x3a, 0xf4, 0xe1, 0x72, 0xad, 0xba, 0xb3, 0xbd, 0xb2, 0x51, + 0x1a, 0xb0, 0x06, 0x47, 0x8b, 0xa5, 0xe2, 0x8d, 0x1f, 0x19, 0x6f, 0xe8, 0x58, 0xf3, 0x05, 0xfa, + 0x4e, 0xbd, 0x7a, 0x2f, 0xbf, 0x0a, 0x5e, 0xba, 0x7e, 0xb7, 0x5a, 0x2a, 0x90, 0x8b, 0x70, 0xce, + 0x80, 0x6e, 0x55, 0xeb, 0xf5, 0x87, 0x9b, 0xf6, 0xd2, 0xda, 0x72, 0xbd, 0x5e, 0x2a, 0xde, 0xd8, + 0x35, 0xa2, 0xe8, 0xb1, 0x1a, 0xd6, 0xef, 0x56, 0x1b, 0xf6, 0xf2, 0x67, 0x3b, 0xab, 0xf6, 0xf2, + 0x52, 0xba, 0x06, 0xa3, 0xf4, 0x8b, 0xe5, 0x7a, 0xa9, 0x40, 0xa6, 0xe1, 0xb4, 0x01, 0xdd, 0xd8, + 0x2c, 0x15, 0x6f, 0xbc, 0x2e, 0x02, 0xad, 0x91, 0x29, 0x80, 0xa5, 0xe5, 0xfa, 0xe2, 0xf2, 0xc6, + 0xd2, 0xea, 0xc6, 0xbd, 0xd2, 0x29, 0x32, 0x09, 0x63, 0x55, 0xf5, 0xb3, 0x70, 0xe3, 0x03, 0x38, + 0x9d, 0x50, 0xef, 0x19, 0x86, 0x52, 0x8c, 0x4b, 0xa7, 0x70, 0xf8, 0xe5, 0x4f, 0xb4, 0xb1, 0x72, + 0x4d, 0xbd, 0x54, 0xb8, 0x51, 0x93, 0x59, 0x7c, 0xb5, 0xef, 0x9c, 0x8c, 0xc3, 0xc8, 0xd2, 0xf2, + 0xdd, 0xea, 0xce, 0xda, 0x76, 0xe9, 0x14, 0xfb, 0xb1, 0x68, 0x2f, 0x57, 0xb7, 0x97, 0x97, 0x4a, + 0x05, 0x32, 0x06, 0x43, 0xf5, 0xed, 0xea, 0xf6, 0x72, 0xa9, 0x48, 0x46, 0x61, 0x70, 0xa7, 0xbe, + 0x6c, 0x97, 0x06, 0x16, 0x7e, 0xfb, 0xf7, 0x0a, 0xdc, 0xd0, 0x28, 0xdf, 0x63, 0x7d, 0xad, 0x29, + 0x94, 0x62, 0xcb, 0x13, 0x29, 0x4b, 0x73, 0xb5, 0x47, 0x94, 0x02, 0xe6, 0x7b, 0x5c, 0xee, 0x20, + 0xc2, 0xf5, 0xc2, 0xed, 0x02, 0xb1, 0xd1, 0x19, 0x26, 0xa1, 0x5f, 0x29, 0xce, 0xd9, 0x2a, 0xf0, + 0xfc, 0xc5, 0x9e, 0x6a, 0x19, 0xf9, 0x15, 0xb0, 0x74, 0x9e, 0x39, 0x5a, 0xc8, 0xf7, 0x8e, 0xa7, + 0x6d, 0xc8, 0x3a, 0x5f, 0x3f, 0x1e, 0x3a, 0xb9, 0x0f, 0x93, 0x4c, 0x36, 0x57, 0x68, 0xe4, 0x7c, + 0x92, 0x50, 0x53, 0x09, 0xe6, 0x2f, 0x64, 0x17, 0xaa, 0xac, 0x42, 0x13, 0xd8, 0x11, 0xae, 0x5c, + 0x87, 0x44, 0x06, 0xe3, 0x90, 0x10, 0xbe, 0xe3, 0xcf, 0x9f, 0x49, 0x80, 0x77, 0xef, 0xdc, 0x2e, + 0x90, 0x3a, 0x46, 0xc2, 0x33, 0x84, 0x7c, 0x22, 0x1f, 0x08, 0xa6, 0xa5, 0x7f, 0xde, 0x9a, 0x8a, + 0xca, 0x01, 0x9a, 0xa3, 0x1d, 0x6c, 0x00, 0x49, 0xcb, 0xce, 0xe4, 0x72, 0xbc, 0x0e, 0xb2, 0xc5, + 0xea, 0xf9, 0xb3, 0xa9, 0x8b, 0xac, 0x65, 0x26, 0x3d, 0x91, 0x65, 0x98, 0x12, 0x2f, 0xed, 0x85, + 0x34, 0x4f, 0x7a, 0xe9, 0x03, 0xb9, 0x6c, 0xee, 0xe1, 0x38, 0x29, 0x8d, 0x80, 0xcc, 0xc7, 0xfd, + 0x48, 0xaa, 0x09, 0xf3, 0xe7, 0x33, 0xcb, 0x44, 0xff, 0xee, 0xc2, 0x94, 0xa9, 0x5c, 0x10, 0x39, + 0x41, 0x99, 0x3a, 0x47, 0x6e, 0x83, 0x1a, 0x30, 0xb7, 0xee, 0xb8, 0x78, 0x5f, 0x22, 0x9c, 0xf4, + 0xa4, 0x1f, 0x1c, 0xa9, 0xf4, 0x70, 0x8c, 0xab, 0x53, 0xaf, 0xa5, 0x26, 0x21, 0x2f, 0x43, 0x00, + 0x7e, 0x36, 0x75, 0x29, 0x23, 0x9b, 0x3e, 0x8a, 0xc4, 0x32, 0xf3, 0x3a, 0x67, 0xb9, 0x9d, 0xce, + 0xe7, 0x79, 0x4a, 0x93, 0x75, 0x14, 0xd2, 0x13, 0x1c, 0xb5, 0x35, 0x71, 0x62, 0x76, 0x65, 0x8c, + 0xf7, 0xa0, 0x25, 0xdb, 0x17, 0x85, 0x21, 0xc9, 0x19, 0xb8, 0x5c, 0x66, 0xb7, 0x0b, 0xe4, 0x6b, + 0xfc, 0xaa, 0x33, 0xd9, 0x3d, 0x74, 0xa3, 0x7d, 0x21, 0xfd, 0x9c, 0xcf, 0x64, 0x20, 0x3e, 0x94, + 0x1e, 0xdc, 0x6d, 0x98, 0xc9, 0x72, 0xce, 0x56, 0x03, 0xda, 0xc3, 0x73, 0x3b, 0x77, 0x15, 0xd8, + 0x4c, 0xd5, 0x68, 0xe5, 0x4f, 0x52, 0x0f, 0xdf, 0xe0, 0x5c, 0x9e, 0x1f, 0xc1, 0x14, 0x5b, 0x25, + 0x0f, 0x28, 0xed, 0x54, 0xdb, 0xee, 0x53, 0x1a, 0x12, 0x19, 0xc6, 0x58, 0x81, 0xf2, 0x68, 0xaf, + 0x17, 0xc8, 0x77, 0x61, 0xfc, 0xa1, 0x13, 0x35, 0xf7, 0x45, 0x38, 0x4f, 0x19, 0xed, 0x13, 0x61, + 0xf3, 0xf2, 0x17, 0x16, 0xde, 0x2e, 0x90, 0x1f, 0xc0, 0xc8, 0x3d, 0x1a, 0xe1, 0x03, 0xed, 0x2b, + 0xca, 0x97, 0x90, 0xdb, 0x27, 0x57, 0x3d, 0xf5, 0x0a, 0x49, 0x36, 0x38, 0x69, 0xcc, 0x25, 0xb7, + 0x00, 0xf8, 0x86, 0x80, 0x1c, 0x92, 0xc5, 0xf3, 0xa9, 0x66, 0x93, 0x7b, 0x4c, 0x78, 0x68, 0xd3, + 0x88, 0x1e, 0xb7, 0xca, 0xbc, 0x31, 0x5a, 0x83, 0x29, 0x95, 0x88, 0x69, 0x03, 0xa3, 0xae, 0x58, + 0x09, 0x66, 0xe1, 0x09, 0xb8, 0x7d, 0xc0, 0xbe, 0x0a, 0x9e, 0x85, 0x18, 0xc3, 0x73, 0xe0, 0x4e, + 0x3a, 0xa7, 0xc7, 0xf8, 0xd0, 0xb7, 0x50, 0x39, 0x88, 0x1c, 0x4d, 0xa3, 0x5d, 0xf1, 0xc3, 0xc8, + 0xa4, 0x55, 0x90, 0x6c, 0xda, 0x5f, 0x86, 0x79, 0xbd, 0x5e, 0x33, 0x9e, 0x74, 0xbc, 0xe7, 0xe6, + 0x85, 0xa9, 0x9e, 0xbf, 0xd2, 0x03, 0x43, 0xe8, 0x6f, 0x03, 0xbf, 0x55, 0x2c, 0xe0, 0x76, 0xb2, + 0x04, 0xd3, 0xb2, 0xae, 0xcd, 0x0e, 0xf5, 0xea, 0xf5, 0x15, 0x4c, 0xba, 0x23, 0x3d, 0x57, 0x34, + 0x98, 0xe4, 0x4e, 0xd2, 0x45, 0xec, 0xe8, 0x33, 0xc2, 0x70, 0x90, 0x5e, 0xc1, 0x39, 0xe2, 0xa3, + 0x2f, 0x33, 0xd0, 0xf1, 0x03, 0x6e, 0x54, 0x32, 0x84, 0xff, 0xdd, 0x05, 0xd2, 0x43, 0x01, 0x9a, + 0xcf, 0x51, 0x21, 0x6e, 0x17, 0xc8, 0x17, 0x40, 0xd2, 0x2a, 0x89, 0x1a, 0xc2, 0x5c, 0xf5, 0x4b, + 0x0d, 0x61, 0x0f, 0x7d, 0xe6, 0x1e, 0xcc, 0xaa, 0x20, 0x3c, 0x5a, 0xad, 0x0b, 0x24, 0xa7, 0x35, + 0x79, 0xad, 0x24, 0x9f, 0xc0, 0xb4, 0x58, 0xb4, 0x7a, 0x01, 0x29, 0xa9, 0xfd, 0x47, 0x68, 0x25, + 0xb9, 0xeb, 0xf4, 0x3e, 0xcc, 0xd6, 0x13, 0x23, 0xc6, 0x9d, 0xf9, 0xcf, 0x99, 0x2c, 0x10, 0x58, + 0xa7, 0x11, 0x1f, 0xb2, 0x6c, 0x5e, 0x0f, 0x80, 0x70, 0xa3, 0x90, 0x64, 0xf7, 0xd4, 0xa5, 0xcf, + 0xc8, 0xc5, 0x44, 0xd3, 0x19, 0x10, 0xd1, 0x70, 0x03, 0xcb, 0xed, 0xd9, 0x36, 0xcf, 0xa1, 0x8d, + 0x50, 0xe3, 0x1e, 0xfd, 0xb2, 0x41, 0x60, 0x5c, 0xc5, 0x8b, 0x09, 0x38, 0x97, 0x8b, 0x41, 0x7e, + 0x0d, 0xa3, 0xdf, 0xf6, 0x56, 0xab, 0xc8, 0x77, 0xb3, 0xb4, 0xdf, 0x1c, 0xc5, 0x70, 0xfe, 0xcd, + 0xe3, 0x21, 0x2b, 0x45, 0x76, 0xf2, 0x1e, 0x8d, 0xb6, 0xda, 0xdd, 0x3d, 0x17, 0xb3, 0xab, 0x12, + 0x65, 0x34, 0x52, 0x20, 0xb1, 0x2e, 0x65, 0xd0, 0xb9, 0xb8, 0xa0, 0x4e, 0x7f, 0x4c, 0x56, 0xa1, + 0xc4, 0xf7, 0x7f, 0x8d, 0xc5, 0xc5, 0x14, 0x0b, 0x81, 0xe2, 0x04, 0xce, 0x41, 0x98, 0x3b, 0x5b, + 0xb7, 0xb8, 0x6f, 0x14, 0x91, 0xdf, 0xa4, 0x2e, 0x60, 0x4e, 0x1b, 0x30, 0x95, 0x11, 0x80, 0xcd, + 0x88, 0x4d, 0x43, 0x1a, 0xc9, 0x30, 0x3b, 0x3c, 0xb7, 0xee, 0xd5, 0xf8, 0xb0, 0x4f, 0x97, 0xc6, + 0x9f, 0x7e, 0x22, 0x24, 0xdc, 0xee, 0x5b, 0x44, 0xe5, 0x1b, 0xce, 0x60, 0xfa, 0xba, 0x21, 0x93, + 0x9c, 0x8c, 0xef, 0xdb, 0x78, 0x06, 0x61, 0x68, 0xa1, 0xd9, 0xb8, 0x6d, 0xec, 0xb7, 0xa4, 0x9a, + 0xd4, 0xa8, 0x76, 0x17, 0x70, 0x4b, 0x63, 0x87, 0x24, 0x13, 0x61, 0xbb, 0x41, 0x40, 0x3d, 0x4e, + 0x9c, 0x27, 0x6f, 0x64, 0x51, 0x7f, 0x8c, 0x5b, 0x8f, 0x46, 0xcd, 0xdf, 0x1c, 0xf6, 0x63, 0xc1, + 0x73, 0x41, 0xdd, 0x2e, 0x90, 0xf7, 0x60, 0x54, 0xb4, 0x91, 0x11, 0x19, 0x8d, 0x0e, 0x7b, 0xb4, + 0x1a, 0x29, 0x81, 0x0f, 0x12, 0xb6, 0xd9, 0xc4, 0xc9, 0x9b, 0x7d, 0xde, 0xe6, 0xf7, 0xd8, 0x61, + 0xdb, 0x7a, 0x11, 0xca, 0x45, 0x79, 0xea, 0x22, 0x65, 0x59, 0x85, 0xa3, 0x91, 0xa0, 0x3e, 0xc7, + 0x23, 0x67, 0xc2, 0xe4, 0x66, 0x8c, 0xe9, 0xa8, 0x42, 0xb3, 0x29, 0xb9, 0xd9, 0x00, 0xf7, 0x3b, + 0x6b, 0x57, 0xa1, 0x54, 0x6d, 0xe2, 0x49, 0x50, 0xa7, 0x07, 0x4e, 0x67, 0xdf, 0x0f, 0xa8, 0x52, + 0x5a, 0x92, 0x05, 0x92, 0xd7, 0xac, 0x92, 0x2c, 0x44, 0xc1, 0x1a, 0x75, 0x30, 0xf0, 0xf5, 0x9c, + 0x12, 0x2d, 0x12, 0x45, 0xd9, 0x14, 0x3d, 0x94, 0x94, 0x99, 0x45, 0xa6, 0x56, 0xb5, 0x5f, 0x8e, + 0xcd, 0x07, 0xb8, 0x61, 0x28, 0xe4, 0x50, 0x9d, 0x10, 0x0a, 0xa4, 0xd4, 0x39, 0xf9, 0xfc, 0x48, + 0xa1, 0x56, 0xe5, 0xbd, 0x71, 0x3c, 0x2c, 0x79, 0xd4, 0x79, 0xd5, 0x7f, 0x1f, 0xa6, 0x96, 0xd9, + 0x86, 0xde, 0x6d, 0xb9, 0x3c, 0xd8, 0x3f, 0x31, 0xa3, 0xb7, 0xe7, 0x12, 0xae, 0xc8, 0xf4, 0x6b, + 0x48, 0x2a, 0x54, 0x7f, 0x79, 0xa6, 0x68, 0x30, 0x39, 0x1f, 0x33, 0x92, 0xad, 0xc8, 0xb7, 0x80, + 0xaa, 0xb9, 0xd0, 0xf5, 0xe7, 0xb8, 0x44, 0x58, 0xed, 0x74, 0xda, 0xd2, 0x24, 0xcd, 0xef, 0xde, + 0xaf, 0x19, 0x2a, 0x64, 0xaa, 0x5c, 0xf2, 0x4e, 0x0b, 0x8d, 0x9f, 0x6b, 0xe9, 0x90, 0x73, 0x78, + 0xe6, 0x94, 0xf7, 0x5b, 0x8b, 0x2a, 0x3c, 0x77, 0xb5, 0xdd, 0x4e, 0x11, 0x87, 0xe4, 0x0d, 0x93, + 0x7b, 0x16, 0x4e, 0xbf, 0x1a, 0x50, 0x45, 0xe7, 0x52, 0x57, 0xb5, 0xd3, 0xe1, 0x9b, 0xe5, 0x25, + 0xb5, 0x61, 0x98, 0x05, 0x69, 0x15, 0x3d, 0x59, 0x2e, 0xf6, 0xf6, 0xfb, 0xb8, 0xcc, 0xe2, 0x9c, + 0xc9, 0x44, 0x57, 0x78, 0x93, 0x29, 0xa3, 0x95, 0x10, 0x96, 0x28, 0x54, 0xe7, 0xc4, 0x69, 0x14, + 0x7d, 0xe2, 0x04, 0xcc, 0xca, 0x32, 0x93, 0x80, 0x4b, 0x7e, 0x97, 0xf2, 0x8a, 0x95, 0xa5, 0xb4, + 0x94, 0xcc, 0x4b, 0xaf, 0xba, 0x9c, 0x4e, 0x58, 0x6f, 0x76, 0x39, 0x37, 0xa1, 0xfd, 0x7d, 0x28, + 0x25, 0x53, 0x62, 0x2b, 0xa6, 0x39, 0xb9, 0xb2, 0x73, 0xe7, 0xe4, 0x2e, 0xcc, 0xe8, 0x33, 0xaa, + 0xfa, 0x9d, 0xb7, 0xfb, 0xe7, 0xf1, 0xd9, 0x86, 0xd9, 0xcc, 0x0c, 0xd6, 0xea, 0x88, 0xed, 0x95, + 0xdf, 0x3a, 0x97, 0x2b, 0x85, 0xb3, 0xd9, 0x49, 0xec, 0xc9, 0x6b, 0xa6, 0xe2, 0x9f, 0x9d, 0xd2, + 0x7b, 0xfe, 0x5a, 0x1f, 0x2c, 0x31, 0xa0, 0x5f, 0xe3, 0x09, 0x98, 0xaa, 0xe3, 0x8a, 0x66, 0x0a, + 0xc8, 0xa9, 0xc0, 0xea, 0x85, 0xa2, 0xd6, 0xc0, 0x4c, 0x46, 0x71, 0xfe, 0x10, 0x5f, 0xcd, 0xe7, + 0x19, 0x2f, 0xac, 0x5d, 0x19, 0x85, 0x3a, 0x77, 0x64, 0x7a, 0x26, 0x3b, 0xef, 0xa1, 0x4b, 0xce, + 0xab, 0xf5, 0x70, 0xfc, 0x26, 0xe7, 0x71, 0x6b, 0x29, 0xb3, 0x8d, 0x91, 0x89, 0x3c, 0x69, 0xb6, + 0xc9, 0xca, 0xa0, 0xae, 0x86, 0xa1, 0x57, 0x8e, 0x7e, 0x7e, 0x1a, 0x7f, 0xc5, 0xed, 0x38, 0x66, + 0x15, 0xba, 0x1d, 0x27, 0x93, 0xff, 0xe5, 0x7c, 0x04, 0x9d, 0xb9, 0xc3, 0x2f, 0x6d, 0x13, 0xa9, + 0xd4, 0x89, 0xae, 0x2a, 0x65, 0xa7, 0x59, 0x57, 0x6b, 0x23, 0x13, 0x45, 0xaf, 0xe2, 0xa1, 0xfc, + 0x06, 0x73, 0x46, 0xa9, 0x47, 0x9e, 0xf9, 0xde, 0x62, 0xca, 0x26, 0x94, 0xe3, 0xc9, 0x4c, 0x74, + 0xe0, 0x84, 0x53, 0x29, 0x07, 0xe3, 0x5c, 0x6e, 0x76, 0x79, 0xf2, 0x9d, 0xd4, 0x97, 0x9e, 0x33, + 0x30, 0x3d, 0xab, 0xe0, 0xfb, 0xb9, 0x16, 0xd5, 0xfa, 0x7c, 0x6c, 0xc4, 0xd5, 0x13, 0xd1, 0xa7, + 0xf6, 0xf3, 0x8c, 0x2c, 0xf5, 0xf7, 0x50, 0x2e, 0xd6, 0x32, 0xcd, 0xe7, 0xf6, 0xfa, 0x62, 0x16, + 0x9f, 0x30, 0xbd, 0xe3, 0x6a, 0xed, 0x92, 0x72, 0x5a, 0xb2, 0xe0, 0x24, 0x3b, 0xee, 0x71, 0x9a, + 0x96, 0xc7, 0x67, 0x09, 0xc6, 0xb5, 0x14, 0xf5, 0xe4, 0x9c, 0x31, 0x4c, 0xc6, 0x19, 0x3a, 0x6f, + 0x74, 0xce, 0x3c, 0x3e, 0x17, 0xd1, 0x94, 0xac, 0x12, 0xdd, 0xe7, 0xb6, 0xe2, 0x7c, 0x9a, 0x87, + 0x61, 0x46, 0x56, 0xa3, 0xc0, 0x5b, 0x73, 0x21, 0x39, 0x38, 0x46, 0x83, 0xf2, 0xbb, 0x44, 0xf4, + 0xa1, 0xe9, 0xd3, 0xa4, 0x7c, 0xf9, 0x75, 0x5a, 0xe4, 0xc1, 0xc5, 0x54, 0x34, 0x32, 0x6c, 0xe1, + 0x59, 0x65, 0x13, 0xd3, 0xa0, 0x68, 0xa0, 0xc8, 0x66, 0xb3, 0x85, 0xcf, 0x47, 0x32, 0x72, 0xf6, + 0xab, 0x1d, 0xb6, 0x67, 0x4a, 0xff, 0x0c, 0xd9, 0x4d, 0xed, 0xd9, 0xb9, 0x1c, 0x7b, 0x26, 0xf1, + 0xcf, 0x6d, 0xe9, 0x0f, 0xb5, 0x3d, 0x3b, 0x95, 0x99, 0x9f, 0x5c, 0x4f, 0x0a, 0x6e, 0x79, 0xc9, + 0xfb, 0x7b, 0x9c, 0x09, 0x33, 0x59, 0x49, 0xfd, 0x35, 0xbb, 0x6e, 0x6e, 0xc6, 0xff, 0x8c, 0x51, + 0xb0, 0xe5, 0xfa, 0xcf, 0xe1, 0xd6, 0x23, 0xc5, 0x7f, 0x6e, 0x0b, 0xbf, 0xd4, 0x36, 0xba, 0x44, + 0x2a, 0x7e, 0xa5, 0x8e, 0xf7, 0xc9, 0xd5, 0x9f, 0xcb, 0x7b, 0x03, 0x9f, 0x34, 0xa5, 0xf3, 0xe8, + 0x2b, 0xc9, 0xa6, 0x57, 0x96, 0xfd, 0x4c, 0xb3, 0xef, 0x6c, 0xba, 0x8b, 0x8c, 0xdf, 0xd9, 0x84, + 0xd1, 0xb6, 0x5f, 0xc3, 0xbe, 0x96, 0x9b, 0x71, 0x46, 0xfe, 0xfd, 0xc4, 0x66, 0x9c, 0x9f, 0xa1, + 0xbf, 0x87, 0x1a, 0x74, 0xba, 0xee, 0xee, 0x79, 0x5a, 0xfa, 0x7c, 0xa5, 0x04, 0xa5, 0x33, 0xfa, + 0xab, 0x2d, 0x26, 0x2b, 0xdb, 0xfe, 0x26, 0x93, 0x7f, 0xb8, 0xf4, 0xae, 0x27, 0x42, 0x27, 0xf3, + 0xf9, 0xf9, 0xdf, 0xd5, 0x76, 0x93, 0x99, 0x39, 0x5d, 0x63, 0xa8, 0x67, 0x21, 0x57, 0x0c, 0x33, + 0x12, 0xa2, 0x2b, 0x86, 0x99, 0x69, 0xcb, 0x6f, 0xa1, 0xd5, 0xc5, 0xf6, 0xdb, 0x54, 0xb7, 0xba, + 0x68, 0x69, 0xad, 0x13, 0x46, 0x0f, 0xf2, 0x31, 0x8c, 0xa9, 0xb4, 0xdf, 0xca, 0xbe, 0x9d, 0xcc, + 0x3c, 0x3e, 0x5f, 0x4e, 0x17, 0x88, 0x0a, 0xdf, 0x91, 0x86, 0x0f, 0xac, 0xb3, 0x6c, 0x1a, 0x8c, + 0xf2, 0xab, 0x7d, 0x47, 0x5a, 0x3d, 0x0c, 0xb2, 0x54, 0xd2, 0xef, 0x24, 0xd9, 0xf7, 0x61, 0x22, + 0x4e, 0xf0, 0xbd, 0xbb, 0xa0, 0x11, 0x26, 0xb2, 0x7e, 0x27, 0x09, 0xdf, 0x93, 0x57, 0x1a, 0x58, + 0x9f, 0x59, 0xd8, 0xfb, 0x14, 0xff, 0x58, 0x5a, 0x59, 0x8c, 0x96, 0xa6, 0xd2, 0x85, 0xf7, 0xd8, + 0x7c, 0x27, 0xf4, 0x8c, 0x9b, 0x6a, 0x6a, 0x33, 0x72, 0xe6, 0xaa, 0xa9, 0xcd, 0xca, 0x79, 0x1b, + 0x9b, 0xfc, 0xbf, 0x90, 0x26, 0x85, 0x98, 0xe9, 0x45, 0xa3, 0x59, 0x29, 0xbe, 0x97, 0xf2, 0x8a, + 0x93, 0xac, 0xeb, 0x50, 0x4a, 0xa6, 0x07, 0x55, 0xfa, 0x58, 0x4e, 0x1e, 0x57, 0xa5, 0xe4, 0xe5, + 0xe6, 0x15, 0xdd, 0x92, 0xf6, 0x71, 0x93, 0xef, 0x95, 0xec, 0x46, 0xe9, 0xac, 0xf3, 0x0d, 0xe6, + 0x93, 0x46, 0xa6, 0x50, 0x5d, 0x53, 0x4e, 0x65, 0x22, 0xd5, 0x25, 0xab, 0x8c, 0xe4, 0xa2, 0xae, + 0x0c, 0x5a, 0x95, 0x9d, 0xd4, 0xfd, 0x0d, 0x53, 0x85, 0xed, 0x11, 0x56, 0xbe, 0xef, 0xf5, 0x2f, + 0xf9, 0x25, 0x98, 0xcb, 0x09, 0x93, 0x4d, 0xae, 0x25, 0x2c, 0xad, 0xd9, 0x61, 0xb4, 0xd5, 0x02, + 0xc9, 0x4c, 0xe1, 0xbd, 0x8e, 0x7e, 0x03, 0x46, 0x08, 0x89, 0xd4, 0x5d, 0xdc, 0x43, 0x37, 0xda, + 0xe7, 0x99, 0xaa, 0xb5, 0x6d, 0x33, 0x33, 0xf6, 0x04, 0xa9, 0xa3, 0x2e, 0x62, 0x40, 0x33, 0xae, + 0xe3, 0x32, 0x18, 0xce, 0x67, 0x33, 0x64, 0x7b, 0x07, 0x5b, 0x0b, 0x19, 0xf1, 0x3d, 0xd4, 0x5a, + 0xc8, 0x8f, 0xfd, 0x91, 0xdb, 0xcc, 0x2d, 0x29, 0x23, 0x65, 0x73, 0xcc, 0x0f, 0xf5, 0x91, 0xcb, + 0xf1, 0x3e, 0xe3, 0x98, 0x8a, 0xde, 0x41, 0x72, 0xd0, 0x7b, 0xef, 0x1e, 0xb6, 0x3c, 0x72, 0x4d, + 0xaa, 0x05, 0xad, 0x7d, 0x79, 0x71, 0x42, 0x72, 0xdb, 0xb7, 0x2c, 0xbf, 0xa7, 0xec, 0xf6, 0x1d, + 0xf7, 0xd0, 0x55, 0xf7, 0x5f, 0x89, 0x00, 0x32, 0x46, 0x47, 0x35, 0xf8, 0x7c, 0x0e, 0x9c, 0x6c, + 0xa0, 0x23, 0x50, 0x12, 0xaa, 0x29, 0xa5, 0xd9, 0x11, 0x6a, 0x72, 0xf9, 0xf1, 0x75, 0x6c, 0x44, + 0xf8, 0x38, 0xc9, 0x3a, 0x4e, 0x84, 0x06, 0x11, 0xeb, 0xd8, 0x80, 0x9e, 0x6c, 0x1d, 0x27, 0x18, + 0x9a, 0xeb, 0x38, 0xd9, 0xcc, 0xa4, 0xa6, 0x9f, 0x3b, 0xab, 0xc9, 0x66, 0xaa, 0x75, 0x9c, 0xcd, + 0x31, 0x3f, 0x12, 0x4b, 0x2e, 0x47, 0xb5, 0x8e, 0x4d, 0x8e, 0x39, 0xe8, 0xc7, 0x5c, 0xc7, 0xc9, + 0x4a, 0xcc, 0x75, 0x7c, 0xa2, 0xf6, 0xa9, 0x75, 0x9c, 0xdd, 0xbe, 0x13, 0xaf, 0xe3, 0x44, 0xe8, + 0x22, 0xa3, 0xa3, 0x59, 0xeb, 0x38, 0x89, 0xcf, 0xd7, 0x71, 0x12, 0x9a, 0x30, 0xae, 0xf4, 0x58, + 0xc7, 0x49, 0xca, 0xcf, 0x90, 0x5f, 0x22, 0xec, 0xca, 0x71, 0x56, 0x72, 0x6e, 0xc4, 0x16, 0xf2, + 0x10, 0xcd, 0x7b, 0x09, 0xf8, 0xf1, 0x56, 0xf3, 0x85, 0x3c, 0xa6, 0xb8, 0x9e, 0x77, 0xe5, 0x20, + 0x26, 0x9b, 0x6b, 0xda, 0xae, 0xb2, 0xa3, 0xce, 0xf4, 0x68, 0xf0, 0x2e, 0x5b, 0x37, 0xad, 0x1e, + 0x7c, 0x7b, 0x05, 0xcd, 0xe9, 0xc1, 0x57, 0xa9, 0x32, 0x49, 0xbe, 0xb9, 0x24, 0xbd, 0xd7, 0xf7, + 0xe7, 0xf2, 0x82, 0x23, 0x49, 0xb7, 0x90, 0x50, 0x8e, 0x4e, 0xdc, 0x52, 0xa5, 0x24, 0x25, 0x5b, + 0x7a, 0xd2, 0x75, 0xbe, 0x2e, 0xa5, 0x87, 0x54, 0xb4, 0xad, 0x44, 0xa7, 0xf5, 0xb5, 0x9e, 0x5b, + 0x42, 0xb6, 0xd1, 0x96, 0x9b, 0x86, 0x6b, 0x76, 0xe0, 0xbc, 0xb0, 0x5e, 0x7d, 0xb9, 0xa6, 0xe2, + 0x06, 0xe9, 0x5c, 0xf3, 0x82, 0x0a, 0x29, 0xae, 0x69, 0xea, 0x4f, 0xd0, 0xfa, 0x25, 0x5e, 0x5c, + 0x79, 0x8f, 0xfd, 0x7c, 0x4b, 0xca, 0xb4, 0xe1, 0xac, 0xc4, 0x70, 0xd1, 0x47, 0xec, 0x23, 0x71, + 0x83, 0x27, 0x81, 0xb9, 0x83, 0x9f, 0x45, 0x4f, 0x3e, 0x81, 0x92, 0xd8, 0xde, 0x62, 0x06, 0x59, + 0x88, 0xb9, 0x53, 0x57, 0x93, 0x46, 0xb7, 0x63, 0xb4, 0xe0, 0x38, 0xc6, 0xb6, 0xe3, 0x8c, 0x44, + 0xbe, 0x65, 0x8a, 0x1d, 0x87, 0xdb, 0x41, 0x37, 0x8c, 0x68, 0x2b, 0x6d, 0x51, 0x32, 0x1b, 0x23, + 0x3d, 0x23, 0x4c, 0xf4, 0xdd, 0x05, 0xb2, 0x8a, 0x7b, 0x9b, 0x09, 0xee, 0x65, 0x72, 0xcb, 0x66, + 0x83, 0x5b, 0xcf, 0xba, 0x7a, 0xd6, 0x63, 0xb6, 0x29, 0xaf, 0xee, 0xdc, 0x46, 0x49, 0xab, 0xeb, + 0xd9, 0x2c, 0x76, 0xbb, 0x0b, 0x27, 0x67, 0x18, 0x8f, 0xf9, 0x31, 0x87, 0x2b, 0x6f, 0xcc, 0x3f, + 0x44, 0xbf, 0x02, 0x6e, 0x4f, 0xec, 0x37, 0xd4, 0xc9, 0x97, 0x4b, 0xe4, 0x53, 0x18, 0x93, 0xc4, + 0xfd, 0x47, 0x38, 0x49, 0x8d, 0x23, 0xbc, 0x04, 0x93, 0xc6, 0xb3, 0x2c, 0xa5, 0x2e, 0x65, 0x3d, + 0xd6, 0xea, 0xb1, 0x70, 0x26, 0x8d, 0xe7, 0x57, 0x8a, 0x4b, 0xd6, 0xa3, 0xac, 0x5c, 0x2e, 0x3f, + 0x80, 0x71, 0x31, 0xa4, 0x3d, 0x47, 0x23, 0xdf, 0x80, 0x37, 0xab, 0xb9, 0x38, 0x77, 0x5b, 0x6e, + 0xb4, 0xe8, 0x7b, 0x8f, 0xdd, 0xbd, 0xbe, 0x03, 0x93, 0x26, 0xd9, 0x5d, 0x20, 0x5f, 0x61, 0xa2, + 0x68, 0x99, 0xbe, 0x9b, 0x46, 0xcf, 0xfc, 0xe0, 0x89, 0xeb, 0xed, 0xf5, 0x61, 0x79, 0xd9, 0x64, + 0x99, 0xa4, 0x93, 0x0b, 0xf1, 0x2b, 0x98, 0xaf, 0xe7, 0x33, 0xef, 0xcb, 0xa4, 0xf7, 0x79, 0x55, + 0x87, 0x0b, 0xe8, 0x8e, 0x73, 0xd2, 0xb6, 0xf7, 0x64, 0xfa, 0x05, 0x8f, 0x00, 0x29, 0x8d, 0xff, + 0x4d, 0x3f, 0x68, 0xf5, 0xe7, 0x58, 0x31, 0x3d, 0x73, 0x13, 0x64, 0x72, 0x30, 0xbe, 0x80, 0x73, + 0xf5, 0x5c, 0xd6, 0xfd, 0x58, 0xf4, 0x13, 0x4d, 0xcf, 0xe3, 0x50, 0x9c, 0xb0, 0xdd, 0x3d, 0x79, + 0xae, 0xe2, 0x26, 0xc9, 0x0e, 0xb6, 0xad, 0x80, 0x3e, 0xa6, 0x01, 0xfa, 0x7f, 0xf7, 0xf3, 0x7c, + 0x36, 0xd1, 0x65, 0xcf, 0x57, 0xe1, 0x4c, 0x3d, 0xc5, 0x2a, 0x8f, 0xa4, 0xdf, 0x85, 0xd2, 0x34, + 0xf6, 0xf4, 0x98, 0xed, 0xea, 0xe3, 0x76, 0x34, 0x7e, 0x8f, 0x46, 0x3b, 0xab, 0x7d, 0x46, 0x49, + 0x3e, 0x50, 0x90, 0x88, 0xbb, 0x77, 0x18, 0x65, 0x5d, 0xa3, 0x4c, 0x63, 0xe4, 0x7e, 0xbc, 0x9f, + 0xca, 0xcb, 0x95, 0xbe, 0xd5, 0xe6, 0x71, 0x78, 0x0b, 0xf7, 0x42, 0xe1, 0x03, 0x3d, 0x17, 0xcb, + 0x14, 0x1c, 0x12, 0xdb, 0xfe, 0x34, 0x77, 0xe8, 0x90, 0x54, 0xb9, 0x3e, 0xc9, 0x97, 0x87, 0x80, + 0x5d, 0x4a, 0xf9, 0xc6, 0xf7, 0x64, 0xc1, 0xcd, 0xaa, 0x6b, 0x7e, 0xf3, 0x89, 0x6e, 0x56, 0x65, + 0xbf, 0x93, 0xf6, 0x46, 0x9e, 0xe8, 0x5f, 0xec, 0xf8, 0x98, 0xed, 0x5f, 0xf7, 0x24, 0x43, 0x40, + 0xbc, 0xe3, 0x27, 0xe1, 0xc2, 0x24, 0xf5, 0x96, 0x34, 0x56, 0x62, 0x85, 0x26, 0xe7, 0xdc, 0xa1, + 0x51, 0x76, 0x4a, 0x24, 0x32, 0xed, 0x94, 0x7a, 0x43, 0xf3, 0x2f, 0x07, 0x88, 0x4d, 0x3b, 0x6d, + 0x74, 0xab, 0x3e, 0xf0, 0x39, 0x4d, 0xec, 0x69, 0x9b, 0x2e, 0xea, 0xef, 0x10, 0x36, 0x2d, 0xdc, + 0x88, 0x8c, 0x81, 0x57, 0x11, 0x9a, 0xd3, 0x65, 0xf1, 0x50, 0xea, 0xde, 0x4d, 0xb7, 0x0b, 0x64, + 0x03, 0xce, 0xde, 0xa3, 0x91, 0xd8, 0xe3, 0x6c, 0x1a, 0x46, 0x81, 0xdb, 0x8c, 0x7a, 0xde, 0x34, + 0x4a, 0x65, 0x27, 0x83, 0x66, 0xf7, 0x6d, 0xc6, 0xaf, 0x9e, 0xcd, 0xaf, 0x27, 0x5d, 0x0f, 0x9f, + 0x5b, 0x71, 0x7d, 0x71, 0x92, 0x26, 0xe6, 0x2f, 0xf1, 0x11, 0xee, 0xd2, 0x93, 0x4f, 0x5a, 0x8a, + 0xc3, 0xa9, 0x08, 0xf5, 0xed, 0x26, 0x0c, 0x73, 0xa2, 0xdc, 0x03, 0x75, 0x42, 0xa7, 0x21, 0x77, + 0x60, 0x4c, 0xf9, 0xe4, 0x10, 0xa3, 0x28, 0xb7, 0x5d, 0x77, 0x60, 0x8c, 0xeb, 0x6a, 0xc7, 0x27, + 0xf9, 0x10, 0xc6, 0x94, 0x13, 0xcf, 0x89, 0x4f, 0xfa, 0x4f, 0x60, 0x52, 0x77, 0xe7, 0x39, 0xf9, + 0x40, 0xfe, 0x00, 0xef, 0x83, 0xe5, 0xb5, 0x4b, 0x3e, 0xfd, 0x6c, 0x22, 0xca, 0x8c, 0x18, 0x52, + 0xbe, 0x41, 0x4a, 0x60, 0x6e, 0xf3, 0xcf, 0xa4, 0xa8, 0xc9, 0x87, 0xf2, 0x69, 0x94, 0x22, 0x4e, + 0x23, 0xf5, 0x18, 0xb3, 0x29, 0x3e, 0xcc, 0x2f, 0x42, 0xac, 0x36, 0xd8, 0xbe, 0xcd, 0x3e, 0xce, + 0xbd, 0x75, 0xff, 0xa1, 0xcb, 0xe3, 0xb2, 0x89, 0x52, 0x5a, 0x2a, 0x39, 0x5f, 0x3e, 0xa3, 0x4b, + 0xf9, 0xf9, 0xfc, 0x70, 0x32, 0xee, 0xa3, 0x5a, 0x99, 0x2a, 0xcd, 0xed, 0x5e, 0x8f, 0xfc, 0x80, + 0xb1, 0x1e, 0x9d, 0x66, 0xd7, 0x83, 0xac, 0x97, 0x5a, 0x2e, 0x1e, 0x7c, 0xbe, 0x12, 0x76, 0xab, + 0xd2, 0x2b, 0xf2, 0xf8, 0x9d, 0xcd, 0x6f, 0xd9, 0xf9, 0x8c, 0x9b, 0xf2, 0xbe, 0x73, 0x91, 0xc7, + 0xee, 0x97, 0x50, 0x3a, 0xcc, 0x0c, 0x33, 0x96, 0xcf, 0xec, 0xba, 0xe6, 0x6c, 0x91, 0x49, 0xa9, + 0x0e, 0xbd, 0x27, 0xf8, 0xe6, 0x2c, 0x3b, 0x7d, 0xe1, 0xeb, 0x7d, 0xb8, 0xc8, 0x91, 0xf8, 0x4e, + 0x5f, 0x3c, 0x75, 0xef, 0x7a, 0x9e, 0x9f, 0xb0, 0xd9, 0xf5, 0xf5, 0x49, 0xc7, 0x98, 0x71, 0x15, + 0xae, 0x5c, 0x4e, 0xb3, 0x19, 0x9a, 0x2e, 0xa7, 0x3d, 0xfb, 0x90, 0x37, 0xfc, 0x9f, 0x41, 0x25, + 0xf6, 0x28, 0x39, 0xd9, 0x24, 0xe4, 0x7b, 0x3a, 0x92, 0xd4, 0x48, 0x85, 0xa4, 0x57, 0x7e, 0xa2, + 0xf9, 0x2b, 0x79, 0x23, 0xac, 0xbf, 0xab, 0x11, 0x9e, 0x72, 0x89, 0x44, 0x9e, 0x79, 0x29, 0x41, + 0x7b, 0x18, 0x76, 0xc5, 0x23, 0xbc, 0x57, 0xc2, 0x28, 0x3d, 0xdb, 0x27, 0x67, 0xa4, 0x1c, 0x3e, + 0x12, 0x8c, 0xac, 0x1e, 0xd3, 0xdb, 0xff, 0x2e, 0xb3, 0x9c, 0x33, 0xaf, 0x27, 0x9f, 0x50, 0x27, + 0x7e, 0x78, 0x96, 0x88, 0x4a, 0xa8, 0x3f, 0xf6, 0x4d, 0x17, 0x25, 0x5f, 0x4d, 0x65, 0x61, 0x28, + 0x2f, 0xab, 0xb2, 0xac, 0x82, 0xc1, 0x99, 0x2a, 0xe2, 0x07, 0x6e, 0xf4, 0x7c, 0xd1, 0x5e, 0x8b, + 0xcd, 0x0a, 0x7a, 0x81, 0xe4, 0x0d, 0xb2, 0xd0, 0x5e, 0x23, 0x5f, 0xe2, 0x56, 0x22, 0xd8, 0xd7, + 0x7c, 0x3f, 0x0a, 0xa3, 0xc0, 0xe9, 0xd4, 0x9b, 0x81, 0xdb, 0x89, 0x72, 0x3b, 0x1d, 0x3b, 0x85, + 0x67, 0x91, 0x69, 0x3e, 0xaa, 0x22, 0x30, 0x7e, 0x56, 0x28, 0x1d, 0xf5, 0x4e, 0x27, 0xab, 0xb0, + 0x87, 0xe6, 0x52, 0x97, 0xa1, 0xf0, 0x5f, 0x25, 0xd3, 0x06, 0xcc, 0xe5, 0x04, 0x20, 0x52, 0xd7, + 0xc1, 0xbd, 0x03, 0x14, 0xcd, 0xf7, 0xae, 0x98, 0x7c, 0x05, 0xb3, 0x99, 0x11, 0x8a, 0x94, 0x49, + 0xbb, 0x57, 0xfc, 0xa2, 0x7e, 0xcc, 0x9f, 0x40, 0x99, 0xbf, 0x10, 0x41, 0x47, 0x68, 0x23, 0x58, + 0x4d, 0xfc, 0x6e, 0x28, 0x07, 0x21, 0xb9, 0x5f, 0xe7, 0xe3, 0xa9, 0xd7, 0xeb, 0x33, 0x18, 0xa5, + 0x24, 0x91, 0x82, 0x5e, 0x7d, 0x78, 0x59, 0x85, 0xbd, 0x1e, 0x27, 0x6d, 0xc1, 0xec, 0x2e, 0x0d, + 0xdc, 0xc7, 0xcf, 0x93, 0x0c, 0xe5, 0xc8, 0x64, 0x96, 0xf6, 0xe2, 0xf8, 0x39, 0xcc, 0x2d, 0xfa, + 0x07, 0x1d, 0xf1, 0x0c, 0xd0, 0xe0, 0xa9, 0xee, 0xf6, 0xb3, 0xcb, 0xfb, 0x3b, 0x47, 0xcd, 0xab, + 0x77, 0x8a, 0xa9, 0xfc, 0xfb, 0xca, 0x27, 0x2e, 0x1f, 0x25, 0x7e, 0xdd, 0x21, 0x55, 0x39, 0x9d, + 0x7e, 0x1b, 0x17, 0x61, 0x82, 0x8e, 0xdb, 0xe6, 0xb4, 0x45, 0x98, 0x55, 0xde, 0xfb, 0x51, 0x59, + 0x06, 0x57, 0x5e, 0x61, 0x3e, 0xd7, 0x63, 0xb4, 0x76, 0x43, 0x9e, 0x2d, 0x66, 0xfe, 0xf3, 0x84, + 0x17, 0x76, 0x66, 0x72, 0xf4, 0xcc, 0x76, 0x6a, 0x61, 0x1a, 0xda, 0xed, 0x1e, 0x22, 0x16, 0xd1, + 0xe3, 0x34, 0x30, 0x4c, 0xbc, 0x15, 0x98, 0xd4, 0x69, 0x7b, 0xed, 0xd6, 0x29, 0x62, 0x14, 0x6a, + 0x3f, 0x80, 0x89, 0xba, 0x5e, 0x79, 0x46, 0x25, 0xb9, 0x8b, 0x42, 0x3d, 0x2b, 0xea, 0xdf, 0xf6, + 0x1e, 0xce, 0xa5, 0xea, 0xe0, 0x39, 0x56, 0x2f, 0x72, 0x7d, 0x71, 0x8c, 0x64, 0x76, 0xea, 0x14, + 0xc8, 0xca, 0x35, 0xa9, 0x7c, 0x71, 0xb2, 0xf3, 0xdf, 0x35, 0x78, 0x8a, 0x9c, 0x64, 0x2a, 0x51, + 0x62, 0xf5, 0xcf, 0xd9, 0xab, 0x9c, 0xec, 0x7b, 0xe6, 0x22, 0xe5, 0x8e, 0x43, 0x71, 0xfa, 0x3e, + 0xdd, 0x71, 0x28, 0x95, 0x14, 0x50, 0x77, 0x1c, 0xca, 0xc8, 0xf8, 0xb7, 0x8c, 0xbc, 0xe2, 0xdc, + 0x42, 0x3d, 0x8c, 0x11, 0x8a, 0x4d, 0x46, 0x0a, 0xa3, 0x07, 0x7a, 0xb4, 0x0f, 0x9e, 0x91, 0xa8, + 0x87, 0xad, 0x35, 0x19, 0xe5, 0x23, 0x91, 0xc2, 0xe8, 0x2e, 0x94, 0x78, 0x72, 0x86, 0x38, 0x48, + 0x62, 0xec, 0x4b, 0x98, 0xce, 0x19, 0xd1, 0x63, 0x52, 0x4b, 0xc9, 0xd0, 0x72, 0xca, 0x64, 0x96, + 0x13, 0x73, 0xae, 0xc7, 0x52, 0x85, 0x38, 0x80, 0x9c, 0x32, 0x4c, 0xa5, 0x62, 0xca, 0xcd, 0x9f, + 0xcb, 0x28, 0x51, 0x22, 0xe5, 0x84, 0x1e, 0x6e, 0x4e, 0x75, 0x29, 0x23, 0x06, 0xdd, 0xfc, 0xf9, + 0xcc, 0x32, 0xc1, 0x28, 0xe2, 0x69, 0xab, 0xb3, 0x93, 0x6d, 0xc7, 0x2f, 0xc3, 0x7a, 0xe0, 0xc8, + 0x6a, 0x6e, 0x1c, 0x07, 0x55, 0xd4, 0x4a, 0x55, 0x66, 0xa5, 0x8c, 0x0c, 0xdf, 0xdf, 0xc9, 0x78, + 0xbc, 0x61, 0x60, 0xc4, 0xee, 0x65, 0xbd, 0xd3, 0x8d, 0x93, 0x87, 0x32, 0xd3, 0x4d, 0x4e, 0x4d, + 0xfd, 0x18, 0xe4, 0xce, 0xe0, 0x43, 0x99, 0xdb, 0xe6, 0x55, 0x33, 0x7e, 0x04, 0x17, 0x12, 0x2f, + 0x42, 0x4c, 0xc6, 0x37, 0xb2, 0x9f, 0x8d, 0x64, 0x0e, 0x4f, 0xbe, 0xcc, 0x7e, 0x39, 0xfd, 0x72, + 0x24, 0x31, 0xef, 0x27, 0xdd, 0xf3, 0xd6, 0x61, 0x0a, 0xb7, 0x19, 0x99, 0xab, 0x3e, 0x0e, 0x36, + 0x63, 0x82, 0x93, 0x51, 0x8f, 0x92, 0xa5, 0xea, 0x41, 0xfa, 0x84, 0x78, 0x65, 0xcc, 0x33, 0xdf, + 0xcf, 0x9b, 0x4f, 0x8f, 0x11, 0x98, 0x75, 0x8a, 0x89, 0x84, 0xfa, 0xe4, 0x07, 0x70, 0x3a, 0x7e, + 0x7c, 0xcc, 0x59, 0x64, 0xa0, 0xf5, 0x30, 0x94, 0x9d, 0x8e, 0x5f, 0x20, 0x9f, 0x9c, 0x7c, 0x45, + 0x1e, 0x45, 0x31, 0xf9, 0xc5, 0xd4, 0xfb, 0x19, 0xa3, 0x0f, 0xc7, 0x39, 0x91, 0xb4, 0xb1, 0x3d, + 0xe9, 0xec, 0x34, 0xf1, 0x73, 0xcb, 0x8e, 0xa3, 0xa8, 0x7f, 0x6e, 0x3d, 0x63, 0x3d, 0x2a, 0xf1, + 0x37, 0x87, 0xcf, 0x3a, 0x5c, 0xc5, 0xd8, 0x2b, 0x5b, 0x3c, 0xda, 0x5e, 0x36, 0x56, 0x7e, 0xdb, + 0x93, 0x11, 0x5b, 0xda, 0x70, 0xa5, 0x6f, 0x20, 0x49, 0x72, 0xcb, 0xf0, 0x99, 0xe9, 0x1f, 0x72, + 0xb2, 0x87, 0xe6, 0x31, 0x93, 0x15, 0x8f, 0x51, 0x9d, 0xb3, 0x3d, 0x42, 0x43, 0xaa, 0x73, 0xb6, + 0x67, 0x40, 0xc7, 0xcf, 0x31, 0x7d, 0x94, 0x38, 0xa3, 0x30, 0x9e, 0x12, 0xf5, 0x78, 0x94, 0xe9, + 0x9e, 0xd7, 0x3e, 0x57, 0xcc, 0x4b, 0xd1, 0x14, 0x21, 0xea, 0x34, 0x97, 0x84, 0x26, 0x96, 0xc7, + 0xbc, 0x3f, 0x93, 0x1e, 0xbe, 0xda, 0x97, 0xf8, 0x02, 0x3c, 0x71, 0xcb, 0x73, 0xe0, 0xb5, 0xa5, + 0x9f, 0xfe, 0xe7, 0x4b, 0x85, 0x9f, 0xfe, 0xec, 0x52, 0xe1, 0xdf, 0xff, 0xec, 0x52, 0xe1, 0x3f, + 0xfd, 0xec, 0x52, 0xe1, 0xcb, 0x85, 0xe3, 0xc5, 0x3a, 0xe6, 0x09, 0x1f, 0x6f, 0x71, 0x76, 0xc3, + 0xf8, 0xdf, 0x5b, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x8d, 0x4f, 0x36, 0x6a, 0xec, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -17169,7 +17170,11 @@ type AuthServiceClient interface { // GetTrustedClusters gets all current Trusted Cluster resources. GetTrustedClusters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. + // + // Deprecated: Use UpsertTrustedClusterV2 instead. UpsertTrustedCluster(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + UpsertTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -19148,6 +19153,7 @@ func (c *authServiceClient) GetTrustedClusters(ctx context.Context, in *emptypb. return out, nil } +// Deprecated: Do not use. func (c *authServiceClient) UpsertTrustedCluster(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { out := new(types.TrustedClusterV2) err := c.cc.Invoke(ctx, "/proto.AuthService/UpsertTrustedCluster", in, out, opts...) @@ -19157,6 +19163,15 @@ func (c *authServiceClient) UpsertTrustedCluster(ctx context.Context, in *types. return out, nil } +func (c *authServiceClient) UpsertTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, "/proto.AuthService/UpsertTrustedClusterV2", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *authServiceClient) DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/proto.AuthService/DeleteTrustedCluster", in, out, opts...) @@ -20547,7 +20562,11 @@ type AuthServiceServer interface { // GetTrustedClusters gets all current Trusted Cluster resources. GetTrustedClusters(context.Context, *emptypb.Empty) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. + // + // Deprecated: Use UpsertTrustedClusterV2 instead. UpsertTrustedCluster(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + UpsertTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(context.Context, *types.ResourceRequest) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -21283,6 +21302,9 @@ func (*UnimplementedAuthServiceServer) GetTrustedClusters(ctx context.Context, r func (*UnimplementedAuthServiceServer) UpsertTrustedCluster(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedCluster not implemented") } +func (*UnimplementedAuthServiceServer) UpsertTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedClusterV2 not implemented") +} func (*UnimplementedAuthServiceServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTrustedCluster not implemented") } @@ -24353,6 +24375,24 @@ func _AuthService_UpsertTrustedCluster_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _AuthService_UpsertTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.TrustedClusterV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).UpsertTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/UpsertTrustedClusterV2", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).UpsertTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) + } + return interceptor(ctx, in, info, handler) +} + func _AuthService_DeleteTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.ResourceRequest) if err := dec(in); err != nil { @@ -26821,6 +26861,10 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ MethodName: "UpsertTrustedCluster", Handler: _AuthService_UpsertTrustedCluster_Handler, }, + { + MethodName: "UpsertTrustedClusterV2", + Handler: _AuthService_UpsertTrustedClusterV2_Handler, + }, { MethodName: "DeleteTrustedCluster", Handler: _AuthService_DeleteTrustedCluster_Handler, diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 9caaaafaee775..3f63e98a4c602 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -3218,7 +3218,13 @@ service AuthService { // GetTrustedClusters gets all current Trusted Cluster resources. rpc GetTrustedClusters(google.protobuf.Empty) returns (types.TrustedClusterV2List); // UpsertTrustedCluster upserts a Trusted Cluster in a backend. - rpc UpsertTrustedCluster(types.TrustedClusterV2) returns (types.TrustedClusterV2); + // + // Deprecated: Use UpsertTrustedClusterV2 instead. + rpc UpsertTrustedCluster(types.TrustedClusterV2) returns (types.TrustedClusterV2) { + option deprecated = true; + } + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + rpc UpsertTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. rpc DeleteTrustedCluster(types.ResourceRequest) returns (google.protobuf.Empty); diff --git a/api/types/trustedcluster.go b/api/types/trustedcluster.go index 27d8129f70cfe..ea7b309228427 100644 --- a/api/types/trustedcluster.go +++ b/api/types/trustedcluster.go @@ -29,8 +29,8 @@ import ( // TrustedCluster holds information needed for a cluster that can not be directly // accessed (maybe be behind firewall without any open ports) to join a parent cluster. type TrustedCluster interface { - // Resource provides common resource properties - Resource + // ResourceWithOrigin provides common resource properties + ResourceWithOrigin // SetMetadata sets object metadata SetMetadata(meta Metadata) // GetEnabled returns the state of the TrustedCluster. @@ -184,6 +184,16 @@ func (c *TrustedClusterV2) SetName(e string) { c.Metadata.Name = e } +// Origin returns the origin value of the resource. +func (c *TrustedClusterV2) Origin() string { + return c.Metadata.Origin() +} + +// SetOrigin sets the origin value of the resource. +func (c *TrustedClusterV2) SetOrigin(origin string) { + c.Metadata.SetOrigin(origin) +} + // GetEnabled returns the state of the TrustedCluster. func (c *TrustedClusterV2) GetEnabled() bool { return c.Spec.Enabled diff --git a/integration/integration_test.go b/integration/integration_test.go index b00e47d7fa404..8874615f6034d 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -196,6 +196,7 @@ func TestIntegrations(t *testing.T) { t.Run("TrustedDisabledClusters", suite.bind(testDisabledTrustedClusters)) t.Run("TrustedClustersRoleMapChanges", suite.bind(testTrustedClustersRoleMapChanges)) t.Run("TrustedClustersWithLabels", suite.bind(testTrustedClustersWithLabels)) + t.Run("ValidatedTrustedClusters", suite.bind(testValidatedTrustedClusters)) t.Run("TrustedTunnelNode", suite.bind(testTrustedTunnelNode)) t.Run("TwoClustersProxy", suite.bind(testTwoClustersProxy)) t.Run("TwoClustersTunnel", suite.bind(testTwoClustersTunnel)) @@ -2946,6 +2947,9 @@ type trustedClusterTest struct { // useLabels turns on trusted cluster labels and // verifies RBAC useLabels bool + // validateName uses UpsertValidatedTrustedCluster and ensures that a + // valid cluster name is provided before upserting the trusted cluster. + validateName bool } // TestTrustedClusters tests remote clusters scenarios @@ -3009,6 +3013,15 @@ func testMultiplexingTrustedClusters(t *testing.T, suite *integrationTestSuite) trustedClusters(t, suite, trustedClusterTest{multiplex: true}) } +// TestValidatedTrustedClusters tests remote clusters scenarios +// using validated trusted clusters +func testValidatedTrustedClusters(t *testing.T, suite *integrationTestSuite) { + tr := utils.NewTracer(utils.ThisFunction()).Start() + defer tr.Stop() + + trustedClusters(t, suite, trustedClusterTest{validateName: true}) +} + func standardPortsOrMuxSetup(t *testing.T, mux bool, fds *[]*servicecfg.FileDescriptor) *helpers.InstanceListeners { if mux { return helpers.WebReverseTunnelMuxPortSetup(t, fds) @@ -3212,8 +3225,21 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus require.Error(t, err, "expected tunnel to close and SSH client to start failing") // recreating the trusted cluster should re-establish connection - _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) - require.NoError(t, err) + if test.validateName { + // Note that the trusted cluster resource name must match the cluster name. + // Modify the trusted cluster resource name and expect the upsert to fail. + trustedCluster.SetName(main.Secrets.SiteName + "-cluster") + _, err = aux.Process.GetAuthServer().UpsertValidatedTrustedCluster(ctx, trustedCluster) + require.Error(t, err, "expected failure due to tc name mismatch") + + // Modify the trusted cluster resource name back to what it was orignally. + trustedCluster.SetName(main.Secrets.SiteName) + _, err = aux.Process.GetAuthServer().UpsertValidatedTrustedCluster(ctx, trustedCluster) + require.NoError(t, err) + } else { + _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) + require.NoError(t, err) + } // check that remote cluster has been re-provisioned remoteClusters, err = main.Process.GetAuthServer().GetRemoteClusters(ctx) diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 5f24f86247aae..4701b3dcd733c 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4925,6 +4925,24 @@ func (a *ServerWithRoles) UpsertTrustedCluster(ctx context.Context, tc types.Tru return a.authServer.UpsertTrustedCluster(ctx, tc) } +// UpsertValidatedTrustedCluster creates or updates a trusted cluster. +func (a *ServerWithRoles) UpsertValidatedTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + if err := a.action(types.KindTrustedCluster, types.VerbCreate, types.VerbUpdate); err != nil { + return nil, trace.Wrap(err) + } + + if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.UpsertValidatedTrustedCluster(ctx, tc) +} + func (a *ServerWithRoles) ValidateTrustedCluster(ctx context.Context, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { // Don't allow a leaf cluster to be added to a Cloud tenant. if modules.GetModules().Features().Cloud { diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 07ba460d29e91..c350998c94049 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -2935,6 +2935,8 @@ func (g *GRPCServer) GetTrustedClusters(ctx context.Context, _ *emptypb.Empty) ( } // UpsertTrustedCluster upserts a Trusted Cluster. +// +// Deprecated: Use [GRPCServer.UpsertTrustedClusterV2] instead. func (g *GRPCServer) UpsertTrustedCluster(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { auth, err := g.authenticate(ctx) if err != nil { @@ -2955,6 +2957,26 @@ func (g *GRPCServer) UpsertTrustedCluster(ctx context.Context, cluster *types.Tr return trustedClusterV2, nil } +// UpsertTrustedClusterV2 upserts a Trusted Cluster. +func (g *GRPCServer) UpsertTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err = services.ValidateTrustedCluster(cluster); err != nil { + return nil, trace.Wrap(err) + } + tc, err := auth.ServerWithRoles.UpsertValidatedTrustedCluster(ctx, cluster) + if err != nil { + return nil, trace.Wrap(err) + } + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} + // DeleteTrustedCluster deletes a Trusted Cluster by name. func (g *GRPCServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { auth, err := g.authenticate(ctx) diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 784d6aad010dc..89cc132e0e1bc 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -46,6 +46,19 @@ import ( // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + upserted, err := a.upsertTrustedCluster(ctx, tc, false) + return upserted, trace.Wrap(err) +} + +// UpsertValidatedTrustedCluster creates or toggles a Trusted Cluster relationship. +// The trusted cluster resource name must match the cluster name. +func (a *Server) UpsertValidatedTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + upserted, err := a.upsertTrustedCluster(ctx, tc, true) + return upserted, trace.Wrap(err) +} + +// upsertTrustedCluster creates or toggles a Trusted Cluster relationship. +func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) @@ -67,7 +80,7 @@ func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedClust // if there is no existing cluster, switch to the create case if existingCluster == nil { - return a.createTrustedCluster(ctx, tc) + return a.createTrustedCluster(ctx, tc, validateName) } if err := existingCluster.CanChangeStateTo(tc); err != nil { @@ -103,8 +116,8 @@ func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedClust return tc, nil } -func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - remoteCAs, err := a.establishTrust(ctx, tc) +func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (types.TrustedCluster, error) { + remoteCAs, err := a.establishTrust(ctx, tc, validateName) if err != nil { return nil, trace.Wrap(err) } @@ -267,7 +280,7 @@ func (a *Server) DeleteTrustedCluster(ctx context.Context, name string) error { return nil } -func (a *Server) establishTrust(ctx context.Context, trustedCluster types.TrustedCluster) ([]types.CertAuthority, error) { +func (a *Server) establishTrust(ctx context.Context, trustedCluster types.TrustedCluster, validateName bool) ([]types.CertAuthority, error) { var localCertAuthorities []types.CertAuthority domainName, err := a.GetDomainName() @@ -322,9 +335,10 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste if remoteClusterName == domainName { return nil, trace.BadParameter("remote cluster name can not be the same as local cluster name") } - // TODO(klizhentas) in 2.5.0 prohibit adding trusted cluster resource name - // different from cluster name (we had no way of checking this before x509, - // because SSH CA was a public key, not a cert with metadata) + if validateName && trustedCluster.GetName() != remoteClusterName { + return nil, trace.CompareFailed("trusted cluster resource name must be the same as the remote cluster name. got: %q, expected: %q", + trustedCluster.GetName(), remoteClusterName) + } } } From bc9e0fba90adb33660089dc2728dc1170c54c36d Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Wed, 4 Dec 2024 16:37:19 -0800 Subject: [PATCH 02/19] Replace confusing UpsertValidationTrustedCluster name --- api/client/client.go | 16 +++++++++++----- integration/integration_test.go | 14 +++++++------- lib/auth/auth_with_roles.go | 7 ++++--- lib/auth/grpcserver.go | 2 +- lib/auth/trustedcluster.go | 4 ++-- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 71b4d82a39f0c..281d7d476ce71 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2277,17 +2277,23 @@ func (c *Client) GetTrustedClusters(ctx context.Context) ([]types.TrustedCluster } // UpsertTrustedCluster creates or updates a Trusted Cluster. +// +// Deprecated: Use [Client.UpsertTrustedClusterV2] instead. func (c *Client) UpsertTrustedCluster(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - if trustedCluster.Origin() != types.OriginKubernetes { - resp, err := c.grpc.UpsertTrustedCluster(ctx, trustedClusterV2) - return resp, trace.Wrap(err) + resp, err := c.grpc.UpsertTrustedCluster(ctx, trustedClusterV2) + return resp, trace.Wrap(err) +} + +// UpsertTrustedClusterV2 creates or updates a Trusted Cluster. +func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { + trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) + if !ok { + return nil, trace.BadParameter("invalid type %T", trustedCluster) } - // The Kubernetes Operator must use UpsertTrustedClusterV2 to ensure that - // the trusted_cluster resource name is valid before it is created. resp, err := c.grpc.UpsertTrustedClusterV2(ctx, trustedClusterV2) if trace.IsNotImplemented(err) { // Try to print a nicer error message when newer clients connect to diff --git a/integration/integration_test.go b/integration/integration_test.go index 8874615f6034d..7d66bff624602 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -196,7 +196,7 @@ func TestIntegrations(t *testing.T) { t.Run("TrustedDisabledClusters", suite.bind(testDisabledTrustedClusters)) t.Run("TrustedClustersRoleMapChanges", suite.bind(testTrustedClustersRoleMapChanges)) t.Run("TrustedClustersWithLabels", suite.bind(testTrustedClustersWithLabels)) - t.Run("ValidatedTrustedClusters", suite.bind(testValidatedTrustedClusters)) + t.Run("TrustedClustersV2", suite.bind(testTrustedClustersV2)) t.Run("TrustedTunnelNode", suite.bind(testTrustedTunnelNode)) t.Run("TwoClustersProxy", suite.bind(testTwoClustersProxy)) t.Run("TwoClustersTunnel", suite.bind(testTwoClustersTunnel)) @@ -3013,9 +3013,9 @@ func testMultiplexingTrustedClusters(t *testing.T, suite *integrationTestSuite) trustedClusters(t, suite, trustedClusterTest{multiplex: true}) } -// TestValidatedTrustedClusters tests remote clusters scenarios -// using validated trusted clusters -func testValidatedTrustedClusters(t *testing.T, suite *integrationTestSuite) { +// TestTrustedClustersV2 tests remote clusters scenarios +// using UpsertTrustedClusterV2 rpc. +func testTrustedClustersV2(t *testing.T, suite *integrationTestSuite) { tr := utils.NewTracer(utils.ThisFunction()).Start() defer tr.Stop() @@ -3229,12 +3229,12 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus // Note that the trusted cluster resource name must match the cluster name. // Modify the trusted cluster resource name and expect the upsert to fail. trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - _, err = aux.Process.GetAuthServer().UpsertValidatedTrustedCluster(ctx, trustedCluster) - require.Error(t, err, "expected failure due to tc name mismatch") + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) + require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") // Modify the trusted cluster resource name back to what it was orignally. trustedCluster.SetName(main.Secrets.SiteName) - _, err = aux.Process.GetAuthServer().UpsertValidatedTrustedCluster(ctx, trustedCluster) + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) } else { _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 4701b3dcd733c..6dbe1d5ed8f35 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4925,8 +4925,9 @@ func (a *ServerWithRoles) UpsertTrustedCluster(ctx context.Context, tc types.Tru return a.authServer.UpsertTrustedCluster(ctx, tc) } -// UpsertValidatedTrustedCluster creates or updates a trusted cluster. -func (a *ServerWithRoles) UpsertValidatedTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { +// UpsertTrustedClusterV2 creates or updates a trusted cluster while also ensuring that the +// resource name and cluster name match. +func (a *ServerWithRoles) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { // Don't allow a Cloud tenant to be a leaf cluster. if modules.GetModules().Features().Cloud { return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") @@ -4940,7 +4941,7 @@ func (a *ServerWithRoles) UpsertValidatedTrustedCluster(ctx context.Context, tc return nil, trace.Wrap(err) } - return a.authServer.UpsertValidatedTrustedCluster(ctx, tc) + return a.authServer.UpsertTrustedClusterV2(ctx, tc) } func (a *ServerWithRoles) ValidateTrustedCluster(ctx context.Context, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index c350998c94049..c0d3c194e909e 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -2966,7 +2966,7 @@ func (g *GRPCServer) UpsertTrustedClusterV2(ctx context.Context, cluster *types. if err = services.ValidateTrustedCluster(cluster); err != nil { return nil, trace.Wrap(err) } - tc, err := auth.ServerWithRoles.UpsertValidatedTrustedCluster(ctx, cluster) + tc, err := auth.ServerWithRoles.UpsertTrustedClusterV2(ctx, cluster) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 89cc132e0e1bc..b5ae710d603b8 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -50,9 +50,9 @@ func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedClust return upserted, trace.Wrap(err) } -// UpsertValidatedTrustedCluster creates or toggles a Trusted Cluster relationship. +// UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. // The trusted cluster resource name must match the cluster name. -func (a *Server) UpsertValidatedTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { +func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { upserted, err := a.upsertTrustedCluster(ctx, tc, true) return upserted, trace.Wrap(err) } From 415d72ec62f3c0090a8e93539e567c78d04ae161 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Wed, 4 Dec 2024 18:05:19 -0800 Subject: [PATCH 03/19] Use UpsertTrustedClusterV2 in tests --- integration/helpers/trustedclusters.go | 9 ++- integration/integration_test.go | 96 ++++++++++---------------- integration/kube_integration_test.go | 4 +- integration/proxy/proxy_helpers.go | 2 +- lib/auth/auth_test.go | 4 +- lib/auth/trustedcluster_test.go | 14 ++-- tool/teleport/testenv/test_server.go | 4 +- tool/tsh/common/tsh_helper_test.go | 2 +- tool/tsh/common/tsh_test.go | 2 +- 9 files changed, 61 insertions(+), 76 deletions(-) diff --git a/integration/helpers/trustedclusters.go b/integration/helpers/trustedclusters.go index a883fb8635a9e..8570df2ad98f2 100644 --- a/integration/helpers/trustedclusters.go +++ b/integration/helpers/trustedclusters.go @@ -58,12 +58,17 @@ func WaitForTunnelConnections(t *testing.T, authServer *auth.Server, clusterName // propagate and services to start // // Duplicated in tool/tsh/tsh_test.go -func TryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster) { +func TryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster, skipNameValidation bool) { t.Helper() ctx := context.TODO() for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) - _, err := authServer.UpsertTrustedCluster(ctx, trustedCluster) + var err error + if skipNameValidation { + _, err = authServer.UpsertTrustedCluster(ctx, trustedCluster) + } else { + _, err = authServer.UpsertTrustedClusterV2(ctx, trustedCluster) + } if err == nil { return } diff --git a/integration/integration_test.go b/integration/integration_test.go index 7d66bff624602..7ef07dca0188d 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -196,7 +196,7 @@ func TestIntegrations(t *testing.T) { t.Run("TrustedDisabledClusters", suite.bind(testDisabledTrustedClusters)) t.Run("TrustedClustersRoleMapChanges", suite.bind(testTrustedClustersRoleMapChanges)) t.Run("TrustedClustersWithLabels", suite.bind(testTrustedClustersWithLabels)) - t.Run("TrustedClustersV2", suite.bind(testTrustedClustersV2)) + t.Run("TrustedClustersSkipNameValidation", suite.bind(testTrustedClustersSkipNameValidation)) t.Run("TrustedTunnelNode", suite.bind(testTrustedTunnelNode)) t.Run("TwoClustersProxy", suite.bind(testTwoClustersProxy)) t.Run("TwoClustersTunnel", suite.bind(testTwoClustersTunnel)) @@ -2797,7 +2797,7 @@ func testMapRoles(t *testing.T, suite *integrationTestSuite) { require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) sshPort, _, _ := aux.StartNodeAndProxy(t, "aux-node") @@ -2947,9 +2947,9 @@ type trustedClusterTest struct { // useLabels turns on trusted cluster labels and // verifies RBAC useLabels bool - // validateName uses UpsertValidatedTrustedCluster and ensures that a - // valid cluster name is provided before upserting the trusted cluster. - validateName bool + // skipNameValidation uses the deprecated UpsertTrustedCluster and skips + // cluster name validation. + skipNameValidation bool } // TestTrustedClusters tests remote clusters scenarios @@ -2986,6 +2986,15 @@ func testTrustedClustersWithLabels(t *testing.T, suite *integrationTestSuite) { trustedClusters(t, suite, trustedClusterTest{multiplex: false, useLabels: true}) } +// TestTrustedClustersSkipNameValidation tests remote clusters scenarios +// skipping name validation. +func testTrustedClustersSkipNameValidation(t *testing.T, suite *integrationTestSuite) { + tr := utils.NewTracer(utils.ThisFunction()).Start() + defer tr.Stop() + + trustedClusters(t, suite, trustedClusterTest{skipNameValidation: true}) +} + // TestJumpTrustedClusters tests remote clusters scenarios // using trusted clusters feature using jumphost connection func testJumpTrustedClusters(t *testing.T, suite *integrationTestSuite) { @@ -3013,15 +3022,6 @@ func testMultiplexingTrustedClusters(t *testing.T, suite *integrationTestSuite) trustedClusters(t, suite, trustedClusterTest{multiplex: true}) } -// TestTrustedClustersV2 tests remote clusters scenarios -// using UpsertTrustedClusterV2 rpc. -func testTrustedClustersV2(t *testing.T, suite *integrationTestSuite) { - tr := utils.NewTracer(utils.ThisFunction()).Start() - defer tr.Stop() - - trustedClusters(t, suite, trustedClusterTest{validateName: true}) -} - func standardPortsOrMuxSetup(t *testing.T, mux bool, fds *[]*servicecfg.FileDescriptor) *helpers.InstanceListeners { if mux { return helpers.WebReverseTunnelMuxPortSetup(t, fds) @@ -3132,17 +3132,25 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus {Remote: mainOps, Local: []string{auxDevs}}, }) - // modify trusted cluster resource name, so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - require.NoError(t, main.Start()) require.NoError(t, aux.Start()) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) + // Note that the trusted cluster resource name must match the cluster name. + // Modify the trusted cluster resource name and expect the upsert to fail. + trustedCluster.SetName(main.Secrets.SiteName + "-cluster") + + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) + require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") + + if !test.skipNameValidation { + // Modify the trusted cluster resource name back to what it was orignally. + trustedCluster.SetName(main.Secrets.SiteName) + } + // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) sshPort, _, _ := aux.StartNodeAndProxy(t, "aux-node") @@ -3225,21 +3233,8 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus require.Error(t, err, "expected tunnel to close and SSH client to start failing") // recreating the trusted cluster should re-establish connection - if test.validateName { - // Note that the trusted cluster resource name must match the cluster name. - // Modify the trusted cluster resource name and expect the upsert to fail. - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) - require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") - - // Modify the trusted cluster resource name back to what it was orignally. - trustedCluster.SetName(main.Secrets.SiteName) - _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) - require.NoError(t, err) - } else { - _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) - require.NoError(t, err) - } + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) // check that remote cluster has been re-provisioned remoteClusters, err = main.Process.GetAuthServer().GetRemoteClusters(ctx) @@ -3380,9 +3375,6 @@ func trustedDisabledCluster(t *testing.T, suite *integrationTestSuite, test trus {Remote: mainOps, Local: []string{auxDevs}}, }) - // modify trusted cluster resource name, so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") // disable cluster trustedCluster.SetEnabled(false) @@ -3392,11 +3384,11 @@ func trustedDisabledCluster(t *testing.T, suite *integrationTestSuite, test trus require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster while disabled - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) // try to enable disabled cluster trustedCluster.SetEnabled(true) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) helpers.CheckTrustedClustersCanConnect(ctx, t, helpers.TrustedClusterSetup{ @@ -3520,16 +3512,12 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te {Remote: mainOps, Local: []string{auxDevs}}, }) - // modify trusted cluster resource name, so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - require.NoError(t, main.Start()) require.NoError(t, aux.Start()) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // change role mapping to ensure updating works @@ -3537,7 +3525,7 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te {Remote: mainDevs, Local: []string{auxDevs}}, }) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) helpers.CheckTrustedClustersCanConnect(ctx, t, helpers.TrustedClusterSetup{ @@ -3550,7 +3538,7 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te // disable the enabled trusted cluster and ensure it no longer works trustedCluster.SetEnabled(false) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) // Wait for both cluster to no longer see each other via reverse tunnels. require.Eventually(t, helpers.WaitForClusters(main.Tunnel, 0), 10*time.Second, 1*time.Second, @@ -3621,17 +3609,13 @@ func testTrustedTunnelNode(t *testing.T, suite *integrationTestSuite) { {Remote: mainDevs, Local: []string{auxDevs}}, }) - // modify trusted cluster resource name, so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - require.NoError(t, main.Start()) require.NoError(t, aux.Start()) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Create a Teleport instance with a node that dials back to the aux cluster. @@ -3805,17 +3789,13 @@ func testTrustedClusterAgentless(t *testing.T, suite *integrationTestSuite) { {Remote: devsRoleName, Local: []string{devsRoleName}}, }) - // modify trusted cluster resource name, so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - require.NoError(t, main.Start()) require.NoError(t, leaf.Start()) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, false) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Wait for both cluster to see each other via reverse tunnels. @@ -5638,7 +5618,7 @@ func testRotateTrustedClusters(t *testing.T, suite *integrationTestSuite) { lib.SetInsecureDevMode(true) defer lib.SetInsecureDevMode(false) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) helpers.WaitForTunnelConnections(t, svc.GetAuthServer(), aux.Secrets.SiteName, 1) // capture credentials before reload has started to simulate old client @@ -7569,7 +7549,7 @@ func createTrustedClusterPair(t *testing.T, suite *integrationTestSuite, extraSe t.Cleanup(func() { leaf.StopAll() }) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster) + helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, false) helpers.WaitForTunnelConnections(t, root.Process.GetAuthServer(), leafName, 1) _, _, rootProxySSHPort := root.StartNodeAndProxy(t, "root-zero") diff --git a/integration/kube_integration_test.go b/integration/kube_integration_test.go index ad7d745d89452..ceef0b6e3f8af 100644 --- a/integration/kube_integration_test.go +++ b/integration/kube_integration_test.go @@ -695,7 +695,7 @@ func testKubeTrustedClustersClientCert(t *testing.T, suite *KubeSuite) { var upsertSuccess bool for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v", trustedCluster, i) - _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) if err != nil { if trace.IsConnectionProblem(err) { log.Debugf("retrying on connection problem: %v", err) @@ -971,7 +971,7 @@ func testKubeTrustedClustersSNI(t *testing.T, suite *KubeSuite) { var upsertSuccess bool for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v", trustedCluster, i) - _, err = aux.Process.GetAuthServer().UpsertTrustedCluster(ctx, trustedCluster) + _, err = aux.Process.GetAuthServer().UpsertTrustedClusterV2(ctx, trustedCluster) if err != nil { if trace.IsConnectionProblem(err) { log.Debugf("retrying on connection problem: %v", err) diff --git a/integration/proxy/proxy_helpers.go b/integration/proxy/proxy_helpers.go index 422695a363d45..7a735f5f8f191 100644 --- a/integration/proxy/proxy_helpers.go +++ b/integration/proxy/proxy_helpers.go @@ -184,7 +184,7 @@ func newSuite(t *testing.T, opts ...proxySuiteOptionsFunc) *Suite { } if options.trustedCluster != nil { - helpers.TryCreateTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster) + helpers.TryCreateTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster, false) helpers.WaitForTunnelConnections(t, suite.root.Process.GetAuthServer(), suite.leaf.Secrets.SiteName, 1) } diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index e4978e32e358a..b7f9e2203754e 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -1262,7 +1262,7 @@ func TestTrustedClusterCRUDEventEmitted(t *testing.T) { // test create event for switch case: when tc exists but enabled is false tc.SetEnabled(false) - _, err = s.a.UpsertTrustedCluster(ctx, tc) + _, err = s.a.UpsertTrustedClusterV2(ctx, tc) require.NoError(t, err) require.Equal(t, events.TrustedClusterCreateEvent, s.mockEmitter.LastEvent().GetType()) createEvt := s.mockEmitter.LastEvent().(*apievents.TrustedClusterCreate) @@ -1272,7 +1272,7 @@ func TestTrustedClusterCRUDEventEmitted(t *testing.T) { // test create event for switch case: when tc exists but enabled is true tc.SetEnabled(true) - _, err = s.a.UpsertTrustedCluster(ctx, tc) + _, err = s.a.UpsertTrustedClusterV2(ctx, tc) require.NoError(t, err) require.Equal(t, events.TrustedClusterCreateEvent, s.mockEmitter.LastEvent().GetType()) createEvt = s.mockEmitter.LastEvent().(*apievents.TrustedClusterCreate) diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index c65287c5064ff..426e30171001c 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -489,7 +489,7 @@ func TestUpsertTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) - _, err = a.UpsertTrustedCluster(ctx, trustedCluster) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.ErrorContains(t, err, "someNewRole") }) t.Run("Change role map of existing enabled trusted cluster", func(t *testing.T) { @@ -505,7 +505,7 @@ func TestUpsertTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) - _, err = a.UpsertTrustedCluster(ctx, trustedCluster) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Disable existing trusted cluster", func(t *testing.T) { @@ -521,7 +521,7 @@ func TestUpsertTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) - _, err = a.UpsertTrustedCluster(ctx, trustedCluster) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Change role map of existing disabled trusted cluster", func(t *testing.T) { @@ -537,7 +537,7 @@ func TestUpsertTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) - _, err = a.UpsertTrustedCluster(ctx, trustedCluster) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Enable existing trusted cluster", func(t *testing.T) { @@ -553,7 +553,7 @@ func TestUpsertTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) - _, err = a.UpsertTrustedCluster(ctx, trustedCluster) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Cloud prohibits being a leaf cluster", func(t *testing.T) { @@ -569,7 +569,7 @@ func TestUpsertTrustedCluster(t *testing.T) { require.NoError(t, err, "creating trusted cluster resource") server := ServerWithRoles{authServer: a} - _, err = server.UpsertTrustedCluster(ctx, tc) - require.True(t, trace.IsNotImplemented(err), "UpsertTrustedCluster returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + _, err = server.UpsertTrustedClusterV2(ctx, tc) + require.True(t, trace.IsNotImplemented(err), "UpsertTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) }) } diff --git a/tool/teleport/testenv/test_server.go b/tool/teleport/testenv/test_server.go index 5d4607223c292..3e034d9fdf0d6 100644 --- a/tool/teleport/testenv/test_server.go +++ b/tool/teleport/testenv/test_server.go @@ -417,7 +417,7 @@ func SetupTrustedCluster(ctx context.Context, t *testing.T, rootServer, leafServ rootProxyTunnelAddr, err := rootServer.ProxyTunnelAddr() require.NoError(t, err) - tc, err := types.NewTrustedCluster("root-cluster", types.TrustedClusterSpecV2{ + tc, err := types.NewTrustedCluster(rootServer.Config.Auth.ClusterName.GetClusterName(), types.TrustedClusterSpecV2{ Enabled: true, Token: StaticToken, ProxyAddress: rootProxyAddr.String(), @@ -431,7 +431,7 @@ func SetupTrustedCluster(ctx context.Context, t *testing.T, rootServer, leafServ }) require.NoError(t, err) - _, err = leafServer.GetAuthServer().UpsertTrustedCluster(ctx, tc) + _, err = leafServer.GetAuthServer().UpsertTrustedClusterV2(ctx, tc) require.NoError(t, err) require.EventuallyWithT(t, func(t *assert.CollectT) { diff --git a/tool/tsh/common/tsh_helper_test.go b/tool/tsh/common/tsh_helper_test.go index 380b012805d3c..dad5c19bc5913 100644 --- a/tool/tsh/common/tsh_helper_test.go +++ b/tool/tsh/common/tsh_helper_test.go @@ -249,7 +249,7 @@ func (s *suite) setupLeafCluster(t *testing.T, options testSuiteOptions) { } s.leaf = runTeleport(t, cfg) - _, err = s.leaf.GetAuthServer().UpsertTrustedCluster(s.leaf.ExitContext(), tc) + _, err = s.leaf.GetAuthServer().UpsertTrustedClusterV2(s.leaf.ExitContext(), tc) require.NoError(t, err) } diff --git a/tool/tsh/common/tsh_test.go b/tool/tsh/common/tsh_test.go index d8c58df31ec99..c40130f02e0ad 100644 --- a/tool/tsh/common/tsh_test.go +++ b/tool/tsh/common/tsh_test.go @@ -2543,7 +2543,7 @@ func tryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedClust ctx := context.TODO() for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) - _, err := authServer.UpsertTrustedCluster(ctx, trustedCluster) + _, err := authServer.UpsertTrustedClusterV2(ctx, trustedCluster) if err == nil { return } From 7049271b58e974f0ce28ee2aa3bc799f9eb44563 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Thu, 5 Dec 2024 10:01:46 -0800 Subject: [PATCH 04/19] Address feedback - Remove unnecessary ping - Update error messages - Use skipNameValidation consts - Validate cluster name before establishing trust - Do not reveal cluster name in error message - Use BadParameter instead of CompareFailed --- api/client/client.go | 19 +++--- integration/integration_test.go | 16 +++-- integration/proxy/proxy_helpers.go | 3 +- lib/auth/trustedcluster.go | 96 +++++++++++++++++++++--------- 4 files changed, 88 insertions(+), 46 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 281d7d476ce71..fed570dc0539a 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2285,7 +2285,10 @@ func (c *Client) UpsertTrustedCluster(ctx context.Context, trustedCluster types. return nil, trace.BadParameter("invalid type %T", trustedCluster) } resp, err := c.grpc.UpsertTrustedCluster(ctx, trustedClusterV2) - return resp, trace.Wrap(err) + if err != nil { + return nil, trace.Wrap(err) + } + return resp, nil } // UpsertTrustedClusterV2 creates or updates a Trusted Cluster. @@ -2295,17 +2298,11 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type return nil, trace.BadParameter("invalid type %T", trustedCluster) } resp, err := c.grpc.UpsertTrustedClusterV2(ctx, trustedClusterV2) - if trace.IsNotImplemented(err) { - // Try to print a nicer error message when newer clients connect to - // older auth servers that don't recognize the new gRPC. - authVersion := "unknown" - if pingResp, err := c.Ping(ctx); err == nil && pingResp.ServerVersion != "" { - authVersion = pingResp.ServerVersion - } - return resp, trace.Wrap(err, "client version (%s) is likely newer than your auth server version (%s), "+ - "consider upgrading your auth server", api.Version, authVersion) + if err != nil && trace.IsNotImplemented(err) { + return nil, trace.Wrap(err, "control plane does not support this operation, "+ + "consider upgrading your control plane") } - return resp, trace.Wrap(err) + return resp, nil } // DeleteTrustedCluster deletes a Trusted Cluster by name. diff --git a/integration/integration_test.go b/integration/integration_test.go index 7ef07dca0188d..11f4f66377a2d 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -2797,7 +2797,8 @@ func testMapRoles(t *testing.T, suite *integrationTestSuite) { require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) sshPort, _, _ := aux.StartNodeAndProxy(t, "aux-node") @@ -3615,7 +3616,8 @@ func testTrustedTunnelNode(t *testing.T, suite *integrationTestSuite) { require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Create a Teleport instance with a node that dials back to the aux cluster. @@ -3795,7 +3797,8 @@ func testTrustedClusterAgentless(t *testing.T, suite *integrationTestSuite) { require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, false) + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Wait for both cluster to see each other via reverse tunnels. @@ -5618,7 +5621,8 @@ func testRotateTrustedClusters(t *testing.T, suite *integrationTestSuite) { lib.SetInsecureDevMode(true) defer lib.SetInsecureDevMode(false) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, false) + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, svc.GetAuthServer(), aux.Secrets.SiteName, 1) // capture credentials before reload has started to simulate old client @@ -7549,7 +7553,9 @@ func createTrustedClusterPair(t *testing.T, suite *integrationTestSuite, extraSe t.Cleanup(func() { leaf.StopAll() }) require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, false) + + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, root.Process.GetAuthServer(), leafName, 1) _, _, rootProxySSHPort := root.StartNodeAndProxy(t, "root-zero") diff --git a/integration/proxy/proxy_helpers.go b/integration/proxy/proxy_helpers.go index 7a735f5f8f191..fa459c415a55b 100644 --- a/integration/proxy/proxy_helpers.go +++ b/integration/proxy/proxy_helpers.go @@ -184,7 +184,8 @@ func newSuite(t *testing.T, opts ...proxySuiteOptionsFunc) *Suite { } if options.trustedCluster != nil { - helpers.TryCreateTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster, false) + const skipNameValidation = false + helpers.TryCreateTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, suite.root.Process.GetAuthServer(), suite.leaf.Secrets.SiteName, 1) } diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index b5ae710d603b8..1f316dd428b47 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -30,6 +30,7 @@ import ( "github.com/gravitational/trace" "github.com/gravitational/teleport" + "github.com/gravitational/teleport/api/client/webclient" tracehttp "github.com/gravitational/teleport/api/observability/tracing/http" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" @@ -46,13 +47,15 @@ import ( // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - upserted, err := a.upsertTrustedCluster(ctx, tc, false) + const validateName = false + upserted, err := a.upsertTrustedCluster(ctx, tc, validateName) return upserted, trace.Wrap(err) } // UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. // The trusted cluster resource name must match the cluster name. func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + const validateName = true upserted, err := a.upsertTrustedCluster(ctx, tc, true) return upserted, trace.Wrap(err) } @@ -299,6 +302,19 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste } } + clt, err := a.trustedClusterClient(trustedCluster) + if err != nil { + return nil, trace.Wrap(err) + } + + // Validate cluster names before establishing trust to avoid unnecessarily + // creating a remote_cluster resource on the root cluster. + if validateName { + if err := a.validateTrustedClusterName(ctx, clt, trustedCluster); err != nil { + return nil, trace.Wrap(err) + } + } + // create a request to validate a trusted cluster (token and local certificate authorities) validateRequest := authclient.ValidateTrustedClusterRequest{ Token: trustedCluster.GetToken(), @@ -310,7 +326,7 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste log.Infof("Sending validate request; token=%s, CAs=%v", backend.MaskKeyName(validateRequest.Token), validateRequest.CAs) // send the request to the remote auth server via the proxy - validateResponse, err := a.sendValidateRequestToProxy(trustedCluster.GetProxyAddress(), &validateRequest) + validateResponse, err := a.sendValidateRequestToProxy(ctx, clt, &validateRequest) if err != nil { log.Error(err) if strings.Contains(err.Error(), "x509") { @@ -336,8 +352,8 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste return nil, trace.BadParameter("remote cluster name can not be the same as local cluster name") } if validateName && trustedCluster.GetName() != remoteClusterName { - return nil, trace.CompareFailed("trusted cluster resource name must be the same as the remote cluster name. got: %q, expected: %q", - trustedCluster.GetName(), remoteClusterName) + return nil, trace.BadParameter("trusted cluster resource name must be the same as the remote cluster name. got: %q", + trustedCluster.GetName()) } } } @@ -564,10 +580,54 @@ func (a *Server) validateTrustedClusterToken(ctx context.Context, tokenName stri return provisionToken.GetMetadata().Labels, nil } -func (a *Server) sendValidateRequestToProxy(host string, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { +func (a *Server) sendValidateRequestToProxy(ctx context.Context, clt *roundtrip.Client, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { + validateRequestRaw, err := validateRequest.ToRaw() + if err != nil { + return nil, trace.Wrap(err) + } + + out, err := httplib.ConvertResponse(clt.PostJSON(ctx, clt.Endpoint("webapi", "trustedclusters", "validate"), validateRequestRaw)) + if err != nil { + return nil, trace.Wrap(err) + } + + var validateResponseRaw authclient.ValidateTrustedClusterResponseRaw + err = json.Unmarshal(out.Bytes(), &validateResponseRaw) + if err != nil { + return nil, trace.Wrap(err) + } + + validateResponse, err := validateResponseRaw.ToNative() + if err != nil { + return nil, trace.Wrap(err) + } + + return validateResponse, nil +} + +// validateTrustedClusterName validates that the trusted cluster resource name +// matches the cluster name. +func (a *Server) validateTrustedClusterName(ctx context.Context, clt *roundtrip.Client, trustedCluster types.TrustedCluster) error { + out, err := httplib.ConvertResponse(clt.Get(ctx, clt.Endpoint("webapi", "ping"), nil)) + if err != nil { + return trace.Wrap(err) + } + var pingResponse webclient.PingResponse + if err = json.Unmarshal(out.Bytes(), &pingResponse); err != nil { + return trace.Wrap(err) + } + if trustedCluster.GetName() != pingResponse.ClusterName { + return trace.BadParameter("trusted cluster resource name must be the same as the remote cluster name. got: %q", + trustedCluster.GetName()) + } + return nil +} + +// trustedClusterClient returns a roundtrip client for the trusted cluster. +func (a *Server) trustedClusterClient(trustedCluster types.TrustedCluster) (*roundtrip.Client, error) { proxyAddr := url.URL{ Scheme: "https", - Host: host, + Host: trustedCluster.GetProxyAddress(), } opts := []roundtrip.ClientParam{ @@ -600,29 +660,7 @@ func (a *Server) sendValidateRequestToProxy(host string, validateRequest *authcl if err != nil { return nil, trace.Wrap(err) } - - validateRequestRaw, err := validateRequest.ToRaw() - if err != nil { - return nil, trace.Wrap(err) - } - - out, err := httplib.ConvertResponse(clt.PostJSON(context.TODO(), clt.Endpoint("webapi", "trustedclusters", "validate"), validateRequestRaw)) - if err != nil { - return nil, trace.Wrap(err) - } - - var validateResponseRaw authclient.ValidateTrustedClusterResponseRaw - err = json.Unmarshal(out.Bytes(), &validateResponseRaw) - if err != nil { - return nil, trace.Wrap(err) - } - - validateResponse, err := validateResponseRaw.ToNative() - if err != nil { - return nil, trace.Wrap(err) - } - - return validateResponse, nil + return clt, err } // createReverseTunnel will create a services.ReverseTunnel givenin the From 1933ba6897a3423f2656fc6f8cedc92727bfba41 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Thu, 5 Dec 2024 15:30:09 -0800 Subject: [PATCH 05/19] Use webclient.Find --- lib/auth/trustedcluster.go | 106 +++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 58 deletions(-) diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 1f316dd428b47..1be35eb74f134 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -47,16 +47,16 @@ import ( // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - const validateName = false - upserted, err := a.upsertTrustedCluster(ctx, tc, validateName) + const validateNameFalse = false + upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameFalse) return upserted, trace.Wrap(err) } // UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. // The trusted cluster resource name must match the cluster name. func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - const validateName = true - upserted, err := a.upsertTrustedCluster(ctx, tc, true) + const validateNameTrue = true + upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameTrue) return upserted, trace.Wrap(err) } @@ -302,15 +302,10 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste } } - clt, err := a.trustedClusterClient(trustedCluster) - if err != nil { - return nil, trace.Wrap(err) - } - // Validate cluster names before establishing trust to avoid unnecessarily // creating a remote_cluster resource on the root cluster. if validateName { - if err := a.validateTrustedClusterName(ctx, clt, trustedCluster); err != nil { + if err := a.validateTrustedClusterName(ctx, trustedCluster); err != nil { return nil, trace.Wrap(err) } } @@ -326,7 +321,7 @@ func (a *Server) establishTrust(ctx context.Context, trustedCluster types.Truste log.Infof("Sending validate request; token=%s, CAs=%v", backend.MaskKeyName(validateRequest.Token), validateRequest.CAs) // send the request to the remote auth server via the proxy - validateResponse, err := a.sendValidateRequestToProxy(ctx, clt, &validateRequest) + validateResponse, err := a.sendValidateRequestToProxy(trustedCluster.GetProxyAddress(), &validateRequest) if err != nil { log.Error(err) if strings.Contains(err.Error(), "x509") { @@ -580,54 +575,10 @@ func (a *Server) validateTrustedClusterToken(ctx context.Context, tokenName stri return provisionToken.GetMetadata().Labels, nil } -func (a *Server) sendValidateRequestToProxy(ctx context.Context, clt *roundtrip.Client, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { - validateRequestRaw, err := validateRequest.ToRaw() - if err != nil { - return nil, trace.Wrap(err) - } - - out, err := httplib.ConvertResponse(clt.PostJSON(ctx, clt.Endpoint("webapi", "trustedclusters", "validate"), validateRequestRaw)) - if err != nil { - return nil, trace.Wrap(err) - } - - var validateResponseRaw authclient.ValidateTrustedClusterResponseRaw - err = json.Unmarshal(out.Bytes(), &validateResponseRaw) - if err != nil { - return nil, trace.Wrap(err) - } - - validateResponse, err := validateResponseRaw.ToNative() - if err != nil { - return nil, trace.Wrap(err) - } - - return validateResponse, nil -} - -// validateTrustedClusterName validates that the trusted cluster resource name -// matches the cluster name. -func (a *Server) validateTrustedClusterName(ctx context.Context, clt *roundtrip.Client, trustedCluster types.TrustedCluster) error { - out, err := httplib.ConvertResponse(clt.Get(ctx, clt.Endpoint("webapi", "ping"), nil)) - if err != nil { - return trace.Wrap(err) - } - var pingResponse webclient.PingResponse - if err = json.Unmarshal(out.Bytes(), &pingResponse); err != nil { - return trace.Wrap(err) - } - if trustedCluster.GetName() != pingResponse.ClusterName { - return trace.BadParameter("trusted cluster resource name must be the same as the remote cluster name. got: %q", - trustedCluster.GetName()) - } - return nil -} - -// trustedClusterClient returns a roundtrip client for the trusted cluster. -func (a *Server) trustedClusterClient(trustedCluster types.TrustedCluster) (*roundtrip.Client, error) { +func (a *Server) sendValidateRequestToProxy(host string, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { proxyAddr := url.URL{ Scheme: "https", - Host: trustedCluster.GetProxyAddress(), + Host: host, } opts := []roundtrip.ClientParam{ @@ -660,7 +611,46 @@ func (a *Server) trustedClusterClient(trustedCluster types.TrustedCluster) (*rou if err != nil { return nil, trace.Wrap(err) } - return clt, err + validateRequestRaw, err := validateRequest.ToRaw() + if err != nil { + return nil, trace.Wrap(err) + } + + out, err := httplib.ConvertResponse(clt.PostJSON(context.TODO(), clt.Endpoint("webapi", "trustedclusters", "validate"), validateRequestRaw)) + if err != nil { + return nil, trace.Wrap(err) + } + + var validateResponseRaw authclient.ValidateTrustedClusterResponseRaw + err = json.Unmarshal(out.Bytes(), &validateResponseRaw) + if err != nil { + return nil, trace.Wrap(err) + } + + validateResponse, err := validateResponseRaw.ToNative() + if err != nil { + return nil, trace.Wrap(err) + } + + return validateResponse, nil +} + +// validateTrustedClusterName validates that the trusted cluster resource name +// matches the cluster name. +func (a *Server) validateTrustedClusterName(ctx context.Context, trustedCluster types.TrustedCluster) error { + resp, err := webclient.Find(&webclient.Config{ + Context: ctx, + ProxyAddr: trustedCluster.GetProxyAddress(), + Insecure: lib.IsInsecureDevMode(), + }) + if err != nil { + return trace.Wrap(err) + } + if trustedCluster.GetName() != resp.ClusterName { + return trace.BadParameter("trusted cluster resource name must be the same as the remote cluster name. got: %q", + trustedCluster.GetName()) + } + return nil } // createReverseTunnel will create a services.ReverseTunnel givenin the From cb1f827d90504137b6855e18ebd4552cb77692a6 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Thu, 5 Dec 2024 15:44:04 -0800 Subject: [PATCH 06/19] Fix test/lint --- integration/integration_test.go | 6 +----- tool/tctl/common/resource_command.go | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index 11f4f66377a2d..672b2cb247a5a 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -2787,10 +2787,6 @@ func testMapRoles(t *testing.T, suite *integrationTestSuite) { {Remote: mainDevs, Local: []string{auxDevs}}, }) - // modify trusted cluster resource name so it would not - // match the cluster name to check that it does not matter - trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - require.NoError(t, main.Start()) require.NoError(t, aux.Start()) @@ -3146,7 +3142,7 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") if !test.skipNameValidation { - // Modify the trusted cluster resource name back to what it was orignally. + // Modify the trusted cluster resource name back to what it was originally. trustedCluster.SetName(main.Secrets.SiteName) } diff --git a/tool/tctl/common/resource_command.go b/tool/tctl/common/resource_command.go index e8d798d8c7896..5d93425a53fbe 100644 --- a/tool/tctl/common/resource_command.go +++ b/tool/tctl/common/resource_command.go @@ -395,6 +395,8 @@ func (rc *ResourceCommand) createTrustedCluster(ctx context.Context, client *aut return trace.AlreadyExists("trusted cluster %q already exists", name) } + //nolint:staticcheck // SA1019. UpsertTrustedCluster is deprecated but will + // continue being supported for tctl clients. out, err := client.UpsertTrustedCluster(ctx, tc) if err != nil { // If force is used and UpsertTrustedCluster returns trace.AlreadyExists, From 6243ff2009e9143c33e099934d409e1ea7f881ae Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 6 Dec 2024 12:20:42 -0800 Subject: [PATCH 07/19] Allow label updates --- api/types/trustedcluster.go | 8 -------- lib/auth/trustedcluster_test.go | 32 ++++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/api/types/trustedcluster.go b/api/types/trustedcluster.go index ea7b309228427..17d397525a7df 100644 --- a/api/types/trustedcluster.go +++ b/api/types/trustedcluster.go @@ -262,14 +262,6 @@ func (c *TrustedClusterV2) CanChangeStateTo(t TrustedCluster) error { if !slices.Equal(c.GetRoles(), t.GetRoles()) { return immutableFieldErr("roles") } - - if c.GetEnabled() == t.GetEnabled() && c.GetRoleMap().IsEqual(t.GetRoleMap()) { - if t.GetEnabled() { - return trace.AlreadyExists("leaf cluster is already enabled, this update would have no effect") - } - return trace.AlreadyExists("leaf cluster is already disabled, this update would have no effect") - } - return nil } diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index 426e30171001c..7de239088552b 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -453,17 +453,23 @@ func TestUpsertTrustedCluster(t *testing.T) { err = a.SetStaticTokens(tks) require.NoError(t, err) - trustedCluster, err := types.NewTrustedCluster("trustedcluster", - types.TrustedClusterSpecV2{ - Enabled: true, - RoleMap: []types.RoleMapping{ - { - Local: []string{"someRole"}, - Remote: "someRole", - }, + role, err := types.NewRole("test-role", types.RoleSpecV6{}) + require.NoError(t, err) + _, err = a.UpsertRole(ctx, role) + require.NoError(t, err) + + trustedClusterSpec := types.TrustedClusterSpecV2{ + Enabled: true, + RoleMap: []types.RoleMapping{ + { + Local: []string{"test-role"}, + Remote: "someRole", }, - ProxyAddress: "localhost", - }) + }, + ProxyAddress: "localhost", + } + + trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) require.NoError(t, err) ca := suite.NewTestCA(types.UserCA, "trustedcluster") @@ -572,4 +578,10 @@ func TestUpsertTrustedCluster(t *testing.T) { _, err = server.UpsertTrustedClusterV2(ctx, tc) require.True(t, trace.IsNotImplemented(err), "UpsertTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) }) + t.Run("Upsert unmodified trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) + require.NoError(t, err) + _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) } From 4142256a1982e2721132a338955a20caeb929bcb Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 6 Dec 2024 13:23:01 -0800 Subject: [PATCH 08/19] Fix test --- tool/tsh/common/tsh_helper_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/tsh/common/tsh_helper_test.go b/tool/tsh/common/tsh_helper_test.go index dad5c19bc5913..85ec86097b3bd 100644 --- a/tool/tsh/common/tsh_helper_test.go +++ b/tool/tsh/common/tsh_helper_test.go @@ -230,7 +230,7 @@ func (s *suite) setupLeafCluster(t *testing.T, options testSuiteOptions) { tunnelAddr = s.root.Config.Proxy.ReverseTunnelListenAddr.String() } - tc, err := types.NewTrustedCluster("root-cluster", types.TrustedClusterSpecV2{ + tc, err := types.NewTrustedCluster(s.root.Config.Auth.ClusterName.GetClusterName(), types.TrustedClusterSpecV2{ Enabled: true, Token: staticToken, ProxyAddress: s.root.Config.Proxy.WebAddr.String(), From 330a663fb8ccd45eb0dd90744eee35ceb2401c20 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 6 Dec 2024 18:09:38 -0800 Subject: [PATCH 09/19] Fix error handling --- api/client/client.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 3dc3a46b01433..737c1e9ec4234 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2299,9 +2299,12 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type return nil, trace.BadParameter("invalid type %T", trustedCluster) } resp, err := c.grpc.UpsertTrustedClusterV2(ctx, trustedClusterV2) - if err != nil && trace.IsNotImplemented(err) { - return nil, trace.Wrap(err, "control plane does not support this operation, "+ - "consider upgrading your control plane") + if err != nil { + if trace.IsNotImplemented(err) { + return nil, trace.Wrap(err, "control plane does not support this operation, "+ + "consider upgrading your control plane") + } + return nil, trace.Wrap(err) } return resp, nil } From 456a2fed202e98d23e3ffa88a2b7294f36977876 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Tue, 10 Dec 2024 13:45:08 -0800 Subject: [PATCH 10/19] Implement CreateTrustedClusterV2 and UpdateTrustedClusterV2 --- api/client/client.go | 26 + api/client/proto/authservice.pb.go | 1971 +++++++++-------- .../legacy/client/proto/authservice.proto | 5 + integration/helpers/trustedclusters.go | 56 +- integration/integration_test.go | 142 +- integration/proxy/proxy_helpers.go | 2 +- lib/auth/auth_with_roles.go | 36 + lib/auth/grpcserver.go | 40 + lib/auth/trustedcluster.go | 84 +- lib/auth/trustedcluster_test.go | 154 ++ 10 files changed, 1535 insertions(+), 981 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 737c1e9ec4234..cf7b61dbc15d8 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2309,6 +2309,32 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type return resp, nil } +// CreateTrustedClusterV2 creates a Trusted Cluster. +func (c *Client) CreateTrustedClusterV2(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { + trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) + if !ok { + return nil, trace.BadParameter("invalid type %T", trustedCluster) + } + resp, err := c.grpc.CreateTrustedClusterV2(ctx, trustedClusterV2) + if err != nil { + return nil, trace.Wrap(err) + } + return resp, nil +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster. +func (c *Client) UpdateTrustedClusterV2(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { + trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) + if !ok { + return nil, trace.BadParameter("invalid type %T", trustedCluster) + } + resp, err := c.grpc.UpdateTrustedClusterV2(ctx, trustedClusterV2) + if err != nil { + return nil, trace.Wrap(err) + } + return resp, nil +} + // DeleteTrustedCluster deletes a Trusted Cluster by name. func (c *Client) DeleteTrustedCluster(ctx context.Context, name string) error { if name == "" { diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 2a6460972ffd2..d204fcc4430ac 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -15849,957 +15849,958 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 15186 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x6b, 0x6c, 0x5c, 0x49, - 0x76, 0x18, 0xac, 0x6e, 0xbe, 0x0f, 0x1f, 0x6a, 0x15, 0x49, 0xb1, 0x45, 0x3d, 0x5a, 0xba, 0x1a, - 0xcd, 0x6a, 0xb4, 0xb3, 0x7a, 0x70, 0x1e, 0x3b, 0xaf, 0x9d, 0x99, 0x6e, 0x92, 0x12, 0x29, 0xf1, - 0x35, 0xb7, 0x49, 0x6a, 0x5e, 0xde, 0xde, 0xab, 0xee, 0x12, 0x79, 0xad, 0xe6, 0xbd, 0xbd, 0xf7, - 0xde, 0x96, 0x46, 0xeb, 0xcf, 0xfe, 0x60, 0xfb, 0x7b, 0xf8, 0xc3, 0x87, 0x24, 0x36, 0x90, 0x04, - 0x0e, 0xfc, 0xc3, 0x09, 0x90, 0x00, 0x41, 0x80, 0x00, 0xfe, 0x13, 0xf8, 0x97, 0x7f, 0xe4, 0x57, - 0x36, 0x06, 0x82, 0xc4, 0xb0, 0xfd, 0x27, 0x40, 0xe8, 0x64, 0x01, 0xff, 0x21, 0x92, 0x00, 0x46, - 0x90, 0x00, 0x59, 0xc0, 0x40, 0x50, 0xa7, 0x1e, 0xb7, 0xea, 0x3e, 0xba, 0x49, 0x49, 0xb3, 0xce, - 0x1f, 0x89, 0x7d, 0xea, 0x9c, 0x53, 0x55, 0xa7, 0xea, 0x56, 0x9d, 0x3a, 0x75, 0xea, 0x1c, 0xb8, - 0x19, 0xd1, 0x36, 0xed, 0xf8, 0x41, 0x74, 0xab, 0x4d, 0xf7, 0x9c, 0xe6, 0xf3, 0x5b, 0xcd, 0xb6, - 0x4b, 0xbd, 0xe8, 0x56, 0x27, 0xf0, 0x23, 0xff, 0x96, 0xd3, 0x8d, 0xf6, 0x43, 0x1a, 0x3c, 0x75, - 0x9b, 0xf4, 0x26, 0x42, 0xc8, 0x10, 0xfe, 0x37, 0x3f, 0xb3, 0xe7, 0xef, 0xf9, 0x1c, 0x87, 0xfd, - 0xc5, 0x0b, 0xe7, 0xcf, 0xef, 0xf9, 0xfe, 0x5e, 0x9b, 0x72, 0xe2, 0x47, 0xdd, 0xc7, 0xb7, 0xe8, - 0x41, 0x27, 0x7a, 0x2e, 0x0a, 0x2b, 0xc9, 0xc2, 0xc8, 0x3d, 0xa0, 0x61, 0xe4, 0x1c, 0x74, 0x04, - 0xc2, 0x1b, 0xaa, 0x29, 0x4e, 0x14, 0xb1, 0x92, 0xc8, 0xf5, 0xbd, 0x5b, 0x4f, 0xef, 0xe8, 0x3f, - 0x05, 0xea, 0xf5, 0x9e, 0xad, 0x6e, 0xd2, 0x20, 0x0a, 0x8f, 0x85, 0x49, 0x9f, 0x52, 0x2f, 0x4a, - 0x55, 0x2f, 0x30, 0xa3, 0xe7, 0x1d, 0x1a, 0x72, 0x14, 0xf9, 0x9f, 0x40, 0xbd, 0x92, 0x8d, 0x8a, - 0xff, 0x0a, 0x94, 0xef, 0x65, 0xa3, 0x3c, 0xa3, 0x8f, 0x98, 0x4c, 0x3d, 0xf5, 0x47, 0x1f, 0xf4, - 0xc0, 0xe9, 0x74, 0x68, 0x10, 0xff, 0x21, 0xd0, 0xcf, 0x29, 0xf4, 0x83, 0xc7, 0x0e, 0x13, 0xd1, - 0xc1, 0x63, 0x27, 0xd5, 0x8d, 0x6e, 0xe8, 0xec, 0x51, 0xd1, 0xfc, 0xa7, 0x77, 0xf4, 0x9f, 0x1c, - 0xd5, 0xfa, 0xfd, 0x02, 0x0c, 0x3d, 0x74, 0xa2, 0xe6, 0x3e, 0xf9, 0x04, 0x86, 0x1e, 0xb8, 0x5e, - 0x2b, 0x2c, 0x17, 0x2e, 0x0f, 0x5c, 0x1f, 0x5f, 0x28, 0xdd, 0xe4, 0x5d, 0xc1, 0x42, 0x56, 0x50, - 0x9b, 0xfb, 0xe9, 0x61, 0xe5, 0xd4, 0xd1, 0x61, 0xe5, 0xf4, 0x13, 0x86, 0xf6, 0xa6, 0x7f, 0xe0, - 0x46, 0x38, 0xb6, 0x36, 0xa7, 0x23, 0x3b, 0x30, 0x5d, 0x6d, 0xb7, 0xfd, 0x67, 0x5b, 0x4e, 0x10, - 0xb9, 0x4e, 0xbb, 0xde, 0x6d, 0x36, 0x69, 0x18, 0x96, 0x8b, 0x97, 0x0b, 0xd7, 0x47, 0x6b, 0x57, - 0x8f, 0x0e, 0x2b, 0x15, 0x87, 0x15, 0x37, 0x3a, 0xbc, 0xbc, 0x11, 0x72, 0x04, 0x8d, 0x51, 0x16, - 0xbd, 0xf5, 0xc7, 0xc3, 0x50, 0x5a, 0xf1, 0xc3, 0x68, 0x91, 0x8d, 0xa8, 0x4d, 0x7f, 0xdc, 0xa5, - 0x61, 0x44, 0xae, 0xc2, 0x30, 0x83, 0xad, 0x2e, 0x95, 0x0b, 0x97, 0x0b, 0xd7, 0xc7, 0x6a, 0xe3, - 0x47, 0x87, 0x95, 0x91, 0x7d, 0x3f, 0x8c, 0x1a, 0x6e, 0xcb, 0x16, 0x45, 0xe4, 0x0d, 0x18, 0xdd, - 0xf0, 0x5b, 0x74, 0xc3, 0x39, 0xa0, 0xd8, 0x8a, 0xb1, 0xda, 0xe4, 0xd1, 0x61, 0x65, 0xcc, 0xf3, - 0x5b, 0xb4, 0xe1, 0x39, 0x07, 0xd4, 0x56, 0xc5, 0x64, 0x17, 0x06, 0x6d, 0xbf, 0x4d, 0xcb, 0x03, - 0x88, 0x56, 0x3b, 0x3a, 0xac, 0x0c, 0x06, 0x7e, 0x9b, 0xfe, 0xfc, 0xb0, 0xf2, 0xee, 0x9e, 0x1b, - 0xed, 0x77, 0x1f, 0xdd, 0x6c, 0xfa, 0x07, 0xb7, 0xf6, 0x02, 0xe7, 0xa9, 0xcb, 0x27, 0xa1, 0xd3, - 0xbe, 0x15, 0x4f, 0xd5, 0x8e, 0x2b, 0xc6, 0xbd, 0xfe, 0x3c, 0x8c, 0xe8, 0x01, 0xe3, 0x64, 0x23, - 0x3f, 0xf2, 0x10, 0x66, 0xaa, 0xad, 0x96, 0xcb, 0x29, 0xb6, 0x02, 0xd7, 0x6b, 0xba, 0x1d, 0xa7, - 0x1d, 0x96, 0x07, 0x2f, 0x0f, 0x5c, 0x1f, 0x13, 0x42, 0x51, 0xe5, 0x8d, 0x8e, 0x42, 0xd0, 0x84, - 0x92, 0xc9, 0x80, 0xbc, 0x05, 0xa3, 0x4b, 0x1b, 0x75, 0xd6, 0xf6, 0xb0, 0x3c, 0x84, 0xcc, 0xe6, - 0x8e, 0x0e, 0x2b, 0xd3, 0x2d, 0x2f, 0xc4, 0xae, 0xe9, 0x0c, 0x14, 0x22, 0x79, 0x17, 0x26, 0xb6, - 0xba, 0x8f, 0xda, 0x6e, 0x73, 0x7b, 0xad, 0xfe, 0x80, 0x3e, 0x2f, 0x0f, 0x5f, 0x2e, 0x5c, 0x9f, - 0xa8, 0x91, 0xa3, 0xc3, 0xca, 0x54, 0x07, 0xe1, 0x8d, 0xa8, 0x1d, 0x36, 0x9e, 0xd0, 0xe7, 0xb6, - 0x81, 0x17, 0xd3, 0xd5, 0xeb, 0x2b, 0x8c, 0x6e, 0x24, 0x45, 0x17, 0x86, 0xfb, 0x3a, 0x1d, 0xc7, - 0x23, 0xb7, 0x00, 0x6c, 0x7a, 0xe0, 0x47, 0xb4, 0xda, 0x6a, 0x05, 0xe5, 0x51, 0x94, 0xed, 0xe9, - 0xa3, 0xc3, 0xca, 0x78, 0x80, 0xd0, 0x86, 0xd3, 0x6a, 0x05, 0xb6, 0x86, 0x42, 0x16, 0x61, 0xd4, - 0xf6, 0xb9, 0x80, 0xcb, 0x63, 0x97, 0x0b, 0xd7, 0xc7, 0x17, 0x4e, 0x8b, 0x69, 0x28, 0xc1, 0xb5, - 0xb3, 0x47, 0x87, 0x15, 0x12, 0x88, 0x5f, 0x7a, 0x2f, 0x25, 0x06, 0xa9, 0xc0, 0xc8, 0x86, 0xbf, - 0xe8, 0x34, 0xf7, 0x69, 0x19, 0x70, 0xee, 0x0d, 0x1d, 0x1d, 0x56, 0x0a, 0xdf, 0xb3, 0x25, 0x94, - 0x3c, 0x85, 0xf1, 0x78, 0xa0, 0xc2, 0xf2, 0x38, 0x8a, 0x6f, 0xfb, 0xe8, 0xb0, 0x72, 0x36, 0x44, - 0x70, 0x83, 0x0d, 0xbd, 0x26, 0xc1, 0x97, 0x98, 0x05, 0x7a, 0x45, 0xe4, 0x6b, 0x98, 0x8d, 0x7f, - 0x56, 0xc3, 0x90, 0x06, 0x8c, 0xc7, 0xea, 0x52, 0x79, 0x12, 0x25, 0xf3, 0xfa, 0xd1, 0x61, 0xc5, + // 15203 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5b, 0x6c, 0x5c, 0x59, + 0x76, 0x18, 0xaa, 0x2a, 0xbe, 0x17, 0x1f, 0x2a, 0x6d, 0x92, 0x62, 0x89, 0x7a, 0x94, 0x74, 0xd4, + 0xea, 0x51, 0x6b, 0x7a, 0xf4, 0x60, 0x3f, 0xa6, 0x5f, 0xd3, 0xdd, 0x55, 0x24, 0x25, 0x52, 0xe2, + 0xab, 0x4f, 0x91, 0x54, 0xbf, 0x3c, 0x35, 0x47, 0x55, 0x5b, 0xe4, 0xb1, 0x8a, 0xe7, 0xd4, 0x9c, + 0x73, 0x4a, 0x6a, 0x8d, 0xaf, 0x7d, 0x61, 0xfb, 0x3e, 0x7c, 0x71, 0x71, 0x6f, 0x6c, 0x20, 0x09, + 0x1c, 0x24, 0x80, 0x13, 0x20, 0x01, 0x8c, 0x00, 0x01, 0xfc, 0x13, 0xf8, 0xcb, 0x1f, 0xf9, 0xca, + 0xc4, 0x40, 0x90, 0x18, 0xb6, 0x7f, 0x02, 0x84, 0x4e, 0x06, 0xf0, 0x0f, 0x91, 0x04, 0x30, 0x82, + 0x04, 0xc8, 0x00, 0x06, 0x82, 0xbd, 0xf6, 0xe3, 0xec, 0x7d, 0x1e, 0x55, 0xa4, 0xa4, 0x1e, 0xe7, + 0x47, 0x62, 0xad, 0xbd, 0xd6, 0xda, 0xcf, 0xb3, 0xf7, 0x5a, 0x6b, 0xaf, 0xbd, 0x16, 0xdc, 0x8c, + 0x68, 0x9b, 0x76, 0xfc, 0x20, 0xba, 0xd5, 0xa6, 0x7b, 0x4e, 0xf3, 0xf9, 0xad, 0x66, 0xdb, 0xa5, + 0x5e, 0x74, 0xab, 0x13, 0xf8, 0x91, 0x7f, 0xcb, 0xe9, 0x46, 0xfb, 0x21, 0x0d, 0x9e, 0xba, 0x4d, + 0x7a, 0x13, 0x21, 0x64, 0x08, 0xff, 0x9b, 0x9f, 0xd9, 0xf3, 0xf7, 0x7c, 0x8e, 0xc3, 0xfe, 0xe2, + 0x85, 0xf3, 0xe7, 0xf7, 0x7c, 0x7f, 0xaf, 0x4d, 0x39, 0xf1, 0xa3, 0xee, 0xe3, 0x5b, 0xf4, 0xa0, + 0x13, 0x3d, 0x17, 0x85, 0x95, 0x64, 0x61, 0xe4, 0x1e, 0xd0, 0x30, 0x72, 0x0e, 0x3a, 0x02, 0xe1, + 0x0d, 0xd5, 0x14, 0x27, 0x8a, 0x58, 0x49, 0xe4, 0xfa, 0xde, 0xad, 0xa7, 0x77, 0xf4, 0x9f, 0x02, + 0xf5, 0x7a, 0xcf, 0x56, 0x37, 0x69, 0x10, 0x85, 0xc7, 0xc2, 0xa4, 0x4f, 0xa9, 0x17, 0xa5, 0xaa, + 0x17, 0x98, 0xd1, 0xf3, 0x0e, 0x0d, 0x39, 0x8a, 0xfc, 0x4f, 0xa0, 0x5e, 0xc9, 0x46, 0xc5, 0x7f, + 0x05, 0xca, 0xf7, 0xb2, 0x51, 0x9e, 0xd1, 0x47, 0x6c, 0x4c, 0x3d, 0xf5, 0x47, 0x1f, 0xf4, 0xc0, + 0xe9, 0x74, 0x68, 0x10, 0xff, 0x21, 0xd0, 0xcf, 0x29, 0xf4, 0x83, 0xc7, 0x0e, 0x1b, 0xa2, 0x83, + 0xc7, 0x4e, 0xaa, 0x1b, 0xdd, 0xd0, 0xd9, 0xa3, 0xa2, 0xf9, 0x4f, 0xef, 0xe8, 0x3f, 0x39, 0xaa, + 0xf5, 0x7b, 0x05, 0x18, 0x7a, 0xe8, 0x44, 0xcd, 0x7d, 0xf2, 0x09, 0x0c, 0x3d, 0x70, 0xbd, 0x56, + 0x58, 0x2e, 0x5c, 0x1e, 0xb8, 0x3e, 0xbe, 0x50, 0xba, 0xc9, 0xbb, 0x82, 0x85, 0xac, 0xa0, 0x36, + 0xf7, 0xd3, 0xc3, 0xca, 0xa9, 0xa3, 0xc3, 0xca, 0xe9, 0x27, 0x0c, 0xed, 0x4d, 0xff, 0xc0, 0x8d, + 0x70, 0x6e, 0x6d, 0x4e, 0x47, 0x76, 0x60, 0xba, 0xda, 0x6e, 0xfb, 0xcf, 0xb6, 0x9c, 0x20, 0x72, + 0x9d, 0x76, 0xbd, 0xdb, 0x6c, 0xd2, 0x30, 0x2c, 0x17, 0x2f, 0x17, 0xae, 0x8f, 0xd6, 0xae, 0x1e, + 0x1d, 0x56, 0x2a, 0x0e, 0x2b, 0x6e, 0x74, 0x78, 0x79, 0x23, 0xe4, 0x08, 0x1a, 0xa3, 0x2c, 0x7a, + 0xeb, 0x8f, 0x87, 0xa1, 0xb4, 0xe2, 0x87, 0xd1, 0x22, 0x9b, 0x51, 0x9b, 0xfe, 0xb8, 0x4b, 0xc3, + 0x88, 0x5c, 0x85, 0x61, 0x06, 0x5b, 0x5d, 0x2a, 0x17, 0x2e, 0x17, 0xae, 0x8f, 0xd5, 0xc6, 0x8f, + 0x0e, 0x2b, 0x23, 0xfb, 0x7e, 0x18, 0x35, 0xdc, 0x96, 0x2d, 0x8a, 0xc8, 0x1b, 0x30, 0xba, 0xe1, + 0xb7, 0xe8, 0x86, 0x73, 0x40, 0xb1, 0x15, 0x63, 0xb5, 0xc9, 0xa3, 0xc3, 0xca, 0x98, 0xe7, 0xb7, + 0x68, 0xc3, 0x73, 0x0e, 0xa8, 0xad, 0x8a, 0xc9, 0x2e, 0x0c, 0xda, 0x7e, 0x9b, 0x96, 0x07, 0x10, + 0xad, 0x76, 0x74, 0x58, 0x19, 0x0c, 0xfc, 0x36, 0xfd, 0xf9, 0x61, 0xe5, 0xdd, 0x3d, 0x37, 0xda, + 0xef, 0x3e, 0xba, 0xd9, 0xf4, 0x0f, 0x6e, 0xed, 0x05, 0xce, 0x53, 0x97, 0x2f, 0x42, 0xa7, 0x7d, + 0x2b, 0x5e, 0xaa, 0x1d, 0x57, 0xcc, 0x7b, 0xfd, 0x79, 0x18, 0xd1, 0x03, 0xc6, 0xc9, 0x46, 0x7e, + 0xe4, 0x21, 0xcc, 0x54, 0x5b, 0x2d, 0x97, 0x53, 0x6c, 0x05, 0xae, 0xd7, 0x74, 0x3b, 0x4e, 0x3b, + 0x2c, 0x0f, 0x5e, 0x1e, 0xb8, 0x3e, 0x26, 0x06, 0x45, 0x95, 0x37, 0x3a, 0x0a, 0x41, 0x1b, 0x94, + 0x4c, 0x06, 0xe4, 0x2d, 0x18, 0x5d, 0xda, 0xa8, 0xb3, 0xb6, 0x87, 0xe5, 0x21, 0x64, 0x36, 0x77, + 0x74, 0x58, 0x99, 0x6e, 0x79, 0x21, 0x76, 0x4d, 0x67, 0xa0, 0x10, 0xc9, 0xbb, 0x30, 0xb1, 0xd5, + 0x7d, 0xd4, 0x76, 0x9b, 0xdb, 0x6b, 0xf5, 0x07, 0xf4, 0x79, 0x79, 0xf8, 0x72, 0xe1, 0xfa, 0x44, + 0x8d, 0x1c, 0x1d, 0x56, 0xa6, 0x3a, 0x08, 0x6f, 0x44, 0xed, 0xb0, 0xf1, 0x84, 0x3e, 0xb7, 0x0d, + 0xbc, 0x98, 0xae, 0x5e, 0x5f, 0x61, 0x74, 0x23, 0x29, 0xba, 0x30, 0xdc, 0xd7, 0xe9, 0x38, 0x1e, + 0xb9, 0x05, 0x60, 0xd3, 0x03, 0x3f, 0xa2, 0xd5, 0x56, 0x2b, 0x28, 0x8f, 0xe2, 0xd8, 0x9e, 0x3e, + 0x3a, 0xac, 0x8c, 0x07, 0x08, 0x6d, 0x38, 0xad, 0x56, 0x60, 0x6b, 0x28, 0x64, 0x11, 0x46, 0x6d, + 0x9f, 0x0f, 0x70, 0x79, 0xec, 0x72, 0xe1, 0xfa, 0xf8, 0xc2, 0x69, 0xb1, 0x0c, 0x25, 0xb8, 0x76, + 0xf6, 0xe8, 0xb0, 0x42, 0x02, 0xf1, 0x4b, 0xef, 0xa5, 0xc4, 0x20, 0x15, 0x18, 0xd9, 0xf0, 0x17, + 0x9d, 0xe6, 0x3e, 0x2d, 0x03, 0xae, 0xbd, 0xa1, 0xa3, 0xc3, 0x4a, 0xe1, 0x7b, 0xb6, 0x84, 0x92, + 0xa7, 0x30, 0x1e, 0x4f, 0x54, 0x58, 0x1e, 0xc7, 0xe1, 0xdb, 0x3e, 0x3a, 0xac, 0x9c, 0x0d, 0x11, + 0xdc, 0x60, 0x53, 0xaf, 0x8d, 0xe0, 0x4b, 0xac, 0x02, 0xbd, 0x22, 0xf2, 0x35, 0xcc, 0xc6, 0x3f, + 0xab, 0x61, 0x48, 0x03, 0xc6, 0x63, 0x75, 0xa9, 0x3c, 0x89, 0x23, 0xf3, 0xfa, 0xd1, 0x61, 0xc5, 0xd2, 0x5a, 0xd0, 0x70, 0x24, 0x4a, 0xc3, 0x6d, 0x69, 0x3d, 0xcd, 0x66, 0x72, 0x7f, 0x70, 0x74, 0xa2, 0x34, 0x69, 0x5f, 0xdc, 0xf1, 0xc2, 0xc8, 0x79, 0xd4, 0xa6, 0x99, 0x48, 0xd6, 0x5f, 0x17, - 0x80, 0x6c, 0x76, 0xa8, 0x57, 0xaf, 0xaf, 0xb0, 0xef, 0x49, 0x7e, 0x4e, 0x6f, 0xc2, 0x18, 0x1f, - 0x38, 0x36, 0xba, 0x45, 0x1c, 0xdd, 0xa9, 0xa3, 0xc3, 0x0a, 0x88, 0xd1, 0x65, 0x23, 0x1b, 0x23, + 0x80, 0x6c, 0x76, 0xa8, 0x57, 0xaf, 0xaf, 0xb0, 0xef, 0x49, 0x7e, 0x4e, 0x6f, 0xc2, 0x18, 0x9f, + 0x38, 0x36, 0xbb, 0x45, 0x9c, 0xdd, 0xa9, 0xa3, 0xc3, 0x0a, 0x88, 0xd9, 0x65, 0x33, 0x1b, 0x23, 0x90, 0x6b, 0x30, 0xb0, 0xbd, 0xbd, 0x86, 0xdf, 0xca, 0x40, 0x6d, 0xfa, 0xe8, 0xb0, 0x32, 0x10, - 0x45, 0xed, 0x9f, 0x1f, 0x56, 0x46, 0x97, 0xba, 0x01, 0x8a, 0xc5, 0x66, 0xe5, 0xe4, 0x1a, 0x8c, - 0x2c, 0xb6, 0xbb, 0x61, 0x44, 0x83, 0xf2, 0x60, 0xfc, 0x91, 0x36, 0x39, 0xc8, 0x96, 0x65, 0xe4, - 0xbb, 0x30, 0xb8, 0x13, 0xd2, 0xa0, 0x3c, 0x84, 0xe3, 0x3d, 0x29, 0xc6, 0x9b, 0x81, 0x76, 0x17, - 0x6a, 0xa3, 0xec, 0x4b, 0xec, 0x86, 0x34, 0xb0, 0x11, 0x89, 0xdc, 0x84, 0x21, 0x3e, 0x68, 0xc3, - 0xb8, 0x48, 0x4d, 0xaa, 0xd9, 0xd1, 0xa6, 0xbb, 0xef, 0xd6, 0xc6, 0x8e, 0x0e, 0x2b, 0x43, 0x38, - 0x78, 0x36, 0x47, 0xbb, 0x3f, 0x38, 0x5a, 0x28, 0x15, 0xed, 0x51, 0x46, 0xcb, 0x3e, 0x0b, 0xeb, - 0xbb, 0x30, 0xae, 0x75, 0x9f, 0x5c, 0x80, 0x41, 0xf6, 0x3f, 0x2e, 0x22, 0x13, 0xbc, 0x32, 0xb6, - 0x71, 0xd8, 0x08, 0xb5, 0xfe, 0xe1, 0x34, 0x94, 0x18, 0xa5, 0xb1, 0xf2, 0xdc, 0xd4, 0x45, 0xc5, - 0xe9, 0x4a, 0xa6, 0xa8, 0xca, 0x05, 0x5d, 0x58, 0xd7, 0x41, 0xd5, 0x2e, 0x16, 0xa1, 0x89, 0xa3, - 0xc3, 0xca, 0x68, 0x57, 0xc0, 0xe2, 0xb6, 0x91, 0x3a, 0x8c, 0x2c, 0x7f, 0xd3, 0x71, 0x03, 0x1a, - 0xa2, 0x68, 0xc7, 0x17, 0xe6, 0x6f, 0xf2, 0xed, 0xf2, 0xa6, 0xdc, 0x2e, 0x6f, 0x6e, 0xcb, 0xed, - 0xb2, 0x76, 0x51, 0x2c, 0xc6, 0x67, 0x28, 0x27, 0x89, 0xe7, 0xc7, 0x6f, 0xff, 0x45, 0xa5, 0x60, - 0x4b, 0x4e, 0xe4, 0x4d, 0x18, 0xbe, 0xeb, 0x07, 0x07, 0x4e, 0x24, 0xc6, 0x60, 0xe6, 0xe8, 0xb0, - 0x52, 0x7a, 0x8c, 0x10, 0x6d, 0x4a, 0x09, 0x1c, 0x72, 0x17, 0xa6, 0x6c, 0xbf, 0x1b, 0xd1, 0x6d, - 0x5f, 0x8e, 0xdc, 0x10, 0x52, 0x5d, 0x3a, 0x3a, 0xac, 0xcc, 0x07, 0xac, 0xa4, 0x11, 0xf9, 0x0d, - 0x31, 0x84, 0x1a, 0x7d, 0x82, 0x8a, 0x2c, 0xc3, 0x54, 0x15, 0x57, 0x6f, 0x21, 0x35, 0x3e, 0x5e, - 0x63, 0xb5, 0x8b, 0x47, 0x87, 0x95, 0x73, 0x0e, 0x96, 0x34, 0x02, 0x51, 0xa4, 0xb3, 0x31, 0x89, - 0xc8, 0x06, 0x9c, 0x79, 0xd0, 0x7d, 0x44, 0x03, 0x8f, 0x46, 0x34, 0x94, 0x2d, 0x1a, 0xc1, 0x16, - 0x5d, 0x3e, 0x3a, 0xac, 0x5c, 0x78, 0xa2, 0x0a, 0x33, 0xda, 0x94, 0x26, 0x25, 0x14, 0x4e, 0x8b, - 0x86, 0x2e, 0x39, 0x91, 0xf3, 0xc8, 0x09, 0x29, 0x2e, 0x4a, 0xe3, 0x0b, 0x67, 0xb9, 0x88, 0x6f, - 0x26, 0x4a, 0x6b, 0x57, 0x85, 0x94, 0xcf, 0xab, 0xbe, 0xb7, 0x44, 0x91, 0x56, 0x51, 0x92, 0x27, - 0x5b, 0x9b, 0xd5, 0xbe, 0x33, 0x86, 0xad, 0xc5, 0xb5, 0x59, 0xed, 0x3b, 0xfa, 0xaa, 0xa5, 0x76, - 0xa0, 0x35, 0x18, 0xda, 0x61, 0xbb, 0x33, 0xae, 0x59, 0x53, 0x0b, 0x57, 0x44, 0x8b, 0x92, 0xf3, - 0xef, 0x26, 0xfb, 0x81, 0x88, 0xf8, 0xe5, 0x9d, 0xc6, 0x1d, 0x5d, 0xdf, 0x8b, 0xb1, 0x8c, 0x7c, - 0x06, 0x20, 0x5a, 0x55, 0xed, 0x74, 0xca, 0xe3, 0xd8, 0xc9, 0x33, 0x66, 0x27, 0xab, 0x9d, 0x4e, - 0xed, 0x92, 0xe8, 0xdf, 0x59, 0xd5, 0x3f, 0xa7, 0xd3, 0xd1, 0xb8, 0x69, 0x4c, 0xc8, 0x27, 0x30, - 0x81, 0x4b, 0x9a, 0x1c, 0xd1, 0x09, 0x1c, 0xd1, 0xf3, 0x47, 0x87, 0x95, 0x39, 0x5c, 0xad, 0x32, - 0xc6, 0xd3, 0x20, 0x20, 0xbf, 0x06, 0xb3, 0x82, 0xdd, 0x43, 0xd7, 0x6b, 0xf9, 0xcf, 0xc2, 0x25, - 0x1a, 0x3e, 0x89, 0xfc, 0x0e, 0x2e, 0x7f, 0xe3, 0x0b, 0x17, 0xcc, 0xe6, 0x99, 0x38, 0xb5, 0x1b, - 0xa2, 0xa5, 0x96, 0x6a, 0xe9, 0x33, 0x8e, 0xd0, 0x68, 0x71, 0x0c, 0x7d, 0x81, 0xcc, 0x64, 0x41, - 0x56, 0xe1, 0xf4, 0x4e, 0x48, 0x8d, 0x3e, 0x4c, 0xe1, 0xfe, 0x50, 0x61, 0x23, 0xdc, 0x0d, 0x69, - 0x23, 0xaf, 0x1f, 0x49, 0x3a, 0x62, 0x03, 0x59, 0x0a, 0xfc, 0x4e, 0x62, 0x8e, 0x9f, 0x46, 0x89, - 0x58, 0x47, 0x87, 0x95, 0x4b, 0xad, 0xc0, 0xef, 0x34, 0xf2, 0x27, 0x7a, 0x06, 0x35, 0xf9, 0x21, - 0x9c, 0x5d, 0xf4, 0x3d, 0x8f, 0x36, 0xd9, 0x0a, 0xba, 0xe4, 0x3a, 0x7b, 0x9e, 0x1f, 0x46, 0x6e, - 0x73, 0x75, 0xa9, 0x5c, 0x8a, 0xb7, 0x87, 0xa6, 0xc2, 0x68, 0xb4, 0x14, 0x8a, 0xb9, 0x3d, 0xe4, - 0x70, 0x21, 0x5f, 0xc1, 0xa4, 0xa8, 0x8b, 0x06, 0x38, 0x35, 0xcf, 0xf4, 0x9e, 0x68, 0x0a, 0x99, - 0x6f, 0xf4, 0x81, 0xfc, 0xc9, 0x55, 0x27, 0x93, 0x17, 0xf9, 0x1a, 0xc6, 0xd7, 0xef, 0x56, 0x6d, - 0x1a, 0x76, 0x7c, 0x2f, 0xa4, 0x65, 0x82, 0x23, 0x7a, 0x49, 0xb0, 0x5e, 0xbf, 0x5b, 0xad, 0x76, - 0xa3, 0x7d, 0xea, 0x45, 0x6e, 0xd3, 0x89, 0xa8, 0xc4, 0xaa, 0xcd, 0xb3, 0x99, 0x77, 0xf0, 0xd8, - 0x69, 0x04, 0x02, 0xa2, 0xf5, 0x42, 0x67, 0x47, 0xe6, 0x61, 0xb4, 0x5e, 0x5f, 0x59, 0xf3, 0xf7, - 0x5c, 0xaf, 0x3c, 0xcd, 0x84, 0x61, 0xab, 0xdf, 0xe4, 0x31, 0xcc, 0x6a, 0x67, 0x83, 0x06, 0xfb, - 0x9f, 0x1e, 0x50, 0x2f, 0x2a, 0xcf, 0x60, 0x1b, 0xbe, 0xa7, 0x0e, 0x37, 0x37, 0xf5, 0x23, 0xc4, - 0xd3, 0x3b, 0x37, 0xab, 0xf1, 0xcf, 0xba, 0x24, 0xaa, 0x15, 0xcb, 0x05, 0x7b, 0xc6, 0xc9, 0x28, - 0x21, 0xdb, 0x30, 0xb2, 0xd5, 0x0d, 0x3a, 0x7e, 0x48, 0xcb, 0xb3, 0x28, 0xb8, 0xab, 0xbd, 0xbe, - 0x50, 0x81, 0x5a, 0x9b, 0x65, 0x4b, 0x74, 0x87, 0xff, 0xd0, 0x7a, 0x27, 0x59, 0x91, 0x4f, 0x61, - 0xa2, 0x5e, 0x5f, 0x89, 0x37, 0x94, 0xb3, 0xb8, 0xa1, 0x5c, 0x38, 0x3a, 0xac, 0x94, 0x99, 0x4a, - 0x15, 0x6f, 0x2a, 0xfa, 0x57, 0xa5, 0x53, 0x30, 0x0e, 0xdb, 0x6b, 0xf5, 0x98, 0xc3, 0x5c, 0xcc, - 0x81, 0x29, 0x73, 0xd9, 0x1c, 0x74, 0x0a, 0xf2, 0xcf, 0x0b, 0x70, 0x59, 0x67, 0x99, 0x25, 0x98, - 0xf2, 0xb9, 0x17, 0x91, 0xe6, 0xc2, 0xd1, 0x61, 0xe5, 0xa6, 0xd9, 0x8f, 0x46, 0xe6, 0x60, 0x69, - 0x6d, 0xeb, 0xdb, 0x14, 0x6c, 0xaf, 0xde, 0x81, 0xcc, 0xf6, 0xce, 0xbf, 0x70, 0x7b, 0x4d, 0xa9, - 0xf5, 0x6f, 0x6f, 0xbf, 0xa6, 0x58, 0x9f, 0xc3, 0x98, 0x5a, 0xb4, 0xc9, 0x08, 0x0c, 0x54, 0xdb, - 0xed, 0xd2, 0x29, 0xf6, 0x47, 0xbd, 0xbe, 0x52, 0x2a, 0x90, 0x29, 0x80, 0x78, 0xa7, 0x2a, 0x15, - 0xc9, 0x04, 0x8c, 0xca, 0x9d, 0xa4, 0x34, 0x80, 0xf8, 0x9d, 0x4e, 0x69, 0x90, 0x10, 0x98, 0x32, - 0xd7, 0xb3, 0xd2, 0x90, 0xf5, 0x3b, 0x05, 0x18, 0x53, 0xdf, 0x21, 0x39, 0x0d, 0xe3, 0x3b, 0x1b, - 0xf5, 0xad, 0xe5, 0xc5, 0xd5, 0xbb, 0xab, 0xcb, 0x4b, 0xa5, 0x53, 0xe4, 0x22, 0x9c, 0xdb, 0xae, - 0xaf, 0x34, 0x96, 0x6a, 0x8d, 0xb5, 0xcd, 0xc5, 0xea, 0x5a, 0x63, 0xcb, 0xde, 0xfc, 0xfc, 0x8b, - 0xc6, 0xf6, 0xce, 0xc6, 0xc6, 0xf2, 0x5a, 0xa9, 0x40, 0xca, 0x30, 0xc3, 0x8a, 0x1f, 0xec, 0xd4, - 0x96, 0x75, 0x84, 0x52, 0x91, 0x5c, 0x81, 0x8b, 0x59, 0x25, 0x8d, 0x95, 0xe5, 0xea, 0xd2, 0xda, - 0x72, 0xbd, 0x5e, 0x1a, 0x20, 0x73, 0x30, 0xcd, 0x50, 0xaa, 0x5b, 0x5b, 0x06, 0xed, 0xa0, 0xd5, - 0x86, 0x71, 0xed, 0x03, 0x20, 0x17, 0xa0, 0xbc, 0xb8, 0x6c, 0x6f, 0x37, 0xb6, 0x76, 0xec, 0xad, - 0xcd, 0xfa, 0x72, 0xc3, 0x6c, 0x61, 0xb2, 0x74, 0x6d, 0xf3, 0xde, 0xea, 0x46, 0x83, 0x81, 0xea, - 0xa5, 0x02, 0x6b, 0x86, 0x51, 0x5a, 0x5f, 0xdd, 0xb8, 0xb7, 0xb6, 0xdc, 0xd8, 0xa9, 0x2f, 0x0b, - 0x94, 0xa2, 0xf5, 0x1b, 0xc5, 0xd4, 0x96, 0x4e, 0x16, 0x60, 0xbc, 0xce, 0xed, 0x15, 0xb8, 0xcc, - 0xf1, 0x03, 0x22, 0xd3, 0xd1, 0x26, 0x84, 0x19, 0x83, 0xaf, 0x60, 0x3a, 0x12, 0xd3, 0xd2, 0xb6, - 0xd8, 0xd7, 0xdc, 0xf4, 0xdb, 0xba, 0x96, 0xd6, 0x11, 0x30, 0x5b, 0x95, 0x92, 0x05, 0x4d, 0x9f, - 0xe3, 0xa7, 0x45, 0x3c, 0x91, 0x48, 0x7d, 0x4e, 0xdf, 0xdb, 0x95, 0x66, 0xb7, 0x10, 0x0f, 0xa9, - 0x50, 0xc3, 0x90, 0x26, 0x43, 0x97, 0x50, 0x78, 0xe4, 0x0d, 0xa9, 0xe9, 0xf2, 0xd3, 0x1d, 0x6e, - 0xf6, 0x89, 0x73, 0x89, 0x50, 0x72, 0xad, 0x6e, 0xce, 0xc6, 0x4a, 0x3e, 0x4c, 0xce, 0x19, 0x21, - 0x0c, 0x64, 0x96, 0xd8, 0x3f, 0xed, 0x04, 0x2a, 0xa9, 0xc0, 0x10, 0x5f, 0x71, 0xb9, 0x3c, 0x50, - 0xb7, 0x6e, 0x33, 0x80, 0xcd, 0xe1, 0xd6, 0x9f, 0x0c, 0xe8, 0x4a, 0x06, 0xd3, 0xa5, 0x35, 0x79, - 0xa3, 0x2e, 0x8d, 0x72, 0x46, 0x28, 0x3b, 0x0a, 0xf2, 0xaf, 0x04, 0x8f, 0x82, 0x03, 0xf1, 0x51, - 0x50, 0x7c, 0x6a, 0xfc, 0x28, 0x18, 0xa3, 0xb0, 0x51, 0x14, 0x6a, 0x1b, 0x72, 0x1d, 0x8c, 0x47, - 0x51, 0xa8, 0x7a, 0x62, 0x14, 0x35, 0x24, 0xf2, 0x01, 0x40, 0xf5, 0x61, 0x1d, 0xcf, 0x3c, 0xf6, - 0x86, 0x50, 0x5d, 0x71, 0x93, 0x71, 0x9e, 0x85, 0xe2, 0x48, 0x15, 0xe8, 0x67, 0x46, 0x0d, 0x9b, - 0xd4, 0x60, 0xb2, 0xfa, 0x93, 0x6e, 0x40, 0x57, 0x5b, 0x6c, 0x9f, 0x8a, 0xf8, 0xe1, 0x78, 0x8c, - 0x2f, 0xa4, 0x0e, 0x2b, 0x68, 0xb8, 0xa2, 0x44, 0x63, 0x60, 0x92, 0x90, 0x4d, 0x38, 0x73, 0x6f, - 0x71, 0x4b, 0xcc, 0xab, 0x6a, 0xb3, 0xe9, 0x77, 0xbd, 0x48, 0xe8, 0xab, 0x57, 0x8e, 0x0e, 0x2b, - 0x17, 0xf7, 0x9a, 0x9d, 0x86, 0x9c, 0x83, 0x0e, 0x2f, 0xd6, 0x15, 0xd6, 0x14, 0x2d, 0xb9, 0x0a, - 0x03, 0x3b, 0xf6, 0xaa, 0x38, 0x39, 0x9f, 0x39, 0x3a, 0xac, 0x4c, 0x76, 0x03, 0x57, 0x23, 0x61, - 0xa5, 0xe4, 0x7d, 0x80, 0x6d, 0x27, 0xd8, 0xa3, 0xd1, 0x96, 0x1f, 0x44, 0xa8, 0x70, 0x4e, 0xd6, - 0xce, 0x1d, 0x1d, 0x56, 0x66, 0x23, 0x84, 0x36, 0xd8, 0xf2, 0xa7, 0x77, 0x3a, 0x46, 0xbe, 0x3f, - 0x38, 0x5a, 0x2c, 0x0d, 0xd8, 0x63, 0x75, 0x1a, 0x86, 0xfc, 0x7c, 0xd8, 0x86, 0xa9, 0x7b, 0x34, - 0x62, 0x13, 0x57, 0x9e, 0x77, 0x7a, 0x0f, 0xeb, 0x47, 0x30, 0xfe, 0xd0, 0x8d, 0xf6, 0xeb, 0xb4, - 0x19, 0xd0, 0x48, 0xda, 0x7a, 0x50, 0xe4, 0xcf, 0xdc, 0x68, 0xbf, 0x11, 0x72, 0xb8, 0xbe, 0xaf, - 0x6b, 0xe8, 0xd6, 0x32, 0x9c, 0x16, 0xb5, 0xa9, 0xe3, 0xd5, 0x82, 0xc9, 0xb0, 0x80, 0x0c, 0x71, - 0xd8, 0x75, 0x86, 0x26, 0x9b, 0x7f, 0x51, 0x84, 0xd9, 0xc5, 0x7d, 0xc7, 0xdb, 0xa3, 0x5b, 0x4e, - 0x18, 0x3e, 0xf3, 0x83, 0x96, 0xd6, 0x78, 0x3c, 0x5b, 0xa6, 0x1a, 0x8f, 0x87, 0xc9, 0x05, 0x18, - 0xdf, 0x6c, 0xb7, 0x24, 0x8d, 0x38, 0xf7, 0x62, 0x5d, 0x7e, 0xbb, 0xd5, 0xe8, 0x48, 0x5e, 0x3a, - 0x12, 0xa3, 0xd9, 0xa0, 0xcf, 0x14, 0xcd, 0x40, 0x4c, 0xe3, 0xd1, 0x67, 0x1a, 0x8d, 0x86, 0x44, - 0x96, 0xe1, 0x4c, 0x9d, 0x36, 0x7d, 0xaf, 0x75, 0xd7, 0x69, 0x46, 0x7e, 0xb0, 0xed, 0x3f, 0xa1, - 0x9e, 0x98, 0xd0, 0x78, 0x30, 0x08, 0xb1, 0xb0, 0xf1, 0x18, 0x4b, 0x1b, 0x11, 0x2b, 0xb6, 0xd3, - 0x14, 0x64, 0x13, 0x46, 0x1f, 0x0a, 0x8b, 0xa1, 0x38, 0x2c, 0x5f, 0xbb, 0xa9, 0x4c, 0x88, 0x8b, - 0x01, 0xc5, 0x59, 0xe8, 0xb4, 0xd5, 0x71, 0x5f, 0xe9, 0x59, 0xb8, 0x94, 0x49, 0x4c, 0x5b, 0x31, - 0xb1, 0x76, 0x60, 0x72, 0xab, 0xdd, 0xdd, 0x73, 0x3d, 0xb6, 0xe8, 0xd4, 0xe9, 0x8f, 0xc9, 0x12, - 0x40, 0x0c, 0x10, 0x76, 0xc0, 0x69, 0x71, 0xc4, 0x8e, 0x0b, 0x76, 0xdf, 0x12, 0x5f, 0x2e, 0x42, - 0xf0, 0x44, 0x64, 0x6b, 0x74, 0xd6, 0xff, 0x1c, 0x00, 0x22, 0x06, 0x00, 0x37, 0xc1, 0x3a, 0x8d, - 0xd8, 0xf6, 0x74, 0x16, 0x8a, 0xca, 0x5c, 0x37, 0x7c, 0x74, 0x58, 0x29, 0xba, 0x2d, 0xbb, 0xb8, - 0xba, 0x44, 0xde, 0x86, 0x21, 0x44, 0x43, 0xf9, 0x4f, 0xa9, 0xfa, 0x74, 0x0e, 0x7c, 0xf1, 0xc1, - 0xdd, 0xd7, 0xe6, 0xc8, 0xe4, 0x1d, 0x18, 0x5b, 0xa2, 0x6d, 0xba, 0xe7, 0x44, 0xbe, 0x5c, 0x4e, - 0xb8, 0x01, 0x4c, 0x02, 0xb5, 0x39, 0x17, 0x63, 0xb2, 0xe3, 0xb0, 0x4d, 0x9d, 0xd0, 0xf7, 0xf4, - 0xe3, 0x70, 0x80, 0x10, 0xfd, 0x38, 0xcc, 0x71, 0xc8, 0xdf, 0x2b, 0xc0, 0x78, 0xd5, 0xf3, 0x84, - 0x61, 0x29, 0x14, 0x52, 0x9f, 0xbd, 0xa9, 0x2c, 0xb1, 0x6b, 0xce, 0x23, 0xda, 0xde, 0x75, 0xda, - 0x5d, 0x1a, 0xd6, 0xbe, 0x66, 0x27, 0x94, 0x7f, 0x7f, 0x58, 0xf9, 0xf0, 0x04, 0xa6, 0xa2, 0xd8, - 0xa6, 0xbb, 0x1d, 0x38, 0x6e, 0x14, 0xb2, 0xaf, 0xd6, 0x89, 0x2b, 0xd4, 0xbf, 0x1b, 0xad, 0x1d, - 0xf1, 0xde, 0x30, 0xdc, 0x6f, 0x6f, 0x20, 0x07, 0x70, 0xba, 0x1a, 0x86, 0xdd, 0x03, 0x5a, 0x8f, - 0x9c, 0x20, 0xda, 0x76, 0x0f, 0x28, 0x2e, 0x48, 0xbd, 0x8d, 0x0b, 0xdf, 0xf9, 0xe9, 0x61, 0xa5, - 0xc0, 0x0e, 0x45, 0x0e, 0x92, 0x32, 0xbd, 0x27, 0x88, 0x1a, 0x91, 0xab, 0x6f, 0x6f, 0x68, 0x66, - 0x48, 0xf2, 0xb6, 0xae, 0x2a, 0x85, 0x64, 0x75, 0x29, 0x6f, 0xc4, 0xad, 0x45, 0xb8, 0x70, 0x8f, - 0x46, 0x36, 0x0d, 0x69, 0x24, 0xbf, 0x11, 0x9c, 0xe1, 0xb1, 0x71, 0x77, 0x04, 0x7f, 0x2b, 0x62, - 0x1c, 0x7e, 0xfe, 0x5d, 0xc8, 0x12, 0xeb, 0xff, 0x2a, 0x40, 0x65, 0x31, 0xa0, 0xfc, 0x3c, 0x91, - 0xc3, 0xa8, 0xf7, 0xda, 0x75, 0x01, 0x06, 0xb7, 0x9f, 0x77, 0xa4, 0x55, 0x06, 0x4b, 0xd9, 0xa0, - 0xd8, 0x08, 0x3d, 0xa6, 0x91, 0xcb, 0x7a, 0x0c, 0xb3, 0x36, 0xf5, 0xe8, 0x33, 0xe7, 0x51, 0x9b, - 0x1a, 0x76, 0xa2, 0x0a, 0x0c, 0xf1, 0x0f, 0x3d, 0xd5, 0x05, 0x0e, 0x3f, 0x99, 0xcd, 0xcd, 0x9a, - 0x84, 0xf1, 0x2d, 0xd7, 0xdb, 0x13, 0xdc, 0xad, 0xbf, 0x1c, 0x84, 0x09, 0xfe, 0x5b, 0x1c, 0x91, - 0x12, 0xdb, 0x65, 0xe1, 0x38, 0xdb, 0xe5, 0x7b, 0x30, 0xc9, 0xf6, 0x1b, 0x1a, 0xec, 0xd2, 0x80, - 0xad, 0xff, 0x42, 0x12, 0x78, 0xdc, 0x0b, 0xb1, 0xa0, 0xf1, 0x94, 0x97, 0xd8, 0x26, 0x22, 0x59, - 0x83, 0x29, 0x0e, 0xb8, 0x4b, 0x9d, 0xa8, 0x1b, 0x5b, 0xac, 0x4e, 0x8b, 0x33, 0x91, 0x04, 0xf3, - 0xa9, 0x29, 0x78, 0x3d, 0x16, 0x40, 0x3b, 0x41, 0x4b, 0x3e, 0x81, 0xd3, 0x5b, 0x81, 0xff, 0xcd, - 0x73, 0x4d, 0x41, 0xe0, 0x5f, 0x27, 0x3f, 0x3d, 0xb1, 0xa2, 0x86, 0xae, 0x26, 0x24, 0xb1, 0xc9, - 0x1b, 0x30, 0xba, 0x1a, 0xd6, 0xfc, 0xc0, 0xf5, 0xf6, 0xf0, 0x1b, 0x1d, 0xe5, 0x86, 0x7e, 0x37, - 0x6c, 0x3c, 0x42, 0xa0, 0xad, 0x8a, 0x13, 0x26, 0xe9, 0x91, 0xfe, 0x26, 0xe9, 0xdb, 0x00, 0x6b, - 0xbe, 0xd3, 0xaa, 0xb6, 0xdb, 0x8b, 0xd5, 0x10, 0x77, 0x62, 0xb1, 0x1f, 0xb5, 0x7d, 0xa7, 0xd5, - 0x70, 0xda, 0xed, 0x46, 0xd3, 0x09, 0x6d, 0x0d, 0x87, 0x7c, 0x09, 0xe7, 0x42, 0x77, 0xcf, 0xc3, - 0xce, 0x35, 0x9c, 0xf6, 0x9e, 0x1f, 0xb8, 0xd1, 0xfe, 0x41, 0x23, 0xec, 0xba, 0x11, 0xb7, 0x07, - 0x4d, 0x2d, 0x5c, 0x12, 0x8b, 0x5c, 0x5d, 0xe2, 0x55, 0x25, 0x5a, 0x9d, 0x61, 0xd9, 0x73, 0x61, - 0x76, 0x01, 0x79, 0x08, 0x93, 0x6b, 0x6e, 0x93, 0x7a, 0x21, 0x45, 0x03, 0xdf, 0x73, 0xb4, 0x16, - 0xf5, 0xfe, 0x98, 0x99, 0x10, 0x27, 0xdb, 0x3a, 0x11, 0x7e, 0xba, 0x26, 0x9f, 0xfb, 0x83, 0xa3, - 0xc3, 0xa5, 0x11, 0xfb, 0xb4, 0x00, 0x3e, 0x74, 0x02, 0xcf, 0xf5, 0xf6, 0x42, 0xeb, 0xff, 0x27, - 0x30, 0xaa, 0xc6, 0xe9, 0xa6, 0x7e, 0x52, 0x11, 0x5b, 0x33, 0x4e, 0xd9, 0xd8, 0x0e, 0x67, 0x6b, - 0x18, 0xe4, 0x1c, 0x9e, 0x5d, 0x84, 0x52, 0x30, 0xc2, 0x3e, 0x21, 0xa7, 0xd3, 0xb1, 0x19, 0x8c, - 0x2d, 0x0d, 0x4b, 0x35, 0x9c, 0x34, 0xa3, 0x7c, 0x69, 0x68, 0x3d, 0xb2, 0x8b, 0x4b, 0x35, 0xf6, - 0x4d, 0x6e, 0xae, 0x2e, 0x2d, 0xe2, 0xf8, 0x8f, 0xf2, 0x6f, 0xd2, 0x77, 0x5b, 0x4d, 0x1b, 0xa1, - 0xac, 0xb4, 0x5e, 0x5d, 0x5f, 0x13, 0x63, 0x8c, 0xa5, 0xa1, 0x73, 0xd0, 0xb6, 0x11, 0xca, 0xb4, - 0x5d, 0x6e, 0x52, 0x59, 0xf4, 0xbd, 0x28, 0xf0, 0xdb, 0x21, 0xaa, 0x70, 0xa3, 0x7c, 0x0e, 0x0a, - 0x5b, 0x4c, 0x53, 0x14, 0xd9, 0x09, 0x54, 0xf2, 0x10, 0xe6, 0xaa, 0xad, 0xa7, 0x8e, 0xd7, 0xa4, - 0x2d, 0x5e, 0xf2, 0xd0, 0x0f, 0x9e, 0x3c, 0x6e, 0xfb, 0xcf, 0x42, 0x9c, 0x24, 0xa3, 0xc2, 0x74, - 0x29, 0x50, 0xa4, 0x69, 0xe7, 0x99, 0x44, 0xb2, 0xf3, 0xa8, 0xd9, 0x3a, 0xb0, 0xd8, 0xf6, 0xbb, - 0x2d, 0x31, 0x75, 0x70, 0x1d, 0x68, 0x32, 0x80, 0xcd, 0xe1, 0x4c, 0x4a, 0x2b, 0xf5, 0x75, 0x9c, - 0x18, 0x42, 0x4a, 0xfb, 0xe1, 0x81, 0xcd, 0x60, 0xe4, 0x1a, 0x8c, 0x48, 0xc5, 0x9d, 0xdf, 0x64, - 0xa0, 0x05, 0x5d, 0x2a, 0xec, 0xb2, 0x8c, 0x7d, 0xc7, 0x36, 0x6d, 0xfa, 0x4f, 0x69, 0xf0, 0x7c, - 0xd1, 0x6f, 0x51, 0x69, 0xd6, 0x12, 0x66, 0x1b, 0x5e, 0xd0, 0x68, 0xb2, 0x12, 0xdb, 0x44, 0x64, - 0x15, 0xf0, 0x8d, 0x3b, 0x2c, 0x9f, 0x8e, 0x2b, 0xe0, 0x1b, 0x7b, 0x68, 0xcb, 0x32, 0xb2, 0x04, - 0x67, 0xaa, 0xdd, 0xc8, 0x3f, 0x70, 0x22, 0xb7, 0xb9, 0xd3, 0xd9, 0x0b, 0x1c, 0x56, 0x49, 0x09, - 0x09, 0xf0, 0x20, 0xe3, 0xc8, 0xc2, 0x46, 0x57, 0x94, 0xda, 0x69, 0x02, 0xf2, 0x2e, 0x4c, 0xac, - 0x86, 0xdc, 0x74, 0xe9, 0x84, 0xb4, 0x85, 0xf6, 0x27, 0xd1, 0x4a, 0x37, 0x6c, 0xa0, 0x21, 0xb3, - 0xc1, 0x8e, 0x3e, 0x2d, 0xdb, 0xc0, 0x23, 0x16, 0x0c, 0x57, 0xc3, 0xd0, 0x0d, 0x23, 0x34, 0x2b, - 0x8d, 0xd6, 0xe0, 0xe8, 0xb0, 0x32, 0xec, 0x20, 0xc4, 0x16, 0x25, 0xe4, 0x21, 0x8c, 0x2f, 0x51, - 0xa6, 0x39, 0x6f, 0x07, 0xdd, 0x30, 0x42, 0x23, 0xd1, 0xf8, 0xc2, 0x39, 0xb1, 0x1a, 0x69, 0x25, - 0x62, 0x2e, 0x73, 0x15, 0xb5, 0x85, 0xf0, 0x46, 0xc4, 0x0a, 0xf4, 0xad, 0x56, 0xc3, 0x67, 0xc7, - 0x02, 0x41, 0xb3, 0xe2, 0xb6, 0xd8, 0xfa, 0x32, 0x83, 0x6d, 0xc0, 0x63, 0x81, 0x58, 0xd0, 0x1a, - 0xfb, 0x58, 0xa2, 0x1f, 0x0b, 0x0c, 0x12, 0xd2, 0x4c, 0x59, 0xc3, 0x67, 0x0d, 0x8b, 0xa7, 0x59, - 0x28, 0x9b, 0x78, 0x42, 0x5b, 0xf9, 0x47, 0x30, 0xbe, 0xd8, 0x0d, 0x23, 0xff, 0x60, 0x7b, 0x9f, - 0x1e, 0x50, 0x34, 0x24, 0x89, 0xc3, 0x4f, 0x13, 0xc1, 0x8d, 0x88, 0xc1, 0xf5, 0x6e, 0x6a, 0xe8, - 0xe4, 0x33, 0x20, 0xf2, 0x14, 0x73, 0x8f, 0xcd, 0x0f, 0x8f, 0xcd, 0x65, 0xb4, 0x25, 0x8d, 0xf2, - 0xa3, 0x8b, 0x3c, 0xfc, 0x34, 0xf6, 0x54, 0xb1, 0x6e, 0xcf, 0x4c, 0x13, 0xb3, 0x06, 0xf1, 0x26, - 0xde, 0x0b, 0x9c, 0xce, 0x7e, 0xb9, 0x1c, 0x1f, 0x0d, 0x44, 0xa7, 0xf6, 0x18, 0xdc, 0x50, 0x71, - 0x62, 0x74, 0x52, 0x07, 0xe0, 0x3f, 0xd7, 0xd8, 0xc0, 0x73, 0xeb, 0x53, 0xd9, 0x90, 0x17, 0x2b, - 0x90, 0xb2, 0xc2, 0xe3, 0x8e, 0x60, 0xdb, 0x76, 0x8d, 0xd1, 0xd4, 0xd8, 0x90, 0x27, 0x50, 0xe2, - 0xbf, 0xd6, 0x7d, 0xcf, 0x8d, 0xf8, 0x7e, 0x31, 0x6f, 0x98, 0x2a, 0x93, 0xc5, 0xb2, 0x02, 0x34, - 0x11, 0x8b, 0x0a, 0x0e, 0x54, 0xa9, 0x56, 0x4d, 0x8a, 0x31, 0xd9, 0x82, 0xf1, 0xad, 0xc0, 0x6f, - 0x75, 0x9b, 0x11, 0x6a, 0x19, 0xe7, 0x71, 0xe1, 0x27, 0xa2, 0x1e, 0xad, 0x84, 0xcb, 0xa4, 0xc3, - 0x01, 0x0d, 0xb6, 0x2f, 0xe8, 0x32, 0xd1, 0x10, 0x49, 0x0d, 0x86, 0xb7, 0xfc, 0xb6, 0xdb, 0x7c, - 0x5e, 0xbe, 0x80, 0x8d, 0x9e, 0x91, 0xcc, 0x10, 0x28, 0x9b, 0x8a, 0x2a, 0x6d, 0x07, 0x41, 0xba, - 0x4a, 0xcb, 0x91, 0x48, 0x15, 0x26, 0x3f, 0x63, 0x13, 0xc6, 0xf5, 0x3d, 0xcf, 0x71, 0x03, 0x5a, - 0xbe, 0x88, 0xe3, 0x82, 0x66, 0xfc, 0x1f, 0xeb, 0x05, 0xfa, 0x74, 0x36, 0x28, 0xc8, 0x2a, 0x9c, - 0x5e, 0x0d, 0xeb, 0x51, 0xe0, 0x76, 0xe8, 0xba, 0xe3, 0x39, 0x7b, 0xb4, 0x55, 0xbe, 0x14, 0xdb, - 0xd1, 0xdd, 0xb0, 0x11, 0x62, 0x59, 0xe3, 0x80, 0x17, 0xea, 0x76, 0xf4, 0x04, 0x1d, 0xf9, 0x1c, - 0x66, 0x96, 0xbf, 0x89, 0xd8, 0x8c, 0x69, 0x57, 0xbb, 0x2d, 0x37, 0xaa, 0x47, 0x7e, 0xe0, 0xec, - 0xd1, 0x72, 0x05, 0xf9, 0xbd, 0x76, 0x74, 0x58, 0xb9, 0x4c, 0x45, 0x79, 0xc3, 0x61, 0x08, 0x8d, - 0x90, 0x63, 0xe8, 0xf7, 0xe3, 0x59, 0x1c, 0x98, 0xf4, 0xeb, 0xdd, 0x0e, 0xd3, 0xb6, 0x51, 0xfa, - 0x97, 0x0d, 0xe9, 0x6b, 0x25, 0x5c, 0xfa, 0x21, 0x07, 0xa4, 0xa4, 0xaf, 0x21, 0x12, 0x1b, 0xc8, - 0x7d, 0xdf, 0xf5, 0xaa, 0xcd, 0xc8, 0x7d, 0x4a, 0xc5, 0x89, 0x39, 0x2c, 0x5f, 0xc1, 0x96, 0xa2, - 0xcd, 0xff, 0x97, 0x7d, 0xd7, 0x6b, 0x38, 0x58, 0xdc, 0x08, 0x45, 0xb9, 0xfe, 0x8d, 0xa4, 0xa9, - 0xc9, 0x0f, 0xe1, 0xec, 0xba, 0xff, 0xc8, 0x6d, 0x53, 0xbe, 0xe4, 0x70, 0xb1, 0xa0, 0xfd, 0xd2, - 0x42, 0xbe, 0x68, 0xf3, 0x3f, 0x40, 0x8c, 0x86, 0x58, 0xad, 0x0e, 0x14, 0x8e, 0x6e, 0xf3, 0xcf, - 0xe6, 0x42, 0x96, 0x61, 0x02, 0xbf, 0xcb, 0x36, 0xfe, 0x0c, 0xcb, 0x57, 0xf1, 0x48, 0x77, 0x25, - 0xa1, 0xa5, 0xdd, 0x5c, 0xd6, 0x70, 0x96, 0xbd, 0x28, 0x78, 0x6e, 0x1b, 0x64, 0xe4, 0x63, 0x98, - 0x4f, 0x4e, 0xef, 0x45, 0xdf, 0x7b, 0xec, 0xee, 0x75, 0x03, 0xda, 0x2a, 0xbf, 0xc6, 0x9a, 0x6a, - 0xf7, 0xc0, 0x20, 0x5f, 0xc1, 0x2c, 0xee, 0x75, 0x55, 0xcf, 0xf7, 0x9e, 0x1f, 0xb8, 0x3f, 0x41, - 0xfd, 0x99, 0xa9, 0xbd, 0xd7, 0x50, 0xed, 0xbd, 0x76, 0x74, 0x58, 0xb9, 0x82, 0x7b, 0x62, 0xc3, - 0xd1, 0x31, 0x12, 0x56, 0xeb, 0x6c, 0x1e, 0xf3, 0x0f, 0xe1, 0x4c, 0xaa, 0xfd, 0xa4, 0x04, 0x03, - 0x4f, 0xc4, 0xfd, 0xec, 0x98, 0xcd, 0xfe, 0x24, 0x6f, 0xc2, 0xd0, 0x53, 0x76, 0x50, 0x43, 0x75, - 0x24, 0xbe, 0xf1, 0xd3, 0x48, 0x57, 0xbd, 0xc7, 0xbe, 0xcd, 0x91, 0x3e, 0x28, 0xbe, 0x57, 0xb8, - 0x3f, 0x38, 0x3a, 0x5e, 0x9a, 0xe0, 0xd7, 0xea, 0xf7, 0x07, 0x47, 0x27, 0x4b, 0x53, 0x56, 0x15, - 0x4e, 0x27, 0xf0, 0x49, 0x19, 0x46, 0xa8, 0xc7, 0x94, 0xff, 0x16, 0x57, 0x88, 0x6c, 0xf9, 0x93, - 0xcc, 0xc0, 0x50, 0xdb, 0x3d, 0x70, 0x23, 0xac, 0x70, 0xc8, 0xe6, 0x3f, 0xac, 0xdf, 0x2d, 0x00, - 0x49, 0xef, 0x47, 0xe4, 0x56, 0x82, 0x0d, 0x57, 0x7d, 0x05, 0x48, 0xbf, 0x38, 0x90, 0xdc, 0x3f, - 0x83, 0x69, 0x3e, 0x21, 0xe4, 0xce, 0xa9, 0xd5, 0xc5, 0x57, 0xec, 0x8c, 0x62, 0xdd, 0xd8, 0x24, - 0x8a, 0x71, 0x9f, 0x5d, 0xc3, 0xa6, 0x75, 0x61, 0x36, 0x73, 0x27, 0x22, 0xeb, 0x30, 0x7b, 0xe0, - 0x7b, 0xd1, 0x7e, 0xfb, 0xb9, 0xdc, 0x88, 0x44, 0x6d, 0x05, 0xac, 0x0d, 0x17, 0xdf, 0x4c, 0x04, - 0x7b, 0x5a, 0x80, 0x05, 0x47, 0xac, 0x47, 0x18, 0x9d, 0x64, 0x4f, 0x2c, 0x1b, 0xce, 0xa4, 0x16, - 0x74, 0xf2, 0x03, 0x98, 0x68, 0xe2, 0xe1, 0xce, 0xa8, 0x89, 0x6f, 0x67, 0x1a, 0x5c, 0xff, 0x56, - 0x39, 0x9c, 0x77, 0xe5, 0x9f, 0x14, 0x60, 0x2e, 0x67, 0x29, 0x3f, 0xb9, 0xa8, 0xbf, 0x80, 0xb3, - 0x07, 0xce, 0x37, 0x8d, 0x00, 0xcf, 0xee, 0x8d, 0xc0, 0xf1, 0x12, 0xd2, 0xc6, 0x65, 0x2a, 0x1b, - 0x43, 0xf7, 0x6d, 0x3a, 0x70, 0xbe, 0xb1, 0x11, 0xc1, 0x66, 0xe5, 0xbc, 0x9d, 0x9f, 0xc2, 0xa4, - 0xb1, 0x78, 0x9f, 0xb8, 0x71, 0xd6, 0x1d, 0x38, 0xb3, 0x44, 0xdb, 0x34, 0xa2, 0xc7, 0xb6, 0xd9, - 0x59, 0x5b, 0x00, 0x75, 0x7a, 0xe0, 0x74, 0xf6, 0x7d, 0xa6, 0xd4, 0xd7, 0xf4, 0x5f, 0xc2, 0xe6, - 0x43, 0xe4, 0xf1, 0x44, 0x16, 0xec, 0xbe, 0xc5, 0x15, 0xfd, 0x50, 0x61, 0xda, 0x1a, 0x95, 0xf5, - 0x6f, 0x8a, 0x40, 0xc4, 0xea, 0x1b, 0x50, 0xe7, 0x40, 0x36, 0xe3, 0x7d, 0x98, 0xe0, 0x27, 0x74, - 0x0e, 0xc6, 0xe6, 0x8c, 0x2f, 0x4c, 0x8b, 0x2f, 0x4f, 0x2f, 0x5a, 0x39, 0x65, 0x1b, 0xa8, 0x8c, - 0xd4, 0xa6, 0xdc, 0xb4, 0x80, 0xa4, 0x45, 0x83, 0x54, 0x2f, 0x62, 0xa4, 0xfa, 0x6f, 0xf2, 0x09, - 0x4c, 0x2d, 0xfa, 0x07, 0x1d, 0x26, 0x13, 0x41, 0x3c, 0x20, 0xcc, 0x36, 0xa2, 0x5e, 0xa3, 0x70, - 0xe5, 0x94, 0x9d, 0x40, 0x27, 0x1b, 0x30, 0x7d, 0xb7, 0xdd, 0x0d, 0xf7, 0xab, 0x5e, 0x6b, 0xb1, - 0xed, 0x87, 0x92, 0xcb, 0xa0, 0x38, 0x69, 0x89, 0xb5, 0x33, 0x8d, 0xb1, 0x72, 0xca, 0xce, 0x22, - 0x24, 0xd7, 0x60, 0x68, 0xf9, 0x29, 0x5b, 0xd3, 0xa5, 0x87, 0x8b, 0x70, 0xc0, 0xdb, 0xf4, 0xe8, - 0xe6, 0xe3, 0x95, 0x53, 0x36, 0x2f, 0xad, 0x8d, 0xc1, 0x88, 0x3c, 0xdd, 0xdf, 0x62, 0xfa, 0xb6, - 0x12, 0x67, 0x3d, 0x72, 0xa2, 0x6e, 0x48, 0xe6, 0x61, 0x74, 0xa7, 0xc3, 0x0e, 0x9d, 0xd2, 0x2c, - 0x62, 0xab, 0xdf, 0xd6, 0x9b, 0xa6, 0xa4, 0xc9, 0x05, 0x88, 0x6d, 0xba, 0x02, 0x59, 0x33, 0xf2, - 0xae, 0x98, 0xc2, 0xed, 0x8d, 0x6d, 0xd4, 0x5b, 0x4c, 0xd4, 0x5b, 0x4a, 0xca, 0xda, 0x9a, 0xcd, - 0x14, 0x9e, 0xf5, 0x39, 0x5c, 0xda, 0xe9, 0x84, 0x34, 0x88, 0xaa, 0x9d, 0x4e, 0xdb, 0x6d, 0xf2, - 0x1b, 0x32, 0xb4, 0x02, 0xc8, 0xc9, 0xf2, 0x2e, 0x0c, 0x73, 0x80, 0x98, 0x26, 0x72, 0x0e, 0x56, - 0x3b, 0x1d, 0x61, 0x7b, 0x78, 0x8b, 0x6b, 0xfe, 0xdc, 0x9a, 0x60, 0x0b, 0x6c, 0xeb, 0xb7, 0x0b, - 0x70, 0x89, 0x7f, 0x01, 0xb9, 0xac, 0xbf, 0x0b, 0x63, 0xe8, 0xff, 0xd6, 0x71, 0x9a, 0xf2, 0x9b, - 0xe0, 0x8e, 0x80, 0x12, 0x68, 0xc7, 0xe5, 0x9a, 0x67, 0x61, 0x31, 0xdf, 0xb3, 0x50, 0x7e, 0x60, - 0x03, 0x99, 0x1f, 0xd8, 0x67, 0x60, 0x89, 0x16, 0xb5, 0xdb, 0xa9, 0x46, 0x85, 0x2f, 0xd2, 0x2a, - 0xeb, 0xbf, 0x14, 0x61, 0xee, 0x1e, 0xf5, 0x68, 0xe0, 0x60, 0x3f, 0x0d, 0x2b, 0x97, 0xee, 0x61, - 0x54, 0xe8, 0xe9, 0x61, 0x54, 0x91, 0x76, 0xc3, 0x22, 0xda, 0x0d, 0x53, 0xee, 0x52, 0xec, 0x2c, - 0xba, 0x63, 0xaf, 0x8a, 0x6e, 0xe1, 0x59, 0xb4, 0x1b, 0xb8, 0xfc, 0x96, 0x61, 0x35, 0xf6, 0x4e, - 0x1a, 0xec, 0x6b, 0x73, 0x98, 0x16, 0xde, 0x1a, 0x23, 0xc2, 0x3b, 0xc9, 0xf4, 0x49, 0xda, 0x80, - 0x61, 0x6e, 0xee, 0xc4, 0xbb, 0xad, 0xf1, 0x85, 0x1b, 0xe2, 0x9b, 0xca, 0xe9, 0xa0, 0xb0, 0x8d, - 0xe2, 0xc6, 0xce, 0xa7, 0x40, 0x84, 0x00, 0x5b, 0x70, 0x99, 0xff, 0x0c, 0xc6, 0x35, 0x94, 0xe3, - 0xec, 0xfd, 0xca, 0xec, 0xca, 0xd4, 0x51, 0x6f, 0x8f, 0x5b, 0x70, 0xb5, 0xbd, 0xdf, 0xfa, 0x10, - 0xca, 0xe9, 0xd6, 0x08, 0x53, 0x5b, 0x3f, 0xcb, 0x9e, 0xb5, 0x04, 0x33, 0xf7, 0x68, 0x84, 0x13, - 0x17, 0x3f, 0x22, 0xcd, 0xcb, 0x2e, 0xf1, 0x9d, 0xc9, 0x55, 0x15, 0x81, 0x6c, 0x82, 0x69, 0x5f, - 0x69, 0x1d, 0x66, 0x13, 0x5c, 0x44, 0xfd, 0x1f, 0xc0, 0x88, 0x00, 0xa9, 0x15, 0x55, 0xb8, 0xea, - 0xd2, 0x47, 0xa2, 0x60, 0x77, 0x81, 0xcf, 0x5b, 0xc1, 0xd9, 0x96, 0x04, 0xd6, 0x3e, 0x9c, 0x65, - 0xdb, 0x6c, 0xcc, 0x55, 0x4d, 0xc7, 0xf3, 0x30, 0xd6, 0x61, 0x8a, 0x42, 0xe8, 0xfe, 0x84, 0x4f, - 0xa3, 0x21, 0x7b, 0x94, 0x01, 0xea, 0xee, 0x4f, 0x28, 0xb9, 0x08, 0x80, 0x85, 0xd8, 0x4d, 0xb1, - 0x0a, 0x20, 0x3a, 0x37, 0x65, 0x12, 0x40, 0x1f, 0x3d, 0x3e, 0x6f, 0x6c, 0xfc, 0xdb, 0x0a, 0x60, - 0x2e, 0x55, 0x93, 0xe8, 0xc0, 0x2d, 0x18, 0x95, 0xfa, 0x71, 0xe2, 0x92, 0x41, 0xef, 0x81, 0xad, - 0x90, 0xc8, 0xeb, 0x70, 0xda, 0xa3, 0xdf, 0x44, 0x8d, 0x54, 0x1b, 0x26, 0x19, 0x78, 0x4b, 0xb6, - 0xc3, 0xfa, 0x25, 0x34, 0x2c, 0xd7, 0x3d, 0xff, 0xd9, 0xe3, 0xb6, 0xf3, 0x84, 0xa6, 0x2a, 0xfe, - 0x01, 0x8c, 0xd6, 0xfb, 0x57, 0xcc, 0x3f, 0x1f, 0x59, 0xb9, 0xad, 0x48, 0xac, 0x36, 0xcc, 0xb3, - 0x2e, 0xd5, 0xab, 0xeb, 0x6b, 0xab, 0xad, 0xad, 0x6f, 0x5b, 0x80, 0x4f, 0xe1, 0x7c, 0x66, 0x6d, - 0xdf, 0xb6, 0x10, 0xff, 0x68, 0x10, 0xe6, 0xf8, 0x66, 0x92, 0x9e, 0xc1, 0xc7, 0x5f, 0x6a, 0x7e, - 0x21, 0xf7, 0xbd, 0xb7, 0x33, 0xee, 0x7b, 0x91, 0x44, 0xbf, 0xef, 0x35, 0x6e, 0x79, 0xdf, 0xcb, - 0xbe, 0xe5, 0x45, 0x23, 0x94, 0x79, 0xcb, 0x9b, 0xbc, 0xdb, 0x5d, 0xce, 0xbf, 0xdb, 0xc5, 0x8b, - 0xa7, 0x8c, 0xbb, 0xdd, 0xac, 0x1b, 0xdd, 0x84, 0xa3, 0xd4, 0xe8, 0xab, 0x75, 0x94, 0x7a, 0x1d, - 0x46, 0xaa, 0x9d, 0x8e, 0xe6, 0x78, 0x88, 0xc3, 0xe3, 0x74, 0x3a, 0x5c, 0x78, 0xb2, 0x50, 0xae, - 0xf3, 0x90, 0xb1, 0xce, 0xbf, 0x0f, 0xb0, 0x88, 0xcf, 0x23, 0x70, 0xe0, 0xc6, 0x11, 0x03, 0x35, - 0x7c, 0xfe, 0x68, 0x02, 0x07, 0x4e, 0x37, 0xaf, 0xc4, 0xc8, 0x5c, 0xb1, 0xb7, 0x76, 0xa1, 0x9c, - 0x9e, 0x3e, 0xaf, 0x60, 0xe9, 0xfa, 0xc3, 0x02, 0x5c, 0x14, 0x4a, 0x4e, 0xe2, 0x03, 0x3f, 0xf9, - 0xec, 0x7c, 0x07, 0x26, 0x04, 0xed, 0x76, 0xfc, 0x21, 0xf0, 0x0b, 0x76, 0xb9, 0x18, 0xf3, 0x15, - 0xdd, 0x40, 0x23, 0xef, 0xc0, 0x28, 0xfe, 0x11, 0x5f, 0x0c, 0x31, 0xc9, 0x8c, 0x21, 0x6a, 0x23, - 0x79, 0x3d, 0xa4, 0x50, 0xad, 0xaf, 0xe1, 0x52, 0x5e, 0xc3, 0x5f, 0x81, 0x5c, 0xfe, 0x65, 0x01, - 0xce, 0x0b, 0xf6, 0xc6, 0x52, 0xf1, 0x42, 0xbb, 0xce, 0x09, 0xdc, 0x95, 0xef, 0xc3, 0x38, 0xab, - 0x50, 0xb6, 0x7b, 0x40, 0x6c, 0xad, 0xe2, 0xe4, 0x10, 0x97, 0x2c, 0x39, 0x91, 0x23, 0xdc, 0x6f, - 0x9c, 0x83, 0xb6, 0xb4, 0x8c, 0xd8, 0x3a, 0xb1, 0xf5, 0x25, 0x5c, 0xc8, 0xee, 0xc2, 0x2b, 0x90, - 0xcf, 0x7d, 0x98, 0xcf, 0xd8, 0x14, 0x5e, 0x6c, 0x4f, 0xfe, 0x02, 0xce, 0x67, 0xf2, 0x7a, 0x05, - 0xcd, 0x5c, 0x61, 0x1a, 0x47, 0xf4, 0x0a, 0x86, 0xd0, 0x7a, 0x08, 0xe7, 0x32, 0x38, 0xbd, 0x82, - 0x26, 0xde, 0x83, 0x39, 0xa5, 0x69, 0xbf, 0x54, 0x0b, 0xd7, 0xe1, 0x22, 0x67, 0xf4, 0x6a, 0x46, - 0xe5, 0x01, 0x9c, 0x17, 0xec, 0x5e, 0x81, 0xf4, 0x56, 0xe0, 0x42, 0x7c, 0xa0, 0xce, 0xd0, 0x93, - 0x8e, 0xbd, 0xc8, 0x58, 0x6b, 0x70, 0x39, 0xe6, 0x94, 0xa3, 0x34, 0x1c, 0x9f, 0x1b, 0x57, 0x07, - 0xe3, 0x51, 0x7a, 0x25, 0x23, 0xfa, 0x10, 0xce, 0x1a, 0x4c, 0x5f, 0x99, 0xaa, 0xb4, 0x0a, 0xd3, - 0x9c, 0xb1, 0xa9, 0x3a, 0x2f, 0xe8, 0xaa, 0xf3, 0xf8, 0xc2, 0x99, 0x98, 0x25, 0x82, 0x77, 0xdf, - 0xca, 0xd0, 0xa6, 0xd7, 0x51, 0x9b, 0x96, 0x28, 0x71, 0x0b, 0xdf, 0x81, 0x61, 0x0e, 0x11, 0xed, - 0xcb, 0x60, 0xc6, 0x0f, 0x0b, 0x9c, 0x4c, 0x20, 0x5b, 0x3f, 0x84, 0x8b, 0xfc, 0x24, 0x1a, 0x5f, - 0x54, 0x9a, 0xa7, 0xc5, 0x1f, 0x24, 0x0e, 0xa2, 0xe7, 0x04, 0xdf, 0x24, 0x7e, 0xce, 0x79, 0xf4, - 0x91, 0x9c, 0xdb, 0x79, 0xfc, 0x8f, 0xf5, 0x74, 0x4d, 0x1e, 0x30, 0x8b, 0x99, 0x07, 0xcc, 0xab, - 0x70, 0x45, 0x1d, 0x30, 0x93, 0xd5, 0xc8, 0xa9, 0x65, 0x7d, 0x09, 0xe7, 0x79, 0x47, 0xa5, 0x4b, - 0xa1, 0xd9, 0x8c, 0x0f, 0x13, 0xdd, 0x9c, 0x13, 0xdd, 0x34, 0xb1, 0x73, 0x3a, 0xf9, 0xb7, 0x0a, - 0xf2, 0x93, 0xcb, 0x66, 0xfe, 0x8b, 0x3e, 0x71, 0x6f, 0x40, 0x45, 0x09, 0xc4, 0x6c, 0xd1, 0x8b, - 0x1d, 0xb7, 0xd7, 0x61, 0x56, 0x67, 0xe3, 0x36, 0xe9, 0xee, 0x1d, 0xbc, 0x41, 0x7a, 0x9b, 0x7d, - 0x16, 0x08, 0x90, 0xd3, 0xae, 0x9c, 0x21, 0x37, 0xc4, 0xb7, 0x15, 0xa6, 0xd5, 0x80, 0x0b, 0xe9, - 0xa1, 0x70, 0x9b, 0xf2, 0x3d, 0x01, 0xf9, 0x84, 0x7d, 0xc2, 0x08, 0x11, 0x83, 0x91, 0xcb, 0x54, - 0x7e, 0xc7, 0x9c, 0x5c, 0x52, 0x59, 0x96, 0x5c, 0x6a, 0x12, 0xfd, 0x67, 0xb5, 0xcb, 0xf9, 0xf0, - 0xab, 0x40, 0x64, 0xd1, 0x62, 0xdd, 0x96, 0x55, 0x9f, 0x83, 0x81, 0xc5, 0xba, 0x2d, 0x1e, 0x32, - 0xa1, 0x26, 0xd8, 0x0c, 0x03, 0x9b, 0xc1, 0x92, 0x1a, 0x79, 0xf1, 0x18, 0x1a, 0xf9, 0xfd, 0xc1, - 0xd1, 0x81, 0xd2, 0xa0, 0x4d, 0xea, 0xee, 0x9e, 0xf7, 0xd0, 0x8d, 0xf6, 0x55, 0x85, 0x55, 0xeb, - 0x2b, 0x98, 0x36, 0xaa, 0x17, 0x5f, 0x71, 0xcf, 0x17, 0x58, 0x4c, 0x9f, 0x5d, 0xac, 0xa2, 0x5b, - 0x0d, 0x9a, 0x2c, 0x26, 0xf8, 0x7a, 0xd3, 0x74, 0x1a, 0xf8, 0xbc, 0xd7, 0x96, 0x85, 0xd6, 0x3f, - 0x1e, 0xd4, 0xb8, 0x6b, 0xef, 0xda, 0x7a, 0xf4, 0xee, 0x0e, 0x00, 0x9f, 0x21, 0x5a, 0xe7, 0x98, - 0x02, 0x38, 0x2e, 0xbc, 0x55, 0xf8, 0x92, 0x6c, 0x6b, 0x48, 0xc7, 0x7d, 0xf7, 0x26, 0xfc, 0x8f, - 0x39, 0x91, 0x7c, 0xea, 0xa9, 0xfc, 0x8f, 0x05, 0xeb, 0xd0, 0xd6, 0x91, 0xc8, 0x0f, 0x93, 0x8f, - 0x33, 0x86, 0xf0, 0xc2, 0xea, 0x35, 0x79, 0x83, 0x9d, 0xee, 0xdb, 0xc9, 0xde, 0x67, 0x3c, 0x83, - 0x59, 0x46, 0xeb, 0x3e, 0xc6, 0x83, 0xc5, 0xf2, 0x37, 0x11, 0xf5, 0xf8, 0xda, 0x3e, 0x8c, 0xf5, - 0x5c, 0xeb, 0x51, 0x4f, 0x8c, 0x2c, 0xec, 0xef, 0x31, 0x9f, 0x06, 0x55, 0x65, 0x76, 0x36, 0x7f, - 0x9c, 0x44, 0xf6, 0xda, 0xb2, 0xd7, 0xea, 0xf8, 0xae, 0x3a, 0x30, 0xf1, 0x49, 0x14, 0xb4, 0x1b, - 0x54, 0xc0, 0x6d, 0x1d, 0xc9, 0x7a, 0xbd, 0xa7, 0x57, 0xfb, 0x28, 0x0c, 0x6e, 0x2f, 0x6e, 0xaf, - 0x95, 0x0a, 0xd6, 0x2d, 0x00, 0xad, 0x26, 0x80, 0xe1, 0x8d, 0x4d, 0x7b, 0xbd, 0xba, 0x56, 0x3a, - 0x45, 0x66, 0xe1, 0xcc, 0xc3, 0xd5, 0x8d, 0xa5, 0xcd, 0x87, 0xf5, 0x46, 0x7d, 0xbd, 0x6a, 0x6f, - 0x2f, 0x56, 0xed, 0xa5, 0x52, 0xc1, 0xfa, 0x1a, 0x66, 0xcc, 0x1e, 0xbe, 0xd2, 0x49, 0x18, 0xc1, - 0xb4, 0xd2, 0x67, 0xee, 0x3f, 0xdc, 0xd6, 0x3c, 0x5a, 0xc5, 0xe1, 0x2f, 0xe9, 0x99, 0x25, 0x8e, - 0x89, 0xe2, 0x33, 0xd2, 0x90, 0xc8, 0x1b, 0x5c, 0x2d, 0x48, 0xbe, 0x5c, 0x66, 0x6a, 0x41, 0x23, - 0xd6, 0x0b, 0x70, 0xe9, 0xfb, 0x3e, 0xcc, 0x98, 0xb5, 0x1e, 0xd7, 0x4a, 0xf5, 0x1a, 0xba, 0xfa, - 0x6a, 0xcf, 0x9a, 0x08, 0xd1, 0xaf, 0x0d, 0xc4, 0xca, 0xfa, 0x7d, 0x28, 0x09, 0xac, 0x78, 0xe7, - 0xbd, 0x2a, 0xcd, 0x88, 0x85, 0x8c, 0x47, 0x98, 0xd2, 0x29, 0xdd, 0x87, 0x12, 0x5b, 0x31, 0x05, - 0x25, 0xaf, 0x60, 0x06, 0x86, 0xd6, 0xe2, 0xeb, 0x1c, 0x9b, 0xff, 0xc0, 0xd7, 0x3d, 0x91, 0x13, - 0x44, 0xd2, 0x0f, 0x6e, 0xcc, 0x56, 0xbf, 0xc9, 0x1b, 0x30, 0x7c, 0xd7, 0x6d, 0x47, 0xc2, 0x34, - 0x12, 0x6f, 0xf2, 0x8c, 0x2d, 0x2f, 0xb0, 0x05, 0x82, 0x65, 0xc3, 0x19, 0xad, 0xc2, 0x13, 0x34, - 0x95, 0x94, 0x61, 0x64, 0x83, 0x7e, 0xa3, 0xd5, 0x2f, 0x7f, 0x5a, 0xef, 0xc2, 0x19, 0xe1, 0x63, - 0xa8, 0x89, 0xe9, 0x8a, 0x78, 0x2b, 0x5e, 0x30, 0x1e, 0xac, 0x0a, 0x96, 0x58, 0xc4, 0xe8, 0x76, - 0x3a, 0xad, 0x17, 0xa4, 0x63, 0x1b, 0xc5, 0x09, 0xe9, 0xbe, 0x23, 0x6f, 0x81, 0xfa, 0x0d, 0xe7, - 0xff, 0x53, 0x84, 0x72, 0xc2, 0xca, 0xb0, 0xb8, 0xef, 0xb4, 0xdb, 0xd4, 0xdb, 0xa3, 0xe4, 0x3a, - 0x0c, 0x6e, 0x6f, 0x6e, 0x6f, 0x09, 0x2b, 0xa9, 0xf4, 0x2e, 0x60, 0x20, 0x85, 0x63, 0x23, 0x06, - 0x79, 0x00, 0x67, 0xa4, 0x17, 0xb1, 0x2a, 0x12, 0x23, 0x74, 0xb1, 0xb7, 0x4f, 0x72, 0x9a, 0x8e, - 0xbc, 0x2d, 0x4c, 0x22, 0x3f, 0xee, 0xba, 0x01, 0x6d, 0xa1, 0xe5, 0x27, 0xbe, 0xaa, 0xd7, 0x4a, - 0x6c, 0x1d, 0x8d, 0x7c, 0x1f, 0x26, 0xea, 0xf5, 0xcd, 0xb8, 0xf6, 0x21, 0xe3, 0x86, 0x48, 0x2f, - 0xb2, 0x0d, 0x44, 0xfe, 0x24, 0xd8, 0xfa, 0xa3, 0x02, 0xcc, 0xe5, 0x98, 0x5b, 0xc8, 0x1b, 0x86, - 0x1c, 0xa6, 0x35, 0x39, 0x48, 0x94, 0x95, 0x53, 0x42, 0x10, 0x8b, 0x9a, 0x4f, 0xf6, 0xc0, 0x09, - 0x7c, 0xb2, 0x57, 0x4e, 0xc5, 0x7e, 0xd8, 0xe4, 0x75, 0x18, 0xa8, 0xd7, 0x37, 0x85, 0x59, 0x9d, - 0xc4, 0x3d, 0xd0, 0x90, 0x19, 0x42, 0x0d, 0x60, 0x54, 0x82, 0xac, 0xd3, 0x30, 0x69, 0x0c, 0x8c, - 0x65, 0xc1, 0x84, 0xde, 0x42, 0x36, 0xfa, 0x8b, 0x7e, 0x4b, 0x8d, 0x3e, 0xfb, 0xdb, 0xfa, 0x55, - 0x53, 0x66, 0xe4, 0x22, 0x80, 0xbc, 0xaf, 0x75, 0x5b, 0xf2, 0xe6, 0x47, 0x40, 0x56, 0x5b, 0xe4, - 0x0a, 0x4c, 0x04, 0xb4, 0xe5, 0x06, 0xb4, 0x19, 0x35, 0xba, 0x81, 0x78, 0x18, 0x63, 0x8f, 0x4b, - 0xd8, 0x4e, 0xd0, 0x26, 0xdf, 0x85, 0x61, 0x7e, 0x91, 0x2c, 0x7a, 0x2f, 0x0f, 0x09, 0xf5, 0xfa, - 0xe6, 0xfa, 0xdd, 0x2a, 0xbf, 0xe8, 0xb6, 0x05, 0x8a, 0x55, 0x83, 0x71, 0xad, 0x57, 0xfd, 0x6a, - 0x9f, 0x81, 0x21, 0xdd, 0x4a, 0xc9, 0x7f, 0x58, 0xbf, 0x53, 0x80, 0x19, 0x9c, 0x06, 0x7b, 0x2e, - 0xdb, 0x1e, 0xe2, 0xbe, 0x2c, 0x18, 0x83, 0x76, 0xc1, 0x18, 0xb4, 0x04, 0xae, 0x1a, 0xbd, 0x0f, - 0x52, 0xa3, 0x77, 0x21, 0x6b, 0xf4, 0x70, 0x09, 0x70, 0x7d, 0x4f, 0x1f, 0x34, 0xfd, 0xba, 0xee, - 0x77, 0x0b, 0x30, 0xad, 0xb5, 0x49, 0x75, 0xf0, 0x8e, 0xd1, 0xa4, 0xf3, 0x19, 0x4d, 0x4a, 0xcd, - 0xa7, 0x5a, 0xaa, 0x45, 0xaf, 0xf5, 0x6a, 0x51, 0xd6, 0x74, 0x32, 0xa6, 0xc9, 0x5f, 0x16, 0x60, - 0x36, 0x53, 0x06, 0xe4, 0x2c, 0xd3, 0xff, 0x9b, 0x01, 0x8d, 0x84, 0xe4, 0xc5, 0x2f, 0x06, 0x5f, - 0x0d, 0xc3, 0x2e, 0x0d, 0x84, 0xdc, 0xc5, 0x2f, 0xf2, 0x1a, 0x4c, 0x6e, 0xd1, 0xc0, 0xf5, 0x5b, - 0xfc, 0x61, 0x02, 0xf7, 0xf8, 0x9d, 0xb4, 0x4d, 0x20, 0xb9, 0x00, 0x63, 0xca, 0x63, 0x95, 0xdb, - 0x70, 0xed, 0x18, 0xc0, 0x78, 0x2f, 0xb9, 0x7b, 0xfc, 0xe2, 0x87, 0x11, 0x8b, 0x5f, 0x6c, 0x01, - 0x96, 0x16, 0xd5, 0x61, 0xbe, 0x00, 0x4b, 0x73, 0xe9, 0x59, 0x18, 0xfe, 0xcc, 0xc6, 0x79, 0x8c, - 0x31, 0x27, 0x6c, 0xf1, 0x8b, 0x4c, 0xa1, 0x6b, 0x39, 0xbe, 0x8b, 0x41, 0x97, 0xf2, 0x0f, 0x60, - 0x26, 0x4b, 0xae, 0x59, 0x5f, 0x81, 0xa0, 0x2d, 0x2a, 0xda, 0x2f, 0x61, 0xba, 0xda, 0x6a, 0xc5, - 0xd3, 0x95, 0x8f, 0x2a, 0x5f, 0x27, 0xb8, 0x4d, 0x53, 0xa8, 0xb5, 0x83, 0xab, 0x9e, 0x1b, 0xd9, - 0xd3, 0xcb, 0xdf, 0xb8, 0x61, 0xe4, 0x7a, 0x7b, 0x9a, 0xe1, 0xd5, 0x3e, 0xbb, 0x41, 0x9f, 0x65, - 0x4c, 0x01, 0xa6, 0x71, 0x98, 0xbc, 0x39, 0x3c, 0x83, 0xf9, 0x8c, 0xc6, 0x36, 0x5e, 0xba, 0xe6, - 0x4c, 0xbe, 0x71, 0xc1, 0x40, 0xb5, 0xf9, 0xc4, 0xfa, 0x3e, 0x9c, 0xe5, 0xcb, 0x7e, 0xaf, 0xc6, - 0x8b, 0x66, 0xeb, 0x76, 0x62, 0xeb, 0x3d, 0x69, 0xc9, 0xe9, 0xd9, 0x32, 0x7b, 0xc2, 0x68, 0x0b, - 0x56, 0xf9, 0x9f, 0x0b, 0x30, 0x9f, 0x20, 0xad, 0x3f, 0xf7, 0x9a, 0x72, 0xcf, 0x79, 0x3d, 0xe9, - 0xba, 0x8f, 0xba, 0x12, 0x37, 0x90, 0xba, 0x2d, 0xe5, 0xbd, 0x4f, 0x6e, 0x01, 0x70, 0x62, 0x4d, - 0xc5, 0xc1, 0xeb, 0x01, 0xe1, 0xe5, 0x84, 0x4a, 0x8e, 0x86, 0x42, 0xba, 0x90, 0x25, 0x77, 0xf1, - 0x8d, 0xf4, 0xb3, 0x9f, 0x63, 0x9c, 0x15, 0x2a, 0xc8, 0x1b, 0x39, 0x86, 0xf4, 0x2c, 0xfe, 0xd6, - 0xdf, 0x1e, 0x80, 0x39, 0x7d, 0x00, 0x5f, 0xa4, 0xaf, 0x5b, 0x30, 0xbe, 0xe8, 0x7b, 0x11, 0xfd, - 0x26, 0xd2, 0xe2, 0x5c, 0x10, 0xe5, 0x8d, 0xa0, 0x4a, 0x84, 0x7a, 0xcd, 0x01, 0x0d, 0xa6, 0xeb, - 0x19, 0xde, 0x9a, 0x31, 0x22, 0x59, 0x84, 0xc9, 0x0d, 0xfa, 0x2c, 0x25, 0x40, 0xf4, 0x18, 0xf5, - 0xe8, 0xb3, 0x86, 0x26, 0x44, 0xdd, 0x8d, 0xcf, 0xa0, 0x21, 0x8f, 0x60, 0x4a, 0x4e, 0x2e, 0x43, - 0x98, 0xf3, 0xfa, 0xce, 0x6b, 0x4e, 0x67, 0x1e, 0x07, 0x82, 0xd5, 0x90, 0x23, 0xc3, 0x04, 0x47, - 0xd6, 0x75, 0x5e, 0x23, 0x0f, 0x6d, 0x60, 0x6e, 0xed, 0x5a, 0x89, 0xe1, 0x8f, 0x9b, 0x0c, 0x69, - 0xa0, 0xb3, 0xb0, 0xb6, 0xa0, 0x9c, 0x1e, 0x0f, 0x51, 0xdb, 0xdb, 0x30, 0xcc, 0xa1, 0x42, 0x55, - 0x92, 0x21, 0x8c, 0x14, 0x36, 0xb7, 0x65, 0xb4, 0xc4, 0xae, 0xc4, 0x61, 0xd6, 0x0a, 0xda, 0x97, - 0x14, 0x8e, 0x52, 0x56, 0x6f, 0x27, 0x87, 0x17, 0x5d, 0x9d, 0xe5, 0xf0, 0xea, 0xbe, 0x38, 0xf2, - 0x49, 0xca, 0x22, 0x9a, 0xe8, 0x74, 0x4e, 0xa2, 0x61, 0x37, 0x60, 0x44, 0x80, 0x12, 0xc1, 0x95, - 0xe2, 0xcf, 0x4f, 0x22, 0x58, 0x1f, 0xc0, 0x39, 0xb4, 0x17, 0xba, 0xde, 0x5e, 0x9b, 0xee, 0x84, - 0xc6, 0xa3, 0x92, 0x7e, 0x9f, 0xf5, 0x47, 0x30, 0x9f, 0x45, 0xdb, 0xf7, 0xcb, 0xe6, 0xe1, 0x4e, - 0xfe, 0xbc, 0x08, 0x33, 0xab, 0xa1, 0xae, 0x70, 0xa9, 0x90, 0x27, 0x19, 0x61, 0x38, 0x50, 0x26, - 0x2b, 0xa7, 0xb2, 0xc2, 0x6c, 0xbc, 0xad, 0x3d, 0x77, 0x2d, 0xf6, 0x8a, 0xaf, 0xc1, 0xb6, 0x2d, - 0xf5, 0xe0, 0xf5, 0x75, 0x18, 0xdc, 0x60, 0x4b, 0xf5, 0x80, 0x18, 0x3b, 0x4e, 0xc1, 0x40, 0xf8, - 0xdc, 0x94, 0x6d, 0x91, 0xec, 0x07, 0xb9, 0x9b, 0x7a, 0xd4, 0x3a, 0xd8, 0x3f, 0x7e, 0xc4, 0xca, - 0xa9, 0xd4, 0xfb, 0xd6, 0x77, 0x61, 0xbc, 0xda, 0x3a, 0xe0, 0x2e, 0x99, 0xbe, 0x97, 0xf8, 0x2c, - 0xb5, 0x92, 0x95, 0x53, 0xb6, 0x8e, 0x48, 0xae, 0xf1, 0x57, 0x0d, 0xc3, 0x39, 0x31, 0x35, 0x98, - 0xb2, 0x56, 0xed, 0x74, 0x6a, 0xa3, 0x30, 0xcc, 0x1f, 0x5a, 0x5a, 0x5f, 0xc2, 0xbc, 0x70, 0xe4, - 0xe1, 0xd6, 0x51, 0x74, 0xf7, 0x09, 0x63, 0x5f, 0xad, 0x5e, 0xce, 0x37, 0x97, 0x00, 0xf0, 0x2c, - 0xb4, 0xea, 0xb5, 0xe8, 0x37, 0xc2, 0x93, 0x50, 0x83, 0x58, 0xef, 0xc0, 0x98, 0x92, 0x10, 0x2a, - 0xfc, 0xda, 0x66, 0x87, 0xd2, 0x9a, 0x31, 0x5e, 0xf1, 0xca, 0xa7, 0xbb, 0xe7, 0x8c, 0xbe, 0x8b, - 0x28, 0x39, 0xfc, 0x84, 0xe0, 0xc2, 0x6c, 0x62, 0x12, 0xc4, 0x41, 0x18, 0x94, 0x8e, 0xce, 0x5d, - 0x1d, 0xd5, 0xef, 0xa4, 0x0a, 0x5f, 0x3c, 0x96, 0x0a, 0x6f, 0xfd, 0xb3, 0x22, 0x1e, 0x2e, 0x53, - 0xf2, 0x48, 0xd8, 0xe9, 0x74, 0x5b, 0x61, 0x0d, 0xc6, 0xb0, 0xf7, 0x4b, 0xf2, 0xc1, 0x60, 0x6f, - 0x3f, 0x94, 0xd1, 0x9f, 0x1e, 0x56, 0x4e, 0xa1, 0xf3, 0x49, 0x4c, 0x46, 0x3e, 0x86, 0x91, 0x65, - 0xaf, 0x85, 0x1c, 0x06, 0x4e, 0xc0, 0x41, 0x12, 0xb1, 0x31, 0xc1, 0x26, 0x6f, 0xb3, 0x4f, 0x98, - 0x9b, 0x77, 0x6c, 0x0d, 0x12, 0x9f, 0x72, 0x87, 0xf2, 0x4e, 0xb9, 0xc3, 0x89, 0x53, 0xae, 0x05, - 0x43, 0x9b, 0x41, 0x4b, 0xc4, 0xb6, 0x99, 0x5a, 0x98, 0x10, 0x82, 0x43, 0x98, 0xcd, 0x8b, 0xac, - 0xff, 0x56, 0x80, 0xb9, 0x7b, 0x34, 0xca, 0x9c, 0x43, 0x86, 0x54, 0x0a, 0x2f, 0x2d, 0x95, 0xe2, - 0x8b, 0x48, 0x45, 0xf5, 0x7a, 0x20, 0xaf, 0xd7, 0x83, 0x79, 0xbd, 0x1e, 0xca, 0xef, 0xf5, 0x3d, - 0x18, 0xe6, 0x5d, 0x65, 0x27, 0xf9, 0xd5, 0x88, 0x1e, 0xc4, 0x27, 0x79, 0xdd, 0x8b, 0xce, 0xe6, - 0x65, 0x4c, 0x91, 0x5c, 0x73, 0x42, 0xfd, 0x24, 0x2f, 0x7e, 0x5a, 0x3f, 0xc2, 0xa7, 0xc6, 0x6b, - 0x7e, 0xf3, 0x89, 0x66, 0x11, 0x1e, 0xe1, 0x5f, 0x68, 0xf2, 0x06, 0x81, 0x61, 0xf1, 0x12, 0x5b, - 0x62, 0x90, 0xcb, 0x30, 0xbe, 0xea, 0xdd, 0xf5, 0x83, 0x26, 0xdd, 0xf4, 0xda, 0x9c, 0xfb, 0xa8, - 0xad, 0x83, 0x84, 0xa5, 0x44, 0xd4, 0x10, 0x9b, 0x1f, 0x10, 0x90, 0x30, 0x3f, 0x30, 0xd8, 0xee, - 0x82, 0xcd, 0xcb, 0x84, 0x21, 0x86, 0xfd, 0xdd, 0xeb, 0xe4, 0xae, 0x8e, 0xf8, 0xfd, 0x10, 0x1f, - 0xc1, 0x39, 0x9b, 0x76, 0xda, 0x0e, 0xd3, 0xe9, 0x0e, 0x7c, 0x8e, 0xaf, 0xfa, 0x7c, 0x39, 0xe3, - 0x99, 0xa0, 0xe9, 0x53, 0xa1, 0x9a, 0x5c, 0xec, 0xd1, 0xe4, 0x03, 0xb8, 0x72, 0x8f, 0x46, 0xe6, - 0x82, 0x1a, 0xdb, 0x9b, 0x45, 0xe7, 0x57, 0x60, 0x34, 0x34, 0x6d, 0xe5, 0xf2, 0xd9, 0x5b, 0x26, - 0xe1, 0xee, 0x5b, 0xf2, 0x36, 0x49, 0xf0, 0x51, 0x7f, 0x59, 0x9f, 0x40, 0x25, 0xaf, 0xba, 0xe3, - 0xb9, 0xbc, 0xba, 0x70, 0x39, 0x9f, 0x81, 0x68, 0xee, 0x32, 0x48, 0xbb, 0xba, 0xf8, 0x84, 0xfa, - 0xb5, 0xd6, 0x34, 0xc5, 0x8b, 0x3f, 0xac, 0x9a, 0x74, 0xfe, 0x7b, 0x89, 0xe6, 0x36, 0xf0, 0xca, - 0xda, 0x64, 0x10, 0xcb, 0xb5, 0x0a, 0xa3, 0x12, 0x26, 0xe4, 0x3a, 0x97, 0xd9, 0x52, 0x29, 0xd0, - 0x96, 0x64, 0xa0, 0xc8, 0xac, 0x1f, 0xc9, 0xeb, 0x1b, 0x93, 0xe2, 0x78, 0xef, 0x66, 0x8f, 0x73, - 0x5f, 0x63, 0xf9, 0x70, 0xce, 0xe4, 0xad, 0x9b, 0xe5, 0x4b, 0x9a, 0x59, 0x9e, 0x5b, 0xe3, 0x2f, - 0x9b, 0x66, 0x62, 0x61, 0x69, 0xd0, 0x40, 0xe4, 0x92, 0x6e, 0x7c, 0x9f, 0x48, 0x3f, 0xc4, 0xbd, - 0x0d, 0xf3, 0x59, 0x15, 0x6a, 0xe7, 0x40, 0x65, 0xe1, 0x15, 0xfa, 0xce, 0x12, 0x5c, 0x92, 0xd1, - 0xa5, 0x7c, 0x3f, 0x0a, 0xa3, 0xc0, 0xe9, 0xd4, 0x9b, 0x81, 0xdb, 0x89, 0xa9, 0x2c, 0x18, 0xe6, - 0x10, 0x21, 0x09, 0x7e, 0x15, 0xc6, 0x71, 0x44, 0x89, 0xf5, 0xeb, 0x05, 0xb0, 0x0c, 0x3f, 0x2d, - 0x1c, 0xe7, 0xad, 0xc0, 0x7f, 0xea, 0xb6, 0xb4, 0xeb, 0xa7, 0x37, 0x0c, 0xd3, 0x27, 0x7f, 0x93, - 0x98, 0x74, 0x11, 0x17, 0x6b, 0xe6, 0xed, 0x84, 0x39, 0x92, 0x2b, 0x9e, 0xe8, 0xbb, 0x65, 0x3e, - 0x88, 0x50, 0x66, 0xca, 0xff, 0x51, 0x80, 0xab, 0x3d, 0xdb, 0x20, 0xfa, 0xf3, 0x08, 0x4a, 0xc9, - 0x32, 0x31, 0x83, 0x2a, 0x9a, 0xdf, 0x46, 0x9a, 0xc3, 0xee, 0x1d, 0xee, 0x87, 0x2e, 0xfd, 0x9b, - 0x3a, 0x8a, 0x73, 0x8a, 0xdf, 0xc9, 0x5b, 0x8f, 0xf1, 0x2b, 0xfc, 0xc8, 0x69, 0x2f, 0xa2, 0x01, - 0x60, 0x20, 0x7e, 0x53, 0x10, 0x31, 0x68, 0x23, 0x19, 0x26, 0x43, 0x43, 0xb6, 0x3e, 0xc5, 0xef, - 0x3a, 0xbb, 0xd1, 0xc7, 0xfb, 0xd4, 0x16, 0xe1, 0x6a, 0xc2, 0x77, 0xe0, 0x05, 0x98, 0x44, 0x30, - 0xcb, 0xc4, 0xcf, 0x74, 0xef, 0x7b, 0x81, 0xdf, 0xed, 0xfc, 0x62, 0x46, 0xfd, 0x8f, 0x0b, 0xdc, - 0x99, 0x53, 0xaf, 0x56, 0x0c, 0xf4, 0x22, 0x40, 0x0c, 0x4d, 0x38, 0xf5, 0xab, 0x82, 0xdd, 0x3b, - 0xfc, 0xc8, 0x8d, 0xb7, 0x0a, 0x7b, 0x9c, 0x81, 0x46, 0xf6, 0x8b, 0x1d, 0xc9, 0xb7, 0xd0, 0x61, - 0x40, 0xd5, 0x7e, 0x3c, 0xb9, 0xbf, 0x2b, 0xed, 0x1f, 0x27, 0xa4, 0xdb, 0x87, 0x19, 0xb6, 0x02, - 0x54, 0xbb, 0xd1, 0xbe, 0x1f, 0xb8, 0x91, 0x7c, 0x9e, 0x42, 0xb6, 0x44, 0x44, 0x00, 0x4e, 0xf5, - 0xd1, 0xcf, 0x0f, 0x2b, 0xef, 0x9d, 0x24, 0xee, 0xa7, 0xe4, 0xb9, 0xad, 0xa2, 0x08, 0x58, 0x73, - 0x30, 0xb0, 0x68, 0xaf, 0xe1, 0x82, 0x67, 0xaf, 0xa9, 0x05, 0xcf, 0x5e, 0xb3, 0xfe, 0xaa, 0x08, - 0x15, 0x1e, 0xb3, 0x04, 0xfd, 0x4c, 0x62, 0xab, 0x85, 0xe6, 0xb8, 0x72, 0x5c, 0x03, 0x43, 0x22, - 0x26, 0x49, 0xf1, 0x38, 0x31, 0x49, 0x7e, 0x05, 0x72, 0x4c, 0x56, 0xc7, 0xb0, 0x02, 0x7c, 0xe7, - 0xe8, 0xb0, 0x72, 0x35, 0xb6, 0x02, 0xf0, 0xd2, 0x2c, 0x73, 0x40, 0x4e, 0x15, 0x69, 0xfb, 0xc5, - 0xe0, 0x0b, 0xd8, 0x2f, 0x6e, 0xc3, 0x08, 0x1e, 0x66, 0x56, 0xb7, 0x84, 0xe7, 0x27, 0x4e, 0x4f, - 0x8c, 0x50, 0xd4, 0x70, 0xf5, 0x70, 0x80, 0x12, 0xcd, 0xfa, 0xfb, 0x45, 0xb8, 0x9c, 0x2f, 0x73, - 0xd1, 0xb6, 0x25, 0x80, 0xd8, 0xc3, 0xa5, 0x97, 0x47, 0x0d, 0x7e, 0x3b, 0xcf, 0xe8, 0x23, 0xe5, - 0xd1, 0xa6, 0xd1, 0x31, 0xdd, 0x47, 0xbe, 0xb4, 0x4e, 0x5c, 0xa7, 0x18, 0x0f, 0xb0, 0x45, 0x34, - 0x5b, 0x01, 0x32, 0xa2, 0xd9, 0x0a, 0x18, 0x79, 0x04, 0x73, 0x5b, 0x81, 0xfb, 0xd4, 0x89, 0xe8, - 0x03, 0xfa, 0x9c, 0x3f, 0x16, 0x5a, 0x16, 0x2f, 0x84, 0xf8, 0xf3, 0xf9, 0xeb, 0x47, 0x87, 0x95, - 0xd7, 0x3a, 0x1c, 0x05, 0x23, 0x96, 0xf1, 0xb7, 0x9f, 0x8d, 0xf4, 0xa3, 0xa1, 0x3c, 0x46, 0xd6, - 0xbf, 0x2e, 0xc0, 0x79, 0x54, 0xcb, 0x85, 0xd9, 0x55, 0x56, 0xfe, 0x42, 0x8e, 0x95, 0x7a, 0x07, - 0xc5, 0x5c, 0x44, 0xc7, 0x4a, 0xe3, 0x25, 0xba, 0x6d, 0xa0, 0x91, 0x55, 0x18, 0x17, 0xbf, 0xf1, - 0xfb, 0x1b, 0xc0, 0x03, 0xc1, 0xac, 0xb6, 0x60, 0xe1, 0x54, 0xe7, 0xa6, 0x22, 0x9c, 0xd8, 0x82, - 0x19, 0x3e, 0xd8, 0xb4, 0x75, 0x5a, 0xeb, 0x67, 0x45, 0xb8, 0xb0, 0x4b, 0x03, 0xf7, 0xf1, 0xf3, - 0x9c, 0xce, 0x6c, 0xc2, 0x8c, 0x04, 0xf1, 0xb8, 0x25, 0xc6, 0x27, 0xc6, 0xe3, 0x59, 0xca, 0xa6, - 0x8a, 0xc0, 0x27, 0xf2, 0x8b, 0xcb, 0x24, 0x3c, 0x81, 0xcb, 0xe4, 0xdb, 0x30, 0x9a, 0x88, 0x1c, - 0x84, 0xe3, 0x2f, 0xbf, 0xd0, 0x78, 0xa8, 0x56, 0x4e, 0xd9, 0x0a, 0x93, 0xfc, 0x66, 0xfe, 0x55, - 0x95, 0x30, 0x7d, 0xf4, 0xb3, 0x7f, 0xe2, 0x07, 0xcb, 0x3e, 0x56, 0x47, 0x2b, 0xcd, 0xf8, 0x60, - 0x57, 0x4e, 0xd9, 0x79, 0x35, 0xd5, 0xc6, 0x61, 0xac, 0x8a, 0xf7, 0x76, 0xec, 0xe4, 0xfe, 0xdf, - 0x8b, 0x70, 0x49, 0x3e, 0xfc, 0xc9, 0x11, 0xf3, 0xe7, 0x30, 0x27, 0x41, 0xd5, 0x0e, 0x53, 0x18, - 0x68, 0xcb, 0x94, 0x34, 0x8f, 0x29, 0x2b, 0x25, 0xed, 0x08, 0x9c, 0x58, 0xd8, 0x79, 0xe4, 0xaf, - 0xc6, 0xfa, 0xf9, 0x71, 0x56, 0x1c, 0x27, 0xb4, 0x42, 0xea, 0x6b, 0xa6, 0x21, 0x1a, 0x63, 0xfd, - 0x6c, 0xa5, 0xac, 0xa7, 0x83, 0x2f, 0x6b, 0x3d, 0x5d, 0x39, 0x95, 0xb4, 0x9f, 0xd6, 0xa6, 0x60, - 0x62, 0x83, 0x3e, 0x8b, 0xe5, 0xfe, 0x7f, 0x17, 0x12, 0xa1, 0x1e, 0x98, 0x86, 0xc1, 0x63, 0x3e, - 0x14, 0xe2, 0x50, 0x40, 0x18, 0xea, 0x41, 0xd7, 0x30, 0x38, 0xea, 0x2a, 0x8c, 0xf0, 0xcb, 0xec, - 0xd6, 0x31, 0x4e, 0xf8, 0xea, 0x05, 0x0f, 0x7f, 0x56, 0xd9, 0xe2, 0x87, 0x7d, 0x41, 0x6f, 0x3d, - 0x80, 0x2b, 0xc2, 0xc7, 0xdb, 0x1c, 0x7c, 0xac, 0xe8, 0x84, 0xdb, 0x97, 0xe5, 0xc0, 0xa5, 0x7b, - 0x34, 0xb9, 0xf4, 0x18, 0x2f, 0x9c, 0x3e, 0x81, 0xd3, 0x06, 0x5c, 0x71, 0x44, 0xad, 0x54, 0xcd, - 0x21, 0xc5, 0x3a, 0x89, 0x6d, 0x5d, 0xce, 0xaa, 0x42, 0x6f, 0xac, 0x45, 0x31, 0x38, 0x6c, 0x10, - 0x5f, 0xb1, 0x85, 0x27, 0x58, 0xf5, 0xae, 0x6b, 0xdf, 0x35, 0x5f, 0xf1, 0x78, 0xf4, 0x40, 0xb9, - 0xf3, 0xaa, 0x52, 0x6b, 0xd2, 0xb8, 0x0b, 0xb0, 0xa6, 0x60, 0x42, 0x16, 0xb5, 0x69, 0x18, 0x5a, - 0xff, 0x61, 0x08, 0x2c, 0x21, 0xd8, 0xac, 0x1b, 0x7a, 0x29, 0x8f, 0x47, 0xa9, 0xc6, 0x8a, 0x8d, - 0xea, 0xac, 0x1e, 0x93, 0x34, 0x2e, 0xe5, 0x33, 0x0f, 0xf5, 0xbc, 0x66, 0x0c, 0x35, 0x66, 0x5e, - 0xaa, 0xf7, 0x5f, 0xe5, 0x2c, 0x93, 0xfc, 0x63, 0xc3, 0x27, 0xdb, 0x39, 0xcb, 0xa4, 0xc1, 0x37, - 0x7b, 0xc9, 0xb4, 0xcd, 0x2b, 0x91, 0x81, 0x17, 0xb9, 0x12, 0x61, 0x5f, 0xa4, 0x7e, 0x29, 0xb2, - 0x63, 0xca, 0x52, 0x7c, 0x8f, 0xf2, 0xf6, 0x5e, 0x2f, 0x12, 0x11, 0x17, 0x34, 0x88, 0xc1, 0xd5, - 0x60, 0x43, 0x5c, 0x28, 0x69, 0x36, 0xcb, 0xc5, 0x7d, 0xda, 0x7c, 0x22, 0x6c, 0xc5, 0xf2, 0x42, - 0x37, 0xcb, 0x66, 0xce, 0xe3, 0x53, 0xf3, 0xef, 0x9c, 0x17, 0x34, 0x9a, 0x8c, 0x54, 0x8f, 0x18, - 0x91, 0x64, 0x4b, 0x7e, 0x02, 0xd3, 0x6a, 0xa8, 0x13, 0x2e, 0x5a, 0xe3, 0x0b, 0xaf, 0xc5, 0xa1, - 0x4c, 0x0f, 0x1e, 0x3b, 0x37, 0x9f, 0xde, 0xb9, 0x99, 0x81, 0xcb, 0x03, 0x11, 0x34, 0x65, 0x81, - 0xe6, 0x9f, 0xa5, 0x5f, 0x74, 0x65, 0x10, 0x92, 0x2f, 0x60, 0xa6, 0x5e, 0xdf, 0xe4, 0x8f, 0x39, - 0x6c, 0x79, 0xc1, 0x6f, 0xaf, 0x09, 0x87, 0x2d, 0x1c, 0xee, 0x30, 0xf4, 0x1b, 0xe2, 0x11, 0x88, - 0xee, 0x16, 0xa0, 0x87, 0x62, 0xc8, 0x62, 0xa1, 0xdf, 0x94, 0xff, 0x5d, 0xf5, 0x56, 0x81, 0xa9, - 0x22, 0x6e, 0x9b, 0x8a, 0x47, 0x47, 0x72, 0x62, 0xe7, 0xdc, 0xf2, 0x15, 0xbe, 0xe5, 0x5b, 0xbe, - 0x3f, 0x28, 0xca, 0x17, 0x1a, 0xe9, 0x8b, 0xd6, 0x13, 0x5f, 0xf6, 0x65, 0xf6, 0xe0, 0x58, 0xfb, - 0x74, 0x66, 0xe3, 0x48, 0x4d, 0x5e, 0x95, 0xaa, 0x60, 0x65, 0x53, 0xea, 0xda, 0x21, 0x2e, 0x30, - 0x6e, 0x4f, 0x51, 0x2b, 0xd2, 0xa8, 0x92, 0xf7, 0x70, 0x03, 0x2f, 0x7f, 0x0f, 0xf7, 0x5f, 0xc7, - 0xe0, 0xcc, 0x96, 0xb3, 0xe7, 0x7a, 0x6c, 0x3f, 0xb0, 0x69, 0xe8, 0x77, 0x83, 0x26, 0x25, 0x55, - 0x98, 0x32, 0xdd, 0x6f, 0xfb, 0x38, 0x17, 0xb3, 0x2d, 0xcf, 0x84, 0x91, 0x05, 0x18, 0x53, 0x4f, - 0x7e, 0xc5, 0x3e, 0x95, 0xf1, 0x14, 0x78, 0xe5, 0x94, 0x1d, 0xa3, 0x91, 0xf7, 0x8d, 0xab, 0xa3, - 0xd3, 0xea, 0xf5, 0x3a, 0xe2, 0x2e, 0x70, 0xff, 0x48, 0xcf, 0x6f, 0x99, 0x7b, 0x2d, 0xbf, 0x1f, - 0xf9, 0x51, 0xea, 0x36, 0x69, 0xc8, 0x68, 0x71, 0xca, 0xa4, 0x86, 0x6a, 0x46, 0x6e, 0xec, 0xf1, - 0x8c, 0x7b, 0xa6, 0x2f, 0x61, 0xfc, 0x41, 0xf7, 0x11, 0x95, 0xf7, 0x66, 0xc3, 0x62, 0xeb, 0x4d, - 0x3a, 0x95, 0x8b, 0xf2, 0xdd, 0xb7, 0xf8, 0x18, 0x3c, 0xe9, 0x3e, 0xa2, 0xe9, 0xa0, 0xf6, 0x6c, - 0xcd, 0xd3, 0x98, 0x91, 0x7d, 0x28, 0x25, 0xfd, 0xbf, 0x45, 0x78, 0xbf, 0x1e, 0x5e, 0xeb, 0x18, - 0xa6, 0x45, 0x0b, 0x9d, 0xcf, 0xbd, 0x52, 0x8d, 0x4a, 0x52, 0x5c, 0xc9, 0xaf, 0xc2, 0x6c, 0xa6, - 0x41, 0x53, 0xbd, 0x60, 0xeb, 0x6d, 0x2b, 0xc5, 0x05, 0x24, 0x21, 0x35, 0xf9, 0x5c, 0xce, 0xa8, - 0x39, 0xbb, 0x16, 0xd2, 0x82, 0xd3, 0x09, 0xbf, 0x66, 0x91, 0x1f, 0x24, 0xdf, 0x53, 0x1a, 0xf7, - 0x3c, 0x19, 0x62, 0x37, 0xb3, 0xae, 0x24, 0x4b, 0xb2, 0x06, 0x63, 0xca, 0x92, 0x20, 0x22, 0xab, - 0x65, 0x59, 0x4d, 0xca, 0x47, 0x87, 0x95, 0x99, 0xd8, 0x6a, 0x62, 0xf0, 0x8c, 0x19, 0x90, 0x5f, - 0x83, 0x2b, 0x6a, 0x8a, 0x6e, 0x06, 0xd9, 0xf6, 0x25, 0x11, 0x9a, 0xff, 0x46, 0x72, 0x86, 0xe7, - 0xe1, 0xef, 0xde, 0xa9, 0x15, 0xcb, 0x85, 0x95, 0x53, 0x76, 0x7f, 0xd6, 0xe4, 0x37, 0x0a, 0x70, - 0x36, 0xa7, 0xd6, 0x09, 0xac, 0xb5, 0xaf, 0xd1, 0x0f, 0xcf, 0x0d, 0xf8, 0x6a, 0xcb, 0x6d, 0xc5, - 0xaf, 0x1b, 0xa5, 0xf5, 0xcf, 0xe8, 0x77, 0x4e, 0x4d, 0xe4, 0x36, 0xc0, 0x9e, 0x1b, 0x89, 0x39, - 0x86, 0x41, 0xc6, 0xd2, 0x1f, 0x28, 0x13, 0xdb, 0x9e, 0x1b, 0x89, 0x99, 0xf6, 0x26, 0x0c, 0xe3, - 0x81, 0x3d, 0x2c, 0x4f, 0xa2, 0x4a, 0x8b, 0xf1, 0x8c, 0xf0, 0x58, 0xaf, 0x6f, 0x62, 0x02, 0x87, - 0xac, 0x30, 0xd5, 0x10, 0x37, 0x51, 0xa9, 0xca, 0x89, 0xe8, 0x67, 0xe2, 0x78, 0xc1, 0x8b, 0x64, - 0x58, 0x12, 0x23, 0x6b, 0x83, 0x49, 0x56, 0x03, 0x18, 0x0d, 0xc4, 0x3a, 0x76, 0x7f, 0x70, 0x74, - 0xb0, 0x34, 0xc4, 0x3f, 0x35, 0xe9, 0x62, 0xff, 0x5b, 0xa3, 0xfc, 0x3d, 0xee, 0x8e, 0xe7, 0x3e, - 0x76, 0xe3, 0x25, 0x4f, 0x37, 0xf5, 0xc5, 0xe9, 0x93, 0x84, 0x22, 0x9e, 0x93, 0x28, 0x49, 0x59, - 0x05, 0x8b, 0x7d, 0xad, 0x82, 0x6f, 0x69, 0xf7, 0x67, 0x5a, 0x94, 0x53, 0xae, 0x70, 0x99, 0x56, - 0xb8, 0xf8, 0x62, 0xed, 0x6b, 0x18, 0xc6, 0xc0, 0xa4, 0xfc, 0x72, 0x72, 0x7c, 0xe1, 0xa6, 0x58, - 0xe8, 0x7b, 0x34, 0x9f, 0x47, 0x32, 0x15, 0x6f, 0xec, 0xb9, 0xc4, 0x11, 0x60, 0x48, 0x1c, 0x21, - 0x64, 0x1b, 0xa6, 0xb7, 0xd8, 0xfe, 0xcf, 0x1d, 0xbd, 0x3b, 0x81, 0xb0, 0x94, 0x70, 0x1b, 0x0c, - 0xea, 0x1f, 0x1d, 0x59, 0xdc, 0xa0, 0xaa, 0x5c, 0xdf, 0x82, 0x33, 0xc8, 0xc9, 0x32, 0x4c, 0xd5, - 0xa9, 0x13, 0x34, 0xf7, 0x1f, 0xd0, 0xe7, 0x4c, 0xf7, 0x32, 0x32, 0x86, 0x84, 0x58, 0xc2, 0xfa, - 0x8b, 0x45, 0xba, 0xc3, 0x89, 0x49, 0x44, 0x3e, 0x85, 0xe1, 0xba, 0x1f, 0x44, 0xb5, 0xe7, 0x62, - 0x19, 0x94, 0xd7, 0x57, 0x1c, 0x58, 0x3b, 0x27, 0xb3, 0xa6, 0x84, 0x7e, 0x10, 0x35, 0x1e, 0x19, - 0x01, 0xb2, 0x38, 0x0a, 0x79, 0x0e, 0x33, 0xe6, 0x12, 0x24, 0xfc, 0x8f, 0x47, 0x85, 0xce, 0x97, - 0xb5, 0xce, 0x71, 0x94, 0xda, 0x75, 0xc1, 0xfd, 0x72, 0x72, 0xa1, 0x7b, 0x8c, 0xe5, 0xba, 0xa2, - 0x94, 0x45, 0x4f, 0xd6, 0x31, 0xdd, 0x0c, 0xef, 0x51, 0x35, 0xe4, 0x7e, 0xcb, 0x63, 0x71, 0x08, - 0xb6, 0x2e, 0x2e, 0x63, 0x28, 0x09, 0x27, 0x4c, 0xe6, 0x28, 0xb2, 0x53, 0xa4, 0x64, 0x0b, 0xce, - 0xec, 0x84, 0x74, 0x2b, 0xa0, 0x4f, 0x5d, 0xfa, 0x4c, 0xf2, 0x83, 0x38, 0x5e, 0x15, 0xe3, 0xd7, - 0xe1, 0xa5, 0x59, 0x0c, 0xd3, 0xc4, 0xe4, 0x7d, 0x80, 0x2d, 0xd7, 0xf3, 0x68, 0x0b, 0xef, 0x40, - 0xc7, 0x91, 0x15, 0xda, 0x77, 0x3b, 0x08, 0x6d, 0xf8, 0x5e, 0x5b, 0x17, 0xa9, 0x86, 0x4c, 0x6a, - 0x30, 0xb9, 0xea, 0x35, 0xdb, 0x5d, 0xe1, 0xab, 0x10, 0xe2, 0x12, 0x24, 0xe2, 0xe8, 0xb9, 0xbc, - 0xa0, 0x91, 0xfa, 0xc8, 0x4d, 0x12, 0xf2, 0x00, 0x88, 0x00, 0x88, 0x59, 0xeb, 0x3c, 0x6a, 0x53, - 0xf1, 0xb9, 0xa3, 0xdd, 0x46, 0x32, 0xc2, 0xe9, 0x6e, 0x84, 0xa7, 0x4b, 0x91, 0xcd, 0xbf, 0x0f, - 0xe3, 0xda, 0x9c, 0xcf, 0x08, 0x1a, 0x31, 0xa3, 0x07, 0x8d, 0x18, 0xd3, 0x83, 0x43, 0xfc, 0xa3, - 0x02, 0x5c, 0xc8, 0xfe, 0x96, 0x84, 0xca, 0xb6, 0x09, 0x63, 0x0a, 0xa8, 0x9e, 0x09, 0xc9, 0x73, - 0x48, 0x42, 0x67, 0xe2, 0x1f, 0xb4, 0x5c, 0x79, 0xf4, 0xde, 0xc7, 0x3c, 0x5e, 0xe0, 0x72, 0xe0, - 0xff, 0x1d, 0x85, 0x19, 0x74, 0x87, 0x4f, 0xae, 0x53, 0x9f, 0x60, 0xf0, 0x17, 0x84, 0x69, 0xb6, - 0x6e, 0x61, 0xf6, 0xe2, 0xf0, 0x64, 0x18, 0x34, 0x83, 0x80, 0xbc, 0xa3, 0x3b, 0x68, 0x14, 0xb5, - 0xf4, 0x36, 0x12, 0xa8, 0x77, 0x21, 0xf6, 0xdc, 0x78, 0xc3, 0xf0, 0x0f, 0x38, 0xf6, 0xa2, 0x37, - 0x78, 0xdc, 0x45, 0x6f, 0x47, 0x2d, 0x7a, 0x3c, 0xa8, 0xc8, 0x77, 0xb4, 0x45, 0xef, 0xd5, 0xaf, - 0x76, 0xc3, 0xaf, 0x7a, 0xb5, 0x1b, 0x79, 0xb9, 0xd5, 0x6e, 0xf4, 0x05, 0x57, 0xbb, 0xbb, 0x30, - 0xb5, 0x41, 0x69, 0x4b, 0xbb, 0xb5, 0x19, 0x8b, 0x77, 0x4f, 0x8f, 0xa2, 0x3d, 0x2e, 0xeb, 0xea, - 0x26, 0x41, 0x95, 0xbb, 0x6a, 0xc2, 0xdf, 0xcc, 0xaa, 0x39, 0xfe, 0x8a, 0x57, 0xcd, 0x89, 0x97, - 0x59, 0x35, 0x53, 0x4b, 0xdf, 0xe4, 0x89, 0x97, 0xbe, 0x97, 0x59, 0xad, 0x3e, 0x46, 0xff, 0xc6, - 0x7a, 0x7d, 0x45, 0xb8, 0xb2, 0x68, 0xbe, 0x23, 0x2b, 0x7e, 0x28, 0xdd, 0xbf, 0xf1, 0x6f, 0x06, - 0xc3, 0x24, 0x02, 0x9c, 0x09, 0xfe, 0x6d, 0xd5, 0xd0, 0xab, 0x51, 0xa7, 0x57, 0xcf, 0x24, 0x46, - 0xc4, 0x1b, 0x4b, 0xb1, 0xc6, 0x25, 0xf5, 0x3a, 0x5b, 0x96, 0x5b, 0x7f, 0x5e, 0xe0, 0x37, 0xa4, - 0xff, 0x3b, 0x2e, 0x95, 0x2f, 0x73, 0x6b, 0xf9, 0x9b, 0x71, 0xec, 0x05, 0x11, 0x27, 0x22, 0x70, - 0x9a, 0x4f, 0xe2, 0x6b, 0xe3, 0x1f, 0xb2, 0xef, 0x5c, 0x2f, 0x10, 0x1a, 0xf0, 0x9c, 0x92, 0x94, - 0x5e, 0xb8, 0x7b, 0x47, 0x2e, 0x00, 0x22, 0x04, 0x05, 0x07, 0x9b, 0x0b, 0x80, 0x4e, 0x80, 0x8e, - 0x7b, 0xa7, 0x2d, 0x9b, 0x87, 0x0e, 0xc8, 0x6c, 0xc1, 0xbb, 0xe9, 0xc7, 0xef, 0x78, 0x7c, 0x89, - 0x1f, 0xbf, 0xeb, 0x62, 0x8c, 0x9f, 0xc1, 0xef, 0xc0, 0x79, 0x9b, 0x1e, 0xf8, 0x4f, 0xe9, 0xab, - 0x65, 0xfb, 0x15, 0x9c, 0x33, 0x19, 0xf2, 0x67, 0x52, 0x3c, 0xa6, 0xff, 0xc7, 0xd9, 0x99, 0x00, - 0x04, 0x01, 0xcf, 0x04, 0xc0, 0x03, 0x8a, 0xb3, 0x3f, 0xf5, 0x7d, 0x03, 0xcb, 0x2c, 0x1f, 0x2e, - 0x98, 0xcc, 0xab, 0xad, 0x16, 0x26, 0x13, 0x6d, 0xba, 0x1d, 0xc7, 0x8b, 0xc8, 0x26, 0x8c, 0x6b, - 0x3f, 0x13, 0xc6, 0x05, 0xad, 0x44, 0xe8, 0x34, 0x31, 0xc0, 0x08, 0xc8, 0x1a, 0x83, 0x2d, 0x0a, - 0x95, 0xa4, 0x78, 0x98, 0xc8, 0xf4, 0x3a, 0x6b, 0x30, 0xa9, 0xfd, 0x54, 0xf6, 0x53, 0xfc, 0xf8, - 0xb5, 0x1a, 0x4c, 0x81, 0x99, 0x24, 0x56, 0x13, 0xe6, 0xb3, 0x84, 0xc6, 0x23, 0x77, 0x93, 0xe5, - 0x38, 0x30, 0x57, 0x7f, 0xd7, 0xbf, 0xd3, 0x79, 0x41, 0xb9, 0xac, 0xbf, 0x33, 0x08, 0xe7, 0xc5, - 0x60, 0xbc, 0xca, 0x11, 0x27, 0x3f, 0x82, 0x71, 0x6d, 0x8c, 0x85, 0xd0, 0x2f, 0xcb, 0x47, 0x4e, - 0x79, 0x73, 0x81, 0x1b, 0x41, 0xba, 0x08, 0x68, 0x24, 0x86, 0x7b, 0xe5, 0x94, 0xad, 0xb3, 0x24, - 0x6d, 0x98, 0x32, 0x07, 0x5a, 0xd8, 0x81, 0xae, 0x66, 0x56, 0x62, 0xa2, 0xca, 0xb0, 0xde, 0xad, - 0x46, 0xe6, 0x70, 0xaf, 0x9c, 0xb2, 0x13, 0xbc, 0xc9, 0x37, 0x70, 0x26, 0x35, 0xca, 0xc2, 0xbc, - 0xf7, 0x7a, 0x66, 0x85, 0x29, 0x6c, 0x6e, 0x1b, 0x0e, 0x10, 0x9c, 0x5b, 0x6d, 0xba, 0x12, 0xd2, - 0x82, 0x09, 0x7d, 0xe0, 0x85, 0xa1, 0xea, 0x4a, 0x0f, 0x51, 0x72, 0x44, 0xae, 0xdc, 0x09, 0x59, - 0xe2, 0xd8, 0x3f, 0x37, 0xed, 0xdd, 0x06, 0xf2, 0x28, 0x0c, 0xf3, 0xdf, 0xd6, 0x1f, 0x14, 0xe0, - 0xfc, 0x56, 0x40, 0x43, 0xea, 0x35, 0xa9, 0xe1, 0x2e, 0xfe, 0x92, 0x33, 0x22, 0xcf, 0xd4, 0x5c, - 0x7c, 0x69, 0x53, 0xb3, 0xf5, 0xaf, 0x0a, 0x50, 0xce, 0x6a, 0x72, 0x9d, 0x7a, 0x2d, 0xb2, 0x05, - 0xa5, 0x64, 0x1f, 0xc4, 0x17, 0x63, 0xa9, 0xa8, 0xcc, 0xb9, 0xbd, 0x5d, 0x39, 0x65, 0xa7, 0xa8, - 0xc9, 0x06, 0x9c, 0xd1, 0x60, 0xc2, 0xd4, 0x5b, 0x3c, 0x8e, 0xa9, 0x97, 0x8d, 0x70, 0x8a, 0x54, - 0xb7, 0x94, 0xaf, 0xe0, 0xae, 0xbb, 0xe4, 0x1f, 0x38, 0xae, 0xc7, 0x94, 0x68, 0x2d, 0xee, 0x17, - 0xc4, 0x50, 0x21, 0x76, 0x6e, 0xfb, 0x45, 0xa8, 0x7c, 0x39, 0xa3, 0x50, 0xac, 0x8f, 0x70, 0x77, - 0x10, 0x16, 0x43, 0xfe, 0x56, 0x59, 0x31, 0xbb, 0x0c, 0x43, 0xdb, 0x6b, 0xf5, 0xc5, 0xaa, 0x78, - 0xf9, 0xcc, 0xe3, 0x65, 0xb4, 0xc3, 0x46, 0xd3, 0xb1, 0x79, 0x81, 0xf5, 0x21, 0x90, 0x7b, 0x34, - 0x12, 0x69, 0x01, 0x14, 0xdd, 0x35, 0x18, 0x11, 0x20, 0x41, 0x89, 0x3e, 0x80, 0x22, 0xc9, 0x80, - 0x2d, 0xcb, 0xac, 0x2d, 0x79, 0x06, 0x69, 0x53, 0x27, 0xd4, 0x36, 0xfd, 0xf7, 0x60, 0x34, 0x10, - 0x30, 0xb1, 0xe7, 0x4f, 0xa9, 0xac, 0x2f, 0x08, 0xe6, 0xd6, 0x75, 0x89, 0x63, 0xab, 0xbf, 0xac, - 0x35, 0x8c, 0x6d, 0xb3, 0xb9, 0xba, 0xb4, 0xc8, 0xa4, 0x2a, 0x84, 0x25, 0x87, 0xe3, 0x16, 0x3a, - 0xcb, 0x47, 0x54, 0x7f, 0xf7, 0x8c, 0xa2, 0xc1, 0x05, 0x44, 0x44, 0x74, 0xd2, 0x50, 0xac, 0xb7, - 0x54, 0xa4, 0x9c, 0x0c, 0x6e, 0x79, 0xd9, 0x4b, 0x36, 0x30, 0x06, 0xd0, 0x3d, 0xf4, 0x0b, 0x7a, - 0x15, 0x8d, 0x70, 0x60, 0x9e, 0xab, 0x10, 0xac, 0x57, 0x22, 0x77, 0xa3, 0xaf, 0x96, 0xdd, 0x45, - 0x18, 0x53, 0x30, 0x75, 0xc9, 0xc7, 0x65, 0x65, 0xe0, 0xef, 0xbe, 0xc5, 0x9f, 0x88, 0x37, 0x15, - 0x83, 0x98, 0x8e, 0x55, 0xc1, 0xbf, 0xe9, 0x6f, 0xb9, 0x8a, 0x90, 0x06, 0xd1, 0xb7, 0x5a, 0x45, - 0x1c, 0x24, 0xea, 0x24, 0x55, 0x18, 0xf8, 0xbb, 0x0b, 0xc7, 0x11, 0xd4, 0xb7, 0x5c, 0x05, 0x13, - 0xd4, 0xb7, 0x57, 0x05, 0x95, 0xd1, 0xb4, 0xf8, 0x24, 0x4d, 0x55, 0xb2, 0x9c, 0xae, 0x44, 0x9a, - 0xd1, 0x13, 0x14, 0x3d, 0xc7, 0x83, 0xc2, 0x05, 0x2e, 0xac, 0x5f, 0x40, 0x35, 0x4c, 0x60, 0xdf, - 0x6e, 0x35, 0xff, 0xa0, 0xc0, 0x63, 0x7b, 0xd5, 0x37, 0xb5, 0xac, 0xa9, 0xde, 0x63, 0x5f, 0xf3, - 0x41, 0xd0, 0xbe, 0xf6, 0x07, 0xae, 0xd7, 0xd2, 0x7d, 0x10, 0x9c, 0x6e, 0xb4, 0xaf, 0x62, 0x5f, - 0x3f, 0x71, 0xbd, 0x96, 0x9d, 0xc4, 0x26, 0xef, 0xc3, 0xa4, 0x06, 0x52, 0x9a, 0x20, 0xcf, 0x4e, - 0xa2, 0x93, 0xbb, 0x2d, 0xdb, 0xc4, 0xb4, 0xfe, 0xba, 0x00, 0xd3, 0x19, 0xf9, 0xbc, 0xd1, 0x50, - 0x82, 0x27, 0x2c, 0xb5, 0x50, 0x89, 0x7c, 0x62, 0x18, 0x66, 0xc4, 0xd8, 0x7f, 0x15, 0x22, 0xe6, - 0x65, 0xd0, 0x72, 0x8f, 0x17, 0xb5, 0x2c, 0x79, 0xd9, 0xf9, 0xc6, 0x75, 0x74, 0x12, 0x02, 0xc4, - 0x2d, 0x11, 0x26, 0xe9, 0x3a, 0x53, 0x97, 0xb5, 0xc4, 0xe5, 0xaf, 0x24, 0x73, 0xba, 0x56, 0x8d, - 0xf5, 0x9b, 0x45, 0x38, 0x9b, 0xd1, 0xff, 0x3a, 0x8d, 0xfe, 0x26, 0x44, 0x90, 0x48, 0x1f, 0x3f, - 0xf0, 0x0b, 0x4a, 0x1f, 0x6f, 0xfd, 0x49, 0x11, 0xce, 0xee, 0x74, 0x42, 0x7c, 0x4a, 0xb6, 0xea, - 0x3d, 0xa5, 0x5e, 0xe4, 0x07, 0xcf, 0xf1, 0xf9, 0x0b, 0x79, 0x07, 0x86, 0x56, 0x68, 0xbb, 0xed, - 0x8b, 0xf9, 0x7f, 0x51, 0xba, 0x81, 0x24, 0xb1, 0x11, 0x69, 0xe5, 0x94, 0xcd, 0xb1, 0xc9, 0xfb, - 0x30, 0xb6, 0x42, 0x9d, 0x20, 0x7a, 0x44, 0x1d, 0x79, 0x1c, 0x92, 0x39, 0x53, 0x34, 0x12, 0x81, - 0xb0, 0x72, 0xca, 0x8e, 0xb1, 0xc9, 0x02, 0x0c, 0x6e, 0xf9, 0xde, 0x9e, 0x7a, 0x36, 0x9f, 0x53, - 0x21, 0xc3, 0x59, 0x39, 0x65, 0x23, 0x2e, 0x59, 0x87, 0xc9, 0xea, 0x1e, 0xf5, 0xa2, 0x75, 0x1a, - 0x39, 0x2d, 0x27, 0x72, 0x84, 0xda, 0x7c, 0x2d, 0x8f, 0xd8, 0x40, 0x5e, 0x39, 0x65, 0x9b, 0xd4, - 0xe4, 0x43, 0x18, 0xb9, 0xe7, 0xfb, 0xad, 0x47, 0xcf, 0x65, 0xf0, 0x87, 0x4a, 0x1e, 0x23, 0x81, - 0xb6, 0x72, 0xca, 0x96, 0x14, 0xb5, 0x21, 0x18, 0x58, 0x0f, 0xf7, 0xac, 0xc3, 0x02, 0x94, 0x97, - 0xfc, 0x67, 0x5e, 0xa6, 0x54, 0xbf, 0x6f, 0x4a, 0x55, 0xb2, 0xcf, 0xc0, 0x4f, 0xc8, 0xf5, 0x6d, - 0x18, 0xdc, 0x72, 0xbd, 0xbd, 0x84, 0x2a, 0x98, 0x41, 0xc7, 0xb0, 0x50, 0x3c, 0xae, 0xb7, 0x47, - 0xd6, 0xa4, 0x7e, 0x2f, 0xec, 0x98, 0x03, 0xc6, 0xa1, 0x22, 0x83, 0x5a, 0xc7, 0x8e, 0xf5, 0x78, - 0xfe, 0x5b, 0x76, 0xf0, 0x0d, 0x98, 0xcb, 0xa9, 0x57, 0xbc, 0x83, 0x67, 0x7d, 0x1b, 0x44, 0xc5, - 0xe6, 0xff, 0x2b, 0xc0, 0x6c, 0xe6, 0x00, 0x26, 0x31, 0xd9, 0x99, 0x8e, 0x4f, 0xcc, 0xc5, 0xb6, - 0xdf, 0x7c, 0x72, 0x0c, 0x6f, 0x32, 0x4b, 0xe6, 0x19, 0x17, 0x5f, 0x48, 0x93, 0xd1, 0x25, 0x72, - 0xc9, 0xe9, 0x2c, 0xad, 0x7f, 0x9a, 0x35, 0xd7, 0xb9, 0x70, 0xcb, 0x30, 0x22, 0xf3, 0x95, 0x71, - 0xd3, 0x95, 0xfc, 0x89, 0x8f, 0xcd, 0xe4, 0x5a, 0x20, 0x03, 0xc9, 0xc8, 0x4f, 0x7e, 0x57, 0x0b, - 0xdc, 0xc5, 0xbf, 0xd8, 0x0f, 0x5e, 0xe2, 0xbb, 0x54, 0xbc, 0x58, 0x9d, 0x2b, 0x7e, 0x18, 0x79, - 0xca, 0x8b, 0xd9, 0x56, 0xbf, 0xc9, 0x0d, 0x28, 0xc9, 0xdc, 0x24, 0x22, 0x09, 0x92, 0xc8, 0xa7, - 0x6f, 0xa7, 0xe0, 0xe4, 0x3d, 0x98, 0x4b, 0xc2, 0x64, 0x2f, 0xf9, 0x6b, 0xc1, 0xbc, 0x62, 0xeb, - 0xcf, 0x8a, 0x18, 0x5b, 0xbd, 0xc7, 0xa7, 0xc3, 0xc6, 0x6f, 0xb3, 0x2e, 0xa4, 0x55, 0xdc, 0xac, - 0x93, 0x0b, 0x30, 0xb6, 0x59, 0x37, 0x92, 0xbe, 0xd9, 0x31, 0x80, 0x35, 0x9b, 0x75, 0xa1, 0x1a, - 0x34, 0xf7, 0xdd, 0x88, 0x36, 0xa3, 0x6e, 0x20, 0x16, 0x7a, 0x3b, 0x05, 0x27, 0x16, 0x4c, 0xdc, - 0x6b, 0xbb, 0x8f, 0x9a, 0x92, 0x19, 0x17, 0x81, 0x01, 0x23, 0xaf, 0xc3, 0xd4, 0xaa, 0x17, 0x46, - 0x4e, 0xbb, 0xbd, 0x4e, 0xa3, 0x7d, 0xbf, 0x25, 0x52, 0xda, 0xda, 0x09, 0x28, 0xab, 0x77, 0xd1, - 0xf7, 0x22, 0xc7, 0xf5, 0x68, 0x60, 0x77, 0xbd, 0xc8, 0x3d, 0xa0, 0xa2, 0xef, 0x29, 0x38, 0x79, - 0x1b, 0x66, 0x15, 0x6c, 0x33, 0x68, 0xee, 0xd3, 0x30, 0x0a, 0x30, 0x15, 0x24, 0xfa, 0x2b, 0xd9, - 0xd9, 0x85, 0x58, 0x43, 0xdb, 0xef, 0xb6, 0x96, 0xbd, 0xa7, 0x6e, 0xe0, 0x7b, 0x98, 0x68, 0x65, - 0x54, 0xd4, 0x90, 0x80, 0x5b, 0xbf, 0x3f, 0x9a, 0xb9, 0x32, 0xbc, 0xcc, 0x1c, 0xfc, 0x02, 0x26, - 0x16, 0x9d, 0x8e, 0xf3, 0xc8, 0x6d, 0xbb, 0x91, 0xab, 0x72, 0xe6, 0xbd, 0xd3, 0x67, 0x59, 0x91, - 0xd9, 0x6a, 0x68, 0x4b, 0x27, 0xb6, 0x0d, 0x56, 0xf3, 0x7f, 0x35, 0x0c, 0xb3, 0x99, 0x78, 0xe4, - 0xba, 0x48, 0xae, 0xa7, 0x96, 0x6e, 0x91, 0xb9, 0xcd, 0x4e, 0x82, 0xd9, 0x58, 0x22, 0x68, 0xb1, - 0x4d, 0x1d, 0xaf, 0x2b, 0xf2, 0xb6, 0xd9, 0x06, 0x8c, 0x8d, 0x25, 0x53, 0x4d, 0x34, 0x66, 0xe8, - 0x84, 0x6e, 0x27, 0xa0, 0xe4, 0x32, 0x8c, 0x33, 0x88, 0x64, 0x35, 0xc8, 0x9f, 0x4b, 0x6a, 0x20, - 0xc6, 0x69, 0xc3, 0x6f, 0x51, 0x8d, 0xd3, 0x10, 0xe7, 0x64, 0x42, 0x19, 0x27, 0x06, 0x91, 0x9c, - 0x86, 0x39, 0x27, 0x0d, 0x44, 0x5e, 0x83, 0xc9, 0x6a, 0xa7, 0xa3, 0x31, 0xc2, 0x84, 0x6d, 0xb6, - 0x09, 0x24, 0x97, 0x00, 0xaa, 0x9d, 0x8e, 0x64, 0x83, 0xc9, 0xd8, 0x6c, 0x0d, 0x42, 0x6e, 0xc6, - 0xe1, 0xf1, 0x34, 0x56, 0x78, 0x1b, 0x62, 0x67, 0x94, 0x30, 0xb9, 0xaa, 0x58, 0x62, 0x82, 0x29, - 0x70, 0xb9, 0x26, 0xc0, 0xe4, 0x23, 0x38, 0x97, 0x70, 0x34, 0xd1, 0x2a, 0xc0, 0x9b, 0x0a, 0x3b, - 0x1f, 0x81, 0xbc, 0x0b, 0x67, 0x13, 0x85, 0xb2, 0x3a, 0xbc, 0x94, 0xb0, 0x73, 0x4a, 0xc9, 0x07, - 0x50, 0x4e, 0x3c, 0x81, 0x8f, 0x2b, 0xc5, 0x0b, 0x08, 0x3b, 0xb7, 0x9c, 0x7d, 0x5d, 0x89, 0xb7, - 0x74, 0xa2, 0x4a, 0xbc, 0x6b, 0xb5, 0xb3, 0x0b, 0xc9, 0x0a, 0x54, 0x32, 0x9d, 0x77, 0xb4, 0x8a, - 0x31, 0xc9, 0x9c, 0xdd, 0x0f, 0x8d, 0xd4, 0xe0, 0x42, 0x26, 0x8a, 0x6c, 0x06, 0xa6, 0x9e, 0xb3, - 0x7b, 0xe2, 0x90, 0x05, 0x98, 0x89, 0x9d, 0x98, 0xb4, 0x26, 0x60, 0xd6, 0x39, 0x3b, 0xb3, 0x8c, - 0xbc, 0x69, 0x06, 0x3a, 0xe0, 0x95, 0x61, 0xd2, 0x39, 0x3b, 0x5d, 0x60, 0x1d, 0x15, 0xe0, 0x42, - 0xe6, 0x5e, 0x2c, 0x8f, 0x0c, 0xf3, 0x49, 0xdd, 0x54, 0x5b, 0x0b, 0x6e, 0xc0, 0x20, 0x9e, 0x21, - 0xb8, 0xa9, 0x5b, 0xfa, 0xed, 0x22, 0x3d, 0x67, 0xc5, 0x4a, 0x6d, 0xc4, 0x21, 0xf7, 0xd4, 0xd5, - 0xe6, 0x00, 0x1a, 0x4b, 0x6e, 0x25, 0x75, 0xb4, 0x8c, 0xca, 0xf5, 0x2b, 0x4e, 0x79, 0x99, 0xf9, - 0x32, 0xb7, 0x48, 0x7f, 0x56, 0x80, 0x4a, 0x1f, 0x15, 0x44, 0xf5, 0xa9, 0x70, 0x8c, 0x3e, 0xdd, - 0x57, 0x7d, 0xe2, 0xef, 0x8c, 0x17, 0x8e, 0xa7, 0xe6, 0xbc, 0xea, 0x6e, 0xfd, 0x75, 0x01, 0x48, - 0x5a, 0xd5, 0x25, 0xdf, 0x83, 0xb1, 0x7a, 0x7d, 0xc5, 0x70, 0x61, 0x4c, 0x5d, 0x6e, 0xc5, 0x18, - 0xe4, 0xf6, 0xb1, 0x7c, 0x16, 0x75, 0x8f, 0xc5, 0x4f, 0x52, 0x8e, 0x92, 0x03, 0x3d, 0x1d, 0x25, - 0x53, 0x6e, 0x92, 0xcb, 0x19, 0x9e, 0x7f, 0x83, 0x7d, 0x3c, 0xff, 0xd2, 0x6e, 0x7d, 0xd6, 0x12, - 0x94, 0xf3, 0xb4, 0x65, 0x5c, 0xe1, 0x78, 0x50, 0x39, 0xed, 0x82, 0x8e, 0xaf, 0x70, 0x26, 0xd8, - 0x7a, 0x17, 0xce, 0x2a, 0x6a, 0x9e, 0xad, 0x46, 0x8b, 0xe6, 0x20, 0x8e, 0xd8, 0x2a, 0x6a, 0x44, - 0x0c, 0xb0, 0xfe, 0x74, 0x30, 0x45, 0x58, 0xef, 0x1e, 0x1c, 0x38, 0xc1, 0x73, 0x52, 0x35, 0x09, - 0x07, 0xfa, 0x9e, 0x6a, 0x6a, 0x83, 0x4c, 0xc7, 0xd4, 0xb8, 0xb3, 0x7d, 0x01, 0x35, 0x0c, 0xaf, - 0x49, 0xf9, 0xd5, 0x5e, 0x91, 0x47, 0xac, 0x32, 0x80, 0x64, 0x17, 0x26, 0xc5, 0xde, 0x8d, 0xbf, - 0xe5, 0x37, 0x76, 0x3b, 0xf9, 0x8d, 0x19, 0xcd, 0xbb, 0x69, 0x90, 0xf0, 0xd9, 0x68, 0xb2, 0x21, - 0x5f, 0xc0, 0x94, 0xd4, 0xd4, 0x04, 0x63, 0xee, 0x8c, 0x75, 0xa7, 0x37, 0x63, 0x93, 0x86, 0x73, - 0x4e, 0x30, 0x62, 0x4d, 0x96, 0x8b, 0x1d, 0xe7, 0x3c, 0x74, 0x9c, 0x26, 0x1b, 0x24, 0xa2, 0xc9, - 0x06, 0x6c, 0xfe, 0x53, 0x20, 0xe9, 0x7e, 0xf5, 0xfb, 0x9c, 0x26, 0xb5, 0xcf, 0x69, 0xbe, 0x0a, - 0xd3, 0x19, 0x1d, 0x38, 0x11, 0x8b, 0x4f, 0x81, 0xa4, 0x5b, 0x7a, 0x12, 0x0e, 0xd6, 0x75, 0x78, - 0x5d, 0x89, 0x40, 0xcd, 0x06, 0x83, 0xa7, 0x34, 0xb2, 0xff, 0x7a, 0x11, 0x2a, 0x7d, 0x50, 0xc9, - 0xef, 0x15, 0x92, 0xd2, 0xe6, 0xb3, 0xf1, 0xfd, 0xa4, 0xb4, 0xb3, 0xe9, 0x33, 0xc4, 0x5e, 0xfb, - 0xe0, 0x37, 0xfe, 0xe2, 0x85, 0x4f, 0x1e, 0xe9, 0x21, 0x3b, 0xb9, 0xb4, 0x06, 0x75, 0x69, 0xed, - 0xc2, 0x8c, 0x71, 0x2c, 0x3c, 0xce, 0xe6, 0x65, 0x01, 0x88, 0xc4, 0xb9, 0x6b, 0xfe, 0x9e, 0xc8, - 0xef, 0x5b, 0x2c, 0x17, 0x6c, 0x0d, 0x6a, 0xdd, 0x85, 0xd9, 0x04, 0x5f, 0x61, 0xfc, 0xff, 0x1e, - 0xa8, 0x97, 0xfb, 0xc8, 0x78, 0xa0, 0x76, 0xe6, 0xe7, 0x87, 0x95, 0x49, 0xa6, 0xd6, 0xdf, 0x8c, - 0x93, 0x27, 0xc8, 0xbf, 0xac, 0x75, 0xfd, 0xfa, 0xa2, 0xda, 0xd6, 0x23, 0x1a, 0x91, 0x3b, 0x30, - 0xcc, 0x21, 0x89, 0x10, 0xe5, 0x3a, 0xb6, 0x58, 0x17, 0x04, 0xa2, 0x35, 0x8b, 0xef, 0x8c, 0xf1, - 0x47, 0x35, 0x8e, 0x8b, 0x61, 0xed, 0xf0, 0x94, 0x3d, 0x31, 0x58, 0x85, 0x41, 0x1f, 0xac, 0xc6, - 0xf1, 0x3b, 0xa4, 0x1f, 0x8b, 0xc4, 0xf3, 0xfc, 0x67, 0x6d, 0xda, 0xe2, 0xb9, 0x16, 0x6b, 0x13, - 0xe2, 0x8c, 0x3b, 0xe8, 0x30, 0x06, 0x48, 0x66, 0x7d, 0x02, 0xb3, 0x4c, 0x5b, 0x08, 0x92, 0xf5, - 0x61, 0xa2, 0x0e, 0x06, 0x33, 0x9f, 0x13, 0x38, 0x0c, 0x84, 0xcf, 0x09, 0x44, 0xa1, 0xb5, 0x06, - 0xe7, 0xb8, 0xf1, 0x53, 0xef, 0x52, 0x7c, 0xd5, 0x30, 0x84, 0xbf, 0x13, 0xaf, 0x54, 0x33, 0x7a, - 0xcf, 0xf1, 0xac, 0x8f, 0xf1, 0x19, 0x94, 0x98, 0xa8, 0xae, 0xef, 0xc5, 0x96, 0xce, 0xe3, 0xbd, - 0x9b, 0xfe, 0x3f, 0xe1, 0x42, 0xb5, 0xd3, 0xa1, 0x5e, 0x2b, 0x26, 0xdc, 0x0e, 0x9c, 0x63, 0x46, - 0xb5, 0x20, 0x55, 0x18, 0x42, 0x6c, 0x75, 0x07, 0x2c, 0x9a, 0x9b, 0xd1, 0x1c, 0xc4, 0x13, 0x31, - 0x6b, 0xb1, 0x02, 0x4e, 0x69, 0xb5, 0x60, 0xae, 0xde, 0x7d, 0x74, 0xe0, 0x46, 0xf8, 0x08, 0x01, - 0x23, 0xc3, 0xc8, 0xba, 0x57, 0x65, 0x96, 0x35, 0x2e, 0x8c, 0xeb, 0xf1, 0x73, 0x19, 0x7c, 0xc7, - 0x20, 0xa2, 0xc5, 0x3c, 0xbd, 0x73, 0x33, 0x26, 0x45, 0x2b, 0x0f, 0xaf, 0x05, 0x8b, 0x45, 0x26, - 0x36, 0x6b, 0x1a, 0xce, 0xe8, 0x77, 0x5e, 0x7c, 0x86, 0xcc, 0xc2, 0xb4, 0x79, 0x97, 0xc5, 0xc1, - 0x5f, 0xc3, 0x0c, 0xb7, 0xb5, 0xf3, 0x98, 0xf3, 0x0b, 0x71, 0x78, 0xf5, 0xe2, 0xee, 0x42, 0xe2, - 0xf5, 0x03, 0x3a, 0x45, 0xab, 0x6c, 0x22, 0xbb, 0x0b, 0xfc, 0x29, 0xeb, 0xd3, 0x05, 0xe3, 0x36, - 0xb6, 0xb8, 0xbb, 0x50, 0x1b, 0x11, 0xb1, 0x7b, 0x19, 0x77, 0x3e, 0xfc, 0xdf, 0x0a, 0xf7, 0x05, - 0x8c, 0x9e, 0xb0, 0x42, 0x1d, 0x7c, 0xe9, 0x94, 0xfd, 0x06, 0x7d, 0x0a, 0x8a, 0x2a, 0x38, 0x67, - 0xd1, 0x6d, 0x59, 0x7f, 0x58, 0x80, 0xeb, 0x5c, 0x21, 0xcb, 0xa6, 0xc3, 0x8b, 0xad, 0x1c, 0x62, - 0xf2, 0x1e, 0x0c, 0x85, 0x9a, 0x83, 0x87, 0x25, 0x5a, 0xde, 0x8b, 0x13, 0x27, 0x20, 0x55, 0x98, - 0xd0, 0x1f, 0xf4, 0x1c, 0x2f, 0xee, 0x9f, 0x3d, 0x7e, 0xf0, 0xd8, 0x51, 0x8f, 0x7c, 0x9e, 0xc0, - 0xf9, 0xe5, 0x6f, 0xd8, 0x84, 0x10, 0x3b, 0x94, 0x38, 0x3d, 0xc4, 0x6f, 0x9c, 0x4f, 0x6f, 0x8b, - 0x19, 0x63, 0x1e, 0xed, 0x93, 0x60, 0x76, 0x4e, 0x96, 0x9b, 0x9c, 0x52, 0xe1, 0xc7, 0x6c, 0x03, - 0x66, 0xfd, 0x69, 0x01, 0x2e, 0x64, 0xd7, 0x26, 0x16, 0x96, 0x55, 0x38, 0xb3, 0xe8, 0x78, 0xbe, - 0xe7, 0x36, 0x9d, 0x76, 0xbd, 0xb9, 0x4f, 0x5b, 0x5d, 0x15, 0xe1, 0x57, 0xad, 0x32, 0x7b, 0xd4, - 0x93, 0xe4, 0x12, 0xc5, 0x4e, 0x53, 0xb1, 0x13, 0x22, 0xbe, 0x09, 0xe1, 0x6b, 0x6f, 0x9b, 0x06, - 0x8a, 0x1f, 0x6f, 0x59, 0x4e, 0x29, 0xb9, 0x2d, 0x2f, 0x15, 0x5a, 0x3b, 0x9e, 0x1b, 0x29, 0x22, - 0x6e, 0xea, 0xc9, 0x2a, 0xb2, 0xfe, 0x6d, 0x01, 0xce, 0x61, 0x52, 0x2f, 0x23, 0x4d, 0x68, 0x1c, - 0xe8, 0x5a, 0xc6, 0x6a, 0x2e, 0x18, 0x6f, 0x5c, 0x0c, 0x6c, 0x33, 0x68, 0x33, 0x79, 0x13, 0x06, - 0xeb, 0xd2, 0xe1, 0x6c, 0x2a, 0x91, 0xe0, 0x59, 0x50, 0xb0, 0x72, 0x1b, 0xb1, 0xd8, 0x19, 0x7e, - 0x89, 0x86, 0x4d, 0xea, 0x61, 0x26, 0x6e, 0x6e, 0x79, 0xd0, 0x20, 0x71, 0x0c, 0xaa, 0xc1, 0xbc, - 0x18, 0x54, 0x43, 0x66, 0x0c, 0x2a, 0xeb, 0x29, 0x4f, 0xe9, 0x95, 0xec, 0x90, 0x18, 0xa4, 0x8f, - 0x53, 0x89, 0xbb, 0xf9, 0x3e, 0x70, 0x36, 0xab, 0x67, 0x4c, 0x49, 0x4f, 0xe4, 0xe4, 0xce, 0x0f, - 0x2c, 0xbd, 0x05, 0xaf, 0x19, 0xb8, 0xd5, 0x76, 0xdb, 0x7f, 0x46, 0x5b, 0x5b, 0x81, 0x7f, 0xe0, - 0x47, 0x46, 0x4a, 0x23, 0x91, 0xb9, 0x3e, 0xbe, 0x36, 0x12, 0xb3, 0x32, 0x01, 0xb6, 0xfe, 0x0f, - 0xb8, 0xd6, 0x87, 0xa3, 0xe8, 0x54, 0x1d, 0xce, 0x38, 0x89, 0x32, 0xe9, 0x39, 0x74, 0x2d, 0xab, - 0x5f, 0x49, 0x46, 0xa1, 0x9d, 0xa6, 0xbf, 0xb1, 0x6d, 0x24, 0xbb, 0x26, 0x65, 0x98, 0xd9, 0xb2, - 0x37, 0x97, 0x76, 0x16, 0xb7, 0x1b, 0xdb, 0x5f, 0x6c, 0x2d, 0x37, 0x76, 0x36, 0x1e, 0x6c, 0x6c, - 0x3e, 0xdc, 0xe0, 0x91, 0xd9, 0x8d, 0x92, 0xed, 0xe5, 0xea, 0x7a, 0xa9, 0x40, 0x66, 0xa0, 0x64, - 0x80, 0x97, 0x77, 0x6a, 0xa5, 0xe2, 0x8d, 0xaf, 0x8d, 0x24, 0xce, 0xe4, 0x02, 0x94, 0xeb, 0x3b, - 0x5b, 0x5b, 0x9b, 0xb6, 0xe2, 0xaa, 0xc7, 0x85, 0x9f, 0x85, 0x33, 0x46, 0xe9, 0x5d, 0x7b, 0x79, - 0xb9, 0x54, 0x60, 0x4d, 0x31, 0xc0, 0x5b, 0xf6, 0xf2, 0xfa, 0xea, 0xce, 0x7a, 0xa9, 0x78, 0xa3, - 0xa1, 0x3f, 0xac, 0x23, 0xe7, 0x61, 0x6e, 0x69, 0x79, 0x77, 0x75, 0x71, 0x39, 0x8b, 0xf7, 0x0c, - 0x94, 0xf4, 0xc2, 0xed, 0xcd, 0xed, 0x2d, 0xce, 0x5a, 0x87, 0x3e, 0x5c, 0xae, 0x55, 0x77, 0xb6, - 0x57, 0x36, 0x4a, 0x03, 0xd6, 0xe0, 0x68, 0xb1, 0x54, 0xbc, 0xf1, 0x23, 0xe3, 0xd5, 0x1d, 0x6b, - 0xbe, 0x40, 0xdf, 0xa9, 0x57, 0xef, 0xe5, 0x57, 0xc1, 0x4b, 0xd7, 0xef, 0x56, 0x4b, 0x05, 0x72, - 0x11, 0xce, 0x19, 0xd0, 0xad, 0x6a, 0xbd, 0xfe, 0x70, 0xd3, 0x5e, 0x5a, 0x5b, 0xae, 0xd7, 0x4b, - 0xc5, 0x1b, 0xbb, 0x46, 0xdc, 0x3d, 0x56, 0xc3, 0xfa, 0xdd, 0x6a, 0xc3, 0x5e, 0xfe, 0x6c, 0x67, - 0xd5, 0x5e, 0x5e, 0x4a, 0xd7, 0x60, 0x94, 0x7e, 0xb1, 0x5c, 0x2f, 0x15, 0xc8, 0x34, 0x9c, 0x36, - 0xa0, 0x1b, 0x9b, 0xa5, 0xe2, 0x8d, 0xd7, 0x45, 0x68, 0x36, 0x32, 0x05, 0xb0, 0xb4, 0x5c, 0x5f, - 0x5c, 0xde, 0x58, 0x5a, 0xdd, 0xb8, 0x57, 0x3a, 0x45, 0x26, 0x61, 0xac, 0xaa, 0x7e, 0x16, 0x6e, - 0x7c, 0x00, 0xa7, 0x13, 0xc7, 0x7b, 0x86, 0xa1, 0x0e, 0xc6, 0xa5, 0x53, 0x28, 0x7e, 0xf9, 0x13, - 0x6d, 0xac, 0xfc, 0xa4, 0x5e, 0x2a, 0xdc, 0xa8, 0xc9, 0xbc, 0xbf, 0xda, 0x77, 0x4e, 0xc6, 0x61, - 0x64, 0x69, 0xf9, 0x6e, 0x75, 0x67, 0x6d, 0xbb, 0x74, 0x8a, 0xfd, 0x58, 0xb4, 0x97, 0xab, 0xdb, - 0xcb, 0x4b, 0xa5, 0x02, 0x19, 0x83, 0xa1, 0xfa, 0x76, 0x75, 0x7b, 0xb9, 0x54, 0x24, 0xa3, 0x30, - 0xb8, 0x53, 0x5f, 0xb6, 0x4b, 0x03, 0x0b, 0xbf, 0xfd, 0x7b, 0x05, 0x6e, 0x68, 0x94, 0x2f, 0xb8, - 0xbe, 0xd6, 0x0e, 0x94, 0x62, 0xc9, 0x13, 0x49, 0x4e, 0x73, 0x4f, 0x8f, 0xa8, 0x05, 0xcc, 0xf7, - 0xb8, 0xdc, 0x41, 0x84, 0xeb, 0x85, 0xdb, 0x05, 0x62, 0xa3, 0x33, 0x4c, 0xe2, 0x7c, 0xa5, 0x38, - 0x67, 0x1f, 0x81, 0xe7, 0x2f, 0xf6, 0x3c, 0x96, 0x91, 0x5f, 0x01, 0x4b, 0xe7, 0x99, 0x73, 0x0a, - 0xf9, 0xde, 0xf1, 0x4e, 0x1b, 0xb2, 0xce, 0xd7, 0x8f, 0x87, 0x4e, 0xee, 0xc3, 0x24, 0xd3, 0xcd, - 0x15, 0x1a, 0x39, 0x9f, 0x24, 0xd4, 0x8e, 0x04, 0xf3, 0x17, 0xb2, 0x0b, 0x55, 0x1e, 0xa2, 0x09, - 0xec, 0x08, 0x3f, 0x5c, 0x87, 0x44, 0x86, 0xef, 0x90, 0x10, 0xbe, 0xe2, 0xcf, 0x9f, 0x49, 0x80, - 0x77, 0xef, 0xdc, 0x2e, 0x90, 0x3a, 0xc6, 0xce, 0x33, 0x94, 0x7c, 0x22, 0x9f, 0x14, 0xa6, 0xb5, - 0x7f, 0xde, 0x9a, 0x8a, 0xca, 0x1a, 0x9a, 0x73, 0x3a, 0xd8, 0x00, 0x92, 0xd6, 0x9d, 0xc9, 0xe5, - 0x78, 0x1e, 0x64, 0xab, 0xd5, 0xf3, 0x67, 0x53, 0x17, 0x59, 0xcb, 0x4c, 0x7b, 0x22, 0xcb, 0x30, - 0x25, 0xde, 0xe6, 0x0b, 0x6d, 0x9e, 0xf4, 0x3a, 0x0f, 0xe4, 0xb2, 0xb9, 0x87, 0x72, 0x52, 0x27, - 0x02, 0x32, 0x1f, 0xf7, 0x23, 0x79, 0x4c, 0x98, 0x3f, 0x9f, 0x59, 0x26, 0xfa, 0x77, 0x17, 0xa6, - 0xcc, 0xc3, 0x05, 0x91, 0x03, 0x94, 0x79, 0xe6, 0xc8, 0x6d, 0x50, 0x03, 0xe6, 0xd6, 0x1d, 0x17, - 0xef, 0x4b, 0x84, 0x93, 0x9e, 0xf4, 0x83, 0x23, 0x95, 0x1e, 0x8e, 0x71, 0x75, 0xea, 0xb5, 0xd4, - 0x20, 0xe4, 0xe5, 0x14, 0xc0, 0xcf, 0xa6, 0x2e, 0x75, 0x64, 0xd3, 0x47, 0x91, 0x58, 0x66, 0x26, - 0xe8, 0x2c, 0xb7, 0xd3, 0xf9, 0x3c, 0x4f, 0x69, 0xb2, 0x8e, 0x4a, 0x7a, 0x82, 0xa3, 0x36, 0x27, - 0x4e, 0xcc, 0xae, 0x8c, 0x11, 0x22, 0xb4, 0xf4, 0xfc, 0xa2, 0x30, 0x24, 0x39, 0x82, 0xcb, 0x65, - 0x76, 0xbb, 0x40, 0xbe, 0xc6, 0xaf, 0x3a, 0x93, 0xdd, 0x43, 0x37, 0xda, 0x17, 0xda, 0xcf, 0xf9, - 0x4c, 0x06, 0xe2, 0x43, 0xe9, 0xc1, 0xdd, 0x86, 0x99, 0x2c, 0xe7, 0x6c, 0x25, 0xd0, 0x1e, 0x9e, - 0xdb, 0xb9, 0xb3, 0xc0, 0x66, 0x47, 0x8d, 0x56, 0xfe, 0x20, 0xf5, 0xf0, 0x0d, 0xce, 0xe5, 0xf9, - 0x11, 0x4c, 0xb1, 0x59, 0xf2, 0x80, 0xd2, 0x4e, 0xb5, 0xed, 0x3e, 0xa5, 0x21, 0x91, 0x81, 0x8f, - 0x15, 0x28, 0x8f, 0xf6, 0x7a, 0x81, 0x7c, 0x17, 0xc6, 0x1f, 0x3a, 0x51, 0x73, 0x5f, 0x04, 0x00, - 0x95, 0xf1, 0x41, 0x11, 0x36, 0x2f, 0x7f, 0x61, 0xe1, 0xed, 0x02, 0xf9, 0x01, 0x8c, 0xdc, 0xa3, - 0x11, 0x3e, 0xe9, 0xbe, 0xa2, 0x7c, 0x09, 0xb9, 0x7d, 0x72, 0xd5, 0x53, 0xaf, 0x90, 0x64, 0x83, - 0x93, 0xc6, 0x5c, 0x72, 0x0b, 0x80, 0x2f, 0x08, 0xc8, 0x21, 0x59, 0x3c, 0x9f, 0x6a, 0x36, 0xb9, - 0xc7, 0x94, 0x87, 0x36, 0x8d, 0xe8, 0x71, 0xab, 0xcc, 0x93, 0xd1, 0x1a, 0x4c, 0xa9, 0xd4, 0x4d, - 0x1b, 0x18, 0xa7, 0xc5, 0x4a, 0x30, 0x0b, 0x4f, 0xc0, 0xed, 0x03, 0xf6, 0x55, 0xf0, 0xbc, 0xc5, - 0x18, 0xd0, 0x03, 0x57, 0xd2, 0x39, 0x3d, 0x2a, 0x88, 0xbe, 0x84, 0x4a, 0x21, 0x72, 0x34, 0x8d, + 0x45, 0xed, 0x9f, 0x1f, 0x56, 0x46, 0x97, 0xba, 0x01, 0x0e, 0x8b, 0xcd, 0xca, 0xc9, 0x35, 0x18, + 0x59, 0x6c, 0x77, 0xc3, 0x88, 0x06, 0xe5, 0xc1, 0xf8, 0x23, 0x6d, 0x72, 0x90, 0x2d, 0xcb, 0xc8, + 0x77, 0x61, 0x70, 0x27, 0xa4, 0x41, 0x79, 0x08, 0xe7, 0x7b, 0x52, 0xcc, 0x37, 0x03, 0xed, 0x2e, + 0xd4, 0x46, 0xd9, 0x97, 0xd8, 0x0d, 0x69, 0x60, 0x23, 0x12, 0xb9, 0x09, 0x43, 0x7c, 0xd2, 0x86, + 0x71, 0x93, 0x9a, 0x54, 0xab, 0xa3, 0x4d, 0x77, 0xdf, 0xad, 0x8d, 0x1d, 0x1d, 0x56, 0x86, 0x70, + 0xf2, 0x6c, 0x8e, 0x76, 0x7f, 0x70, 0xb4, 0x50, 0x2a, 0xda, 0xa3, 0x8c, 0x96, 0x7d, 0x16, 0xd6, + 0x77, 0x61, 0x5c, 0xeb, 0x3e, 0xb9, 0x00, 0x83, 0xec, 0x7f, 0xdc, 0x44, 0x26, 0x78, 0x65, 0xec, + 0xe0, 0xb0, 0x11, 0x6a, 0xfd, 0xc3, 0x69, 0x28, 0x31, 0x4a, 0x63, 0xe7, 0xb9, 0xa9, 0x0f, 0x15, + 0xa7, 0x2b, 0x99, 0x43, 0x55, 0x2e, 0xe8, 0x83, 0x75, 0x1d, 0x54, 0xed, 0x62, 0x13, 0x9a, 0x38, + 0x3a, 0xac, 0x8c, 0x76, 0x05, 0x2c, 0x6e, 0x1b, 0xa9, 0xc3, 0xc8, 0xf2, 0x37, 0x1d, 0x37, 0xa0, + 0x21, 0x0e, 0xed, 0xf8, 0xc2, 0xfc, 0x4d, 0x7e, 0x5c, 0xde, 0x94, 0xc7, 0xe5, 0xcd, 0x6d, 0x79, + 0x5c, 0xd6, 0x2e, 0x8a, 0xcd, 0xf8, 0x0c, 0xe5, 0x24, 0xf1, 0xfa, 0xf8, 0xed, 0xbf, 0xa8, 0x14, + 0x6c, 0xc9, 0x89, 0xbc, 0x09, 0xc3, 0x77, 0xfd, 0xe0, 0xc0, 0x89, 0xc4, 0x1c, 0xcc, 0x1c, 0x1d, + 0x56, 0x4a, 0x8f, 0x11, 0xa2, 0x2d, 0x29, 0x81, 0x43, 0xee, 0xc2, 0x94, 0xed, 0x77, 0x23, 0xba, + 0xed, 0xcb, 0x99, 0x1b, 0x42, 0xaa, 0x4b, 0x47, 0x87, 0x95, 0xf9, 0x80, 0x95, 0x34, 0x22, 0xbf, + 0x21, 0xa6, 0x50, 0xa3, 0x4f, 0x50, 0x91, 0x65, 0x98, 0xaa, 0xe2, 0xee, 0x2d, 0x46, 0x8d, 0xcf, + 0xd7, 0x58, 0xed, 0xe2, 0xd1, 0x61, 0xe5, 0x9c, 0x83, 0x25, 0x8d, 0x40, 0x14, 0xe9, 0x6c, 0x4c, + 0x22, 0xb2, 0x01, 0x67, 0x1e, 0x74, 0x1f, 0xd1, 0xc0, 0xa3, 0x11, 0x0d, 0x65, 0x8b, 0x46, 0xb0, + 0x45, 0x97, 0x8f, 0x0e, 0x2b, 0x17, 0x9e, 0xa8, 0xc2, 0x8c, 0x36, 0xa5, 0x49, 0x09, 0x85, 0xd3, + 0xa2, 0xa1, 0x4b, 0x4e, 0xe4, 0x3c, 0x72, 0x42, 0x8a, 0x9b, 0xd2, 0xf8, 0xc2, 0x59, 0x3e, 0xc4, + 0x37, 0x13, 0xa5, 0xb5, 0xab, 0x62, 0x94, 0xcf, 0xab, 0xbe, 0xb7, 0x44, 0x91, 0x56, 0x51, 0x92, + 0x27, 0xdb, 0x9b, 0xd5, 0xb9, 0x33, 0x86, 0xad, 0xc5, 0xbd, 0x59, 0x9d, 0x3b, 0xfa, 0xae, 0xa5, + 0x4e, 0xa0, 0x35, 0x18, 0xda, 0x61, 0xa7, 0x33, 0xee, 0x59, 0x53, 0x0b, 0x57, 0x44, 0x8b, 0x92, + 0xeb, 0xef, 0x26, 0xfb, 0x81, 0x88, 0xf8, 0xe5, 0x9d, 0xc6, 0x13, 0x5d, 0x3f, 0x8b, 0xb1, 0x8c, + 0x7c, 0x06, 0x20, 0x5a, 0x55, 0xed, 0x74, 0xca, 0xe3, 0xd8, 0xc9, 0x33, 0x66, 0x27, 0xab, 0x9d, + 0x4e, 0xed, 0x92, 0xe8, 0xdf, 0x59, 0xd5, 0x3f, 0xa7, 0xd3, 0xd1, 0xb8, 0x69, 0x4c, 0xc8, 0x27, + 0x30, 0x81, 0x5b, 0x9a, 0x9c, 0xd1, 0x09, 0x9c, 0xd1, 0xf3, 0x47, 0x87, 0x95, 0x39, 0xdc, 0xad, + 0x32, 0xe6, 0xd3, 0x20, 0x20, 0xbf, 0x06, 0xb3, 0x82, 0xdd, 0x43, 0xd7, 0x6b, 0xf9, 0xcf, 0xc2, + 0x25, 0x1a, 0x3e, 0x89, 0xfc, 0x0e, 0x6e, 0x7f, 0xe3, 0x0b, 0x17, 0xcc, 0xe6, 0x99, 0x38, 0xb5, + 0x1b, 0xa2, 0xa5, 0x96, 0x6a, 0xe9, 0x33, 0x8e, 0xd0, 0x68, 0x71, 0x0c, 0x7d, 0x83, 0xcc, 0x64, + 0x41, 0x56, 0xe1, 0xf4, 0x4e, 0x48, 0x8d, 0x3e, 0x4c, 0xe1, 0xf9, 0x50, 0x61, 0x33, 0xdc, 0x0d, + 0x69, 0x23, 0xaf, 0x1f, 0x49, 0x3a, 0x62, 0x03, 0x59, 0x0a, 0xfc, 0x4e, 0x62, 0x8d, 0x9f, 0xc6, + 0x11, 0xb1, 0x8e, 0x0e, 0x2b, 0x97, 0x5a, 0x81, 0xdf, 0x69, 0xe4, 0x2f, 0xf4, 0x0c, 0x6a, 0xf2, + 0x43, 0x38, 0xbb, 0xe8, 0x7b, 0x1e, 0x6d, 0xb2, 0x1d, 0x74, 0xc9, 0x75, 0xf6, 0x3c, 0x3f, 0x8c, + 0xdc, 0xe6, 0xea, 0x52, 0xb9, 0x14, 0x1f, 0x0f, 0x4d, 0x85, 0xd1, 0x68, 0x29, 0x14, 0xf3, 0x78, + 0xc8, 0xe1, 0x42, 0xbe, 0x82, 0x49, 0x51, 0x17, 0x0d, 0x70, 0x69, 0x9e, 0xe9, 0xbd, 0xd0, 0x14, + 0x32, 0x3f, 0xe8, 0x03, 0xf9, 0x93, 0x8b, 0x4e, 0x26, 0x2f, 0xf2, 0x35, 0x8c, 0xaf, 0xdf, 0xad, + 0xda, 0x34, 0xec, 0xf8, 0x5e, 0x48, 0xcb, 0x04, 0x67, 0xf4, 0x92, 0x60, 0xbd, 0x7e, 0xb7, 0x5a, + 0xed, 0x46, 0xfb, 0xd4, 0x8b, 0xdc, 0xa6, 0x13, 0x51, 0x89, 0x55, 0x9b, 0x67, 0x2b, 0xef, 0xe0, + 0xb1, 0xd3, 0x08, 0x04, 0x44, 0xeb, 0x85, 0xce, 0x8e, 0xcc, 0xc3, 0x68, 0xbd, 0xbe, 0xb2, 0xe6, + 0xef, 0xb9, 0x5e, 0x79, 0x9a, 0x0d, 0x86, 0xad, 0x7e, 0x93, 0xc7, 0x30, 0xab, 0xe9, 0x06, 0x0d, + 0xf6, 0x3f, 0x3d, 0xa0, 0x5e, 0x54, 0x9e, 0xc1, 0x36, 0x7c, 0x4f, 0x29, 0x37, 0x37, 0x75, 0x15, + 0xe2, 0xe9, 0x9d, 0x9b, 0xd5, 0xf8, 0x67, 0x5d, 0x12, 0xd5, 0x8a, 0xe5, 0x82, 0x3d, 0xe3, 0x64, + 0x94, 0x90, 0x6d, 0x18, 0xd9, 0xea, 0x06, 0x1d, 0x3f, 0xa4, 0xe5, 0x59, 0x1c, 0xb8, 0xab, 0xbd, + 0xbe, 0x50, 0x81, 0x5a, 0x9b, 0x65, 0x5b, 0x74, 0x87, 0xff, 0xd0, 0x7a, 0x27, 0x59, 0x91, 0x4f, + 0x61, 0xa2, 0x5e, 0x5f, 0x89, 0x0f, 0x94, 0xb3, 0x78, 0xa0, 0x5c, 0x38, 0x3a, 0xac, 0x94, 0x99, + 0x48, 0x15, 0x1f, 0x2a, 0xfa, 0x57, 0xa5, 0x53, 0x30, 0x0e, 0xdb, 0x6b, 0xf5, 0x98, 0xc3, 0x5c, + 0xcc, 0x81, 0x09, 0x73, 0xd9, 0x1c, 0x74, 0x0a, 0xf2, 0xcf, 0x0a, 0x70, 0x59, 0x67, 0x99, 0x35, + 0x30, 0xe5, 0x73, 0x2f, 0x32, 0x9a, 0x0b, 0x47, 0x87, 0x95, 0x9b, 0x66, 0x3f, 0x1a, 0x99, 0x93, + 0xa5, 0xb5, 0xad, 0x6f, 0x53, 0xb0, 0xbd, 0x7a, 0x07, 0x32, 0xdb, 0x3b, 0xff, 0xc2, 0xed, 0x35, + 0x47, 0xad, 0x7f, 0x7b, 0xfb, 0x35, 0xc5, 0xfa, 0x1c, 0xc6, 0xd4, 0xa6, 0x4d, 0x46, 0x60, 0xa0, + 0xda, 0x6e, 0x97, 0x4e, 0xb1, 0x3f, 0xea, 0xf5, 0x95, 0x52, 0x81, 0x4c, 0x01, 0xc4, 0x27, 0x55, + 0xa9, 0x48, 0x26, 0x60, 0x54, 0x9e, 0x24, 0xa5, 0x01, 0xc4, 0xef, 0x74, 0x4a, 0x83, 0x84, 0xc0, + 0x94, 0xb9, 0x9f, 0x95, 0x86, 0xac, 0xdf, 0x29, 0xc0, 0x98, 0xfa, 0x0e, 0xc9, 0x69, 0x18, 0xdf, + 0xd9, 0xa8, 0x6f, 0x2d, 0x2f, 0xae, 0xde, 0x5d, 0x5d, 0x5e, 0x2a, 0x9d, 0x22, 0x17, 0xe1, 0xdc, + 0x76, 0x7d, 0xa5, 0xb1, 0x54, 0x6b, 0xac, 0x6d, 0x2e, 0x56, 0xd7, 0x1a, 0x5b, 0xf6, 0xe6, 0xe7, + 0x5f, 0x34, 0xb6, 0x77, 0x36, 0x36, 0x96, 0xd7, 0x4a, 0x05, 0x52, 0x86, 0x19, 0x56, 0xfc, 0x60, + 0xa7, 0xb6, 0xac, 0x23, 0x94, 0x8a, 0xe4, 0x0a, 0x5c, 0xcc, 0x2a, 0x69, 0xac, 0x2c, 0x57, 0x97, + 0xd6, 0x96, 0xeb, 0xf5, 0xd2, 0x00, 0x99, 0x83, 0x69, 0x86, 0x52, 0xdd, 0xda, 0x32, 0x68, 0x07, + 0xad, 0x36, 0x8c, 0x6b, 0x1f, 0x00, 0xb9, 0x00, 0xe5, 0xc5, 0x65, 0x7b, 0xbb, 0xb1, 0xb5, 0x63, + 0x6f, 0x6d, 0xd6, 0x97, 0x1b, 0x66, 0x0b, 0x93, 0xa5, 0x6b, 0x9b, 0xf7, 0x56, 0x37, 0x1a, 0x0c, + 0x54, 0x2f, 0x15, 0x58, 0x33, 0x8c, 0xd2, 0xfa, 0xea, 0xc6, 0xbd, 0xb5, 0xe5, 0xc6, 0x4e, 0x7d, + 0x59, 0xa0, 0x14, 0xad, 0xdf, 0x28, 0xa6, 0x8e, 0x74, 0xb2, 0x00, 0xe3, 0x75, 0x6e, 0xaf, 0xc0, + 0x6d, 0x8e, 0x2b, 0x88, 0x4c, 0x46, 0x9b, 0x10, 0x66, 0x0c, 0xbe, 0x83, 0xe9, 0x48, 0x4c, 0x4a, + 0xdb, 0x62, 0x5f, 0x73, 0xd3, 0x6f, 0xeb, 0x52, 0x5a, 0x47, 0xc0, 0x6c, 0x55, 0x4a, 0x16, 0x34, + 0x79, 0x8e, 0x6b, 0x8b, 0xa8, 0x91, 0x48, 0x79, 0x4e, 0x3f, 0xdb, 0x95, 0x64, 0xb7, 0x10, 0x4f, + 0xa9, 0x10, 0xc3, 0x90, 0x26, 0x43, 0x96, 0x50, 0x78, 0xe4, 0x0d, 0x29, 0xe9, 0x72, 0xed, 0x0e, + 0x0f, 0xfb, 0x84, 0x5e, 0x22, 0x84, 0x5c, 0xab, 0x9b, 0x73, 0xb0, 0x92, 0x0f, 0x93, 0x6b, 0x46, + 0x0c, 0x06, 0x32, 0x4b, 0x9c, 0x9f, 0x76, 0x02, 0x95, 0x54, 0x60, 0x88, 0xef, 0xb8, 0x7c, 0x3c, + 0x50, 0xb6, 0x6e, 0x33, 0x80, 0xcd, 0xe1, 0xd6, 0x9f, 0x0c, 0xe8, 0x42, 0x06, 0x93, 0xa5, 0xb5, + 0xf1, 0x46, 0x59, 0x1a, 0xc7, 0x19, 0xa1, 0x4c, 0x15, 0xe4, 0x5f, 0x09, 0xaa, 0x82, 0x03, 0xb1, + 0x2a, 0x28, 0x3e, 0x35, 0xae, 0x0a, 0xc6, 0x28, 0x6c, 0x16, 0x85, 0xd8, 0x86, 0x5c, 0x07, 0xe3, + 0x59, 0x14, 0xa2, 0x9e, 0x98, 0x45, 0x0d, 0x89, 0x7c, 0x00, 0x50, 0x7d, 0x58, 0x47, 0x9d, 0xc7, + 0xde, 0x10, 0xa2, 0x2b, 0x1e, 0x32, 0xce, 0xb3, 0x50, 0xa8, 0x54, 0x81, 0xae, 0x33, 0x6a, 0xd8, + 0xa4, 0x06, 0x93, 0xd5, 0x9f, 0x74, 0x03, 0xba, 0xda, 0x62, 0xe7, 0x54, 0xc4, 0x95, 0xe3, 0x31, + 0xbe, 0x91, 0x3a, 0xac, 0xa0, 0xe1, 0x8a, 0x12, 0x8d, 0x81, 0x49, 0x42, 0x36, 0xe1, 0xcc, 0xbd, + 0xc5, 0x2d, 0xb1, 0xae, 0xaa, 0xcd, 0xa6, 0xdf, 0xf5, 0x22, 0x21, 0xaf, 0x5e, 0x39, 0x3a, 0xac, + 0x5c, 0xdc, 0x6b, 0x76, 0x1a, 0x72, 0x0d, 0x3a, 0xbc, 0x58, 0x17, 0x58, 0x53, 0xb4, 0xe4, 0x2a, + 0x0c, 0xec, 0xd8, 0xab, 0x42, 0x73, 0x3e, 0x73, 0x74, 0x58, 0x99, 0xec, 0x06, 0xae, 0x46, 0xc2, + 0x4a, 0xc9, 0xfb, 0x00, 0xdb, 0x4e, 0xb0, 0x47, 0xa3, 0x2d, 0x3f, 0x88, 0x50, 0xe0, 0x9c, 0xac, + 0x9d, 0x3b, 0x3a, 0xac, 0xcc, 0x46, 0x08, 0x6d, 0xb0, 0xed, 0x4f, 0xef, 0x74, 0x8c, 0x7c, 0x7f, + 0x70, 0xb4, 0x58, 0x1a, 0xb0, 0xc7, 0xea, 0x34, 0x0c, 0xb9, 0x7e, 0xd8, 0x86, 0xa9, 0x7b, 0x34, + 0x62, 0x0b, 0x57, 0xea, 0x3b, 0xbd, 0xa7, 0xf5, 0x23, 0x18, 0x7f, 0xe8, 0x46, 0xfb, 0x75, 0xda, + 0x0c, 0x68, 0x24, 0x6d, 0x3d, 0x38, 0xe4, 0xcf, 0xdc, 0x68, 0xbf, 0x11, 0x72, 0xb8, 0x7e, 0xae, + 0x6b, 0xe8, 0xd6, 0x32, 0x9c, 0x16, 0xb5, 0x29, 0xf5, 0x6a, 0xc1, 0x64, 0x58, 0x40, 0x86, 0x38, + 0xed, 0x3a, 0x43, 0x93, 0xcd, 0x3f, 0x2f, 0xc2, 0xec, 0xe2, 0xbe, 0xe3, 0xed, 0xd1, 0x2d, 0x27, + 0x0c, 0x9f, 0xf9, 0x41, 0x4b, 0x6b, 0x3c, 0xea, 0x96, 0xa9, 0xc6, 0xa3, 0x32, 0xb9, 0x00, 0xe3, + 0x9b, 0xed, 0x96, 0xa4, 0x11, 0x7a, 0x2f, 0xd6, 0xe5, 0xb7, 0x5b, 0x8d, 0x8e, 0xe4, 0xa5, 0x23, + 0x31, 0x9a, 0x0d, 0xfa, 0x4c, 0xd1, 0x0c, 0xc4, 0x34, 0x1e, 0x7d, 0xa6, 0xd1, 0x68, 0x48, 0x64, + 0x19, 0xce, 0xd4, 0x69, 0xd3, 0xf7, 0x5a, 0x77, 0x9d, 0x66, 0xe4, 0x07, 0xdb, 0xfe, 0x13, 0xea, + 0x89, 0x05, 0x8d, 0x8a, 0x41, 0x88, 0x85, 0x8d, 0xc7, 0x58, 0xda, 0x88, 0x58, 0xb1, 0x9d, 0xa6, + 0x20, 0x9b, 0x30, 0xfa, 0x50, 0x58, 0x0c, 0x85, 0xb2, 0x7c, 0xed, 0xa6, 0x32, 0x21, 0x2e, 0x06, + 0x14, 0x57, 0xa1, 0xd3, 0x56, 0xea, 0xbe, 0x92, 0xb3, 0x70, 0x2b, 0x93, 0x98, 0xb6, 0x62, 0x62, + 0xed, 0xc0, 0xe4, 0x56, 0xbb, 0xbb, 0xe7, 0x7a, 0x6c, 0xd3, 0xa9, 0xd3, 0x1f, 0x93, 0x25, 0x80, + 0x18, 0x20, 0xec, 0x80, 0xd3, 0x42, 0xc5, 0x8e, 0x0b, 0x76, 0xdf, 0x12, 0x5f, 0x2e, 0x42, 0x50, + 0x23, 0xb2, 0x35, 0x3a, 0xeb, 0x7f, 0x0c, 0x00, 0x11, 0x13, 0x80, 0x87, 0x60, 0x9d, 0x46, 0xec, + 0x78, 0x3a, 0x0b, 0x45, 0x65, 0xae, 0x1b, 0x3e, 0x3a, 0xac, 0x14, 0xdd, 0x96, 0x5d, 0x5c, 0x5d, + 0x22, 0x6f, 0xc3, 0x10, 0xa2, 0xe1, 0xf8, 0x4f, 0xa9, 0xfa, 0x74, 0x0e, 0x7c, 0xf3, 0xc1, 0xd3, + 0xd7, 0xe6, 0xc8, 0xe4, 0x1d, 0x18, 0x5b, 0xa2, 0x6d, 0xba, 0xe7, 0x44, 0xbe, 0xdc, 0x4e, 0xb8, + 0x01, 0x4c, 0x02, 0xb5, 0x35, 0x17, 0x63, 0x32, 0x75, 0xd8, 0xa6, 0x4e, 0xe8, 0x7b, 0xba, 0x3a, + 0x1c, 0x20, 0x44, 0x57, 0x87, 0x39, 0x0e, 0xf9, 0x3b, 0x05, 0x18, 0xaf, 0x7a, 0x9e, 0x30, 0x2c, + 0x85, 0x62, 0xd4, 0x67, 0x6f, 0x2a, 0x4b, 0xec, 0x9a, 0xf3, 0x88, 0xb6, 0x77, 0x9d, 0x76, 0x97, + 0x86, 0xb5, 0xaf, 0x99, 0x86, 0xf2, 0xef, 0x0e, 0x2b, 0x1f, 0x9e, 0xc0, 0x54, 0x14, 0xdb, 0x74, + 0xb7, 0x03, 0xc7, 0x8d, 0x42, 0xf6, 0xd5, 0x3a, 0x71, 0x85, 0xfa, 0x77, 0xa3, 0xb5, 0x23, 0x3e, + 0x1b, 0x86, 0xfb, 0x9d, 0x0d, 0xe4, 0x00, 0x4e, 0x57, 0xc3, 0xb0, 0x7b, 0x40, 0xeb, 0x91, 0x13, + 0x44, 0xdb, 0xee, 0x01, 0xc5, 0x0d, 0xa9, 0xb7, 0x71, 0xe1, 0x3b, 0x3f, 0x3d, 0xac, 0x14, 0x98, + 0x52, 0xe4, 0x20, 0x29, 0x93, 0x7b, 0x82, 0xa8, 0x11, 0xb9, 0xfa, 0xf1, 0x86, 0x66, 0x86, 0x24, + 0x6f, 0xeb, 0xaa, 0x12, 0x48, 0x56, 0x97, 0xf2, 0x66, 0xdc, 0x5a, 0x84, 0x0b, 0xf7, 0x68, 0x64, + 0xd3, 0x90, 0x46, 0xf2, 0x1b, 0xc1, 0x15, 0x1e, 0x1b, 0x77, 0x47, 0xf0, 0xb7, 0x22, 0xc6, 0xe9, + 0xe7, 0xdf, 0x85, 0x2c, 0xb1, 0xfe, 0x8f, 0x02, 0x54, 0x16, 0x03, 0xca, 0xf5, 0x89, 0x1c, 0x46, + 0xbd, 0xf7, 0xae, 0x0b, 0x30, 0xb8, 0xfd, 0xbc, 0x23, 0xad, 0x32, 0x58, 0xca, 0x26, 0xc5, 0x46, + 0xe8, 0x31, 0x8d, 0x5c, 0xd6, 0x63, 0x98, 0xb5, 0xa9, 0x47, 0x9f, 0x39, 0x8f, 0xda, 0xd4, 0xb0, + 0x13, 0x55, 0x60, 0x88, 0x7f, 0xe8, 0xa9, 0x2e, 0x70, 0xf8, 0xc9, 0x6c, 0x6e, 0xd6, 0x24, 0x8c, + 0x6f, 0xb9, 0xde, 0x9e, 0xe0, 0x6e, 0xfd, 0xe5, 0x20, 0x4c, 0xf0, 0xdf, 0x42, 0x45, 0x4a, 0x1c, + 0x97, 0x85, 0xe3, 0x1c, 0x97, 0xef, 0xc1, 0x24, 0x3b, 0x6f, 0x68, 0xb0, 0x4b, 0x03, 0xb6, 0xff, + 0x8b, 0x91, 0x40, 0x75, 0x2f, 0xc4, 0x82, 0xc6, 0x53, 0x5e, 0x62, 0x9b, 0x88, 0x64, 0x0d, 0xa6, + 0x38, 0xe0, 0x2e, 0x75, 0xa2, 0x6e, 0x6c, 0xb1, 0x3a, 0x2d, 0x74, 0x22, 0x09, 0xe6, 0x4b, 0x53, + 0xf0, 0x7a, 0x2c, 0x80, 0x76, 0x82, 0x96, 0x7c, 0x02, 0xa7, 0xb7, 0x02, 0xff, 0x9b, 0xe7, 0x9a, + 0x80, 0xc0, 0xbf, 0x4e, 0xae, 0x3d, 0xb1, 0xa2, 0x86, 0x2e, 0x26, 0x24, 0xb1, 0xc9, 0x1b, 0x30, + 0xba, 0x1a, 0xd6, 0xfc, 0xc0, 0xf5, 0xf6, 0xf0, 0x1b, 0x1d, 0xe5, 0x86, 0x7e, 0x37, 0x6c, 0x3c, + 0x42, 0xa0, 0xad, 0x8a, 0x13, 0x26, 0xe9, 0x91, 0xfe, 0x26, 0xe9, 0xdb, 0x00, 0x6b, 0xbe, 0xd3, + 0xaa, 0xb6, 0xdb, 0x8b, 0xd5, 0x10, 0x4f, 0x62, 0x71, 0x1e, 0xb5, 0x7d, 0xa7, 0xd5, 0x70, 0xda, + 0xed, 0x46, 0xd3, 0x09, 0x6d, 0x0d, 0x87, 0x7c, 0x09, 0xe7, 0x42, 0x77, 0xcf, 0xc3, 0xce, 0x35, + 0x9c, 0xf6, 0x9e, 0x1f, 0xb8, 0xd1, 0xfe, 0x41, 0x23, 0xec, 0xba, 0x11, 0xb7, 0x07, 0x4d, 0x2d, + 0x5c, 0x12, 0x9b, 0x5c, 0x5d, 0xe2, 0x55, 0x25, 0x5a, 0x9d, 0x61, 0xd9, 0x73, 0x61, 0x76, 0x01, + 0x79, 0x08, 0x93, 0x6b, 0x6e, 0x93, 0x7a, 0x21, 0x45, 0x03, 0xdf, 0x73, 0xb4, 0x16, 0xf5, 0xfe, + 0x98, 0xd9, 0x20, 0x4e, 0xb6, 0x75, 0x22, 0xfc, 0x74, 0x4d, 0x3e, 0xf7, 0x07, 0x47, 0x87, 0x4b, + 0x23, 0xf6, 0x69, 0x01, 0x7c, 0xe8, 0x04, 0x9e, 0xeb, 0xed, 0x85, 0xd6, 0xff, 0x4b, 0x60, 0x54, + 0xcd, 0xd3, 0x4d, 0x5d, 0x53, 0x11, 0x47, 0x33, 0x2e, 0xd9, 0xd8, 0x0e, 0x67, 0x6b, 0x18, 0xe4, + 0x1c, 0xea, 0x2e, 0x42, 0x28, 0x18, 0x61, 0x9f, 0x90, 0xd3, 0xe9, 0xd8, 0x0c, 0xc6, 0xb6, 0x86, + 0xa5, 0x1a, 0x2e, 0x9a, 0x51, 0xbe, 0x35, 0xb4, 0x1e, 0xd9, 0xc5, 0xa5, 0x1a, 0xfb, 0x26, 0x37, + 0x57, 0x97, 0x16, 0x71, 0xfe, 0x47, 0xf9, 0x37, 0xe9, 0xbb, 0xad, 0xa6, 0x8d, 0x50, 0x56, 0x5a, + 0xaf, 0xae, 0xaf, 0x89, 0x39, 0xc6, 0xd2, 0xd0, 0x39, 0x68, 0xdb, 0x08, 0x65, 0xd2, 0x2e, 0x37, + 0xa9, 0x2c, 0xfa, 0x5e, 0x14, 0xf8, 0xed, 0x10, 0x45, 0xb8, 0x51, 0xbe, 0x06, 0x85, 0x2d, 0xa6, + 0x29, 0x8a, 0xec, 0x04, 0x2a, 0x79, 0x08, 0x73, 0xd5, 0xd6, 0x53, 0xc7, 0x6b, 0xd2, 0x16, 0x2f, + 0x79, 0xe8, 0x07, 0x4f, 0x1e, 0xb7, 0xfd, 0x67, 0x21, 0x2e, 0x92, 0x51, 0x61, 0xba, 0x14, 0x28, + 0xd2, 0xb4, 0xf3, 0x4c, 0x22, 0xd9, 0x79, 0xd4, 0x6c, 0x1f, 0x58, 0x6c, 0xfb, 0xdd, 0x96, 0x58, + 0x3a, 0xb8, 0x0f, 0x34, 0x19, 0xc0, 0xe6, 0x70, 0x36, 0x4a, 0x2b, 0xf5, 0x75, 0x5c, 0x18, 0x62, + 0x94, 0xf6, 0xc3, 0x03, 0x9b, 0xc1, 0xc8, 0x35, 0x18, 0x91, 0x82, 0x3b, 0xbf, 0xc9, 0x40, 0x0b, + 0xba, 0x14, 0xd8, 0x65, 0x19, 0xfb, 0x8e, 0x6d, 0xda, 0xf4, 0x9f, 0xd2, 0xe0, 0xf9, 0xa2, 0xdf, + 0xa2, 0xd2, 0xac, 0x25, 0xcc, 0x36, 0xbc, 0xa0, 0xd1, 0x64, 0x25, 0xb6, 0x89, 0xc8, 0x2a, 0xe0, + 0x07, 0x77, 0x58, 0x3e, 0x1d, 0x57, 0xc0, 0x0f, 0xf6, 0xd0, 0x96, 0x65, 0x64, 0x09, 0xce, 0x54, + 0xbb, 0x91, 0x7f, 0xe0, 0x44, 0x6e, 0x73, 0xa7, 0xb3, 0x17, 0x38, 0xac, 0x92, 0x12, 0x12, 0xa0, + 0x22, 0xe3, 0xc8, 0xc2, 0x46, 0x57, 0x94, 0xda, 0x69, 0x02, 0xf2, 0x2e, 0x4c, 0xac, 0x86, 0xdc, + 0x74, 0xe9, 0x84, 0xb4, 0x85, 0xf6, 0x27, 0xd1, 0x4a, 0x37, 0x6c, 0xa0, 0x21, 0xb3, 0xc1, 0x54, + 0x9f, 0x96, 0x6d, 0xe0, 0x11, 0x0b, 0x86, 0xab, 0x61, 0xe8, 0x86, 0x11, 0x9a, 0x95, 0x46, 0x6b, + 0x70, 0x74, 0x58, 0x19, 0x76, 0x10, 0x62, 0x8b, 0x12, 0xf2, 0x10, 0xc6, 0x97, 0x28, 0x93, 0x9c, + 0xb7, 0x83, 0x6e, 0x18, 0xa1, 0x91, 0x68, 0x7c, 0xe1, 0x9c, 0xd8, 0x8d, 0xb4, 0x12, 0xb1, 0x96, + 0xb9, 0x88, 0xda, 0x42, 0x78, 0x23, 0x62, 0x05, 0xfa, 0x51, 0xab, 0xe1, 0x33, 0xb5, 0x40, 0xd0, + 0xac, 0xb8, 0x2d, 0xb6, 0xbf, 0xcc, 0x60, 0x1b, 0x50, 0x2d, 0x10, 0x1b, 0x5a, 0x63, 0x1f, 0x4b, + 0x74, 0xb5, 0xc0, 0x20, 0x21, 0xcd, 0x94, 0x35, 0x7c, 0xd6, 0xb0, 0x78, 0x9a, 0x85, 0xb2, 0x89, + 0x27, 0xb4, 0x95, 0x7f, 0x04, 0xe3, 0x8b, 0xdd, 0x30, 0xf2, 0x0f, 0xb6, 0xf7, 0xe9, 0x01, 0x45, + 0x43, 0x92, 0x50, 0x7e, 0x9a, 0x08, 0x6e, 0x44, 0x0c, 0xae, 0x77, 0x53, 0x43, 0x27, 0x9f, 0x01, + 0x91, 0x5a, 0xcc, 0x3d, 0xb6, 0x3e, 0x3c, 0xb6, 0x96, 0xd1, 0x96, 0x34, 0xca, 0x55, 0x17, 0xa9, + 0xfc, 0x34, 0xf6, 0x54, 0xb1, 0x6e, 0xcf, 0x4c, 0x13, 0xb3, 0x06, 0xf1, 0x26, 0xde, 0x0b, 0x9c, + 0xce, 0x7e, 0xb9, 0x1c, 0xab, 0x06, 0xa2, 0x53, 0x7b, 0x0c, 0x6e, 0x88, 0x38, 0x31, 0x3a, 0xa9, + 0x03, 0xf0, 0x9f, 0x6b, 0x6c, 0xe2, 0xb9, 0xf5, 0xa9, 0x6c, 0x8c, 0x17, 0x2b, 0x90, 0x63, 0x85, + 0xea, 0x8e, 0x60, 0xdb, 0x76, 0x8d, 0xd9, 0xd4, 0xd8, 0x90, 0x27, 0x50, 0xe2, 0xbf, 0xd6, 0x7d, + 0xcf, 0x8d, 0xf8, 0x79, 0x31, 0x6f, 0x98, 0x2a, 0x93, 0xc5, 0xb2, 0x02, 0x34, 0x11, 0x8b, 0x0a, + 0x0e, 0x54, 0xa9, 0x56, 0x4d, 0x8a, 0x31, 0xd9, 0x82, 0xf1, 0xad, 0xc0, 0x6f, 0x75, 0x9b, 0x11, + 0x4a, 0x19, 0xe7, 0x71, 0xe3, 0x27, 0xa2, 0x1e, 0xad, 0x84, 0x8f, 0x49, 0x87, 0x03, 0x1a, 0xec, + 0x5c, 0xd0, 0xc7, 0x44, 0x43, 0x24, 0x35, 0x18, 0xde, 0xf2, 0xdb, 0x6e, 0xf3, 0x79, 0xf9, 0x02, + 0x36, 0x7a, 0x46, 0x32, 0x43, 0xa0, 0x6c, 0x2a, 0x8a, 0xb4, 0x1d, 0x04, 0xe9, 0x22, 0x2d, 0x47, + 0x22, 0x55, 0x98, 0xfc, 0x8c, 0x2d, 0x18, 0xd7, 0xf7, 0x3c, 0xc7, 0x0d, 0x68, 0xf9, 0x22, 0xce, + 0x0b, 0x9a, 0xf1, 0x7f, 0xac, 0x17, 0xe8, 0xcb, 0xd9, 0xa0, 0x20, 0xab, 0x70, 0x7a, 0x35, 0xac, + 0x47, 0x81, 0xdb, 0xa1, 0xeb, 0x8e, 0xe7, 0xec, 0xd1, 0x56, 0xf9, 0x52, 0x6c, 0x47, 0x77, 0xc3, + 0x46, 0x88, 0x65, 0x8d, 0x03, 0x5e, 0xa8, 0xdb, 0xd1, 0x13, 0x74, 0xe4, 0x73, 0x98, 0x59, 0xfe, + 0x26, 0x62, 0x2b, 0xa6, 0x5d, 0xed, 0xb6, 0xdc, 0xa8, 0x1e, 0xf9, 0x81, 0xb3, 0x47, 0xcb, 0x15, + 0xe4, 0xf7, 0xda, 0xd1, 0x61, 0xe5, 0x32, 0x15, 0xe5, 0x0d, 0x87, 0x21, 0x34, 0x42, 0x8e, 0xa1, + 0xdf, 0x8f, 0x67, 0x71, 0x60, 0xa3, 0x5f, 0xef, 0x76, 0x98, 0xb4, 0x8d, 0xa3, 0x7f, 0xd9, 0x18, + 0x7d, 0xad, 0x84, 0x8f, 0x7e, 0xc8, 0x01, 0xa9, 0xd1, 0xd7, 0x10, 0x89, 0x0d, 0xe4, 0xbe, 0xef, + 0x7a, 0xd5, 0x66, 0xe4, 0x3e, 0xa5, 0x42, 0x63, 0x0e, 0xcb, 0x57, 0xb0, 0xa5, 0x68, 0xf3, 0xff, + 0x65, 0xdf, 0xf5, 0x1a, 0x0e, 0x16, 0x37, 0x42, 0x51, 0xae, 0x7f, 0x23, 0x69, 0x6a, 0xf2, 0x43, + 0x38, 0xbb, 0xee, 0x3f, 0x72, 0xdb, 0x94, 0x6f, 0x39, 0x7c, 0x58, 0xd0, 0x7e, 0x69, 0x21, 0x5f, + 0xb4, 0xf9, 0x1f, 0x20, 0x46, 0x43, 0xec, 0x56, 0x07, 0x0a, 0x47, 0xb7, 0xf9, 0x67, 0x73, 0x21, + 0xcb, 0x30, 0x81, 0xdf, 0x65, 0x1b, 0x7f, 0x86, 0xe5, 0xab, 0xa8, 0xd2, 0x5d, 0x49, 0x48, 0x69, + 0x37, 0x97, 0x35, 0x9c, 0x65, 0x2f, 0x0a, 0x9e, 0xdb, 0x06, 0x19, 0xf9, 0x18, 0xe6, 0x93, 0xcb, + 0x7b, 0xd1, 0xf7, 0x1e, 0xbb, 0x7b, 0xdd, 0x80, 0xb6, 0xca, 0xaf, 0xb1, 0xa6, 0xda, 0x3d, 0x30, + 0xc8, 0x57, 0x30, 0x8b, 0x67, 0x5d, 0xd5, 0xf3, 0xbd, 0xe7, 0x07, 0xee, 0x4f, 0x50, 0x7e, 0x66, + 0x62, 0xef, 0x35, 0x14, 0x7b, 0xaf, 0x1d, 0x1d, 0x56, 0xae, 0xe0, 0x99, 0xd8, 0x70, 0x74, 0x8c, + 0x84, 0xd5, 0x3a, 0x9b, 0xc7, 0xfc, 0x43, 0x38, 0x93, 0x6a, 0x3f, 0x29, 0xc1, 0xc0, 0x13, 0x71, + 0x3f, 0x3b, 0x66, 0xb3, 0x3f, 0xc9, 0x9b, 0x30, 0xf4, 0x94, 0x29, 0x6a, 0x28, 0x8e, 0xc4, 0x37, + 0x7e, 0x1a, 0xe9, 0xaa, 0xf7, 0xd8, 0xb7, 0x39, 0xd2, 0x07, 0xc5, 0xf7, 0x0a, 0xf7, 0x07, 0x47, + 0xc7, 0x4b, 0x13, 0xfc, 0x5a, 0xfd, 0xfe, 0xe0, 0xe8, 0x64, 0x69, 0xca, 0xaa, 0xc2, 0xe9, 0x04, + 0x3e, 0x29, 0xc3, 0x08, 0xf5, 0x98, 0xf0, 0xdf, 0xe2, 0x02, 0x91, 0x2d, 0x7f, 0x92, 0x19, 0x18, + 0x6a, 0xbb, 0x07, 0x6e, 0x84, 0x15, 0x0e, 0xd9, 0xfc, 0x87, 0xf5, 0xbb, 0x05, 0x20, 0xe9, 0xf3, + 0x88, 0xdc, 0x4a, 0xb0, 0xe1, 0xa2, 0xaf, 0x00, 0xe9, 0x17, 0x07, 0x92, 0xfb, 0x67, 0x30, 0xcd, + 0x17, 0x84, 0x3c, 0x39, 0xb5, 0xba, 0xf8, 0x8e, 0x9d, 0x51, 0xac, 0x1b, 0x9b, 0x44, 0x31, 0x9e, + 0xb3, 0x6b, 0xd8, 0xb4, 0x2e, 0xcc, 0x66, 0x9e, 0x44, 0x64, 0x1d, 0x66, 0x0f, 0x7c, 0x2f, 0xda, + 0x6f, 0x3f, 0x97, 0x07, 0x91, 0xa8, 0xad, 0x80, 0xb5, 0xe1, 0xe6, 0x9b, 0x89, 0x60, 0x4f, 0x0b, + 0xb0, 0xe0, 0x88, 0xf5, 0x08, 0xa3, 0x93, 0xec, 0x89, 0x65, 0xc3, 0x99, 0xd4, 0x86, 0x4e, 0x7e, + 0x00, 0x13, 0x4d, 0x54, 0xee, 0x8c, 0x9a, 0xf8, 0x71, 0xa6, 0xc1, 0xf5, 0x6f, 0x95, 0xc3, 0x79, + 0x57, 0xfe, 0x49, 0x01, 0xe6, 0x72, 0xb6, 0xf2, 0x93, 0x0f, 0xf5, 0x17, 0x70, 0xf6, 0xc0, 0xf9, + 0xa6, 0x11, 0xa0, 0xee, 0xde, 0x08, 0x1c, 0x2f, 0x31, 0xda, 0xb8, 0x4d, 0x65, 0x63, 0xe8, 0xbe, + 0x4d, 0x07, 0xce, 0x37, 0x36, 0x22, 0xd8, 0xac, 0x9c, 0xb7, 0xf3, 0x53, 0x98, 0x34, 0x36, 0xef, + 0x13, 0x37, 0xce, 0xba, 0x03, 0x67, 0x96, 0x68, 0x9b, 0x46, 0xf4, 0xd8, 0x36, 0x3b, 0x6b, 0x0b, + 0xa0, 0x4e, 0x0f, 0x9c, 0xce, 0xbe, 0xcf, 0x84, 0xfa, 0x9a, 0xfe, 0x4b, 0xd8, 0x7c, 0x88, 0x54, + 0x4f, 0x64, 0xc1, 0xee, 0x5b, 0x5c, 0xd0, 0x0f, 0x15, 0xa6, 0xad, 0x51, 0x59, 0xff, 0xba, 0x08, + 0x44, 0xec, 0xbe, 0x01, 0x75, 0x0e, 0x64, 0x33, 0xde, 0x87, 0x09, 0xae, 0xa1, 0x73, 0x30, 0x36, + 0x67, 0x7c, 0x61, 0x5a, 0x7c, 0x79, 0x7a, 0xd1, 0xca, 0x29, 0xdb, 0x40, 0x65, 0xa4, 0x36, 0xe5, + 0xa6, 0x05, 0x24, 0x2d, 0x1a, 0xa4, 0x7a, 0x11, 0x23, 0xd5, 0x7f, 0x93, 0x4f, 0x60, 0x6a, 0xd1, + 0x3f, 0xe8, 0xb0, 0x31, 0x11, 0xc4, 0x03, 0xc2, 0x6c, 0x23, 0xea, 0x35, 0x0a, 0x57, 0x4e, 0xd9, + 0x09, 0x74, 0xb2, 0x01, 0xd3, 0x77, 0xdb, 0xdd, 0x70, 0xbf, 0xea, 0xb5, 0x16, 0xdb, 0x7e, 0x28, + 0xb9, 0x0c, 0x0a, 0x4d, 0x4b, 0xec, 0x9d, 0x69, 0x8c, 0x95, 0x53, 0x76, 0x16, 0x21, 0xb9, 0x06, + 0x43, 0xcb, 0x4f, 0xd9, 0x9e, 0x2e, 0x3d, 0x5c, 0x84, 0x03, 0xde, 0xa6, 0x47, 0x37, 0x1f, 0xaf, + 0x9c, 0xb2, 0x79, 0x69, 0x6d, 0x0c, 0x46, 0xa4, 0x76, 0x7f, 0x8b, 0xc9, 0xdb, 0x6a, 0x38, 0xeb, + 0x91, 0x13, 0x75, 0x43, 0x32, 0x0f, 0xa3, 0x3b, 0x1d, 0xa6, 0x74, 0x4a, 0xb3, 0x88, 0xad, 0x7e, + 0x5b, 0x6f, 0x9a, 0x23, 0x4d, 0x2e, 0x40, 0x6c, 0xd3, 0x15, 0xc8, 0x9a, 0x91, 0x77, 0xc5, 0x1c, + 0xdc, 0xde, 0xd8, 0x46, 0xbd, 0xc5, 0x44, 0xbd, 0xa5, 0xe4, 0x58, 0x5b, 0xb3, 0x99, 0x83, 0x67, + 0x7d, 0x0e, 0x97, 0x76, 0x3a, 0x21, 0x0d, 0xa2, 0x6a, 0xa7, 0xd3, 0x76, 0x9b, 0xfc, 0x86, 0x0c, + 0xad, 0x00, 0x72, 0xb1, 0xbc, 0x0b, 0xc3, 0x1c, 0x20, 0x96, 0x89, 0x5c, 0x83, 0xd5, 0x4e, 0x47, + 0xd8, 0x1e, 0xde, 0xe2, 0x92, 0x3f, 0xb7, 0x26, 0xd8, 0x02, 0xdb, 0xfa, 0xed, 0x02, 0x5c, 0xe2, + 0x5f, 0x40, 0x2e, 0xeb, 0xef, 0xc2, 0x18, 0xfa, 0xbf, 0x75, 0x9c, 0xa6, 0xfc, 0x26, 0xb8, 0x23, + 0xa0, 0x04, 0xda, 0x71, 0xb9, 0xe6, 0x59, 0x58, 0xcc, 0xf7, 0x2c, 0x94, 0x1f, 0xd8, 0x40, 0xe6, + 0x07, 0xf6, 0x19, 0x58, 0xa2, 0x45, 0xed, 0x76, 0xaa, 0x51, 0xe1, 0x8b, 0xb4, 0xca, 0xfa, 0xcf, + 0x45, 0x98, 0xbb, 0x47, 0x3d, 0x1a, 0x38, 0xd8, 0x4f, 0xc3, 0xca, 0xa5, 0x7b, 0x18, 0x15, 0x7a, + 0x7a, 0x18, 0x55, 0xa4, 0xdd, 0xb0, 0x88, 0x76, 0xc3, 0x94, 0xbb, 0x14, 0xd3, 0x45, 0x77, 0xec, + 0x55, 0xd1, 0x2d, 0xd4, 0x45, 0xbb, 0x81, 0xcb, 0x6f, 0x19, 0x56, 0x63, 0xef, 0xa4, 0xc1, 0xbe, + 0x36, 0x87, 0x69, 0xe1, 0xad, 0x31, 0x22, 0xbc, 0x93, 0x4c, 0x9f, 0xa4, 0x0d, 0x18, 0xe6, 0xe6, + 0x4e, 0xbc, 0xdb, 0x1a, 0x5f, 0xb8, 0x21, 0xbe, 0xa9, 0x9c, 0x0e, 0x0a, 0xdb, 0x28, 0x1e, 0xec, + 0x7c, 0x09, 0x44, 0x08, 0xb0, 0x05, 0x97, 0xf9, 0xcf, 0x60, 0x5c, 0x43, 0x39, 0xce, 0xd9, 0xaf, + 0xcc, 0xae, 0x4c, 0x1c, 0xf5, 0xf6, 0xb8, 0x05, 0x57, 0x3b, 0xfb, 0xad, 0x0f, 0xa1, 0x9c, 0x6e, + 0x8d, 0x30, 0xb5, 0xf5, 0xb3, 0xec, 0x59, 0x4b, 0x30, 0x73, 0x8f, 0x46, 0xb8, 0x70, 0xf1, 0x23, + 0xd2, 0xbc, 0xec, 0x12, 0xdf, 0x99, 0xdc, 0x55, 0x11, 0xc8, 0x16, 0x98, 0xf6, 0x95, 0xd6, 0x61, + 0x36, 0xc1, 0x45, 0xd4, 0xff, 0x01, 0x8c, 0x08, 0x90, 0xda, 0x51, 0x85, 0xab, 0x2e, 0x7d, 0x24, + 0x0a, 0x76, 0x17, 0xf8, 0xba, 0x15, 0x9c, 0x6d, 0x49, 0x60, 0xed, 0xc3, 0x59, 0x76, 0xcc, 0xc6, + 0x5c, 0xd5, 0x72, 0x3c, 0x0f, 0x63, 0x1d, 0x26, 0x28, 0x84, 0xee, 0x4f, 0xf8, 0x32, 0x1a, 0xb2, + 0x47, 0x19, 0xa0, 0xee, 0xfe, 0x84, 0x92, 0x8b, 0x00, 0x58, 0x88, 0xdd, 0x14, 0xbb, 0x00, 0xa2, + 0x73, 0x53, 0x26, 0x01, 0xf4, 0xd1, 0xe3, 0xeb, 0xc6, 0xc6, 0xbf, 0xad, 0x00, 0xe6, 0x52, 0x35, + 0x89, 0x0e, 0xdc, 0x82, 0x51, 0x29, 0x1f, 0x27, 0x2e, 0x19, 0xf4, 0x1e, 0xd8, 0x0a, 0x89, 0xbc, + 0x0e, 0xa7, 0x3d, 0xfa, 0x4d, 0xd4, 0x48, 0xb5, 0x61, 0x92, 0x81, 0xb7, 0x64, 0x3b, 0xac, 0x5f, + 0x42, 0xc3, 0x72, 0xdd, 0xf3, 0x9f, 0x3d, 0x6e, 0x3b, 0x4f, 0x68, 0xaa, 0xe2, 0x1f, 0xc0, 0x68, + 0xbd, 0x7f, 0xc5, 0xfc, 0xf3, 0x91, 0x95, 0xdb, 0x8a, 0xc4, 0x6a, 0xc3, 0x3c, 0xeb, 0x52, 0xbd, + 0xba, 0xbe, 0xb6, 0xda, 0xda, 0xfa, 0xb6, 0x07, 0xf0, 0x29, 0x9c, 0xcf, 0xac, 0xed, 0xdb, 0x1e, + 0xc4, 0x3f, 0x1a, 0x84, 0x39, 0x7e, 0x98, 0xa4, 0x57, 0xf0, 0xf1, 0xb7, 0x9a, 0x5f, 0xc8, 0x7d, + 0xef, 0xed, 0x8c, 0xfb, 0x5e, 0x24, 0xd1, 0xef, 0x7b, 0x8d, 0x5b, 0xde, 0xf7, 0xb2, 0x6f, 0x79, + 0xd1, 0x08, 0x65, 0xde, 0xf2, 0x26, 0xef, 0x76, 0x97, 0xf3, 0xef, 0x76, 0xf1, 0xe2, 0x29, 0xe3, + 0x6e, 0x37, 0xeb, 0x46, 0x37, 0xe1, 0x28, 0x35, 0xfa, 0x6a, 0x1d, 0xa5, 0x5e, 0x87, 0x91, 0x6a, + 0xa7, 0xa3, 0x39, 0x1e, 0xe2, 0xf4, 0x38, 0x9d, 0x0e, 0x1f, 0x3c, 0x59, 0x28, 0xf7, 0x79, 0xc8, + 0xd8, 0xe7, 0xdf, 0x07, 0x58, 0xc4, 0xe7, 0x11, 0x38, 0x71, 0xe3, 0x88, 0x81, 0x12, 0x3e, 0x7f, + 0x34, 0x81, 0x13, 0xa7, 0x9b, 0x57, 0x62, 0x64, 0x2e, 0xd8, 0x5b, 0xbb, 0x50, 0x4e, 0x2f, 0x9f, + 0x57, 0xb0, 0x75, 0xfd, 0x61, 0x01, 0x2e, 0x0a, 0x21, 0x27, 0xf1, 0x81, 0x9f, 0x7c, 0x75, 0xbe, + 0x03, 0x13, 0x82, 0x76, 0x3b, 0xfe, 0x10, 0xf8, 0x05, 0xbb, 0xdc, 0x8c, 0xf9, 0x8e, 0x6e, 0xa0, + 0x91, 0x77, 0x60, 0x14, 0xff, 0x88, 0x2f, 0x86, 0xd8, 0xc8, 0x8c, 0x21, 0x6a, 0x23, 0x79, 0x3d, + 0xa4, 0x50, 0xad, 0xaf, 0xe1, 0x52, 0x5e, 0xc3, 0x5f, 0xc1, 0xb8, 0xfc, 0x8b, 0x02, 0x9c, 0x17, + 0xec, 0x8d, 0xad, 0xe2, 0x85, 0x4e, 0x9d, 0x13, 0xb8, 0x2b, 0xdf, 0x87, 0x71, 0x56, 0xa1, 0x6c, + 0xf7, 0x80, 0x38, 0x5a, 0x85, 0xe6, 0x10, 0x97, 0x2c, 0x39, 0x91, 0x23, 0xdc, 0x6f, 0x9c, 0x83, + 0xb6, 0xb4, 0x8c, 0xd8, 0x3a, 0xb1, 0xf5, 0x25, 0x5c, 0xc8, 0xee, 0xc2, 0x2b, 0x18, 0x9f, 0xfb, + 0x30, 0x9f, 0x71, 0x28, 0xbc, 0xd8, 0x99, 0xfc, 0x05, 0x9c, 0xcf, 0xe4, 0xf5, 0x0a, 0x9a, 0xb9, + 0xc2, 0x24, 0x8e, 0xe8, 0x15, 0x4c, 0xa1, 0xf5, 0x10, 0xce, 0x65, 0x70, 0x7a, 0x05, 0x4d, 0xbc, + 0x07, 0x73, 0x4a, 0xd2, 0x7e, 0xa9, 0x16, 0xae, 0xc3, 0x45, 0xce, 0xe8, 0xd5, 0xcc, 0xca, 0x03, + 0x38, 0x2f, 0xd8, 0xbd, 0x82, 0xd1, 0x5b, 0x81, 0x0b, 0xb1, 0x42, 0x9d, 0x21, 0x27, 0x1d, 0x7b, + 0x93, 0xb1, 0xd6, 0xe0, 0x72, 0xcc, 0x29, 0x47, 0x68, 0x38, 0x3e, 0x37, 0x2e, 0x0e, 0xc6, 0xb3, + 0xf4, 0x4a, 0x66, 0xf4, 0x21, 0x9c, 0x35, 0x98, 0xbe, 0x32, 0x51, 0x69, 0x15, 0xa6, 0x39, 0x63, + 0x53, 0x74, 0x5e, 0xd0, 0x45, 0xe7, 0xf1, 0x85, 0x33, 0x31, 0x4b, 0x04, 0xef, 0xbe, 0x95, 0x21, + 0x4d, 0xaf, 0xa3, 0x34, 0x2d, 0x51, 0xe2, 0x16, 0xbe, 0x03, 0xc3, 0x1c, 0x22, 0xda, 0x97, 0xc1, + 0x8c, 0x2b, 0x0b, 0x9c, 0x4c, 0x20, 0x5b, 0x3f, 0x84, 0x8b, 0x5c, 0x13, 0x8d, 0x2f, 0x2a, 0x4d, + 0x6d, 0xf1, 0x07, 0x09, 0x45, 0xf4, 0x9c, 0xe0, 0x9b, 0xc4, 0xcf, 0xd1, 0x47, 0x1f, 0xc9, 0xb5, + 0x9d, 0xc7, 0xff, 0x58, 0x4f, 0xd7, 0xa4, 0x82, 0x59, 0xcc, 0x54, 0x30, 0xaf, 0xc2, 0x15, 0xa5, + 0x60, 0x26, 0xab, 0x91, 0x4b, 0xcb, 0xfa, 0x12, 0xce, 0xf3, 0x8e, 0x4a, 0x97, 0x42, 0xb3, 0x19, + 0x1f, 0x26, 0xba, 0x39, 0x27, 0xba, 0x69, 0x62, 0xe7, 0x74, 0xf2, 0xff, 0x2b, 0xc8, 0x4f, 0x2e, + 0x9b, 0xf9, 0x2f, 0x5a, 0xe3, 0xde, 0x80, 0x8a, 0x1a, 0x10, 0xb3, 0x45, 0x2f, 0xa6, 0x6e, 0xaf, + 0xc3, 0xac, 0xce, 0xc6, 0x6d, 0xd2, 0xdd, 0x3b, 0x78, 0x83, 0xf4, 0x36, 0xfb, 0x2c, 0x10, 0x20, + 0x97, 0x5d, 0x39, 0x63, 0xdc, 0x10, 0xdf, 0x56, 0x98, 0x56, 0x03, 0x2e, 0xa4, 0xa7, 0xc2, 0x6d, + 0xca, 0xf7, 0x04, 0xe4, 0x13, 0xf6, 0x09, 0x23, 0x44, 0x4c, 0x46, 0x2e, 0x53, 0xf9, 0x1d, 0x73, + 0x72, 0x49, 0x65, 0x59, 0x72, 0xab, 0x49, 0xf4, 0x9f, 0xd5, 0x2e, 0xd7, 0xc3, 0xaf, 0x02, 0x91, + 0x45, 0x8b, 0x75, 0x5b, 0x56, 0x7d, 0x0e, 0x06, 0x16, 0xeb, 0xb6, 0x78, 0xc8, 0x84, 0x92, 0x60, + 0x33, 0x0c, 0x6c, 0x06, 0x4b, 0x4a, 0xe4, 0xc5, 0x63, 0x48, 0xe4, 0xf7, 0x07, 0x47, 0x07, 0x4a, + 0x83, 0x36, 0xa9, 0xbb, 0x7b, 0xde, 0x43, 0x37, 0xda, 0x57, 0x15, 0x56, 0xad, 0xaf, 0x60, 0xda, + 0xa8, 0x5e, 0x7c, 0xc5, 0x3d, 0x5f, 0x60, 0x31, 0x79, 0x76, 0xb1, 0x8a, 0x6e, 0x35, 0x68, 0xb2, + 0x98, 0xe0, 0xfb, 0x4d, 0xd3, 0x69, 0xe0, 0xf3, 0x5e, 0x5b, 0x16, 0x5a, 0xff, 0x78, 0x50, 0xe3, + 0xae, 0xbd, 0x6b, 0xeb, 0xd1, 0xbb, 0x3b, 0x00, 0x7c, 0x85, 0x68, 0x9d, 0x63, 0x02, 0xe0, 0xb8, + 0xf0, 0x56, 0xe1, 0x5b, 0xb2, 0xad, 0x21, 0x1d, 0xf7, 0xdd, 0x9b, 0xf0, 0x3f, 0xe6, 0x44, 0xf2, + 0xa9, 0xa7, 0xf2, 0x3f, 0x16, 0xac, 0x43, 0x5b, 0x47, 0x22, 0x3f, 0x4c, 0x3e, 0xce, 0x18, 0xc2, + 0x0b, 0xab, 0xd7, 0xe4, 0x0d, 0x76, 0xba, 0x6f, 0x27, 0x7b, 0x9f, 0xf1, 0x0c, 0x66, 0x19, 0xad, + 0xfb, 0x18, 0x15, 0x8b, 0xe5, 0x6f, 0x22, 0xea, 0xf1, 0xbd, 0x7d, 0x18, 0xeb, 0xb9, 0xd6, 0xa3, + 0x9e, 0x18, 0x59, 0xd8, 0xdf, 0x63, 0x3e, 0x0d, 0xaa, 0xca, 0xec, 0x6c, 0xfe, 0xb8, 0x88, 0xec, + 0xb5, 0x65, 0xaf, 0xd5, 0xf1, 0x5d, 0xa5, 0x30, 0xf1, 0x45, 0x14, 0xb4, 0x1b, 0x54, 0xc0, 0x6d, + 0x1d, 0xc9, 0x7a, 0xbd, 0xa7, 0x57, 0xfb, 0x28, 0x0c, 0x6e, 0x2f, 0x6e, 0xaf, 0x95, 0x0a, 0xd6, + 0x2d, 0x00, 0xad, 0x26, 0x80, 0xe1, 0x8d, 0x4d, 0x7b, 0xbd, 0xba, 0x56, 0x3a, 0x45, 0x66, 0xe1, + 0xcc, 0xc3, 0xd5, 0x8d, 0xa5, 0xcd, 0x87, 0xf5, 0x46, 0x7d, 0xbd, 0x6a, 0x6f, 0x2f, 0x56, 0xed, + 0xa5, 0x52, 0xc1, 0xfa, 0x1a, 0x66, 0xcc, 0x1e, 0xbe, 0xd2, 0x45, 0x18, 0xc1, 0xb4, 0x92, 0x67, + 0xee, 0x3f, 0xdc, 0xd6, 0x3c, 0x5a, 0x85, 0xf2, 0x97, 0xf4, 0xcc, 0x12, 0x6a, 0xa2, 0xf8, 0x8c, + 0x34, 0x24, 0xf2, 0x06, 0x17, 0x0b, 0x92, 0x2f, 0x97, 0x99, 0x58, 0xd0, 0x88, 0xe5, 0x02, 0xdc, + 0xfa, 0xbe, 0x0f, 0x33, 0x66, 0xad, 0xc7, 0xb5, 0x52, 0xbd, 0x86, 0xae, 0xbe, 0xda, 0xb3, 0x26, + 0x42, 0xf4, 0x6b, 0x03, 0xb1, 0xb3, 0x7e, 0x1f, 0x4a, 0x02, 0x2b, 0x3e, 0x79, 0xaf, 0x4a, 0x33, + 0x62, 0x21, 0xe3, 0x11, 0xa6, 0x74, 0x4a, 0xf7, 0xa1, 0xc4, 0x76, 0x4c, 0x41, 0xc9, 0x2b, 0x98, + 0x81, 0xa1, 0xb5, 0xf8, 0x3a, 0xc7, 0xe6, 0x3f, 0xf0, 0x75, 0x4f, 0xe4, 0x04, 0x91, 0xf4, 0x83, + 0x1b, 0xb3, 0xd5, 0x6f, 0xf2, 0x06, 0x0c, 0xdf, 0x75, 0xdb, 0x91, 0x30, 0x8d, 0xc4, 0x87, 0x3c, + 0x63, 0xcb, 0x0b, 0x6c, 0x81, 0x60, 0xd9, 0x70, 0x46, 0xab, 0xf0, 0x04, 0x4d, 0x25, 0x65, 0x18, + 0xd9, 0xa0, 0xdf, 0x68, 0xf5, 0xcb, 0x9f, 0xd6, 0xbb, 0x70, 0x46, 0xf8, 0x18, 0x6a, 0xc3, 0x74, + 0x45, 0xbc, 0x15, 0x2f, 0x18, 0x0f, 0x56, 0x05, 0x4b, 0x2c, 0x62, 0x74, 0x3b, 0x9d, 0xd6, 0x0b, + 0xd2, 0xb1, 0x83, 0xe2, 0x84, 0x74, 0xdf, 0x91, 0xb7, 0x40, 0xfd, 0xa6, 0xf3, 0xff, 0x2a, 0x42, + 0x39, 0x61, 0x65, 0x58, 0xdc, 0x77, 0xda, 0x6d, 0xea, 0xed, 0x51, 0x72, 0x1d, 0x06, 0xb7, 0x37, + 0xb7, 0xb7, 0x84, 0x95, 0x54, 0x7a, 0x17, 0x30, 0x90, 0xc2, 0xb1, 0x11, 0x83, 0x3c, 0x80, 0x33, + 0xd2, 0x8b, 0x58, 0x15, 0x89, 0x19, 0xba, 0xd8, 0xdb, 0x27, 0x39, 0x4d, 0x47, 0xde, 0x16, 0x26, + 0x91, 0x1f, 0x77, 0xdd, 0x80, 0xb6, 0xd0, 0xf2, 0x13, 0x5f, 0xd5, 0x6b, 0x25, 0xb6, 0x8e, 0x46, + 0xbe, 0x0f, 0x13, 0xf5, 0xfa, 0x66, 0x5c, 0xfb, 0x90, 0x71, 0x43, 0xa4, 0x17, 0xd9, 0x06, 0x22, + 0x7f, 0x12, 0x6c, 0xfd, 0x51, 0x01, 0xe6, 0x72, 0xcc, 0x2d, 0xe4, 0x0d, 0x63, 0x1c, 0xa6, 0xb5, + 0x71, 0x90, 0x28, 0x2b, 0xa7, 0xc4, 0x40, 0x2c, 0x6a, 0x3e, 0xd9, 0x03, 0x27, 0xf0, 0xc9, 0x5e, + 0x39, 0x15, 0xfb, 0x61, 0x93, 0xd7, 0x61, 0xa0, 0x5e, 0xdf, 0x14, 0x66, 0x75, 0x12, 0xf7, 0x40, + 0x43, 0x66, 0x08, 0x35, 0x80, 0x51, 0x09, 0xb2, 0x4e, 0xc3, 0xa4, 0x31, 0x31, 0x96, 0x05, 0x13, + 0x7a, 0x0b, 0xd9, 0xec, 0x2f, 0xfa, 0x2d, 0x35, 0xfb, 0xec, 0x6f, 0xeb, 0x57, 0xcd, 0x31, 0x23, + 0x17, 0x01, 0xe4, 0x7d, 0xad, 0xdb, 0x92, 0x37, 0x3f, 0x02, 0xb2, 0xda, 0x22, 0x57, 0x60, 0x22, + 0xa0, 0x2d, 0x37, 0xa0, 0xcd, 0xa8, 0xd1, 0x0d, 0xc4, 0xc3, 0x18, 0x7b, 0x5c, 0xc2, 0x76, 0x82, + 0x36, 0xf9, 0x2e, 0x0c, 0xf3, 0x8b, 0x64, 0xd1, 0x7b, 0xa9, 0x24, 0xd4, 0xeb, 0x9b, 0xeb, 0x77, + 0xab, 0xfc, 0xa2, 0xdb, 0x16, 0x28, 0x56, 0x0d, 0xc6, 0xb5, 0x5e, 0xf5, 0xab, 0x7d, 0x06, 0x86, + 0x74, 0x2b, 0x25, 0xff, 0x61, 0xfd, 0x4e, 0x01, 0x66, 0x70, 0x19, 0xec, 0xb9, 0xec, 0x78, 0x88, + 0xfb, 0xb2, 0x60, 0x4c, 0xda, 0x05, 0x63, 0xd2, 0x12, 0xb8, 0x6a, 0xf6, 0x3e, 0x48, 0xcd, 0xde, + 0x85, 0xac, 0xd9, 0xc3, 0x2d, 0xc0, 0xf5, 0x3d, 0x7d, 0xd2, 0xf4, 0xeb, 0xba, 0xdf, 0x2d, 0xc0, + 0xb4, 0xd6, 0x26, 0xd5, 0xc1, 0x3b, 0x46, 0x93, 0xce, 0x67, 0x34, 0x29, 0xb5, 0x9e, 0x6a, 0xa9, + 0x16, 0xbd, 0xd6, 0xab, 0x45, 0x59, 0xcb, 0xc9, 0x58, 0x26, 0x7f, 0x59, 0x80, 0xd9, 0xcc, 0x31, + 0x20, 0x67, 0x99, 0xfc, 0xdf, 0x0c, 0x68, 0x24, 0x46, 0x5e, 0xfc, 0x62, 0xf0, 0xd5, 0x30, 0xec, + 0xd2, 0x40, 0x8c, 0xbb, 0xf8, 0x45, 0x5e, 0x83, 0xc9, 0x2d, 0x1a, 0xb8, 0x7e, 0x8b, 0x3f, 0x4c, + 0xe0, 0x1e, 0xbf, 0x93, 0xb6, 0x09, 0x24, 0x17, 0x60, 0x4c, 0x79, 0xac, 0x72, 0x1b, 0xae, 0x1d, + 0x03, 0x18, 0xef, 0x25, 0x77, 0x8f, 0x5f, 0xfc, 0x30, 0x62, 0xf1, 0x8b, 0x6d, 0xc0, 0xd2, 0xa2, + 0x3a, 0xcc, 0x37, 0x60, 0x69, 0x2e, 0x3d, 0x0b, 0xc3, 0x9f, 0xd9, 0xb8, 0x8e, 0x31, 0xe6, 0x84, + 0x2d, 0x7e, 0x91, 0x29, 0x74, 0x2d, 0xc7, 0x77, 0x31, 0xe8, 0x52, 0xfe, 0x01, 0xcc, 0x64, 0x8d, + 0x6b, 0xd6, 0x57, 0x20, 0x68, 0x8b, 0x8a, 0xf6, 0x4b, 0x98, 0xae, 0xb6, 0x5a, 0xf1, 0x72, 0xe5, + 0xb3, 0xca, 0xf7, 0x09, 0x6e, 0xd3, 0x14, 0x62, 0xed, 0xe0, 0xaa, 0xe7, 0x46, 0xf6, 0xf4, 0xf2, + 0x37, 0x6e, 0x18, 0xb9, 0xde, 0x9e, 0x66, 0x78, 0xb5, 0xcf, 0x6e, 0xd0, 0x67, 0x19, 0x4b, 0x80, + 0x49, 0x1c, 0x26, 0x6f, 0x0e, 0xcf, 0x60, 0x3e, 0xa3, 0xb1, 0x8d, 0xb7, 0xae, 0x39, 0x93, 0x6f, + 0x5c, 0x30, 0x50, 0x6d, 0x3e, 0xb1, 0xbe, 0x0f, 0x67, 0xf9, 0xb6, 0xdf, 0xab, 0xf1, 0xa2, 0xd9, + 0xba, 0x9d, 0xd8, 0x7a, 0x4f, 0x5a, 0x72, 0x7a, 0xb6, 0xcc, 0x9e, 0x30, 0xda, 0x82, 0x55, 0xfe, + 0xa7, 0x02, 0xcc, 0x27, 0x48, 0xeb, 0xcf, 0xbd, 0xa6, 0x3c, 0x73, 0x5e, 0x4f, 0xba, 0xee, 0xa3, + 0xac, 0xc4, 0x0d, 0xa4, 0x6e, 0x4b, 0x79, 0xef, 0x93, 0x5b, 0x00, 0x9c, 0x58, 0x13, 0x71, 0xf0, + 0x7a, 0x40, 0x78, 0x39, 0xa1, 0x90, 0xa3, 0xa1, 0x90, 0x2e, 0x64, 0x8d, 0xbb, 0xf8, 0x46, 0xfa, + 0xd9, 0xcf, 0x31, 0xce, 0x0a, 0x15, 0xe4, 0x8d, 0x1c, 0x43, 0x7a, 0x16, 0x7f, 0xeb, 0xff, 0x1f, + 0x80, 0x39, 0x7d, 0x02, 0x5f, 0xa4, 0xaf, 0x5b, 0x30, 0xbe, 0xe8, 0x7b, 0x11, 0xfd, 0x26, 0xd2, + 0xe2, 0x5c, 0x10, 0xe5, 0x8d, 0xa0, 0x4a, 0x84, 0x78, 0xcd, 0x01, 0x0d, 0x26, 0xeb, 0x19, 0xde, + 0x9a, 0x31, 0x22, 0x59, 0x84, 0xc9, 0x0d, 0xfa, 0x2c, 0x35, 0x80, 0xe8, 0x31, 0xea, 0xd1, 0x67, + 0x0d, 0x6d, 0x10, 0x75, 0x37, 0x3e, 0x83, 0x86, 0x3c, 0x82, 0x29, 0xb9, 0xb8, 0x8c, 0xc1, 0x9c, + 0xd7, 0x4f, 0x5e, 0x73, 0x39, 0xf3, 0x38, 0x10, 0xac, 0x86, 0x9c, 0x31, 0x4c, 0x70, 0x64, 0x5d, + 0xe7, 0x35, 0xf2, 0xd0, 0x06, 0xe6, 0xd1, 0xae, 0x95, 0x18, 0xfe, 0xb8, 0xc9, 0x90, 0x06, 0x3a, + 0x0b, 0x6b, 0x0b, 0xca, 0xe9, 0xf9, 0x10, 0xb5, 0xbd, 0x0d, 0xc3, 0x1c, 0x2a, 0x44, 0x25, 0x19, + 0xc2, 0x48, 0x61, 0x73, 0x5b, 0x46, 0x4b, 0x9c, 0x4a, 0x1c, 0x66, 0xad, 0xa0, 0x7d, 0x49, 0xe1, + 0x28, 0x61, 0xf5, 0x76, 0x72, 0x7a, 0xd1, 0xd5, 0x59, 0x4e, 0xaf, 0xee, 0x8b, 0x23, 0x9f, 0xa4, + 0x2c, 0xa2, 0x89, 0x4e, 0xe7, 0x24, 0x1a, 0x76, 0x03, 0x46, 0x04, 0x28, 0x11, 0x5c, 0x29, 0xfe, + 0xfc, 0x24, 0x82, 0xf5, 0x01, 0x9c, 0x43, 0x7b, 0xa1, 0xeb, 0xed, 0xb5, 0xe9, 0x4e, 0x68, 0x3c, + 0x2a, 0xe9, 0xf7, 0x59, 0x7f, 0x04, 0xf3, 0x59, 0xb4, 0x7d, 0xbf, 0x6c, 0x1e, 0xee, 0xe4, 0xcf, + 0x8b, 0x30, 0xb3, 0x1a, 0xea, 0x02, 0x97, 0x0a, 0x79, 0x92, 0x11, 0x86, 0x03, 0xc7, 0x64, 0xe5, + 0x54, 0x56, 0x98, 0x8d, 0xb7, 0xb5, 0xe7, 0xae, 0xc5, 0x5e, 0xf1, 0x35, 0xd8, 0xb1, 0xa5, 0x1e, + 0xbc, 0xbe, 0x0e, 0x83, 0x1b, 0x6c, 0xab, 0x1e, 0x10, 0x73, 0xc7, 0x29, 0x18, 0x08, 0x9f, 0x9b, + 0xb2, 0x23, 0x92, 0xfd, 0x20, 0x77, 0x53, 0x8f, 0x5a, 0x07, 0xfb, 0xc7, 0x8f, 0x58, 0x39, 0x95, + 0x7a, 0xdf, 0xfa, 0x2e, 0x8c, 0x57, 0x5b, 0x07, 0xdc, 0x25, 0xd3, 0xf7, 0x12, 0x9f, 0xa5, 0x56, + 0xb2, 0x72, 0xca, 0xd6, 0x11, 0xc9, 0x35, 0xfe, 0xaa, 0x61, 0x38, 0x27, 0xa6, 0x06, 0x13, 0xd6, + 0xaa, 0x9d, 0x4e, 0x6d, 0x14, 0x86, 0xf9, 0x43, 0x4b, 0xeb, 0x4b, 0x98, 0x17, 0x8e, 0x3c, 0xdc, + 0x3a, 0x8a, 0xee, 0x3e, 0x61, 0xec, 0xab, 0xd5, 0xcb, 0xf9, 0xe6, 0x12, 0x00, 0xea, 0x42, 0xab, + 0x5e, 0x8b, 0x7e, 0x23, 0x3c, 0x09, 0x35, 0x88, 0xf5, 0x0e, 0x8c, 0xa9, 0x11, 0x42, 0x81, 0x5f, + 0x3b, 0xec, 0x70, 0xb4, 0x66, 0x8c, 0x57, 0xbc, 0xf2, 0xe9, 0xee, 0x39, 0xa3, 0xef, 0x22, 0x4a, + 0x0e, 0xd7, 0x10, 0x5c, 0x98, 0x4d, 0x2c, 0x82, 0x38, 0x08, 0x83, 0x92, 0xd1, 0xb9, 0xab, 0xa3, + 0xfa, 0x9d, 0x14, 0xe1, 0x8b, 0xc7, 0x12, 0xe1, 0xad, 0x7f, 0x5a, 0x44, 0xe5, 0x32, 0x35, 0x1e, + 0x09, 0x3b, 0x9d, 0x6e, 0x2b, 0xac, 0xc1, 0x18, 0xf6, 0x7e, 0x49, 0x3e, 0x18, 0xec, 0xed, 0x87, + 0x32, 0xfa, 0xd3, 0xc3, 0xca, 0x29, 0x74, 0x3e, 0x89, 0xc9, 0xc8, 0xc7, 0x30, 0xb2, 0xec, 0xb5, + 0x90, 0xc3, 0xc0, 0x09, 0x38, 0x48, 0x22, 0x36, 0x27, 0xd8, 0xe4, 0x6d, 0xf6, 0x09, 0x73, 0xf3, + 0x8e, 0xad, 0x41, 0x62, 0x2d, 0x77, 0x28, 0x4f, 0xcb, 0x1d, 0x4e, 0x68, 0xb9, 0x16, 0x0c, 0x6d, + 0x06, 0x2d, 0x11, 0xdb, 0x66, 0x6a, 0x61, 0x42, 0x0c, 0x1c, 0xc2, 0x6c, 0x5e, 0x64, 0xfd, 0xd7, + 0x02, 0xcc, 0xdd, 0xa3, 0x51, 0xe6, 0x1a, 0x32, 0x46, 0xa5, 0xf0, 0xd2, 0xa3, 0x52, 0x7c, 0x91, + 0x51, 0x51, 0xbd, 0x1e, 0xc8, 0xeb, 0xf5, 0x60, 0x5e, 0xaf, 0x87, 0xf2, 0x7b, 0x7d, 0x0f, 0x86, + 0x79, 0x57, 0x99, 0x26, 0xbf, 0x1a, 0xd1, 0x83, 0x58, 0x93, 0xd7, 0xbd, 0xe8, 0x6c, 0x5e, 0xc6, + 0x04, 0xc9, 0x35, 0x27, 0xd4, 0x35, 0x79, 0xf1, 0xd3, 0xfa, 0x11, 0x3e, 0x35, 0x5e, 0xf3, 0x9b, + 0x4f, 0x34, 0x8b, 0xf0, 0x08, 0xff, 0x42, 0x93, 0x37, 0x08, 0x0c, 0x8b, 0x97, 0xd8, 0x12, 0x83, + 0x5c, 0x86, 0xf1, 0x55, 0xef, 0xae, 0x1f, 0x34, 0xe9, 0xa6, 0xd7, 0xe6, 0xdc, 0x47, 0x6d, 0x1d, + 0x24, 0x2c, 0x25, 0xa2, 0x86, 0xd8, 0xfc, 0x80, 0x80, 0x84, 0xf9, 0x81, 0xc1, 0x76, 0x17, 0x6c, + 0x5e, 0x26, 0x0c, 0x31, 0xec, 0xef, 0x5e, 0x9a, 0xbb, 0x52, 0xf1, 0xfb, 0x21, 0x3e, 0x82, 0x73, + 0x36, 0xed, 0xb4, 0x1d, 0x26, 0xd3, 0x1d, 0xf8, 0x1c, 0x5f, 0xf5, 0xf9, 0x72, 0xc6, 0x33, 0x41, + 0xd3, 0xa7, 0x42, 0x35, 0xb9, 0xd8, 0xa3, 0xc9, 0x07, 0x70, 0xe5, 0x1e, 0x8d, 0xcc, 0x0d, 0x35, + 0xb6, 0x37, 0x8b, 0xce, 0xaf, 0xc0, 0x68, 0x68, 0xda, 0xca, 0xe5, 0xb3, 0xb7, 0x4c, 0xc2, 0xdd, + 0xb7, 0xe4, 0x6d, 0x92, 0xe0, 0xa3, 0xfe, 0xb2, 0x3e, 0x81, 0x4a, 0x5e, 0x75, 0xc7, 0x73, 0x79, + 0x75, 0xe1, 0x72, 0x3e, 0x03, 0xd1, 0xdc, 0x65, 0x90, 0x76, 0x75, 0xf1, 0x09, 0xf5, 0x6b, 0xad, + 0x69, 0x8a, 0x17, 0x7f, 0x58, 0x35, 0xe9, 0xfc, 0xf7, 0x12, 0xcd, 0x6d, 0xe0, 0x95, 0xb5, 0xc9, + 0x20, 0x1e, 0xd7, 0x2a, 0x8c, 0x4a, 0x98, 0x18, 0xd7, 0xb9, 0xcc, 0x96, 0xca, 0x01, 0x6d, 0x49, + 0x06, 0x8a, 0xcc, 0xfa, 0x91, 0xbc, 0xbe, 0x31, 0x29, 0x8e, 0xf7, 0x6e, 0xf6, 0x38, 0xf7, 0x35, + 0x96, 0x0f, 0xe7, 0x4c, 0xde, 0xba, 0x59, 0xbe, 0xa4, 0x99, 0xe5, 0xb9, 0x35, 0xfe, 0xb2, 0x69, + 0x26, 0x16, 0x96, 0x06, 0x0d, 0x44, 0x2e, 0xe9, 0xc6, 0xf7, 0x89, 0xf4, 0x43, 0xdc, 0xdb, 0x30, + 0x9f, 0x55, 0xa1, 0xa6, 0x07, 0x2a, 0x0b, 0xaf, 0x90, 0x77, 0x96, 0xe0, 0x92, 0x8c, 0x2e, 0xe5, + 0xfb, 0x51, 0x18, 0x05, 0x4e, 0xa7, 0xde, 0x0c, 0xdc, 0x4e, 0x4c, 0x65, 0xc1, 0x30, 0x87, 0x88, + 0x91, 0xe0, 0x57, 0x61, 0x1c, 0x47, 0x94, 0x58, 0xbf, 0x5e, 0x00, 0xcb, 0xf0, 0xd3, 0xc2, 0x79, + 0xde, 0x0a, 0xfc, 0xa7, 0x6e, 0x4b, 0xbb, 0x7e, 0x7a, 0xc3, 0x30, 0x7d, 0xf2, 0x37, 0x89, 0x49, + 0x17, 0x71, 0xb1, 0x67, 0xde, 0x4e, 0x98, 0x23, 0xb9, 0xe0, 0x89, 0xbe, 0x5b, 0xe6, 0x83, 0x08, + 0x65, 0xa6, 0xfc, 0xef, 0x05, 0xb8, 0xda, 0xb3, 0x0d, 0xa2, 0x3f, 0x8f, 0xa0, 0x94, 0x2c, 0x13, + 0x2b, 0xa8, 0xa2, 0xf9, 0x6d, 0xa4, 0x39, 0xec, 0xde, 0xe1, 0x7e, 0xe8, 0xd2, 0xbf, 0xa9, 0xa3, + 0x38, 0xa7, 0xf8, 0x9d, 0xbc, 0xf5, 0x18, 0xbf, 0xc2, 0x8f, 0x9c, 0xf6, 0x22, 0x1a, 0x00, 0x06, + 0xe2, 0x37, 0x05, 0x11, 0x83, 0x36, 0x92, 0x61, 0x32, 0x34, 0x64, 0xeb, 0x53, 0xfc, 0xae, 0xb3, + 0x1b, 0x7d, 0xbc, 0x4f, 0x6d, 0x11, 0xae, 0x26, 0x7c, 0x07, 0x5e, 0x80, 0x49, 0x04, 0xb3, 0x6c, + 0xf8, 0x99, 0xec, 0x7d, 0x2f, 0xf0, 0xbb, 0x9d, 0x5f, 0xcc, 0xac, 0xff, 0x71, 0x81, 0x3b, 0x73, + 0xea, 0xd5, 0x8a, 0x89, 0x5e, 0x04, 0x88, 0xa1, 0x09, 0xa7, 0x7e, 0x55, 0xb0, 0x7b, 0x87, 0xab, + 0xdc, 0x78, 0xab, 0xb0, 0xc7, 0x19, 0x68, 0x64, 0xbf, 0xd8, 0x99, 0x7c, 0x0b, 0x1d, 0x06, 0x54, + 0xed, 0xc7, 0x1b, 0xf7, 0x77, 0xa5, 0xfd, 0xe3, 0x84, 0x74, 0xfb, 0x30, 0xc3, 0x76, 0x80, 0x6a, + 0x37, 0xda, 0xf7, 0x03, 0x37, 0x92, 0xcf, 0x53, 0xc8, 0x96, 0x88, 0x08, 0xc0, 0xa9, 0x3e, 0xfa, + 0xf9, 0x61, 0xe5, 0xbd, 0x93, 0xc4, 0xfd, 0x94, 0x3c, 0xb7, 0x55, 0x14, 0x01, 0x6b, 0x0e, 0x06, + 0x16, 0xed, 0x35, 0xdc, 0xf0, 0xec, 0x35, 0xb5, 0xe1, 0xd9, 0x6b, 0xd6, 0x5f, 0x15, 0xa1, 0xc2, + 0x63, 0x96, 0xa0, 0x9f, 0x49, 0x6c, 0xb5, 0xd0, 0x1c, 0x57, 0x8e, 0x6b, 0x60, 0x48, 0xc4, 0x24, + 0x29, 0x1e, 0x27, 0x26, 0xc9, 0xaf, 0x40, 0x8e, 0xc9, 0xea, 0x18, 0x56, 0x80, 0xef, 0x1c, 0x1d, + 0x56, 0xae, 0xc6, 0x56, 0x00, 0x5e, 0x9a, 0x65, 0x0e, 0xc8, 0xa9, 0x22, 0x6d, 0xbf, 0x18, 0x7c, + 0x01, 0xfb, 0xc5, 0x6d, 0x18, 0x41, 0x65, 0x66, 0x75, 0x4b, 0x78, 0x7e, 0xe2, 0xf2, 0xc4, 0x08, + 0x45, 0x0d, 0x57, 0x0f, 0x07, 0x28, 0xd1, 0xac, 0xbf, 0x5b, 0x84, 0xcb, 0xf9, 0x63, 0x2e, 0xda, + 0xb6, 0x04, 0x10, 0x7b, 0xb8, 0xf4, 0xf2, 0xa8, 0xc1, 0x6f, 0xe7, 0x19, 0x7d, 0xa4, 0x3c, 0xda, + 0x34, 0x3a, 0x26, 0xfb, 0xc8, 0x97, 0xd6, 0x89, 0xeb, 0x14, 0xe3, 0x01, 0xb6, 0x88, 0x66, 0x2b, + 0x40, 0x46, 0x34, 0x5b, 0x01, 0x23, 0x8f, 0x60, 0x6e, 0x2b, 0x70, 0x9f, 0x3a, 0x11, 0x7d, 0x40, + 0x9f, 0xf3, 0xc7, 0x42, 0xcb, 0xe2, 0x85, 0x10, 0x7f, 0x3e, 0x7f, 0xfd, 0xe8, 0xb0, 0xf2, 0x5a, + 0x87, 0xa3, 0x60, 0xc4, 0x32, 0xfe, 0xf6, 0xb3, 0x91, 0x7e, 0x34, 0x94, 0xc7, 0xc8, 0xfa, 0x57, + 0x05, 0x38, 0x8f, 0x62, 0xb9, 0x30, 0xbb, 0xca, 0xca, 0x5f, 0xc8, 0xb1, 0x52, 0xef, 0xa0, 0x58, + 0x8b, 0xe8, 0x58, 0x69, 0xbc, 0x44, 0xb7, 0x0d, 0x34, 0xb2, 0x0a, 0xe3, 0xe2, 0x37, 0x7e, 0x7f, + 0x03, 0xa8, 0x10, 0xcc, 0x6a, 0x1b, 0x16, 0x2e, 0x75, 0x6e, 0x2a, 0xc2, 0x85, 0x2d, 0x98, 0xe1, + 0x83, 0x4d, 0x5b, 0xa7, 0xb5, 0x7e, 0x56, 0x84, 0x0b, 0xbb, 0x34, 0x70, 0x1f, 0x3f, 0xcf, 0xe9, + 0xcc, 0x26, 0xcc, 0x48, 0x10, 0x8f, 0x5b, 0x62, 0x7c, 0x62, 0x3c, 0x9e, 0xa5, 0x6c, 0xaa, 0x08, + 0x7c, 0x22, 0xbf, 0xb8, 0x4c, 0xc2, 0x13, 0xb8, 0x4c, 0xbe, 0x0d, 0xa3, 0x89, 0xc8, 0x41, 0x38, + 0xff, 0xf2, 0x0b, 0x8d, 0xa7, 0x6a, 0xe5, 0x94, 0xad, 0x30, 0xc9, 0x6f, 0xe6, 0x5f, 0x55, 0x09, + 0xd3, 0x47, 0x3f, 0xfb, 0x27, 0x7e, 0xb0, 0xec, 0x63, 0x75, 0xb4, 0xd2, 0x8c, 0x0f, 0x76, 0xe5, + 0x94, 0x9d, 0x57, 0x53, 0x6d, 0x1c, 0xc6, 0xaa, 0x78, 0x6f, 0xc7, 0x34, 0xf7, 0xff, 0x56, 0x84, + 0x4b, 0xf2, 0xe1, 0x4f, 0xce, 0x30, 0x7f, 0x0e, 0x73, 0x12, 0x54, 0xed, 0x30, 0x81, 0x81, 0xb6, + 0xcc, 0x91, 0xe6, 0x31, 0x65, 0xe5, 0x48, 0x3b, 0x02, 0x27, 0x1e, 0xec, 0x3c, 0xf2, 0x57, 0x63, + 0xfd, 0xfc, 0x38, 0x2b, 0x8e, 0x13, 0x5a, 0x21, 0xf5, 0x3d, 0xd3, 0x18, 0x1a, 0x63, 0xff, 0x6c, + 0xa5, 0xac, 0xa7, 0x83, 0x2f, 0x6b, 0x3d, 0x5d, 0x39, 0x95, 0xb4, 0x9f, 0xd6, 0xa6, 0x60, 0x62, + 0x83, 0x3e, 0x8b, 0xc7, 0xfd, 0xff, 0x2c, 0x24, 0x42, 0x3d, 0x30, 0x09, 0x83, 0xc7, 0x7c, 0x28, + 0xc4, 0xa1, 0x80, 0x30, 0xd4, 0x83, 0x2e, 0x61, 0x70, 0xd4, 0x55, 0x18, 0xe1, 0x97, 0xd9, 0xad, + 0x63, 0x68, 0xf8, 0xea, 0x05, 0x0f, 0x7f, 0x56, 0xd9, 0xe2, 0xca, 0xbe, 0xa0, 0xb7, 0x1e, 0xc0, + 0x15, 0xe1, 0xe3, 0x6d, 0x4e, 0x3e, 0x56, 0x74, 0xc2, 0xe3, 0xcb, 0x72, 0xe0, 0xd2, 0x3d, 0x9a, + 0xdc, 0x7a, 0x8c, 0x17, 0x4e, 0x9f, 0xc0, 0x69, 0x03, 0xae, 0x38, 0xa2, 0x54, 0xaa, 0xd6, 0x90, + 0x62, 0x9d, 0xc4, 0xb6, 0x2e, 0x67, 0x55, 0xa1, 0x37, 0xd6, 0xa2, 0x18, 0x1c, 0x36, 0x88, 0xaf, + 0xd8, 0xc2, 0x13, 0xec, 0x7a, 0xd7, 0xb5, 0xef, 0x9a, 0xef, 0x78, 0x3c, 0x7a, 0xa0, 0x3c, 0x79, + 0x55, 0xa9, 0x35, 0x69, 0xdc, 0x05, 0x58, 0x53, 0x30, 0x21, 0x8b, 0xda, 0x34, 0x0c, 0xad, 0x7f, + 0x3f, 0x04, 0x96, 0x18, 0xd8, 0xac, 0x1b, 0x7a, 0x39, 0x1e, 0x8f, 0x52, 0x8d, 0x15, 0x07, 0xd5, + 0x59, 0x3d, 0x26, 0x69, 0x5c, 0xca, 0x57, 0x1e, 0xca, 0x79, 0xcd, 0x18, 0x6a, 0xac, 0xbc, 0x54, + 0xef, 0xbf, 0xca, 0xd9, 0x26, 0xf9, 0xc7, 0x86, 0x4f, 0xb6, 0x73, 0xb6, 0x49, 0x83, 0x6f, 0xf6, + 0x96, 0x69, 0x9b, 0x57, 0x22, 0x03, 0x2f, 0x72, 0x25, 0xc2, 0xbe, 0x48, 0xfd, 0x52, 0x64, 0xc7, + 0x1c, 0x4b, 0xf1, 0x3d, 0xca, 0xdb, 0x7b, 0xbd, 0x48, 0x44, 0x5c, 0xd0, 0x20, 0x06, 0x57, 0x83, + 0x0d, 0x71, 0xa1, 0xa4, 0xd9, 0x2c, 0x17, 0xf7, 0x69, 0xf3, 0x89, 0xb0, 0x15, 0xcb, 0x0b, 0xdd, + 0x2c, 0x9b, 0x39, 0x8f, 0x4f, 0xcd, 0xbf, 0x73, 0x5e, 0xd0, 0x68, 0x32, 0x52, 0x3d, 0x62, 0x44, + 0x92, 0x2d, 0xf9, 0x09, 0x4c, 0xab, 0xa9, 0x4e, 0xb8, 0x68, 0x8d, 0x2f, 0xbc, 0x16, 0x87, 0x32, + 0x3d, 0x78, 0xec, 0xdc, 0x7c, 0x7a, 0xe7, 0x66, 0x06, 0x2e, 0x0f, 0x44, 0xd0, 0x94, 0x05, 0x9a, + 0x7f, 0x96, 0x7e, 0xd1, 0x95, 0x41, 0x48, 0xbe, 0x80, 0x99, 0x7a, 0x7d, 0x93, 0x3f, 0xe6, 0xb0, + 0xe5, 0x05, 0xbf, 0xbd, 0x26, 0x1c, 0xb6, 0x70, 0xba, 0xc3, 0xd0, 0x6f, 0x88, 0x47, 0x20, 0xba, + 0x5b, 0x80, 0x1e, 0x8a, 0x21, 0x8b, 0x85, 0x7e, 0x53, 0xfe, 0xb7, 0xd5, 0x5b, 0x05, 0x26, 0x8a, + 0xb8, 0x6d, 0x2a, 0x1e, 0x1d, 0xc9, 0x85, 0x9d, 0x73, 0xcb, 0x57, 0xf8, 0x96, 0x6f, 0xf9, 0xfe, + 0xa0, 0x28, 0x5f, 0x68, 0xa4, 0x2f, 0x5a, 0x4f, 0x7c, 0xd9, 0x97, 0xd9, 0x83, 0x63, 0x9d, 0xd3, + 0x99, 0x8d, 0x23, 0x35, 0x79, 0x55, 0xaa, 0x82, 0x95, 0x4d, 0xa9, 0x6b, 0x87, 0xb8, 0xc0, 0xb8, + 0x3d, 0x45, 0xa9, 0x48, 0xa3, 0x4a, 0xde, 0xc3, 0x0d, 0xbc, 0xfc, 0x3d, 0xdc, 0x7f, 0x19, 0x83, + 0x33, 0x5b, 0xce, 0x9e, 0xeb, 0xb1, 0xf3, 0xc0, 0xa6, 0xa1, 0xdf, 0x0d, 0x9a, 0x94, 0x54, 0x61, + 0xca, 0x74, 0xbf, 0xed, 0xe3, 0x5c, 0xcc, 0x8e, 0x3c, 0x13, 0x46, 0x16, 0x60, 0x4c, 0x3d, 0xf9, + 0x15, 0xe7, 0x54, 0xc6, 0x53, 0xe0, 0x95, 0x53, 0x76, 0x8c, 0x46, 0xde, 0x37, 0xae, 0x8e, 0x4e, + 0xab, 0xd7, 0xeb, 0x88, 0xbb, 0xc0, 0xfd, 0x23, 0x3d, 0xbf, 0x65, 0x9e, 0xb5, 0xfc, 0x7e, 0xe4, + 0x47, 0xa9, 0xdb, 0xa4, 0x21, 0xa3, 0xc5, 0x29, 0x93, 0x1a, 0x8a, 0x19, 0xb9, 0xb1, 0xc7, 0x33, + 0xee, 0x99, 0xbe, 0x84, 0xf1, 0x07, 0xdd, 0x47, 0x54, 0xde, 0x9b, 0x0d, 0x8b, 0xa3, 0x37, 0xe9, + 0x54, 0x2e, 0xca, 0x77, 0xdf, 0xe2, 0x73, 0xf0, 0xa4, 0xfb, 0x88, 0xa6, 0x83, 0xda, 0xb3, 0x3d, + 0x4f, 0x63, 0x46, 0xf6, 0xa1, 0x94, 0xf4, 0xff, 0x16, 0xe1, 0xfd, 0x7a, 0x78, 0xad, 0x63, 0x98, + 0x16, 0x2d, 0x74, 0x3e, 0xf7, 0x4a, 0x35, 0x2a, 0x49, 0x71, 0x25, 0xbf, 0x0a, 0xb3, 0x99, 0x06, + 0x4d, 0xf5, 0x82, 0xad, 0xb7, 0xad, 0x14, 0x37, 0x90, 0xc4, 0xa8, 0xc9, 0xe7, 0x72, 0x46, 0xcd, + 0xd9, 0xb5, 0x90, 0x16, 0x9c, 0x4e, 0xf8, 0x35, 0x8b, 0xfc, 0x20, 0xf9, 0x9e, 0xd2, 0x78, 0xe6, + 0xc9, 0x10, 0xbb, 0x99, 0x75, 0x25, 0x59, 0x92, 0x35, 0x18, 0x53, 0x96, 0x04, 0x11, 0x59, 0x2d, + 0xcb, 0x6a, 0x52, 0x3e, 0x3a, 0xac, 0xcc, 0xc4, 0x56, 0x13, 0x83, 0x67, 0xcc, 0x80, 0xfc, 0x1a, + 0x5c, 0x51, 0x4b, 0x74, 0x33, 0xc8, 0xb6, 0x2f, 0x89, 0xd0, 0xfc, 0x37, 0x92, 0x2b, 0x3c, 0x0f, + 0x7f, 0xf7, 0x4e, 0xad, 0x58, 0x2e, 0xac, 0x9c, 0xb2, 0xfb, 0xb3, 0x26, 0xbf, 0x51, 0x80, 0xb3, + 0x39, 0xb5, 0x4e, 0x60, 0xad, 0x7d, 0x8d, 0x7e, 0xa8, 0x37, 0xe0, 0xab, 0x2d, 0xb7, 0x15, 0xbf, + 0x6e, 0x94, 0xd6, 0x3f, 0xa3, 0xdf, 0x39, 0x35, 0x91, 0xdb, 0x00, 0x7b, 0x6e, 0x24, 0xd6, 0x18, + 0x06, 0x19, 0x4b, 0x7f, 0xa0, 0x6c, 0xd8, 0xf6, 0xdc, 0x48, 0xac, 0xb4, 0x37, 0x61, 0x18, 0x15, + 0xf6, 0xb0, 0x3c, 0x89, 0x22, 0x2d, 0xc6, 0x33, 0x42, 0xb5, 0x5e, 0x3f, 0xc4, 0x04, 0x0e, 0x59, + 0x61, 0xa2, 0x21, 0x1e, 0xa2, 0x52, 0x94, 0x13, 0xd1, 0xcf, 0x84, 0x7a, 0xc1, 0x8b, 0x64, 0x58, + 0x12, 0x23, 0x6b, 0x83, 0x49, 0x56, 0x03, 0x18, 0x0d, 0xc4, 0x3e, 0x76, 0x7f, 0x70, 0x74, 0xb0, + 0x34, 0xc4, 0x3f, 0x35, 0xe9, 0x62, 0xff, 0x5b, 0xa3, 0xfc, 0x3d, 0xee, 0x8e, 0xe7, 0x3e, 0x76, + 0xe3, 0x2d, 0x4f, 0x37, 0xf5, 0xc5, 0xe9, 0x93, 0x84, 0x20, 0x9e, 0x93, 0x28, 0x49, 0x59, 0x05, + 0x8b, 0x7d, 0xad, 0x82, 0x6f, 0x69, 0xf7, 0x67, 0x5a, 0x94, 0x53, 0x2e, 0x70, 0x99, 0x56, 0xb8, + 0xf8, 0x62, 0xed, 0x6b, 0x18, 0xc6, 0xc0, 0xa4, 0xfc, 0x72, 0x72, 0x7c, 0xe1, 0xa6, 0xd8, 0xe8, + 0x7b, 0x34, 0x9f, 0x47, 0x32, 0x15, 0x6f, 0xec, 0xf9, 0x88, 0x23, 0xc0, 0x18, 0x71, 0x84, 0x90, + 0x6d, 0x98, 0xde, 0x62, 0xe7, 0x3f, 0x77, 0xf4, 0xee, 0x04, 0xc2, 0x52, 0xc2, 0x6d, 0x30, 0x28, + 0x7f, 0x74, 0x64, 0x71, 0x83, 0xaa, 0x72, 0xfd, 0x08, 0xce, 0x20, 0x27, 0xcb, 0x30, 0x55, 0xa7, + 0x4e, 0xd0, 0xdc, 0x7f, 0x40, 0x9f, 0x33, 0xd9, 0xcb, 0xc8, 0x18, 0x12, 0x62, 0x09, 0xeb, 0x2f, + 0x16, 0xe9, 0x0e, 0x27, 0x26, 0x11, 0xf9, 0x14, 0x86, 0xeb, 0x7e, 0x10, 0xd5, 0x9e, 0x8b, 0x6d, + 0x50, 0x5e, 0x5f, 0x71, 0x60, 0xed, 0x9c, 0xcc, 0x9a, 0x12, 0xfa, 0x41, 0xd4, 0x78, 0x64, 0x04, + 0xc8, 0xe2, 0x28, 0xe4, 0x39, 0xcc, 0x98, 0x5b, 0x90, 0xf0, 0x3f, 0x1e, 0x15, 0x32, 0x5f, 0xd6, + 0x3e, 0xc7, 0x51, 0x6a, 0xd7, 0x05, 0xf7, 0xcb, 0xc9, 0x8d, 0xee, 0x31, 0x96, 0xeb, 0x82, 0x52, + 0x16, 0x3d, 0x59, 0xc7, 0x74, 0x33, 0xbc, 0x47, 0xd5, 0x90, 0xfb, 0x2d, 0x8f, 0xc5, 0x21, 0xd8, + 0xba, 0xb8, 0x8d, 0xe1, 0x48, 0x38, 0x61, 0x32, 0x47, 0x91, 0x9d, 0x22, 0x25, 0x5b, 0x70, 0x66, + 0x27, 0xa4, 0x5b, 0x01, 0x7d, 0xea, 0xd2, 0x67, 0x92, 0x1f, 0xc4, 0xf1, 0xaa, 0x18, 0xbf, 0x0e, + 0x2f, 0xcd, 0x62, 0x98, 0x26, 0x26, 0xef, 0x03, 0x6c, 0xb9, 0x9e, 0x47, 0x5b, 0x78, 0x07, 0x3a, + 0x8e, 0xac, 0xd0, 0xbe, 0xdb, 0x41, 0x68, 0xc3, 0xf7, 0xda, 0xfa, 0x90, 0x6a, 0xc8, 0xa4, 0x06, + 0x93, 0xab, 0x5e, 0xb3, 0xdd, 0x15, 0xbe, 0x0a, 0x21, 0x6e, 0x41, 0x22, 0x8e, 0x9e, 0xcb, 0x0b, + 0x1a, 0xa9, 0x8f, 0xdc, 0x24, 0x21, 0x0f, 0x80, 0x08, 0x80, 0x58, 0xb5, 0xce, 0xa3, 0x36, 0x15, + 0x9f, 0x3b, 0xda, 0x6d, 0x24, 0x23, 0x5c, 0xee, 0x46, 0x78, 0xba, 0x14, 0xd9, 0xfc, 0xfb, 0x30, + 0xae, 0xad, 0xf9, 0x8c, 0xa0, 0x11, 0x33, 0x7a, 0xd0, 0x88, 0x31, 0x3d, 0x38, 0xc4, 0x3f, 0x2a, + 0xc0, 0x85, 0xec, 0x6f, 0x49, 0x88, 0x6c, 0x9b, 0x30, 0xa6, 0x80, 0xea, 0x99, 0x90, 0xd4, 0x43, + 0x12, 0x32, 0x13, 0xff, 0xa0, 0xe5, 0xce, 0xa3, 0xf7, 0x3e, 0xe6, 0xf1, 0x02, 0x97, 0x03, 0xff, + 0xf7, 0x28, 0xcc, 0xa0, 0x3b, 0x7c, 0x72, 0x9f, 0xfa, 0x04, 0x83, 0xbf, 0x20, 0x4c, 0xb3, 0x75, + 0x0b, 0xb3, 0x17, 0x87, 0x27, 0xc3, 0xa0, 0x19, 0x04, 0xe4, 0x1d, 0xdd, 0x41, 0xa3, 0xa8, 0xa5, + 0xb7, 0x91, 0x40, 0xbd, 0x0b, 0xb1, 0xe7, 0xc6, 0x1b, 0x86, 0x7f, 0xc0, 0xb1, 0x37, 0xbd, 0xc1, + 0xe3, 0x6e, 0x7a, 0x3b, 0x6a, 0xd3, 0xe3, 0x41, 0x45, 0xbe, 0xa3, 0x6d, 0x7a, 0xaf, 0x7e, 0xb7, + 0x1b, 0x7e, 0xd5, 0xbb, 0xdd, 0xc8, 0xcb, 0xed, 0x76, 0xa3, 0x2f, 0xb8, 0xdb, 0xdd, 0x85, 0xa9, + 0x0d, 0x4a, 0x5b, 0xda, 0xad, 0xcd, 0x58, 0x7c, 0x7a, 0x7a, 0x14, 0xed, 0x71, 0x59, 0x57, 0x37, + 0x09, 0xaa, 0xdc, 0x5d, 0x13, 0xfe, 0x66, 0x76, 0xcd, 0xf1, 0x57, 0xbc, 0x6b, 0x4e, 0xbc, 0xcc, + 0xae, 0x99, 0xda, 0xfa, 0x26, 0x4f, 0xbc, 0xf5, 0xbd, 0xcc, 0x6e, 0xf5, 0x31, 0xfa, 0x37, 0xd6, + 0xeb, 0x2b, 0xc2, 0x95, 0x45, 0xf3, 0x1d, 0x59, 0xf1, 0x43, 0xe9, 0xfe, 0x8d, 0x7f, 0x33, 0x18, + 0x26, 0x11, 0xe0, 0x4c, 0xf0, 0x6f, 0xab, 0x86, 0x5e, 0x8d, 0x3a, 0xbd, 0x7a, 0x26, 0x31, 0x22, + 0xde, 0x58, 0x8a, 0x3d, 0x2e, 0x29, 0xd7, 0xd9, 0xb2, 0xdc, 0xfa, 0xf3, 0x02, 0xbf, 0x21, 0xfd, + 0x5f, 0x71, 0xab, 0x7c, 0x99, 0x5b, 0xcb, 0xdf, 0x8c, 0x63, 0x2f, 0x88, 0x38, 0x11, 0x81, 0xd3, + 0x7c, 0x12, 0x5f, 0x1b, 0xff, 0x90, 0x7d, 0xe7, 0x7a, 0x81, 0x90, 0x80, 0xe7, 0xd4, 0x48, 0xe9, + 0x85, 0xbb, 0x77, 0xe4, 0x06, 0x20, 0x42, 0x50, 0x70, 0xb0, 0xb9, 0x01, 0xe8, 0x04, 0xe8, 0xb8, + 0x77, 0xda, 0xb2, 0x79, 0xe8, 0x80, 0xcc, 0x16, 0xbc, 0x9b, 0x7e, 0xfc, 0x8e, 0xea, 0x4b, 0xfc, + 0xf8, 0x5d, 0x1f, 0xc6, 0xf8, 0x19, 0xfc, 0x0e, 0x9c, 0xb7, 0xe9, 0x81, 0xff, 0x94, 0xbe, 0x5a, + 0xb6, 0x5f, 0xc1, 0x39, 0x93, 0x21, 0x7f, 0x26, 0xc5, 0x63, 0xfa, 0x7f, 0x9c, 0x9d, 0x09, 0x40, + 0x10, 0xf0, 0x4c, 0x00, 0x3c, 0xa0, 0x38, 0xfb, 0x53, 0x3f, 0x37, 0xb0, 0xcc, 0xf2, 0xe1, 0x82, + 0xc9, 0xbc, 0xda, 0x6a, 0x61, 0x32, 0xd1, 0xa6, 0xdb, 0x71, 0xbc, 0x88, 0x6c, 0xc2, 0xb8, 0xf6, + 0x33, 0x61, 0x5c, 0xd0, 0x4a, 0x84, 0x4c, 0x13, 0x03, 0x8c, 0x80, 0xac, 0x31, 0xd8, 0xa2, 0x50, + 0x49, 0x0e, 0x0f, 0x1b, 0x32, 0xbd, 0xce, 0x1a, 0x4c, 0x6a, 0x3f, 0x95, 0xfd, 0x14, 0x3f, 0x7e, + 0xad, 0x06, 0x73, 0xc0, 0x4c, 0x12, 0xab, 0x09, 0xf3, 0x59, 0x83, 0xc6, 0x23, 0x77, 0x93, 0xe5, + 0x38, 0x30, 0x57, 0x7f, 0xd7, 0xbf, 0xd3, 0x79, 0x41, 0xb9, 0xac, 0xbf, 0x35, 0x08, 0xe7, 0xc5, + 0x64, 0xbc, 0xca, 0x19, 0x27, 0x3f, 0x82, 0x71, 0x6d, 0x8e, 0xc5, 0xa0, 0x5f, 0x96, 0x8f, 0x9c, + 0xf2, 0xd6, 0x02, 0x37, 0x82, 0x74, 0x11, 0xd0, 0x48, 0x4c, 0xf7, 0xca, 0x29, 0x5b, 0x67, 0x49, + 0xda, 0x30, 0x65, 0x4e, 0xb4, 0xb0, 0x03, 0x5d, 0xcd, 0xac, 0xc4, 0x44, 0x95, 0x61, 0xbd, 0x5b, + 0x8d, 0xcc, 0xe9, 0x5e, 0x39, 0x65, 0x27, 0x78, 0x93, 0x6f, 0xe0, 0x4c, 0x6a, 0x96, 0x85, 0x79, + 0xef, 0xf5, 0xcc, 0x0a, 0x53, 0xd8, 0xdc, 0x36, 0x1c, 0x20, 0x38, 0xb7, 0xda, 0x74, 0x25, 0xa4, + 0x05, 0x13, 0xfa, 0xc4, 0x0b, 0x43, 0xd5, 0x95, 0x1e, 0x43, 0xc9, 0x11, 0xb9, 0x70, 0x27, 0xc6, + 0x12, 0xe7, 0xfe, 0xb9, 0x69, 0xef, 0x36, 0x90, 0x47, 0x61, 0x98, 0xff, 0xb6, 0xfe, 0xa0, 0x00, + 0xe7, 0xb7, 0x02, 0x1a, 0x52, 0xaf, 0x49, 0x0d, 0x77, 0xf1, 0x97, 0x5c, 0x11, 0x79, 0xa6, 0xe6, + 0xe2, 0x4b, 0x9b, 0x9a, 0xad, 0x7f, 0x59, 0x80, 0x72, 0x56, 0x93, 0xeb, 0xd4, 0x6b, 0x91, 0x2d, + 0x28, 0x25, 0xfb, 0x20, 0xbe, 0x18, 0x4b, 0x45, 0x65, 0xce, 0xed, 0xed, 0xca, 0x29, 0x3b, 0x45, + 0x4d, 0x36, 0xe0, 0x8c, 0x06, 0x13, 0xa6, 0xde, 0xe2, 0x71, 0x4c, 0xbd, 0x6c, 0x86, 0x53, 0xa4, + 0xba, 0xa5, 0x7c, 0x05, 0x4f, 0xdd, 0x25, 0xff, 0xc0, 0x71, 0x3d, 0x26, 0x44, 0x6b, 0x71, 0xbf, + 0x20, 0x86, 0x8a, 0x61, 0xe7, 0xb6, 0x5f, 0x84, 0xca, 0x97, 0x33, 0x0a, 0xc5, 0xfa, 0x08, 0x4f, + 0x07, 0x61, 0x31, 0xe4, 0x6f, 0x95, 0x15, 0xb3, 0xcb, 0x30, 0xb4, 0xbd, 0x56, 0x5f, 0xac, 0x8a, + 0x97, 0xcf, 0x3c, 0x5e, 0x46, 0x3b, 0x6c, 0x34, 0x1d, 0x9b, 0x17, 0x58, 0x1f, 0x02, 0xb9, 0x47, + 0x23, 0x91, 0x16, 0x40, 0xd1, 0x5d, 0x83, 0x11, 0x01, 0x12, 0x94, 0xe8, 0x03, 0x28, 0x92, 0x0c, + 0xd8, 0xb2, 0xcc, 0xda, 0x92, 0x3a, 0x48, 0x9b, 0x3a, 0xa1, 0x76, 0xe8, 0xbf, 0x07, 0xa3, 0x81, + 0x80, 0x89, 0x33, 0x7f, 0x4a, 0x65, 0x7d, 0x41, 0x30, 0xb7, 0xae, 0x4b, 0x1c, 0x5b, 0xfd, 0x65, + 0xad, 0x61, 0x6c, 0x9b, 0xcd, 0xd5, 0xa5, 0x45, 0x36, 0xaa, 0x62, 0xb0, 0xe4, 0x74, 0xdc, 0x42, + 0x67, 0xf9, 0x88, 0xea, 0xef, 0x9e, 0x71, 0x68, 0x70, 0x03, 0x11, 0x11, 0x9d, 0x34, 0x14, 0xeb, + 0x2d, 0x15, 0x29, 0x27, 0x83, 0x5b, 0x5e, 0xf6, 0x92, 0x0d, 0x8c, 0x01, 0x74, 0x0f, 0xfd, 0x82, + 0x5e, 0x45, 0x23, 0x1c, 0x98, 0xe7, 0x22, 0x04, 0xeb, 0x95, 0xc8, 0xdd, 0xe8, 0xab, 0x6d, 0x77, + 0x11, 0xc6, 0x14, 0x4c, 0x5d, 0xf2, 0xf1, 0xb1, 0x32, 0xf0, 0x77, 0xdf, 0xe2, 0x4f, 0xc4, 0x9b, + 0x8a, 0x41, 0x4c, 0xc7, 0xaa, 0xe0, 0xdf, 0xf4, 0xb7, 0x5c, 0x45, 0x48, 0x83, 0xe8, 0x5b, 0xad, + 0x22, 0x0e, 0x12, 0x75, 0x92, 0x2a, 0x0c, 0xfc, 0xdd, 0x85, 0xe3, 0x0c, 0xd4, 0xb7, 0x5c, 0x05, + 0x1b, 0xa8, 0x6f, 0xaf, 0x0a, 0x2a, 0xa3, 0x69, 0xf1, 0x45, 0x9a, 0xaa, 0x64, 0x39, 0x5d, 0x89, + 0x34, 0xa3, 0x27, 0x28, 0x7a, 0xce, 0x07, 0x85, 0x0b, 0x7c, 0xb0, 0x7e, 0x01, 0xd5, 0xb0, 0x01, + 0xfb, 0x76, 0xab, 0xf9, 0x7b, 0x05, 0x1e, 0xdb, 0xab, 0xbe, 0xa9, 0x65, 0x4d, 0xf5, 0x1e, 0xfb, + 0x9a, 0x0f, 0x82, 0xf6, 0xb5, 0x3f, 0x70, 0xbd, 0x96, 0xee, 0x83, 0xe0, 0x74, 0xa3, 0x7d, 0x15, + 0xfb, 0xfa, 0x89, 0xeb, 0xb5, 0xec, 0x24, 0x36, 0x79, 0x1f, 0x26, 0x35, 0x90, 0x92, 0x04, 0x79, + 0x76, 0x12, 0x9d, 0xdc, 0x6d, 0xd9, 0x26, 0xa6, 0xf5, 0xd7, 0x05, 0x98, 0xce, 0xc8, 0xe7, 0x8d, + 0x86, 0x12, 0xd4, 0xb0, 0xd4, 0x46, 0x25, 0xf2, 0x89, 0x61, 0x98, 0x11, 0xe3, 0xfc, 0x55, 0x88, + 0x98, 0x97, 0x41, 0xcb, 0x3d, 0x5e, 0xd4, 0xb2, 0xe4, 0x65, 0xe7, 0x1b, 0xd7, 0xd1, 0x49, 0x08, + 0x10, 0xb7, 0x44, 0x98, 0xa4, 0xeb, 0x4c, 0x5c, 0xd6, 0x12, 0x97, 0xbf, 0x92, 0xcc, 0xe9, 0x5a, + 0x35, 0xd6, 0x6f, 0x16, 0xe1, 0x6c, 0x46, 0xff, 0xeb, 0x34, 0xfa, 0x9b, 0x18, 0x82, 0x44, 0xfa, + 0xf8, 0x81, 0x5f, 0x50, 0xfa, 0x78, 0xeb, 0x4f, 0x8a, 0x70, 0x76, 0xa7, 0x13, 0xe2, 0x53, 0xb2, + 0x55, 0xef, 0x29, 0xf5, 0x22, 0x3f, 0x78, 0x8e, 0xcf, 0x5f, 0xc8, 0x3b, 0x30, 0xb4, 0x42, 0xdb, + 0x6d, 0x5f, 0xac, 0xff, 0x8b, 0xd2, 0x0d, 0x24, 0x89, 0x8d, 0x48, 0x2b, 0xa7, 0x6c, 0x8e, 0x4d, + 0xde, 0x87, 0xb1, 0x15, 0xea, 0x04, 0xd1, 0x23, 0xea, 0x48, 0x75, 0x48, 0xe6, 0x4c, 0xd1, 0x48, + 0x04, 0xc2, 0xca, 0x29, 0x3b, 0xc6, 0x26, 0x0b, 0x30, 0xb8, 0xe5, 0x7b, 0x7b, 0xea, 0xd9, 0x7c, + 0x4e, 0x85, 0x0c, 0x67, 0xe5, 0x94, 0x8d, 0xb8, 0x64, 0x1d, 0x26, 0xab, 0x7b, 0xd4, 0x8b, 0xd6, + 0x69, 0xe4, 0xb4, 0x9c, 0xc8, 0x11, 0x62, 0xf3, 0xb5, 0x3c, 0x62, 0x03, 0x79, 0xe5, 0x94, 0x6d, + 0x52, 0x93, 0x0f, 0x61, 0xe4, 0x9e, 0xef, 0xb7, 0x1e, 0x3d, 0x97, 0xc1, 0x1f, 0x2a, 0x79, 0x8c, + 0x04, 0xda, 0xca, 0x29, 0x5b, 0x52, 0xd4, 0x86, 0x60, 0x60, 0x3d, 0xdc, 0xb3, 0x0e, 0x0b, 0x50, + 0x5e, 0xf2, 0x9f, 0x79, 0x99, 0xa3, 0xfa, 0x7d, 0x73, 0x54, 0x25, 0xfb, 0x0c, 0xfc, 0xc4, 0xb8, + 0xbe, 0x0d, 0x83, 0x5b, 0xae, 0xb7, 0x97, 0x10, 0x05, 0x33, 0xe8, 0x18, 0x16, 0x0e, 0x8f, 0xeb, + 0xed, 0x91, 0x35, 0x29, 0xdf, 0x0b, 0x3b, 0xe6, 0x80, 0xa1, 0x54, 0x64, 0x50, 0xeb, 0xd8, 0xb1, + 0x1c, 0xcf, 0x7f, 0xcb, 0x0e, 0xbe, 0x01, 0x73, 0x39, 0xf5, 0x8a, 0x77, 0xf0, 0xac, 0x6f, 0x83, + 0x28, 0xd8, 0xfc, 0x3f, 0x05, 0x98, 0xcd, 0x9c, 0xc0, 0x24, 0x26, 0xd3, 0xe9, 0xf8, 0xc2, 0x5c, + 0x6c, 0xfb, 0xcd, 0x27, 0xc7, 0xf0, 0x26, 0xb3, 0x64, 0x9e, 0x71, 0xf1, 0x85, 0x34, 0x19, 0x5d, + 0x22, 0x97, 0x9c, 0xce, 0xd2, 0xfa, 0xfd, 0xac, 0xb5, 0xce, 0x07, 0xb7, 0x0c, 0x23, 0x32, 0x5f, + 0x19, 0x37, 0x5d, 0xc9, 0x9f, 0xf8, 0xd8, 0x4c, 0xee, 0x05, 0x32, 0x90, 0x8c, 0xfc, 0xe4, 0x77, + 0xb5, 0xc0, 0x5d, 0xfc, 0x8b, 0xfd, 0xe0, 0x25, 0xbe, 0x4b, 0xc5, 0x8b, 0xd5, 0xb9, 0xe2, 0x87, + 0x91, 0xa7, 0xbc, 0x98, 0x6d, 0xf5, 0x9b, 0xdc, 0x80, 0x92, 0xcc, 0x4d, 0x22, 0x92, 0x20, 0x89, + 0x7c, 0xfa, 0x76, 0x0a, 0x4e, 0xde, 0x83, 0xb9, 0x24, 0x4c, 0xf6, 0x92, 0xbf, 0x16, 0xcc, 0x2b, + 0xb6, 0xfe, 0xac, 0x88, 0xb1, 0xd5, 0x7b, 0x7c, 0x3a, 0x6c, 0xfe, 0x36, 0xeb, 0x62, 0xb4, 0x8a, + 0x9b, 0x75, 0x72, 0x01, 0xc6, 0x36, 0xeb, 0x46, 0xd2, 0x37, 0x3b, 0x06, 0xb0, 0x66, 0xb3, 0x2e, + 0x54, 0x83, 0xe6, 0xbe, 0x1b, 0xd1, 0x66, 0xd4, 0x0d, 0xc4, 0x46, 0x6f, 0xa7, 0xe0, 0xc4, 0x82, + 0x89, 0x7b, 0x6d, 0xf7, 0x51, 0x53, 0x32, 0xe3, 0x43, 0x60, 0xc0, 0xc8, 0xeb, 0x30, 0xb5, 0xea, + 0x85, 0x91, 0xd3, 0x6e, 0xaf, 0xd3, 0x68, 0xdf, 0x6f, 0x89, 0x94, 0xb6, 0x76, 0x02, 0xca, 0xea, + 0x5d, 0xf4, 0xbd, 0xc8, 0x71, 0x3d, 0x1a, 0xd8, 0x5d, 0x2f, 0x72, 0x0f, 0xa8, 0xe8, 0x7b, 0x0a, + 0x4e, 0xde, 0x86, 0x59, 0x05, 0xdb, 0x0c, 0x9a, 0xfb, 0x34, 0x8c, 0x02, 0x4c, 0x05, 0x89, 0xfe, + 0x4a, 0x76, 0x76, 0x21, 0xd6, 0xd0, 0xf6, 0xbb, 0xad, 0x65, 0xef, 0xa9, 0x1b, 0xf8, 0x1e, 0x26, + 0x5a, 0x19, 0x15, 0x35, 0x24, 0xe0, 0xd6, 0xef, 0x8d, 0x66, 0xee, 0x0c, 0x2f, 0xb3, 0x06, 0xbf, + 0x80, 0x89, 0x45, 0xa7, 0xe3, 0x3c, 0x72, 0xdb, 0x6e, 0xe4, 0xaa, 0x9c, 0x79, 0xef, 0xf4, 0xd9, + 0x56, 0x64, 0xb6, 0x1a, 0xda, 0xd2, 0x89, 0x6d, 0x83, 0xd5, 0xfc, 0x5f, 0x0d, 0xc3, 0x6c, 0x26, + 0x1e, 0xb9, 0x2e, 0x92, 0xeb, 0xa9, 0xad, 0x5b, 0x64, 0x6e, 0xb3, 0x93, 0x60, 0x36, 0x97, 0x08, + 0x5a, 0x6c, 0x53, 0xc7, 0xeb, 0x8a, 0xbc, 0x6d, 0xb6, 0x01, 0x63, 0x73, 0xc9, 0x44, 0x13, 0x8d, + 0x19, 0x3a, 0xa1, 0xdb, 0x09, 0x28, 0xb9, 0x0c, 0xe3, 0x0c, 0x22, 0x59, 0x0d, 0xf2, 0xe7, 0x92, + 0x1a, 0x88, 0x71, 0xda, 0xf0, 0x5b, 0x54, 0xe3, 0x34, 0xc4, 0x39, 0x99, 0x50, 0xc6, 0x89, 0x41, + 0x24, 0xa7, 0x61, 0xce, 0x49, 0x03, 0x91, 0xd7, 0x60, 0xb2, 0xda, 0xe9, 0x68, 0x8c, 0x30, 0x61, + 0x9b, 0x6d, 0x02, 0xc9, 0x25, 0x80, 0x6a, 0xa7, 0x23, 0xd9, 0x60, 0x32, 0x36, 0x5b, 0x83, 0x90, + 0x9b, 0x71, 0x78, 0x3c, 0x8d, 0x15, 0xde, 0x86, 0xd8, 0x19, 0x25, 0x6c, 0x5c, 0x55, 0x2c, 0x31, + 0xc1, 0x14, 0xf8, 0xb8, 0x26, 0xc0, 0xe4, 0x23, 0x38, 0x97, 0x70, 0x34, 0xd1, 0x2a, 0xc0, 0x9b, + 0x0a, 0x3b, 0x1f, 0x81, 0xbc, 0x0b, 0x67, 0x13, 0x85, 0xb2, 0x3a, 0xbc, 0x94, 0xb0, 0x73, 0x4a, + 0xc9, 0x07, 0x50, 0x4e, 0x3c, 0x81, 0x8f, 0x2b, 0xc5, 0x0b, 0x08, 0x3b, 0xb7, 0x9c, 0x7d, 0x5d, + 0x89, 0xb7, 0x74, 0xa2, 0x4a, 0xbc, 0x6b, 0xb5, 0xb3, 0x0b, 0xc9, 0x0a, 0x54, 0x32, 0x9d, 0x77, + 0xb4, 0x8a, 0x31, 0xc9, 0x9c, 0xdd, 0x0f, 0x8d, 0xd4, 0xe0, 0x42, 0x26, 0x8a, 0x6c, 0x06, 0xa6, + 0x9e, 0xb3, 0x7b, 0xe2, 0x90, 0x05, 0x98, 0x89, 0x9d, 0x98, 0xb4, 0x26, 0x60, 0xd6, 0x39, 0x3b, + 0xb3, 0x8c, 0xbc, 0x69, 0x06, 0x3a, 0xe0, 0x95, 0x61, 0xd2, 0x39, 0x3b, 0x5d, 0x60, 0x1d, 0x15, + 0xe0, 0x42, 0xe6, 0x59, 0x2c, 0x55, 0x86, 0xf9, 0xa4, 0x6c, 0xaa, 0xed, 0x05, 0x37, 0x60, 0x10, + 0x75, 0x08, 0x6e, 0xea, 0x96, 0x7e, 0xbb, 0x48, 0xcf, 0x59, 0xb1, 0x52, 0x1b, 0x71, 0xc8, 0x3d, + 0x75, 0xb5, 0x39, 0x80, 0xc6, 0x92, 0x5b, 0x49, 0x19, 0x2d, 0xa3, 0x72, 0xfd, 0x8a, 0x53, 0x5e, + 0x66, 0xbe, 0xcc, 0x2d, 0xd2, 0x9f, 0x15, 0xa0, 0xd2, 0x47, 0x04, 0x51, 0x7d, 0x2a, 0x1c, 0xa3, + 0x4f, 0xf7, 0x55, 0x9f, 0xf8, 0x3b, 0xe3, 0x85, 0xe3, 0x89, 0x39, 0xaf, 0xba, 0x5b, 0x7f, 0x5d, + 0x00, 0x92, 0x16, 0x75, 0xc9, 0xf7, 0x60, 0xac, 0x5e, 0x5f, 0x31, 0x5c, 0x18, 0x53, 0x97, 0x5b, + 0x31, 0x06, 0xb9, 0x7d, 0x2c, 0x9f, 0x45, 0xdd, 0x63, 0xf1, 0x93, 0x94, 0xa3, 0xe4, 0x40, 0x4f, + 0x47, 0xc9, 0x94, 0x9b, 0xe4, 0x72, 0x86, 0xe7, 0xdf, 0x60, 0x1f, 0xcf, 0xbf, 0xb4, 0x5b, 0x9f, + 0xb5, 0x04, 0xe5, 0x3c, 0x69, 0x19, 0x77, 0x38, 0x1e, 0x54, 0x4e, 0xbb, 0xa0, 0xe3, 0x3b, 0x9c, + 0x09, 0xb6, 0xde, 0x85, 0xb3, 0x8a, 0x9a, 0x67, 0xab, 0xd1, 0xa2, 0x39, 0x08, 0x15, 0x5b, 0x45, + 0x8d, 0x88, 0x01, 0xd6, 0x9f, 0x0e, 0xa6, 0x08, 0xeb, 0xdd, 0x83, 0x03, 0x27, 0x78, 0x4e, 0xaa, + 0x26, 0xe1, 0x40, 0x5f, 0xad, 0xa6, 0x36, 0xc8, 0x64, 0x4c, 0x8d, 0x3b, 0x3b, 0x17, 0x50, 0xc2, + 0xf0, 0x9a, 0x94, 0x5f, 0xed, 0x15, 0x79, 0xc4, 0x2a, 0x03, 0x48, 0x76, 0x61, 0x52, 0x9c, 0xdd, + 0xf8, 0x5b, 0x7e, 0x63, 0xb7, 0x93, 0xdf, 0x98, 0xd1, 0xbc, 0x9b, 0x06, 0x09, 0x5f, 0x8d, 0x26, + 0x1b, 0xf2, 0x05, 0x4c, 0x49, 0x49, 0x4d, 0x30, 0xe6, 0xce, 0x58, 0x77, 0x7a, 0x33, 0x36, 0x69, + 0x38, 0xe7, 0x04, 0x23, 0xd6, 0x64, 0xb9, 0xd9, 0x71, 0xce, 0x43, 0xc7, 0x69, 0xb2, 0x41, 0x22, + 0x9a, 0x6c, 0xc0, 0xe6, 0x3f, 0x05, 0x92, 0xee, 0x57, 0xbf, 0xcf, 0x69, 0x52, 0xfb, 0x9c, 0xe6, + 0xab, 0x30, 0x9d, 0xd1, 0x81, 0x13, 0xb1, 0xf8, 0x14, 0x48, 0xba, 0xa5, 0x27, 0xe1, 0x60, 0x5d, + 0x87, 0xd7, 0xd5, 0x10, 0xa8, 0xd5, 0x60, 0xf0, 0x94, 0x46, 0xf6, 0x5f, 0x2f, 0x42, 0xa5, 0x0f, + 0x2a, 0xf9, 0xfb, 0x85, 0xe4, 0x68, 0xf3, 0xd5, 0xf8, 0x7e, 0x72, 0xb4, 0xb3, 0xe9, 0x33, 0x86, + 0xbd, 0xf6, 0xc1, 0x6f, 0xfc, 0xc5, 0x0b, 0x6b, 0x1e, 0xe9, 0x29, 0x3b, 0xf9, 0x68, 0x0d, 0xea, + 0xa3, 0xb5, 0x0b, 0x33, 0x86, 0x5a, 0x78, 0x9c, 0xc3, 0xcb, 0x02, 0x10, 0x89, 0x73, 0xd7, 0xfc, + 0x3d, 0x91, 0xdf, 0xb7, 0x58, 0x2e, 0xd8, 0x1a, 0xd4, 0xba, 0x0b, 0xb3, 0x09, 0xbe, 0xc2, 0xf8, + 0xff, 0x3d, 0x50, 0x2f, 0xf7, 0x91, 0xf1, 0x40, 0xed, 0xcc, 0xcf, 0x0f, 0x2b, 0x93, 0x4c, 0xac, + 0xbf, 0x19, 0x27, 0x4f, 0x90, 0x7f, 0x59, 0xeb, 0xfa, 0xf5, 0x45, 0xb5, 0xad, 0x47, 0x34, 0x22, + 0x77, 0x60, 0x98, 0x43, 0x12, 0x21, 0xca, 0x75, 0x6c, 0xb1, 0x2f, 0x08, 0x44, 0x6b, 0x16, 0xdf, + 0x19, 0xe3, 0x8f, 0x6a, 0x1c, 0x17, 0xc3, 0xda, 0xe1, 0x29, 0x7b, 0x62, 0xb0, 0x0a, 0x83, 0x3e, + 0x58, 0x8d, 0xe3, 0x77, 0x48, 0x3f, 0x16, 0x89, 0xe7, 0xf9, 0xcf, 0xda, 0xb4, 0xc5, 0x73, 0x2d, + 0xd6, 0x26, 0x84, 0x8e, 0x3b, 0xe8, 0x30, 0x06, 0x48, 0x66, 0x7d, 0x02, 0xb3, 0x4c, 0x5a, 0x08, + 0x92, 0xf5, 0x61, 0xa2, 0x0e, 0x06, 0x33, 0x9f, 0x13, 0x38, 0x0c, 0x84, 0xcf, 0x09, 0x44, 0xa1, + 0xb5, 0x06, 0xe7, 0xb8, 0xf1, 0x53, 0xef, 0x52, 0x7c, 0xd5, 0x30, 0x84, 0xbf, 0x13, 0xaf, 0x54, + 0x33, 0x7a, 0xcf, 0xf1, 0xac, 0x8f, 0xf1, 0x19, 0x94, 0x58, 0xa8, 0xae, 0xef, 0xc5, 0x96, 0xce, + 0xe3, 0xbd, 0x9b, 0xfe, 0xdf, 0xe1, 0x42, 0xb5, 0xd3, 0xa1, 0x5e, 0x2b, 0x26, 0xdc, 0x0e, 0x9c, + 0x63, 0x46, 0xb5, 0x20, 0x55, 0x18, 0x42, 0x6c, 0x75, 0x07, 0x2c, 0x9a, 0x9b, 0xd1, 0x1c, 0xc4, + 0x13, 0x31, 0x6b, 0xb1, 0x02, 0x4e, 0x69, 0xb5, 0x60, 0xae, 0xde, 0x7d, 0x74, 0xe0, 0x46, 0xf8, + 0x08, 0x01, 0x23, 0xc3, 0xc8, 0xba, 0x57, 0x65, 0x96, 0x35, 0x3e, 0x18, 0xd7, 0xe3, 0xe7, 0x32, + 0xf8, 0x8e, 0x41, 0x44, 0x8b, 0x79, 0x7a, 0xe7, 0x66, 0x4c, 0x8a, 0x56, 0x1e, 0x5e, 0x0b, 0x16, + 0x8b, 0x4c, 0x6c, 0xd6, 0x34, 0x9c, 0xd1, 0xef, 0xbc, 0xf8, 0x0a, 0x99, 0x85, 0x69, 0xf3, 0x2e, + 0x8b, 0x83, 0xbf, 0x86, 0x19, 0x6e, 0x6b, 0xe7, 0x31, 0xe7, 0x17, 0xe2, 0xf0, 0xea, 0xc5, 0xdd, + 0x85, 0xc4, 0xeb, 0x07, 0x74, 0x8a, 0x56, 0xd9, 0x44, 0x76, 0x17, 0xf8, 0x53, 0xd6, 0xa7, 0x0b, + 0xc6, 0x6d, 0x6c, 0x71, 0x77, 0xa1, 0x36, 0x22, 0x62, 0xf7, 0x32, 0xee, 0x7c, 0xfa, 0xbf, 0x15, + 0xee, 0x0b, 0x18, 0x3d, 0x61, 0x85, 0x3a, 0xf8, 0xd2, 0x29, 0xfb, 0x0d, 0xfa, 0x14, 0x14, 0x55, + 0x70, 0xce, 0xa2, 0xdb, 0xb2, 0xfe, 0xb0, 0x00, 0xd7, 0xb9, 0x40, 0x96, 0x4d, 0x87, 0x17, 0x5b, + 0x39, 0xc4, 0xe4, 0x3d, 0x18, 0x0a, 0x35, 0x07, 0x0f, 0x4b, 0xb4, 0xbc, 0x17, 0x27, 0x4e, 0x40, + 0xaa, 0x30, 0xa1, 0x3f, 0xe8, 0x39, 0x5e, 0xdc, 0x3f, 0x7b, 0xfc, 0xe0, 0xb1, 0xa3, 0x1e, 0xf9, + 0x3c, 0x81, 0xf3, 0xcb, 0xdf, 0xb0, 0x05, 0x21, 0x4e, 0x28, 0xa1, 0x3d, 0xc4, 0x6f, 0x9c, 0x4f, + 0x6f, 0x8b, 0x15, 0x63, 0xaa, 0xf6, 0x49, 0x30, 0xd3, 0x93, 0xe5, 0x21, 0xa7, 0x44, 0xf8, 0x31, + 0xdb, 0x80, 0x59, 0x7f, 0x5a, 0x80, 0x0b, 0xd9, 0xb5, 0x89, 0x8d, 0x65, 0x15, 0xce, 0x2c, 0x3a, + 0x9e, 0xef, 0xb9, 0x4d, 0xa7, 0x5d, 0x6f, 0xee, 0xd3, 0x56, 0x57, 0x45, 0xf8, 0x55, 0xbb, 0xcc, + 0x1e, 0xf5, 0x24, 0xb9, 0x44, 0xb1, 0xd3, 0x54, 0x4c, 0x43, 0xc4, 0x37, 0x21, 0x7c, 0xef, 0x6d, + 0xd3, 0x40, 0xf1, 0xe3, 0x2d, 0xcb, 0x29, 0x25, 0xb7, 0xe5, 0xa5, 0x42, 0x6b, 0xc7, 0x73, 0x23, + 0x45, 0xc4, 0x4d, 0x3d, 0x59, 0x45, 0xd6, 0xbf, 0x29, 0xc0, 0x39, 0x4c, 0xea, 0x65, 0xa4, 0x09, + 0x8d, 0x03, 0x5d, 0xcb, 0x58, 0xcd, 0x05, 0xe3, 0x8d, 0x8b, 0x81, 0x6d, 0x06, 0x6d, 0x26, 0x6f, + 0xc2, 0x60, 0x5d, 0x3a, 0x9c, 0x4d, 0x25, 0x12, 0x3c, 0x0b, 0x0a, 0x56, 0x6e, 0x23, 0x16, 0xd3, + 0xe1, 0x97, 0x68, 0xd8, 0xa4, 0x1e, 0x66, 0xe2, 0xe6, 0x96, 0x07, 0x0d, 0x12, 0xc7, 0xa0, 0x1a, + 0xcc, 0x8b, 0x41, 0x35, 0x64, 0xc6, 0xa0, 0xb2, 0x9e, 0xf2, 0x94, 0x5e, 0xc9, 0x0e, 0x89, 0x49, + 0xfa, 0x38, 0x95, 0xb8, 0x9b, 0x9f, 0x03, 0x67, 0xb3, 0x7a, 0xc6, 0x84, 0xf4, 0x44, 0x4e, 0xee, + 0xfc, 0xc0, 0xd2, 0x5b, 0xf0, 0x9a, 0x81, 0x5b, 0x6d, 0xb7, 0xfd, 0x67, 0xb4, 0xb5, 0x15, 0xf8, + 0x07, 0x7e, 0x64, 0xa4, 0x34, 0x12, 0x99, 0xeb, 0xe3, 0x6b, 0x23, 0xb1, 0x2a, 0x13, 0x60, 0xeb, + 0x7f, 0x83, 0x6b, 0x7d, 0x38, 0x8a, 0x4e, 0xd5, 0xe1, 0x8c, 0x93, 0x28, 0x93, 0x9e, 0x43, 0xd7, + 0xb2, 0xfa, 0x95, 0x64, 0x14, 0xda, 0x69, 0xfa, 0x1b, 0xdb, 0x46, 0xb2, 0x6b, 0x52, 0x86, 0x99, + 0x2d, 0x7b, 0x73, 0x69, 0x67, 0x71, 0xbb, 0xb1, 0xfd, 0xc5, 0xd6, 0x72, 0x63, 0x67, 0xe3, 0xc1, + 0xc6, 0xe6, 0xc3, 0x0d, 0x1e, 0x99, 0xdd, 0x28, 0xd9, 0x5e, 0xae, 0xae, 0x97, 0x0a, 0x64, 0x06, + 0x4a, 0x06, 0x78, 0x79, 0xa7, 0x56, 0x2a, 0xde, 0xf8, 0xda, 0x48, 0xe2, 0x4c, 0x2e, 0x40, 0xb9, + 0xbe, 0xb3, 0xb5, 0xb5, 0x69, 0x2b, 0xae, 0x7a, 0x5c, 0xf8, 0x59, 0x38, 0x63, 0x94, 0xde, 0xb5, + 0x97, 0x97, 0x4b, 0x05, 0xd6, 0x14, 0x03, 0xbc, 0x65, 0x2f, 0xaf, 0xaf, 0xee, 0xac, 0x97, 0x8a, + 0x37, 0x1a, 0xfa, 0xc3, 0x3a, 0x72, 0x1e, 0xe6, 0x96, 0x96, 0x77, 0x57, 0x17, 0x97, 0xb3, 0x78, + 0xcf, 0x40, 0x49, 0x2f, 0xdc, 0xde, 0xdc, 0xde, 0xe2, 0xac, 0x75, 0xe8, 0xc3, 0xe5, 0x5a, 0x75, + 0x67, 0x7b, 0x65, 0xa3, 0x34, 0x60, 0x0d, 0x8e, 0x16, 0x4b, 0xc5, 0x1b, 0x3f, 0x32, 0x5e, 0xdd, + 0xb1, 0xe6, 0x0b, 0xf4, 0x9d, 0x7a, 0xf5, 0x5e, 0x7e, 0x15, 0xbc, 0x74, 0xfd, 0x6e, 0xb5, 0x54, + 0x20, 0x17, 0xe1, 0x9c, 0x01, 0xdd, 0xaa, 0xd6, 0xeb, 0x0f, 0x37, 0xed, 0xa5, 0xb5, 0xe5, 0x7a, + 0xbd, 0x54, 0xbc, 0xb1, 0x6b, 0xc4, 0xdd, 0x63, 0x35, 0xac, 0xdf, 0xad, 0x36, 0xec, 0xe5, 0xcf, + 0x76, 0x56, 0xed, 0xe5, 0xa5, 0x74, 0x0d, 0x46, 0xe9, 0x17, 0xcb, 0xf5, 0x52, 0x81, 0x4c, 0xc3, + 0x69, 0x03, 0xba, 0xb1, 0x59, 0x2a, 0xde, 0x78, 0x5d, 0x84, 0x66, 0x23, 0x53, 0x00, 0x4b, 0xcb, + 0xf5, 0xc5, 0xe5, 0x8d, 0xa5, 0xd5, 0x8d, 0x7b, 0xa5, 0x53, 0x64, 0x12, 0xc6, 0xaa, 0xea, 0x67, + 0xe1, 0xc6, 0x07, 0x70, 0x3a, 0xa1, 0xde, 0x33, 0x0c, 0xa5, 0x18, 0x97, 0x4e, 0xe1, 0xf0, 0xcb, + 0x9f, 0x68, 0x63, 0xe5, 0x9a, 0x7a, 0xa9, 0x70, 0xa3, 0x26, 0xf3, 0xfe, 0x6a, 0xdf, 0x39, 0x19, + 0x87, 0x91, 0xa5, 0xe5, 0xbb, 0xd5, 0x9d, 0xb5, 0xed, 0xd2, 0x29, 0xf6, 0x63, 0xd1, 0x5e, 0xae, + 0x6e, 0x2f, 0x2f, 0x95, 0x0a, 0x64, 0x0c, 0x86, 0xea, 0xdb, 0xd5, 0xed, 0xe5, 0x52, 0x91, 0x8c, + 0xc2, 0xe0, 0x4e, 0x7d, 0xd9, 0x2e, 0x0d, 0x2c, 0xfc, 0xfe, 0x3f, 0x28, 0x70, 0x43, 0xa3, 0x7c, + 0xc1, 0xf5, 0xb5, 0xa6, 0x50, 0x8a, 0x2d, 0x4f, 0x24, 0x39, 0xcd, 0xd5, 0x1e, 0x51, 0x0a, 0x98, + 0xef, 0x71, 0xb9, 0x83, 0x08, 0xd7, 0x0b, 0xb7, 0x0b, 0xc4, 0x46, 0x67, 0x98, 0x84, 0x7e, 0xa5, + 0x38, 0x67, 0xab, 0xc0, 0xf3, 0x17, 0x7b, 0xaa, 0x65, 0xe4, 0x57, 0xc0, 0xd2, 0x79, 0xe6, 0x68, + 0x21, 0xdf, 0x3b, 0x9e, 0xb6, 0x21, 0xeb, 0x7c, 0xfd, 0x78, 0xe8, 0xe4, 0x3e, 0x4c, 0x32, 0xd9, + 0x5c, 0xa1, 0x91, 0xf3, 0x49, 0x42, 0x4d, 0x25, 0x98, 0xbf, 0x90, 0x5d, 0xa8, 0xf2, 0x10, 0x4d, + 0x60, 0x47, 0xb8, 0x72, 0x1d, 0x12, 0x19, 0xbe, 0x43, 0x42, 0xf8, 0x8e, 0x3f, 0x7f, 0x26, 0x01, + 0xde, 0xbd, 0x73, 0xbb, 0x40, 0xea, 0x18, 0x3b, 0xcf, 0x10, 0xf2, 0x89, 0x7c, 0x52, 0x98, 0x96, + 0xfe, 0x79, 0x6b, 0x2a, 0x2a, 0x6b, 0x68, 0x8e, 0x76, 0xb0, 0x01, 0x24, 0x2d, 0x3b, 0x93, 0xcb, + 0xf1, 0x3a, 0xc8, 0x16, 0xab, 0xe7, 0xcf, 0xa6, 0x2e, 0xb2, 0x96, 0x99, 0xf4, 0x44, 0x96, 0x61, + 0x4a, 0xbc, 0xcd, 0x17, 0xd2, 0x3c, 0xe9, 0xa5, 0x0f, 0xe4, 0xb2, 0xb9, 0x87, 0xe3, 0xa4, 0x34, + 0x02, 0x32, 0x1f, 0xf7, 0x23, 0xa9, 0x26, 0xcc, 0x9f, 0xcf, 0x2c, 0x13, 0xfd, 0xbb, 0x0b, 0x53, + 0xa6, 0x72, 0x41, 0xe4, 0x04, 0x65, 0xea, 0x1c, 0xb9, 0x0d, 0x6a, 0xc0, 0xdc, 0xba, 0xe3, 0xe2, + 0x7d, 0x89, 0x70, 0xd2, 0x93, 0x7e, 0x70, 0xa4, 0xd2, 0xc3, 0x31, 0xae, 0x4e, 0xbd, 0x96, 0x9a, + 0x84, 0xbc, 0x9c, 0x02, 0xf8, 0xd9, 0xd4, 0xa5, 0x8c, 0x6c, 0xfa, 0x28, 0x12, 0xcb, 0xcc, 0x04, + 0x9d, 0xe5, 0x76, 0x3a, 0x9f, 0xe7, 0x29, 0x4d, 0xd6, 0x51, 0x48, 0x4f, 0x70, 0xd4, 0xd6, 0xc4, + 0x89, 0xd9, 0x95, 0x31, 0x42, 0x84, 0x96, 0x9e, 0x5f, 0x14, 0x86, 0x24, 0x67, 0xe0, 0x72, 0x99, + 0xdd, 0x2e, 0x90, 0xaf, 0xf1, 0xab, 0xce, 0x64, 0xf7, 0xd0, 0x8d, 0xf6, 0x85, 0xf4, 0x73, 0x3e, + 0x93, 0x81, 0xf8, 0x50, 0x7a, 0x70, 0xb7, 0x61, 0x26, 0xcb, 0x39, 0x5b, 0x0d, 0x68, 0x0f, 0xcf, + 0xed, 0xdc, 0x55, 0x60, 0x33, 0x55, 0xa3, 0x95, 0x3f, 0x49, 0x3d, 0x7c, 0x83, 0x73, 0x79, 0x7e, + 0x04, 0x53, 0x6c, 0x95, 0x3c, 0xa0, 0xb4, 0x53, 0x6d, 0xbb, 0x4f, 0x69, 0x48, 0x64, 0xe0, 0x63, + 0x05, 0xca, 0xa3, 0xbd, 0x5e, 0x20, 0xdf, 0x85, 0xf1, 0x87, 0x4e, 0xd4, 0xdc, 0x17, 0x01, 0x40, + 0x65, 0x7c, 0x50, 0x84, 0xcd, 0xcb, 0x5f, 0x58, 0x78, 0xbb, 0x40, 0x7e, 0x00, 0x23, 0xf7, 0x68, + 0x84, 0x4f, 0xba, 0xaf, 0x28, 0x5f, 0x42, 0x6e, 0x9f, 0x5c, 0xf5, 0xd4, 0x2b, 0x24, 0xd9, 0xe0, + 0xa4, 0x31, 0x97, 0xdc, 0x02, 0xe0, 0x1b, 0x02, 0x72, 0x48, 0x16, 0xcf, 0xa7, 0x9a, 0x4d, 0xee, + 0x31, 0xe1, 0xa1, 0x4d, 0x23, 0x7a, 0xdc, 0x2a, 0xf3, 0xc6, 0x68, 0x0d, 0xa6, 0x54, 0xea, 0xa6, + 0x0d, 0x8c, 0xd3, 0x62, 0x25, 0x98, 0x85, 0x27, 0xe0, 0xf6, 0x01, 0xfb, 0x2a, 0x78, 0xde, 0x62, + 0x0c, 0xe8, 0x81, 0x3b, 0xe9, 0x9c, 0x1e, 0x15, 0x44, 0xdf, 0x42, 0xe5, 0x20, 0x72, 0x34, 0x8d, 0x76, 0xc5, 0x0f, 0x23, 0x93, 0x56, 0x41, 0xb2, 0x69, 0x7f, 0x19, 0xe6, 0xf5, 0x7a, 0xcd, 0x08, - 0xd4, 0xf1, 0x9a, 0x9b, 0x17, 0xd8, 0x7a, 0xfe, 0x4a, 0x0f, 0x0c, 0x71, 0x7e, 0x1b, 0xf8, 0xad, - 0x62, 0x01, 0x97, 0x93, 0x25, 0x98, 0x96, 0x75, 0x6d, 0x76, 0xa8, 0x57, 0xaf, 0xaf, 0x60, 0x9a, - 0x1e, 0xe9, 0xb9, 0xa2, 0xc1, 0x24, 0x77, 0x92, 0x2e, 0x62, 0x5b, 0x9f, 0x11, 0xb8, 0x83, 0xf4, - 0x0a, 0xe7, 0x11, 0x6f, 0x7d, 0x99, 0xa1, 0x91, 0x1f, 0x70, 0xa3, 0x92, 0xa1, 0xfc, 0xef, 0x2e, - 0x90, 0x1e, 0x07, 0xa0, 0xf9, 0x9c, 0x23, 0xc4, 0xed, 0x02, 0xf9, 0x02, 0x48, 0xfa, 0x48, 0xa2, - 0x44, 0x98, 0x7b, 0xfc, 0x52, 0x22, 0xec, 0x71, 0x9e, 0xb9, 0x07, 0xb3, 0x2a, 0x6c, 0x8f, 0x56, - 0xeb, 0x02, 0xc9, 0x69, 0x4d, 0x5e, 0x2b, 0xc9, 0x27, 0x30, 0x2d, 0x26, 0xad, 0x5e, 0x40, 0x4a, - 0x6a, 0xfd, 0x11, 0xa7, 0x92, 0xdc, 0x79, 0x7a, 0x1f, 0x66, 0xeb, 0x09, 0x89, 0x71, 0x67, 0xfe, - 0x73, 0x26, 0x0b, 0x04, 0xd6, 0x69, 0xc4, 0x45, 0x96, 0xcd, 0xeb, 0x01, 0x10, 0x6e, 0x14, 0x92, - 0xec, 0x9e, 0xba, 0xf4, 0x19, 0xb9, 0x98, 0x68, 0x3a, 0x03, 0x22, 0x1a, 0x2e, 0x60, 0xb9, 0x3d, - 0xdb, 0xe6, 0x59, 0xb7, 0x11, 0x6a, 0xdc, 0xa3, 0x5f, 0x36, 0x08, 0x8c, 0xab, 0x78, 0x31, 0x00, - 0xe7, 0x72, 0x31, 0xc8, 0xaf, 0x61, 0xbc, 0xdc, 0xde, 0xc7, 0x2a, 0xf2, 0xdd, 0xac, 0xd3, 0x6f, - 0xce, 0xc1, 0x70, 0xfe, 0xcd, 0xe3, 0x21, 0xab, 0x83, 0xec, 0xe4, 0x3d, 0x1a, 0x6d, 0xb5, 0xbb, - 0x7b, 0x2e, 0xe6, 0x63, 0x25, 0xca, 0x68, 0xa4, 0x40, 0x62, 0x5e, 0xca, 0x30, 0x75, 0x71, 0x41, - 0x9d, 0xfe, 0x98, 0xac, 0x42, 0x89, 0xaf, 0xff, 0x1a, 0x8b, 0x8b, 0x29, 0x16, 0x02, 0xc5, 0x09, - 0x9c, 0x83, 0x30, 0x77, 0xb4, 0x6e, 0x71, 0xdf, 0x28, 0x22, 0xbf, 0x49, 0x5d, 0xc1, 0x9c, 0x36, - 0x60, 0x2a, 0x87, 0x00, 0x1b, 0x11, 0x9b, 0x86, 0x34, 0x92, 0x81, 0x79, 0x78, 0x36, 0xde, 0xab, - 0xf1, 0x66, 0x9f, 0x2e, 0x8d, 0x3f, 0xfd, 0x44, 0x10, 0xb9, 0xdd, 0xb7, 0x88, 0xca, 0x50, 0x9c, - 0xc1, 0xf4, 0x75, 0x43, 0x27, 0x39, 0x19, 0xdf, 0xb7, 0x71, 0x0f, 0xc2, 0x60, 0x44, 0xb3, 0x71, - 0xdb, 0xd8, 0x6f, 0x49, 0x35, 0xa9, 0x51, 0xed, 0x2e, 0xe0, 0x92, 0xc6, 0x36, 0x49, 0xa6, 0xc2, - 0x76, 0x83, 0x80, 0x7a, 0x9c, 0x38, 0x4f, 0xdf, 0xc8, 0xa2, 0xfe, 0x18, 0x97, 0x1e, 0x8d, 0x9a, - 0xbf, 0x39, 0xec, 0xc7, 0x82, 0x67, 0x8f, 0xba, 0x5d, 0x20, 0xef, 0xc1, 0xa8, 0x68, 0x23, 0x23, - 0x32, 0x1a, 0x1d, 0xf6, 0x68, 0x35, 0x52, 0x02, 0x17, 0x12, 0xb6, 0xd9, 0xc4, 0xc9, 0x1b, 0x7d, - 0xde, 0xe6, 0xf7, 0xd8, 0x66, 0xdb, 0x7a, 0x11, 0xca, 0x45, 0xb9, 0xeb, 0x22, 0x65, 0x59, 0x05, - 0xb0, 0x91, 0xa0, 0x3e, 0xdb, 0x23, 0x67, 0xc2, 0xf4, 0x66, 0x8c, 0x02, 0xa9, 0x82, 0xb9, 0x29, - 0xbd, 0xd9, 0x00, 0xf7, 0xdb, 0x6b, 0x57, 0xa1, 0x54, 0x6d, 0xe2, 0x4e, 0x50, 0xa7, 0x07, 0x4e, - 0x67, 0xdf, 0x0f, 0xa8, 0x3a, 0xb4, 0x24, 0x0b, 0x24, 0xaf, 0x59, 0xa5, 0x59, 0x88, 0x82, 0x35, - 0xea, 0x60, 0xa8, 0xec, 0x39, 0xa5, 0x5a, 0x24, 0x8a, 0xb2, 0x29, 0x7a, 0x1c, 0x52, 0x66, 0x16, - 0xd9, 0xb1, 0xaa, 0xfd, 0x72, 0x6c, 0x3e, 0xc0, 0x05, 0x43, 0x21, 0x87, 0x6a, 0x87, 0x50, 0x20, - 0x75, 0x9c, 0x93, 0xcf, 0x8f, 0x14, 0x6a, 0x55, 0xde, 0x1b, 0xc7, 0x62, 0xc9, 0xa3, 0xce, 0xab, - 0xfe, 0xfb, 0x30, 0xb5, 0xcc, 0x16, 0xf4, 0x6e, 0xcb, 0xe5, 0xe9, 0x01, 0x88, 0x19, 0xef, 0x3d, - 0x97, 0x70, 0x45, 0x26, 0x6c, 0x43, 0x52, 0x71, 0xf4, 0x97, 0x7b, 0x8a, 0x06, 0x93, 0xe3, 0x31, - 0x23, 0xd9, 0x8a, 0x0c, 0x0d, 0x78, 0x34, 0x17, 0x67, 0xfd, 0x39, 0xae, 0x11, 0x56, 0x3b, 0x9d, - 0xb6, 0x34, 0x49, 0xf3, 0xbb, 0xf7, 0x6b, 0xc6, 0x11, 0x32, 0x55, 0x2e, 0x79, 0xa7, 0x95, 0xc6, - 0xcf, 0xb5, 0x04, 0xca, 0x39, 0x3c, 0x73, 0xca, 0xfb, 0xcd, 0x45, 0x15, 0xd0, 0xbb, 0xda, 0x6e, - 0xa7, 0x88, 0x43, 0xf2, 0x86, 0xc9, 0x3d, 0x0b, 0xa7, 0x5f, 0x0d, 0x78, 0x44, 0xe7, 0x5a, 0x57, - 0xb5, 0xd3, 0xe1, 0x8b, 0xe5, 0x25, 0xb5, 0x60, 0x98, 0x05, 0xe9, 0x23, 0x7a, 0xb2, 0x5c, 0xac, - 0xed, 0xf7, 0x71, 0x9a, 0xc5, 0x59, 0x96, 0x89, 0x7e, 0xe0, 0x4d, 0x26, 0x99, 0x56, 0x4a, 0x58, - 0xa2, 0x50, 0xed, 0x13, 0xa7, 0x51, 0xf5, 0x89, 0x53, 0x36, 0x2b, 0xcb, 0x4c, 0x02, 0x2e, 0xf9, - 0x5d, 0xca, 0x2b, 0x56, 0x96, 0xd2, 0x52, 0x32, 0x93, 0xbd, 0xea, 0x72, 0x3a, 0xc5, 0xbd, 0xd9, - 0xe5, 0xdc, 0x14, 0xf8, 0xf7, 0xa1, 0x94, 0x4c, 0xa2, 0xad, 0x98, 0xe6, 0x64, 0xd7, 0xce, 0x1d, - 0x93, 0xbb, 0x30, 0xa3, 0x8f, 0xa8, 0xea, 0x77, 0xde, 0xea, 0x9f, 0xc7, 0x67, 0x1b, 0x66, 0x33, - 0x73, 0x5e, 0xab, 0x2d, 0xb6, 0x57, 0x46, 0xec, 0x5c, 0xae, 0x14, 0xce, 0x66, 0xa7, 0xbd, 0x27, - 0xaf, 0x99, 0x07, 0xff, 0xec, 0x24, 0xe0, 0xf3, 0xd7, 0xfa, 0x60, 0x09, 0x81, 0x7e, 0x8d, 0x3b, - 0x60, 0xaa, 0x8e, 0x2b, 0x9a, 0x29, 0x20, 0xa7, 0x02, 0xab, 0x17, 0x8a, 0x9a, 0x03, 0x33, 0x19, - 0xc5, 0xf9, 0x22, 0xbe, 0x9a, 0xcf, 0x33, 0x9e, 0x58, 0xbb, 0x32, 0x6e, 0x75, 0xae, 0x64, 0x7a, - 0xa6, 0x47, 0xef, 0x71, 0x96, 0x9c, 0x57, 0xf3, 0xe1, 0xf8, 0x4d, 0xce, 0xe3, 0xd6, 0x52, 0x66, - 0x1b, 0x23, 0x77, 0x79, 0xd2, 0x6c, 0x93, 0x95, 0x73, 0x5d, 0x89, 0xa1, 0x57, 0x56, 0x7f, 0xbe, - 0x1b, 0x7f, 0xc5, 0xed, 0x38, 0x66, 0x15, 0xba, 0x1d, 0x27, 0x93, 0xff, 0xe5, 0x7c, 0x04, 0x9d, - 0xb9, 0xc3, 0x2f, 0x6d, 0x13, 0xc9, 0xd7, 0x89, 0x7e, 0x54, 0xca, 0x4e, 0xcc, 0xae, 0xe6, 0x46, - 0x26, 0x8a, 0x5e, 0xc5, 0x43, 0xf9, 0x0d, 0xe6, 0x48, 0xa9, 0x47, 0x66, 0xfa, 0xde, 0x6a, 0xca, - 0x26, 0x94, 0xe3, 0xc1, 0x4c, 0x74, 0xe0, 0x84, 0x43, 0x29, 0x85, 0x71, 0x2e, 0x37, 0x1f, 0x3d, - 0xf9, 0x4e, 0xea, 0x4b, 0xcf, 0x11, 0x4c, 0xcf, 0x2a, 0xf8, 0x7a, 0xae, 0xc5, 0xc1, 0x3e, 0x1f, - 0x1b, 0x71, 0xf5, 0xd4, 0xf5, 0xa9, 0xf5, 0x3c, 0x23, 0xaf, 0xfd, 0x3d, 0xd4, 0x8b, 0xb5, 0xdc, - 0xf4, 0xb9, 0xbd, 0xbe, 0x98, 0xc5, 0x27, 0x4c, 0xaf, 0xb8, 0x5a, 0xbb, 0xa4, 0x9e, 0x96, 0x2c, - 0x38, 0xc9, 0x8a, 0x7b, 0x9c, 0xa6, 0xe5, 0xf1, 0x59, 0x82, 0x71, 0x2d, 0xa9, 0x3d, 0x39, 0x67, - 0x88, 0xc9, 0xd8, 0x43, 0xe7, 0x8d, 0xce, 0x99, 0xdb, 0xe7, 0x22, 0x9a, 0x92, 0x55, 0x6a, 0xfc, - 0xdc, 0x56, 0x9c, 0x4f, 0xf3, 0x30, 0xcc, 0xc8, 0x4a, 0x0a, 0xbc, 0x35, 0x17, 0x92, 0xc2, 0x31, - 0x1a, 0x94, 0xdf, 0x25, 0xa2, 0x8b, 0xa6, 0x4f, 0x93, 0xf2, 0xf5, 0xd7, 0x69, 0x91, 0x39, 0x17, - 0x93, 0xd7, 0xc8, 0x40, 0x87, 0x67, 0x95, 0x4d, 0x4c, 0x83, 0xa2, 0x81, 0x22, 0x9b, 0xcd, 0x16, - 0x3e, 0x1f, 0xc9, 0xc8, 0xf2, 0xaf, 0x56, 0xd8, 0xec, 0xe2, 0x7c, 0xdd, 0x4d, 0xad, 0xd9, 0xb9, - 0x1c, 0x7b, 0xa6, 0xfd, 0xcf, 0x6d, 0xe9, 0x0f, 0xb5, 0x35, 0x3b, 0x95, 0xcb, 0x9f, 0x5c, 0x4f, - 0x2a, 0x6e, 0x79, 0xe9, 0xfe, 0x7b, 0xec, 0x09, 0x33, 0xe9, 0xdc, 0xf3, 0x86, 0x5d, 0x37, 0x5d, - 0x98, 0x2f, 0x05, 0x5b, 0xce, 0xff, 0x1c, 0x6e, 0x59, 0x85, 0xfd, 0x5a, 0xf8, 0xa5, 0xb6, 0xd0, - 0x25, 0x92, 0xf7, 0xab, 0xe3, 0x78, 0x9f, 0xec, 0xfe, 0xb9, 0xbc, 0x37, 0xf0, 0x49, 0x53, 0x3a, - 0xf3, 0xbe, 0xd2, 0x6c, 0x7a, 0xe5, 0xe5, 0xcf, 0x34, 0xfb, 0xce, 0xa6, 0xbb, 0xc8, 0xf8, 0x9d, - 0x4d, 0x18, 0x6d, 0xfb, 0x35, 0xec, 0x6b, 0xb9, 0x18, 0x67, 0x64, 0xec, 0x4f, 0x2c, 0xc6, 0xf9, - 0x39, 0xfd, 0x7b, 0x1c, 0x83, 0x4e, 0xd7, 0xdd, 0x3d, 0x4f, 0x4b, 0xb8, 0xaf, 0x0e, 0x41, 0x46, - 0x12, 0x7e, 0x73, 0x89, 0xc9, 0xca, 0xcf, 0xbf, 0xc9, 0xf4, 0x1f, 0xae, 0xbd, 0xeb, 0xa9, 0xd3, - 0xc9, 0x7c, 0x7e, 0xc6, 0x78, 0xb5, 0xdc, 0x64, 0xe6, 0x5a, 0xd7, 0x18, 0xea, 0x79, 0xcb, 0x15, - 0xc3, 0x8c, 0x14, 0xea, 0x8a, 0x61, 0x66, 0xa2, 0xf3, 0x5b, 0x68, 0x75, 0xb1, 0xfd, 0x36, 0xd5, - 0xad, 0x2e, 0x5a, 0x22, 0xec, 0x84, 0xd1, 0x83, 0x7c, 0x0c, 0x63, 0x2a, 0x51, 0xb8, 0xb2, 0x6f, - 0x27, 0x73, 0x95, 0xcf, 0x97, 0xd3, 0x05, 0xa2, 0xc2, 0x77, 0xa4, 0xe1, 0x03, 0xeb, 0x2c, 0x9b, - 0x06, 0xa3, 0xfc, 0x6a, 0xdf, 0x91, 0x56, 0x0f, 0x83, 0x2c, 0x95, 0x26, 0x3c, 0x49, 0xf6, 0x7d, - 0x98, 0x88, 0x53, 0x82, 0xef, 0x2e, 0x68, 0x84, 0x89, 0x3c, 0xe1, 0x49, 0xc2, 0xf7, 0xe4, 0x95, - 0x06, 0xd6, 0x67, 0x16, 0xf6, 0xde, 0xc5, 0x3f, 0x96, 0x56, 0x16, 0xa3, 0xa5, 0xa9, 0x04, 0xe3, - 0x3d, 0x16, 0xdf, 0x09, 0x3d, 0x47, 0xa7, 0x1a, 0xda, 0x8c, 0x2c, 0xbb, 0x6a, 0x68, 0xb3, 0xb2, - 0xe4, 0xc6, 0x26, 0xff, 0x2f, 0xa4, 0x49, 0x21, 0x66, 0x7a, 0xd1, 0x68, 0x56, 0x8a, 0xef, 0xa5, - 0xbc, 0xe2, 0x24, 0xeb, 0x3a, 0x94, 0x92, 0x09, 0x45, 0xd5, 0x79, 0x2c, 0x27, 0xf3, 0xab, 0x3a, - 0xe4, 0xe5, 0x66, 0x22, 0xdd, 0x92, 0xf6, 0x71, 0x93, 0xef, 0x95, 0xec, 0x46, 0xe9, 0xac, 0xf3, - 0x0d, 0xe6, 0x93, 0x46, 0x6e, 0x51, 0xfd, 0xa4, 0x9c, 0xca, 0x5d, 0xaa, 0x6b, 0x56, 0x19, 0xe9, - 0x48, 0x5d, 0x19, 0xb4, 0x2a, 0x3b, 0x0d, 0xfc, 0x1b, 0xe6, 0x11, 0xb6, 0x47, 0x20, 0xfa, 0xbe, - 0xd7, 0xbf, 0xe4, 0x97, 0x60, 0x2e, 0x27, 0xb0, 0x36, 0xb9, 0x96, 0xb0, 0xb4, 0x66, 0x07, 0xde, - 0x56, 0x13, 0x24, 0x33, 0xe9, 0xf7, 0x3a, 0xfa, 0x0d, 0x18, 0x21, 0x24, 0x52, 0x77, 0x71, 0x0f, - 0xdd, 0x68, 0x9f, 0xe7, 0xb6, 0xd6, 0x96, 0xcd, 0xcc, 0xd8, 0x13, 0xa4, 0x8e, 0x67, 0x11, 0x03, - 0x9a, 0x71, 0x1d, 0x97, 0xc1, 0x70, 0x3e, 0x9b, 0x21, 0x5b, 0x3b, 0xd8, 0x5c, 0xc8, 0x88, 0xef, - 0xa1, 0xe6, 0x42, 0x7e, 0xec, 0x8f, 0xdc, 0x66, 0x6e, 0x49, 0x1d, 0x29, 0x9b, 0x63, 0x7e, 0xa8, - 0x8f, 0x5c, 0x8e, 0xf7, 0x19, 0xc7, 0x54, 0xf4, 0x0e, 0x92, 0x83, 0xde, 0x7b, 0xf5, 0xb0, 0xe5, - 0x96, 0x6b, 0x52, 0x2d, 0x68, 0xed, 0xcb, 0x8b, 0x13, 0x92, 0xdb, 0xbe, 0x65, 0xf9, 0x3d, 0x65, - 0xb7, 0xef, 0xb8, 0x9b, 0xae, 0xba, 0xff, 0x4a, 0x04, 0x90, 0x31, 0x3a, 0xaa, 0xc1, 0xe7, 0x73, - 0xe0, 0x64, 0x03, 0x1d, 0x81, 0x92, 0x50, 0xed, 0x50, 0x9a, 0x1d, 0xa1, 0x26, 0x97, 0x1f, 0x9f, - 0xc7, 0x46, 0x84, 0x8f, 0x93, 0xcc, 0xe3, 0x44, 0x68, 0x10, 0x31, 0x8f, 0x0d, 0xe8, 0xc9, 0xe6, - 0x71, 0x82, 0xa1, 0x39, 0x8f, 0x93, 0xcd, 0x4c, 0x9e, 0xf4, 0x73, 0x47, 0x35, 0xd9, 0x4c, 0x35, - 0x8f, 0xb3, 0x39, 0xe6, 0x47, 0x62, 0xc9, 0xe5, 0xa8, 0xe6, 0xb1, 0xc9, 0x31, 0x07, 0xfd, 0x98, - 0xf3, 0x38, 0x59, 0x89, 0x39, 0x8f, 0x4f, 0xd4, 0x3e, 0x35, 0x8f, 0xb3, 0xdb, 0x77, 0xe2, 0x79, - 0x9c, 0x08, 0x5d, 0x64, 0x74, 0x34, 0x6b, 0x1e, 0x27, 0xf1, 0xf9, 0x3c, 0x4e, 0x42, 0x13, 0xc6, - 0x95, 0x1e, 0xf3, 0x38, 0x49, 0xf9, 0x19, 0xf2, 0x4b, 0x84, 0x5d, 0x39, 0xce, 0x4c, 0xce, 0x8d, - 0xd8, 0x42, 0x1e, 0xa2, 0x79, 0x2f, 0x01, 0x3f, 0xde, 0x6c, 0xbe, 0x90, 0xc7, 0x14, 0xe7, 0xf3, - 0xae, 0x14, 0x62, 0xb2, 0xb9, 0xa6, 0xed, 0x2a, 0x3b, 0xea, 0x4c, 0x8f, 0x06, 0xef, 0xb2, 0x79, - 0xd3, 0xea, 0xc1, 0xb7, 0x57, 0xd0, 0x9c, 0x1e, 0x7c, 0xd5, 0x51, 0x26, 0xc9, 0x37, 0x97, 0xa4, - 0xf7, 0xfc, 0xfe, 0x5c, 0x5e, 0x70, 0x24, 0xe9, 0x16, 0x12, 0x87, 0xa3, 0x13, 0xb7, 0x54, 0x1d, - 0x92, 0x92, 0x2d, 0x3d, 0xe9, 0x3c, 0x5f, 0x97, 0xda, 0x43, 0x2a, 0xda, 0x56, 0xa2, 0xd3, 0xfa, - 0x5c, 0xcf, 0x2d, 0x21, 0xdb, 0x68, 0xcb, 0x4d, 0xc3, 0x35, 0x3b, 0x70, 0x5e, 0x58, 0xaf, 0xbe, - 0x5c, 0x53, 0x71, 0x83, 0x74, 0xae, 0x79, 0x41, 0x85, 0x14, 0xd7, 0x34, 0xf5, 0x27, 0x68, 0xfd, - 0x12, 0x2f, 0xae, 0xbc, 0xc7, 0x7e, 0xbe, 0x25, 0x65, 0xda, 0x70, 0x56, 0x62, 0xb8, 0xe8, 0x23, - 0xf6, 0x91, 0xb8, 0xc1, 0x93, 0xc0, 0x5c, 0xe1, 0x67, 0xd1, 0x93, 0x4f, 0xa0, 0x24, 0x96, 0xb7, - 0x98, 0x41, 0x16, 0x62, 0xee, 0xd0, 0xd5, 0xa4, 0xd1, 0xed, 0x18, 0x2d, 0x38, 0x8e, 0xb1, 0xed, - 0x38, 0x92, 0xc8, 0xb7, 0x4c, 0xb1, 0xed, 0x70, 0x3b, 0xe8, 0x86, 0x11, 0x6d, 0xa5, 0x2d, 0x4a, - 0x66, 0x63, 0xa4, 0x67, 0x84, 0x89, 0xbe, 0xbb, 0x40, 0x56, 0x71, 0x6d, 0x33, 0xc1, 0xbd, 0x4c, - 0x6e, 0xd9, 0x6c, 0x70, 0xe9, 0x59, 0x57, 0xcf, 0x7a, 0xcc, 0x36, 0xe5, 0xd5, 0x9d, 0xdb, 0x28, - 0x69, 0x75, 0x3d, 0x9b, 0xc5, 0x6e, 0x77, 0xe1, 0xe4, 0x0c, 0x63, 0x99, 0x1f, 0x53, 0x5c, 0x79, - 0x32, 0xff, 0x10, 0xfd, 0x0a, 0xb8, 0x3d, 0xb1, 0x9f, 0xa8, 0x93, 0x2f, 0x97, 0xc8, 0xa7, 0x30, - 0x26, 0x89, 0xfb, 0x4b, 0x38, 0x49, 0x8d, 0x12, 0x5e, 0x82, 0x49, 0xe3, 0x59, 0x96, 0x3a, 0x2e, - 0x65, 0x3d, 0xd6, 0xea, 0x31, 0x71, 0x26, 0x8d, 0xe7, 0x57, 0x8a, 0x4b, 0xd6, 0xa3, 0xac, 0x5c, - 0x2e, 0x3f, 0x80, 0x71, 0x21, 0xd2, 0x9e, 0xd2, 0xc8, 0x37, 0xe0, 0xcd, 0x6a, 0x2e, 0xce, 0xdd, - 0x96, 0x1b, 0x2d, 0xfa, 0xde, 0x63, 0x77, 0xaf, 0xaf, 0x60, 0xd2, 0x24, 0xbb, 0x0b, 0xe4, 0x2b, - 0x4c, 0x2d, 0x2d, 0x13, 0x7e, 0xd3, 0xe8, 0x99, 0x1f, 0x3c, 0x71, 0xbd, 0xbd, 0x3e, 0x2c, 0x2f, - 0x9b, 0x2c, 0x93, 0x74, 0x72, 0x22, 0x7e, 0x05, 0xf3, 0xf5, 0x7c, 0xe6, 0x7d, 0x99, 0xf4, 0xde, - 0xaf, 0xea, 0x70, 0x01, 0xdd, 0x71, 0x4e, 0xda, 0xf6, 0x9e, 0x4c, 0xbf, 0xe0, 0x11, 0x20, 0xa5, - 0xf1, 0xbf, 0xe9, 0x07, 0xad, 0xfe, 0x1c, 0x2b, 0xa6, 0x67, 0x6e, 0x82, 0x4c, 0x0a, 0xe3, 0x0b, - 0x38, 0x57, 0xcf, 0x65, 0xdd, 0x8f, 0x45, 0x3f, 0xd5, 0xf4, 0x3c, 0x8a, 0xe2, 0x84, 0xed, 0xee, - 0xc9, 0x73, 0x15, 0x17, 0x49, 0xb6, 0xb1, 0x6d, 0x05, 0xf4, 0x31, 0x0d, 0xd0, 0xff, 0xbb, 0x9f, - 0xe7, 0xb3, 0x89, 0x2e, 0x7b, 0xbe, 0x0a, 0x67, 0xea, 0x29, 0x56, 0x79, 0x24, 0xfd, 0x2e, 0x94, - 0xa6, 0xb1, 0xa7, 0xc7, 0x6c, 0x57, 0x1f, 0xb7, 0xa3, 0xf1, 0x7b, 0x34, 0xda, 0x59, 0xed, 0x23, - 0x25, 0xf9, 0x40, 0x41, 0x22, 0xee, 0xde, 0x61, 0x94, 0x75, 0x8d, 0x32, 0x8d, 0x91, 0xfb, 0xf1, - 0x7e, 0x2a, 0x2f, 0x57, 0xfa, 0x56, 0x9b, 0xc7, 0xe1, 0x2d, 0x5c, 0x0b, 0x85, 0x0f, 0xf4, 0x5c, - 0xac, 0x53, 0x70, 0x48, 0x6c, 0xfb, 0xd3, 0xdc, 0xa1, 0x43, 0x52, 0xe5, 0xe7, 0x49, 0x3e, 0x3d, - 0x04, 0xec, 0x52, 0xca, 0x37, 0xbe, 0x27, 0x0b, 0x6e, 0x56, 0x5d, 0xf3, 0x9b, 0x4f, 0x74, 0xb3, - 0x2a, 0xfb, 0x9d, 0xb4, 0x37, 0x32, 0xd8, 0xee, 0x82, 0x58, 0xf1, 0xd9, 0x0f, 0xc3, 0x93, 0x0c, - 0x01, 0xf1, 0x8a, 0x9f, 0x84, 0x0b, 0x93, 0xd4, 0x5b, 0xd2, 0x58, 0x89, 0x15, 0x9a, 0x9c, 0x73, - 0x45, 0xa3, 0xec, 0x94, 0x48, 0x64, 0xda, 0x29, 0xf5, 0x86, 0xe6, 0x5f, 0x0e, 0x10, 0x9b, 0x76, - 0xda, 0xe8, 0x56, 0x7d, 0xe0, 0x73, 0x9a, 0xd8, 0xd3, 0x36, 0x5d, 0xd4, 0xdf, 0x21, 0x6c, 0x5a, - 0xb8, 0x11, 0x19, 0x82, 0x57, 0x11, 0x9a, 0xd3, 0x65, 0xb1, 0x28, 0x75, 0xef, 0xa6, 0xdb, 0x05, - 0xb2, 0x01, 0x67, 0xef, 0xd1, 0x48, 0xac, 0x71, 0x36, 0x0d, 0xa3, 0xc0, 0x6d, 0x46, 0x3d, 0x6f, - 0x1a, 0xe5, 0x61, 0x27, 0x83, 0x66, 0xf7, 0x6d, 0xc6, 0xaf, 0x9e, 0xcd, 0xaf, 0x27, 0x5d, 0x0f, - 0x9f, 0x5b, 0x71, 0x7d, 0x71, 0x92, 0x26, 0xe6, 0x4f, 0xf1, 0x11, 0xee, 0xd2, 0x93, 0x4f, 0x5a, - 0x8a, 0xc3, 0xa9, 0x88, 0xe3, 0xdb, 0x4d, 0x18, 0xe6, 0x44, 0xb9, 0x1b, 0xea, 0x84, 0x4e, 0x43, - 0xee, 0xc0, 0x98, 0xf2, 0xc9, 0x21, 0x46, 0x51, 0x6e, 0xbb, 0xee, 0xc0, 0x18, 0x3f, 0xab, 0x1d, - 0x9f, 0xe4, 0x43, 0x18, 0x53, 0x4e, 0x3c, 0x27, 0xde, 0xe9, 0x3f, 0x81, 0x49, 0xdd, 0x9d, 0xe7, - 0xe4, 0x82, 0xfc, 0x01, 0xde, 0x07, 0xcb, 0x6b, 0x97, 0x7c, 0xfa, 0xd9, 0x44, 0x94, 0x19, 0x21, - 0x52, 0xbe, 0x40, 0x4a, 0x60, 0x6e, 0xf3, 0xcf, 0xa4, 0xa8, 0xc9, 0x87, 0xf2, 0x69, 0x94, 0x22, - 0x4e, 0x23, 0xf5, 0x90, 0xd9, 0x14, 0x17, 0xf3, 0x8b, 0x10, 0xab, 0x05, 0xb6, 0x6f, 0xb3, 0x8f, - 0x73, 0x6f, 0xdd, 0x5f, 0x74, 0x79, 0x5c, 0x36, 0x51, 0x4b, 0x4b, 0xa5, 0xf3, 0xcb, 0x67, 0x74, - 0x29, 0x3f, 0x03, 0x20, 0x0e, 0xc6, 0x7d, 0x3c, 0x56, 0xa6, 0x4a, 0x73, 0xbb, 0xd7, 0x23, 0xa3, - 0x60, 0x7c, 0x8e, 0x4e, 0xb3, 0xeb, 0x41, 0xd6, 0xeb, 0x58, 0x2e, 0x1e, 0x7c, 0xbe, 0x12, 0x76, - 0xab, 0xd2, 0x2b, 0xf2, 0xf8, 0x9d, 0xcd, 0x6f, 0xd9, 0xf9, 0x8c, 0x9b, 0xf2, 0xbe, 0x63, 0x91, - 0xc7, 0xee, 0x97, 0x50, 0x3b, 0xcc, 0x0c, 0x33, 0x96, 0xcf, 0xec, 0xba, 0xe6, 0x6c, 0x91, 0x49, - 0xa9, 0x36, 0xbd, 0x27, 0xf8, 0xe6, 0x2c, 0x3b, 0xe1, 0xe1, 0xeb, 0x7d, 0xb8, 0x48, 0x49, 0x7c, - 0xa7, 0x2f, 0x9e, 0xba, 0x77, 0x3d, 0xcf, 0x77, 0xd8, 0xec, 0xfa, 0xfa, 0x24, 0x70, 0xcc, 0xb8, - 0x0a, 0x57, 0x2e, 0xa7, 0xd9, 0x0c, 0x4d, 0x97, 0xd3, 0x9e, 0x7d, 0xc8, 0x13, 0xff, 0x67, 0x50, - 0x89, 0x3d, 0x4a, 0x4e, 0x36, 0x08, 0xf9, 0x9e, 0x8e, 0x24, 0x25, 0xa9, 0x90, 0xf4, 0xca, 0x4f, - 0x34, 0x7f, 0x25, 0x4f, 0xc2, 0xfa, 0xbb, 0x1a, 0xe1, 0x29, 0x97, 0x48, 0xfd, 0x99, 0x97, 0x44, - 0xb4, 0x87, 0x61, 0x57, 0x3c, 0xc2, 0x7b, 0x25, 0x8c, 0xd2, 0xa3, 0x7d, 0x72, 0x46, 0xca, 0xe1, - 0x23, 0xc1, 0xc8, 0xea, 0x31, 0xbc, 0xfd, 0xef, 0x32, 0xcb, 0x39, 0xe3, 0x7a, 0xf2, 0x01, 0x75, - 0xe2, 0x87, 0x67, 0x89, 0xa8, 0x84, 0xfa, 0x63, 0xdf, 0x74, 0x51, 0xf2, 0xd5, 0x54, 0x16, 0x86, - 0xf2, 0xb2, 0x2a, 0xcb, 0x2a, 0x18, 0x9c, 0x1d, 0x45, 0xfc, 0xc0, 0x8d, 0x9e, 0x2f, 0xda, 0x6b, - 0xb1, 0x59, 0x41, 0x2f, 0x90, 0xbc, 0x41, 0x16, 0xda, 0x6b, 0xe4, 0x4b, 0x5c, 0x4a, 0x04, 0xfb, - 0x9a, 0xef, 0x47, 0x61, 0x14, 0x38, 0x9d, 0x7a, 0x33, 0x70, 0x3b, 0x51, 0x6e, 0xa7, 0x63, 0xa7, - 0xf0, 0x2c, 0x32, 0xcd, 0x47, 0x55, 0x04, 0xc6, 0xcf, 0x0a, 0xa5, 0xa3, 0xde, 0xe9, 0x64, 0x15, - 0xf6, 0x38, 0xb9, 0xd4, 0x65, 0x28, 0xfc, 0x57, 0xc9, 0xb4, 0x01, 0x73, 0x39, 0x01, 0x88, 0xd4, - 0x75, 0x70, 0xef, 0x00, 0x45, 0xf3, 0xbd, 0x2b, 0x26, 0x5f, 0xc1, 0x6c, 0x66, 0x84, 0x22, 0x65, - 0xd2, 0xee, 0x15, 0xbf, 0xa8, 0x1f, 0xf3, 0x27, 0x50, 0xe6, 0x2f, 0x44, 0xd0, 0x11, 0xda, 0x08, - 0x56, 0x13, 0xbf, 0x1b, 0xca, 0x41, 0x48, 0xae, 0xd7, 0xf9, 0x78, 0xea, 0xf5, 0xfa, 0x0c, 0x46, - 0x29, 0x49, 0x24, 0xad, 0x57, 0x1f, 0x5e, 0x56, 0x61, 0xaf, 0xc7, 0x49, 0x5b, 0x30, 0xbb, 0x4b, - 0x03, 0xf7, 0xf1, 0xf3, 0x24, 0x43, 0x29, 0x99, 0xcc, 0xd2, 0x5e, 0x1c, 0x3f, 0x87, 0xb9, 0x45, - 0xff, 0xa0, 0x23, 0x9e, 0x01, 0x1a, 0x3c, 0xd5, 0xdd, 0x7e, 0x76, 0x79, 0x7f, 0xe7, 0xa8, 0x79, - 0xf5, 0x4e, 0x31, 0x95, 0xb1, 0x5f, 0xf9, 0xc4, 0xe5, 0xa3, 0xc4, 0xaf, 0x3b, 0xe4, 0x51, 0x4e, - 0xa7, 0xdf, 0xc6, 0x49, 0x98, 0xa0, 0xe3, 0xb6, 0x39, 0x6d, 0x12, 0x66, 0x95, 0xf7, 0x7e, 0x54, - 0x96, 0xc1, 0x95, 0x57, 0x98, 0xcf, 0xf5, 0x18, 0xad, 0xdd, 0x90, 0x7b, 0x8b, 0x99, 0x31, 0x3d, - 0xe1, 0x85, 0x9d, 0x99, 0x4e, 0x3d, 0xb3, 0x9d, 0x5a, 0x98, 0x86, 0x76, 0xbb, 0x87, 0x8a, 0x45, - 0xf4, 0x38, 0x0d, 0x0c, 0x13, 0x6f, 0x05, 0x26, 0x75, 0xda, 0x5e, 0xab, 0x75, 0x8a, 0x18, 0x95, - 0xda, 0x0f, 0x60, 0xa2, 0xae, 0x57, 0x9e, 0x51, 0x49, 0xee, 0xa4, 0x50, 0xcf, 0x8a, 0xfa, 0xb7, - 0xbd, 0x87, 0x73, 0xa9, 0xda, 0x78, 0x8e, 0xd5, 0x8b, 0x5c, 0x5f, 0x1c, 0x23, 0x99, 0x9d, 0xda, - 0x05, 0xb2, 0x72, 0x4d, 0x2a, 0x5f, 0x9c, 0xec, 0xfc, 0x77, 0x0d, 0x9e, 0x22, 0x27, 0x99, 0x4a, - 0x94, 0x58, 0xfd, 0x73, 0xf6, 0x2a, 0x27, 0xfb, 0x9e, 0xb9, 0x48, 0xb9, 0xe3, 0x50, 0x9c, 0xbe, - 0x4f, 0x77, 0x1c, 0x4a, 0x25, 0x05, 0xd4, 0x1d, 0x87, 0x32, 0x32, 0xfe, 0x2d, 0x23, 0xaf, 0x38, - 0xb7, 0x50, 0x0f, 0x63, 0x84, 0x62, 0x93, 0x91, 0xc2, 0xe8, 0x81, 0x1e, 0xed, 0x83, 0x67, 0x24, - 0xea, 0x61, 0x6b, 0x4d, 0x46, 0xf9, 0x48, 0xa4, 0x30, 0xba, 0x0b, 0x25, 0x9e, 0x9c, 0x21, 0x0e, - 0x92, 0x18, 0xfb, 0x12, 0xa6, 0x73, 0x46, 0xf4, 0x18, 0xd4, 0x52, 0x32, 0xb4, 0x9c, 0x32, 0x99, - 0xe5, 0xc4, 0x9c, 0xeb, 0x31, 0x55, 0x21, 0x0e, 0x20, 0xa7, 0x0c, 0x53, 0xa9, 0x98, 0x72, 0xf3, - 0xe7, 0x32, 0x4a, 0x94, 0x4a, 0x39, 0xa1, 0x87, 0x9b, 0x53, 0x5d, 0xca, 0x88, 0x41, 0x37, 0x7f, - 0x3e, 0xb3, 0x4c, 0x30, 0x8a, 0x78, 0xda, 0xea, 0xec, 0xf4, 0xdc, 0xf1, 0xcb, 0xb0, 0x1e, 0x38, - 0xb2, 0x9a, 0x1b, 0xc7, 0x41, 0x15, 0xb5, 0x52, 0x95, 0x59, 0x29, 0x23, 0x27, 0xf8, 0x77, 0x32, - 0x1e, 0x6f, 0x18, 0x18, 0xb1, 0x7b, 0x59, 0xef, 0x04, 0xe5, 0xe4, 0xa1, 0xcc, 0x74, 0x93, 0x53, - 0x53, 0x3f, 0x06, 0xb9, 0x23, 0xf8, 0x50, 0xe6, 0xb6, 0x79, 0xd5, 0x8c, 0x1f, 0xc1, 0x85, 0xc4, - 0x8b, 0x10, 0x93, 0xf1, 0x8d, 0xec, 0x67, 0x23, 0x99, 0xe2, 0xc9, 0xd7, 0xd9, 0x2f, 0xa7, 0x5f, - 0x8e, 0x24, 0xc6, 0xfd, 0xa4, 0x6b, 0xde, 0x3a, 0x4c, 0xe1, 0x32, 0x23, 0xb3, 0xdb, 0xc7, 0xc1, - 0x66, 0x4c, 0x70, 0x32, 0xea, 0x51, 0xb2, 0x54, 0x3d, 0x48, 0x9f, 0x10, 0xaf, 0x8c, 0x79, 0xae, - 0xfc, 0x79, 0xf3, 0xe9, 0x31, 0x02, 0xb3, 0x76, 0x31, 0x91, 0x82, 0x9f, 0xfc, 0x00, 0x4e, 0xc7, - 0x8f, 0x8f, 0x39, 0x8b, 0x0c, 0xb4, 0x1e, 0x86, 0xb2, 0xd3, 0xf1, 0x0b, 0xe4, 0x93, 0x93, 0xaf, - 0xc8, 0xad, 0x28, 0x26, 0xbf, 0x98, 0x7a, 0x3f, 0x63, 0xf4, 0xe1, 0x38, 0x3b, 0x92, 0x26, 0xdb, - 0x93, 0x8e, 0x4e, 0x13, 0x3f, 0xb7, 0xec, 0x38, 0x8a, 0xfa, 0xe7, 0xd6, 0x33, 0xd6, 0xa3, 0x52, - 0x7f, 0x73, 0xf8, 0xac, 0xc3, 0x55, 0x8c, 0xbd, 0xb2, 0xc5, 0xa3, 0xed, 0x65, 0x63, 0xe5, 0xb7, - 0x3d, 0x19, 0xb1, 0xa5, 0x0d, 0x57, 0xfa, 0x06, 0x92, 0x24, 0xb7, 0x0c, 0x9f, 0x99, 0xfe, 0x21, - 0x27, 0x7b, 0x9c, 0x3c, 0x66, 0xb2, 0xe2, 0x31, 0xaa, 0x7d, 0xb6, 0x47, 0x68, 0x48, 0xb5, 0xcf, - 0xf6, 0x0c, 0xe8, 0xf8, 0x39, 0xa6, 0x8f, 0x12, 0x7b, 0x14, 0xc6, 0x53, 0xa2, 0x1e, 0x8f, 0x32, - 0xdd, 0xf3, 0xda, 0xe7, 0x8a, 0x79, 0x29, 0x9a, 0x22, 0xc4, 0x33, 0xcd, 0x25, 0x71, 0x12, 0xcb, - 0x63, 0xde, 0x9f, 0x49, 0x0f, 0x5f, 0xed, 0x4b, 0x7c, 0x02, 0x9e, 0xb8, 0xe5, 0x39, 0xf0, 0xda, - 0xd2, 0x4f, 0xff, 0xd3, 0xa5, 0xc2, 0x4f, 0x7f, 0x76, 0xa9, 0xf0, 0xef, 0x7e, 0x76, 0xa9, 0xf0, - 0x1f, 0x7f, 0x76, 0xa9, 0xf0, 0xe5, 0xc2, 0xf1, 0x62, 0x1d, 0xf3, 0x84, 0x8f, 0xb7, 0x38, 0xbb, - 0x61, 0xfc, 0xef, 0xad, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x8b, 0xf5, 0xbc, 0x9c, 0xec, - 0x00, 0x00, + 0xd4, 0xf1, 0x9e, 0x9b, 0x17, 0xd8, 0x7a, 0xfe, 0x4a, 0x0f, 0x0c, 0xa1, 0xbf, 0x0d, 0xfc, 0x56, + 0xb1, 0x80, 0xdb, 0xc9, 0x12, 0x4c, 0xcb, 0xba, 0x36, 0x3b, 0xd4, 0xab, 0xd7, 0x57, 0x30, 0x4d, + 0x8f, 0xf4, 0x5c, 0xd1, 0x60, 0x92, 0x3b, 0x49, 0x17, 0xb1, 0xa3, 0xcf, 0x08, 0xdc, 0x41, 0x7a, + 0x85, 0xf3, 0x88, 0x8f, 0xbe, 0xcc, 0xd0, 0xc8, 0x0f, 0xb8, 0x51, 0xc9, 0x10, 0xfe, 0x77, 0x17, + 0x48, 0x0f, 0x05, 0x68, 0x3e, 0x47, 0x85, 0xb8, 0x5d, 0x20, 0x5f, 0x00, 0x49, 0xab, 0x24, 0x6a, + 0x08, 0x73, 0xd5, 0x2f, 0x35, 0x84, 0x3d, 0xf4, 0x99, 0x7b, 0x30, 0xab, 0xc2, 0xf6, 0x68, 0xb5, + 0x2e, 0x90, 0x9c, 0xd6, 0xe4, 0xb5, 0x92, 0x7c, 0x02, 0xd3, 0x62, 0xd1, 0xea, 0x05, 0xa4, 0xa4, + 0xf6, 0x1f, 0xa1, 0x95, 0xe4, 0xae, 0xd3, 0xfb, 0x30, 0x5b, 0x4f, 0x8c, 0x18, 0x77, 0xe6, 0x3f, + 0x67, 0xb2, 0x40, 0x60, 0x9d, 0x46, 0x7c, 0xc8, 0xb2, 0x79, 0x3d, 0x00, 0xc2, 0x8d, 0x42, 0x92, + 0xdd, 0x53, 0x97, 0x3e, 0x23, 0x17, 0x13, 0x4d, 0x67, 0x40, 0x44, 0xc3, 0x0d, 0x2c, 0xb7, 0x67, + 0xdb, 0x3c, 0xeb, 0x36, 0x42, 0x8d, 0x7b, 0xf4, 0xcb, 0x06, 0x81, 0x71, 0x15, 0x2f, 0x26, 0xe0, + 0x5c, 0x2e, 0x06, 0xf9, 0x35, 0x8c, 0x97, 0xdb, 0x5b, 0xad, 0x22, 0xdf, 0xcd, 0xd2, 0x7e, 0x73, + 0x14, 0xc3, 0xf9, 0x37, 0x8f, 0x87, 0xac, 0x14, 0xd9, 0xc9, 0x7b, 0x34, 0xda, 0x6a, 0x77, 0xf7, + 0x5c, 0xcc, 0xc7, 0x4a, 0x94, 0xd1, 0x48, 0x81, 0xc4, 0xba, 0x94, 0x61, 0xea, 0xe2, 0x82, 0x3a, + 0xfd, 0x31, 0x59, 0x85, 0x12, 0xdf, 0xff, 0x35, 0x16, 0x17, 0x53, 0x2c, 0x04, 0x8a, 0x13, 0x38, + 0x07, 0x61, 0xee, 0x6c, 0xdd, 0xe2, 0xbe, 0x51, 0x44, 0x7e, 0x93, 0xba, 0x80, 0x39, 0x6d, 0xc0, + 0x54, 0x0e, 0x01, 0x36, 0x23, 0x36, 0x0d, 0x69, 0x24, 0x03, 0xf3, 0xf0, 0x6c, 0xbc, 0x57, 0xe3, + 0xc3, 0x3e, 0x5d, 0x1a, 0x7f, 0xfa, 0x89, 0x20, 0x72, 0xbb, 0x6f, 0x11, 0x95, 0xa1, 0x38, 0x83, + 0xe9, 0xeb, 0x86, 0x4c, 0x72, 0x32, 0xbe, 0x6f, 0xe3, 0x19, 0x84, 0xc1, 0x88, 0x66, 0xe3, 0xb6, + 0xb1, 0xdf, 0x92, 0x6a, 0x52, 0xa3, 0xda, 0x5d, 0xc0, 0x2d, 0x8d, 0x1d, 0x92, 0x4c, 0x84, 0xed, + 0x06, 0x01, 0xf5, 0x38, 0x71, 0x9e, 0xbc, 0x91, 0x45, 0xfd, 0x31, 0x6e, 0x3d, 0x1a, 0x35, 0x7f, + 0x73, 0xd8, 0x8f, 0x05, 0xcf, 0x1e, 0x75, 0xbb, 0x40, 0xde, 0x83, 0x51, 0xd1, 0x46, 0x46, 0x64, + 0x34, 0x3a, 0xec, 0xd1, 0x6a, 0xa4, 0x04, 0x3e, 0x48, 0xd8, 0x66, 0x13, 0x27, 0x6f, 0xf6, 0x79, + 0x9b, 0xdf, 0x63, 0x87, 0x6d, 0xeb, 0x45, 0x28, 0x17, 0xe5, 0xa9, 0x8b, 0x94, 0x65, 0x15, 0xc0, + 0x46, 0x82, 0xfa, 0x1c, 0x8f, 0x9c, 0x09, 0x93, 0x9b, 0x31, 0x0a, 0xa4, 0x0a, 0xe6, 0xa6, 0xe4, + 0x66, 0x03, 0xdc, 0xef, 0xac, 0x5d, 0x85, 0x52, 0xb5, 0x89, 0x27, 0x41, 0x9d, 0x1e, 0x38, 0x9d, + 0x7d, 0x3f, 0xa0, 0x4a, 0x69, 0x49, 0x16, 0x48, 0x5e, 0xb3, 0x4a, 0xb2, 0x10, 0x05, 0x6b, 0xd4, + 0xc1, 0x50, 0xd9, 0x73, 0x4a, 0xb4, 0x48, 0x14, 0x65, 0x53, 0xf4, 0x50, 0x52, 0x66, 0x16, 0x99, + 0x5a, 0xd5, 0x7e, 0x39, 0x36, 0x1f, 0xe0, 0x86, 0xa1, 0x90, 0x43, 0x75, 0x42, 0x28, 0x90, 0x52, + 0xe7, 0xe4, 0xf3, 0x23, 0x85, 0x5a, 0x95, 0xf7, 0xc6, 0xf1, 0xb0, 0xe4, 0x51, 0xe7, 0x55, 0xff, + 0x7d, 0x98, 0x5a, 0x66, 0x1b, 0x7a, 0xb7, 0xe5, 0xf2, 0xf4, 0x00, 0xc4, 0x8c, 0xf7, 0x9e, 0x4b, + 0xb8, 0x22, 0x13, 0xb6, 0x21, 0xa9, 0x50, 0xfd, 0xe5, 0x99, 0xa2, 0xc1, 0xe4, 0x7c, 0xcc, 0x48, + 0xb6, 0x22, 0x43, 0x03, 0xaa, 0xe6, 0x42, 0xd7, 0x9f, 0xe3, 0x12, 0x61, 0xb5, 0xd3, 0x69, 0x4b, + 0x93, 0x34, 0xbf, 0x7b, 0xbf, 0x66, 0xa8, 0x90, 0xa9, 0x72, 0xc9, 0x3b, 0x2d, 0x34, 0x7e, 0xae, + 0x25, 0x50, 0xce, 0xe1, 0x99, 0x53, 0xde, 0x6f, 0x2d, 0xaa, 0x80, 0xde, 0xd5, 0x76, 0x3b, 0x45, + 0x1c, 0x92, 0x37, 0x4c, 0xee, 0x59, 0x38, 0xfd, 0x6a, 0x40, 0x15, 0x9d, 0x4b, 0x5d, 0xd5, 0x4e, + 0x87, 0x6f, 0x96, 0x97, 0xd4, 0x86, 0x61, 0x16, 0xa4, 0x55, 0xf4, 0x64, 0xb9, 0xd8, 0xdb, 0xef, + 0xe3, 0x32, 0x8b, 0xb3, 0x2c, 0x13, 0x5d, 0xe1, 0x4d, 0x26, 0x99, 0x56, 0x42, 0x58, 0xa2, 0x50, + 0x9d, 0x13, 0xa7, 0x51, 0xf4, 0x89, 0x53, 0x36, 0x2b, 0xcb, 0x4c, 0x02, 0x2e, 0xf9, 0x5d, 0xca, + 0x2b, 0x56, 0x96, 0xd2, 0x52, 0x32, 0x93, 0xbd, 0xea, 0x72, 0x3a, 0xc5, 0xbd, 0xd9, 0xe5, 0xdc, + 0x14, 0xf8, 0xf7, 0xa1, 0x94, 0x4c, 0xa2, 0xad, 0x98, 0xe6, 0x64, 0xd7, 0xce, 0x9d, 0x93, 0xbb, + 0x30, 0xa3, 0xcf, 0xa8, 0xea, 0x77, 0xde, 0xee, 0x9f, 0xc7, 0x67, 0x1b, 0x66, 0x33, 0x73, 0x5e, + 0xab, 0x23, 0xb6, 0x57, 0x46, 0xec, 0x5c, 0xae, 0x14, 0xce, 0x66, 0xa7, 0xbd, 0x27, 0xaf, 0x99, + 0x8a, 0x7f, 0x76, 0x12, 0xf0, 0xf9, 0x6b, 0x7d, 0xb0, 0xc4, 0x80, 0x7e, 0x8d, 0x27, 0x60, 0xaa, + 0x8e, 0x2b, 0x9a, 0x29, 0x20, 0xa7, 0x02, 0xab, 0x17, 0x8a, 0x5a, 0x03, 0x33, 0x19, 0xc5, 0xf9, + 0x43, 0x7c, 0x35, 0x9f, 0x67, 0xbc, 0xb0, 0x76, 0x65, 0xdc, 0xea, 0xdc, 0x91, 0xe9, 0x99, 0x1e, + 0xbd, 0x87, 0x2e, 0x39, 0xaf, 0xd6, 0xc3, 0xf1, 0x9b, 0x9c, 0xc7, 0xad, 0xa5, 0xcc, 0x36, 0x46, + 0xee, 0xf2, 0xa4, 0xd9, 0x26, 0x2b, 0xe7, 0xba, 0x1a, 0x86, 0x5e, 0x59, 0xfd, 0xf9, 0x69, 0xfc, + 0x15, 0xb7, 0xe3, 0x98, 0x55, 0xe8, 0x76, 0x9c, 0x4c, 0xfe, 0x97, 0xf3, 0x11, 0x74, 0xe6, 0x0e, + 0xbf, 0xb4, 0x4d, 0x24, 0x5f, 0x27, 0xba, 0xaa, 0x94, 0x9d, 0x98, 0x5d, 0xad, 0x8d, 0x4c, 0x14, + 0xbd, 0x8a, 0x87, 0xf2, 0x1b, 0xcc, 0x19, 0xa5, 0x1e, 0x99, 0xe9, 0x7b, 0x8b, 0x29, 0x9b, 0x50, + 0x8e, 0x27, 0x33, 0xd1, 0x81, 0x13, 0x4e, 0xa5, 0x1c, 0x8c, 0x73, 0xb9, 0xf9, 0xe8, 0xc9, 0x77, + 0x52, 0x5f, 0x7a, 0xce, 0xc0, 0xf4, 0xac, 0x82, 0xef, 0xe7, 0x5a, 0x1c, 0xec, 0xf3, 0xb1, 0x11, + 0x57, 0x4f, 0x5d, 0x9f, 0xda, 0xcf, 0x33, 0xf2, 0xda, 0xdf, 0x43, 0xb9, 0x58, 0xcb, 0x4d, 0x9f, + 0xdb, 0xeb, 0x8b, 0x59, 0x7c, 0xc2, 0xf4, 0x8e, 0xab, 0xb5, 0x4b, 0xca, 0x69, 0xc9, 0x82, 0x93, + 0xec, 0xb8, 0xc7, 0x69, 0x5a, 0x1e, 0x9f, 0x25, 0x18, 0xd7, 0x92, 0xda, 0x93, 0x73, 0xc6, 0x30, + 0x19, 0x67, 0xe8, 0xbc, 0xd1, 0x39, 0xf3, 0xf8, 0x5c, 0x44, 0x53, 0xb2, 0x4a, 0x8d, 0x9f, 0xdb, + 0x8a, 0xf3, 0x69, 0x1e, 0x86, 0x19, 0x59, 0x8d, 0x02, 0x6f, 0xcd, 0x85, 0xe4, 0xe0, 0x18, 0x0d, + 0xca, 0xef, 0x12, 0xd1, 0x87, 0xa6, 0x4f, 0x93, 0xf2, 0xe5, 0xd7, 0x69, 0x91, 0x39, 0x17, 0x93, + 0xd7, 0xc8, 0x40, 0x87, 0x67, 0x95, 0x4d, 0x4c, 0x83, 0xa2, 0x81, 0x22, 0x9b, 0xcd, 0x16, 0x3e, + 0x1f, 0xc9, 0xc8, 0xf2, 0xaf, 0x76, 0xd8, 0xec, 0xe2, 0x7c, 0xd9, 0x4d, 0xed, 0xd9, 0xb9, 0x1c, + 0x7b, 0xa6, 0xfd, 0xcf, 0x6d, 0xe9, 0x0f, 0xb5, 0x3d, 0x3b, 0x95, 0xcb, 0x9f, 0x5c, 0x4f, 0x0a, + 0x6e, 0x79, 0xe9, 0xfe, 0x7b, 0x9c, 0x09, 0x33, 0xe9, 0xdc, 0xf3, 0x86, 0x5d, 0x37, 0x5d, 0x98, + 0x3f, 0x0a, 0xb6, 0x5c, 0xff, 0x39, 0xdc, 0xb2, 0x0a, 0xfb, 0xb5, 0xf0, 0x4b, 0x6d, 0xa3, 0x4b, + 0x24, 0xef, 0x57, 0xea, 0x78, 0x9f, 0xec, 0xfe, 0xb9, 0xbc, 0x37, 0xf0, 0x49, 0x53, 0x3a, 0xf3, + 0xbe, 0x92, 0x6c, 0x7a, 0xe5, 0xe5, 0xcf, 0x34, 0xfb, 0xce, 0xa6, 0xbb, 0xc8, 0xf8, 0x9d, 0x4d, + 0x18, 0x6d, 0xfb, 0x35, 0xec, 0x6b, 0xb9, 0x19, 0x67, 0x64, 0xec, 0x4f, 0x6c, 0xc6, 0xf9, 0x39, + 0xfd, 0x7b, 0xa8, 0x41, 0xa7, 0xeb, 0xee, 0x9e, 0xa7, 0x25, 0xdc, 0x57, 0x4a, 0x90, 0x91, 0x84, + 0xdf, 0xdc, 0x62, 0xb2, 0xf2, 0xf3, 0x6f, 0x32, 0xf9, 0x87, 0x4b, 0xef, 0x7a, 0xea, 0x74, 0x32, + 0x9f, 0x9f, 0x31, 0x5e, 0x6d, 0x37, 0x99, 0xb9, 0xd6, 0x35, 0x86, 0x7a, 0xde, 0x72, 0xc5, 0x30, + 0x23, 0x85, 0xba, 0x62, 0x98, 0x99, 0xe8, 0xfc, 0x16, 0x5a, 0x5d, 0x6c, 0xbf, 0x4d, 0x75, 0xab, + 0x8b, 0x96, 0x08, 0x3b, 0x61, 0xf4, 0x20, 0x1f, 0xc3, 0x98, 0x4a, 0x14, 0xae, 0xec, 0xdb, 0xc9, + 0x5c, 0xe5, 0xf3, 0xe5, 0x74, 0x81, 0xa8, 0xf0, 0x1d, 0x69, 0xf8, 0xc0, 0x3a, 0xcb, 0xa6, 0xc1, + 0x28, 0xbf, 0xda, 0x77, 0xa4, 0xd5, 0xc3, 0x20, 0x4b, 0xa5, 0x09, 0x4f, 0x92, 0x7d, 0x1f, 0x26, + 0xe2, 0x94, 0xe0, 0xbb, 0x0b, 0x1a, 0x61, 0x22, 0x4f, 0x78, 0x92, 0xf0, 0x3d, 0x79, 0xa5, 0x81, + 0xf5, 0x99, 0x85, 0xbd, 0x4f, 0xf1, 0x8f, 0xa5, 0x95, 0xc5, 0x68, 0x69, 0x2a, 0xc1, 0x78, 0x8f, + 0xcd, 0x77, 0x42, 0xcf, 0xd1, 0xa9, 0xa6, 0x36, 0x23, 0xcb, 0xae, 0x9a, 0xda, 0xac, 0x2c, 0xb9, + 0xb1, 0xc9, 0xff, 0x0b, 0x69, 0x52, 0x88, 0x99, 0x5e, 0x34, 0x9a, 0x95, 0xe2, 0x7b, 0x29, 0xaf, + 0x38, 0xc9, 0xba, 0x0e, 0xa5, 0x64, 0x42, 0x51, 0xa5, 0x8f, 0xe5, 0x64, 0x7e, 0x55, 0x4a, 0x5e, + 0x6e, 0x26, 0xd2, 0x2d, 0x69, 0x1f, 0x37, 0xf9, 0x5e, 0xc9, 0x6e, 0x94, 0xce, 0x3a, 0xdf, 0x60, + 0x3e, 0x69, 0xe4, 0x16, 0xd5, 0x35, 0xe5, 0x54, 0xee, 0x52, 0x5d, 0xb2, 0xca, 0x48, 0x47, 0xea, + 0xca, 0xa0, 0x55, 0xd9, 0x69, 0xe0, 0xdf, 0x30, 0x55, 0xd8, 0x1e, 0x81, 0xe8, 0xfb, 0x5e, 0xff, + 0x92, 0x5f, 0x82, 0xb9, 0x9c, 0xc0, 0xda, 0xe4, 0x5a, 0xc2, 0xd2, 0x9a, 0x1d, 0x78, 0x5b, 0x2d, + 0x90, 0xcc, 0xa4, 0xdf, 0xeb, 0xe8, 0x37, 0x60, 0x84, 0x90, 0x48, 0xdd, 0xc5, 0x3d, 0x74, 0xa3, + 0x7d, 0x9e, 0xdb, 0x5a, 0xdb, 0x36, 0x33, 0x63, 0x4f, 0x90, 0x3a, 0xea, 0x22, 0x06, 0x34, 0xe3, + 0x3a, 0x2e, 0x83, 0xe1, 0x7c, 0x36, 0x43, 0xb6, 0x77, 0xb0, 0xb5, 0x90, 0x11, 0xdf, 0x43, 0xad, + 0x85, 0xfc, 0xd8, 0x1f, 0xb9, 0xcd, 0xdc, 0x92, 0x32, 0x52, 0x36, 0xc7, 0xfc, 0x50, 0x1f, 0xb9, + 0x1c, 0xef, 0x33, 0x8e, 0xa9, 0xe8, 0x1d, 0x24, 0x07, 0xbd, 0xf7, 0xee, 0x61, 0xcb, 0x23, 0xd7, + 0xa4, 0x5a, 0xd0, 0xda, 0x97, 0x17, 0x27, 0x24, 0xb7, 0x7d, 0xcb, 0xf2, 0x7b, 0xca, 0x6e, 0xdf, + 0x71, 0x0f, 0x5d, 0x75, 0xff, 0x95, 0x08, 0x20, 0x63, 0x74, 0x54, 0x83, 0xcf, 0xe7, 0xc0, 0xc9, + 0x06, 0x3a, 0x02, 0x25, 0xa1, 0x9a, 0x52, 0x9a, 0x1d, 0xa1, 0x26, 0x97, 0x1f, 0x5f, 0xc7, 0x46, + 0x84, 0x8f, 0x93, 0xac, 0xe3, 0x44, 0x68, 0x10, 0xb1, 0x8e, 0x0d, 0xe8, 0xc9, 0xd6, 0x71, 0x82, + 0xa1, 0xb9, 0x8e, 0x93, 0xcd, 0x4c, 0x6a, 0xfa, 0xb9, 0xb3, 0x9a, 0x6c, 0xa6, 0x5a, 0xc7, 0xd9, + 0x1c, 0xf3, 0x23, 0xb1, 0xe4, 0x72, 0x54, 0xeb, 0xd8, 0xe4, 0x98, 0x83, 0x7e, 0xcc, 0x75, 0x9c, + 0xac, 0xc4, 0x5c, 0xc7, 0x27, 0x6a, 0x9f, 0x5a, 0xc7, 0xd9, 0xed, 0x3b, 0xf1, 0x3a, 0x4e, 0x84, + 0x2e, 0x32, 0x3a, 0x9a, 0xb5, 0x8e, 0x93, 0xf8, 0x7c, 0x1d, 0x27, 0xa1, 0x09, 0xe3, 0x4a, 0x8f, + 0x75, 0x9c, 0xa4, 0xfc, 0x0c, 0xf9, 0x25, 0xc2, 0xae, 0x1c, 0x67, 0x25, 0xe7, 0x46, 0x6c, 0x21, + 0x0f, 0xd1, 0xbc, 0x97, 0x80, 0x1f, 0x6f, 0x35, 0x5f, 0xc8, 0x63, 0x8a, 0xeb, 0x79, 0x57, 0x0e, + 0x62, 0xb2, 0xb9, 0xa6, 0xed, 0x2a, 0x3b, 0xea, 0x4c, 0x8f, 0x06, 0xef, 0xb2, 0x75, 0xd3, 0xea, + 0xc1, 0xb7, 0x57, 0xd0, 0x9c, 0x1e, 0x7c, 0x95, 0x2a, 0x93, 0xe4, 0x9b, 0x4b, 0xd2, 0x7b, 0x7d, + 0x7f, 0x2e, 0x2f, 0x38, 0x92, 0x74, 0x0b, 0x09, 0xe5, 0xe8, 0xc4, 0x2d, 0x55, 0x4a, 0x52, 0xb2, + 0xa5, 0x27, 0x5d, 0xe7, 0xeb, 0x52, 0x7a, 0x48, 0x45, 0xdb, 0x4a, 0x74, 0x5a, 0x5f, 0xeb, 0xb9, + 0x25, 0x64, 0x1b, 0x6d, 0xb9, 0x69, 0xb8, 0x66, 0x07, 0xce, 0x0b, 0xeb, 0xd5, 0x97, 0x6b, 0x2a, + 0x6e, 0x90, 0xce, 0x35, 0x2f, 0xa8, 0x90, 0xe2, 0x9a, 0xa6, 0xfe, 0x04, 0xad, 0x5f, 0xe2, 0xc5, + 0x95, 0xf7, 0xd8, 0xcf, 0xb7, 0xa4, 0x4c, 0x1b, 0xce, 0x4a, 0x0c, 0x17, 0x7d, 0xc4, 0x3e, 0x12, + 0x37, 0x78, 0x12, 0x98, 0x3b, 0xf8, 0x59, 0xf4, 0xe4, 0x13, 0x28, 0x89, 0xed, 0x2d, 0x66, 0x90, + 0x85, 0x98, 0x3b, 0x75, 0x35, 0x69, 0x74, 0x3b, 0x46, 0x0b, 0x8e, 0x63, 0x6c, 0x3b, 0xce, 0x48, + 0xe4, 0x5b, 0xa6, 0xd8, 0x71, 0xb8, 0x1d, 0x74, 0xc3, 0x88, 0xb6, 0xd2, 0x16, 0x25, 0xb3, 0x31, + 0xd2, 0x33, 0xc2, 0x44, 0xdf, 0x5d, 0x20, 0xab, 0xb8, 0xb7, 0x99, 0xe0, 0x5e, 0x26, 0xb7, 0x6c, + 0x36, 0xb8, 0xf5, 0xac, 0xab, 0x67, 0x3d, 0x66, 0x9b, 0xf2, 0xea, 0xce, 0x6d, 0x94, 0xb4, 0xba, + 0x9e, 0xcd, 0x62, 0xb7, 0xbb, 0x70, 0x72, 0x86, 0x8c, 0x97, 0x78, 0xcf, 0xf4, 0x4a, 0x78, 0xf1, + 0xbd, 0xee, 0x15, 0xf0, 0x52, 0x6b, 0xe1, 0x98, 0xd3, 0x98, 0xb7, 0x16, 0x3e, 0x44, 0x7f, 0x07, + 0x6e, 0xe7, 0xec, 0xb7, 0x04, 0x92, 0x2f, 0xaa, 0xc8, 0xa7, 0x30, 0x26, 0x89, 0xfb, 0xcf, 0x7c, + 0x92, 0x1a, 0x67, 0x7e, 0x09, 0x26, 0x8d, 0xe7, 0x62, 0x4a, 0x8d, 0xcb, 0x7a, 0x44, 0xd6, 0x63, + 0x41, 0x4f, 0x1a, 0xcf, 0xc2, 0x14, 0x97, 0xac, 0xc7, 0x62, 0xb9, 0x5c, 0x7e, 0x00, 0xe3, 0x62, + 0x48, 0x7b, 0x8e, 0x46, 0xbe, 0x61, 0x71, 0x56, 0x73, 0xbd, 0xee, 0xb6, 0xdc, 0x68, 0xd1, 0xf7, + 0x1e, 0xbb, 0x7b, 0x7d, 0x07, 0x26, 0x4d, 0xb2, 0xbb, 0x40, 0xbe, 0xc2, 0x94, 0xd7, 0x32, 0x11, + 0x39, 0x8d, 0x9e, 0xf9, 0xc1, 0x13, 0xd7, 0xdb, 0xeb, 0xc3, 0xf2, 0xb2, 0xc9, 0x32, 0x49, 0x27, + 0x3f, 0x90, 0xaf, 0x60, 0xbe, 0x9e, 0xcf, 0xbc, 0x2f, 0x93, 0xde, 0xe7, 0x68, 0x1d, 0x2e, 0xa0, + 0x9b, 0xd0, 0x49, 0xdb, 0xde, 0x93, 0xe9, 0x17, 0x3c, 0x32, 0xa5, 0xbc, 0x94, 0x68, 0xfa, 0x41, + 0xab, 0x3f, 0xc7, 0x8a, 0xe9, 0x31, 0x9c, 0x20, 0x93, 0x83, 0xf1, 0x05, 0x9c, 0xab, 0xe7, 0xb2, + 0xee, 0xc7, 0xa2, 0x9f, 0xc8, 0x7c, 0x1e, 0x87, 0xe2, 0x84, 0xed, 0xee, 0xc9, 0x73, 0x15, 0x37, + 0x6f, 0x76, 0xe0, 0x6e, 0x05, 0xf4, 0x31, 0x0d, 0xd0, 0x2f, 0xbd, 0x9f, 0x47, 0xb6, 0x89, 0x2e, + 0x7b, 0xbe, 0x0a, 0x67, 0xea, 0x29, 0x56, 0x79, 0x24, 0xfd, 0x2e, 0xba, 0xa6, 0xb1, 0xa7, 0xc7, + 0x6c, 0x57, 0x1f, 0x77, 0xa8, 0xf1, 0x7b, 0x34, 0xda, 0x59, 0xed, 0x33, 0x4a, 0xf2, 0xe1, 0x84, + 0x44, 0xdc, 0xbd, 0xc3, 0x28, 0xeb, 0x1a, 0x65, 0x1a, 0x23, 0xf7, 0xe3, 0xfd, 0x54, 0x5e, 0xfa, + 0xf4, 0xad, 0x36, 0x8f, 0xc3, 0x5b, 0xb8, 0x17, 0x0a, 0xdf, 0xec, 0xb9, 0x58, 0xd6, 0xe1, 0x90, + 0xd8, 0x26, 0xa9, 0xb9, 0x69, 0x87, 0xa4, 0xca, 0xf5, 0x5c, 0xbe, 0x3c, 0x04, 0xec, 0x52, 0xca, + 0x67, 0xbf, 0x27, 0x0b, 0x6e, 0xee, 0x5d, 0xf3, 0x9b, 0x4f, 0x74, 0x73, 0x2f, 0xfb, 0x9d, 0xb4, + 0x83, 0x32, 0xd8, 0xee, 0x82, 0xd8, 0xf1, 0xd9, 0x0f, 0xc3, 0xc3, 0x0d, 0x01, 0xf1, 0x8e, 0x9f, + 0x84, 0x0b, 0x53, 0xd9, 0x5b, 0xd2, 0x88, 0x8a, 0x15, 0x9a, 0x9c, 0x73, 0x87, 0x46, 0xd9, 0x4f, + 0x91, 0xc8, 0xb4, 0x9f, 0xea, 0x0d, 0xcd, 0xbf, 0xb4, 0x20, 0x36, 0xed, 0xb4, 0xd1, 0xdd, 0xfb, + 0xc0, 0xe7, 0x34, 0xb1, 0x07, 0x70, 0xba, 0xa8, 0xbf, 0xa3, 0xda, 0xb4, 0x70, 0x6f, 0x32, 0x06, + 0x5e, 0x45, 0x8e, 0x4e, 0x97, 0xc5, 0x43, 0xa9, 0x7b, 0x5d, 0xdd, 0x2e, 0x90, 0x0d, 0x38, 0x7b, + 0x8f, 0x46, 0x62, 0x8f, 0xb3, 0x69, 0x18, 0x05, 0x6e, 0x33, 0xea, 0x79, 0x03, 0x2a, 0x95, 0xb0, + 0x0c, 0x9a, 0xdd, 0xb7, 0x19, 0xbf, 0x7a, 0x36, 0xbf, 0x9e, 0x74, 0x3d, 0x7c, 0x81, 0xc5, 0xb5, + 0xca, 0x49, 0x9a, 0x98, 0xbf, 0xc4, 0x47, 0xb8, 0xab, 0x51, 0x3e, 0x69, 0x29, 0x0e, 0xf3, 0x22, + 0xd4, 0xca, 0x9b, 0x30, 0xcc, 0x89, 0x72, 0x0f, 0xd4, 0x09, 0x9d, 0x86, 0xdc, 0x81, 0x31, 0xe5, + 0x2b, 0x44, 0x8c, 0xa2, 0xdc, 0x76, 0xdd, 0x81, 0x31, 0x2e, 0x57, 0x1d, 0x9f, 0xe4, 0x43, 0x18, + 0x53, 0xce, 0x45, 0x27, 0x3e, 0xe9, 0x3f, 0x81, 0x49, 0xdd, 0xcd, 0xe8, 0xe4, 0x03, 0xf9, 0x03, + 0xbc, 0xa7, 0x96, 0xd7, 0x41, 0xf9, 0xf4, 0xb3, 0x89, 0xe8, 0x37, 0x62, 0x48, 0xf9, 0x06, 0x29, + 0x81, 0xb9, 0xcd, 0x3f, 0x93, 0xa2, 0x26, 0x1f, 0xca, 0x27, 0x5b, 0x8a, 0x38, 0x8d, 0xd4, 0x63, + 0xcc, 0xa6, 0xf8, 0x30, 0xbf, 0x08, 0xb1, 0xda, 0x60, 0xfb, 0x36, 0xfb, 0x38, 0xf7, 0xe9, 0xfd, + 0x87, 0x2e, 0x8f, 0xcb, 0x26, 0x4a, 0x69, 0xa9, 0x34, 0x83, 0xf9, 0x8c, 0x2e, 0xe5, 0x67, 0x26, + 0xc4, 0xc9, 0xb8, 0x8f, 0xea, 0x6e, 0xaa, 0x34, 0xb7, 0x7b, 0x3d, 0x32, 0x1d, 0xc6, 0xfa, 0x7d, + 0x9a, 0x5d, 0x0f, 0xb2, 0x5e, 0xe6, 0x02, 0xf1, 0x10, 0xf5, 0x95, 0xb0, 0x5b, 0x95, 0xde, 0x9a, + 0xc7, 0xef, 0x6c, 0x7e, 0xcb, 0xce, 0x67, 0xdc, 0xe0, 0xf7, 0x9d, 0x8b, 0x3c, 0x76, 0xbf, 0x84, + 0xd2, 0x61, 0x66, 0xf8, 0xb3, 0x7c, 0x66, 0xd7, 0x35, 0x27, 0x90, 0x4c, 0x4a, 0x75, 0xe8, 0x3d, + 0xc1, 0xb7, 0x70, 0xd9, 0x89, 0x18, 0x5f, 0xef, 0xc3, 0x45, 0x8e, 0xc4, 0x77, 0xfa, 0xe2, 0xa9, + 0xfb, 0xe0, 0xf3, 0xfc, 0x84, 0xcd, 0xae, 0xaf, 0x4f, 0x62, 0xc9, 0x8c, 0x2b, 0x7a, 0xe5, 0x0a, + 0x9b, 0xcd, 0xd0, 0x74, 0x85, 0xed, 0xd9, 0x87, 0xbc, 0xe1, 0xff, 0x0c, 0x2a, 0xb1, 0xa7, 0xcb, + 0xc9, 0x26, 0x21, 0xdf, 0x03, 0x93, 0xa4, 0x46, 0x2a, 0x24, 0xbd, 0xf2, 0x26, 0xcd, 0x5f, 0xc9, + 0x1b, 0x61, 0xfd, 0xbd, 0x8f, 0xf0, 0xe0, 0x4b, 0xa4, 0x24, 0xcd, 0x4b, 0x6e, 0xda, 0xc3, 0xe0, + 0x2c, 0x1e, 0x07, 0xbe, 0x12, 0x46, 0xe9, 0xd9, 0x3e, 0x39, 0x23, 0xe5, 0x88, 0x92, 0x60, 0x64, + 0xf5, 0x98, 0xde, 0xfe, 0x77, 0xac, 0xe5, 0x9c, 0x79, 0x3d, 0xf9, 0x84, 0x3a, 0xf1, 0x83, 0xb8, + 0x44, 0xb4, 0x44, 0xfd, 0x11, 0x72, 0xba, 0x28, 0xf9, 0x9a, 0x2b, 0x0b, 0x43, 0x79, 0x7f, 0x95, + 0x65, 0x15, 0x0c, 0xce, 0x54, 0x11, 0x3f, 0x70, 0xa3, 0xe7, 0x8b, 0xf6, 0x5a, 0x6c, 0x56, 0xd0, + 0x0b, 0x24, 0x6f, 0x90, 0x85, 0xf6, 0x1a, 0xf9, 0x12, 0xb7, 0x12, 0xc1, 0xbe, 0xe6, 0xfb, 0x51, + 0x18, 0x05, 0x4e, 0xa7, 0xde, 0x0c, 0xdc, 0x4e, 0x94, 0xdb, 0xe9, 0xd8, 0x59, 0x3d, 0x8b, 0x4c, + 0xf3, 0x9d, 0x15, 0x01, 0xfb, 0xb3, 0x42, 0xfc, 0xa8, 0xf7, 0x43, 0x59, 0x85, 0x3d, 0x34, 0x97, + 0xba, 0x0c, 0xd1, 0xff, 0x2a, 0x99, 0x36, 0x60, 0x2e, 0x27, 0x30, 0x92, 0xba, 0xa6, 0xee, 0x1d, + 0x38, 0x69, 0xbe, 0x77, 0xc5, 0xe4, 0x2b, 0x98, 0xcd, 0x8c, 0x9c, 0xa4, 0x4c, 0xed, 0xbd, 0xe2, + 0x2a, 0xf5, 0x63, 0xfe, 0x04, 0xca, 0xfc, 0xe5, 0x0a, 0x3a, 0x68, 0x1b, 0x41, 0x74, 0xe2, 0xf7, + 0x4c, 0x39, 0x08, 0xc9, 0xfd, 0x3a, 0x1f, 0x4f, 0xbd, 0xaa, 0x9f, 0xc1, 0xe8, 0x29, 0x89, 0x64, + 0xfa, 0xea, 0xc3, 0xcb, 0x2a, 0xec, 0xf5, 0x68, 0x6a, 0x0b, 0x66, 0x77, 0x69, 0xe0, 0x3e, 0x7e, + 0x9e, 0x64, 0x28, 0x47, 0x26, 0xb3, 0xb4, 0x17, 0xc7, 0xcf, 0x61, 0x6e, 0xd1, 0x3f, 0xe8, 0x88, + 0xe7, 0x89, 0x06, 0x4f, 0xe5, 0x73, 0x90, 0x5d, 0xde, 0xdf, 0x69, 0x6b, 0x5e, 0xbd, 0x9f, 0xd4, + 0xe9, 0x16, 0xf1, 0xdd, 0xee, 0x75, 0xd3, 0x6f, 0x22, 0x03, 0x25, 0x7e, 0x75, 0x22, 0x55, 0x39, + 0x9d, 0x7e, 0x1b, 0x17, 0x61, 0x82, 0x8e, 0xdb, 0xe6, 0xb4, 0x45, 0x98, 0x55, 0xde, 0xfb, 0xb1, + 0x5b, 0x06, 0x57, 0x5e, 0x61, 0x3e, 0xd7, 0x63, 0xb4, 0x76, 0x43, 0x9e, 0x2d, 0x66, 0x26, 0xf7, + 0x84, 0x77, 0x78, 0x66, 0x9a, 0xf7, 0xcc, 0x76, 0x6a, 0xe1, 0x23, 0xda, 0xed, 0x1e, 0x22, 0x16, + 0xd1, 0xe3, 0x47, 0x30, 0x4c, 0xbc, 0xad, 0x98, 0xd4, 0x69, 0x7b, 0xed, 0xd6, 0x29, 0x62, 0x14, + 0x6a, 0x3f, 0x80, 0x89, 0xba, 0x5e, 0x79, 0x46, 0x25, 0xb9, 0x8b, 0x42, 0x3d, 0x77, 0xea, 0xdf, + 0xf6, 0x1e, 0x4e, 0xaf, 0xea, 0xe0, 0x39, 0x56, 0x2f, 0x72, 0x7d, 0x84, 0x8c, 0x24, 0x7b, 0xea, + 0x14, 0xc8, 0xca, 0x81, 0xa9, 0x7c, 0x84, 0xb2, 0xf3, 0xf2, 0x35, 0x78, 0xea, 0x9e, 0x64, 0x8a, + 0x53, 0x62, 0xf5, 0xcf, 0x25, 0xac, 0x9c, 0xff, 0x7b, 0xe6, 0x48, 0xe5, 0x0e, 0x4d, 0x71, 0x5a, + 0x41, 0xdd, 0xa1, 0x29, 0x95, 0xac, 0x50, 0x77, 0x68, 0xca, 0xc8, 0x44, 0xb8, 0x8c, 0xbc, 0xe2, + 0x9c, 0x47, 0x3d, 0x8c, 0x11, 0x8a, 0x4d, 0x46, 0x6a, 0xa5, 0x07, 0x7a, 0x14, 0x12, 0x9e, 0x29, + 0xa9, 0x87, 0xad, 0x35, 0x19, 0x7d, 0x24, 0x91, 0x5a, 0xe9, 0x2e, 0x94, 0x78, 0xd2, 0x88, 0x38, + 0x78, 0x63, 0xec, 0xe3, 0x98, 0xce, 0x65, 0xd1, 0x63, 0x52, 0x4b, 0xc9, 0x90, 0x77, 0xca, 0x64, + 0x96, 0x13, 0x0b, 0xaf, 0xc7, 0x52, 0x85, 0x38, 0xb0, 0x9d, 0x32, 0x4c, 0xa5, 0x62, 0xdd, 0xcd, + 0x9f, 0xcb, 0x28, 0x51, 0x22, 0xe5, 0x84, 0x1e, 0x06, 0x4f, 0x75, 0x29, 0x23, 0x36, 0xde, 0xfc, + 0xf9, 0xcc, 0x32, 0xc1, 0x28, 0xe2, 0xe9, 0xb4, 0xb3, 0xd3, 0x86, 0xc7, 0x2f, 0xd6, 0x7a, 0xe0, + 0xc8, 0x6a, 0x6e, 0x1c, 0x07, 0x55, 0xd4, 0x4a, 0x55, 0xc6, 0xa7, 0x8c, 0x5c, 0xe5, 0xdf, 0xc9, + 0x78, 0x54, 0x62, 0x60, 0xc4, 0x6e, 0x6f, 0xbd, 0x13, 0xa7, 0x93, 0x87, 0x32, 0x03, 0x4f, 0x4e, + 0x4d, 0xfd, 0x18, 0xe4, 0xce, 0xe0, 0x43, 0x99, 0x73, 0xe7, 0x55, 0x33, 0x7e, 0x04, 0x17, 0x12, + 0x2f, 0x55, 0x4c, 0xc6, 0x37, 0xb2, 0x9f, 0xb3, 0x64, 0x0e, 0x4f, 0xbe, 0xcc, 0x7e, 0x39, 0xfd, + 0xa2, 0x25, 0x31, 0xef, 0x27, 0xdd, 0xf3, 0xd6, 0x61, 0x0a, 0xb7, 0x19, 0x99, 0x75, 0x3f, 0x0e, + 0x82, 0x63, 0x82, 0x93, 0xd1, 0x98, 0x92, 0xa5, 0xea, 0xa1, 0xfc, 0x84, 0x78, 0xfd, 0xcc, 0x73, + 0xf8, 0xcf, 0x9b, 0x4f, 0xa2, 0x11, 0x98, 0x75, 0x8a, 0x61, 0xc1, 0xee, 0x1d, 0xf2, 0x03, 0x38, + 0x1d, 0x3f, 0x8a, 0xe6, 0x2c, 0x32, 0xd0, 0x7a, 0x18, 0xca, 0x4e, 0xc7, 0x2f, 0xa3, 0x4f, 0x4e, + 0xbe, 0x22, 0x8f, 0xa2, 0x98, 0xfc, 0x62, 0xea, 0x5d, 0x8f, 0xd1, 0x87, 0xe3, 0x9c, 0x48, 0xda, + 0xd8, 0x9e, 0x74, 0x76, 0x9a, 0xf8, 0xb9, 0x65, 0xc7, 0x77, 0xd4, 0x3f, 0xb7, 0x9e, 0x31, 0x28, + 0x95, 0xf8, 0x9b, 0xc3, 0x67, 0x1d, 0xae, 0x62, 0x4c, 0x98, 0x2d, 0x1e, 0x05, 0x30, 0x1b, 0x2b, + 0xbf, 0xed, 0xc9, 0x48, 0x32, 0x6d, 0xb8, 0xd2, 0x37, 0xc0, 0x25, 0xb9, 0x65, 0xf8, 0xf2, 0xf4, + 0x0f, 0x85, 0xd9, 0x43, 0xf3, 0x98, 0xc9, 0x8a, 0x13, 0xa9, 0xce, 0xd9, 0x1e, 0x21, 0x2b, 0xd5, + 0x39, 0xdb, 0x33, 0xd0, 0xe4, 0xe7, 0x98, 0xd6, 0x4a, 0x9c, 0x51, 0x18, 0xe7, 0x89, 0x7a, 0x3c, + 0xfa, 0x75, 0xcf, 0x6b, 0x9f, 0x2b, 0xe6, 0xa5, 0x68, 0x8a, 0x10, 0x75, 0x9a, 0x4b, 0x42, 0x13, + 0xcb, 0x63, 0xde, 0x9f, 0x49, 0x0f, 0x1f, 0xf2, 0x4b, 0x7c, 0x01, 0x9e, 0xb8, 0xe5, 0x39, 0xf0, + 0xda, 0xd2, 0x4f, 0xff, 0xe3, 0xa5, 0xc2, 0x4f, 0x7f, 0x76, 0xa9, 0xf0, 0x6f, 0x7f, 0x76, 0xa9, + 0xf0, 0x1f, 0x7e, 0x76, 0xa9, 0xf0, 0xe5, 0xc2, 0xf1, 0x62, 0x30, 0xf3, 0x44, 0x94, 0xb7, 0x38, + 0xbb, 0x61, 0xfc, 0xef, 0xad, 0xff, 0x19, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x19, 0xb0, 0x0e, 0x34, + 0xed, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -17189,6 +17190,10 @@ type AuthServiceClient interface { UpsertTrustedCluster(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. UpsertTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + CreateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + UpdateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -19186,6 +19191,24 @@ func (c *authServiceClient) UpsertTrustedClusterV2(ctx context.Context, in *type return out, nil } +func (c *authServiceClient) CreateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, "/proto.AuthService/CreateTrustedClusterV2", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *authServiceClient) UpdateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, "/proto.AuthService/UpdateTrustedClusterV2", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *authServiceClient) DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/proto.AuthService/DeleteTrustedCluster", in, out, opts...) @@ -20581,6 +20604,10 @@ type AuthServiceServer interface { UpsertTrustedCluster(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. UpsertTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + CreateTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + UpdateTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(context.Context, *types.ResourceRequest) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -21319,6 +21346,12 @@ func (*UnimplementedAuthServiceServer) UpsertTrustedCluster(ctx context.Context, func (*UnimplementedAuthServiceServer) UpsertTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedClusterV2 not implemented") } +func (*UnimplementedAuthServiceServer) CreateTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTrustedClusterV2 not implemented") +} +func (*UnimplementedAuthServiceServer) UpdateTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateTrustedClusterV2 not implemented") +} func (*UnimplementedAuthServiceServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTrustedCluster not implemented") } @@ -24407,6 +24440,42 @@ func _AuthService_UpsertTrustedClusterV2_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _AuthService_CreateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.TrustedClusterV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).CreateTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/CreateTrustedClusterV2", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).CreateTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) + } + return interceptor(ctx, in, info, handler) +} + +func _AuthService_UpdateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(types.TrustedClusterV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).UpdateTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/UpdateTrustedClusterV2", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).UpdateTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) + } + return interceptor(ctx, in, info, handler) +} + func _AuthService_DeleteTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.ResourceRequest) if err := dec(in); err != nil { @@ -26879,6 +26948,14 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ MethodName: "UpsertTrustedClusterV2", Handler: _AuthService_UpsertTrustedClusterV2_Handler, }, + { + MethodName: "CreateTrustedClusterV2", + Handler: _AuthService_CreateTrustedClusterV2_Handler, + }, + { + MethodName: "UpdateTrustedClusterV2", + Handler: _AuthService_UpdateTrustedClusterV2_Handler, + }, { MethodName: "DeleteTrustedCluster", Handler: _AuthService_DeleteTrustedCluster_Handler, diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 6c9cd08de8674..70f059654608f 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -3219,6 +3219,7 @@ service AuthService { rpc GetTrustedCluster(types.ResourceRequest) returns (types.TrustedClusterV2); // GetTrustedClusters gets all current Trusted Cluster resources. rpc GetTrustedClusters(google.protobuf.Empty) returns (types.TrustedClusterV2List); + // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // // Deprecated: Use UpsertTrustedClusterV2 instead. @@ -3227,6 +3228,10 @@ service AuthService { } // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. rpc UpsertTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + rpc CreateTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + rpc UpdateTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. rpc DeleteTrustedCluster(types.ResourceRequest) returns (google.protobuf.Empty); diff --git a/integration/helpers/trustedclusters.go b/integration/helpers/trustedclusters.go index 8e13fe0186b62..9dfb484ac61a7 100644 --- a/integration/helpers/trustedclusters.go +++ b/integration/helpers/trustedclusters.go @@ -56,7 +56,61 @@ func WaitForTunnelConnections(t *testing.T, authServer *auth.Server, clusterName // propagate and services to start // // Duplicated in tool/tsh/tsh_test.go -func TryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster, skipNameValidation bool) { +func TryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster) { + t.Helper() + ctx := context.TODO() + for i := 0; i < 10; i++ { + log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) + _, err := authServer.CreateTrustedClusterV2(ctx, trustedCluster) + if err == nil { + return + } + if trace.IsConnectionProblem(err) { + log.Debugf("Retrying on connection problem: %v.", err) + time.Sleep(500 * time.Millisecond) + continue + } + if trace.IsAccessDenied(err) { + log.Debugf("Retrying on access denied: %v.", err) + time.Sleep(500 * time.Millisecond) + continue + } + require.FailNow(t, "Terminating on unexpected problem", "%v.", err) + } + require.FailNow(t, "Timeout creating trusted cluster") +} + +// TryUpdateTrustedCluster performs several attempts to update a trusted cluster, +// retries on connection problems and access denied errors to let caches +// propagate and services to start +func TryUpdateTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster) { + t.Helper() + ctx := context.TODO() + for i := 0; i < 10; i++ { + log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) + _, err := authServer.UpdateTrustedClusterV2(ctx, trustedCluster) + if err == nil { + return + } + if trace.IsConnectionProblem(err) { + log.Debugf("Retrying on connection problem: %v.", err) + time.Sleep(500 * time.Millisecond) + continue + } + if trace.IsAccessDenied(err) { + log.Debugf("Retrying on access denied: %v.", err) + time.Sleep(500 * time.Millisecond) + continue + } + require.FailNow(t, "Terminating on unexpected problem", "%v.", err) + } + require.FailNow(t, "Timeout creating trusted cluster") +} + +// TryUpdateTrustedCluster performs several attempts to upsert a trusted cluster, +// retries on connection problems and access denied errors to let caches +// propagate and services to start +func TryUpsertTrustedCluster(t *testing.T, authServer *auth.Server, trustedCluster types.TrustedCluster, skipNameValidation bool) { t.Helper() ctx := context.TODO() for i := 0; i < 10; i++ { diff --git a/integration/integration_test.go b/integration/integration_test.go index c76913d41d031..a1e6e7cb44c00 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -197,6 +197,7 @@ func TestIntegrations(t *testing.T) { t.Run("TrustedClustersRoleMapChanges", suite.bind(testTrustedClustersRoleMapChanges)) t.Run("TrustedClustersWithLabels", suite.bind(testTrustedClustersWithLabels)) t.Run("TrustedClustersSkipNameValidation", suite.bind(testTrustedClustersSkipNameValidation)) + t.Run("CreateAndUpdateTrustedClusters", suite.bind(testCreateAndUpdateTrustedCluster)) t.Run("TrustedTunnelNode", suite.bind(testTrustedTunnelNode)) t.Run("TwoClustersProxy", suite.bind(testTwoClustersProxy)) t.Run("TwoClustersTunnel", suite.bind(testTwoClustersTunnel)) @@ -2754,7 +2755,7 @@ func testMapRoles(t *testing.T, suite *integrationTestSuite) { // try and upsert a trusted cluster const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) sshPort, _, _ := aux.StartNodeAndProxy(t, "aux-node") @@ -2979,6 +2980,15 @@ func testMultiplexingTrustedClusters(t *testing.T, suite *integrationTestSuite) trustedClusters(t, suite, trustedClusterTest{multiplex: true}) } +// TestCreateAndUpdateTrustedCluster tests the basic create and update +// operations for a trusted cluster. +func testCreateAndUpdateTrustedCluster(t *testing.T, suite *integrationTestSuite) { + tr := utils.NewTracer(utils.ThisFunction()).Start() + defer tr.Stop() + + createAndUpdateTrustedClusters(t, suite, trustedClusterTest{}) +} + func standardPortsOrMuxSetup(t *testing.T, mux bool, fds *[]*servicecfg.FileDescriptor) *helpers.InstanceListeners { if mux { return helpers.WebReverseTunnelMuxPortSetup(t, fds) @@ -2986,6 +2996,116 @@ func standardPortsOrMuxSetup(t *testing.T, mux bool, fds *[]*servicecfg.FileDesc return helpers.StandardListenerSetup(t, fds) } +func createAndUpdateTrustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClusterTest) { + ctx := context.Background() + username := suite.Me.Username + + clusterMain := "cluster-main" + clusterAux := "cluster-aux" + mainCfg := helpers.InstanceConfig{ + ClusterName: clusterMain, + HostID: helpers.HostID, + NodeName: Host, + Priv: suite.Priv, + Pub: suite.Pub, + Log: suite.Log, + } + mainCfg.Listeners = standardPortsOrMuxSetup(t, test.multiplex, &mainCfg.Fds) + main := helpers.NewInstance(t, mainCfg) + aux := suite.newNamedTeleportInstance(t, clusterAux) + + // main cluster has a local user and belongs to role "main-devs" and "main-admins" + mainDevs := "main-devs" + mainRole, err := types.NewRole(mainDevs, types.RoleSpecV6{ + Allow: types.RoleConditions{ + Logins: []string{username}, + NodeLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + }, + }) + require.NoError(t, err) + + mainAdmins := "main-admins" + adminsRole, err := types.NewRole(mainAdmins, types.RoleSpecV6{ + Allow: types.RoleConditions{ + Logins: []string{"superuser"}, + NodeLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + }, + }) + require.NoError(t, err) + + main.AddUserWithRole(username, mainRole, adminsRole) + + // for role mapping test we turn on Web API on the main cluster + // as it's used + makeConfig := func(instance *helpers.TeleInstance, enableSSH bool) (*testing.T, *servicecfg.Config) { + tconf := suite.defaultServiceConfig() + tconf.Proxy.DisableWebService = false + tconf.Proxy.DisableWebInterface = true + tconf.SSH.Enabled = enableSSH + tconf, err := instance.GenerateConfig(t, nil, tconf) + require.NoError(t, err) + + tconf.CachePolicy.Enabled = false + return t, tconf + } + lib.SetInsecureDevMode(true) + defer lib.SetInsecureDevMode(false) + + require.NoError(t, main.CreateWithConf(makeConfig(main, false))) + require.NoError(t, aux.CreateWithConf(makeConfig(aux, true))) + + // auxiliary cluster has only a role aux-devs + // connect aux cluster to main cluster + // using trusted clusters, so remote user will be allowed to assume + // role specified by mapping remote role "devs" to local role "local-devs" + auxDevs := "aux-devs" + auxRole, err := types.NewRole(auxDevs, types.RoleSpecV6{ + Allow: types.RoleConditions{ + Logins: []string{username}, + NodeLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + }, + }) + require.NoError(t, err) + _, err = aux.Process.GetAuthServer().UpsertRole(ctx, auxRole) + require.NoError(t, err) + + trustedClusterToken := "trusted-cluster-token" + tokenResource, err := types.NewProvisionToken(trustedClusterToken, []types.SystemRole{types.RoleTrustedCluster}, time.Time{}) + require.NoError(t, err) + err = main.Process.GetAuthServer().UpsertToken(ctx, tokenResource) + require.NoError(t, err) + + trustedCluster := main.AsTrustedCluster(trustedClusterToken, types.RoleMap{ + {Remote: mainDevs, Local: []string{auxDevs}}, + }) + + require.NoError(t, main.Start()) + require.NoError(t, aux.Start()) + + require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) + + // Note that the trusted cluster resource name must match the cluster name. + // Modify the trusted cluster resource name and expect the create to fail. + trustedCluster.SetName(main.Secrets.SiteName + "-cluster") + _, err = aux.Process.GetAuthServer().CreateTrustedClusterV2(ctx, trustedCluster) + require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") + + // Modify the trusted cluster resource name back to what it was originally. + // Try and create a trusted cluster + trustedCluster.SetName(main.Secrets.SiteName) + helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + + // Update the trusted cluster resource with new role mappings. + trustedCluster.SetRoleMap(types.RoleMap{ + {Remote: mainAdmins, Local: []string{auxDevs}}, + }) + helpers.TryUpdateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster) + + // stop clusters and remaining nodes + require.NoError(t, main.StopAll()) + require.NoError(t, aux.StopAll()) +} + func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClusterTest) { ctx := context.Background() username := suite.Me.Username @@ -3107,7 +3227,7 @@ func trustedClusters(t *testing.T, suite *integrationTestSuite, test trustedClus } // try and upsert a trusted cluster - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) sshPort, _, _ := aux.StartNodeAndProxy(t, "aux-node") @@ -3349,11 +3469,11 @@ func trustedDisabledCluster(t *testing.T, suite *integrationTestSuite, test trus require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) // try and upsert a trusted cluster while disabled - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) // try to enable disabled cluster trustedCluster.SetEnabled(true) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) helpers.CheckTrustedClustersCanConnect(ctx, t, helpers.TrustedClusterSetup{ @@ -3482,7 +3602,7 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // change role mapping to ensure updating works @@ -3490,7 +3610,7 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te {Remote: mainDevs, Local: []string{auxDevs}}, }) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) helpers.CheckTrustedClustersCanConnect(ctx, t, helpers.TrustedClusterSetup{ @@ -3503,7 +3623,7 @@ func trustedClustersRoleMapChanges(t *testing.T, suite *integrationTestSuite, te // disable the enabled trusted cluster and ensure it no longer works trustedCluster.SetEnabled(false) - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, test.skipNameValidation) // Wait for both cluster to no longer see each other via reverse tunnels. require.Eventually(t, helpers.WaitForClusters(main.Tunnel, 0), 10*time.Second, 1*time.Second, @@ -3581,7 +3701,7 @@ func testTrustedTunnelNode(t *testing.T, suite *integrationTestSuite) { // try and upsert a trusted cluster const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Create a Teleport instance with a node that dials back to the aux cluster. @@ -3762,7 +3882,7 @@ func testTrustedClusterAgentless(t *testing.T, suite *integrationTestSuite) { // try and upsert a trusted cluster const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, main.Process.GetAuthServer(), clusterAux, 1) // Wait for both cluster to see each other via reverse tunnels. @@ -5585,7 +5705,7 @@ func testRotateTrustedClusters(t *testing.T, suite *integrationTestSuite) { defer lib.SetInsecureDevMode(false) const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, aux.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, svc.GetAuthServer(), aux.Secrets.SiteName, 1) // capture credentials before reload has started to simulate old client @@ -7486,7 +7606,7 @@ func createTrustedClusterPair(t *testing.T, suite *integrationTestSuite, extraSe require.NoError(t, services.CheckAndSetDefaults(trustedCluster)) const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, leaf.Process.GetAuthServer(), trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, root.Process.GetAuthServer(), leafName, 1) _, _, rootProxySSHPort := root.StartNodeAndProxy(t, "root-zero") diff --git a/integration/proxy/proxy_helpers.go b/integration/proxy/proxy_helpers.go index f54f363512303..9de514caf73e1 100644 --- a/integration/proxy/proxy_helpers.go +++ b/integration/proxy/proxy_helpers.go @@ -185,7 +185,7 @@ func newSuite(t *testing.T, opts ...proxySuiteOptionsFunc) *Suite { if options.trustedCluster != nil { const skipNameValidation = false - helpers.TryCreateTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster, skipNameValidation) + helpers.TryUpsertTrustedCluster(t, suite.leaf.Process.GetAuthServer(), options.trustedCluster, skipNameValidation) helpers.WaitForTunnelConnections(t, suite.root.Process.GetAuthServer(), suite.leaf.Secrets.SiteName, 1) } diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index a4657a936fb3f..fc645a6033acd 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4978,6 +4978,42 @@ func (a *ServerWithRoles) UpsertTrustedClusterV2(ctx context.Context, tc types.T return a.authServer.UpsertTrustedClusterV2(ctx, tc) } +// CreateTrustedClusterV2 creates a Trusted Cluster. +func (a *ServerWithRoles) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + if err := a.action(types.KindTrustedCluster, types.VerbCreate); err != nil { + return nil, trace.Wrap(err) + } + + if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.CreateTrustedClusterV2(ctx, tc) +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster. +func (a *ServerWithRoles) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + if err := a.action(types.KindTrustedCluster, types.VerbUpdate); err != nil { + return nil, trace.Wrap(err) + } + + if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + return a.authServer.UpdateTrustedClusterV2(ctx, tc) +} + func (a *ServerWithRoles) ValidateTrustedCluster(ctx context.Context, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { // Don't allow a leaf cluster to be added to a Cloud tenant. if modules.GetModules().Features().Cloud { diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index c0d3c194e909e..07d755cda31d8 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -2977,6 +2977,46 @@ func (g *GRPCServer) UpsertTrustedClusterV2(ctx context.Context, cluster *types. return trustedClusterV2, nil } +// CreateTrustedClusterV2 creates a Trusted Cluster. +func (g *GRPCServer) CreateTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err = services.ValidateTrustedCluster(cluster); err != nil { + return nil, trace.Wrap(err) + } + tc, err := auth.ServerWithRoles.CreateTrustedClusterV2(ctx, cluster) + if err != nil { + return nil, trace.Wrap(err) + } + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster. +func (g *GRPCServer) UpdateTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err = services.ValidateTrustedCluster(cluster); err != nil { + return nil, trace.Wrap(err) + } + tc, err := auth.ServerWithRoles.UpdateTrustedClusterV2(ctx, cluster) + if err != nil { + return nil, trace.Wrap(err) + } + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} + // DeleteTrustedCluster deletes a Trusted Cluster by name. func (g *GRPCServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { auth, err := g.authenticate(ctx) diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 1be35eb74f134..6a5ae458e0cc9 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -60,6 +60,42 @@ func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedClu return upserted, trace.Wrap(err) } +// CreateTrustedClusterV2 creates a Trusted Cluster relationship. +func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + // verify that trusted cluster role map does not reference non-existent roles + if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { + return nil, trace.Wrap(err) + } + + _, err := a.GetTrustedCluster(ctx, tc.GetName()) + if err != nil && !trace.IsNotFound(err) { + return nil, trace.Wrap(err) + } + + if err == nil { + return nil, trace.AlreadyExists("trusted cluster with name %s already exists", tc.GetName()) + } + + const validateNameTrue = true + created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) + return created, trace.Wrap(err) +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. +func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + // verify that trusted cluster role map does not reference non-existent roles + if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { + return nil, trace.Wrap(err) + } + + existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) + if err != nil { + return nil, trace.Wrap(err) + } + updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) + return updated, trace.Wrap(err) +} + // upsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles @@ -86,26 +122,24 @@ func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedClust return a.createTrustedCluster(ctx, tc, validateName) } - if err := existingCluster.CanChangeStateTo(tc); err != nil { - return nil, trace.Wrap(err) - } + updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) + return updated, trace.Wrap(err) +} - // always load all current CAs. even if we aren't changing them as part of - // this function, Services.UpdateTrustedCluster will only correctly activate/deactivate - // CAs that are explicitly passed to it. note that we pass in the existing cluster state - // since where CAs are stored depends on the current state of the trusted cluster. - cas, err := a.getCAsForTrustedCluster(ctx, existingCluster) +func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (types.TrustedCluster, error) { + remoteCAs, err := a.establishTrust(ctx, tc, validateName) if err != nil { return nil, trace.Wrap(err) } - // propagate any role map changes to cas - configureCAsForTrustedCluster(tc, cas) + // Force name to the name of the trusted cluster. + tc.SetName(remoteCAs[0].GetClusterName()) - // state transition is valid, set the expected revision - tc.SetRevision(existingCluster.GetRevision()) + // perform some configuration on the remote CAs + configureCAsForTrustedCluster(tc, remoteCAs) - revision, err := a.Services.UpdateTrustedCluster(ctx, tc, cas) + // atomically create trusted cluster and cert authorities + revision, err := a.Services.CreateTrustedCluster(ctx, tc, remoteCAs) if err != nil { return nil, trace.Wrap(err) } @@ -119,20 +153,28 @@ func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedClust return tc, nil } -func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (types.TrustedCluster, error) { - remoteCAs, err := a.establishTrust(ctx, tc, validateName) +// updateTrustedCluster updates the Trusted Cluster. +func (a *Server) updateTrustedCluster(ctx context.Context, tc, existingCluster types.TrustedCluster) (types.TrustedCluster, error) { + if err := existingCluster.CanChangeStateTo(tc); err != nil { + return nil, trace.Wrap(err) + } + + // always load all current CAs. even if we aren't changing them as part of + // this function, Services.UpdateTrustedCluster will only correctly activate/deactivate + // CAs that are explicitly passed to it. note that we pass in the existing cluster state + // since where CAs are stored depends on the current state of the trusted cluster. + cas, err := a.getCAsForTrustedCluster(ctx, existingCluster) if err != nil { return nil, trace.Wrap(err) } - // Force name to the name of the trusted cluster. - tc.SetName(remoteCAs[0].GetClusterName()) + // propagate any role map changes to cas + configureCAsForTrustedCluster(tc, cas) - // perform some configuration on the remote CAs - configureCAsForTrustedCluster(tc, remoteCAs) + // state transition is valid, set the expected revision + tc.SetRevision(existingCluster.GetRevision()) - // atomically create trusted cluster and cert authorities - revision, err := a.Services.CreateTrustedCluster(ctx, tc, remoteCAs) + revision, err := a.Services.UpdateTrustedCluster(ctx, tc, cas) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index 7de239088552b..37df3fa7c2a02 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -585,3 +585,157 @@ func TestUpsertTrustedCluster(t *testing.T) { require.NoError(t, err) }) } + +func TestUpdateTrustedCluster(t *testing.T) { + ctx := context.Background() + testAuth, err := NewTestAuthServer(TestAuthServerConfig{ + ClusterName: "localcluster", + Dir: t.TempDir(), + }) + require.NoError(t, err) + a := testAuth.AuthServer + + const validToken = "validtoken" + tks, err := types.NewStaticTokens(types.StaticTokensSpecV2{ + StaticTokens: []types.ProvisionTokenV1{{ + Roles: []types.SystemRole{types.RoleTrustedCluster}, + Token: validToken, + }}, + }) + require.NoError(t, err) + + err = a.SetStaticTokens(tks) + require.NoError(t, err) + + role, err := types.NewRole("test-role", types.RoleSpecV6{}) + require.NoError(t, err) + _, err = a.UpsertRole(ctx, role) + require.NoError(t, err) + + trustedClusterSpec := types.TrustedClusterSpecV2{ + Enabled: true, + RoleMap: []types.RoleMapping{ + { + Local: []string{"test-role"}, + Remote: "someRole", + }, + }, + ProxyAddress: "localhost", + } + + trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) + require.NoError(t, err) + + ca := suite.NewTestCA(types.UserCA, "trustedcluster") + + configureCAsForTrustedCluster(trustedCluster, []types.CertAuthority{ca}) + + _, err = a.Services.CreateTrustedCluster(ctx, trustedCluster, []types.CertAuthority{ca}) + require.NoError(t, err) + + err = a.createReverseTunnel(ctx, trustedCluster) + require.NoError(t, err) + + t.Run("Invalid role change", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", + types.TrustedClusterSpecV2{ + Enabled: true, + RoleMap: []types.RoleMapping{ + { + Local: []string{"someNewRole"}, + Remote: "someRole", + }, + }, + ProxyAddress: "localhost", + }) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.ErrorContains(t, err, "someNewRole") + }) + t.Run("Change role map of existing enabled trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", + types.TrustedClusterSpecV2{ + Enabled: true, + RoleMap: []types.RoleMapping{ + { + Local: []string{constants.DefaultImplicitRole}, + Remote: "someRole", + }, + }, + ProxyAddress: "localhost", + }) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) + t.Run("Disable existing trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", + types.TrustedClusterSpecV2{ + Enabled: false, + RoleMap: []types.RoleMapping{ + { + Local: []string{constants.DefaultImplicitRole}, + Remote: "someRole", + }, + }, + ProxyAddress: "localhost", + }) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) + t.Run("Change role map of existing disabled trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", + types.TrustedClusterSpecV2{ + Enabled: false, + RoleMap: []types.RoleMapping{ + { + Local: []string{constants.DefaultImplicitRole}, + Remote: "someOtherRole", + }, + }, + ProxyAddress: "localhost", + }) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) + t.Run("Enable existing trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", + types.TrustedClusterSpecV2{ + Enabled: true, + RoleMap: []types.RoleMapping{ + { + Local: []string{constants.DefaultImplicitRole}, + Remote: "someOtherRole", + }, + }, + ProxyAddress: "localhost", + }) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) + t.Run("Cloud prohibits being a leaf cluster", func(t *testing.T) { + modules.SetTestModules(t, &modules.TestModules{ + TestFeatures: modules.Features{Cloud: true}, + }) + + tc, err := types.NewTrustedCluster("test", types.TrustedClusterSpecV2{ + RoleMap: []types.RoleMapping{ + {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, + }, + }) + require.NoError(t, err, "creating trusted cluster resource") + + server := ServerWithRoles{authServer: a} + _, err = server.UpdateTrustedClusterV2(ctx, tc) + require.True(t, trace.IsNotImplemented(err), "UpdateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + }) + t.Run("Upsert unmodified trusted cluster", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.NoError(t, err) + }) +} From d3118e2de2767ee87589e36988e7aa532edef4b1 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Tue, 10 Dec 2024 13:48:43 -0800 Subject: [PATCH 11/19] Address feedback --- lib/auth/auth_with_roles.go | 9 ++++++--- tool/tctl/common/resource_command.go | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index fc645a6033acd..89a9c43b79bb4 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4975,7 +4975,8 @@ func (a *ServerWithRoles) UpsertTrustedClusterV2(ctx context.Context, tc types.T return nil, trace.Wrap(err) } - return a.authServer.UpsertTrustedClusterV2(ctx, tc) + upserted, err := a.authServer.UpsertTrustedClusterV2(ctx, tc) + return upserted, trace.Wrap(err) } // CreateTrustedClusterV2 creates a Trusted Cluster. @@ -4993,7 +4994,8 @@ func (a *ServerWithRoles) CreateTrustedClusterV2(ctx context.Context, tc types.T return nil, trace.Wrap(err) } - return a.authServer.CreateTrustedClusterV2(ctx, tc) + created, err := a.authServer.CreateTrustedClusterV2(ctx, tc) + return created, trace.Wrap(err) } // UpdateTrustedClusterV2 updates a Trusted Cluster. @@ -5011,7 +5013,8 @@ func (a *ServerWithRoles) UpdateTrustedClusterV2(ctx context.Context, tc types.T return nil, trace.Wrap(err) } - return a.authServer.UpdateTrustedClusterV2(ctx, tc) + updated, err := a.authServer.UpdateTrustedClusterV2(ctx, tc) + return updated, trace.Wrap(err) } func (a *ServerWithRoles) ValidateTrustedCluster(ctx context.Context, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { diff --git a/tool/tctl/common/resource_command.go b/tool/tctl/common/resource_command.go index 5d93425a53fbe..2e2b31340dc4e 100644 --- a/tool/tctl/common/resource_command.go +++ b/tool/tctl/common/resource_command.go @@ -397,6 +397,7 @@ func (rc *ResourceCommand) createTrustedCluster(ctx context.Context, client *aut //nolint:staticcheck // SA1019. UpsertTrustedCluster is deprecated but will // continue being supported for tctl clients. + // TODO(bernardjkim) consider using UpsertTrustedClusterV2 in VX.0.0 out, err := client.UpsertTrustedCluster(ctx, tc) if err != nil { // If force is used and UpsertTrustedCluster returns trace.AlreadyExists, From aa82d2238542ee22ee3251be0e312fa6b38ee5e9 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Tue, 10 Dec 2024 13:56:28 -0800 Subject: [PATCH 12/19] Minor fixes --- integration/integration_test.go | 6 +++--- lib/auth/trustedcluster_test.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/integration/integration_test.go b/integration/integration_test.go index a1e6e7cb44c00..54ad9486e13d5 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -197,7 +197,7 @@ func TestIntegrations(t *testing.T) { t.Run("TrustedClustersRoleMapChanges", suite.bind(testTrustedClustersRoleMapChanges)) t.Run("TrustedClustersWithLabels", suite.bind(testTrustedClustersWithLabels)) t.Run("TrustedClustersSkipNameValidation", suite.bind(testTrustedClustersSkipNameValidation)) - t.Run("CreateAndUpdateTrustedClusters", suite.bind(testCreateAndUpdateTrustedCluster)) + t.Run("CreateAndUpdateTrustedClusters", suite.bind(testCreateAndUpdateTrustedClusters)) t.Run("TrustedTunnelNode", suite.bind(testTrustedTunnelNode)) t.Run("TwoClustersProxy", suite.bind(testTwoClustersProxy)) t.Run("TwoClustersTunnel", suite.bind(testTwoClustersTunnel)) @@ -2980,9 +2980,9 @@ func testMultiplexingTrustedClusters(t *testing.T, suite *integrationTestSuite) trustedClusters(t, suite, trustedClusterTest{multiplex: true}) } -// TestCreateAndUpdateTrustedCluster tests the basic create and update +// TestCreateAndUpdateTrustedClusters tests the basic create and update // operations for a trusted cluster. -func testCreateAndUpdateTrustedCluster(t *testing.T, suite *integrationTestSuite) { +func testCreateAndUpdateTrustedClusters(t *testing.T, suite *integrationTestSuite) { tr := utils.NewTracer(utils.ThisFunction()).Start() defer tr.Stop() diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index 37df3fa7c2a02..b5bd590505a9e 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -726,7 +726,7 @@ func TestUpdateTrustedCluster(t *testing.T) { {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, }, }) - require.NoError(t, err, "creating trusted cluster resource") + require.NoError(t, err, "updating trusted cluster resource") server := ServerWithRoles{authServer: a} _, err = server.UpdateTrustedClusterV2(ctx, tc) From 3036745880b9a5f7bf589be96c5ce83133b42b90 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Wed, 11 Dec 2024 15:21:29 -0800 Subject: [PATCH 13/19] Move V2 RPCs to the trust service --- api/client/client.go | 13 +- api/client/proto/authservice.pb.go | 2032 ++++++++--------- .../go/teleport/trust/v1/trust_service.pb.go | 627 +++-- .../trust/v1/trust_service_grpc.pb.go | 120 + .../legacy/client/proto/authservice.proto | 9 +- .../teleport/trust/v1/trust_service.proto | 25 + lib/auth/grpcserver.go | 60 - lib/auth/trust/trustv1/service.go | 7 + lib/auth/trust/trustv1/service_test.go | 12 + lib/auth/trust/trustv1/trustedcluster.go | 124 + 10 files changed, 1662 insertions(+), 1367 deletions(-) create mode 100644 lib/auth/trust/trustv1/trustedcluster.go diff --git a/api/client/client.go b/api/client/client.go index 5e5a5cc6dd531..e4d4e553602fe 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2305,12 +2305,9 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - resp, err := c.grpc.UpsertTrustedClusterV2(ctx, trustedClusterV2) + req := &trustpb.UpsertTrustedClusterV2Request{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().UpsertTrustedClusterV2(ctx, req) if err != nil { - if trace.IsNotImplemented(err) { - return nil, trace.Wrap(err, "control plane does not support this operation, "+ - "consider upgrading your control plane") - } return nil, trace.Wrap(err) } return resp, nil @@ -2322,7 +2319,8 @@ func (c *Client) CreateTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - resp, err := c.grpc.CreateTrustedClusterV2(ctx, trustedClusterV2) + req := &trustpb.CreateTrustedClusterV2Request{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().CreateTrustedClusterV2(ctx, req) if err != nil { return nil, trace.Wrap(err) } @@ -2335,7 +2333,8 @@ func (c *Client) UpdateTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - resp, err := c.grpc.UpdateTrustedClusterV2(ctx, trustedClusterV2) + req := &trustpb.UpdateTrustedClusterV2Request{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().UpdateTrustedClusterV2(ctx, req) if err != nil { return nil, trace.Wrap(err) } diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 2a5341afd78f9..638af537e0799 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -16108,114 +16108,114 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 15450 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x59, 0x6c, 0x5c, 0x59, - 0x7a, 0x18, 0xac, 0xe2, 0xce, 0x8f, 0x8b, 0x4a, 0x87, 0xa4, 0x58, 0xa2, 0x96, 0x92, 0xae, 0x5a, - 0xdd, 0x6a, 0x4d, 0x8f, 0x16, 0xf6, 0x32, 0xbd, 0x77, 0x57, 0x91, 0x94, 0x48, 0x89, 0x5b, 0xdf, - 0x22, 0xa9, 0xde, 0x3c, 0x35, 0x97, 0x55, 0x47, 0xe4, 0xb5, 0x8a, 0xf7, 0xd6, 0xdc, 0x7b, 0x4b, - 0x6a, 0x8d, 0xff, 0xf1, 0x0f, 0xdb, 0x59, 0x1c, 0x04, 0x49, 0x6c, 0x20, 0x0e, 0x1c, 0x24, 0x80, - 0x13, 0xc0, 0x01, 0x8c, 0x00, 0x01, 0xfc, 0x12, 0xf8, 0xc9, 0x0f, 0x79, 0xca, 0xc4, 0x40, 0x90, - 0x18, 0xb6, 0x5f, 0x02, 0x84, 0x4e, 0x06, 0xf0, 0x0b, 0x91, 0x3c, 0x18, 0x41, 0x02, 0x64, 0x02, - 0x03, 0xc1, 0xf9, 0xce, 0x72, 0xcf, 0xb9, 0x4b, 0x15, 0x29, 0xa9, 0xc7, 0x79, 0x91, 0x58, 0xdf, - 0x76, 0xd6, 0x7b, 0xce, 0xf7, 0x7d, 0xe7, 0x3b, 0xdf, 0x81, 0x9b, 0x11, 0x6d, 0xd1, 0xb6, 0x1f, - 0x44, 0xb7, 0x5a, 0x74, 0xcf, 0x69, 0x3c, 0xbb, 0xd5, 0x68, 0xb9, 0xd4, 0x8b, 0x6e, 0xb5, 0x03, - 0x3f, 0xf2, 0x6f, 0x39, 0x9d, 0x68, 0x3f, 0xa4, 0xc1, 0x13, 0xb7, 0x41, 0x6f, 0x22, 0x84, 0x0c, - 0xe2, 0x7f, 0x73, 0xd3, 0x7b, 0xfe, 0x9e, 0xcf, 0x69, 0xd8, 0x5f, 0x1c, 0x39, 0x77, 0x7e, 0xcf, - 0xf7, 0xf7, 0x5a, 0x94, 0x33, 0xef, 0x76, 0x1e, 0xdd, 0xa2, 0x07, 0xed, 0xe8, 0x99, 0x40, 0x96, - 0x93, 0xc8, 0xc8, 0x3d, 0xa0, 0x61, 0xe4, 0x1c, 0xb4, 0x05, 0xc1, 0xeb, 0xaa, 0x2a, 0x4e, 0x14, - 0x31, 0x4c, 0xe4, 0xfa, 0xde, 0xad, 0x27, 0x77, 0xf4, 0x9f, 0x82, 0xf4, 0x7a, 0xd7, 0x5a, 0x37, - 0x68, 0x10, 0x85, 0xc7, 0xa2, 0xa4, 0x4f, 0xa8, 0x17, 0xa5, 0x8a, 0x17, 0x94, 0xd1, 0xb3, 0x36, - 0x0d, 0x39, 0x89, 0xfc, 0x4f, 0x90, 0x5e, 0xc9, 0x26, 0xc5, 0x7f, 0x05, 0xc9, 0x77, 0xb3, 0x49, - 0x9e, 0xd2, 0x5d, 0xd6, 0xa7, 0x9e, 0xfa, 0xa3, 0x07, 0x79, 0xe0, 0xb4, 0xdb, 0x34, 0x88, 0xff, - 0x10, 0xe4, 0xe7, 0x14, 0xf9, 0xc1, 0x23, 0x87, 0x75, 0xd1, 0xc1, 0x23, 0x27, 0xd5, 0x8c, 0x4e, - 0xe8, 0xec, 0x51, 0x51, 0xfd, 0x27, 0x77, 0xf4, 0x9f, 0x9c, 0xd4, 0xfa, 0x9d, 0x02, 0x0c, 0x3e, - 0x74, 0xa2, 0xc6, 0x3e, 0xf9, 0x04, 0x06, 0x1f, 0xb8, 0x5e, 0x33, 0x2c, 0x15, 0x2e, 0xf7, 0x5f, - 0x1f, 0x9b, 0x2f, 0xde, 0xe4, 0x4d, 0x41, 0x24, 0x43, 0x54, 0x67, 0x7f, 0x72, 0x58, 0x3e, 0x75, - 0x74, 0x58, 0x3e, 0xfd, 0x98, 0x91, 0xbd, 0xe1, 0x1f, 0xb8, 0x11, 0x8e, 0xad, 0xcd, 0xf9, 0xc8, - 0x36, 0x4c, 0x55, 0x5a, 0x2d, 0xff, 0xe9, 0xa6, 0x13, 0x44, 0xae, 0xd3, 0xaa, 0x75, 0x1a, 0x0d, - 0x1a, 0x86, 0xa5, 0xbe, 0xcb, 0x85, 0xeb, 0x23, 0xd5, 0xab, 0x47, 0x87, 0xe5, 0xb2, 0xc3, 0xd0, - 0xf5, 0x36, 0xc7, 0xd7, 0x43, 0x4e, 0xa0, 0x09, 0xca, 0xe2, 0xb7, 0xfe, 0x68, 0x08, 0x8a, 0xcb, - 0x7e, 0x18, 0x2d, 0xb0, 0x11, 0xb5, 0xe9, 0x0f, 0x3b, 0x34, 0x8c, 0xc8, 0x55, 0x18, 0x62, 0xb0, - 0x95, 0xc5, 0x52, 0xe1, 0x72, 0xe1, 0xfa, 0x68, 0x75, 0xec, 0xe8, 0xb0, 0x3c, 0xbc, 0xef, 0x87, - 0x51, 0xdd, 0x6d, 0xda, 0x02, 0x45, 0x5e, 0x87, 0x91, 0x75, 0xbf, 0x49, 0xd7, 0x9d, 0x03, 0x8a, - 0xb5, 0x18, 0xad, 0x4e, 0x1c, 0x1d, 0x96, 0x47, 0x3d, 0xbf, 0x49, 0xeb, 0x9e, 0x73, 0x40, 0x6d, - 0x85, 0x26, 0x3b, 0x30, 0x60, 0xfb, 0x2d, 0x5a, 0xea, 0x47, 0xb2, 0xea, 0xd1, 0x61, 0x79, 0x20, - 0xf0, 0x5b, 0xf4, 0x67, 0x87, 0xe5, 0x77, 0xf6, 0xdc, 0x68, 0xbf, 0xb3, 0x7b, 0xb3, 0xe1, 0x1f, - 0xdc, 0xda, 0x0b, 0x9c, 0x27, 0x2e, 0x9f, 0x84, 0x4e, 0xeb, 0x56, 0x3c, 0x55, 0xdb, 0xae, 0x18, - 0xf7, 0xda, 0xb3, 0x30, 0xa2, 0x07, 0x4c, 0x92, 0x8d, 0xf2, 0xc8, 0x43, 0x98, 0xae, 0x34, 0x9b, - 0x2e, 0xe7, 0xd8, 0x0c, 0x5c, 0xaf, 0xe1, 0xb6, 0x9d, 0x56, 0x58, 0x1a, 0xb8, 0xdc, 0x7f, 0x7d, - 0x54, 0x74, 0x8a, 0xc2, 0xd7, 0xdb, 0x8a, 0x40, 0xeb, 0x94, 0x4c, 0x01, 0xe4, 0x4d, 0x18, 0x59, - 0x5c, 0xaf, 0xb1, 0xba, 0x87, 0xa5, 0x41, 0x14, 0x36, 0x7b, 0x74, 0x58, 0x9e, 0x6a, 0x7a, 0x21, - 0x36, 0x4d, 0x17, 0xa0, 0x08, 0xc9, 0x3b, 0x30, 0xbe, 0xd9, 0xd9, 0x6d, 0xb9, 0x8d, 0xad, 0xd5, - 0xda, 0x03, 0xfa, 0xac, 0x34, 0x74, 0xb9, 0x70, 0x7d, 0xbc, 0x4a, 0x8e, 0x0e, 0xcb, 0x93, 0x6d, - 0x84, 0xd7, 0xa3, 0x56, 0x58, 0x7f, 0x4c, 0x9f, 0xd9, 0x06, 0x5d, 0xcc, 0x57, 0xab, 0x2d, 0x33, - 0xbe, 0xe1, 0x14, 0x5f, 0x18, 0xee, 0xeb, 0x7c, 0x9c, 0x8e, 0xdc, 0x02, 0xb0, 0xe9, 0x81, 0x1f, - 0xd1, 0x4a, 0xb3, 0x19, 0x94, 0x46, 0xb0, 0x6f, 0x4f, 0x1f, 0x1d, 0x96, 0xc7, 0x02, 0x84, 0xd6, - 0x9d, 0x66, 0x33, 0xb0, 0x35, 0x12, 0xb2, 0x00, 0x23, 0xb6, 0xcf, 0x3b, 0xb8, 0x34, 0x7a, 0xb9, - 0x70, 0x7d, 0x6c, 0xfe, 0xb4, 0x98, 0x86, 0x12, 0x5c, 0x3d, 0x7b, 0x74, 0x58, 0x26, 0x81, 0xf8, - 0xa5, 0xb7, 0x52, 0x52, 0x90, 0x32, 0x0c, 0xaf, 0xfb, 0x0b, 0x4e, 0x63, 0x9f, 0x96, 0x00, 0xe7, - 0xde, 0xe0, 0xd1, 0x61, 0xb9, 0xf0, 0x5d, 0x5b, 0x42, 0xc9, 0x13, 0x18, 0x8b, 0x07, 0x2a, 0x2c, - 0x8d, 0x61, 0xf7, 0x6d, 0x1d, 0x1d, 0x96, 0xcf, 0x86, 0x08, 0xae, 0xb3, 0xa1, 0xd7, 0x7a, 0xf0, - 0x05, 0x66, 0x81, 0x5e, 0x10, 0xf9, 0x1a, 0x66, 0xe2, 0x9f, 0x95, 0x30, 0xa4, 0x01, 0x93, 0xb1, - 0xb2, 0x58, 0x9a, 0xc0, 0x9e, 0x79, 0xf5, 0xe8, 0xb0, 0x6c, 0x69, 0x35, 0xa8, 0x3b, 0x92, 0xa4, - 0xee, 0x36, 0xb5, 0x96, 0x66, 0x0b, 0xb9, 0x3f, 0x30, 0x32, 0x5e, 0x9c, 0xb0, 0x2f, 0x6e, 0x7b, - 0x61, 0xe4, 0xec, 0xb6, 0x68, 0x26, 0x91, 0xf5, 0x57, 0x05, 0x20, 0x1b, 0x6d, 0xea, 0xd5, 0x6a, - 0xcb, 0xec, 0x7b, 0x92, 0x9f, 0xd3, 0x1b, 0x30, 0xca, 0x07, 0x8e, 0x8d, 0x6e, 0x1f, 0x8e, 0xee, - 0xe4, 0xd1, 0x61, 0x19, 0xc4, 0xe8, 0xb2, 0x91, 0x8d, 0x09, 0xc8, 0x35, 0xe8, 0xdf, 0xda, 0x5a, - 0xc5, 0x6f, 0xa5, 0xbf, 0x3a, 0x75, 0x74, 0x58, 0xee, 0x8f, 0xa2, 0xd6, 0xcf, 0x0e, 0xcb, 0x23, - 0x8b, 0x9d, 0x00, 0xbb, 0xc5, 0x66, 0x78, 0x72, 0x0d, 0x86, 0x17, 0x5a, 0x9d, 0x30, 0xa2, 0x41, - 0x69, 0x20, 0xfe, 0x48, 0x1b, 0x1c, 0x64, 0x4b, 0x1c, 0xf9, 0x0e, 0x0c, 0x6c, 0x87, 0x34, 0x28, - 0x0d, 0xe2, 0x78, 0x4f, 0x88, 0xf1, 0x66, 0xa0, 0x9d, 0xf9, 0xea, 0x08, 0xfb, 0x12, 0x3b, 0x21, - 0x0d, 0x6c, 0x24, 0x22, 0x37, 0x61, 0x90, 0x0f, 0xda, 0x10, 0x2e, 0x52, 0x13, 0x6a, 0x76, 0xb4, - 0xe8, 0xce, 0x3b, 0xd5, 0xd1, 0xa3, 0xc3, 0xf2, 0x20, 0x0e, 0x9e, 0xcd, 0xc9, 0xee, 0x0f, 0x8c, - 0x14, 0x8a, 0x7d, 0xf6, 0x08, 0xe3, 0x65, 0x9f, 0x85, 0xf5, 0x1d, 0x18, 0xd3, 0x9a, 0x4f, 0x2e, - 0xc0, 0x00, 0xfb, 0x1f, 0x17, 0x91, 0x71, 0x5e, 0x18, 0xdb, 0x38, 0x6c, 0x84, 0x5a, 0xff, 0x6c, - 0x0a, 0x8a, 0x8c, 0xd3, 0x58, 0x79, 0x6e, 0xea, 0x5d, 0xc5, 0xf9, 0x8a, 0x66, 0x57, 0x95, 0x0a, - 0x7a, 0x67, 0x5d, 0x07, 0x55, 0xba, 0x58, 0x84, 0xc6, 0x8f, 0x0e, 0xcb, 0x23, 0x1d, 0x01, 0x8b, - 0xeb, 0x46, 0x6a, 0x30, 0xbc, 0xf4, 0x4d, 0xdb, 0x0d, 0x68, 0x88, 0x5d, 0x3b, 0x36, 0x3f, 0x77, - 0x93, 0x6f, 0x97, 0x37, 0xe5, 0x76, 0x79, 0x73, 0x4b, 0x6e, 0x97, 0xd5, 0x8b, 0x62, 0x31, 0x3e, - 0x43, 0x39, 0x4b, 0x3c, 0x3f, 0x7e, 0xe3, 0xcf, 0xcb, 0x05, 0x5b, 0x4a, 0x22, 0x6f, 0xc0, 0xd0, - 0x5d, 0x3f, 0x38, 0x70, 0x22, 0x31, 0x06, 0xd3, 0x47, 0x87, 0xe5, 0xe2, 0x23, 0x84, 0x68, 0x53, - 0x4a, 0xd0, 0x90, 0xbb, 0x30, 0x69, 0xfb, 0x9d, 0x88, 0x6e, 0xf9, 0x72, 0xe4, 0x06, 0x91, 0xeb, - 0xd2, 0xd1, 0x61, 0x79, 0x2e, 0x60, 0x98, 0x7a, 0xe4, 0xd7, 0xc5, 0x10, 0x6a, 0xfc, 0x09, 0x2e, - 0xb2, 0x04, 0x93, 0x15, 0x5c, 0xbd, 0x45, 0xaf, 0xf1, 0xf1, 0x1a, 0xad, 0x5e, 0x3c, 0x3a, 0x2c, - 0x9f, 0x73, 0x10, 0x53, 0x0f, 0x04, 0x4a, 0x17, 0x63, 0x32, 0x91, 0x75, 0x38, 0xf3, 0xa0, 0xb3, - 0x4b, 0x03, 0x8f, 0x46, 0x34, 0x94, 0x35, 0x1a, 0xc6, 0x1a, 0x5d, 0x3e, 0x3a, 0x2c, 0x5f, 0x78, - 0xac, 0x90, 0x19, 0x75, 0x4a, 0xb3, 0x12, 0x0a, 0xa7, 0x45, 0x45, 0x17, 0x9d, 0xc8, 0xd9, 0x75, - 0x42, 0x8a, 0x8b, 0xd2, 0xd8, 0xfc, 0x59, 0xde, 0xc5, 0x37, 0x13, 0xd8, 0xea, 0x55, 0xd1, 0xcb, - 0xe7, 0x55, 0xdb, 0x9b, 0x02, 0xa5, 0x15, 0x94, 0x94, 0xc9, 0xd6, 0x66, 0xb5, 0xef, 0x8c, 0x62, - 0x6d, 0x71, 0x6d, 0x56, 0xfb, 0x8e, 0xbe, 0x6a, 0xa9, 0x1d, 0x68, 0x15, 0x06, 0xb7, 0xd9, 0xee, - 0x8c, 0x6b, 0xd6, 0xe4, 0xfc, 0x15, 0x51, 0xa3, 0xe4, 0xfc, 0xbb, 0xc9, 0x7e, 0x20, 0x21, 0x7e, - 0x79, 0xa7, 0x71, 0x47, 0xd7, 0xf7, 0x62, 0xc4, 0x91, 0xcf, 0x00, 0x44, 0xad, 0x2a, 0xed, 0x76, - 0x69, 0x0c, 0x1b, 0x79, 0xc6, 0x6c, 0x64, 0xa5, 0xdd, 0xae, 0x5e, 0x12, 0xed, 0x3b, 0xab, 0xda, - 0xe7, 0xb4, 0xdb, 0x9a, 0x34, 0x4d, 0x08, 0xf9, 0x04, 0xc6, 0x71, 0x49, 0x93, 0x23, 0x3a, 0x8e, - 0x23, 0x7a, 0xfe, 0xe8, 0xb0, 0x3c, 0x8b, 0xab, 0x55, 0xc6, 0x78, 0x1a, 0x0c, 0xe4, 0x97, 0x61, - 0x46, 0x88, 0x7b, 0xe8, 0x7a, 0x4d, 0xff, 0x69, 0xb8, 0x48, 0xc3, 0xc7, 0x91, 0xdf, 0xc6, 0xe5, - 0x6f, 0x6c, 0xfe, 0x82, 0x59, 0x3d, 0x93, 0xa6, 0x7a, 0x43, 0xd4, 0xd4, 0x52, 0x35, 0x7d, 0xca, - 0x09, 0xea, 0x4d, 0x4e, 0xa1, 0x2f, 0x90, 0x99, 0x22, 0xc8, 0x0a, 0x9c, 0xde, 0x0e, 0xa9, 0xd1, - 0x86, 0x49, 0xdc, 0x1f, 0xca, 0x6c, 0x84, 0x3b, 0x21, 0xad, 0xe7, 0xb5, 0x23, 0xc9, 0x47, 0x6c, - 0x20, 0x8b, 0x81, 0xdf, 0x4e, 0xcc, 0xf1, 0xd3, 0xd8, 0x23, 0xd6, 0xd1, 0x61, 0xf9, 0x52, 0x33, - 0xf0, 0xdb, 0xf5, 0xfc, 0x89, 0x9e, 0xc1, 0x4d, 0xbe, 0x0f, 0x67, 0x17, 0x7c, 0xcf, 0xa3, 0x0d, - 0xb6, 0x82, 0x2e, 0xba, 0xce, 0x9e, 0xe7, 0x87, 0x91, 0xdb, 0x58, 0x59, 0x2c, 0x15, 0xe3, 0xed, - 0xa1, 0xa1, 0x28, 0xea, 0x4d, 0x45, 0x62, 0x6e, 0x0f, 0x39, 0x52, 0xc8, 0x57, 0x30, 0x21, 0xca, - 0xa2, 0x01, 0x4e, 0xcd, 0x33, 0xdd, 0x27, 0x9a, 0x22, 0xe6, 0x1b, 0x7d, 0x20, 0x7f, 0x72, 0xd5, - 0xc9, 0x94, 0x45, 0xbe, 0x86, 0xb1, 0xb5, 0xbb, 0x15, 0x9b, 0x86, 0x6d, 0xdf, 0x0b, 0x69, 0x89, - 0xe0, 0x88, 0x5e, 0x12, 0xa2, 0xd7, 0xee, 0x56, 0x2a, 0x9d, 0x68, 0x9f, 0x7a, 0x91, 0xdb, 0x70, - 0x22, 0x2a, 0xa9, 0xaa, 0x73, 0x6c, 0xe6, 0x1d, 0x3c, 0x72, 0xea, 0x81, 0x80, 0x68, 0xad, 0xd0, - 0xc5, 0x91, 0x39, 0x18, 0xa9, 0xd5, 0x96, 0x57, 0xfd, 0x3d, 0xd7, 0x2b, 0x4d, 0xb1, 0xce, 0xb0, - 0xd5, 0x6f, 0xf2, 0x08, 0x66, 0x34, 0xdb, 0xa0, 0xce, 0xfe, 0xa7, 0x07, 0xd4, 0x8b, 0x4a, 0xd3, - 0x58, 0x87, 0xef, 0x2a, 0xe3, 0xe6, 0xa6, 0x6e, 0x42, 0x3c, 0xb9, 0x73, 0xb3, 0x12, 0xff, 0xac, - 0x49, 0xa6, 0x6a, 0x5f, 0xa9, 0x60, 0x4f, 0x3b, 0x19, 0x18, 0xb2, 0x05, 0xc3, 0x9b, 0x9d, 0xa0, - 0xed, 0x87, 0xb4, 0x34, 0x83, 0x1d, 0x77, 0xb5, 0xdb, 0x17, 0x2a, 0x48, 0xab, 0x33, 0x6c, 0x89, - 0x6e, 0xf3, 0x1f, 0x5a, 0xeb, 0xa4, 0x28, 0xf2, 0x29, 0x8c, 0xd7, 0x6a, 0xcb, 0xf1, 0x86, 0x72, - 0x16, 0x37, 0x94, 0x0b, 0x47, 0x87, 0xe5, 0x12, 0x53, 0xa9, 0xe2, 0x4d, 0x45, 0xff, 0xaa, 0x74, - 0x0e, 0x26, 0x61, 0x6b, 0xb5, 0x16, 0x4b, 0x98, 0x8d, 0x25, 0x30, 0x65, 0x2e, 0x5b, 0x82, 0xce, - 0x41, 0xfe, 0x55, 0x01, 0x2e, 0xeb, 0x22, 0xb3, 0x3a, 0xa6, 0x74, 0xee, 0x79, 0x7a, 0x73, 0xfe, - 0xe8, 0xb0, 0x7c, 0xd3, 0x6c, 0x47, 0x3d, 0x73, 0xb0, 0xb4, 0xba, 0xf5, 0xac, 0x0a, 0xd6, 0x57, - 0x6f, 0x40, 0x66, 0x7d, 0xe7, 0x9e, 0xbb, 0xbe, 0x66, 0xaf, 0xf5, 0xae, 0x6f, 0xaf, 0xaa, 0x58, - 0x9f, 0xc3, 0xa8, 0x5a, 0xb4, 0xc9, 0x30, 0xf4, 0x57, 0x5a, 0xad, 0xe2, 0x29, 0xf6, 0x47, 0xad, - 0xb6, 0x5c, 0x2c, 0x90, 0x49, 0x80, 0x78, 0xa7, 0x2a, 0xf6, 0x91, 0x71, 0x18, 0x91, 0x3b, 0x49, - 0xb1, 0x1f, 0xe9, 0xdb, 0xed, 0xe2, 0x00, 0x21, 0x30, 0x69, 0xae, 0x67, 0xc5, 0x41, 0xeb, 0x37, + // 15421 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x59, 0x6c, 0x5c, 0xc9, + 0x7a, 0x18, 0xac, 0xe6, 0xce, 0x8f, 0x8b, 0x5a, 0x45, 0x52, 0x6c, 0x51, 0x4b, 0x4b, 0x47, 0xa3, + 0x19, 0x8d, 0xee, 0x5c, 0x2d, 0x9c, 0xe5, 0xce, 0x3e, 0xd3, 0x4d, 0x52, 0x22, 0x25, 0x6e, 0x73, + 0x9a, 0xa4, 0x66, 0xf3, 0xed, 0x7b, 0xd8, 0x5d, 0x22, 0x8f, 0xd5, 0x3c, 0xa7, 0xef, 0x39, 0xa7, + 0xa5, 0xd1, 0xf5, 0x7f, 0xfd, 0xc3, 0x76, 0x16, 0x07, 0x41, 0x12, 0x1b, 0x88, 0x03, 0x27, 0x79, + 0x70, 0x02, 0x38, 0x40, 0x10, 0x20, 0x80, 0x5f, 0x02, 0x3f, 0xf9, 0x21, 0x40, 0x80, 0xdc, 0x18, + 0x08, 0x12, 0xc3, 0xf6, 0x4b, 0x80, 0xd0, 0xc9, 0x05, 0xfc, 0x42, 0x24, 0x0f, 0x46, 0x90, 0x00, + 0xb9, 0x81, 0x81, 0xa0, 0xbe, 0x5a, 0x4e, 0xd5, 0x59, 0xba, 0x49, 0x49, 0x73, 0x9d, 0x17, 0x89, + 0xfd, 0x6d, 0x55, 0xf5, 0x55, 0x9d, 0xaa, 0xfa, 0xbe, 0xfa, 0xea, 0x2b, 0xb8, 0x19, 0xd1, 0x16, + 0x6d, 0xfb, 0x41, 0x74, 0xab, 0x45, 0xf7, 0x9c, 0xc6, 0xb3, 0x5b, 0x8d, 0x96, 0x4b, 0xbd, 0xe8, + 0x56, 0x3b, 0xf0, 0x23, 0xff, 0x96, 0xd3, 0x89, 0xf6, 0x43, 0x1a, 0x3c, 0x71, 0x1b, 0xf4, 0x26, + 0x42, 0xc8, 0x20, 0xfe, 0x37, 0x37, 0xbd, 0xe7, 0xef, 0xf9, 0x9c, 0x86, 0xfd, 0xc5, 0x91, 0x73, + 0xe7, 0xf7, 0x7c, 0x7f, 0xaf, 0x45, 0x39, 0xf3, 0x6e, 0xe7, 0xd1, 0x2d, 0x7a, 0xd0, 0x8e, 0x9e, + 0x09, 0x64, 0x39, 0x89, 0x8c, 0xdc, 0x03, 0x1a, 0x46, 0xce, 0x41, 0x5b, 0x10, 0xbc, 0xae, 0xaa, + 0xe2, 0x44, 0x11, 0xc3, 0x44, 0xae, 0xef, 0xdd, 0x7a, 0x72, 0x47, 0xff, 0x29, 0x48, 0xaf, 0x77, + 0xad, 0x75, 0x83, 0x06, 0x51, 0x78, 0x2c, 0x4a, 0xfa, 0x84, 0x7a, 0x51, 0xaa, 0x78, 0x41, 0x19, + 0x3d, 0x6b, 0xd3, 0x90, 0x93, 0xc8, 0xff, 0x04, 0xe9, 0x95, 0x6c, 0x52, 0xfc, 0x57, 0x90, 0x7c, + 0x37, 0x9b, 0xe4, 0x29, 0xdd, 0x65, 0x3a, 0xf5, 0xd4, 0x1f, 0x3d, 0xc8, 0x03, 0xa7, 0xdd, 0xa6, + 0x41, 0xfc, 0x87, 0x20, 0x3f, 0xa7, 0xc8, 0x0f, 0x1e, 0x39, 0x4c, 0x45, 0x07, 0x8f, 0x9c, 0x54, + 0x33, 0x3a, 0xa1, 0xb3, 0x47, 0x45, 0xf5, 0x9f, 0xdc, 0xd1, 0x7f, 0x72, 0x52, 0xeb, 0x77, 0x0a, + 0x30, 0xf8, 0xd0, 0x89, 0x1a, 0xfb, 0xe4, 0x13, 0x18, 0x7c, 0xe0, 0x7a, 0xcd, 0xb0, 0x54, 0xb8, + 0xdc, 0x7f, 0x7d, 0x6c, 0xbe, 0x78, 0x93, 0x37, 0x05, 0x91, 0x0c, 0x51, 0x9d, 0xfd, 0xc9, 0x61, + 0xf9, 0xd4, 0xd1, 0x61, 0xf9, 0xf4, 0x63, 0x46, 0xf6, 0x86, 0x7f, 0xe0, 0x46, 0xd8, 0xb7, 0x36, + 0xe7, 0x23, 0xdb, 0x30, 0x55, 0x69, 0xb5, 0xfc, 0xa7, 0x9b, 0x4e, 0x10, 0xb9, 0x4e, 0xab, 0xd6, + 0x69, 0x34, 0x68, 0x18, 0x96, 0xfa, 0x2e, 0x17, 0xae, 0x8f, 0x54, 0xaf, 0x1e, 0x1d, 0x96, 0xcb, + 0x0e, 0x43, 0xd7, 0xdb, 0x1c, 0x5f, 0x0f, 0x39, 0x81, 0x26, 0x28, 0x8b, 0xdf, 0xfa, 0xc3, 0x21, + 0x28, 0x2e, 0xfb, 0x61, 0xb4, 0xc0, 0x7a, 0xd4, 0xa6, 0x3f, 0xec, 0xd0, 0x30, 0x22, 0x57, 0x61, + 0x88, 0xc1, 0x56, 0x16, 0x4b, 0x85, 0xcb, 0x85, 0xeb, 0xa3, 0xd5, 0xb1, 0xa3, 0xc3, 0xf2, 0xf0, + 0xbe, 0x1f, 0x46, 0x75, 0xb7, 0x69, 0x0b, 0x14, 0x79, 0x1d, 0x46, 0xd6, 0xfd, 0x26, 0x5d, 0x77, + 0x0e, 0x28, 0xd6, 0x62, 0xb4, 0x3a, 0x71, 0x74, 0x58, 0x1e, 0xf5, 0xfc, 0x26, 0xad, 0x7b, 0xce, + 0x01, 0xb5, 0x15, 0x9a, 0xec, 0xc0, 0x80, 0xed, 0xb7, 0x68, 0xa9, 0x1f, 0xc9, 0xaa, 0x47, 0x87, + 0xe5, 0x81, 0xc0, 0x6f, 0xd1, 0x9f, 0x1d, 0x96, 0xdf, 0xd9, 0x73, 0xa3, 0xfd, 0xce, 0xee, 0xcd, + 0x86, 0x7f, 0x70, 0x6b, 0x2f, 0x70, 0x9e, 0xb8, 0x7c, 0x10, 0x3a, 0xad, 0x5b, 0xf1, 0x50, 0x6d, + 0xbb, 0xa2, 0xdf, 0x6b, 0xcf, 0xc2, 0x88, 0x1e, 0x30, 0x49, 0x36, 0xca, 0x23, 0x0f, 0x61, 0xba, + 0xd2, 0x6c, 0xba, 0x9c, 0x63, 0x33, 0x70, 0xbd, 0x86, 0xdb, 0x76, 0x5a, 0x61, 0x69, 0xe0, 0x72, + 0xff, 0xf5, 0x51, 0xa1, 0x14, 0x85, 0xaf, 0xb7, 0x15, 0x81, 0xa6, 0x94, 0x4c, 0x01, 0xe4, 0x4d, + 0x18, 0x59, 0x5c, 0xaf, 0xb1, 0xba, 0x87, 0xa5, 0x41, 0x14, 0x36, 0x7b, 0x74, 0x58, 0x9e, 0x6a, + 0x7a, 0x21, 0x36, 0x4d, 0x17, 0xa0, 0x08, 0xc9, 0x3b, 0x30, 0xbe, 0xd9, 0xd9, 0x6d, 0xb9, 0x8d, + 0xad, 0xd5, 0xda, 0x03, 0xfa, 0xac, 0x34, 0x74, 0xb9, 0x70, 0x7d, 0xbc, 0x4a, 0x8e, 0x0e, 0xcb, + 0x93, 0x6d, 0x84, 0xd7, 0xa3, 0x56, 0x58, 0x7f, 0x4c, 0x9f, 0xd9, 0x06, 0x5d, 0xcc, 0x57, 0xab, + 0x2d, 0x33, 0xbe, 0xe1, 0x14, 0x5f, 0x18, 0xee, 0xeb, 0x7c, 0x9c, 0x8e, 0xdc, 0x02, 0xb0, 0xe9, + 0x81, 0x1f, 0xd1, 0x4a, 0xb3, 0x19, 0x94, 0x46, 0x50, 0xb7, 0xa7, 0x8f, 0x0e, 0xcb, 0x63, 0x01, + 0x42, 0xeb, 0x4e, 0xb3, 0x19, 0xd8, 0x1a, 0x09, 0x59, 0x80, 0x11, 0xdb, 0xe7, 0x0a, 0x2e, 0x8d, + 0x5e, 0x2e, 0x5c, 0x1f, 0x9b, 0x3f, 0x2d, 0x86, 0xa1, 0x04, 0x57, 0xcf, 0x1e, 0x1d, 0x96, 0x49, + 0x20, 0x7e, 0xe9, 0xad, 0x94, 0x14, 0xa4, 0x0c, 0xc3, 0xeb, 0xfe, 0x82, 0xd3, 0xd8, 0xa7, 0x25, + 0xc0, 0xb1, 0x37, 0x78, 0x74, 0x58, 0x2e, 0x7c, 0xd7, 0x96, 0x50, 0xf2, 0x04, 0xc6, 0xe2, 0x8e, + 0x0a, 0x4b, 0x63, 0xa8, 0xbe, 0xad, 0xa3, 0xc3, 0xf2, 0xd9, 0x10, 0xc1, 0x75, 0xd6, 0xf5, 0x9a, + 0x06, 0x5f, 0x60, 0x14, 0xe8, 0x05, 0x91, 0xaf, 0x61, 0x26, 0xfe, 0x59, 0x09, 0x43, 0x1a, 0x30, + 0x19, 0x2b, 0x8b, 0xa5, 0x09, 0xd4, 0xcc, 0xab, 0x47, 0x87, 0x65, 0x4b, 0xab, 0x41, 0xdd, 0x91, + 0x24, 0x75, 0xb7, 0xa9, 0xb5, 0x34, 0x5b, 0xc8, 0xfd, 0x81, 0x91, 0xf1, 0xe2, 0x84, 0x7d, 0x71, + 0xdb, 0x0b, 0x23, 0x67, 0xb7, 0x45, 0x33, 0x89, 0xac, 0xbf, 0x2c, 0x00, 0xd9, 0x68, 0x53, 0xaf, + 0x56, 0x5b, 0x66, 0xdf, 0x93, 0xfc, 0x9c, 0xde, 0x80, 0x51, 0xde, 0x71, 0xac, 0x77, 0xfb, 0xb0, + 0x77, 0x27, 0x8f, 0x0e, 0xcb, 0x20, 0x7a, 0x97, 0xf5, 0x6c, 0x4c, 0x40, 0xae, 0x41, 0xff, 0xd6, + 0xd6, 0x2a, 0x7e, 0x2b, 0xfd, 0xd5, 0xa9, 0xa3, 0xc3, 0x72, 0x7f, 0x14, 0xb5, 0x7e, 0x76, 0x58, + 0x1e, 0x59, 0xec, 0x04, 0xa8, 0x16, 0x9b, 0xe1, 0xc9, 0x35, 0x18, 0x5e, 0x68, 0x75, 0xc2, 0x88, + 0x06, 0xa5, 0x81, 0xf8, 0x23, 0x6d, 0x70, 0x90, 0x2d, 0x71, 0xe4, 0x3b, 0x30, 0xb0, 0x1d, 0xd2, + 0xa0, 0x34, 0x88, 0xfd, 0x3d, 0x21, 0xfa, 0x9b, 0x81, 0x76, 0xe6, 0xab, 0x23, 0xec, 0x4b, 0xec, + 0x84, 0x34, 0xb0, 0x91, 0x88, 0xdc, 0x84, 0x41, 0xde, 0x69, 0x43, 0x38, 0x49, 0x4d, 0xa8, 0xd1, + 0xd1, 0xa2, 0x3b, 0xef, 0x54, 0x47, 0x8f, 0x0e, 0xcb, 0x83, 0xd8, 0x79, 0x36, 0x27, 0xbb, 0x3f, + 0x30, 0x52, 0x28, 0xf6, 0xd9, 0x23, 0x8c, 0x97, 0x7d, 0x16, 0xd6, 0x77, 0x60, 0x4c, 0x6b, 0x3e, + 0xb9, 0x00, 0x03, 0xec, 0x7f, 0x9c, 0x44, 0xc6, 0x79, 0x61, 0x6c, 0xe1, 0xb0, 0x11, 0x6a, 0xfd, + 0x93, 0x29, 0x28, 0x32, 0x4e, 0x63, 0xe6, 0xb9, 0xa9, 0xab, 0x8a, 0xf3, 0x15, 0x4d, 0x55, 0x95, + 0x0a, 0xba, 0xb2, 0xae, 0x83, 0x2a, 0x5d, 0x4c, 0x42, 0xe3, 0x47, 0x87, 0xe5, 0x91, 0x8e, 0x80, + 0xc5, 0x75, 0x23, 0x35, 0x18, 0x5e, 0xfa, 0xa6, 0xed, 0x06, 0x34, 0x44, 0xd5, 0x8e, 0xcd, 0xcf, + 0xdd, 0xe4, 0xcb, 0xe5, 0x4d, 0xb9, 0x5c, 0xde, 0xdc, 0x92, 0xcb, 0x65, 0xf5, 0xa2, 0x98, 0x8c, + 0xcf, 0x50, 0xce, 0x12, 0x8f, 0x8f, 0xdf, 0xf8, 0xb3, 0x72, 0xc1, 0x96, 0x92, 0xc8, 0x1b, 0x30, + 0x74, 0xd7, 0x0f, 0x0e, 0x9c, 0x48, 0xf4, 0xc1, 0xf4, 0xd1, 0x61, 0xb9, 0xf8, 0x08, 0x21, 0xda, + 0x90, 0x12, 0x34, 0xe4, 0x2e, 0x4c, 0xda, 0x7e, 0x27, 0xa2, 0x5b, 0xbe, 0xec, 0xb9, 0x41, 0xe4, + 0xba, 0x74, 0x74, 0x58, 0x9e, 0x0b, 0x18, 0xa6, 0x1e, 0xf9, 0x75, 0xd1, 0x85, 0x1a, 0x7f, 0x82, + 0x8b, 0x2c, 0xc1, 0x64, 0x05, 0x67, 0x6f, 0xa1, 0x35, 0xde, 0x5f, 0xa3, 0xd5, 0x8b, 0x47, 0x87, + 0xe5, 0x73, 0x0e, 0x62, 0xea, 0x81, 0x40, 0xe9, 0x62, 0x4c, 0x26, 0xb2, 0x0e, 0x67, 0x1e, 0x74, + 0x76, 0x69, 0xe0, 0xd1, 0x88, 0x86, 0xb2, 0x46, 0xc3, 0x58, 0xa3, 0xcb, 0x47, 0x87, 0xe5, 0x0b, + 0x8f, 0x15, 0x32, 0xa3, 0x4e, 0x69, 0x56, 0x42, 0xe1, 0xb4, 0xa8, 0xe8, 0xa2, 0x13, 0x39, 0xbb, + 0x4e, 0x48, 0x71, 0x52, 0x1a, 0x9b, 0x3f, 0xcb, 0x55, 0x7c, 0x33, 0x81, 0xad, 0x5e, 0x15, 0x5a, + 0x3e, 0xaf, 0xda, 0xde, 0x14, 0x28, 0xad, 0xa0, 0xa4, 0x4c, 0x36, 0x37, 0xab, 0x75, 0x67, 0x14, + 0x6b, 0x8b, 0x73, 0xb3, 0x5a, 0x77, 0xf4, 0x59, 0x4b, 0xad, 0x40, 0xab, 0x30, 0xb8, 0xcd, 0x56, + 0x67, 0x9c, 0xb3, 0x26, 0xe7, 0xaf, 0x88, 0x1a, 0x25, 0xc7, 0xdf, 0x4d, 0xf6, 0x03, 0x09, 0xf1, + 0xcb, 0x3b, 0x8d, 0x2b, 0xba, 0xbe, 0x16, 0x23, 0x8e, 0x7c, 0x06, 0x20, 0x6a, 0x55, 0x69, 0xb7, + 0x4b, 0x63, 0xd8, 0xc8, 0x33, 0x66, 0x23, 0x2b, 0xed, 0x76, 0xf5, 0x92, 0x68, 0xdf, 0x59, 0xd5, + 0x3e, 0xa7, 0xdd, 0xd6, 0xa4, 0x69, 0x42, 0xc8, 0x27, 0x30, 0x8e, 0x53, 0x9a, 0xec, 0xd1, 0x71, + 0xec, 0xd1, 0xf3, 0x47, 0x87, 0xe5, 0x59, 0x9c, 0xad, 0x32, 0xfa, 0xd3, 0x60, 0x20, 0xbf, 0x0c, + 0x33, 0x42, 0xdc, 0x43, 0xd7, 0x6b, 0xfa, 0x4f, 0xc3, 0x45, 0x1a, 0x3e, 0x8e, 0xfc, 0x36, 0x4e, + 0x7f, 0x63, 0xf3, 0x17, 0xcc, 0xea, 0x99, 0x34, 0xd5, 0x1b, 0xa2, 0xa6, 0x96, 0xaa, 0xe9, 0x53, + 0x4e, 0x50, 0x6f, 0x72, 0x0a, 0x7d, 0x82, 0xcc, 0x14, 0x41, 0x56, 0xe0, 0xf4, 0x76, 0x48, 0x8d, + 0x36, 0x4c, 0xe2, 0xfa, 0x50, 0x66, 0x3d, 0xdc, 0x09, 0x69, 0x3d, 0xaf, 0x1d, 0x49, 0x3e, 0x62, + 0x03, 0x59, 0x0c, 0xfc, 0x76, 0x62, 0x8c, 0x9f, 0x46, 0x8d, 0x58, 0x47, 0x87, 0xe5, 0x4b, 0xcd, + 0xc0, 0x6f, 0xd7, 0xf3, 0x07, 0x7a, 0x06, 0x37, 0xf9, 0x3e, 0x9c, 0x5d, 0xf0, 0x3d, 0x8f, 0x36, + 0xd8, 0x0c, 0xba, 0xe8, 0x3a, 0x7b, 0x9e, 0x1f, 0x46, 0x6e, 0x63, 0x65, 0xb1, 0x54, 0x8c, 0x97, + 0x87, 0x86, 0xa2, 0xa8, 0x37, 0x15, 0x89, 0xb9, 0x3c, 0xe4, 0x48, 0x21, 0x5f, 0xc1, 0x84, 0x28, + 0x8b, 0x06, 0x38, 0x34, 0xcf, 0x74, 0x1f, 0x68, 0x8a, 0x98, 0x2f, 0xf4, 0x81, 0xfc, 0xc9, 0xb7, + 0x4e, 0xa6, 0x2c, 0xf2, 0x35, 0x8c, 0xad, 0xdd, 0xad, 0xd8, 0x34, 0x6c, 0xfb, 0x5e, 0x48, 0x4b, + 0x04, 0x7b, 0xf4, 0x92, 0x10, 0xbd, 0x76, 0xb7, 0x52, 0xe9, 0x44, 0xfb, 0xd4, 0x8b, 0xdc, 0x86, + 0x13, 0x51, 0x49, 0x55, 0x9d, 0x63, 0x23, 0xef, 0xe0, 0x91, 0x53, 0x0f, 0x04, 0x44, 0x6b, 0x85, + 0x2e, 0x8e, 0xcc, 0xc1, 0x48, 0xad, 0xb6, 0xbc, 0xea, 0xef, 0xb9, 0x5e, 0x69, 0x8a, 0x29, 0xc3, + 0x56, 0xbf, 0xc9, 0x23, 0x98, 0xd1, 0x6c, 0x83, 0x3a, 0xfb, 0x9f, 0x1e, 0x50, 0x2f, 0x2a, 0x4d, + 0x63, 0x1d, 0xbe, 0xab, 0x8c, 0x9b, 0x9b, 0xba, 0x09, 0xf1, 0xe4, 0xce, 0xcd, 0x4a, 0xfc, 0xb3, + 0x26, 0x99, 0xaa, 0x7d, 0xa5, 0x82, 0x3d, 0xed, 0x64, 0x60, 0xc8, 0x16, 0x0c, 0x6f, 0x76, 0x82, + 0xb6, 0x1f, 0xd2, 0xd2, 0x0c, 0x2a, 0xee, 0x6a, 0xb7, 0x2f, 0x54, 0x90, 0x56, 0x67, 0xd8, 0x14, + 0xdd, 0xe6, 0x3f, 0xb4, 0xd6, 0x49, 0x51, 0xe4, 0x53, 0x18, 0xaf, 0xd5, 0x96, 0xe3, 0x05, 0xe5, + 0x2c, 0x2e, 0x28, 0x17, 0x8e, 0x0e, 0xcb, 0x25, 0xb6, 0xa5, 0x8a, 0x17, 0x15, 0xfd, 0xab, 0xd2, + 0x39, 0x98, 0x84, 0xad, 0xd5, 0x5a, 0x2c, 0x61, 0x36, 0x96, 0xc0, 0x36, 0x73, 0xd9, 0x12, 0x74, + 0x0e, 0xf2, 0x2f, 0x0b, 0x70, 0x59, 0x17, 0x99, 0xa5, 0x98, 0xd2, 0xb9, 0xe7, 0xd1, 0xe6, 0xfc, + 0xd1, 0x61, 0xf9, 0xa6, 0xd9, 0x8e, 0x7a, 0x66, 0x67, 0x69, 0x75, 0xeb, 0x59, 0x15, 0xac, 0xaf, + 0xde, 0x80, 0xcc, 0xfa, 0xce, 0x3d, 0x77, 0x7d, 0x4d, 0xad, 0xf5, 0xae, 0x6f, 0xaf, 0xaa, 0x58, + 0x9f, 0xc3, 0xa8, 0x9a, 0xb4, 0xc9, 0x30, 0xf4, 0x57, 0x5a, 0xad, 0xe2, 0x29, 0xf6, 0x47, 0xad, + 0xb6, 0x5c, 0x2c, 0x90, 0x49, 0x80, 0x78, 0xa5, 0x2a, 0xf6, 0x91, 0x71, 0x18, 0x91, 0x2b, 0x49, + 0xb1, 0x1f, 0xe9, 0xdb, 0xed, 0xe2, 0x00, 0x21, 0x30, 0x69, 0xce, 0x67, 0xc5, 0x41, 0xeb, 0x37, 0x0b, 0x30, 0xaa, 0xbe, 0x43, 0x72, 0x1a, 0xc6, 0xb6, 0xd7, 0x6b, 0x9b, 0x4b, 0x0b, 0x2b, 0x77, 0x57, 0x96, 0x16, 0x8b, 0xa7, 0xc8, 0x45, 0x38, 0xb7, 0x55, 0x5b, 0xae, 0x2f, 0x56, 0xeb, 0xab, 0x1b, 0x0b, 0x95, 0xd5, 0xfa, 0xa6, 0xbd, 0xf1, 0xf9, 0x17, 0xf5, 0xad, 0xed, 0xf5, 0xf5, 0xa5, @@ -16225,856 +16225,854 @@ var fileDescriptor_0ffcffcda38ae159 = []byte{ 0xa0, 0xb4, 0xb0, 0x64, 0x6f, 0xd5, 0x37, 0xb7, 0xed, 0xcd, 0x8d, 0xda, 0x52, 0xdd, 0xac, 0x61, 0x12, 0xbb, 0xba, 0x71, 0x6f, 0x65, 0xbd, 0xce, 0x40, 0xb5, 0x62, 0x81, 0x55, 0xc3, 0xc0, 0xd6, 0x56, 0xd6, 0xef, 0xad, 0x2e, 0xd5, 0xb7, 0x6b, 0x4b, 0x82, 0xa4, 0xcf, 0xfa, 0xd5, 0xbe, 0xd4, - 0x96, 0x4e, 0xe6, 0x61, 0xac, 0xc6, 0xfd, 0x15, 0xb8, 0xcc, 0x71, 0x03, 0x91, 0xe9, 0x68, 0xe3, - 0xc2, 0x8d, 0xc1, 0x57, 0x30, 0x9d, 0x88, 0x69, 0x69, 0x9b, 0xec, 0x6b, 0x6e, 0xf8, 0x2d, 0x5d, - 0x4b, 0x6b, 0x0b, 0x98, 0xad, 0xb0, 0x64, 0x5e, 0xd3, 0xe7, 0xb8, 0xb5, 0x88, 0x16, 0x89, 0xd4, - 0xe7, 0xf4, 0xbd, 0x5d, 0x69, 0x76, 0xf3, 0xf1, 0x90, 0x0a, 0x35, 0x0c, 0x79, 0x32, 0x74, 0x09, - 0x45, 0x47, 0x5e, 0x97, 0x9a, 0x2e, 0xb7, 0xee, 0x70, 0xb3, 0x4f, 0xd8, 0x25, 0x42, 0xc9, 0xb5, - 0x3a, 0x39, 0x1b, 0x2b, 0xf9, 0x20, 0x39, 0x67, 0x44, 0x67, 0xa0, 0xb0, 0xc4, 0xfe, 0x69, 0x27, - 0x48, 0x49, 0x19, 0x06, 0xf9, 0x8a, 0xcb, 0xfb, 0x03, 0x75, 0xeb, 0x16, 0x03, 0xd8, 0x1c, 0x6e, - 0xfd, 0x71, 0xbf, 0xae, 0x64, 0x30, 0x5d, 0x5a, 0xeb, 0x6f, 0xd4, 0xa5, 0xb1, 0x9f, 0x11, 0xca, - 0x4c, 0x41, 0xfe, 0x95, 0xa0, 0x29, 0xd8, 0x1f, 0x9b, 0x82, 0xe2, 0x53, 0xe3, 0xa6, 0x60, 0x4c, - 0xc2, 0x46, 0x51, 0xa8, 0x6d, 0x28, 0x75, 0x20, 0x1e, 0x45, 0xa1, 0xea, 0x89, 0x51, 0xd4, 0x88, - 0xc8, 0xfb, 0x00, 0x95, 0x87, 0x35, 0xb4, 0x79, 0xec, 0x75, 0xa1, 0xba, 0xe2, 0x26, 0xe3, 0x3c, - 0x0d, 0x85, 0x49, 0x15, 0xe8, 0x36, 0xa3, 0x46, 0x4d, 0xaa, 0x30, 0x51, 0xf9, 0x51, 0x27, 0xa0, - 0x2b, 0x4d, 0xb6, 0x4f, 0x45, 0xdc, 0x38, 0x1e, 0xe5, 0x0b, 0xa9, 0xc3, 0x10, 0x75, 0x57, 0x60, - 0x34, 0x01, 0x26, 0x0b, 0xd9, 0x80, 0x33, 0xf7, 0x16, 0x36, 0xc5, 0xbc, 0xaa, 0x34, 0x1a, 0x7e, - 0xc7, 0x8b, 0x84, 0xbe, 0x7a, 0xe5, 0xe8, 0xb0, 0x7c, 0x71, 0xaf, 0xd1, 0xae, 0xcb, 0x39, 0xe8, - 0x70, 0xb4, 0xae, 0xb0, 0xa6, 0x78, 0xc9, 0x55, 0xe8, 0xdf, 0xb6, 0x57, 0x84, 0xe5, 0x7c, 0xe6, - 0xe8, 0xb0, 0x3c, 0xd1, 0x09, 0x5c, 0x8d, 0x85, 0x61, 0xc9, 0x7b, 0x00, 0x5b, 0x4e, 0xb0, 0x47, - 0xa3, 0x4d, 0x3f, 0x88, 0x50, 0xe1, 0x9c, 0xa8, 0x9e, 0x3b, 0x3a, 0x2c, 0xcf, 0x44, 0x08, 0xad, - 0xb3, 0xe5, 0x4f, 0x6f, 0x74, 0x4c, 0x7c, 0x7f, 0x60, 0xa4, 0xaf, 0xd8, 0x6f, 0x8f, 0xd6, 0x68, - 0x18, 0x72, 0xfb, 0xb0, 0x05, 0x93, 0xf7, 0x68, 0xc4, 0x26, 0xae, 0xb4, 0x77, 0xba, 0x0f, 0xeb, - 0x87, 0x30, 0xf6, 0xd0, 0x8d, 0xf6, 0x6b, 0xb4, 0x11, 0xd0, 0x48, 0xfa, 0x7a, 0xb0, 0xcb, 0x9f, - 0xba, 0xd1, 0x7e, 0x3d, 0xe4, 0x70, 0x7d, 0x5f, 0xd7, 0xc8, 0xad, 0x25, 0x38, 0x2d, 0x4a, 0x53, - 0xe6, 0xd5, 0xbc, 0x29, 0xb0, 0x80, 0x02, 0x71, 0xd8, 0x75, 0x81, 0xa6, 0x98, 0x7f, 0xdd, 0x07, - 0x33, 0x0b, 0xfb, 0x8e, 0xb7, 0x47, 0x37, 0x9d, 0x30, 0x7c, 0xea, 0x07, 0x4d, 0xad, 0xf2, 0x68, - 0x5b, 0xa6, 0x2a, 0x8f, 0xc6, 0xe4, 0x3c, 0x8c, 0x6d, 0xb4, 0x9a, 0x92, 0x47, 0xd8, 0xbd, 0x58, - 0x96, 0xdf, 0x6a, 0xd6, 0xdb, 0x52, 0x96, 0x4e, 0xc4, 0x78, 0xd6, 0xe9, 0x53, 0xc5, 0xd3, 0x1f, - 0xf3, 0x78, 0xf4, 0xa9, 0xc6, 0xa3, 0x11, 0x91, 0x25, 0x38, 0x53, 0xa3, 0x0d, 0xdf, 0x6b, 0xde, - 0x75, 0x1a, 0x91, 0x1f, 0x6c, 0xf9, 0x8f, 0xa9, 0x27, 0x26, 0x34, 0x1a, 0x06, 0x21, 0x22, 0xeb, - 0x8f, 0x10, 0x5b, 0x8f, 0x18, 0xda, 0x4e, 0x73, 0x90, 0x0d, 0x18, 0x79, 0x28, 0x3c, 0x86, 0xc2, - 0x58, 0xbe, 0x76, 0x53, 0xb9, 0x10, 0x17, 0x02, 0x8a, 0xb3, 0xd0, 0x69, 0x29, 0x73, 0x5f, 0xe9, - 0x59, 0xb8, 0x94, 0x49, 0x4a, 0x5b, 0x09, 0xb1, 0xb6, 0x61, 0x62, 0xb3, 0xd5, 0xd9, 0x73, 0x3d, - 0xb6, 0xe8, 0xd4, 0xe8, 0x0f, 0xc9, 0x22, 0x40, 0x0c, 0x10, 0x7e, 0xc0, 0x29, 0x61, 0x62, 0xc7, - 0x88, 0x9d, 0x37, 0xc5, 0x97, 0x8b, 0x10, 0xb4, 0x88, 0x6c, 0x8d, 0xcf, 0xfa, 0xdf, 0xfd, 0x40, - 0xc4, 0x00, 0xe0, 0x26, 0x58, 0xa3, 0x11, 0xdb, 0x9e, 0xce, 0x42, 0x9f, 0x72, 0xd7, 0x0d, 0x1d, - 0x1d, 0x96, 0xfb, 0xdc, 0xa6, 0xdd, 0xb7, 0xb2, 0x48, 0xde, 0x82, 0x41, 0x24, 0xc3, 0xfe, 0x9f, - 0x54, 0xe5, 0xe9, 0x12, 0xf8, 0xe2, 0x83, 0xbb, 0xaf, 0xcd, 0x89, 0xc9, 0xdb, 0x30, 0xba, 0x48, - 0x5b, 0x74, 0xcf, 0x89, 0x7c, 0xb9, 0x9c, 0x70, 0x07, 0x98, 0x04, 0x6a, 0x73, 0x2e, 0xa6, 0x64, - 0xe6, 0xb0, 0x4d, 0x9d, 0xd0, 0xf7, 0x74, 0x73, 0x38, 0x40, 0x88, 0x6e, 0x0e, 0x73, 0x1a, 0xf2, - 0x5b, 0x05, 0x18, 0xab, 0x78, 0x9e, 0x70, 0x2c, 0x85, 0xa2, 0xd7, 0x67, 0x6e, 0x2a, 0x4f, 0xec, - 0xaa, 0xb3, 0x4b, 0x5b, 0x3b, 0x4e, 0xab, 0x43, 0xc3, 0xea, 0xd7, 0xcc, 0x42, 0xf9, 0x4f, 0x87, - 0xe5, 0x0f, 0x4e, 0xe0, 0x2a, 0x8a, 0x7d, 0xba, 0x5b, 0x81, 0xe3, 0x46, 0x21, 0xfb, 0x6a, 0x9d, - 0xb8, 0x40, 0xfd, 0xbb, 0xd1, 0xea, 0x11, 0xef, 0x0d, 0x43, 0xbd, 0xf6, 0x06, 0x72, 0x00, 0xa7, - 0x2b, 0x61, 0xd8, 0x39, 0xa0, 0xb5, 0xc8, 0x09, 0xa2, 0x2d, 0xf7, 0x80, 0xe2, 0x82, 0xd4, 0xdd, - 0xb9, 0xf0, 0xda, 0x4f, 0x0e, 0xcb, 0x05, 0x66, 0x14, 0x39, 0xc8, 0xca, 0xf4, 0x9e, 0x20, 0xaa, - 0x47, 0xae, 0xbe, 0xbd, 0xa1, 0x9b, 0x21, 0x29, 0xdb, 0xba, 0xaa, 0x14, 0x92, 0x95, 0xc5, 0xbc, - 0x11, 0xb7, 0x16, 0xe0, 0xc2, 0x3d, 0x1a, 0xd9, 0x34, 0xa4, 0x91, 0xfc, 0x46, 0x70, 0x86, 0xc7, - 0xce, 0xdd, 0x61, 0xfc, 0xad, 0x98, 0x71, 0xf8, 0xf9, 0x77, 0x21, 0x31, 0xd6, 0xdf, 0x28, 0x40, - 0x79, 0x21, 0xa0, 0xdc, 0x9e, 0xc8, 0x11, 0xd4, 0x7d, 0xed, 0xba, 0x00, 0x03, 0x5b, 0xcf, 0xda, - 0xd2, 0x2b, 0x83, 0x58, 0x36, 0x28, 0x36, 0x42, 0x8f, 0xe9, 0xe4, 0xb2, 0x1e, 0xc1, 0x8c, 0x4d, - 0x3d, 0xfa, 0xd4, 0xd9, 0x6d, 0x51, 0xc3, 0x4f, 0x54, 0x86, 0x41, 0xfe, 0xa1, 0xa7, 0x9a, 0xc0, - 0xe1, 0x27, 0xf3, 0xb9, 0x59, 0x13, 0x30, 0xb6, 0xe9, 0x7a, 0x7b, 0x42, 0xba, 0xf5, 0x17, 0x03, - 0x30, 0xce, 0x7f, 0x0b, 0x13, 0x29, 0xb1, 0x5d, 0x16, 0x8e, 0xb3, 0x5d, 0xbe, 0x0b, 0x13, 0x6c, - 0xbf, 0xa1, 0xc1, 0x0e, 0x0d, 0xd8, 0xfa, 0x2f, 0x7a, 0x02, 0xcd, 0xbd, 0x10, 0x11, 0xf5, 0x27, - 0x1c, 0x63, 0x9b, 0x84, 0x64, 0x15, 0x26, 0x39, 0xe0, 0x2e, 0x75, 0xa2, 0x4e, 0xec, 0xb1, 0x3a, - 0x2d, 0x6c, 0x22, 0x09, 0xe6, 0x53, 0x53, 0xc8, 0x7a, 0x24, 0x80, 0x76, 0x82, 0x97, 0x7c, 0x02, - 0xa7, 0x37, 0x03, 0xff, 0x9b, 0x67, 0x9a, 0x82, 0xc0, 0xbf, 0x4e, 0x6e, 0x3d, 0x31, 0x54, 0x5d, - 0x57, 0x13, 0x92, 0xd4, 0xe4, 0x75, 0x18, 0x59, 0x09, 0xab, 0x7e, 0xe0, 0x7a, 0x7b, 0xf8, 0x8d, - 0x8e, 0x70, 0x47, 0xbf, 0x1b, 0xd6, 0x77, 0x11, 0x68, 0x2b, 0x74, 0xc2, 0x25, 0x3d, 0xdc, 0xdb, - 0x25, 0x7d, 0x1b, 0x60, 0xd5, 0x77, 0x9a, 0x95, 0x56, 0x6b, 0xa1, 0x12, 0xe2, 0x4e, 0x2c, 0xf6, - 0xa3, 0x96, 0xef, 0x34, 0xeb, 0x4e, 0xab, 0x55, 0x6f, 0x38, 0xa1, 0xad, 0xd1, 0x90, 0x2f, 0xe1, - 0x5c, 0xe8, 0xee, 0x79, 0xd8, 0xb8, 0xba, 0xd3, 0xda, 0xf3, 0x03, 0x37, 0xda, 0x3f, 0xa8, 0x87, - 0x1d, 0x37, 0xe2, 0xfe, 0xa0, 0xc9, 0xf9, 0x4b, 0x62, 0x91, 0xab, 0x49, 0xba, 0x8a, 0x24, 0xab, - 0x31, 0x2a, 0x7b, 0x36, 0xcc, 0x46, 0x90, 0x87, 0x30, 0xb1, 0xea, 0x36, 0xa8, 0x17, 0x52, 0x74, - 0xf0, 0x3d, 0x43, 0x6f, 0x51, 0xf7, 0x8f, 0x99, 0x75, 0xe2, 0x44, 0x4b, 0x67, 0xc2, 0x4f, 0xd7, - 0x94, 0x73, 0x7f, 0x60, 0x64, 0xa8, 0x38, 0x6c, 0x9f, 0x16, 0xc0, 0x87, 0x4e, 0xe0, 0xb9, 0xde, - 0x5e, 0x68, 0xfd, 0x5d, 0x02, 0x23, 0x6a, 0x9c, 0x6e, 0xea, 0x96, 0x8a, 0xd8, 0x9a, 0x71, 0xca, - 0xc6, 0x7e, 0x38, 0x5b, 0xa3, 0x20, 0xe7, 0xd0, 0x76, 0x11, 0x4a, 0xc1, 0x30, 0xfb, 0x84, 0x9c, - 0x76, 0xdb, 0x66, 0x30, 0xb6, 0x34, 0x2c, 0x56, 0x71, 0xd2, 0x8c, 0xf0, 0xa5, 0xa1, 0xb9, 0x6b, - 0xf7, 0x2d, 0x56, 0xd9, 0x37, 0xb9, 0xb1, 0xb2, 0xb8, 0x80, 0xe3, 0x3f, 0xc2, 0xbf, 0x49, 0xdf, - 0x6d, 0x36, 0x6c, 0x84, 0x32, 0x6c, 0xad, 0xb2, 0xb6, 0x2a, 0xc6, 0x18, 0xb1, 0xa1, 0x73, 0xd0, - 0xb2, 0x11, 0xca, 0xb4, 0x5d, 0xee, 0x52, 0x59, 0xf0, 0xbd, 0x28, 0xf0, 0x5b, 0x21, 0xaa, 0x70, - 0x23, 0x7c, 0x0e, 0x0a, 0x5f, 0x4c, 0x43, 0xa0, 0xec, 0x04, 0x29, 0x79, 0x08, 0xb3, 0x95, 0xe6, - 0x13, 0xc7, 0x6b, 0xd0, 0x26, 0xc7, 0x3c, 0xf4, 0x83, 0xc7, 0x8f, 0x5a, 0xfe, 0xd3, 0x10, 0x27, - 0xc9, 0x88, 0x70, 0x5d, 0x0a, 0x12, 0xe9, 0xda, 0x79, 0x2a, 0x89, 0xec, 0x3c, 0x6e, 0xb6, 0x0e, - 0x2c, 0xb4, 0xfc, 0x4e, 0x53, 0x4c, 0x1d, 0x5c, 0x07, 0x1a, 0x0c, 0x60, 0x73, 0x38, 0xeb, 0xa5, - 0xe5, 0xda, 0x1a, 0x4e, 0x0c, 0xd1, 0x4b, 0xfb, 0xe1, 0x81, 0xcd, 0x60, 0xe4, 0x1a, 0x0c, 0x4b, - 0xc5, 0x9d, 0x9f, 0x64, 0xa0, 0x07, 0x5d, 0x2a, 0xec, 0x12, 0xc7, 0xbe, 0x63, 0x9b, 0x36, 0xfc, - 0x27, 0x34, 0x78, 0xb6, 0xe0, 0x37, 0xa9, 0x74, 0x6b, 0x09, 0xb7, 0x0d, 0x47, 0xd4, 0x1b, 0x0c, - 0x63, 0x9b, 0x84, 0xac, 0x00, 0xbe, 0x71, 0x87, 0xa5, 0xd3, 0x71, 0x01, 0x7c, 0x63, 0x0f, 0x6d, - 0x89, 0x23, 0x8b, 0x70, 0xa6, 0xd2, 0x89, 0xfc, 0x03, 0x27, 0x72, 0x1b, 0xdb, 0xed, 0xbd, 0xc0, - 0x61, 0x85, 0x14, 0x91, 0x01, 0x0d, 0x19, 0x47, 0x22, 0xeb, 0x1d, 0x81, 0xb5, 0xd3, 0x0c, 0xe4, - 0x1d, 0x18, 0x5f, 0x09, 0xb9, 0xeb, 0xd2, 0x09, 0x69, 0x13, 0xfd, 0x4f, 0xa2, 0x96, 0x6e, 0x58, - 0x47, 0x47, 0x66, 0x9d, 0x99, 0x3e, 0x4d, 0xdb, 0xa0, 0x23, 0x16, 0x0c, 0x55, 0xc2, 0xd0, 0x0d, - 0x23, 0x74, 0x2b, 0x8d, 0x54, 0xe1, 0xe8, 0xb0, 0x3c, 0xe4, 0x20, 0xc4, 0x16, 0x18, 0xf2, 0x10, - 0xc6, 0x16, 0x29, 0xd3, 0x9c, 0xb7, 0x82, 0x4e, 0x18, 0xa1, 0x93, 0x68, 0x6c, 0xfe, 0x9c, 0x58, - 0x8d, 0x34, 0x8c, 0x98, 0xcb, 0x5c, 0x45, 0x6d, 0x22, 0xbc, 0x1e, 0x31, 0x84, 0xbe, 0xd5, 0x6a, - 0xf4, 0xcc, 0x2c, 0x10, 0x3c, 0xcb, 0x6e, 0x93, 0xad, 0x2f, 0xd3, 0x58, 0x07, 0x34, 0x0b, 0xc4, - 0x82, 0x56, 0xdf, 0x47, 0x8c, 0x6e, 0x16, 0x18, 0x2c, 0xa4, 0x91, 0xf2, 0x86, 0xcf, 0x18, 0x1e, - 0x4f, 0x13, 0x29, 0xab, 0x78, 0x42, 0x5f, 0xf9, 0x87, 0x30, 0xb6, 0xd0, 0x09, 0x23, 0xff, 0x60, - 0x6b, 0x9f, 0x1e, 0x50, 0x74, 0x24, 0x09, 0xe3, 0xa7, 0x81, 0xe0, 0x7a, 0xc4, 0xe0, 0x7a, 0x33, - 0x35, 0x72, 0xf2, 0x19, 0x10, 0x69, 0xc5, 0xdc, 0x63, 0xf3, 0xc3, 0x63, 0x73, 0x19, 0x7d, 0x49, - 0x23, 0xdc, 0x74, 0x91, 0xc6, 0x4f, 0x7d, 0x4f, 0xa1, 0x75, 0x7f, 0x66, 0x9a, 0x99, 0x55, 0x88, - 0x57, 0xf1, 0x5e, 0xe0, 0xb4, 0xf7, 0x4b, 0xa5, 0xd8, 0x34, 0x10, 0x8d, 0xda, 0x63, 0x70, 0x43, - 0xc5, 0x89, 0xc9, 0x49, 0x0d, 0x80, 0xff, 0x5c, 0x65, 0x03, 0xcf, 0xbd, 0x4f, 0x25, 0xa3, 0xbf, - 0x18, 0x42, 0xf6, 0x15, 0x9a, 0x3b, 0x42, 0x6c, 0xcb, 0x35, 0x46, 0x53, 0x13, 0x43, 0x1e, 0x43, - 0x91, 0xff, 0x5a, 0xf3, 0x3d, 0x37, 0xe2, 0xfb, 0xc5, 0x9c, 0xe1, 0xaa, 0x4c, 0xa2, 0x65, 0x01, - 0xe8, 0x22, 0x16, 0x05, 0x1c, 0x28, 0xac, 0x56, 0x4c, 0x4a, 0x30, 0xd9, 0x84, 0xb1, 0xcd, 0xc0, - 0x6f, 0x76, 0x1a, 0x11, 0x6a, 0x19, 0xe7, 0x71, 0xe1, 0x27, 0xa2, 0x1c, 0x0d, 0xc3, 0xfb, 0xa4, - 0xcd, 0x01, 0x75, 0xb6, 0x2f, 0xe8, 0x7d, 0xa2, 0x11, 0x92, 0x2a, 0x0c, 0x6d, 0xfa, 0x2d, 0xb7, - 0xf1, 0xac, 0x74, 0x01, 0x2b, 0x3d, 0x2d, 0x85, 0x21, 0x50, 0x56, 0x15, 0x55, 0xda, 0x36, 0x82, - 0x74, 0x95, 0x96, 0x13, 0x91, 0x0a, 0x4c, 0x7c, 0xc6, 0x26, 0x8c, 0xeb, 0x7b, 0x9e, 0xe3, 0x06, - 0xb4, 0x74, 0x11, 0xc7, 0x05, 0xdd, 0xf8, 0x3f, 0xd4, 0x11, 0xfa, 0x74, 0x36, 0x38, 0xc8, 0x0a, - 0x9c, 0x5e, 0x09, 0x6b, 0x51, 0xe0, 0xb6, 0xe9, 0x9a, 0xe3, 0x39, 0x7b, 0xb4, 0x59, 0xba, 0x14, - 0xfb, 0xd1, 0xdd, 0xb0, 0x1e, 0x22, 0xae, 0x7e, 0xc0, 0x91, 0xba, 0x1f, 0x3d, 0xc1, 0x47, 0x3e, - 0x87, 0xe9, 0xa5, 0x6f, 0x22, 0x36, 0x63, 0x5a, 0x95, 0x4e, 0xd3, 0x8d, 0x6a, 0x91, 0x1f, 0x38, - 0x7b, 0xb4, 0x54, 0x46, 0x79, 0xaf, 0x1c, 0x1d, 0x96, 0x2f, 0x53, 0x81, 0xaf, 0x3b, 0x8c, 0xa0, - 0x1e, 0x72, 0x0a, 0xfd, 0x7c, 0x3c, 0x4b, 0x02, 0xeb, 0xfd, 0x5a, 0xa7, 0xcd, 0xb4, 0x6d, 0xec, - 0xfd, 0xcb, 0x46, 0xef, 0x6b, 0x18, 0xde, 0xfb, 0x21, 0x07, 0xa4, 0x7a, 0x5f, 0x23, 0x24, 0x36, - 0x90, 0xfb, 0xbe, 0xeb, 0x55, 0x1a, 0x91, 0xfb, 0x84, 0x0a, 0x8b, 0x39, 0x2c, 0x5d, 0xc1, 0x9a, - 0xa2, 0xcf, 0xff, 0x17, 0x7d, 0xd7, 0xab, 0x3b, 0x88, 0xae, 0x87, 0x02, 0xaf, 0x7f, 0x23, 0x69, - 0x6e, 0xf2, 0x7d, 0x38, 0xbb, 0xe6, 0xef, 0xba, 0x2d, 0xca, 0x97, 0x1c, 0xde, 0x2d, 0xe8, 0xbf, - 0xb4, 0x50, 0x2e, 0xfa, 0xfc, 0x0f, 0x90, 0xa2, 0x2e, 0x56, 0xab, 0x03, 0x45, 0xa3, 0xfb, 0xfc, - 0xb3, 0xa5, 0x90, 0x25, 0x18, 0xc7, 0xef, 0xb2, 0x85, 0x3f, 0xc3, 0xd2, 0x55, 0x34, 0xe9, 0xae, - 0x24, 0xb4, 0xb4, 0x9b, 0x4b, 0x1a, 0xcd, 0x92, 0x17, 0x05, 0xcf, 0x6c, 0x83, 0x8d, 0x7c, 0x0c, - 0x73, 0xc9, 0xe9, 0xbd, 0xe0, 0x7b, 0x8f, 0xdc, 0xbd, 0x4e, 0x40, 0x9b, 0xa5, 0x57, 0x58, 0x55, - 0xed, 0x2e, 0x14, 0xe4, 0x2b, 0x98, 0xc1, 0xbd, 0xae, 0xe2, 0xf9, 0xde, 0xb3, 0x03, 0xf7, 0x47, - 0xa8, 0x3f, 0x33, 0xb5, 0xf7, 0x1a, 0xaa, 0xbd, 0xd7, 0x8e, 0x0e, 0xcb, 0x57, 0x70, 0x4f, 0xac, - 0x3b, 0x3a, 0x45, 0xc2, 0x6b, 0x9d, 0x2d, 0x63, 0xee, 0x21, 0x9c, 0x49, 0xd5, 0x9f, 0x14, 0xa1, - 0xff, 0xb1, 0x38, 0x9f, 0x1d, 0xb5, 0xd9, 0x9f, 0xe4, 0x0d, 0x18, 0x7c, 0xc2, 0x0c, 0x35, 0x54, - 0x47, 0xe2, 0x13, 0x3f, 0x8d, 0x75, 0xc5, 0x7b, 0xe4, 0xdb, 0x9c, 0xe8, 0xfd, 0xbe, 0x77, 0x0b, - 0xf7, 0x07, 0x46, 0xc6, 0x8a, 0xe3, 0xfc, 0x58, 0xfd, 0xfe, 0xc0, 0xc8, 0x44, 0x71, 0xd2, 0xaa, - 0xc0, 0xe9, 0x04, 0x3d, 0x29, 0xc1, 0x30, 0xf5, 0x98, 0xf2, 0xdf, 0xe4, 0x0a, 0x91, 0x2d, 0x7f, - 0x92, 0x69, 0x18, 0x6c, 0xb9, 0x07, 0x6e, 0x84, 0x05, 0x0e, 0xda, 0xfc, 0x87, 0xf5, 0xdb, 0x05, - 0x20, 0xe9, 0xfd, 0x88, 0xdc, 0x4a, 0x88, 0xe1, 0xaa, 0xaf, 0x00, 0xe9, 0x07, 0x07, 0x52, 0xfa, - 0x67, 0x30, 0xc5, 0x27, 0x84, 0xdc, 0x39, 0xb5, 0xb2, 0xf8, 0x8a, 0x9d, 0x81, 0xd6, 0x9d, 0x4d, - 0x02, 0x8d, 0xfb, 0xec, 0x2a, 0x56, 0xad, 0x03, 0x33, 0x99, 0x3b, 0x11, 0x59, 0x83, 0x99, 0x03, - 0xdf, 0x8b, 0xf6, 0x5b, 0xcf, 0xe4, 0x46, 0x24, 0x4a, 0x2b, 0x60, 0x69, 0xb8, 0xf8, 0x66, 0x12, - 0xd8, 0x53, 0x02, 0x2c, 0x24, 0x62, 0x39, 0xc2, 0xe9, 0x24, 0x5b, 0x62, 0xd9, 0x70, 0x26, 0xb5, - 0xa0, 0x93, 0x8f, 0x60, 0xbc, 0x81, 0xc6, 0x9d, 0x51, 0x12, 0xdf, 0xce, 0x34, 0xb8, 0xfe, 0xad, - 0x72, 0x38, 0x6f, 0xca, 0xbf, 0x28, 0xc0, 0x6c, 0xce, 0x52, 0x7e, 0xf2, 0xae, 0xfe, 0x02, 0xce, - 0x1e, 0x38, 0xdf, 0xd4, 0x03, 0xb4, 0xdd, 0xeb, 0x81, 0xe3, 0x25, 0x7a, 0x1b, 0x97, 0xa9, 0x6c, - 0x0a, 0x3d, 0xb6, 0xe9, 0xc0, 0xf9, 0xc6, 0x46, 0x02, 0x9b, 0xe1, 0x79, 0x3d, 0x3f, 0x85, 0x09, - 0x63, 0xf1, 0x3e, 0x71, 0xe5, 0xac, 0x3b, 0x70, 0x66, 0x91, 0xb6, 0x68, 0x44, 0x8f, 0xed, 0xb3, - 0xb3, 0x36, 0x01, 0x6a, 0xf4, 0xc0, 0x69, 0xef, 0xfb, 0x4c, 0xa9, 0xaf, 0xea, 0xbf, 0x84, 0xcf, - 0x87, 0x48, 0xf3, 0x44, 0x22, 0x76, 0xde, 0xe4, 0x8a, 0x7e, 0xa8, 0x28, 0x6d, 0x8d, 0xcb, 0xfa, - 0xf7, 0x7d, 0x40, 0xc4, 0xea, 0x1b, 0x50, 0xe7, 0x40, 0x56, 0xe3, 0x3d, 0x18, 0xe7, 0x16, 0x3a, - 0x07, 0x63, 0x75, 0xc6, 0xe6, 0xa7, 0xc4, 0x97, 0xa7, 0xa3, 0x96, 0x4f, 0xd9, 0x06, 0x29, 0x63, - 0xb5, 0x29, 0x77, 0x2d, 0x20, 0x6b, 0x9f, 0xc1, 0xaa, 0xa3, 0x18, 0xab, 0xfe, 0x9b, 0x7c, 0x02, - 0x93, 0x0b, 0xfe, 0x41, 0x9b, 0xf5, 0x89, 0x60, 0xee, 0x17, 0x6e, 0x1b, 0x51, 0xae, 0x81, 0x5c, - 0x3e, 0x65, 0x27, 0xc8, 0xc9, 0x3a, 0x4c, 0xdd, 0x6d, 0x75, 0xc2, 0xfd, 0x8a, 0xd7, 0x5c, 0x68, - 0xf9, 0xa1, 0x94, 0x32, 0x20, 0x2c, 0x2d, 0xb1, 0x76, 0xa6, 0x29, 0x96, 0x4f, 0xd9, 0x59, 0x8c, - 0xe4, 0x1a, 0x0c, 0x2e, 0x3d, 0x61, 0x6b, 0xba, 0x8c, 0x70, 0x11, 0x01, 0x78, 0x1b, 0x1e, 0xdd, - 0x78, 0xb4, 0x7c, 0xca, 0xe6, 0xd8, 0xea, 0x28, 0x0c, 0x4b, 0xeb, 0xfe, 0x16, 0xd3, 0xb7, 0x55, - 0x77, 0xd6, 0x22, 0x27, 0xea, 0x84, 0x64, 0x0e, 0x46, 0xb6, 0xdb, 0xcc, 0xe8, 0x94, 0x6e, 0x11, - 0x5b, 0xfd, 0xb6, 0xde, 0x30, 0x7b, 0x9a, 0x5c, 0x80, 0xd8, 0xa7, 0x2b, 0x88, 0x35, 0x27, 0xef, - 0xb2, 0xd9, 0xb9, 0xdd, 0xa9, 0x8d, 0x72, 0xfb, 0x12, 0xe5, 0x16, 0x93, 0x7d, 0x6d, 0xcd, 0x64, - 0x76, 0x9e, 0xf5, 0x39, 0x5c, 0xda, 0x6e, 0x87, 0x34, 0x88, 0x2a, 0xed, 0x76, 0xcb, 0x6d, 0xf0, - 0x13, 0x32, 0xf4, 0x02, 0xc8, 0xc9, 0xf2, 0x0e, 0x0c, 0x71, 0x80, 0x98, 0x26, 0x72, 0x0e, 0x56, - 0xda, 0x6d, 0xe1, 0x7b, 0x78, 0x93, 0x6b, 0xfe, 0xdc, 0x9b, 0x60, 0x0b, 0x6a, 0xeb, 0x37, 0x0a, - 0x70, 0x89, 0x7f, 0x01, 0xb9, 0xa2, 0xbf, 0x03, 0xa3, 0x18, 0xff, 0xd6, 0x76, 0x1a, 0xf2, 0x9b, - 0xe0, 0x81, 0x80, 0x12, 0x68, 0xc7, 0x78, 0x2d, 0xb2, 0xb0, 0x2f, 0x3f, 0xb2, 0x50, 0x7e, 0x60, - 0xfd, 0x99, 0x1f, 0xd8, 0x67, 0x60, 0x89, 0x1a, 0xb5, 0x5a, 0xa9, 0x4a, 0x85, 0xcf, 0x53, 0x2b, - 0xeb, 0xbf, 0xf7, 0xc1, 0xec, 0x3d, 0xea, 0xd1, 0xc0, 0xc1, 0x76, 0x1a, 0x5e, 0x2e, 0x3d, 0xc2, - 0xa8, 0xd0, 0x35, 0xc2, 0xa8, 0x2c, 0xfd, 0x86, 0x7d, 0xe8, 0x37, 0x4c, 0x85, 0x4b, 0x31, 0x5b, - 0x74, 0xdb, 0x5e, 0x11, 0xcd, 0x42, 0x5b, 0xb4, 0x13, 0xb8, 0xfc, 0x94, 0x61, 0x25, 0x8e, 0x4e, - 0x1a, 0xe8, 0xe9, 0x73, 0x98, 0x12, 0xd1, 0x1a, 0xc3, 0x22, 0x3a, 0xc9, 0x8c, 0x49, 0x5a, 0x87, - 0x21, 0xee, 0xee, 0xc4, 0xb3, 0xad, 0xb1, 0xf9, 0x1b, 0xe2, 0x9b, 0xca, 0x69, 0xa0, 0xf0, 0x8d, - 0xe2, 0xc6, 0xce, 0xa7, 0x40, 0x84, 0x00, 0x5b, 0x48, 0x99, 0xfb, 0x0c, 0xc6, 0x34, 0x92, 0xe3, - 0xec, 0xfd, 0xca, 0xed, 0xca, 0xd4, 0x51, 0x6f, 0x8f, 0x7b, 0x70, 0xb5, 0xbd, 0xdf, 0xfa, 0x00, - 0x4a, 0xe9, 0xda, 0x08, 0x57, 0x5b, 0x2f, 0xcf, 0x9e, 0xb5, 0x08, 0xd3, 0xf7, 0x68, 0x84, 0x13, - 0x17, 0x3f, 0x22, 0x2d, 0xca, 0x2e, 0xf1, 0x9d, 0xc9, 0x55, 0x15, 0x81, 0x6c, 0x82, 0x69, 0x5f, - 0x69, 0x0d, 0x66, 0x12, 0x52, 0x44, 0xf9, 0xef, 0xc3, 0xb0, 0x00, 0xa9, 0x15, 0x55, 0x84, 0xea, - 0xd2, 0x5d, 0x81, 0xd8, 0x99, 0xe7, 0xf3, 0x56, 0x48, 0xb6, 0x25, 0x83, 0xb5, 0x0f, 0x67, 0xd9, - 0x36, 0x1b, 0x4b, 0x55, 0xd3, 0xf1, 0x3c, 0x8c, 0xb6, 0x99, 0xa2, 0x10, 0xba, 0x3f, 0xe2, 0xd3, - 0x68, 0xd0, 0x1e, 0x61, 0x80, 0x9a, 0xfb, 0x23, 0x4a, 0x2e, 0x02, 0x20, 0x12, 0x9b, 0x29, 0x56, - 0x01, 0x24, 0xe7, 0xae, 0x4c, 0x02, 0x18, 0xa3, 0xc7, 0xe7, 0x8d, 0x8d, 0x7f, 0x5b, 0x01, 0xcc, - 0xa6, 0x4a, 0x12, 0x0d, 0xb8, 0x05, 0x23, 0x52, 0x3f, 0x4e, 0x1c, 0x32, 0xe8, 0x2d, 0xb0, 0x15, - 0x11, 0x79, 0x15, 0x4e, 0x7b, 0xf4, 0x9b, 0xa8, 0x9e, 0xaa, 0xc3, 0x04, 0x03, 0x6f, 0xca, 0x7a, - 0x58, 0xbf, 0x80, 0x8e, 0xe5, 0x9a, 0xe7, 0x3f, 0x7d, 0xd4, 0x72, 0x1e, 0xd3, 0x54, 0xc1, 0x1f, - 0xc1, 0x48, 0xad, 0x77, 0xc1, 0xfc, 0xf3, 0x91, 0x85, 0xdb, 0x8a, 0xc5, 0x6a, 0xc1, 0x1c, 0x6b, - 0x52, 0xad, 0xb2, 0xb6, 0xba, 0xd2, 0xdc, 0xfc, 0xb6, 0x3b, 0xf0, 0x09, 0x9c, 0xcf, 0x2c, 0xed, - 0xdb, 0xee, 0xc4, 0x3f, 0x1c, 0x80, 0x59, 0xbe, 0x99, 0xa4, 0x67, 0xf0, 0xf1, 0x97, 0x9a, 0x9f, - 0xcb, 0x79, 0xef, 0xed, 0x8c, 0xf3, 0x5e, 0x64, 0xd1, 0xcf, 0x7b, 0x8d, 0x53, 0xde, 0x77, 0xb3, - 0x4f, 0x79, 0xd1, 0x09, 0x65, 0x9e, 0xf2, 0x26, 0xcf, 0x76, 0x97, 0xf2, 0xcf, 0x76, 0xf1, 0xe0, - 0x29, 0xe3, 0x6c, 0x37, 0xeb, 0x44, 0x37, 0x11, 0x28, 0x35, 0xf2, 0x72, 0x03, 0xa5, 0x5e, 0x85, - 0xe1, 0x4a, 0xbb, 0xad, 0x05, 0x1e, 0xe2, 0xf0, 0x38, 0xed, 0x36, 0xef, 0x3c, 0x89, 0x94, 0xeb, - 0x3c, 0x64, 0xac, 0xf3, 0xef, 0x01, 0x2c, 0xe0, 0xf5, 0x08, 0x1c, 0xb8, 0x31, 0xa4, 0x40, 0x0d, - 0x9f, 0x5f, 0x9a, 0xc0, 0x81, 0xd3, 0xdd, 0x2b, 0x31, 0x31, 0x57, 0xec, 0xad, 0x1d, 0x28, 0xa5, - 0xa7, 0xcf, 0x4b, 0x58, 0xba, 0xfe, 0xa0, 0x00, 0x17, 0x85, 0x92, 0x93, 0xf8, 0xc0, 0x4f, 0x3e, - 0x3b, 0xdf, 0x86, 0x71, 0xc1, 0xbb, 0x15, 0x7f, 0x08, 0xfc, 0x80, 0x5d, 0x2e, 0xc6, 0x7c, 0x45, - 0x37, 0xc8, 0xc8, 0xdb, 0x30, 0x82, 0x7f, 0xc4, 0x07, 0x43, 0xac, 0x67, 0x46, 0x91, 0xb4, 0x9e, - 0x3c, 0x1e, 0x52, 0xa4, 0xd6, 0xd7, 0x70, 0x29, 0xaf, 0xe2, 0x2f, 0xa1, 0x5f, 0xfe, 0x4d, 0x01, - 0xce, 0x0b, 0xf1, 0xc6, 0x52, 0xf1, 0x5c, 0xbb, 0xce, 0x09, 0xc2, 0x95, 0xef, 0xc3, 0x18, 0x2b, - 0x50, 0xd6, 0xbb, 0x5f, 0x6c, 0xad, 0xc2, 0x72, 0x88, 0x31, 0x8b, 0x4e, 0xe4, 0x88, 0xf0, 0x1b, - 0xe7, 0xa0, 0x25, 0x3d, 0x23, 0xb6, 0xce, 0x6c, 0x7d, 0x09, 0x17, 0xb2, 0x9b, 0xf0, 0x12, 0xfa, - 0xe7, 0x3e, 0xcc, 0x65, 0x6c, 0x0a, 0xcf, 0xb7, 0x27, 0x7f, 0x01, 0xe7, 0x33, 0x65, 0xbd, 0x84, - 0x6a, 0x2e, 0x33, 0x8d, 0x23, 0x7a, 0x09, 0x43, 0x68, 0x3d, 0x84, 0x73, 0x19, 0x92, 0x5e, 0x42, - 0x15, 0xef, 0xc1, 0xac, 0xd2, 0xb4, 0x5f, 0xa8, 0x86, 0x6b, 0x70, 0x91, 0x0b, 0x7a, 0x39, 0xa3, - 0xf2, 0x00, 0xce, 0x0b, 0x71, 0x2f, 0xa1, 0xf7, 0x96, 0xe1, 0x42, 0x6c, 0x50, 0x67, 0xe8, 0x49, - 0xc7, 0x5e, 0x64, 0xac, 0x55, 0xb8, 0x1c, 0x4b, 0xca, 0x51, 0x1a, 0x8e, 0x2f, 0x8d, 0xab, 0x83, - 0xf1, 0x28, 0xbd, 0x94, 0x11, 0x7d, 0x08, 0x67, 0x0d, 0xa1, 0x2f, 0x4d, 0x55, 0x5a, 0x81, 0x29, - 0x2e, 0xd8, 0x54, 0x9d, 0xe7, 0x75, 0xd5, 0x79, 0x6c, 0xfe, 0x4c, 0x2c, 0x12, 0xc1, 0x3b, 0x6f, - 0x66, 0x68, 0xd3, 0x6b, 0xa8, 0x4d, 0x4b, 0x92, 0xb8, 0x86, 0x6f, 0xc3, 0x10, 0x87, 0x88, 0xfa, - 0x65, 0x08, 0xe3, 0xc6, 0x02, 0x67, 0x13, 0xc4, 0xd6, 0xf7, 0xe1, 0x22, 0xb7, 0x44, 0xe3, 0x83, - 0x4a, 0xd3, 0x5a, 0xfc, 0x28, 0x61, 0x88, 0x9e, 0x13, 0x72, 0x93, 0xf4, 0x39, 0xf6, 0xe8, 0xae, - 0x9c, 0xdb, 0x79, 0xf2, 0x8f, 0x75, 0x75, 0x4d, 0x1a, 0x98, 0x7d, 0x99, 0x06, 0xe6, 0x55, 0xb8, - 0xa2, 0x0c, 0xcc, 0x64, 0x31, 0x72, 0x6a, 0x59, 0x5f, 0xc2, 0x79, 0xde, 0x50, 0x19, 0x52, 0x68, - 0x56, 0xe3, 0x83, 0x44, 0x33, 0x67, 0x45, 0x33, 0x4d, 0xea, 0x9c, 0x46, 0xfe, 0xbd, 0x82, 0xfc, - 0xe4, 0xb2, 0x85, 0xff, 0xbc, 0x2d, 0xee, 0x75, 0x28, 0xab, 0x0e, 0x31, 0x6b, 0xf4, 0x7c, 0xe6, - 0xf6, 0x1a, 0xcc, 0xe8, 0x62, 0xdc, 0x06, 0xdd, 0xb9, 0x83, 0x27, 0x48, 0x6f, 0xb1, 0xcf, 0x02, - 0x01, 0x72, 0xda, 0x95, 0x32, 0xfa, 0x0d, 0xe9, 0x6d, 0x45, 0x69, 0xd5, 0xe1, 0x42, 0x7a, 0x28, - 0xdc, 0x86, 0xbc, 0x4f, 0x40, 0x3e, 0x61, 0x9f, 0x30, 0x42, 0xc4, 0x60, 0xe4, 0x0a, 0x95, 0xdf, - 0x31, 0x67, 0x97, 0x5c, 0x96, 0x25, 0x97, 0x9a, 0x44, 0xfb, 0x59, 0xe9, 0x72, 0x3e, 0xfc, 0x18, - 0x88, 0x44, 0x2d, 0xd4, 0x6c, 0x59, 0xf4, 0x39, 0xe8, 0x5f, 0xa8, 0xd9, 0xe2, 0x22, 0x13, 0x6a, - 0x82, 0x8d, 0x30, 0xb0, 0x19, 0x2c, 0xa9, 0x91, 0xf7, 0x1d, 0x43, 0x23, 0xbf, 0x3f, 0x30, 0xd2, - 0x5f, 0x1c, 0xb0, 0x49, 0xcd, 0xdd, 0xf3, 0x1e, 0xba, 0xd1, 0xbe, 0x2a, 0xb0, 0x62, 0x7d, 0x05, - 0x53, 0x46, 0xf1, 0xe2, 0x2b, 0xee, 0x7a, 0x03, 0x8b, 0xe9, 0xb3, 0x0b, 0x15, 0x0c, 0xab, 0x41, - 0x97, 0xc5, 0x38, 0x5f, 0x6f, 0x1a, 0x4e, 0x1d, 0xaf, 0xf7, 0xda, 0x12, 0x69, 0xfd, 0xee, 0x80, - 0x26, 0x5d, 0xbb, 0xd7, 0xd6, 0xa5, 0x75, 0x77, 0x00, 0xf8, 0x0c, 0xd1, 0x1a, 0xc7, 0x14, 0xc0, - 0x31, 0x11, 0xad, 0xc2, 0x97, 0x64, 0x5b, 0x23, 0x3a, 0xee, 0xbd, 0x37, 0x11, 0x7f, 0xcc, 0x99, - 0xe4, 0x55, 0x4f, 0x15, 0x7f, 0x2c, 0x44, 0x87, 0xb6, 0x4e, 0x44, 0xbe, 0x9f, 0xbc, 0x9c, 0x31, - 0x88, 0x07, 0x56, 0xaf, 0xc8, 0x13, 0xec, 0x74, 0xdb, 0x4e, 0x76, 0x3f, 0xe3, 0x29, 0xcc, 0x30, - 0x5e, 0xf7, 0x11, 0x1a, 0x16, 0x4b, 0xdf, 0x44, 0xd4, 0xe3, 0x6b, 0xfb, 0x10, 0x96, 0x73, 0xad, - 0x4b, 0x39, 0x31, 0xb1, 0xf0, 0xbf, 0xc7, 0x72, 0xea, 0x54, 0xe1, 0xec, 0x6c, 0xf9, 0x38, 0x89, - 0xec, 0xd5, 0x25, 0xaf, 0xd9, 0xf6, 0x5d, 0x65, 0x30, 0xf1, 0x49, 0x14, 0xb4, 0xea, 0x54, 0xc0, - 0x6d, 0x9d, 0xc8, 0x7a, 0xb5, 0x6b, 0x54, 0xfb, 0x08, 0x0c, 0x6c, 0x2d, 0x6c, 0xad, 0x16, 0x0b, - 0xd6, 0x2d, 0x00, 0xad, 0x24, 0x80, 0xa1, 0xf5, 0x0d, 0x7b, 0xad, 0xb2, 0x5a, 0x3c, 0x45, 0x66, - 0xe0, 0xcc, 0xc3, 0x95, 0xf5, 0xc5, 0x8d, 0x87, 0xb5, 0x7a, 0x6d, 0xad, 0x62, 0x6f, 0x2d, 0x54, - 0xec, 0xc5, 0x62, 0xc1, 0xfa, 0x1a, 0xa6, 0xcd, 0x16, 0xbe, 0xd4, 0x49, 0x18, 0xc1, 0x94, 0xd2, - 0x67, 0xee, 0x3f, 0xdc, 0xd2, 0x22, 0x5a, 0x85, 0xf1, 0x97, 0x8c, 0xcc, 0x12, 0x66, 0xa2, 0xf8, - 0x8c, 0x34, 0x22, 0xf2, 0x3a, 0x57, 0x0b, 0x92, 0x37, 0x97, 0x99, 0x5a, 0x50, 0x8f, 0xf5, 0x02, - 0x5c, 0xfa, 0xbe, 0x07, 0xd3, 0x66, 0xa9, 0xc7, 0xf5, 0x52, 0xbd, 0x82, 0xa1, 0xbe, 0xda, 0xb5, - 0x26, 0x42, 0xf4, 0x63, 0x03, 0xb1, 0xb2, 0x7e, 0x0f, 0x8a, 0x82, 0x2a, 0xde, 0x79, 0xaf, 0x4a, - 0x37, 0x62, 0x21, 0xe3, 0x12, 0xa6, 0x0c, 0x4a, 0xf7, 0xa1, 0xc8, 0x56, 0x4c, 0xc1, 0xc9, 0x0b, - 0x98, 0x86, 0xc1, 0xd5, 0xf8, 0x38, 0xc7, 0xe6, 0x3f, 0xf0, 0x76, 0x4f, 0xe4, 0x04, 0x91, 0x8c, - 0x83, 0x1b, 0xb5, 0xd5, 0x6f, 0xf2, 0x3a, 0x0c, 0xdd, 0x75, 0x5b, 0x91, 0x70, 0x8d, 0xc4, 0x9b, - 0x3c, 0x13, 0xcb, 0x11, 0xb6, 0x20, 0xb0, 0x6c, 0x38, 0xa3, 0x15, 0x78, 0x82, 0xaa, 0x92, 0x12, - 0x0c, 0xaf, 0xd3, 0x6f, 0xb4, 0xf2, 0xe5, 0x4f, 0xeb, 0x1d, 0x38, 0x23, 0x62, 0x0c, 0xb5, 0x6e, - 0xba, 0x22, 0xee, 0x8a, 0x17, 0x8c, 0x0b, 0xab, 0x42, 0x24, 0xa2, 0x18, 0xdf, 0x76, 0xbb, 0xf9, - 0x9c, 0x7c, 0x6c, 0xa3, 0x38, 0x21, 0xdf, 0x6b, 0xf2, 0x14, 0xa8, 0xd7, 0x70, 0xfe, 0xad, 0x3e, - 0x28, 0x25, 0xbc, 0x0c, 0x0b, 0xfb, 0x4e, 0xab, 0x45, 0xbd, 0x3d, 0x4a, 0xae, 0xc3, 0xc0, 0xd6, - 0xc6, 0xd6, 0xa6, 0xf0, 0x92, 0xca, 0xe8, 0x02, 0x06, 0x52, 0x34, 0x36, 0x52, 0x90, 0x07, 0x70, - 0x46, 0x46, 0x11, 0x2b, 0x94, 0x18, 0xa1, 0x8b, 0xdd, 0x63, 0x92, 0xd3, 0x7c, 0xe4, 0x2d, 0xe1, - 0x12, 0xf9, 0x61, 0xc7, 0x0d, 0x68, 0x13, 0x3d, 0x3f, 0xf1, 0x51, 0xbd, 0x86, 0xb1, 0x75, 0x32, - 0xf2, 0x3d, 0x18, 0xaf, 0xd5, 0x36, 0xe2, 0xd2, 0x07, 0x8d, 0x13, 0x22, 0x1d, 0x65, 0x1b, 0x84, - 0xfc, 0x4a, 0xb0, 0xf5, 0x87, 0x05, 0x98, 0xcd, 0x71, 0xb7, 0x90, 0xd7, 0x8d, 0x7e, 0x98, 0xd2, - 0xfa, 0x41, 0x92, 0x2c, 0x9f, 0x12, 0x1d, 0xb1, 0xa0, 0xc5, 0x64, 0xf7, 0x9f, 0x20, 0x26, 0x7b, - 0xf9, 0x54, 0x1c, 0x87, 0x4d, 0x5e, 0x85, 0xfe, 0x5a, 0x6d, 0x43, 0xb8, 0xd5, 0x49, 0xdc, 0x02, - 0x8d, 0x98, 0x11, 0x54, 0x01, 0x46, 0x24, 0xc8, 0x3a, 0x0d, 0x13, 0xc6, 0xc0, 0x58, 0x16, 0x8c, - 0xeb, 0x35, 0x64, 0xa3, 0xbf, 0xe0, 0x37, 0xd5, 0xe8, 0xb3, 0xbf, 0xad, 0x1f, 0x9b, 0x7d, 0x46, - 0x2e, 0x02, 0xc8, 0xf3, 0x5a, 0xb7, 0x29, 0x4f, 0x7e, 0x04, 0x64, 0xa5, 0x49, 0xae, 0xc0, 0x78, - 0x40, 0x9b, 0x6e, 0x40, 0x1b, 0x51, 0xbd, 0x13, 0x88, 0x8b, 0x31, 0xf6, 0x98, 0x84, 0x6d, 0x07, - 0x2d, 0xf2, 0x1d, 0x18, 0xe2, 0x07, 0xc9, 0xa2, 0xf5, 0xd2, 0x48, 0xa8, 0xd5, 0x36, 0xd6, 0xee, - 0x56, 0xf8, 0x41, 0xb7, 0x2d, 0x48, 0xac, 0x2a, 0x8c, 0x69, 0xad, 0xea, 0x55, 0xfa, 0x34, 0x0c, - 0xea, 0x5e, 0x4a, 0xfe, 0xc3, 0xfa, 0xcd, 0x02, 0x4c, 0xe3, 0x34, 0xd8, 0x73, 0xd9, 0xf6, 0x10, - 0xb7, 0x65, 0xde, 0x18, 0xb4, 0x0b, 0xc6, 0xa0, 0x25, 0x68, 0xd5, 0xe8, 0xbd, 0x9f, 0x1a, 0xbd, - 0x0b, 0x59, 0xa3, 0x87, 0x4b, 0x80, 0xeb, 0x7b, 0xfa, 0xa0, 0xe9, 0xc7, 0x75, 0xbf, 0x5d, 0x80, - 0x29, 0xad, 0x4e, 0xaa, 0x81, 0x77, 0x8c, 0x2a, 0x9d, 0xcf, 0xa8, 0x52, 0x6a, 0x3e, 0x55, 0x53, - 0x35, 0x7a, 0xa5, 0x5b, 0x8d, 0xb2, 0xa6, 0x93, 0x31, 0x4d, 0xfe, 0xa2, 0x00, 0x33, 0x99, 0x7d, - 0x40, 0xce, 0x32, 0xfd, 0xbf, 0x11, 0xd0, 0x48, 0xf4, 0xbc, 0xf8, 0xc5, 0xe0, 0x2b, 0x61, 0xd8, - 0xa1, 0x81, 0xe8, 0x77, 0xf1, 0x8b, 0xbc, 0x02, 0x13, 0x9b, 0x34, 0x70, 0xfd, 0x26, 0xbf, 0x98, - 0xc0, 0x23, 0x7e, 0x27, 0x6c, 0x13, 0x48, 0x2e, 0xc0, 0xa8, 0x8a, 0x58, 0xe5, 0x3e, 0x5c, 0x3b, - 0x06, 0x30, 0xd9, 0x8b, 0xee, 0x1e, 0x3f, 0xf8, 0x61, 0xcc, 0xe2, 0x17, 0x5b, 0x80, 0xa5, 0x47, - 0x75, 0x88, 0x2f, 0xc0, 0xd2, 0x5d, 0x7a, 0x16, 0x86, 0x3e, 0xb3, 0x71, 0x1e, 0x63, 0xce, 0x09, - 0x5b, 0xfc, 0x22, 0x93, 0x18, 0x5a, 0x8e, 0xf7, 0x62, 0x30, 0xa4, 0xfc, 0x7d, 0x98, 0xce, 0xea, - 0xd7, 0xac, 0xaf, 0x40, 0xf0, 0xf6, 0x29, 0xde, 0x2f, 0x61, 0xaa, 0xd2, 0x6c, 0xc6, 0xd3, 0x95, - 0x8f, 0x2a, 0x5f, 0x27, 0xb8, 0x4f, 0x53, 0xa8, 0xb5, 0x03, 0x2b, 0x9e, 0x1b, 0xd9, 0x53, 0x4b, - 0xdf, 0xb8, 0x61, 0xe4, 0x7a, 0x7b, 0x9a, 0xe3, 0xd5, 0x3e, 0xbb, 0x4e, 0x9f, 0x66, 0x4c, 0x01, - 0xa6, 0x71, 0x98, 0xb2, 0x39, 0x3c, 0x43, 0xf8, 0xb4, 0x26, 0x36, 0x5e, 0xba, 0x66, 0x4d, 0xb9, - 0x31, 0xa2, 0xbf, 0xd2, 0x78, 0x6c, 0x7d, 0x0f, 0xce, 0xf2, 0x65, 0xbf, 0x5b, 0xe5, 0x45, 0xb5, - 0x75, 0x3f, 0xb1, 0xf5, 0xae, 0xf4, 0xe4, 0x74, 0xad, 0x99, 0x3d, 0x6e, 0xd4, 0x05, 0x8b, 0xfc, - 0x6f, 0x05, 0x98, 0x4b, 0xb0, 0xd6, 0x9e, 0x79, 0x0d, 0xb9, 0xe7, 0xbc, 0x9a, 0x0c, 0xdd, 0x47, - 0x5d, 0x89, 0x3b, 0x48, 0xdd, 0xa6, 0x8a, 0xde, 0x27, 0xb7, 0x00, 0x38, 0xb3, 0xa6, 0xe2, 0xe0, - 0xf1, 0x80, 0x88, 0x72, 0x42, 0x25, 0x47, 0x23, 0x21, 0x1d, 0xc8, 0xea, 0x77, 0xf1, 0x8d, 0xf4, - 0xf2, 0x9f, 0x63, 0x9e, 0x15, 0x2a, 0xd8, 0xeb, 0x39, 0x8e, 0xf4, 0x2c, 0xf9, 0xd6, 0xdf, 0xef, - 0x87, 0x59, 0x7d, 0x00, 0x9f, 0xa7, 0xad, 0x9b, 0x30, 0xb6, 0xe0, 0x7b, 0x11, 0xfd, 0x26, 0xd2, - 0xf2, 0x5c, 0x10, 0x15, 0x8d, 0xa0, 0x30, 0x42, 0xbd, 0xe6, 0x80, 0x3a, 0xd3, 0xf5, 0x8c, 0x68, - 0xcd, 0x98, 0x90, 0x2c, 0xc0, 0xc4, 0x3a, 0x7d, 0x9a, 0xea, 0x40, 0x8c, 0x18, 0xf5, 0xe8, 0xd3, - 0xba, 0xd6, 0x89, 0x7a, 0x18, 0x9f, 0xc1, 0x43, 0x76, 0x61, 0x52, 0x4e, 0x2e, 0xa3, 0x33, 0xe7, - 0xf4, 0x9d, 0xd7, 0x9c, 0xce, 0x3c, 0x0f, 0x04, 0x2b, 0x21, 0xa7, 0x0f, 0x13, 0x12, 0x59, 0xd3, - 0x79, 0x89, 0x3c, 0xb5, 0x81, 0xb9, 0xb5, 0x6b, 0x18, 0x23, 0x1e, 0x37, 0x99, 0xd2, 0x40, 0x17, - 0x61, 0x6d, 0x42, 0x29, 0x3d, 0x1e, 0xa2, 0xb4, 0xb7, 0x60, 0x88, 0x43, 0x85, 0xaa, 0x24, 0x53, - 0x18, 0x29, 0x6a, 0xee, 0xcb, 0x68, 0x8a, 0x5d, 0x89, 0xc3, 0xac, 0x65, 0xf4, 0x2f, 0x29, 0x1a, - 0xa5, 0xac, 0xde, 0x4e, 0x0e, 0x2f, 0x86, 0x3a, 0xcb, 0xe1, 0xd5, 0x63, 0x71, 0xe4, 0x95, 0x94, - 0x05, 0x74, 0xd1, 0xe9, 0x92, 0x44, 0xc5, 0x6e, 0xc0, 0xb0, 0x00, 0x25, 0x92, 0x2b, 0xc5, 0x9f, - 0x9f, 0x24, 0xb0, 0xde, 0x87, 0x73, 0xe8, 0x2f, 0x74, 0xbd, 0xbd, 0x16, 0xdd, 0x0e, 0x8d, 0x4b, - 0x25, 0xbd, 0x3e, 0xeb, 0x0f, 0x61, 0x2e, 0x8b, 0xb7, 0xe7, 0x97, 0xcd, 0xd3, 0x9d, 0xfc, 0x59, - 0x1f, 0x4c, 0xaf, 0x84, 0xba, 0xc2, 0xa5, 0x52, 0x9e, 0x64, 0xa4, 0xe1, 0xc0, 0x3e, 0x59, 0x3e, - 0x95, 0x95, 0x66, 0xe3, 0x2d, 0xed, 0xba, 0x6b, 0x5f, 0xb7, 0xfc, 0x1a, 0x6c, 0xdb, 0x52, 0x17, - 0x5e, 0x5f, 0x85, 0x81, 0x75, 0xb6, 0x54, 0xf7, 0x8b, 0xb1, 0xe3, 0x1c, 0x0c, 0x84, 0xd7, 0x4d, - 0xd9, 0x16, 0xc9, 0x7e, 0x90, 0xbb, 0xa9, 0x4b, 0xad, 0x03, 0xbd, 0xf3, 0x47, 0x2c, 0x9f, 0x4a, - 0xdd, 0x6f, 0x7d, 0x07, 0xc6, 0x2a, 0xcd, 0x03, 0x1e, 0x92, 0xe9, 0x7b, 0x89, 0xcf, 0x52, 0xc3, - 0x2c, 0x9f, 0xb2, 0x75, 0x42, 0x72, 0x8d, 0xdf, 0x6a, 0x18, 0xca, 0xc9, 0xa9, 0xc1, 0x94, 0xb5, - 0x4a, 0xbb, 0x5d, 0x1d, 0x81, 0x21, 0x7e, 0xd1, 0xd2, 0xfa, 0x12, 0xe6, 0x44, 0x20, 0x0f, 0xf7, - 0x8e, 0x62, 0xb8, 0x4f, 0x18, 0xc7, 0x6a, 0x75, 0x0b, 0xbe, 0xb9, 0x04, 0x80, 0xb6, 0xd0, 0x8a, - 0xd7, 0xa4, 0xdf, 0x88, 0x48, 0x42, 0x0d, 0x62, 0xbd, 0x0d, 0xa3, 0xaa, 0x87, 0x50, 0xe1, 0xd7, - 0x36, 0x3b, 0xec, 0xad, 0x69, 0xe3, 0x16, 0xaf, 0xbc, 0xba, 0x7b, 0xce, 0x68, 0xbb, 0xc8, 0x92, - 0xc3, 0x2d, 0x04, 0x17, 0x66, 0x12, 0x93, 0x20, 0x4e, 0xc2, 0xa0, 0x74, 0x74, 0x1e, 0xea, 0xa8, - 0x7e, 0x27, 0x55, 0xf8, 0xbe, 0x63, 0xa9, 0xf0, 0xd6, 0xbf, 0xec, 0x43, 0xe3, 0x32, 0xd5, 0x1f, - 0x09, 0x3f, 0x9d, 0xee, 0x2b, 0xac, 0xc2, 0x28, 0xb6, 0x7e, 0x51, 0x5e, 0x18, 0xec, 0x1e, 0x87, - 0x32, 0xf2, 0x93, 0xc3, 0xf2, 0x29, 0x0c, 0x3e, 0x89, 0xd9, 0xc8, 0xc7, 0x30, 0xbc, 0xe4, 0x35, - 0x51, 0x42, 0xff, 0x09, 0x24, 0x48, 0x26, 0x36, 0x26, 0x58, 0xe5, 0x2d, 0xf6, 0x09, 0x73, 0xf7, - 0x8e, 0xad, 0x41, 0x62, 0x2b, 0x77, 0x30, 0xcf, 0xca, 0x1d, 0x4a, 0x58, 0xb9, 0x16, 0x0c, 0x6e, - 0x04, 0x4d, 0x91, 0xdb, 0x66, 0x72, 0x7e, 0x5c, 0x74, 0x1c, 0xc2, 0x6c, 0x8e, 0xb2, 0xfe, 0x47, - 0x01, 0x66, 0xef, 0xd1, 0x28, 0x73, 0x0e, 0x19, 0xbd, 0x52, 0x78, 0xe1, 0x5e, 0xe9, 0x7b, 0x9e, - 0x5e, 0x51, 0xad, 0xee, 0xcf, 0x6b, 0xf5, 0x40, 0x5e, 0xab, 0x07, 0xf3, 0x5b, 0x7d, 0x0f, 0x86, - 0x78, 0x53, 0x99, 0x25, 0xbf, 0x12, 0xd1, 0x83, 0xd8, 0x92, 0xd7, 0xa3, 0xe8, 0x6c, 0x8e, 0x63, - 0x8a, 0xe4, 0xaa, 0x13, 0xea, 0x96, 0xbc, 0xf8, 0x69, 0xfd, 0x00, 0xaf, 0x1a, 0xaf, 0xfa, 0x8d, - 0xc7, 0x9a, 0x47, 0x78, 0x98, 0x7f, 0xa1, 0xc9, 0x13, 0x04, 0x46, 0xc5, 0x31, 0xb6, 0xa4, 0x20, - 0x97, 0x61, 0x6c, 0xc5, 0xbb, 0xeb, 0x07, 0x0d, 0xba, 0xe1, 0xb5, 0xb8, 0xf4, 0x11, 0x5b, 0x07, - 0x09, 0x4f, 0x89, 0x28, 0x21, 0x76, 0x3f, 0x20, 0x20, 0xe1, 0x7e, 0x60, 0xb0, 0x9d, 0x79, 0x9b, - 0xe3, 0x84, 0x23, 0x86, 0xfd, 0xdd, 0xcd, 0x72, 0x57, 0x26, 0x7e, 0x2f, 0xc2, 0x5d, 0x38, 0x67, - 0xd3, 0x76, 0xcb, 0x61, 0x3a, 0xdd, 0x81, 0xcf, 0xe9, 0x55, 0x9b, 0x2f, 0x67, 0x5c, 0x13, 0x34, - 0x63, 0x2a, 0x54, 0x95, 0xfb, 0xba, 0x54, 0xf9, 0x00, 0xae, 0xdc, 0xa3, 0x91, 0xb9, 0xa0, 0xc6, - 0xfe, 0x66, 0xd1, 0xf8, 0x65, 0x18, 0x09, 0x4d, 0x5f, 0xb9, 0xbc, 0xf6, 0x96, 0xc9, 0xb8, 0xf3, - 0xa6, 0x3c, 0x4d, 0x12, 0x72, 0xd4, 0x5f, 0xd6, 0x27, 0x50, 0xce, 0x2b, 0xee, 0x78, 0x21, 0xaf, - 0x2e, 0x5c, 0xce, 0x17, 0x20, 0xaa, 0xbb, 0x04, 0xd2, 0xaf, 0x2e, 0x3e, 0xa1, 0x5e, 0xb5, 0x35, - 0x5d, 0xf1, 0xe2, 0x0f, 0xab, 0x2a, 0x83, 0xff, 0x5e, 0xa0, 0xba, 0x75, 0x3c, 0xb2, 0x36, 0x05, - 0xc4, 0xfd, 0x5a, 0x81, 0x11, 0x09, 0x13, 0xfd, 0x3a, 0x9b, 0x59, 0x53, 0xd9, 0xa1, 0x4d, 0x29, - 0x40, 0xb1, 0x59, 0x3f, 0x90, 0xc7, 0x37, 0x26, 0xc7, 0xf1, 0xee, 0xcd, 0x1e, 0xe7, 0xbc, 0xc6, - 0xf2, 0xe1, 0x9c, 0x29, 0x5b, 0x77, 0xcb, 0x17, 0x35, 0xb7, 0x3c, 0xf7, 0xc6, 0x5f, 0x36, 0xdd, - 0xc4, 0xc2, 0xd3, 0xa0, 0x81, 0xc8, 0x25, 0xdd, 0xf9, 0x3e, 0x9e, 0xbe, 0x88, 0x7b, 0x1b, 0xe6, - 0xb2, 0x0a, 0xd4, 0xec, 0x40, 0xe5, 0xe1, 0x15, 0xfa, 0xce, 0x22, 0x5c, 0x92, 0xd9, 0xa5, 0x7c, - 0x3f, 0x0a, 0xa3, 0xc0, 0x69, 0xd7, 0x1a, 0x81, 0xdb, 0x8e, 0xb9, 0x2c, 0x18, 0xe2, 0x10, 0xd1, - 0x13, 0xfc, 0x28, 0x8c, 0xd3, 0x08, 0x8c, 0xf5, 0x2b, 0x05, 0xb0, 0x8c, 0x38, 0x2d, 0x1c, 0xe7, - 0xcd, 0xc0, 0x7f, 0xe2, 0x36, 0xb5, 0xe3, 0xa7, 0xd7, 0x0d, 0xd7, 0x27, 0xbf, 0x93, 0x98, 0x0c, - 0x11, 0x17, 0x6b, 0xe6, 0xed, 0x84, 0x3b, 0x92, 0x2b, 0x9e, 0x18, 0xbb, 0x65, 0x5e, 0x88, 0x50, - 0x6e, 0xca, 0xff, 0x55, 0x80, 0xab, 0x5d, 0xeb, 0x20, 0xda, 0xb3, 0x0b, 0xc5, 0x24, 0x4e, 0xcc, - 0xa0, 0xb2, 0x16, 0xb7, 0x91, 0x96, 0xb0, 0x73, 0x87, 0xc7, 0xa1, 0xcb, 0xf8, 0xa6, 0xb6, 0x92, - 0x9c, 0x92, 0x77, 0xf2, 0xda, 0x63, 0xfe, 0x0a, 0x3f, 0x72, 0x5a, 0x0b, 0xe8, 0x00, 0xe8, 0x8f, - 0xef, 0x14, 0x44, 0x0c, 0x5a, 0x4f, 0xa6, 0xc9, 0xd0, 0x88, 0xad, 0x4f, 0xf1, 0xbb, 0xce, 0xae, - 0xf4, 0xf1, 0x3e, 0xb5, 0x05, 0xb8, 0x9a, 0x88, 0x1d, 0x78, 0x0e, 0x21, 0x11, 0xcc, 0xb0, 0xee, - 0x67, 0xba, 0xf7, 0xbd, 0xc0, 0xef, 0xb4, 0x7f, 0x3e, 0xa3, 0xfe, 0x47, 0x05, 0x1e, 0xcc, 0xa9, - 0x17, 0x2b, 0x06, 0x7a, 0x01, 0x20, 0x86, 0x26, 0x82, 0xfa, 0x15, 0x62, 0xe7, 0x0e, 0x37, 0xb9, - 0xf1, 0x54, 0x61, 0x8f, 0x0b, 0xd0, 0xd8, 0x7e, 0xbe, 0x23, 0xf9, 0x26, 0x06, 0x0c, 0xa8, 0xd2, - 0x8f, 0xd7, 0xef, 0xef, 0x48, 0xff, 0xc7, 0x09, 0xf9, 0xf6, 0x61, 0x9a, 0xad, 0x00, 0x95, 0x4e, - 0xb4, 0xef, 0x07, 0x6e, 0x24, 0xaf, 0xa7, 0x90, 0x4d, 0x91, 0x11, 0x80, 0x73, 0x7d, 0xf8, 0xb3, - 0xc3, 0xf2, 0xbb, 0x27, 0xc9, 0xfb, 0x29, 0x65, 0x6e, 0xa9, 0x2c, 0x02, 0xd6, 0x2c, 0xf4, 0x2f, - 0xd8, 0xab, 0xb8, 0xe0, 0xd9, 0xab, 0x6a, 0xc1, 0xb3, 0x57, 0xad, 0xbf, 0xec, 0x83, 0x32, 0xcf, - 0x59, 0x82, 0x71, 0x26, 0xb1, 0xd7, 0x42, 0x0b, 0x5c, 0x39, 0xae, 0x83, 0x21, 0x91, 0x93, 0xa4, - 0xef, 0x38, 0x39, 0x49, 0x7e, 0x09, 0x72, 0x5c, 0x56, 0xc7, 0xf0, 0x02, 0xbc, 0x76, 0x74, 0x58, - 0xbe, 0x1a, 0x7b, 0x01, 0x38, 0x36, 0xcb, 0x1d, 0x90, 0x53, 0x44, 0xda, 0x7f, 0x31, 0xf0, 0x1c, - 0xfe, 0x8b, 0xdb, 0x30, 0x8c, 0xc6, 0xcc, 0xca, 0xa6, 0x88, 0xfc, 0xc4, 0xe9, 0x89, 0x19, 0x8a, - 0xea, 0xae, 0x9e, 0x0e, 0x50, 0x92, 0x59, 0xff, 0xa8, 0x0f, 0x2e, 0xe7, 0xf7, 0xb9, 0xa8, 0xdb, - 0x22, 0x40, 0x1c, 0xe1, 0xd2, 0x2d, 0xa2, 0x06, 0xbf, 0x9d, 0xa7, 0x74, 0x57, 0x45, 0xb4, 0x69, - 0x7c, 0x4c, 0xf7, 0x91, 0x37, 0xad, 0x13, 0xc7, 0x29, 0xc6, 0x05, 0x6c, 0x91, 0xcd, 0x56, 0x80, - 0x8c, 0x6c, 0xb6, 0x02, 0x46, 0x76, 0x61, 0x76, 0x33, 0x70, 0x9f, 0x38, 0x11, 0x7d, 0x40, 0x9f, - 0xf1, 0xcb, 0x42, 0x4b, 0xe2, 0x86, 0x10, 0xbf, 0x3e, 0x7f, 0xfd, 0xe8, 0xb0, 0xfc, 0x4a, 0x9b, - 0x93, 0x60, 0xc6, 0x32, 0x7e, 0xf7, 0xb3, 0x9e, 0xbe, 0x34, 0x94, 0x27, 0xc8, 0xfa, 0x77, 0x05, - 0x38, 0x8f, 0x6a, 0xb9, 0x70, 0xbb, 0xca, 0xc2, 0x9f, 0x2b, 0xb0, 0x52, 0x6f, 0xa0, 0x98, 0x8b, - 0x18, 0x58, 0x69, 0xdc, 0x44, 0xb7, 0x0d, 0x32, 0xb2, 0x02, 0x63, 0xe2, 0x37, 0x7e, 0x7f, 0xfd, - 0x68, 0x10, 0xcc, 0x68, 0x0b, 0x16, 0x4e, 0x75, 0xee, 0x2a, 0xc2, 0x89, 0x2d, 0x84, 0xe1, 0x85, - 0x4d, 0x5b, 0xe7, 0xb5, 0x7e, 0xda, 0x07, 0x17, 0x76, 0x68, 0xe0, 0x3e, 0x7a, 0x96, 0xd3, 0x98, - 0x0d, 0x98, 0x96, 0x20, 0x9e, 0xb7, 0xc4, 0xf8, 0xc4, 0x78, 0x3e, 0x4b, 0x59, 0x55, 0x91, 0xf8, - 0x44, 0x7e, 0x71, 0x99, 0x8c, 0x27, 0x08, 0x99, 0x7c, 0x0b, 0x46, 0x12, 0x99, 0x83, 0x70, 0xfc, - 0xe5, 0x17, 0x1a, 0x0f, 0xd5, 0xf2, 0x29, 0x5b, 0x51, 0x92, 0x5f, 0xcb, 0x3f, 0xaa, 0x12, 0xae, - 0x8f, 0x5e, 0xfe, 0x4f, 0xfc, 0x60, 0xd9, 0xc7, 0xea, 0x68, 0xd8, 0x8c, 0x0f, 0x76, 0xf9, 0x94, - 0x9d, 0x57, 0x52, 0x75, 0x0c, 0x46, 0x2b, 0x78, 0x6e, 0xc7, 0x2c, 0xf7, 0xff, 0xd9, 0x07, 0x97, - 0xe4, 0xc5, 0x9f, 0x9c, 0x6e, 0xfe, 0x1c, 0x66, 0x25, 0xa8, 0xd2, 0x66, 0x0a, 0x03, 0x6d, 0x9a, - 0x3d, 0xcd, 0x73, 0xca, 0xca, 0x9e, 0x76, 0x04, 0x4d, 0xdc, 0xd9, 0x79, 0xec, 0x2f, 0xc7, 0xfb, - 0xf9, 0x71, 0x56, 0x1e, 0x27, 0xf4, 0x42, 0xea, 0x6b, 0xa6, 0xd1, 0x35, 0xc6, 0xfa, 0xd9, 0x4c, - 0x79, 0x4f, 0x07, 0x5e, 0xd4, 0x7b, 0xba, 0x7c, 0x2a, 0xe9, 0x3f, 0xad, 0x4e, 0xc2, 0xf8, 0x3a, - 0x7d, 0x1a, 0xf7, 0xfb, 0xdf, 0x2c, 0x24, 0x52, 0x3d, 0x30, 0x0d, 0x83, 0xe7, 0x7c, 0x28, 0xc4, - 0xa9, 0x80, 0x30, 0xd5, 0x83, 0xae, 0x61, 0x70, 0xd2, 0x15, 0x18, 0xe6, 0x87, 0xd9, 0xcd, 0x63, - 0x58, 0xf8, 0xea, 0x06, 0x0f, 0xbf, 0x56, 0xd9, 0xe4, 0xc6, 0xbe, 0xe0, 0xb7, 0x1e, 0xc0, 0x15, - 0x11, 0xe3, 0x6d, 0x0e, 0x3e, 0x16, 0x74, 0xc2, 0xed, 0xcb, 0x72, 0xe0, 0xd2, 0x3d, 0x9a, 0x5c, - 0x7a, 0x8c, 0x1b, 0x4e, 0x9f, 0xc0, 0x69, 0x03, 0xae, 0x24, 0xa2, 0x56, 0xaa, 0xe6, 0x90, 0x12, - 0x9d, 0xa4, 0xb6, 0x2e, 0x67, 0x15, 0xa1, 0x57, 0xd6, 0xa2, 0x98, 0x1c, 0x36, 0x88, 0x8f, 0xd8, - 0xc2, 0x13, 0xac, 0x7a, 0xd7, 0xb5, 0xef, 0x9a, 0xaf, 0x78, 0x3c, 0x7b, 0xa0, 0xdc, 0x79, 0x15, - 0xd6, 0x9a, 0x30, 0xce, 0x02, 0xac, 0x49, 0x18, 0x97, 0xa8, 0x16, 0x0d, 0x43, 0xeb, 0x3f, 0x0f, - 0x82, 0x25, 0x3a, 0x36, 0xeb, 0x84, 0x5e, 0xf6, 0xc7, 0x6e, 0xaa, 0xb2, 0x62, 0xa3, 0x3a, 0xab, - 0xe7, 0x24, 0x8d, 0xb1, 0x7c, 0xe6, 0xa1, 0x9e, 0xd7, 0x88, 0xa1, 0xc6, 0xcc, 0x4b, 0xb5, 0xfe, - 0xab, 0x9c, 0x65, 0x92, 0x7f, 0x6c, 0x78, 0x65, 0x3b, 0x67, 0x99, 0x34, 0xe4, 0x66, 0x2f, 0x99, - 0xb6, 0x79, 0x24, 0xd2, 0xff, 0x3c, 0x47, 0x22, 0xec, 0x8b, 0xd4, 0x0f, 0x45, 0xb6, 0xcd, 0xbe, - 0x14, 0xdf, 0xa3, 0x3c, 0xbd, 0xd7, 0x51, 0x22, 0xe3, 0x82, 0x06, 0x31, 0xa4, 0x1a, 0x62, 0x88, - 0x0b, 0x45, 0xcd, 0x67, 0xb9, 0xb0, 0x4f, 0x1b, 0x8f, 0x85, 0xaf, 0x58, 0x1e, 0xe8, 0x66, 0xf9, - 0xcc, 0x79, 0x7e, 0x6a, 0xfe, 0x9d, 0x73, 0x44, 0xbd, 0xc1, 0x58, 0xf5, 0x8c, 0x11, 0x49, 0xb1, - 0xe4, 0x47, 0x30, 0xa5, 0x86, 0x3a, 0x11, 0xa2, 0x35, 0x36, 0xff, 0x4a, 0x9c, 0xca, 0xf4, 0xe0, - 0x91, 0x73, 0xf3, 0xc9, 0x9d, 0x9b, 0x19, 0xb4, 0x3c, 0x11, 0x41, 0x43, 0x22, 0xb4, 0xf8, 0x2c, - 0xfd, 0xa0, 0x2b, 0x83, 0x91, 0x7c, 0x01, 0xd3, 0xb5, 0xda, 0x06, 0xbf, 0xcc, 0x61, 0xcb, 0x03, - 0x7e, 0x7b, 0x55, 0x04, 0x6c, 0xe1, 0x70, 0x87, 0xa1, 0x5f, 0x17, 0x97, 0x40, 0xf4, 0xb0, 0x00, - 0x3d, 0x15, 0x43, 0x96, 0x08, 0xfd, 0xa4, 0xfc, 0x1f, 0xaa, 0xbb, 0x0a, 0x4c, 0x15, 0x71, 0x5b, - 0x54, 0x5c, 0x3a, 0x92, 0x13, 0x3b, 0xe7, 0x94, 0xaf, 0xf0, 0x2d, 0x9f, 0xf2, 0xfd, 0x7e, 0x9f, - 0xbc, 0xa1, 0x91, 0x3e, 0x68, 0x3d, 0xf1, 0x61, 0x5f, 0x66, 0x0b, 0x8e, 0xb5, 0x4f, 0x67, 0x56, - 0x8e, 0x54, 0xe5, 0x51, 0xa9, 0x4a, 0x56, 0x36, 0xa9, 0x8e, 0x1d, 0x62, 0x84, 0x71, 0x7a, 0x8a, - 0x5a, 0x91, 0xc6, 0x95, 0x3c, 0x87, 0xeb, 0x7f, 0xf1, 0x73, 0xb8, 0x1f, 0xc3, 0x8c, 0xbc, 0x1a, - 0xb5, 0x40, 0xbd, 0x88, 0x06, 0xf2, 0xc4, 0x7e, 0x32, 0x4e, 0xfa, 0x86, 0xe9, 0xfd, 0x8a, 0xd0, - 0x5f, 0xb1, 0xd7, 0x85, 0x47, 0x87, 0xfd, 0x49, 0x2e, 0x9b, 0x01, 0x71, 0xfc, 0xce, 0x9b, 0x11, - 0xfe, 0x76, 0x99, 0x55, 0x97, 0xfb, 0x59, 0x5c, 0x99, 0xaa, 0xcf, 0xd6, 0x41, 0xd6, 0x02, 0x9c, - 0x37, 0x8b, 0xdf, 0xa4, 0xc1, 0x81, 0x8b, 0xba, 0x77, 0x8d, 0x46, 0xb2, 0xd0, 0x42, 0x5c, 0x28, - 0xd1, 0x03, 0xaa, 0x85, 0x19, 0xf8, 0x7f, 0xfa, 0xa0, 0x9c, 0xd9, 0x88, 0x4a, 0x18, 0xba, 0x7b, - 0x1e, 0x66, 0xd0, 0xb8, 0x00, 0x03, 0x0f, 0x5c, 0xaf, 0xa9, 0x1b, 0x92, 0x8f, 0x5d, 0xaf, 0x69, - 0x23, 0x94, 0xd9, 0x20, 0xb5, 0xce, 0x2e, 0x12, 0x68, 0x26, 0x72, 0xd8, 0xd9, 0xad, 0x33, 0x22, - 0xdd, 0x06, 0x11, 0x64, 0xe4, 0x1a, 0x0c, 0xcb, 0x6c, 0x6b, 0xfd, 0xb1, 0xf7, 0x4c, 0xa6, 0x59, - 0x93, 0x38, 0xf2, 0x11, 0x8c, 0xac, 0xd1, 0xc8, 0x69, 0x3a, 0x91, 0x23, 0xe6, 0x8e, 0x7c, 0x08, - 0x43, 0x82, 0xab, 0x45, 0xb1, 0x43, 0x8f, 0x1c, 0x08, 0x88, 0xad, 0x58, 0xb0, 0x03, 0xdd, 0xb0, - 0xdd, 0x72, 0x9e, 0xa9, 0x60, 0x52, 0xd6, 0x81, 0x31, 0x88, 0xbc, 0x63, 0x86, 0x5c, 0xc4, 0xc7, - 0x67, 0x99, 0x1d, 0x12, 0x07, 0x64, 0x2c, 0x63, 0x18, 0x48, 0xdc, 0xd5, 0x22, 0x9b, 0xa0, 0x95, - 0xc9, 0x6d, 0x50, 0xda, 0x26, 0xa3, 0xf5, 0x5b, 0x63, 0x70, 0x66, 0xd3, 0xd9, 0x73, 0x3d, 0xa6, - 0x51, 0xd8, 0x34, 0xf4, 0x3b, 0x41, 0x83, 0x92, 0x0a, 0x4c, 0x9a, 0x01, 0xdc, 0x3d, 0xc2, 0xd3, - 0x99, 0xd2, 0x64, 0xc2, 0xc8, 0x3c, 0x8c, 0xaa, 0x4b, 0xe3, 0x42, 0xd3, 0xc9, 0xb8, 0x4c, 0xbe, - 0x7c, 0xca, 0x8e, 0xc9, 0xc8, 0x7b, 0xc6, 0xe1, 0xe3, 0x69, 0x95, 0xff, 0x00, 0x69, 0xe7, 0x79, - 0x84, 0xad, 0xe7, 0x37, 0x4d, 0x6d, 0x8d, 0x9f, 0xb0, 0xfd, 0x20, 0x75, 0x1e, 0x39, 0x68, 0xd4, - 0x38, 0xe5, 0x94, 0x45, 0x45, 0x35, 0x37, 0x7b, 0x7d, 0xc6, 0x49, 0xe5, 0x97, 0x30, 0xf6, 0xa0, - 0xb3, 0x4b, 0xe5, 0xc9, 0xeb, 0x90, 0x50, 0xde, 0x92, 0xd7, 0x12, 0x04, 0x7e, 0xe7, 0x4d, 0xfe, - 0x15, 0x3f, 0xee, 0xec, 0xd2, 0xf4, 0xb3, 0x08, 0x6c, 0xd7, 0xd4, 0x84, 0x91, 0x7d, 0x28, 0x26, - 0x6f, 0x10, 0x88, 0x21, 0xed, 0x72, 0xef, 0x01, 0x13, 0xfd, 0x68, 0x8f, 0x2f, 0xf0, 0xb8, 0x66, - 0xa3, 0x90, 0x94, 0x54, 0xf2, 0x63, 0x98, 0xc9, 0x74, 0x89, 0xab, 0x3b, 0x90, 0xdd, 0xbd, 0xed, - 0xb8, 0x05, 0x25, 0x7a, 0x4d, 0x5e, 0xb8, 0x34, 0x4a, 0xce, 0x2e, 0x85, 0x34, 0xe1, 0x74, 0x22, - 0x32, 0x5e, 0xbc, 0x30, 0x93, 0x1f, 0x6b, 0x8f, 0x5a, 0x93, 0x4c, 0xd2, 0x9c, 0x59, 0x56, 0x52, - 0x24, 0x59, 0x85, 0x51, 0xe5, 0x8b, 0x12, 0xb9, 0xf9, 0xb2, 0xfc, 0x6e, 0xa5, 0xa3, 0xc3, 0xf2, - 0x74, 0xec, 0x77, 0x33, 0x64, 0xc6, 0x02, 0xc8, 0x2f, 0xc3, 0x15, 0x35, 0x45, 0x37, 0x82, 0x6c, - 0x0f, 0xa5, 0x78, 0xdc, 0xe1, 0x46, 0x72, 0x86, 0xe7, 0xd1, 0xef, 0xdc, 0xa9, 0xf6, 0x95, 0x0a, - 0xcb, 0xa7, 0xec, 0xde, 0xa2, 0xc9, 0xaf, 0x16, 0xe0, 0x6c, 0x4e, 0xa9, 0xe3, 0x58, 0x6a, 0x4f, - 0xb7, 0x31, 0x5a, 0x9e, 0x78, 0xef, 0xcf, 0x6d, 0xc6, 0xf7, 0x63, 0xa5, 0xff, 0xd8, 0x68, 0x77, - 0x4e, 0x49, 0xe4, 0x36, 0xc0, 0x9e, 0x1b, 0x89, 0x39, 0x86, 0x69, 0xea, 0xd2, 0x1f, 0x28, 0xeb, - 0xb6, 0x3d, 0x37, 0x12, 0x33, 0xed, 0x77, 0x0b, 0x3d, 0xd7, 0x75, 0xcc, 0x5e, 0x37, 0x36, 0xff, - 0x6a, 0xb7, 0x45, 0x2f, 0xa6, 0xae, 0xde, 0x3e, 0x3a, 0x2c, 0xbf, 0xa1, 0x52, 0xa0, 0x35, 0x90, - 0x4a, 0xde, 0xf2, 0xad, 0x3b, 0x8a, 0xce, 0x68, 0x4f, 0xcf, 0xad, 0xe5, 0x0d, 0x18, 0x42, 0xcf, - 0x54, 0x58, 0x9a, 0x40, 0xdb, 0x0d, 0x13, 0x77, 0xa1, 0xff, 0x4a, 0xd7, 0xd6, 0x04, 0x0d, 0x59, - 0x66, 0x36, 0x10, 0x6a, 0x8b, 0xd2, 0x66, 0x11, 0x69, 0xfe, 0x84, 0x1d, 0xcd, 0x51, 0x32, 0xff, - 0x8e, 0xf1, 0x3c, 0x89, 0xc9, 0x56, 0x05, 0x18, 0x09, 0xc4, 0x72, 0x7b, 0x7f, 0x60, 0x64, 0xa0, - 0x38, 0xc8, 0x57, 0x04, 0x79, 0x97, 0xe4, 0xd7, 0x47, 0xf8, 0xc5, 0xf3, 0x6d, 0xcf, 0x7d, 0xe4, - 0xc6, 0x2b, 0xb3, 0xee, 0xd3, 0x8e, 0xdf, 0x09, 0x13, 0x16, 0x67, 0xce, 0x8b, 0x60, 0xca, 0xfd, - 0xdd, 0xd7, 0xd3, 0xfd, 0xfd, 0xa6, 0x76, 0x50, 0xac, 0xa5, 0xf3, 0xe5, 0x96, 0x85, 0xe9, 0x6e, - 0x8e, 0x4f, 0x90, 0xbf, 0x86, 0x21, 0xcc, 0xc0, 0xcb, 0x4f, 0xe1, 0xc7, 0xe6, 0x6f, 0x8a, 0xe1, - 0xec, 0x52, 0x7d, 0x9e, 0xb2, 0x57, 0x24, 0x93, 0xe0, 0x3d, 0x8e, 0x00, 0xa3, 0xc7, 0x11, 0x42, - 0xb6, 0x60, 0x6a, 0x93, 0x29, 0xba, 0xfc, 0x46, 0x43, 0x3b, 0x10, 0x2e, 0x41, 0xee, 0x6c, 0x44, - 0x45, 0xbb, 0x2d, 0xd1, 0x75, 0xaa, 0xf0, 0xba, 0xae, 0x99, 0xc1, 0x4e, 0x96, 0x60, 0xb2, 0x46, - 0x9d, 0xa0, 0xb1, 0xff, 0x80, 0x3e, 0x63, 0x46, 0x86, 0xf1, 0x34, 0x4e, 0x88, 0x18, 0xd6, 0x5e, - 0x44, 0xe9, 0x91, 0x55, 0x26, 0x13, 0xf9, 0x14, 0x86, 0x6a, 0x7e, 0x10, 0x55, 0x9f, 0x89, 0xd5, - 0x5a, 0x9e, 0xd3, 0x72, 0x60, 0xf5, 0x9c, 0x7c, 0x1e, 0x28, 0xf4, 0x83, 0xa8, 0xbe, 0x6b, 0x64, - 0x82, 0xe3, 0x24, 0xe4, 0x19, 0x4c, 0x9b, 0x2b, 0xa5, 0x08, 0xb4, 0x1f, 0x11, 0xc6, 0x4d, 0xd6, - 0x72, 0xcc, 0x49, 0xaa, 0xd7, 0x85, 0xf4, 0xcb, 0xc9, 0xf5, 0xf8, 0x11, 0xe2, 0x75, 0x8b, 0x20, - 0x8b, 0x9f, 0xac, 0xe1, 0xbb, 0x4a, 0xbc, 0x45, 0x95, 0x90, 0x07, 0xe8, 0x8f, 0xc6, 0xb9, 0x06, - 0x3b, 0xb8, 0xda, 0x62, 0x4f, 0x38, 0x61, 0xf2, 0x31, 0x2e, 0x3b, 0xc5, 0x4a, 0x36, 0xe1, 0xcc, - 0x76, 0x48, 0x37, 0x03, 0xfa, 0xc4, 0xa5, 0x4f, 0xa5, 0x3c, 0x88, 0x13, 0xb3, 0x31, 0x79, 0x6d, - 0x8e, 0xcd, 0x12, 0x98, 0x66, 0x26, 0xef, 0x01, 0x6c, 0xba, 0x9e, 0x47, 0x9b, 0x78, 0xd8, 0x3f, - 0x86, 0xa2, 0xf0, 0x20, 0xa3, 0x8d, 0xd0, 0xba, 0xef, 0xb5, 0xf4, 0x2e, 0xd5, 0x88, 0x49, 0x15, - 0x26, 0x56, 0xbc, 0x46, 0xab, 0x23, 0x82, 0x72, 0x42, 0x5c, 0x29, 0x45, 0xc2, 0x48, 0x97, 0x23, - 0xea, 0xa9, 0x8f, 0xdc, 0x64, 0x21, 0x0f, 0x80, 0x08, 0x80, 0x98, 0xb5, 0xce, 0x6e, 0x8b, 0x8a, - 0xcf, 0x1d, 0x1d, 0x94, 0x52, 0x10, 0x4e, 0x77, 0x23, 0x0f, 0x63, 0x8a, 0x6d, 0xee, 0x3d, 0x18, - 0xd3, 0xe6, 0x7c, 0x46, 0x76, 0x94, 0x69, 0x3d, 0x3b, 0xca, 0xa8, 0x9e, 0x05, 0xe5, 0x9f, 0x17, - 0xe0, 0x42, 0xf6, 0xb7, 0x24, 0x6c, 0x93, 0x0d, 0x18, 0x55, 0x40, 0x75, 0x1f, 0x4e, 0x1a, 0xdc, - 0x09, 0xd5, 0x8e, 0x7f, 0xd0, 0x72, 0xe5, 0xd1, 0x5b, 0x1f, 0xcb, 0x78, 0x8e, 0x53, 0xb0, 0xbf, - 0x3d, 0x02, 0xd3, 0x78, 0xef, 0x23, 0xb9, 0x4e, 0x7d, 0x82, 0x59, 0x8e, 0x10, 0xa6, 0x1d, 0xea, - 0x08, 0xff, 0x2e, 0x87, 0x27, 0xf3, 0xfd, 0x19, 0x0c, 0xe4, 0x6d, 0x3d, 0x12, 0xa9, 0x4f, 0x7b, - 0xc7, 0x49, 0x02, 0xf5, 0x26, 0xc4, 0x21, 0x4a, 0xaf, 0x1b, 0x81, 0x30, 0xc7, 0x5e, 0xf4, 0x06, - 0x8e, 0xbb, 0xe8, 0x6d, 0xab, 0x45, 0x8f, 0x67, 0xcf, 0x79, 0x4d, 0x5b, 0xf4, 0x5e, 0xfe, 0x6a, - 0x37, 0xf4, 0xb2, 0x57, 0xbb, 0xe1, 0x17, 0x5b, 0xed, 0x46, 0x9e, 0x73, 0xb5, 0xbb, 0x0b, 0x93, - 0xeb, 0x94, 0x36, 0xb5, 0xe3, 0xc9, 0xd1, 0x78, 0xf7, 0xf4, 0x28, 0x3a, 0x9e, 0xb3, 0xce, 0x28, - 0x13, 0x5c, 0xb9, 0xab, 0x26, 0xfc, 0xf5, 0xac, 0x9a, 0x63, 0x2f, 0x79, 0xd5, 0x1c, 0x7f, 0x91, - 0x55, 0x33, 0xb5, 0xf4, 0x4d, 0x9c, 0x78, 0xe9, 0x7b, 0x91, 0xd5, 0xea, 0x63, 0x0c, 0xe4, 0xad, - 0xd5, 0x96, 0x45, 0xcc, 0x96, 0x16, 0x24, 0xb5, 0xec, 0x87, 0xf2, 0x9e, 0x03, 0xfe, 0xcd, 0x60, - 0xf8, 0x5a, 0x86, 0x70, 0x07, 0xb0, 0xbf, 0xad, 0x2a, 0x86, 0xef, 0xea, 0xfc, 0xea, 0x3e, 0xd0, - 0xb0, 0xb8, 0x4c, 0x2c, 0xd6, 0xb8, 0xa4, 0xfa, 0x69, 0x4b, 0xbc, 0xf5, 0x67, 0x05, 0x1e, 0x0a, - 0xf0, 0xff, 0xe2, 0x52, 0xf9, 0x22, 0xc7, 0xf3, 0xbf, 0x16, 0x27, 0x19, 0x11, 0x09, 0x51, 0x02, - 0xa7, 0xf1, 0x38, 0x8e, 0x8f, 0xf8, 0x3e, 0xfb, 0xce, 0x75, 0x84, 0x50, 0xd4, 0x67, 0x55, 0x4f, - 0xe9, 0xc8, 0x9d, 0x3b, 0x72, 0x01, 0x10, 0xb9, 0x56, 0x38, 0xd8, 0x5c, 0x00, 0x74, 0x06, 0x8c, - 0x50, 0x3d, 0x6d, 0xd9, 0x3c, 0x47, 0x46, 0x66, 0x0d, 0xde, 0x49, 0x67, 0x79, 0x40, 0x2b, 0x2b, - 0xce, 0xf2, 0xa0, 0x77, 0x63, 0x9c, 0xef, 0x61, 0x1b, 0xce, 0xdb, 0xf4, 0xc0, 0x7f, 0x42, 0x5f, - 0xae, 0xd8, 0xaf, 0xe0, 0x9c, 0x29, 0x90, 0xdf, 0x07, 0xe4, 0x8f, 0x57, 0x7c, 0x9c, 0xfd, 0xe4, - 0x85, 0x60, 0xe0, 0x4f, 0x5e, 0xf0, 0xcc, 0xf9, 0xec, 0x4f, 0x7d, 0xdf, 0x40, 0x9c, 0xe5, 0xc3, - 0x05, 0x53, 0x78, 0xa5, 0xd9, 0xc4, 0x57, 0x73, 0x1b, 0x6e, 0xdb, 0xf1, 0x22, 0xb2, 0x01, 0x63, - 0xda, 0xcf, 0x84, 0x0f, 0x44, 0xc3, 0x08, 0x9d, 0x26, 0x06, 0x18, 0x99, 0x87, 0x63, 0xb0, 0x45, - 0xa1, 0x9c, 0xec, 0x1e, 0xd6, 0x65, 0x7a, 0x99, 0x55, 0x98, 0xd0, 0x7e, 0xaa, 0x83, 0x02, 0xfc, - 0xf8, 0xb5, 0x12, 0xcc, 0x0e, 0x33, 0x59, 0xac, 0x06, 0xcc, 0x65, 0x75, 0x1a, 0x4f, 0x51, 0x4f, - 0x96, 0xe2, 0x0c, 0x74, 0xbd, 0x63, 0x5c, 0x4f, 0xe7, 0x65, 0x9f, 0xb3, 0xfe, 0xc1, 0x00, 0x9c, - 0x17, 0x83, 0xf1, 0x32, 0x47, 0x9c, 0xfc, 0x00, 0xc6, 0xb4, 0x31, 0x16, 0x9d, 0x7e, 0x59, 0xde, - 0xe6, 0xcb, 0x9b, 0x0b, 0xdc, 0x57, 0xd3, 0x41, 0x40, 0x3d, 0x31, 0xdc, 0xcb, 0xa7, 0x6c, 0x5d, - 0x24, 0x69, 0xc1, 0xa4, 0x39, 0xd0, 0xc2, 0x5d, 0x75, 0x35, 0xb3, 0x10, 0x93, 0x54, 0xe6, 0xaf, - 0x6f, 0xd6, 0x33, 0x87, 0x7b, 0xf9, 0x94, 0x9d, 0x90, 0x4d, 0xbe, 0x81, 0x33, 0xa9, 0x51, 0x16, - 0xbe, 0xc8, 0x57, 0x33, 0x0b, 0x4c, 0x51, 0xf3, 0x43, 0x90, 0x00, 0xc1, 0xb9, 0xc5, 0xa6, 0x0b, - 0x21, 0x4d, 0x18, 0xd7, 0x07, 0x5e, 0xf8, 0xd3, 0xae, 0x74, 0xe9, 0x4a, 0x4e, 0xc8, 0x95, 0x3b, - 0xd1, 0x97, 0x38, 0xf6, 0xcf, 0xcc, 0x83, 0x1d, 0x83, 0x78, 0x04, 0x86, 0xf8, 0x6f, 0xeb, 0xf7, - 0x0b, 0x70, 0x7e, 0x33, 0xa0, 0x21, 0xf5, 0x1a, 0xd4, 0xb8, 0x17, 0xf1, 0x82, 0x33, 0x22, 0xef, - 0x4c, 0xa5, 0xef, 0x85, 0xcf, 0x54, 0xac, 0x7f, 0x5b, 0x80, 0x52, 0x56, 0x95, 0x6b, 0xd4, 0x6b, - 0x92, 0x4d, 0x28, 0x26, 0xdb, 0x20, 0xbe, 0x18, 0x4b, 0xa5, 0x1f, 0xcf, 0x6d, 0xed, 0xf2, 0x29, - 0x3b, 0xc5, 0x4d, 0xd6, 0xe1, 0x8c, 0x06, 0x13, 0x67, 0x1a, 0x7d, 0xc7, 0x39, 0xd3, 0x60, 0x23, - 0x9c, 0x62, 0xd5, 0x8f, 0x84, 0x96, 0x71, 0xd7, 0x5d, 0xf4, 0x0f, 0x1c, 0xd7, 0x63, 0x4a, 0xb4, - 0x96, 0xe0, 0x0e, 0x62, 0xa8, 0xe8, 0x76, 0x7e, 0xc8, 0x81, 0x50, 0x79, 0x45, 0x4c, 0x91, 0x58, - 0x1f, 0xe2, 0xee, 0x20, 0x1c, 0x9b, 0xfc, 0x52, 0xbe, 0x12, 0x76, 0x19, 0x06, 0xb7, 0x56, 0x6b, - 0x0b, 0x15, 0x71, 0xc5, 0x9f, 0x27, 0x86, 0x69, 0x85, 0xf5, 0x86, 0x63, 0x73, 0x84, 0xf5, 0x01, - 0x90, 0x7b, 0x34, 0x12, 0xef, 0x5f, 0x28, 0xbe, 0x6b, 0x30, 0x2c, 0x40, 0x82, 0x13, 0xdd, 0xf5, - 0xe2, 0x35, 0x0d, 0x5b, 0xe2, 0xac, 0x4d, 0x69, 0x83, 0xb4, 0xa8, 0x13, 0x6a, 0x9b, 0xfe, 0xbb, - 0x30, 0x12, 0x08, 0x98, 0xd8, 0xf3, 0x27, 0xd5, 0xf3, 0x46, 0x08, 0xe6, 0xc7, 0x48, 0x92, 0xc6, - 0x56, 0x7f, 0x59, 0xab, 0x98, 0xc4, 0x69, 0x63, 0x65, 0x71, 0x81, 0xf5, 0xaa, 0xe8, 0x2c, 0x39, - 0x1c, 0xb7, 0xf0, 0x56, 0x48, 0x44, 0xf5, 0x0b, 0xfe, 0xd8, 0x35, 0xb8, 0x80, 0x88, 0xd4, 0x65, - 0x1a, 0x89, 0xf5, 0xa6, 0x4a, 0x09, 0x95, 0x21, 0x2d, 0xef, 0x99, 0x9e, 0x75, 0x4c, 0x76, 0x75, - 0x0f, 0x03, 0xe0, 0x5e, 0x46, 0x25, 0x1c, 0x98, 0xe3, 0x2a, 0x04, 0x6b, 0x95, 0x78, 0xa4, 0xd4, - 0x57, 0xcb, 0xee, 0x02, 0x8c, 0x2a, 0x98, 0x3a, 0xcd, 0xe6, 0x7d, 0x65, 0xd0, 0xef, 0xbc, 0xc9, - 0x73, 0x21, 0x34, 0x94, 0x80, 0x98, 0x8f, 0x15, 0xc1, 0xbf, 0xe9, 0x6f, 0xb9, 0x88, 0x90, 0x06, - 0xd1, 0xb7, 0x5a, 0x44, 0x9c, 0x0d, 0xed, 0x24, 0x45, 0x18, 0xf4, 0x3b, 0xf3, 0xc7, 0xe9, 0xa8, - 0x6f, 0xb9, 0x08, 0xd6, 0x51, 0xdf, 0x5e, 0x11, 0x54, 0xa6, 0x8d, 0xe3, 0x93, 0x34, 0x55, 0xc8, - 0x52, 0xba, 0x10, 0xe9, 0xed, 0x4f, 0x70, 0x74, 0x1d, 0x0f, 0x0a, 0x17, 0x78, 0x67, 0xfd, 0x1c, - 0x8a, 0x61, 0x1d, 0xf6, 0xed, 0x16, 0xf3, 0x8f, 0x0b, 0x3c, 0x89, 0x5d, 0x6d, 0x43, 0x7b, 0x1e, - 0xd8, 0x7b, 0xe4, 0x6b, 0xc1, 0x36, 0xda, 0xd7, 0xae, 0x1d, 0x7e, 0x62, 0xb0, 0x8d, 0xd3, 0x89, - 0xf6, 0x55, 0x92, 0x77, 0x3c, 0x09, 0x4d, 0x52, 0x93, 0xf7, 0x60, 0x42, 0x03, 0x29, 0x4d, 0x90, - 0x3f, 0xc3, 0xa3, 0xb3, 0xbb, 0x4d, 0xdb, 0xa4, 0xb4, 0xfe, 0xaa, 0x00, 0x53, 0x19, 0x0f, 0xd7, - 0xa3, 0xa3, 0x04, 0x2d, 0x2c, 0xb5, 0x50, 0x89, 0x87, 0xf3, 0x30, 0x9f, 0x8e, 0xb1, 0xff, 0x2a, - 0x42, 0x7c, 0x80, 0x44, 0x7b, 0x64, 0xbf, 0x4f, 0x7b, 0x0e, 0x32, 0xfb, 0x61, 0x7d, 0x9d, 0x9c, - 0x84, 0x00, 0x71, 0x4d, 0x84, 0x4b, 0xba, 0xc6, 0xd4, 0x65, 0xed, 0x85, 0xfe, 0x98, 0xf7, 0x67, - 0x87, 0xe5, 0x77, 0x4e, 0x12, 0x2a, 0x1c, 0x8b, 0xb6, 0xb5, 0x62, 0xac, 0x5f, 0xeb, 0x83, 0xb3, - 0x19, 0xed, 0xaf, 0xd1, 0xe8, 0xaf, 0xa3, 0x0b, 0x9e, 0xc0, 0x58, 0x5c, 0x99, 0xb0, 0xd4, 0x8f, - 0x9e, 0x9b, 0x2d, 0x7c, 0x2f, 0x23, 0xee, 0x83, 0xf0, 0xa5, 0x74, 0x82, 0x5e, 0x90, 0xf5, 0xc7, - 0x7d, 0x70, 0x76, 0xbb, 0x1d, 0xe2, 0x9d, 0xc9, 0x15, 0xef, 0x09, 0xf5, 0x22, 0x3f, 0x78, 0x86, - 0xf7, 0xbc, 0xc8, 0xdb, 0x30, 0xb8, 0x4c, 0x5b, 0x2d, 0x5f, 0xcc, 0xff, 0x8b, 0x32, 0xde, 0x29, - 0x49, 0x8d, 0x44, 0xcb, 0xa7, 0x6c, 0x4e, 0x4d, 0xde, 0x83, 0xd1, 0x65, 0xea, 0x04, 0xd1, 0x2e, - 0x75, 0xa4, 0x39, 0x24, 0x1f, 0x07, 0xd2, 0x58, 0x04, 0xc1, 0xf2, 0x29, 0x3b, 0xa6, 0x26, 0xf3, - 0x30, 0xb0, 0xe9, 0x7b, 0x7b, 0x2a, 0x3f, 0x44, 0x4e, 0x81, 0x8c, 0x66, 0xf9, 0x94, 0x8d, 0xb4, - 0x64, 0x0d, 0x26, 0x2a, 0x7b, 0xd4, 0x8b, 0x12, 0x47, 0xf8, 0xd7, 0xf2, 0x98, 0x0d, 0xe2, 0xe5, - 0x53, 0xb6, 0xc9, 0x4d, 0x3e, 0x80, 0xe1, 0x7b, 0xbe, 0xdf, 0xdc, 0x7d, 0x26, 0xb3, 0x9c, 0x94, - 0xf3, 0x04, 0x09, 0xb2, 0xe5, 0x53, 0xb6, 0xe4, 0xa8, 0x0e, 0x42, 0xff, 0x5a, 0xb8, 0x67, 0x1d, - 0x16, 0xa0, 0xb4, 0xe8, 0x3f, 0xf5, 0x32, 0x7b, 0xf5, 0x7b, 0x66, 0xaf, 0x4a, 0xf1, 0x19, 0xf4, - 0x89, 0x7e, 0x7d, 0x0b, 0x06, 0x36, 0x5d, 0x6f, 0x2f, 0xa1, 0x0a, 0x66, 0xf0, 0x31, 0x2a, 0xec, - 0x1e, 0xd7, 0xdb, 0x23, 0xab, 0x52, 0xbf, 0x17, 0x7e, 0xcc, 0x7e, 0xc3, 0xa8, 0xc8, 0xe0, 0xd6, - 0xa9, 0x63, 0x3d, 0x9e, 0xff, 0x96, 0x0d, 0x7c, 0x1d, 0x66, 0x73, 0xca, 0xd5, 0x42, 0x52, 0x06, - 0x50, 0xb1, 0xf9, 0x3b, 0x05, 0x98, 0xc9, 0x1c, 0xc0, 0x24, 0x25, 0xb3, 0xe9, 0xf8, 0xc4, 0x5c, - 0x68, 0xf9, 0x8d, 0xc7, 0xc7, 0x08, 0x9b, 0xb4, 0xe4, 0x83, 0xfa, 0xe2, 0x0b, 0x69, 0x30, 0xbe, - 0xc4, 0xa3, 0x89, 0xba, 0x48, 0xeb, 0xf7, 0xb2, 0xe6, 0x3a, 0xef, 0xdc, 0x52, 0x1c, 0x2a, 0xc2, - 0x5d, 0x57, 0x2a, 0x3a, 0x64, 0x4e, 0x5b, 0x0b, 0x64, 0xc6, 0x24, 0xf9, 0xc9, 0xef, 0x68, 0x19, - 0xea, 0xf8, 0x17, 0xfb, 0xfe, 0x0b, 0x7c, 0x97, 0x4a, 0x16, 0x2b, 0x73, 0xd9, 0x0f, 0x23, 0x4f, - 0x85, 0xeb, 0xdb, 0xea, 0x37, 0xb9, 0x01, 0x45, 0xf9, 0x08, 0x8f, 0x78, 0xed, 0x2b, 0x10, 0x31, - 0x27, 0x29, 0x38, 0x79, 0x17, 0x66, 0x93, 0x30, 0xd9, 0x4a, 0x7e, 0x2d, 0x36, 0x0f, 0x6d, 0xfd, - 0x69, 0x1f, 0x3e, 0x22, 0xd0, 0xe5, 0xd3, 0x61, 0xe3, 0xb7, 0x51, 0x93, 0xc1, 0x47, 0x1b, 0x35, - 0x72, 0x01, 0x46, 0x37, 0x6a, 0xc6, 0xeb, 0x86, 0x76, 0x0c, 0x60, 0xd5, 0x66, 0x4d, 0xa8, 0x04, - 0x8d, 0x7d, 0x37, 0xa2, 0x8d, 0xa8, 0x13, 0xc8, 0x68, 0xa4, 0x14, 0x9c, 0x58, 0x30, 0x7e, 0xaf, - 0xe5, 0xee, 0x36, 0xa4, 0x30, 0xde, 0x05, 0x06, 0x8c, 0xbc, 0x0a, 0x93, 0x2b, 0x5e, 0x18, 0x39, - 0xad, 0xd6, 0x1a, 0x8d, 0xf6, 0xfd, 0xa6, 0x78, 0xbb, 0xd9, 0x4e, 0x40, 0x59, 0xb9, 0x0b, 0xbe, - 0x17, 0x39, 0xae, 0x47, 0x03, 0xbb, 0xe3, 0x45, 0xee, 0x01, 0x15, 0x6d, 0x4f, 0xc1, 0xc9, 0x5b, - 0x30, 0xa3, 0x60, 0x1b, 0x41, 0x63, 0x9f, 0x86, 0x51, 0x80, 0x6f, 0x9e, 0x62, 0x60, 0x9e, 0x9d, - 0x8d, 0xc4, 0x12, 0x5a, 0x7e, 0xa7, 0xb9, 0xe4, 0x3d, 0x71, 0x03, 0x9f, 0x9f, 0x78, 0x8f, 0x88, - 0x12, 0x12, 0x70, 0xeb, 0x77, 0x46, 0x32, 0x57, 0x86, 0x17, 0x99, 0x83, 0x5f, 0xc0, 0xf8, 0x82, - 0xd3, 0x76, 0x76, 0xdd, 0x96, 0x1b, 0xb9, 0xea, 0x71, 0xc8, 0xb7, 0x7b, 0x2c, 0x2b, 0xf2, 0x59, - 0x26, 0xda, 0xd4, 0x99, 0x6d, 0x43, 0xd4, 0xdc, 0x5f, 0x0e, 0xc1, 0x4c, 0x26, 0x1d, 0xb9, 0x2e, - 0x5e, 0x91, 0x54, 0x4b, 0xb7, 0x78, 0xa2, 0xd0, 0x4e, 0x82, 0xd9, 0x58, 0x22, 0x68, 0xa1, 0x45, - 0x1d, 0xaf, 0x23, 0x1e, 0x28, 0xb4, 0x0d, 0x18, 0x1b, 0x4b, 0xa6, 0x9a, 0x68, 0xc2, 0xf0, 0xb6, - 0x85, 0x9d, 0x80, 0x62, 0x30, 0x5b, 0x27, 0xda, 0x97, 0xa2, 0x06, 0xf8, 0xbd, 0x60, 0x0d, 0xc4, - 0x24, 0xad, 0xfb, 0x4d, 0xaa, 0x49, 0x1a, 0xe4, 0x92, 0x4c, 0x28, 0x93, 0xc4, 0x20, 0x52, 0xd2, - 0x10, 0x97, 0xa4, 0x81, 0xc8, 0x2b, 0x30, 0x51, 0x69, 0xb7, 0x35, 0x41, 0xf8, 0x32, 0xa1, 0x6d, - 0x02, 0xc9, 0x25, 0x80, 0x4a, 0xbb, 0x2d, 0xc5, 0xe0, 0xab, 0x83, 0xb6, 0x06, 0x21, 0x37, 0xe3, - 0x3c, 0x90, 0x9a, 0x28, 0x3c, 0x0d, 0xb1, 0x33, 0x30, 0xac, 0x5f, 0x55, 0xd2, 0x3c, 0x21, 0x14, - 0x78, 0xbf, 0x26, 0xc0, 0xe4, 0x43, 0x38, 0x97, 0x88, 0x87, 0xd1, 0x0a, 0xc0, 0x93, 0x0a, 0x3b, - 0x9f, 0x80, 0xbc, 0x03, 0x67, 0x13, 0x48, 0x59, 0x1c, 0x1e, 0x4a, 0xd8, 0x39, 0x58, 0xf2, 0x3e, - 0x94, 0x12, 0xb9, 0x1e, 0xe2, 0x42, 0xf1, 0x00, 0xc2, 0xce, 0xc5, 0xb3, 0xaf, 0x2b, 0x71, 0x69, - 0x54, 0x14, 0x89, 0x67, 0xad, 0x76, 0x36, 0x92, 0x2c, 0x43, 0x39, 0x33, 0xc6, 0x48, 0x2b, 0x18, - 0x5f, 0x53, 0xb4, 0x7b, 0x91, 0x91, 0x2a, 0x5c, 0xc8, 0x24, 0x91, 0xd5, 0xc0, 0x37, 0x16, 0xed, - 0xae, 0x34, 0x64, 0x1e, 0xa6, 0xe3, 0x58, 0x2b, 0xad, 0x0a, 0xf8, 0xbc, 0xa2, 0x9d, 0x89, 0x23, - 0x6f, 0x98, 0x19, 0x3d, 0x78, 0x61, 0xf8, 0xba, 0xa2, 0x9d, 0x46, 0x58, 0x47, 0x05, 0xb8, 0x90, - 0xb9, 0x17, 0x4b, 0x93, 0x61, 0x2e, 0xa9, 0x9b, 0x6a, 0x6b, 0xc1, 0x0d, 0x11, 0x40, 0xc9, 0x5d, - 0xdd, 0x32, 0x40, 0x1d, 0xf9, 0xb9, 0xa8, 0x07, 0x71, 0x38, 0xe5, 0x3d, 0x75, 0xb4, 0xd9, 0x8f, - 0xce, 0x92, 0x5b, 0x49, 0x1d, 0x2d, 0xa3, 0x70, 0xfd, 0x88, 0x53, 0x1e, 0x66, 0xbe, 0xc8, 0x29, - 0xd2, 0x9f, 0x16, 0xa0, 0xdc, 0x43, 0x05, 0x51, 0x6d, 0x2a, 0x1c, 0xa3, 0x4d, 0xf7, 0x55, 0x9b, - 0xf8, 0x85, 0xfa, 0xf9, 0xe3, 0xa9, 0x39, 0x2f, 0xbb, 0x59, 0x7f, 0x55, 0x00, 0x92, 0x56, 0x75, - 0xc9, 0x77, 0x61, 0xb4, 0x56, 0x5b, 0x36, 0x22, 0x2d, 0x53, 0x87, 0x5b, 0x31, 0x05, 0xb9, 0x7d, - 0xac, 0xd0, 0x4a, 0x3d, 0xb0, 0xf2, 0x93, 0x54, 0x3c, 0x67, 0x7f, 0xd7, 0x78, 0xce, 0x54, 0x34, - 0xe7, 0x52, 0x46, 0x80, 0xe2, 0x40, 0x8f, 0x00, 0xc5, 0x74, 0xf4, 0xa1, 0xb5, 0x08, 0xa5, 0x3c, - 0x6d, 0x19, 0x57, 0x38, 0x9e, 0x3d, 0x51, 0x3b, 0xa0, 0xe3, 0x2b, 0x9c, 0x09, 0xb6, 0xde, 0x81, - 0xb3, 0x8a, 0x9b, 0x3f, 0xcb, 0xa4, 0xa5, 0x2d, 0x11, 0x26, 0xb6, 0x4a, 0x8f, 0x12, 0x03, 0xac, - 0x3f, 0x19, 0x48, 0x31, 0xd6, 0x3a, 0x07, 0x07, 0x4e, 0xf0, 0x8c, 0x54, 0x4c, 0xc6, 0xfe, 0x9e, - 0x56, 0x4d, 0x75, 0x80, 0xe9, 0x98, 0x9a, 0x74, 0xb6, 0x2f, 0xa0, 0x86, 0xe1, 0x35, 0x28, 0x3f, - 0xda, 0xeb, 0xe3, 0xa9, 0xd9, 0x0c, 0x20, 0xd9, 0x81, 0x09, 0xb1, 0x77, 0xe3, 0x6f, 0xf9, 0x8d, - 0xdd, 0x4e, 0x7e, 0x63, 0x46, 0xf5, 0x6e, 0x1a, 0x2c, 0x7c, 0x36, 0x9a, 0x62, 0xc8, 0x17, 0x30, - 0x29, 0x35, 0x35, 0x21, 0x98, 0x07, 0x63, 0xdd, 0xe9, 0x2e, 0xd8, 0xe4, 0xe1, 0x92, 0x13, 0x82, - 0x58, 0x95, 0xe5, 0x62, 0xc7, 0x25, 0x0f, 0x1e, 0xa7, 0xca, 0x06, 0x8b, 0xa8, 0xb2, 0x01, 0x9b, - 0xfb, 0x14, 0x48, 0xba, 0x5d, 0xbd, 0x3e, 0xa7, 0x09, 0xed, 0x73, 0x9a, 0xab, 0xc0, 0x54, 0x46, - 0x03, 0x4e, 0x24, 0xe2, 0x53, 0x20, 0xe9, 0x9a, 0x9e, 0x44, 0x82, 0x75, 0x1d, 0x5e, 0x55, 0x5d, - 0xa0, 0x66, 0x83, 0x21, 0x53, 0x3a, 0xd9, 0x7f, 0xa5, 0x0f, 0xca, 0x3d, 0x48, 0xc9, 0x3f, 0x29, - 0x24, 0x7b, 0x9b, 0xcf, 0xc6, 0xf7, 0x92, 0xbd, 0x9d, 0xcd, 0x9f, 0xd1, 0xed, 0xd5, 0xf7, 0x7f, - 0xf5, 0xcf, 0x9f, 0xdb, 0xf2, 0x48, 0x0f, 0xd9, 0xc9, 0x7b, 0x6b, 0x40, 0xef, 0xad, 0x1d, 0x98, - 0x36, 0xcc, 0xc2, 0xe3, 0x6c, 0x5e, 0x16, 0x80, 0x78, 0x21, 0x7a, 0xd5, 0xdf, 0x13, 0x0f, 0x59, - 0xf7, 0x95, 0x0a, 0xb6, 0x06, 0xb5, 0xee, 0xc2, 0x4c, 0x42, 0xae, 0x70, 0xfe, 0x7f, 0x17, 0x54, - 0x8a, 0x0a, 0x14, 0xdc, 0x5f, 0x3d, 0xf3, 0xb3, 0xc3, 0xf2, 0x04, 0x53, 0xeb, 0x6f, 0xc6, 0xaf, - 0x84, 0xc8, 0xbf, 0xac, 0x35, 0xfd, 0xf8, 0xa2, 0xd2, 0xd2, 0x53, 0x77, 0x91, 0x3b, 0x30, 0xc4, - 0x21, 0x89, 0x5c, 0xfc, 0x3a, 0xb5, 0x58, 0x17, 0x04, 0xa1, 0x35, 0x83, 0x17, 0xea, 0xf1, 0x47, - 0x25, 0x4e, 0x00, 0x63, 0x6d, 0xf3, 0xb7, 0xa9, 0x62, 0xb0, 0xca, 0xf7, 0x3f, 0x50, 0x89, 0x13, - 0xd5, 0xc8, 0x38, 0x16, 0x49, 0xe7, 0xf9, 0x4f, 0x5b, 0xb4, 0xc9, 0x1f, 0x15, 0xad, 0x8e, 0x0b, - 0x1b, 0x77, 0xc0, 0x61, 0x02, 0x90, 0xcd, 0xfa, 0x04, 0x66, 0x98, 0xb6, 0x10, 0x24, 0xcb, 0xc3, - 0x17, 0x69, 0x18, 0xcc, 0xbc, 0x37, 0xe3, 0x30, 0x10, 0xde, 0x9b, 0x11, 0x48, 0x6b, 0x15, 0xce, - 0x71, 0xe7, 0xa7, 0xde, 0xa4, 0xf8, 0xa8, 0x61, 0x10, 0x7f, 0x27, 0xae, 0x63, 0x67, 0xb4, 0x9e, - 0xd3, 0x59, 0x1f, 0xe3, 0x7d, 0x3f, 0x31, 0x51, 0x5d, 0xdf, 0x8b, 0x3d, 0x9d, 0xc7, 0x4b, 0x10, - 0xf0, 0xff, 0xc3, 0x85, 0x4a, 0xbb, 0x4d, 0xbd, 0x66, 0xcc, 0xb8, 0x15, 0x38, 0xc7, 0x4c, 0xdf, - 0x42, 0x2a, 0x30, 0x88, 0xd4, 0xea, 0x0c, 0x58, 0x54, 0x37, 0xa3, 0x3a, 0x48, 0x27, 0x92, 0x33, - 0x63, 0x01, 0x9c, 0xd3, 0x6a, 0xc2, 0x6c, 0xad, 0xb3, 0x7b, 0xe0, 0x46, 0x78, 0xdb, 0x06, 0x53, - 0x20, 0xc9, 0xb2, 0x57, 0xe4, 0x73, 0x82, 0xbc, 0x33, 0xae, 0xc7, 0xf7, 0xc2, 0xf0, 0xc2, 0x8e, - 0x48, 0x8b, 0xf4, 0xe4, 0xce, 0xcd, 0x98, 0x15, 0xbd, 0x3c, 0xbc, 0x14, 0x44, 0x8b, 0x27, 0x07, - 0xad, 0x29, 0x38, 0xa3, 0x9f, 0x79, 0xf1, 0x19, 0x32, 0x03, 0x53, 0xe6, 0x59, 0x16, 0x07, 0x7f, - 0x0d, 0xd3, 0xdc, 0xd7, 0xce, 0x1f, 0x57, 0x98, 0x8f, 0xdf, 0x11, 0xe8, 0xdb, 0x99, 0x4f, 0x5c, - 0xd2, 0xc0, 0xd8, 0x6d, 0xf5, 0x6c, 0xce, 0xce, 0x3c, 0xbf, 0xb3, 0xfd, 0x64, 0xde, 0x38, 0x8d, - 0xed, 0xdb, 0x99, 0xaf, 0x0e, 0x8b, 0x24, 0xd5, 0x4c, 0x3a, 0x1f, 0xfe, 0x6f, 0x45, 0xfa, 0x3c, - 0xa6, 0x09, 0x59, 0xa6, 0x0e, 0x5e, 0xe9, 0xcb, 0x4e, 0xb6, 0x30, 0x09, 0x7d, 0x2a, 0x0b, 0x6d, - 0x9f, 0xdb, 0xb4, 0xfe, 0xa0, 0x00, 0xd7, 0xb9, 0x42, 0x96, 0xcd, 0x87, 0x07, 0x5b, 0x39, 0xcc, - 0xe4, 0x5d, 0x18, 0x0c, 0xb5, 0x00, 0x0f, 0x4b, 0xd4, 0xbc, 0x9b, 0x24, 0xce, 0x40, 0x2a, 0x30, - 0xae, 0xdf, 0x5c, 0x3b, 0x5e, 0x82, 0x4b, 0x7b, 0xec, 0xe0, 0x91, 0xa3, 0x6e, 0xb3, 0x3d, 0x86, - 0xf3, 0x4b, 0xdf, 0xb0, 0x09, 0x21, 0x76, 0x28, 0x61, 0x3d, 0xc4, 0x97, 0xf9, 0x4f, 0x6f, 0x89, - 0x19, 0x63, 0x9a, 0xf6, 0x49, 0x30, 0xb3, 0x93, 0xe5, 0x26, 0x17, 0x5f, 0x71, 0xb2, 0x0d, 0x98, - 0xf5, 0x27, 0x05, 0xb8, 0x90, 0x5d, 0x9a, 0x58, 0x58, 0x56, 0xe0, 0xcc, 0x82, 0xe3, 0xf9, 0x9e, - 0xdb, 0x70, 0x5a, 0xb5, 0xc6, 0x3e, 0x6d, 0x76, 0x54, 0x2a, 0x6b, 0xb5, 0xca, 0xec, 0x51, 0x4f, - 0xb2, 0x4b, 0x12, 0x3b, 0xcd, 0xc5, 0x2c, 0x44, 0xbc, 0xba, 0xc2, 0xd7, 0xde, 0x16, 0x0d, 0x94, - 0x3c, 0x5e, 0xb3, 0x1c, 0x2c, 0xb9, 0x2d, 0x0f, 0x15, 0x9a, 0xdb, 0x9e, 0x1b, 0x29, 0x26, 0xee, - 0xea, 0xc9, 0x42, 0x59, 0xff, 0xa1, 0x00, 0xe7, 0xf0, 0xf5, 0x3a, 0xe3, 0x3d, 0xdc, 0x38, 0xa3, - 0xbb, 0x4c, 0x4a, 0x5e, 0x30, 0xae, 0xe2, 0x18, 0xd4, 0x66, 0x76, 0x72, 0xf2, 0x06, 0x0c, 0xd4, - 0x64, 0xc0, 0xd9, 0x64, 0xe2, 0x25, 0x73, 0xc1, 0xc1, 0xf0, 0x36, 0x52, 0x31, 0x1b, 0x7e, 0x91, - 0x86, 0x0d, 0xea, 0xe1, 0x93, 0xf3, 0xdc, 0xf3, 0xa0, 0x41, 0xe2, 0x64, 0x6b, 0x03, 0x79, 0xc9, - 0xd6, 0x06, 0xcd, 0x64, 0x6b, 0xd6, 0x13, 0xfe, 0x76, 0x5d, 0xb2, 0x41, 0x62, 0x90, 0x3e, 0x4e, - 0xbd, 0x50, 0xcf, 0xf7, 0x81, 0xb3, 0x59, 0x2d, 0x63, 0x4a, 0x7a, 0xe2, 0xf1, 0xf9, 0xfc, 0x0c, - 0xea, 0x9b, 0xf0, 0x8a, 0x41, 0x5b, 0x69, 0xb5, 0xfc, 0xa7, 0xb4, 0xb9, 0x19, 0xf8, 0x07, 0x7e, - 0x64, 0xbc, 0xdd, 0x75, 0xda, 0xd1, 0xe9, 0xd4, 0x66, 0x9c, 0x04, 0x5b, 0xff, 0x1f, 0x5c, 0xeb, - 0x21, 0x51, 0x34, 0xaa, 0x06, 0x67, 0x9c, 0x04, 0x4e, 0x46, 0x0e, 0x5d, 0xcb, 0x6a, 0x57, 0x52, - 0x50, 0x68, 0xa7, 0xf9, 0x6f, 0x6c, 0x19, 0xaf, 0xba, 0x93, 0x12, 0x4c, 0x6f, 0xda, 0x1b, 0x8b, - 0xdb, 0x0b, 0x5b, 0xf5, 0xad, 0x2f, 0x36, 0x97, 0xea, 0xdb, 0xeb, 0x0f, 0xd6, 0x37, 0x1e, 0xae, - 0xf3, 0x27, 0x08, 0x0c, 0xcc, 0xd6, 0x52, 0x65, 0xad, 0x58, 0x20, 0xd3, 0x50, 0x34, 0xc0, 0x4b, - 0xdb, 0xd5, 0x62, 0xdf, 0x8d, 0xaf, 0x8d, 0xd7, 0xca, 0xc9, 0x05, 0x28, 0xd5, 0xb6, 0x37, 0x37, - 0x37, 0x6c, 0x25, 0x55, 0x7f, 0x00, 0x61, 0x06, 0xce, 0x18, 0xd8, 0xbb, 0xf6, 0xd2, 0x52, 0xb1, - 0xc0, 0xaa, 0x62, 0x80, 0x37, 0xed, 0xa5, 0xb5, 0x95, 0xed, 0xb5, 0x62, 0xdf, 0x8d, 0xba, 0x7e, - 0x83, 0x94, 0x9c, 0x87, 0xd9, 0xc5, 0xa5, 0x9d, 0x95, 0x85, 0xa5, 0x2c, 0xd9, 0xd3, 0x50, 0xd4, - 0x91, 0x5b, 0x1b, 0x5b, 0x9b, 0x5c, 0xb4, 0x0e, 0x7d, 0xb8, 0x54, 0xad, 0x6c, 0x6f, 0x2d, 0xaf, - 0x17, 0xfb, 0xad, 0x81, 0x91, 0xbe, 0x62, 0xdf, 0x8d, 0x1f, 0x18, 0xd7, 0x4b, 0x59, 0xf5, 0x05, - 0xf9, 0x76, 0xad, 0x72, 0x2f, 0xbf, 0x08, 0x8e, 0x5d, 0xbb, 0x5b, 0x29, 0x16, 0xc8, 0x45, 0x38, - 0x67, 0x40, 0x37, 0x2b, 0xb5, 0xda, 0xc3, 0x0d, 0x7b, 0x71, 0x75, 0xa9, 0x56, 0x2b, 0xf6, 0xdd, - 0xd8, 0x31, 0x12, 0x4c, 0xb2, 0x12, 0xd6, 0xee, 0x56, 0xea, 0xf6, 0xd2, 0x67, 0xdb, 0x2b, 0xf6, - 0xd2, 0x62, 0xba, 0x04, 0x03, 0xfb, 0xc5, 0x52, 0xad, 0x58, 0x20, 0x53, 0x70, 0xda, 0x80, 0xae, - 0x6f, 0x14, 0xfb, 0x6e, 0xbc, 0x2a, 0x72, 0x10, 0x92, 0x49, 0x80, 0xc5, 0xa5, 0xda, 0xc2, 0xd2, - 0xfa, 0xe2, 0xca, 0xfa, 0xbd, 0xe2, 0x29, 0x32, 0x01, 0xa3, 0x15, 0xf5, 0xb3, 0x70, 0xe3, 0x7d, - 0x38, 0x9d, 0x30, 0xef, 0x19, 0x85, 0x32, 0x8c, 0x8b, 0xa7, 0xb0, 0xfb, 0xe5, 0x4f, 0xf4, 0xb1, - 0x72, 0x4b, 0xbd, 0x58, 0xb8, 0x51, 0x95, 0x0f, 0x5c, 0x6b, 0xdf, 0x39, 0x19, 0x83, 0xe1, 0xc5, - 0xa5, 0xbb, 0x95, 0xed, 0xd5, 0xad, 0xe2, 0x29, 0xf6, 0x63, 0xc1, 0x5e, 0xaa, 0x6c, 0x2d, 0x2d, - 0x16, 0x0b, 0x64, 0x14, 0x06, 0x6b, 0x5b, 0x95, 0xad, 0xa5, 0x62, 0x1f, 0x19, 0x81, 0x81, 0xed, - 0xda, 0x92, 0x5d, 0xec, 0x9f, 0xff, 0xbd, 0x7f, 0x5a, 0xe0, 0x8e, 0x46, 0x79, 0xd1, 0xec, 0x6b, - 0xcd, 0xa0, 0x14, 0x4b, 0x9e, 0x78, 0xcd, 0x37, 0xd7, 0x7a, 0x44, 0x2d, 0x60, 0xae, 0xcb, 0xe1, - 0x0e, 0x12, 0x5c, 0x2f, 0xdc, 0x2e, 0x10, 0x1b, 0x83, 0x61, 0x12, 0xf6, 0x95, 0x92, 0x9c, 0x6d, - 0x02, 0xcf, 0x5d, 0xec, 0x6a, 0x96, 0x91, 0x5f, 0x02, 0x4b, 0x97, 0x99, 0x63, 0x85, 0x7c, 0xf7, - 0x78, 0xd6, 0x86, 0x2c, 0xf3, 0xd5, 0xe3, 0x91, 0x93, 0xfb, 0x30, 0xc1, 0x74, 0x73, 0x45, 0x46, - 0xce, 0x27, 0x19, 0x35, 0x93, 0x60, 0xee, 0x42, 0x36, 0x52, 0x3d, 0xb8, 0x35, 0x8e, 0x0d, 0xe1, - 0xc6, 0x75, 0x48, 0x64, 0x9e, 0x1a, 0x09, 0xe1, 0x2b, 0xfe, 0xdc, 0x99, 0x04, 0x78, 0xe7, 0xce, - 0xed, 0x02, 0xa9, 0x61, 0x92, 0x48, 0x43, 0xc9, 0x27, 0xf2, 0xe6, 0x63, 0x5a, 0xfb, 0xe7, 0xb5, - 0x29, 0xab, 0xe7, 0x71, 0x73, 0xac, 0x83, 0x75, 0x20, 0x69, 0xdd, 0x99, 0x5c, 0x8e, 0xe7, 0x41, - 0xb6, 0x5a, 0x3d, 0x77, 0x36, 0x75, 0x90, 0xb5, 0xc4, 0xb4, 0x27, 0xb2, 0x04, 0x93, 0x22, 0x09, - 0x85, 0xd0, 0xe6, 0x49, 0x37, 0x7b, 0x20, 0x57, 0xcc, 0x3d, 0xec, 0x27, 0x65, 0x11, 0x90, 0xb9, - 0xb8, 0x1d, 0x49, 0x33, 0x61, 0xee, 0x7c, 0x26, 0x4e, 0xb4, 0xef, 0x2e, 0x4c, 0x9a, 0xc6, 0x05, - 0x91, 0x03, 0x94, 0x69, 0x73, 0xe4, 0x56, 0xa8, 0x0e, 0xb3, 0x6b, 0x8e, 0x8b, 0xe7, 0x25, 0x22, - 0x48, 0x4f, 0xc6, 0xc1, 0x91, 0x72, 0x97, 0xc0, 0xb8, 0x1a, 0xf5, 0x9a, 0x6a, 0x10, 0xf2, 0x1e, - 0xcf, 0xc0, 0xcf, 0xa6, 0x26, 0x75, 0x64, 0x33, 0x46, 0x91, 0x58, 0xe6, 0x93, 0xe7, 0x59, 0x61, - 0xa7, 0x73, 0x79, 0x91, 0xd2, 0x64, 0x0d, 0x95, 0xf4, 0x84, 0x44, 0x6d, 0x4e, 0x9c, 0x58, 0x5c, - 0x09, 0x53, 0xa1, 0x44, 0x6e, 0x32, 0xe4, 0x39, 0x24, 0x39, 0x1d, 0x97, 0x2b, 0xec, 0x76, 0x81, - 0x7c, 0x8d, 0x5f, 0x75, 0xa6, 0xb8, 0x87, 0x6e, 0xb4, 0x2f, 0xb4, 0x9f, 0xf3, 0x99, 0x02, 0xc4, - 0x87, 0xd2, 0x45, 0xba, 0x0d, 0xd3, 0x59, 0xc1, 0xd9, 0xaa, 0x43, 0xbb, 0x44, 0x6e, 0xe7, 0xce, - 0x02, 0x9b, 0x99, 0x1a, 0xcd, 0xfc, 0x41, 0xea, 0x12, 0x1b, 0x9c, 0x2b, 0xf3, 0x43, 0x98, 0x64, - 0xb3, 0xe4, 0x01, 0xa5, 0xed, 0x4a, 0xcb, 0x7d, 0x42, 0x43, 0x22, 0x33, 0x7c, 0x2b, 0x50, 0x1e, - 0xef, 0xf5, 0x02, 0xf9, 0x0e, 0x8c, 0x3d, 0x74, 0xa2, 0xc6, 0xbe, 0xc8, 0x74, 0x2b, 0x13, 0xe1, - 0x22, 0x6c, 0x4e, 0xfe, 0x42, 0xe4, 0xed, 0x02, 0xf9, 0x08, 0x86, 0xef, 0xd1, 0x08, 0x6f, 0x9e, - 0x5f, 0x51, 0xb1, 0x84, 0xdc, 0x3f, 0xb9, 0xe2, 0xa9, 0x5b, 0x48, 0xb2, 0xc2, 0x49, 0x67, 0x2e, - 0xb9, 0x05, 0xc0, 0x17, 0x04, 0x94, 0x90, 0x44, 0xcf, 0xa5, 0xaa, 0x4d, 0xee, 0x31, 0xe5, 0xa1, - 0x45, 0x23, 0x7a, 0xdc, 0x22, 0xf3, 0xfa, 0x68, 0x15, 0x26, 0xd5, 0x1b, 0x65, 0xeb, 0x98, 0x90, - 0xc8, 0x4a, 0x08, 0x0b, 0x4f, 0x20, 0xed, 0x7d, 0xf6, 0x55, 0xf0, 0x07, 0xba, 0x31, 0x73, 0x0d, - 0xae, 0xa4, 0xb3, 0x7a, 0xfa, 0x1b, 0x7d, 0x09, 0x95, 0x9d, 0xc8, 0xc9, 0x34, 0xde, 0x65, 0x3f, - 0x8c, 0x4c, 0x5e, 0x05, 0xc9, 0xe6, 0xfd, 0x45, 0x98, 0xd3, 0xcb, 0x35, 0x53, 0xad, 0xc7, 0x6b, - 0x6e, 0x5e, 0x06, 0xf7, 0xb9, 0x2b, 0x5d, 0x28, 0x84, 0xfd, 0xd6, 0xff, 0xeb, 0x7d, 0x05, 0x5c, - 0x4e, 0x16, 0x61, 0x4a, 0x96, 0xb5, 0xd1, 0xa6, 0x5e, 0xad, 0xb6, 0x8c, 0xef, 0x51, 0xc9, 0xc8, - 0x15, 0x0d, 0x26, 0xa5, 0x93, 0x34, 0x8a, 0x6d, 0x7d, 0x46, 0x86, 0x1a, 0xd2, 0x2d, 0x6f, 0x4d, - 0xbc, 0xf5, 0x65, 0xe6, 0x00, 0x7f, 0xc0, 0x9d, 0x4a, 0x86, 0xf2, 0xbf, 0x33, 0x4f, 0xba, 0x18, - 0x40, 0x73, 0x39, 0x26, 0xc4, 0xed, 0x02, 0xf9, 0x02, 0x48, 0xda, 0x24, 0x51, 0x5d, 0x98, 0x6b, - 0x7e, 0xa9, 0x2e, 0xec, 0x62, 0xcf, 0xdc, 0x83, 0x19, 0x95, 0x9f, 0x4a, 0x2b, 0x75, 0x9e, 0xe4, - 0xd4, 0x26, 0xaf, 0x96, 0xe4, 0x13, 0x98, 0x12, 0x93, 0x56, 0x47, 0x90, 0xa2, 0x5a, 0x7f, 0x84, - 0x55, 0x92, 0x3b, 0x4f, 0xef, 0xc3, 0x4c, 0x2d, 0xd1, 0x63, 0x3c, 0x98, 0xff, 0x9c, 0x29, 0x02, - 0x81, 0x35, 0x1a, 0xf1, 0x2e, 0xcb, 0x96, 0xf5, 0x00, 0x08, 0x77, 0x0a, 0x49, 0x71, 0x4f, 0x5c, - 0xfa, 0x94, 0x5c, 0x4c, 0x54, 0x9d, 0x01, 0x91, 0x0c, 0x17, 0xb0, 0xdc, 0x96, 0x6d, 0xf1, 0xe7, - 0xe5, 0x11, 0x6a, 0x9c, 0xa3, 0x5f, 0x36, 0x18, 0x8c, 0xa3, 0x78, 0x31, 0x00, 0xe7, 0x72, 0x29, - 0xc8, 0x2f, 0x63, 0x62, 0xe8, 0xee, 0x66, 0x15, 0xf9, 0x4e, 0x96, 0xf5, 0x9b, 0x63, 0x18, 0xce, - 0xbd, 0x71, 0x3c, 0x62, 0x65, 0xc8, 0x4e, 0xdc, 0xa3, 0xd1, 0x66, 0xab, 0xb3, 0xe7, 0xe2, 0xc3, - 0xc3, 0x44, 0x39, 0x8d, 0x14, 0x48, 0xcc, 0x4b, 0x99, 0x8f, 0x31, 0x46, 0xd4, 0xe8, 0x0f, 0xc9, - 0x0a, 0x14, 0xf9, 0xfa, 0xaf, 0x89, 0xb8, 0x98, 0x12, 0x21, 0x48, 0x9c, 0xc0, 0x39, 0x08, 0x73, - 0x47, 0xeb, 0x16, 0x8f, 0x8d, 0x22, 0xf2, 0x9b, 0xd4, 0x15, 0xcc, 0x29, 0x03, 0xa6, 0x1e, 0xcb, - 0x60, 0x23, 0x62, 0xd3, 0x90, 0x46, 0x32, 0x03, 0x15, 0x7f, 0x76, 0xfa, 0x6a, 0xbc, 0xd9, 0xa7, - 0xb1, 0xf1, 0xa7, 0x9f, 0xc8, 0x96, 0xb8, 0xf3, 0x26, 0x51, 0x4f, 0x71, 0x67, 0x08, 0x7d, 0xd5, - 0xd0, 0x49, 0x4e, 0x26, 0xf7, 0x2d, 0xdc, 0x83, 0x30, 0xeb, 0xd6, 0x4c, 0x5c, 0x37, 0xf6, 0x5b, - 0x72, 0x4d, 0x68, 0x5c, 0x3b, 0xf3, 0xb8, 0xa4, 0xb1, 0x4d, 0x92, 0xa9, 0xb0, 0x9d, 0x20, 0xa0, - 0x1e, 0x67, 0xce, 0xd3, 0x37, 0xb2, 0xb8, 0x3f, 0xc6, 0xa5, 0x47, 0xe3, 0xe6, 0x77, 0x0e, 0x7b, - 0x89, 0xe0, 0xcf, 0xa4, 0xdd, 0x2e, 0x90, 0x77, 0x61, 0x44, 0xd4, 0x91, 0x31, 0x19, 0x95, 0x0e, - 0xbb, 0xd4, 0x1a, 0x39, 0x81, 0x77, 0x12, 0xd6, 0xd9, 0xa4, 0xc9, 0x1b, 0x7d, 0x5e, 0xe7, 0x77, - 0xd9, 0x66, 0xdb, 0x7c, 0x1e, 0xce, 0x05, 0xb9, 0xeb, 0x22, 0x67, 0x49, 0x65, 0x6a, 0x92, 0xa0, - 0x1e, 0xdb, 0x23, 0x17, 0xc2, 0xf4, 0x66, 0x4c, 0x77, 0xaa, 0xb2, 0x16, 0x2a, 0xbd, 0xd9, 0x00, - 0xf7, 0xda, 0x6b, 0x57, 0xa0, 0x58, 0x69, 0xe0, 0x4e, 0x50, 0xa3, 0x07, 0x4e, 0x7b, 0xdf, 0x0f, - 0xa8, 0x32, 0x5a, 0x92, 0x08, 0x29, 0x6b, 0x46, 0x69, 0x16, 0x02, 0xb1, 0x4a, 0x1d, 0xcc, 0x09, - 0x3f, 0xab, 0x54, 0x8b, 0x04, 0x2a, 0x9b, 0xa3, 0x8b, 0x91, 0x32, 0xbd, 0xc0, 0xcc, 0xaa, 0xd6, - 0x8b, 0x89, 0x79, 0x1f, 0x17, 0x0c, 0x45, 0x1c, 0xaa, 0x1d, 0x42, 0x81, 0x94, 0x39, 0x27, 0xaf, - 0x1f, 0x29, 0xd2, 0x8a, 0x3c, 0x37, 0x8e, 0xbb, 0x25, 0x8f, 0x3b, 0xaf, 0xf8, 0xef, 0xc1, 0xe4, - 0x12, 0x5b, 0xd0, 0x3b, 0x4d, 0x97, 0xbf, 0x83, 0x41, 0xcc, 0x87, 0x0d, 0x72, 0x19, 0x97, 0xe5, - 0xcb, 0x84, 0xc8, 0x2a, 0x4c, 0x7f, 0xb9, 0xa7, 0x68, 0x30, 0x39, 0x1e, 0xd3, 0x52, 0xac, 0x78, - 0x8a, 0x04, 0x4d, 0x73, 0x61, 0xeb, 0xcf, 0x72, 0x8d, 0xb0, 0xd2, 0x6e, 0xb7, 0xa4, 0x4b, 0x9a, - 0x9f, 0xbd, 0x5f, 0x33, 0x4c, 0xc8, 0x14, 0x5e, 0xca, 0x4e, 0x2b, 0x8d, 0x9f, 0x6b, 0x2f, 0x85, - 0xe7, 0xc8, 0xcc, 0xc1, 0xf7, 0x9a, 0x8b, 0x2a, 0x73, 0x7d, 0xa5, 0xd5, 0x4a, 0x31, 0x87, 0xe4, - 0x75, 0x53, 0x7a, 0x16, 0x4d, 0xaf, 0x12, 0xd0, 0x44, 0xe7, 0x5a, 0x57, 0xa5, 0xdd, 0xe6, 0x8b, - 0xe5, 0x25, 0xb5, 0x60, 0x98, 0x88, 0xb4, 0x89, 0x9e, 0xc4, 0x8b, 0xb5, 0xfd, 0x3e, 0x4e, 0xb3, - 0xf8, 0x39, 0x71, 0xa2, 0x1b, 0xbc, 0xc9, 0xd7, 0xd4, 0x95, 0x12, 0x96, 0x40, 0xaa, 0x7d, 0xe2, - 0x34, 0xaa, 0x3e, 0xf1, 0xdb, 0xe4, 0xca, 0x33, 0x93, 0x80, 0x4b, 0x79, 0x97, 0xf2, 0xd0, 0xca, - 0x53, 0x5a, 0x14, 0x93, 0x29, 0xae, 0xe0, 0x25, 0x63, 0x7f, 0x48, 0xd7, 0xb1, 0x9c, 0x8b, 0x57, - 0x4d, 0x2e, 0x26, 0x5f, 0x8b, 0x57, 0x42, 0x73, 0x9e, 0x91, 0xcf, 0x1d, 0x93, 0xbb, 0x30, 0xad, - 0x8f, 0xa8, 0x6a, 0x77, 0xde, 0xea, 0x9f, 0x27, 0x67, 0x0b, 0x66, 0x32, 0x1f, 0x77, 0x57, 0x5b, - 0x6c, 0xb7, 0xa7, 0xdf, 0x73, 0xa5, 0x52, 0x38, 0x2b, 0x2c, 0xfb, 0xc4, 0x73, 0xf6, 0xe4, 0x15, - 0xd3, 0xf0, 0xcf, 0x7e, 0xed, 0x7e, 0xee, 0x5a, 0x0f, 0x2a, 0xd1, 0xa1, 0x5f, 0xe3, 0x0e, 0x98, - 0x2a, 0xe3, 0x8a, 0xe6, 0x0a, 0xc8, 0x29, 0xc0, 0xea, 0x46, 0xa2, 0xe6, 0xc0, 0x74, 0x06, 0x3a, - 0xbf, 0x8b, 0xaf, 0xe6, 0xcb, 0x8c, 0x27, 0xd6, 0x8e, 0x4c, 0xd0, 0x9e, 0xdb, 0x33, 0xd9, 0xe8, - 0xde, 0xb6, 0xe4, 0x9c, 0x9a, 0x0f, 0xc7, 0xaf, 0x72, 0x9e, 0xb4, 0xa6, 0x72, 0xdb, 0x18, 0x8f, - 0xf4, 0x27, 0xdd, 0x36, 0x06, 0x52, 0xd6, 0xf0, 0x6a, 0x57, 0x1a, 0xcd, 0xa2, 0x23, 0x5f, 0x71, - 0x3f, 0x8e, 0x59, 0x84, 0xee, 0xc7, 0xc9, 0x94, 0x7f, 0x39, 0x9f, 0x40, 0x17, 0xee, 0xf0, 0x43, - 0x5b, 0x93, 0x24, 0x24, 0xba, 0xa9, 0x94, 0xc0, 0x25, 0xe7, 0x46, 0x26, 0x89, 0x5e, 0xc4, 0x43, - 0xf9, 0x0d, 0xe6, 0xf4, 0x52, 0x16, 0xf2, 0x58, 0x6a, 0xca, 0x06, 0x94, 0xe2, 0xc1, 0x4c, 0x34, - 0xe0, 0x84, 0x43, 0x29, 0x3b, 0xe3, 0x5c, 0xfc, 0x1d, 0x27, 0x25, 0xbe, 0x96, 0xfa, 0xd2, 0x73, - 0x3a, 0xa6, 0x6b, 0x11, 0x7c, 0x3d, 0xd7, 0x12, 0xbe, 0x9f, 0x8f, 0x9d, 0xb8, 0x31, 0x34, 0x63, - 0x3d, 0xd7, 0x91, 0xca, 0x58, 0x9d, 0x34, 0x10, 0xf9, 0xad, 0xbe, 0x98, 0x25, 0x27, 0x4c, 0xaf, - 0xb8, 0x5a, 0xbd, 0xa4, 0x9e, 0x96, 0x44, 0x9c, 0x64, 0xc5, 0x3d, 0x4e, 0xd5, 0xf2, 0xe4, 0x2c, - 0xc2, 0x18, 0xaf, 0x2d, 0xdf, 0x48, 0xcf, 0x19, 0xdd, 0x64, 0xec, 0xa1, 0x73, 0x46, 0xe3, 0xcc, - 0xed, 0x73, 0x01, 0x5d, 0xc9, 0x12, 0x9c, 0x5f, 0x8b, 0xf3, 0x69, 0x19, 0x86, 0x1b, 0x59, 0xf5, - 0x02, 0xaf, 0xcd, 0x85, 0x64, 0xe7, 0x18, 0x15, 0xca, 0x6f, 0x12, 0xd1, 0xbb, 0xa6, 0x47, 0x95, - 0xf2, 0xf5, 0xd7, 0x29, 0xf1, 0x44, 0x34, 0xbe, 0xd2, 0x24, 0xf3, 0x31, 0x9e, 0x55, 0x3e, 0x31, - 0x0d, 0x8a, 0x0e, 0x8a, 0x6c, 0x31, 0x9b, 0x78, 0x7d, 0x84, 0x06, 0x51, 0x2a, 0xdf, 0xe2, 0x2b, - 0x86, 0xf2, 0x96, 0x44, 0xe7, 0xeb, 0x6e, 0x6a, 0xcd, 0xce, 0x95, 0x98, 0x8d, 0xee, 0xd5, 0x6d, - 0xdf, 0xd7, 0xd6, 0xec, 0x24, 0x6f, 0x48, 0xae, 0x27, 0x15, 0xb7, 0x14, 0x49, 0xef, 0x3d, 0x41, - 0x84, 0x90, 0x24, 0x02, 0x48, 0x2d, 0xa3, 0x1f, 0x4c, 0x64, 0x7e, 0x2f, 0xd8, 0x72, 0xfe, 0xe7, - 0x48, 0xcb, 0x42, 0xf6, 0xaa, 0xe1, 0x97, 0xda, 0x42, 0x67, 0x72, 0x86, 0xca, 0x1c, 0xcf, 0x23, - 0xe8, 0x25, 0x7b, 0x1d, 0xaf, 0x34, 0x25, 0x1a, 0xe8, 0x36, 0xa8, 0xd2, 0x6c, 0x32, 0xb1, 0xf9, - 0xed, 0xbf, 0x27, 0x35, 0xa5, 0xa4, 0xbc, 0xb3, 0x09, 0xa7, 0x6d, 0xaf, 0x8a, 0x7d, 0x2d, 0x17, - 0xe3, 0x44, 0x9b, 0xf0, 0x52, 0xd1, 0x6b, 0xdd, 0x5a, 0xad, 0x3d, 0xc6, 0xd9, 0xc5, 0x0c, 0x3a, - 0x5d, 0x73, 0xf7, 0x3c, 0x75, 0x13, 0xa1, 0x66, 0x2b, 0x23, 0x48, 0x83, 0x25, 0x97, 0x18, 0x03, - 0xa5, 0xf2, 0xf3, 0x4c, 0x4b, 0xed, 0x5d, 0xa1, 0x69, 0x10, 0x91, 0x14, 0x8f, 0xe6, 0x6e, 0x3d, - 0x9f, 0x89, 0x4b, 0x0b, 0xd4, 0x1f, 0xe8, 0x57, 0x02, 0xcd, 0x57, 0xfb, 0x4d, 0x81, 0x99, 0x2f, - 0xfa, 0xdf, 0x42, 0xaf, 0x8b, 0xed, 0xb7, 0xa8, 0xee, 0x75, 0xd1, 0x5e, 0x7c, 0x4f, 0x38, 0x3d, - 0xc8, 0xc7, 0x30, 0xaa, 0x5e, 0xc4, 0x57, 0xfe, 0xed, 0xe4, 0xa3, 0xfc, 0x73, 0xa5, 0x34, 0x42, - 0x14, 0xf8, 0xb6, 0x74, 0x7c, 0x60, 0x99, 0x25, 0xd3, 0x61, 0x94, 0x5f, 0xec, 0xdb, 0xd2, 0xeb, - 0x61, 0xb0, 0xa5, 0xde, 0xc3, 0x4f, 0xb2, 0x7d, 0x0f, 0xc6, 0xe3, 0xb7, 0xef, 0x77, 0xe6, 0x35, - 0xc6, 0xc4, 0x83, 0xf8, 0x49, 0xc6, 0x77, 0xe5, 0x91, 0x06, 0x96, 0x67, 0x22, 0xbb, 0xef, 0xe2, - 0x1f, 0x4b, 0x2f, 0x8b, 0x51, 0xd3, 0xd4, 0x4b, 0xfa, 0x5d, 0x16, 0xdf, 0x71, 0xfd, 0x31, 0x5a, - 0x35, 0xb4, 0x19, 0xcf, 0x49, 0xab, 0xa1, 0xcd, 0x7a, 0x0e, 0x3a, 0x76, 0xf9, 0x7f, 0x21, 0x5d, - 0x0a, 0xb1, 0xd0, 0x8b, 0x46, 0xb5, 0x52, 0x72, 0x2f, 0xe5, 0xa1, 0x93, 0xa2, 0x6b, 0x50, 0x4c, - 0xbe, 0x9c, 0xab, 0xec, 0xb1, 0x9c, 0x27, 0x8e, 0x95, 0x91, 0x97, 0xfb, 0xe4, 0xee, 0xa6, 0xf4, - 0x8f, 0x9b, 0x72, 0xaf, 0x64, 0x57, 0x4a, 0x17, 0x9d, 0xef, 0x30, 0x9f, 0x30, 0x1e, 0xd1, 0xd5, - 0x2d, 0xe5, 0xd4, 0x23, 0xbd, 0xba, 0x66, 0x95, 0xf1, 0xee, 0xae, 0x2b, 0x93, 0x56, 0x65, 0x1e, - 0xd9, 0x2a, 0x67, 0x41, 0xef, 0x17, 0x17, 0x7a, 0x1e, 0xff, 0x92, 0x5f, 0x80, 0xd9, 0x9c, 0x0c, - 0xf2, 0xe4, 0x5a, 0xc2, 0xd3, 0x9a, 0x9d, 0x61, 0x5e, 0x4d, 0x90, 0xcc, 0xd7, 0xed, 0xd7, 0x30, - 0x6e, 0xc0, 0x48, 0x21, 0x91, 0x3a, 0x8b, 0x7b, 0xe8, 0x46, 0xfb, 0xfc, 0x11, 0x77, 0x6d, 0xd9, - 0xcc, 0xcc, 0x3d, 0x41, 0x6a, 0x68, 0x8b, 0x18, 0xd0, 0x8c, 0xe3, 0xb8, 0x0c, 0x81, 0x73, 0xd9, - 0x02, 0xd9, 0xda, 0xc1, 0xe6, 0x42, 0x46, 0x7e, 0x0f, 0x35, 0x17, 0xf2, 0x73, 0x7f, 0xe4, 0x56, - 0x73, 0x53, 0xea, 0x48, 0xd9, 0x12, 0xf3, 0x53, 0x7d, 0xe4, 0x4a, 0xbc, 0xcf, 0x24, 0xa6, 0xb2, - 0x77, 0x90, 0x1c, 0xf2, 0xee, 0xab, 0x87, 0x2d, 0xb7, 0x5c, 0x93, 0x6b, 0x5e, 0xab, 0x5f, 0x5e, - 0x9e, 0x90, 0xdc, 0xfa, 0x2d, 0xc9, 0xef, 0x29, 0xbb, 0x7e, 0xc7, 0xdd, 0x74, 0xd5, 0xf9, 0x57, - 0x22, 0x81, 0x8c, 0xd1, 0x50, 0x0d, 0x3e, 0x97, 0x03, 0x27, 0xeb, 0x18, 0x08, 0x94, 0x84, 0x6a, - 0x46, 0x69, 0x76, 0x86, 0x9a, 0x5c, 0x79, 0x7c, 0x1e, 0x1b, 0x19, 0x3e, 0x4e, 0x32, 0x8f, 0x13, - 0xa9, 0x41, 0xc4, 0x3c, 0x36, 0xa0, 0x27, 0x9b, 0xc7, 0x09, 0x81, 0xe6, 0x3c, 0x4e, 0x56, 0x33, - 0x69, 0xe9, 0xe7, 0x8e, 0x6a, 0xb2, 0x9a, 0x6a, 0x1e, 0x67, 0x4b, 0xcc, 0xcf, 0xc4, 0x92, 0x2b, - 0x51, 0xcd, 0x63, 0x53, 0x62, 0x0e, 0xf9, 0x31, 0xe7, 0x71, 0xb2, 0x10, 0x73, 0x1e, 0x9f, 0xa8, - 0x7e, 0x6a, 0x1e, 0x67, 0xd7, 0xef, 0xc4, 0xf3, 0x38, 0x91, 0xba, 0xc8, 0x68, 0x68, 0xd6, 0x3c, - 0x4e, 0xd2, 0xf3, 0x79, 0x9c, 0x84, 0x26, 0x9c, 0x2b, 0x5d, 0xe6, 0x71, 0x92, 0xf3, 0x33, 0x94, - 0x97, 0x48, 0xbb, 0x72, 0x9c, 0x99, 0x9c, 0x9b, 0xb1, 0x85, 0x3c, 0x44, 0xf7, 0x5e, 0x02, 0x7e, - 0xbc, 0xd9, 0x7c, 0x21, 0x4f, 0x28, 0xce, 0xe7, 0x1d, 0xd9, 0x89, 0xc9, 0xea, 0x9a, 0xbe, 0xab, - 0xec, 0xac, 0x33, 0x5d, 0x2a, 0xbc, 0xc3, 0xe6, 0x4d, 0xb3, 0x8b, 0xdc, 0x6e, 0x49, 0x73, 0xba, - 0xc8, 0x55, 0xa6, 0x4c, 0x52, 0x6e, 0x2e, 0x4b, 0xf7, 0xf9, 0xfd, 0xb9, 0x3c, 0xe0, 0x48, 0xf2, - 0xcd, 0x27, 0x8c, 0xa3, 0x13, 0xd7, 0x54, 0x19, 0x49, 0xc9, 0x9a, 0x9e, 0x74, 0x9e, 0xaf, 0x49, - 0xed, 0x21, 0x95, 0x6d, 0x2b, 0xd1, 0x68, 0x7d, 0xae, 0xe7, 0x62, 0xc8, 0x16, 0xfa, 0x72, 0xd3, - 0x70, 0xcd, 0x0f, 0x9c, 0x97, 0xd6, 0xab, 0xa7, 0xd4, 0x54, 0xde, 0x20, 0x5d, 0x6a, 0x5e, 0x52, - 0x21, 0x25, 0x35, 0xcd, 0xfd, 0x09, 0x7a, 0xbf, 0xc4, 0x8d, 0x2b, 0xef, 0x91, 0x9f, 0xef, 0x49, - 0x99, 0x32, 0x82, 0x95, 0x18, 0x2d, 0xc6, 0x88, 0x7d, 0x28, 0x4e, 0xf0, 0x24, 0x30, 0xb7, 0xf3, - 0xb3, 0xf8, 0xc9, 0x27, 0x50, 0x14, 0xcb, 0x5b, 0x2c, 0x20, 0x8b, 0x30, 0x77, 0xe8, 0xaa, 0xd2, - 0xe9, 0x76, 0x8c, 0x1a, 0x1c, 0xc7, 0xd9, 0x76, 0x9c, 0x9e, 0xc8, 0xf7, 0x4c, 0xb1, 0xed, 0x70, - 0x2b, 0xe8, 0x84, 0x11, 0x6d, 0xa6, 0x3d, 0x4a, 0x66, 0x65, 0x64, 0x64, 0x84, 0x49, 0xbe, 0x33, - 0x4f, 0x56, 0x70, 0x6d, 0x33, 0xc1, 0xdd, 0x5c, 0x6e, 0xd9, 0x62, 0x70, 0xe9, 0x59, 0x53, 0xd7, - 0x7a, 0xcc, 0x3a, 0xe5, 0x95, 0x9d, 0x5b, 0x29, 0xe9, 0x75, 0x3d, 0x9b, 0x25, 0x6e, 0x67, 0xfe, - 0xe4, 0x02, 0x99, 0x2c, 0x71, 0x9f, 0xe9, 0xa5, 0xc8, 0xe2, 0x6b, 0xdd, 0x4b, 0x90, 0xa5, 0xe6, - 0xc2, 0x31, 0x87, 0x31, 0x6f, 0x2e, 0x7c, 0x80, 0xf1, 0x0e, 0xdc, 0xcf, 0xd9, 0x6b, 0x0a, 0x24, - 0x6f, 0x54, 0x91, 0x4f, 0x61, 0x54, 0x32, 0xf7, 0x1e, 0xf9, 0x24, 0x37, 0x8e, 0xfc, 0x22, 0x4c, - 0x18, 0xd7, 0xc5, 0x94, 0x19, 0x97, 0x75, 0x89, 0xac, 0xcb, 0x84, 0x9e, 0x30, 0xae, 0x85, 0x29, - 0x29, 0x59, 0x97, 0xc5, 0x72, 0xa5, 0x7c, 0x04, 0x63, 0xa2, 0x4b, 0xbb, 0xf6, 0x46, 0xbe, 0x63, - 0x71, 0x46, 0x0b, 0xbd, 0xee, 0x34, 0xdd, 0x68, 0xc1, 0xf7, 0x1e, 0xb9, 0x7b, 0x3d, 0x3b, 0x26, - 0xcd, 0xb2, 0x33, 0x4f, 0xbe, 0xc2, 0xb7, 0xdd, 0xe5, 0x8b, 0xfb, 0x34, 0x7a, 0xea, 0x07, 0x8f, - 0x5d, 0x6f, 0xaf, 0x87, 0xc8, 0xcb, 0xa6, 0xc8, 0x24, 0x9f, 0xfc, 0x40, 0xbe, 0x82, 0xb9, 0x5a, - 0xbe, 0xf0, 0x9e, 0x42, 0xba, 0xef, 0xa3, 0x35, 0xb8, 0x80, 0x61, 0x42, 0x27, 0xad, 0x7b, 0x57, - 0xa1, 0x5f, 0xf0, 0xcc, 0x94, 0xf2, 0x50, 0xa2, 0xe1, 0x07, 0xcd, 0xde, 0x12, 0xcb, 0x66, 0xc4, - 0x70, 0x82, 0x4d, 0x76, 0xc6, 0x17, 0x70, 0xae, 0x96, 0x2b, 0xba, 0x97, 0x88, 0x5e, 0x2a, 0xf3, - 0x79, 0xec, 0x8a, 0x13, 0xd6, 0xbb, 0xab, 0xcc, 0x15, 0x5c, 0xbc, 0xd9, 0x86, 0xbb, 0x19, 0xd0, - 0x47, 0x34, 0xc0, 0xb8, 0xf4, 0x5e, 0x11, 0xd9, 0x26, 0xb9, 0x6c, 0xf9, 0x0a, 0x9c, 0xa9, 0xa5, - 0x44, 0xe5, 0xb1, 0xf4, 0x3a, 0xe8, 0x9a, 0xc2, 0x96, 0x1e, 0xb3, 0x5e, 0x3d, 0xc2, 0xa1, 0xc6, - 0xee, 0xd1, 0x68, 0x7b, 0xa5, 0x47, 0x2f, 0xc9, 0x8b, 0x13, 0x92, 0x70, 0xe7, 0x0e, 0xe3, 0xac, - 0x69, 0x9c, 0x69, 0x8a, 0xdc, 0x8f, 0xf7, 0x53, 0x79, 0xe8, 0xd3, 0xb3, 0xd8, 0x3c, 0x09, 0x6f, - 0xe2, 0x5a, 0x28, 0x62, 0xb3, 0x67, 0x63, 0x5d, 0x87, 0x43, 0x62, 0x9f, 0xa4, 0x16, 0xa6, 0x1d, - 0x92, 0x0a, 0xb7, 0x73, 0xf9, 0xf4, 0x10, 0xb0, 0x4b, 0xa9, 0x98, 0xfd, 0xae, 0x22, 0xb8, 0xbb, - 0x77, 0xd5, 0x6f, 0x3c, 0xd6, 0xdd, 0xbd, 0xec, 0x77, 0xd2, 0x0f, 0xca, 0x60, 0x3b, 0xf3, 0x62, - 0xc5, 0x67, 0x3f, 0x8c, 0x08, 0x37, 0x04, 0xc4, 0x2b, 0x7e, 0x12, 0x2e, 0x5c, 0x65, 0x6f, 0x4a, - 0x27, 0x2a, 0x16, 0x68, 0x4a, 0xce, 0xed, 0x1a, 0xe5, 0x3f, 0x45, 0x26, 0xd3, 0x7f, 0xaa, 0x57, - 0x34, 0xff, 0xd0, 0x82, 0xd8, 0xb4, 0xdd, 0xc2, 0x70, 0xef, 0x03, 0x9f, 0xf3, 0xc4, 0x11, 0xc0, - 0x69, 0x54, 0xef, 0x40, 0xb5, 0x29, 0x11, 0xde, 0x64, 0x74, 0xbc, 0xca, 0x1c, 0x9d, 0xc6, 0xc5, - 0x5d, 0xa9, 0x47, 0x5d, 0xdd, 0x2e, 0x90, 0x75, 0x38, 0x7b, 0x8f, 0x46, 0x62, 0x8d, 0xb3, 0x69, - 0x18, 0x05, 0x6e, 0x23, 0xea, 0x7a, 0x02, 0x2a, 0x8d, 0xb0, 0x0c, 0x9e, 0x9d, 0xb7, 0x98, 0xbc, - 0x5a, 0xb6, 0xbc, 0xae, 0x7c, 0x5d, 0x62, 0x81, 0xc5, 0xb1, 0xca, 0x49, 0xaa, 0x98, 0x3f, 0xc5, - 0x87, 0x79, 0xa8, 0x51, 0x3e, 0x6b, 0x31, 0x4e, 0xf3, 0x22, 0xcc, 0xca, 0x9b, 0x30, 0xc4, 0x99, - 0x72, 0x37, 0xd4, 0x71, 0x9d, 0x87, 0xdc, 0x81, 0x51, 0x15, 0x2b, 0x44, 0x0c, 0x54, 0x6e, 0xbd, - 0xee, 0xc0, 0x28, 0xd7, 0xab, 0x8e, 0xcf, 0xf2, 0x01, 0x8c, 0xaa, 0xe0, 0xa2, 0x13, 0xef, 0xf4, - 0x9f, 0xc0, 0x84, 0x1e, 0x66, 0x74, 0xf2, 0x8e, 0xfc, 0x08, 0xcf, 0xa9, 0xe5, 0x71, 0x50, 0x3e, - 0xff, 0x4c, 0x22, 0xfb, 0x8d, 0xe8, 0x52, 0xbe, 0x40, 0x4a, 0x60, 0x6e, 0xf5, 0xcf, 0xa4, 0xb8, - 0xc9, 0x07, 0xf2, 0xca, 0x96, 0x62, 0x4e, 0x13, 0x75, 0xe9, 0xb3, 0x49, 0xde, 0xcd, 0xcf, 0xc3, - 0xac, 0x16, 0xd8, 0x9e, 0xd5, 0x3e, 0xce, 0x79, 0x7a, 0xef, 0xae, 0xcb, 0x93, 0xb2, 0x81, 0x5a, - 0x5a, 0xea, 0x35, 0xc4, 0x7c, 0x41, 0x97, 0xf2, 0x1f, 0x50, 0xc4, 0xc1, 0xb8, 0x8f, 0xe6, 0x6e, - 0x0a, 0x9b, 0xdb, 0xbc, 0x2e, 0x0f, 0x32, 0xc6, 0xf6, 0x7d, 0x5a, 0x5c, 0x17, 0xb6, 0x6e, 0xee, - 0x02, 0x71, 0x11, 0xf5, 0xa5, 0x88, 0x5b, 0x91, 0xd1, 0x9a, 0xc7, 0x6f, 0x6c, 0x7e, 0xcd, 0xce, - 0x67, 0x9c, 0xe0, 0xf7, 0x1c, 0x8b, 0x3c, 0x71, 0xbf, 0x80, 0xda, 0x61, 0x66, 0xfa, 0xb3, 0x7c, - 0x61, 0xd7, 0xb5, 0x20, 0x90, 0x4c, 0x4e, 0xb5, 0xe9, 0x3d, 0xc6, 0xbb, 0x70, 0xd9, 0xef, 0x45, - 0xbe, 0xda, 0x43, 0x8a, 0xec, 0x89, 0xd7, 0x7a, 0xd2, 0xa9, 0xf3, 0xe0, 0xf3, 0x7c, 0x87, 0xcd, - 0x2e, 0xaf, 0xc7, 0xfb, 0x97, 0x19, 0x47, 0xf4, 0x2a, 0x14, 0x36, 0x5b, 0xa0, 0x19, 0x0a, 0xdb, - 0xb5, 0x0d, 0x79, 0xdd, 0xff, 0x19, 0x94, 0xe3, 0x48, 0x97, 0x93, 0x0d, 0x42, 0x7e, 0x04, 0x26, - 0x49, 0xf5, 0x54, 0x48, 0xba, 0xbd, 0x9b, 0x34, 0x77, 0x25, 0xaf, 0x87, 0xf5, 0xfb, 0x3e, 0x22, - 0x82, 0x2f, 0xf1, 0x72, 0x6a, 0xde, 0x1b, 0xac, 0x5d, 0x1c, 0xce, 0xe2, 0x72, 0xe0, 0x4b, 0x11, - 0x94, 0x1e, 0xed, 0x93, 0x0b, 0x52, 0x81, 0x28, 0x09, 0x41, 0x56, 0x97, 0xe1, 0xed, 0x7d, 0xc6, - 0x5a, 0xca, 0x19, 0xd7, 0x93, 0x0f, 0xa8, 0x13, 0x5f, 0x88, 0x4b, 0x64, 0x4b, 0xd4, 0x2f, 0x21, - 0xa7, 0x51, 0xc9, 0xdb, 0x5c, 0x59, 0x14, 0x2a, 0xfa, 0xab, 0x24, 0x8b, 0x60, 0x70, 0x66, 0x8a, - 0xf8, 0x81, 0x1b, 0x3d, 0x5b, 0xb0, 0x57, 0x63, 0xb7, 0x82, 0x8e, 0x90, 0xb2, 0x41, 0x22, 0xed, - 0x55, 0xf2, 0x25, 0x2e, 0x25, 0x42, 0x7c, 0xd5, 0xf7, 0xa3, 0x30, 0x0a, 0x9c, 0x76, 0x0d, 0x5f, - 0x94, 0xce, 0x6d, 0x74, 0x1c, 0xac, 0x9e, 0xc5, 0xa6, 0xc5, 0xce, 0x8a, 0x84, 0xfd, 0x59, 0x29, - 0x7e, 0xd4, 0xfd, 0xa1, 0x2c, 0x64, 0x17, 0xcb, 0xa5, 0x26, 0x53, 0xf4, 0xbf, 0x4c, 0xa1, 0x75, - 0x98, 0xcd, 0x49, 0x8c, 0xa4, 0x8e, 0xa9, 0xbb, 0x27, 0x4e, 0x9a, 0xeb, 0x5e, 0x30, 0xf9, 0x0a, - 0x66, 0x32, 0x33, 0x27, 0x29, 0x57, 0x7b, 0xb7, 0xbc, 0x4a, 0xbd, 0x84, 0x3f, 0x86, 0x12, 0xbf, - 0xb9, 0x82, 0x01, 0xda, 0x46, 0x12, 0x9d, 0xf8, 0x3e, 0x53, 0x0e, 0x41, 0x72, 0xbd, 0xce, 0xa7, - 0x53, 0xb7, 0xea, 0xa7, 0x31, 0x7b, 0x8a, 0x7c, 0x02, 0x9b, 0x36, 0xfc, 0x27, 0x34, 0x78, 0xa6, - 0x3e, 0xbc, 0x2c, 0x64, 0xb7, 0x4b, 0x53, 0x9b, 0x30, 0xb3, 0x43, 0x03, 0xf7, 0xd1, 0xb3, 0xa4, - 0x40, 0xd9, 0x33, 0x99, 0xd8, 0x6e, 0x12, 0x3f, 0x87, 0xd9, 0x05, 0xff, 0xa0, 0x2d, 0xae, 0x27, - 0x1a, 0x32, 0x55, 0xcc, 0x41, 0x36, 0xbe, 0x77, 0xd0, 0xd6, 0x9c, 0xba, 0x3f, 0xa9, 0xf3, 0x2d, - 0xe0, 0xbd, 0xdd, 0xeb, 0x66, 0xdc, 0x44, 0x06, 0x49, 0x7c, 0xeb, 0x44, 0x9a, 0x72, 0x3a, 0xff, - 0x16, 0x4e, 0xc2, 0x04, 0x1f, 0xf7, 0xcd, 0x69, 0x93, 0x30, 0x0b, 0xdf, 0xfd, 0xb2, 0x5b, 0x86, - 0x54, 0x5e, 0x60, 0xbe, 0xd4, 0x63, 0xd4, 0x76, 0x5d, 0xee, 0x2d, 0x9b, 0x81, 0xfb, 0xc4, 0x6d, - 0xd1, 0x3d, 0xe1, 0x46, 0x34, 0xa3, 0xc3, 0x4d, 0x64, 0xb7, 0x7a, 0x6a, 0xe9, 0x23, 0x5a, 0xad, - 0x2e, 0x2a, 0x16, 0xd1, 0xf3, 0x47, 0x30, 0x4a, 0x3c, 0xad, 0x98, 0xd0, 0x79, 0xbb, 0xad, 0xd6, - 0x29, 0x66, 0x54, 0x6a, 0xdf, 0x87, 0xf1, 0x9a, 0x5e, 0x78, 0x46, 0x21, 0xb9, 0x93, 0x42, 0x5d, - 0x77, 0xea, 0x5d, 0xf7, 0x2e, 0x41, 0xaf, 0x6a, 0xe3, 0x39, 0x56, 0x2b, 0x72, 0x63, 0x84, 0x8c, - 0x47, 0xf6, 0xd4, 0x2e, 0x90, 0xf5, 0x06, 0xa6, 0x8a, 0x11, 0xca, 0x7e, 0x97, 0xaf, 0xce, 0x9f, - 0xee, 0x49, 0x3e, 0x71, 0x4a, 0xac, 0xde, 0x6f, 0x09, 0xab, 0xe0, 0xff, 0xae, 0x6f, 0xa4, 0xf2, - 0x80, 0xa6, 0xf8, 0x59, 0x41, 0x3d, 0xa0, 0x29, 0xf5, 0x58, 0xa1, 0x1e, 0xd0, 0x94, 0xf1, 0x12, - 0xe1, 0x12, 0xca, 0x8a, 0xdf, 0x3c, 0xea, 0xe2, 0x8c, 0x50, 0x62, 0x32, 0x9e, 0x56, 0x7a, 0xa0, - 0x67, 0x21, 0xe1, 0x2f, 0x25, 0x75, 0xf1, 0xb5, 0x26, 0xb3, 0x8f, 0x24, 0x9e, 0x56, 0xba, 0x0b, - 0x45, 0xfe, 0x68, 0x44, 0x9c, 0xbc, 0x31, 0x8e, 0x71, 0x4c, 0xbf, 0x65, 0xd1, 0x65, 0x50, 0x8b, - 0xc9, 0x94, 0x77, 0xca, 0x65, 0x96, 0x93, 0x0b, 0xaf, 0xcb, 0x54, 0x85, 0x38, 0xb1, 0x9d, 0x72, - 0x4c, 0xa5, 0x72, 0xdd, 0xcd, 0x9d, 0xcb, 0xc0, 0x28, 0x95, 0x72, 0x5c, 0x4f, 0x83, 0xa7, 0x9a, - 0x94, 0x91, 0x1b, 0x6f, 0xee, 0x7c, 0x26, 0x4e, 0x08, 0x8a, 0xf8, 0x73, 0xda, 0xd9, 0xaf, 0x9b, - 0xc7, 0x37, 0xd6, 0xba, 0xd0, 0xc8, 0x62, 0x6e, 0x1c, 0x87, 0x54, 0x94, 0x4a, 0xd5, 0x8b, 0x4f, - 0x19, 0x4f, 0xaa, 0xbf, 0x96, 0x71, 0xa9, 0xc4, 0xa0, 0x88, 0xc3, 0xde, 0xba, 0xbf, 0xef, 0x4e, - 0x1e, 0xca, 0x17, 0x78, 0x72, 0x4a, 0xea, 0x25, 0x20, 0x77, 0x04, 0x1f, 0xca, 0x37, 0x77, 0x5e, - 0xb6, 0xe0, 0x5d, 0xb8, 0x90, 0xb8, 0xa9, 0x62, 0x0a, 0xbe, 0x91, 0x7d, 0x9d, 0x25, 0xb3, 0x7b, - 0xf2, 0x75, 0xf6, 0xcb, 0xe9, 0x1b, 0x2d, 0x89, 0x71, 0x3f, 0xe9, 0x9a, 0xb7, 0x06, 0x93, 0xb8, - 0xcc, 0x84, 0x34, 0xb8, 0x17, 0xf8, 0x9d, 0x76, 0x9c, 0x04, 0xc7, 0x04, 0x27, 0xb3, 0x31, 0x25, - 0xb1, 0xea, 0xa2, 0xfc, 0xb8, 0xb8, 0xfd, 0x8c, 0x08, 0x3d, 0x39, 0x8f, 0x02, 0x66, 0xed, 0x62, - 0x88, 0xd8, 0xb9, 0x43, 0x3e, 0x82, 0xd3, 0xf1, 0xa5, 0x68, 0x2e, 0x22, 0x83, 0xac, 0x8b, 0xa3, - 0xec, 0x74, 0x7c, 0x33, 0xfa, 0xe4, 0xec, 0xcb, 0x72, 0x2b, 0x8a, 0xd9, 0x2f, 0xa6, 0xee, 0xf5, - 0x18, 0x6d, 0x38, 0xce, 0x8e, 0xa4, 0xf5, 0xed, 0x49, 0x47, 0xa7, 0x81, 0x9f, 0x5b, 0x76, 0x7e, - 0x47, 0xfd, 0x73, 0xeb, 0x9a, 0x83, 0x52, 0xa9, 0xbf, 0x39, 0x72, 0xd6, 0xe0, 0x2a, 0xe6, 0x84, - 0xd9, 0xe4, 0x59, 0x00, 0xb3, 0xa9, 0xf2, 0xeb, 0x9e, 0xcc, 0x24, 0xd3, 0x82, 0x2b, 0x3d, 0x13, - 0x5c, 0x92, 0x5b, 0x46, 0x2c, 0x4f, 0xef, 0x54, 0x98, 0x5d, 0x2c, 0x8f, 0xe9, 0xac, 0x3c, 0x91, - 0x6a, 0x9f, 0xed, 0x92, 0xb2, 0x52, 0xed, 0xb3, 0x5d, 0x13, 0x4d, 0x7e, 0x8e, 0xcf, 0x5a, 0x89, - 0x3d, 0x0a, 0xf3, 0x3c, 0x51, 0x8f, 0x67, 0xbf, 0xee, 0x7a, 0xec, 0x73, 0xc5, 0x3c, 0x14, 0x4d, - 0x31, 0xa2, 0x4d, 0x73, 0x49, 0x58, 0x62, 0x79, 0xc2, 0x7b, 0x0b, 0xe9, 0x12, 0x43, 0x7e, 0x89, - 0x4f, 0xc0, 0x13, 0xd7, 0x3c, 0x07, 0x5e, 0x5d, 0xfc, 0xc9, 0x7f, 0xbd, 0x54, 0xf8, 0xc9, 0x4f, - 0x2f, 0x15, 0xfe, 0xe3, 0x4f, 0x2f, 0x15, 0xfe, 0xcb, 0x4f, 0x2f, 0x15, 0xbe, 0x9c, 0x3f, 0x5e, - 0x0e, 0x66, 0xfe, 0x10, 0xe5, 0x2d, 0x2e, 0x6e, 0x08, 0xff, 0x7b, 0xf3, 0xff, 0x06, 0x00, 0x00, - 0xff, 0xff, 0x34, 0x48, 0x0f, 0x3c, 0x1d, 0xf0, 0x00, 0x00, + 0x92, 0x4e, 0xe6, 0x61, 0xac, 0xc6, 0xfd, 0x15, 0x38, 0xcd, 0x71, 0x03, 0x91, 0xed, 0xd1, 0xc6, + 0x85, 0x1b, 0x83, 0xcf, 0x60, 0x3a, 0x11, 0xdb, 0xa5, 0x6d, 0xb2, 0xaf, 0xb9, 0xe1, 0xb7, 0xf4, + 0x5d, 0x5a, 0x5b, 0xc0, 0x6c, 0x85, 0x25, 0xf3, 0xda, 0x7e, 0x8e, 0x5b, 0x8b, 0x68, 0x91, 0xc8, + 0xfd, 0x9c, 0xbe, 0xb6, 0xab, 0x9d, 0xdd, 0x7c, 0xdc, 0xa5, 0x62, 0x1b, 0x86, 0x3c, 0x19, 0x7b, + 0x09, 0x45, 0x47, 0x5e, 0x97, 0x3b, 0x5d, 0x6e, 0xdd, 0xe1, 0x62, 0x9f, 0xb0, 0x4b, 0xc4, 0x26, + 0xd7, 0xea, 0xe4, 0x2c, 0xac, 0xe4, 0x83, 0xe4, 0x98, 0x11, 0xca, 0x40, 0x61, 0x89, 0xf5, 0xd3, + 0x4e, 0x90, 0x92, 0x32, 0x0c, 0xf2, 0x19, 0x97, 0xeb, 0x03, 0xf7, 0xd6, 0x2d, 0x06, 0xb0, 0x39, + 0xdc, 0xfa, 0xa3, 0x7e, 0x7d, 0x93, 0xc1, 0xf6, 0xd2, 0x9a, 0xbe, 0x71, 0x2f, 0x8d, 0x7a, 0x46, + 0x28, 0x33, 0x05, 0xf9, 0x57, 0x82, 0xa6, 0x60, 0x7f, 0x6c, 0x0a, 0x8a, 0x4f, 0x8d, 0x9b, 0x82, + 0x31, 0x09, 0xeb, 0x45, 0xb1, 0x6d, 0x43, 0xa9, 0x03, 0x71, 0x2f, 0x8a, 0xad, 0x9e, 0xe8, 0x45, + 0x8d, 0x88, 0xbc, 0x0f, 0x50, 0x79, 0x58, 0x43, 0x9b, 0xc7, 0x5e, 0x17, 0x5b, 0x57, 0x5c, 0x64, + 0x9c, 0xa7, 0xa1, 0x30, 0xa9, 0x02, 0xdd, 0x66, 0xd4, 0xa8, 0x49, 0x15, 0x26, 0x2a, 0x3f, 0xea, + 0x04, 0x74, 0xa5, 0xc9, 0xd6, 0xa9, 0x88, 0x1b, 0xc7, 0xa3, 0x7c, 0x22, 0x75, 0x18, 0xa2, 0xee, + 0x0a, 0x8c, 0x26, 0xc0, 0x64, 0x21, 0x1b, 0x70, 0xe6, 0xde, 0xc2, 0xa6, 0x18, 0x57, 0x95, 0x46, + 0xc3, 0xef, 0x78, 0x91, 0xd8, 0xaf, 0x5e, 0x39, 0x3a, 0x2c, 0x5f, 0xdc, 0x6b, 0xb4, 0xeb, 0x72, + 0x0c, 0x3a, 0x1c, 0xad, 0x6f, 0x58, 0x53, 0xbc, 0xe4, 0x2a, 0xf4, 0x6f, 0xdb, 0x2b, 0xc2, 0x72, + 0x3e, 0x73, 0x74, 0x58, 0x9e, 0xe8, 0x04, 0xae, 0xc6, 0xc2, 0xb0, 0xe4, 0x3d, 0x80, 0x2d, 0x27, + 0xd8, 0xa3, 0xd1, 0xa6, 0x1f, 0x44, 0xb8, 0xe1, 0x9c, 0xa8, 0x9e, 0x3b, 0x3a, 0x2c, 0xcf, 0x44, + 0x08, 0xad, 0xb3, 0xe9, 0x4f, 0x6f, 0x74, 0x4c, 0x7c, 0x7f, 0x60, 0xa4, 0xaf, 0xd8, 0x6f, 0x8f, + 0xd6, 0x68, 0x18, 0x72, 0xfb, 0xb0, 0x05, 0x93, 0xf7, 0x68, 0xc4, 0x06, 0xae, 0xb4, 0x77, 0xba, + 0x77, 0xeb, 0x87, 0x30, 0xf6, 0xd0, 0x8d, 0xf6, 0x6b, 0xb4, 0x11, 0xd0, 0x48, 0xfa, 0x7a, 0x50, + 0xe5, 0x4f, 0xdd, 0x68, 0xbf, 0x1e, 0x72, 0xb8, 0xbe, 0xae, 0x6b, 0xe4, 0xd6, 0x12, 0x9c, 0x16, + 0xa5, 0x29, 0xf3, 0x6a, 0xde, 0x14, 0x58, 0x40, 0x81, 0xd8, 0xed, 0xba, 0x40, 0x53, 0xcc, 0xbf, + 0xea, 0x83, 0x99, 0x85, 0x7d, 0xc7, 0xdb, 0xa3, 0x9b, 0x4e, 0x18, 0x3e, 0xf5, 0x83, 0xa6, 0x56, + 0x79, 0xb4, 0x2d, 0x53, 0x95, 0x47, 0x63, 0x72, 0x1e, 0xc6, 0x36, 0x5a, 0x4d, 0xc9, 0x23, 0xec, + 0x5e, 0x2c, 0xcb, 0x6f, 0x35, 0xeb, 0x6d, 0x29, 0x4b, 0x27, 0x62, 0x3c, 0xeb, 0xf4, 0xa9, 0xe2, + 0xe9, 0x8f, 0x79, 0x3c, 0xfa, 0x54, 0xe3, 0xd1, 0x88, 0xc8, 0x12, 0x9c, 0xa9, 0xd1, 0x86, 0xef, + 0x35, 0xef, 0x3a, 0x8d, 0xc8, 0x0f, 0xb6, 0xfc, 0xc7, 0xd4, 0x13, 0x03, 0x1a, 0x0d, 0x83, 0x10, + 0x91, 0xf5, 0x47, 0x88, 0xad, 0x47, 0x0c, 0x6d, 0xa7, 0x39, 0xc8, 0x06, 0x8c, 0x3c, 0x14, 0x1e, + 0x43, 0x61, 0x2c, 0x5f, 0xbb, 0xa9, 0x5c, 0x88, 0x0b, 0x01, 0xc5, 0x51, 0xe8, 0xb4, 0x94, 0xb9, + 0xaf, 0xf6, 0x59, 0x38, 0x95, 0x49, 0x4a, 0x5b, 0x09, 0xb1, 0xb6, 0x61, 0x62, 0xb3, 0xd5, 0xd9, + 0x73, 0x3d, 0x36, 0xe9, 0xd4, 0xe8, 0x0f, 0xc9, 0x22, 0x40, 0x0c, 0x10, 0x7e, 0xc0, 0x29, 0x61, + 0x62, 0xc7, 0x88, 0x9d, 0x37, 0xc5, 0x97, 0x8b, 0x10, 0xb4, 0x88, 0x6c, 0x8d, 0xcf, 0xfa, 0xdf, + 0xfd, 0x40, 0x44, 0x07, 0xe0, 0x22, 0x58, 0xa3, 0x11, 0x5b, 0x9e, 0xce, 0x42, 0x9f, 0x72, 0xd7, + 0x0d, 0x1d, 0x1d, 0x96, 0xfb, 0xdc, 0xa6, 0xdd, 0xb7, 0xb2, 0x48, 0xde, 0x82, 0x41, 0x24, 0x43, + 0xfd, 0x4f, 0xaa, 0xf2, 0x74, 0x09, 0x7c, 0xf2, 0xc1, 0xd5, 0xd7, 0xe6, 0xc4, 0xe4, 0x6d, 0x18, + 0x5d, 0xa4, 0x2d, 0xba, 0xe7, 0x44, 0xbe, 0x9c, 0x4e, 0xb8, 0x03, 0x4c, 0x02, 0xb5, 0x31, 0x17, + 0x53, 0x32, 0x73, 0xd8, 0xa6, 0x4e, 0xe8, 0x7b, 0xba, 0x39, 0x1c, 0x20, 0x44, 0x37, 0x87, 0x39, + 0x0d, 0xf9, 0xad, 0x02, 0x8c, 0x55, 0x3c, 0x4f, 0x38, 0x96, 0x42, 0xa1, 0xf5, 0x99, 0x9b, 0xca, + 0x13, 0xbb, 0xea, 0xec, 0xd2, 0xd6, 0x8e, 0xd3, 0xea, 0xd0, 0xb0, 0xfa, 0x35, 0xb3, 0x50, 0xfe, + 0xd3, 0x61, 0xf9, 0x83, 0x13, 0xb8, 0x8a, 0x62, 0x9f, 0xee, 0x56, 0xe0, 0xb8, 0x51, 0xc8, 0xbe, + 0x5a, 0x27, 0x2e, 0x50, 0xff, 0x6e, 0xb4, 0x7a, 0xc4, 0x6b, 0xc3, 0x50, 0xaf, 0xb5, 0x81, 0x1c, + 0xc0, 0xe9, 0x4a, 0x18, 0x76, 0x0e, 0x68, 0x2d, 0x72, 0x82, 0x68, 0xcb, 0x3d, 0xa0, 0x38, 0x21, + 0x75, 0x77, 0x2e, 0xbc, 0xf6, 0x93, 0xc3, 0x72, 0x81, 0x19, 0x45, 0x0e, 0xb2, 0xb2, 0x7d, 0x4f, + 0x10, 0xd5, 0x23, 0x57, 0x5f, 0xde, 0xd0, 0xcd, 0x90, 0x94, 0x6d, 0x5d, 0x55, 0x1b, 0x92, 0x95, + 0xc5, 0xbc, 0x1e, 0xb7, 0x16, 0xe0, 0xc2, 0x3d, 0x1a, 0xd9, 0x34, 0xa4, 0x91, 0xfc, 0x46, 0x70, + 0x84, 0xc7, 0xce, 0xdd, 0x61, 0xfc, 0xad, 0x98, 0xb1, 0xfb, 0xf9, 0x77, 0x21, 0x31, 0xd6, 0x5f, + 0x2b, 0x40, 0x79, 0x21, 0xa0, 0xdc, 0x9e, 0xc8, 0x11, 0xd4, 0x7d, 0xee, 0xba, 0x00, 0x03, 0x5b, + 0xcf, 0xda, 0xd2, 0x2b, 0x83, 0x58, 0xd6, 0x29, 0x36, 0x42, 0x8f, 0xe9, 0xe4, 0xb2, 0x1e, 0xc1, + 0x8c, 0x4d, 0x3d, 0xfa, 0xd4, 0xd9, 0x6d, 0x51, 0xc3, 0x4f, 0x54, 0x86, 0x41, 0xfe, 0xa1, 0xa7, + 0x9a, 0xc0, 0xe1, 0x27, 0xf3, 0xb9, 0x59, 0x13, 0x30, 0xb6, 0xe9, 0x7a, 0x7b, 0x42, 0xba, 0xf5, + 0xe7, 0x03, 0x30, 0xce, 0x7f, 0x0b, 0x13, 0x29, 0xb1, 0x5c, 0x16, 0x8e, 0xb3, 0x5c, 0xbe, 0x0b, + 0x13, 0x6c, 0xbd, 0xa1, 0xc1, 0x0e, 0x0d, 0xd8, 0xfc, 0x2f, 0x34, 0x81, 0xe6, 0x5e, 0x88, 0x88, + 0xfa, 0x13, 0x8e, 0xb1, 0x4d, 0x42, 0xb2, 0x0a, 0x93, 0x1c, 0x70, 0x97, 0x3a, 0x51, 0x27, 0xf6, + 0x58, 0x9d, 0x16, 0x36, 0x91, 0x04, 0xf3, 0xa1, 0x29, 0x64, 0x3d, 0x12, 0x40, 0x3b, 0xc1, 0x4b, + 0x3e, 0x81, 0xd3, 0x9b, 0x81, 0xff, 0xcd, 0x33, 0x6d, 0x83, 0xc0, 0xbf, 0x4e, 0x6e, 0x3d, 0x31, + 0x54, 0x5d, 0xdf, 0x26, 0x24, 0xa9, 0xc9, 0xeb, 0x30, 0xb2, 0x12, 0x56, 0xfd, 0xc0, 0xf5, 0xf6, + 0xf0, 0x1b, 0x1d, 0xe1, 0x8e, 0x7e, 0x37, 0xac, 0xef, 0x22, 0xd0, 0x56, 0xe8, 0x84, 0x4b, 0x7a, + 0xb8, 0xb7, 0x4b, 0xfa, 0x36, 0xc0, 0xaa, 0xef, 0x34, 0x2b, 0xad, 0xd6, 0x42, 0x25, 0xc4, 0x95, + 0x58, 0xac, 0x47, 0x2d, 0xdf, 0x69, 0xd6, 0x9d, 0x56, 0xab, 0xde, 0x70, 0x42, 0x5b, 0xa3, 0x21, + 0x5f, 0xc2, 0xb9, 0xd0, 0xdd, 0xf3, 0xb0, 0x71, 0x75, 0xa7, 0xb5, 0xe7, 0x07, 0x6e, 0xb4, 0x7f, + 0x50, 0x0f, 0x3b, 0x6e, 0xc4, 0xfd, 0x41, 0x93, 0xf3, 0x97, 0xc4, 0x24, 0x57, 0x93, 0x74, 0x15, + 0x49, 0x56, 0x63, 0x54, 0xf6, 0x6c, 0x98, 0x8d, 0x20, 0x0f, 0x61, 0x62, 0xd5, 0x6d, 0x50, 0x2f, + 0xa4, 0xe8, 0xe0, 0x7b, 0x86, 0xde, 0xa2, 0xee, 0x1f, 0x33, 0x53, 0xe2, 0x44, 0x4b, 0x67, 0xc2, + 0x4f, 0xd7, 0x94, 0x73, 0x7f, 0x60, 0x64, 0xa8, 0x38, 0x6c, 0x9f, 0x16, 0xc0, 0x87, 0x4e, 0xe0, + 0xb9, 0xde, 0x5e, 0x68, 0xfd, 0x6d, 0x02, 0x23, 0xaa, 0x9f, 0x6e, 0xea, 0x96, 0x8a, 0x58, 0x9a, + 0x71, 0xc8, 0xc6, 0x7e, 0x38, 0x5b, 0xa3, 0x20, 0xe7, 0xd0, 0x76, 0x11, 0x9b, 0x82, 0x61, 0xf6, + 0x09, 0x39, 0xed, 0xb6, 0xcd, 0x60, 0x6c, 0x6a, 0x58, 0xac, 0xe2, 0xa0, 0x19, 0xe1, 0x53, 0x43, + 0x73, 0xd7, 0xee, 0x5b, 0xac, 0xb2, 0x6f, 0x72, 0x63, 0x65, 0x71, 0x01, 0xfb, 0x7f, 0x84, 0x7f, + 0x93, 0xbe, 0xdb, 0x6c, 0xd8, 0x08, 0x65, 0xd8, 0x5a, 0x65, 0x6d, 0x55, 0xf4, 0x31, 0x62, 0x43, + 0xe7, 0xa0, 0x65, 0x23, 0x94, 0xed, 0x76, 0xb9, 0x4b, 0x65, 0xc1, 0xf7, 0xa2, 0xc0, 0x6f, 0x85, + 0xb8, 0x85, 0x1b, 0xe1, 0x63, 0x50, 0xf8, 0x62, 0x1a, 0x02, 0x65, 0x27, 0x48, 0xc9, 0x43, 0x98, + 0xad, 0x34, 0x9f, 0x38, 0x5e, 0x83, 0x36, 0x39, 0xe6, 0xa1, 0x1f, 0x3c, 0x7e, 0xd4, 0xf2, 0x9f, + 0x86, 0x38, 0x48, 0x46, 0x84, 0xeb, 0x52, 0x90, 0x48, 0xd7, 0xce, 0x53, 0x49, 0x64, 0xe7, 0x71, + 0xb3, 0x79, 0x60, 0xa1, 0xe5, 0x77, 0x9a, 0x62, 0xe8, 0xe0, 0x3c, 0xd0, 0x60, 0x00, 0x9b, 0xc3, + 0x99, 0x96, 0x96, 0x6b, 0x6b, 0x38, 0x30, 0x84, 0x96, 0xf6, 0xc3, 0x03, 0x9b, 0xc1, 0xc8, 0x35, + 0x18, 0x96, 0x1b, 0x77, 0x7e, 0x92, 0x81, 0x1e, 0x74, 0xb9, 0x61, 0x97, 0x38, 0xf6, 0x1d, 0xdb, + 0xb4, 0xe1, 0x3f, 0xa1, 0xc1, 0xb3, 0x05, 0xbf, 0x49, 0xa5, 0x5b, 0x4b, 0xb8, 0x6d, 0x38, 0xa2, + 0xde, 0x60, 0x18, 0xdb, 0x24, 0x64, 0x05, 0xf0, 0x85, 0x3b, 0x2c, 0x9d, 0x8e, 0x0b, 0xe0, 0x0b, + 0x7b, 0x68, 0x4b, 0x1c, 0x59, 0x84, 0x33, 0x95, 0x4e, 0xe4, 0x1f, 0x38, 0x91, 0xdb, 0xd8, 0x6e, + 0xef, 0x05, 0x0e, 0x2b, 0xa4, 0x88, 0x0c, 0x68, 0xc8, 0x38, 0x12, 0x59, 0xef, 0x08, 0xac, 0x9d, + 0x66, 0x20, 0xef, 0xc0, 0xf8, 0x4a, 0xc8, 0x5d, 0x97, 0x4e, 0x48, 0x9b, 0xe8, 0x7f, 0x12, 0xb5, + 0x74, 0xc3, 0x3a, 0x3a, 0x32, 0xeb, 0xcc, 0xf4, 0x69, 0xda, 0x06, 0x1d, 0xb1, 0x60, 0xa8, 0x12, + 0x86, 0x6e, 0x18, 0xa1, 0x5b, 0x69, 0xa4, 0x0a, 0x47, 0x87, 0xe5, 0x21, 0x07, 0x21, 0xb6, 0xc0, + 0x90, 0x87, 0x30, 0xb6, 0x48, 0xd9, 0xce, 0x79, 0x2b, 0xe8, 0x84, 0x11, 0x3a, 0x89, 0xc6, 0xe6, + 0xcf, 0x89, 0xd9, 0x48, 0xc3, 0x88, 0xb1, 0xcc, 0xb7, 0xa8, 0x4d, 0x84, 0xd7, 0x23, 0x86, 0xd0, + 0x97, 0x5a, 0x8d, 0x9e, 0x99, 0x05, 0x82, 0x67, 0xd9, 0x6d, 0xb2, 0xf9, 0x65, 0x1a, 0xeb, 0x80, + 0x66, 0x81, 0x98, 0xd0, 0xea, 0xfb, 0x88, 0xd1, 0xcd, 0x02, 0x83, 0x85, 0x34, 0x52, 0xde, 0xf0, + 0x19, 0xc3, 0xe3, 0x69, 0x22, 0x65, 0x15, 0x4f, 0xe8, 0x2b, 0xff, 0x10, 0xc6, 0x16, 0x3a, 0x61, + 0xe4, 0x1f, 0x6c, 0xed, 0xd3, 0x03, 0x8a, 0x8e, 0x24, 0x61, 0xfc, 0x34, 0x10, 0x5c, 0x8f, 0x18, + 0x5c, 0x6f, 0xa6, 0x46, 0x4e, 0x3e, 0x03, 0x22, 0xad, 0x98, 0x7b, 0x6c, 0x7c, 0x78, 0x6c, 0x2c, + 0xa3, 0x2f, 0x69, 0x84, 0x9b, 0x2e, 0xd2, 0xf8, 0xa9, 0xef, 0x29, 0xb4, 0xee, 0xcf, 0x4c, 0x33, + 0xb3, 0x0a, 0xf1, 0x2a, 0xde, 0x0b, 0x9c, 0xf6, 0x7e, 0xa9, 0x14, 0x9b, 0x06, 0xa2, 0x51, 0x7b, + 0x0c, 0x6e, 0x6c, 0x71, 0x62, 0x72, 0x52, 0x03, 0xe0, 0x3f, 0x57, 0x59, 0xc7, 0x73, 0xef, 0x53, + 0xc9, 0xd0, 0x17, 0x43, 0x48, 0x5d, 0xa1, 0xb9, 0x23, 0xc4, 0xb6, 0x5c, 0xa3, 0x37, 0x35, 0x31, + 0xe4, 0x31, 0x14, 0xf9, 0xaf, 0x35, 0xdf, 0x73, 0x23, 0xbe, 0x5e, 0xcc, 0x19, 0xae, 0xca, 0x24, + 0x5a, 0x16, 0x80, 0x2e, 0x62, 0x51, 0xc0, 0x81, 0xc2, 0x6a, 0xc5, 0xa4, 0x04, 0x93, 0x4d, 0x18, + 0xdb, 0x0c, 0xfc, 0x66, 0xa7, 0x11, 0xe1, 0x2e, 0xe3, 0x3c, 0x4e, 0xfc, 0x44, 0x94, 0xa3, 0x61, + 0xb8, 0x4e, 0xda, 0x1c, 0x50, 0x67, 0xeb, 0x82, 0xae, 0x13, 0x8d, 0x90, 0x54, 0x61, 0x68, 0xd3, + 0x6f, 0xb9, 0x8d, 0x67, 0xa5, 0x0b, 0x58, 0xe9, 0x69, 0x29, 0x0c, 0x81, 0xb2, 0xaa, 0xb8, 0xa5, + 0x6d, 0x23, 0x48, 0xdf, 0xd2, 0x72, 0x22, 0x52, 0x81, 0x89, 0xcf, 0xd8, 0x80, 0x71, 0x7d, 0xcf, + 0x73, 0xdc, 0x80, 0x96, 0x2e, 0x62, 0xbf, 0xa0, 0x1b, 0xff, 0x87, 0x3a, 0x42, 0x1f, 0xce, 0x06, + 0x07, 0x59, 0x81, 0xd3, 0x2b, 0x61, 0x2d, 0x0a, 0xdc, 0x36, 0x5d, 0x73, 0x3c, 0x67, 0x8f, 0x36, + 0x4b, 0x97, 0x62, 0x3f, 0xba, 0x1b, 0xd6, 0x43, 0xc4, 0xd5, 0x0f, 0x38, 0x52, 0xf7, 0xa3, 0x27, + 0xf8, 0xc8, 0xe7, 0x30, 0xbd, 0xf4, 0x4d, 0xc4, 0x46, 0x4c, 0xab, 0xd2, 0x69, 0xba, 0x51, 0x2d, + 0xf2, 0x03, 0x67, 0x8f, 0x96, 0xca, 0x28, 0xef, 0x95, 0xa3, 0xc3, 0xf2, 0x65, 0x2a, 0xf0, 0x75, + 0x87, 0x11, 0xd4, 0x43, 0x4e, 0xa1, 0x9f, 0x8f, 0x67, 0x49, 0x60, 0xda, 0xaf, 0x75, 0xda, 0x6c, + 0xb7, 0x8d, 0xda, 0xbf, 0x6c, 0x68, 0x5f, 0xc3, 0x70, 0xed, 0x87, 0x1c, 0x90, 0xd2, 0xbe, 0x46, + 0x48, 0x6c, 0x20, 0xf7, 0x7d, 0xd7, 0xab, 0x34, 0x22, 0xf7, 0x09, 0x15, 0x16, 0x73, 0x58, 0xba, + 0x82, 0x35, 0x45, 0x9f, 0xff, 0x2f, 0xfa, 0xae, 0x57, 0x77, 0x10, 0x5d, 0x0f, 0x05, 0x5e, 0xff, + 0x46, 0xd2, 0xdc, 0xe4, 0xfb, 0x70, 0x76, 0xcd, 0xdf, 0x75, 0x5b, 0x94, 0x4f, 0x39, 0x5c, 0x2d, + 0xe8, 0xbf, 0xb4, 0x50, 0x2e, 0xfa, 0xfc, 0x0f, 0x90, 0xa2, 0x2e, 0x66, 0xab, 0x03, 0x45, 0xa3, + 0xfb, 0xfc, 0xb3, 0xa5, 0x90, 0x25, 0x18, 0xc7, 0xef, 0xb2, 0x85, 0x3f, 0xc3, 0xd2, 0x55, 0x34, + 0xe9, 0xae, 0x24, 0x76, 0x69, 0x37, 0x97, 0x34, 0x9a, 0x25, 0x2f, 0x0a, 0x9e, 0xd9, 0x06, 0x1b, + 0xf9, 0x18, 0xe6, 0x92, 0xc3, 0x7b, 0xc1, 0xf7, 0x1e, 0xb9, 0x7b, 0x9d, 0x80, 0x36, 0x4b, 0xaf, + 0xb0, 0xaa, 0xda, 0x5d, 0x28, 0xc8, 0x57, 0x30, 0x83, 0x6b, 0x5d, 0xc5, 0xf3, 0xbd, 0x67, 0x07, + 0xee, 0x8f, 0x70, 0xff, 0xcc, 0xb6, 0xbd, 0xd7, 0x70, 0xdb, 0x7b, 0xed, 0xe8, 0xb0, 0x7c, 0x05, + 0xd7, 0xc4, 0xba, 0xa3, 0x53, 0x24, 0xbc, 0xd6, 0xd9, 0x32, 0xe6, 0x1e, 0xc2, 0x99, 0x54, 0xfd, + 0x49, 0x11, 0xfa, 0x1f, 0x8b, 0xf3, 0xd9, 0x51, 0x9b, 0xfd, 0x49, 0xde, 0x80, 0xc1, 0x27, 0xcc, + 0x50, 0xc3, 0xed, 0x48, 0x7c, 0xe2, 0xa7, 0xb1, 0xae, 0x78, 0x8f, 0x7c, 0x9b, 0x13, 0xbd, 0xdf, + 0xf7, 0x6e, 0xe1, 0xfe, 0xc0, 0xc8, 0x58, 0x71, 0x9c, 0x1f, 0xab, 0xdf, 0x1f, 0x18, 0x99, 0x28, + 0x4e, 0x5a, 0x15, 0x38, 0x9d, 0xa0, 0x27, 0x25, 0x18, 0xa6, 0x1e, 0xdb, 0xfc, 0x37, 0xf9, 0x86, + 0xc8, 0x96, 0x3f, 0xc9, 0x34, 0x0c, 0xb6, 0xdc, 0x03, 0x37, 0xc2, 0x02, 0x07, 0x6d, 0xfe, 0xc3, + 0xfa, 0xed, 0x02, 0x90, 0xf4, 0x7a, 0x44, 0x6e, 0x25, 0xc4, 0xf0, 0xad, 0xaf, 0x00, 0xe9, 0x07, + 0x07, 0x52, 0xfa, 0x67, 0x30, 0xc5, 0x07, 0x84, 0x5c, 0x39, 0xb5, 0xb2, 0xf8, 0x8c, 0x9d, 0x81, + 0xd6, 0x9d, 0x4d, 0x02, 0x8d, 0xeb, 0xec, 0x2a, 0x56, 0xad, 0x03, 0x33, 0x99, 0x2b, 0x11, 0x59, + 0x83, 0x99, 0x03, 0xdf, 0x8b, 0xf6, 0x5b, 0xcf, 0xe4, 0x42, 0x24, 0x4a, 0x2b, 0x60, 0x69, 0x38, + 0xf9, 0x66, 0x12, 0xd8, 0x53, 0x02, 0x2c, 0x24, 0x62, 0x39, 0xc2, 0xe9, 0x24, 0x5b, 0x62, 0xd9, + 0x70, 0x26, 0x35, 0xa1, 0x93, 0x8f, 0x60, 0xbc, 0x81, 0xc6, 0x9d, 0x51, 0x12, 0x5f, 0xce, 0x34, + 0xb8, 0xfe, 0xad, 0x72, 0x38, 0x6f, 0xca, 0x3f, 0x2b, 0xc0, 0x6c, 0xce, 0x54, 0x7e, 0x72, 0x55, + 0x7f, 0x01, 0x67, 0x0f, 0x9c, 0x6f, 0xea, 0x01, 0xda, 0xee, 0xf5, 0xc0, 0xf1, 0x12, 0xda, 0xc6, + 0x69, 0x2a, 0x9b, 0x42, 0x8f, 0x6d, 0x3a, 0x70, 0xbe, 0xb1, 0x91, 0xc0, 0x66, 0x78, 0x5e, 0xcf, + 0x4f, 0x61, 0xc2, 0x98, 0xbc, 0x4f, 0x5c, 0x39, 0xeb, 0x0e, 0x9c, 0x59, 0xa4, 0x2d, 0x1a, 0xd1, + 0x63, 0xfb, 0xec, 0xac, 0x4d, 0x80, 0x1a, 0x3d, 0x70, 0xda, 0xfb, 0x3e, 0xdb, 0xd4, 0x57, 0xf5, + 0x5f, 0xc2, 0xe7, 0x43, 0xa4, 0x79, 0x22, 0x11, 0x3b, 0x6f, 0xf2, 0x8d, 0x7e, 0xa8, 0x28, 0x6d, + 0x8d, 0xcb, 0xfa, 0xf7, 0x7d, 0x40, 0xc4, 0xec, 0x1b, 0x50, 0xe7, 0x40, 0x56, 0xe3, 0x3d, 0x18, + 0xe7, 0x16, 0x3a, 0x07, 0x63, 0x75, 0xc6, 0xe6, 0xa7, 0xc4, 0x97, 0xa7, 0xa3, 0x96, 0x4f, 0xd9, + 0x06, 0x29, 0x63, 0xb5, 0x29, 0x77, 0x2d, 0x20, 0x6b, 0x9f, 0xc1, 0xaa, 0xa3, 0x18, 0xab, 0xfe, + 0x9b, 0x7c, 0x02, 0x93, 0x0b, 0xfe, 0x41, 0x9b, 0xe9, 0x44, 0x30, 0xf7, 0x0b, 0xb7, 0x8d, 0x28, + 0xd7, 0x40, 0x2e, 0x9f, 0xb2, 0x13, 0xe4, 0x64, 0x1d, 0xa6, 0xee, 0xb6, 0x3a, 0xe1, 0x7e, 0xc5, + 0x6b, 0x2e, 0xb4, 0xfc, 0x50, 0x4a, 0x19, 0x10, 0x96, 0x96, 0x98, 0x3b, 0xd3, 0x14, 0xcb, 0xa7, + 0xec, 0x2c, 0x46, 0x72, 0x0d, 0x06, 0x97, 0x9e, 0xb0, 0x39, 0x5d, 0x46, 0xb8, 0x88, 0x00, 0xbc, + 0x0d, 0x8f, 0x6e, 0x3c, 0x5a, 0x3e, 0x65, 0x73, 0x6c, 0x75, 0x14, 0x86, 0xa5, 0x75, 0x7f, 0x8b, + 0xed, 0xb7, 0x95, 0x3a, 0x6b, 0x91, 0x13, 0x75, 0x42, 0x32, 0x07, 0x23, 0xdb, 0x6d, 0x66, 0x74, + 0x4a, 0xb7, 0x88, 0xad, 0x7e, 0x5b, 0x6f, 0x98, 0x9a, 0x26, 0x17, 0x20, 0xf6, 0xe9, 0x0a, 0x62, + 0xcd, 0xc9, 0xbb, 0x6c, 0x2a, 0xb7, 0x3b, 0xb5, 0x51, 0x6e, 0x5f, 0xa2, 0xdc, 0x62, 0x52, 0xd7, + 0xd6, 0x4c, 0xa6, 0xf2, 0xac, 0xcf, 0xe1, 0xd2, 0x76, 0x3b, 0xa4, 0x41, 0x54, 0x69, 0xb7, 0x5b, + 0x6e, 0x83, 0x9f, 0x90, 0xa1, 0x17, 0x40, 0x0e, 0x96, 0x77, 0x60, 0x88, 0x03, 0xc4, 0x30, 0x91, + 0x63, 0xb0, 0xd2, 0x6e, 0x0b, 0xdf, 0xc3, 0x9b, 0x7c, 0xe7, 0xcf, 0xbd, 0x09, 0xb6, 0xa0, 0xb6, + 0x7e, 0xa3, 0x00, 0x97, 0xf8, 0x17, 0x90, 0x2b, 0xfa, 0x3b, 0x30, 0x8a, 0xf1, 0x6f, 0x6d, 0xa7, + 0x21, 0xbf, 0x09, 0x1e, 0x08, 0x28, 0x81, 0x76, 0x8c, 0xd7, 0x22, 0x0b, 0xfb, 0xf2, 0x23, 0x0b, + 0xe5, 0x07, 0xd6, 0x9f, 0xf9, 0x81, 0x7d, 0x06, 0x96, 0xa8, 0x51, 0xab, 0x95, 0xaa, 0x54, 0xf8, + 0x3c, 0xb5, 0xb2, 0xfe, 0x7b, 0x1f, 0xcc, 0xde, 0xa3, 0x1e, 0x0d, 0x1c, 0x6c, 0xa7, 0xe1, 0xe5, + 0xd2, 0x23, 0x8c, 0x0a, 0x5d, 0x23, 0x8c, 0xca, 0xd2, 0x6f, 0xd8, 0x87, 0x7e, 0xc3, 0x54, 0xb8, + 0x14, 0xb3, 0x45, 0xb7, 0xed, 0x15, 0xd1, 0x2c, 0xb4, 0x45, 0x3b, 0x81, 0xcb, 0x4f, 0x19, 0x56, + 0xe2, 0xe8, 0xa4, 0x81, 0x9e, 0x3e, 0x87, 0x29, 0x11, 0xad, 0x31, 0x2c, 0xa2, 0x93, 0xcc, 0x98, + 0xa4, 0x75, 0x18, 0xe2, 0xee, 0x4e, 0x3c, 0xdb, 0x1a, 0x9b, 0xbf, 0x21, 0xbe, 0xa9, 0x9c, 0x06, + 0x0a, 0xdf, 0x28, 0x2e, 0xec, 0x7c, 0x08, 0x44, 0x08, 0xb0, 0x85, 0x94, 0xb9, 0xcf, 0x60, 0x4c, + 0x23, 0x39, 0xce, 0xda, 0xaf, 0xdc, 0xae, 0x6c, 0x3b, 0xea, 0xed, 0x71, 0x0f, 0xae, 0xb6, 0xf6, + 0x5b, 0x1f, 0x40, 0x29, 0x5d, 0x1b, 0xe1, 0x6a, 0xeb, 0xe5, 0xd9, 0xb3, 0x16, 0x61, 0xfa, 0x1e, + 0x8d, 0x70, 0xe0, 0xe2, 0x47, 0xa4, 0x45, 0xd9, 0x25, 0xbe, 0x33, 0x39, 0xab, 0x22, 0x90, 0x0d, + 0x30, 0xed, 0x2b, 0xad, 0xc1, 0x4c, 0x42, 0x8a, 0x28, 0xff, 0x7d, 0x18, 0x16, 0x20, 0x35, 0xa3, + 0x8a, 0x50, 0x5d, 0xba, 0x2b, 0x10, 0x3b, 0xf3, 0x7c, 0xdc, 0x0a, 0xc9, 0xb6, 0x64, 0xb0, 0xf6, + 0xe1, 0x2c, 0x5b, 0x66, 0x63, 0xa9, 0x6a, 0x38, 0x9e, 0x87, 0xd1, 0x36, 0xdb, 0x28, 0x84, 0xee, + 0x8f, 0xf8, 0x30, 0x1a, 0xb4, 0x47, 0x18, 0xa0, 0xe6, 0xfe, 0x88, 0x92, 0x8b, 0x00, 0x88, 0xc4, + 0x66, 0x8a, 0x59, 0x00, 0xc9, 0xb9, 0x2b, 0x93, 0x00, 0xc6, 0xe8, 0xf1, 0x71, 0x63, 0xe3, 0xdf, + 0x56, 0x00, 0xb3, 0xa9, 0x92, 0x44, 0x03, 0x6e, 0xc1, 0x88, 0xdc, 0x1f, 0x27, 0x0e, 0x19, 0xf4, + 0x16, 0xd8, 0x8a, 0x88, 0xbc, 0x0a, 0xa7, 0x3d, 0xfa, 0x4d, 0x54, 0x4f, 0xd5, 0x61, 0x82, 0x81, + 0x37, 0x65, 0x3d, 0xac, 0x5f, 0x40, 0xc7, 0x72, 0xcd, 0xf3, 0x9f, 0x3e, 0x6a, 0x39, 0x8f, 0x69, + 0xaa, 0xe0, 0x8f, 0x60, 0xa4, 0xd6, 0xbb, 0x60, 0xfe, 0xf9, 0xc8, 0xc2, 0x6d, 0xc5, 0x62, 0xb5, + 0x60, 0x8e, 0x35, 0xa9, 0x56, 0x59, 0x5b, 0x5d, 0x69, 0x6e, 0x7e, 0xdb, 0x0a, 0x7c, 0x02, 0xe7, + 0x33, 0x4b, 0xfb, 0xb6, 0x95, 0xf8, 0x07, 0x03, 0x30, 0xcb, 0x17, 0x93, 0xf4, 0x08, 0x3e, 0xfe, + 0x54, 0xf3, 0x73, 0x39, 0xef, 0xbd, 0x9d, 0x71, 0xde, 0x8b, 0x2c, 0xfa, 0x79, 0xaf, 0x71, 0xca, + 0xfb, 0x6e, 0xf6, 0x29, 0x2f, 0x3a, 0xa1, 0xcc, 0x53, 0xde, 0xe4, 0xd9, 0xee, 0x52, 0xfe, 0xd9, + 0x2e, 0x1e, 0x3c, 0x65, 0x9c, 0xed, 0x66, 0x9d, 0xe8, 0x26, 0x02, 0xa5, 0x46, 0x5e, 0x6e, 0xa0, + 0xd4, 0xab, 0x30, 0x5c, 0x69, 0xb7, 0xb5, 0xc0, 0x43, 0xec, 0x1e, 0xa7, 0xdd, 0xe6, 0xca, 0x93, + 0x48, 0x39, 0xcf, 0x43, 0xc6, 0x3c, 0xff, 0x1e, 0xc0, 0x02, 0x5e, 0x8f, 0xc0, 0x8e, 0x1b, 0x43, + 0x0a, 0xdc, 0xe1, 0xf3, 0x4b, 0x13, 0xd8, 0x71, 0xba, 0x7b, 0x25, 0x26, 0xe6, 0x1b, 0x7b, 0x6b, + 0x07, 0x4a, 0xe9, 0xe1, 0xf3, 0x12, 0xa6, 0xae, 0xdf, 0x2f, 0xc0, 0x45, 0xb1, 0xc9, 0x49, 0x7c, + 0xe0, 0x27, 0x1f, 0x9d, 0x6f, 0xc3, 0xb8, 0xe0, 0xdd, 0x8a, 0x3f, 0x04, 0x7e, 0xc0, 0x2e, 0x27, + 0x63, 0x3e, 0xa3, 0x1b, 0x64, 0xe4, 0x6d, 0x18, 0xc1, 0x3f, 0xe2, 0x83, 0x21, 0xa6, 0x99, 0x51, + 0x24, 0xad, 0x27, 0x8f, 0x87, 0x14, 0xa9, 0xf5, 0x35, 0x5c, 0xca, 0xab, 0xf8, 0x4b, 0xd0, 0xcb, + 0xbf, 0x2e, 0xc0, 0x79, 0x21, 0xde, 0x98, 0x2a, 0x9e, 0x6b, 0xd5, 0x39, 0x41, 0xb8, 0xf2, 0x7d, + 0x18, 0x63, 0x05, 0xca, 0x7a, 0xf7, 0x8b, 0xa5, 0x55, 0x58, 0x0e, 0x31, 0x66, 0xd1, 0x89, 0x1c, + 0x11, 0x7e, 0xe3, 0x1c, 0xb4, 0xa4, 0x67, 0xc4, 0xd6, 0x99, 0xad, 0x2f, 0xe1, 0x42, 0x76, 0x13, + 0x5e, 0x82, 0x7e, 0xee, 0xc3, 0x5c, 0xc6, 0xa2, 0xf0, 0x7c, 0x6b, 0xf2, 0x17, 0x70, 0x3e, 0x53, + 0xd6, 0x4b, 0xa8, 0xe6, 0x32, 0xdb, 0x71, 0x44, 0x2f, 0xa1, 0x0b, 0xad, 0x87, 0x70, 0x2e, 0x43, + 0xd2, 0x4b, 0xa8, 0xe2, 0x3d, 0x98, 0x55, 0x3b, 0xed, 0x17, 0xaa, 0xe1, 0x1a, 0x5c, 0xe4, 0x82, + 0x5e, 0x4e, 0xaf, 0x3c, 0x80, 0xf3, 0x42, 0xdc, 0x4b, 0xd0, 0xde, 0x32, 0x5c, 0x88, 0x0d, 0xea, + 0x8c, 0x7d, 0xd2, 0xb1, 0x27, 0x19, 0x6b, 0x15, 0x2e, 0xc7, 0x92, 0x72, 0x36, 0x0d, 0xc7, 0x97, + 0xc6, 0xb7, 0x83, 0x71, 0x2f, 0xbd, 0x94, 0x1e, 0x7d, 0x08, 0x67, 0x0d, 0xa1, 0x2f, 0x6d, 0xab, + 0xb4, 0x02, 0x53, 0x5c, 0xb0, 0xb9, 0x75, 0x9e, 0xd7, 0xb7, 0xce, 0x63, 0xf3, 0x67, 0x62, 0x91, + 0x08, 0xde, 0x79, 0x33, 0x63, 0x37, 0xbd, 0x86, 0xbb, 0x69, 0x49, 0x12, 0xd7, 0xf0, 0x6d, 0x18, + 0xe2, 0x10, 0x51, 0xbf, 0x0c, 0x61, 0xdc, 0x58, 0xe0, 0x6c, 0x82, 0xd8, 0xfa, 0x3e, 0x5c, 0xe4, + 0x96, 0x68, 0x7c, 0x50, 0x69, 0x5a, 0x8b, 0x1f, 0x25, 0x0c, 0xd1, 0x73, 0x42, 0x6e, 0x92, 0x3e, + 0xc7, 0x1e, 0xdd, 0x95, 0x63, 0x3b, 0x4f, 0xfe, 0xb1, 0xae, 0xae, 0x49, 0x03, 0xb3, 0x2f, 0xd3, + 0xc0, 0xbc, 0x0a, 0x57, 0x94, 0x81, 0x99, 0x2c, 0x46, 0x0e, 0x2d, 0xeb, 0x4b, 0x38, 0xcf, 0x1b, + 0x2a, 0x43, 0x0a, 0xcd, 0x6a, 0x7c, 0x90, 0x68, 0xe6, 0xac, 0x68, 0xa6, 0x49, 0x9d, 0xd3, 0xc8, + 0xbf, 0x53, 0x90, 0x9f, 0x5c, 0xb6, 0xf0, 0x9f, 0xb7, 0xc5, 0xbd, 0x0e, 0x65, 0xa5, 0x10, 0xb3, + 0x46, 0xcf, 0x67, 0x6e, 0xaf, 0xc1, 0x8c, 0x2e, 0xc6, 0x6d, 0xd0, 0x9d, 0x3b, 0x78, 0x82, 0xf4, + 0x16, 0xfb, 0x2c, 0x10, 0x20, 0x87, 0x5d, 0x29, 0x43, 0x6f, 0x48, 0x6f, 0x2b, 0x4a, 0xab, 0x0e, + 0x17, 0xd2, 0x5d, 0xe1, 0x36, 0xe4, 0x7d, 0x02, 0xf2, 0x09, 0xfb, 0x84, 0x11, 0x22, 0x3a, 0x23, + 0x57, 0xa8, 0xfc, 0x8e, 0x39, 0xbb, 0xe4, 0xb2, 0x2c, 0x39, 0xd5, 0x24, 0xda, 0xcf, 0x4a, 0x97, + 0xe3, 0xe1, 0xc7, 0x40, 0x24, 0x6a, 0xa1, 0x66, 0xcb, 0xa2, 0xcf, 0x41, 0xff, 0x42, 0xcd, 0x16, + 0x17, 0x99, 0x70, 0x27, 0xd8, 0x08, 0x03, 0x9b, 0xc1, 0x92, 0x3b, 0xf2, 0xbe, 0x63, 0xec, 0xc8, + 0xef, 0x0f, 0x8c, 0xf4, 0x17, 0x07, 0x6c, 0x52, 0x73, 0xf7, 0xbc, 0x87, 0x6e, 0xb4, 0xaf, 0x0a, + 0xac, 0x58, 0x5f, 0xc1, 0x94, 0x51, 0xbc, 0xf8, 0x8a, 0xbb, 0xde, 0xc0, 0x62, 0xfb, 0xd9, 0x85, + 0x0a, 0x86, 0xd5, 0xa0, 0xcb, 0x62, 0x9c, 0xcf, 0x37, 0x0d, 0xa7, 0x8e, 0xd7, 0x7b, 0x6d, 0x89, + 0xb4, 0x7e, 0x77, 0x40, 0x93, 0xae, 0xdd, 0x6b, 0xeb, 0xd2, 0xba, 0x3b, 0x00, 0x7c, 0x84, 0x68, + 0x8d, 0x63, 0x1b, 0xc0, 0x31, 0x11, 0xad, 0xc2, 0xa7, 0x64, 0x5b, 0x23, 0x3a, 0xee, 0xbd, 0x37, + 0x11, 0x7f, 0xcc, 0x99, 0xe4, 0x55, 0x4f, 0x15, 0x7f, 0x2c, 0x44, 0x87, 0xb6, 0x4e, 0x44, 0xbe, + 0x9f, 0xbc, 0x9c, 0x31, 0x88, 0x07, 0x56, 0xaf, 0xc8, 0x13, 0xec, 0x74, 0xdb, 0x4e, 0x76, 0x3f, + 0xe3, 0x29, 0xcc, 0x30, 0x5e, 0xf7, 0x11, 0x1a, 0x16, 0x4b, 0xdf, 0x44, 0xd4, 0xe3, 0x73, 0xfb, + 0x10, 0x96, 0x73, 0xad, 0x4b, 0x39, 0x31, 0xb1, 0xf0, 0xbf, 0xc7, 0x72, 0xea, 0x54, 0xe1, 0xec, + 0x6c, 0xf9, 0x38, 0x88, 0xec, 0xd5, 0x25, 0xaf, 0xd9, 0xf6, 0x5d, 0x65, 0x30, 0xf1, 0x41, 0x14, + 0xb4, 0xea, 0x54, 0xc0, 0x6d, 0x9d, 0xc8, 0x7a, 0xb5, 0x6b, 0x54, 0xfb, 0x08, 0x0c, 0x6c, 0x2d, + 0x6c, 0xad, 0x16, 0x0b, 0xd6, 0x2d, 0x00, 0xad, 0x24, 0x80, 0xa1, 0xf5, 0x0d, 0x7b, 0xad, 0xb2, + 0x5a, 0x3c, 0x45, 0x66, 0xe0, 0xcc, 0xc3, 0x95, 0xf5, 0xc5, 0x8d, 0x87, 0xb5, 0x7a, 0x6d, 0xad, + 0x62, 0x6f, 0x2d, 0x54, 0xec, 0xc5, 0x62, 0xc1, 0xfa, 0x1a, 0xa6, 0xcd, 0x16, 0xbe, 0xd4, 0x41, + 0x18, 0xc1, 0x94, 0xda, 0xcf, 0xdc, 0x7f, 0xb8, 0xa5, 0x45, 0xb4, 0x0a, 0xe3, 0x2f, 0x19, 0x99, + 0x25, 0xcc, 0x44, 0xf1, 0x19, 0x69, 0x44, 0xe4, 0x75, 0xbe, 0x2d, 0x48, 0xde, 0x5c, 0x66, 0xdb, + 0x82, 0x7a, 0xbc, 0x2f, 0xc0, 0xa9, 0xef, 0x7b, 0x30, 0x6d, 0x96, 0x7a, 0x5c, 0x2f, 0xd5, 0x2b, + 0x18, 0xea, 0xab, 0x5d, 0x6b, 0x22, 0x44, 0x3f, 0x36, 0x10, 0x33, 0xeb, 0xf7, 0xa0, 0x28, 0xa8, + 0xe2, 0x95, 0xf7, 0xaa, 0x74, 0x23, 0x16, 0x32, 0x2e, 0x61, 0xca, 0xa0, 0x74, 0x1f, 0x8a, 0x6c, + 0xc6, 0x14, 0x9c, 0xbc, 0x80, 0x69, 0x18, 0x5c, 0x8d, 0x8f, 0x73, 0x6c, 0xfe, 0x03, 0x6f, 0xf7, + 0x44, 0x4e, 0x10, 0xc9, 0x38, 0xb8, 0x51, 0x5b, 0xfd, 0x26, 0xaf, 0xc3, 0xd0, 0x5d, 0xb7, 0x15, + 0x09, 0xd7, 0x48, 0xbc, 0xc8, 0x33, 0xb1, 0x1c, 0x61, 0x0b, 0x02, 0xcb, 0x86, 0x33, 0x5a, 0x81, + 0x27, 0xa8, 0x2a, 0x29, 0xc1, 0xf0, 0x3a, 0xfd, 0x46, 0x2b, 0x5f, 0xfe, 0xb4, 0xde, 0x81, 0x33, + 0x22, 0xc6, 0x50, 0x53, 0xd3, 0x15, 0x71, 0x57, 0xbc, 0x60, 0x5c, 0x58, 0x15, 0x22, 0x11, 0xc5, + 0xf8, 0xb6, 0xdb, 0xcd, 0xe7, 0xe4, 0x63, 0x0b, 0xc5, 0x09, 0xf9, 0x5e, 0x93, 0xa7, 0x40, 0xbd, + 0xba, 0xf3, 0x6f, 0xf4, 0x41, 0x29, 0xe1, 0x65, 0x58, 0xd8, 0x77, 0x5a, 0x2d, 0xea, 0xed, 0x51, + 0x72, 0x1d, 0x06, 0xb6, 0x36, 0xb6, 0x36, 0x85, 0x97, 0x54, 0x46, 0x17, 0x30, 0x90, 0xa2, 0xb1, + 0x91, 0x82, 0x3c, 0x80, 0x33, 0x32, 0x8a, 0x58, 0xa1, 0x44, 0x0f, 0x5d, 0xec, 0x1e, 0x93, 0x9c, + 0xe6, 0x23, 0x6f, 0x09, 0x97, 0xc8, 0x0f, 0x3b, 0x6e, 0x40, 0x9b, 0xe8, 0xf9, 0x89, 0x8f, 0xea, + 0x35, 0x8c, 0xad, 0x93, 0x91, 0xef, 0xc1, 0x78, 0xad, 0xb6, 0x11, 0x97, 0x3e, 0x68, 0x9c, 0x10, + 0xe9, 0x28, 0xdb, 0x20, 0xe4, 0x57, 0x82, 0xad, 0x3f, 0x28, 0xc0, 0x6c, 0x8e, 0xbb, 0x85, 0xbc, + 0x6e, 0xe8, 0x61, 0x4a, 0xd3, 0x83, 0x24, 0x59, 0x3e, 0x25, 0x14, 0xb1, 0xa0, 0xc5, 0x64, 0xf7, + 0x9f, 0x20, 0x26, 0x7b, 0xf9, 0x54, 0x1c, 0x87, 0x4d, 0x5e, 0x85, 0xfe, 0x5a, 0x6d, 0x43, 0xb8, + 0xd5, 0x49, 0xdc, 0x02, 0x8d, 0x98, 0x11, 0x54, 0x01, 0x46, 0x24, 0xc8, 0x3a, 0x0d, 0x13, 0x46, + 0xc7, 0x58, 0x16, 0x8c, 0xeb, 0x35, 0x64, 0xbd, 0xbf, 0xe0, 0x37, 0x55, 0xef, 0xb3, 0xbf, 0xad, + 0x1f, 0x9b, 0x3a, 0x23, 0x17, 0x01, 0xe4, 0x79, 0xad, 0xdb, 0x94, 0x27, 0x3f, 0x02, 0xb2, 0xd2, + 0x24, 0x57, 0x60, 0x3c, 0xa0, 0x4d, 0x37, 0xa0, 0x8d, 0xa8, 0xde, 0x09, 0xc4, 0xc5, 0x18, 0x7b, + 0x4c, 0xc2, 0xb6, 0x83, 0x16, 0xf9, 0x0e, 0x0c, 0xf1, 0x83, 0x64, 0xd1, 0x7a, 0x69, 0x24, 0xd4, + 0x6a, 0x1b, 0x6b, 0x77, 0x2b, 0xfc, 0xa0, 0xdb, 0x16, 0x24, 0x56, 0x15, 0xc6, 0xb4, 0x56, 0xf5, + 0x2a, 0x7d, 0x1a, 0x06, 0x75, 0x2f, 0x25, 0xff, 0x61, 0xfd, 0x66, 0x01, 0xa6, 0x71, 0x18, 0xec, + 0xb9, 0x6c, 0x79, 0x88, 0xdb, 0x32, 0x6f, 0x74, 0xda, 0x05, 0xa3, 0xd3, 0x12, 0xb4, 0xaa, 0xf7, + 0xde, 0x4f, 0xf5, 0xde, 0x85, 0xac, 0xde, 0xc3, 0x29, 0xc0, 0xf5, 0x3d, 0xbd, 0xd3, 0xf4, 0xe3, + 0xba, 0xdf, 0x2e, 0xc0, 0x94, 0x56, 0x27, 0xd5, 0xc0, 0x3b, 0x46, 0x95, 0xce, 0x67, 0x54, 0x29, + 0x35, 0x9e, 0xaa, 0xa9, 0x1a, 0xbd, 0xd2, 0xad, 0x46, 0x59, 0xc3, 0xc9, 0x18, 0x26, 0x7f, 0x5e, + 0x80, 0x99, 0x4c, 0x1d, 0x90, 0xb3, 0x6c, 0xff, 0xdf, 0x08, 0x68, 0x24, 0x34, 0x2f, 0x7e, 0x31, + 0xf8, 0x4a, 0x18, 0x76, 0x68, 0x20, 0xf4, 0x2e, 0x7e, 0x91, 0x57, 0x60, 0x62, 0x93, 0x06, 0xae, + 0xdf, 0xe4, 0x17, 0x13, 0x78, 0xc4, 0xef, 0x84, 0x6d, 0x02, 0xc9, 0x05, 0x18, 0x55, 0x11, 0xab, + 0xdc, 0x87, 0x6b, 0xc7, 0x00, 0x26, 0x7b, 0xd1, 0xdd, 0xe3, 0x07, 0x3f, 0x8c, 0x59, 0xfc, 0x62, + 0x13, 0xb0, 0xf4, 0xa8, 0x0e, 0xf1, 0x09, 0x58, 0xba, 0x4b, 0xcf, 0xc2, 0xd0, 0x67, 0x36, 0x8e, + 0x63, 0xcc, 0x39, 0x61, 0x8b, 0x5f, 0x64, 0x12, 0x43, 0xcb, 0xf1, 0x5e, 0x0c, 0x86, 0x94, 0xbf, + 0x0f, 0xd3, 0x59, 0x7a, 0xcd, 0xfa, 0x0a, 0x04, 0x6f, 0x9f, 0xe2, 0xfd, 0x12, 0xa6, 0x2a, 0xcd, + 0x66, 0x3c, 0x5c, 0x79, 0xaf, 0xf2, 0x79, 0x82, 0xfb, 0x34, 0xc5, 0xb6, 0x76, 0x60, 0xc5, 0x73, + 0x23, 0x7b, 0x6a, 0xe9, 0x1b, 0x37, 0x8c, 0x5c, 0x6f, 0x4f, 0x73, 0xbc, 0xda, 0x67, 0xd7, 0xe9, + 0xd3, 0x8c, 0x21, 0xc0, 0x76, 0x1c, 0xa6, 0x6c, 0x0e, 0xcf, 0x10, 0x3e, 0xad, 0x89, 0x8d, 0xa7, + 0xae, 0x59, 0x53, 0x6e, 0x8c, 0xe8, 0xaf, 0x34, 0x1e, 0x5b, 0xdf, 0x83, 0xb3, 0x7c, 0xda, 0xef, + 0x56, 0x79, 0x51, 0x6d, 0xdd, 0x4f, 0x6c, 0xbd, 0x2b, 0x3d, 0x39, 0x5d, 0x6b, 0x66, 0x8f, 0x1b, + 0x75, 0xc1, 0x22, 0xff, 0x5b, 0x01, 0xe6, 0x12, 0xac, 0xb5, 0x67, 0x5e, 0x43, 0xae, 0x39, 0xaf, + 0x26, 0x43, 0xf7, 0x71, 0xaf, 0xc4, 0x1d, 0xa4, 0x6e, 0x53, 0x45, 0xef, 0x93, 0x5b, 0x00, 0x9c, + 0x59, 0xdb, 0xe2, 0xe0, 0xf1, 0x80, 0x88, 0x72, 0xc2, 0x4d, 0x8e, 0x46, 0x42, 0x3a, 0x90, 0xa5, + 0x77, 0xf1, 0x8d, 0xf4, 0xf2, 0x9f, 0x63, 0x9e, 0x15, 0x2a, 0xd8, 0xeb, 0x39, 0x8e, 0xf4, 0x2c, + 0xf9, 0xd6, 0xdf, 0xed, 0x87, 0x59, 0xbd, 0x03, 0x9f, 0xa7, 0xad, 0x9b, 0x30, 0xb6, 0xe0, 0x7b, + 0x11, 0xfd, 0x26, 0xd2, 0xf2, 0x5c, 0x10, 0x15, 0x8d, 0xa0, 0x30, 0x62, 0x7b, 0xcd, 0x01, 0x75, + 0xb6, 0xd7, 0x33, 0xa2, 0x35, 0x63, 0x42, 0xb2, 0x00, 0x13, 0xeb, 0xf4, 0x69, 0x4a, 0x81, 0x18, + 0x31, 0xea, 0xd1, 0xa7, 0x75, 0x4d, 0x89, 0x7a, 0x18, 0x9f, 0xc1, 0x43, 0x76, 0x61, 0x52, 0x0e, + 0x2e, 0x43, 0x99, 0x73, 0xfa, 0xca, 0x6b, 0x0e, 0x67, 0x9e, 0x07, 0x82, 0x95, 0x90, 0xa3, 0xc3, + 0x84, 0x44, 0xd6, 0x74, 0x5e, 0x22, 0x4f, 0x6d, 0x60, 0x2e, 0xed, 0x1a, 0xc6, 0x88, 0xc7, 0x4d, + 0xa6, 0x34, 0xd0, 0x45, 0x58, 0x9b, 0x50, 0x4a, 0xf7, 0x87, 0x28, 0xed, 0x2d, 0x18, 0xe2, 0x50, + 0xb1, 0x55, 0x92, 0x29, 0x8c, 0x14, 0x35, 0xf7, 0x65, 0x34, 0xc5, 0xaa, 0xc4, 0x61, 0xd6, 0x32, + 0xfa, 0x97, 0x14, 0x8d, 0xda, 0xac, 0xde, 0x4e, 0x76, 0x2f, 0x86, 0x3a, 0xcb, 0xee, 0xd5, 0x63, + 0x71, 0xe4, 0x95, 0x94, 0x05, 0x74, 0xd1, 0xe9, 0x92, 0x44, 0xc5, 0x6e, 0xc0, 0xb0, 0x00, 0x25, + 0x92, 0x2b, 0xc5, 0x9f, 0x9f, 0x24, 0xb0, 0xde, 0x87, 0x73, 0xe8, 0x2f, 0x74, 0xbd, 0xbd, 0x16, + 0xdd, 0x0e, 0x8d, 0x4b, 0x25, 0xbd, 0x3e, 0xeb, 0x0f, 0x61, 0x2e, 0x8b, 0xb7, 0xe7, 0x97, 0xcd, + 0xd3, 0x9d, 0xfc, 0x69, 0x1f, 0x4c, 0xaf, 0x84, 0xfa, 0x86, 0x4b, 0xa5, 0x3c, 0xc9, 0x48, 0xc3, + 0x81, 0x3a, 0x59, 0x3e, 0x95, 0x95, 0x66, 0xe3, 0x2d, 0xed, 0xba, 0x6b, 0x5f, 0xb7, 0xfc, 0x1a, + 0x6c, 0xd9, 0x52, 0x17, 0x5e, 0x5f, 0x85, 0x81, 0x75, 0x36, 0x55, 0xf7, 0x8b, 0xbe, 0xe3, 0x1c, + 0x0c, 0x84, 0xd7, 0x4d, 0xd9, 0x12, 0xc9, 0x7e, 0x90, 0xbb, 0xa9, 0x4b, 0xad, 0x03, 0xbd, 0xf3, + 0x47, 0x2c, 0x9f, 0x4a, 0xdd, 0x6f, 0x7d, 0x07, 0xc6, 0x2a, 0xcd, 0x03, 0x1e, 0x92, 0xe9, 0x7b, + 0x89, 0xcf, 0x52, 0xc3, 0x2c, 0x9f, 0xb2, 0x75, 0x42, 0x72, 0x8d, 0xdf, 0x6a, 0x18, 0xca, 0xc9, + 0xa9, 0xc1, 0x36, 0x6b, 0x95, 0x76, 0xbb, 0x3a, 0x02, 0x43, 0xfc, 0xa2, 0xa5, 0xf5, 0x25, 0xcc, + 0x89, 0x40, 0x1e, 0xee, 0x1d, 0xc5, 0x70, 0x9f, 0x30, 0x8e, 0xd5, 0xea, 0x16, 0x7c, 0x73, 0x09, + 0x00, 0x6d, 0xa1, 0x15, 0xaf, 0x49, 0xbf, 0x11, 0x91, 0x84, 0x1a, 0xc4, 0x7a, 0x1b, 0x46, 0x95, + 0x86, 0x70, 0xc3, 0xaf, 0x2d, 0x76, 0xa8, 0xad, 0x69, 0xe3, 0x16, 0xaf, 0xbc, 0xba, 0x7b, 0xce, + 0x68, 0xbb, 0xc8, 0x92, 0xc3, 0x2d, 0x04, 0x17, 0x66, 0x12, 0x83, 0x20, 0x4e, 0xc2, 0xa0, 0xf6, + 0xe8, 0x3c, 0xd4, 0x51, 0xfd, 0x4e, 0x6e, 0xe1, 0xfb, 0x8e, 0xb5, 0x85, 0xb7, 0xfe, 0x45, 0x1f, + 0x1a, 0x97, 0x29, 0x7d, 0x24, 0xfc, 0x74, 0xba, 0xaf, 0xb0, 0x0a, 0xa3, 0xd8, 0xfa, 0x45, 0x79, + 0x61, 0xb0, 0x7b, 0x1c, 0xca, 0xc8, 0x4f, 0x0e, 0xcb, 0xa7, 0x30, 0xf8, 0x24, 0x66, 0x23, 0x1f, + 0xc3, 0xf0, 0x92, 0xd7, 0x44, 0x09, 0xfd, 0x27, 0x90, 0x20, 0x99, 0x58, 0x9f, 0x60, 0x95, 0xb7, + 0xd8, 0x27, 0xcc, 0xdd, 0x3b, 0xb6, 0x06, 0x89, 0xad, 0xdc, 0xc1, 0x3c, 0x2b, 0x77, 0x28, 0x61, + 0xe5, 0x5a, 0x30, 0xb8, 0x11, 0x34, 0x45, 0x6e, 0x9b, 0xc9, 0xf9, 0x71, 0xa1, 0x38, 0x84, 0xd9, + 0x1c, 0x65, 0xfd, 0x8f, 0x02, 0xcc, 0xde, 0xa3, 0x51, 0xe6, 0x18, 0x32, 0xb4, 0x52, 0x78, 0x61, + 0xad, 0xf4, 0x3d, 0x8f, 0x56, 0x54, 0xab, 0xfb, 0xf3, 0x5a, 0x3d, 0x90, 0xd7, 0xea, 0xc1, 0xfc, + 0x56, 0xdf, 0x83, 0x21, 0xde, 0x54, 0x66, 0xc9, 0xaf, 0x44, 0xf4, 0x20, 0xb6, 0xe4, 0xf5, 0x28, + 0x3a, 0x9b, 0xe3, 0xd8, 0x46, 0x72, 0xd5, 0x09, 0x75, 0x4b, 0x5e, 0xfc, 0xb4, 0x7e, 0x80, 0x57, + 0x8d, 0x57, 0xfd, 0xc6, 0x63, 0xcd, 0x23, 0x3c, 0xcc, 0xbf, 0xd0, 0xe4, 0x09, 0x02, 0xa3, 0xe2, + 0x18, 0x5b, 0x52, 0x90, 0xcb, 0x30, 0xb6, 0xe2, 0xdd, 0xf5, 0x83, 0x06, 0xdd, 0xf0, 0x5a, 0x5c, + 0xfa, 0x88, 0xad, 0x83, 0x84, 0xa7, 0x44, 0x94, 0x10, 0xbb, 0x1f, 0x10, 0x90, 0x70, 0x3f, 0x30, + 0xd8, 0xce, 0xbc, 0xcd, 0x71, 0xc2, 0x11, 0xc3, 0xfe, 0xee, 0x66, 0xb9, 0x2b, 0x13, 0xbf, 0x17, + 0xe1, 0x2e, 0x9c, 0xb3, 0x69, 0xbb, 0xe5, 0xb0, 0x3d, 0xdd, 0x81, 0xcf, 0xe9, 0x55, 0x9b, 0x2f, + 0x67, 0x5c, 0x13, 0x34, 0x63, 0x2a, 0x54, 0x95, 0xfb, 0xba, 0x54, 0xf9, 0x00, 0xae, 0xdc, 0xa3, + 0x91, 0x39, 0xa1, 0xc6, 0xfe, 0x66, 0xd1, 0xf8, 0x65, 0x18, 0x09, 0x4d, 0x5f, 0xb9, 0xbc, 0xf6, + 0x96, 0xc9, 0xb8, 0xf3, 0xa6, 0x3c, 0x4d, 0x12, 0x72, 0xd4, 0x5f, 0xd6, 0x27, 0x50, 0xce, 0x2b, + 0xee, 0x78, 0x21, 0xaf, 0x2e, 0x5c, 0xce, 0x17, 0x20, 0xaa, 0xbb, 0x04, 0xd2, 0xaf, 0x2e, 0x3e, + 0xa1, 0x5e, 0xb5, 0x35, 0x5d, 0xf1, 0xe2, 0x0f, 0xab, 0x2a, 0x83, 0xff, 0x5e, 0xa0, 0xba, 0x75, + 0x3c, 0xb2, 0x36, 0x05, 0xc4, 0x7a, 0xad, 0xc0, 0x88, 0x84, 0x09, 0xbd, 0xce, 0x66, 0xd6, 0x54, + 0x2a, 0xb4, 0x29, 0x05, 0x28, 0x36, 0xeb, 0x07, 0xf2, 0xf8, 0xc6, 0xe4, 0x38, 0xde, 0xbd, 0xd9, + 0xe3, 0x9c, 0xd7, 0x58, 0x3e, 0x9c, 0x33, 0x65, 0xeb, 0x6e, 0xf9, 0xa2, 0xe6, 0x96, 0xe7, 0xde, + 0xf8, 0xcb, 0xa6, 0x9b, 0x58, 0x78, 0x1a, 0x34, 0x10, 0xb9, 0xa4, 0x3b, 0xdf, 0xc7, 0xd3, 0x17, + 0x71, 0x6f, 0xc3, 0x5c, 0x56, 0x81, 0x9a, 0x1d, 0xa8, 0x3c, 0xbc, 0x62, 0xbf, 0xb3, 0x08, 0x97, + 0x64, 0x76, 0x29, 0xdf, 0x8f, 0xc2, 0x28, 0x70, 0xda, 0xb5, 0x46, 0xe0, 0xb6, 0x63, 0x2e, 0x0b, + 0x86, 0x38, 0x44, 0x68, 0x82, 0x1f, 0x85, 0x71, 0x1a, 0x81, 0xb1, 0x7e, 0xa5, 0x00, 0x96, 0x11, + 0xa7, 0x85, 0xfd, 0xbc, 0x19, 0xf8, 0x4f, 0xdc, 0xa6, 0x76, 0xfc, 0xf4, 0xba, 0xe1, 0xfa, 0xe4, + 0x77, 0x12, 0x93, 0x21, 0xe2, 0x62, 0xce, 0xbc, 0x9d, 0x70, 0x47, 0xf2, 0x8d, 0x27, 0xc6, 0x6e, + 0x99, 0x17, 0x22, 0x94, 0x9b, 0xf2, 0x7f, 0x15, 0xe0, 0x6a, 0xd7, 0x3a, 0x88, 0xf6, 0xec, 0x42, + 0x31, 0x89, 0x13, 0x23, 0xa8, 0xac, 0xc5, 0x6d, 0xa4, 0x25, 0xec, 0xdc, 0xe1, 0x71, 0xe8, 0x32, + 0xbe, 0xa9, 0xad, 0x24, 0xa7, 0xe4, 0x9d, 0xbc, 0xf6, 0x98, 0xbf, 0xc2, 0x8f, 0x9c, 0xd6, 0x02, + 0x3a, 0x00, 0xfa, 0xe3, 0x3b, 0x05, 0x11, 0x83, 0xd6, 0x93, 0x69, 0x32, 0x34, 0x62, 0xeb, 0x53, + 0xfc, 0xae, 0xb3, 0x2b, 0x7d, 0xbc, 0x4f, 0x6d, 0x01, 0xae, 0x26, 0x62, 0x07, 0x9e, 0x43, 0x48, + 0x04, 0x33, 0x4c, 0xfd, 0x6c, 0xef, 0x7d, 0x2f, 0xf0, 0x3b, 0xed, 0x9f, 0x4f, 0xaf, 0xff, 0x61, + 0x81, 0x07, 0x73, 0xea, 0xc5, 0x8a, 0x8e, 0x5e, 0x00, 0x88, 0xa1, 0x89, 0xa0, 0x7e, 0x85, 0xd8, + 0xb9, 0xc3, 0x4d, 0x6e, 0x3c, 0x55, 0xd8, 0xe3, 0x02, 0x34, 0xb6, 0x9f, 0x6f, 0x4f, 0xbe, 0x89, + 0x01, 0x03, 0xaa, 0xf4, 0xe3, 0xe9, 0xfd, 0x1d, 0xe9, 0xff, 0x38, 0x21, 0xdf, 0x3e, 0x4c, 0xb3, + 0x19, 0xa0, 0xd2, 0x89, 0xf6, 0xfd, 0xc0, 0x8d, 0xe4, 0xf5, 0x14, 0xb2, 0x29, 0x32, 0x02, 0x70, + 0xae, 0x0f, 0x7f, 0x76, 0x58, 0x7e, 0xf7, 0x24, 0x79, 0x3f, 0xa5, 0xcc, 0x2d, 0x95, 0x45, 0xc0, + 0x9a, 0x85, 0xfe, 0x05, 0x7b, 0x15, 0x27, 0x3c, 0x7b, 0x55, 0x4d, 0x78, 0xf6, 0xaa, 0xf5, 0x17, + 0x7d, 0x50, 0xe6, 0x39, 0x4b, 0x30, 0xce, 0x24, 0xf6, 0x5a, 0x68, 0x81, 0x2b, 0xc7, 0x75, 0x30, + 0x24, 0x72, 0x92, 0xf4, 0x1d, 0x27, 0x27, 0xc9, 0x2f, 0x41, 0x8e, 0xcb, 0xea, 0x18, 0x5e, 0x80, + 0xd7, 0x8e, 0x0e, 0xcb, 0x57, 0x63, 0x2f, 0x00, 0xc7, 0x66, 0xb9, 0x03, 0x72, 0x8a, 0x48, 0xfb, + 0x2f, 0x06, 0x9e, 0xc3, 0x7f, 0x71, 0x1b, 0x86, 0xd1, 0x98, 0x59, 0xd9, 0x14, 0x91, 0x9f, 0x38, + 0x3c, 0x31, 0x43, 0x51, 0xdd, 0xd5, 0xd3, 0x01, 0x4a, 0x32, 0xeb, 0x1f, 0xf4, 0xc1, 0xe5, 0x7c, + 0x9d, 0x8b, 0xba, 0x2d, 0x02, 0xc4, 0x11, 0x2e, 0xdd, 0x22, 0x6a, 0xf0, 0xdb, 0x79, 0x4a, 0x77, + 0x55, 0x44, 0x9b, 0xc6, 0xc7, 0xf6, 0x3e, 0xf2, 0xa6, 0x75, 0xe2, 0x38, 0xc5, 0xb8, 0x80, 0x2d, + 0xb2, 0xd9, 0x0a, 0x90, 0x91, 0xcd, 0x56, 0xc0, 0xc8, 0x2e, 0xcc, 0x6e, 0x06, 0xee, 0x13, 0x27, + 0xa2, 0x0f, 0xe8, 0x33, 0x7e, 0x59, 0x68, 0x49, 0xdc, 0x10, 0xe2, 0xd7, 0xe7, 0xaf, 0x1f, 0x1d, + 0x96, 0x5f, 0x69, 0x73, 0x12, 0xcc, 0x58, 0xc6, 0xef, 0x7e, 0xd6, 0xd3, 0x97, 0x86, 0xf2, 0x04, + 0x59, 0xff, 0xae, 0x00, 0xe7, 0x71, 0x5b, 0x2e, 0xdc, 0xae, 0xb2, 0xf0, 0xe7, 0x0a, 0xac, 0xd4, + 0x1b, 0x28, 0xc6, 0x22, 0x06, 0x56, 0x1a, 0x37, 0xd1, 0x6d, 0x83, 0x8c, 0xac, 0xc0, 0x98, 0xf8, + 0x8d, 0xdf, 0x5f, 0x3f, 0x1a, 0x04, 0x33, 0xda, 0x84, 0x85, 0x43, 0x9d, 0xbb, 0x8a, 0x70, 0x60, + 0x0b, 0x61, 0x78, 0x61, 0xd3, 0xd6, 0x79, 0xad, 0x9f, 0xf6, 0xc1, 0x85, 0x1d, 0x1a, 0xb8, 0x8f, + 0x9e, 0xe5, 0x34, 0x66, 0x03, 0xa6, 0x25, 0x88, 0xe7, 0x2d, 0x31, 0x3e, 0x31, 0x9e, 0xcf, 0x52, + 0x56, 0x55, 0x24, 0x3e, 0x91, 0x5f, 0x5c, 0x26, 0xe3, 0x09, 0x42, 0x26, 0xdf, 0x82, 0x91, 0x44, + 0xe6, 0x20, 0xec, 0x7f, 0xf9, 0x85, 0xc6, 0x5d, 0xb5, 0x7c, 0xca, 0x56, 0x94, 0xe4, 0xd7, 0xf2, + 0x8f, 0xaa, 0x84, 0xeb, 0xa3, 0x97, 0xff, 0x13, 0x3f, 0x58, 0xf6, 0xb1, 0x3a, 0x1a, 0x36, 0xe3, + 0x83, 0x5d, 0x3e, 0x65, 0xe7, 0x95, 0x54, 0x1d, 0x83, 0xd1, 0x0a, 0x9e, 0xdb, 0x31, 0xcb, 0xfd, + 0x7f, 0xf6, 0xc1, 0x25, 0x79, 0xf1, 0x27, 0x47, 0xcd, 0x9f, 0xc3, 0xac, 0x04, 0x55, 0xda, 0x6c, + 0xc3, 0x40, 0x9b, 0xa6, 0xa6, 0x79, 0x4e, 0x59, 0xa9, 0x69, 0x47, 0xd0, 0xc4, 0xca, 0xce, 0x63, + 0x7f, 0x39, 0xde, 0xcf, 0x8f, 0xb3, 0xf2, 0x38, 0xa1, 0x17, 0x52, 0x9f, 0x33, 0x0d, 0xd5, 0x18, + 0xf3, 0x67, 0x33, 0xe5, 0x3d, 0x1d, 0x78, 0x51, 0xef, 0xe9, 0xf2, 0xa9, 0xa4, 0xff, 0xb4, 0x3a, + 0x09, 0xe3, 0xeb, 0xf4, 0x69, 0xac, 0xf7, 0xbf, 0x5e, 0x48, 0xa4, 0x7a, 0x60, 0x3b, 0x0c, 0x9e, + 0xf3, 0xa1, 0x10, 0xa7, 0x02, 0xc2, 0x54, 0x0f, 0xfa, 0x0e, 0x83, 0x93, 0xae, 0xc0, 0x30, 0x3f, + 0xcc, 0x6e, 0x1e, 0xc3, 0xc2, 0x57, 0x37, 0x78, 0xf8, 0xb5, 0xca, 0x26, 0x37, 0xf6, 0x05, 0xbf, + 0xf5, 0x00, 0xae, 0x88, 0x18, 0x6f, 0xb3, 0xf3, 0xb1, 0xa0, 0x13, 0x2e, 0x5f, 0x96, 0x03, 0x97, + 0xee, 0xd1, 0xe4, 0xd4, 0x63, 0xdc, 0x70, 0xfa, 0x04, 0x4e, 0x1b, 0x70, 0x25, 0x11, 0x77, 0xa5, + 0x6a, 0x0c, 0x29, 0xd1, 0x49, 0x6a, 0xeb, 0x72, 0x56, 0x11, 0x7a, 0x65, 0x2d, 0x8a, 0xc9, 0x61, + 0x83, 0xf8, 0x88, 0x2d, 0x3c, 0xc1, 0xac, 0x77, 0x5d, 0xfb, 0xae, 0xf9, 0x8c, 0xc7, 0xb3, 0x07, + 0xca, 0x95, 0x57, 0x61, 0xad, 0x09, 0xe3, 0x2c, 0xc0, 0x9a, 0x84, 0x71, 0x89, 0x6a, 0xd1, 0x30, + 0xb4, 0xfe, 0xf3, 0x20, 0x58, 0x42, 0xb1, 0x59, 0x27, 0xf4, 0x52, 0x1f, 0xbb, 0xa9, 0xca, 0x8a, + 0x85, 0xea, 0xac, 0x9e, 0x93, 0x34, 0xc6, 0xf2, 0x91, 0x87, 0xfb, 0xbc, 0x46, 0x0c, 0x35, 0x46, + 0x5e, 0xaa, 0xf5, 0x5f, 0xe5, 0x4c, 0x93, 0xfc, 0x63, 0xc3, 0x2b, 0xdb, 0x39, 0xd3, 0xa4, 0x21, + 0x37, 0x7b, 0xca, 0xb4, 0xcd, 0x23, 0x91, 0xfe, 0xe7, 0x39, 0x12, 0x61, 0x5f, 0xa4, 0x7e, 0x28, + 0xb2, 0x6d, 0xea, 0x52, 0x7c, 0x8f, 0xf2, 0xf4, 0x5e, 0x47, 0x89, 0x8c, 0x0b, 0x1a, 0xc4, 0x90, + 0x6a, 0x88, 0x21, 0x2e, 0x14, 0x35, 0x9f, 0xe5, 0xc2, 0x3e, 0x6d, 0x3c, 0x16, 0xbe, 0x62, 0x79, + 0xa0, 0x9b, 0xe5, 0x33, 0xe7, 0xf9, 0xa9, 0xf9, 0x77, 0xce, 0x11, 0xf5, 0x06, 0x63, 0xd5, 0x33, + 0x46, 0x24, 0xc5, 0x92, 0x1f, 0xc1, 0x94, 0xea, 0xea, 0x44, 0x88, 0xd6, 0xd8, 0xfc, 0x2b, 0x71, + 0x2a, 0xd3, 0x83, 0x47, 0xce, 0xcd, 0x27, 0x77, 0x6e, 0x66, 0xd0, 0xf2, 0x44, 0x04, 0x0d, 0x89, + 0xd0, 0xe2, 0xb3, 0xf4, 0x83, 0xae, 0x0c, 0x46, 0xf2, 0x05, 0x4c, 0xd7, 0x6a, 0x1b, 0xfc, 0x32, + 0x87, 0x2d, 0x0f, 0xf8, 0xed, 0x55, 0x11, 0xb0, 0x85, 0xdd, 0x1d, 0x86, 0x7e, 0x5d, 0x5c, 0x02, + 0xd1, 0xc3, 0x02, 0xf4, 0x54, 0x0c, 0x59, 0x22, 0xf4, 0x93, 0xf2, 0xbf, 0xaf, 0xee, 0x2a, 0xb0, + 0xad, 0x88, 0xdb, 0xa2, 0xe2, 0xd2, 0x91, 0x1c, 0xd8, 0x39, 0xa7, 0x7c, 0x85, 0x6f, 0xf9, 0x94, + 0xef, 0xf7, 0xfa, 0xe4, 0x0d, 0x8d, 0xf4, 0x41, 0xeb, 0x89, 0x0f, 0xfb, 0x32, 0x5b, 0x70, 0xac, + 0x75, 0x3a, 0xb3, 0x72, 0xa4, 0x2a, 0x8f, 0x4a, 0x55, 0xb2, 0xb2, 0x49, 0x75, 0xec, 0x10, 0x23, + 0x8c, 0xd3, 0x53, 0xdc, 0x15, 0x69, 0x5c, 0xc9, 0x73, 0xb8, 0xfe, 0x17, 0x3f, 0x87, 0xfb, 0x31, + 0xcc, 0xc8, 0xab, 0x51, 0x0b, 0xd4, 0x8b, 0x68, 0x20, 0x4f, 0xec, 0x27, 0xe3, 0xa4, 0x6f, 0x98, + 0xde, 0xaf, 0x08, 0xfd, 0x15, 0x7b, 0x5d, 0x78, 0x74, 0xd8, 0x9f, 0xe4, 0xb2, 0x19, 0x10, 0xc7, + 0xef, 0xbc, 0x19, 0xe1, 0x6f, 0x97, 0x59, 0x75, 0xb9, 0x9f, 0xc5, 0x95, 0xa9, 0xfa, 0x6c, 0x1d, + 0x64, 0x2d, 0xc0, 0x79, 0xb3, 0xf8, 0x4d, 0x1a, 0x1c, 0xb8, 0xb8, 0xf7, 0xae, 0xd1, 0x48, 0x16, + 0x5a, 0x88, 0x0b, 0x25, 0x7a, 0x40, 0xb5, 0x30, 0x03, 0xff, 0x4f, 0x1f, 0x94, 0x33, 0x1b, 0x51, + 0x09, 0x43, 0x77, 0xcf, 0xc3, 0x0c, 0x1a, 0x17, 0x60, 0xe0, 0x81, 0xeb, 0x35, 0x75, 0x43, 0xf2, + 0xb1, 0xeb, 0x35, 0x6d, 0x84, 0x32, 0x1b, 0xa4, 0xd6, 0xd9, 0x45, 0x02, 0xcd, 0x44, 0x0e, 0x3b, + 0xbb, 0x75, 0x46, 0xa4, 0xdb, 0x20, 0x82, 0x8c, 0x5c, 0x83, 0x61, 0x99, 0x6d, 0xad, 0x3f, 0xf6, + 0x9e, 0xc9, 0x34, 0x6b, 0x12, 0x47, 0x3e, 0x82, 0x91, 0x35, 0x1a, 0x39, 0x4d, 0x27, 0x72, 0xc4, + 0xd8, 0x91, 0x0f, 0x61, 0x48, 0x70, 0xb5, 0x28, 0x56, 0xe8, 0x91, 0x03, 0x01, 0xb1, 0x15, 0x0b, + 0x2a, 0xd0, 0x0d, 0xdb, 0x2d, 0xe7, 0x99, 0x0a, 0x26, 0x65, 0x0a, 0x8c, 0x41, 0xe4, 0x1d, 0x33, + 0xe4, 0x22, 0x3e, 0x3e, 0xcb, 0x54, 0x48, 0x1c, 0x90, 0xb1, 0x8c, 0x61, 0x20, 0xb1, 0xaa, 0x45, + 0x36, 0x41, 0x2b, 0x93, 0xdb, 0xa0, 0xb4, 0x4d, 0x46, 0xeb, 0xb7, 0xc6, 0xe0, 0xcc, 0xa6, 0xb3, + 0xe7, 0x7a, 0x6c, 0x47, 0x61, 0xd3, 0xd0, 0xef, 0x04, 0x0d, 0x4a, 0x2a, 0x30, 0x69, 0x06, 0x70, + 0xf7, 0x08, 0x4f, 0x67, 0x9b, 0x26, 0x13, 0x46, 0xe6, 0x61, 0x54, 0x5d, 0x1a, 0x17, 0x3b, 0x9d, + 0x8c, 0xcb, 0xe4, 0xcb, 0xa7, 0xec, 0x98, 0x8c, 0xbc, 0x67, 0x1c, 0x3e, 0x9e, 0x56, 0xf9, 0x0f, + 0x90, 0x76, 0x9e, 0x47, 0xd8, 0x7a, 0x7e, 0xd3, 0xdc, 0xad, 0xf1, 0x13, 0xb6, 0x1f, 0xa4, 0xce, + 0x23, 0x07, 0x8d, 0x1a, 0xa7, 0x9c, 0xb2, 0xb8, 0x51, 0xcd, 0xcd, 0x5e, 0x9f, 0x71, 0x52, 0xf9, + 0x25, 0x8c, 0x3d, 0xe8, 0xec, 0x52, 0x79, 0xf2, 0x3a, 0x24, 0x36, 0x6f, 0xc9, 0x6b, 0x09, 0x02, + 0xbf, 0xf3, 0x26, 0xff, 0x8a, 0x1f, 0x77, 0x76, 0x69, 0xfa, 0x59, 0x04, 0xb6, 0x6a, 0x6a, 0xc2, + 0xc8, 0x3e, 0x14, 0x93, 0x37, 0x08, 0x44, 0x97, 0x76, 0xb9, 0xf7, 0x80, 0x89, 0x7e, 0xb4, 0xc7, + 0x17, 0x78, 0x5c, 0xb3, 0x51, 0x48, 0x4a, 0x2a, 0xf9, 0x31, 0xcc, 0x64, 0xba, 0xc4, 0xd5, 0x1d, + 0xc8, 0xee, 0xde, 0x76, 0x5c, 0x82, 0x12, 0x5a, 0x93, 0x17, 0x2e, 0x8d, 0x92, 0xb3, 0x4b, 0x21, + 0x4d, 0x38, 0x9d, 0x88, 0x8c, 0x17, 0x2f, 0xcc, 0xe4, 0xc7, 0xda, 0xe3, 0xae, 0x49, 0x26, 0x69, + 0xce, 0x2c, 0x2b, 0x29, 0x92, 0xac, 0xc2, 0xa8, 0xf2, 0x45, 0x89, 0xdc, 0x7c, 0x59, 0x7e, 0xb7, + 0xd2, 0xd1, 0x61, 0x79, 0x3a, 0xf6, 0xbb, 0x19, 0x32, 0x63, 0x01, 0xe4, 0x97, 0xe1, 0x8a, 0x1a, + 0xa2, 0x1b, 0x41, 0xb6, 0x87, 0x52, 0x3c, 0xee, 0x70, 0x23, 0x39, 0xc2, 0xf3, 0xe8, 0x77, 0xee, + 0x54, 0xfb, 0x4a, 0x85, 0xe5, 0x53, 0x76, 0x6f, 0xd1, 0xe4, 0x57, 0x0b, 0x70, 0x36, 0xa7, 0xd4, + 0x71, 0x2c, 0xb5, 0xa7, 0xdb, 0x18, 0x2d, 0x4f, 0xbc, 0xf7, 0xe7, 0x36, 0xe3, 0xfb, 0xb1, 0xd2, + 0x7f, 0x6c, 0xb4, 0x3b, 0xa7, 0x24, 0x72, 0x1b, 0x60, 0xcf, 0x8d, 0xc4, 0x18, 0xc3, 0x34, 0x75, + 0xe9, 0x0f, 0x94, 0xa9, 0x6d, 0xcf, 0x8d, 0xc4, 0x48, 0xfb, 0xdd, 0x42, 0xcf, 0x79, 0x1d, 0xb3, + 0xd7, 0x8d, 0xcd, 0xbf, 0xda, 0x6d, 0xd2, 0x8b, 0xa9, 0xab, 0xb7, 0x8f, 0x0e, 0xcb, 0x6f, 0xa8, + 0x14, 0x68, 0x0d, 0xa4, 0x92, 0xb7, 0x7c, 0xeb, 0x8e, 0xa2, 0x33, 0xda, 0xd3, 0x73, 0x69, 0x79, + 0x03, 0x86, 0xd0, 0x33, 0x15, 0x96, 0x26, 0xd0, 0x76, 0xc3, 0xc4, 0x5d, 0xe8, 0xbf, 0xd2, 0x77, + 0x6b, 0x82, 0x86, 0x2c, 0x33, 0x1b, 0x08, 0x77, 0x8b, 0xd2, 0x66, 0x11, 0x69, 0xfe, 0x84, 0x1d, + 0xcd, 0x51, 0x32, 0xff, 0x8e, 0xf1, 0x3c, 0x89, 0xc9, 0x56, 0x05, 0x18, 0x09, 0xc4, 0x74, 0x7b, + 0x7f, 0x60, 0x64, 0xa0, 0x38, 0xc8, 0x67, 0x04, 0x79, 0x97, 0xe4, 0xd7, 0x47, 0xf8, 0xc5, 0xf3, + 0x6d, 0xcf, 0x7d, 0xe4, 0xc6, 0x33, 0xb3, 0xee, 0xd3, 0x8e, 0xdf, 0x09, 0x13, 0x16, 0x67, 0xce, + 0x8b, 0x60, 0xca, 0xfd, 0xdd, 0xd7, 0xd3, 0xfd, 0xfd, 0xa6, 0x76, 0x50, 0xac, 0xa5, 0xf3, 0xe5, + 0x96, 0x85, 0xe9, 0x6e, 0x8e, 0x4f, 0x90, 0xbf, 0x86, 0x21, 0xcc, 0xc0, 0xcb, 0x4f, 0xe1, 0xc7, + 0xe6, 0x6f, 0x8a, 0xee, 0xec, 0x52, 0x7d, 0x9e, 0xb2, 0x57, 0x24, 0x93, 0xe0, 0x1a, 0x47, 0x80, + 0xa1, 0x71, 0x84, 0x90, 0x2d, 0x98, 0xda, 0x64, 0x1b, 0x5d, 0x7e, 0xa3, 0xa1, 0x1d, 0x08, 0x97, + 0x20, 0x77, 0x36, 0xe2, 0x46, 0xbb, 0x2d, 0xd1, 0x75, 0xaa, 0xf0, 0xfa, 0x5e, 0x33, 0x83, 0x9d, + 0x2c, 0xc1, 0x64, 0x8d, 0x3a, 0x41, 0x63, 0xff, 0x01, 0x7d, 0xc6, 0x8c, 0x0c, 0xe3, 0x69, 0x9c, + 0x10, 0x31, 0xac, 0xbd, 0x88, 0xd2, 0x23, 0xab, 0x4c, 0x26, 0xf2, 0x29, 0x0c, 0xd5, 0xfc, 0x20, + 0xaa, 0x3e, 0x13, 0xb3, 0xb5, 0x3c, 0xa7, 0xe5, 0xc0, 0xea, 0x39, 0xf9, 0x3c, 0x50, 0xe8, 0x07, + 0x51, 0x7d, 0xd7, 0xc8, 0x04, 0xc7, 0x49, 0xc8, 0x33, 0x98, 0x36, 0x67, 0x4a, 0x11, 0x68, 0x3f, + 0x22, 0x8c, 0x9b, 0xac, 0xe9, 0x98, 0x93, 0x54, 0xaf, 0x0b, 0xe9, 0x97, 0x93, 0xf3, 0xf1, 0x23, + 0xc4, 0xeb, 0x16, 0x41, 0x16, 0x3f, 0x59, 0xc3, 0x77, 0x95, 0x78, 0x8b, 0x2a, 0x21, 0x0f, 0xd0, + 0x1f, 0x8d, 0x73, 0x0d, 0x76, 0x70, 0xb6, 0x45, 0x4d, 0x38, 0x61, 0xf2, 0x31, 0x2e, 0x3b, 0xc5, + 0x4a, 0x36, 0xe1, 0xcc, 0x76, 0x48, 0x37, 0x03, 0xfa, 0xc4, 0xa5, 0x4f, 0xa5, 0x3c, 0x88, 0x13, + 0xb3, 0x31, 0x79, 0x6d, 0x8e, 0xcd, 0x12, 0x98, 0x66, 0x26, 0xef, 0x01, 0x6c, 0xba, 0x9e, 0x47, + 0x9b, 0x78, 0xd8, 0x3f, 0x86, 0xa2, 0xf0, 0x20, 0xa3, 0x8d, 0xd0, 0xba, 0xef, 0xb5, 0x74, 0x95, + 0x6a, 0xc4, 0xa4, 0x0a, 0x13, 0x2b, 0x5e, 0xa3, 0xd5, 0x11, 0x41, 0x39, 0x21, 0xce, 0x94, 0x22, + 0x61, 0xa4, 0xcb, 0x11, 0xf5, 0xd4, 0x47, 0x6e, 0xb2, 0x90, 0x07, 0x40, 0x04, 0x40, 0x8c, 0x5a, + 0x67, 0xb7, 0x45, 0xc5, 0xe7, 0x8e, 0x0e, 0x4a, 0x29, 0x08, 0x87, 0xbb, 0x91, 0x87, 0x31, 0xc5, + 0x36, 0xf7, 0x1e, 0x8c, 0x69, 0x63, 0x3e, 0x23, 0x3b, 0xca, 0xb4, 0x9e, 0x1d, 0x65, 0x54, 0xcf, + 0x82, 0xf2, 0x4f, 0x0b, 0x70, 0x21, 0xfb, 0x5b, 0x12, 0xb6, 0xc9, 0x06, 0x8c, 0x2a, 0xa0, 0xba, + 0x0f, 0x27, 0x0d, 0xee, 0xc4, 0xd6, 0x8e, 0x7f, 0xd0, 0x72, 0xe6, 0xd1, 0x5b, 0x1f, 0xcb, 0x78, + 0x8e, 0x53, 0xb0, 0xbf, 0x39, 0x02, 0xd3, 0x78, 0xef, 0x23, 0x39, 0x4f, 0x7d, 0x82, 0x59, 0x8e, + 0x10, 0xa6, 0x1d, 0xea, 0x08, 0xff, 0x2e, 0x87, 0x27, 0xf3, 0xfd, 0x19, 0x0c, 0xe4, 0x6d, 0x3d, + 0x12, 0xa9, 0x4f, 0x7b, 0xc7, 0x49, 0x02, 0xf5, 0x26, 0xc4, 0x21, 0x4a, 0xaf, 0x1b, 0x81, 0x30, + 0xc7, 0x9e, 0xf4, 0x06, 0x8e, 0x3b, 0xe9, 0x6d, 0xab, 0x49, 0x8f, 0x67, 0xcf, 0x79, 0x4d, 0x9b, + 0xf4, 0x5e, 0xfe, 0x6c, 0x37, 0xf4, 0xb2, 0x67, 0xbb, 0xe1, 0x17, 0x9b, 0xed, 0x46, 0x9e, 0x73, + 0xb6, 0xbb, 0x0b, 0x93, 0xeb, 0x94, 0x36, 0xb5, 0xe3, 0xc9, 0xd1, 0x78, 0xf5, 0xf4, 0x28, 0x3a, + 0x9e, 0xb3, 0xce, 0x28, 0x13, 0x5c, 0xb9, 0xb3, 0x26, 0xfc, 0xd5, 0xcc, 0x9a, 0x63, 0x2f, 0x79, + 0xd6, 0x1c, 0x7f, 0x91, 0x59, 0x33, 0x35, 0xf5, 0x4d, 0x9c, 0x78, 0xea, 0x7b, 0x91, 0xd9, 0xea, + 0x63, 0x0c, 0xe4, 0xad, 0xd5, 0x96, 0x45, 0xcc, 0x96, 0x16, 0x24, 0xb5, 0xec, 0x87, 0xf2, 0x9e, + 0x03, 0xfe, 0xcd, 0x60, 0xf8, 0x5a, 0x86, 0x70, 0x07, 0xb0, 0xbf, 0xad, 0x2a, 0x86, 0xef, 0xea, + 0xfc, 0xea, 0x3e, 0xd0, 0xb0, 0xb8, 0x4c, 0x2c, 0xe6, 0xb8, 0xe4, 0xf6, 0xd3, 0x96, 0x78, 0xeb, + 0x4f, 0x0b, 0x3c, 0x14, 0xe0, 0xff, 0xc5, 0xa9, 0xf2, 0x45, 0x8e, 0xe7, 0x7f, 0x2d, 0x4e, 0x32, + 0x22, 0x12, 0xa2, 0x04, 0x4e, 0xe3, 0x71, 0x1c, 0x1f, 0xf1, 0x7d, 0xf6, 0x9d, 0xeb, 0x08, 0xb1, + 0x51, 0x9f, 0x55, 0x9a, 0xd2, 0x91, 0x3b, 0x77, 0xe4, 0x04, 0x20, 0x72, 0xad, 0x70, 0xb0, 0x39, + 0x01, 0xe8, 0x0c, 0x18, 0xa1, 0x7a, 0xda, 0xb2, 0x79, 0x8e, 0x8c, 0xcc, 0x1a, 0xbc, 0x93, 0xce, + 0xf2, 0x80, 0x56, 0x56, 0x9c, 0xe5, 0x41, 0x57, 0x63, 0x9c, 0xef, 0x61, 0x1b, 0xce, 0xdb, 0xf4, + 0xc0, 0x7f, 0x42, 0x5f, 0xae, 0xd8, 0xaf, 0xe0, 0x9c, 0x29, 0x90, 0xdf, 0x07, 0xe4, 0x8f, 0x57, + 0x7c, 0x9c, 0xfd, 0xe4, 0x85, 0x60, 0xe0, 0x4f, 0x5e, 0xf0, 0xcc, 0xf9, 0xec, 0x4f, 0x7d, 0xdd, + 0x40, 0x9c, 0xe5, 0xc3, 0x05, 0x53, 0x78, 0xa5, 0xd9, 0xc4, 0x57, 0x73, 0x1b, 0x6e, 0xdb, 0xf1, + 0x22, 0xb2, 0x01, 0x63, 0xda, 0xcf, 0x84, 0x0f, 0x44, 0xc3, 0x88, 0x3d, 0x4d, 0x0c, 0x30, 0x32, + 0x0f, 0xc7, 0x60, 0x8b, 0x42, 0x39, 0xa9, 0x1e, 0xa6, 0x32, 0xbd, 0xcc, 0x2a, 0x4c, 0x68, 0x3f, + 0xd5, 0x41, 0x01, 0x7e, 0xfc, 0x5a, 0x09, 0xa6, 0xc2, 0x4c, 0x16, 0xab, 0x01, 0x73, 0x59, 0x4a, + 0xe3, 0x29, 0xea, 0xc9, 0x52, 0x9c, 0x81, 0xae, 0x77, 0x8c, 0xeb, 0xe9, 0xbc, 0xec, 0x73, 0xd6, + 0xdf, 0x1b, 0x80, 0xf3, 0xa2, 0x33, 0x5e, 0x66, 0x8f, 0x93, 0x1f, 0xc0, 0x98, 0xd6, 0xc7, 0x42, + 0xe9, 0x97, 0xe5, 0x6d, 0xbe, 0xbc, 0xb1, 0xc0, 0x7d, 0x35, 0x1d, 0x04, 0xd4, 0x13, 0xdd, 0xbd, + 0x7c, 0xca, 0xd6, 0x45, 0x92, 0x16, 0x4c, 0x9a, 0x1d, 0x2d, 0xdc, 0x55, 0x57, 0x33, 0x0b, 0x31, + 0x49, 0x65, 0xfe, 0xfa, 0x66, 0x3d, 0xb3, 0xbb, 0x97, 0x4f, 0xd9, 0x09, 0xd9, 0xe4, 0x1b, 0x38, + 0x93, 0xea, 0x65, 0xe1, 0x8b, 0x7c, 0x35, 0xb3, 0xc0, 0x14, 0x35, 0x3f, 0x04, 0x09, 0x10, 0x9c, + 0x5b, 0x6c, 0xba, 0x10, 0xd2, 0x84, 0x71, 0xbd, 0xe3, 0x85, 0x3f, 0xed, 0x4a, 0x17, 0x55, 0x72, + 0x42, 0xbe, 0xb9, 0x13, 0xba, 0xc4, 0xbe, 0x7f, 0x66, 0x1e, 0xec, 0x18, 0xc4, 0x23, 0x30, 0xc4, + 0x7f, 0x5b, 0xbf, 0x57, 0x80, 0xf3, 0x9b, 0x01, 0x0d, 0xa9, 0xd7, 0xa0, 0xc6, 0xbd, 0x88, 0x17, + 0x1c, 0x11, 0x79, 0x67, 0x2a, 0x7d, 0x2f, 0x7c, 0xa6, 0x62, 0xfd, 0xdb, 0x02, 0x94, 0xb2, 0xaa, + 0x5c, 0xa3, 0x5e, 0x93, 0x6c, 0x42, 0x31, 0xd9, 0x06, 0xf1, 0xc5, 0x58, 0x2a, 0xfd, 0x78, 0x6e, + 0x6b, 0x97, 0x4f, 0xd9, 0x29, 0x6e, 0xb2, 0x0e, 0x67, 0x34, 0x98, 0x38, 0xd3, 0xe8, 0x3b, 0xce, + 0x99, 0x06, 0xeb, 0xe1, 0x14, 0xab, 0x7e, 0x24, 0xb4, 0x8c, 0xab, 0xee, 0xa2, 0x7f, 0xe0, 0xb8, + 0x1e, 0xdb, 0x44, 0x6b, 0x09, 0xee, 0x20, 0x86, 0x0a, 0xb5, 0xf3, 0x43, 0x0e, 0x84, 0xca, 0x2b, + 0x62, 0x8a, 0xc4, 0xfa, 0x10, 0x57, 0x07, 0xe1, 0xd8, 0xe4, 0x97, 0xf2, 0x95, 0xb0, 0xcb, 0x30, + 0xb8, 0xb5, 0x5a, 0x5b, 0xa8, 0x88, 0x2b, 0xfe, 0x3c, 0x31, 0x4c, 0x2b, 0xac, 0x37, 0x1c, 0x9b, + 0x23, 0xac, 0x0f, 0x80, 0xdc, 0xa3, 0x91, 0x78, 0xff, 0x42, 0xf1, 0x5d, 0x83, 0x61, 0x01, 0x12, + 0x9c, 0xe8, 0xae, 0x17, 0xaf, 0x69, 0xd8, 0x12, 0x67, 0x6d, 0x4a, 0x1b, 0xa4, 0x45, 0x9d, 0x50, + 0x5b, 0xf4, 0xdf, 0x85, 0x91, 0x40, 0xc0, 0xc4, 0x9a, 0x3f, 0xa9, 0x9e, 0x37, 0x42, 0x30, 0x3f, + 0x46, 0x92, 0x34, 0xb6, 0xfa, 0xcb, 0x5a, 0xc5, 0x24, 0x4e, 0x1b, 0x2b, 0x8b, 0x0b, 0x4c, 0xab, + 0x42, 0x59, 0xb2, 0x3b, 0x6e, 0xe1, 0xad, 0x90, 0x88, 0xea, 0x17, 0xfc, 0x51, 0x35, 0x38, 0x81, + 0x88, 0xd4, 0x65, 0x1a, 0x89, 0xf5, 0xa6, 0x4a, 0x09, 0x95, 0x21, 0x2d, 0xef, 0x99, 0x9e, 0x75, + 0x4c, 0x76, 0x75, 0x0f, 0x03, 0xe0, 0x5e, 0x46, 0x25, 0x1c, 0x98, 0xe3, 0x5b, 0x08, 0xd6, 0x2a, + 0xf1, 0x48, 0xa9, 0xaf, 0xa6, 0xdd, 0x05, 0x18, 0x55, 0x30, 0x75, 0x9a, 0xcd, 0x75, 0x65, 0xd0, + 0xef, 0xbc, 0xc9, 0x73, 0x21, 0x34, 0x94, 0x80, 0x98, 0x8f, 0x15, 0xc1, 0xbf, 0xe9, 0x6f, 0xb9, + 0x88, 0x90, 0x06, 0xd1, 0xb7, 0x5a, 0x44, 0x9c, 0x0d, 0xed, 0x24, 0x45, 0x18, 0xf4, 0x3b, 0xf3, + 0xc7, 0x51, 0xd4, 0xb7, 0x5c, 0x04, 0x53, 0xd4, 0xb7, 0x57, 0x04, 0x95, 0x69, 0xe3, 0xf8, 0x20, + 0x4d, 0x15, 0xb2, 0x94, 0x2e, 0x44, 0x7a, 0xfb, 0x13, 0x1c, 0x5d, 0xfb, 0x83, 0xc2, 0x05, 0xae, + 0xac, 0x9f, 0x43, 0x31, 0x4c, 0x61, 0xdf, 0x6e, 0x31, 0xff, 0xb0, 0xc0, 0x93, 0xd8, 0xd5, 0x36, + 0xb4, 0xe7, 0x81, 0xbd, 0x47, 0xbe, 0x16, 0x6c, 0xa3, 0x7d, 0xed, 0xda, 0xe1, 0x27, 0x06, 0xdb, + 0x38, 0x9d, 0x68, 0x5f, 0x25, 0x79, 0xc7, 0x93, 0xd0, 0x24, 0x35, 0x79, 0x0f, 0x26, 0x34, 0x90, + 0xda, 0x09, 0xf2, 0x67, 0x78, 0x74, 0x76, 0xb7, 0x69, 0x9b, 0x94, 0xd6, 0x5f, 0x16, 0x60, 0x2a, + 0xe3, 0xe1, 0x7a, 0x74, 0x94, 0xa0, 0x85, 0xa5, 0x26, 0x2a, 0xf1, 0x70, 0x1e, 0xe6, 0xd3, 0x31, + 0xd6, 0x5f, 0x45, 0x88, 0x0f, 0x90, 0x68, 0x8f, 0xec, 0xf7, 0x69, 0xcf, 0x41, 0x66, 0x3f, 0xac, + 0xaf, 0x93, 0x93, 0x10, 0x20, 0xae, 0x89, 0x70, 0x49, 0xd7, 0xd8, 0x76, 0x59, 0x7b, 0xa1, 0x3f, + 0xe6, 0xfd, 0xd9, 0x61, 0xf9, 0x9d, 0x93, 0x84, 0x0a, 0xc7, 0xa2, 0x6d, 0xad, 0x18, 0xeb, 0xd7, + 0xfa, 0xe0, 0x6c, 0x46, 0xfb, 0x6b, 0x34, 0xfa, 0xab, 0x50, 0xc1, 0x13, 0x18, 0x8b, 0x2b, 0x13, + 0x96, 0xfa, 0xd1, 0x73, 0xb3, 0x85, 0xef, 0x65, 0xc4, 0x3a, 0x08, 0x5f, 0x8a, 0x12, 0xf4, 0x82, + 0xac, 0x3f, 0xea, 0x83, 0xb3, 0xdb, 0xed, 0x10, 0xef, 0x4c, 0xae, 0x78, 0x4f, 0xa8, 0x17, 0xf9, + 0xc1, 0x33, 0xbc, 0xe7, 0x45, 0xde, 0x86, 0xc1, 0x65, 0xda, 0x6a, 0xf9, 0x62, 0xfc, 0x5f, 0x94, + 0xf1, 0x4e, 0x49, 0x6a, 0x24, 0x5a, 0x3e, 0x65, 0x73, 0x6a, 0xf2, 0x1e, 0x8c, 0x2e, 0x53, 0x27, + 0x88, 0x76, 0xa9, 0x23, 0xcd, 0x21, 0xf9, 0x38, 0x90, 0xc6, 0x22, 0x08, 0x96, 0x4f, 0xd9, 0x31, + 0x35, 0x99, 0x87, 0x81, 0x4d, 0xdf, 0xdb, 0x53, 0xf9, 0x21, 0x72, 0x0a, 0x64, 0x34, 0xcb, 0xa7, + 0x6c, 0xa4, 0x25, 0x6b, 0x30, 0x51, 0xd9, 0xa3, 0x5e, 0x94, 0x38, 0xc2, 0xbf, 0x96, 0xc7, 0x6c, + 0x10, 0x2f, 0x9f, 0xb2, 0x4d, 0x6e, 0xf2, 0x01, 0x0c, 0xdf, 0xf3, 0xfd, 0xe6, 0xee, 0x33, 0x99, + 0xe5, 0xa4, 0x9c, 0x27, 0x48, 0x90, 0x2d, 0x9f, 0xb2, 0x25, 0x47, 0x75, 0x10, 0xfa, 0xd7, 0xc2, + 0x3d, 0xeb, 0xb0, 0x00, 0xa5, 0x45, 0xff, 0xa9, 0x97, 0xa9, 0xd5, 0xef, 0x99, 0x5a, 0x95, 0xe2, + 0x33, 0xe8, 0x13, 0x7a, 0x7d, 0x0b, 0x06, 0x36, 0x5d, 0x6f, 0x2f, 0xb1, 0x15, 0xcc, 0xe0, 0x63, + 0x54, 0xa8, 0x1e, 0xd7, 0xdb, 0x23, 0xab, 0x72, 0x7f, 0x2f, 0xfc, 0x98, 0xfd, 0x86, 0x51, 0x91, + 0xc1, 0xad, 0x53, 0xc7, 0xfb, 0x78, 0xfe, 0x5b, 0x36, 0xf0, 0x75, 0x98, 0xcd, 0x29, 0x57, 0x0b, + 0x49, 0x19, 0xc0, 0x8d, 0xcd, 0xdf, 0x2a, 0xc0, 0x4c, 0x66, 0x07, 0x26, 0x29, 0x99, 0x4d, 0xc7, + 0x07, 0xe6, 0x42, 0xcb, 0x6f, 0x3c, 0x3e, 0x46, 0xd8, 0xa4, 0x25, 0x1f, 0xd4, 0x17, 0x5f, 0x48, + 0x83, 0xf1, 0x25, 0x1e, 0x4d, 0xd4, 0x45, 0x5a, 0xff, 0x3c, 0x6b, 0xac, 0x73, 0xe5, 0x96, 0xe2, + 0x50, 0x11, 0xee, 0xba, 0x52, 0xd1, 0x21, 0x73, 0xda, 0x5c, 0x20, 0x33, 0x26, 0xc9, 0x4f, 0x7e, + 0x47, 0xcb, 0x50, 0xc7, 0xbf, 0xd8, 0xf7, 0x5f, 0xe0, 0xbb, 0x54, 0xb2, 0x58, 0x99, 0xcb, 0x7e, + 0x18, 0x79, 0x2a, 0x5c, 0xdf, 0x56, 0xbf, 0xc9, 0x0d, 0x28, 0xca, 0x47, 0x78, 0xc4, 0x6b, 0x5f, + 0x81, 0x88, 0x39, 0x49, 0xc1, 0xc9, 0xbb, 0x30, 0x9b, 0x84, 0xc9, 0x56, 0xf2, 0x6b, 0xb1, 0x79, + 0x68, 0xeb, 0x4f, 0xfa, 0xf0, 0x11, 0x81, 0x2e, 0x9f, 0x0e, 0xeb, 0xbf, 0x8d, 0x9a, 0x0c, 0x3e, + 0xda, 0xa8, 0x91, 0x0b, 0x30, 0xba, 0x51, 0x33, 0x5e, 0x37, 0xb4, 0x63, 0x00, 0xab, 0x36, 0x6b, + 0x42, 0x25, 0x68, 0xec, 0xbb, 0x11, 0x6d, 0x44, 0x9d, 0x40, 0x46, 0x23, 0xa5, 0xe0, 0xc4, 0x82, + 0xf1, 0x7b, 0x2d, 0x77, 0xb7, 0x21, 0x85, 0x71, 0x15, 0x18, 0x30, 0xf2, 0x2a, 0x4c, 0xae, 0x78, + 0x61, 0xe4, 0xb4, 0x5a, 0x6b, 0x34, 0xda, 0xf7, 0x9b, 0xe2, 0xed, 0x66, 0x3b, 0x01, 0x65, 0xe5, + 0x2e, 0xf8, 0x5e, 0xe4, 0xb8, 0x1e, 0x0d, 0xec, 0x8e, 0x17, 0xb9, 0x07, 0x54, 0xb4, 0x3d, 0x05, + 0x27, 0x6f, 0xc1, 0x8c, 0x82, 0x6d, 0x04, 0x8d, 0x7d, 0x1a, 0x46, 0x01, 0xbe, 0x79, 0x8a, 0x81, + 0x79, 0x76, 0x36, 0x12, 0x4b, 0x68, 0xf9, 0x9d, 0xe6, 0x92, 0xf7, 0xc4, 0x0d, 0x7c, 0x7e, 0xe2, + 0x3d, 0x22, 0x4a, 0x48, 0xc0, 0xad, 0xdf, 0x19, 0xc9, 0x9c, 0x19, 0x5e, 0x64, 0x0c, 0x7e, 0x01, + 0xe3, 0x0b, 0x4e, 0xdb, 0xd9, 0x75, 0x5b, 0x6e, 0xe4, 0xaa, 0xc7, 0x21, 0xdf, 0xee, 0x31, 0xad, + 0xc8, 0x67, 0x99, 0x68, 0x53, 0x67, 0xb6, 0x0d, 0x51, 0x73, 0x7f, 0x31, 0x04, 0x33, 0x99, 0x74, + 0xe4, 0xba, 0x78, 0x45, 0x52, 0x4d, 0xdd, 0xe2, 0x89, 0x42, 0x3b, 0x09, 0x66, 0x7d, 0x89, 0xa0, + 0x85, 0x16, 0x75, 0xbc, 0x8e, 0x78, 0xa0, 0xd0, 0x36, 0x60, 0xac, 0x2f, 0xd9, 0xd6, 0x44, 0x13, + 0x86, 0xb7, 0x2d, 0xec, 0x04, 0x14, 0x83, 0xd9, 0x3a, 0xd1, 0xbe, 0x14, 0x35, 0xc0, 0xef, 0x05, + 0x6b, 0x20, 0x26, 0x69, 0xdd, 0x6f, 0x52, 0x4d, 0xd2, 0x20, 0x97, 0x64, 0x42, 0x99, 0x24, 0x06, + 0x91, 0x92, 0x86, 0xb8, 0x24, 0x0d, 0x44, 0x5e, 0x81, 0x89, 0x4a, 0xbb, 0xad, 0x09, 0xc2, 0x97, + 0x09, 0x6d, 0x13, 0x48, 0x2e, 0x01, 0x54, 0xda, 0x6d, 0x29, 0x06, 0x5f, 0x1d, 0xb4, 0x35, 0x08, + 0xb9, 0x19, 0xe7, 0x81, 0xd4, 0x44, 0xe1, 0x69, 0x88, 0x9d, 0x81, 0x61, 0x7a, 0x55, 0x49, 0xf3, + 0x84, 0x50, 0xe0, 0x7a, 0x4d, 0x80, 0xc9, 0x87, 0x70, 0x2e, 0x11, 0x0f, 0xa3, 0x15, 0x80, 0x27, + 0x15, 0x76, 0x3e, 0x01, 0x79, 0x07, 0xce, 0x26, 0x90, 0xb2, 0x38, 0x3c, 0x94, 0xb0, 0x73, 0xb0, + 0xe4, 0x7d, 0x28, 0x25, 0x72, 0x3d, 0xc4, 0x85, 0xe2, 0x01, 0x84, 0x9d, 0x8b, 0x67, 0x5f, 0x57, + 0xe2, 0xd2, 0xa8, 0x28, 0x12, 0xcf, 0x5a, 0xed, 0x6c, 0x24, 0x59, 0x86, 0x72, 0x66, 0x8c, 0x91, + 0x56, 0x30, 0xbe, 0xa6, 0x68, 0xf7, 0x22, 0x23, 0x55, 0xb8, 0x90, 0x49, 0x22, 0xab, 0x81, 0x6f, + 0x2c, 0xda, 0x5d, 0x69, 0xc8, 0x3c, 0x4c, 0xc7, 0xb1, 0x56, 0x5a, 0x15, 0xf0, 0x79, 0x45, 0x3b, + 0x13, 0x47, 0xde, 0x30, 0x33, 0x7a, 0xf0, 0xc2, 0xf0, 0x75, 0x45, 0x3b, 0x8d, 0xb0, 0x8e, 0x0a, + 0x70, 0x21, 0x73, 0x2d, 0x96, 0x26, 0xc3, 0x5c, 0x72, 0x6f, 0xaa, 0xcd, 0x05, 0x37, 0x44, 0x00, + 0x25, 0x77, 0x75, 0xcb, 0x00, 0x75, 0xe4, 0xe7, 0xa2, 0x1e, 0xc4, 0xe1, 0x94, 0xf7, 0xd4, 0xd1, + 0x66, 0x3f, 0x3a, 0x4b, 0x6e, 0x25, 0xf7, 0x68, 0x19, 0x85, 0xeb, 0x47, 0x9c, 0xf2, 0x30, 0xf3, + 0x45, 0x4e, 0x91, 0xfe, 0xa4, 0x00, 0xe5, 0x1e, 0x5b, 0x10, 0xd5, 0xa6, 0xc2, 0x31, 0xda, 0x74, + 0x5f, 0xb5, 0x89, 0x5f, 0xa8, 0x9f, 0x3f, 0xde, 0x36, 0xe7, 0x65, 0x37, 0xeb, 0x2f, 0x0b, 0x40, + 0xd2, 0x5b, 0x5d, 0xf2, 0x5d, 0x18, 0xad, 0xd5, 0x96, 0x8d, 0x48, 0xcb, 0xd4, 0xe1, 0x56, 0x4c, + 0x41, 0x6e, 0x1f, 0x2b, 0xb4, 0x52, 0x0f, 0xac, 0xfc, 0x24, 0x15, 0xcf, 0xd9, 0xdf, 0x35, 0x9e, + 0x33, 0x15, 0xcd, 0xb9, 0x94, 0x11, 0xa0, 0x38, 0xd0, 0x23, 0x40, 0x31, 0x1d, 0x7d, 0x68, 0x2d, + 0x42, 0x29, 0x6f, 0xb7, 0x8c, 0x33, 0x1c, 0xcf, 0x9e, 0xa8, 0x1d, 0xd0, 0xf1, 0x19, 0xce, 0x04, + 0x5b, 0xef, 0xc0, 0x59, 0xc5, 0xcd, 0x9f, 0x65, 0xd2, 0xd2, 0x96, 0x08, 0x13, 0x5b, 0xa5, 0x47, + 0x89, 0x01, 0xd6, 0x1f, 0x0f, 0xa4, 0x18, 0x6b, 0x9d, 0x83, 0x03, 0x27, 0x78, 0x46, 0x2a, 0x26, + 0x63, 0x7f, 0x4f, 0xab, 0xa6, 0x3a, 0xc0, 0xf6, 0x98, 0x9a, 0x74, 0xb6, 0x2e, 0xe0, 0x0e, 0xc3, + 0x6b, 0x50, 0x7e, 0xb4, 0xd7, 0xc7, 0x53, 0xb3, 0x19, 0x40, 0xb2, 0x03, 0x13, 0x62, 0xed, 0xc6, + 0xdf, 0xf2, 0x1b, 0xbb, 0x9d, 0xfc, 0xc6, 0x8c, 0xea, 0xdd, 0x34, 0x58, 0xf8, 0x68, 0x34, 0xc5, + 0x90, 0x2f, 0x60, 0x52, 0xee, 0xd4, 0x84, 0x60, 0x1e, 0x8c, 0x75, 0xa7, 0xbb, 0x60, 0x93, 0x87, + 0x4b, 0x4e, 0x08, 0x62, 0x55, 0x96, 0x93, 0x1d, 0x97, 0x3c, 0x78, 0x9c, 0x2a, 0x1b, 0x2c, 0xa2, + 0xca, 0x06, 0x6c, 0xee, 0x53, 0x20, 0xe9, 0x76, 0xf5, 0xfa, 0x9c, 0x26, 0xb4, 0xcf, 0x69, 0xae, + 0x02, 0x53, 0x19, 0x0d, 0x38, 0x91, 0x88, 0x4f, 0x81, 0xa4, 0x6b, 0x7a, 0x12, 0x09, 0xd6, 0x75, + 0x78, 0x55, 0xa9, 0x40, 0x8d, 0x06, 0x43, 0xa6, 0x74, 0xb2, 0xff, 0x4a, 0x1f, 0x94, 0x7b, 0x90, + 0x92, 0x7f, 0x5c, 0x48, 0x6a, 0x9b, 0x8f, 0xc6, 0xf7, 0x92, 0xda, 0xce, 0xe6, 0xcf, 0x50, 0x7b, + 0xf5, 0xfd, 0x5f, 0xfd, 0xb3, 0xe7, 0xb6, 0x3c, 0xd2, 0x5d, 0x76, 0x72, 0x6d, 0x0d, 0xe8, 0xda, + 0xda, 0x81, 0x69, 0xc3, 0x2c, 0x3c, 0xce, 0xe2, 0x65, 0x01, 0x88, 0x17, 0xa2, 0x57, 0xfd, 0x3d, + 0xf1, 0x90, 0x75, 0x5f, 0xa9, 0x60, 0x6b, 0x50, 0xeb, 0x2e, 0xcc, 0x24, 0xe4, 0x0a, 0xe7, 0xff, + 0x77, 0x41, 0xa5, 0xa8, 0x40, 0xc1, 0xfd, 0xd5, 0x33, 0x3f, 0x3b, 0x2c, 0x4f, 0xb0, 0x6d, 0xfd, + 0xcd, 0xf8, 0x95, 0x10, 0xf9, 0x97, 0xb5, 0xa6, 0x1f, 0x5f, 0x54, 0x5a, 0x7a, 0xea, 0x2e, 0x72, + 0x07, 0x86, 0x38, 0x24, 0x91, 0x8b, 0x5f, 0xa7, 0x16, 0xf3, 0x82, 0x20, 0xb4, 0x66, 0xf0, 0x42, + 0x3d, 0xfe, 0xa8, 0xc4, 0x09, 0x60, 0xac, 0x6d, 0xfe, 0x36, 0x55, 0x0c, 0x56, 0xf9, 0xfe, 0x07, + 0x2a, 0x71, 0xa2, 0x1a, 0x19, 0xc7, 0x22, 0xe9, 0x3c, 0xff, 0x69, 0x8b, 0x36, 0xf9, 0xa3, 0xa2, + 0xd5, 0x71, 0x61, 0xe3, 0x0e, 0x38, 0x4c, 0x00, 0xb2, 0x59, 0x9f, 0xc0, 0x0c, 0xdb, 0x2d, 0x04, + 0xc9, 0xf2, 0xf0, 0x45, 0x1a, 0x06, 0x33, 0xef, 0xcd, 0x38, 0x0c, 0x84, 0xf7, 0x66, 0x04, 0xd2, + 0x5a, 0x85, 0x73, 0xdc, 0xf9, 0xa9, 0x37, 0x29, 0x3e, 0x6a, 0x18, 0xc4, 0xdf, 0x89, 0xeb, 0xd8, + 0x19, 0xad, 0xe7, 0x74, 0xd6, 0xc7, 0x78, 0xdf, 0x4f, 0x0c, 0x54, 0xd7, 0xf7, 0x62, 0x4f, 0xe7, + 0xf1, 0x12, 0x04, 0xfc, 0xff, 0x70, 0xa1, 0xd2, 0x6e, 0x53, 0xaf, 0x19, 0x33, 0x6e, 0x05, 0xce, + 0x31, 0xd3, 0xb7, 0x90, 0x0a, 0x0c, 0x22, 0xb5, 0x3a, 0x03, 0x16, 0xd5, 0xcd, 0xa8, 0x0e, 0xd2, + 0x89, 0xe4, 0xcc, 0x58, 0x00, 0xe7, 0xb4, 0x9a, 0x30, 0x5b, 0xeb, 0xec, 0x1e, 0xb8, 0x11, 0xde, + 0xb6, 0xc1, 0x14, 0x48, 0xb2, 0xec, 0x15, 0xf9, 0x9c, 0x20, 0x57, 0xc6, 0xf5, 0xf8, 0x5e, 0x18, + 0x5e, 0xd8, 0x11, 0x69, 0x91, 0x9e, 0xdc, 0xb9, 0x19, 0xb3, 0xa2, 0x97, 0x87, 0x97, 0x82, 0x68, + 0xf1, 0xe4, 0xa0, 0x35, 0x05, 0x67, 0xf4, 0x33, 0x2f, 0x3e, 0x42, 0x66, 0x60, 0xca, 0x3c, 0xcb, + 0xe2, 0xe0, 0xaf, 0x61, 0x9a, 0xfb, 0xda, 0xf9, 0xe3, 0x0a, 0xf3, 0xf1, 0x3b, 0x02, 0x7d, 0x3b, + 0xf3, 0x89, 0x4b, 0x1a, 0x18, 0xbb, 0xad, 0x9e, 0xcd, 0xd9, 0x99, 0xe7, 0x77, 0xb6, 0x9f, 0xcc, + 0x1b, 0xa7, 0xb1, 0x7d, 0x3b, 0xf3, 0xd5, 0x61, 0x91, 0xa4, 0x9a, 0x49, 0xe7, 0xdd, 0xff, 0xad, + 0x48, 0x9f, 0xc7, 0x34, 0x21, 0xcb, 0xd4, 0xc1, 0x2b, 0x7d, 0xd9, 0xc9, 0x16, 0x26, 0xa1, 0x4f, + 0x65, 0xa1, 0xed, 0x73, 0x9b, 0xd6, 0xef, 0x17, 0xe0, 0x3a, 0xdf, 0x90, 0x65, 0xf3, 0xe1, 0xc1, + 0x56, 0x0e, 0x33, 0x79, 0x17, 0x06, 0x43, 0x2d, 0xc0, 0xc3, 0x12, 0x35, 0xef, 0x26, 0x89, 0x33, + 0x90, 0x0a, 0x8c, 0xeb, 0x37, 0xd7, 0x8e, 0x97, 0xe0, 0xd2, 0x1e, 0x3b, 0x78, 0xe4, 0xa8, 0xdb, + 0x6c, 0x8f, 0xe1, 0xfc, 0xd2, 0x37, 0x6c, 0x40, 0x88, 0x15, 0x4a, 0x58, 0x0f, 0xf1, 0x65, 0xfe, + 0xd3, 0x5b, 0x62, 0xc4, 0x98, 0xa6, 0x7d, 0x12, 0xcc, 0xec, 0x64, 0xb9, 0xc8, 0xc5, 0x57, 0x9c, + 0x6c, 0x03, 0x66, 0xfd, 0x71, 0x01, 0x2e, 0x64, 0x97, 0x26, 0x26, 0x96, 0x15, 0x38, 0xb3, 0xe0, + 0x78, 0xbe, 0xe7, 0x36, 0x9c, 0x56, 0xad, 0xb1, 0x4f, 0x9b, 0x1d, 0x95, 0xca, 0x5a, 0xcd, 0x32, + 0x7b, 0xd4, 0x93, 0xec, 0x92, 0xc4, 0x4e, 0x73, 0x31, 0x0b, 0x11, 0xaf, 0xae, 0xf0, 0xb9, 0xb7, + 0x45, 0x03, 0x25, 0x8f, 0xd7, 0x2c, 0x07, 0x4b, 0x6e, 0xcb, 0x43, 0x85, 0xe6, 0xb6, 0xe7, 0x46, + 0x8a, 0x89, 0xbb, 0x7a, 0xb2, 0x50, 0xd6, 0x7f, 0x28, 0xc0, 0x39, 0x7c, 0xbd, 0xce, 0x78, 0x0f, + 0x37, 0xce, 0xe8, 0x2e, 0x93, 0x92, 0x17, 0x8c, 0xab, 0x38, 0x06, 0xb5, 0x99, 0x9d, 0x9c, 0xbc, + 0x01, 0x03, 0x35, 0x19, 0x70, 0x36, 0x99, 0x78, 0xc9, 0x5c, 0x70, 0x30, 0xbc, 0x8d, 0x54, 0xcc, + 0x86, 0x5f, 0xa4, 0x61, 0x83, 0x7a, 0xf8, 0xe4, 0x3c, 0xf7, 0x3c, 0x68, 0x90, 0x38, 0xd9, 0xda, + 0x40, 0x5e, 0xb2, 0xb5, 0x41, 0x33, 0xd9, 0x9a, 0xf5, 0x84, 0xbf, 0x5d, 0x97, 0x6c, 0x90, 0xe8, + 0xa4, 0x8f, 0x53, 0x2f, 0xd4, 0xf3, 0x75, 0xe0, 0x6c, 0x56, 0xcb, 0xd8, 0x26, 0x3d, 0xf1, 0xf8, + 0x7c, 0x7e, 0x06, 0xf5, 0x4d, 0x78, 0xc5, 0xa0, 0xad, 0xb4, 0x5a, 0xfe, 0x53, 0xda, 0xdc, 0x0c, + 0xfc, 0x03, 0x3f, 0x32, 0xde, 0xee, 0x3a, 0xed, 0xe8, 0x74, 0x6a, 0x31, 0x4e, 0x82, 0xad, 0xff, + 0x0f, 0xae, 0xf5, 0x90, 0x28, 0x1a, 0x55, 0x83, 0x33, 0x4e, 0x02, 0x27, 0x23, 0x87, 0xae, 0x65, + 0xb5, 0x2b, 0x29, 0x28, 0xb4, 0xd3, 0xfc, 0x37, 0xb6, 0x8c, 0x57, 0xdd, 0x49, 0x09, 0xa6, 0x37, + 0xed, 0x8d, 0xc5, 0xed, 0x85, 0xad, 0xfa, 0xd6, 0x17, 0x9b, 0x4b, 0xf5, 0xed, 0xf5, 0x07, 0xeb, + 0x1b, 0x0f, 0xd7, 0xf9, 0x13, 0x04, 0x06, 0x66, 0x6b, 0xa9, 0xb2, 0x56, 0x2c, 0x90, 0x69, 0x28, + 0x1a, 0xe0, 0xa5, 0xed, 0x6a, 0xb1, 0xef, 0xc6, 0xd7, 0xc6, 0x6b, 0xe5, 0xe4, 0x02, 0x94, 0x6a, + 0xdb, 0x9b, 0x9b, 0x1b, 0xb6, 0x92, 0xaa, 0x3f, 0x80, 0x30, 0x03, 0x67, 0x0c, 0xec, 0x5d, 0x7b, + 0x69, 0xa9, 0x58, 0x60, 0x55, 0x31, 0xc0, 0x9b, 0xf6, 0xd2, 0xda, 0xca, 0xf6, 0x5a, 0xb1, 0xef, + 0x46, 0x5d, 0xbf, 0x41, 0x4a, 0xce, 0xc3, 0xec, 0xe2, 0xd2, 0xce, 0xca, 0xc2, 0x52, 0x96, 0xec, + 0x69, 0x28, 0xea, 0xc8, 0xad, 0x8d, 0xad, 0x4d, 0x2e, 0x5a, 0x87, 0x3e, 0x5c, 0xaa, 0x56, 0xb6, + 0xb7, 0x96, 0xd7, 0x8b, 0xfd, 0xd6, 0xc0, 0x48, 0x5f, 0xb1, 0xef, 0xc6, 0x0f, 0x8c, 0xeb, 0xa5, + 0xac, 0xfa, 0x82, 0x7c, 0xbb, 0x56, 0xb9, 0x97, 0x5f, 0x04, 0xc7, 0xae, 0xdd, 0xad, 0x14, 0x0b, + 0xe4, 0x22, 0x9c, 0x33, 0xa0, 0x9b, 0x95, 0x5a, 0xed, 0xe1, 0x86, 0xbd, 0xb8, 0xba, 0x54, 0xab, + 0x15, 0xfb, 0x6e, 0xec, 0x18, 0x09, 0x26, 0x59, 0x09, 0x6b, 0x77, 0x2b, 0x75, 0x7b, 0xe9, 0xb3, + 0xed, 0x15, 0x7b, 0x69, 0x31, 0x5d, 0x82, 0x81, 0xfd, 0x62, 0xa9, 0x56, 0x2c, 0x90, 0x29, 0x38, + 0x6d, 0x40, 0xd7, 0x37, 0x8a, 0x7d, 0x37, 0x5e, 0x15, 0x39, 0x08, 0xc9, 0x24, 0xc0, 0xe2, 0x52, + 0x6d, 0x61, 0x69, 0x7d, 0x71, 0x65, 0xfd, 0x5e, 0xf1, 0x14, 0x99, 0x80, 0xd1, 0x8a, 0xfa, 0x59, + 0xb8, 0xf1, 0x3e, 0x9c, 0x4e, 0x98, 0xf7, 0x8c, 0x42, 0x19, 0xc6, 0xc5, 0x53, 0xa8, 0x7e, 0xf9, + 0x13, 0x7d, 0xac, 0xdc, 0x52, 0x2f, 0x16, 0x6e, 0x54, 0xe5, 0x03, 0xd7, 0xda, 0x77, 0x4e, 0xc6, + 0x60, 0x78, 0x71, 0xe9, 0x6e, 0x65, 0x7b, 0x75, 0xab, 0x78, 0x8a, 0xfd, 0x58, 0xb0, 0x97, 0x2a, + 0x5b, 0x4b, 0x8b, 0xc5, 0x02, 0x19, 0x85, 0xc1, 0xda, 0x56, 0x65, 0x6b, 0xa9, 0xd8, 0x47, 0x46, + 0x60, 0x60, 0xbb, 0xb6, 0x64, 0x17, 0xfb, 0xe7, 0xff, 0xcd, 0x3f, 0x2a, 0x70, 0x47, 0xa3, 0xbc, + 0x68, 0xf6, 0xb5, 0x66, 0x50, 0x8a, 0x29, 0x4f, 0xbc, 0xe6, 0x9b, 0x6b, 0x3d, 0xe2, 0x2e, 0x60, + 0xae, 0xcb, 0xe1, 0x0e, 0x12, 0x5c, 0x2f, 0xdc, 0x2e, 0x10, 0x1b, 0x83, 0x61, 0x12, 0xf6, 0x95, + 0x92, 0x9c, 0x6d, 0x02, 0xcf, 0x5d, 0xec, 0x6a, 0x96, 0x91, 0x5f, 0x02, 0x4b, 0x97, 0x99, 0x63, + 0x85, 0x7c, 0xf7, 0x78, 0xd6, 0x86, 0x2c, 0xf3, 0xd5, 0xe3, 0x91, 0x93, 0xfb, 0x30, 0xc1, 0xf6, + 0xe6, 0x8a, 0x8c, 0x9c, 0x4f, 0x32, 0x6a, 0x26, 0xc1, 0xdc, 0x85, 0x6c, 0xa4, 0x7a, 0x70, 0x6b, + 0x1c, 0x1b, 0xc2, 0x8d, 0xeb, 0x90, 0xc8, 0x3c, 0x35, 0x12, 0xc2, 0x67, 0xfc, 0xb9, 0x33, 0x09, + 0xf0, 0xce, 0x9d, 0xdb, 0x05, 0x52, 0xc3, 0x24, 0x91, 0xc6, 0x26, 0x9f, 0xc8, 0x9b, 0x8f, 0xe9, + 0xdd, 0x3f, 0xaf, 0x4d, 0x59, 0x3d, 0x8f, 0x9b, 0x63, 0x1d, 0xac, 0x03, 0x49, 0xef, 0x9d, 0xc9, + 0xe5, 0x78, 0x1c, 0x64, 0x6f, 0xab, 0xe7, 0xce, 0xa6, 0x0e, 0xb2, 0x96, 0xd8, 0xee, 0x89, 0x2c, + 0xc1, 0xa4, 0x48, 0x42, 0x21, 0x76, 0xf3, 0xa4, 0x9b, 0x3d, 0x90, 0x2b, 0xe6, 0x1e, 0xea, 0x49, + 0x59, 0x04, 0x64, 0x2e, 0x6e, 0x47, 0xd2, 0x4c, 0x98, 0x3b, 0x9f, 0x89, 0x13, 0xed, 0xbb, 0x0b, + 0x93, 0xa6, 0x71, 0x41, 0x64, 0x07, 0x65, 0xda, 0x1c, 0xb9, 0x15, 0xaa, 0xc3, 0xec, 0x9a, 0xe3, + 0xe2, 0x79, 0x89, 0x08, 0xd2, 0x93, 0x71, 0x70, 0xa4, 0xdc, 0x25, 0x30, 0xae, 0x46, 0xbd, 0xa6, + 0xea, 0x84, 0xbc, 0xc7, 0x33, 0xf0, 0xb3, 0xa9, 0xc9, 0x3d, 0xb2, 0x19, 0xa3, 0x48, 0x2c, 0xf3, + 0xc9, 0xf3, 0xac, 0xb0, 0xd3, 0xb9, 0xbc, 0x48, 0x69, 0xb2, 0x86, 0x9b, 0xf4, 0x84, 0x44, 0x6d, + 0x4c, 0x9c, 0x58, 0x5c, 0x09, 0x53, 0xa1, 0x44, 0x6e, 0x32, 0xe4, 0x39, 0x24, 0x39, 0x8a, 0xcb, + 0x15, 0x76, 0xbb, 0x40, 0xbe, 0xc6, 0xaf, 0x3a, 0x53, 0xdc, 0x43, 0x37, 0xda, 0x17, 0xbb, 0x9f, + 0xf3, 0x99, 0x02, 0xc4, 0x87, 0xd2, 0x45, 0xba, 0x0d, 0xd3, 0x59, 0xc1, 0xd9, 0x4a, 0xa1, 0x5d, + 0x22, 0xb7, 0x73, 0x47, 0x81, 0xcd, 0x4c, 0x8d, 0x66, 0x7e, 0x27, 0x75, 0x89, 0x0d, 0xce, 0x95, + 0xf9, 0x21, 0x4c, 0xb2, 0x51, 0xf2, 0x80, 0xd2, 0x76, 0xa5, 0xe5, 0x3e, 0xa1, 0x21, 0x91, 0x19, + 0xbe, 0x15, 0x28, 0x8f, 0xf7, 0x7a, 0x81, 0x7c, 0x07, 0xc6, 0x1e, 0x3a, 0x51, 0x63, 0x5f, 0x64, + 0xba, 0x95, 0x89, 0x70, 0x11, 0x36, 0x27, 0x7f, 0x21, 0xf2, 0x76, 0x81, 0x7c, 0x04, 0xc3, 0xf7, + 0x68, 0x84, 0x37, 0xcf, 0xaf, 0xa8, 0x58, 0x42, 0xee, 0x9f, 0x5c, 0xf1, 0xd4, 0x2d, 0x24, 0x59, + 0xe1, 0xa4, 0x33, 0x97, 0xdc, 0x02, 0xe0, 0x13, 0x02, 0x4a, 0x48, 0xa2, 0xe7, 0x52, 0xd5, 0x26, + 0xf7, 0xd8, 0xe6, 0xa1, 0x45, 0x23, 0x7a, 0xdc, 0x22, 0xf3, 0x74, 0xb4, 0x0a, 0x93, 0xea, 0x8d, + 0xb2, 0x75, 0x4c, 0x48, 0x64, 0x25, 0x84, 0x85, 0x27, 0x90, 0xf6, 0x3e, 0xfb, 0x2a, 0xf8, 0x03, + 0xdd, 0x98, 0xb9, 0x06, 0x67, 0xd2, 0x59, 0x3d, 0xfd, 0x8d, 0x3e, 0x85, 0x4a, 0x25, 0x72, 0x32, + 0x8d, 0x77, 0xd9, 0x0f, 0x23, 0x93, 0x57, 0x41, 0xb2, 0x79, 0x7f, 0x11, 0xe6, 0xf4, 0x72, 0xcd, + 0x54, 0xeb, 0xf1, 0x9c, 0x9b, 0x97, 0xc1, 0x7d, 0xee, 0x4a, 0x17, 0x0a, 0x61, 0xbf, 0xf5, 0xff, + 0x7a, 0x5f, 0x01, 0xa7, 0x93, 0x45, 0x98, 0x92, 0x65, 0x6d, 0xb4, 0xa9, 0x57, 0xab, 0x2d, 0xe3, + 0x7b, 0x54, 0x32, 0x72, 0x45, 0x83, 0x49, 0xe9, 0x24, 0x8d, 0x62, 0x4b, 0x9f, 0x91, 0xa1, 0x86, + 0x74, 0xcb, 0x5b, 0x13, 0x2f, 0x7d, 0x99, 0x39, 0xc0, 0x1f, 0x70, 0xa7, 0x92, 0xb1, 0xf9, 0xdf, + 0x99, 0x27, 0x5d, 0x0c, 0xa0, 0xb9, 0x1c, 0x13, 0xe2, 0x76, 0x81, 0x7c, 0x01, 0x24, 0x6d, 0x92, + 0x28, 0x15, 0xe6, 0x9a, 0x5f, 0x4a, 0x85, 0x5d, 0xec, 0x99, 0x7b, 0x30, 0xa3, 0xf2, 0x53, 0x69, + 0xa5, 0xce, 0x93, 0x9c, 0xda, 0xe4, 0xd5, 0x92, 0x7c, 0x02, 0x53, 0x62, 0xd0, 0xea, 0x08, 0x52, + 0x54, 0xf3, 0x8f, 0xb0, 0x4a, 0x72, 0xc7, 0xe9, 0x7d, 0x98, 0xa9, 0x25, 0x34, 0xc6, 0x83, 0xf9, + 0xcf, 0x99, 0x22, 0x10, 0x58, 0xa3, 0x11, 0x57, 0x59, 0xb6, 0xac, 0x07, 0x40, 0xb8, 0x53, 0x48, + 0x8a, 0x7b, 0xe2, 0xd2, 0xa7, 0xe4, 0x62, 0xa2, 0xea, 0x0c, 0x88, 0x64, 0x38, 0x81, 0xe5, 0xb6, + 0x6c, 0x8b, 0x3f, 0x2f, 0x8f, 0x50, 0xe3, 0x1c, 0xfd, 0xb2, 0xc1, 0x60, 0x1c, 0xc5, 0x8b, 0x0e, + 0x38, 0x97, 0x4b, 0x41, 0x7e, 0x19, 0x13, 0x43, 0x77, 0x37, 0xab, 0xc8, 0x77, 0xb2, 0xac, 0xdf, + 0x1c, 0xc3, 0x70, 0xee, 0x8d, 0xe3, 0x11, 0x2b, 0x43, 0x76, 0xe2, 0x1e, 0x8d, 0x36, 0x5b, 0x9d, + 0x3d, 0x17, 0x1f, 0x1e, 0x26, 0xca, 0x69, 0xa4, 0x40, 0x62, 0x5c, 0xca, 0x7c, 0x8c, 0x31, 0xa2, + 0x46, 0x7f, 0x48, 0x56, 0xa0, 0xc8, 0xe7, 0x7f, 0x4d, 0xc4, 0xc5, 0x94, 0x08, 0x41, 0xe2, 0x04, + 0xce, 0x41, 0x98, 0xdb, 0x5b, 0xb7, 0x78, 0x6c, 0x14, 0x91, 0xdf, 0xa4, 0xbe, 0xc1, 0x9c, 0x32, + 0x60, 0xea, 0xb1, 0x0c, 0xd6, 0x23, 0x36, 0x0d, 0x69, 0x24, 0x33, 0x50, 0xf1, 0x67, 0xa7, 0xaf, + 0xc6, 0x8b, 0x7d, 0x1a, 0x1b, 0x7f, 0xfa, 0x89, 0x6c, 0x89, 0x3b, 0x6f, 0x12, 0xf5, 0x14, 0x77, + 0x86, 0xd0, 0x57, 0x8d, 0x3d, 0xc9, 0xc9, 0xe4, 0xbe, 0x85, 0x6b, 0x10, 0x66, 0xdd, 0x9a, 0x89, + 0xeb, 0xc6, 0x7e, 0x4b, 0xae, 0x09, 0x8d, 0x6b, 0x67, 0x1e, 0xa7, 0x34, 0xb6, 0x48, 0xb2, 0x2d, + 0x6c, 0x27, 0x08, 0xa8, 0xc7, 0x99, 0xf3, 0xf6, 0x1b, 0x59, 0xdc, 0x1f, 0xe3, 0xd4, 0xa3, 0x71, + 0xf3, 0x3b, 0x87, 0xbd, 0x44, 0xf0, 0x67, 0xd2, 0x6e, 0x17, 0xc8, 0xbb, 0x30, 0x22, 0xea, 0xc8, + 0x98, 0x8c, 0x4a, 0x87, 0x5d, 0x6a, 0x8d, 0x9c, 0xc0, 0x95, 0x84, 0x75, 0x36, 0x69, 0xf2, 0x7a, + 0x9f, 0xd7, 0xf9, 0x5d, 0xb6, 0xd8, 0x36, 0x9f, 0x87, 0x73, 0x41, 0xae, 0xba, 0xc8, 0x59, 0x52, + 0x99, 0x9a, 0x24, 0xa8, 0xc7, 0xf2, 0xc8, 0x85, 0xb0, 0x7d, 0x33, 0xa6, 0x3b, 0x55, 0x59, 0x0b, + 0xd5, 0xbe, 0xd9, 0x00, 0xf7, 0x5a, 0x6b, 0x57, 0xa0, 0x58, 0x69, 0xe0, 0x4a, 0x50, 0xa3, 0x07, + 0x4e, 0x7b, 0xdf, 0x0f, 0xa8, 0x32, 0x5a, 0x92, 0x08, 0x29, 0x6b, 0x46, 0xed, 0x2c, 0x04, 0x62, + 0x95, 0x3a, 0x98, 0x13, 0x7e, 0x56, 0x6d, 0x2d, 0x12, 0xa8, 0x6c, 0x8e, 0x2e, 0x46, 0xca, 0xf4, + 0x02, 0x33, 0xab, 0x5a, 0x2f, 0x26, 0xe6, 0x7d, 0x9c, 0x30, 0x14, 0x71, 0xa8, 0x56, 0x08, 0x05, + 0x52, 0xe6, 0x9c, 0xbc, 0x7e, 0xa4, 0x48, 0x2b, 0xf2, 0xdc, 0x38, 0x56, 0x4b, 0x1e, 0x77, 0x5e, + 0xf1, 0xdf, 0x83, 0xc9, 0x25, 0x36, 0xa1, 0x77, 0x9a, 0x2e, 0x7f, 0x07, 0x83, 0x98, 0x0f, 0x1b, + 0xe4, 0x32, 0x2e, 0xcb, 0x97, 0x09, 0x91, 0x55, 0x98, 0xfe, 0x72, 0x4d, 0xd1, 0x60, 0xb2, 0x3f, + 0xa6, 0xa5, 0x58, 0xf1, 0x14, 0x09, 0x9a, 0xe6, 0xc2, 0xd6, 0x9f, 0xe5, 0x3b, 0xc2, 0x4a, 0xbb, + 0xdd, 0x92, 0x2e, 0x69, 0x7e, 0xf6, 0x7e, 0xcd, 0x30, 0x21, 0x53, 0x78, 0x29, 0x3b, 0xbd, 0x69, + 0xfc, 0x5c, 0x7b, 0x29, 0x3c, 0x47, 0x66, 0x0e, 0xbe, 0xd7, 0x58, 0x54, 0x99, 0xeb, 0x2b, 0xad, + 0x56, 0x8a, 0x39, 0x24, 0xaf, 0x9b, 0xd2, 0xb3, 0x68, 0x7a, 0x95, 0x80, 0x26, 0x3a, 0xdf, 0x75, + 0x55, 0xda, 0x6d, 0x3e, 0x59, 0x5e, 0x52, 0x13, 0x86, 0x89, 0x48, 0x9b, 0xe8, 0x49, 0xbc, 0x98, + 0xdb, 0xef, 0xe3, 0x30, 0x8b, 0x9f, 0x13, 0x27, 0xba, 0xc1, 0x9b, 0x7c, 0x4d, 0x5d, 0x6d, 0xc2, + 0x12, 0x48, 0xb5, 0x4e, 0x9c, 0xc6, 0xad, 0x4f, 0xfc, 0x36, 0xb9, 0xf2, 0xcc, 0x24, 0xe0, 0x52, + 0xde, 0xa5, 0x3c, 0xb4, 0xf2, 0x94, 0x16, 0xc5, 0x60, 0x8a, 0x2b, 0x78, 0xc9, 0x58, 0x1f, 0xd2, + 0x75, 0x2c, 0xe7, 0xe2, 0x55, 0x93, 0x8b, 0xc9, 0xd7, 0xe2, 0x95, 0xd0, 0x9c, 0x67, 0xe4, 0x73, + 0xfb, 0xe4, 0x2e, 0x4c, 0xeb, 0x3d, 0xaa, 0xda, 0x9d, 0x37, 0xfb, 0xe7, 0xc9, 0xd9, 0x82, 0x99, + 0xcc, 0xc7, 0xdd, 0xd5, 0x12, 0xdb, 0xed, 0xe9, 0xf7, 0x5c, 0xa9, 0x14, 0xce, 0x0a, 0xcb, 0x3e, + 0xf1, 0x9c, 0x3d, 0x79, 0xc5, 0x34, 0xfc, 0xb3, 0x5f, 0xbb, 0x9f, 0xbb, 0xd6, 0x83, 0x4a, 0x28, + 0xf4, 0x6b, 0x5c, 0x01, 0x53, 0x65, 0x5c, 0xd1, 0x5c, 0x01, 0x39, 0x05, 0x58, 0xdd, 0x48, 0xd4, + 0x18, 0x98, 0xce, 0x40, 0xe7, 0xab, 0xf8, 0x6a, 0xbe, 0xcc, 0x78, 0x60, 0xed, 0xc8, 0x04, 0xed, + 0xb9, 0x9a, 0xc9, 0x46, 0xf7, 0xb6, 0x25, 0xe7, 0xd4, 0x78, 0x38, 0x7e, 0x95, 0xf3, 0xa4, 0x35, + 0x95, 0xdb, 0xc6, 0x78, 0xa4, 0x3f, 0xe9, 0xb6, 0x31, 0x90, 0xb2, 0x86, 0x57, 0xbb, 0xd2, 0x68, + 0x16, 0x1d, 0xf9, 0x8a, 0xfb, 0x71, 0xcc, 0x22, 0x74, 0x3f, 0x4e, 0xa6, 0xfc, 0xcb, 0xf9, 0x04, + 0xba, 0x70, 0x87, 0x1f, 0xda, 0x9a, 0x24, 0x21, 0xd1, 0x4d, 0xa5, 0x04, 0x2e, 0x39, 0x36, 0x32, + 0x49, 0xf4, 0x22, 0x1e, 0xca, 0x6f, 0x30, 0x47, 0x4b, 0x59, 0xc8, 0x63, 0x6d, 0x53, 0x36, 0xa0, + 0x14, 0x77, 0x66, 0xa2, 0x01, 0x27, 0xec, 0x4a, 0xa9, 0x8c, 0x73, 0xf1, 0x77, 0x9c, 0x94, 0xf8, + 0x5a, 0xea, 0x4b, 0xcf, 0x51, 0x4c, 0xd7, 0x22, 0xf8, 0x7c, 0xae, 0x25, 0x7c, 0x3f, 0x1f, 0x3b, + 0x71, 0x63, 0x68, 0xc6, 0x7c, 0xae, 0x23, 0x95, 0xb1, 0x3a, 0x69, 0x20, 0xf2, 0x5b, 0x7d, 0x31, + 0x4b, 0x4e, 0x98, 0x9e, 0x71, 0xb5, 0x7a, 0xc9, 0x7d, 0x5a, 0x12, 0x71, 0x92, 0x19, 0xf7, 0x38, + 0x55, 0xcb, 0x93, 0xb3, 0x08, 0x63, 0xbc, 0xb6, 0x7c, 0x21, 0x3d, 0x67, 0xa8, 0xc9, 0x58, 0x43, + 0xe7, 0x8c, 0xc6, 0x99, 0xcb, 0xe7, 0x02, 0xba, 0x92, 0x25, 0x38, 0xbf, 0x16, 0xe7, 0xd3, 0x32, + 0x0c, 0x37, 0xb2, 0xd2, 0x02, 0xaf, 0xcd, 0x85, 0xa4, 0x72, 0x8c, 0x0a, 0xe5, 0x37, 0x89, 0xe8, + 0xaa, 0xe9, 0x51, 0xa5, 0xfc, 0xfd, 0xeb, 0x94, 0x78, 0x22, 0x1a, 0x5f, 0x69, 0x92, 0xf9, 0x18, + 0xcf, 0x2a, 0x9f, 0x98, 0x06, 0x45, 0x07, 0x45, 0xb6, 0x98, 0x4d, 0xbc, 0x3e, 0x42, 0x83, 0x28, + 0x95, 0x6f, 0xf1, 0x15, 0x63, 0xf3, 0x96, 0x44, 0xe7, 0xef, 0xdd, 0xd4, 0x9c, 0x9d, 0x2b, 0x31, + 0x1b, 0xdd, 0x4b, 0x6d, 0xdf, 0xd7, 0xe6, 0xec, 0x24, 0x6f, 0x48, 0xae, 0x27, 0x37, 0x6e, 0x29, + 0x92, 0xde, 0x6b, 0x82, 0x08, 0x21, 0x49, 0x04, 0x90, 0x5a, 0x86, 0x1e, 0x4c, 0x64, 0xbe, 0x16, + 0x6c, 0x39, 0xfe, 0x73, 0xa4, 0x65, 0x21, 0x7b, 0xd5, 0xf0, 0x4b, 0x6d, 0xa2, 0x33, 0x39, 0x43, + 0x65, 0x8e, 0xe7, 0x11, 0xf4, 0x92, 0xbd, 0x8e, 0x57, 0x9a, 0x12, 0x0d, 0x74, 0x1b, 0x54, 0xed, + 0x6c, 0x32, 0xb1, 0xf9, 0xed, 0xbf, 0x27, 0x77, 0x4a, 0x49, 0x79, 0x67, 0x13, 0x4e, 0xdb, 0x5e, + 0x15, 0xfb, 0x5a, 0x4e, 0xc6, 0x89, 0x36, 0xe1, 0xa5, 0xa2, 0xd7, 0xba, 0xb5, 0x5a, 0x7b, 0x8c, + 0xb3, 0x8b, 0x19, 0x74, 0xba, 0xe6, 0xee, 0x79, 0xea, 0x26, 0x42, 0xcd, 0x56, 0x46, 0x90, 0x06, + 0x4b, 0x4e, 0x31, 0x06, 0x4a, 0xe5, 0xe7, 0x99, 0x96, 0xbb, 0x77, 0x85, 0xa6, 0x41, 0x44, 0x52, + 0x3c, 0x9a, 0xbb, 0xf5, 0x7c, 0x26, 0x2e, 0x2d, 0x50, 0x7f, 0xa0, 0x5f, 0x09, 0x34, 0x5f, 0xed, + 0x37, 0x05, 0x66, 0xbe, 0xe8, 0x7f, 0x0b, 0xbd, 0x2e, 0xb6, 0xdf, 0xa2, 0xba, 0xd7, 0x45, 0x7b, + 0xf1, 0x3d, 0xe1, 0xf4, 0x20, 0x1f, 0xc3, 0xa8, 0x7a, 0x11, 0x5f, 0xf9, 0xb7, 0x93, 0x8f, 0xf2, + 0xcf, 0x95, 0xd2, 0x08, 0x51, 0xe0, 0xdb, 0xd2, 0xf1, 0x81, 0x65, 0x96, 0x4c, 0x87, 0x51, 0x7e, + 0xb1, 0x6f, 0x4b, 0xaf, 0x87, 0xc1, 0x96, 0x7a, 0x0f, 0x3f, 0xc9, 0xf6, 0x3d, 0x18, 0x8f, 0xdf, + 0xbe, 0xdf, 0x99, 0xd7, 0x18, 0x13, 0x0f, 0xe2, 0x27, 0x19, 0xdf, 0x95, 0x47, 0x1a, 0x58, 0x9e, + 0x89, 0xec, 0xbe, 0x8a, 0x7f, 0x2c, 0xbd, 0x2c, 0x46, 0x4d, 0x53, 0x2f, 0xe9, 0x77, 0x99, 0x7c, + 0xc7, 0xf5, 0xc7, 0x68, 0x55, 0xd7, 0x66, 0x3c, 0x27, 0xad, 0xba, 0x36, 0xeb, 0x39, 0xe8, 0xd8, + 0xe5, 0xff, 0x85, 0x74, 0x29, 0xc4, 0x42, 0x2f, 0x1a, 0xd5, 0x4a, 0xc9, 0xbd, 0x94, 0x87, 0x4e, + 0x8a, 0xae, 0x41, 0x31, 0xf9, 0x72, 0xae, 0xb2, 0xc7, 0x72, 0x9e, 0x38, 0x56, 0x46, 0x5e, 0xee, + 0x93, 0xbb, 0x9b, 0xd2, 0x3f, 0x6e, 0xca, 0xbd, 0x92, 0x5d, 0x29, 0x5d, 0x74, 0xbe, 0xc3, 0x7c, + 0xc2, 0x78, 0x44, 0x57, 0xb7, 0x94, 0x53, 0x8f, 0xf4, 0xea, 0x3b, 0xab, 0x8c, 0x77, 0x77, 0x5d, + 0x99, 0xb4, 0x2a, 0xf3, 0xc8, 0x56, 0x39, 0x0b, 0x7a, 0xbf, 0xb8, 0xd0, 0xf3, 0xf8, 0x97, 0xfc, + 0x02, 0xcc, 0xe6, 0x64, 0x90, 0x27, 0xd7, 0x12, 0x9e, 0xd6, 0xec, 0x0c, 0xf3, 0x6a, 0x80, 0x64, + 0xbe, 0x6e, 0xbf, 0x86, 0x71, 0x03, 0x46, 0x0a, 0x89, 0xd4, 0x59, 0xdc, 0x43, 0x37, 0xda, 0xe7, + 0x8f, 0xb8, 0x6b, 0xd3, 0x66, 0x66, 0xee, 0x09, 0x52, 0x43, 0x5b, 0xc4, 0x80, 0x66, 0x1c, 0xc7, + 0x65, 0x08, 0x9c, 0xcb, 0x16, 0xc8, 0xe6, 0x0e, 0x36, 0x16, 0x32, 0xf2, 0x7b, 0xa8, 0xb1, 0x90, + 0x9f, 0xfb, 0x23, 0xb7, 0x9a, 0x9b, 0x72, 0x8f, 0x94, 0x2d, 0x31, 0x3f, 0xd5, 0x47, 0xae, 0xc4, + 0xfb, 0x4c, 0x62, 0x2a, 0x7b, 0x07, 0xc9, 0x21, 0xef, 0x3e, 0x7b, 0xd8, 0x72, 0xc9, 0x35, 0xb9, + 0xe6, 0xb5, 0xfa, 0xe5, 0xe5, 0x09, 0xc9, 0xad, 0xdf, 0x92, 0xfc, 0x9e, 0xb2, 0xeb, 0x77, 0xdc, + 0x45, 0x57, 0x9d, 0x7f, 0x25, 0x12, 0xc8, 0x18, 0x0d, 0xd5, 0xe0, 0x73, 0x39, 0x70, 0xb2, 0x8e, + 0x81, 0x40, 0x49, 0xa8, 0x66, 0x94, 0x66, 0x67, 0xa8, 0xc9, 0x95, 0xc7, 0xc7, 0xb1, 0x91, 0xe1, + 0xe3, 0x24, 0xe3, 0x38, 0x91, 0x1a, 0x44, 0x8c, 0x63, 0x03, 0x7a, 0xb2, 0x71, 0x9c, 0x10, 0x68, + 0x8e, 0xe3, 0x64, 0x35, 0x93, 0x96, 0x7e, 0x6e, 0xaf, 0x26, 0xab, 0xa9, 0xc6, 0x71, 0xb6, 0xc4, + 0xfc, 0x4c, 0x2c, 0xb9, 0x12, 0xd5, 0x38, 0x36, 0x25, 0xe6, 0x90, 0x1f, 0x73, 0x1c, 0x27, 0x0b, + 0x31, 0xc7, 0xf1, 0x89, 0xea, 0xa7, 0xc6, 0x71, 0x76, 0xfd, 0x4e, 0x3c, 0x8e, 0x13, 0xa9, 0x8b, + 0x8c, 0x86, 0x66, 0x8d, 0xe3, 0x24, 0x3d, 0x1f, 0xc7, 0x49, 0x68, 0xc2, 0xb9, 0xd2, 0x65, 0x1c, + 0x27, 0x39, 0x3f, 0x43, 0x79, 0x89, 0xb4, 0x2b, 0xc7, 0x19, 0xc9, 0xb9, 0x19, 0x5b, 0xc8, 0x43, + 0x74, 0xef, 0x25, 0xe0, 0xc7, 0x1b, 0xcd, 0x17, 0xf2, 0x84, 0xe2, 0x78, 0xde, 0x91, 0x4a, 0x4c, + 0x56, 0xd7, 0xf4, 0x5d, 0x65, 0x67, 0x9d, 0xe9, 0x52, 0xe1, 0x1d, 0x36, 0x6e, 0x9a, 0x5d, 0xe4, + 0x76, 0x4b, 0x9a, 0xd3, 0x45, 0xae, 0x32, 0x65, 0x92, 0x72, 0x73, 0x59, 0xba, 0x8f, 0xef, 0xcf, + 0xe5, 0x01, 0x47, 0x92, 0x6f, 0x3e, 0x61, 0x1c, 0x9d, 0xb8, 0xa6, 0xca, 0x48, 0x4a, 0xd6, 0xf4, + 0xa4, 0xe3, 0x7c, 0x4d, 0xee, 0x1e, 0x52, 0xd9, 0xb6, 0x12, 0x8d, 0xd6, 0xc7, 0x7a, 0x2e, 0x86, + 0x6c, 0xa1, 0x2f, 0x37, 0x0d, 0xd7, 0xfc, 0xc0, 0x79, 0x69, 0xbd, 0x7a, 0x4a, 0x4d, 0xe5, 0x0d, + 0xd2, 0xa5, 0xe6, 0x25, 0x15, 0x52, 0x52, 0xd3, 0xdc, 0x9f, 0xa0, 0xf7, 0x4b, 0xdc, 0xb8, 0xf2, + 0x1e, 0xf9, 0xf9, 0x9e, 0x94, 0x29, 0x23, 0x58, 0x89, 0xd1, 0x62, 0x8c, 0xd8, 0x87, 0xe2, 0x04, + 0x4f, 0x02, 0x73, 0x95, 0x9f, 0xc5, 0x4f, 0x3e, 0x81, 0xa2, 0x98, 0xde, 0x62, 0x01, 0x59, 0x84, + 0xb9, 0x5d, 0x57, 0x95, 0x4e, 0xb7, 0x63, 0xd4, 0xe0, 0x38, 0xce, 0xb6, 0xe3, 0x68, 0x22, 0xdf, + 0x33, 0xc5, 0x96, 0xc3, 0xad, 0xa0, 0x13, 0x46, 0xb4, 0x99, 0xf6, 0x28, 0x99, 0x95, 0x91, 0x91, + 0x11, 0x26, 0xf9, 0xce, 0x3c, 0x59, 0xc1, 0xb9, 0xcd, 0x04, 0x77, 0x73, 0xb9, 0x65, 0x8b, 0xc1, + 0xa9, 0x67, 0x4d, 0x5d, 0xeb, 0x31, 0xeb, 0x94, 0x57, 0x76, 0x6e, 0xa5, 0xe4, 0x81, 0xb6, 0xd0, + 0xd3, 0x31, 0x9b, 0x98, 0xa7, 0xa7, 0x0f, 0x30, 0x16, 0x80, 0xfb, 0x00, 0x7b, 0xa9, 0x27, 0x79, + 0xdb, 0x88, 0x7c, 0x0a, 0xa3, 0x92, 0xb9, 0xb7, 0x56, 0x92, 0xdc, 0xa8, 0x95, 0x45, 0x98, 0x30, + 0xae, 0x52, 0x29, 0x13, 0x27, 0xeb, 0x82, 0x55, 0x97, 0xce, 0x9e, 0x30, 0xae, 0x4c, 0x29, 0x29, + 0x59, 0x17, 0xa9, 0x72, 0xa5, 0x7c, 0x04, 0x63, 0x42, 0xa5, 0x5d, 0xb5, 0x91, 0xef, 0x74, 0x9b, + 0xd1, 0xc2, 0x92, 0x3b, 0x4d, 0x37, 0x5a, 0xf0, 0xbd, 0x47, 0xee, 0x5e, 0x4f, 0xc5, 0xa4, 0x59, + 0x76, 0xe6, 0xc9, 0x57, 0xf8, 0xee, 0xb9, 0x7c, 0x8d, 0x9e, 0x46, 0x4f, 0xfd, 0xe0, 0xb1, 0xeb, + 0xed, 0xf5, 0x10, 0x79, 0xd9, 0x14, 0x99, 0xe4, 0x93, 0x83, 0xe7, 0x2b, 0x98, 0xab, 0xe5, 0x0b, + 0xef, 0x29, 0xa4, 0xfb, 0x1a, 0x53, 0x83, 0x0b, 0x18, 0x42, 0x73, 0xd2, 0xba, 0x77, 0x15, 0xfa, + 0x05, 0xcf, 0xda, 0x28, 0x1d, 0xf6, 0x0d, 0x3f, 0x68, 0xf6, 0x96, 0x58, 0x36, 0xa3, 0x69, 0x13, + 0x6c, 0x52, 0x19, 0x5f, 0xc0, 0xb9, 0x5a, 0xae, 0xe8, 0x5e, 0x22, 0x7a, 0x6d, 0x27, 0xcf, 0xa3, + 0x2a, 0x4e, 0x58, 0xef, 0xae, 0x32, 0x57, 0x70, 0x62, 0x63, 0x8b, 0xd1, 0x66, 0x40, 0x1f, 0xd1, + 0x00, 0x63, 0xb6, 0x7b, 0x45, 0x2b, 0x9b, 0xe4, 0xb2, 0xe5, 0x2b, 0x70, 0xa6, 0x96, 0x12, 0x95, + 0xc7, 0xd2, 0xeb, 0x10, 0x68, 0x0a, 0x5b, 0x7a, 0xcc, 0x7a, 0xf5, 0x08, 0x15, 0x1a, 0xbb, 0x47, + 0xa3, 0xed, 0x95, 0x1e, 0x5a, 0x92, 0x97, 0x0a, 0x24, 0xe1, 0xce, 0x1d, 0xc6, 0x59, 0xd3, 0x38, + 0xd3, 0x14, 0xb9, 0x1f, 0xef, 0xa7, 0xf2, 0x40, 0xa4, 0x67, 0xb1, 0x79, 0x12, 0xde, 0xc4, 0xb9, + 0x50, 0xc4, 0x2d, 0xcf, 0xc6, 0xfb, 0x00, 0x0e, 0x89, 0xfd, 0x75, 0x5a, 0x08, 0x73, 0x48, 0x2a, + 0xdc, 0x06, 0xe4, 0xc3, 0x43, 0xc0, 0x2e, 0xa5, 0xe2, 0xd9, 0xbb, 0x8a, 0xe0, 0xae, 0xd0, 0x55, + 0xbf, 0xf1, 0x58, 0x77, 0x85, 0xb2, 0xdf, 0x49, 0x1f, 0x21, 0x83, 0xed, 0xcc, 0x8b, 0x19, 0x9f, + 0xfd, 0x30, 0xa2, 0xbf, 0x10, 0x10, 0xcf, 0xf8, 0x49, 0xb8, 0x70, 0x23, 0xbd, 0x29, 0x1d, 0x8c, + 0x58, 0xa0, 0x29, 0x39, 0x57, 0x35, 0xca, 0xb7, 0x88, 0x4c, 0xa6, 0x6f, 0x51, 0xaf, 0x68, 0xbe, + 0x43, 0x9f, 0xd8, 0xb4, 0xdd, 0xc2, 0x50, 0xe8, 0x03, 0x9f, 0xf3, 0xc4, 0xd1, 0xb1, 0x69, 0x54, + 0xef, 0x20, 0xae, 0x29, 0x11, 0xfa, 0x63, 0x28, 0x5e, 0x65, 0x55, 0x4e, 0xe3, 0x62, 0x55, 0xea, + 0x11, 0x49, 0xb7, 0x0b, 0x64, 0x1d, 0xce, 0xde, 0xa3, 0x91, 0x98, 0xe3, 0x6c, 0x1a, 0x46, 0x81, + 0xdb, 0x88, 0xba, 0x9e, 0x0e, 0x4a, 0x03, 0x25, 0x83, 0x67, 0xe7, 0x2d, 0x26, 0xaf, 0x96, 0x2d, + 0xaf, 0x2b, 0x5f, 0x97, 0x38, 0x59, 0x71, 0xe4, 0x70, 0x92, 0x2a, 0xe6, 0x0f, 0xf1, 0x61, 0x1e, + 0x86, 0x93, 0xcf, 0x5a, 0x8c, 0x53, 0xa0, 0x08, 0x93, 0xeb, 0x26, 0x0c, 0x71, 0xa6, 0xdc, 0x05, + 0x75, 0x5c, 0xe7, 0x21, 0x77, 0x60, 0x54, 0xc5, 0xd1, 0x10, 0x03, 0x95, 0x5b, 0xaf, 0x3b, 0x30, + 0xca, 0xed, 0xab, 0xe3, 0xb3, 0x7c, 0x00, 0xa3, 0x2a, 0xf0, 0xe6, 0xc4, 0x2b, 0xfd, 0x27, 0x30, + 0xa1, 0x87, 0xe0, 0x9c, 0x5c, 0x91, 0x1f, 0xe1, 0x19, 0xae, 0x3c, 0x2a, 0xc9, 0xe7, 0x9f, 0x49, + 0x64, 0x86, 0x11, 0x2a, 0xe5, 0x13, 0xa4, 0x04, 0xe6, 0x56, 0xff, 0x4c, 0x8a, 0x9b, 0x7c, 0x20, + 0xaf, 0x33, 0x29, 0xe6, 0x34, 0x51, 0x17, 0x9d, 0x4d, 0x72, 0x35, 0x3f, 0x0f, 0xb3, 0x9a, 0x60, + 0x7b, 0x56, 0xfb, 0x38, 0x67, 0xcd, 0xbd, 0x55, 0x97, 0x27, 0x65, 0x03, 0x77, 0x69, 0xa9, 0x97, + 0x02, 0xf3, 0x05, 0x5d, 0xca, 0x7f, 0x5c, 0x10, 0x3b, 0xe3, 0x3e, 0x9a, 0x82, 0x29, 0x6c, 0x6e, + 0xf3, 0xba, 0x3c, 0x56, 0x18, 0xdb, 0xbe, 0x69, 0x71, 0x5d, 0xd8, 0xba, 0x99, 0xd2, 0xe2, 0x92, + 0xe6, 0x4b, 0x11, 0xb7, 0x22, 0x23, 0x19, 0x8f, 0xdf, 0xd8, 0xfc, 0x9a, 0x9d, 0xcf, 0x38, 0xdd, + 0xee, 0xd9, 0x17, 0x79, 0xe2, 0x7e, 0x01, 0x77, 0x87, 0x99, 0xa9, 0xc1, 0xf2, 0x85, 0x5d, 0xd7, + 0x02, 0x24, 0x32, 0x39, 0xd5, 0xa2, 0xf7, 0x18, 0xef, 0x89, 0x65, 0xbf, 0xa5, 0xf8, 0x6a, 0x0f, + 0x29, 0x52, 0x13, 0xaf, 0xf5, 0xa4, 0x53, 0x67, 0xa5, 0xe7, 0xf9, 0x0a, 0x9b, 0x5d, 0x5e, 0x8f, + 0xb7, 0x21, 0x33, 0x8e, 0xaf, 0x55, 0x98, 0x68, 0xb6, 0x40, 0x33, 0x4c, 0xb4, 0x6b, 0x1b, 0xf2, + 0xd4, 0xff, 0x19, 0x94, 0xe3, 0x28, 0x90, 0x93, 0x75, 0x42, 0x7e, 0x74, 0x22, 0x49, 0x69, 0x2a, + 0x24, 0xdd, 0xde, 0x14, 0x9a, 0xbb, 0x92, 0xa7, 0x61, 0xfd, 0x2e, 0x8c, 0x88, 0x6e, 0x4b, 0xbc, + 0x2a, 0x9a, 0xf7, 0x3e, 0x69, 0x17, 0x67, 0xac, 0xb8, 0x38, 0xf7, 0x52, 0x04, 0xa5, 0x7b, 0xfb, + 0xe4, 0x82, 0x54, 0x90, 0x46, 0x42, 0x90, 0xd5, 0xa5, 0x7b, 0x7b, 0x9f, 0x3f, 0x96, 0x72, 0xfa, + 0xf5, 0xe4, 0x1d, 0xea, 0xc4, 0x97, 0xc5, 0x12, 0x99, 0x04, 0xf5, 0x0b, 0xba, 0x69, 0x54, 0xf2, + 0xa6, 0x53, 0x16, 0x85, 0x8a, 0x8c, 0x2a, 0xc9, 0x22, 0x18, 0x9c, 0x99, 0x22, 0x7e, 0xe0, 0x46, + 0xcf, 0x16, 0xec, 0xd5, 0xd8, 0xad, 0xa0, 0x23, 0xa4, 0x6c, 0x90, 0x48, 0x7b, 0x95, 0x7c, 0x89, + 0x53, 0x89, 0x10, 0x5f, 0xf5, 0xfd, 0x28, 0x8c, 0x02, 0xa7, 0x5d, 0xc3, 0xd7, 0x96, 0x73, 0x1b, + 0x1d, 0x07, 0x72, 0x67, 0xb1, 0x69, 0x71, 0xa5, 0x22, 0x99, 0x7d, 0x56, 0xfa, 0x1b, 0x75, 0xb7, + 0x26, 0x0b, 0xd9, 0xc5, 0x72, 0xa9, 0xc9, 0xf4, 0xf5, 0x2f, 0x53, 0x68, 0x1d, 0x66, 0x73, 0x92, + 0x06, 0xa9, 0x23, 0xdc, 0xee, 0x49, 0x85, 0xe6, 0xba, 0x17, 0x4c, 0xbe, 0x82, 0x99, 0xcc, 0xac, + 0x42, 0xca, 0x0d, 0xdd, 0x2d, 0xe7, 0x50, 0x2f, 0xe1, 0x8f, 0xa1, 0xc4, 0x6f, 0x75, 0x60, 0xf0, + 0xb2, 0x91, 0x60, 0x26, 0xbe, 0xeb, 0x93, 0x43, 0x90, 0x9c, 0xaf, 0xf3, 0xe9, 0xd4, 0x8d, 0xf3, + 0x69, 0xcc, 0x2c, 0x22, 0x9f, 0x87, 0x16, 0x6f, 0xfc, 0xab, 0x0f, 0x2f, 0x0b, 0xd9, 0xed, 0x42, + 0xd1, 0x26, 0xcc, 0xec, 0xd0, 0xc0, 0x7d, 0xf4, 0x2c, 0x29, 0x50, 0x6a, 0x26, 0x13, 0xdb, 0x4d, + 0xe2, 0xe7, 0x30, 0xbb, 0xe0, 0x1f, 0xb4, 0xc5, 0xd5, 0x3d, 0x43, 0xa6, 0x3a, 0x8f, 0xcf, 0xc6, + 0xf7, 0x0e, 0x68, 0x9a, 0x53, 0x77, 0x0b, 0x75, 0xbe, 0x05, 0xbc, 0xd3, 0x7a, 0xdd, 0x8c, 0x29, + 0xc8, 0x20, 0x89, 0x6f, 0x64, 0x48, 0x53, 0x4e, 0xe7, 0xdf, 0xc2, 0x41, 0x98, 0xe0, 0xe3, 0xbe, + 0x39, 0x6d, 0x10, 0x66, 0xe1, 0xbb, 0x5f, 0x04, 0xcb, 0x90, 0xca, 0x0b, 0xcc, 0x97, 0x7a, 0x8c, + 0xda, 0xae, 0xcb, 0xb5, 0xc5, 0x7c, 0xce, 0x3f, 0x11, 0x39, 0x9d, 0xf9, 0xd6, 0x7f, 0x66, 0x3d, + 0xb5, 0xd4, 0x0a, 0xad, 0x56, 0x97, 0x2d, 0x16, 0xd1, 0x73, 0x2b, 0x30, 0x4a, 0xf4, 0xe4, 0x4f, + 0xe8, 0xbc, 0xdd, 0x66, 0xeb, 0x14, 0x33, 0x6e, 0x6a, 0xdf, 0x87, 0xf1, 0x9a, 0x5e, 0x78, 0x46, + 0x21, 0xb9, 0x83, 0x42, 0x5d, 0x05, 0xea, 0x5d, 0xf7, 0x2e, 0x01, 0xa1, 0x6a, 0xe1, 0x39, 0x56, + 0x2b, 0x72, 0xe3, 0x67, 0x8c, 0x07, 0xe8, 0xd4, 0x2a, 0x90, 0xf5, 0x3e, 0xa4, 0x8a, 0x9f, 0xc9, + 0x7e, 0xb3, 0xae, 0xce, 0x9f, 0xb5, 0x49, 0x3e, 0xff, 0x49, 0xac, 0xde, 0xef, 0xec, 0xaa, 0xc0, + 0xf8, 0xae, 0xef, 0x87, 0xf2, 0x60, 0x9f, 0xf8, 0xc9, 0x3d, 0x3d, 0xd8, 0x27, 0xf5, 0x90, 0x9f, + 0x1e, 0xec, 0x93, 0xf1, 0x4a, 0xdf, 0x12, 0xca, 0x8a, 0xdf, 0x03, 0xea, 0xe2, 0x8c, 0x50, 0x62, + 0x32, 0x9e, 0x1d, 0x7a, 0xa0, 0x67, 0xe8, 0xe0, 0xaf, 0x08, 0x75, 0xf1, 0xb5, 0x26, 0x33, 0x73, + 0x24, 0x9e, 0x1d, 0xba, 0x0b, 0x45, 0xfe, 0xa0, 0x42, 0x9c, 0xd8, 0x30, 0x8e, 0xff, 0x4b, 0xbf, + 0xf3, 0xd0, 0xa5, 0x53, 0x8b, 0xc9, 0x74, 0x70, 0xca, 0x65, 0x96, 0x93, 0x27, 0xae, 0xcb, 0x50, + 0x85, 0x38, 0xe9, 0x9b, 0x72, 0x4c, 0xa5, 0xf2, 0xc0, 0xcd, 0x9d, 0xcb, 0xc0, 0xa8, 0x2d, 0xe5, + 0xb8, 0x9e, 0x22, 0x4e, 0x35, 0x29, 0x23, 0x6f, 0xdc, 0xdc, 0xf9, 0x4c, 0x9c, 0x10, 0x14, 0xf1, + 0xa7, 0xa6, 0xb3, 0x5f, 0xfe, 0x8e, 0x6f, 0x73, 0x75, 0xa1, 0x91, 0xc5, 0xdc, 0x38, 0x0e, 0xa9, + 0x28, 0x95, 0xaa, 0xd7, 0x90, 0x32, 0x9e, 0x1b, 0x7f, 0x2d, 0xe3, 0xc2, 0x85, 0x41, 0x11, 0x87, + 0x84, 0x75, 0x7f, 0xfb, 0x9c, 0x3c, 0x94, 0xaf, 0xd3, 0xe4, 0x94, 0xd4, 0x4b, 0x40, 0x6e, 0x0f, + 0x3e, 0x94, 0xef, 0xd1, 0xbc, 0x6c, 0xc1, 0xbb, 0x70, 0x21, 0x71, 0x8b, 0xc3, 0x14, 0x7c, 0x23, + 0xfb, 0xaa, 0x47, 0xa6, 0x7a, 0xf2, 0xf7, 0xec, 0x97, 0xd3, 0xb7, 0x3d, 0x12, 0xfd, 0x7e, 0xd2, + 0x39, 0x6f, 0x0d, 0x26, 0x71, 0x9a, 0x91, 0x0f, 0xe7, 0xc7, 0x09, 0x62, 0x4c, 0x70, 0x32, 0x53, + 0x51, 0x12, 0xab, 0x2e, 0x91, 0x8f, 0x8b, 0x9b, 0xc1, 0xfc, 0x19, 0xfe, 0x39, 0xf3, 0xba, 0x30, + 0x02, 0xb3, 0x56, 0x31, 0xf1, 0xba, 0x3f, 0xf9, 0x08, 0x4e, 0xc7, 0x17, 0x86, 0xb9, 0x88, 0x0c, + 0xb2, 0x2e, 0x8e, 0xb2, 0xd3, 0xf1, 0xad, 0xe1, 0x93, 0xb3, 0x2f, 0xcb, 0xa5, 0x28, 0x66, 0xbf, + 0x98, 0xba, 0xf3, 0x62, 0xb4, 0xe1, 0x38, 0x2b, 0x92, 0xa6, 0xdb, 0x93, 0xf6, 0x4e, 0x03, 0x3f, + 0xb7, 0xec, 0xdc, 0x87, 0xfa, 0xe7, 0xd6, 0x35, 0x3f, 0xa3, 0xda, 0xfe, 0xe6, 0xc8, 0x59, 0x83, + 0xab, 0x98, 0x2f, 0x65, 0x93, 0x67, 0xc8, 0xcb, 0xa6, 0xca, 0xaf, 0x7b, 0x32, 0xcb, 0x4a, 0x0b, + 0xae, 0xf4, 0x4c, 0xfe, 0x48, 0x6e, 0x19, 0x71, 0x2e, 0xbd, 0xd3, 0x44, 0x76, 0xb1, 0x3c, 0xa6, + 0xb3, 0x72, 0x28, 0xaa, 0x75, 0xb6, 0x4b, 0x3a, 0x47, 0xb5, 0xce, 0x76, 0x4d, 0xc2, 0xf8, 0x39, + 0x3e, 0xf9, 0x24, 0xd6, 0x28, 0xcc, 0x81, 0x44, 0x3d, 0x9e, 0x19, 0xba, 0xeb, 0xb1, 0xcf, 0x15, + 0xf3, 0x50, 0x34, 0xc5, 0x88, 0x36, 0xcd, 0x25, 0x61, 0x89, 0xe5, 0x09, 0xef, 0x2d, 0xa4, 0x4b, + 0x7c, 0xf5, 0x25, 0x3e, 0x00, 0x4f, 0x5c, 0xf3, 0x1c, 0x78, 0x75, 0xf1, 0x27, 0xff, 0xf5, 0x52, + 0xe1, 0x27, 0x3f, 0xbd, 0x54, 0xf8, 0x8f, 0x3f, 0xbd, 0x54, 0xf8, 0x2f, 0x3f, 0xbd, 0x54, 0xf8, + 0x72, 0xfe, 0x78, 0xf9, 0x89, 0xf9, 0x23, 0x8d, 0xb7, 0xb8, 0xb8, 0x21, 0xfc, 0xef, 0xcd, 0xff, + 0x1b, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2d, 0x2b, 0xdd, 0x39, 0xef, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -17460,14 +17458,8 @@ type AuthServiceClient interface { GetTrustedClusters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use UpsertTrustedClusterV2 instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. UpsertTrustedCluster(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - UpsertTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - CreateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - UpdateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -19456,33 +19448,6 @@ func (c *authServiceClient) UpsertTrustedCluster(ctx context.Context, in *types. return out, nil } -func (c *authServiceClient) UpsertTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { - out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, "/proto.AuthService/UpsertTrustedClusterV2", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) CreateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { - out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, "/proto.AuthService/CreateTrustedClusterV2", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *authServiceClient) UpdateTrustedClusterV2(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { - out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, "/proto.AuthService/UpdateTrustedClusterV2", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *authServiceClient) DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, "/proto.AuthService/DeleteTrustedCluster", in, out, opts...) @@ -20874,14 +20839,8 @@ type AuthServiceServer interface { GetTrustedClusters(context.Context, *emptypb.Empty) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use UpsertTrustedClusterV2 instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. UpsertTrustedCluster(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - UpsertTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - CreateTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - UpdateTrustedClusterV2(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(context.Context, *types.ResourceRequest) (*emptypb.Empty, error) // GetToken retrieves a token described by the given request. @@ -21617,15 +21576,6 @@ func (*UnimplementedAuthServiceServer) GetTrustedClusters(ctx context.Context, r func (*UnimplementedAuthServiceServer) UpsertTrustedCluster(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedCluster not implemented") } -func (*UnimplementedAuthServiceServer) UpsertTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedClusterV2 not implemented") -} -func (*UnimplementedAuthServiceServer) CreateTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateTrustedClusterV2 not implemented") -} -func (*UnimplementedAuthServiceServer) UpdateTrustedClusterV2(ctx context.Context, req *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateTrustedClusterV2 not implemented") -} func (*UnimplementedAuthServiceServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTrustedCluster not implemented") } @@ -24696,60 +24646,6 @@ func _AuthService_UpsertTrustedCluster_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } -func _AuthService_UpsertTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.TrustedClusterV2) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).UpsertTrustedClusterV2(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/UpsertTrustedClusterV2", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).UpsertTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_CreateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.TrustedClusterV2) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).CreateTrustedClusterV2(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/CreateTrustedClusterV2", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).CreateTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) - } - return interceptor(ctx, in, info, handler) -} - -func _AuthService_UpdateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(types.TrustedClusterV2) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AuthServiceServer).UpdateTrustedClusterV2(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/proto.AuthService/UpdateTrustedClusterV2", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AuthServiceServer).UpdateTrustedClusterV2(ctx, req.(*types.TrustedClusterV2)) - } - return interceptor(ctx, in, info, handler) -} - func _AuthService_DeleteTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(types.ResourceRequest) if err := dec(in); err != nil { @@ -27218,18 +27114,6 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ MethodName: "UpsertTrustedCluster", Handler: _AuthService_UpsertTrustedCluster_Handler, }, - { - MethodName: "UpsertTrustedClusterV2", - Handler: _AuthService_UpsertTrustedClusterV2_Handler, - }, - { - MethodName: "CreateTrustedClusterV2", - Handler: _AuthService_CreateTrustedClusterV2_Handler, - }, - { - MethodName: "UpdateTrustedClusterV2", - Handler: _AuthService_UpdateTrustedClusterV2_Handler, - }, { MethodName: "DeleteTrustedCluster", Handler: _AuthService_DeleteTrustedCluster_Handler, diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go index 059d839a5a363..2eab8875c3536 100644 --- a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go +++ b/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go @@ -38,6 +38,147 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Request for UpsertTrustedClusterV2. +type UpsertTrustedClusterV2Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // TrustedCluster specifies a Trusted Cluster resource. + TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` +} + +func (x *UpsertTrustedClusterV2Request) Reset() { + *x = UpsertTrustedClusterV2Request{} + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpsertTrustedClusterV2Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpsertTrustedClusterV2Request) ProtoMessage() {} + +func (x *UpsertTrustedClusterV2Request) ProtoReflect() protoreflect.Message { + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpsertTrustedClusterV2Request.ProtoReflect.Descriptor instead. +func (*UpsertTrustedClusterV2Request) Descriptor() ([]byte, []int) { + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{0} +} + +func (x *UpsertTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { + if x != nil { + return x.TrustedCluster + } + return nil +} + +// Request for CreateTrustedClusterV2. +type CreateTrustedClusterV2Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // TrustedCluster specifies a Trusted Cluster resource. + TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` +} + +func (x *CreateTrustedClusterV2Request) Reset() { + *x = CreateTrustedClusterV2Request{} + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTrustedClusterV2Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrustedClusterV2Request) ProtoMessage() {} + +func (x *CreateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrustedClusterV2Request.ProtoReflect.Descriptor instead. +func (*CreateTrustedClusterV2Request) Descriptor() ([]byte, []int) { + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { + if x != nil { + return x.TrustedCluster + } + return nil +} + +// Request for UpdateTrustedClusterV2. +type UpdateTrustedClusterV2Request struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // TrustedCluster specifies a Trusted Cluster resource. + TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` +} + +func (x *UpdateTrustedClusterV2Request) Reset() { + *x = UpdateTrustedClusterV2Request{} + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateTrustedClusterV2Request) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTrustedClusterV2Request) ProtoMessage() {} + +func (x *UpdateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateTrustedClusterV2Request.ProtoReflect.Descriptor instead. +func (*UpdateTrustedClusterV2Request) Descriptor() ([]byte, []int) { + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{2} +} + +func (x *UpdateTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { + if x != nil { + return x.TrustedCluster + } + return nil +} + // Request for GetCertAuthority type GetCertAuthorityRequest struct { state protoimpl.MessageState @@ -54,7 +195,7 @@ type GetCertAuthorityRequest struct { func (x *GetCertAuthorityRequest) Reset() { *x = GetCertAuthorityRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -66,7 +207,7 @@ func (x *GetCertAuthorityRequest) String() string { func (*GetCertAuthorityRequest) ProtoMessage() {} func (x *GetCertAuthorityRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79,7 +220,7 @@ func (x *GetCertAuthorityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCertAuthorityRequest.ProtoReflect.Descriptor instead. func (*GetCertAuthorityRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{0} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{3} } func (x *GetCertAuthorityRequest) GetType() string { @@ -117,7 +258,7 @@ type GetCertAuthoritiesRequest struct { func (x *GetCertAuthoritiesRequest) Reset() { *x = GetCertAuthoritiesRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -129,7 +270,7 @@ func (x *GetCertAuthoritiesRequest) String() string { func (*GetCertAuthoritiesRequest) ProtoMessage() {} func (x *GetCertAuthoritiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -142,7 +283,7 @@ func (x *GetCertAuthoritiesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCertAuthoritiesRequest.ProtoReflect.Descriptor instead. func (*GetCertAuthoritiesRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{1} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{4} } func (x *GetCertAuthoritiesRequest) GetType() string { @@ -171,7 +312,7 @@ type GetCertAuthoritiesResponse struct { func (x *GetCertAuthoritiesResponse) Reset() { *x = GetCertAuthoritiesResponse{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -183,7 +324,7 @@ func (x *GetCertAuthoritiesResponse) String() string { func (*GetCertAuthoritiesResponse) ProtoMessage() {} func (x *GetCertAuthoritiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,7 +337,7 @@ func (x *GetCertAuthoritiesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCertAuthoritiesResponse.ProtoReflect.Descriptor instead. func (*GetCertAuthoritiesResponse) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{2} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{5} } func (x *GetCertAuthoritiesResponse) GetCertAuthoritiesV2() []*types.CertAuthorityV2 { @@ -220,7 +361,7 @@ type DeleteCertAuthorityRequest struct { func (x *DeleteCertAuthorityRequest) Reset() { *x = DeleteCertAuthorityRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[3] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -232,7 +373,7 @@ func (x *DeleteCertAuthorityRequest) String() string { func (*DeleteCertAuthorityRequest) ProtoMessage() {} func (x *DeleteCertAuthorityRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[3] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -245,7 +386,7 @@ func (x *DeleteCertAuthorityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCertAuthorityRequest.ProtoReflect.Descriptor instead. func (*DeleteCertAuthorityRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{3} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{6} } func (x *DeleteCertAuthorityRequest) GetType() string { @@ -274,7 +415,7 @@ type UpsertCertAuthorityRequest struct { func (x *UpsertCertAuthorityRequest) Reset() { *x = UpsertCertAuthorityRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[4] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -286,7 +427,7 @@ func (x *UpsertCertAuthorityRequest) String() string { func (*UpsertCertAuthorityRequest) ProtoMessage() {} func (x *UpsertCertAuthorityRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[4] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -299,7 +440,7 @@ func (x *UpsertCertAuthorityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertCertAuthorityRequest.ProtoReflect.Descriptor instead. func (*UpsertCertAuthorityRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{4} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{7} } func (x *UpsertCertAuthorityRequest) GetCertAuthority() *types.CertAuthorityV2 { @@ -339,7 +480,7 @@ type RotateCertAuthorityRequest struct { func (x *RotateCertAuthorityRequest) Reset() { *x = RotateCertAuthorityRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[5] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -351,7 +492,7 @@ func (x *RotateCertAuthorityRequest) String() string { func (*RotateCertAuthorityRequest) ProtoMessage() {} func (x *RotateCertAuthorityRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[5] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -364,7 +505,7 @@ func (x *RotateCertAuthorityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateCertAuthorityRequest.ProtoReflect.Descriptor instead. func (*RotateCertAuthorityRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{5} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{8} } func (x *RotateCertAuthorityRequest) GetType() string { @@ -418,7 +559,7 @@ type RotationSchedule struct { func (x *RotationSchedule) Reset() { *x = RotationSchedule{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[6] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -430,7 +571,7 @@ func (x *RotationSchedule) String() string { func (*RotationSchedule) ProtoMessage() {} func (x *RotationSchedule) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[6] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -443,7 +584,7 @@ func (x *RotationSchedule) ProtoReflect() protoreflect.Message { // Deprecated: Use RotationSchedule.ProtoReflect.Descriptor instead. func (*RotationSchedule) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{6} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{9} } func (x *RotationSchedule) GetUpdateClients() *timestamppb.Timestamp { @@ -476,7 +617,7 @@ type RotateCertAuthorityResponse struct { func (x *RotateCertAuthorityResponse) Reset() { *x = RotateCertAuthorityResponse{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[7] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -488,7 +629,7 @@ func (x *RotateCertAuthorityResponse) String() string { func (*RotateCertAuthorityResponse) ProtoMessage() {} func (x *RotateCertAuthorityResponse) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[7] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -501,7 +642,7 @@ func (x *RotateCertAuthorityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateCertAuthorityResponse.ProtoReflect.Descriptor instead. func (*RotateCertAuthorityResponse) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{7} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{10} } // Request for RotateExternalCertAuthority. @@ -516,7 +657,7 @@ type RotateExternalCertAuthorityRequest struct { func (x *RotateExternalCertAuthorityRequest) Reset() { *x = RotateExternalCertAuthorityRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[8] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -528,7 +669,7 @@ func (x *RotateExternalCertAuthorityRequest) String() string { func (*RotateExternalCertAuthorityRequest) ProtoMessage() {} func (x *RotateExternalCertAuthorityRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[8] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -541,7 +682,7 @@ func (x *RotateExternalCertAuthorityRequest) ProtoReflect() protoreflect.Message // Deprecated: Use RotateExternalCertAuthorityRequest.ProtoReflect.Descriptor instead. func (*RotateExternalCertAuthorityRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{8} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{11} } func (x *RotateExternalCertAuthorityRequest) GetCertAuthority() *types.CertAuthorityV2 { @@ -560,7 +701,7 @@ type RotateExternalCertAuthorityResponse struct { func (x *RotateExternalCertAuthorityResponse) Reset() { *x = RotateExternalCertAuthorityResponse{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[9] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +713,7 @@ func (x *RotateExternalCertAuthorityResponse) String() string { func (*RotateExternalCertAuthorityResponse) ProtoMessage() {} func (x *RotateExternalCertAuthorityResponse) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[9] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +726,7 @@ func (x *RotateExternalCertAuthorityResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use RotateExternalCertAuthorityResponse.ProtoReflect.Descriptor instead. func (*RotateExternalCertAuthorityResponse) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{9} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{12} } // GenerateHostCertRequest is the request for GenerateHostCert. @@ -612,7 +753,7 @@ type GenerateHostCertRequest struct { func (x *GenerateHostCertRequest) Reset() { *x = GenerateHostCertRequest{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[10] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -624,7 +765,7 @@ func (x *GenerateHostCertRequest) String() string { func (*GenerateHostCertRequest) ProtoMessage() {} func (x *GenerateHostCertRequest) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[10] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -637,7 +778,7 @@ func (x *GenerateHostCertRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateHostCertRequest.ProtoReflect.Descriptor instead. func (*GenerateHostCertRequest) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{10} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{13} } func (x *GenerateHostCertRequest) GetKey() []byte { @@ -701,7 +842,7 @@ type GenerateHostCertResponse struct { func (x *GenerateHostCertResponse) Reset() { *x = GenerateHostCertResponse{} - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[11] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -713,7 +854,7 @@ func (x *GenerateHostCertResponse) String() string { func (*GenerateHostCertResponse) ProtoMessage() {} func (x *GenerateHostCertResponse) ProtoReflect() protoreflect.Message { - mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[11] + mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -726,7 +867,7 @@ func (x *GenerateHostCertResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateHostCertResponse.ProtoReflect.Descriptor instead. func (*GenerateHostCertResponse) Descriptor() ([]byte, []int) { - return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{11} + return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{14} } func (x *GenerateHostCertResponse) GetSshCertificate() []byte { @@ -750,147 +891,184 @@ var file_teleport_trust_v1_trust_service_proto_rawDesc = []byte{ 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, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x66, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x64, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x13, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 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, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x56, 0x32, 0x22, 0x48, 0x0a, 0x1a, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x1a, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, - 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 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, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x22, 0xe6, 0x01, 0x0a, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 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, 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x68, - 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x10, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 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, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, 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, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, - 0x79, 0x18, 0x03, 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, 0x07, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x22, 0x1d, 0x0a, 0x1b, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x22, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1d, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x61, + 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x40, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, + 0x32, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x64, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x13, + 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x5f, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 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, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x22, 0x25, 0x0a, 0x23, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x07, 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, 0x03, 0x74, 0x74, 0x6c, 0x22, - 0x43, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, - 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x32, 0x87, 0x06, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x73, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x71, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, - 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 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, 0x5c, - 0x0a, 0x13, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x74, 0x0a, 0x13, + 0x32, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x56, 0x32, 0x22, 0x48, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, + 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x5b, + 0x0a, 0x1a, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, + 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 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, 0x52, 0x0d, 0x63, 0x65, + 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xe6, 0x01, 0x0a, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, - 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, + 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, + 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, + 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 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, 0x0d, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, + 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, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, + 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x18, 0x03, 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, 0x07, 0x73, 0x74, + 0x61, 0x6e, 0x64, 0x62, 0x79, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x22, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, + 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 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, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x52, 0x6f, 0x74, + 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xe5, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, + 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, + 0x70, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, + 0x74, 0x6c, 0x18, 0x07, 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, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x43, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, + 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x32, 0xb6, 0x08, + 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x71, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 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, 0x5c, 0x0a, 0x13, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x74, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x1b, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, + 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, + 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, - 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x4e, - 0x5a, 0x4c, 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, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, + 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, + 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x63, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, + 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, + 0x32, 0x12, 0x63, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x42, 0x4e, 0x5a, 0x4c, 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, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -905,54 +1083,67 @@ func file_teleport_trust_v1_trust_service_proto_rawDescGZIP() []byte { return file_teleport_trust_v1_trust_service_proto_rawDescData } -var file_teleport_trust_v1_trust_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_teleport_trust_v1_trust_service_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_teleport_trust_v1_trust_service_proto_goTypes = []any{ - (*GetCertAuthorityRequest)(nil), // 0: teleport.trust.v1.GetCertAuthorityRequest - (*GetCertAuthoritiesRequest)(nil), // 1: teleport.trust.v1.GetCertAuthoritiesRequest - (*GetCertAuthoritiesResponse)(nil), // 2: teleport.trust.v1.GetCertAuthoritiesResponse - (*DeleteCertAuthorityRequest)(nil), // 3: teleport.trust.v1.DeleteCertAuthorityRequest - (*UpsertCertAuthorityRequest)(nil), // 4: teleport.trust.v1.UpsertCertAuthorityRequest - (*RotateCertAuthorityRequest)(nil), // 5: teleport.trust.v1.RotateCertAuthorityRequest - (*RotationSchedule)(nil), // 6: teleport.trust.v1.RotationSchedule - (*RotateCertAuthorityResponse)(nil), // 7: teleport.trust.v1.RotateCertAuthorityResponse - (*RotateExternalCertAuthorityRequest)(nil), // 8: teleport.trust.v1.RotateExternalCertAuthorityRequest - (*RotateExternalCertAuthorityResponse)(nil), // 9: teleport.trust.v1.RotateExternalCertAuthorityResponse - (*GenerateHostCertRequest)(nil), // 10: teleport.trust.v1.GenerateHostCertRequest - (*GenerateHostCertResponse)(nil), // 11: teleport.trust.v1.GenerateHostCertResponse - (*types.CertAuthorityV2)(nil), // 12: types.CertAuthorityV2 - (*durationpb.Duration)(nil), // 13: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp - (*emptypb.Empty)(nil), // 15: google.protobuf.Empty + (*UpsertTrustedClusterV2Request)(nil), // 0: teleport.trust.v1.UpsertTrustedClusterV2Request + (*CreateTrustedClusterV2Request)(nil), // 1: teleport.trust.v1.CreateTrustedClusterV2Request + (*UpdateTrustedClusterV2Request)(nil), // 2: teleport.trust.v1.UpdateTrustedClusterV2Request + (*GetCertAuthorityRequest)(nil), // 3: teleport.trust.v1.GetCertAuthorityRequest + (*GetCertAuthoritiesRequest)(nil), // 4: teleport.trust.v1.GetCertAuthoritiesRequest + (*GetCertAuthoritiesResponse)(nil), // 5: teleport.trust.v1.GetCertAuthoritiesResponse + (*DeleteCertAuthorityRequest)(nil), // 6: teleport.trust.v1.DeleteCertAuthorityRequest + (*UpsertCertAuthorityRequest)(nil), // 7: teleport.trust.v1.UpsertCertAuthorityRequest + (*RotateCertAuthorityRequest)(nil), // 8: teleport.trust.v1.RotateCertAuthorityRequest + (*RotationSchedule)(nil), // 9: teleport.trust.v1.RotationSchedule + (*RotateCertAuthorityResponse)(nil), // 10: teleport.trust.v1.RotateCertAuthorityResponse + (*RotateExternalCertAuthorityRequest)(nil), // 11: teleport.trust.v1.RotateExternalCertAuthorityRequest + (*RotateExternalCertAuthorityResponse)(nil), // 12: teleport.trust.v1.RotateExternalCertAuthorityResponse + (*GenerateHostCertRequest)(nil), // 13: teleport.trust.v1.GenerateHostCertRequest + (*GenerateHostCertResponse)(nil), // 14: teleport.trust.v1.GenerateHostCertResponse + (*types.TrustedClusterV2)(nil), // 15: types.TrustedClusterV2 + (*types.CertAuthorityV2)(nil), // 16: types.CertAuthorityV2 + (*durationpb.Duration)(nil), // 17: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty } var file_teleport_trust_v1_trust_service_proto_depIdxs = []int32{ - 12, // 0: teleport.trust.v1.GetCertAuthoritiesResponse.cert_authorities_v2:type_name -> types.CertAuthorityV2 - 12, // 1: teleport.trust.v1.UpsertCertAuthorityRequest.cert_authority:type_name -> types.CertAuthorityV2 - 13, // 2: teleport.trust.v1.RotateCertAuthorityRequest.grace_period:type_name -> google.protobuf.Duration - 6, // 3: teleport.trust.v1.RotateCertAuthorityRequest.schedule:type_name -> teleport.trust.v1.RotationSchedule - 14, // 4: teleport.trust.v1.RotationSchedule.update_clients:type_name -> google.protobuf.Timestamp - 14, // 5: teleport.trust.v1.RotationSchedule.update_servers:type_name -> google.protobuf.Timestamp - 14, // 6: teleport.trust.v1.RotationSchedule.standby:type_name -> google.protobuf.Timestamp - 12, // 7: teleport.trust.v1.RotateExternalCertAuthorityRequest.cert_authority:type_name -> types.CertAuthorityV2 - 13, // 8: teleport.trust.v1.GenerateHostCertRequest.ttl:type_name -> google.protobuf.Duration - 0, // 9: teleport.trust.v1.TrustService.GetCertAuthority:input_type -> teleport.trust.v1.GetCertAuthorityRequest - 1, // 10: teleport.trust.v1.TrustService.GetCertAuthorities:input_type -> teleport.trust.v1.GetCertAuthoritiesRequest - 3, // 11: teleport.trust.v1.TrustService.DeleteCertAuthority:input_type -> teleport.trust.v1.DeleteCertAuthorityRequest - 4, // 12: teleport.trust.v1.TrustService.UpsertCertAuthority:input_type -> teleport.trust.v1.UpsertCertAuthorityRequest - 5, // 13: teleport.trust.v1.TrustService.RotateCertAuthority:input_type -> teleport.trust.v1.RotateCertAuthorityRequest - 8, // 14: teleport.trust.v1.TrustService.RotateExternalCertAuthority:input_type -> teleport.trust.v1.RotateExternalCertAuthorityRequest - 10, // 15: teleport.trust.v1.TrustService.GenerateHostCert:input_type -> teleport.trust.v1.GenerateHostCertRequest - 12, // 16: teleport.trust.v1.TrustService.GetCertAuthority:output_type -> types.CertAuthorityV2 - 2, // 17: teleport.trust.v1.TrustService.GetCertAuthorities:output_type -> teleport.trust.v1.GetCertAuthoritiesResponse - 15, // 18: teleport.trust.v1.TrustService.DeleteCertAuthority:output_type -> google.protobuf.Empty - 12, // 19: teleport.trust.v1.TrustService.UpsertCertAuthority:output_type -> types.CertAuthorityV2 - 7, // 20: teleport.trust.v1.TrustService.RotateCertAuthority:output_type -> teleport.trust.v1.RotateCertAuthorityResponse - 9, // 21: teleport.trust.v1.TrustService.RotateExternalCertAuthority:output_type -> teleport.trust.v1.RotateExternalCertAuthorityResponse - 11, // 22: teleport.trust.v1.TrustService.GenerateHostCert:output_type -> teleport.trust.v1.GenerateHostCertResponse - 16, // [16:23] is the sub-list for method output_type - 9, // [9:16] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 15, // 0: teleport.trust.v1.UpsertTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 + 15, // 1: teleport.trust.v1.CreateTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 + 15, // 2: teleport.trust.v1.UpdateTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 + 16, // 3: teleport.trust.v1.GetCertAuthoritiesResponse.cert_authorities_v2:type_name -> types.CertAuthorityV2 + 16, // 4: teleport.trust.v1.UpsertCertAuthorityRequest.cert_authority:type_name -> types.CertAuthorityV2 + 17, // 5: teleport.trust.v1.RotateCertAuthorityRequest.grace_period:type_name -> google.protobuf.Duration + 9, // 6: teleport.trust.v1.RotateCertAuthorityRequest.schedule:type_name -> teleport.trust.v1.RotationSchedule + 18, // 7: teleport.trust.v1.RotationSchedule.update_clients:type_name -> google.protobuf.Timestamp + 18, // 8: teleport.trust.v1.RotationSchedule.update_servers:type_name -> google.protobuf.Timestamp + 18, // 9: teleport.trust.v1.RotationSchedule.standby:type_name -> google.protobuf.Timestamp + 16, // 10: teleport.trust.v1.RotateExternalCertAuthorityRequest.cert_authority:type_name -> types.CertAuthorityV2 + 17, // 11: teleport.trust.v1.GenerateHostCertRequest.ttl:type_name -> google.protobuf.Duration + 3, // 12: teleport.trust.v1.TrustService.GetCertAuthority:input_type -> teleport.trust.v1.GetCertAuthorityRequest + 4, // 13: teleport.trust.v1.TrustService.GetCertAuthorities:input_type -> teleport.trust.v1.GetCertAuthoritiesRequest + 6, // 14: teleport.trust.v1.TrustService.DeleteCertAuthority:input_type -> teleport.trust.v1.DeleteCertAuthorityRequest + 7, // 15: teleport.trust.v1.TrustService.UpsertCertAuthority:input_type -> teleport.trust.v1.UpsertCertAuthorityRequest + 8, // 16: teleport.trust.v1.TrustService.RotateCertAuthority:input_type -> teleport.trust.v1.RotateCertAuthorityRequest + 11, // 17: teleport.trust.v1.TrustService.RotateExternalCertAuthority:input_type -> teleport.trust.v1.RotateExternalCertAuthorityRequest + 13, // 18: teleport.trust.v1.TrustService.GenerateHostCert:input_type -> teleport.trust.v1.GenerateHostCertRequest + 0, // 19: teleport.trust.v1.TrustService.UpsertTrustedClusterV2:input_type -> teleport.trust.v1.UpsertTrustedClusterV2Request + 1, // 20: teleport.trust.v1.TrustService.CreateTrustedClusterV2:input_type -> teleport.trust.v1.CreateTrustedClusterV2Request + 2, // 21: teleport.trust.v1.TrustService.UpdateTrustedClusterV2:input_type -> teleport.trust.v1.UpdateTrustedClusterV2Request + 16, // 22: teleport.trust.v1.TrustService.GetCertAuthority:output_type -> types.CertAuthorityV2 + 5, // 23: teleport.trust.v1.TrustService.GetCertAuthorities:output_type -> teleport.trust.v1.GetCertAuthoritiesResponse + 19, // 24: teleport.trust.v1.TrustService.DeleteCertAuthority:output_type -> google.protobuf.Empty + 16, // 25: teleport.trust.v1.TrustService.UpsertCertAuthority:output_type -> types.CertAuthorityV2 + 10, // 26: teleport.trust.v1.TrustService.RotateCertAuthority:output_type -> teleport.trust.v1.RotateCertAuthorityResponse + 12, // 27: teleport.trust.v1.TrustService.RotateExternalCertAuthority:output_type -> teleport.trust.v1.RotateExternalCertAuthorityResponse + 14, // 28: teleport.trust.v1.TrustService.GenerateHostCert:output_type -> teleport.trust.v1.GenerateHostCertResponse + 15, // 29: teleport.trust.v1.TrustService.UpsertTrustedClusterV2:output_type -> types.TrustedClusterV2 + 15, // 30: teleport.trust.v1.TrustService.CreateTrustedClusterV2:output_type -> types.TrustedClusterV2 + 15, // 31: teleport.trust.v1.TrustService.UpdateTrustedClusterV2:output_type -> types.TrustedClusterV2 + 22, // [22:32] is the sub-list for method output_type + 12, // [12:22] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_teleport_trust_v1_trust_service_proto_init() } @@ -966,7 +1157,7 @@ func file_teleport_trust_v1_trust_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_teleport_trust_v1_trust_service_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 15, NumExtensions: 0, NumServices: 1, }, diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go index 5a91787708411..8f910f648a8b1 100644 --- a/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go +++ b/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go @@ -42,6 +42,9 @@ const ( TrustService_RotateCertAuthority_FullMethodName = "/teleport.trust.v1.TrustService/RotateCertAuthority" TrustService_RotateExternalCertAuthority_FullMethodName = "/teleport.trust.v1.TrustService/RotateExternalCertAuthority" TrustService_GenerateHostCert_FullMethodName = "/teleport.trust.v1.TrustService/GenerateHostCert" + TrustService_UpsertTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/UpsertTrustedClusterV2" + TrustService_CreateTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/CreateTrustedClusterV2" + TrustService_UpdateTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/UpdateTrustedClusterV2" ) // TrustServiceClient is the client API for TrustService service. @@ -65,6 +68,12 @@ type TrustServiceClient interface { // GenerateHostCert takes a public key in the OpenSSH `authorized_keys` format and returns // a SSH certificate signed by the Host CA. GenerateHostCert(ctx context.Context, in *GenerateHostCertRequest, opts ...grpc.CallOption) (*GenerateHostCertResponse, error) + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + UpsertTrustedClusterV2(ctx context.Context, in *UpsertTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + CreateTrustedClusterV2(ctx context.Context, in *CreateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + UpdateTrustedClusterV2(ctx context.Context, in *UpdateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) } type trustServiceClient struct { @@ -145,6 +154,36 @@ func (c *trustServiceClient) GenerateHostCert(ctx context.Context, in *GenerateH return out, nil } +func (c *trustServiceClient) UpsertTrustedClusterV2(ctx context.Context, in *UpsertTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, TrustService_UpsertTrustedClusterV2_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *trustServiceClient) CreateTrustedClusterV2(ctx context.Context, in *CreateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, TrustService_CreateTrustedClusterV2_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *trustServiceClient) UpdateTrustedClusterV2(ctx context.Context, in *UpdateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(types.TrustedClusterV2) + err := c.cc.Invoke(ctx, TrustService_UpdateTrustedClusterV2_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // TrustServiceServer is the server API for TrustService service. // All implementations must embed UnimplementedTrustServiceServer // for forward compatibility. @@ -166,6 +205,12 @@ type TrustServiceServer interface { // GenerateHostCert takes a public key in the OpenSSH `authorized_keys` format and returns // a SSH certificate signed by the Host CA. GenerateHostCert(context.Context, *GenerateHostCertRequest) (*GenerateHostCertResponse, error) + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + UpsertTrustedClusterV2(context.Context, *UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + CreateTrustedClusterV2(context.Context, *CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + UpdateTrustedClusterV2(context.Context, *UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) mustEmbedUnimplementedTrustServiceServer() } @@ -197,6 +242,15 @@ func (UnimplementedTrustServiceServer) RotateExternalCertAuthority(context.Conte func (UnimplementedTrustServiceServer) GenerateHostCert(context.Context, *GenerateHostCertRequest) (*GenerateHostCertResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GenerateHostCert not implemented") } +func (UnimplementedTrustServiceServer) UpsertTrustedClusterV2(context.Context, *UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedClusterV2 not implemented") +} +func (UnimplementedTrustServiceServer) CreateTrustedClusterV2(context.Context, *CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTrustedClusterV2 not implemented") +} +func (UnimplementedTrustServiceServer) UpdateTrustedClusterV2(context.Context, *UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateTrustedClusterV2 not implemented") +} func (UnimplementedTrustServiceServer) mustEmbedUnimplementedTrustServiceServer() {} func (UnimplementedTrustServiceServer) testEmbeddedByValue() {} @@ -344,6 +398,60 @@ func _TrustService_GenerateHostCert_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _TrustService_UpsertTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpsertTrustedClusterV2Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TrustServiceServer).UpsertTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TrustService_UpsertTrustedClusterV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TrustServiceServer).UpsertTrustedClusterV2(ctx, req.(*UpsertTrustedClusterV2Request)) + } + return interceptor(ctx, in, info, handler) +} + +func _TrustService_CreateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTrustedClusterV2Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TrustServiceServer).CreateTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TrustService_CreateTrustedClusterV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TrustServiceServer).CreateTrustedClusterV2(ctx, req.(*CreateTrustedClusterV2Request)) + } + return interceptor(ctx, in, info, handler) +} + +func _TrustService_UpdateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateTrustedClusterV2Request) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TrustServiceServer).UpdateTrustedClusterV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TrustService_UpdateTrustedClusterV2_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TrustServiceServer).UpdateTrustedClusterV2(ctx, req.(*UpdateTrustedClusterV2Request)) + } + return interceptor(ctx, in, info, handler) +} + // TrustService_ServiceDesc is the grpc.ServiceDesc for TrustService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -379,6 +487,18 @@ var TrustService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GenerateHostCert", Handler: _TrustService_GenerateHostCert_Handler, }, + { + MethodName: "UpsertTrustedClusterV2", + Handler: _TrustService_UpsertTrustedClusterV2_Handler, + }, + { + MethodName: "CreateTrustedClusterV2", + Handler: _TrustService_CreateTrustedClusterV2_Handler, + }, + { + MethodName: "UpdateTrustedClusterV2", + Handler: _TrustService_UpdateTrustedClusterV2_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "teleport/trust/v1/trust_service.proto", diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 128bfdf7bd748..8b2c57b858725 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -3277,19 +3277,12 @@ service AuthService { rpc GetTrustedCluster(types.ResourceRequest) returns (types.TrustedClusterV2); // GetTrustedClusters gets all current Trusted Cluster resources. rpc GetTrustedClusters(google.protobuf.Empty) returns (types.TrustedClusterV2List); - // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use UpsertTrustedClusterV2 instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. rpc UpsertTrustedCluster(types.TrustedClusterV2) returns (types.TrustedClusterV2) { option deprecated = true; } - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - rpc UpsertTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - rpc CreateTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - rpc UpdateTrustedClusterV2(types.TrustedClusterV2) returns (types.TrustedClusterV2); // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. rpc DeleteTrustedCluster(types.ResourceRequest) returns (google.protobuf.Empty); diff --git a/api/proto/teleport/trust/v1/trust_service.proto b/api/proto/teleport/trust/v1/trust_service.proto index a6b3fc3282c44..8e67bf87de281 100644 --- a/api/proto/teleport/trust/v1/trust_service.proto +++ b/api/proto/teleport/trust/v1/trust_service.proto @@ -40,6 +40,31 @@ service TrustService { // GenerateHostCert takes a public key in the OpenSSH `authorized_keys` format and returns // a SSH certificate signed by the Host CA. rpc GenerateHostCert(GenerateHostCertRequest) returns (GenerateHostCertResponse); + + // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. + rpc UpsertTrustedClusterV2(UpsertTrustedClusterV2Request) returns (types.TrustedClusterV2); + // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. + rpc CreateTrustedClusterV2(CreateTrustedClusterV2Request) returns (types.TrustedClusterV2); + // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. + rpc UpdateTrustedClusterV2(UpdateTrustedClusterV2Request) returns (types.TrustedClusterV2); +} + +// Request for UpsertTrustedClusterV2. +message UpsertTrustedClusterV2Request { + // TrustedCluster specifies a Trusted Cluster resource. + types.TrustedClusterV2 trusted_cluster = 1; +} + +// Request for CreateTrustedClusterV2. +message CreateTrustedClusterV2Request { + // TrustedCluster specifies a Trusted Cluster resource. + types.TrustedClusterV2 trusted_cluster = 1; +} + +// Request for UpdateTrustedClusterV2. +message UpdateTrustedClusterV2Request { + // TrustedCluster specifies a Trusted Cluster resource. + types.TrustedClusterV2 trusted_cluster = 1; } // Request for GetCertAuthority diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 5412b708ceca8..dc0eb25dc7032 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -2986,66 +2986,6 @@ func (g *GRPCServer) UpsertTrustedCluster(ctx context.Context, cluster *types.Tr return trustedClusterV2, nil } -// UpsertTrustedClusterV2 upserts a Trusted Cluster. -func (g *GRPCServer) UpsertTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - if err = services.ValidateTrustedCluster(cluster); err != nil { - return nil, trace.Wrap(err) - } - tc, err := auth.ServerWithRoles.UpsertTrustedClusterV2(ctx, cluster) - if err != nil { - return nil, trace.Wrap(err) - } - trustedClusterV2, ok := tc.(*types.TrustedClusterV2) - if !ok { - return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) - } - return trustedClusterV2, nil -} - -// CreateTrustedClusterV2 creates a Trusted Cluster. -func (g *GRPCServer) CreateTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - if err = services.ValidateTrustedCluster(cluster); err != nil { - return nil, trace.Wrap(err) - } - tc, err := auth.ServerWithRoles.CreateTrustedClusterV2(ctx, cluster) - if err != nil { - return nil, trace.Wrap(err) - } - trustedClusterV2, ok := tc.(*types.TrustedClusterV2) - if !ok { - return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) - } - return trustedClusterV2, nil -} - -// UpdateTrustedClusterV2 updates a Trusted Cluster. -func (g *GRPCServer) UpdateTrustedClusterV2(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { - auth, err := g.authenticate(ctx) - if err != nil { - return nil, trace.Wrap(err) - } - if err = services.ValidateTrustedCluster(cluster); err != nil { - return nil, trace.Wrap(err) - } - tc, err := auth.ServerWithRoles.UpdateTrustedClusterV2(ctx, cluster) - if err != nil { - return nil, trace.Wrap(err) - } - trustedClusterV2, ok := tc.(*types.TrustedClusterV2) - if !ok { - return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) - } - return trustedClusterV2, nil -} - // DeleteTrustedCluster deletes a Trusted Cluster by name. func (g *GRPCServer) DeleteTrustedCluster(ctx context.Context, req *types.ResourceRequest) (*emptypb.Empty, error) { auth, err := g.authenticate(ctx) diff --git a/lib/auth/trust/trustv1/service.go b/lib/auth/trust/trustv1/service.go index 91f99a4819be9..1cedd87ae57de 100644 --- a/lib/auth/trust/trustv1/service.go +++ b/lib/auth/trust/trustv1/service.go @@ -44,6 +44,13 @@ type authServer interface { // RotateCertAuthority starts or restarts certificate authority rotation process. RotateCertAuthority(ctx context.Context, req types.RotateRequest) error + + // UpsertTrustedClusterV2 upserts a Trusted Cluster. + UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) + // CreateTrustedClusterV2 creates a Trusted Cluster. + CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) + // UpdateTrustedClusterV2 updates a Trusted Cluster. + UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) } // ServiceConfig holds configuration options for diff --git a/lib/auth/trust/trustv1/service_test.go b/lib/auth/trust/trustv1/service_test.go index 152c2558c22b3..2ea61495e5fd3 100644 --- a/lib/auth/trust/trustv1/service_test.go +++ b/lib/auth/trust/trustv1/service_test.go @@ -100,6 +100,18 @@ func (f *fakeAuthServer) RotateCertAuthority(ctx context.Context, req types.Rota return f.rotateCertAuthorityData[string(req.Type)] } +func (f *fakeAuthServer) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + return nil, trace.NotImplemented("UpsertTrustedClusterV2") +} + +func (f *fakeAuthServer) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + return nil, trace.NotImplemented("CreateTrustedClusterV2") +} + +func (f *fakeAuthServer) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { + return nil, trace.NotImplemented("UpdateTrustedClusterV2") +} + type fakeChecker struct { services.AccessChecker allow map[check]bool diff --git a/lib/auth/trust/trustv1/trustedcluster.go b/lib/auth/trust/trustv1/trustedcluster.go new file mode 100644 index 0000000000000..0d3b68ae06e0a --- /dev/null +++ b/lib/auth/trust/trustv1/trustedcluster.go @@ -0,0 +1,124 @@ +/* + * 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 trustv1 + +import ( + "context" + + "github.com/gravitational/trace" + + trustpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/trust/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/modules" + "github.com/gravitational/teleport/lib/services" +) + +// UpsertTrustedClusterV2 upserts a Trusted Cluster. +func (s *Service) UpsertTrustedClusterV2(ctx context.Context, req *trustpb.UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + authCtx, err := s.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.CheckAccessToKind(types.KindTrustedCluster, types.VerbCreate, types.VerbUpdate); err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { + return nil, trace.Wrap(err) + } + + tc, err := s.authServer.UpsertTrustedClusterV2(ctx, req.GetTrustedCluster()) + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} + +// CreateTrustedClusterV2 creates a Trusted Cluster. +func (s *Service) CreateTrustedClusterV2(ctx context.Context, req *trustpb.CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + authCtx, err := s.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.CheckAccessToKind(types.KindTrustedCluster, types.VerbCreate); err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { + return nil, trace.Wrap(err) + } + tc, err := s.authServer.CreateTrustedClusterV2(ctx, req.GetTrustedCluster()) + if err != nil { + return nil, trace.Wrap(err) + } + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster. +func (s *Service) UpdateTrustedClusterV2(ctx context.Context, req *trustpb.UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { + // Don't allow a Cloud tenant to be a leaf cluster. + if modules.GetModules().Features().Cloud { + return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") + } + + authCtx, err := s.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.CheckAccessToKind(types.KindTrustedCluster, types.VerbUpdate); err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + + if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { + return nil, trace.Wrap(err) + } + tc, err := s.authServer.UpdateTrustedClusterV2(ctx, req.GetTrustedCluster()) + if err != nil { + return nil, trace.Wrap(err) + } + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + if !ok { + return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) + } + return trustedClusterV2, nil +} From 4a4bb8df54f1654e36b235810d370b6489926d36 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Wed, 11 Dec 2024 17:40:48 -0800 Subject: [PATCH 14/19] Update comment --- lib/auth/grpcserver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index dc0eb25dc7032..56792fd5af03a 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -2965,7 +2965,7 @@ func (g *GRPCServer) GetTrustedClusters(ctx context.Context, _ *emptypb.Empty) ( // UpsertTrustedCluster upserts a Trusted Cluster. // -// Deprecated: Use [GRPCServer.UpsertTrustedClusterV2] instead. +// Deprecated: Use UpsertTrustedClusterV2 instead. func (g *GRPCServer) UpsertTrustedCluster(ctx context.Context, cluster *types.TrustedClusterV2) (*types.TrustedClusterV2, error) { auth, err := g.authenticate(ctx) if err != nil { From 647029112ffef85d54fcdcb741ab82170dd26f35 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Thu, 12 Dec 2024 12:04:04 -0800 Subject: [PATCH 15/19] Drop V2 suffix --- api/client/client.go | 12 +- .../go/teleport/trust/v1/trust_service.pb.go | 419 +++++++++--------- .../trust/v1/trust_service_grpc.pb.go | 96 ++-- .../teleport/trust/v1/trust_service.proto | 24 +- lib/auth/auth_with_roles.go | 58 --- lib/auth/trust/trustv1/service_test.go | 6 +- lib/auth/trust/trustv1/trustedcluster.go | 16 +- lib/auth/trust/trustv1/trustedcluster_test.go | 281 ++++++++++++ lib/auth/trustedcluster_test.go | 32 -- 9 files changed, 568 insertions(+), 376 deletions(-) create mode 100644 lib/auth/trust/trustv1/trustedcluster_test.go diff --git a/api/client/client.go b/api/client/client.go index e4d4e553602fe..9d21342d61f5d 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2305,8 +2305,8 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - req := &trustpb.UpsertTrustedClusterV2Request{TrustedCluster: trustedClusterV2} - resp, err := c.TrustClient().UpsertTrustedClusterV2(ctx, req) + req := &trustpb.UpsertTrustedClusterRequest{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().UpsertTrustedCluster(ctx, req) if err != nil { return nil, trace.Wrap(err) } @@ -2319,8 +2319,8 @@ func (c *Client) CreateTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - req := &trustpb.CreateTrustedClusterV2Request{TrustedCluster: trustedClusterV2} - resp, err := c.TrustClient().CreateTrustedClusterV2(ctx, req) + req := &trustpb.CreateTrustedClusterRequest{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().CreateTrustedCluster(ctx, req) if err != nil { return nil, trace.Wrap(err) } @@ -2333,8 +2333,8 @@ func (c *Client) UpdateTrustedClusterV2(ctx context.Context, trustedCluster type if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) } - req := &trustpb.UpdateTrustedClusterV2Request{TrustedCluster: trustedClusterV2} - resp, err := c.TrustClient().UpdateTrustedClusterV2(ctx, req) + req := &trustpb.UpdateTrustedClusterRequest{TrustedCluster: trustedClusterV2} + resp, err := c.TrustClient().UpdateTrustedCluster(ctx, req) if err != nil { return nil, trace.Wrap(err) } diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go index 2eab8875c3536..8125302193a11 100644 --- a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go +++ b/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go @@ -38,8 +38,8 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Request for UpsertTrustedClusterV2. -type UpsertTrustedClusterV2Request struct { +// Request for UpsertTrustedCluster. +type UpsertTrustedClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -48,20 +48,20 @@ type UpsertTrustedClusterV2Request struct { TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` } -func (x *UpsertTrustedClusterV2Request) Reset() { - *x = UpsertTrustedClusterV2Request{} +func (x *UpsertTrustedClusterRequest) Reset() { + *x = UpsertTrustedClusterRequest{} mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *UpsertTrustedClusterV2Request) String() string { +func (x *UpsertTrustedClusterRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpsertTrustedClusterV2Request) ProtoMessage() {} +func (*UpsertTrustedClusterRequest) ProtoMessage() {} -func (x *UpsertTrustedClusterV2Request) ProtoReflect() protoreflect.Message { +func (x *UpsertTrustedClusterRequest) ProtoReflect() protoreflect.Message { mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -73,20 +73,20 @@ func (x *UpsertTrustedClusterV2Request) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpsertTrustedClusterV2Request.ProtoReflect.Descriptor instead. -func (*UpsertTrustedClusterV2Request) Descriptor() ([]byte, []int) { +// Deprecated: Use UpsertTrustedClusterRequest.ProtoReflect.Descriptor instead. +func (*UpsertTrustedClusterRequest) Descriptor() ([]byte, []int) { return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{0} } -func (x *UpsertTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { +func (x *UpsertTrustedClusterRequest) GetTrustedCluster() *types.TrustedClusterV2 { if x != nil { return x.TrustedCluster } return nil } -// Request for CreateTrustedClusterV2. -type CreateTrustedClusterV2Request struct { +// Request for CreateTrustedCluster. +type CreateTrustedClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -95,20 +95,20 @@ type CreateTrustedClusterV2Request struct { TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` } -func (x *CreateTrustedClusterV2Request) Reset() { - *x = CreateTrustedClusterV2Request{} +func (x *CreateTrustedClusterRequest) Reset() { + *x = CreateTrustedClusterRequest{} mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *CreateTrustedClusterV2Request) String() string { +func (x *CreateTrustedClusterRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateTrustedClusterV2Request) ProtoMessage() {} +func (*CreateTrustedClusterRequest) ProtoMessage() {} -func (x *CreateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { +func (x *CreateTrustedClusterRequest) ProtoReflect() protoreflect.Message { mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -120,20 +120,20 @@ func (x *CreateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateTrustedClusterV2Request.ProtoReflect.Descriptor instead. -func (*CreateTrustedClusterV2Request) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateTrustedClusterRequest.ProtoReflect.Descriptor instead. +func (*CreateTrustedClusterRequest) Descriptor() ([]byte, []int) { return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{1} } -func (x *CreateTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { +func (x *CreateTrustedClusterRequest) GetTrustedCluster() *types.TrustedClusterV2 { if x != nil { return x.TrustedCluster } return nil } -// Request for UpdateTrustedClusterV2. -type UpdateTrustedClusterV2Request struct { +// Request for UpdateTrustedCluster. +type UpdateTrustedClusterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -142,20 +142,20 @@ type UpdateTrustedClusterV2Request struct { TrustedCluster *types.TrustedClusterV2 `protobuf:"bytes,1,opt,name=trusted_cluster,json=trustedCluster,proto3" json:"trusted_cluster,omitempty"` } -func (x *UpdateTrustedClusterV2Request) Reset() { - *x = UpdateTrustedClusterV2Request{} +func (x *UpdateTrustedClusterRequest) Reset() { + *x = UpdateTrustedClusterRequest{} mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *UpdateTrustedClusterV2Request) String() string { +func (x *UpdateTrustedClusterRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateTrustedClusterV2Request) ProtoMessage() {} +func (*UpdateTrustedClusterRequest) ProtoMessage() {} -func (x *UpdateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { +func (x *UpdateTrustedClusterRequest) ProtoReflect() protoreflect.Message { mi := &file_teleport_trust_v1_trust_service_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -167,12 +167,12 @@ func (x *UpdateTrustedClusterV2Request) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateTrustedClusterV2Request.ProtoReflect.Descriptor instead. -func (*UpdateTrustedClusterV2Request) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateTrustedClusterRequest.ProtoReflect.Descriptor instead. +func (*UpdateTrustedClusterRequest) Descriptor() ([]byte, []int) { return file_teleport_trust_v1_trust_service_proto_rawDescGZIP(), []int{2} } -func (x *UpdateTrustedClusterV2Request) GetTrustedCluster() *types.TrustedClusterV2 { +func (x *UpdateTrustedClusterRequest) GetTrustedCluster() *types.TrustedClusterV2 { if x != nil { return x.TrustedCluster } @@ -891,184 +891,183 @@ var file_teleport_trust_v1_trust_service_proto_rawDesc = []byte{ 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, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1d, 0x55, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5f, 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x5f, 0x0a, 0x1b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x5f, 0x0a, + 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, - 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x61, - 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, - 0x32, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, - 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x56, 0x32, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x64, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x13, - 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, - 0x5f, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 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, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x56, 0x32, 0x22, 0x48, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x5b, - 0x0a, 0x1a, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, - 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, - 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, 0x52, 0x0d, 0x63, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xe6, 0x01, 0x0a, 0x1a, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, - 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, - 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, - 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 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, 0x0d, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, - 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, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, - 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x18, 0x03, 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, 0x07, 0x73, 0x74, - 0x61, 0x6e, 0x64, 0x62, 0x79, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, - 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x22, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, - 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 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, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x52, 0x6f, 0x74, - 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe5, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, - 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, - 0x74, 0x6c, 0x18, 0x07, 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, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x43, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, - 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x32, 0xb6, 0x08, - 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x66, + 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x50, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x64, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x13, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x76, 0x32, 0x18, 0x01, 0x20, + 0x03, 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, 0x52, 0x11, 0x63, 0x65, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x56, 0x32, 0x22, 0x48, + 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x1a, 0x55, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 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, 0x12, 0x71, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x74, + 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xe6, 0x01, 0x0a, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, + 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 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, 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, + 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xce, + 0x01, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 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, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x02, 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, 0x0d, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x62, 0x79, 0x18, 0x03, 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, 0x07, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x22, + 0x1d, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, + 0x0a, 0x22, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 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, 0x52, 0x0d, 0x63, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x22, 0x25, 0x0a, 0x23, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x07, 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, 0x03, 0x74, + 0x74, 0x6c, 0x22, 0x43, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, + 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x32, 0xaa, 0x08, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x65, 0x6c, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 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, 0x5c, 0x0a, 0x13, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x74, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, - 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, + 0x12, 0x71, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, + 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x65, 0x72, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 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, 0x5c, 0x0a, 0x13, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, + 0x74, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x1b, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x35, 0x2e, 0x74, 0x65, - 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, - 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, - 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, - 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, - 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x63, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, - 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, - 0x32, 0x12, 0x63, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, - 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x12, 0x30, 0x2e, 0x74, 0x65, + 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, + 0x65, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, + 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5f, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x56, 0x32, 0x12, 0x5f, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x56, 0x32, 0x12, 0x5f, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x56, 0x32, 0x42, 0x4e, 0x5a, 0x4c, 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, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x74, - 0x72, 0x75, 0x73, 0x74, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x56, 0x32, 0x42, 0x4e, 0x5a, 0x4c, 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, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1085,9 +1084,9 @@ func file_teleport_trust_v1_trust_service_proto_rawDescGZIP() []byte { var file_teleport_trust_v1_trust_service_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_teleport_trust_v1_trust_service_proto_goTypes = []any{ - (*UpsertTrustedClusterV2Request)(nil), // 0: teleport.trust.v1.UpsertTrustedClusterV2Request - (*CreateTrustedClusterV2Request)(nil), // 1: teleport.trust.v1.CreateTrustedClusterV2Request - (*UpdateTrustedClusterV2Request)(nil), // 2: teleport.trust.v1.UpdateTrustedClusterV2Request + (*UpsertTrustedClusterRequest)(nil), // 0: teleport.trust.v1.UpsertTrustedClusterRequest + (*CreateTrustedClusterRequest)(nil), // 1: teleport.trust.v1.CreateTrustedClusterRequest + (*UpdateTrustedClusterRequest)(nil), // 2: teleport.trust.v1.UpdateTrustedClusterRequest (*GetCertAuthorityRequest)(nil), // 3: teleport.trust.v1.GetCertAuthorityRequest (*GetCertAuthoritiesRequest)(nil), // 4: teleport.trust.v1.GetCertAuthoritiesRequest (*GetCertAuthoritiesResponse)(nil), // 5: teleport.trust.v1.GetCertAuthoritiesResponse @@ -1107,9 +1106,9 @@ var file_teleport_trust_v1_trust_service_proto_goTypes = []any{ (*emptypb.Empty)(nil), // 19: google.protobuf.Empty } var file_teleport_trust_v1_trust_service_proto_depIdxs = []int32{ - 15, // 0: teleport.trust.v1.UpsertTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 - 15, // 1: teleport.trust.v1.CreateTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 - 15, // 2: teleport.trust.v1.UpdateTrustedClusterV2Request.trusted_cluster:type_name -> types.TrustedClusterV2 + 15, // 0: teleport.trust.v1.UpsertTrustedClusterRequest.trusted_cluster:type_name -> types.TrustedClusterV2 + 15, // 1: teleport.trust.v1.CreateTrustedClusterRequest.trusted_cluster:type_name -> types.TrustedClusterV2 + 15, // 2: teleport.trust.v1.UpdateTrustedClusterRequest.trusted_cluster:type_name -> types.TrustedClusterV2 16, // 3: teleport.trust.v1.GetCertAuthoritiesResponse.cert_authorities_v2:type_name -> types.CertAuthorityV2 16, // 4: teleport.trust.v1.UpsertCertAuthorityRequest.cert_authority:type_name -> types.CertAuthorityV2 17, // 5: teleport.trust.v1.RotateCertAuthorityRequest.grace_period:type_name -> google.protobuf.Duration @@ -1126,9 +1125,9 @@ var file_teleport_trust_v1_trust_service_proto_depIdxs = []int32{ 8, // 16: teleport.trust.v1.TrustService.RotateCertAuthority:input_type -> teleport.trust.v1.RotateCertAuthorityRequest 11, // 17: teleport.trust.v1.TrustService.RotateExternalCertAuthority:input_type -> teleport.trust.v1.RotateExternalCertAuthorityRequest 13, // 18: teleport.trust.v1.TrustService.GenerateHostCert:input_type -> teleport.trust.v1.GenerateHostCertRequest - 0, // 19: teleport.trust.v1.TrustService.UpsertTrustedClusterV2:input_type -> teleport.trust.v1.UpsertTrustedClusterV2Request - 1, // 20: teleport.trust.v1.TrustService.CreateTrustedClusterV2:input_type -> teleport.trust.v1.CreateTrustedClusterV2Request - 2, // 21: teleport.trust.v1.TrustService.UpdateTrustedClusterV2:input_type -> teleport.trust.v1.UpdateTrustedClusterV2Request + 0, // 19: teleport.trust.v1.TrustService.UpsertTrustedCluster:input_type -> teleport.trust.v1.UpsertTrustedClusterRequest + 1, // 20: teleport.trust.v1.TrustService.CreateTrustedCluster:input_type -> teleport.trust.v1.CreateTrustedClusterRequest + 2, // 21: teleport.trust.v1.TrustService.UpdateTrustedCluster:input_type -> teleport.trust.v1.UpdateTrustedClusterRequest 16, // 22: teleport.trust.v1.TrustService.GetCertAuthority:output_type -> types.CertAuthorityV2 5, // 23: teleport.trust.v1.TrustService.GetCertAuthorities:output_type -> teleport.trust.v1.GetCertAuthoritiesResponse 19, // 24: teleport.trust.v1.TrustService.DeleteCertAuthority:output_type -> google.protobuf.Empty @@ -1136,9 +1135,9 @@ var file_teleport_trust_v1_trust_service_proto_depIdxs = []int32{ 10, // 26: teleport.trust.v1.TrustService.RotateCertAuthority:output_type -> teleport.trust.v1.RotateCertAuthorityResponse 12, // 27: teleport.trust.v1.TrustService.RotateExternalCertAuthority:output_type -> teleport.trust.v1.RotateExternalCertAuthorityResponse 14, // 28: teleport.trust.v1.TrustService.GenerateHostCert:output_type -> teleport.trust.v1.GenerateHostCertResponse - 15, // 29: teleport.trust.v1.TrustService.UpsertTrustedClusterV2:output_type -> types.TrustedClusterV2 - 15, // 30: teleport.trust.v1.TrustService.CreateTrustedClusterV2:output_type -> types.TrustedClusterV2 - 15, // 31: teleport.trust.v1.TrustService.UpdateTrustedClusterV2:output_type -> types.TrustedClusterV2 + 15, // 29: teleport.trust.v1.TrustService.UpsertTrustedCluster:output_type -> types.TrustedClusterV2 + 15, // 30: teleport.trust.v1.TrustService.CreateTrustedCluster:output_type -> types.TrustedClusterV2 + 15, // 31: teleport.trust.v1.TrustService.UpdateTrustedCluster:output_type -> types.TrustedClusterV2 22, // [22:32] is the sub-list for method output_type 12, // [12:22] is the sub-list for method input_type 12, // [12:12] is the sub-list for extension type_name diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go index 8f910f648a8b1..4cdc57fe369e1 100644 --- a/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go +++ b/api/gen/proto/go/teleport/trust/v1/trust_service_grpc.pb.go @@ -42,9 +42,9 @@ const ( TrustService_RotateCertAuthority_FullMethodName = "/teleport.trust.v1.TrustService/RotateCertAuthority" TrustService_RotateExternalCertAuthority_FullMethodName = "/teleport.trust.v1.TrustService/RotateExternalCertAuthority" TrustService_GenerateHostCert_FullMethodName = "/teleport.trust.v1.TrustService/GenerateHostCert" - TrustService_UpsertTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/UpsertTrustedClusterV2" - TrustService_CreateTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/CreateTrustedClusterV2" - TrustService_UpdateTrustedClusterV2_FullMethodName = "/teleport.trust.v1.TrustService/UpdateTrustedClusterV2" + TrustService_UpsertTrustedCluster_FullMethodName = "/teleport.trust.v1.TrustService/UpsertTrustedCluster" + TrustService_CreateTrustedCluster_FullMethodName = "/teleport.trust.v1.TrustService/CreateTrustedCluster" + TrustService_UpdateTrustedCluster_FullMethodName = "/teleport.trust.v1.TrustService/UpdateTrustedCluster" ) // TrustServiceClient is the client API for TrustService service. @@ -68,12 +68,12 @@ type TrustServiceClient interface { // GenerateHostCert takes a public key in the OpenSSH `authorized_keys` format and returns // a SSH certificate signed by the Host CA. GenerateHostCert(ctx context.Context, in *GenerateHostCertRequest, opts ...grpc.CallOption) (*GenerateHostCertResponse, error) - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - UpsertTrustedClusterV2(ctx context.Context, in *UpsertTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - CreateTrustedClusterV2(ctx context.Context, in *CreateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - UpdateTrustedClusterV2(ctx context.Context, in *UpdateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // UpsertTrustedCluster upserts a Trusted Cluster in a backend. + UpsertTrustedCluster(ctx context.Context, in *UpsertTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // CreateTrustedCluster creates a Trusted Cluster in a backend. + CreateTrustedCluster(ctx context.Context, in *CreateTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) + // UpdateTrustedCluster updates a Trusted Cluster in a backend. + UpdateTrustedCluster(ctx context.Context, in *UpdateTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) } type trustServiceClient struct { @@ -154,30 +154,30 @@ func (c *trustServiceClient) GenerateHostCert(ctx context.Context, in *GenerateH return out, nil } -func (c *trustServiceClient) UpsertTrustedClusterV2(ctx context.Context, in *UpsertTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { +func (c *trustServiceClient) UpsertTrustedCluster(ctx context.Context, in *UpsertTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, TrustService_UpsertTrustedClusterV2_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, TrustService_UpsertTrustedCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *trustServiceClient) CreateTrustedClusterV2(ctx context.Context, in *CreateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { +func (c *trustServiceClient) CreateTrustedCluster(ctx context.Context, in *CreateTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, TrustService_CreateTrustedClusterV2_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, TrustService_CreateTrustedCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *trustServiceClient) UpdateTrustedClusterV2(ctx context.Context, in *UpdateTrustedClusterV2Request, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { +func (c *trustServiceClient) UpdateTrustedCluster(ctx context.Context, in *UpdateTrustedClusterRequest, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(types.TrustedClusterV2) - err := c.cc.Invoke(ctx, TrustService_UpdateTrustedClusterV2_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, TrustService_UpdateTrustedCluster_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -205,12 +205,12 @@ type TrustServiceServer interface { // GenerateHostCert takes a public key in the OpenSSH `authorized_keys` format and returns // a SSH certificate signed by the Host CA. GenerateHostCert(context.Context, *GenerateHostCertRequest) (*GenerateHostCertResponse, error) - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - UpsertTrustedClusterV2(context.Context, *UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - CreateTrustedClusterV2(context.Context, *CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - UpdateTrustedClusterV2(context.Context, *UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) + // UpsertTrustedCluster upserts a Trusted Cluster in a backend. + UpsertTrustedCluster(context.Context, *UpsertTrustedClusterRequest) (*types.TrustedClusterV2, error) + // CreateTrustedCluster creates a Trusted Cluster in a backend. + CreateTrustedCluster(context.Context, *CreateTrustedClusterRequest) (*types.TrustedClusterV2, error) + // UpdateTrustedCluster updates a Trusted Cluster in a backend. + UpdateTrustedCluster(context.Context, *UpdateTrustedClusterRequest) (*types.TrustedClusterV2, error) mustEmbedUnimplementedTrustServiceServer() } @@ -242,14 +242,14 @@ func (UnimplementedTrustServiceServer) RotateExternalCertAuthority(context.Conte func (UnimplementedTrustServiceServer) GenerateHostCert(context.Context, *GenerateHostCertRequest) (*GenerateHostCertResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GenerateHostCert not implemented") } -func (UnimplementedTrustServiceServer) UpsertTrustedClusterV2(context.Context, *UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedClusterV2 not implemented") +func (UnimplementedTrustServiceServer) UpsertTrustedCluster(context.Context, *UpsertTrustedClusterRequest) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpsertTrustedCluster not implemented") } -func (UnimplementedTrustServiceServer) CreateTrustedClusterV2(context.Context, *CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateTrustedClusterV2 not implemented") +func (UnimplementedTrustServiceServer) CreateTrustedCluster(context.Context, *CreateTrustedClusterRequest) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTrustedCluster not implemented") } -func (UnimplementedTrustServiceServer) UpdateTrustedClusterV2(context.Context, *UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateTrustedClusterV2 not implemented") +func (UnimplementedTrustServiceServer) UpdateTrustedCluster(context.Context, *UpdateTrustedClusterRequest) (*types.TrustedClusterV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateTrustedCluster not implemented") } func (UnimplementedTrustServiceServer) mustEmbedUnimplementedTrustServiceServer() {} func (UnimplementedTrustServiceServer) testEmbeddedByValue() {} @@ -398,56 +398,56 @@ func _TrustService_GenerateHostCert_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } -func _TrustService_UpsertTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpsertTrustedClusterV2Request) +func _TrustService_UpsertTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpsertTrustedClusterRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(TrustServiceServer).UpsertTrustedClusterV2(ctx, in) + return srv.(TrustServiceServer).UpsertTrustedCluster(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: TrustService_UpsertTrustedClusterV2_FullMethodName, + FullMethod: TrustService_UpsertTrustedCluster_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TrustServiceServer).UpsertTrustedClusterV2(ctx, req.(*UpsertTrustedClusterV2Request)) + return srv.(TrustServiceServer).UpsertTrustedCluster(ctx, req.(*UpsertTrustedClusterRequest)) } return interceptor(ctx, in, info, handler) } -func _TrustService_CreateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTrustedClusterV2Request) +func _TrustService_CreateTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTrustedClusterRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(TrustServiceServer).CreateTrustedClusterV2(ctx, in) + return srv.(TrustServiceServer).CreateTrustedCluster(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: TrustService_CreateTrustedClusterV2_FullMethodName, + FullMethod: TrustService_CreateTrustedCluster_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TrustServiceServer).CreateTrustedClusterV2(ctx, req.(*CreateTrustedClusterV2Request)) + return srv.(TrustServiceServer).CreateTrustedCluster(ctx, req.(*CreateTrustedClusterRequest)) } return interceptor(ctx, in, info, handler) } -func _TrustService_UpdateTrustedClusterV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTrustedClusterV2Request) +func _TrustService_UpdateTrustedCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateTrustedClusterRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(TrustServiceServer).UpdateTrustedClusterV2(ctx, in) + return srv.(TrustServiceServer).UpdateTrustedCluster(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: TrustService_UpdateTrustedClusterV2_FullMethodName, + FullMethod: TrustService_UpdateTrustedCluster_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TrustServiceServer).UpdateTrustedClusterV2(ctx, req.(*UpdateTrustedClusterV2Request)) + return srv.(TrustServiceServer).UpdateTrustedCluster(ctx, req.(*UpdateTrustedClusterRequest)) } return interceptor(ctx, in, info, handler) } @@ -488,16 +488,16 @@ var TrustService_ServiceDesc = grpc.ServiceDesc{ Handler: _TrustService_GenerateHostCert_Handler, }, { - MethodName: "UpsertTrustedClusterV2", - Handler: _TrustService_UpsertTrustedClusterV2_Handler, + MethodName: "UpsertTrustedCluster", + Handler: _TrustService_UpsertTrustedCluster_Handler, }, { - MethodName: "CreateTrustedClusterV2", - Handler: _TrustService_CreateTrustedClusterV2_Handler, + MethodName: "CreateTrustedCluster", + Handler: _TrustService_CreateTrustedCluster_Handler, }, { - MethodName: "UpdateTrustedClusterV2", - Handler: _TrustService_UpdateTrustedClusterV2_Handler, + MethodName: "UpdateTrustedCluster", + Handler: _TrustService_UpdateTrustedCluster_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/api/proto/teleport/trust/v1/trust_service.proto b/api/proto/teleport/trust/v1/trust_service.proto index 8e67bf87de281..7d8748f2375f7 100644 --- a/api/proto/teleport/trust/v1/trust_service.proto +++ b/api/proto/teleport/trust/v1/trust_service.proto @@ -41,28 +41,28 @@ service TrustService { // a SSH certificate signed by the Host CA. rpc GenerateHostCert(GenerateHostCertRequest) returns (GenerateHostCertResponse); - // UpsertTrustedClusterV2 upserts a Trusted Cluster in a backend. - rpc UpsertTrustedClusterV2(UpsertTrustedClusterV2Request) returns (types.TrustedClusterV2); - // CreateTrustedClusterV2 creates a Trusted Cluster in a backend. - rpc CreateTrustedClusterV2(CreateTrustedClusterV2Request) returns (types.TrustedClusterV2); - // UpdateTrustedClusterV2 updates a Trusted Cluster in a backend. - rpc UpdateTrustedClusterV2(UpdateTrustedClusterV2Request) returns (types.TrustedClusterV2); + // UpsertTrustedCluster upserts a Trusted Cluster in a backend. + rpc UpsertTrustedCluster(UpsertTrustedClusterRequest) returns (types.TrustedClusterV2); + // CreateTrustedCluster creates a Trusted Cluster in a backend. + rpc CreateTrustedCluster(CreateTrustedClusterRequest) returns (types.TrustedClusterV2); + // UpdateTrustedCluster updates a Trusted Cluster in a backend. + rpc UpdateTrustedCluster(UpdateTrustedClusterRequest) returns (types.TrustedClusterV2); } -// Request for UpsertTrustedClusterV2. -message UpsertTrustedClusterV2Request { +// Request for UpsertTrustedCluster. +message UpsertTrustedClusterRequest { // TrustedCluster specifies a Trusted Cluster resource. types.TrustedClusterV2 trusted_cluster = 1; } -// Request for CreateTrustedClusterV2. -message CreateTrustedClusterV2Request { +// Request for CreateTrustedCluster. +message CreateTrustedClusterRequest { // TrustedCluster specifies a Trusted Cluster resource. types.TrustedClusterV2 trusted_cluster = 1; } -// Request for UpdateTrustedClusterV2. -message UpdateTrustedClusterV2Request { +// Request for UpdateTrustedCluster. +message UpdateTrustedClusterRequest { // TrustedCluster specifies a Trusted Cluster resource. types.TrustedClusterV2 trusted_cluster = 1; } diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 0f0a31221a446..fa4deaeab7c51 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -4962,64 +4962,6 @@ func (a *ServerWithRoles) UpsertTrustedCluster(ctx context.Context, tc types.Tru return a.authServer.UpsertTrustedCluster(ctx, tc) } -// UpsertTrustedClusterV2 creates or updates a trusted cluster while also ensuring that the -// resource name and cluster name match. -func (a *ServerWithRoles) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - // Don't allow a Cloud tenant to be a leaf cluster. - if modules.GetModules().Features().Cloud { - return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") - } - - if err := a.action(types.KindTrustedCluster, types.VerbCreate, types.VerbUpdate); err != nil { - return nil, trace.Wrap(err) - } - - if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { - return nil, trace.Wrap(err) - } - - upserted, err := a.authServer.UpsertTrustedClusterV2(ctx, tc) - return upserted, trace.Wrap(err) -} - -// CreateTrustedClusterV2 creates a Trusted Cluster. -func (a *ServerWithRoles) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - // Don't allow a Cloud tenant to be a leaf cluster. - if modules.GetModules().Features().Cloud { - return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") - } - - if err := a.action(types.KindTrustedCluster, types.VerbCreate); err != nil { - return nil, trace.Wrap(err) - } - - if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { - return nil, trace.Wrap(err) - } - - created, err := a.authServer.CreateTrustedClusterV2(ctx, tc) - return created, trace.Wrap(err) -} - -// UpdateTrustedClusterV2 updates a Trusted Cluster. -func (a *ServerWithRoles) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - // Don't allow a Cloud tenant to be a leaf cluster. - if modules.GetModules().Features().Cloud { - return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") - } - - if err := a.action(types.KindTrustedCluster, types.VerbUpdate); err != nil { - return nil, trace.Wrap(err) - } - - if err := a.context.AuthorizeAdminActionAllowReusedMFA(); err != nil { - return nil, trace.Wrap(err) - } - - updated, err := a.authServer.UpdateTrustedClusterV2(ctx, tc) - return updated, trace.Wrap(err) -} - func (a *ServerWithRoles) ValidateTrustedCluster(ctx context.Context, validateRequest *authclient.ValidateTrustedClusterRequest) (*authclient.ValidateTrustedClusterResponse, error) { // Don't allow a leaf cluster to be added to a Cloud tenant. if modules.GetModules().Features().Cloud { diff --git a/lib/auth/trust/trustv1/service_test.go b/lib/auth/trust/trustv1/service_test.go index 2ea61495e5fd3..11116309ce41f 100644 --- a/lib/auth/trust/trustv1/service_test.go +++ b/lib/auth/trust/trustv1/service_test.go @@ -101,15 +101,15 @@ func (f *fakeAuthServer) RotateCertAuthority(ctx context.Context, req types.Rota } func (f *fakeAuthServer) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - return nil, trace.NotImplemented("UpsertTrustedClusterV2") + return tc, nil } func (f *fakeAuthServer) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - return nil, trace.NotImplemented("CreateTrustedClusterV2") + return tc, nil } func (f *fakeAuthServer) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { - return nil, trace.NotImplemented("UpdateTrustedClusterV2") + return tc, nil } type fakeChecker struct { diff --git a/lib/auth/trust/trustv1/trustedcluster.go b/lib/auth/trust/trustv1/trustedcluster.go index 0d3b68ae06e0a..eab9ee95a19d3 100644 --- a/lib/auth/trust/trustv1/trustedcluster.go +++ b/lib/auth/trust/trustv1/trustedcluster.go @@ -29,8 +29,8 @@ import ( "github.com/gravitational/teleport/lib/services" ) -// UpsertTrustedClusterV2 upserts a Trusted Cluster. -func (s *Service) UpsertTrustedClusterV2(ctx context.Context, req *trustpb.UpsertTrustedClusterV2Request) (*types.TrustedClusterV2, error) { +// UpsertTrustedCluster upserts a Trusted Cluster. +func (s *Service) UpsertTrustedCluster(ctx context.Context, req *trustpb.UpsertTrustedClusterRequest) (*types.TrustedClusterV2, error) { // Don't allow a Cloud tenant to be a leaf cluster. if modules.GetModules().Features().Cloud { return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") @@ -50,8 +50,10 @@ func (s *Service) UpsertTrustedClusterV2(ctx context.Context, req *trustpb.Upser if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { return nil, trace.Wrap(err) } - tc, err := s.authServer.UpsertTrustedClusterV2(ctx, req.GetTrustedCluster()) + if err != nil { + return nil, trace.Wrap(err) + } trustedClusterV2, ok := tc.(*types.TrustedClusterV2) if !ok { return nil, trace.Errorf("encountered unexpected Trusted Cluster type: %T", tc) @@ -59,8 +61,8 @@ func (s *Service) UpsertTrustedClusterV2(ctx context.Context, req *trustpb.Upser return trustedClusterV2, nil } -// CreateTrustedClusterV2 creates a Trusted Cluster. -func (s *Service) CreateTrustedClusterV2(ctx context.Context, req *trustpb.CreateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { +// CreateTrustedCluster creates a Trusted Cluster. +func (s *Service) CreateTrustedCluster(ctx context.Context, req *trustpb.CreateTrustedClusterRequest) (*types.TrustedClusterV2, error) { // Don't allow a Cloud tenant to be a leaf cluster. if modules.GetModules().Features().Cloud { return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") @@ -91,8 +93,8 @@ func (s *Service) CreateTrustedClusterV2(ctx context.Context, req *trustpb.Creat return trustedClusterV2, nil } -// UpdateTrustedClusterV2 updates a Trusted Cluster. -func (s *Service) UpdateTrustedClusterV2(ctx context.Context, req *trustpb.UpdateTrustedClusterV2Request) (*types.TrustedClusterV2, error) { +// UpdateTrustedCluster updates a Trusted Cluster. +func (s *Service) UpdateTrustedCluster(ctx context.Context, req *trustpb.UpdateTrustedClusterRequest) (*types.TrustedClusterV2, error) { // Don't allow a Cloud tenant to be a leaf cluster. if modules.GetModules().Features().Cloud { return nil, trace.NotImplemented("cloud tenants cannot be leaf clusters") diff --git a/lib/auth/trust/trustv1/trustedcluster_test.go b/lib/auth/trust/trustv1/trustedcluster_test.go new file mode 100644 index 0000000000000..b8cba02c0aae6 --- /dev/null +++ b/lib/auth/trust/trustv1/trustedcluster_test.go @@ -0,0 +1,281 @@ +/* + * 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 trustv1 + +import ( + "context" + "testing" + + "github.com/gravitational/trace" + "github.com/stretchr/testify/require" + + "github.com/gravitational/teleport" + trustpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/trust/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/modules" + "github.com/gravitational/teleport/lib/services/local" +) + +// TestCloudProhibited verifies that Trusted Clusters cannot be created or updated +// in a Cloud hosted environment. +// Tests cannot be run in parrallel because it relies on environment variables. +func TestCloudProhibited(t *testing.T) { + ctx := context.Background() + p := newTestPack(t) + + trust := local.NewCAService(p.mem) + cfg := &ServiceConfig{ + Cache: trust, + Backend: trust, + Authorizer: &fakeAuthorizer{}, + AuthServer: &fakeAuthServer{}, + } + + service, err := NewService(cfg) + require.NoError(t, err) + + modules.SetTestModules(t, &modules.TestModules{ + TestFeatures: modules.Features{Cloud: true}, + }) + + tc, err := types.NewTrustedCluster("test", types.TrustedClusterSpecV2{ + RoleMap: []types.RoleMapping{ + {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, + }, + }) + require.NoError(t, err, "creating trusted cluster resource") + + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + require.True(t, ok) + + t.Run("Cloud prohibits being a leaf cluster (UpsertTrustedCluster)", func(t *testing.T) { + _, err = service.UpsertTrustedCluster(ctx, &trustpb.UpsertTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsNotImplemented(err), "UpsertTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + }) + + t.Run("Cloud prohibits being a leaf cluster (CreateTrustedCluster)", func(t *testing.T) { + _, err = service.CreateTrustedCluster(ctx, &trustpb.CreateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsNotImplemented(err), "CreateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + }) + + t.Run("Cloud prohibits being a leaf cluster (UpdateTrustedCluster)", func(t *testing.T) { + _, err = service.UpdateTrustedCluster(ctx, &trustpb.UpdateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsNotImplemented(err), "UpdateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + }) +} + +func TestTrustedClusterRBAC(t *testing.T) { + t.Parallel() + ctx := context.Background() + p := newTestPack(t) + + tc, err := types.NewTrustedCluster("test", types.TrustedClusterSpecV2{ + RoleMap: []types.RoleMapping{ + {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, + }, + }) + require.NoError(t, err, "creating trusted cluster resource") + + trustedClusterV2, ok := tc.(*types.TrustedClusterV2) + require.True(t, ok) + + tests := []struct { + desc string + f func(t *testing.T, service *Service) + authorizer fakeAuthorizer + expectChecks []check + }{ + { + desc: "upsert no access", + f: func(t *testing.T, service *Service) { + _, err := service.UpsertTrustedCluster(ctx, &trustpb.UpsertTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsAccessDenied(err), "expected AccessDenied error, got %v", err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{}, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + { + desc: "upsert no create access", + f: func(t *testing.T, service *Service) { + _, err := service.UpsertTrustedCluster(ctx, &trustpb.UpsertTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsAccessDenied(err), "expected AccessDenied error, got %v", err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{ + {types.KindTrustedCluster, types.VerbCreate}: false, + {types.KindTrustedCluster, types.VerbUpdate}: true, + }, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + { + desc: "upsert no update access", + f: func(t *testing.T, service *Service) { + _, err := service.UpsertTrustedCluster(ctx, &trustpb.UpsertTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsAccessDenied(err), "expected AccessDenied error, got %v", err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{ + {types.KindTrustedCluster, types.VerbCreate}: true, + {types.KindTrustedCluster, types.VerbUpdate}: false, + }, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + { + desc: "upsert ok", + f: func(t *testing.T, service *Service) { + _, err := service.UpsertTrustedCluster(ctx, &trustpb.UpsertTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.NoError(t, err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{ + {types.KindTrustedCluster, types.VerbCreate}: true, + {types.KindTrustedCluster, types.VerbUpdate}: true, + }, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + { + desc: "create no access", + f: func(t *testing.T, service *Service) { + _, err := service.CreateTrustedCluster(ctx, &trustpb.CreateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsAccessDenied(err), "expected AccessDenied error, got %v", err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{}, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + }, + }, + { + desc: "create ok", + f: func(t *testing.T, service *Service) { + _, err := service.CreateTrustedCluster(ctx, &trustpb.CreateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.NoError(t, err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{ + {types.KindTrustedCluster, types.VerbCreate}: true, + }, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbCreate}, + }, + }, + { + desc: "update no access", + f: func(t *testing.T, service *Service) { + _, err := service.UpdateTrustedCluster(ctx, &trustpb.UpdateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.True(t, trace.IsAccessDenied(err), "expected AccessDenied error, got %v", err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{}, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + { + desc: "update ok", + f: func(t *testing.T, service *Service) { + _, err := service.UpdateTrustedCluster(ctx, &trustpb.UpdateTrustedClusterRequest{ + TrustedCluster: trustedClusterV2, + }) + require.NoError(t, err) + }, + authorizer: fakeAuthorizer{ + checker: &fakeChecker{ + allow: map[check]bool{ + {types.KindTrustedCluster, types.VerbUpdate}: true, + }, + }, + }, + expectChecks: []check{ + {types.KindTrustedCluster, types.VerbUpdate}, + }, + }, + } + + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + trust := local.NewCAService(p.mem) + cfg := &ServiceConfig{ + Cache: trust, + Backend: trust, + Authorizer: &test.authorizer, + AuthServer: &fakeAuthServer{}, + } + + service, err := NewService(cfg) + require.NoError(t, err) + test.f(t, service) + require.ElementsMatch(t, test.expectChecks, test.authorizer.checker.checks) + }) + } +} diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index b5bd590505a9e..bba816fe2341f 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -562,22 +562,6 @@ func TestUpsertTrustedCluster(t *testing.T) { _, err = a.UpsertTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) - t.Run("Cloud prohibits being a leaf cluster", func(t *testing.T) { - modules.SetTestModules(t, &modules.TestModules{ - TestFeatures: modules.Features{Cloud: true}, - }) - - tc, err := types.NewTrustedCluster("test", types.TrustedClusterSpecV2{ - RoleMap: []types.RoleMapping{ - {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, - }, - }) - require.NoError(t, err, "creating trusted cluster resource") - - server := ServerWithRoles{authServer: a} - _, err = server.UpsertTrustedClusterV2(ctx, tc) - require.True(t, trace.IsNotImplemented(err), "UpsertTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) - }) t.Run("Upsert unmodified trusted cluster", func(t *testing.T) { trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) require.NoError(t, err) @@ -716,22 +700,6 @@ func TestUpdateTrustedCluster(t *testing.T) { _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) - t.Run("Cloud prohibits being a leaf cluster", func(t *testing.T) { - modules.SetTestModules(t, &modules.TestModules{ - TestFeatures: modules.Features{Cloud: true}, - }) - - tc, err := types.NewTrustedCluster("test", types.TrustedClusterSpecV2{ - RoleMap: []types.RoleMapping{ - {Remote: teleport.PresetAccessRoleName, Local: []string{teleport.PresetAccessRoleName}}, - }, - }) - require.NoError(t, err, "updating trusted cluster resource") - - server := ServerWithRoles{authServer: a} - _, err = server.UpdateTrustedClusterV2(ctx, tc) - require.True(t, trace.IsNotImplemented(err), "UpdateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) - }) t.Run("Upsert unmodified trusted cluster", func(t *testing.T) { trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) require.NoError(t, err) From f8bc24255652b3faac1e05febcc5f940328c1fc2 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Thu, 12 Dec 2024 12:04:35 -0800 Subject: [PATCH 16/19] Require matching revision --- lib/auth/trustedcluster.go | 116 +++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 45 deletions(-) diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 6a5ae458e0cc9..35240f3268481 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -47,42 +47,67 @@ import ( // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - const validateNameFalse = false - upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameFalse) - return upserted, trace.Wrap(err) -} - -// UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. -// The trusted cluster resource name must match the cluster name. -func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - const validateNameTrue = true - upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameTrue) - return upserted, trace.Wrap(err) -} - -// CreateTrustedClusterV2 creates a Trusted Cluster relationship. -func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) } - _, err := a.GetTrustedCluster(ctx, tc.GetName()) - if err != nil && !trace.IsNotFound(err) { + // It is recommended to omit trusted cluster name because the trusted cluster name + // is updated to the roots cluster name during the handshake with the root cluster. + var existingCluster types.TrustedCluster + if tc.GetName() != "" { + ec, err := a.GetTrustedCluster(ctx, tc.GetName()) + if err != nil && !trace.IsNotFound(err) { + return nil, trace.Wrap(err) + } + + if err == nil { + existingCluster = ec + } + } + + // if there is no existing cluster, switch to the create case + if existingCluster == nil { + const validateNameFalse = false + return a.createTrustedCluster(ctx, tc, validateNameFalse) + } + + if err := existingCluster.CanChangeStateTo(tc); err != nil { return nil, trace.Wrap(err) } - if err == nil { - return nil, trace.AlreadyExists("trusted cluster with name %s already exists", tc.GetName()) + // always load all current CAs. even if we aren't changing them as part of + // this function, Services.UpdateTrustedCluster will only correctly activate/deactivate + // CAs that are explicitly passed to it. note that we pass in the existing cluster state + // since where CAs are stored depends on the current state of the trusted cluster. + cas, err := a.getCAsForTrustedCluster(ctx, existingCluster) + if err != nil { + return nil, trace.Wrap(err) } - const validateNameTrue = true - created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) - return created, trace.Wrap(err) + // propagate any role map changes to cas + configureCAsForTrustedCluster(tc, cas) + + // state transition is valid, set the expected revision + tc.SetRevision(existingCluster.GetRevision()) + + revision, err := a.Services.UpdateTrustedCluster(ctx, tc, cas) + if err != nil { + return nil, trace.Wrap(err) + } + + tc.SetRevision(revision) + + if err := a.onTrustedClusterWrite(ctx, tc); err != nil { + return nil, trace.Wrap(err) + } + + return tc, nil } -// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. -func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { +// UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. +// The trusted cluster resource name must match the cluster name. +func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) @@ -90,36 +115,41 @@ func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedClu existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) if err != nil { + // if there is no existing cluster, switch to the create case + if trace.IsNotFound(err) { + const validateNameTrue = true + created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) + return created, trace.Wrap(err) + } return nil, trace.Wrap(err) } + updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) return updated, trace.Wrap(err) } -// upsertTrustedCluster creates or toggles a Trusted Cluster relationship. -func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (newTrustedCluster types.TrustedCluster, returnErr error) { +// CreateTrustedClusterV2 creates a Trusted Cluster relationship. +func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) } - // It is recommended to omit trusted cluster name because the trusted cluster name - // is updated to the roots cluster name during the handshake with the root cluster. - var existingCluster types.TrustedCluster - if tc.GetName() != "" { - ec, err := a.GetTrustedCluster(ctx, tc.GetName()) - if err != nil && !trace.IsNotFound(err) { - return nil, trace.Wrap(err) - } + const validateNameTrue = true + created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) + return created, trace.Wrap(err) +} - if err == nil { - existingCluster = ec - } +// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. +func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + // verify that trusted cluster role map does not reference non-existent roles + if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { + return nil, trace.Wrap(err) } - // if there is no existing cluster, switch to the create case - if existingCluster == nil { - return a.createTrustedCluster(ctx, tc, validateName) + existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) + if err != nil { + return nil, trace.Wrap(err) } updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) @@ -153,8 +183,7 @@ func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedClust return tc, nil } -// updateTrustedCluster updates the Trusted Cluster. -func (a *Server) updateTrustedCluster(ctx context.Context, tc, existingCluster types.TrustedCluster) (types.TrustedCluster, error) { +func (a *Server) updateTrustedCluster(ctx context.Context, tc types.TrustedCluster, existingCluster types.TrustedCluster) (types.TrustedCluster, error) { if err := existingCluster.CanChangeStateTo(tc); err != nil { return nil, trace.Wrap(err) } @@ -171,9 +200,6 @@ func (a *Server) updateTrustedCluster(ctx context.Context, tc, existingCluster t // propagate any role map changes to cas configureCAsForTrustedCluster(tc, cas) - // state transition is valid, set the expected revision - tc.SetRevision(existingCluster.GetRevision()) - revision, err := a.Services.UpdateTrustedCluster(ctx, tc, cas) if err != nil { return nil, trace.Wrap(err) From fba693075e4ef4f52e9dd4f5b7f04e68e7fb818b Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 20 Dec 2024 10:28:59 -0800 Subject: [PATCH 17/19] Fix upsert/update revision --- lib/auth/trustedcluster.go | 103 ++++++++++++++++---------------- lib/auth/trustedcluster_test.go | 44 +++++++++++--- 2 files changed, 85 insertions(+), 62 deletions(-) diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 35240f3268481..7d2dac29084d5 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -47,6 +47,51 @@ import ( // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + const validateNameFalse = false + upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameFalse) + return upserted, trace.Wrap(err) +} + +// UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. +// The trusted cluster resource name must match the cluster name. +func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + const validateNameTrue = true + upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameTrue) + return upserted, trace.Wrap(err) +} + +// CreateTrustedClusterV2 creates a Trusted Cluster relationship. +func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + // verify that trusted cluster role map does not reference non-existent roles + if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { + return nil, trace.Wrap(err) + } + + const validateNameTrue = true + created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) + return created, trace.Wrap(err) +} + +// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. +func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { + // verify that trusted cluster role map does not reference non-existent roles + if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { + return nil, trace.Wrap(err) + } + + existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) + if err != nil { + return nil, trace.Wrap(err) + } + + updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) + return updated, trace.Wrap(err) +} + +// upsertTrustedCluster upserts the trusted cluster. +// If validateName is true, the trusted cluster resource name must be validated +// before the trusted cluster is created. +func (a *Server) upsertTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (types.TrustedCluster, error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) @@ -68,8 +113,7 @@ func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedClust // if there is no existing cluster, switch to the create case if existingCluster == nil { - const validateNameFalse = false - return a.createTrustedCluster(ctx, tc, validateNameFalse) + return a.createTrustedCluster(ctx, tc, validateName) } if err := existingCluster.CanChangeStateTo(tc); err != nil { @@ -105,57 +149,9 @@ func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedClust return tc, nil } -// UpsertTrustedClusterV2 creates or toggles a Trusted Cluster relationship. -// The trusted cluster resource name must match the cluster name. -func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - // verify that trusted cluster role map does not reference non-existent roles - if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { - return nil, trace.Wrap(err) - } - - existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) - if err != nil { - // if there is no existing cluster, switch to the create case - if trace.IsNotFound(err) { - const validateNameTrue = true - created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) - return created, trace.Wrap(err) - } - return nil, trace.Wrap(err) - } - - updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) - return updated, trace.Wrap(err) -} - -// CreateTrustedClusterV2 creates a Trusted Cluster relationship. -func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - // verify that trusted cluster role map does not reference non-existent roles - if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { - return nil, trace.Wrap(err) - } - - const validateNameTrue = true - created, err := a.createTrustedCluster(ctx, tc, validateNameTrue) - return created, trace.Wrap(err) -} - -// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. -func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { - // verify that trusted cluster role map does not reference non-existent roles - if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { - return nil, trace.Wrap(err) - } - - existingCluster, err := a.GetTrustedCluster(ctx, tc.GetName()) - if err != nil { - return nil, trace.Wrap(err) - } - - updated, err := a.updateTrustedCluster(ctx, tc, existingCluster) - return updated, trace.Wrap(err) -} - +// createTrustedCluster creates the trusted cluster. +// If validateName is true, the trusted cluster resource name must be validated +// before the trusted cluster is created. func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedCluster, validateName bool) (types.TrustedCluster, error) { remoteCAs, err := a.establishTrust(ctx, tc, validateName) if err != nil { @@ -183,6 +179,7 @@ func (a *Server) createTrustedCluster(ctx context.Context, tc types.TrustedClust return tc, nil } +// updateTrustedCluster updates the trusted cluster. func (a *Server) updateTrustedCluster(ctx context.Context, tc types.TrustedCluster, existingCluster types.TrustedCluster) (types.TrustedCluster, error) { if err := existingCluster.CanChangeStateTo(tc); err != nil { return nil, trace.Wrap(err) diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index bba816fe2341f..25b743bbe35bf 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -607,10 +607,11 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", } - trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) + testClusterName := "trustedcluster" + trustedCluster, err := types.NewTrustedCluster(testClusterName, trustedClusterSpec) require.NoError(t, err) - ca := suite.NewTestCA(types.UserCA, "trustedcluster") + ca := suite.NewTestCA(types.UserCA, testClusterName) configureCAsForTrustedCluster(trustedCluster, []types.CertAuthority{ca}) @@ -621,7 +622,9 @@ func TestUpdateTrustedCluster(t *testing.T) { require.NoError(t, err) t.Run("Invalid role change", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, types.TrustedClusterSpecV2{ Enabled: true, RoleMap: []types.RoleMapping{ @@ -633,11 +636,14 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.ErrorContains(t, err, "someNewRole") }) t.Run("Change role map of existing enabled trusted cluster", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, types.TrustedClusterSpecV2{ Enabled: true, RoleMap: []types.RoleMapping{ @@ -649,11 +655,14 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Disable existing trusted cluster", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, types.TrustedClusterSpecV2{ Enabled: false, RoleMap: []types.RoleMapping{ @@ -665,11 +674,14 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Change role map of existing disabled trusted cluster", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, types.TrustedClusterSpecV2{ Enabled: false, RoleMap: []types.RoleMapping{ @@ -681,11 +693,14 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Enable existing trusted cluster", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, types.TrustedClusterSpecV2{ Enabled: true, RoleMap: []types.RoleMapping{ @@ -697,13 +712,24 @@ func TestUpdateTrustedCluster(t *testing.T) { ProxyAddress: "localhost", }) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) - t.Run("Upsert unmodified trusted cluster", func(t *testing.T) { - trustedCluster, err := types.NewTrustedCluster("trustedcluster", trustedClusterSpec) + t.Run("Update unmodified trusted cluster", func(t *testing.T) { + existing, err := a.GetTrustedCluster(ctx, testClusterName) + require.NoError(t, err) + trustedCluster, err := types.NewTrustedCluster(testClusterName, trustedClusterSpec) require.NoError(t, err) + trustedCluster.SetRevision(existing.GetRevision()) _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) require.NoError(t, err) }) + + t.Run("Invalid revision", func(t *testing.T) { + trustedCluster, err := types.NewTrustedCluster(testClusterName, trustedClusterSpec) + require.NoError(t, err) + _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + require.Error(t, err) + }) } From 519c1246b48de8b045a049481b28e2bce9b127f4 Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 20 Dec 2024 12:31:33 -0800 Subject: [PATCH 18/19] Drop V2 from Create and Update APIs --- api/client/client.go | 8 ++++---- api/client/proto/authservice.pb.go | 4 ++-- .../teleport/legacy/client/proto/authservice.proto | 2 +- integration/helpers/trustedclusters.go | 4 ++-- integration/integration_test.go | 2 +- lib/auth/trust/trustv1/service.go | 8 ++++---- lib/auth/trust/trustv1/service_test.go | 4 ++-- lib/auth/trust/trustv1/trustedcluster.go | 4 ++-- lib/auth/trust/trustv1/trustedcluster_test.go | 4 ++-- lib/auth/trustedcluster.go | 9 +++++---- lib/auth/trustedcluster_test.go | 14 +++++++------- 11 files changed, 32 insertions(+), 31 deletions(-) diff --git a/api/client/client.go b/api/client/client.go index 9d21342d61f5d..e116fd30047bc 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -2313,8 +2313,8 @@ func (c *Client) UpsertTrustedClusterV2(ctx context.Context, trustedCluster type return resp, nil } -// CreateTrustedClusterV2 creates a Trusted Cluster. -func (c *Client) CreateTrustedClusterV2(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { +// CreateTrustedCluster creates a Trusted Cluster. +func (c *Client) CreateTrustedCluster(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) @@ -2327,8 +2327,8 @@ func (c *Client) CreateTrustedClusterV2(ctx context.Context, trustedCluster type return resp, nil } -// UpdateTrustedClusterV2 updates a Trusted Cluster. -func (c *Client) UpdateTrustedClusterV2(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { +// UpdateTrustedCluster updates a Trusted Cluster. +func (c *Client) UpdateTrustedCluster(ctx context.Context, trustedCluster types.TrustedCluster) (types.TrustedCluster, error) { trustedClusterV2, ok := trustedCluster.(*types.TrustedClusterV2) if !ok { return nil, trace.BadParameter("invalid type %T", trustedCluster) diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 638af537e0799..78a66cd668472 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -17458,7 +17458,7 @@ type AuthServiceClient interface { GetTrustedClusters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedCluster] instead. UpsertTrustedCluster(ctx context.Context, in *types.TrustedClusterV2, opts ...grpc.CallOption) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(ctx context.Context, in *types.ResourceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -20839,7 +20839,7 @@ type AuthServiceServer interface { GetTrustedClusters(context.Context, *emptypb.Empty) (*types.TrustedClusterV2List, error) // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedCluster] instead. UpsertTrustedCluster(context.Context, *types.TrustedClusterV2) (*types.TrustedClusterV2, error) // DeleteTrustedCluster deletes an existing Trusted Cluster in a backend by name. DeleteTrustedCluster(context.Context, *types.ResourceRequest) (*emptypb.Empty, error) diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 8b2c57b858725..1d6701ff76a51 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -3279,7 +3279,7 @@ service AuthService { rpc GetTrustedClusters(google.protobuf.Empty) returns (types.TrustedClusterV2List); // UpsertTrustedCluster upserts a Trusted Cluster in a backend. // - // Deprecated: Use [teleport.trust.v1.UpsertTrustedClusterV2] instead. + // Deprecated: Use [teleport.trust.v1.UpsertTrustedCluster] instead. rpc UpsertTrustedCluster(types.TrustedClusterV2) returns (types.TrustedClusterV2) { option deprecated = true; } diff --git a/integration/helpers/trustedclusters.go b/integration/helpers/trustedclusters.go index 9dfb484ac61a7..cfc68f571ce5d 100644 --- a/integration/helpers/trustedclusters.go +++ b/integration/helpers/trustedclusters.go @@ -61,7 +61,7 @@ func TryCreateTrustedCluster(t *testing.T, authServer *auth.Server, trustedClust ctx := context.TODO() for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) - _, err := authServer.CreateTrustedClusterV2(ctx, trustedCluster) + _, err := authServer.CreateTrustedCluster(ctx, trustedCluster) if err == nil { return } @@ -88,7 +88,7 @@ func TryUpdateTrustedCluster(t *testing.T, authServer *auth.Server, trustedClust ctx := context.TODO() for i := 0; i < 10; i++ { log.Debugf("Will create trusted cluster %v, attempt %v.", trustedCluster, i) - _, err := authServer.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err := authServer.UpdateTrustedCluster(ctx, trustedCluster) if err == nil { return } diff --git a/integration/integration_test.go b/integration/integration_test.go index 3b8d42a5aebac..1c4f734d5886c 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -3087,7 +3087,7 @@ func createAndUpdateTrustedClusters(t *testing.T, suite *integrationTestSuite, t // Note that the trusted cluster resource name must match the cluster name. // Modify the trusted cluster resource name and expect the create to fail. trustedCluster.SetName(main.Secrets.SiteName + "-cluster") - _, err = aux.Process.GetAuthServer().CreateTrustedClusterV2(ctx, trustedCluster) + _, err = aux.Process.GetAuthServer().CreateTrustedCluster(ctx, trustedCluster) require.ErrorContains(t, err, "trusted cluster resource name must be the same as the remote cluster name", "expected failure due to tc name mismatch") // Modify the trusted cluster resource name back to what it was originally. diff --git a/lib/auth/trust/trustv1/service.go b/lib/auth/trust/trustv1/service.go index 1cedd87ae57de..c0dfd564ea4a7 100644 --- a/lib/auth/trust/trustv1/service.go +++ b/lib/auth/trust/trustv1/service.go @@ -47,10 +47,10 @@ type authServer interface { // UpsertTrustedClusterV2 upserts a Trusted Cluster. UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) - // CreateTrustedClusterV2 creates a Trusted Cluster. - CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) - // UpdateTrustedClusterV2 updates a Trusted Cluster. - UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) + // CreateTrustedCluster creates a Trusted Cluster. + CreateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) + // UpdateTrustedCluster updates a Trusted Cluster. + UpdateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) } // ServiceConfig holds configuration options for diff --git a/lib/auth/trust/trustv1/service_test.go b/lib/auth/trust/trustv1/service_test.go index 11116309ce41f..23ae66a5149b5 100644 --- a/lib/auth/trust/trustv1/service_test.go +++ b/lib/auth/trust/trustv1/service_test.go @@ -104,11 +104,11 @@ func (f *fakeAuthServer) UpsertTrustedClusterV2(ctx context.Context, tc types.Tr return tc, nil } -func (f *fakeAuthServer) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { +func (f *fakeAuthServer) CreateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { return tc, nil } -func (f *fakeAuthServer) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { +func (f *fakeAuthServer) UpdateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (types.TrustedCluster, error) { return tc, nil } diff --git a/lib/auth/trust/trustv1/trustedcluster.go b/lib/auth/trust/trustv1/trustedcluster.go index eab9ee95a19d3..48f57a43ba0ec 100644 --- a/lib/auth/trust/trustv1/trustedcluster.go +++ b/lib/auth/trust/trustv1/trustedcluster.go @@ -82,7 +82,7 @@ func (s *Service) CreateTrustedCluster(ctx context.Context, req *trustpb.CreateT if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { return nil, trace.Wrap(err) } - tc, err := s.authServer.CreateTrustedClusterV2(ctx, req.GetTrustedCluster()) + tc, err := s.authServer.CreateTrustedCluster(ctx, req.GetTrustedCluster()) if err != nil { return nil, trace.Wrap(err) } @@ -114,7 +114,7 @@ func (s *Service) UpdateTrustedCluster(ctx context.Context, req *trustpb.UpdateT if err = services.ValidateTrustedCluster(req.GetTrustedCluster()); err != nil { return nil, trace.Wrap(err) } - tc, err := s.authServer.UpdateTrustedClusterV2(ctx, req.GetTrustedCluster()) + tc, err := s.authServer.UpdateTrustedCluster(ctx, req.GetTrustedCluster()) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/auth/trust/trustv1/trustedcluster_test.go b/lib/auth/trust/trustv1/trustedcluster_test.go index b8cba02c0aae6..46edcf05946c5 100644 --- a/lib/auth/trust/trustv1/trustedcluster_test.go +++ b/lib/auth/trust/trustv1/trustedcluster_test.go @@ -75,14 +75,14 @@ func TestCloudProhibited(t *testing.T) { _, err = service.CreateTrustedCluster(ctx, &trustpb.CreateTrustedClusterRequest{ TrustedCluster: trustedClusterV2, }) - require.True(t, trace.IsNotImplemented(err), "CreateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + require.True(t, trace.IsNotImplemented(err), "CreateTrustedCluster returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) }) t.Run("Cloud prohibits being a leaf cluster (UpdateTrustedCluster)", func(t *testing.T) { _, err = service.UpdateTrustedCluster(ctx, &trustpb.UpdateTrustedClusterRequest{ TrustedCluster: trustedClusterV2, }) - require.True(t, trace.IsNotImplemented(err), "UpdateTrustedClusterV2 returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) + require.True(t, trace.IsNotImplemented(err), "UpdateTrustedCluster returned an unexpected error, got = %v (%T), want trace.NotImplementedError", err, err) }) } diff --git a/lib/auth/trustedcluster.go b/lib/auth/trustedcluster.go index 7d2dac29084d5..e86008679d31e 100644 --- a/lib/auth/trustedcluster.go +++ b/lib/auth/trustedcluster.go @@ -46,6 +46,7 @@ import ( ) // UpsertTrustedCluster creates or toggles a Trusted Cluster relationship. +// Deprecated: UpsertTrustedClusterV2 should be preferred instead. func (a *Server) UpsertTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { const validateNameFalse = false upserted, err := a.upsertTrustedCluster(ctx, tc, validateNameFalse) @@ -60,8 +61,8 @@ func (a *Server) UpsertTrustedClusterV2(ctx context.Context, tc types.TrustedClu return upserted, trace.Wrap(err) } -// CreateTrustedClusterV2 creates a Trusted Cluster relationship. -func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { +// CreateTrustedCluster creates a Trusted Cluster relationship. +func (a *Server) CreateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) @@ -72,8 +73,8 @@ func (a *Server) CreateTrustedClusterV2(ctx context.Context, tc types.TrustedClu return created, trace.Wrap(err) } -// UpdateTrustedClusterV2 updates a Trusted Cluster relationship. -func (a *Server) UpdateTrustedClusterV2(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { +// UpdateTrustedCluster updates a Trusted Cluster relationship. +func (a *Server) UpdateTrustedCluster(ctx context.Context, tc types.TrustedCluster) (newTrustedCluster types.TrustedCluster, returnErr error) { // verify that trusted cluster role map does not reference non-existent roles if err := a.checkLocalRoles(ctx, tc.GetRoleMap()); err != nil { return nil, trace.Wrap(err) diff --git a/lib/auth/trustedcluster_test.go b/lib/auth/trustedcluster_test.go index 25b743bbe35bf..aca02a7dc4943 100644 --- a/lib/auth/trustedcluster_test.go +++ b/lib/auth/trustedcluster_test.go @@ -637,7 +637,7 @@ func TestUpdateTrustedCluster(t *testing.T) { }) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.ErrorContains(t, err, "someNewRole") }) t.Run("Change role map of existing enabled trusted cluster", func(t *testing.T) { @@ -656,7 +656,7 @@ func TestUpdateTrustedCluster(t *testing.T) { }) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Disable existing trusted cluster", func(t *testing.T) { @@ -675,7 +675,7 @@ func TestUpdateTrustedCluster(t *testing.T) { }) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Change role map of existing disabled trusted cluster", func(t *testing.T) { @@ -694,7 +694,7 @@ func TestUpdateTrustedCluster(t *testing.T) { }) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Enable existing trusted cluster", func(t *testing.T) { @@ -713,7 +713,7 @@ func TestUpdateTrustedCluster(t *testing.T) { }) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Update unmodified trusted cluster", func(t *testing.T) { @@ -722,14 +722,14 @@ func TestUpdateTrustedCluster(t *testing.T) { trustedCluster, err := types.NewTrustedCluster(testClusterName, trustedClusterSpec) require.NoError(t, err) trustedCluster.SetRevision(existing.GetRevision()) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.NoError(t, err) }) t.Run("Invalid revision", func(t *testing.T) { trustedCluster, err := types.NewTrustedCluster(testClusterName, trustedClusterSpec) require.NoError(t, err) - _, err = a.UpdateTrustedClusterV2(ctx, trustedCluster) + _, err = a.UpdateTrustedCluster(ctx, trustedCluster) require.Error(t, err) }) } From a290e38fefaf848cb7cb4b13abad0df457dcfdaf Mon Sep 17 00:00:00 2001 From: Bernard Kim Date: Fri, 20 Dec 2024 14:04:45 -0800 Subject: [PATCH 19/19] Lint: Fix typo --- lib/auth/trust/trustv1/trustedcluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/auth/trust/trustv1/trustedcluster_test.go b/lib/auth/trust/trustv1/trustedcluster_test.go index 46edcf05946c5..d4aea850fedc4 100644 --- a/lib/auth/trust/trustv1/trustedcluster_test.go +++ b/lib/auth/trust/trustv1/trustedcluster_test.go @@ -34,7 +34,7 @@ import ( // TestCloudProhibited verifies that Trusted Clusters cannot be created or updated // in a Cloud hosted environment. -// Tests cannot be run in parrallel because it relies on environment variables. +// Tests cannot be run in parallel because it relies on environment variables. func TestCloudProhibited(t *testing.T) { ctx := context.Background() p := newTestPack(t)