1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00

GO-5341 Introduce layout syncer

This commit is contained in:
kirillston 2025-04-04 18:52:45 +03:00
parent 31b2835943
commit a474e73f60
No known key found for this signature in database
GPG key ID: BE4BF014F0ECDFE8
16 changed files with 3420 additions and 2443 deletions

View file

@ -25,365 +25,366 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
var fileDescriptor_93a29dc403579097 = []byte{
// 5713 bytes of a gzipped FileDescriptorProto
// 5737 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0xdd, 0x6f, 0x24, 0x49,
0x52, 0xc0, 0xd7, 0x2f, 0x2c, 0xd4, 0x71, 0x0b, 0xf4, 0xc2, 0xb2, 0xb7, 0xdc, 0xcd, 0xcc, 0xce,
0x87, 0x3d, 0x33, 0x1e, 0xb7, 0x67, 0x67, 0xf6, 0x8b, 0x3b, 0x24, 0xe8, 0xb1, 0xc7, 0xde, 0xbe,
0xb5, 0xbd, 0xc6, 0xdd, 0x9e, 0x11, 0x2b, 0x21, 0x51, 0xee, 0x4a, 0xb7, 0x0b, 0x57, 0x57, 0xd6,
0x55, 0x65, 0x7b, 0xa6, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x2f, 0xc1, 0x13, 0x12,
0x7f, 0x01, 0x7f, 0x06, 0x8f, 0xf7, 0x78, 0x8f, 0x68, 0xf7, 0xef, 0x40, 0x42, 0x95, 0x95, 0x9f,
0x51, 0x11, 0x59, 0xe5, 0xbd, 0xa7, 0x19, 0x39, 0x7e, 0x11, 0x91, 0x1f, 0x91, 0x99, 0x91, 0x59,
0x59, 0xd5, 0xd1, 0xcd, 0xe2, 0x6c, 0xbb, 0x28, 0xb9, 0xe0, 0xd5, 0x76, 0xc5, 0xca, 0xab, 0x74,
0xc6, 0xf4, 0xbf, 0x43, 0xf9, 0xe7, 0xc1, 0x9b, 0x71, 0xbe, 0x12, 0xab, 0x82, 0xbd, 0xf7, 0xae,
0x25, 0x67, 0x7c, 0xb1, 0x88, 0xf3, 0xa4, 0x6a, 0x90, 0xf7, 0xde, 0xb1, 0x12, 0x76, 0xc5, 0x72,
0xa1, 0xfe, 0xfe, 0xe4, 0x67, 0xff, 0xb7, 0x16, 0xbd, 0xb5, 0x93, 0xa5, 0x2c, 0x17, 0x3b, 0x4a,
0x63, 0xf0, 0x65, 0xf4, 0xed, 0x51, 0x51, 0xec, 0x33, 0xf1, 0x82, 0x95, 0x55, 0xca, 0xf3, 0xc1,
0x9d, 0xa1, 0x72, 0x30, 0x3c, 0x29, 0x66, 0xc3, 0x51, 0x51, 0x0c, 0xad, 0x70, 0x78, 0xc2, 0x7e,
0xb4, 0x64, 0x95, 0x78, 0xef, 0x6e, 0x18, 0xaa, 0x0a, 0x9e, 0x57, 0x6c, 0x70, 0x1e, 0xfd, 0xda,
0xa8, 0x28, 0x26, 0x4c, 0xec, 0xb2, 0xba, 0x02, 0x13, 0x11, 0x0b, 0x36, 0xd8, 0x68, 0xa9, 0xfa,
0x80, 0xf1, 0x71, 0xbf, 0x1b, 0x54, 0x7e, 0xa6, 0xd1, 0xb7, 0x6a, 0x3f, 0x17, 0x4b, 0x91, 0xf0,
0x57, 0xf9, 0xe0, 0xfd, 0xb6, 0xa2, 0x12, 0x19, 0xdb, 0xb7, 0x43, 0x88, 0xb2, 0xfa, 0x32, 0xfa,
0xe5, 0x97, 0x71, 0x96, 0x31, 0xb1, 0x53, 0xb2, 0xba, 0xe0, 0xbe, 0x4e, 0x23, 0x1a, 0x36, 0x32,
0x63, 0xf7, 0x4e, 0x90, 0x51, 0x86, 0xbf, 0x8c, 0xbe, 0xdd, 0x48, 0x4e, 0xd8, 0x8c, 0x5f, 0xb1,
0x72, 0x80, 0x6a, 0x29, 0x21, 0xd1, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0xe1, 0xf9, 0x15, 0x2b, 0x05,
0x6e, 0x5b, 0x09, 0xc3, 0xb6, 0x2d, 0xa4, 0x6c, 0xff, 0xed, 0x5a, 0xf4, 0xdd, 0xd1, 0x6c, 0xc6,
0x97, 0xb9, 0x38, 0xe0, 0xb3, 0x38, 0x3b, 0x48, 0xf3, 0xcb, 0x23, 0xf6, 0x6a, 0xe7, 0xa2, 0xe6,
0xf3, 0x39, 0x1b, 0x3c, 0xf5, 0x5b, 0xb5, 0x41, 0x87, 0x86, 0x1d, 0xba, 0xb0, 0xf1, 0xfd, 0xe1,
0xf5, 0x94, 0x54, 0x59, 0xfe, 0x71, 0x2d, 0xba, 0x01, 0xcb, 0x32, 0xe1, 0xd9, 0x15, 0xb3, 0xa5,
0xf9, 0xa8, 0xc3, 0xb0, 0x8f, 0x9b, 0xf2, 0x7c, 0x7c, 0x5d, 0x35, 0x55, 0xa2, 0x2c, 0x7a, 0xdb,
0x0d, 0x97, 0x09, 0xab, 0xe4, 0x70, 0x7a, 0x40, 0x47, 0x84, 0x42, 0x8c, 0xe7, 0x87, 0x7d, 0x50,
0xe5, 0x2d, 0x8d, 0x06, 0xca, 0x5b, 0xc6, 0x2b, 0xe3, 0xec, 0x3e, 0x6a, 0xc1, 0x21, 0x8c, 0xaf,
0x07, 0x3d, 0x48, 0xe5, 0xea, 0x8f, 0xa2, 0x5f, 0x79, 0xc9, 0xcb, 0xcb, 0xaa, 0x88, 0x67, 0x4c,
0x0d, 0x85, 0x7b, 0xbe, 0xb6, 0x96, 0xc2, 0xd1, 0xb0, 0xde, 0x85, 0x39, 0x41, 0xab, 0x85, 0x5f,
0x14, 0x0c, 0xce, 0x41, 0x56, 0xb1, 0x16, 0x52, 0x41, 0x0b, 0x21, 0x65, 0xfb, 0x32, 0x1a, 0x58,
0xdb, 0x67, 0x7f, 0xcc, 0x66, 0x62, 0x94, 0x24, 0xb0, 0x57, 0xac, 0xae, 0x24, 0x86, 0xa3, 0x24,
0xa1, 0x7a, 0x05, 0x47, 0x95, 0xb3, 0x57, 0xd1, 0x3b, 0xc0, 0xd9, 0x41, 0x5a, 0x49, 0x87, 0x5b,
0x61, 0x2b, 0x0a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xe5, 0xf8, 0xcf, 0xd7, 0xa2, 0xef, 0x20, 0x9e,
0x4f, 0xd8, 0x82, 0x5f, 0xb1, 0xc1, 0xe3, 0x6e, 0x6b, 0x0d, 0x69, 0xfc, 0x7f, 0x70, 0x0d, 0x0d,
0x24, 0x4c, 0x26, 0x2c, 0x63, 0x33, 0x41, 0x86, 0x49, 0x23, 0xee, 0x0c, 0x13, 0x83, 0x39, 0x23,
0x4c, 0x0b, 0xf7, 0x99, 0xd8, 0x59, 0x96, 0x25, 0xcb, 0x05, 0xd9, 0x97, 0x16, 0xe9, 0xec, 0x4b,
0x0f, 0x45, 0xea, 0xb3, 0xcf, 0xc4, 0x28, 0xcb, 0xc8, 0xfa, 0x34, 0xe2, 0xce, 0xfa, 0x18, 0x4c,
0x79, 0x98, 0x45, 0xbf, 0xea, 0xb4, 0x98, 0x18, 0xe7, 0xe7, 0x7c, 0x40, 0xb7, 0x85, 0x94, 0x1b,
0x1f, 0x1b, 0x9d, 0x1c, 0x52, 0x8d, 0xe7, 0xaf, 0x0b, 0x5e, 0xd2, 0xdd, 0xd2, 0x88, 0x3b, 0xab,
0x61, 0x30, 0xe5, 0xe1, 0x0f, 0xa3, 0xb7, 0xd4, 0x2c, 0xa9, 0xd7, 0xb3, 0xbb, 0xe8, 0x14, 0x0a,
0x17, 0xb4, 0x7b, 0x1d, 0x54, 0xcb, 0xfc, 0x61, 0x3a, 0x2f, 0xeb, 0xd9, 0x07, 0x37, 0xaf, 0xa4,
0x1d, 0xe6, 0x2d, 0xa5, 0xcc, 0xf3, 0xe8, 0xd7, 0x7d, 0xf3, 0x3b, 0x71, 0x3e, 0x63, 0xd9, 0xe0,
0x61, 0x48, 0xbd, 0x61, 0x8c, 0xab, 0xcd, 0x5e, 0xac, 0x9d, 0xec, 0x14, 0xa1, 0x26, 0xd3, 0x3b,
0xa8, 0x36, 0x98, 0x4a, 0xef, 0x86, 0xa1, 0x96, 0xed, 0x5d, 0x96, 0x31, 0xd2, 0x76, 0x23, 0xec,
0xb0, 0x6d, 0x20, 0x65, 0xbb, 0x8c, 0x7e, 0xc3, 0x74, 0x73, 0x9d, 0x17, 0x48, 0x79, 0xbd, 0xe8,
0x6c, 0x12, 0xfd, 0xe8, 0x42, 0xc6, 0xd7, 0xa3, 0x7e, 0x70, 0xab, 0x3e, 0x6a, 0x46, 0xc1, 0xeb,
0x03, 0xe6, 0x93, 0xbb, 0x61, 0x48, 0xd9, 0xfe, 0xbb, 0xb5, 0xe8, 0x7b, 0x4a, 0xf6, 0x3c, 0x8f,
0xcf, 0x32, 0x26, 0x97, 0xf8, 0x23, 0x26, 0x5e, 0xf1, 0xf2, 0x72, 0xb2, 0xca, 0x67, 0x44, 0x3a,
0x83, 0xc3, 0x1d, 0xe9, 0x0c, 0xa9, 0xa4, 0x0a, 0xf3, 0x27, 0xd1, 0xbb, 0x3a, 0x28, 0x2e, 0xe2,
0x7c, 0xce, 0x7e, 0x58, 0xf1, 0x7c, 0x54, 0xa4, 0xa3, 0x24, 0x29, 0x07, 0x43, 0xbc, 0xeb, 0x21,
0x67, 0x4a, 0xb0, 0xdd, 0x9b, 0x77, 0xd2, 0x67, 0xd5, 0xca, 0x82, 0x17, 0x30, 0x7d, 0xd6, 0xcd,
0x27, 0x78, 0x41, 0xa5, 0xcf, 0x3e, 0xd2, 0xb2, 0x7a, 0x58, 0xaf, 0x41, 0xb8, 0xd5, 0x43, 0x77,
0xd1, 0xb9, 0x1d, 0x42, 0xec, 0x1a, 0xa0, 0x1b, 0x8a, 0xe7, 0xe7, 0xe9, 0xfc, 0xb4, 0x48, 0xea,
0x31, 0xf4, 0x00, 0xaf, 0xb3, 0x83, 0x10, 0x6b, 0x00, 0x81, 0x2a, 0x6f, 0xff, 0x60, 0xb3, 0x4c,
0x35, 0x2f, 0xed, 0x95, 0x7c, 0x71, 0xc0, 0xe6, 0xf1, 0x6c, 0xa5, 0x26, 0xd3, 0x0f, 0x43, 0xb3,
0x18, 0xa4, 0x4d, 0x21, 0x3e, 0xba, 0xa6, 0x96, 0x2a, 0xcf, 0x7f, 0xae, 0x45, 0x77, 0xbd, 0x38,
0x51, 0xc1, 0xd4, 0x94, 0x7e, 0x94, 0x27, 0x27, 0xac, 0x12, 0x71, 0x29, 0x06, 0xdf, 0x0f, 0xc4,
0x00, 0xa1, 0x63, 0xca, 0xf6, 0x83, 0x6f, 0xa4, 0x6b, 0x7b, 0x7d, 0x52, 0xaf, 0x12, 0x6a, 0xfe,
0xf1, 0x7b, 0x5d, 0x4a, 0xe0, 0xec, 0x73, 0x3b, 0x84, 0xd8, 0x5e, 0x97, 0x82, 0x71, 0x7e, 0x95,
0x0a, 0xb6, 0xcf, 0x72, 0x56, 0xb6, 0x7b, 0xbd, 0x51, 0xf5, 0x11, 0xa2, 0xd7, 0x09, 0xd4, 0xce,
0x74, 0x9e, 0x37, 0x93, 0x69, 0x6c, 0x06, 0x8c, 0xb4, 0x72, 0x8d, 0x47, 0xfd, 0x60, 0xa2, 0x86,
0x62, 0xbf, 0x36, 0x12, 0xac, 0x61, 0x83, 0xf4, 0xaa, 0xa1, 0x41, 0xed, 0xc6, 0xdc, 0xf1, 0x76,
0xc2, 0xae, 0xf8, 0x25, 0xdc, 0x98, 0xbb, 0x06, 0x1a, 0x80, 0xd8, 0x98, 0xa3, 0xa0, 0x4d, 0x3e,
0x1c, 0x3f, 0x2f, 0x52, 0xf6, 0x0a, 0x24, 0x1f, 0xae, 0x72, 0x2d, 0x26, 0x92, 0x0f, 0x04, 0x53,
0x1e, 0x8e, 0xa2, 0x5f, 0x92, 0xc2, 0x1f, 0xf2, 0x34, 0x1f, 0xdc, 0x44, 0x94, 0x6a, 0x81, 0xb1,
0x7a, 0x8b, 0x06, 0x40, 0x89, 0xeb, 0xbf, 0xaa, 0x4c, 0xe0, 0x1e, 0xa1, 0x04, 0x92, 0x80, 0xf5,
0x2e, 0xcc, 0x66, 0x7d, 0x52, 0x58, 0xcf, 0x96, 0x93, 0x8b, 0xb8, 0x4c, 0xf3, 0xf9, 0x00, 0xd3,
0x75, 0xe4, 0x44, 0xd6, 0x87, 0x71, 0x20, 0x9c, 0x94, 0xe2, 0xa8, 0x28, 0xca, 0x7a, 0x12, 0xc6,
0xc2, 0xc9, 0x47, 0x82, 0xe1, 0xd4, 0x42, 0x71, 0x6f, 0xbb, 0x6c, 0x96, 0xa5, 0x79, 0xd0, 0x9b,
0x42, 0xfa, 0x78, 0xb3, 0x28, 0x08, 0xde, 0x03, 0x16, 0x5f, 0x31, 0x5d, 0x33, 0xac, 0x65, 0x5c,
0x20, 0x18, 0xbc, 0x00, 0xb4, 0x5b, 0x6c, 0x29, 0x3e, 0x8c, 0x2f, 0x59, 0xdd, 0xc0, 0xac, 0x5e,
0xc2, 0x07, 0x98, 0xbe, 0x47, 0x10, 0x5b, 0x6c, 0x9c, 0x54, 0xae, 0x96, 0xd1, 0x3b, 0x52, 0x7e,
0x1c, 0x97, 0x22, 0x9d, 0xa5, 0x45, 0x9c, 0xeb, 0xad, 0x1b, 0x36, 0x8b, 0xb4, 0x28, 0xe3, 0x72,
0xab, 0x27, 0xad, 0xdc, 0xfe, 0xdb, 0x5a, 0xf4, 0x3e, 0xf4, 0x7b, 0xcc, 0xca, 0x45, 0x2a, 0x4f,
0x00, 0xaa, 0x66, 0xca, 0x1f, 0x7c, 0x12, 0x36, 0xda, 0x52, 0x30, 0xa5, 0xf9, 0xf4, 0xfa, 0x8a,
0x36, 0xef, 0x9b, 0xa8, 0x5d, 0xd1, 0x17, 0x65, 0xd2, 0x3a, 0x21, 0x9b, 0xe8, 0xad, 0x8e, 0x14,
0x12, 0x79, 0x5f, 0x0b, 0x02, 0x23, 0xfc, 0x34, 0xaf, 0xb4, 0x75, 0x6c, 0x84, 0x5b, 0x71, 0x70,
0x84, 0x7b, 0x98, 0x1d, 0xe1, 0xc7, 0xcb, 0xb3, 0x2c, 0xad, 0x2e, 0xd2, 0x7c, 0xae, 0x92, 0x7c,
0x5f, 0xd7, 0x8a, 0x61, 0x9e, 0xbf, 0xd1, 0xc9, 0x61, 0x4e, 0x54, 0xb0, 0x90, 0x4e, 0x40, 0x98,
0x6c, 0x74, 0x72, 0x76, 0xef, 0x65, 0xa5, 0xf5, 0xa6, 0x1f, 0xec, 0xbd, 0x1c, 0xd5, 0x5a, 0x4a,
0xec, 0xbd, 0xda, 0x94, 0xdd, 0x7b, 0xb9, 0x75, 0xa8, 0x78, 0x76, 0xc5, 0x4e, 0xcb, 0x14, 0xec,
0xbd, 0xbc, 0xf2, 0x69, 0x86, 0xd8, 0x7b, 0x51, 0xac, 0x9d, 0xa8, 0x2c, 0xb1, 0xcf, 0xc4, 0x44,
0xc4, 0x62, 0x59, 0x81, 0x89, 0xca, 0xb1, 0x61, 0x10, 0x62, 0xa2, 0x22, 0x50, 0xe5, 0xed, 0xf7,
0xa3, 0xa8, 0x39, 0x2f, 0x91, 0x67, 0x5a, 0xfe, 0xda, 0xa3, 0x0e, 0x52, 0xbc, 0x03, 0xad, 0xf7,
0x03, 0x84, 0x4d, 0xaf, 0x9a, 0xbf, 0xcb, 0xa3, 0xba, 0x01, 0xaa, 0x21, 0x45, 0x44, 0x7a, 0x05,
0x10, 0x58, 0xd0, 0xc9, 0x05, 0x7f, 0x85, 0x17, 0xb4, 0x96, 0x84, 0x0b, 0xaa, 0x08, 0x7b, 0x78,
0xae, 0x0a, 0x8a, 0x1d, 0x9e, 0xeb, 0x62, 0x84, 0x0e, 0xcf, 0x21, 0x63, 0x63, 0xc6, 0x35, 0xfc,
0x8c, 0xf3, 0xcb, 0x45, 0x5c, 0x5e, 0x82, 0x98, 0xf1, 0x94, 0x35, 0x43, 0xc4, 0x0c, 0xc5, 0xda,
0x98, 0x71, 0x1d, 0xd6, 0xc9, 0xf9, 0x69, 0x99, 0x81, 0x98, 0xf1, 0x6c, 0x28, 0x84, 0x88, 0x19,
0x02, 0xb5, 0xb3, 0x93, 0xeb, 0x6d, 0xc2, 0xe0, 0x71, 0x8d, 0xa7, 0x3e, 0x61, 0xd4, 0x71, 0x0d,
0x82, 0xc1, 0x10, 0xda, 0x2f, 0xe3, 0xe2, 0x02, 0x0f, 0x21, 0x29, 0x0a, 0x87, 0x90, 0x46, 0x60,
0x7f, 0x4f, 0x58, 0x5c, 0xce, 0x2e, 0xf0, 0xfe, 0x6e, 0x64, 0xe1, 0xfe, 0x36, 0x0c, 0xec, 0xef,
0x46, 0xf0, 0x32, 0x15, 0x17, 0x87, 0x4c, 0xc4, 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac,
0xcd, 0xfe, 0x5d, 0x87, 0x93, 0xe5, 0x59, 0x35, 0x2b, 0xd3, 0x33, 0x36, 0x08, 0x58, 0x31, 0x10,
0x91, 0xfd, 0x93, 0xb0, 0xf2, 0xf9, 0x93, 0xb5, 0xe8, 0xa6, 0xee, 0x76, 0x5e, 0x55, 0x6a, 0xed,
0xf3, 0xdd, 0x7f, 0x84, 0xf7, 0x2f, 0x81, 0x13, 0x8f, 0x33, 0x7a, 0xa8, 0x39, 0xb9, 0x01, 0x5e,
0xa4, 0xd3, 0xbc, 0x32, 0x85, 0xfa, 0xa4, 0x8f, 0x75, 0x47, 0x81, 0xc8, 0x0d, 0x7a, 0x29, 0xda,
0xb4, 0x4c, 0xf5, 0x8f, 0x96, 0x8d, 0x93, 0x0a, 0xa4, 0x65, 0xba, 0xbd, 0x1d, 0x82, 0x48, 0xcb,
0x70, 0x12, 0x86, 0xc2, 0x7e, 0xc9, 0x97, 0x45, 0xd5, 0x11, 0x0a, 0x00, 0x0a, 0x87, 0x42, 0x1b,
0x56, 0x3e, 0x5f, 0x47, 0xbf, 0xe9, 0x86, 0x9f, 0xdb, 0xd8, 0x5b, 0x74, 0x4c, 0x61, 0x4d, 0x3c,
0xec, 0x8b, 0xdb, 0x8c, 0x42, 0x7b, 0x16, 0xbb, 0x4c, 0xc4, 0x69, 0x56, 0x0d, 0xd6, 0x71, 0x1b,
0x5a, 0x4e, 0x64, 0x14, 0x18, 0x07, 0xe7, 0xb7, 0xdd, 0x65, 0x91, 0xa5, 0xb3, 0xf6, 0xc3, 0x24,
0xa5, 0x6b, 0xc4, 0xe1, 0xf9, 0xcd, 0xc5, 0xe0, 0x7c, 0x5d, 0xa7, 0x7e, 0xf2, 0x3f, 0xd3, 0x55,
0xc1, 0xf0, 0xf9, 0xda, 0x43, 0xc2, 0xf3, 0x35, 0x44, 0x61, 0x7d, 0x26, 0x4c, 0x1c, 0xc4, 0x2b,
0xbe, 0x24, 0xe6, 0x6b, 0x23, 0x0e, 0xd7, 0xc7, 0xc5, 0xec, 0xde, 0xc0, 0x78, 0x18, 0xe7, 0x82,
0x95, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xbc, 0x1a, 0x10, 0x73, 0x8c, 0x4f, 0x11, 0x7b, 0x03, 0x9a,
0x46, 0x9a, 0x71, 0x5c, 0xed, 0xc5, 0x57, 0xbc, 0x4c, 0x05, 0xdd, 0x8c, 0x16, 0xe9, 0x6c, 0x46,
0x0f, 0x45, 0xbd, 0x8d, 0xca, 0xd9, 0x45, 0x7a, 0xc5, 0x92, 0x80, 0x37, 0x8d, 0xf4, 0xf0, 0xe6,
0xa0, 0x48, 0xa7, 0x4d, 0xf8, 0xb2, 0x9c, 0x31, 0xb2, 0xd3, 0x1a, 0x71, 0x67, 0xa7, 0x19, 0x4c,
0x79, 0xf8, 0xab, 0xb5, 0xe8, 0xb7, 0x1a, 0xa9, 0xfb, 0x84, 0x67, 0x37, 0xae, 0x2e, 0xce, 0x78,
0x5c, 0x26, 0x83, 0x0f, 0x30, 0x3b, 0x28, 0x6a, 0x5c, 0x3f, 0xb9, 0x8e, 0x0a, 0x6c, 0xd6, 0x3a,
0xef, 0xb6, 0x23, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, 0x2b, 0x44, 0xe1, 0x04, 0x22, 0xe5, 0xcd,
0x01, 0xe0, 0x3a, 0xa9, 0xef, 0x9f, 0x02, 0x6e, 0x74, 0x72, 0x70, 0x7e, 0xac, 0x85, 0x7e, 0xb4,
0x6c, 0x51, 0x36, 0xf0, 0x88, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, 0x84, 0x3d, 0xb7, 0x46,
0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xa6, 0xb5, 0x90, 0x67, 0x64, 0x6a, 0x1b, 0xf6, 0xc5, 0x61,
0xf6, 0xa5, 0x18, 0xbd, 0x2e, 0x3c, 0x0c, 0xd8, 0x81, 0x6b, 0xc3, 0x66, 0x2f, 0x56, 0x39, 0xfc,
0x9b, 0xb5, 0xe8, 0xbb, 0xd6, 0xe3, 0x21, 0x4f, 0xd2, 0xf3, 0x55, 0x03, 0xbd, 0x88, 0xb3, 0x25,
0xab, 0x06, 0x4f, 0x28, 0x6b, 0x6d, 0xd6, 0x94, 0xe0, 0xe9, 0xb5, 0x74, 0xe0, 0xd8, 0x19, 0x15,
0x45, 0xb6, 0x9a, 0xb2, 0x45, 0x91, 0x91, 0x63, 0xc7, 0x43, 0xc2, 0x63, 0x07, 0xa2, 0x30, 0x2b,
0x9f, 0xf2, 0x3a, 0xe7, 0x47, 0xb3, 0x72, 0x29, 0x0a, 0x67, 0xe5, 0x1a, 0x81, 0xb9, 0xd2, 0x94,
0xef, 0xf0, 0x2c, 0x63, 0x33, 0xd1, 0xbe, 0x25, 0x62, 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69,
0x4f, 0xe5, 0xf4, 0x1e, 0x32, 0x2e, 0xd9, 0xb3, 0xd5, 0x41, 0x9a, 0x5f, 0x0e, 0xf0, 0xb4, 0xc0,
0x02, 0xc4, 0xa9, 0x1c, 0x0a, 0xc2, 0xbd, 0xea, 0x69, 0x9e, 0x70, 0x7c, 0xaf, 0x5a, 0x4b, 0xc2,
0x7b, 0x55, 0x45, 0x40, 0x93, 0x27, 0x8c, 0x32, 0x59, 0x4b, 0xc2, 0x26, 0x15, 0x81, 0x4d, 0x85,
0xea, 0x49, 0x11, 0x39, 0x15, 0x82, 0x67, 0x43, 0x1b, 0x9d, 0x1c, 0xdc, 0x73, 0x29, 0x07, 0x68,
0x44, 0x00, 0xe3, 0x77, 0x82, 0x0c, 0x0c, 0x7d, 0xbd, 0x1b, 0xde, 0x63, 0x62, 0x76, 0x81, 0x87,
0xbe, 0x87, 0x84, 0x43, 0x1f, 0xa2, 0xb0, 0xad, 0xa6, 0xdc, 0xec, 0xe6, 0xd7, 0xf1, 0xc0, 0x6b,
0xed, 0xe4, 0x37, 0x3a, 0x39, 0xd8, 0x56, 0xe3, 0x05, 0xdd, 0x56, 0x8d, 0x2c, 0xdc, 0x56, 0x86,
0x81, 0xa5, 0x6f, 0x04, 0xf2, 0x90, 0x6c, 0x9d, 0x56, 0xf4, 0x8e, 0xc9, 0x36, 0x3a, 0x39, 0xe5,
0xe4, 0x5f, 0xcc, 0xfe, 0xb0, 0x91, 0x1e, 0xf1, 0x7a, 0xf0, 0xbd, 0x88, 0xb3, 0x34, 0x89, 0x05,
0x9b, 0xf2, 0x4b, 0x96, 0xe3, 0x5b, 0x31, 0x55, 0xda, 0x86, 0x1f, 0x7a, 0x0a, 0xe1, 0xad, 0x58,
0x58, 0x11, 0xc6, 0x49, 0x43, 0x9f, 0x56, 0x6c, 0x27, 0xae, 0x88, 0x29, 0xd2, 0x43, 0xc2, 0x71,
0x02, 0x51, 0x98, 0x08, 0x37, 0xf2, 0xe7, 0xaf, 0x0b, 0x56, 0xa6, 0x2c, 0x9f, 0x31, 0x3c, 0x11,
0x86, 0x54, 0x38, 0x11, 0x46, 0x68, 0xb8, 0x09, 0xdc, 0x8d, 0x05, 0x7b, 0xb6, 0x9a, 0xa6, 0x0b,
0x56, 0x89, 0x78, 0x51, 0xe0, 0x9b, 0x40, 0x00, 0x85, 0x37, 0x81, 0x6d, 0xb8, 0x75, 0xe6, 0x64,
0x66, 0xda, 0xf6, 0xad, 0x35, 0x48, 0x04, 0x6e, 0xad, 0x11, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x4f,
0x1f, 0x5a, 0x56, 0x82, 0x4f, 0x1f, 0x68, 0xba, 0x75, 0x92, 0x67, 0x98, 0x49, 0x3d, 0x34, 0x3b,
0x8a, 0x3e, 0x71, 0x87, 0xe8, 0x66, 0x2f, 0x16, 0x3f, 0x3a, 0x3c, 0x61, 0x59, 0x2c, 0xd7, 0xc3,
0xc0, 0xf9, 0x9c, 0x66, 0xfa, 0x1c, 0x1d, 0x3a, 0xac, 0x72, 0xf8, 0x17, 0x6b, 0xd1, 0x7b, 0x98,
0xc7, 0x2f, 0x0a, 0xe9, 0xf7, 0x71, 0xb7, 0xad, 0x86, 0x24, 0xae, 0xe5, 0x85, 0x35, 0xec, 0xcd,
0x12, 0x2d, 0xb2, 0xb7, 0xf6, 0x54, 0x01, 0xfc, 0x6c, 0xd0, 0x94, 0x1f, 0x72, 0xc4, 0xcd, 0x92,
0x10, 0x6f, 0x37, 0x5a, 0x7e, 0xb9, 0x2a, 0xb0, 0xd1, 0x32, 0x36, 0x94, 0x98, 0xd8, 0x68, 0x21,
0x98, 0x1d, 0x9d, 0x6e, 0xf5, 0x5e, 0xa6, 0xe2, 0x42, 0x26, 0x72, 0x60, 0x74, 0x7a, 0x65, 0x35,
0x10, 0x31, 0x3a, 0x49, 0x18, 0xa6, 0x3a, 0x1a, 0xac, 0xc7, 0x26, 0x36, 0x97, 0x1b, 0x43, 0xee,
0xc8, 0xbc, 0xdf, 0x0d, 0xc2, 0x78, 0xd5, 0x62, 0xb5, 0xa7, 0x7a, 0x18, 0xb2, 0x00, 0xf6, 0x55,
0x9b, 0xbd, 0x58, 0xe5, 0xf0, 0xcf, 0xa2, 0xef, 0xb4, 0x2a, 0xb6, 0xc7, 0x62, 0xb1, 0x2c, 0x59,
0x32, 0xd8, 0xee, 0x28, 0xb7, 0x06, 0x8d, 0xeb, 0xc7, 0xfd, 0x15, 0x5a, 0xc9, 0xbf, 0xe6, 0x9a,
0xb0, 0x32, 0x65, 0x78, 0x12, 0x32, 0xe9, 0xb3, 0xc1, 0xe4, 0x9f, 0xd6, 0x69, 0xed, 0xdf, 0xdd,
0xe8, 0x1a, 0x5d, 0xc5, 0x69, 0x26, 0x9f, 0x02, 0x7f, 0x10, 0x32, 0xea, 0xa1, 0xc1, 0xfd, 0x3b,
0xa9, 0xd2, 0x9a, 0x99, 0xe5, 0x18, 0x77, 0xf6, 0x7d, 0x8f, 0xe8, 0x99, 0x00, 0xd9, 0xf6, 0x6d,
0xf5, 0xa4, 0x95, 0x5b, 0xa1, 0x97, 0xbc, 0xfa, 0xcf, 0x6e, 0x90, 0x63, 0x5e, 0x95, 0x2a, 0x12,
0xe9, 0x5b, 0x3d, 0x69, 0xe5, 0xf5, 0x4f, 0xa3, 0x77, 0xdb, 0x5e, 0xd5, 0x42, 0xb4, 0xdd, 0x69,
0x0a, 0xac, 0x45, 0x8f, 0xfb, 0x2b, 0x28, 0xf7, 0xff, 0x6e, 0x0e, 0xbc, 0x1b, 0xff, 0x33, 0xbe,
0x58, 0xb0, 0x3c, 0x61, 0x89, 0xd6, 0xa8, 0xea, 0x8d, 0xd9, 0xa7, 0xb4, 0x5d, 0xa3, 0x30, 0x74,
0x35, 0x4c, 0x89, 0x7e, 0xfb, 0x1b, 0x68, 0xaa, 0xa2, 0xfd, 0xf7, 0x5a, 0xf4, 0x00, 0x2d, 0x9a,
0x0e, 0x5c, 0xaf, 0x88, 0xbf, 0xd7, 0xc7, 0x11, 0xa6, 0x69, 0x8a, 0x3a, 0xfa, 0x39, 0x2c, 0xa8,
0x22, 0xff, 0xc7, 0x5a, 0x74, 0xdb, 0x2a, 0xd6, 0xe1, 0xbd, 0xc3, 0xf3, 0xf3, 0x2c, 0x9d, 0x09,
0xf9, 0xa8, 0x57, 0xa9, 0xd0, 0xcd, 0x49, 0x69, 0x74, 0x37, 0x67, 0x40, 0xd3, 0xee, 0x8a, 0x3f,
0x4b, 0x2b, 0xc1, 0xcb, 0xd5, 0xe4, 0x82, 0xbf, 0xd2, 0xef, 0x3d, 0xf9, 0xf3, 0xb2, 0x02, 0x86,
0x0e, 0x41, 0xec, 0x8a, 0x71, 0xb2, 0xe5, 0xca, 0xbe, 0x1f, 0x55, 0x11, 0xae, 0x1c, 0xa2, 0xc3,
0x95, 0x4f, 0xda, 0x55, 0x49, 0xd7, 0xca, 0xbe, 0xcc, 0xb5, 0x81, 0x17, 0xb5, 0xfd, 0x42, 0xd7,
0xfd, 0x6e, 0xd0, 0xe6, 0xa6, 0x4a, 0xbc, 0x9b, 0x9e, 0x9f, 0x9b, 0x3a, 0xe1, 0x25, 0x75, 0x11,
0x22, 0x37, 0x25, 0x50, 0xbb, 0xbd, 0xda, 0x4b, 0x33, 0x26, 0x1f, 0x0a, 0x7d, 0x71, 0x7e, 0x9e,
0xf1, 0x38, 0x01, 0xdb, 0xab, 0x5a, 0x3c, 0x74, 0xe5, 0xc4, 0xf6, 0x0a, 0xe3, 0xec, 0x75, 0x93,
0x5a, 0x5a, 0x47, 0x77, 0x3e, 0x4b, 0x33, 0x78, 0x6d, 0x5a, 0x6a, 0x1a, 0x21, 0x71, 0xdd, 0xa4,
0x05, 0xd9, 0x14, 0xa8, 0x16, 0xd5, 0x51, 0xa9, 0xcb, 0x7f, 0xaf, 0xad, 0xe8, 0x88, 0x89, 0x14,
0x08, 0xc1, 0xec, 0xf1, 0x45, 0x2d, 0x3c, 0x2d, 0xa4, 0xf1, 0x5b, 0x6d, 0xad, 0x46, 0x42, 0x1c,
0x5f, 0xf8, 0x84, 0xdd, 0x2d, 0xd7, 0x7f, 0xdf, 0xe5, 0xaf, 0x72, 0x69, 0xf4, 0x76, 0x5b, 0x45,
0xcb, 0x88, 0xdd, 0x32, 0x64, 0x94, 0xe1, 0xcf, 0xa3, 0x5f, 0x94, 0x86, 0x4b, 0x5e, 0x0c, 0x6e,
0x20, 0x0a, 0xa5, 0x73, 0xc9, 0xf8, 0x26, 0x29, 0xb7, 0xb7, 0x53, 0x4c, 0x6c, 0x9c, 0x56, 0xf1,
0x1c, 0xbe, 0x19, 0x60, 0x7b, 0x5c, 0x4a, 0x89, 0xdb, 0x29, 0x6d, 0xca, 0x8f, 0x8a, 0x23, 0x9e,
0x28, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0x14, 0x15, 0x2e, 0x64, 0xd3, 0xd6, 0xa3, 0xf8, 0x2a, 0x9d,
0x9b, 0xd4, 0xa2, 0x99, 0xc0, 0x2a, 0x90, 0xb6, 0x5a, 0x66, 0xe8, 0x40, 0x44, 0xda, 0x4a, 0xc2,
0xca, 0xe7, 0x3f, 0xaf, 0x45, 0xb7, 0x2c, 0xb3, 0xaf, 0x0f, 0x7c, 0xc7, 0xf9, 0x39, 0xaf, 0x93,
0xdc, 0x83, 0x34, 0xbf, 0xac, 0x06, 0x1f, 0x53, 0x26, 0x71, 0xde, 0x14, 0xe5, 0x93, 0x6b, 0xeb,
0xd9, 0xfd, 0x89, 0x3e, 0x0d, 0xb5, 0x57, 0x22, 0x1a, 0x0d, 0xb0, 0x3f, 0x31, 0x87, 0xa6, 0x90,
0x23, 0xf6, 0x27, 0x21, 0xde, 0x76, 0xb1, 0x71, 0x9e, 0xf1, 0x1c, 0x76, 0xb1, 0xb5, 0x50, 0x0b,
0x89, 0x2e, 0x6e, 0x41, 0x76, 0x3e, 0xd6, 0xa2, 0xe6, 0x7c, 0x6d, 0x94, 0x65, 0x60, 0x3e, 0x36,
0xaa, 0x06, 0x20, 0xe6, 0x63, 0x14, 0x54, 0x7e, 0x4e, 0xa2, 0x6f, 0xd5, 0x4d, 0x7a, 0x5c, 0xb2,
0xab, 0x94, 0xc1, 0xdb, 0x3b, 0x8e, 0x84, 0x18, 0xff, 0x3e, 0x61, 0x47, 0xd6, 0x69, 0x5e, 0x15,
0x59, 0x5c, 0x5d, 0xa8, 0xfb, 0x1c, 0x7e, 0x9d, 0xb5, 0x10, 0xde, 0xe8, 0xb8, 0xd7, 0x41, 0xd9,
0x49, 0x5d, 0xcb, 0xcc, 0x14, 0xb3, 0x8e, 0xab, 0xb6, 0xa6, 0x99, 0x8d, 0x4e, 0xce, 0x3e, 0x34,
0xd9, 0x8f, 0xb3, 0x8c, 0x95, 0x2b, 0x2d, 0x3b, 0x8c, 0xf3, 0xf4, 0x9c, 0x55, 0x02, 0x3c, 0x34,
0x51, 0xd4, 0x10, 0x62, 0xc4, 0x43, 0x93, 0x00, 0x6e, 0xf7, 0x6d, 0xc0, 0xf3, 0x38, 0x4f, 0xd8,
0x6b, 0xb0, 0x6f, 0x83, 0x76, 0x24, 0x43, 0xec, 0xdb, 0x28, 0xd6, 0x3e, 0x3c, 0x78, 0x96, 0xf1,
0xd9, 0xa5, 0x5a, 0x02, 0xfc, 0x0e, 0x96, 0x12, 0xb8, 0x06, 0xdc, 0x0e, 0x21, 0x76, 0x11, 0x90,
0x82, 0x13, 0x56, 0x64, 0xf1, 0x0c, 0x5e, 0xe1, 0x6a, 0x74, 0x94, 0x8c, 0x58, 0x04, 0x20, 0x03,
0x8a, 0xab, 0xae, 0x86, 0x61, 0xc5, 0x05, 0x37, 0xc3, 0x6e, 0x87, 0x10, 0xbb, 0x0c, 0x4a, 0xc1,
0xa4, 0xc8, 0x52, 0x01, 0x86, 0x41, 0xa3, 0x21, 0x25, 0xc4, 0x30, 0xf0, 0x09, 0x60, 0xf2, 0x90,
0x95, 0x73, 0x86, 0x9a, 0x94, 0x92, 0xa0, 0x49, 0x4d, 0xd8, 0xfb, 0xea, 0x4d, 0xdd, 0x79, 0xb1,
0x02, 0xf7, 0xd5, 0x55, 0xb5, 0x78, 0xb1, 0x22, 0xee, 0xab, 0x7b, 0x00, 0x28, 0xe2, 0x71, 0x5c,
0x09, 0xbc, 0x88, 0x52, 0x12, 0x2c, 0xa2, 0x26, 0xec, 0x1a, 0xdd, 0x14, 0x71, 0x29, 0xc0, 0x1a,
0xad, 0x0a, 0xe0, 0x5c, 0x62, 0xb8, 0x49, 0xca, 0xed, 0x4c, 0xd2, 0xf4, 0x0a, 0x13, 0x7b, 0x29,
0xcb, 0x92, 0x0a, 0xcc, 0x24, 0xaa, 0xdd, 0xb5, 0x94, 0x98, 0x49, 0xda, 0x14, 0x08, 0x25, 0xf5,
0x04, 0x04, 0xab, 0x1d, 0x78, 0x00, 0x72, 0x3b, 0x84, 0xd8, 0xf9, 0x49, 0x17, 0x7a, 0x27, 0x2e,
0xcb, 0xb4, 0x5e, 0xfc, 0xd7, 0xf1, 0x02, 0x69, 0x39, 0x31, 0x3f, 0x61, 0x1c, 0x18, 0x5e, 0x7a,
0xe2, 0xc6, 0x0a, 0x06, 0xa7, 0xee, 0x3b, 0x41, 0xc6, 0x66, 0x9c, 0x52, 0xe2, 0x3c, 0x85, 0xc7,
0x5a, 0x13, 0x79, 0x08, 0xbf, 0xde, 0x85, 0x39, 0xaf, 0xce, 0x19, 0x17, 0x87, 0xfc, 0x8a, 0x4d,
0xf9, 0xf3, 0xd7, 0x69, 0x55, 0x6f, 0xb7, 0xd4, 0xca, 0xfd, 0x94, 0xb0, 0x84, 0xc1, 0xc4, 0xab,
0x73, 0x9d, 0x4a, 0x36, 0x81, 0x00, 0x65, 0x39, 0x62, 0xaf, 0xd0, 0x04, 0x02, 0x5a, 0x34, 0x1c,
0x91, 0x40, 0x84, 0x78, 0x7b, 0x62, 0x66, 0x9c, 0xab, 0xef, 0x25, 0x4c, 0xb9, 0xce, 0xe5, 0x28,
0x6b, 0x10, 0x24, 0x0e, 0x2d, 0x82, 0x0a, 0x76, 0x7f, 0x69, 0xfc, 0xdb, 0x21, 0x76, 0x9f, 0xb0,
0xd3, 0x1e, 0x66, 0x0f, 0x7a, 0x90, 0x88, 0x2b, 0x7b, 0x95, 0x84, 0x72, 0xd5, 0xbe, 0x49, 0xf2,
0xa0, 0x07, 0xe9, 0x9c, 0xbe, 0xb9, 0xd5, 0x7a, 0x16, 0xcf, 0x2e, 0xe7, 0x25, 0x5f, 0xe6, 0xc9,
0x0e, 0xcf, 0x78, 0x09, 0x4e, 0xdf, 0xbc, 0x52, 0x03, 0x94, 0x38, 0x7d, 0xeb, 0x50, 0xb1, 0x19,
0x9c, 0x5b, 0x8a, 0x51, 0x96, 0xce, 0xe1, 0x8e, 0xda, 0x33, 0x24, 0x01, 0x22, 0x83, 0x43, 0x41,
0x24, 0x88, 0x9a, 0x1d, 0xb7, 0x48, 0x67, 0x71, 0xd6, 0xf8, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0x67,
0x10, 0x21, 0x0a, 0x48, 0x3d, 0xa7, 0xcb, 0x32, 0x1f, 0xe7, 0x82, 0x93, 0xf5, 0xd4, 0x40, 0x67,
0x3d, 0x1d, 0x10, 0x4c, 0xab, 0x53, 0xf6, 0xba, 0x2e, 0x4d, 0xfd, 0x0f, 0x36, 0xad, 0xd6, 0x7f,
0x1f, 0x2a, 0x79, 0x68, 0x5a, 0x05, 0x1c, 0xa8, 0x8c, 0x72, 0xd2, 0x04, 0x4c, 0x40, 0xdb, 0x0f,
0x93, 0xfb, 0xdd, 0x20, 0xee, 0x67, 0x22, 0x56, 0x19, 0x0b, 0xf9, 0x91, 0x40, 0x1f, 0x3f, 0x1a,
0xb4, 0xc7, 0x2d, 0x5e, 0x7d, 0x2e, 0xd8, 0xec, 0xb2, 0x75, 0x33, 0xce, 0x2f, 0x68, 0x83, 0x10,
0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x78, 0xc6, 0xf3, 0x50, 0x17, 0xd5, 0xf2, 0x3e, 0x5d, 0xa4,
0x38, 0xbb, 0xf9, 0x35, 0x52, 0x15, 0x99, 0x4d, 0x37, 0x6d, 0x12, 0x16, 0x5c, 0x88, 0xd8, 0xfc,
0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xc3, 0xf6, 0x6b, 0x03, 0x2d, 0x2b, 0x87, 0xf4, 0x6b, 0x03,
0x14, 0x4b, 0x57, 0xb2, 0x89, 0x91, 0x0e, 0x2b, 0x7e, 0x9c, 0x3c, 0xea, 0x07, 0xdb, 0x2d, 0x8f,
0xe7, 0x73, 0x27, 0x63, 0x71, 0xd9, 0x78, 0xdd, 0x0a, 0x18, 0xb2, 0x18, 0xb1, 0xe5, 0x09, 0xe0,
0x60, 0x0a, 0xf3, 0x3c, 0xef, 0xf0, 0x5c, 0xb0, 0x5c, 0x60, 0x53, 0x98, 0x6f, 0x4c, 0x81, 0xa1,
0x29, 0x8c, 0x52, 0x00, 0x71, 0x2b, 0xcf, 0x83, 0x98, 0x38, 0x8a, 0x17, 0x68, 0xc6, 0xd6, 0x9c,
0xf5, 0x34, 0xf2, 0x50, 0xdc, 0x02, 0xce, 0x79, 0x9c, 0xeb, 0x7a, 0x99, 0xc6, 0xe5, 0xdc, 0x9c,
0x6e, 0x24, 0x83, 0xc7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, 0xe7, 0x86, 0x35, 0xc0, 0xb4, 0x33, 0x5e,
0xc4, 0x73, 0x53, 0x53, 0xa4, 0x06, 0x52, 0xde, 0xaa, 0xea, 0xfd, 0x6e, 0x10, 0xf8, 0x79, 0x91,
0x26, 0x8c, 0x07, 0xfc, 0x48, 0x79, 0x1f, 0x3f, 0x10, 0x04, 0xd9, 0x5b, 0x5d, 0xef, 0x66, 0x47,
0x37, 0xca, 0x13, 0xb5, 0x8f, 0x1d, 0x12, 0xcd, 0x03, 0xb8, 0x50, 0xf6, 0x46, 0xf0, 0x60, 0x8c,
0xea, 0x03, 0xda, 0xd0, 0x18, 0x35, 0xe7, 0xaf, 0x7d, 0xc6, 0x28, 0x06, 0x2b, 0x9f, 0x3f, 0x56,
0x63, 0x74, 0x37, 0x16, 0x71, 0x9d, 0xb7, 0xbf, 0x48, 0xd9, 0x2b, 0xb5, 0x11, 0x46, 0xea, 0xab,
0xa9, 0xa1, 0x7c, 0xeb, 0x19, 0xec, 0x8a, 0xb7, 0x7b, 0xf3, 0x01, 0xdf, 0x6a, 0x87, 0xd0, 0xe9,
0x1b, 0x6c, 0x15, 0xb6, 0x7b, 0xf3, 0x01, 0xdf, 0xea, 0xe3, 0x0d, 0x9d, 0xbe, 0xc1, 0x17, 0x1c,
0xb6, 0x7b, 0xf3, 0xca, 0xf7, 0x5f, 0xea, 0x81, 0xeb, 0x3a, 0xaf, 0xf3, 0xb0, 0x99, 0x48, 0xaf,
0x18, 0x96, 0x4e, 0xfa, 0xf6, 0x0c, 0x1a, 0x4a, 0x27, 0x69, 0x15, 0xe7, 0xf3, 0x69, 0x58, 0x29,
0x8e, 0x79, 0x95, 0xca, 0xeb, 0x18, 0x4f, 0x7b, 0x18, 0xd5, 0x70, 0x68, 0xd3, 0x14, 0x52, 0xb2,
0x0f, 0x96, 0x3d, 0xd4, 0x5e, 0x84, 0x7f, 0x14, 0xb0, 0xd7, 0xbe, 0x0f, 0xbf, 0xd5, 0x93, 0xb6,
0x8f, 0x78, 0x3d, 0x46, 0x3f, 0x9c, 0x9b, 0x30, 0x74, 0x95, 0x30, 0xa6, 0xcc, 0x43, 0x5b, 0xf7,
0x29, 0xe5, 0xe3, 0xfe, 0x0a, 0x1d, 0xee, 0x47, 0x49, 0xd2, 0xcf, 0xbd, 0xfb, 0x74, 0xfb, 0x71,
0x7f, 0x05, 0xe5, 0xfe, 0xaf, 0xf5, 0xb6, 0x06, 0xfa, 0x57, 0x63, 0xf0, 0x49, 0x1f, 0x8b, 0x60,
0x1c, 0x3e, 0xbd, 0x96, 0x8e, 0x2a, 0xc8, 0xdf, 0xeb, 0xfd, 0xbb, 0x46, 0xe5, 0xdb, 0x48, 0xf2,
0x2d, 0x66, 0x35, 0x24, 0x43, 0x51, 0x65, 0x61, 0x38, 0x30, 0x3f, 0xba, 0xa6, 0x96, 0xf3, 0x2d,
0x3f, 0x0f, 0x56, 0x6f, 0xcd, 0x3a, 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, 0xa0, 0x8f, 0xaf, 0xab,
0x46, 0x0d, 0x55, 0x07, 0x96, 0x5f, 0xb3, 0x79, 0xda, 0xd3, 0xb0, 0xf7, 0x7d, 0x9b, 0x0f, 0xaf,
0xa7, 0xa4, 0xca, 0xf2, 0x5f, 0x6b, 0xd1, 0x3d, 0x8f, 0xb5, 0x8f, 0x33, 0xc0, 0xa1, 0xcb, 0x0f,
0x02, 0xf6, 0x29, 0x25, 0x53, 0xb8, 0xdf, 0xf9, 0x66, 0xca, 0xf6, 0xc3, 0x77, 0x9e, 0xca, 0x5e,
0x9a, 0x09, 0x56, 0xb6, 0x3f, 0x7c, 0xe7, 0xdb, 0x6d, 0xa8, 0x21, 0xfd, 0xe1, 0xbb, 0x00, 0xee,
0x7c, 0xf8, 0x0e, 0xf1, 0x8c, 0x7e, 0xf8, 0x0e, 0xb5, 0x16, 0xfc, 0xf0, 0x5d, 0x58, 0x83, 0x5a,
0x5d, 0x74, 0x11, 0x9a, 0x63, 0xf3, 0x5e, 0x16, 0xfd, 0x53, 0xf4, 0x27, 0xd7, 0x51, 0x21, 0xd6,
0xd7, 0x86, 0x93, 0x17, 0x2a, 0x7b, 0xb4, 0xa9, 0x77, 0xa9, 0x72, 0xbb, 0x37, 0xaf, 0x7c, 0xff,
0x48, 0x6d, 0xae, 0xcc, 0x6a, 0xc2, 0x4b, 0xf9, 0xd1, 0xc3, 0xcd, 0xd0, 0xea, 0x50, 0x5b, 0x70,
0x7b, 0xfe, 0x51, 0x3f, 0x98, 0xa8, 0x6e, 0x4d, 0xa8, 0x4e, 0x1f, 0x76, 0x19, 0x02, 0x5d, 0xbe,
0xdd, 0x9b, 0x27, 0x96, 0x91, 0xc6, 0x77, 0xd3, 0xdb, 0x3d, 0x8c, 0xf9, 0x7d, 0xfd, 0xb8, 0xbf,
0x82, 0x72, 0x7f, 0xa5, 0xb2, 0x56, 0xd7, 0xbd, 0xec, 0xe7, 0xad, 0x2e, 0x53, 0x13, 0xaf, 0x9b,
0x87, 0x7d, 0xf1, 0x50, 0xfe, 0xe2, 0x2e, 0xa1, 0x5d, 0xf9, 0x0b, 0xba, 0x8c, 0x7e, 0x78, 0x3d,
0x25, 0x55, 0x96, 0x7f, 0x5a, 0x8b, 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x71, 0x5f, 0xcb, 0x20,
0x1e, 0x3e, 0xb9, 0xb6, 0x9e, 0x2a, 0xd4, 0xbf, 0xae, 0x45, 0xb7, 0x02, 0x85, 0x6a, 0x02, 0xe4,
0x1a, 0xd6, 0xfd, 0x40, 0xf9, 0xf4, 0xfa, 0x8a, 0xd4, 0x72, 0xef, 0xe2, 0x93, 0xf6, 0x47, 0xcc,
0x02, 0xb6, 0x27, 0xf4, 0x47, 0xcc, 0xba, 0xb5, 0xe0, 0x19, 0x53, 0x7c, 0xa6, 0xf7, 0x7c, 0xe8,
0x19, 0x93, 0xbc, 0x0a, 0x19, 0xfc, 0x3c, 0x0a, 0xc6, 0x61, 0x4e, 0x9e, 0xbf, 0x2e, 0xe2, 0x3c,
0xa1, 0x9d, 0x34, 0xf2, 0x6e, 0x27, 0x86, 0x83, 0x67, 0x73, 0xb5, 0xf4, 0x84, 0xeb, 0x7d, 0xdc,
0x03, 0x4a, 0xdf, 0x20, 0xc1, 0xb3, 0xb9, 0x16, 0x4a, 0x78, 0x53, 0x59, 0x63, 0xc8, 0x1b, 0x48,
0x16, 0x1f, 0xf6, 0x41, 0xc1, 0x0e, 0xc1, 0x78, 0x33, 0x47, 0xfe, 0x8f, 0x42, 0x56, 0x5a, 0xc7,
0xfe, 0x5b, 0x3d, 0x69, 0xc2, 0xed, 0x84, 0x89, 0xcf, 0x58, 0x9c, 0xb0, 0x32, 0xe8, 0xd6, 0x50,
0xbd, 0xdc, 0xba, 0x34, 0xe6, 0x76, 0x87, 0x67, 0xcb, 0x45, 0xae, 0x3a, 0x93, 0x74, 0xeb, 0x52,
0xdd, 0x6e, 0x01, 0x0d, 0x4f, 0x25, 0xad, 0x5b, 0x99, 0x5e, 0x3e, 0x0c, 0x9b, 0xf1, 0xb2, 0xca,
0xcd, 0x5e, 0x2c, 0x5d, 0x4f, 0x15, 0x46, 0x1d, 0xf5, 0x04, 0x91, 0xb4, 0xd5, 0x93, 0x86, 0xc7,
0x83, 0x8e, 0x5b, 0x13, 0x4f, 0xdb, 0x1d, 0xb6, 0x5a, 0x21, 0xf5, 0xb8, 0xbf, 0x02, 0x3c, 0x8c,
0x55, 0x51, 0x75, 0x90, 0x56, 0x62, 0x2f, 0xcd, 0xb2, 0xc1, 0x66, 0x20, 0x4c, 0x34, 0x14, 0x3c,
0x8c, 0x45, 0x60, 0x22, 0x92, 0xf5, 0xe1, 0x65, 0x3e, 0xe8, 0xb2, 0x23, 0xa9, 0x5e, 0x91, 0xec,
0xd2, 0xe0, 0x40, 0xcd, 0x69, 0x6a, 0x53, 0xdb, 0x61, 0xb8, 0xe1, 0x5a, 0x15, 0xde, 0xee, 0xcd,
0x83, 0xa7, 0xfd, 0x92, 0x92, 0x2b, 0xcb, 0x5d, 0xca, 0x84, 0xb7, 0x92, 0xdc, 0xeb, 0xa0, 0xc0,
0xa1, 0x64, 0x33, 0x8c, 0x5e, 0xa6, 0xc9, 0x9c, 0x09, 0xf4, 0x41, 0x95, 0x0b, 0x04, 0x1f, 0x54,
0x01, 0x10, 0x74, 0x5d, 0xf3, 0x77, 0x73, 0x1a, 0x3b, 0x4e, 0xb0, 0xae, 0x53, 0xca, 0x0e, 0x15,
0xea, 0x3a, 0x94, 0x06, 0xb3, 0x81, 0x71, 0xab, 0x3e, 0x28, 0xf1, 0x30, 0x64, 0x06, 0x7c, 0x55,
0x62, 0xb3, 0x17, 0x0b, 0x56, 0x14, 0xeb, 0x30, 0x5d, 0xa4, 0x02, 0x5b, 0x51, 0x1c, 0x1b, 0x35,
0x12, 0x5a, 0x51, 0xda, 0x28, 0x55, 0xbd, 0x3a, 0x47, 0x18, 0x27, 0xe1, 0xea, 0x35, 0x4c, 0xbf,
0xea, 0x19, 0xb6, 0xf5, 0x5c, 0x35, 0x37, 0x21, 0x23, 0x2e, 0xd4, 0x66, 0x19, 0x89, 0x6d, 0xf9,
0xa2, 0x31, 0x04, 0x43, 0xb3, 0x0e, 0xa5, 0x00, 0x9f, 0x17, 0xd4, 0x9c, 0x7e, 0xf4, 0x5b, 0x14,
0x2c, 0x2e, 0xe3, 0x7c, 0x86, 0x6e, 0x4e, 0xa5, 0xc1, 0x16, 0x19, 0xda, 0x9c, 0x92, 0x1a, 0xe0,
0xa9, 0xbd, 0xff, 0x26, 0x2f, 0x32, 0x14, 0xcc, 0x2b, 0xb3, 0xfe, 0x8b, 0xbc, 0x0f, 0x7a, 0x90,
0xf0, 0xa9, 0xbd, 0x06, 0xcc, 0xb9, 0x7b, 0xe3, 0xf4, 0x83, 0x80, 0x29, 0x1f, 0x0d, 0x6d, 0x84,
0x69, 0x15, 0x10, 0xd4, 0xce, 0xd9, 0xe2, 0xe7, 0x6c, 0x85, 0x05, 0xb5, 0x7b, 0x48, 0xf8, 0x39,
0x5b, 0x85, 0x82, 0xba, 0x8d, 0x82, 0x3c, 0xd3, 0xdd, 0x07, 0xad, 0x07, 0xf4, 0xdd, 0xad, 0xcf,
0x46, 0x27, 0x07, 0x46, 0xce, 0x6e, 0x7a, 0xe5, 0x3d, 0xa6, 0x40, 0x0a, 0xba, 0x9b, 0x5e, 0xe1,
0x4f, 0x29, 0x36, 0x7b, 0xb1, 0xf0, 0x46, 0x40, 0x2c, 0xd8, 0x6b, 0xfd, 0xa8, 0x1e, 0x29, 0xae,
0x94, 0xb7, 0x9e, 0xd5, 0xdf, 0xef, 0x06, 0xed, 0xfd, 0xdb, 0xe3, 0x92, 0xcf, 0x58, 0x55, 0xa9,
0x6f, 0xad, 0xfa, 0x17, 0x9c, 0x94, 0x6c, 0x08, 0xbe, 0xb4, 0x7a, 0x37, 0x0c, 0x39, 0x1f, 0x48,
0x6c, 0x44, 0xf6, 0xbb, 0x4d, 0xeb, 0xa8, 0x66, 0xfb, 0x93, 0x4d, 0x1b, 0x9d, 0x9c, 0x1d, 0x5e,
0x4a, 0xea, 0x7e, 0xa8, 0xe9, 0x3e, 0xaa, 0x8e, 0x7d, 0xa3, 0xe9, 0x41, 0x0f, 0x52, 0xb9, 0xfa,
0x2c, 0x7a, 0xf3, 0x80, 0xcf, 0x27, 0x2c, 0x4f, 0x06, 0xdf, 0xf3, 0x6f, 0xf0, 0xf2, 0xf9, 0xb0,
0xfe, 0xb3, 0x31, 0x7a, 0x83, 0x12, 0xdb, 0x3b, 0x88, 0xbb, 0xec, 0x6c, 0x39, 0x9f, 0x88, 0x58,
0x80, 0x3b, 0x88, 0xf2, 0xef, 0xc3, 0x5a, 0x40, 0xdc, 0x41, 0xf4, 0x00, 0x60, 0x6f, 0x5a, 0x32,
0x86, 0xda, 0xab, 0x05, 0x41, 0x7b, 0x0a, 0xb0, 0x59, 0x84, 0xb1, 0x57, 0x27, 0xea, 0xf0, 0xce,
0xa0, 0xd5, 0x91, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x36, 0xb8, 0x9b, 0xea, 0xcb, 0xef, 0xe6, 0x2c,
0x17, 0x8b, 0xb8, 0x5c, 0x81, 0xe0, 0x56, 0xb5, 0x74, 0x00, 0x22, 0xb8, 0x51, 0xd0, 0x8e, 0x5a,
0xdd, 0xcc, 0xb3, 0xcb, 0x7d, 0x5e, 0xf2, 0xa5, 0x48, 0x73, 0x06, 0xbf, 0x9d, 0x62, 0x1a, 0xd4,
0x65, 0x88, 0x51, 0x4b, 0xb1, 0x36, 0xcb, 0x95, 0x44, 0x73, 0x9d, 0x51, 0x7e, 0x6c, 0xbe, 0x12,
0xbc, 0x84, 0x8f, 0x33, 0x1b, 0x2b, 0x10, 0x22, 0xb2, 0x5c, 0x12, 0x06, 0x7d, 0x7f, 0x9c, 0xe6,
0x73, 0xb4, 0xef, 0x8f, 0xdd, 0xef, 0x17, 0xdf, 0xa2, 0x01, 0x3b, 0xa0, 0x9a, 0x46, 0x6b, 0x06,
0x80, 0x7a, 0x69, 0x18, 0x6d, 0x74, 0x97, 0x20, 0x06, 0x14, 0x4e, 0x02, 0x57, 0x5f, 0x14, 0x2c,
0x67, 0x89, 0xbe, 0xb4, 0x87, 0xb9, 0xf2, 0x88, 0xa0, 0x2b, 0x48, 0xda, 0xb9, 0x48, 0xca, 0x4f,
0x96, 0xf9, 0x71, 0xc9, 0xcf, 0xd3, 0x8c, 0x95, 0x60, 0x2e, 0x6a, 0xd4, 0x1d, 0x39, 0x31, 0x17,
0x61, 0x9c, 0xbd, 0xfd, 0x21, 0xa5, 0xde, 0x2f, 0x26, 0x4c, 0xcb, 0x78, 0x06, 0x6f, 0x7f, 0x34,
0x36, 0xda, 0x18, 0x71, 0x32, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x71, 0x9d, 0xaf, 0x64, 0x7c, 0xa8,
0x97, 0x56, 0xe5, 0x57, 0x7d, 0x2b, 0x90, 0xe8, 0x28, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, 0x0d,
0xbb, 0x94, 0x48, 0xee, 0x48, 0xdd, 0x6a, 0x02, 0x4b, 0x49, 0x63, 0x43, 0x0b, 0x89, 0xa5, 0xa4,
0x05, 0x81, 0x09, 0x49, 0x0f, 0x83, 0x39, 0x3a, 0x21, 0x19, 0x69, 0x70, 0x42, 0x72, 0x29, 0x3b,
0x51, 0x8c, 0xf3, 0x54, 0xa4, 0x71, 0x36, 0x61, 0xe2, 0x38, 0x2e, 0xe3, 0x05, 0x13, 0xac, 0x84,
0x13, 0x85, 0x42, 0x86, 0x1e, 0x43, 0x4c, 0x14, 0x14, 0xab, 0x1c, 0xfe, 0x6e, 0xf4, 0x76, 0xbd,
0xee, 0xb3, 0x5c, 0xfd, 0xd6, 0xd3, 0x73, 0xf9, 0x23, 0x71, 0x83, 0x77, 0x8c, 0x8d, 0x89, 0x28,
0x59, 0xbc, 0xd0, 0xb6, 0xdf, 0x32, 0x7f, 0x97, 0xe0, 0xe3, 0xb5, 0x3a, 0x9e, 0x8f, 0xb8, 0x48,
0xcf, 0xeb, 0x6d, 0xb6, 0x7a, 0x81, 0x09, 0xc4, 0xb3, 0x2b, 0x1e, 0x06, 0x3e, 0x7a, 0x82, 0x71,
0x76, 0x9e, 0x76, 0xa5, 0x27, 0xac, 0xc8, 0xe0, 0x3c, 0xed, 0x69, 0x4b, 0x80, 0x98, 0xa7, 0x51,
0xd0, 0x0e, 0x4e, 0x57, 0x3c, 0x65, 0xe1, 0xca, 0x4c, 0x59, 0xbf, 0xca, 0x4c, 0xbd, 0x77, 0x42,
0xb2, 0xe8, 0xed, 0x43, 0xb6, 0x38, 0x63, 0x65, 0x75, 0x91, 0x16, 0xd4, 0x97, 0x87, 0x2d, 0xd1,
0xf9, 0xe5, 0x61, 0x02, 0xb5, 0x2b, 0x81, 0x05, 0xc6, 0xd5, 0x51, 0xbc, 0x60, 0xf2, 0x13, 0x2e,
0x60, 0x25, 0x70, 0x8c, 0x38, 0x10, 0xb1, 0x12, 0x90, 0xb0, 0xf3, 0x7a, 0x99, 0x65, 0x4e, 0xd8,
0xbc, 0x8e, 0xb0, 0xf2, 0x38, 0x5e, 0x2d, 0x58, 0x2e, 0x94, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4,
0x79, 0xe2, 0x4c, 0xbe, 0x8f, 0x9e, 0x33, 0x35, 0x79, 0x0d, 0x7f, 0xcc, 0x4b, 0xd1, 0xfc, 0x92,
0xdb, 0x69, 0x99, 0x81, 0xa9, 0xc9, 0x6f, 0x54, 0x8f, 0x24, 0xa6, 0xa6, 0xb0, 0x86, 0xf3, 0xab,
0x1d, 0x5e, 0x19, 0x5e, 0xb0, 0xd2, 0xc4, 0xc9, 0xf3, 0x45, 0x9c, 0x66, 0x2a, 0x1a, 0xbe, 0x1f,
0xb0, 0x4d, 0xe8, 0x10, 0xbf, 0xda, 0xd1, 0x57, 0xd7, 0xf9, 0x9d, 0x93, 0x70, 0x09, 0xc1, 0x23,
0x82, 0x0e, 0xfb, 0xc4, 0x23, 0x82, 0x6e, 0x2d, 0xbb, 0x73, 0xb7, 0xac, 0xe4, 0x56, 0x92, 0xd8,
0xe1, 0x09, 0x3c, 0x2f, 0x74, 0x6c, 0x02, 0x90, 0xd8, 0xb9, 0x07, 0x15, 0x6c, 0x6a, 0x60, 0xb1,
0xbd, 0x34, 0x8f, 0xb3, 0xf4, 0xc7, 0x30, 0xad, 0x77, 0xec, 0x68, 0x82, 0x48, 0x0d, 0x70, 0x12,
0x73, 0xb5, 0xcf, 0xc4, 0x34, 0xad, 0xa7, 0xfe, 0xfb, 0x81, 0x76, 0x93, 0x44, 0xb7, 0x2b, 0x87,
0x74, 0xbe, 0x32, 0x0c, 0x9b, 0x75, 0x54, 0x14, 0x93, 0x7a, 0x55, 0x3d, 0x61, 0x33, 0x96, 0x16,
0x62, 0xf0, 0x51, 0xb8, 0xad, 0x00, 0x4e, 0x5c, 0xb4, 0xe8, 0xa1, 0xe6, 0x3c, 0xbe, 0xaf, 0xe7,
0x92, 0x49, 0xf3, 0x13, 0xa7, 0xa7, 0x15, 0x2b, 0x55, 0xa2, 0xb1, 0xcf, 0x04, 0x18, 0x9d, 0x0e,
0x37, 0x74, 0xc0, 0xba, 0xa2, 0xc4, 0xe8, 0x0c, 0x6b, 0xd8, 0xc3, 0x3e, 0x87, 0x53, 0x5f, 0x8d,
0x97, 0xd7, 0x1d, 0x1f, 0x91, 0xc6, 0x1c, 0x8a, 0x38, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd,
0x8e, 0xf2, 0xd5, 0x18, 0x5e, 0x99, 0x40, 0x2c, 0x49, 0x8c, 0xc8, 0xd6, 0x02, 0xb8, 0x73, 0x18,
0x5e, 0xf2, 0x38, 0x99, 0xc5, 0x95, 0x38, 0x8e, 0x57, 0x19, 0x8f, 0x13, 0xb9, 0xae, 0xc3, 0xc3,
0x70, 0xcd, 0x0c, 0x5d, 0x88, 0x3a, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x93, 0xbf, 0xdc, 0xaa, 0xae,
0x92, 0xc2, 0xec, 0x4c, 0x96, 0x17, 0x5e, 0x23, 0xbd, 0x1b, 0x86, 0xec, 0x2b, 0x70, 0x8d, 0x48,
0xa6, 0x21, 0xb7, 0x30, 0x1d, 0x2f, 0x01, 0x79, 0x3f, 0x40, 0xd8, 0x0f, 0xa0, 0x34, 0x7f, 0xd7,
0x3f, 0xd6, 0x25, 0xd4, 0xb7, 0xd8, 0x1f, 0x61, 0xba, 0x2e, 0xe4, 0xdd, 0x50, 0xdb, 0xea, 0x49,
0xdb, 0x34, 0x73, 0xe7, 0x22, 0x16, 0xa3, 0x24, 0x39, 0x64, 0x15, 0xf2, 0x3e, 0x7b, 0x2d, 0x1c,
0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0x1b, 0xe8, 0xb5, 0xec, 0x79, 0x92, 0x0a, 0x25, 0xd3, 0x17,
0xb4, 0x1f, 0xb5, 0x0d, 0xb4, 0x29, 0xa2, 0x56, 0x34, 0x6d, 0xe7, 0xf2, 0x9a, 0x99, 0xf2, 0xf9,
0x3c, 0x63, 0x0a, 0x3a, 0x61, 0x71, 0xf3, 0x29, 0xca, 0xed, 0xb6, 0x2d, 0x14, 0x24, 0xe6, 0xf2,
0xa0, 0x82, 0x4d, 0x23, 0x6b, 0xac, 0x79, 0x24, 0xa5, 0x1b, 0x76, 0xa3, 0x6d, 0xc6, 0x03, 0x88,
0x34, 0x12, 0x05, 0xed, 0x6b, 0x77, 0xb5, 0x78, 0x9f, 0xe9, 0x96, 0x80, 0xdf, 0xba, 0x92, 0xca,
0x8e, 0x98, 0x78, 0xed, 0x0e, 0xc1, 0xec, 0x3e, 0x01, 0x78, 0x78, 0xb6, 0x1a, 0x27, 0x70, 0x9f,
0x00, 0xf5, 0x25, 0x43, 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0x10, 0x57, 0xb6,
0x72, 0x48, 0xd7, 0xa1, 0x60, 0xa8, 0xeb, 0x28, 0x05, 0xbf, 0x49, 0xdd, 0xa3, 0x35, 0xa4, 0x49,
0xb1, 0x73, 0xb5, 0xf5, 0x2e, 0xcc, 0xe6, 0xfe, 0xb5, 0xf0, 0x84, 0xc5, 0x89, 0xa9, 0x18, 0xa2,
0xeb, 0xca, 0x89, 0xdc, 0x1f, 0xe3, 0x94, 0x93, 0x3f, 0x88, 0x06, 0x4d, 0x35, 0x4a, 0xd7, 0xcd,
0x2d, 0xac, 0x88, 0x35, 0x41, 0x4c, 0x54, 0x3e, 0xe1, 0x24, 0x6e, 0x5e, 0x17, 0x4d, 0xb9, 0x72,
0xa0, 0x5e, 0x0b, 0xad, 0x40, 0xe2, 0xe6, 0x37, 0x7b, 0x8b, 0x26, 0x12, 0xb7, 0x6e, 0x2d, 0xe7,
0xb3, 0x3f, 0xa0, 0xcb, 0xf6, 0x4a, 0xbe, 0x80, 0x65, 0xfa, 0x34, 0xd8, 0x3d, 0x88, 0x06, 0xf1,
0xd9, 0x9f, 0x7e, 0x9a, 0x76, 0x0d, 0x32, 0x67, 0x07, 0xf2, 0x7a, 0x1a, 0xfe, 0x7b, 0x23, 0x8d,
0x90, 0x58, 0x83, 0x5a, 0x90, 0xf3, 0x23, 0xa5, 0xe3, 0x97, 0x65, 0x2a, 0xd2, 0x7c, 0x3e, 0xe5,
0x3c, 0x83, 0x47, 0x96, 0xa3, 0xf1, 0xd0, 0x95, 0x52, 0x3f, 0x52, 0xda, 0xa2, 0xec, 0x12, 0x37,
0x1a, 0x8f, 0x96, 0x82, 0x9f, 0xa7, 0x59, 0x06, 0x22, 0x67, 0x34, 0x1e, 0x6a, 0x09, 0x11, 0x39,
0x3e, 0xe1, 0xfc, 0xb4, 0xe6, 0x58, 0x9e, 0xfe, 0xab, 0x13, 0xd0, 0x3b, 0x50, 0xc7, 0x11, 0x52,
0x3f, 0xad, 0x09, 0x21, 0xe7, 0xa7, 0x42, 0xc7, 0xd8, 0x8f, 0xa6, 0x6c, 0x42, 0x75, 0x04, 0xa2,
0x7e, 0x2a, 0x94, 0x82, 0x1b, 0x9f, 0xcf, 0xde, 0xff, 0x9f, 0xaf, 0x6e, 0xac, 0xfd, 0xf4, 0xab,
0x1b, 0x6b, 0xff, 0xfb, 0xd5, 0x8d, 0xb5, 0x9f, 0x7c, 0x7d, 0xe3, 0x8d, 0x9f, 0x7e, 0x7d, 0xe3,
0x8d, 0x9f, 0x7d, 0x7d, 0xe3, 0x8d, 0x2f, 0xdf, 0x54, 0xbf, 0x9f, 0x7f, 0xf6, 0x0b, 0xf2, 0x57,
0xf0, 0x9f, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x71, 0xe6, 0xb7, 0x63, 0x7f, 0x00,
0x00,
0x7f, 0x01, 0x7f, 0x06, 0x8f, 0xf7, 0xc8, 0x23, 0xda, 0x7d, 0xe7, 0x4f, 0x40, 0xa8, 0xb2, 0xf2,
0x33, 0x2a, 0x22, 0xab, 0xbc, 0xf7, 0x34, 0x23, 0xc7, 0x2f, 0x22, 0xf2, 0x23, 0x32, 0x33, 0x32,
0x2b, 0xab, 0x3a, 0xba, 0x59, 0x9c, 0x6d, 0x17, 0x25, 0x17, 0xbc, 0xda, 0xae, 0x58, 0x79, 0x95,
0xce, 0x98, 0xfe, 0x77, 0x28, 0xff, 0x3c, 0x78, 0x33, 0xce, 0x57, 0x62, 0x55, 0xb0, 0xf7, 0xde,
0xb5, 0xe4, 0x8c, 0x2f, 0x16, 0x71, 0x9e, 0x54, 0x0d, 0xf2, 0xde, 0x3b, 0x56, 0xc2, 0xae, 0x58,
0x2e, 0xd4, 0xdf, 0x9f, 0xfc, 0xef, 0xff, 0xad, 0x45, 0x6f, 0xed, 0x64, 0x29, 0xcb, 0xc5, 0x8e,
0xd2, 0x18, 0x7c, 0x19, 0x7d, 0x7b, 0x54, 0x14, 0xfb, 0x4c, 0xbc, 0x60, 0x65, 0x95, 0xf2, 0x7c,
0x70, 0x67, 0xa8, 0x1c, 0x0c, 0x4f, 0x8a, 0xd9, 0x70, 0x54, 0x14, 0x43, 0x2b, 0x1c, 0x9e, 0xb0,
0x1f, 0x2d, 0x59, 0x25, 0xde, 0xbb, 0x1b, 0x86, 0xaa, 0x82, 0xe7, 0x15, 0x1b, 0x9c, 0x47, 0xbf,
0x32, 0x2a, 0x8a, 0x09, 0x13, 0xbb, 0xac, 0xae, 0xc0, 0x44, 0xc4, 0x82, 0x0d, 0x36, 0x5a, 0xaa,
0x3e, 0x60, 0x7c, 0xdc, 0xef, 0x06, 0x95, 0x9f, 0x69, 0xf4, 0xad, 0xda, 0xcf, 0xc5, 0x52, 0x24,
0xfc, 0x55, 0x3e, 0x78, 0xbf, 0xad, 0xa8, 0x44, 0xc6, 0xf6, 0xed, 0x10, 0xa2, 0xac, 0xbe, 0x8c,
0x7e, 0xf1, 0x65, 0x9c, 0x65, 0x4c, 0xec, 0x94, 0xac, 0x2e, 0xb8, 0xaf, 0xd3, 0x88, 0x86, 0x8d,
0xcc, 0xd8, 0xbd, 0x13, 0x64, 0x94, 0xe1, 0x2f, 0xa3, 0x6f, 0x37, 0x92, 0x13, 0x36, 0xe3, 0x57,
0xac, 0x1c, 0xa0, 0x5a, 0x4a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x78, 0x7e, 0xc5, 0x4a,
0x81, 0xdb, 0x56, 0xc2, 0xb0, 0x6d, 0x0b, 0x29, 0xdb, 0x7f, 0xbd, 0x16, 0x7d, 0x77, 0x34, 0x9b,
0xf1, 0x65, 0x2e, 0x0e, 0xf8, 0x2c, 0xce, 0x0e, 0xd2, 0xfc, 0xf2, 0x88, 0xbd, 0xda, 0xb9, 0xa8,
0xf9, 0x7c, 0xce, 0x06, 0x4f, 0xfd, 0x56, 0x6d, 0xd0, 0xa1, 0x61, 0x87, 0x2e, 0x6c, 0x7c, 0x7f,
0x78, 0x3d, 0x25, 0x55, 0x96, 0xbf, 0x5f, 0x8b, 0x6e, 0xc0, 0xb2, 0x4c, 0x78, 0x76, 0xc5, 0x6c,
0x69, 0x3e, 0xea, 0x30, 0xec, 0xe3, 0xa6, 0x3c, 0x1f, 0x5f, 0x57, 0x4d, 0x95, 0x28, 0x8b, 0xde,
0x76, 0xc3, 0x65, 0xc2, 0x2a, 0x39, 0x9c, 0x1e, 0xd0, 0x11, 0xa1, 0x10, 0xe3, 0xf9, 0x61, 0x1f,
0x54, 0x79, 0x4b, 0xa3, 0x81, 0xf2, 0x96, 0xf1, 0xca, 0x38, 0xbb, 0x8f, 0x5a, 0x70, 0x08, 0xe3,
0xeb, 0x41, 0x0f, 0x52, 0xb9, 0xfa, 0x83, 0xe8, 0x97, 0x5e, 0xf2, 0xf2, 0xb2, 0x2a, 0xe2, 0x19,
0x53, 0x43, 0xe1, 0x9e, 0xaf, 0xad, 0xa5, 0x70, 0x34, 0xac, 0x77, 0x61, 0x4e, 0xd0, 0x6a, 0xe1,
0x17, 0x05, 0x83, 0x73, 0x90, 0x55, 0xac, 0x85, 0x54, 0xd0, 0x42, 0x48, 0xd9, 0xbe, 0x8c, 0x06,
0xd6, 0xf6, 0xd9, 0x1f, 0xb2, 0x99, 0x18, 0x25, 0x09, 0xec, 0x15, 0xab, 0x2b, 0x89, 0xe1, 0x28,
0x49, 0xa8, 0x5e, 0xc1, 0x51, 0xe5, 0xec, 0x55, 0xf4, 0x0e, 0x70, 0x76, 0x90, 0x56, 0xd2, 0xe1,
0x56, 0xd8, 0x8a, 0xc2, 0x8c, 0xd3, 0x61, 0x5f, 0x5c, 0x39, 0xfe, 0xd3, 0xb5, 0xe8, 0x3b, 0x88,
0xe7, 0x13, 0xb6, 0xe0, 0x57, 0x6c, 0xf0, 0xb8, 0xdb, 0x5a, 0x43, 0x1a, 0xff, 0x1f, 0x5c, 0x43,
0x03, 0x09, 0x93, 0x09, 0xcb, 0xd8, 0x4c, 0x90, 0x61, 0xd2, 0x88, 0x3b, 0xc3, 0xc4, 0x60, 0xce,
0x08, 0xd3, 0xc2, 0x7d, 0x26, 0x76, 0x96, 0x65, 0xc9, 0x72, 0x41, 0xf6, 0xa5, 0x45, 0x3a, 0xfb,
0xd2, 0x43, 0x91, 0xfa, 0xec, 0x33, 0x31, 0xca, 0x32, 0xb2, 0x3e, 0x8d, 0xb8, 0xb3, 0x3e, 0x06,
0x53, 0x1e, 0x66, 0xd1, 0x2f, 0x3b, 0x2d, 0x26, 0xc6, 0xf9, 0x39, 0x1f, 0xd0, 0x6d, 0x21, 0xe5,
0xc6, 0xc7, 0x46, 0x27, 0x87, 0x54, 0xe3, 0xf9, 0xeb, 0x82, 0x97, 0x74, 0xb7, 0x34, 0xe2, 0xce,
0x6a, 0x18, 0x4c, 0x79, 0xf8, 0xfd, 0xe8, 0x2d, 0x35, 0x4b, 0xea, 0xf5, 0xec, 0x2e, 0x3a, 0x85,
0xc2, 0x05, 0xed, 0x5e, 0x07, 0xd5, 0x32, 0x7f, 0x98, 0xce, 0xcb, 0x7a, 0xf6, 0xc1, 0xcd, 0x2b,
0x69, 0x87, 0x79, 0x4b, 0x29, 0xf3, 0x3c, 0xfa, 0x55, 0xdf, 0xfc, 0x4e, 0x9c, 0xcf, 0x58, 0x36,
0x78, 0x18, 0x52, 0x6f, 0x18, 0xe3, 0x6a, 0xb3, 0x17, 0x6b, 0x27, 0x3b, 0x45, 0xa8, 0xc9, 0xf4,
0x0e, 0xaa, 0x0d, 0xa6, 0xd2, 0xbb, 0x61, 0xa8, 0x65, 0x7b, 0x97, 0x65, 0x8c, 0xb4, 0xdd, 0x08,
0x3b, 0x6c, 0x1b, 0x48, 0xd9, 0x2e, 0xa3, 0x5f, 0x33, 0xdd, 0x5c, 0xe7, 0x05, 0x52, 0x5e, 0x2f,
0x3a, 0x9b, 0x44, 0x3f, 0xba, 0x90, 0xf1, 0xf5, 0xa8, 0x1f, 0xdc, 0xaa, 0x8f, 0x9a, 0x51, 0xf0,
0xfa, 0x80, 0xf9, 0xe4, 0x6e, 0x18, 0x52, 0xb6, 0xff, 0x66, 0x2d, 0xfa, 0x9e, 0x92, 0x3d, 0xcf,
0xe3, 0xb3, 0x8c, 0xc9, 0x25, 0xfe, 0x88, 0x89, 0x57, 0xbc, 0xbc, 0x9c, 0xac, 0xf2, 0x19, 0x91,
0xce, 0xe0, 0x70, 0x47, 0x3a, 0x43, 0x2a, 0xa9, 0xc2, 0xfc, 0x51, 0xf4, 0xae, 0x0e, 0x8a, 0x8b,
0x38, 0x9f, 0xb3, 0x1f, 0x56, 0x3c, 0x1f, 0x15, 0xe9, 0x28, 0x49, 0xca, 0xc1, 0x10, 0xef, 0x7a,
0xc8, 0x99, 0x12, 0x6c, 0xf7, 0xe6, 0x9d, 0xf4, 0x59, 0xb5, 0xb2, 0xe0, 0x05, 0x4c, 0x9f, 0x75,
0xf3, 0x09, 0x5e, 0x50, 0xe9, 0xb3, 0x8f, 0xb4, 0xac, 0x1e, 0xd6, 0x6b, 0x10, 0x6e, 0xf5, 0xd0,
0x5d, 0x74, 0x6e, 0x87, 0x10, 0xbb, 0x06, 0xe8, 0x86, 0xe2, 0xf9, 0x79, 0x3a, 0x3f, 0x2d, 0x92,
0x7a, 0x0c, 0x3d, 0xc0, 0xeb, 0xec, 0x20, 0xc4, 0x1a, 0x40, 0xa0, 0xca, 0xdb, 0xdf, 0xd9, 0x2c,
0x53, 0xcd, 0x4b, 0x7b, 0x25, 0x5f, 0x1c, 0xb0, 0x79, 0x3c, 0x5b, 0xa9, 0xc9, 0xf4, 0xc3, 0xd0,
0x2c, 0x06, 0x69, 0x53, 0x88, 0x8f, 0xae, 0xa9, 0xa5, 0xca, 0xf3, 0xef, 0x6b, 0xd1, 0x5d, 0x2f,
0x4e, 0x54, 0x30, 0x35, 0xa5, 0x1f, 0xe5, 0xc9, 0x09, 0xab, 0x44, 0x5c, 0x8a, 0xc1, 0xf7, 0x03,
0x31, 0x40, 0xe8, 0x98, 0xb2, 0xfd, 0xe0, 0x1b, 0xe9, 0xda, 0x5e, 0x9f, 0xd4, 0xab, 0x84, 0x9a,
0x7f, 0xfc, 0x5e, 0x97, 0x12, 0x38, 0xfb, 0xdc, 0x0e, 0x21, 0xb6, 0xd7, 0xa5, 0x60, 0x9c, 0x5f,
0xa5, 0x82, 0xed, 0xb3, 0x9c, 0x95, 0xed, 0x5e, 0x6f, 0x54, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5,
0x33, 0x9d, 0xe7, 0xcd, 0x64, 0x1a, 0x9b, 0x01, 0x23, 0xad, 0x5c, 0xe3, 0x51, 0x3f, 0x98, 0xa8,
0xa1, 0xd8, 0xaf, 0x8d, 0x04, 0x6b, 0xd8, 0x20, 0xbd, 0x6a, 0x68, 0x50, 0xbb, 0x31, 0x77, 0xbc,
0x9d, 0xb0, 0x2b, 0x7e, 0x09, 0x37, 0xe6, 0xae, 0x81, 0x06, 0x20, 0x36, 0xe6, 0x28, 0x68, 0x93,
0x0f, 0xc7, 0xcf, 0x8b, 0x94, 0xbd, 0x02, 0xc9, 0x87, 0xab, 0x5c, 0x8b, 0x89, 0xe4, 0x03, 0xc1,
0x94, 0x87, 0xa3, 0xe8, 0x17, 0xa4, 0xf0, 0x87, 0x3c, 0xcd, 0x07, 0x37, 0x11, 0xa5, 0x5a, 0x60,
0xac, 0xde, 0xa2, 0x01, 0x50, 0xe2, 0xfa, 0xaf, 0x2a, 0x13, 0xb8, 0x47, 0x28, 0x81, 0x24, 0x60,
0xbd, 0x0b, 0xb3, 0x59, 0x9f, 0x14, 0xd6, 0xb3, 0xe5, 0xe4, 0x22, 0x2e, 0xd3, 0x7c, 0x3e, 0xc0,
0x74, 0x1d, 0x39, 0x91, 0xf5, 0x61, 0x1c, 0x08, 0x27, 0xa5, 0x38, 0x2a, 0x8a, 0xb2, 0x9e, 0x84,
0xb1, 0x70, 0xf2, 0x91, 0x60, 0x38, 0xb5, 0x50, 0xdc, 0xdb, 0x2e, 0x9b, 0x65, 0x69, 0x1e, 0xf4,
0xa6, 0x90, 0x3e, 0xde, 0x2c, 0x0a, 0x82, 0xf7, 0x80, 0xc5, 0x57, 0x4c, 0xd7, 0x0c, 0x6b, 0x19,
0x17, 0x08, 0x06, 0x2f, 0x00, 0xed, 0x16, 0x5b, 0x8a, 0x0f, 0xe3, 0x4b, 0x56, 0x37, 0x30, 0xab,
0x97, 0xf0, 0x01, 0xa6, 0xef, 0x11, 0xc4, 0x16, 0x1b, 0x27, 0x95, 0xab, 0x65, 0xf4, 0x8e, 0x94,
0x1f, 0xc7, 0xa5, 0x48, 0x67, 0x69, 0x11, 0xe7, 0x7a, 0xeb, 0x86, 0xcd, 0x22, 0x2d, 0xca, 0xb8,
0xdc, 0xea, 0x49, 0x2b, 0xb7, 0xff, 0xb2, 0x16, 0xbd, 0x0f, 0xfd, 0x1e, 0xb3, 0x72, 0x91, 0xca,
0x13, 0x80, 0xaa, 0x99, 0xf2, 0x07, 0x9f, 0x84, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x3e, 0xbd, 0xbe,
0xa2, 0xcd, 0xfb, 0x26, 0x6a, 0x57, 0xf4, 0x45, 0x99, 0xb4, 0x4e, 0xc8, 0x26, 0x7a, 0xab, 0x23,
0x85, 0x44, 0xde, 0xd7, 0x82, 0xc0, 0x08, 0x3f, 0xcd, 0x2b, 0x6d, 0x1d, 0x1b, 0xe1, 0x56, 0x1c,
0x1c, 0xe1, 0x1e, 0x66, 0x47, 0xf8, 0xf1, 0xf2, 0x2c, 0x4b, 0xab, 0x8b, 0x34, 0x9f, 0xab, 0x24,
0xdf, 0xd7, 0xb5, 0x62, 0x98, 0xe7, 0x6f, 0x74, 0x72, 0x98, 0x13, 0x15, 0x2c, 0xa4, 0x13, 0x10,
0x26, 0x1b, 0x9d, 0x9c, 0xdd, 0x7b, 0x59, 0x69, 0xbd, 0xe9, 0x07, 0x7b, 0x2f, 0x47, 0xb5, 0x96,
0x12, 0x7b, 0xaf, 0x36, 0x65, 0xf7, 0x5e, 0x6e, 0x1d, 0x2a, 0x9e, 0x5d, 0xb1, 0xd3, 0x32, 0x05,
0x7b, 0x2f, 0xaf, 0x7c, 0x9a, 0x21, 0xf6, 0x5e, 0x14, 0x6b, 0x27, 0x2a, 0x4b, 0xec, 0x33, 0x31,
0x11, 0xb1, 0x58, 0x56, 0x60, 0xa2, 0x72, 0x6c, 0x18, 0x84, 0x98, 0xa8, 0x08, 0x54, 0x79, 0xfb,
0xdd, 0x28, 0x6a, 0xce, 0x4b, 0xe4, 0x99, 0x96, 0xbf, 0xf6, 0xa8, 0x83, 0x14, 0xef, 0x40, 0xeb,
0xfd, 0x00, 0x61, 0xd3, 0xab, 0xe6, 0xef, 0xf2, 0xa8, 0x6e, 0x80, 0x6a, 0x48, 0x11, 0x91, 0x5e,
0x01, 0x04, 0x16, 0x74, 0x72, 0xc1, 0x5f, 0xe1, 0x05, 0xad, 0x25, 0xe1, 0x82, 0x2a, 0xc2, 0x1e,
0x9e, 0xab, 0x82, 0x62, 0x87, 0xe7, 0xba, 0x18, 0xa1, 0xc3, 0x73, 0xc8, 0xd8, 0x98, 0x71, 0x0d,
0x3f, 0xe3, 0xfc, 0x72, 0x11, 0x97, 0x97, 0x20, 0x66, 0x3c, 0x65, 0xcd, 0x10, 0x31, 0x43, 0xb1,
0x36, 0x66, 0x5c, 0x87, 0x75, 0x72, 0x7e, 0x5a, 0x66, 0x20, 0x66, 0x3c, 0x1b, 0x0a, 0x21, 0x62,
0x86, 0x40, 0xed, 0xec, 0xe4, 0x7a, 0x9b, 0x30, 0x78, 0x5c, 0xe3, 0xa9, 0x4f, 0x18, 0x75, 0x5c,
0x83, 0x60, 0x30, 0x84, 0xf6, 0xcb, 0xb8, 0xb8, 0xc0, 0x43, 0x48, 0x8a, 0xc2, 0x21, 0xa4, 0x11,
0xd8, 0xdf, 0x13, 0x16, 0x97, 0xb3, 0x0b, 0xbc, 0xbf, 0x1b, 0x59, 0xb8, 0xbf, 0x0d, 0x03, 0xfb,
0xbb, 0x11, 0xbc, 0x4c, 0xc5, 0xc5, 0x21, 0x13, 0x31, 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16,
0x6b, 0xb3, 0x7f, 0xd7, 0xe1, 0x64, 0x79, 0x56, 0xcd, 0xca, 0xf4, 0x8c, 0x0d, 0x02, 0x56, 0x0c,
0x44, 0x64, 0xff, 0x24, 0xac, 0x7c, 0xfe, 0x64, 0x2d, 0xba, 0xa9, 0xbb, 0x9d, 0x57, 0x95, 0x5a,
0xfb, 0x7c, 0xf7, 0x1f, 0xe1, 0xfd, 0x4b, 0xe0, 0xc4, 0xe3, 0x8c, 0x1e, 0x6a, 0x4e, 0x6e, 0x80,
0x17, 0xe9, 0x34, 0xaf, 0x4c, 0xa1, 0x3e, 0xe9, 0x63, 0xdd, 0x51, 0x20, 0x72, 0x83, 0x5e, 0x8a,
0x36, 0x2d, 0x53, 0xfd, 0xa3, 0x65, 0xe3, 0xa4, 0x02, 0x69, 0x99, 0x6e, 0x6f, 0x87, 0x20, 0xd2,
0x32, 0x9c, 0x84, 0xa1, 0xb0, 0x5f, 0xf2, 0x65, 0x51, 0x75, 0x84, 0x02, 0x80, 0xc2, 0xa1, 0xd0,
0x86, 0x95, 0xcf, 0xd7, 0xd1, 0xaf, 0xbb, 0xe1, 0xe7, 0x36, 0xf6, 0x16, 0x1d, 0x53, 0x58, 0x13,
0x0f, 0xfb, 0xe2, 0x36, 0xa3, 0xd0, 0x9e, 0xc5, 0x2e, 0x13, 0x71, 0x9a, 0x55, 0x83, 0x75, 0xdc,
0x86, 0x96, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf9, 0x6d, 0x77, 0x59, 0x64, 0xe9, 0xac, 0xfd, 0x30,
0x49, 0xe9, 0x1a, 0x71, 0x78, 0x7e, 0x73, 0x31, 0x38, 0x5f, 0xd7, 0xa9, 0x9f, 0xfc, 0xcf, 0x74,
0x55, 0x30, 0x7c, 0xbe, 0xf6, 0x90, 0xf0, 0x7c, 0x0d, 0x51, 0x58, 0x9f, 0x09, 0x13, 0x07, 0xf1,
0x8a, 0x2f, 0x89, 0xf9, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x37, 0x30, 0x1e, 0xc6, 0xb9,
0x60, 0x65, 0x1e, 0x67, 0x7b, 0x59, 0x3c, 0xaf, 0x06, 0xc4, 0x1c, 0xe3, 0x53, 0xc4, 0xde, 0x80,
0xa6, 0x91, 0x66, 0x1c, 0x57, 0x7b, 0xf1, 0x15, 0x2f, 0x53, 0x41, 0x37, 0xa3, 0x45, 0x3a, 0x9b,
0xd1, 0x43, 0x51, 0x6f, 0xa3, 0x72, 0x76, 0x91, 0x5e, 0xb1, 0x24, 0xe0, 0x4d, 0x23, 0x3d, 0xbc,
0x39, 0x28, 0xd2, 0x69, 0x13, 0xbe, 0x2c, 0x67, 0x8c, 0xec, 0xb4, 0x46, 0xdc, 0xd9, 0x69, 0x06,
0x53, 0x1e, 0xfe, 0x62, 0x2d, 0xfa, 0x8d, 0x46, 0xea, 0x3e, 0xe1, 0xd9, 0x8d, 0xab, 0x8b, 0x33,
0x1e, 0x97, 0xc9, 0xe0, 0x03, 0xcc, 0x0e, 0x8a, 0x1a, 0xd7, 0x4f, 0xae, 0xa3, 0x02, 0x9b, 0xb5,
0xce, 0xbb, 0xed, 0x88, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, 0x0a, 0x51, 0x38, 0x81, 0x48, 0x79,
0x73, 0x00, 0xb8, 0x4e, 0xea, 0xfb, 0xa7, 0x80, 0x1b, 0x9d, 0x1c, 0x9c, 0x1f, 0x6b, 0xa1, 0x1f,
0x2d, 0x5b, 0x94, 0x0d, 0x3c, 0x62, 0x86, 0x7d, 0x71, 0xd2, 0xb3, 0x19, 0x15, 0x61, 0xcf, 0xad,
0x91, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0x69, 0x2d, 0xe4, 0x19, 0x99, 0xda, 0x86, 0x7d, 0x71,
0x98, 0x7d, 0x29, 0x46, 0xaf, 0x0b, 0x0f, 0x03, 0x76, 0xe0, 0xda, 0xb0, 0xd9, 0x8b, 0x55, 0x0e,
0xff, 0x6a, 0x2d, 0xfa, 0xae, 0xf5, 0x78, 0xc8, 0x93, 0xf4, 0x7c, 0xd5, 0x40, 0x2f, 0xe2, 0x6c,
0xc9, 0xaa, 0xc1, 0x13, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78, 0x7a, 0x2d, 0x1d, 0x38, 0x76, 0x46,
0x45, 0x91, 0xad, 0xa6, 0x6c, 0x51, 0x64, 0xe4, 0xd8, 0xf1, 0x90, 0xf0, 0xd8, 0x81, 0x28, 0xcc,
0xca, 0xa7, 0xbc, 0xce, 0xf9, 0xd1, 0xac, 0x5c, 0x8a, 0xc2, 0x59, 0xb9, 0x46, 0x60, 0xae, 0x34,
0xe5, 0x3b, 0x3c, 0xcb, 0xd8, 0x4c, 0xb4, 0x6f, 0x89, 0x18, 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40,
0xda, 0x53, 0x39, 0xbd, 0x87, 0x8c, 0x4b, 0xf6, 0x6c, 0x75, 0x90, 0xe6, 0x97, 0x03, 0x3c, 0x2d,
0xb0, 0x00, 0x71, 0x2a, 0x87, 0x82, 0x70, 0xaf, 0x7a, 0x9a, 0x27, 0x1c, 0xdf, 0xab, 0xd6, 0x92,
0xf0, 0x5e, 0x55, 0x11, 0xd0, 0xe4, 0x09, 0xa3, 0x4c, 0xd6, 0x92, 0xb0, 0x49, 0x45, 0x60, 0x53,
0xa1, 0x7a, 0x52, 0x44, 0x4e, 0x85, 0xe0, 0xd9, 0xd0, 0x46, 0x27, 0x07, 0xf7, 0x5c, 0xca, 0x01,
0x1a, 0x11, 0xc0, 0xf8, 0x9d, 0x20, 0x03, 0x43, 0x5f, 0xef, 0x86, 0xf7, 0x98, 0x98, 0x5d, 0xe0,
0xa1, 0xef, 0x21, 0xe1, 0xd0, 0x87, 0x28, 0x6c, 0xab, 0x29, 0x37, 0xbb, 0xf9, 0x75, 0x3c, 0xf0,
0x5a, 0x3b, 0xf9, 0x8d, 0x4e, 0x0e, 0xb6, 0xd5, 0x78, 0x41, 0xb7, 0x55, 0x23, 0x0b, 0xb7, 0x95,
0x61, 0x60, 0xe9, 0x1b, 0x81, 0x3c, 0x24, 0x5b, 0xa7, 0x15, 0xbd, 0x63, 0xb2, 0x8d, 0x4e, 0x4e,
0x39, 0xf9, 0x27, 0xb3, 0x3f, 0x6c, 0xa4, 0x47, 0xbc, 0x1e, 0x7c, 0x2f, 0xe2, 0x2c, 0x4d, 0x62,
0xc1, 0xa6, 0xfc, 0x92, 0xe5, 0xf8, 0x56, 0x4c, 0x95, 0xb6, 0xe1, 0x87, 0x9e, 0x42, 0x78, 0x2b,
0x16, 0x56, 0x84, 0x71, 0xd2, 0xd0, 0xa7, 0x15, 0xdb, 0x89, 0x2b, 0x62, 0x8a, 0xf4, 0x90, 0x70,
0x9c, 0x40, 0x14, 0x26, 0xc2, 0x8d, 0xfc, 0xf9, 0xeb, 0x82, 0x95, 0x29, 0xcb, 0x67, 0x0c, 0x4f,
0x84, 0x21, 0x15, 0x4e, 0x84, 0x11, 0x1a, 0x6e, 0x02, 0x77, 0x63, 0xc1, 0x9e, 0xad, 0xa6, 0xe9,
0x82, 0x55, 0x22, 0x5e, 0x14, 0xf8, 0x26, 0x10, 0x40, 0xe1, 0x4d, 0x60, 0x1b, 0x6e, 0x9d, 0x39,
0x99, 0x99, 0xb6, 0x7d, 0x6b, 0x0d, 0x12, 0x81, 0x5b, 0x6b, 0x04, 0x0a, 0x1b, 0xd6, 0x02, 0xe8,
0xd3, 0x87, 0x96, 0x95, 0xe0, 0xd3, 0x07, 0x9a, 0x6e, 0x9d, 0xe4, 0x19, 0x66, 0x52, 0x0f, 0xcd,
0x8e, 0xa2, 0x4f, 0xdc, 0x21, 0xba, 0xd9, 0x8b, 0xc5, 0x8f, 0x0e, 0x4f, 0x58, 0x16, 0xcb, 0xf5,
0x30, 0x70, 0x3e, 0xa7, 0x99, 0x3e, 0x47, 0x87, 0x0e, 0xab, 0x1c, 0xfe, 0xd9, 0x5a, 0xf4, 0x1e,
0xe6, 0xf1, 0x8b, 0x42, 0xfa, 0x7d, 0xdc, 0x6d, 0xab, 0x21, 0x89, 0x6b, 0x79, 0x61, 0x0d, 0x7b,
0xb3, 0x44, 0x8b, 0xec, 0xad, 0x3d, 0x55, 0x00, 0x3f, 0x1b, 0x34, 0xe5, 0x87, 0x1c, 0x71, 0xb3,
0x24, 0xc4, 0xdb, 0x8d, 0x96, 0x5f, 0xae, 0x0a, 0x6c, 0xb4, 0x8c, 0x0d, 0x25, 0x26, 0x36, 0x5a,
0x08, 0x66, 0x47, 0xa7, 0x5b, 0xbd, 0x97, 0xa9, 0xb8, 0x90, 0x89, 0x1c, 0x18, 0x9d, 0x5e, 0x59,
0x0d, 0x44, 0x8c, 0x4e, 0x12, 0x86, 0xa9, 0x8e, 0x06, 0xeb, 0xb1, 0x89, 0xcd, 0xe5, 0xc6, 0x90,
0x3b, 0x32, 0xef, 0x77, 0x83, 0x30, 0x5e, 0xb5, 0x58, 0xed, 0xa9, 0x1e, 0x86, 0x2c, 0x80, 0x7d,
0xd5, 0x66, 0x2f, 0x56, 0x39, 0xfc, 0x93, 0xe8, 0x3b, 0xad, 0x8a, 0xed, 0xb1, 0x58, 0x2c, 0x4b,
0x96, 0x0c, 0xb6, 0x3b, 0xca, 0xad, 0x41, 0xe3, 0xfa, 0x71, 0x7f, 0x85, 0x56, 0xf2, 0xaf, 0xb9,
0x26, 0xac, 0x4c, 0x19, 0x9e, 0x84, 0x4c, 0xfa, 0x6c, 0x30, 0xf9, 0xa7, 0x75, 0x5a, 0xfb, 0x77,
0x37, 0xba, 0x46, 0x57, 0x71, 0x9a, 0xc9, 0xa7, 0xc0, 0x1f, 0x84, 0x8c, 0x7a, 0x68, 0x70, 0xff,
0x4e, 0xaa, 0xb4, 0x66, 0x66, 0x39, 0xc6, 0x9d, 0x7d, 0xdf, 0x23, 0x7a, 0x26, 0x40, 0xb6, 0x7d,
0x5b, 0x3d, 0x69, 0xe5, 0x56, 0xe8, 0x25, 0xaf, 0xfe, 0xb3, 0x1b, 0xe4, 0x98, 0x57, 0xa5, 0x8a,
0x44, 0xfa, 0x56, 0x4f, 0x5a, 0x79, 0xfd, 0xe3, 0xe8, 0xdd, 0xb6, 0x57, 0xb5, 0x10, 0x6d, 0x77,
0x9a, 0x02, 0x6b, 0xd1, 0xe3, 0xfe, 0x0a, 0xca, 0xfd, 0xbf, 0x9a, 0x03, 0xef, 0xc6, 0xff, 0x8c,
0x2f, 0x16, 0x2c, 0x4f, 0x58, 0xa2, 0x35, 0xaa, 0x7a, 0x63, 0xf6, 0x29, 0x6d, 0xd7, 0x28, 0x0c,
0x5d, 0x0d, 0x53, 0xa2, 0xdf, 0xfc, 0x06, 0x9a, 0xaa, 0x68, 0xff, 0xb9, 0x16, 0x3d, 0x40, 0x8b,
0xa6, 0x03, 0xd7, 0x2b, 0xe2, 0xef, 0xf4, 0x71, 0x84, 0x69, 0x9a, 0xa2, 0x8e, 0x7e, 0x06, 0x0b,
0xaa, 0xc8, 0xff, 0xb6, 0x16, 0xdd, 0xb6, 0x8a, 0x75, 0x78, 0xef, 0xf0, 0xfc, 0x3c, 0x4b, 0x67,
0x42, 0x3e, 0xea, 0x55, 0x2a, 0x74, 0x73, 0x52, 0x1a, 0xdd, 0xcd, 0x19, 0xd0, 0x54, 0x65, 0xfb,
0xc7, 0xb5, 0xe8, 0x96, 0xdb, 0x9c, 0xf2, 0x39, 0x71, 0x73, 0xec, 0xaa, 0x15, 0xab, 0xc1, 0xc7,
0x74, 0x1b, 0x60, 0xbc, 0x29, 0xd7, 0x27, 0xd7, 0xd6, 0xb3, 0x7b, 0xf5, 0xcf, 0xd2, 0x4a, 0xf0,
0x72, 0x35, 0xb9, 0xe0, 0xaf, 0xf4, 0xdb, 0x58, 0xfe, 0x6a, 0xa1, 0x80, 0xa1, 0x43, 0x10, 0x7b,
0x75, 0x9c, 0x6c, 0xb9, 0xb2, 0x6f, 0x6d, 0x55, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x76,
0xad, 0xd4, 0xb5, 0xb2, 0xaf, 0x98, 0x6d, 0xe0, 0x45, 0x6d, 0xbf, 0x66, 0x76, 0xbf, 0x1b, 0xb4,
0x19, 0xb3, 0x12, 0xef, 0xa6, 0xe7, 0xe7, 0xa6, 0x4e, 0x78, 0x49, 0x5d, 0x84, 0xc8, 0x98, 0x09,
0xd4, 0x6e, 0xfa, 0xf6, 0xd2, 0x8c, 0xc9, 0x47, 0x55, 0x5f, 0x9c, 0x9f, 0x67, 0x3c, 0x4e, 0xc0,
0xa6, 0xaf, 0x16, 0x0f, 0x5d, 0x39, 0xb1, 0xe9, 0xc3, 0x38, 0x7b, 0x09, 0xa6, 0x96, 0xd6, 0x63,
0x2e, 0x9f, 0xa5, 0x19, 0xbc, 0xcc, 0x2d, 0x35, 0x8d, 0x90, 0xb8, 0x04, 0xd3, 0x82, 0x6c, 0x62,
0x56, 0x8b, 0xea, 0xb1, 0xa2, 0xcb, 0x7f, 0xaf, 0xad, 0xe8, 0x88, 0x89, 0xc4, 0x0c, 0xc1, 0xec,
0xa1, 0x4a, 0x2d, 0x3c, 0x2d, 0xa4, 0xf1, 0x5b, 0x6d, 0xad, 0x46, 0x42, 0x1c, 0xaa, 0xf8, 0x84,
0xdd, 0xc3, 0xd7, 0x7f, 0xdf, 0xe5, 0xaf, 0x72, 0x69, 0xf4, 0x76, 0x5b, 0x45, 0xcb, 0x88, 0x3d,
0x3c, 0x64, 0x94, 0xe1, 0xcf, 0xa3, 0x9f, 0x97, 0x86, 0x4b, 0x5e, 0x0c, 0x6e, 0x20, 0x0a, 0xa5,
0x73, 0xf5, 0xf9, 0x26, 0x29, 0xb7, 0x77, 0x66, 0x4c, 0x6c, 0x9c, 0x56, 0xf1, 0x1c, 0xbe, 0xaf,
0x60, 0x7b, 0x5c, 0x4a, 0x89, 0x3b, 0x33, 0x6d, 0xca, 0x8f, 0x8a, 0x23, 0x9e, 0x28, 0xeb, 0x48,
0x0d, 0x8d, 0x30, 0x14, 0x15, 0x2e, 0x64, 0x93, 0xe9, 0xa3, 0xf8, 0x2a, 0x9d, 0x9b, 0x84, 0xa7,
0x99, 0xbe, 0x2a, 0x90, 0x4c, 0x5b, 0x66, 0xe8, 0x40, 0x44, 0x32, 0x4d, 0xc2, 0xce, 0x64, 0x6c,
0x99, 0x7d, 0x7d, 0x0c, 0x3d, 0xce, 0xcf, 0x79, 0x9d, 0x7a, 0x1f, 0xa4, 0xf9, 0x25, 0x9c, 0x8c,
0x1d, 0x93, 0x38, 0x4f, 0x4c, 0xc6, 0x7d, 0xf4, 0xec, 0xae, 0x49, 0x9f, 0xd1, 0xda, 0x8b, 0x1a,
0x8d, 0x06, 0xd8, 0x35, 0x99, 0xa3, 0x5c, 0xc8, 0x11, 0xbb, 0xa6, 0x10, 0x6f, 0xbb, 0xd8, 0x38,
0xcf, 0x78, 0x0e, 0xbb, 0xd8, 0x5a, 0xa8, 0x85, 0x44, 0x17, 0xb7, 0x20, 0x3b, 0x1f, 0x6b, 0x51,
0x73, 0xea, 0x37, 0xca, 0x32, 0x30, 0x1f, 0x1b, 0x55, 0x03, 0x10, 0xf3, 0x31, 0x0a, 0x2a, 0x3f,
0x27, 0xd1, 0xb7, 0xea, 0x26, 0x3d, 0x2e, 0xd9, 0x55, 0xca, 0xe0, 0x9d, 0x22, 0x47, 0x42, 0x8c,
0x7f, 0x9f, 0xb0, 0x23, 0xeb, 0x34, 0xaf, 0x8a, 0x2c, 0xae, 0x2e, 0xd4, 0x2d, 0x13, 0xbf, 0xce,
0x5a, 0x08, 0xef, 0x99, 0xdc, 0xeb, 0xa0, 0xec, 0xa4, 0xae, 0x65, 0x66, 0x8a, 0x59, 0xc7, 0x55,
0x5b, 0xd3, 0xcc, 0x46, 0x27, 0x67, 0x1f, 0xe5, 0xec, 0xc7, 0x59, 0xc6, 0xca, 0x95, 0x96, 0x1d,
0xc6, 0x79, 0x7a, 0xce, 0x2a, 0x01, 0x1e, 0xe5, 0x28, 0x6a, 0x08, 0x31, 0xe2, 0x51, 0x4e, 0x00,
0xb7, 0xbb, 0x49, 0xe0, 0x79, 0x9c, 0x27, 0xec, 0x35, 0xd8, 0x4d, 0x42, 0x3b, 0x92, 0x21, 0x76,
0x93, 0x14, 0x6b, 0x1f, 0x69, 0x3c, 0xcb, 0xf8, 0xec, 0x52, 0x2d, 0x01, 0x7e, 0x07, 0x4b, 0x09,
0x5c, 0x03, 0x6e, 0x87, 0x10, 0xbb, 0x08, 0x48, 0xc1, 0x09, 0x2b, 0xb2, 0x78, 0x06, 0x2f, 0x96,
0x35, 0x3a, 0x4a, 0x46, 0x2c, 0x02, 0x90, 0x01, 0xc5, 0x55, 0x17, 0xd6, 0xb0, 0xe2, 0x82, 0xfb,
0x6a, 0xb7, 0x43, 0x88, 0x5d, 0x06, 0xa5, 0x60, 0x52, 0x64, 0xa9, 0x00, 0xc3, 0xa0, 0xd1, 0x90,
0x12, 0x62, 0x18, 0xf8, 0x04, 0x30, 0x79, 0xc8, 0xca, 0x39, 0x43, 0x4d, 0x4a, 0x49, 0xd0, 0xa4,
0x26, 0xec, 0x2d, 0xfa, 0xa6, 0xee, 0xbc, 0x58, 0x81, 0x5b, 0xf4, 0xaa, 0x5a, 0xbc, 0x58, 0x11,
0xb7, 0xe8, 0x3d, 0x00, 0x14, 0xf1, 0x38, 0xae, 0x04, 0x5e, 0x44, 0x29, 0x09, 0x16, 0x51, 0x13,
0x76, 0x8d, 0x6e, 0x8a, 0xb8, 0x14, 0x60, 0x8d, 0x56, 0x05, 0x70, 0xae, 0x56, 0xdc, 0x24, 0xe5,
0x76, 0x26, 0x69, 0x7a, 0x85, 0x89, 0xbd, 0x94, 0x65, 0x49, 0x05, 0x66, 0x12, 0xd5, 0xee, 0x5a,
0x4a, 0xcc, 0x24, 0x6d, 0x0a, 0x84, 0x92, 0x7a, 0x2e, 0x83, 0xd5, 0x0e, 0x3c, 0x96, 0xb9, 0x1d,
0x42, 0xec, 0xfc, 0xa4, 0x0b, 0xbd, 0x13, 0x97, 0x65, 0x5a, 0x2f, 0xfe, 0xeb, 0x78, 0x81, 0xb4,
0x9c, 0x98, 0x9f, 0x30, 0x0e, 0x0c, 0x2f, 0x3d, 0x71, 0x63, 0x05, 0x83, 0x53, 0xf7, 0x9d, 0x20,
0x63, 0x33, 0x4e, 0x29, 0x71, 0xee, 0x06, 0x60, 0xad, 0x89, 0x5c, 0x0d, 0x58, 0xef, 0xc2, 0x9c,
0x17, 0xfa, 0x8c, 0x8b, 0x43, 0x7e, 0xc5, 0xa6, 0xfc, 0xf9, 0xeb, 0xb4, 0xaa, 0x37, 0x81, 0x6a,
0xe5, 0x7e, 0x4a, 0x58, 0xc2, 0x60, 0xe2, 0x85, 0xbe, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x1c,
0xb1, 0x57, 0x68, 0x02, 0x01, 0x2d, 0x1a, 0x8e, 0x48, 0x20, 0x42, 0xbc, 0x3d, 0xc7, 0x33, 0xce,
0xd5, 0x57, 0x1c, 0xa6, 0x5c, 0xe7, 0x72, 0x94, 0x35, 0x08, 0x12, 0x47, 0x29, 0x41, 0x05, 0xbb,
0xbf, 0x34, 0xfe, 0xed, 0x10, 0xbb, 0x4f, 0xd8, 0x69, 0x0f, 0xb3, 0x07, 0x3d, 0x48, 0xc4, 0x95,
0xbd, 0xe0, 0x42, 0xb9, 0x6a, 0xdf, 0x6f, 0x79, 0xd0, 0x83, 0x74, 0xce, 0x04, 0xdd, 0x6a, 0x3d,
0x8b, 0x67, 0x97, 0xf3, 0x92, 0x2f, 0xf3, 0x64, 0x87, 0x67, 0xbc, 0x04, 0x67, 0x82, 0x5e, 0xa9,
0x01, 0x4a, 0x9c, 0x09, 0x76, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x28, 0x4b, 0xe7, 0x70, 0x47,
0xed, 0x19, 0x92, 0x00, 0x91, 0xc1, 0xa1, 0x20, 0x12, 0x44, 0xcd, 0x8e, 0x5b, 0xa4, 0xb3, 0x38,
0x6b, 0xfc, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0x33, 0x88, 0x10, 0x05, 0xa4, 0x9e, 0xd3, 0x65, 0x99,
0x8f, 0x73, 0xc1, 0xc9, 0x7a, 0x6a, 0xa0, 0xb3, 0x9e, 0x0e, 0x08, 0xa6, 0xd5, 0x29, 0x7b, 0x5d,
0x97, 0xa6, 0xfe, 0x07, 0x9b, 0x56, 0xeb, 0xbf, 0x0f, 0x95, 0x3c, 0x34, 0xad, 0x02, 0x0e, 0x54,
0x46, 0x39, 0x69, 0x02, 0x26, 0xa0, 0xed, 0x87, 0xc9, 0xfd, 0x6e, 0x10, 0xf7, 0x33, 0x11, 0xab,
0x8c, 0x85, 0xfc, 0x48, 0xa0, 0x8f, 0x1f, 0x0d, 0xda, 0xe3, 0x16, 0xaf, 0x3e, 0x17, 0x6c, 0x76,
0xd9, 0xba, 0xaf, 0xe7, 0x17, 0xb4, 0x41, 0x88, 0xe3, 0x16, 0x02, 0xc5, 0xbb, 0x68, 0x3c, 0xe3,
0x79, 0xa8, 0x8b, 0x6a, 0x79, 0x9f, 0x2e, 0x52, 0x9c, 0xdd, 0xfc, 0x1a, 0xa9, 0x8a, 0xcc, 0xa6,
0x9b, 0x36, 0x09, 0x0b, 0x2e, 0x44, 0x6c, 0x7e, 0x49, 0xd8, 0xe6, 0xe4, 0xd0, 0xe7, 0x61, 0xfb,
0x65, 0x86, 0x96, 0x95, 0x43, 0xfa, 0x65, 0x06, 0x8a, 0xa5, 0x2b, 0xd9, 0xc4, 0x48, 0x87, 0x15,
0x3f, 0x4e, 0x1e, 0xf5, 0x83, 0xed, 0x96, 0xc7, 0xf3, 0xb9, 0x93, 0xb1, 0xb8, 0x6c, 0xbc, 0x6e,
0x05, 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x30, 0x85, 0x79, 0x9e, 0x77, 0x78, 0x2e, 0x58,
0x2e, 0xb0, 0x29, 0xcc, 0x37, 0xa6, 0xc0, 0xd0, 0x14, 0x46, 0x29, 0x80, 0xb8, 0x95, 0xe7, 0x41,
0x4c, 0x1c, 0xc5, 0x0b, 0x34, 0x63, 0x6b, 0xce, 0x7a, 0x1a, 0x79, 0x28, 0x6e, 0x01, 0xe7, 0x3c,
0x64, 0x76, 0xbd, 0x4c, 0xe3, 0x72, 0x6e, 0x4e, 0x37, 0x92, 0xc1, 0x63, 0xda, 0x8e, 0x4f, 0x12,
0x0f, 0x99, 0xc3, 0x1a, 0x60, 0xda, 0x19, 0x2f, 0xe2, 0xb9, 0xa9, 0x29, 0x52, 0x03, 0x29, 0x6f,
0x55, 0xf5, 0x7e, 0x37, 0x08, 0xfc, 0xbc, 0x48, 0x13, 0xc6, 0x03, 0x7e, 0xa4, 0xbc, 0x8f, 0x1f,
0x08, 0x82, 0xec, 0xad, 0xae, 0x77, 0xb3, 0xa3, 0x1b, 0xe5, 0x89, 0xda, 0xc7, 0x0e, 0x89, 0xe6,
0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x46, 0xf5, 0x01, 0x6d, 0x68, 0x8c, 0x9a, 0xf3, 0xd7,
0x3e, 0x63, 0x14, 0x83, 0x95, 0xcf, 0x1f, 0xab, 0x31, 0xba, 0x1b, 0x8b, 0xb8, 0xce, 0xdb, 0x5f,
0xa4, 0xec, 0x95, 0xda, 0x08, 0x23, 0xf5, 0xd5, 0xd4, 0x50, 0xbe, 0x8b, 0x0d, 0x76, 0xc5, 0xdb,
0xbd, 0xf9, 0x80, 0x6f, 0xb5, 0x43, 0xe8, 0xf4, 0x0d, 0xb6, 0x0a, 0xdb, 0xbd, 0xf9, 0x80, 0x6f,
0xf5, 0x49, 0x89, 0x4e, 0xdf, 0xe0, 0xbb, 0x12, 0xdb, 0xbd, 0x79, 0xe5, 0xfb, 0xcf, 0xf5, 0xc0,
0x75, 0x9d, 0xd7, 0x79, 0xd8, 0x4c, 0xa4, 0x57, 0x0c, 0x4b, 0x27, 0x7d, 0x7b, 0x06, 0x0d, 0xa5,
0x93, 0xb4, 0x8a, 0xf3, 0x51, 0x37, 0xac, 0x14, 0xc7, 0xbc, 0x4a, 0xe5, 0x25, 0x91, 0xa7, 0x3d,
0x8c, 0x6a, 0x38, 0xb4, 0x69, 0x0a, 0x29, 0xd9, 0xc7, 0xdd, 0x1e, 0x6a, 0xaf, 0xe7, 0x3f, 0x0a,
0xd8, 0x6b, 0xdf, 0xd2, 0xdf, 0xea, 0x49, 0xdb, 0x07, 0xcf, 0x1e, 0xa3, 0x1f, 0x19, 0x4e, 0x18,
0xba, 0x4a, 0x18, 0x53, 0xe6, 0x51, 0xb2, 0xfb, 0xec, 0xf4, 0x71, 0x7f, 0x85, 0x0e, 0xf7, 0xa3,
0x24, 0xe9, 0xe7, 0xde, 0x7d, 0xe6, 0xfe, 0xb8, 0xbf, 0x82, 0x72, 0xff, 0x97, 0x7a, 0x5b, 0x03,
0xfd, 0xab, 0x31, 0xf8, 0xa4, 0x8f, 0x45, 0x30, 0x0e, 0x9f, 0x5e, 0x4b, 0x47, 0x15, 0xe4, 0x6f,
0xf5, 0xfe, 0x5d, 0xa3, 0xf2, 0x1d, 0x29, 0xf9, 0x6e, 0xb5, 0x1a, 0x92, 0xa1, 0xa8, 0xb2, 0x30,
0x1c, 0x98, 0x1f, 0x5d, 0x53, 0xcb, 0xf9, 0xc2, 0xa0, 0x07, 0xab, 0x77, 0x79, 0x9d, 0xf2, 0x84,
0x2c, 0x3b, 0x34, 0x2c, 0xd0, 0xc7, 0xd7, 0x55, 0xa3, 0x86, 0xaa, 0x03, 0xcb, 0x6f, 0xec, 0x3c,
0xed, 0x69, 0xd8, 0xfb, 0xea, 0xce, 0x87, 0xd7, 0x53, 0x52, 0x65, 0xf9, 0x8f, 0xb5, 0xe8, 0x9e,
0xc7, 0xda, 0xc7, 0x19, 0xe0, 0xd0, 0xe5, 0x07, 0x01, 0xfb, 0x94, 0x92, 0x29, 0xdc, 0x6f, 0x7d,
0x33, 0x65, 0xfb, 0x39, 0x3e, 0x4f, 0x65, 0x2f, 0xcd, 0x04, 0x2b, 0xdb, 0x9f, 0xe3, 0xf3, 0xed,
0x36, 0xd4, 0x90, 0xfe, 0x1c, 0x5f, 0x00, 0x77, 0x3e, 0xc7, 0x87, 0x78, 0x46, 0x3f, 0xc7, 0x87,
0x5a, 0x0b, 0x7e, 0x8e, 0x2f, 0xac, 0x41, 0xad, 0x2e, 0xba, 0x08, 0xcd, 0xb1, 0x79, 0x2f, 0x8b,
0xfe, 0x29, 0xfa, 0x93, 0xeb, 0xa8, 0x10, 0xeb, 0x6b, 0xc3, 0xc9, 0x6b, 0x9e, 0x3d, 0xda, 0xd4,
0xbb, 0xea, 0xb9, 0xdd, 0x9b, 0x57, 0xbe, 0x7f, 0xa4, 0x36, 0x57, 0x66, 0x35, 0xe1, 0xa5, 0xfc,
0x14, 0xe3, 0x66, 0x68, 0x75, 0xa8, 0x2d, 0xb8, 0x3d, 0xff, 0xa8, 0x1f, 0x4c, 0x54, 0xb7, 0x26,
0x54, 0xa7, 0x0f, 0xbb, 0x0c, 0x81, 0x2e, 0xdf, 0xee, 0xcd, 0x13, 0xcb, 0x48, 0xe3, 0xbb, 0xe9,
0xed, 0x1e, 0xc6, 0xfc, 0xbe, 0x7e, 0xdc, 0x5f, 0x41, 0xb9, 0xbf, 0x52, 0x59, 0xab, 0xeb, 0x5e,
0xf6, 0xf3, 0x56, 0x97, 0xa9, 0x89, 0xd7, 0xcd, 0xc3, 0xbe, 0x78, 0x28, 0x7f, 0x71, 0x97, 0xd0,
0xae, 0xfc, 0x05, 0x5d, 0x46, 0x3f, 0xbc, 0x9e, 0x92, 0x2a, 0xcb, 0x3f, 0xac, 0x45, 0x37, 0xc9,
0xb2, 0xa8, 0x38, 0xf8, 0xb8, 0xaf, 0x65, 0x10, 0x0f, 0x9f, 0x5c, 0x5b, 0x4f, 0x15, 0xea, 0x9f,
0xd7, 0xa2, 0x5b, 0x81, 0x42, 0x35, 0x01, 0x72, 0x0d, 0xeb, 0x7e, 0xa0, 0x7c, 0x7a, 0x7d, 0x45,
0x6a, 0xb9, 0x77, 0xf1, 0x49, 0xfb, 0xd3, 0x6a, 0x01, 0xdb, 0x13, 0xfa, 0xd3, 0x6a, 0xdd, 0x5a,
0xf0, 0x8c, 0x29, 0x3e, 0xd3, 0x7b, 0x3e, 0xf4, 0x8c, 0x49, 0x5e, 0xd0, 0x0c, 0x7e, 0xb4, 0x05,
0xe3, 0x30, 0x27, 0xcf, 0x5f, 0x17, 0x71, 0x9e, 0xd0, 0x4e, 0x1a, 0x79, 0xb7, 0x13, 0xc3, 0xc1,
0xb3, 0xb9, 0x5a, 0x7a, 0xc2, 0xf5, 0x3e, 0xee, 0x01, 0xa5, 0x6f, 0x90, 0xe0, 0xd9, 0x5c, 0x0b,
0x25, 0xbc, 0xa9, 0xac, 0x31, 0xe4, 0x0d, 0x24, 0x8b, 0x0f, 0xfb, 0xa0, 0x60, 0x87, 0x60, 0xbc,
0x99, 0x23, 0xff, 0x47, 0x21, 0x2b, 0xad, 0x63, 0xff, 0xad, 0x9e, 0x34, 0xe1, 0x76, 0xc2, 0xc4,
0x67, 0x2c, 0x4e, 0x58, 0x19, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73, 0xbb, 0xc3, 0xb3,
0xe5, 0x22, 0x57, 0x9d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xa7, 0x92, 0xd6, 0xad,
0x4c, 0x2f, 0x1f, 0x86, 0xcd, 0x78, 0x59, 0xe5, 0x66, 0x2f, 0x96, 0xae, 0xa7, 0x0a, 0xa3, 0x8e,
0x7a, 0x82, 0x48, 0xda, 0xea, 0x49, 0xc3, 0xe3, 0x41, 0xc7, 0xad, 0x89, 0xa7, 0xed, 0x0e, 0x5b,
0xad, 0x90, 0x7a, 0xdc, 0x5f, 0x01, 0x1e, 0xc6, 0xaa, 0xa8, 0x3a, 0x48, 0x2b, 0xb1, 0x97, 0x66,
0xd9, 0x60, 0x33, 0x10, 0x26, 0x1a, 0x0a, 0x1e, 0xc6, 0x22, 0x30, 0x11, 0xc9, 0xfa, 0xf0, 0x32,
0x1f, 0x74, 0xd9, 0x91, 0x54, 0xaf, 0x48, 0x76, 0x69, 0x70, 0xa0, 0xe6, 0x34, 0xb5, 0xa9, 0xed,
0x30, 0xdc, 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xd3, 0x7e, 0x49, 0xc9, 0x95, 0xe5, 0x2e,
0x65, 0xc2, 0x5b, 0x49, 0xee, 0x75, 0x50, 0xe0, 0x50, 0xb2, 0x19, 0x46, 0x2f, 0xd3, 0x64, 0xce,
0x04, 0xfa, 0xa0, 0xca, 0x05, 0x82, 0x0f, 0xaa, 0x00, 0x08, 0xba, 0xae, 0xf9, 0xbb, 0x39, 0x8d,
0x1d, 0x27, 0x58, 0xd7, 0x29, 0x65, 0x87, 0x0a, 0x75, 0x1d, 0x4a, 0x83, 0xd9, 0xc0, 0xb8, 0x55,
0x9f, 0xb9, 0x78, 0x18, 0x32, 0x03, 0xbe, 0x75, 0xb1, 0xd9, 0x8b, 0x05, 0x2b, 0x8a, 0x75, 0x98,
0x2e, 0x52, 0x81, 0xad, 0x28, 0x8e, 0x8d, 0x1a, 0x09, 0xad, 0x28, 0x6d, 0x94, 0xaa, 0x5e, 0x9d,
0x23, 0x8c, 0x93, 0x70, 0xf5, 0x1a, 0xa6, 0x5f, 0xf5, 0x0c, 0xdb, 0x7a, 0xae, 0x9a, 0x9b, 0x90,
0x11, 0x17, 0x6a, 0xb3, 0x8c, 0xc4, 0xb6, 0x7c, 0xfd, 0x19, 0x82, 0xa1, 0x59, 0x87, 0x52, 0x80,
0xcf, 0x0b, 0x6a, 0x4e, 0x3f, 0xfa, 0x2d, 0x0a, 0x16, 0x97, 0x71, 0x3e, 0x43, 0x37, 0xa7, 0xd2,
0x60, 0x8b, 0x0c, 0x6d, 0x4e, 0x49, 0x0d, 0xf0, 0xd4, 0xde, 0x7f, 0xbf, 0x18, 0x19, 0x0a, 0xe6,
0x45, 0x5e, 0xff, 0xf5, 0xe2, 0x07, 0x3d, 0x48, 0xf8, 0xd4, 0x5e, 0x03, 0xe6, 0xdc, 0xbd, 0x71,
0xfa, 0x41, 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x08, 0x6a, 0xe7, 0x6c, 0xf1, 0x73,
0xb6, 0xc2, 0x82, 0xda, 0x3d, 0x24, 0xfc, 0x9c, 0xad, 0x42, 0x41, 0xdd, 0x46, 0x41, 0x9e, 0xe9,
0xee, 0x83, 0xd6, 0x03, 0xfa, 0xee, 0xd6, 0x67, 0xa3, 0x93, 0x03, 0x23, 0x67, 0x37, 0xbd, 0xf2,
0x1e, 0x53, 0x20, 0x05, 0xdd, 0x4d, 0xaf, 0xf0, 0xa7, 0x14, 0x9b, 0xbd, 0x58, 0x78, 0x23, 0x20,
0x16, 0xec, 0xb5, 0x7e, 0x54, 0x8f, 0x14, 0x57, 0xca, 0x5b, 0xcf, 0xea, 0xef, 0x77, 0x83, 0xf6,
0xfe, 0xed, 0x71, 0xc9, 0x67, 0xac, 0xaa, 0xd4, 0x17, 0x60, 0xfd, 0x0b, 0x4e, 0x4a, 0x36, 0x04,
0xdf, 0x7f, 0xbd, 0x1b, 0x86, 0x9c, 0xcf, 0x36, 0x36, 0x22, 0xfb, 0x35, 0xa9, 0x75, 0x54, 0xb3,
0xfd, 0x21, 0xa9, 0x8d, 0x4e, 0xce, 0x0e, 0x2f, 0x25, 0x75, 0x3f, 0x1f, 0x75, 0x1f, 0x55, 0xc7,
0xbe, 0x1c, 0xf5, 0xa0, 0x07, 0xa9, 0x5c, 0x7d, 0x16, 0xbd, 0x79, 0xc0, 0xe7, 0x13, 0x96, 0x27,
0x83, 0xef, 0xf9, 0x37, 0x78, 0xf9, 0x7c, 0x58, 0xff, 0xd9, 0x18, 0xbd, 0x41, 0x89, 0xed, 0x1d,
0xc4, 0x5d, 0x76, 0xb6, 0x9c, 0x4f, 0x44, 0x2c, 0xc0, 0x1d, 0x44, 0xf9, 0xf7, 0x61, 0x2d, 0x20,
0xee, 0x20, 0x7a, 0x00, 0xb0, 0x37, 0x2d, 0x19, 0x43, 0xed, 0xd5, 0x82, 0xa0, 0x3d, 0x05, 0xd8,
0x2c, 0xc2, 0xd8, 0xab, 0x13, 0x75, 0x78, 0x67, 0xd0, 0xea, 0x48, 0x29, 0x91, 0x45, 0xb4, 0x29,
0x1b, 0xdc, 0x4d, 0xf5, 0xe5, 0xd7, 0x7c, 0x96, 0x8b, 0x45, 0x5c, 0xae, 0x40, 0x70, 0xab, 0x5a,
0x3a, 0x00, 0x11, 0xdc, 0x28, 0x68, 0x47, 0xad, 0x6e, 0xe6, 0xd9, 0xe5, 0x3e, 0x2f, 0xf9, 0x52,
0xa4, 0x39, 0x83, 0x5f, 0x74, 0x31, 0x0d, 0xea, 0x32, 0xc4, 0xa8, 0xa5, 0x58, 0x9b, 0xe5, 0x4a,
0xa2, 0xb9, 0xce, 0x28, 0x3f, 0x81, 0x5f, 0x09, 0x5e, 0xc2, 0xc7, 0x99, 0x8d, 0x15, 0x08, 0x11,
0x59, 0x2e, 0x09, 0x83, 0xbe, 0x3f, 0x4e, 0xf3, 0x39, 0xda, 0xf7, 0xc7, 0xee, 0x57, 0x95, 0x6f,
0xd1, 0x80, 0x1d, 0x50, 0x4d, 0xa3, 0x35, 0x03, 0x40, 0xbd, 0xca, 0x8c, 0x36, 0xba, 0x4b, 0x10,
0x03, 0x0a, 0x27, 0x81, 0xab, 0x2f, 0x0a, 0x96, 0xb3, 0x44, 0x5f, 0xda, 0xc3, 0x5c, 0x79, 0x44,
0xd0, 0x15, 0x24, 0xed, 0x5c, 0x24, 0xe5, 0x27, 0xcb, 0xfc, 0xb8, 0xe4, 0xe7, 0x69, 0xc6, 0x4a,
0x30, 0x17, 0x35, 0xea, 0x8e, 0x9c, 0x98, 0x8b, 0x30, 0xce, 0xde, 0xfe, 0x90, 0x52, 0xef, 0x77,
0x1c, 0xa6, 0x65, 0x3c, 0x83, 0xb7, 0x3f, 0x1a, 0x1b, 0x6d, 0x8c, 0x38, 0x19, 0x0c, 0xe0, 0x4e,
0xa2, 0xd3, 0xb8, 0xce, 0x57, 0x32, 0x3e, 0xd4, 0xab, 0xb4, 0xf2, 0x5b, 0xc3, 0x15, 0x48, 0x74,
0x94, 0x39, 0x8c, 0x24, 0x12, 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x24, 0x77, 0xa4, 0x6e, 0x35, 0x81,
0xa5, 0xa4, 0xb1, 0xa1, 0x85, 0xc4, 0x52, 0xd2, 0x82, 0xc0, 0x84, 0xa4, 0x87, 0xc1, 0x1c, 0x9d,
0x90, 0x8c, 0x34, 0x38, 0x21, 0xb9, 0x94, 0x9d, 0x28, 0xc6, 0x79, 0x2a, 0xd2, 0x38, 0x9b, 0x30,
0x71, 0x1c, 0x97, 0xf1, 0x82, 0x09, 0x56, 0xc2, 0x89, 0x42, 0x21, 0x43, 0x8f, 0x21, 0x26, 0x0a,
0x8a, 0x55, 0x0e, 0x7f, 0x3b, 0x7a, 0xbb, 0x5e, 0xf7, 0x59, 0xae, 0x7e, 0x81, 0xea, 0xb9, 0xfc,
0xe9, 0xba, 0xc1, 0x3b, 0xc6, 0xc6, 0x44, 0x94, 0x2c, 0x5e, 0x68, 0xdb, 0x6f, 0x99, 0xbf, 0x4b,
0xf0, 0xf1, 0x5a, 0x1d, 0xcf, 0x47, 0x5c, 0xa4, 0xe7, 0xf5, 0x36, 0x5b, 0xbd, 0xc0, 0x04, 0xe2,
0xd9, 0x15, 0x0f, 0x03, 0x9f, 0x62, 0xc1, 0x38, 0x3b, 0x4f, 0xbb, 0xd2, 0x13, 0x56, 0x64, 0x70,
0x9e, 0xf6, 0xb4, 0x25, 0x40, 0xcc, 0xd3, 0x28, 0x68, 0x07, 0xa7, 0x2b, 0x9e, 0xb2, 0x70, 0x65,
0xa6, 0xac, 0x5f, 0x65, 0xa6, 0xde, 0x3b, 0x21, 0x59, 0xf4, 0xf6, 0x21, 0x5b, 0x9c, 0xb1, 0xb2,
0xba, 0x48, 0x0b, 0xea, 0x7b, 0xc8, 0x96, 0xe8, 0xfc, 0x1e, 0x32, 0x81, 0xda, 0x95, 0xc0, 0x02,
0xe3, 0xea, 0x28, 0x5e, 0x30, 0xf9, 0x61, 0x19, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, 0x09,
0x48, 0xd8, 0x79, 0xbd, 0xcc, 0x32, 0x27, 0x6c, 0x5e, 0x47, 0x58, 0x79, 0x1c, 0xaf, 0x16, 0x2c,
0x17, 0xca, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x99, 0x9a,
0xbc, 0x86, 0x3f, 0xe6, 0xa5, 0x68, 0x7e, 0x5f, 0xee, 0xb4, 0xcc, 0xc0, 0xd4, 0xe4, 0x37, 0xaa,
0x47, 0x12, 0x53, 0x53, 0x58, 0xc3, 0xf9, 0x2d, 0x11, 0xaf, 0x0c, 0x2f, 0x58, 0x69, 0xe2, 0xe4,
0xf9, 0x22, 0x4e, 0x33, 0x15, 0x0d, 0xdf, 0x0f, 0xd8, 0x26, 0x74, 0x88, 0xdf, 0x12, 0xe9, 0xab,
0xeb, 0xfc, 0xfa, 0x4a, 0xb8, 0x84, 0xe0, 0x11, 0x41, 0x87, 0x7d, 0xe2, 0x11, 0x41, 0xb7, 0x96,
0xdd, 0xb9, 0x5b, 0x56, 0x72, 0x2b, 0x49, 0xec, 0xf0, 0x04, 0x9e, 0x17, 0x3a, 0x36, 0x01, 0x48,
0xec, 0xdc, 0x83, 0x0a, 0x36, 0x35, 0xb0, 0xd8, 0x5e, 0x9a, 0xc7, 0x59, 0xfa, 0x63, 0x98, 0xd6,
0x3b, 0x76, 0x34, 0x41, 0xa4, 0x06, 0x38, 0x89, 0xb9, 0xda, 0x67, 0x62, 0x9a, 0xd6, 0x53, 0xff,
0xfd, 0x40, 0xbb, 0x49, 0xa2, 0xdb, 0x95, 0x43, 0x3a, 0xdf, 0x3e, 0x86, 0xcd, 0x3a, 0x2a, 0x8a,
0x49, 0xbd, 0xaa, 0x9e, 0xb0, 0x19, 0x4b, 0x0b, 0x31, 0xf8, 0x28, 0xdc, 0x56, 0x00, 0x27, 0x2e,
0x5a, 0xf4, 0x50, 0x73, 0x1e, 0xdf, 0xd7, 0x73, 0xc9, 0xa4, 0xf9, 0xe1, 0xd5, 0xd3, 0x8a, 0x95,
0x2a, 0xd1, 0xd8, 0x67, 0x02, 0x8c, 0x4e, 0x87, 0x1b, 0x3a, 0x60, 0x5d, 0x51, 0x62, 0x74, 0x86,
0x35, 0xec, 0x61, 0x9f, 0xc3, 0xa9, 0x6f, 0x07, 0xc8, 0xeb, 0x8e, 0x8f, 0x48, 0x63, 0x0e, 0x45,
0x1c, 0xf6, 0xd1, 0xb4, 0xcd, 0xd6, 0xda, 0x6e, 0x47, 0xf9, 0x6a, 0x0c, 0xaf, 0x4c, 0x20, 0x96,
0x24, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x79, 0x9c, 0xcc, 0xe2, 0x4a, 0x1c, 0xc7,
0xab, 0x8c, 0xc7, 0x89, 0x5c, 0xd7, 0xe1, 0x61, 0xb8, 0x66, 0x86, 0x2e, 0x44, 0x1d, 0x86, 0x53,
0xb0, 0x9b, 0x9d, 0xc9, 0xdf, 0x93, 0x55, 0x57, 0x49, 0x61, 0x76, 0x26, 0xcb, 0x0b, 0xaf, 0x91,
0xde, 0x0d, 0x43, 0xf6, 0x15, 0xb8, 0x46, 0x24, 0xd3, 0x90, 0x5b, 0x98, 0x8e, 0x97, 0x80, 0xbc,
0x1f, 0x20, 0xec, 0x67, 0x59, 0x9a, 0xbf, 0xeb, 0x9f, 0x10, 0x13, 0xea, 0x0b, 0xf1, 0x8f, 0x30,
0x5d, 0x17, 0xf2, 0x6e, 0xa8, 0x6d, 0xf5, 0xa4, 0x6d, 0x9a, 0xb9, 0x73, 0x11, 0x8b, 0x51, 0x92,
0x1c, 0xb2, 0x0a, 0x79, 0x9f, 0xbd, 0x16, 0x0e, 0xad, 0x94, 0x48, 0x33, 0xdb, 0x94, 0x0d, 0xf4,
0x5a, 0xf6, 0x3c, 0x49, 0x85, 0x92, 0xe9, 0x0b, 0xda, 0x8f, 0xda, 0x06, 0xda, 0x14, 0x51, 0x2b,
0x9a, 0xb6, 0x73, 0x79, 0xcd, 0x4c, 0xf9, 0x7c, 0x9e, 0x31, 0x05, 0x9d, 0xb0, 0xb8, 0xf9, 0x40,
0xe6, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0x73, 0x79, 0x50, 0xc1, 0xa6, 0x91, 0x35, 0xd6, 0x3c, 0x92,
0xd2, 0x0d, 0xbb, 0xd1, 0x36, 0xe3, 0x01, 0x44, 0x1a, 0x89, 0x82, 0xf6, 0xb5, 0xbb, 0x5a, 0xbc,
0xcf, 0x74, 0x4b, 0xc0, 0x2f, 0x70, 0x49, 0x65, 0x47, 0x4c, 0xbc, 0x76, 0x87, 0x60, 0x76, 0x9f,
0x00, 0x3c, 0x3c, 0x5b, 0x8d, 0x13, 0xb8, 0x4f, 0x80, 0xfa, 0x92, 0x21, 0xf6, 0x09, 0x14, 0xeb,
0x77, 0x9d, 0x39, 0xf7, 0x3a, 0x88, 0x2b, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, 0x75, 0x94,
0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x7a, 0x17, 0x66, 0x73, 0xff,
0x5a, 0x78, 0xc2, 0xe2, 0xc4, 0x54, 0x0c, 0xd1, 0x75, 0xe5, 0x44, 0xee, 0x8f, 0x71, 0xca, 0xc9,
0xef, 0x45, 0x83, 0xa6, 0x1a, 0xa5, 0xeb, 0xe6, 0x16, 0x56, 0xc4, 0x9a, 0x20, 0x26, 0x2a, 0x9f,
0x70, 0x12, 0x37, 0xaf, 0x8b, 0xa6, 0x5c, 0x39, 0x50, 0xaf, 0x85, 0x56, 0x20, 0x71, 0xf3, 0x9b,
0xbd, 0x45, 0x13, 0x89, 0x5b, 0xb7, 0x96, 0xf3, 0x31, 0x22, 0xd0, 0x65, 0x7b, 0x25, 0x5f, 0xc0,
0x32, 0x7d, 0x1a, 0xec, 0x1e, 0x44, 0x83, 0xf8, 0x18, 0x51, 0x3f, 0x4d, 0xbb, 0x06, 0x99, 0xb3,
0x03, 0x79, 0x3d, 0x0d, 0xff, 0x15, 0x94, 0x46, 0x48, 0xac, 0x41, 0x2d, 0xc8, 0xf9, 0xe9, 0xd4,
0xf1, 0xcb, 0x32, 0x15, 0x69, 0x3e, 0x9f, 0x72, 0x9e, 0xc1, 0x23, 0xcb, 0xd1, 0x78, 0xe8, 0x4a,
0xa9, 0x9f, 0x4e, 0x6d, 0x51, 0x76, 0x89, 0x1b, 0x8d, 0x47, 0x4b, 0xc1, 0xcf, 0xd3, 0x2c, 0x03,
0x91, 0x33, 0x1a, 0x0f, 0xb5, 0x84, 0x88, 0x1c, 0x9f, 0x70, 0x7e, 0xf0, 0x73, 0x2c, 0x4f, 0xff,
0xd5, 0x09, 0xe8, 0x1d, 0xa8, 0xe3, 0x08, 0xa9, 0x1f, 0xfc, 0x84, 0x90, 0xf3, 0x03, 0xa6, 0x63,
0xec, 0xa7, 0x5c, 0x36, 0xa1, 0x3a, 0x02, 0x51, 0x3f, 0x60, 0x4a, 0xc1, 0x8d, 0xcf, 0x67, 0xef,
0xff, 0xd7, 0x57, 0x37, 0xd6, 0x7e, 0xfa, 0xd5, 0x8d, 0xb5, 0xff, 0xf9, 0xea, 0xc6, 0xda, 0x4f,
0xbe, 0xbe, 0xf1, 0xc6, 0x4f, 0xbf, 0xbe, 0xf1, 0xc6, 0x7f, 0x7f, 0x7d, 0xe3, 0x8d, 0x2f, 0xdf,
0x54, 0xbf, 0xea, 0x7f, 0xf6, 0x73, 0xf2, 0xb7, 0xf9, 0x9f, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x73, 0x8b, 0x92, 0x17, 0xf9, 0x7f, 0x00, 0x00,
}
// This is a compile-time assertion to ensure that this generated file
@ -540,6 +541,7 @@ type ClientCommandsHandler interface {
ObjectTypeRecommendedRelationsSet(context.Context, *pb.RpcObjectTypeRecommendedRelationsSetRequest) *pb.RpcObjectTypeRecommendedRelationsSetResponse
ObjectTypeRecommendedFeaturedRelationsSet(context.Context, *pb.RpcObjectTypeRecommendedFeaturedRelationsSetRequest) *pb.RpcObjectTypeRecommendedFeaturedRelationsSetResponse
ObjectTypeListConflictingRelations(context.Context, *pb.RpcObjectTypeListConflictingRelationsRequest) *pb.RpcObjectTypeListConflictingRelationsResponse
ObjectTypeResolveLayoutConflicts(context.Context, *pb.RpcObjectTypeResolveLayoutConflictsRequest) *pb.RpcObjectTypeResolveLayoutConflictsResponse
HistoryShowVersion(context.Context, *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse
HistoryGetVersions(context.Context, *pb.RpcHistoryGetVersionsRequest) *pb.RpcHistoryGetVersionsResponse
HistorySetVersion(context.Context, *pb.RpcHistorySetVersionRequest) *pb.RpcHistorySetVersionResponse
@ -3215,6 +3217,26 @@ func ObjectTypeListConflictingRelations(b []byte) (resp []byte) {
return resp
}
func ObjectTypeResolveLayoutConflicts(b []byte) (resp []byte) {
defer func() {
if PanicHandler != nil {
if r := recover(); r != nil {
resp, _ = (&pb.RpcObjectTypeResolveLayoutConflictsResponse{Error: &pb.RpcObjectTypeResolveLayoutConflictsResponseError{Code: pb.RpcObjectTypeResolveLayoutConflictsResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
PanicHandler(r)
}
}
}()
in := new(pb.RpcObjectTypeResolveLayoutConflictsRequest)
if err := in.Unmarshal(b); err != nil {
resp, _ = (&pb.RpcObjectTypeResolveLayoutConflictsResponse{Error: &pb.RpcObjectTypeResolveLayoutConflictsResponseError{Code: pb.RpcObjectTypeResolveLayoutConflictsResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
return resp
}
resp, _ = clientCommandsHandler.ObjectTypeResolveLayoutConflicts(context.Background(), in).Marshal()
return resp
}
func HistoryShowVersion(b []byte) (resp []byte) {
defer func() {
if PanicHandler != nil {
@ -6827,6 +6849,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
cd = ObjectTypeRecommendedFeaturedRelationsSet(data)
case "ObjectTypeListConflictingRelations":
cd = ObjectTypeListConflictingRelations(data)
case "ObjectTypeResolveLayoutConflicts":
cd = ObjectTypeResolveLayoutConflicts(data)
case "HistoryShowVersion":
cd = HistoryShowVersion(data)
case "HistoryGetVersions":
@ -8907,6 +8931,20 @@ func (h *ClientCommandsHandlerProxy) ObjectTypeListConflictingRelations(ctx cont
call, _ := actualCall(ctx, req)
return call.(*pb.RpcObjectTypeListConflictingRelationsResponse)
}
func (h *ClientCommandsHandlerProxy) ObjectTypeResolveLayoutConflicts(ctx context.Context, req *pb.RpcObjectTypeResolveLayoutConflictsRequest) *pb.RpcObjectTypeResolveLayoutConflictsResponse {
actualCall := func(ctx context.Context, req any) (any, error) {
return h.client.ObjectTypeResolveLayoutConflicts(ctx, req.(*pb.RpcObjectTypeResolveLayoutConflictsRequest)), nil
}
for _, interceptor := range h.interceptors {
toCall := actualCall
currentInterceptor := interceptor
actualCall = func(ctx context.Context, req any) (any, error) {
return currentInterceptor(ctx, req, "ObjectTypeResolveLayoutConflicts", toCall)
}
}
call, _ := actualCall(ctx, req)
return call.(*pb.RpcObjectTypeResolveLayoutConflictsResponse)
}
func (h *ClientCommandsHandlerProxy) HistoryShowVersion(ctx context.Context, req *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse {
actualCall := func(ctx context.Context, req any) (any, error) {
return h.client.HistoryShowVersion(ctx, req.(*pb.RpcHistoryShowVersionRequest)), nil

View file

@ -0,0 +1,368 @@
package layout
import (
"context"
"errors"
"fmt"
"slices"
"strings"
"github.com/anyproto/any-sync/app/logger"
"github.com/anyproto/any-sync/app/ocache"
"go.uber.org/zap"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
"github.com/anyproto/anytype-heart/core/block/editor/state"
"github.com/anyproto/anytype-heart/core/block/simple"
"github.com/anyproto/anytype-heart/core/block/source"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
"github.com/anyproto/anytype-heart/pkg/lib/database"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
"github.com/anyproto/anytype-heart/util/pbtypes"
)
var log = logger.NewNamed("layout-syncer")
type Syncer interface {
SyncLayoutWithType(oldLayout, newLayout LayoutState, forceUpdate, noApply, withTemplates bool) error
}
func NewSyncer(typeId string, spc smartblock.Space, index spaceindex.Store) Syncer {
return &syncer{
typeId: typeId,
spc: spc,
index: index,
}
}
type LayoutState struct {
layout int64
layoutAlign int64
featuredRelations []string
isLayoutSet bool
isLayoutAlignSet bool
isFeaturedRelationsSet bool
}
func (ls LayoutState) isAllSet() bool {
return ls.isLayoutSet && ls.isLayoutAlignSet && ls.isFeaturedRelationsSet
}
func (ls LayoutState) isAnySet() bool {
return ls.isLayoutSet || ls.isLayoutAlignSet || ls.isFeaturedRelationsSet
}
func (ls LayoutState) Copy() LayoutState {
return LayoutState{
layout: ls.layout,
layoutAlign: ls.layoutAlign,
featuredRelations: slices.Clone(ls.featuredRelations),
isLayoutSet: ls.isLayoutSet,
isLayoutAlignSet: ls.isLayoutAlignSet,
isFeaturedRelationsSet: ls.isFeaturedRelationsSet,
}
}
func NewLayoutStateFromDetails(details *domain.Details) LayoutState {
ls := LayoutState{}
if details == nil {
return ls
}
if layout, ok := details.TryInt64(bundle.RelationKeyRecommendedLayout); ok {
ls.layout = layout
ls.isLayoutSet = true
}
if layoutAlign, ok := details.TryInt64(bundle.RelationKeyLayoutAlign); ok {
ls.layoutAlign = layoutAlign
ls.isLayoutAlignSet = true
}
if featuredRelations, ok := details.TryStringList(bundle.RelationKeyRecommendedFeaturedRelations); ok {
ls.featuredRelations = featuredRelations
ls.isFeaturedRelationsSet = true
}
return ls
}
func NewLayoutStateFromEvents(events []simple.EventMessage) LayoutState {
ls := LayoutState{}
for _, ev := range events {
if amend := ev.Msg.GetObjectDetailsAmend(); amend != nil {
for _, detail := range amend.Details {
switch detail.Key {
case bundle.RelationKeyRecommendedLayout.String():
ls.layout = int64(detail.Value.GetNumberValue())
ls.isLayoutSet = true
case bundle.RelationKeyRecommendedFeaturedRelations.String():
ls.featuredRelations = pbtypes.GetStringListValue(detail.Value)
ls.isFeaturedRelationsSet = true
case bundle.RelationKeyLayoutAlign.String():
ls.layoutAlign = int64(detail.Value.GetNumberValue())
ls.isLayoutAlignSet = true
}
}
if ls.isAllSet() {
return ls
}
}
}
return ls
}
type relationIdDeriver struct {
space smartblock.Space
cache map[domain.RelationKey]string
}
func (d *relationIdDeriver) deriveId(key domain.RelationKey) (string, error) {
if d.cache != nil {
if id, found := d.cache[key]; found {
return id, nil
}
}
id, err := d.space.DeriveObjectID(context.Background(), domain.MustUniqueKey(coresb.SmartBlockTypeRelation, key.String()))
if err != nil {
return "", fmt.Errorf("failed to derive relation id: %w", err)
}
if d.cache == nil {
d.cache = map[domain.RelationKey]string{}
}
d.cache[key] = id
return id, nil
}
type syncer struct {
spc smartblock.Space
index spaceindex.Store
typeId string
}
func (s *syncer) SyncLayoutWithType(oldLayout, newLayout LayoutState, forceUpdate, noApply, withTemplates bool) error {
if newLayout.isLayoutSet && !isLayoutChangeApplicable(newLayout.layout) {
// if layout change is not applicable, then it is init of some system type. Objects' layout should not be modified
newLayout.isLayoutSet = false
}
var (
resultErr error
deriver = relationIdDeriver{space: s.spc}
isConvertFromNote = oldLayout.layout == int64(model.ObjectType_note) && newLayout.layout != int64(model.ObjectType_note)
)
records, err := s.queryObjects(withTemplates)
if err != nil {
return fmt.Errorf("failed to query objects: %w", err)
}
for _, record := range records {
id := record.Details.GetString(bundle.RelationKeyId)
if id == "" {
continue
}
changes := collectRelationsChanges(record.Details, newLayout, oldLayout, deriver, forceUpdate)
if !noApply && (len(changes.relationsToRemove) > 0 || changes.isFeaturedRelationsChanged) {
// we should modify not local relations from object, that's why we apply changes even if object is not in cache
err = s.spc.Do(id, func(b smartblock.SmartBlock) error {
st := b.NewState()
st.RemoveDetail(changes.relationsToRemove...)
if changes.isFeaturedRelationsChanged {
st.SetDetail(bundle.RelationKeyFeaturedRelations, domain.StringList(changes.newFeaturedRelations))
}
return b.Apply(st)
})
if err != nil {
resultErr = errors.Join(resultErr, err)
}
if _, err = s.spc.TryRemove(id); err != nil && !errors.Is(err, domain.ErrObjectNotFound) {
log.Error("failed to remove object from cache", zap.String("id", id), zap.Error(err))
}
continue
}
if !forceUpdate && (changes.isLayoutFound || !newLayout.isLayoutSet || record.Details.GetInt64(bundle.RelationKeyResolvedLayout) == newLayout.layout) {
// layout detail remains in object or recommendedLayout was not changed or relevant layout is already set, skipping
continue
}
if err = s.updateResolvedLayout(id, newLayout.layout, isConvertFromNote, noApply); err != nil {
resultErr = errors.Join(resultErr, err)
}
}
if resultErr != nil {
return fmt.Errorf("failed to change layout details for objects: %w", resultErr)
}
return nil
}
func (s *syncer) queryObjects(withTemplates bool) ([]database.Record, error) {
records, err := s.index.Query(database.Query{Filters: []database.FilterRequest{
{
RelationKey: bundle.RelationKeyType,
Condition: model.BlockContentDataviewFilter_Equal,
Value: domain.String(s.typeId),
},
}})
if err != nil {
return nil, fmt.Errorf("failed to get objects of single type: %w", err)
}
if !withTemplates {
return records, nil
}
templates, err := s.index.Query(database.Query{Filters: []database.FilterRequest{
{
RelationKey: bundle.RelationKeyTargetObjectType,
Condition: model.BlockContentDataviewFilter_Equal,
Value: domain.String(s.typeId),
},
}})
if err != nil {
return nil, fmt.Errorf("failed to get templates with this target type: %w", err)
}
return append(records, templates...), nil
}
func (s *syncer) updateResolvedLayout(id string, layout int64, addName, noApply bool) error {
err := s.spc.DoLockedIfNotExists(id, func() error {
return s.index.ModifyObjectDetails(id, func(details *domain.Details) (*domain.Details, bool, error) {
if details == nil {
return nil, false, nil
}
if details.GetInt64(bundle.RelationKeyResolvedLayout) == layout {
return nil, false, nil
}
if addName {
snippet := details.GetString(bundle.RelationKeySnippet)
cutSnippet, _, _ := strings.Cut(snippet, "\n")
details.SetString(bundle.RelationKeyName, cutSnippet)
}
details.Set(bundle.RelationKeyResolvedLayout, domain.Int64(layout))
return details, true, nil
})
})
if err == nil {
return nil
}
if !errors.Is(err, ocache.ErrExists) {
return err
}
if noApply {
return nil
}
return s.spc.Do(id, func(b smartblock.SmartBlock) error {
if cr, ok := b.(source.ChangeReceiver); ok && !addName {
// we can do StateAppend here, so resolvedLayout will be injected automatically
return cr.StateAppend(func(d state.Doc) (s *state.State, changes []*pb.ChangeContent, err error) {
return d.NewState(), nil, nil
})
}
// we need to call Apply to generate and push changes on Title and Name addition
return b.Apply(b.NewState(), smartblock.KeepInternalFlags)
})
}
type layoutRelationsChanges struct {
relationsToRemove []domain.RelationKey
isLayoutFound bool
isFeaturedRelationsChanged bool
newFeaturedRelations []string
}
func collectRelationsChanges(details *domain.Details, newLayout, oldLayout LayoutState, deriver relationIdDeriver, forceUpdate bool) (changes layoutRelationsChanges) {
changes.relationsToRemove = make([]domain.RelationKey, 0, 2)
if forceUpdate {
_, found := details.TryInt64(bundle.RelationKeyLayout)
if found {
changes.isLayoutFound = true
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayout)
}
_, found = details.TryInt64(bundle.RelationKeyLayoutAlign)
if found {
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayoutAlign)
}
featuredRelations, found := details.TryStringList(bundle.RelationKeyFeaturedRelations)
if found {
changes.isFeaturedRelationsChanged = true
changes.newFeaturedRelations = []string{}
if slices.Contains(featuredRelations, bundle.RelationKeyDescription.String()) {
changes.newFeaturedRelations = append(changes.newFeaturedRelations, bundle.RelationKeyDescription.String())
}
}
return changes
}
if newLayout.isLayoutSet {
layout, found := details.TryInt64(bundle.RelationKeyLayout)
if found {
changes.isLayoutFound = true
if layout == newLayout.layout || oldLayout.isLayoutSet && layout == oldLayout.layout {
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayout)
}
}
}
if newLayout.isLayoutAlignSet {
layoutAlign, found := details.TryInt64(bundle.RelationKeyLayoutAlign)
if found && (layoutAlign == newLayout.layoutAlign || oldLayout.isLayoutAlignSet && layoutAlign == oldLayout.layoutAlign) {
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayoutAlign)
}
}
if newLayout.isFeaturedRelationsSet {
featuredRelations, found := details.TryStringList(bundle.RelationKeyFeaturedRelations)
if found && isFeaturedRelationsCorrespondToType(featuredRelations, newLayout, oldLayout, deriver) {
changes.isFeaturedRelationsChanged = true
changes.newFeaturedRelations = []string{}
if slices.Contains(featuredRelations, bundle.RelationKeyDescription.String()) {
changes.newFeaturedRelations = append(changes.newFeaturedRelations, bundle.RelationKeyDescription.String())
}
}
}
return changes
}
func isFeaturedRelationsCorrespondToType(fr []string, newLayout, oldLayout LayoutState, deriver relationIdDeriver) bool {
featuredRelationIds := make([]string, 0, len(fr))
for _, key := range fr {
id, err := deriver.deriveId(domain.RelationKey(key))
if err != nil {
log.Error("failed to derive relation id", zap.String("key", key), zap.Error(err))
return true // let us fallback to false, so featuredRelations won't be changed
}
featuredRelationIds = append(featuredRelationIds, id)
}
if newLayout.isFeaturedRelationsSet && slices.Equal(featuredRelationIds, newLayout.featuredRelations) {
return true
}
return oldLayout.isFeaturedRelationsSet && slices.Equal(featuredRelationIds, oldLayout.featuredRelations)
}
func isLayoutChangeApplicable(layout int64) bool {
return slices.Contains([]model.ObjectTypeLayout{
model.ObjectType_basic,
model.ObjectType_todo,
model.ObjectType_profile,
model.ObjectType_note,
model.ObjectType_collection,
}, model.ObjectTypeLayout(layout)) // nolint:gosec
}

View file

@ -2,34 +2,26 @@ package editor
import (
"context"
"errors"
"fmt"
"slices"
"strings"
"github.com/anyproto/any-sync/app/ocache"
"github.com/anyproto/anytype-heart/core/block/editor/basic"
"github.com/anyproto/anytype-heart/core/block/editor/clipboard"
"github.com/anyproto/anytype-heart/core/block/editor/dataview"
"github.com/anyproto/anytype-heart/core/block/editor/file"
"github.com/anyproto/anytype-heart/core/block/editor/layout"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
"github.com/anyproto/anytype-heart/core/block/editor/state"
"github.com/anyproto/anytype-heart/core/block/editor/stext"
"github.com/anyproto/anytype-heart/core/block/editor/template"
"github.com/anyproto/anytype-heart/core/block/migration"
"github.com/anyproto/anytype-heart/core/block/simple"
"github.com/anyproto/anytype-heart/core/block/source"
"github.com/anyproto/anytype-heart/core/domain"
"github.com/anyproto/anytype-heart/core/relationutils"
"github.com/anyproto/anytype-heart/pb"
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
"github.com/anyproto/anytype-heart/pkg/lib/database"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/addr"
"github.com/anyproto/anytype-heart/pkg/lib/localstore/objectstore/spaceindex"
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
"github.com/anyproto/anytype-heart/util/pbtypes"
)
var typeRequiredRelations = append(typeAndRelationRequiredRelations,
@ -178,249 +170,11 @@ func (ot *ObjectType) featuredRelationsMigration(s *state.State) {
s.SetDetail(bundle.RelationKeyRecommendedRelations, domain.StringList(recommendedRelations))
}
type layoutState struct {
layout int64
layoutAlign int64
featuredRelations []string
forceLayout bool
isLayoutSet bool
isLayoutAlignSet bool
isFeaturedRelationsSet bool
isForceLayoutSet bool
}
func (ls layoutState) isAllSet() bool {
return ls.isLayoutSet && ls.isLayoutAlignSet && ls.isFeaturedRelationsSet
}
func (ls layoutState) isAnySet() bool {
return ls.isLayoutSet || ls.isLayoutAlignSet || ls.isFeaturedRelationsSet
}
type relationIdDeriver struct {
space smartblock.Space
cache map[domain.RelationKey]string
}
func (d *relationIdDeriver) deriveId(key domain.RelationKey) (string, error) {
if d.cache != nil {
if id, found := d.cache[key]; found {
return id, nil
}
}
id, err := d.space.DeriveObjectID(context.Background(), domain.MustUniqueKey(coresb.SmartBlockTypeRelation, key.String()))
if err != nil {
return "", fmt.Errorf("failed to derive relation id: %w", err)
}
if d.cache == nil {
d.cache = map[domain.RelationKey]string{}
}
d.cache[key] = id
return id, nil
}
func (ot *ObjectType) syncLayoutForObjectsAndTemplates(info smartblock.ApplyInfo) error {
newLayout := getLayoutStateFromMessages(info.Events)
if newLayout.isLayoutSet && !isLayoutChangeApplicable(newLayout.layout) {
// if layout change is not applicable, then it is init of some system type. Objects' layout should not be modified
newLayout.isLayoutSet = false
}
if !newLayout.isAnySet() {
// layout details were not changed
return nil
}
records, err := ot.queryObjectsAndTemplates()
if err != nil {
return err
}
var (
resultErr error
deriver = relationIdDeriver{space: ot.Space()}
oldLayout = getLayoutStateFromParent(info.ParentDetails)
forceLayoutUpdate = newLayout.isForceLayoutSet && newLayout.forceLayout || // forceLayout is set to true
oldLayout.forceLayout && !(newLayout.isForceLayoutSet && !newLayout.forceLayout) // forceLayout was true and is not unset
isConvertFromNote = oldLayout.layout == int64(model.ObjectType_note) && newLayout.layout != int64(model.ObjectType_note)
)
for _, record := range records {
id := record.Details.GetString(bundle.RelationKeyId)
if id == "" {
continue
}
changes := collectRelationsChanges(record.Details, newLayout, oldLayout, deriver)
if len(changes.relationsToRemove) > 0 || changes.isFeaturedRelationsChanged {
// we should modify not local relations from object, that's why we apply changes even if object is not in cache
err = ot.Space().Do(id, func(b smartblock.SmartBlock) error {
st := b.NewState()
st.RemoveDetail(changes.relationsToRemove...)
if changes.isFeaturedRelationsChanged {
st.SetDetail(bundle.RelationKeyFeaturedRelations, domain.StringList(changes.newFeaturedRelations))
}
return b.Apply(st)
})
if err != nil {
resultErr = errors.Join(resultErr, err)
}
continue
}
if !forceLayoutUpdate && (changes.isLayoutFound || !newLayout.isLayoutSet || record.Details.GetInt64(bundle.RelationKeyResolvedLayout) == newLayout.layout) {
// layout detail remains in object or recommendedLayout was not changed or relevant layout is already set, skipping
continue
}
if err = ot.updateResolvedLayout(id, newLayout.layout, isConvertFromNote); err != nil {
resultErr = errors.Join(resultErr, err)
}
}
if resultErr != nil {
return fmt.Errorf("failed to change layout details for objects: %w", resultErr)
}
return nil
}
func isLayoutChangeApplicable(layout int64) bool {
return slices.Contains([]model.ObjectTypeLayout{
model.ObjectType_basic,
model.ObjectType_todo,
model.ObjectType_profile,
model.ObjectType_note,
model.ObjectType_collection,
}, model.ObjectTypeLayout(layout)) // nolint:gosec
}
func getLayoutStateFromMessages(msgs []simple.EventMessage) layoutState {
ls := layoutState{}
for _, ev := range msgs {
if amend := ev.Msg.GetObjectDetailsAmend(); amend != nil {
for _, detail := range amend.Details {
switch detail.Key {
case bundle.RelationKeyRecommendedLayout.String():
ls.layout = int64(detail.Value.GetNumberValue())
ls.isLayoutSet = true
case bundle.RelationKeyRecommendedFeaturedRelations.String():
ls.featuredRelations = pbtypes.GetStringListValue(detail.Value)
ls.isFeaturedRelationsSet = true
case bundle.RelationKeyLayoutAlign.String():
ls.layoutAlign = int64(detail.Value.GetNumberValue())
ls.isLayoutAlignSet = true
case bundle.RelationKeyForceLayoutFromType.String():
ls.forceLayout = detail.Value.GetBoolValue()
ls.isForceLayoutSet = true
}
}
if ls.isAllSet() {
return ls
}
}
}
return ls
}
func getLayoutStateFromParent(details *domain.Details) layoutState {
ls := layoutState{}
if details == nil {
return ls
}
if layout, ok := details.TryInt64(bundle.RelationKeyRecommendedLayout); ok {
ls.layout = layout
ls.isLayoutSet = true
}
if layoutAlign, ok := details.TryInt64(bundle.RelationKeyLayoutAlign); ok {
ls.layoutAlign = layoutAlign
ls.isLayoutAlignSet = true
}
if forceLayout, ok := details.TryBool(bundle.RelationKeyForceLayoutFromType); ok {
ls.forceLayout = forceLayout
ls.isForceLayoutSet = true
}
featuredRelations, ok := details.TryStringList(bundle.RelationKeyRecommendedFeaturedRelations)
// featuredRelations can present in objects as empty slice or containing only description
if ok && len(featuredRelations) != 0 && !slices.Equal(featuredRelations, []string{bundle.RelationKeyDescription.String()}) {
ls.featuredRelations = featuredRelations
ls.isFeaturedRelationsSet = true
}
return ls
}
func (ot *ObjectType) queryObjectsAndTemplates() ([]database.Record, error) {
records, err := ot.spaceIndex.Query(database.Query{Filters: []database.FilterRequest{
{
RelationKey: bundle.RelationKeyType,
Condition: model.BlockContentDataviewFilter_Equal,
Value: domain.String(ot.Id()),
},
}})
if err != nil {
return nil, fmt.Errorf("failed to get objects of single type: %w", err)
}
templates, err := ot.spaceIndex.Query(database.Query{Filters: []database.FilterRequest{
{
RelationKey: bundle.RelationKeyTargetObjectType,
Condition: model.BlockContentDataviewFilter_Equal,
Value: domain.String(ot.Id()),
},
}})
if err != nil {
return nil, fmt.Errorf("failed to get templates with this target type: %w", err)
}
return append(records, templates...), nil
}
func (ot *ObjectType) updateResolvedLayout(id string, layout int64, addName bool) error {
spc := ot.Space()
err := spc.DoLockedIfNotExists(id, func() error {
return ot.spaceIndex.ModifyObjectDetails(id, func(details *domain.Details) (*domain.Details, bool, error) {
if details == nil {
return nil, false, nil
}
if details.GetInt64(bundle.RelationKeyResolvedLayout) == layout {
return nil, false, nil
}
if addName {
snippet := details.GetString(bundle.RelationKeySnippet)
cutSnippet, _, _ := strings.Cut(snippet, "\n")
details.SetString(bundle.RelationKeyName, cutSnippet)
}
details.Set(bundle.RelationKeyResolvedLayout, domain.Int64(layout))
return details, true, nil
})
})
if err == nil {
return nil
}
if !errors.Is(err, ocache.ErrExists) {
return err
}
return spc.Do(id, func(b smartblock.SmartBlock) error {
if cr, ok := b.(source.ChangeReceiver); ok && !addName {
// we can do StateAppend here, so resolvedLayout will be injected automatically
return cr.StateAppend(func(d state.Doc) (s *state.State, changes []*pb.ChangeContent, err error) {
return d.NewState(), nil, nil
})
}
// we need to call Apply to generate and push changes on Title and Name addition
return b.Apply(b.NewState(), smartblock.KeepInternalFlags)
})
syncer := layout.NewSyncer(ot.Id(), ot.Space(), ot.spaceIndex)
newLayout := layout.NewLayoutStateFromEvents(info.Events)
oldLayout := layout.NewLayoutStateFromDetails(info.ParentDetails)
return syncer.SyncLayoutWithType(oldLayout, newLayout, false, !info.ApplyOtherObjects, true)
}
func (ot *ObjectType) dataviewTemplates() []template.StateTransformer {
@ -446,60 +200,3 @@ func (ot *ObjectType) dataviewTemplates() []template.StateTransformer {
template.WithForcedDetail(bundle.RelationKeySetOf, domain.StringList([]string{ot.Id()})),
}
}
type layoutRelationsChanges struct {
relationsToRemove []domain.RelationKey
isLayoutFound bool
isFeaturedRelationsChanged bool
newFeaturedRelations []string
}
func collectRelationsChanges(details *domain.Details, newLayout, oldLayout layoutState, deriver relationIdDeriver) (changes layoutRelationsChanges) {
changes.relationsToRemove = make([]domain.RelationKey, 0, 2)
if newLayout.isLayoutSet {
layout, found := details.TryInt64(bundle.RelationKeyLayout)
if found {
changes.isLayoutFound = true
if layout == newLayout.layout || oldLayout.isLayoutSet && layout == oldLayout.layout {
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayout)
}
}
}
if newLayout.isLayoutAlignSet {
layoutAlign, found := details.TryInt64(bundle.RelationKeyLayoutAlign)
if found && (layoutAlign == newLayout.layoutAlign || oldLayout.isLayoutAlignSet && layoutAlign == oldLayout.layoutAlign) {
changes.relationsToRemove = append(changes.relationsToRemove, bundle.RelationKeyLayoutAlign)
}
}
if newLayout.isFeaturedRelationsSet {
featuredRelations, found := details.TryStringList(bundle.RelationKeyFeaturedRelations)
if found && isFeaturedRelationsCorrespondToType(featuredRelations, newLayout, oldLayout, deriver) {
changes.isFeaturedRelationsChanged = true
changes.newFeaturedRelations = []string{}
if slices.Contains(featuredRelations, bundle.RelationKeyDescription.String()) {
changes.newFeaturedRelations = append(changes.newFeaturedRelations, bundle.RelationKeyDescription.String())
}
}
}
return changes
}
func isFeaturedRelationsCorrespondToType(fr []string, newLayout, oldLayout layoutState, deriver relationIdDeriver) bool {
featuredRelationIds := make([]string, 0, len(fr))
for _, key := range fr {
id, err := deriver.deriveId(domain.RelationKey(key))
if err != nil {
log.Errorf("failed to derive relation key %s", key)
return false // let's fallback to true, so featuredRelations won't be changed
}
featuredRelationIds = append(featuredRelationIds, id)
}
if newLayout.isFeaturedRelationsSet && slices.Equal(featuredRelationIds, newLayout.featuredRelations) {
return true
}
return oldLayout.isFeaturedRelationsSet && slices.Equal(featuredRelationIds, oldLayout.featuredRelations)
}

View file

@ -3,7 +3,6 @@ package smartblock
import (
"context"
"fmt"
"slices"
"github.com/anyproto/anytype-heart/core/block/editor/state"
"github.com/anyproto/anytype-heart/core/block/editor/template"
@ -220,12 +219,9 @@ func (sb *smartBlock) deriveChatId(s *state.State) error {
return nil
}
// resolveLayout adds resolvedLayout to local details of object. It analyzes details of object type
// - if isEnforcedLayout == true, resolvedLayout must be the same as recommendedLayout of object type
// - if isEnforcedLayout == false and object has layout detail, resolvedLayout should be the same as layout value
// - if isEnforcedLayout == false and object has no layout detail set, resolvedLayout should be the same as recommendedLayout of object type
// - if object is a template, isEnforcedLayout flag should be ignored and priority will be 1. layout 2. recommendedLayout of target type
// - fallback is current resolvedLayout value. If it is not ok, then basic
// resolveLayout adds resolvedLayout to local details of object. Priority:
// layout > recommendedLayout from type > current resolvedLayout > basic (fallback)
// resolveLayout also converts object from Note, i.e. adds Name and Title to state
func (sb *smartBlock) resolveLayout(s *state.State) {
if s.Details() == nil && s.LocalDetails() == nil {
return
@ -255,12 +251,9 @@ func (sb *smartBlock) resolveLayout(s *state.State) {
return
}
var (
valueInType = typeDetails.Get(bundle.RelationKeyRecommendedLayout)
isEnforcedLayout = typeDetails.GetBool(bundle.RelationKeyForceLayoutFromType)
)
var valueInType = typeDetails.Get(bundle.RelationKeyRecommendedLayout)
if s.ObjectTypeKey() == bundle.TypeKeyTemplate || !isEnforcedLayout {
if s.ObjectTypeKey() == bundle.TypeKeyTemplate {
if layoutValue.Ok() {
newValue = layoutValue
} else if valueInType.Ok() {
@ -280,22 +273,6 @@ func (sb *smartBlock) resolveLayout(s *state.State) {
log.Errorf("failed to get recommended layout from details of type: %v. Fallback to basic layout", err)
newValue = domain.Int64(int64(model.ObjectType_basic))
}
featuredRelations := make([]string, 0)
if slices.Contains(s.Details().GetStringList(bundle.RelationKeyFeaturedRelations), bundle.RelationKeyDescription.String()) {
featuredRelations = []string{bundle.RelationKeyDescription.String()}
}
s.Details().Delete(bundle.RelationKeyLayout)
s.Details().Delete(bundle.RelationKeyLayoutAlign)
s.Details().SetStringList(bundle.RelationKeyFeaturedRelations, featuredRelations)
// we delete layout settings details both from parent and child state to avoid changes generation
if parent := s.ParentState(); parent != nil && parent.Details() != nil {
parent.Details().Delete(bundle.RelationKeyLayout)
parent.Details().Delete(bundle.RelationKeyLayoutAlign)
parent.Details().SetStringList(bundle.RelationKeyFeaturedRelations, featuredRelations)
}
}
func convertLayoutFromNote(st *state.State, oldLayout, newLayout domain.Value) {

View file

@ -398,34 +398,6 @@ func TestResolveLayout(t *testing.T) {
// then
assert.Equal(t, int64(model.ObjectType_todo), st.LocalDetails().GetInt64(bundle.RelationKeyResolvedLayout))
})
t.Run("if forceLayout is set, layout details are deleted", func(t *testing.T) {
// given
fx := newFixture(id, t)
st := state.NewDoc("id", nil).NewState()
st.SetLocalDetail(bundle.RelationKeyType, domain.String(bundle.TypeKeyProfile.URL()))
st.SetLocalDetail(bundle.RelationKeyResolvedLayout, domain.Int64(model.ObjectType_basic))
st.SetDetail(bundle.RelationKeyLayout, domain.Int64(int64(model.ObjectType_basic)))
st.SetDetail(bundle.RelationKeyLayoutAlign, domain.Int64(model.Block_AlignRight))
st.SetDetail(bundle.RelationKeyFeaturedRelations, domain.StringList([]string{
bundle.RelationKeyType.String(), bundle.RelationKeyDescription.String(), bundle.RelationKeyTag.String(),
}))
fx.objectStore.AddObjects(t, testSpaceId, []objectstore.TestObject{{
bundle.RelationKeyId: domain.String(bundle.TypeKeyProfile.URL()),
bundle.RelationKeyRecommendedLayout: domain.Int64(model.ObjectType_profile),
bundle.RelationKeyForceLayoutFromType: domain.Bool(true),
}})
// when
fx.resolveLayout(st)
// then
assert.Equal(t, int64(model.ObjectType_profile), st.LocalDetails().GetInt64(bundle.RelationKeyResolvedLayout))
assert.False(t, st.Details().Has(bundle.RelationKeyLayout))
assert.False(t, st.Details().Has(bundle.RelationKeyLayoutAlign))
assert.Equal(t, []string{bundle.RelationKeyDescription.String()}, st.Details().GetStringList(bundle.RelationKeyFeaturedRelations))
})
t.Run("conversion from note adds Title and Name", func(t *testing.T) {
// given
fx := newFixture(id, t)

View file

@ -520,6 +520,62 @@ func (_c *MockSpace_TreeBuilder_Call) RunAndReturn(run func() objecttreebuilder.
return _c
}
// TryRemove provides a mock function with given fields: objectId
func (_m *MockSpace) TryRemove(objectId string) (bool, error) {
ret := _m.Called(objectId)
if len(ret) == 0 {
panic("no return value specified for TryRemove")
}
var r0 bool
var r1 error
if rf, ok := ret.Get(0).(func(string) (bool, error)); ok {
return rf(objectId)
}
if rf, ok := ret.Get(0).(func(string) bool); ok {
r0 = rf(objectId)
} else {
r0 = ret.Get(0).(bool)
}
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(objectId)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// MockSpace_TryRemove_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'TryRemove'
type MockSpace_TryRemove_Call struct {
*mock.Call
}
// TryRemove is a helper method to define mock.On call
// - objectId string
func (_e *MockSpace_Expecter) TryRemove(objectId interface{}) *MockSpace_TryRemove_Call {
return &MockSpace_TryRemove_Call{Call: _e.mock.On("TryRemove", objectId)}
}
func (_c *MockSpace_TryRemove_Call) Run(run func(objectId string)) *MockSpace_TryRemove_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(string))
})
return _c
}
func (_c *MockSpace_TryRemove_Call) Return(_a0 bool, _a1 error) *MockSpace_TryRemove_Call {
_c.Call.Return(_a0, _a1)
return _c
}
func (_c *MockSpace_TryRemove_Call) RunAndReturn(run func(string) (bool, error)) *MockSpace_TryRemove_Call {
_c.Call.Return(run)
return _c
}
// NewMockSpace creates a new instance of MockSpace. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewMockSpace(t interface {

View file

@ -69,10 +69,11 @@ const (
type Hook int
type ApplyInfo struct {
State *state.State
ParentDetails *domain.Details
Events []simple.EventMessage
Changes []*pb.ChangeContent
State *state.State
ParentDetails *domain.Details
Events []simple.EventMessage
Changes []*pb.ChangeContent
ApplyOtherObjects bool
}
type HookCallback func(info ApplyInfo) (err error)
@ -136,6 +137,7 @@ type Space interface {
Do(objectId string, apply func(sb SmartBlock) error) error
DoLockedIfNotExists(objectID string, proc func() error) error // TODO Temporarily before rewriting favorites/archive mechanism
TryRemove(objectId string) (bool, error)
StoredIds() []string
}
@ -822,10 +824,11 @@ func (sb *smartBlock) Apply(s *state.State, flags ...ApplyFlag) (err error) {
}
if hooks {
if e := sb.execHooks(HookAfterApply, ApplyInfo{
State: sb.Doc.(*state.State),
ParentDetails: parentDetails,
Events: msgs,
Changes: changes,
State: sb.Doc.(*state.State),
ParentDetails: parentDetails,
Events: msgs,
Changes: changes,
ApplyOtherObjects: true,
}); e != nil {
log.With("objectID", sb.Id()).Warnf("after apply execHooks error: %v", e)
}

View file

@ -20,6 +20,7 @@ import (
"github.com/anyproto/anytype-heart/core/block/editor/basic"
"github.com/anyproto/anytype-heart/core/block/editor/collection"
"github.com/anyproto/anytype-heart/core/block/editor/file"
"github.com/anyproto/anytype-heart/core/block/editor/layout"
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
"github.com/anyproto/anytype-heart/core/block/editor/state"
"github.com/anyproto/anytype-heart/core/block/history"
@ -697,3 +698,26 @@ func (s *Service) enrichDetailsWithOrigin(details *domain.Details, origin model.
details.SetInt64(bundle.RelationKeyOrigin, int64(origin))
return details
}
func (s *Service) SyncObjectsWithType(typeId string) error {
spaceId, err := s.resolver.ResolveSpaceID(typeId)
if err != nil {
return fmt.Errorf("failed to resolve spaceId for type object: %w", err)
}
spc, err := s.spaceService.Get(context.Background(), spaceId)
if err != nil {
return fmt.Errorf("failed to get space: %w", err)
}
index := s.objectStore.SpaceIndex(spaceId)
details, err := index.GetDetails(typeId)
if err != nil {
return fmt.Errorf("failed to get details of type object: %w", err)
}
syncer := layout.NewSyncer(typeId, spc, index)
newLayout := layout.NewLayoutStateFromDetails(details)
oldLayout := newLayout.Copy()
return syncer.SyncLayoutWithType(oldLayout, newLayout, true, false, false)
}

View file

@ -143,3 +143,19 @@ func (mw *Middleware) ObjectTypeListConflictingRelations(_ context.Context, req
RelationIds: conflictingRelations,
}
}
func (mw *Middleware) ObjectTypeResolveLayoutConflicts(_ context.Context, req *pb.RpcObjectTypeResolveLayoutConflictsRequest) *pb.RpcObjectTypeResolveLayoutConflictsResponse {
code := pb.RpcObjectTypeResolveLayoutConflictsResponseError_NULL
err := mw.doBlockService(func(bs *block.Service) error {
return bs.SyncObjectsWithType(req.TypeObjectId)
})
if err != nil {
code = pb.RpcObjectTypeResolveLayoutConflictsResponseError_UNKNOWN_ERROR
}
return &pb.RpcObjectTypeResolveLayoutConflictsResponse{
Error: &pb.RpcObjectTypeResolveLayoutConflictsResponseError{
Code: code,
Description: getErrorDescription(err),
},
}
}

View file

@ -1137,6 +1137,10 @@
- [Rpc.ObjectType.Relation.Remove.Request](#anytype-Rpc-ObjectType-Relation-Remove-Request)
- [Rpc.ObjectType.Relation.Remove.Response](#anytype-Rpc-ObjectType-Relation-Remove-Response)
- [Rpc.ObjectType.Relation.Remove.Response.Error](#anytype-Rpc-ObjectType-Relation-Remove-Response-Error)
- [Rpc.ObjectType.ResolveLayoutConflicts](#anytype-Rpc-ObjectType-ResolveLayoutConflicts)
- [Rpc.ObjectType.ResolveLayoutConflicts.Request](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Request)
- [Rpc.ObjectType.ResolveLayoutConflicts.Response](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response)
- [Rpc.ObjectType.ResolveLayoutConflicts.Response.Error](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error)
- [Rpc.Process](#anytype-Rpc-Process)
- [Rpc.Process.Cancel](#anytype-Rpc-Process-Cancel)
- [Rpc.Process.Cancel.Request](#anytype-Rpc-Process-Cancel-Request)
@ -1614,6 +1618,7 @@
- [Rpc.ObjectType.Recommended.RelationsSet.Response.Error.Code](#anytype-Rpc-ObjectType-Recommended-RelationsSet-Response-Error-Code)
- [Rpc.ObjectType.Relation.Add.Response.Error.Code](#anytype-Rpc-ObjectType-Relation-Add-Response-Error-Code)
- [Rpc.ObjectType.Relation.Remove.Response.Error.Code](#anytype-Rpc-ObjectType-Relation-Remove-Response-Error-Code)
- [Rpc.ObjectType.ResolveLayoutConflicts.Response.Error.Code](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error-Code)
- [Rpc.Process.Cancel.Response.Error.Code](#anytype-Rpc-Process-Cancel-Response-Error-Code)
- [Rpc.Process.Subscribe.Response.Error.Code](#anytype-Rpc-Process-Subscribe-Response-Error-Code)
- [Rpc.Process.Unsubscribe.Response.Error.Code](#anytype-Rpc-Process-Unsubscribe-Response-Error-Code)
@ -2215,6 +2220,7 @@
| ObjectTypeRecommendedRelationsSet | [Rpc.ObjectType.Recommended.RelationsSet.Request](#anytype-Rpc-ObjectType-Recommended-RelationsSet-Request) | [Rpc.ObjectType.Recommended.RelationsSet.Response](#anytype-Rpc-ObjectType-Recommended-RelationsSet-Response) | |
| ObjectTypeRecommendedFeaturedRelationsSet | [Rpc.ObjectType.Recommended.FeaturedRelationsSet.Request](#anytype-Rpc-ObjectType-Recommended-FeaturedRelationsSet-Request) | [Rpc.ObjectType.Recommended.FeaturedRelationsSet.Response](#anytype-Rpc-ObjectType-Recommended-FeaturedRelationsSet-Response) | |
| ObjectTypeListConflictingRelations | [Rpc.ObjectType.ListConflictingRelations.Request](#anytype-Rpc-ObjectType-ListConflictingRelations-Request) | [Rpc.ObjectType.ListConflictingRelations.Response](#anytype-Rpc-ObjectType-ListConflictingRelations-Response) | |
| ObjectTypeResolveLayoutConflicts | [Rpc.ObjectType.ResolveLayoutConflicts.Request](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Request) | [Rpc.ObjectType.ResolveLayoutConflicts.Response](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response) | |
| HistoryShowVersion | [Rpc.History.ShowVersion.Request](#anytype-Rpc-History-ShowVersion-Request) | [Rpc.History.ShowVersion.Response](#anytype-Rpc-History-ShowVersion-Response) | |
| HistoryGetVersions | [Rpc.History.GetVersions.Request](#anytype-Rpc-History-GetVersions-Request) | [Rpc.History.GetVersions.Response](#anytype-Rpc-History-GetVersions-Response) | |
| HistorySetVersion | [Rpc.History.SetVersion.Request](#anytype-Rpc-History-SetVersion-Request) | [Rpc.History.SetVersion.Response](#anytype-Rpc-History-SetVersion-Response) | |
@ -18917,6 +18923,62 @@ Available undo/redo operations
<a name="anytype-Rpc-ObjectType-ResolveLayoutConflicts"></a>
### Rpc.ObjectType.ResolveLayoutConflicts
<a name="anytype-Rpc-ObjectType-ResolveLayoutConflicts-Request"></a>
### Rpc.ObjectType.ResolveLayoutConflicts.Request
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| typeObjectId | [string](#string) | | |
<a name="anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response"></a>
### Rpc.ObjectType.ResolveLayoutConflicts.Response
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| error | [Rpc.ObjectType.ResolveLayoutConflicts.Response.Error](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error) | | |
<a name="anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error"></a>
### Rpc.ObjectType.ResolveLayoutConflicts.Response.Error
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| code | [Rpc.ObjectType.ResolveLayoutConflicts.Response.Error.Code](#anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error-Code) | | |
| description | [string](#string) | | |
<a name="anytype-Rpc-Process"></a>
### Rpc.Process
@ -25576,6 +25638,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
<a name="anytype-Rpc-ObjectType-ResolveLayoutConflicts-Response-Error-Code"></a>
### Rpc.ObjectType.ResolveLayoutConflicts.Response.Error.Code
| Name | Number | Description |
| ---- | ------ | ----------- |
| NULL | 0 | |
| UNKNOWN_ERROR | 1 | |
| BAD_INPUT | 2 | |
<a name="anytype-Rpc-Process-Cancel-Response-Error-Code"></a>
### Rpc.Process.Cancel.Response.Error.Code

File diff suppressed because it is too large Load diff

View file

@ -3484,6 +3484,27 @@ message Rpc {
}
}
}
message ResolveLayoutConflicts {
message Request {
string typeObjectId = 1;
}
message Response {
Error error = 1;
message Error {
Code code = 1;
string description = 2;
enum Code {
NULL = 0;
UNKNOWN_ERROR = 1;
BAD_INPUT = 2;
}
}
}
}
}
message Relation {

View file

@ -167,6 +167,7 @@ service ClientCommands {
rpc ObjectTypeRecommendedRelationsSet (anytype.Rpc.ObjectType.Recommended.RelationsSet.Request) returns (anytype.Rpc.ObjectType.Recommended.RelationsSet.Response);
rpc ObjectTypeRecommendedFeaturedRelationsSet (anytype.Rpc.ObjectType.Recommended.FeaturedRelationsSet.Request) returns (anytype.Rpc.ObjectType.Recommended.FeaturedRelationsSet.Response);
rpc ObjectTypeListConflictingRelations (anytype.Rpc.ObjectType.ListConflictingRelations.Request) returns (anytype.Rpc.ObjectType.ListConflictingRelations.Response);
rpc ObjectTypeResolveLayoutConflicts (anytype.Rpc.ObjectType.ResolveLayoutConflicts.Request) returns (anytype.Rpc.ObjectType.ResolveLayoutConflicts.Response);
rpc HistoryShowVersion (anytype.Rpc.History.ShowVersion.Request) returns (anytype.Rpc.History.ShowVersion.Response);
rpc HistoryGetVersions (anytype.Rpc.History.GetVersions.Request) returns (anytype.Rpc.History.GetVersions.Response);

View file

@ -26,365 +26,366 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
var fileDescriptor_93a29dc403579097 = []byte{
// 5713 bytes of a gzipped FileDescriptorProto
// 5737 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x9d, 0xdd, 0x6f, 0x24, 0x49,
0x52, 0xc0, 0xd7, 0x2f, 0x2c, 0xd4, 0x71, 0x0b, 0xf4, 0xc2, 0xb2, 0xb7, 0xdc, 0xcd, 0xcc, 0xce,
0x87, 0x3d, 0x33, 0x1e, 0xb7, 0x67, 0x67, 0xf6, 0x8b, 0x3b, 0x24, 0xe8, 0xb1, 0xc7, 0xde, 0xbe,
0xb5, 0xbd, 0xc6, 0xdd, 0x9e, 0x11, 0x2b, 0x21, 0x51, 0xee, 0x4a, 0xb7, 0x0b, 0x57, 0x57, 0xd6,
0x55, 0x65, 0x7b, 0xa6, 0x0f, 0x81, 0x40, 0x20, 0x10, 0x08, 0xc4, 0x89, 0x2f, 0xc1, 0x13, 0x12,
0x7f, 0x01, 0x7f, 0x06, 0x8f, 0xf7, 0x78, 0x8f, 0x68, 0xf7, 0xef, 0x40, 0x42, 0x95, 0x95, 0x9f,
0x51, 0x11, 0x59, 0xe5, 0xbd, 0xa7, 0x19, 0x39, 0x7e, 0x11, 0x91, 0x1f, 0x91, 0x99, 0x91, 0x59,
0x59, 0xd5, 0xd1, 0xcd, 0xe2, 0x6c, 0xbb, 0x28, 0xb9, 0xe0, 0xd5, 0x76, 0xc5, 0xca, 0xab, 0x74,
0xc6, 0xf4, 0xbf, 0x43, 0xf9, 0xe7, 0xc1, 0x9b, 0x71, 0xbe, 0x12, 0xab, 0x82, 0xbd, 0xf7, 0xae,
0x25, 0x67, 0x7c, 0xb1, 0x88, 0xf3, 0xa4, 0x6a, 0x90, 0xf7, 0xde, 0xb1, 0x12, 0x76, 0xc5, 0x72,
0xa1, 0xfe, 0xfe, 0xe4, 0x67, 0xff, 0xb7, 0x16, 0xbd, 0xb5, 0x93, 0xa5, 0x2c, 0x17, 0x3b, 0x4a,
0x63, 0xf0, 0x65, 0xf4, 0xed, 0x51, 0x51, 0xec, 0x33, 0xf1, 0x82, 0x95, 0x55, 0xca, 0xf3, 0xc1,
0x9d, 0xa1, 0x72, 0x30, 0x3c, 0x29, 0x66, 0xc3, 0x51, 0x51, 0x0c, 0xad, 0x70, 0x78, 0xc2, 0x7e,
0xb4, 0x64, 0x95, 0x78, 0xef, 0x6e, 0x18, 0xaa, 0x0a, 0x9e, 0x57, 0x6c, 0x70, 0x1e, 0xfd, 0xda,
0xa8, 0x28, 0x26, 0x4c, 0xec, 0xb2, 0xba, 0x02, 0x13, 0x11, 0x0b, 0x36, 0xd8, 0x68, 0xa9, 0xfa,
0x80, 0xf1, 0x71, 0xbf, 0x1b, 0x54, 0x7e, 0xa6, 0xd1, 0xb7, 0x6a, 0x3f, 0x17, 0x4b, 0x91, 0xf0,
0x57, 0xf9, 0xe0, 0xfd, 0xb6, 0xa2, 0x12, 0x19, 0xdb, 0xb7, 0x43, 0x88, 0xb2, 0xfa, 0x32, 0xfa,
0xe5, 0x97, 0x71, 0x96, 0x31, 0xb1, 0x53, 0xb2, 0xba, 0xe0, 0xbe, 0x4e, 0x23, 0x1a, 0x36, 0x32,
0x63, 0xf7, 0x4e, 0x90, 0x51, 0x86, 0xbf, 0x8c, 0xbe, 0xdd, 0x48, 0x4e, 0xd8, 0x8c, 0x5f, 0xb1,
0x72, 0x80, 0x6a, 0x29, 0x21, 0xd1, 0xe4, 0x2d, 0x08, 0xda, 0xde, 0xe1, 0xf9, 0x15, 0x2b, 0x05,
0x6e, 0x5b, 0x09, 0xc3, 0xb6, 0x2d, 0xa4, 0x6c, 0xff, 0xed, 0x5a, 0xf4, 0xdd, 0xd1, 0x6c, 0xc6,
0x97, 0xb9, 0x38, 0xe0, 0xb3, 0x38, 0x3b, 0x48, 0xf3, 0xcb, 0x23, 0xf6, 0x6a, 0xe7, 0xa2, 0xe6,
0xf3, 0x39, 0x1b, 0x3c, 0xf5, 0x5b, 0xb5, 0x41, 0x87, 0x86, 0x1d, 0xba, 0xb0, 0xf1, 0xfd, 0xe1,
0xf5, 0x94, 0x54, 0x59, 0xfe, 0x71, 0x2d, 0xba, 0x01, 0xcb, 0x32, 0xe1, 0xd9, 0x15, 0xb3, 0xa5,
0xf9, 0xa8, 0xc3, 0xb0, 0x8f, 0x9b, 0xf2, 0x7c, 0x7c, 0x5d, 0x35, 0x55, 0xa2, 0x2c, 0x7a, 0xdb,
0x0d, 0x97, 0x09, 0xab, 0xe4, 0x70, 0x7a, 0x40, 0x47, 0x84, 0x42, 0x8c, 0xe7, 0x87, 0x7d, 0x50,
0xe5, 0x2d, 0x8d, 0x06, 0xca, 0x5b, 0xc6, 0x2b, 0xe3, 0xec, 0x3e, 0x6a, 0xc1, 0x21, 0x8c, 0xaf,
0x07, 0x3d, 0x48, 0xe5, 0xea, 0x8f, 0xa2, 0x5f, 0x79, 0xc9, 0xcb, 0xcb, 0xaa, 0x88, 0x67, 0x4c,
0x0d, 0x85, 0x7b, 0xbe, 0xb6, 0x96, 0xc2, 0xd1, 0xb0, 0xde, 0x85, 0x39, 0x41, 0xab, 0x85, 0x5f,
0x14, 0x0c, 0xce, 0x41, 0x56, 0xb1, 0x16, 0x52, 0x41, 0x0b, 0x21, 0x65, 0xfb, 0x32, 0x1a, 0x58,
0xdb, 0x67, 0x7f, 0xcc, 0x66, 0x62, 0x94, 0x24, 0xb0, 0x57, 0xac, 0xae, 0x24, 0x86, 0xa3, 0x24,
0xa1, 0x7a, 0x05, 0x47, 0x95, 0xb3, 0x57, 0xd1, 0x3b, 0xc0, 0xd9, 0x41, 0x5a, 0x49, 0x87, 0x5b,
0x61, 0x2b, 0x0a, 0x33, 0x4e, 0x87, 0x7d, 0x71, 0xe5, 0xf8, 0xcf, 0xd7, 0xa2, 0xef, 0x20, 0x9e,
0x4f, 0xd8, 0x82, 0x5f, 0xb1, 0xc1, 0xe3, 0x6e, 0x6b, 0x0d, 0x69, 0xfc, 0x7f, 0x70, 0x0d, 0x0d,
0x24, 0x4c, 0x26, 0x2c, 0x63, 0x33, 0x41, 0x86, 0x49, 0x23, 0xee, 0x0c, 0x13, 0x83, 0x39, 0x23,
0x4c, 0x0b, 0xf7, 0x99, 0xd8, 0x59, 0x96, 0x25, 0xcb, 0x05, 0xd9, 0x97, 0x16, 0xe9, 0xec, 0x4b,
0x0f, 0x45, 0xea, 0xb3, 0xcf, 0xc4, 0x28, 0xcb, 0xc8, 0xfa, 0x34, 0xe2, 0xce, 0xfa, 0x18, 0x4c,
0x79, 0x98, 0x45, 0xbf, 0xea, 0xb4, 0x98, 0x18, 0xe7, 0xe7, 0x7c, 0x40, 0xb7, 0x85, 0x94, 0x1b,
0x1f, 0x1b, 0x9d, 0x1c, 0x52, 0x8d, 0xe7, 0xaf, 0x0b, 0x5e, 0xd2, 0xdd, 0xd2, 0x88, 0x3b, 0xab,
0x61, 0x30, 0xe5, 0xe1, 0x0f, 0xa3, 0xb7, 0xd4, 0x2c, 0xa9, 0xd7, 0xb3, 0xbb, 0xe8, 0x14, 0x0a,
0x17, 0xb4, 0x7b, 0x1d, 0x54, 0xcb, 0xfc, 0x61, 0x3a, 0x2f, 0xeb, 0xd9, 0x07, 0x37, 0xaf, 0xa4,
0x1d, 0xe6, 0x2d, 0xa5, 0xcc, 0xf3, 0xe8, 0xd7, 0x7d, 0xf3, 0x3b, 0x71, 0x3e, 0x63, 0xd9, 0xe0,
0x61, 0x48, 0xbd, 0x61, 0x8c, 0xab, 0xcd, 0x5e, 0xac, 0x9d, 0xec, 0x14, 0xa1, 0x26, 0xd3, 0x3b,
0xa8, 0x36, 0x98, 0x4a, 0xef, 0x86, 0xa1, 0x96, 0xed, 0x5d, 0x96, 0x31, 0xd2, 0x76, 0x23, 0xec,
0xb0, 0x6d, 0x20, 0x65, 0xbb, 0x8c, 0x7e, 0xc3, 0x74, 0x73, 0x9d, 0x17, 0x48, 0x79, 0xbd, 0xe8,
0x6c, 0x12, 0xfd, 0xe8, 0x42, 0xc6, 0xd7, 0xa3, 0x7e, 0x70, 0xab, 0x3e, 0x6a, 0x46, 0xc1, 0xeb,
0x03, 0xe6, 0x93, 0xbb, 0x61, 0x48, 0xd9, 0xfe, 0xbb, 0xb5, 0xe8, 0x7b, 0x4a, 0xf6, 0x3c, 0x8f,
0xcf, 0x32, 0x26, 0x97, 0xf8, 0x23, 0x26, 0x5e, 0xf1, 0xf2, 0x72, 0xb2, 0xca, 0x67, 0x44, 0x3a,
0x83, 0xc3, 0x1d, 0xe9, 0x0c, 0xa9, 0xa4, 0x0a, 0xf3, 0x27, 0xd1, 0xbb, 0x3a, 0x28, 0x2e, 0xe2,
0x7c, 0xce, 0x7e, 0x58, 0xf1, 0x7c, 0x54, 0xa4, 0xa3, 0x24, 0x29, 0x07, 0x43, 0xbc, 0xeb, 0x21,
0x67, 0x4a, 0xb0, 0xdd, 0x9b, 0x77, 0xd2, 0x67, 0xd5, 0xca, 0x82, 0x17, 0x30, 0x7d, 0xd6, 0xcd,
0x27, 0x78, 0x41, 0xa5, 0xcf, 0x3e, 0xd2, 0xb2, 0x7a, 0x58, 0xaf, 0x41, 0xb8, 0xd5, 0x43, 0x77,
0xd1, 0xb9, 0x1d, 0x42, 0xec, 0x1a, 0xa0, 0x1b, 0x8a, 0xe7, 0xe7, 0xe9, 0xfc, 0xb4, 0x48, 0xea,
0x31, 0xf4, 0x00, 0xaf, 0xb3, 0x83, 0x10, 0x6b, 0x00, 0x81, 0x2a, 0x6f, 0xff, 0x60, 0xb3, 0x4c,
0x35, 0x2f, 0xed, 0x95, 0x7c, 0x71, 0xc0, 0xe6, 0xf1, 0x6c, 0xa5, 0x26, 0xd3, 0x0f, 0x43, 0xb3,
0x18, 0xa4, 0x4d, 0x21, 0x3e, 0xba, 0xa6, 0x96, 0x2a, 0xcf, 0x7f, 0xae, 0x45, 0x77, 0xbd, 0x38,
0x51, 0xc1, 0xd4, 0x94, 0x7e, 0x94, 0x27, 0x27, 0xac, 0x12, 0x71, 0x29, 0x06, 0xdf, 0x0f, 0xc4,
0x00, 0xa1, 0x63, 0xca, 0xf6, 0x83, 0x6f, 0xa4, 0x6b, 0x7b, 0x7d, 0x52, 0xaf, 0x12, 0x6a, 0xfe,
0xf1, 0x7b, 0x5d, 0x4a, 0xe0, 0xec, 0x73, 0x3b, 0x84, 0xd8, 0x5e, 0x97, 0x82, 0x71, 0x7e, 0x95,
0x0a, 0xb6, 0xcf, 0x72, 0x56, 0xb6, 0x7b, 0xbd, 0x51, 0xf5, 0x11, 0xa2, 0xd7, 0x09, 0xd4, 0xce,
0x74, 0x9e, 0x37, 0x93, 0x69, 0x6c, 0x06, 0x8c, 0xb4, 0x72, 0x8d, 0x47, 0xfd, 0x60, 0xa2, 0x86,
0x62, 0xbf, 0x36, 0x12, 0xac, 0x61, 0x83, 0xf4, 0xaa, 0xa1, 0x41, 0xed, 0xc6, 0xdc, 0xf1, 0x76,
0xc2, 0xae, 0xf8, 0x25, 0xdc, 0x98, 0xbb, 0x06, 0x1a, 0x80, 0xd8, 0x98, 0xa3, 0xa0, 0x4d, 0x3e,
0x1c, 0x3f, 0x2f, 0x52, 0xf6, 0x0a, 0x24, 0x1f, 0xae, 0x72, 0x2d, 0x26, 0x92, 0x0f, 0x04, 0x53,
0x1e, 0x8e, 0xa2, 0x5f, 0x92, 0xc2, 0x1f, 0xf2, 0x34, 0x1f, 0xdc, 0x44, 0x94, 0x6a, 0x81, 0xb1,
0x7a, 0x8b, 0x06, 0x40, 0x89, 0xeb, 0xbf, 0xaa, 0x4c, 0xe0, 0x1e, 0xa1, 0x04, 0x92, 0x80, 0xf5,
0x2e, 0xcc, 0x66, 0x7d, 0x52, 0x58, 0xcf, 0x96, 0x93, 0x8b, 0xb8, 0x4c, 0xf3, 0xf9, 0x00, 0xd3,
0x75, 0xe4, 0x44, 0xd6, 0x87, 0x71, 0x20, 0x9c, 0x94, 0xe2, 0xa8, 0x28, 0xca, 0x7a, 0x12, 0xc6,
0xc2, 0xc9, 0x47, 0x82, 0xe1, 0xd4, 0x42, 0x71, 0x6f, 0xbb, 0x6c, 0x96, 0xa5, 0x79, 0xd0, 0x9b,
0x42, 0xfa, 0x78, 0xb3, 0x28, 0x08, 0xde, 0x03, 0x16, 0x5f, 0x31, 0x5d, 0x33, 0xac, 0x65, 0x5c,
0x20, 0x18, 0xbc, 0x00, 0xb4, 0x5b, 0x6c, 0x29, 0x3e, 0x8c, 0x2f, 0x59, 0xdd, 0xc0, 0xac, 0x5e,
0xc2, 0x07, 0x98, 0xbe, 0x47, 0x10, 0x5b, 0x6c, 0x9c, 0x54, 0xae, 0x96, 0xd1, 0x3b, 0x52, 0x7e,
0x1c, 0x97, 0x22, 0x9d, 0xa5, 0x45, 0x9c, 0xeb, 0xad, 0x1b, 0x36, 0x8b, 0xb4, 0x28, 0xe3, 0x72,
0xab, 0x27, 0xad, 0xdc, 0xfe, 0xdb, 0x5a, 0xf4, 0x3e, 0xf4, 0x7b, 0xcc, 0xca, 0x45, 0x2a, 0x4f,
0x00, 0xaa, 0x66, 0xca, 0x1f, 0x7c, 0x12, 0x36, 0xda, 0x52, 0x30, 0xa5, 0xf9, 0xf4, 0xfa, 0x8a,
0x36, 0xef, 0x9b, 0xa8, 0x5d, 0xd1, 0x17, 0x65, 0xd2, 0x3a, 0x21, 0x9b, 0xe8, 0xad, 0x8e, 0x14,
0x12, 0x79, 0x5f, 0x0b, 0x02, 0x23, 0xfc, 0x34, 0xaf, 0xb4, 0x75, 0x6c, 0x84, 0x5b, 0x71, 0x70,
0x84, 0x7b, 0x98, 0x1d, 0xe1, 0xc7, 0xcb, 0xb3, 0x2c, 0xad, 0x2e, 0xd2, 0x7c, 0xae, 0x92, 0x7c,
0x5f, 0xd7, 0x8a, 0x61, 0x9e, 0xbf, 0xd1, 0xc9, 0x61, 0x4e, 0x54, 0xb0, 0x90, 0x4e, 0x40, 0x98,
0x6c, 0x74, 0x72, 0x76, 0xef, 0x65, 0xa5, 0xf5, 0xa6, 0x1f, 0xec, 0xbd, 0x1c, 0xd5, 0x5a, 0x4a,
0xec, 0xbd, 0xda, 0x94, 0xdd, 0x7b, 0xb9, 0x75, 0xa8, 0x78, 0x76, 0xc5, 0x4e, 0xcb, 0x14, 0xec,
0xbd, 0xbc, 0xf2, 0x69, 0x86, 0xd8, 0x7b, 0x51, 0xac, 0x9d, 0xa8, 0x2c, 0xb1, 0xcf, 0xc4, 0x44,
0xc4, 0x62, 0x59, 0x81, 0x89, 0xca, 0xb1, 0x61, 0x10, 0x62, 0xa2, 0x22, 0x50, 0xe5, 0xed, 0xf7,
0xa3, 0xa8, 0x39, 0x2f, 0x91, 0x67, 0x5a, 0xfe, 0xda, 0xa3, 0x0e, 0x52, 0xbc, 0x03, 0xad, 0xf7,
0x03, 0x84, 0x4d, 0xaf, 0x9a, 0xbf, 0xcb, 0xa3, 0xba, 0x01, 0xaa, 0x21, 0x45, 0x44, 0x7a, 0x05,
0x10, 0x58, 0xd0, 0xc9, 0x05, 0x7f, 0x85, 0x17, 0xb4, 0x96, 0x84, 0x0b, 0xaa, 0x08, 0x7b, 0x78,
0xae, 0x0a, 0x8a, 0x1d, 0x9e, 0xeb, 0x62, 0x84, 0x0e, 0xcf, 0x21, 0x63, 0x63, 0xc6, 0x35, 0xfc,
0x8c, 0xf3, 0xcb, 0x45, 0x5c, 0x5e, 0x82, 0x98, 0xf1, 0x94, 0x35, 0x43, 0xc4, 0x0c, 0xc5, 0xda,
0x98, 0x71, 0x1d, 0xd6, 0xc9, 0xf9, 0x69, 0x99, 0x81, 0x98, 0xf1, 0x6c, 0x28, 0x84, 0x88, 0x19,
0x02, 0xb5, 0xb3, 0x93, 0xeb, 0x6d, 0xc2, 0xe0, 0x71, 0x8d, 0xa7, 0x3e, 0x61, 0xd4, 0x71, 0x0d,
0x82, 0xc1, 0x10, 0xda, 0x2f, 0xe3, 0xe2, 0x02, 0x0f, 0x21, 0x29, 0x0a, 0x87, 0x90, 0x46, 0x60,
0x7f, 0x4f, 0x58, 0x5c, 0xce, 0x2e, 0xf0, 0xfe, 0x6e, 0x64, 0xe1, 0xfe, 0x36, 0x0c, 0xec, 0xef,
0x46, 0xf0, 0x32, 0x15, 0x17, 0x87, 0x4c, 0xc4, 0x78, 0x7f, 0xfb, 0x4c, 0xb8, 0xbf, 0x5b, 0xac,
0xcd, 0xfe, 0x5d, 0x87, 0x93, 0xe5, 0x59, 0x35, 0x2b, 0xd3, 0x33, 0x36, 0x08, 0x58, 0x31, 0x10,
0x91, 0xfd, 0x93, 0xb0, 0xf2, 0xf9, 0x93, 0xb5, 0xe8, 0xa6, 0xee, 0x76, 0x5e, 0x55, 0x6a, 0xed,
0xf3, 0xdd, 0x7f, 0x84, 0xf7, 0x2f, 0x81, 0x13, 0x8f, 0x33, 0x7a, 0xa8, 0x39, 0xb9, 0x01, 0x5e,
0xa4, 0xd3, 0xbc, 0x32, 0x85, 0xfa, 0xa4, 0x8f, 0x75, 0x47, 0x81, 0xc8, 0x0d, 0x7a, 0x29, 0xda,
0xb4, 0x4c, 0xf5, 0x8f, 0x96, 0x8d, 0x93, 0x0a, 0xa4, 0x65, 0xba, 0xbd, 0x1d, 0x82, 0x48, 0xcb,
0x70, 0x12, 0x86, 0xc2, 0x7e, 0xc9, 0x97, 0x45, 0xd5, 0x11, 0x0a, 0x00, 0x0a, 0x87, 0x42, 0x1b,
0x56, 0x3e, 0x5f, 0x47, 0xbf, 0xe9, 0x86, 0x9f, 0xdb, 0xd8, 0x5b, 0x74, 0x4c, 0x61, 0x4d, 0x3c,
0xec, 0x8b, 0xdb, 0x8c, 0x42, 0x7b, 0x16, 0xbb, 0x4c, 0xc4, 0x69, 0x56, 0x0d, 0xd6, 0x71, 0x1b,
0x5a, 0x4e, 0x64, 0x14, 0x18, 0x07, 0xe7, 0xb7, 0xdd, 0x65, 0x91, 0xa5, 0xb3, 0xf6, 0xc3, 0x24,
0xa5, 0x6b, 0xc4, 0xe1, 0xf9, 0xcd, 0xc5, 0xe0, 0x7c, 0x5d, 0xa7, 0x7e, 0xf2, 0x3f, 0xd3, 0x55,
0xc1, 0xf0, 0xf9, 0xda, 0x43, 0xc2, 0xf3, 0x35, 0x44, 0x61, 0x7d, 0x26, 0x4c, 0x1c, 0xc4, 0x2b,
0xbe, 0x24, 0xe6, 0x6b, 0x23, 0x0e, 0xd7, 0xc7, 0xc5, 0xec, 0xde, 0xc0, 0x78, 0x18, 0xe7, 0x82,
0x95, 0x79, 0x9c, 0xed, 0x65, 0xf1, 0xbc, 0x1a, 0x10, 0x73, 0x8c, 0x4f, 0x11, 0x7b, 0x03, 0x9a,
0x46, 0x9a, 0x71, 0x5c, 0xed, 0xc5, 0x57, 0xbc, 0x4c, 0x05, 0xdd, 0x8c, 0x16, 0xe9, 0x6c, 0x46,
0x0f, 0x45, 0xbd, 0x8d, 0xca, 0xd9, 0x45, 0x7a, 0xc5, 0x92, 0x80, 0x37, 0x8d, 0xf4, 0xf0, 0xe6,
0xa0, 0x48, 0xa7, 0x4d, 0xf8, 0xb2, 0x9c, 0x31, 0xb2, 0xd3, 0x1a, 0x71, 0x67, 0xa7, 0x19, 0x4c,
0x79, 0xf8, 0xab, 0xb5, 0xe8, 0xb7, 0x1a, 0xa9, 0xfb, 0x84, 0x67, 0x37, 0xae, 0x2e, 0xce, 0x78,
0x5c, 0x26, 0x83, 0x0f, 0x30, 0x3b, 0x28, 0x6a, 0x5c, 0x3f, 0xb9, 0x8e, 0x0a, 0x6c, 0xd6, 0x3a,
0xef, 0xb6, 0x23, 0x0e, 0x6d, 0x56, 0x0f, 0x09, 0x37, 0x2b, 0x44, 0xe1, 0x04, 0x22, 0xe5, 0xcd,
0x01, 0xe0, 0x3a, 0xa9, 0xef, 0x9f, 0x02, 0x6e, 0x74, 0x72, 0x70, 0x7e, 0xac, 0x85, 0x7e, 0xb4,
0x6c, 0x51, 0x36, 0xf0, 0x88, 0x19, 0xf6, 0xc5, 0x49, 0xcf, 0x66, 0x54, 0x84, 0x3d, 0xb7, 0x46,
0xc6, 0xb0, 0x2f, 0x4e, 0x78, 0x76, 0xa6, 0xb5, 0x90, 0x67, 0x64, 0x6a, 0x1b, 0xf6, 0xc5, 0x61,
0xf6, 0xa5, 0x18, 0xbd, 0x2e, 0x3c, 0x0c, 0xd8, 0x81, 0x6b, 0xc3, 0x66, 0x2f, 0x56, 0x39, 0xfc,
0x9b, 0xb5, 0xe8, 0xbb, 0xd6, 0xe3, 0x21, 0x4f, 0xd2, 0xf3, 0x55, 0x03, 0xbd, 0x88, 0xb3, 0x25,
0xab, 0x06, 0x4f, 0x28, 0x6b, 0x6d, 0xd6, 0x94, 0xe0, 0xe9, 0xb5, 0x74, 0xe0, 0xd8, 0x19, 0x15,
0x45, 0xb6, 0x9a, 0xb2, 0x45, 0x91, 0x91, 0x63, 0xc7, 0x43, 0xc2, 0x63, 0x07, 0xa2, 0x30, 0x2b,
0x9f, 0xf2, 0x3a, 0xe7, 0x47, 0xb3, 0x72, 0x29, 0x0a, 0x67, 0xe5, 0x1a, 0x81, 0xb9, 0xd2, 0x94,
0xef, 0xf0, 0x2c, 0x63, 0x33, 0xd1, 0xbe, 0x25, 0x62, 0x34, 0x2d, 0x11, 0xce, 0x95, 0x00, 0x69,
0x4f, 0xe5, 0xf4, 0x1e, 0x32, 0x2e, 0xd9, 0xb3, 0xd5, 0x41, 0x9a, 0x5f, 0x0e, 0xf0, 0xb4, 0xc0,
0x02, 0xc4, 0xa9, 0x1c, 0x0a, 0xc2, 0xbd, 0xea, 0x69, 0x9e, 0x70, 0x7c, 0xaf, 0x5a, 0x4b, 0xc2,
0x7b, 0x55, 0x45, 0x40, 0x93, 0x27, 0x8c, 0x32, 0x59, 0x4b, 0xc2, 0x26, 0x15, 0x81, 0x4d, 0x85,
0xea, 0x49, 0x11, 0x39, 0x15, 0x82, 0x67, 0x43, 0x1b, 0x9d, 0x1c, 0xdc, 0x73, 0x29, 0x07, 0x68,
0x44, 0x00, 0xe3, 0x77, 0x82, 0x0c, 0x0c, 0x7d, 0xbd, 0x1b, 0xde, 0x63, 0x62, 0x76, 0x81, 0x87,
0xbe, 0x87, 0x84, 0x43, 0x1f, 0xa2, 0xb0, 0xad, 0xa6, 0xdc, 0xec, 0xe6, 0xd7, 0xf1, 0xc0, 0x6b,
0xed, 0xe4, 0x37, 0x3a, 0x39, 0xd8, 0x56, 0xe3, 0x05, 0xdd, 0x56, 0x8d, 0x2c, 0xdc, 0x56, 0x86,
0x81, 0xa5, 0x6f, 0x04, 0xf2, 0x90, 0x6c, 0x9d, 0x56, 0xf4, 0x8e, 0xc9, 0x36, 0x3a, 0x39, 0xe5,
0xe4, 0x5f, 0xcc, 0xfe, 0xb0, 0x91, 0x1e, 0xf1, 0x7a, 0xf0, 0xbd, 0x88, 0xb3, 0x34, 0x89, 0x05,
0x9b, 0xf2, 0x4b, 0x96, 0xe3, 0x5b, 0x31, 0x55, 0xda, 0x86, 0x1f, 0x7a, 0x0a, 0xe1, 0xad, 0x58,
0x58, 0x11, 0xc6, 0x49, 0x43, 0x9f, 0x56, 0x6c, 0x27, 0xae, 0x88, 0x29, 0xd2, 0x43, 0xc2, 0x71,
0x02, 0x51, 0x98, 0x08, 0x37, 0xf2, 0xe7, 0xaf, 0x0b, 0x56, 0xa6, 0x2c, 0x9f, 0x31, 0x3c, 0x11,
0x86, 0x54, 0x38, 0x11, 0x46, 0x68, 0xb8, 0x09, 0xdc, 0x8d, 0x05, 0x7b, 0xb6, 0x9a, 0xa6, 0x0b,
0x56, 0x89, 0x78, 0x51, 0xe0, 0x9b, 0x40, 0x00, 0x85, 0x37, 0x81, 0x6d, 0xb8, 0x75, 0xe6, 0x64,
0x66, 0xda, 0xf6, 0xad, 0x35, 0x48, 0x04, 0x6e, 0xad, 0x11, 0x28, 0x6c, 0x58, 0x0b, 0xa0, 0x4f,
0x1f, 0x5a, 0x56, 0x82, 0x4f, 0x1f, 0x68, 0xba, 0x75, 0x92, 0x67, 0x98, 0x49, 0x3d, 0x34, 0x3b,
0x8a, 0x3e, 0x71, 0x87, 0xe8, 0x66, 0x2f, 0x16, 0x3f, 0x3a, 0x3c, 0x61, 0x59, 0x2c, 0xd7, 0xc3,
0xc0, 0xf9, 0x9c, 0x66, 0xfa, 0x1c, 0x1d, 0x3a, 0xac, 0x72, 0xf8, 0x17, 0x6b, 0xd1, 0x7b, 0x98,
0xc7, 0x2f, 0x0a, 0xe9, 0xf7, 0x71, 0xb7, 0xad, 0x86, 0x24, 0xae, 0xe5, 0x85, 0x35, 0xec, 0xcd,
0x12, 0x2d, 0xb2, 0xb7, 0xf6, 0x54, 0x01, 0xfc, 0x6c, 0xd0, 0x94, 0x1f, 0x72, 0xc4, 0xcd, 0x92,
0x10, 0x6f, 0x37, 0x5a, 0x7e, 0xb9, 0x2a, 0xb0, 0xd1, 0x32, 0x36, 0x94, 0x98, 0xd8, 0x68, 0x21,
0x98, 0x1d, 0x9d, 0x6e, 0xf5, 0x5e, 0xa6, 0xe2, 0x42, 0x26, 0x72, 0x60, 0x74, 0x7a, 0x65, 0x35,
0x10, 0x31, 0x3a, 0x49, 0x18, 0xa6, 0x3a, 0x1a, 0xac, 0xc7, 0x26, 0x36, 0x97, 0x1b, 0x43, 0xee,
0xc8, 0xbc, 0xdf, 0x0d, 0xc2, 0x78, 0xd5, 0x62, 0xb5, 0xa7, 0x7a, 0x18, 0xb2, 0x00, 0xf6, 0x55,
0x9b, 0xbd, 0x58, 0xe5, 0xf0, 0xcf, 0xa2, 0xef, 0xb4, 0x2a, 0xb6, 0xc7, 0x62, 0xb1, 0x2c, 0x59,
0x32, 0xd8, 0xee, 0x28, 0xb7, 0x06, 0x8d, 0xeb, 0xc7, 0xfd, 0x15, 0x5a, 0xc9, 0xbf, 0xe6, 0x9a,
0xb0, 0x32, 0x65, 0x78, 0x12, 0x32, 0xe9, 0xb3, 0xc1, 0xe4, 0x9f, 0xd6, 0x69, 0xed, 0xdf, 0xdd,
0xe8, 0x1a, 0x5d, 0xc5, 0x69, 0x26, 0x9f, 0x02, 0x7f, 0x10, 0x32, 0xea, 0xa1, 0xc1, 0xfd, 0x3b,
0xa9, 0xd2, 0x9a, 0x99, 0xe5, 0x18, 0x77, 0xf6, 0x7d, 0x8f, 0xe8, 0x99, 0x00, 0xd9, 0xf6, 0x6d,
0xf5, 0xa4, 0x95, 0x5b, 0xa1, 0x97, 0xbc, 0xfa, 0xcf, 0x6e, 0x90, 0x63, 0x5e, 0x95, 0x2a, 0x12,
0xe9, 0x5b, 0x3d, 0x69, 0xe5, 0xf5, 0x4f, 0xa3, 0x77, 0xdb, 0x5e, 0xd5, 0x42, 0xb4, 0xdd, 0x69,
0x0a, 0xac, 0x45, 0x8f, 0xfb, 0x2b, 0x28, 0xf7, 0xff, 0x6e, 0x0e, 0xbc, 0x1b, 0xff, 0x33, 0xbe,
0x58, 0xb0, 0x3c, 0x61, 0x89, 0xd6, 0xa8, 0xea, 0x8d, 0xd9, 0xa7, 0xb4, 0x5d, 0xa3, 0x30, 0x74,
0x35, 0x4c, 0x89, 0x7e, 0xfb, 0x1b, 0x68, 0xaa, 0xa2, 0xfd, 0xf7, 0x5a, 0xf4, 0x00, 0x2d, 0x9a,
0x0e, 0x5c, 0xaf, 0x88, 0xbf, 0xd7, 0xc7, 0x11, 0xa6, 0x69, 0x8a, 0x3a, 0xfa, 0x39, 0x2c, 0xa8,
0x22, 0xff, 0xc7, 0x5a, 0x74, 0xdb, 0x2a, 0xd6, 0xe1, 0xbd, 0xc3, 0xf3, 0xf3, 0x2c, 0x9d, 0x09,
0xf9, 0xa8, 0x57, 0xa9, 0xd0, 0xcd, 0x49, 0x69, 0x74, 0x37, 0x67, 0x40, 0xd3, 0xee, 0x8a, 0x3f,
0x4b, 0x2b, 0xc1, 0xcb, 0xd5, 0xe4, 0x82, 0xbf, 0xd2, 0xef, 0x3d, 0xf9, 0xf3, 0xb2, 0x02, 0x86,
0x0e, 0x41, 0xec, 0x8a, 0x71, 0xb2, 0xe5, 0xca, 0xbe, 0x1f, 0x55, 0x11, 0xae, 0x1c, 0xa2, 0xc3,
0x95, 0x4f, 0xda, 0x55, 0x49, 0xd7, 0xca, 0xbe, 0xcc, 0xb5, 0x81, 0x17, 0xb5, 0xfd, 0x42, 0xd7,
0xfd, 0x6e, 0xd0, 0xe6, 0xa6, 0x4a, 0xbc, 0x9b, 0x9e, 0x9f, 0x9b, 0x3a, 0xe1, 0x25, 0x75, 0x11,
0x22, 0x37, 0x25, 0x50, 0xbb, 0xbd, 0xda, 0x4b, 0x33, 0x26, 0x1f, 0x0a, 0x7d, 0x71, 0x7e, 0x9e,
0xf1, 0x38, 0x01, 0xdb, 0xab, 0x5a, 0x3c, 0x74, 0xe5, 0xc4, 0xf6, 0x0a, 0xe3, 0xec, 0x75, 0x93,
0x5a, 0x5a, 0x47, 0x77, 0x3e, 0x4b, 0x33, 0x78, 0x6d, 0x5a, 0x6a, 0x1a, 0x21, 0x71, 0xdd, 0xa4,
0x05, 0xd9, 0x14, 0xa8, 0x16, 0xd5, 0x51, 0xa9, 0xcb, 0x7f, 0xaf, 0xad, 0xe8, 0x88, 0x89, 0x14,
0x08, 0xc1, 0xec, 0xf1, 0x45, 0x2d, 0x3c, 0x2d, 0xa4, 0xf1, 0x5b, 0x6d, 0xad, 0x46, 0x42, 0x1c,
0x5f, 0xf8, 0x84, 0xdd, 0x2d, 0xd7, 0x7f, 0xdf, 0xe5, 0xaf, 0x72, 0x69, 0xf4, 0x76, 0x5b, 0x45,
0xcb, 0x88, 0xdd, 0x32, 0x64, 0x94, 0xe1, 0xcf, 0xa3, 0x5f, 0x94, 0x86, 0x4b, 0x5e, 0x0c, 0x6e,
0x20, 0x0a, 0xa5, 0x73, 0xc9, 0xf8, 0x26, 0x29, 0xb7, 0xb7, 0x53, 0x4c, 0x6c, 0x9c, 0x56, 0xf1,
0x1c, 0xbe, 0x19, 0x60, 0x7b, 0x5c, 0x4a, 0x89, 0xdb, 0x29, 0x6d, 0xca, 0x8f, 0x8a, 0x23, 0x9e,
0x28, 0xeb, 0x48, 0x0d, 0x8d, 0x30, 0x14, 0x15, 0x2e, 0x64, 0xd3, 0xd6, 0xa3, 0xf8, 0x2a, 0x9d,
0x9b, 0xd4, 0xa2, 0x99, 0xc0, 0x2a, 0x90, 0xb6, 0x5a, 0x66, 0xe8, 0x40, 0x44, 0xda, 0x4a, 0xc2,
0xca, 0xe7, 0x3f, 0xaf, 0x45, 0xb7, 0x2c, 0xb3, 0xaf, 0x0f, 0x7c, 0xc7, 0xf9, 0x39, 0xaf, 0x93,
0xdc, 0x83, 0x34, 0xbf, 0xac, 0x06, 0x1f, 0x53, 0x26, 0x71, 0xde, 0x14, 0xe5, 0x93, 0x6b, 0xeb,
0xd9, 0xfd, 0x89, 0x3e, 0x0d, 0xb5, 0x57, 0x22, 0x1a, 0x0d, 0xb0, 0x3f, 0x31, 0x87, 0xa6, 0x90,
0x23, 0xf6, 0x27, 0x21, 0xde, 0x76, 0xb1, 0x71, 0x9e, 0xf1, 0x1c, 0x76, 0xb1, 0xb5, 0x50, 0x0b,
0x89, 0x2e, 0x6e, 0x41, 0x76, 0x3e, 0xd6, 0xa2, 0xe6, 0x7c, 0x6d, 0x94, 0x65, 0x60, 0x3e, 0x36,
0xaa, 0x06, 0x20, 0xe6, 0x63, 0x14, 0x54, 0x7e, 0x4e, 0xa2, 0x6f, 0xd5, 0x4d, 0x7a, 0x5c, 0xb2,
0xab, 0x94, 0xc1, 0xdb, 0x3b, 0x8e, 0x84, 0x18, 0xff, 0x3e, 0x61, 0x47, 0xd6, 0x69, 0x5e, 0x15,
0x59, 0x5c, 0x5d, 0xa8, 0xfb, 0x1c, 0x7e, 0x9d, 0xb5, 0x10, 0xde, 0xe8, 0xb8, 0xd7, 0x41, 0xd9,
0x49, 0x5d, 0xcb, 0xcc, 0x14, 0xb3, 0x8e, 0xab, 0xb6, 0xa6, 0x99, 0x8d, 0x4e, 0xce, 0x3e, 0x34,
0xd9, 0x8f, 0xb3, 0x8c, 0x95, 0x2b, 0x2d, 0x3b, 0x8c, 0xf3, 0xf4, 0x9c, 0x55, 0x02, 0x3c, 0x34,
0x51, 0xd4, 0x10, 0x62, 0xc4, 0x43, 0x93, 0x00, 0x6e, 0xf7, 0x6d, 0xc0, 0xf3, 0x38, 0x4f, 0xd8,
0x6b, 0xb0, 0x6f, 0x83, 0x76, 0x24, 0x43, 0xec, 0xdb, 0x28, 0xd6, 0x3e, 0x3c, 0x78, 0x96, 0xf1,
0xd9, 0xa5, 0x5a, 0x02, 0xfc, 0x0e, 0x96, 0x12, 0xb8, 0x06, 0xdc, 0x0e, 0x21, 0x76, 0x11, 0x90,
0x82, 0x13, 0x56, 0x64, 0xf1, 0x0c, 0x5e, 0xe1, 0x6a, 0x74, 0x94, 0x8c, 0x58, 0x04, 0x20, 0x03,
0x8a, 0xab, 0xae, 0x86, 0x61, 0xc5, 0x05, 0x37, 0xc3, 0x6e, 0x87, 0x10, 0xbb, 0x0c, 0x4a, 0xc1,
0xa4, 0xc8, 0x52, 0x01, 0x86, 0x41, 0xa3, 0x21, 0x25, 0xc4, 0x30, 0xf0, 0x09, 0x60, 0xf2, 0x90,
0x95, 0x73, 0x86, 0x9a, 0x94, 0x92, 0xa0, 0x49, 0x4d, 0xd8, 0xfb, 0xea, 0x4d, 0xdd, 0x79, 0xb1,
0x02, 0xf7, 0xd5, 0x55, 0xb5, 0x78, 0xb1, 0x22, 0xee, 0xab, 0x7b, 0x00, 0x28, 0xe2, 0x71, 0x5c,
0x09, 0xbc, 0x88, 0x52, 0x12, 0x2c, 0xa2, 0x26, 0xec, 0x1a, 0xdd, 0x14, 0x71, 0x29, 0xc0, 0x1a,
0xad, 0x0a, 0xe0, 0x5c, 0x62, 0xb8, 0x49, 0xca, 0xed, 0x4c, 0xd2, 0xf4, 0x0a, 0x13, 0x7b, 0x29,
0xcb, 0x92, 0x0a, 0xcc, 0x24, 0xaa, 0xdd, 0xb5, 0x94, 0x98, 0x49, 0xda, 0x14, 0x08, 0x25, 0xf5,
0x04, 0x04, 0xab, 0x1d, 0x78, 0x00, 0x72, 0x3b, 0x84, 0xd8, 0xf9, 0x49, 0x17, 0x7a, 0x27, 0x2e,
0xcb, 0xb4, 0x5e, 0xfc, 0xd7, 0xf1, 0x02, 0x69, 0x39, 0x31, 0x3f, 0x61, 0x1c, 0x18, 0x5e, 0x7a,
0xe2, 0xc6, 0x0a, 0x06, 0xa7, 0xee, 0x3b, 0x41, 0xc6, 0x66, 0x9c, 0x52, 0xe2, 0x3c, 0x85, 0xc7,
0x5a, 0x13, 0x79, 0x08, 0xbf, 0xde, 0x85, 0x39, 0xaf, 0xce, 0x19, 0x17, 0x87, 0xfc, 0x8a, 0x4d,
0xf9, 0xf3, 0xd7, 0x69, 0x55, 0x6f, 0xb7, 0xd4, 0xca, 0xfd, 0x94, 0xb0, 0x84, 0xc1, 0xc4, 0xab,
0x73, 0x9d, 0x4a, 0x36, 0x81, 0x00, 0x65, 0x39, 0x62, 0xaf, 0xd0, 0x04, 0x02, 0x5a, 0x34, 0x1c,
0x91, 0x40, 0x84, 0x78, 0x7b, 0x62, 0x66, 0x9c, 0xab, 0xef, 0x25, 0x4c, 0xb9, 0xce, 0xe5, 0x28,
0x6b, 0x10, 0x24, 0x0e, 0x2d, 0x82, 0x0a, 0x76, 0x7f, 0x69, 0xfc, 0xdb, 0x21, 0x76, 0x9f, 0xb0,
0xd3, 0x1e, 0x66, 0x0f, 0x7a, 0x90, 0x88, 0x2b, 0x7b, 0x95, 0x84, 0x72, 0xd5, 0xbe, 0x49, 0xf2,
0xa0, 0x07, 0xe9, 0x9c, 0xbe, 0xb9, 0xd5, 0x7a, 0x16, 0xcf, 0x2e, 0xe7, 0x25, 0x5f, 0xe6, 0xc9,
0x0e, 0xcf, 0x78, 0x09, 0x4e, 0xdf, 0xbc, 0x52, 0x03, 0x94, 0x38, 0x7d, 0xeb, 0x50, 0xb1, 0x19,
0x9c, 0x5b, 0x8a, 0x51, 0x96, 0xce, 0xe1, 0x8e, 0xda, 0x33, 0x24, 0x01, 0x22, 0x83, 0x43, 0x41,
0x24, 0x88, 0x9a, 0x1d, 0xb7, 0x48, 0x67, 0x71, 0xd6, 0xf8, 0xdb, 0xa6, 0xcd, 0x78, 0x60, 0x67,
0x10, 0x21, 0x0a, 0x48, 0x3d, 0xa7, 0xcb, 0x32, 0x1f, 0xe7, 0x82, 0x93, 0xf5, 0xd4, 0x40, 0x67,
0x3d, 0x1d, 0x10, 0x4c, 0xab, 0x53, 0xf6, 0xba, 0x2e, 0x4d, 0xfd, 0x0f, 0x36, 0xad, 0xd6, 0x7f,
0x1f, 0x2a, 0x79, 0x68, 0x5a, 0x05, 0x1c, 0xa8, 0x8c, 0x72, 0xd2, 0x04, 0x4c, 0x40, 0xdb, 0x0f,
0x93, 0xfb, 0xdd, 0x20, 0xee, 0x67, 0x22, 0x56, 0x19, 0x0b, 0xf9, 0x91, 0x40, 0x1f, 0x3f, 0x1a,
0xb4, 0xc7, 0x2d, 0x5e, 0x7d, 0x2e, 0xd8, 0xec, 0xb2, 0x75, 0x33, 0xce, 0x2f, 0x68, 0x83, 0x10,
0xc7, 0x2d, 0x04, 0x8a, 0x77, 0xd1, 0x78, 0xc6, 0xf3, 0x50, 0x17, 0xd5, 0xf2, 0x3e, 0x5d, 0xa4,
0x38, 0xbb, 0xf9, 0x35, 0x52, 0x15, 0x99, 0x4d, 0x37, 0x6d, 0x12, 0x16, 0x5c, 0x88, 0xd8, 0xfc,
0x92, 0xb0, 0xcd, 0xc9, 0xa1, 0xcf, 0xc3, 0xf6, 0x6b, 0x03, 0x2d, 0x2b, 0x87, 0xf4, 0x6b, 0x03,
0x14, 0x4b, 0x57, 0xb2, 0x89, 0x91, 0x0e, 0x2b, 0x7e, 0x9c, 0x3c, 0xea, 0x07, 0xdb, 0x2d, 0x8f,
0xe7, 0x73, 0x27, 0x63, 0x71, 0xd9, 0x78, 0xdd, 0x0a, 0x18, 0xb2, 0x18, 0xb1, 0xe5, 0x09, 0xe0,
0x60, 0x0a, 0xf3, 0x3c, 0xef, 0xf0, 0x5c, 0xb0, 0x5c, 0x60, 0x53, 0x98, 0x6f, 0x4c, 0x81, 0xa1,
0x29, 0x8c, 0x52, 0x00, 0x71, 0x2b, 0xcf, 0x83, 0x98, 0x38, 0x8a, 0x17, 0x68, 0xc6, 0xd6, 0x9c,
0xf5, 0x34, 0xf2, 0x50, 0xdc, 0x02, 0xce, 0x79, 0x9c, 0xeb, 0x7a, 0x99, 0xc6, 0xe5, 0xdc, 0x9c,
0x6e, 0x24, 0x83, 0xc7, 0xb4, 0x1d, 0x9f, 0x24, 0x1e, 0xe7, 0x86, 0x35, 0xc0, 0xb4, 0x33, 0x5e,
0xc4, 0x73, 0x53, 0x53, 0xa4, 0x06, 0x52, 0xde, 0xaa, 0xea, 0xfd, 0x6e, 0x10, 0xf8, 0x79, 0x91,
0x26, 0x8c, 0x07, 0xfc, 0x48, 0x79, 0x1f, 0x3f, 0x10, 0x04, 0xd9, 0x5b, 0x5d, 0xef, 0x66, 0x47,
0x37, 0xca, 0x13, 0xb5, 0x8f, 0x1d, 0x12, 0xcd, 0x03, 0xb8, 0x50, 0xf6, 0x46, 0xf0, 0x60, 0x8c,
0xea, 0x03, 0xda, 0xd0, 0x18, 0x35, 0xe7, 0xaf, 0x7d, 0xc6, 0x28, 0x06, 0x2b, 0x9f, 0x3f, 0x56,
0x63, 0x74, 0x37, 0x16, 0x71, 0x9d, 0xb7, 0xbf, 0x48, 0xd9, 0x2b, 0xb5, 0x11, 0x46, 0xea, 0xab,
0xa9, 0xa1, 0x7c, 0xeb, 0x19, 0xec, 0x8a, 0xb7, 0x7b, 0xf3, 0x01, 0xdf, 0x6a, 0x87, 0xd0, 0xe9,
0x1b, 0x6c, 0x15, 0xb6, 0x7b, 0xf3, 0x01, 0xdf, 0xea, 0xe3, 0x0d, 0x9d, 0xbe, 0xc1, 0x17, 0x1c,
0xb6, 0x7b, 0xf3, 0xca, 0xf7, 0x5f, 0xea, 0x81, 0xeb, 0x3a, 0xaf, 0xf3, 0xb0, 0x99, 0x48, 0xaf,
0x18, 0x96, 0x4e, 0xfa, 0xf6, 0x0c, 0x1a, 0x4a, 0x27, 0x69, 0x15, 0xe7, 0xf3, 0x69, 0x58, 0x29,
0x8e, 0x79, 0x95, 0xca, 0xeb, 0x18, 0x4f, 0x7b, 0x18, 0xd5, 0x70, 0x68, 0xd3, 0x14, 0x52, 0xb2,
0x0f, 0x96, 0x3d, 0xd4, 0x5e, 0x84, 0x7f, 0x14, 0xb0, 0xd7, 0xbe, 0x0f, 0xbf, 0xd5, 0x93, 0xb6,
0x8f, 0x78, 0x3d, 0x46, 0x3f, 0x9c, 0x9b, 0x30, 0x74, 0x95, 0x30, 0xa6, 0xcc, 0x43, 0x5b, 0xf7,
0x29, 0xe5, 0xe3, 0xfe, 0x0a, 0x1d, 0xee, 0x47, 0x49, 0xd2, 0xcf, 0xbd, 0xfb, 0x74, 0xfb, 0x71,
0x7f, 0x05, 0xe5, 0xfe, 0xaf, 0xf5, 0xb6, 0x06, 0xfa, 0x57, 0x63, 0xf0, 0x49, 0x1f, 0x8b, 0x60,
0x1c, 0x3e, 0xbd, 0x96, 0x8e, 0x2a, 0xc8, 0xdf, 0xeb, 0xfd, 0xbb, 0x46, 0xe5, 0xdb, 0x48, 0xf2,
0x2d, 0x66, 0x35, 0x24, 0x43, 0x51, 0x65, 0x61, 0x38, 0x30, 0x3f, 0xba, 0xa6, 0x96, 0xf3, 0x2d,
0x3f, 0x0f, 0x56, 0x6f, 0xcd, 0x3a, 0xe5, 0x09, 0x59, 0x76, 0x68, 0x58, 0xa0, 0x8f, 0xaf, 0xab,
0x46, 0x0d, 0x55, 0x07, 0x96, 0x5f, 0xb3, 0x79, 0xda, 0xd3, 0xb0, 0xf7, 0x7d, 0x9b, 0x0f, 0xaf,
0xa7, 0xa4, 0xca, 0xf2, 0x5f, 0x6b, 0xd1, 0x3d, 0x8f, 0xb5, 0x8f, 0x33, 0xc0, 0xa1, 0xcb, 0x0f,
0x02, 0xf6, 0x29, 0x25, 0x53, 0xb8, 0xdf, 0xf9, 0x66, 0xca, 0xf6, 0xc3, 0x77, 0x9e, 0xca, 0x5e,
0x9a, 0x09, 0x56, 0xb6, 0x3f, 0x7c, 0xe7, 0xdb, 0x6d, 0xa8, 0x21, 0xfd, 0xe1, 0xbb, 0x00, 0xee,
0x7c, 0xf8, 0x0e, 0xf1, 0x8c, 0x7e, 0xf8, 0x0e, 0xb5, 0x16, 0xfc, 0xf0, 0x5d, 0x58, 0x83, 0x5a,
0x5d, 0x74, 0x11, 0x9a, 0x63, 0xf3, 0x5e, 0x16, 0xfd, 0x53, 0xf4, 0x27, 0xd7, 0x51, 0x21, 0xd6,
0xd7, 0x86, 0x93, 0x17, 0x2a, 0x7b, 0xb4, 0xa9, 0x77, 0xa9, 0x72, 0xbb, 0x37, 0xaf, 0x7c, 0xff,
0x48, 0x6d, 0xae, 0xcc, 0x6a, 0xc2, 0x4b, 0xf9, 0xd1, 0xc3, 0xcd, 0xd0, 0xea, 0x50, 0x5b, 0x70,
0x7b, 0xfe, 0x51, 0x3f, 0x98, 0xa8, 0x6e, 0x4d, 0xa8, 0x4e, 0x1f, 0x76, 0x19, 0x02, 0x5d, 0xbe,
0xdd, 0x9b, 0x27, 0x96, 0x91, 0xc6, 0x77, 0xd3, 0xdb, 0x3d, 0x8c, 0xf9, 0x7d, 0xfd, 0xb8, 0xbf,
0x82, 0x72, 0x7f, 0xa5, 0xb2, 0x56, 0xd7, 0xbd, 0xec, 0xe7, 0xad, 0x2e, 0x53, 0x13, 0xaf, 0x9b,
0x87, 0x7d, 0xf1, 0x50, 0xfe, 0xe2, 0x2e, 0xa1, 0x5d, 0xf9, 0x0b, 0xba, 0x8c, 0x7e, 0x78, 0x3d,
0x25, 0x55, 0x96, 0x7f, 0x5a, 0x8b, 0x6e, 0x92, 0x65, 0x51, 0x71, 0xf0, 0x71, 0x5f, 0xcb, 0x20,
0x1e, 0x3e, 0xb9, 0xb6, 0x9e, 0x2a, 0xd4, 0xbf, 0xae, 0x45, 0xb7, 0x02, 0x85, 0x6a, 0x02, 0xe4,
0x1a, 0xd6, 0xfd, 0x40, 0xf9, 0xf4, 0xfa, 0x8a, 0xd4, 0x72, 0xef, 0xe2, 0x93, 0xf6, 0x47, 0xcc,
0x02, 0xb6, 0x27, 0xf4, 0x47, 0xcc, 0xba, 0xb5, 0xe0, 0x19, 0x53, 0x7c, 0xa6, 0xf7, 0x7c, 0xe8,
0x19, 0x93, 0xbc, 0x0a, 0x19, 0xfc, 0x3c, 0x0a, 0xc6, 0x61, 0x4e, 0x9e, 0xbf, 0x2e, 0xe2, 0x3c,
0xa1, 0x9d, 0x34, 0xf2, 0x6e, 0x27, 0x86, 0x83, 0x67, 0x73, 0xb5, 0xf4, 0x84, 0xeb, 0x7d, 0xdc,
0x03, 0x4a, 0xdf, 0x20, 0xc1, 0xb3, 0xb9, 0x16, 0x4a, 0x78, 0x53, 0x59, 0x63, 0xc8, 0x1b, 0x48,
0x16, 0x1f, 0xf6, 0x41, 0xc1, 0x0e, 0xc1, 0x78, 0x33, 0x47, 0xfe, 0x8f, 0x42, 0x56, 0x5a, 0xc7,
0xfe, 0x5b, 0x3d, 0x69, 0xc2, 0xed, 0x84, 0x89, 0xcf, 0x58, 0x9c, 0xb0, 0x32, 0xe8, 0xd6, 0x50,
0xbd, 0xdc, 0xba, 0x34, 0xe6, 0x76, 0x87, 0x67, 0xcb, 0x45, 0xae, 0x3a, 0x93, 0x74, 0xeb, 0x52,
0xdd, 0x6e, 0x01, 0x0d, 0x4f, 0x25, 0xad, 0x5b, 0x99, 0x5e, 0x3e, 0x0c, 0x9b, 0xf1, 0xb2, 0xca,
0xcd, 0x5e, 0x2c, 0x5d, 0x4f, 0x15, 0x46, 0x1d, 0xf5, 0x04, 0x91, 0xb4, 0xd5, 0x93, 0x86, 0xc7,
0x83, 0x8e, 0x5b, 0x13, 0x4f, 0xdb, 0x1d, 0xb6, 0x5a, 0x21, 0xf5, 0xb8, 0xbf, 0x02, 0x3c, 0x8c,
0x55, 0x51, 0x75, 0x90, 0x56, 0x62, 0x2f, 0xcd, 0xb2, 0xc1, 0x66, 0x20, 0x4c, 0x34, 0x14, 0x3c,
0x8c, 0x45, 0x60, 0x22, 0x92, 0xf5, 0xe1, 0x65, 0x3e, 0xe8, 0xb2, 0x23, 0xa9, 0x5e, 0x91, 0xec,
0xd2, 0xe0, 0x40, 0xcd, 0x69, 0x6a, 0x53, 0xdb, 0x61, 0xb8, 0xe1, 0x5a, 0x15, 0xde, 0xee, 0xcd,
0x83, 0xa7, 0xfd, 0x92, 0x92, 0x2b, 0xcb, 0x5d, 0xca, 0x84, 0xb7, 0x92, 0xdc, 0xeb, 0xa0, 0xc0,
0xa1, 0x64, 0x33, 0x8c, 0x5e, 0xa6, 0xc9, 0x9c, 0x09, 0xf4, 0x41, 0x95, 0x0b, 0x04, 0x1f, 0x54,
0x01, 0x10, 0x74, 0x5d, 0xf3, 0x77, 0x73, 0x1a, 0x3b, 0x4e, 0xb0, 0xae, 0x53, 0xca, 0x0e, 0x15,
0xea, 0x3a, 0x94, 0x06, 0xb3, 0x81, 0x71, 0xab, 0x3e, 0x28, 0xf1, 0x30, 0x64, 0x06, 0x7c, 0x55,
0x62, 0xb3, 0x17, 0x0b, 0x56, 0x14, 0xeb, 0x30, 0x5d, 0xa4, 0x02, 0x5b, 0x51, 0x1c, 0x1b, 0x35,
0x12, 0x5a, 0x51, 0xda, 0x28, 0x55, 0xbd, 0x3a, 0x47, 0x18, 0x27, 0xe1, 0xea, 0x35, 0x4c, 0xbf,
0xea, 0x19, 0xb6, 0xf5, 0x5c, 0x35, 0x37, 0x21, 0x23, 0x2e, 0xd4, 0x66, 0x19, 0x89, 0x6d, 0xf9,
0xa2, 0x31, 0x04, 0x43, 0xb3, 0x0e, 0xa5, 0x00, 0x9f, 0x17, 0xd4, 0x9c, 0x7e, 0xf4, 0x5b, 0x14,
0x2c, 0x2e, 0xe3, 0x7c, 0x86, 0x6e, 0x4e, 0xa5, 0xc1, 0x16, 0x19, 0xda, 0x9c, 0x92, 0x1a, 0xe0,
0xa9, 0xbd, 0xff, 0x26, 0x2f, 0x32, 0x14, 0xcc, 0x2b, 0xb3, 0xfe, 0x8b, 0xbc, 0x0f, 0x7a, 0x90,
0xf0, 0xa9, 0xbd, 0x06, 0xcc, 0xb9, 0x7b, 0xe3, 0xf4, 0x83, 0x80, 0x29, 0x1f, 0x0d, 0x6d, 0x84,
0x69, 0x15, 0x10, 0xd4, 0xce, 0xd9, 0xe2, 0xe7, 0x6c, 0x85, 0x05, 0xb5, 0x7b, 0x48, 0xf8, 0x39,
0x5b, 0x85, 0x82, 0xba, 0x8d, 0x82, 0x3c, 0xd3, 0xdd, 0x07, 0xad, 0x07, 0xf4, 0xdd, 0xad, 0xcf,
0x46, 0x27, 0x07, 0x46, 0xce, 0x6e, 0x7a, 0xe5, 0x3d, 0xa6, 0x40, 0x0a, 0xba, 0x9b, 0x5e, 0xe1,
0x4f, 0x29, 0x36, 0x7b, 0xb1, 0xf0, 0x46, 0x40, 0x2c, 0xd8, 0x6b, 0xfd, 0xa8, 0x1e, 0x29, 0xae,
0x94, 0xb7, 0x9e, 0xd5, 0xdf, 0xef, 0x06, 0xed, 0xfd, 0xdb, 0xe3, 0x92, 0xcf, 0x58, 0x55, 0xa9,
0x6f, 0xad, 0xfa, 0x17, 0x9c, 0x94, 0x6c, 0x08, 0xbe, 0xb4, 0x7a, 0x37, 0x0c, 0x39, 0x1f, 0x48,
0x6c, 0x44, 0xf6, 0xbb, 0x4d, 0xeb, 0xa8, 0x66, 0xfb, 0x93, 0x4d, 0x1b, 0x9d, 0x9c, 0x1d, 0x5e,
0x4a, 0xea, 0x7e, 0xa8, 0xe9, 0x3e, 0xaa, 0x8e, 0x7d, 0xa3, 0xe9, 0x41, 0x0f, 0x52, 0xb9, 0xfa,
0x2c, 0x7a, 0xf3, 0x80, 0xcf, 0x27, 0x2c, 0x4f, 0x06, 0xdf, 0xf3, 0x6f, 0xf0, 0xf2, 0xf9, 0xb0,
0xfe, 0xb3, 0x31, 0x7a, 0x83, 0x12, 0xdb, 0x3b, 0x88, 0xbb, 0xec, 0x6c, 0x39, 0x9f, 0x88, 0x58,
0x80, 0x3b, 0x88, 0xf2, 0xef, 0xc3, 0x5a, 0x40, 0xdc, 0x41, 0xf4, 0x00, 0x60, 0x6f, 0x5a, 0x32,
0x86, 0xda, 0xab, 0x05, 0x41, 0x7b, 0x0a, 0xb0, 0x59, 0x84, 0xb1, 0x57, 0x27, 0xea, 0xf0, 0xce,
0xa0, 0xd5, 0x91, 0x52, 0x22, 0x8b, 0x68, 0x53, 0x36, 0xb8, 0x9b, 0xea, 0xcb, 0xef, 0xe6, 0x2c,
0x17, 0x8b, 0xb8, 0x5c, 0x81, 0xe0, 0x56, 0xb5, 0x74, 0x00, 0x22, 0xb8, 0x51, 0xd0, 0x8e, 0x5a,
0xdd, 0xcc, 0xb3, 0xcb, 0x7d, 0x5e, 0xf2, 0xa5, 0x48, 0x73, 0x06, 0xbf, 0x9d, 0x62, 0x1a, 0xd4,
0x65, 0x88, 0x51, 0x4b, 0xb1, 0x36, 0xcb, 0x95, 0x44, 0x73, 0x9d, 0x51, 0x7e, 0x6c, 0xbe, 0x12,
0xbc, 0x84, 0x8f, 0x33, 0x1b, 0x2b, 0x10, 0x22, 0xb2, 0x5c, 0x12, 0x06, 0x7d, 0x7f, 0x9c, 0xe6,
0x73, 0xb4, 0xef, 0x8f, 0xdd, 0xef, 0x17, 0xdf, 0xa2, 0x01, 0x3b, 0xa0, 0x9a, 0x46, 0x6b, 0x06,
0x80, 0x7a, 0x69, 0x18, 0x6d, 0x74, 0x97, 0x20, 0x06, 0x14, 0x4e, 0x02, 0x57, 0x5f, 0x14, 0x2c,
0x67, 0x89, 0xbe, 0xb4, 0x87, 0xb9, 0xf2, 0x88, 0xa0, 0x2b, 0x48, 0xda, 0xb9, 0x48, 0xca, 0x4f,
0x96, 0xf9, 0x71, 0xc9, 0xcf, 0xd3, 0x8c, 0x95, 0x60, 0x2e, 0x6a, 0xd4, 0x1d, 0x39, 0x31, 0x17,
0x61, 0x9c, 0xbd, 0xfd, 0x21, 0xa5, 0xde, 0x2f, 0x26, 0x4c, 0xcb, 0x78, 0x06, 0x6f, 0x7f, 0x34,
0x36, 0xda, 0x18, 0x71, 0x32, 0x18, 0xc0, 0x9d, 0x44, 0xa7, 0x71, 0x9d, 0xaf, 0x64, 0x7c, 0xa8,
0x97, 0x56, 0xe5, 0x57, 0x7d, 0x2b, 0x90, 0xe8, 0x28, 0x73, 0x18, 0x49, 0x24, 0x3a, 0x61, 0x0d,
0xbb, 0x94, 0x48, 0xee, 0x48, 0xdd, 0x6a, 0x02, 0x4b, 0x49, 0x63, 0x43, 0x0b, 0x89, 0xa5, 0xa4,
0x05, 0x81, 0x09, 0x49, 0x0f, 0x83, 0x39, 0x3a, 0x21, 0x19, 0x69, 0x70, 0x42, 0x72, 0x29, 0x3b,
0x51, 0x8c, 0xf3, 0x54, 0xa4, 0x71, 0x36, 0x61, 0xe2, 0x38, 0x2e, 0xe3, 0x05, 0x13, 0xac, 0x84,
0x13, 0x85, 0x42, 0x86, 0x1e, 0x43, 0x4c, 0x14, 0x14, 0xab, 0x1c, 0xfe, 0x6e, 0xf4, 0x76, 0xbd,
0xee, 0xb3, 0x5c, 0xfd, 0xd6, 0xd3, 0x73, 0xf9, 0x23, 0x71, 0x83, 0x77, 0x8c, 0x8d, 0x89, 0x28,
0x59, 0xbc, 0xd0, 0xb6, 0xdf, 0x32, 0x7f, 0x97, 0xe0, 0xe3, 0xb5, 0x3a, 0x9e, 0x8f, 0xb8, 0x48,
0xcf, 0xeb, 0x6d, 0xb6, 0x7a, 0x81, 0x09, 0xc4, 0xb3, 0x2b, 0x1e, 0x06, 0x3e, 0x7a, 0x82, 0x71,
0x76, 0x9e, 0x76, 0xa5, 0x27, 0xac, 0xc8, 0xe0, 0x3c, 0xed, 0x69, 0x4b, 0x80, 0x98, 0xa7, 0x51,
0xd0, 0x0e, 0x4e, 0x57, 0x3c, 0x65, 0xe1, 0xca, 0x4c, 0x59, 0xbf, 0xca, 0x4c, 0xbd, 0x77, 0x42,
0xb2, 0xe8, 0xed, 0x43, 0xb6, 0x38, 0x63, 0x65, 0x75, 0x91, 0x16, 0xd4, 0x97, 0x87, 0x2d, 0xd1,
0xf9, 0xe5, 0x61, 0x02, 0xb5, 0x2b, 0x81, 0x05, 0xc6, 0xd5, 0x51, 0xbc, 0x60, 0xf2, 0x13, 0x2e,
0x60, 0x25, 0x70, 0x8c, 0x38, 0x10, 0xb1, 0x12, 0x90, 0xb0, 0xf3, 0x7a, 0x99, 0x65, 0x4e, 0xd8,
0xbc, 0x8e, 0xb0, 0xf2, 0x38, 0x5e, 0x2d, 0x58, 0x2e, 0x94, 0x49, 0x70, 0x26, 0xef, 0x98, 0xc4,
0x79, 0xe2, 0x4c, 0xbe, 0x8f, 0x9e, 0x33, 0x35, 0x79, 0x0d, 0x7f, 0xcc, 0x4b, 0xd1, 0xfc, 0x92,
0xdb, 0x69, 0x99, 0x81, 0xa9, 0xc9, 0x6f, 0x54, 0x8f, 0x24, 0xa6, 0xa6, 0xb0, 0x86, 0xf3, 0xab,
0x1d, 0x5e, 0x19, 0x5e, 0xb0, 0xd2, 0xc4, 0xc9, 0xf3, 0x45, 0x9c, 0x66, 0x2a, 0x1a, 0xbe, 0x1f,
0xb0, 0x4d, 0xe8, 0x10, 0xbf, 0xda, 0xd1, 0x57, 0xd7, 0xf9, 0x9d, 0x93, 0x70, 0x09, 0xc1, 0x23,
0x82, 0x0e, 0xfb, 0xc4, 0x23, 0x82, 0x6e, 0x2d, 0xbb, 0x73, 0xb7, 0xac, 0xe4, 0x56, 0x92, 0xd8,
0xe1, 0x09, 0x3c, 0x2f, 0x74, 0x6c, 0x02, 0x90, 0xd8, 0xb9, 0x07, 0x15, 0x6c, 0x6a, 0x60, 0xb1,
0xbd, 0x34, 0x8f, 0xb3, 0xf4, 0xc7, 0x30, 0xad, 0x77, 0xec, 0x68, 0x82, 0x48, 0x0d, 0x70, 0x12,
0x73, 0xb5, 0xcf, 0xc4, 0x34, 0xad, 0xa7, 0xfe, 0xfb, 0x81, 0x76, 0x93, 0x44, 0xb7, 0x2b, 0x87,
0x74, 0xbe, 0x32, 0x0c, 0x9b, 0x75, 0x54, 0x14, 0x93, 0x7a, 0x55, 0x3d, 0x61, 0x33, 0x96, 0x16,
0x62, 0xf0, 0x51, 0xb8, 0xad, 0x00, 0x4e, 0x5c, 0xb4, 0xe8, 0xa1, 0xe6, 0x3c, 0xbe, 0xaf, 0xe7,
0x92, 0x49, 0xf3, 0x13, 0xa7, 0xa7, 0x15, 0x2b, 0x55, 0xa2, 0xb1, 0xcf, 0x04, 0x18, 0x9d, 0x0e,
0x37, 0x74, 0xc0, 0xba, 0xa2, 0xc4, 0xe8, 0x0c, 0x6b, 0xd8, 0xc3, 0x3e, 0x87, 0x53, 0x5f, 0x8d,
0x97, 0xd7, 0x1d, 0x1f, 0x91, 0xc6, 0x1c, 0x8a, 0x38, 0xec, 0xa3, 0x69, 0x9b, 0xad, 0xb5, 0xdd,
0x8e, 0xf2, 0xd5, 0x18, 0x5e, 0x99, 0x40, 0x2c, 0x49, 0x8c, 0xc8, 0xd6, 0x02, 0xb8, 0x73, 0x18,
0x5e, 0xf2, 0x38, 0x99, 0xc5, 0x95, 0x38, 0x8e, 0x57, 0x19, 0x8f, 0x13, 0xb9, 0xae, 0xc3, 0xc3,
0x70, 0xcd, 0x0c, 0x5d, 0x88, 0x3a, 0x0c, 0xa7, 0x60, 0x37, 0x3b, 0x93, 0xbf, 0xdc, 0xaa, 0xae,
0x92, 0xc2, 0xec, 0x4c, 0x96, 0x17, 0x5e, 0x23, 0xbd, 0x1b, 0x86, 0xec, 0x2b, 0x70, 0x8d, 0x48,
0xa6, 0x21, 0xb7, 0x30, 0x1d, 0x2f, 0x01, 0x79, 0x3f, 0x40, 0xd8, 0x0f, 0xa0, 0x34, 0x7f, 0xd7,
0x3f, 0xd6, 0x25, 0xd4, 0xb7, 0xd8, 0x1f, 0x61, 0xba, 0x2e, 0xe4, 0xdd, 0x50, 0xdb, 0xea, 0x49,
0xdb, 0x34, 0x73, 0xe7, 0x22, 0x16, 0xa3, 0x24, 0x39, 0x64, 0x15, 0xf2, 0x3e, 0x7b, 0x2d, 0x1c,
0x5a, 0x29, 0x91, 0x66, 0xb6, 0x29, 0x1b, 0xe8, 0xb5, 0xec, 0x79, 0x92, 0x0a, 0x25, 0xd3, 0x17,
0xb4, 0x1f, 0xb5, 0x0d, 0xb4, 0x29, 0xa2, 0x56, 0x34, 0x6d, 0xe7, 0xf2, 0x9a, 0x99, 0xf2, 0xf9,
0x3c, 0x63, 0x0a, 0x3a, 0x61, 0x71, 0xf3, 0x29, 0xca, 0xed, 0xb6, 0x2d, 0x14, 0x24, 0xe6, 0xf2,
0xa0, 0x82, 0x4d, 0x23, 0x6b, 0xac, 0x79, 0x24, 0xa5, 0x1b, 0x76, 0xa3, 0x6d, 0xc6, 0x03, 0x88,
0x34, 0x12, 0x05, 0xed, 0x6b, 0x77, 0xb5, 0x78, 0x9f, 0xe9, 0x96, 0x80, 0xdf, 0xba, 0x92, 0xca,
0x8e, 0x98, 0x78, 0xed, 0x0e, 0xc1, 0xec, 0x3e, 0x01, 0x78, 0x78, 0xb6, 0x1a, 0x27, 0x70, 0x9f,
0x00, 0xf5, 0x25, 0x43, 0xec, 0x13, 0x28, 0xd6, 0xef, 0x3a, 0x73, 0xee, 0x75, 0x10, 0x57, 0xb6,
0x72, 0x48, 0xd7, 0xa1, 0x60, 0xa8, 0xeb, 0x28, 0x05, 0xbf, 0x49, 0xdd, 0xa3, 0x35, 0xa4, 0x49,
0xb1, 0x73, 0xb5, 0xf5, 0x2e, 0xcc, 0xe6, 0xfe, 0xb5, 0xf0, 0x84, 0xc5, 0x89, 0xa9, 0x18, 0xa2,
0xeb, 0xca, 0x89, 0xdc, 0x1f, 0xe3, 0x94, 0x93, 0x3f, 0x88, 0x06, 0x4d, 0x35, 0x4a, 0xd7, 0xcd,
0x2d, 0xac, 0x88, 0x35, 0x41, 0x4c, 0x54, 0x3e, 0xe1, 0x24, 0x6e, 0x5e, 0x17, 0x4d, 0xb9, 0x72,
0xa0, 0x5e, 0x0b, 0xad, 0x40, 0xe2, 0xe6, 0x37, 0x7b, 0x8b, 0x26, 0x12, 0xb7, 0x6e, 0x2d, 0xe7,
0xb3, 0x3f, 0xa0, 0xcb, 0xf6, 0x4a, 0xbe, 0x80, 0x65, 0xfa, 0x34, 0xd8, 0x3d, 0x88, 0x06, 0xf1,
0xd9, 0x9f, 0x7e, 0x9a, 0x76, 0x0d, 0x32, 0x67, 0x07, 0xf2, 0x7a, 0x1a, 0xfe, 0x7b, 0x23, 0x8d,
0x90, 0x58, 0x83, 0x5a, 0x90, 0xf3, 0x23, 0xa5, 0xe3, 0x97, 0x65, 0x2a, 0xd2, 0x7c, 0x3e, 0xe5,
0x3c, 0x83, 0x47, 0x96, 0xa3, 0xf1, 0xd0, 0x95, 0x52, 0x3f, 0x52, 0xda, 0xa2, 0xec, 0x12, 0x37,
0x1a, 0x8f, 0x96, 0x82, 0x9f, 0xa7, 0x59, 0x06, 0x22, 0x67, 0x34, 0x1e, 0x6a, 0x09, 0x11, 0x39,
0x3e, 0xe1, 0xfc, 0xb4, 0xe6, 0x58, 0x9e, 0xfe, 0xab, 0x13, 0xd0, 0x3b, 0x50, 0xc7, 0x11, 0x52,
0x3f, 0xad, 0x09, 0x21, 0xe7, 0xa7, 0x42, 0xc7, 0xd8, 0x8f, 0xa6, 0x6c, 0x42, 0x75, 0x04, 0xa2,
0x7e, 0x2a, 0x94, 0x82, 0x1b, 0x9f, 0xcf, 0xde, 0xff, 0x9f, 0xaf, 0x6e, 0xac, 0xfd, 0xf4, 0xab,
0x1b, 0x6b, 0xff, 0xfb, 0xd5, 0x8d, 0xb5, 0x9f, 0x7c, 0x7d, 0xe3, 0x8d, 0x9f, 0x7e, 0x7d, 0xe3,
0x8d, 0x9f, 0x7d, 0x7d, 0xe3, 0x8d, 0x2f, 0xdf, 0x54, 0xbf, 0x9f, 0x7f, 0xf6, 0x0b, 0xf2, 0x57,
0xf0, 0x9f, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x71, 0xe6, 0xb7, 0x63, 0x7f, 0x00,
0x00,
0x7f, 0x01, 0x7f, 0x06, 0x8f, 0xf7, 0xc8, 0x23, 0xda, 0x7d, 0xe7, 0x4f, 0x40, 0xa8, 0xb2, 0xf2,
0x33, 0x2a, 0x22, 0xab, 0xbc, 0xf7, 0x34, 0x23, 0xc7, 0x2f, 0x22, 0xf2, 0x23, 0x32, 0x33, 0x32,
0x2b, 0xab, 0x3a, 0xba, 0x59, 0x9c, 0x6d, 0x17, 0x25, 0x17, 0xbc, 0xda, 0xae, 0x58, 0x79, 0x95,
0xce, 0x98, 0xfe, 0x77, 0x28, 0xff, 0x3c, 0x78, 0x33, 0xce, 0x57, 0x62, 0x55, 0xb0, 0xf7, 0xde,
0xb5, 0xe4, 0x8c, 0x2f, 0x16, 0x71, 0x9e, 0x54, 0x0d, 0xf2, 0xde, 0x3b, 0x56, 0xc2, 0xae, 0x58,
0x2e, 0xd4, 0xdf, 0x9f, 0xfc, 0xef, 0xff, 0xad, 0x45, 0x6f, 0xed, 0x64, 0x29, 0xcb, 0xc5, 0x8e,
0xd2, 0x18, 0x7c, 0x19, 0x7d, 0x7b, 0x54, 0x14, 0xfb, 0x4c, 0xbc, 0x60, 0x65, 0x95, 0xf2, 0x7c,
0x70, 0x67, 0xa8, 0x1c, 0x0c, 0x4f, 0x8a, 0xd9, 0x70, 0x54, 0x14, 0x43, 0x2b, 0x1c, 0x9e, 0xb0,
0x1f, 0x2d, 0x59, 0x25, 0xde, 0xbb, 0x1b, 0x86, 0xaa, 0x82, 0xe7, 0x15, 0x1b, 0x9c, 0x47, 0xbf,
0x32, 0x2a, 0x8a, 0x09, 0x13, 0xbb, 0xac, 0xae, 0xc0, 0x44, 0xc4, 0x82, 0x0d, 0x36, 0x5a, 0xaa,
0x3e, 0x60, 0x7c, 0xdc, 0xef, 0x06, 0x95, 0x9f, 0x69, 0xf4, 0xad, 0xda, 0xcf, 0xc5, 0x52, 0x24,
0xfc, 0x55, 0x3e, 0x78, 0xbf, 0xad, 0xa8, 0x44, 0xc6, 0xf6, 0xed, 0x10, 0xa2, 0xac, 0xbe, 0x8c,
0x7e, 0xf1, 0x65, 0x9c, 0x65, 0x4c, 0xec, 0x94, 0xac, 0x2e, 0xb8, 0xaf, 0xd3, 0x88, 0x86, 0x8d,
0xcc, 0xd8, 0xbd, 0x13, 0x64, 0x94, 0xe1, 0x2f, 0xa3, 0x6f, 0x37, 0x92, 0x13, 0x36, 0xe3, 0x57,
0xac, 0x1c, 0xa0, 0x5a, 0x4a, 0x48, 0x34, 0x79, 0x0b, 0x82, 0xb6, 0x77, 0x78, 0x7e, 0xc5, 0x4a,
0x81, 0xdb, 0x56, 0xc2, 0xb0, 0x6d, 0x0b, 0x29, 0xdb, 0x7f, 0xbd, 0x16, 0x7d, 0x77, 0x34, 0x9b,
0xf1, 0x65, 0x2e, 0x0e, 0xf8, 0x2c, 0xce, 0x0e, 0xd2, 0xfc, 0xf2, 0x88, 0xbd, 0xda, 0xb9, 0xa8,
0xf9, 0x7c, 0xce, 0x06, 0x4f, 0xfd, 0x56, 0x6d, 0xd0, 0xa1, 0x61, 0x87, 0x2e, 0x6c, 0x7c, 0x7f,
0x78, 0x3d, 0x25, 0x55, 0x96, 0xbf, 0x5f, 0x8b, 0x6e, 0xc0, 0xb2, 0x4c, 0x78, 0x76, 0xc5, 0x6c,
0x69, 0x3e, 0xea, 0x30, 0xec, 0xe3, 0xa6, 0x3c, 0x1f, 0x5f, 0x57, 0x4d, 0x95, 0x28, 0x8b, 0xde,
0x76, 0xc3, 0x65, 0xc2, 0x2a, 0x39, 0x9c, 0x1e, 0xd0, 0x11, 0xa1, 0x10, 0xe3, 0xf9, 0x61, 0x1f,
0x54, 0x79, 0x4b, 0xa3, 0x81, 0xf2, 0x96, 0xf1, 0xca, 0x38, 0xbb, 0x8f, 0x5a, 0x70, 0x08, 0xe3,
0xeb, 0x41, 0x0f, 0x52, 0xb9, 0xfa, 0x83, 0xe8, 0x97, 0x5e, 0xf2, 0xf2, 0xb2, 0x2a, 0xe2, 0x19,
0x53, 0x43, 0xe1, 0x9e, 0xaf, 0xad, 0xa5, 0x70, 0x34, 0xac, 0x77, 0x61, 0x4e, 0xd0, 0x6a, 0xe1,
0x17, 0x05, 0x83, 0x73, 0x90, 0x55, 0xac, 0x85, 0x54, 0xd0, 0x42, 0x48, 0xd9, 0xbe, 0x8c, 0x06,
0xd6, 0xf6, 0xd9, 0x1f, 0xb2, 0x99, 0x18, 0x25, 0x09, 0xec, 0x15, 0xab, 0x2b, 0x89, 0xe1, 0x28,
0x49, 0xa8, 0x5e, 0xc1, 0x51, 0xe5, 0xec, 0x55, 0xf4, 0x0e, 0x70, 0x76, 0x90, 0x56, 0xd2, 0xe1,
0x56, 0xd8, 0x8a, 0xc2, 0x8c, 0xd3, 0x61, 0x5f, 0x5c, 0x39, 0xfe, 0xd3, 0xb5, 0xe8, 0x3b, 0x88,
0xe7, 0x13, 0xb6, 0xe0, 0x57, 0x6c, 0xf0, 0xb8, 0xdb, 0x5a, 0x43, 0x1a, 0xff, 0x1f, 0x5c, 0x43,
0x03, 0x09, 0x93, 0x09, 0xcb, 0xd8, 0x4c, 0x90, 0x61, 0xd2, 0x88, 0x3b, 0xc3, 0xc4, 0x60, 0xce,
0x08, 0xd3, 0xc2, 0x7d, 0x26, 0x76, 0x96, 0x65, 0xc9, 0x72, 0x41, 0xf6, 0xa5, 0x45, 0x3a, 0xfb,
0xd2, 0x43, 0x91, 0xfa, 0xec, 0x33, 0x31, 0xca, 0x32, 0xb2, 0x3e, 0x8d, 0xb8, 0xb3, 0x3e, 0x06,
0x53, 0x1e, 0x66, 0xd1, 0x2f, 0x3b, 0x2d, 0x26, 0xc6, 0xf9, 0x39, 0x1f, 0xd0, 0x6d, 0x21, 0xe5,
0xc6, 0xc7, 0x46, 0x27, 0x87, 0x54, 0xe3, 0xf9, 0xeb, 0x82, 0x97, 0x74, 0xb7, 0x34, 0xe2, 0xce,
0x6a, 0x18, 0x4c, 0x79, 0xf8, 0xfd, 0xe8, 0x2d, 0x35, 0x4b, 0xea, 0xf5, 0xec, 0x2e, 0x3a, 0x85,
0xc2, 0x05, 0xed, 0x5e, 0x07, 0xd5, 0x32, 0x7f, 0x98, 0xce, 0xcb, 0x7a, 0xf6, 0xc1, 0xcd, 0x2b,
0x69, 0x87, 0x79, 0x4b, 0x29, 0xf3, 0x3c, 0xfa, 0x55, 0xdf, 0xfc, 0x4e, 0x9c, 0xcf, 0x58, 0x36,
0x78, 0x18, 0x52, 0x6f, 0x18, 0xe3, 0x6a, 0xb3, 0x17, 0x6b, 0x27, 0x3b, 0x45, 0xa8, 0xc9, 0xf4,
0x0e, 0xaa, 0x0d, 0xa6, 0xd2, 0xbb, 0x61, 0xa8, 0x65, 0x7b, 0x97, 0x65, 0x8c, 0xb4, 0xdd, 0x08,
0x3b, 0x6c, 0x1b, 0x48, 0xd9, 0x2e, 0xa3, 0x5f, 0x33, 0xdd, 0x5c, 0xe7, 0x05, 0x52, 0x5e, 0x2f,
0x3a, 0x9b, 0x44, 0x3f, 0xba, 0x90, 0xf1, 0xf5, 0xa8, 0x1f, 0xdc, 0xaa, 0x8f, 0x9a, 0x51, 0xf0,
0xfa, 0x80, 0xf9, 0xe4, 0x6e, 0x18, 0x52, 0xb6, 0xff, 0x66, 0x2d, 0xfa, 0x9e, 0x92, 0x3d, 0xcf,
0xe3, 0xb3, 0x8c, 0xc9, 0x25, 0xfe, 0x88, 0x89, 0x57, 0xbc, 0xbc, 0x9c, 0xac, 0xf2, 0x19, 0x91,
0xce, 0xe0, 0x70, 0x47, 0x3a, 0x43, 0x2a, 0xa9, 0xc2, 0xfc, 0x51, 0xf4, 0xae, 0x0e, 0x8a, 0x8b,
0x38, 0x9f, 0xb3, 0x1f, 0x56, 0x3c, 0x1f, 0x15, 0xe9, 0x28, 0x49, 0xca, 0xc1, 0x10, 0xef, 0x7a,
0xc8, 0x99, 0x12, 0x6c, 0xf7, 0xe6, 0x9d, 0xf4, 0x59, 0xb5, 0xb2, 0xe0, 0x05, 0x4c, 0x9f, 0x75,
0xf3, 0x09, 0x5e, 0x50, 0xe9, 0xb3, 0x8f, 0xb4, 0xac, 0x1e, 0xd6, 0x6b, 0x10, 0x6e, 0xf5, 0xd0,
0x5d, 0x74, 0x6e, 0x87, 0x10, 0xbb, 0x06, 0xe8, 0x86, 0xe2, 0xf9, 0x79, 0x3a, 0x3f, 0x2d, 0x92,
0x7a, 0x0c, 0x3d, 0xc0, 0xeb, 0xec, 0x20, 0xc4, 0x1a, 0x40, 0xa0, 0xca, 0xdb, 0xdf, 0xd9, 0x2c,
0x53, 0xcd, 0x4b, 0x7b, 0x25, 0x5f, 0x1c, 0xb0, 0x79, 0x3c, 0x5b, 0xa9, 0xc9, 0xf4, 0xc3, 0xd0,
0x2c, 0x06, 0x69, 0x53, 0x88, 0x8f, 0xae, 0xa9, 0xa5, 0xca, 0xf3, 0xef, 0x6b, 0xd1, 0x5d, 0x2f,
0x4e, 0x54, 0x30, 0x35, 0xa5, 0x1f, 0xe5, 0xc9, 0x09, 0xab, 0x44, 0x5c, 0x8a, 0xc1, 0xf7, 0x03,
0x31, 0x40, 0xe8, 0x98, 0xb2, 0xfd, 0xe0, 0x1b, 0xe9, 0xda, 0x5e, 0x9f, 0xd4, 0xab, 0x84, 0x9a,
0x7f, 0xfc, 0x5e, 0x97, 0x12, 0x38, 0xfb, 0xdc, 0x0e, 0x21, 0xb6, 0xd7, 0xa5, 0x60, 0x9c, 0x5f,
0xa5, 0x82, 0xed, 0xb3, 0x9c, 0x95, 0xed, 0x5e, 0x6f, 0x54, 0x7d, 0x84, 0xe8, 0x75, 0x02, 0xb5,
0x33, 0x9d, 0xe7, 0xcd, 0x64, 0x1a, 0x9b, 0x01, 0x23, 0xad, 0x5c, 0xe3, 0x51, 0x3f, 0x98, 0xa8,
0xa1, 0xd8, 0xaf, 0x8d, 0x04, 0x6b, 0xd8, 0x20, 0xbd, 0x6a, 0x68, 0x50, 0xbb, 0x31, 0x77, 0xbc,
0x9d, 0xb0, 0x2b, 0x7e, 0x09, 0x37, 0xe6, 0xae, 0x81, 0x06, 0x20, 0x36, 0xe6, 0x28, 0x68, 0x93,
0x0f, 0xc7, 0xcf, 0x8b, 0x94, 0xbd, 0x02, 0xc9, 0x87, 0xab, 0x5c, 0x8b, 0x89, 0xe4, 0x03, 0xc1,
0x94, 0x87, 0xa3, 0xe8, 0x17, 0xa4, 0xf0, 0x87, 0x3c, 0xcd, 0x07, 0x37, 0x11, 0xa5, 0x5a, 0x60,
0xac, 0xde, 0xa2, 0x01, 0x50, 0xe2, 0xfa, 0xaf, 0x2a, 0x13, 0xb8, 0x47, 0x28, 0x81, 0x24, 0x60,
0xbd, 0x0b, 0xb3, 0x59, 0x9f, 0x14, 0xd6, 0xb3, 0xe5, 0xe4, 0x22, 0x2e, 0xd3, 0x7c, 0x3e, 0xc0,
0x74, 0x1d, 0x39, 0x91, 0xf5, 0x61, 0x1c, 0x08, 0x27, 0xa5, 0x38, 0x2a, 0x8a, 0xb2, 0x9e, 0x84,
0xb1, 0x70, 0xf2, 0x91, 0x60, 0x38, 0xb5, 0x50, 0xdc, 0xdb, 0x2e, 0x9b, 0x65, 0x69, 0x1e, 0xf4,
0xa6, 0x90, 0x3e, 0xde, 0x2c, 0x0a, 0x82, 0xf7, 0x80, 0xc5, 0x57, 0x4c, 0xd7, 0x0c, 0x6b, 0x19,
0x17, 0x08, 0x06, 0x2f, 0x00, 0xed, 0x16, 0x5b, 0x8a, 0x0f, 0xe3, 0x4b, 0x56, 0x37, 0x30, 0xab,
0x97, 0xf0, 0x01, 0xa6, 0xef, 0x11, 0xc4, 0x16, 0x1b, 0x27, 0x95, 0xab, 0x65, 0xf4, 0x8e, 0x94,
0x1f, 0xc7, 0xa5, 0x48, 0x67, 0x69, 0x11, 0xe7, 0x7a, 0xeb, 0x86, 0xcd, 0x22, 0x2d, 0xca, 0xb8,
0xdc, 0xea, 0x49, 0x2b, 0xb7, 0xff, 0xb2, 0x16, 0xbd, 0x0f, 0xfd, 0x1e, 0xb3, 0x72, 0x91, 0xca,
0x13, 0x80, 0xaa, 0x99, 0xf2, 0x07, 0x9f, 0x84, 0x8d, 0xb6, 0x14, 0x4c, 0x69, 0x3e, 0xbd, 0xbe,
0xa2, 0xcd, 0xfb, 0x26, 0x6a, 0x57, 0xf4, 0x45, 0x99, 0xb4, 0x4e, 0xc8, 0x26, 0x7a, 0xab, 0x23,
0x85, 0x44, 0xde, 0xd7, 0x82, 0xc0, 0x08, 0x3f, 0xcd, 0x2b, 0x6d, 0x1d, 0x1b, 0xe1, 0x56, 0x1c,
0x1c, 0xe1, 0x1e, 0x66, 0x47, 0xf8, 0xf1, 0xf2, 0x2c, 0x4b, 0xab, 0x8b, 0x34, 0x9f, 0xab, 0x24,
0xdf, 0xd7, 0xb5, 0x62, 0x98, 0xe7, 0x6f, 0x74, 0x72, 0x98, 0x13, 0x15, 0x2c, 0xa4, 0x13, 0x10,
0x26, 0x1b, 0x9d, 0x9c, 0xdd, 0x7b, 0x59, 0x69, 0xbd, 0xe9, 0x07, 0x7b, 0x2f, 0x47, 0xb5, 0x96,
0x12, 0x7b, 0xaf, 0x36, 0x65, 0xf7, 0x5e, 0x6e, 0x1d, 0x2a, 0x9e, 0x5d, 0xb1, 0xd3, 0x32, 0x05,
0x7b, 0x2f, 0xaf, 0x7c, 0x9a, 0x21, 0xf6, 0x5e, 0x14, 0x6b, 0x27, 0x2a, 0x4b, 0xec, 0x33, 0x31,
0x11, 0xb1, 0x58, 0x56, 0x60, 0xa2, 0x72, 0x6c, 0x18, 0x84, 0x98, 0xa8, 0x08, 0x54, 0x79, 0xfb,
0xdd, 0x28, 0x6a, 0xce, 0x4b, 0xe4, 0x99, 0x96, 0xbf, 0xf6, 0xa8, 0x83, 0x14, 0xef, 0x40, 0xeb,
0xfd, 0x00, 0x61, 0xd3, 0xab, 0xe6, 0xef, 0xf2, 0xa8, 0x6e, 0x80, 0x6a, 0x48, 0x11, 0x91, 0x5e,
0x01, 0x04, 0x16, 0x74, 0x72, 0xc1, 0x5f, 0xe1, 0x05, 0xad, 0x25, 0xe1, 0x82, 0x2a, 0xc2, 0x1e,
0x9e, 0xab, 0x82, 0x62, 0x87, 0xe7, 0xba, 0x18, 0xa1, 0xc3, 0x73, 0xc8, 0xd8, 0x98, 0x71, 0x0d,
0x3f, 0xe3, 0xfc, 0x72, 0x11, 0x97, 0x97, 0x20, 0x66, 0x3c, 0x65, 0xcd, 0x10, 0x31, 0x43, 0xb1,
0x36, 0x66, 0x5c, 0x87, 0x75, 0x72, 0x7e, 0x5a, 0x66, 0x20, 0x66, 0x3c, 0x1b, 0x0a, 0x21, 0x62,
0x86, 0x40, 0xed, 0xec, 0xe4, 0x7a, 0x9b, 0x30, 0x78, 0x5c, 0xe3, 0xa9, 0x4f, 0x18, 0x75, 0x5c,
0x83, 0x60, 0x30, 0x84, 0xf6, 0xcb, 0xb8, 0xb8, 0xc0, 0x43, 0x48, 0x8a, 0xc2, 0x21, 0xa4, 0x11,
0xd8, 0xdf, 0x13, 0x16, 0x97, 0xb3, 0x0b, 0xbc, 0xbf, 0x1b, 0x59, 0xb8, 0xbf, 0x0d, 0x03, 0xfb,
0xbb, 0x11, 0xbc, 0x4c, 0xc5, 0xc5, 0x21, 0x13, 0x31, 0xde, 0xdf, 0x3e, 0x13, 0xee, 0xef, 0x16,
0x6b, 0xb3, 0x7f, 0xd7, 0xe1, 0x64, 0x79, 0x56, 0xcd, 0xca, 0xf4, 0x8c, 0x0d, 0x02, 0x56, 0x0c,
0x44, 0x64, 0xff, 0x24, 0xac, 0x7c, 0xfe, 0x64, 0x2d, 0xba, 0xa9, 0xbb, 0x9d, 0x57, 0x95, 0x5a,
0xfb, 0x7c, 0xf7, 0x1f, 0xe1, 0xfd, 0x4b, 0xe0, 0xc4, 0xe3, 0x8c, 0x1e, 0x6a, 0x4e, 0x6e, 0x80,
0x17, 0xe9, 0x34, 0xaf, 0x4c, 0xa1, 0x3e, 0xe9, 0x63, 0xdd, 0x51, 0x20, 0x72, 0x83, 0x5e, 0x8a,
0x36, 0x2d, 0x53, 0xfd, 0xa3, 0x65, 0xe3, 0xa4, 0x02, 0x69, 0x99, 0x6e, 0x6f, 0x87, 0x20, 0xd2,
0x32, 0x9c, 0x84, 0xa1, 0xb0, 0x5f, 0xf2, 0x65, 0x51, 0x75, 0x84, 0x02, 0x80, 0xc2, 0xa1, 0xd0,
0x86, 0x95, 0xcf, 0xd7, 0xd1, 0xaf, 0xbb, 0xe1, 0xe7, 0x36, 0xf6, 0x16, 0x1d, 0x53, 0x58, 0x13,
0x0f, 0xfb, 0xe2, 0x36, 0xa3, 0xd0, 0x9e, 0xc5, 0x2e, 0x13, 0x71, 0x9a, 0x55, 0x83, 0x75, 0xdc,
0x86, 0x96, 0x13, 0x19, 0x05, 0xc6, 0xc1, 0xf9, 0x6d, 0x77, 0x59, 0x64, 0xe9, 0xac, 0xfd, 0x30,
0x49, 0xe9, 0x1a, 0x71, 0x78, 0x7e, 0x73, 0x31, 0x38, 0x5f, 0xd7, 0xa9, 0x9f, 0xfc, 0xcf, 0x74,
0x55, 0x30, 0x7c, 0xbe, 0xf6, 0x90, 0xf0, 0x7c, 0x0d, 0x51, 0x58, 0x9f, 0x09, 0x13, 0x07, 0xf1,
0x8a, 0x2f, 0x89, 0xf9, 0xda, 0x88, 0xc3, 0xf5, 0x71, 0x31, 0xbb, 0x37, 0x30, 0x1e, 0xc6, 0xb9,
0x60, 0x65, 0x1e, 0x67, 0x7b, 0x59, 0x3c, 0xaf, 0x06, 0xc4, 0x1c, 0xe3, 0x53, 0xc4, 0xde, 0x80,
0xa6, 0x91, 0x66, 0x1c, 0x57, 0x7b, 0xf1, 0x15, 0x2f, 0x53, 0x41, 0x37, 0xa3, 0x45, 0x3a, 0x9b,
0xd1, 0x43, 0x51, 0x6f, 0xa3, 0x72, 0x76, 0x91, 0x5e, 0xb1, 0x24, 0xe0, 0x4d, 0x23, 0x3d, 0xbc,
0x39, 0x28, 0xd2, 0x69, 0x13, 0xbe, 0x2c, 0x67, 0x8c, 0xec, 0xb4, 0x46, 0xdc, 0xd9, 0x69, 0x06,
0x53, 0x1e, 0xfe, 0x62, 0x2d, 0xfa, 0x8d, 0x46, 0xea, 0x3e, 0xe1, 0xd9, 0x8d, 0xab, 0x8b, 0x33,
0x1e, 0x97, 0xc9, 0xe0, 0x03, 0xcc, 0x0e, 0x8a, 0x1a, 0xd7, 0x4f, 0xae, 0xa3, 0x02, 0x9b, 0xb5,
0xce, 0xbb, 0xed, 0x88, 0x43, 0x9b, 0xd5, 0x43, 0xc2, 0xcd, 0x0a, 0x51, 0x38, 0x81, 0x48, 0x79,
0x73, 0x00, 0xb8, 0x4e, 0xea, 0xfb, 0xa7, 0x80, 0x1b, 0x9d, 0x1c, 0x9c, 0x1f, 0x6b, 0xa1, 0x1f,
0x2d, 0x5b, 0x94, 0x0d, 0x3c, 0x62, 0x86, 0x7d, 0x71, 0xd2, 0xb3, 0x19, 0x15, 0x61, 0xcf, 0xad,
0x91, 0x31, 0xec, 0x8b, 0x13, 0x9e, 0x9d, 0x69, 0x2d, 0xe4, 0x19, 0x99, 0xda, 0x86, 0x7d, 0x71,
0x98, 0x7d, 0x29, 0x46, 0xaf, 0x0b, 0x0f, 0x03, 0x76, 0xe0, 0xda, 0xb0, 0xd9, 0x8b, 0x55, 0x0e,
0xff, 0x6a, 0x2d, 0xfa, 0xae, 0xf5, 0x78, 0xc8, 0x93, 0xf4, 0x7c, 0xd5, 0x40, 0x2f, 0xe2, 0x6c,
0xc9, 0xaa, 0xc1, 0x13, 0xca, 0x5a, 0x9b, 0x35, 0x25, 0x78, 0x7a, 0x2d, 0x1d, 0x38, 0x76, 0x46,
0x45, 0x91, 0xad, 0xa6, 0x6c, 0x51, 0x64, 0xe4, 0xd8, 0xf1, 0x90, 0xf0, 0xd8, 0x81, 0x28, 0xcc,
0xca, 0xa7, 0xbc, 0xce, 0xf9, 0xd1, 0xac, 0x5c, 0x8a, 0xc2, 0x59, 0xb9, 0x46, 0x60, 0xae, 0x34,
0xe5, 0x3b, 0x3c, 0xcb, 0xd8, 0x4c, 0xb4, 0x6f, 0x89, 0x18, 0x4d, 0x4b, 0x84, 0x73, 0x25, 0x40,
0xda, 0x53, 0x39, 0xbd, 0x87, 0x8c, 0x4b, 0xf6, 0x6c, 0x75, 0x90, 0xe6, 0x97, 0x03, 0x3c, 0x2d,
0xb0, 0x00, 0x71, 0x2a, 0x87, 0x82, 0x70, 0xaf, 0x7a, 0x9a, 0x27, 0x1c, 0xdf, 0xab, 0xd6, 0x92,
0xf0, 0x5e, 0x55, 0x11, 0xd0, 0xe4, 0x09, 0xa3, 0x4c, 0xd6, 0x92, 0xb0, 0x49, 0x45, 0x60, 0x53,
0xa1, 0x7a, 0x52, 0x44, 0x4e, 0x85, 0xe0, 0xd9, 0xd0, 0x46, 0x27, 0x07, 0xf7, 0x5c, 0xca, 0x01,
0x1a, 0x11, 0xc0, 0xf8, 0x9d, 0x20, 0x03, 0x43, 0x5f, 0xef, 0x86, 0xf7, 0x98, 0x98, 0x5d, 0xe0,
0xa1, 0xef, 0x21, 0xe1, 0xd0, 0x87, 0x28, 0x6c, 0xab, 0x29, 0x37, 0xbb, 0xf9, 0x75, 0x3c, 0xf0,
0x5a, 0x3b, 0xf9, 0x8d, 0x4e, 0x0e, 0xb6, 0xd5, 0x78, 0x41, 0xb7, 0x55, 0x23, 0x0b, 0xb7, 0x95,
0x61, 0x60, 0xe9, 0x1b, 0x81, 0x3c, 0x24, 0x5b, 0xa7, 0x15, 0xbd, 0x63, 0xb2, 0x8d, 0x4e, 0x4e,
0x39, 0xf9, 0x27, 0xb3, 0x3f, 0x6c, 0xa4, 0x47, 0xbc, 0x1e, 0x7c, 0x2f, 0xe2, 0x2c, 0x4d, 0x62,
0xc1, 0xa6, 0xfc, 0x92, 0xe5, 0xf8, 0x56, 0x4c, 0x95, 0xb6, 0xe1, 0x87, 0x9e, 0x42, 0x78, 0x2b,
0x16, 0x56, 0x84, 0x71, 0xd2, 0xd0, 0xa7, 0x15, 0xdb, 0x89, 0x2b, 0x62, 0x8a, 0xf4, 0x90, 0x70,
0x9c, 0x40, 0x14, 0x26, 0xc2, 0x8d, 0xfc, 0xf9, 0xeb, 0x82, 0x95, 0x29, 0xcb, 0x67, 0x0c, 0x4f,
0x84, 0x21, 0x15, 0x4e, 0x84, 0x11, 0x1a, 0x6e, 0x02, 0x77, 0x63, 0xc1, 0x9e, 0xad, 0xa6, 0xe9,
0x82, 0x55, 0x22, 0x5e, 0x14, 0xf8, 0x26, 0x10, 0x40, 0xe1, 0x4d, 0x60, 0x1b, 0x6e, 0x9d, 0x39,
0x99, 0x99, 0xb6, 0x7d, 0x6b, 0x0d, 0x12, 0x81, 0x5b, 0x6b, 0x04, 0x0a, 0x1b, 0xd6, 0x02, 0xe8,
0xd3, 0x87, 0x96, 0x95, 0xe0, 0xd3, 0x07, 0x9a, 0x6e, 0x9d, 0xe4, 0x19, 0x66, 0x52, 0x0f, 0xcd,
0x8e, 0xa2, 0x4f, 0xdc, 0x21, 0xba, 0xd9, 0x8b, 0xc5, 0x8f, 0x0e, 0x4f, 0x58, 0x16, 0xcb, 0xf5,
0x30, 0x70, 0x3e, 0xa7, 0x99, 0x3e, 0x47, 0x87, 0x0e, 0xab, 0x1c, 0xfe, 0xd9, 0x5a, 0xf4, 0x1e,
0xe6, 0xf1, 0x8b, 0x42, 0xfa, 0x7d, 0xdc, 0x6d, 0xab, 0x21, 0x89, 0x6b, 0x79, 0x61, 0x0d, 0x7b,
0xb3, 0x44, 0x8b, 0xec, 0xad, 0x3d, 0x55, 0x00, 0x3f, 0x1b, 0x34, 0xe5, 0x87, 0x1c, 0x71, 0xb3,
0x24, 0xc4, 0xdb, 0x8d, 0x96, 0x5f, 0xae, 0x0a, 0x6c, 0xb4, 0x8c, 0x0d, 0x25, 0x26, 0x36, 0x5a,
0x08, 0x66, 0x47, 0xa7, 0x5b, 0xbd, 0x97, 0xa9, 0xb8, 0x90, 0x89, 0x1c, 0x18, 0x9d, 0x5e, 0x59,
0x0d, 0x44, 0x8c, 0x4e, 0x12, 0x86, 0xa9, 0x8e, 0x06, 0xeb, 0xb1, 0x89, 0xcd, 0xe5, 0xc6, 0x90,
0x3b, 0x32, 0xef, 0x77, 0x83, 0x30, 0x5e, 0xb5, 0x58, 0xed, 0xa9, 0x1e, 0x86, 0x2c, 0x80, 0x7d,
0xd5, 0x66, 0x2f, 0x56, 0x39, 0xfc, 0x93, 0xe8, 0x3b, 0xad, 0x8a, 0xed, 0xb1, 0x58, 0x2c, 0x4b,
0x96, 0x0c, 0xb6, 0x3b, 0xca, 0xad, 0x41, 0xe3, 0xfa, 0x71, 0x7f, 0x85, 0x56, 0xf2, 0xaf, 0xb9,
0x26, 0xac, 0x4c, 0x19, 0x9e, 0x84, 0x4c, 0xfa, 0x6c, 0x30, 0xf9, 0xa7, 0x75, 0x5a, 0xfb, 0x77,
0x37, 0xba, 0x46, 0x57, 0x71, 0x9a, 0xc9, 0xa7, 0xc0, 0x1f, 0x84, 0x8c, 0x7a, 0x68, 0x70, 0xff,
0x4e, 0xaa, 0xb4, 0x66, 0x66, 0x39, 0xc6, 0x9d, 0x7d, 0xdf, 0x23, 0x7a, 0x26, 0x40, 0xb6, 0x7d,
0x5b, 0x3d, 0x69, 0xe5, 0x56, 0xe8, 0x25, 0xaf, 0xfe, 0xb3, 0x1b, 0xe4, 0x98, 0x57, 0xa5, 0x8a,
0x44, 0xfa, 0x56, 0x4f, 0x5a, 0x79, 0xfd, 0xe3, 0xe8, 0xdd, 0xb6, 0x57, 0xb5, 0x10, 0x6d, 0x77,
0x9a, 0x02, 0x6b, 0xd1, 0xe3, 0xfe, 0x0a, 0xca, 0xfd, 0xbf, 0x9a, 0x03, 0xef, 0xc6, 0xff, 0x8c,
0x2f, 0x16, 0x2c, 0x4f, 0x58, 0xa2, 0x35, 0xaa, 0x7a, 0x63, 0xf6, 0x29, 0x6d, 0xd7, 0x28, 0x0c,
0x5d, 0x0d, 0x53, 0xa2, 0xdf, 0xfc, 0x06, 0x9a, 0xaa, 0x68, 0xff, 0xb9, 0x16, 0x3d, 0x40, 0x8b,
0xa6, 0x03, 0xd7, 0x2b, 0xe2, 0xef, 0xf4, 0x71, 0x84, 0x69, 0x9a, 0xa2, 0x8e, 0x7e, 0x06, 0x0b,
0xaa, 0xc8, 0xff, 0xb6, 0x16, 0xdd, 0xb6, 0x8a, 0x75, 0x78, 0xef, 0xf0, 0xfc, 0x3c, 0x4b, 0x67,
0x42, 0x3e, 0xea, 0x55, 0x2a, 0x74, 0x73, 0x52, 0x1a, 0xdd, 0xcd, 0x19, 0xd0, 0x54, 0x65, 0xfb,
0xc7, 0xb5, 0xe8, 0x96, 0xdb, 0x9c, 0xf2, 0x39, 0x71, 0x73, 0xec, 0xaa, 0x15, 0xab, 0xc1, 0xc7,
0x74, 0x1b, 0x60, 0xbc, 0x29, 0xd7, 0x27, 0xd7, 0xd6, 0xb3, 0x7b, 0xf5, 0xcf, 0xd2, 0x4a, 0xf0,
0x72, 0x35, 0xb9, 0xe0, 0xaf, 0xf4, 0xdb, 0x58, 0xfe, 0x6a, 0xa1, 0x80, 0xa1, 0x43, 0x10, 0x7b,
0x75, 0x9c, 0x6c, 0xb9, 0xb2, 0x6f, 0x6d, 0x55, 0x84, 0x2b, 0x87, 0xe8, 0x70, 0xe5, 0x93, 0x76,
0xad, 0xd4, 0xb5, 0xb2, 0xaf, 0x98, 0x6d, 0xe0, 0x45, 0x6d, 0xbf, 0x66, 0x76, 0xbf, 0x1b, 0xb4,
0x19, 0xb3, 0x12, 0xef, 0xa6, 0xe7, 0xe7, 0xa6, 0x4e, 0x78, 0x49, 0x5d, 0x84, 0xc8, 0x98, 0x09,
0xd4, 0x6e, 0xfa, 0xf6, 0xd2, 0x8c, 0xc9, 0x47, 0x55, 0x5f, 0x9c, 0x9f, 0x67, 0x3c, 0x4e, 0xc0,
0xa6, 0xaf, 0x16, 0x0f, 0x5d, 0x39, 0xb1, 0xe9, 0xc3, 0x38, 0x7b, 0x09, 0xa6, 0x96, 0xd6, 0x63,
0x2e, 0x9f, 0xa5, 0x19, 0xbc, 0xcc, 0x2d, 0x35, 0x8d, 0x90, 0xb8, 0x04, 0xd3, 0x82, 0x6c, 0x62,
0x56, 0x8b, 0xea, 0xb1, 0xa2, 0xcb, 0x7f, 0xaf, 0xad, 0xe8, 0x88, 0x89, 0xc4, 0x0c, 0xc1, 0xec,
0xa1, 0x4a, 0x2d, 0x3c, 0x2d, 0xa4, 0xf1, 0x5b, 0x6d, 0xad, 0x46, 0x42, 0x1c, 0xaa, 0xf8, 0x84,
0xdd, 0xc3, 0xd7, 0x7f, 0xdf, 0xe5, 0xaf, 0x72, 0x69, 0xf4, 0x76, 0x5b, 0x45, 0xcb, 0x88, 0x3d,
0x3c, 0x64, 0x94, 0xe1, 0xcf, 0xa3, 0x9f, 0x97, 0x86, 0x4b, 0x5e, 0x0c, 0x6e, 0x20, 0x0a, 0xa5,
0x73, 0xf5, 0xf9, 0x26, 0x29, 0xb7, 0x77, 0x66, 0x4c, 0x6c, 0x9c, 0x56, 0xf1, 0x1c, 0xbe, 0xaf,
0x60, 0x7b, 0x5c, 0x4a, 0x89, 0x3b, 0x33, 0x6d, 0xca, 0x8f, 0x8a, 0x23, 0x9e, 0x28, 0xeb, 0x48,
0x0d, 0x8d, 0x30, 0x14, 0x15, 0x2e, 0x64, 0x93, 0xe9, 0xa3, 0xf8, 0x2a, 0x9d, 0x9b, 0x84, 0xa7,
0x99, 0xbe, 0x2a, 0x90, 0x4c, 0x5b, 0x66, 0xe8, 0x40, 0x44, 0x32, 0x4d, 0xc2, 0xce, 0x64, 0x6c,
0x99, 0x7d, 0x7d, 0x0c, 0x3d, 0xce, 0xcf, 0x79, 0x9d, 0x7a, 0x1f, 0xa4, 0xf9, 0x25, 0x9c, 0x8c,
0x1d, 0x93, 0x38, 0x4f, 0x4c, 0xc6, 0x7d, 0xf4, 0xec, 0xae, 0x49, 0x9f, 0xd1, 0xda, 0x8b, 0x1a,
0x8d, 0x06, 0xd8, 0x35, 0x99, 0xa3, 0x5c, 0xc8, 0x11, 0xbb, 0xa6, 0x10, 0x6f, 0xbb, 0xd8, 0x38,
0xcf, 0x78, 0x0e, 0xbb, 0xd8, 0x5a, 0xa8, 0x85, 0x44, 0x17, 0xb7, 0x20, 0x3b, 0x1f, 0x6b, 0x51,
0x73, 0xea, 0x37, 0xca, 0x32, 0x30, 0x1f, 0x1b, 0x55, 0x03, 0x10, 0xf3, 0x31, 0x0a, 0x2a, 0x3f,
0x27, 0xd1, 0xb7, 0xea, 0x26, 0x3d, 0x2e, 0xd9, 0x55, 0xca, 0xe0, 0x9d, 0x22, 0x47, 0x42, 0x8c,
0x7f, 0x9f, 0xb0, 0x23, 0xeb, 0x34, 0xaf, 0x8a, 0x2c, 0xae, 0x2e, 0xd4, 0x2d, 0x13, 0xbf, 0xce,
0x5a, 0x08, 0xef, 0x99, 0xdc, 0xeb, 0xa0, 0xec, 0xa4, 0xae, 0x65, 0x66, 0x8a, 0x59, 0xc7, 0x55,
0x5b, 0xd3, 0xcc, 0x46, 0x27, 0x67, 0x1f, 0xe5, 0xec, 0xc7, 0x59, 0xc6, 0xca, 0x95, 0x96, 0x1d,
0xc6, 0x79, 0x7a, 0xce, 0x2a, 0x01, 0x1e, 0xe5, 0x28, 0x6a, 0x08, 0x31, 0xe2, 0x51, 0x4e, 0x00,
0xb7, 0xbb, 0x49, 0xe0, 0x79, 0x9c, 0x27, 0xec, 0x35, 0xd8, 0x4d, 0x42, 0x3b, 0x92, 0x21, 0x76,
0x93, 0x14, 0x6b, 0x1f, 0x69, 0x3c, 0xcb, 0xf8, 0xec, 0x52, 0x2d, 0x01, 0x7e, 0x07, 0x4b, 0x09,
0x5c, 0x03, 0x6e, 0x87, 0x10, 0xbb, 0x08, 0x48, 0xc1, 0x09, 0x2b, 0xb2, 0x78, 0x06, 0x2f, 0x96,
0x35, 0x3a, 0x4a, 0x46, 0x2c, 0x02, 0x90, 0x01, 0xc5, 0x55, 0x17, 0xd6, 0xb0, 0xe2, 0x82, 0xfb,
0x6a, 0xb7, 0x43, 0x88, 0x5d, 0x06, 0xa5, 0x60, 0x52, 0x64, 0xa9, 0x00, 0xc3, 0xa0, 0xd1, 0x90,
0x12, 0x62, 0x18, 0xf8, 0x04, 0x30, 0x79, 0xc8, 0xca, 0x39, 0x43, 0x4d, 0x4a, 0x49, 0xd0, 0xa4,
0x26, 0xec, 0x2d, 0xfa, 0xa6, 0xee, 0xbc, 0x58, 0x81, 0x5b, 0xf4, 0xaa, 0x5a, 0xbc, 0x58, 0x11,
0xb7, 0xe8, 0x3d, 0x00, 0x14, 0xf1, 0x38, 0xae, 0x04, 0x5e, 0x44, 0x29, 0x09, 0x16, 0x51, 0x13,
0x76, 0x8d, 0x6e, 0x8a, 0xb8, 0x14, 0x60, 0x8d, 0x56, 0x05, 0x70, 0xae, 0x56, 0xdc, 0x24, 0xe5,
0x76, 0x26, 0x69, 0x7a, 0x85, 0x89, 0xbd, 0x94, 0x65, 0x49, 0x05, 0x66, 0x12, 0xd5, 0xee, 0x5a,
0x4a, 0xcc, 0x24, 0x6d, 0x0a, 0x84, 0x92, 0x7a, 0x2e, 0x83, 0xd5, 0x0e, 0x3c, 0x96, 0xb9, 0x1d,
0x42, 0xec, 0xfc, 0xa4, 0x0b, 0xbd, 0x13, 0x97, 0x65, 0x5a, 0x2f, 0xfe, 0xeb, 0x78, 0x81, 0xb4,
0x9c, 0x98, 0x9f, 0x30, 0x0e, 0x0c, 0x2f, 0x3d, 0x71, 0x63, 0x05, 0x83, 0x53, 0xf7, 0x9d, 0x20,
0x63, 0x33, 0x4e, 0x29, 0x71, 0xee, 0x06, 0x60, 0xad, 0x89, 0x5c, 0x0d, 0x58, 0xef, 0xc2, 0x9c,
0x17, 0xfa, 0x8c, 0x8b, 0x43, 0x7e, 0xc5, 0xa6, 0xfc, 0xf9, 0xeb, 0xb4, 0xaa, 0x37, 0x81, 0x6a,
0xe5, 0x7e, 0x4a, 0x58, 0xc2, 0x60, 0xe2, 0x85, 0xbe, 0x4e, 0x25, 0x9b, 0x40, 0x80, 0xb2, 0x1c,
0xb1, 0x57, 0x68, 0x02, 0x01, 0x2d, 0x1a, 0x8e, 0x48, 0x20, 0x42, 0xbc, 0x3d, 0xc7, 0x33, 0xce,
0xd5, 0x57, 0x1c, 0xa6, 0x5c, 0xe7, 0x72, 0x94, 0x35, 0x08, 0x12, 0x47, 0x29, 0x41, 0x05, 0xbb,
0xbf, 0x34, 0xfe, 0xed, 0x10, 0xbb, 0x4f, 0xd8, 0x69, 0x0f, 0xb3, 0x07, 0x3d, 0x48, 0xc4, 0x95,
0xbd, 0xe0, 0x42, 0xb9, 0x6a, 0xdf, 0x6f, 0x79, 0xd0, 0x83, 0x74, 0xce, 0x04, 0xdd, 0x6a, 0x3d,
0x8b, 0x67, 0x97, 0xf3, 0x92, 0x2f, 0xf3, 0x64, 0x87, 0x67, 0xbc, 0x04, 0x67, 0x82, 0x5e, 0xa9,
0x01, 0x4a, 0x9c, 0x09, 0x76, 0xa8, 0xd8, 0x0c, 0xce, 0x2d, 0xc5, 0x28, 0x4b, 0xe7, 0x70, 0x47,
0xed, 0x19, 0x92, 0x00, 0x91, 0xc1, 0xa1, 0x20, 0x12, 0x44, 0xcd, 0x8e, 0x5b, 0xa4, 0xb3, 0x38,
0x6b, 0xfc, 0x6d, 0xd3, 0x66, 0x3c, 0xb0, 0x33, 0x88, 0x10, 0x05, 0xa4, 0x9e, 0xd3, 0x65, 0x99,
0x8f, 0x73, 0xc1, 0xc9, 0x7a, 0x6a, 0xa0, 0xb3, 0x9e, 0x0e, 0x08, 0xa6, 0xd5, 0x29, 0x7b, 0x5d,
0x97, 0xa6, 0xfe, 0x07, 0x9b, 0x56, 0xeb, 0xbf, 0x0f, 0x95, 0x3c, 0x34, 0xad, 0x02, 0x0e, 0x54,
0x46, 0x39, 0x69, 0x02, 0x26, 0xa0, 0xed, 0x87, 0xc9, 0xfd, 0x6e, 0x10, 0xf7, 0x33, 0x11, 0xab,
0x8c, 0x85, 0xfc, 0x48, 0xa0, 0x8f, 0x1f, 0x0d, 0xda, 0xe3, 0x16, 0xaf, 0x3e, 0x17, 0x6c, 0x76,
0xd9, 0xba, 0xaf, 0xe7, 0x17, 0xb4, 0x41, 0x88, 0xe3, 0x16, 0x02, 0xc5, 0xbb, 0x68, 0x3c, 0xe3,
0x79, 0xa8, 0x8b, 0x6a, 0x79, 0x9f, 0x2e, 0x52, 0x9c, 0xdd, 0xfc, 0x1a, 0xa9, 0x8a, 0xcc, 0xa6,
0x9b, 0x36, 0x09, 0x0b, 0x2e, 0x44, 0x6c, 0x7e, 0x49, 0xd8, 0xe6, 0xe4, 0xd0, 0xe7, 0x61, 0xfb,
0x65, 0x86, 0x96, 0x95, 0x43, 0xfa, 0x65, 0x06, 0x8a, 0xa5, 0x2b, 0xd9, 0xc4, 0x48, 0x87, 0x15,
0x3f, 0x4e, 0x1e, 0xf5, 0x83, 0xed, 0x96, 0xc7, 0xf3, 0xb9, 0x93, 0xb1, 0xb8, 0x6c, 0xbc, 0x6e,
0x05, 0x0c, 0x59, 0x8c, 0xd8, 0xf2, 0x04, 0x70, 0x30, 0x85, 0x79, 0x9e, 0x77, 0x78, 0x2e, 0x58,
0x2e, 0xb0, 0x29, 0xcc, 0x37, 0xa6, 0xc0, 0xd0, 0x14, 0x46, 0x29, 0x80, 0xb8, 0x95, 0xe7, 0x41,
0x4c, 0x1c, 0xc5, 0x0b, 0x34, 0x63, 0x6b, 0xce, 0x7a, 0x1a, 0x79, 0x28, 0x6e, 0x01, 0xe7, 0x3c,
0x64, 0x76, 0xbd, 0x4c, 0xe3, 0x72, 0x6e, 0x4e, 0x37, 0x92, 0xc1, 0x63, 0xda, 0x8e, 0x4f, 0x12,
0x0f, 0x99, 0xc3, 0x1a, 0x60, 0xda, 0x19, 0x2f, 0xe2, 0xb9, 0xa9, 0x29, 0x52, 0x03, 0x29, 0x6f,
0x55, 0xf5, 0x7e, 0x37, 0x08, 0xfc, 0xbc, 0x48, 0x13, 0xc6, 0x03, 0x7e, 0xa4, 0xbc, 0x8f, 0x1f,
0x08, 0x82, 0xec, 0xad, 0xae, 0x77, 0xb3, 0xa3, 0x1b, 0xe5, 0x89, 0xda, 0xc7, 0x0e, 0x89, 0xe6,
0x01, 0x5c, 0x28, 0x7b, 0x23, 0x78, 0x30, 0x46, 0xf5, 0x01, 0x6d, 0x68, 0x8c, 0x9a, 0xf3, 0xd7,
0x3e, 0x63, 0x14, 0x83, 0x95, 0xcf, 0x1f, 0xab, 0x31, 0xba, 0x1b, 0x8b, 0xb8, 0xce, 0xdb, 0x5f,
0xa4, 0xec, 0x95, 0xda, 0x08, 0x23, 0xf5, 0xd5, 0xd4, 0x50, 0xbe, 0x8b, 0x0d, 0x76, 0xc5, 0xdb,
0xbd, 0xf9, 0x80, 0x6f, 0xb5, 0x43, 0xe8, 0xf4, 0x0d, 0xb6, 0x0a, 0xdb, 0xbd, 0xf9, 0x80, 0x6f,
0xf5, 0x49, 0x89, 0x4e, 0xdf, 0xe0, 0xbb, 0x12, 0xdb, 0xbd, 0x79, 0xe5, 0xfb, 0xcf, 0xf5, 0xc0,
0x75, 0x9d, 0xd7, 0x79, 0xd8, 0x4c, 0xa4, 0x57, 0x0c, 0x4b, 0x27, 0x7d, 0x7b, 0x06, 0x0d, 0xa5,
0x93, 0xb4, 0x8a, 0xf3, 0x51, 0x37, 0xac, 0x14, 0xc7, 0xbc, 0x4a, 0xe5, 0x25, 0x91, 0xa7, 0x3d,
0x8c, 0x6a, 0x38, 0xb4, 0x69, 0x0a, 0x29, 0xd9, 0xc7, 0xdd, 0x1e, 0x6a, 0xaf, 0xe7, 0x3f, 0x0a,
0xd8, 0x6b, 0xdf, 0xd2, 0xdf, 0xea, 0x49, 0xdb, 0x07, 0xcf, 0x1e, 0xa3, 0x1f, 0x19, 0x4e, 0x18,
0xba, 0x4a, 0x18, 0x53, 0xe6, 0x51, 0xb2, 0xfb, 0xec, 0xf4, 0x71, 0x7f, 0x85, 0x0e, 0xf7, 0xa3,
0x24, 0xe9, 0xe7, 0xde, 0x7d, 0xe6, 0xfe, 0xb8, 0xbf, 0x82, 0x72, 0xff, 0x97, 0x7a, 0x5b, 0x03,
0xfd, 0xab, 0x31, 0xf8, 0xa4, 0x8f, 0x45, 0x30, 0x0e, 0x9f, 0x5e, 0x4b, 0x47, 0x15, 0xe4, 0x6f,
0xf5, 0xfe, 0x5d, 0xa3, 0xf2, 0x1d, 0x29, 0xf9, 0x6e, 0xb5, 0x1a, 0x92, 0xa1, 0xa8, 0xb2, 0x30,
0x1c, 0x98, 0x1f, 0x5d, 0x53, 0xcb, 0xf9, 0xc2, 0xa0, 0x07, 0xab, 0x77, 0x79, 0x9d, 0xf2, 0x84,
0x2c, 0x3b, 0x34, 0x2c, 0xd0, 0xc7, 0xd7, 0x55, 0xa3, 0x86, 0xaa, 0x03, 0xcb, 0x6f, 0xec, 0x3c,
0xed, 0x69, 0xd8, 0xfb, 0xea, 0xce, 0x87, 0xd7, 0x53, 0x52, 0x65, 0xf9, 0x8f, 0xb5, 0xe8, 0x9e,
0xc7, 0xda, 0xc7, 0x19, 0xe0, 0xd0, 0xe5, 0x07, 0x01, 0xfb, 0x94, 0x92, 0x29, 0xdc, 0x6f, 0x7d,
0x33, 0x65, 0xfb, 0x39, 0x3e, 0x4f, 0x65, 0x2f, 0xcd, 0x04, 0x2b, 0xdb, 0x9f, 0xe3, 0xf3, 0xed,
0x36, 0xd4, 0x90, 0xfe, 0x1c, 0x5f, 0x00, 0x77, 0x3e, 0xc7, 0x87, 0x78, 0x46, 0x3f, 0xc7, 0x87,
0x5a, 0x0b, 0x7e, 0x8e, 0x2f, 0xac, 0x41, 0xad, 0x2e, 0xba, 0x08, 0xcd, 0xb1, 0x79, 0x2f, 0x8b,
0xfe, 0x29, 0xfa, 0x93, 0xeb, 0xa8, 0x10, 0xeb, 0x6b, 0xc3, 0xc9, 0x6b, 0x9e, 0x3d, 0xda, 0xd4,
0xbb, 0xea, 0xb9, 0xdd, 0x9b, 0x57, 0xbe, 0x7f, 0xa4, 0x36, 0x57, 0x66, 0x35, 0xe1, 0xa5, 0xfc,
0x14, 0xe3, 0x66, 0x68, 0x75, 0xa8, 0x2d, 0xb8, 0x3d, 0xff, 0xa8, 0x1f, 0x4c, 0x54, 0xb7, 0x26,
0x54, 0xa7, 0x0f, 0xbb, 0x0c, 0x81, 0x2e, 0xdf, 0xee, 0xcd, 0x13, 0xcb, 0x48, 0xe3, 0xbb, 0xe9,
0xed, 0x1e, 0xc6, 0xfc, 0xbe, 0x7e, 0xdc, 0x5f, 0x41, 0xb9, 0xbf, 0x52, 0x59, 0xab, 0xeb, 0x5e,
0xf6, 0xf3, 0x56, 0x97, 0xa9, 0x89, 0xd7, 0xcd, 0xc3, 0xbe, 0x78, 0x28, 0x7f, 0x71, 0x97, 0xd0,
0xae, 0xfc, 0x05, 0x5d, 0x46, 0x3f, 0xbc, 0x9e, 0x92, 0x2a, 0xcb, 0x3f, 0xac, 0x45, 0x37, 0xc9,
0xb2, 0xa8, 0x38, 0xf8, 0xb8, 0xaf, 0x65, 0x10, 0x0f, 0x9f, 0x5c, 0x5b, 0x4f, 0x15, 0xea, 0x9f,
0xd7, 0xa2, 0x5b, 0x81, 0x42, 0x35, 0x01, 0x72, 0x0d, 0xeb, 0x7e, 0xa0, 0x7c, 0x7a, 0x7d, 0x45,
0x6a, 0xb9, 0x77, 0xf1, 0x49, 0xfb, 0xd3, 0x6a, 0x01, 0xdb, 0x13, 0xfa, 0xd3, 0x6a, 0xdd, 0x5a,
0xf0, 0x8c, 0x29, 0x3e, 0xd3, 0x7b, 0x3e, 0xf4, 0x8c, 0x49, 0x5e, 0xd0, 0x0c, 0x7e, 0xb4, 0x05,
0xe3, 0x30, 0x27, 0xcf, 0x5f, 0x17, 0x71, 0x9e, 0xd0, 0x4e, 0x1a, 0x79, 0xb7, 0x13, 0xc3, 0xc1,
0xb3, 0xb9, 0x5a, 0x7a, 0xc2, 0xf5, 0x3e, 0xee, 0x01, 0xa5, 0x6f, 0x90, 0xe0, 0xd9, 0x5c, 0x0b,
0x25, 0xbc, 0xa9, 0xac, 0x31, 0xe4, 0x0d, 0x24, 0x8b, 0x0f, 0xfb, 0xa0, 0x60, 0x87, 0x60, 0xbc,
0x99, 0x23, 0xff, 0x47, 0x21, 0x2b, 0xad, 0x63, 0xff, 0xad, 0x9e, 0x34, 0xe1, 0x76, 0xc2, 0xc4,
0x67, 0x2c, 0x4e, 0x58, 0x19, 0x74, 0x6b, 0xa8, 0x5e, 0x6e, 0x5d, 0x1a, 0x73, 0xbb, 0xc3, 0xb3,
0xe5, 0x22, 0x57, 0x9d, 0x49, 0xba, 0x75, 0xa9, 0x6e, 0xb7, 0x80, 0x86, 0xa7, 0x92, 0xd6, 0xad,
0x4c, 0x2f, 0x1f, 0x86, 0xcd, 0x78, 0x59, 0xe5, 0x66, 0x2f, 0x96, 0xae, 0xa7, 0x0a, 0xa3, 0x8e,
0x7a, 0x82, 0x48, 0xda, 0xea, 0x49, 0xc3, 0xe3, 0x41, 0xc7, 0xad, 0x89, 0xa7, 0xed, 0x0e, 0x5b,
0xad, 0x90, 0x7a, 0xdc, 0x5f, 0x01, 0x1e, 0xc6, 0xaa, 0xa8, 0x3a, 0x48, 0x2b, 0xb1, 0x97, 0x66,
0xd9, 0x60, 0x33, 0x10, 0x26, 0x1a, 0x0a, 0x1e, 0xc6, 0x22, 0x30, 0x11, 0xc9, 0xfa, 0xf0, 0x32,
0x1f, 0x74, 0xd9, 0x91, 0x54, 0xaf, 0x48, 0x76, 0x69, 0x70, 0xa0, 0xe6, 0x34, 0xb5, 0xa9, 0xed,
0x30, 0xdc, 0x70, 0xad, 0x0a, 0x6f, 0xf7, 0xe6, 0xc1, 0xd3, 0x7e, 0x49, 0xc9, 0x95, 0xe5, 0x2e,
0x65, 0xc2, 0x5b, 0x49, 0xee, 0x75, 0x50, 0xe0, 0x50, 0xb2, 0x19, 0x46, 0x2f, 0xd3, 0x64, 0xce,
0x04, 0xfa, 0xa0, 0xca, 0x05, 0x82, 0x0f, 0xaa, 0x00, 0x08, 0xba, 0xae, 0xf9, 0xbb, 0x39, 0x8d,
0x1d, 0x27, 0x58, 0xd7, 0x29, 0x65, 0x87, 0x0a, 0x75, 0x1d, 0x4a, 0x83, 0xd9, 0xc0, 0xb8, 0x55,
0x9f, 0xb9, 0x78, 0x18, 0x32, 0x03, 0xbe, 0x75, 0xb1, 0xd9, 0x8b, 0x05, 0x2b, 0x8a, 0x75, 0x98,
0x2e, 0x52, 0x81, 0xad, 0x28, 0x8e, 0x8d, 0x1a, 0x09, 0xad, 0x28, 0x6d, 0x94, 0xaa, 0x5e, 0x9d,
0x23, 0x8c, 0x93, 0x70, 0xf5, 0x1a, 0xa6, 0x5f, 0xf5, 0x0c, 0xdb, 0x7a, 0xae, 0x9a, 0x9b, 0x90,
0x11, 0x17, 0x6a, 0xb3, 0x8c, 0xc4, 0xb6, 0x7c, 0xfd, 0x19, 0x82, 0xa1, 0x59, 0x87, 0x52, 0x80,
0xcf, 0x0b, 0x6a, 0x4e, 0x3f, 0xfa, 0x2d, 0x0a, 0x16, 0x97, 0x71, 0x3e, 0x43, 0x37, 0xa7, 0xd2,
0x60, 0x8b, 0x0c, 0x6d, 0x4e, 0x49, 0x0d, 0xf0, 0xd4, 0xde, 0x7f, 0xbf, 0x18, 0x19, 0x0a, 0xe6,
0x45, 0x5e, 0xff, 0xf5, 0xe2, 0x07, 0x3d, 0x48, 0xf8, 0xd4, 0x5e, 0x03, 0xe6, 0xdc, 0xbd, 0x71,
0xfa, 0x41, 0xc0, 0x94, 0x8f, 0x86, 0x36, 0xc2, 0xb4, 0x0a, 0x08, 0x6a, 0xe7, 0x6c, 0xf1, 0x73,
0xb6, 0xc2, 0x82, 0xda, 0x3d, 0x24, 0xfc, 0x9c, 0xad, 0x42, 0x41, 0xdd, 0x46, 0x41, 0x9e, 0xe9,
0xee, 0x83, 0xd6, 0x03, 0xfa, 0xee, 0xd6, 0x67, 0xa3, 0x93, 0x03, 0x23, 0x67, 0x37, 0xbd, 0xf2,
0x1e, 0x53, 0x20, 0x05, 0xdd, 0x4d, 0xaf, 0xf0, 0xa7, 0x14, 0x9b, 0xbd, 0x58, 0x78, 0x23, 0x20,
0x16, 0xec, 0xb5, 0x7e, 0x54, 0x8f, 0x14, 0x57, 0xca, 0x5b, 0xcf, 0xea, 0xef, 0x77, 0x83, 0xf6,
0xfe, 0xed, 0x71, 0xc9, 0x67, 0xac, 0xaa, 0xd4, 0x17, 0x60, 0xfd, 0x0b, 0x4e, 0x4a, 0x36, 0x04,
0xdf, 0x7f, 0xbd, 0x1b, 0x86, 0x9c, 0xcf, 0x36, 0x36, 0x22, 0xfb, 0x35, 0xa9, 0x75, 0x54, 0xb3,
0xfd, 0x21, 0xa9, 0x8d, 0x4e, 0xce, 0x0e, 0x2f, 0x25, 0x75, 0x3f, 0x1f, 0x75, 0x1f, 0x55, 0xc7,
0xbe, 0x1c, 0xf5, 0xa0, 0x07, 0xa9, 0x5c, 0x7d, 0x16, 0xbd, 0x79, 0xc0, 0xe7, 0x13, 0x96, 0x27,
0x83, 0xef, 0xf9, 0x37, 0x78, 0xf9, 0x7c, 0x58, 0xff, 0xd9, 0x18, 0xbd, 0x41, 0x89, 0xed, 0x1d,
0xc4, 0x5d, 0x76, 0xb6, 0x9c, 0x4f, 0x44, 0x2c, 0xc0, 0x1d, 0x44, 0xf9, 0xf7, 0x61, 0x2d, 0x20,
0xee, 0x20, 0x7a, 0x00, 0xb0, 0x37, 0x2d, 0x19, 0x43, 0xed, 0xd5, 0x82, 0xa0, 0x3d, 0x05, 0xd8,
0x2c, 0xc2, 0xd8, 0xab, 0x13, 0x75, 0x78, 0x67, 0xd0, 0xea, 0x48, 0x29, 0x91, 0x45, 0xb4, 0x29,
0x1b, 0xdc, 0x4d, 0xf5, 0xe5, 0xd7, 0x7c, 0x96, 0x8b, 0x45, 0x5c, 0xae, 0x40, 0x70, 0xab, 0x5a,
0x3a, 0x00, 0x11, 0xdc, 0x28, 0x68, 0x47, 0xad, 0x6e, 0xe6, 0xd9, 0xe5, 0x3e, 0x2f, 0xf9, 0x52,
0xa4, 0x39, 0x83, 0x5f, 0x74, 0x31, 0x0d, 0xea, 0x32, 0xc4, 0xa8, 0xa5, 0x58, 0x9b, 0xe5, 0x4a,
0xa2, 0xb9, 0xce, 0x28, 0x3f, 0x81, 0x5f, 0x09, 0x5e, 0xc2, 0xc7, 0x99, 0x8d, 0x15, 0x08, 0x11,
0x59, 0x2e, 0x09, 0x83, 0xbe, 0x3f, 0x4e, 0xf3, 0x39, 0xda, 0xf7, 0xc7, 0xee, 0x57, 0x95, 0x6f,
0xd1, 0x80, 0x1d, 0x50, 0x4d, 0xa3, 0x35, 0x03, 0x40, 0xbd, 0xca, 0x8c, 0x36, 0xba, 0x4b, 0x10,
0x03, 0x0a, 0x27, 0x81, 0xab, 0x2f, 0x0a, 0x96, 0xb3, 0x44, 0x5f, 0xda, 0xc3, 0x5c, 0x79, 0x44,
0xd0, 0x15, 0x24, 0xed, 0x5c, 0x24, 0xe5, 0x27, 0xcb, 0xfc, 0xb8, 0xe4, 0xe7, 0x69, 0xc6, 0x4a,
0x30, 0x17, 0x35, 0xea, 0x8e, 0x9c, 0x98, 0x8b, 0x30, 0xce, 0xde, 0xfe, 0x90, 0x52, 0xef, 0x77,
0x1c, 0xa6, 0x65, 0x3c, 0x83, 0xb7, 0x3f, 0x1a, 0x1b, 0x6d, 0x8c, 0x38, 0x19, 0x0c, 0xe0, 0x4e,
0xa2, 0xd3, 0xb8, 0xce, 0x57, 0x32, 0x3e, 0xd4, 0xab, 0xb4, 0xf2, 0x5b, 0xc3, 0x15, 0x48, 0x74,
0x94, 0x39, 0x8c, 0x24, 0x12, 0x9d, 0xb0, 0x86, 0x5d, 0x4a, 0x24, 0x77, 0xa4, 0x6e, 0x35, 0x81,
0xa5, 0xa4, 0xb1, 0xa1, 0x85, 0xc4, 0x52, 0xd2, 0x82, 0xc0, 0x84, 0xa4, 0x87, 0xc1, 0x1c, 0x9d,
0x90, 0x8c, 0x34, 0x38, 0x21, 0xb9, 0x94, 0x9d, 0x28, 0xc6, 0x79, 0x2a, 0xd2, 0x38, 0x9b, 0x30,
0x71, 0x1c, 0x97, 0xf1, 0x82, 0x09, 0x56, 0xc2, 0x89, 0x42, 0x21, 0x43, 0x8f, 0x21, 0x26, 0x0a,
0x8a, 0x55, 0x0e, 0x7f, 0x3b, 0x7a, 0xbb, 0x5e, 0xf7, 0x59, 0xae, 0x7e, 0x81, 0xea, 0xb9, 0xfc,
0xe9, 0xba, 0xc1, 0x3b, 0xc6, 0xc6, 0x44, 0x94, 0x2c, 0x5e, 0x68, 0xdb, 0x6f, 0x99, 0xbf, 0x4b,
0xf0, 0xf1, 0x5a, 0x1d, 0xcf, 0x47, 0x5c, 0xa4, 0xe7, 0xf5, 0x36, 0x5b, 0xbd, 0xc0, 0x04, 0xe2,
0xd9, 0x15, 0x0f, 0x03, 0x9f, 0x62, 0xc1, 0x38, 0x3b, 0x4f, 0xbb, 0xd2, 0x13, 0x56, 0x64, 0x70,
0x9e, 0xf6, 0xb4, 0x25, 0x40, 0xcc, 0xd3, 0x28, 0x68, 0x07, 0xa7, 0x2b, 0x9e, 0xb2, 0x70, 0x65,
0xa6, 0xac, 0x5f, 0x65, 0xa6, 0xde, 0x3b, 0x21, 0x59, 0xf4, 0xf6, 0x21, 0x5b, 0x9c, 0xb1, 0xb2,
0xba, 0x48, 0x0b, 0xea, 0x7b, 0xc8, 0x96, 0xe8, 0xfc, 0x1e, 0x32, 0x81, 0xda, 0x95, 0xc0, 0x02,
0xe3, 0xea, 0x28, 0x5e, 0x30, 0xf9, 0x61, 0x19, 0xb0, 0x12, 0x38, 0x46, 0x1c, 0x88, 0x58, 0x09,
0x48, 0xd8, 0x79, 0xbd, 0xcc, 0x32, 0x27, 0x6c, 0x5e, 0x47, 0x58, 0x79, 0x1c, 0xaf, 0x16, 0x2c,
0x17, 0xca, 0x24, 0x38, 0x93, 0x77, 0x4c, 0xe2, 0x3c, 0x71, 0x26, 0xdf, 0x47, 0xcf, 0x99, 0x9a,
0xbc, 0x86, 0x3f, 0xe6, 0xa5, 0x68, 0x7e, 0x5f, 0xee, 0xb4, 0xcc, 0xc0, 0xd4, 0xe4, 0x37, 0xaa,
0x47, 0x12, 0x53, 0x53, 0x58, 0xc3, 0xf9, 0x2d, 0x11, 0xaf, 0x0c, 0x2f, 0x58, 0x69, 0xe2, 0xe4,
0xf9, 0x22, 0x4e, 0x33, 0x15, 0x0d, 0xdf, 0x0f, 0xd8, 0x26, 0x74, 0x88, 0xdf, 0x12, 0xe9, 0xab,
0xeb, 0xfc, 0xfa, 0x4a, 0xb8, 0x84, 0xe0, 0x11, 0x41, 0x87, 0x7d, 0xe2, 0x11, 0x41, 0xb7, 0x96,
0xdd, 0xb9, 0x5b, 0x56, 0x72, 0x2b, 0x49, 0xec, 0xf0, 0x04, 0x9e, 0x17, 0x3a, 0x36, 0x01, 0x48,
0xec, 0xdc, 0x83, 0x0a, 0x36, 0x35, 0xb0, 0xd8, 0x5e, 0x9a, 0xc7, 0x59, 0xfa, 0x63, 0x98, 0xd6,
0x3b, 0x76, 0x34, 0x41, 0xa4, 0x06, 0x38, 0x89, 0xb9, 0xda, 0x67, 0x62, 0x9a, 0xd6, 0x53, 0xff,
0xfd, 0x40, 0xbb, 0x49, 0xa2, 0xdb, 0x95, 0x43, 0x3a, 0xdf, 0x3e, 0x86, 0xcd, 0x3a, 0x2a, 0x8a,
0x49, 0xbd, 0xaa, 0x9e, 0xb0, 0x19, 0x4b, 0x0b, 0x31, 0xf8, 0x28, 0xdc, 0x56, 0x00, 0x27, 0x2e,
0x5a, 0xf4, 0x50, 0x73, 0x1e, 0xdf, 0xd7, 0x73, 0xc9, 0xa4, 0xf9, 0xe1, 0xd5, 0xd3, 0x8a, 0x95,
0x2a, 0xd1, 0xd8, 0x67, 0x02, 0x8c, 0x4e, 0x87, 0x1b, 0x3a, 0x60, 0x5d, 0x51, 0x62, 0x74, 0x86,
0x35, 0xec, 0x61, 0x9f, 0xc3, 0xa9, 0x6f, 0x07, 0xc8, 0xeb, 0x8e, 0x8f, 0x48, 0x63, 0x0e, 0x45,
0x1c, 0xf6, 0xd1, 0xb4, 0xcd, 0xd6, 0xda, 0x6e, 0x47, 0xf9, 0x6a, 0x0c, 0xaf, 0x4c, 0x20, 0x96,
0x24, 0x46, 0x64, 0x6b, 0x01, 0xdc, 0x39, 0x0c, 0x2f, 0x79, 0x9c, 0xcc, 0xe2, 0x4a, 0x1c, 0xc7,
0xab, 0x8c, 0xc7, 0x89, 0x5c, 0xd7, 0xe1, 0x61, 0xb8, 0x66, 0x86, 0x2e, 0x44, 0x1d, 0x86, 0x53,
0xb0, 0x9b, 0x9d, 0xc9, 0xdf, 0x93, 0x55, 0x57, 0x49, 0x61, 0x76, 0x26, 0xcb, 0x0b, 0xaf, 0x91,
0xde, 0x0d, 0x43, 0xf6, 0x15, 0xb8, 0x46, 0x24, 0xd3, 0x90, 0x5b, 0x98, 0x8e, 0x97, 0x80, 0xbc,
0x1f, 0x20, 0xec, 0x67, 0x59, 0x9a, 0xbf, 0xeb, 0x9f, 0x10, 0x13, 0xea, 0x0b, 0xf1, 0x8f, 0x30,
0x5d, 0x17, 0xf2, 0x6e, 0xa8, 0x6d, 0xf5, 0xa4, 0x6d, 0x9a, 0xb9, 0x73, 0x11, 0x8b, 0x51, 0x92,
0x1c, 0xb2, 0x0a, 0x79, 0x9f, 0xbd, 0x16, 0x0e, 0xad, 0x94, 0x48, 0x33, 0xdb, 0x94, 0x0d, 0xf4,
0x5a, 0xf6, 0x3c, 0x49, 0x85, 0x92, 0xe9, 0x0b, 0xda, 0x8f, 0xda, 0x06, 0xda, 0x14, 0x51, 0x2b,
0x9a, 0xb6, 0x73, 0x79, 0xcd, 0x4c, 0xf9, 0x7c, 0x9e, 0x31, 0x05, 0x9d, 0xb0, 0xb8, 0xf9, 0x40,
0xe6, 0x76, 0xdb, 0x16, 0x0a, 0x12, 0x73, 0x79, 0x50, 0xc1, 0xa6, 0x91, 0x35, 0xd6, 0x3c, 0x92,
0xd2, 0x0d, 0xbb, 0xd1, 0x36, 0xe3, 0x01, 0x44, 0x1a, 0x89, 0x82, 0xf6, 0xb5, 0xbb, 0x5a, 0xbc,
0xcf, 0x74, 0x4b, 0xc0, 0x2f, 0x70, 0x49, 0x65, 0x47, 0x4c, 0xbc, 0x76, 0x87, 0x60, 0x76, 0x9f,
0x00, 0x3c, 0x3c, 0x5b, 0x8d, 0x13, 0xb8, 0x4f, 0x80, 0xfa, 0x92, 0x21, 0xf6, 0x09, 0x14, 0xeb,
0x77, 0x9d, 0x39, 0xf7, 0x3a, 0x88, 0x2b, 0x5b, 0x39, 0xa4, 0xeb, 0x50, 0x30, 0xd4, 0x75, 0x94,
0x82, 0xdf, 0xa4, 0xee, 0xd1, 0x1a, 0xd2, 0xa4, 0xd8, 0xb9, 0xda, 0x7a, 0x17, 0x66, 0x73, 0xff,
0x5a, 0x78, 0xc2, 0xe2, 0xc4, 0x54, 0x0c, 0xd1, 0x75, 0xe5, 0x44, 0xee, 0x8f, 0x71, 0xca, 0xc9,
0xef, 0x45, 0x83, 0xa6, 0x1a, 0xa5, 0xeb, 0xe6, 0x16, 0x56, 0xc4, 0x9a, 0x20, 0x26, 0x2a, 0x9f,
0x70, 0x12, 0x37, 0xaf, 0x8b, 0xa6, 0x5c, 0x39, 0x50, 0xaf, 0x85, 0x56, 0x20, 0x71, 0xf3, 0x9b,
0xbd, 0x45, 0x13, 0x89, 0x5b, 0xb7, 0x96, 0xf3, 0x31, 0x22, 0xd0, 0x65, 0x7b, 0x25, 0x5f, 0xc0,
0x32, 0x7d, 0x1a, 0xec, 0x1e, 0x44, 0x83, 0xf8, 0x18, 0x51, 0x3f, 0x4d, 0xbb, 0x06, 0x99, 0xb3,
0x03, 0x79, 0x3d, 0x0d, 0xff, 0x15, 0x94, 0x46, 0x48, 0xac, 0x41, 0x2d, 0xc8, 0xf9, 0xe9, 0xd4,
0xf1, 0xcb, 0x32, 0x15, 0x69, 0x3e, 0x9f, 0x72, 0x9e, 0xc1, 0x23, 0xcb, 0xd1, 0x78, 0xe8, 0x4a,
0xa9, 0x9f, 0x4e, 0x6d, 0x51, 0x76, 0x89, 0x1b, 0x8d, 0x47, 0x4b, 0xc1, 0xcf, 0xd3, 0x2c, 0x03,
0x91, 0x33, 0x1a, 0x0f, 0xb5, 0x84, 0x88, 0x1c, 0x9f, 0x70, 0x7e, 0xf0, 0x73, 0x2c, 0x4f, 0xff,
0xd5, 0x09, 0xe8, 0x1d, 0xa8, 0xe3, 0x08, 0xa9, 0x1f, 0xfc, 0x84, 0x90, 0xf3, 0x03, 0xa6, 0x63,
0xec, 0xa7, 0x5c, 0x36, 0xa1, 0x3a, 0x02, 0x51, 0x3f, 0x60, 0x4a, 0xc1, 0x8d, 0xcf, 0x67, 0xef,
0xff, 0xd7, 0x57, 0x37, 0xd6, 0x7e, 0xfa, 0xd5, 0x8d, 0xb5, 0xff, 0xf9, 0xea, 0xc6, 0xda, 0x4f,
0xbe, 0xbe, 0xf1, 0xc6, 0x4f, 0xbf, 0xbe, 0xf1, 0xc6, 0x7f, 0x7f, 0x7d, 0xe3, 0x8d, 0x2f, 0xdf,
0x54, 0xbf, 0xea, 0x7f, 0xf6, 0x73, 0xf2, 0xb7, 0xf9, 0x9f, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x73, 0x8b, 0x92, 0x17, 0xf9, 0x7f, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -546,6 +547,7 @@ type ClientCommandsClient interface {
ObjectTypeRecommendedRelationsSet(ctx context.Context, in *pb.RpcObjectTypeRecommendedRelationsSetRequest, opts ...grpc.CallOption) (*pb.RpcObjectTypeRecommendedRelationsSetResponse, error)
ObjectTypeRecommendedFeaturedRelationsSet(ctx context.Context, in *pb.RpcObjectTypeRecommendedFeaturedRelationsSetRequest, opts ...grpc.CallOption) (*pb.RpcObjectTypeRecommendedFeaturedRelationsSetResponse, error)
ObjectTypeListConflictingRelations(ctx context.Context, in *pb.RpcObjectTypeListConflictingRelationsRequest, opts ...grpc.CallOption) (*pb.RpcObjectTypeListConflictingRelationsResponse, error)
ObjectTypeResolveLayoutConflicts(ctx context.Context, in *pb.RpcObjectTypeResolveLayoutConflictsRequest, opts ...grpc.CallOption) (*pb.RpcObjectTypeResolveLayoutConflictsResponse, error)
HistoryShowVersion(ctx context.Context, in *pb.RpcHistoryShowVersionRequest, opts ...grpc.CallOption) (*pb.RpcHistoryShowVersionResponse, error)
HistoryGetVersions(ctx context.Context, in *pb.RpcHistoryGetVersionsRequest, opts ...grpc.CallOption) (*pb.RpcHistoryGetVersionsResponse, error)
HistorySetVersion(ctx context.Context, in *pb.RpcHistorySetVersionRequest, opts ...grpc.CallOption) (*pb.RpcHistorySetVersionResponse, error)
@ -1872,6 +1874,15 @@ func (c *clientCommandsClient) ObjectTypeListConflictingRelations(ctx context.Co
return out, nil
}
func (c *clientCommandsClient) ObjectTypeResolveLayoutConflicts(ctx context.Context, in *pb.RpcObjectTypeResolveLayoutConflictsRequest, opts ...grpc.CallOption) (*pb.RpcObjectTypeResolveLayoutConflictsResponse, error) {
out := new(pb.RpcObjectTypeResolveLayoutConflictsResponse)
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/ObjectTypeResolveLayoutConflicts", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *clientCommandsClient) HistoryShowVersion(ctx context.Context, in *pb.RpcHistoryShowVersionRequest, opts ...grpc.CallOption) (*pb.RpcHistoryShowVersionResponse, error) {
out := new(pb.RpcHistoryShowVersionResponse)
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/HistoryShowVersion", in, out, opts...)
@ -3565,6 +3576,7 @@ type ClientCommandsServer interface {
ObjectTypeRecommendedRelationsSet(context.Context, *pb.RpcObjectTypeRecommendedRelationsSetRequest) *pb.RpcObjectTypeRecommendedRelationsSetResponse
ObjectTypeRecommendedFeaturedRelationsSet(context.Context, *pb.RpcObjectTypeRecommendedFeaturedRelationsSetRequest) *pb.RpcObjectTypeRecommendedFeaturedRelationsSetResponse
ObjectTypeListConflictingRelations(context.Context, *pb.RpcObjectTypeListConflictingRelationsRequest) *pb.RpcObjectTypeListConflictingRelationsResponse
ObjectTypeResolveLayoutConflicts(context.Context, *pb.RpcObjectTypeResolveLayoutConflictsRequest) *pb.RpcObjectTypeResolveLayoutConflictsResponse
HistoryShowVersion(context.Context, *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse
HistoryGetVersions(context.Context, *pb.RpcHistoryGetVersionsRequest) *pb.RpcHistoryGetVersionsResponse
HistorySetVersion(context.Context, *pb.RpcHistorySetVersionRequest) *pb.RpcHistorySetVersionResponse
@ -4149,6 +4161,9 @@ func (*UnimplementedClientCommandsServer) ObjectTypeRecommendedFeaturedRelations
func (*UnimplementedClientCommandsServer) ObjectTypeListConflictingRelations(ctx context.Context, req *pb.RpcObjectTypeListConflictingRelationsRequest) *pb.RpcObjectTypeListConflictingRelationsResponse {
return nil
}
func (*UnimplementedClientCommandsServer) ObjectTypeResolveLayoutConflicts(ctx context.Context, req *pb.RpcObjectTypeResolveLayoutConflictsRequest) *pb.RpcObjectTypeResolveLayoutConflictsResponse {
return nil
}
func (*UnimplementedClientCommandsServer) HistoryShowVersion(ctx context.Context, req *pb.RpcHistoryShowVersionRequest) *pb.RpcHistoryShowVersionResponse {
return nil
}
@ -6875,6 +6890,24 @@ func _ClientCommands_ObjectTypeListConflictingRelations_Handler(srv interface{},
return interceptor(ctx, in, info, handler)
}
func _ClientCommands_ObjectTypeResolveLayoutConflicts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(pb.RpcObjectTypeResolveLayoutConflictsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ClientCommandsServer).ObjectTypeResolveLayoutConflicts(ctx, in), nil
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/anytype.ClientCommands/ObjectTypeResolveLayoutConflicts",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ClientCommandsServer).ObjectTypeResolveLayoutConflicts(ctx, req.(*pb.RpcObjectTypeResolveLayoutConflictsRequest)), nil
}
return interceptor(ctx, in, info, handler)
}
func _ClientCommands_HistoryShowVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(pb.RpcHistoryShowVersionRequest)
if err := dec(in); err != nil {
@ -10417,6 +10450,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
MethodName: "ObjectTypeListConflictingRelations",
Handler: _ClientCommands_ObjectTypeListConflictingRelations_Handler,
},
{
MethodName: "ObjectTypeResolveLayoutConflicts",
Handler: _ClientCommands_ObjectTypeResolveLayoutConflicts_Handler,
},
{
MethodName: "HistoryShowVersion",
Handler: _ClientCommands_HistoryShowVersion_Handler,

View file

@ -9,7 +9,7 @@ import (
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
)
const RelationChecksum = "3be80b3e3c4063bfd9087747f9a2561ff32fc605460843d99a4d722fb3688e71"
const RelationChecksum = "a23583f8faef1cbfcd05ca1d2761538e67bbdd1336d1a467a0d657b5f986b313"
const (
RelationKeyTag domain.RelationKey = "tag"
RelationKeyCamera domain.RelationKey = "camera"
@ -160,7 +160,6 @@ const (
RelationKeyAutoWidgetTargets domain.RelationKey = "autoWidgetTargets"
RelationKeyAutoWidgetDisabled domain.RelationKey = "autoWidgetDisabled"
RelationKeyPluralName domain.RelationKey = "pluralName"
RelationKeyForceLayoutFromType domain.RelationKey = "forceLayoutFromType"
)
var (
@ -704,20 +703,6 @@ var (
ReadOnlyRelation: true,
Scope: model.Relation_type,
},
RelationKeyForceLayoutFromType: {
DataSource: model.Relation_details,
Description: "Layout settings are strictly inherited for all objects of this type",
Format: model.RelationFormat_checkbox,
Hidden: true,
Id: "_brforceLayoutFromType",
Key: "forceLayoutFromType",
MaxCount: 1,
Name: "Force layout from type",
ReadOnly: false,
ReadOnlyRelation: true,
Scope: model.Relation_type,
},
RelationKeyGenre: {
DataSource: model.Relation_details,

View file

@ -1535,15 +1535,5 @@
"name": "Plural name",
"readonly": false,
"source": "details"
},
{
"description": "Layout settings are strictly inherited for all objects of this type",
"format": "checkbox",
"hidden": true,
"key": "forceLayoutFromType",
"maxCount": 1,
"name": "Force layout from type",
"readonly": false,
"source": "details"
}
]