1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-11 18:20:33 +09:00
This commit is contained in:
Sergey Cherepanov 2021-12-27 10:30:32 +03:00
commit fd17048c65
No known key found for this signature in database
GPG key ID: 085319C64294F576
31 changed files with 2257 additions and 1120 deletions

View file

@ -0,0 +1,44 @@
package service
import (
ma "github.com/multiformats/go-multiaddr"
)
type InterfaceAddr interface {
Ip() []byte
Prefix() int
}
var interfaceGetter InterfaceAddrsGetter
type InterfaceAddrIterator interface {
Next() InterfaceAddr
}
type InterfaceAddrsGetter interface {
InterfaceAddrs() InterfaceAddrIterator
}
type interfaceGetterAdapter struct {
interfaceGetter InterfaceAddrsGetter
}
func (i *interfaceGetterAdapter) InterfaceAddrs() []ma.InterfaceAddr {
iter := i.interfaceGetter.InterfaceAddrs()
addr := iter.Next()
var res []ma.InterfaceAddr
for addr != nil {
res = append(res, ma.InterfaceAddr{
Ip: addr.Ip(),
Prefix: addr.Prefix(),
})
addr = iter.Next()
}
return res
}
func SetInterfaceAddrsGetter(getter InterfaceAddrsGetter) {
ma.SetInterfaceAddrsGetter(&interfaceGetterAdapter{
interfaceGetter: getter,
})
}

View file

@ -24,193 +24,194 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
var fileDescriptor_93a29dc403579097 = []byte{
// 2972 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9b, 0xcd, 0x73, 0xdc, 0xb6,
0x15, 0xc0, 0xb3, 0x33, 0x9d, 0x24, 0x45, 0x12, 0xc7, 0x61, 0xeb, 0xc4, 0x96, 0x53, 0xf9, 0x23,
0x76, 0x6c, 0xcb, 0x16, 0x25, 0xcb, 0x6d, 0x3a, 0xfd, 0xcc, 0x48, 0x2b, 0x5b, 0xd6, 0x44, 0xb6,
0x55, 0xad, 0x6c, 0x75, 0x32, 0xfd, 0xa2, 0x48, 0x78, 0x97, 0x59, 0x2e, 0xc1, 0x90, 0xd8, 0x95,
0xb6, 0x33, 0xed, 0xf4, 0x6b, 0xda, 0xe9, 0x2d, 0x33, 0x3d, 0xf6, 0xd4, 0x6b, 0xff, 0x92, 0x1e,
0x73, 0xec, 0xb1, 0x63, 0xff, 0x23, 0x1d, 0x10, 0x8f, 0x00, 0x01, 0x02, 0x20, 0xd7, 0x27, 0x8d,
0xf8, 0x7e, 0xef, 0x83, 0xe0, 0xc3, 0xc3, 0x03, 0x89, 0x45, 0x97, 0xb2, 0xe3, 0xb5, 0x2c, 0x27,
0x94, 0x14, 0x6b, 0x05, 0xce, 0x67, 0x71, 0x88, 0xab, 0xbf, 0x7e, 0x79, 0xd9, 0x7b, 0x23, 0x48,
0xe7, 0x74, 0x9e, 0xe1, 0xa5, 0xf3, 0x92, 0x0c, 0xc9, 0x64, 0x12, 0xa4, 0x51, 0xc1, 0x91, 0xa5,
0xf7, 0xa5, 0x04, 0xcf, 0x70, 0x4a, 0xe1, 0xfa, 0xc6, 0xdf, 0x4e, 0xd1, 0x99, 0x7e, 0x12, 0xe3,
0x94, 0xf6, 0x41, 0xc1, 0xcb, 0xd1, 0xb9, 0x27, 0xc7, 0x5f, 0xe0, 0x90, 0x6e, 0x46, 0xd1, 0x51,
0x4c, 0x47, 0xfc, 0x9f, 0xdd, 0xc8, 0xbb, 0xed, 0x83, 0x1f, 0xff, 0x20, 0x0b, 0x7d, 0x7e, 0xd9,
0xd7, 0x20, 0xff, 0x00, 0x7f, 0x39, 0xc5, 0x05, 0x5d, 0xba, 0xd3, 0x0d, 0x2e, 0x32, 0x92, 0x16,
0xd8, 0x7b, 0x8e, 0xde, 0xe3, 0x17, 0x07, 0xa3, 0x20, 0xc7, 0x5b, 0xf3, 0xbd, 0x38, 0x1d, 0x7b,
0x37, 0x4c, 0x26, 0x6a, 0x80, 0xf0, 0x75, 0xb3, 0x1d, 0x04, 0x3f, 0x47, 0xe8, 0xed, 0xa3, 0x20,
0x49, 0x30, 0xed, 0xe7, 0x38, 0xa0, 0xd8, 0xbb, 0xaa, 0x68, 0x72, 0x91, 0xcf, 0x65, 0xc2, 0xfa,
0x47, 0x4e, 0x06, 0x0c, 0x7f, 0x8e, 0xde, 0xe1, 0x92, 0x03, 0x1c, 0x92, 0x19, 0xce, 0x3d, 0xa3,
0x16, 0x08, 0x85, 0xe9, 0x6b, 0x6e, 0x48, 0xb7, 0xdd, 0x27, 0xe9, 0x0c, 0xe7, 0xd4, 0x6c, 0x1b,
0x84, 0x6e, 0xdb, 0x12, 0x02, 0xdb, 0xbf, 0x41, 0xef, 0x1e, 0x91, 0x7c, 0x5c, 0x64, 0x41, 0x88,
0x61, 0x4c, 0xae, 0xab, 0x8a, 0x95, 0x54, 0x1f, 0x96, 0x8f, 0xdb, 0x30, 0x83, 0x87, 0x01, 0x4e,
0x70, 0x48, 0xad, 0x1e, 0xb8, 0xb8, 0xd5, 0x83, 0xc0, 0xc0, 0x43, 0x82, 0xbe, 0x25, 0x84, 0x3b,
0x98, 0xf6, 0xa7, 0x79, 0x8e, 0x53, 0xea, 0xdd, 0xb2, 0xa8, 0x4b, 0x44, 0x78, 0x5a, 0xe9, 0x82,
0x1a, 0xee, 0x67, 0x07, 0xd3, 0xcd, 0x24, 0xb1, 0xde, 0x0f, 0x17, 0xb7, 0xde, 0x8f, 0xc0, 0xc0,
0xc3, 0xef, 0xd1, 0x85, 0xda, 0x88, 0xd1, 0xdd, 0xe2, 0x61, 0x3c, 0x1c, 0x25, 0xf1, 0x70, 0x44,
0x71, 0xe4, 0xad, 0x59, 0x07, 0x45, 0x05, 0x85, 0xd7, 0xf5, 0xee, 0x0a, 0xe0, 0xff, 0x97, 0xe8,
0xcc, 0x66, 0x18, 0x92, 0x69, 0x2a, 0x92, 0x59, 0xcd, 0x25, 0x10, 0x36, 0xb2, 0xf9, 0x7a, 0x0b,
0x25, 0xd3, 0x19, 0x64, 0x90, 0x70, 0x1f, 0x19, 0xf5, 0xb4, 0x74, 0xbb, 0xe6, 0x86, 0x1a, 0xb6,
0x21, 0xd5, 0xcc, 0xb6, 0xb5, 0x44, 0xbb, 0xe6, 0x86, 0xc0, 0xf6, 0x21, 0x7a, 0xab, 0xb2, 0x4d,
0x49, 0xe6, 0x5d, 0x31, 0x2b, 0x51, 0x92, 0x09, 0xbb, 0x57, 0x5d, 0x88, 0xb4, 0xfa, 0x20, 0x4e,
0xf0, 0x93, 0xe7, 0xcf, 0x13, 0x12, 0x44, 0x9a, 0x55, 0x26, 0xf1, 0x41, 0x64, 0xb1, 0xaa, 0x21,
0x32, 0x49, 0x99, 0x60, 0x2f, 0x2e, 0x68, 0x65, 0xf9, 0x7a, 0x43, 0x8d, 0x49, 0x1b, 0xd6, 0x3f,
0x6e, 0xc3, 0xc0, 0xc3, 0xcf, 0x10, 0x7a, 0x86, 0xf3, 0x22, 0x26, 0xe9, 0x0e, 0xa6, 0xde, 0x65,
0x45, 0x0b, 0x04, 0x2c, 0xb1, 0x85, 0xdd, 0x2b, 0x0e, 0x02, 0x4c, 0x3e, 0x44, 0x6f, 0xec, 0x91,
0xe1, 0x00, 0xa7, 0x91, 0xf7, 0x1d, 0x85, 0xde, 0x23, 0x43, 0x9f, 0x5d, 0x16, 0xc6, 0x96, 0x6d,
0x62, 0xb0, 0xf4, 0x18, 0x7d, 0xb3, 0x4f, 0xd2, 0xe7, 0xf1, 0x90, 0xc5, 0x76, 0x49, 0x81, 0xf9,
0x75, 0x25, 0xb4, 0xcb, 0x76, 0x00, 0xec, 0xed, 0xa2, 0x37, 0x07, 0xa3, 0x29, 0x8d, 0xc8, 0x49,
0xaa, 0x85, 0x56, 0x5d, 0xb6, 0x84, 0x56, 0x13, 0xcb, 0x95, 0xee, 0xfe, 0x29, 0xc5, 0x79, 0x1a,
0x24, 0xdb, 0x39, 0xc9, 0xd8, 0x00, 0x17, 0xda, 0x4a, 0x57, 0x97, 0x97, 0x4f, 0xa0, 0xb0, 0xac,
0x74, 0x46, 0x50, 0x16, 0xc5, 0xba, 0xb8, 0x4f, 0x52, 0xda, 0x2c, 0x8a, 0x8a, 0x01, 0x40, 0x2c,
0x45, 0xd1, 0x82, 0x82, 0xb7, 0x03, 0xf4, 0x16, 0x5b, 0x68, 0xf7, 0x73, 0x3c, 0x8b, 0xf1, 0x89,
0x96, 0x0e, 0x35, 0x89, 0x25, 0x1d, 0x54, 0x02, 0x6c, 0x3e, 0x41, 0xe8, 0x69, 0xc6, 0x92, 0x8e,
0xdd, 0x99, 0xf6, 0x14, 0xa5, 0xc0, 0xf2, 0x14, 0x15, 0x00, 0x0c, 0x3e, 0x45, 0x6f, 0x6f, 0x93,
0x93, 0x54, 0x98, 0x54, 0x63, 0xa8, 0x8b, 0x2c, 0x73, 0x4d, 0x43, 0xe4, 0x0c, 0xde, 0x4a, 0x48,
0x38, 0xe6, 0x2e, 0x35, 0xab, 0xa5, 0x04, 0xa2, 0xb1, 0x58, 0xd5, 0x10, 0xd9, 0xa9, 0x94, 0x82,
0x03, 0x9c, 0x25, 0x41, 0xa8, 0x77, 0x2a, 0x5c, 0x07, 0x64, 0x96, 0x4e, 0x45, 0x67, 0xc0, 0x70,
0x8c, 0x3c, 0x08, 0x37, 0x0a, 0x28, 0xae, 0xf2, 0xe2, 0xa6, 0x31, 0xa4, 0x1a, 0x21, 0x9c, 0xdc,
0xea, 0x40, 0xca, 0x69, 0x58, 0xca, 0x9f, 0x64, 0x38, 0xd5, 0x1e, 0x20, 0xd7, 0x63, 0x02, 0xcb,
0x03, 0x54, 0x00, 0xcd, 0xde, 0x60, 0x44, 0x4e, 0x8c, 0xf6, 0x98, 0xc0, 0x69, 0x0f, 0x00, 0xb0,
0x47, 0xd0, 0xb7, 0xcb, 0xcb, 0x3b, 0x98, 0xee, 0x4f, 0x8f, 0x93, 0x38, 0x3c, 0xc2, 0xc7, 0x4f,
0x0f, 0xf6, 0xbc, 0x15, 0x83, 0xa6, 0xc6, 0x08, 0x2f, 0xb7, 0x3b, 0xb1, 0x9a, 0x43, 0x76, 0x5b,
0x5b, 0x39, 0x0e, 0xa2, 0x30, 0x9f, 0x4e, 0x8e, 0x0b, 0xa3, 0x43, 0x8d, 0x71, 0x3a, 0x6c, 0xb2,
0xb2, 0x0a, 0xf0, 0x11, 0xc3, 0xb4, 0xee, 0xcf, 0xf4, 0x0c, 0x55, 0xc4, 0x52, 0x05, 0x2c, 0xa8,
0x36, 0x13, 0x60, 0x5d, 0x37, 0xcd, 0x04, 0x6d, 0x55, 0xbf, 0xea, 0x42, 0xe4, 0x5a, 0x56, 0xb3,
0xba, 0x1f, 0x0c, 0xf5, 0x16, 0xb5, 0xae, 0xc6, 0xc4, 0x96, 0xb5, 0xcc, 0x80, 0xc9, 0x86, 0xa7,
0xe6, 0x61, 0x80, 0xa9, 0xd6, 0xf0, 0xd4, 0x35, 0x07, 0xb5, 0x85, 0xe3, 0x7a, 0x0b, 0xa5, 0x17,
0x88, 0x34, 0x61, 0xdb, 0x1a, 0x63, 0x81, 0x28, 0x45, 0xee, 0x02, 0x51, 0x21, 0x72, 0x01, 0xe6,
0x41, 0x27, 0xa4, 0xc0, 0x9e, 0x29, 0xd9, 0x4b, 0x89, 0xa5, 0xe2, 0xaa, 0x84, 0xec, 0x9e, 0xca,
0xeb, 0x55, 0x9d, 0xf3, 0x4c, 0x05, 0xa5, 0x12, 0x5a, 0xba, 0xa7, 0x06, 0x04, 0xb6, 0x7f, 0x01,
0xb6, 0x77, 0x30, 0x7d, 0x14, 0xe4, 0xe3, 0xc2, 0x38, 0xc4, 0x6c, 0xd1, 0x2d, 0xa5, 0xce, 0x21,
0xae, 0x53, 0x5a, 0x65, 0x78, 0x9a, 0x46, 0xc4, 0x58, 0x19, 0x98, 0xc0, 0x59, 0x19, 0x00, 0xd0,
0xec, 0x1d, 0x60, 0x8b, 0x3d, 0x26, 0x70, 0xda, 0x03, 0x00, 0xec, 0xfd, 0x1a, 0x32, 0x6c, 0x80,
0xe9, 0x83, 0x18, 0x27, 0x51, 0x61, 0x4c, 0x61, 0x96, 0x35, 0x5c, 0xec, 0x4c, 0x61, 0x05, 0x03,
0x07, 0x5f, 0x42, 0x65, 0x19, 0xb0, 0x1d, 0x68, 0x41, 0xf3, 0x38, 0xa4, 0x31, 0x49, 0x0b, 0xef,
0xb6, 0x45, 0xbf, 0x0e, 0x59, 0xf6, 0xec, 0x56, 0x58, 0xcb, 0x16, 0xd6, 0x1f, 0x3e, 0x22, 0x33,
0x6c, 0xca, 0x96, 0xb2, 0x77, 0x64, 0x42, 0x57, 0xb6, 0xd4, 0x21, 0xb0, 0x3d, 0x45, 0xef, 0x2b,
0xb6, 0x0f, 0xc9, 0x63, 0x7c, 0x52, 0x4e, 0xfd, 0x3b, 0x0e, 0x7d, 0x41, 0x09, 0x6f, 0xab, 0x1d,
0x69, 0x70, 0xfb, 0x55, 0x0f, 0x5d, 0x12, 0x10, 0xec, 0x95, 0xfb, 0xa3, 0x38, 0x89, 0x72, 0x9c,
0x1e, 0x12, 0xc6, 0x16, 0xde, 0xf7, 0x2c, 0x26, 0xcd, 0xb8, 0x88, 0xe4, 0x93, 0x45, 0xd5, 0x20,
0xa4, 0x31, 0x2c, 0xd7, 0x0c, 0x96, 0xd9, 0x73, 0xcb, 0x62, 0xcd, 0x90, 0x41, 0x2b, 0x5d, 0x50,
0x70, 0x36, 0x43, 0xe7, 0xea, 0xce, 0x0e, 0xf1, 0x29, 0x1d, 0xd0, 0x79, 0x82, 0xbd, 0x55, 0x87,
0x11, 0x46, 0xf9, 0x25, 0x26, 0x7c, 0xfa, 0x5d, 0x71, 0xad, 0x27, 0x61, 0xd0, 0xf6, 0x34, 0x4b,
0xe2, 0x90, 0xad, 0x1f, 0x37, 0x2d, 0x56, 0x04, 0xe1, 0xea, 0x49, 0x1a, 0x24, 0xb8, 0xfa, 0x6b,
0x0f, 0x5d, 0xac, 0xdf, 0xe3, 0x56, 0x10, 0x8e, 0x87, 0x39, 0x99, 0xa6, 0x51, 0x9f, 0x24, 0x24,
0xf7, 0x36, 0x1c, 0xa1, 0x6b, 0xac, 0x70, 0x7f, 0x6f, 0x21, 0x1d, 0x08, 0x64, 0x84, 0xde, 0xab,
0xc7, 0xb1, 0x99, 0xc4, 0xc3, 0xd4, 0x7a, 0xcb, 0xcc, 0x52, 0x49, 0xb4, 0xde, 0x72, 0x9d, 0x04,
0x4f, 0x05, 0xd4, 0x06, 0xf0, 0xb4, 0x1d, 0xcf, 0xf8, 0x43, 0xbd, 0xe3, 0x30, 0xb1, 0x1d, 0xcf,
0xb4, 0x67, 0xba, 0xda, 0x91, 0x36, 0xa7, 0x12, 0x6b, 0x99, 0xdb, 0x53, 0xa9, 0x6c, 0xac, 0xbb,
0xa7, 0x92, 0x82, 0xcb, 0xfd, 0x95, 0x80, 0x0e, 0xa7, 0x79, 0xba, 0x9b, 0x52, 0xa2, 0xed, 0xaf,
0xa4, 0x91, 0x0a, 0xb0, 0xec, 0xaf, 0x8c, 0x20, 0xf8, 0xf9, 0x02, 0xfc, 0x0c, 0x30, 0xdd, 0x0b,
0x28, 0x3e, 0x65, 0x69, 0x6d, 0xeb, 0xab, 0xfc, 0x92, 0xe0, 0x99, 0xdf, 0xd2, 0x57, 0xa9, 0x28,
0xf8, 0x1a, 0xa2, 0xb3, 0x95, 0x2f, 0x26, 0x28, 0x5d, 0xdd, 0xb4, 0xe8, 0x97, 0x9a, 0x8a, 0xa7,
0x5b, 0x1d, 0xc8, 0xe6, 0x4d, 0x31, 0x01, 0x9f, 0x11, 0x4e, 0x7d, 0x75, 0x22, 0xac, 0x74, 0x41,
0xed, 0xb5, 0x86, 0xfb, 0x6b, 0xad, 0x35, 0xaa, 0x4f, 0xbf, 0x2b, 0x6e, 0x9e, 0x0d, 0x0c, 0x61,
0xcd, 0x84, 0x73, 0x36, 0x94, 0x76, 0x18, 0xd5, 0x69, 0x36, 0xd4, 0x69, 0xf3, 0xc0, 0xf2, 0x99,
0xe0, 0x1c, 0x58, 0x75, 0x16, 0xac, 0x74, 0x41, 0xc1, 0x57, 0x26, 0x7b, 0xfe, 0x72, 0x50, 0x47,
0x38, 0x1c, 0xe3, 0xc8, 0xda, 0x09, 0xf0, 0x31, 0xe2, 0x50, 0x6b, 0x27, 0xa0, 0xc1, 0x5a, 0x2b,
0x3a, 0xc8, 0x92, 0x98, 0x1a, 0x5b, 0xd1, 0x52, 0xe2, 0x6c, 0x45, 0x2b, 0x42, 0x33, 0xf9, 0x08,
0xe7, 0x43, 0x73, 0x77, 0x5b, 0x4a, 0x9c, 0x26, 0x2b, 0x42, 0xeb, 0xe9, 0xfa, 0x24, 0x9b, 0x1b,
0x7b, 0x3a, 0x26, 0x70, 0xf6, 0x74, 0x00, 0x68, 0x21, 0xee, 0x07, 0x05, 0x35, 0x87, 0x58, 0x4a,
0x9c, 0x21, 0x56, 0x04, 0x98, 0xfc, 0x0c, 0xbd, 0xc9, 0x43, 0x9c, 0x52, 0x6f, 0xd9, 0x14, 0xc0,
0x54, 0x0e, 0xe2, 0x25, 0xab, 0x5c, 0xdb, 0x76, 0xdc, 0x3f, 0xcd, 0x48, 0x4e, 0x8d, 0xdb, 0x0e,
0x2e, 0x72, 0x6e, 0x3b, 0x04, 0xa2, 0xed, 0x28, 0x77, 0x27, 0xec, 0x3a, 0xcb, 0xf2, 0xf2, 0xad,
0x98, 0x29, 0x97, 0x55, 0xc4, 0x99, 0xcb, 0x0d, 0xb4, 0x59, 0xf9, 0x58, 0xb1, 0x7f, 0x1c, 0x4c,
0xb0, 0xb5, 0xf2, 0x95, 0xab, 0x01, 0x23, 0x5a, 0x2b, 0x5f, 0x9d, 0x6c, 0x4e, 0xd0, 0xdd, 0x49,
0x30, 0xe4, 0x9e, 0x6c, 0xfa, 0x25, 0xa1, 0xba, 0x5a, 0xe9, 0x82, 0x82, 0xaf, 0x09, 0x74, 0x3b,
0x95, 0xaf, 0xa3, 0x38, 0xa2, 0x23, 0xcf, 0x6d, 0xa1, 0x64, 0x9c, 0xef, 0x00, 0x9a, 0x6c, 0xf3,
0xd6, 0x9e, 0xc5, 0x11, 0x26, 0xce, 0x5b, 0x2b, 0x89, 0x6e, 0xb7, 0xa6, 0xa0, 0xcd, 0x5b, 0x2b,
0xc5, 0xee, 0x5b, 0xe3, 0x16, 0xba, 0xdd, 0x9a, 0xca, 0x82, 0xbb, 0x3f, 0xf5, 0xd0, 0x05, 0xb1,
0x0a, 0xc7, 0xe9, 0xf8, 0x30, 0xc8, 0x87, 0x98, 0xf2, 0xfc, 0x8c, 0xbc, 0xbb, 0xb6, 0x25, 0x96,
0xed, 0xa3, 0x15, 0x54, 0x78, 0xdf, 0x58, 0x44, 0x45, 0xeb, 0xd0, 0xb7, 0x08, 0x19, 0x4f, 0x82,
0x7c, 0xfc, 0x00, 0xd3, 0x70, 0x64, 0x1c, 0xe0, 0x8a, 0xf0, 0x4b, 0xc4, 0x39, 0xc0, 0x0d, 0x54,
0x6f, 0x5f, 0x2b, 0x80, 0xbf, 0x6f, 0xd8, 0x4c, 0x23, 0xee, 0x76, 0xc3, 0x65, 0x4b, 0x65, 0x5d,
0xed, 0xab, 0x43, 0x07, 0x02, 0xf9, 0x1d, 0x3a, 0x5f, 0x92, 0x6c, 0x2e, 0x09, 0x06, 0x5e, 0x81,
0xae, 0x19, 0x0c, 0x96, 0x73, 0x4e, 0x03, 0x2d, 0xdf, 0xa8, 0x9c, 0x0a, 0xe0, 0x3e, 0x85, 0x32,
0x74, 0x80, 0x93, 0x80, 0xed, 0x4b, 0x07, 0x98, 0x7e, 0x86, 0xe7, 0xc6, 0x4c, 0xab, 0x10, 0x9f,
0x33, 0xce, 0x4c, 0x6b, 0xb2, 0xe0, 0x0f, 0x43, 0x21, 0xaa, 0x80, 0xcd, 0x28, 0x32, 0x75, 0x95,
0xd2, 0xc0, 0x66, 0x14, 0xb9, 0xba, 0x4a, 0x1d, 0x04, 0x37, 0xbf, 0x45, 0x1f, 0xf0, 0x37, 0x30,
0x01, 0x0d, 0x66, 0x31, 0x3e, 0x79, 0x16, 0xe3, 0x13, 0x78, 0x9b, 0xe6, 0x9b, 0x5e, 0xb3, 0x00,
0xe6, 0x4b, 0x4e, 0x38, 0x5d, 0xeb, 0xcc, 0x3b, 0x7c, 0x6f, 0xe3, 0x04, 0x77, 0xf1, 0xcd, 0xb9,
0xee, 0xbe, 0x05, 0xef, 0xf0, 0xcd, 0x5f, 0x2a, 0xb7, 0xfb, 0xe6, 0x5c, 0x77, 0xdf, 0x82, 0x07,
0xdf, 0x7f, 0xee, 0xa1, 0xa5, 0x86, 0x73, 0xb6, 0x23, 0x0b, 0x69, 0x3c, 0xc3, 0xc6, 0x2a, 0xa2,
0xd8, 0x13, 0xa8, 0xb3, 0x8a, 0x58, 0x55, 0x20, 0x8a, 0xbf, 0xf7, 0xd0, 0x87, 0xa6, 0x28, 0xf6,
0x49, 0x11, 0xb3, 0x3c, 0xf1, 0xee, 0x75, 0x30, 0x5a, 0xc1, 0x22, 0x92, 0xef, 0x2e, 0xa6, 0x04,
0xb1, 0x9c, 0xc0, 0xdb, 0x97, 0x8a, 0x1c, 0x60, 0x3a, 0x20, 0xd3, 0x3c, 0x34, 0x6e, 0xde, 0xa4,
0x3d, 0x81, 0xb9, 0x7a, 0x73, 0x33, 0xae, 0x15, 0x95, 0x8a, 0xa9, 0xcf, 0x36, 0xe7, 0x73, 0xad,
0x81, 0xce, 0xa2, 0x62, 0x51, 0xd0, 0x8b, 0xab, 0xee, 0x1f, 0x52, 0x71, 0xa3, 0x8b, 0x45, 0x2d,
0x1d, 0xef, 0x2d, 0xa4, 0xd3, 0x16, 0x08, 0xcc, 0xc7, 0x4e, 0x81, 0x68, 0x73, 0xf2, 0xde, 0x42,
0x3a, 0x10, 0xc8, 0x3f, 0x7b, 0xe8, 0xaa, 0x31, 0x10, 0xb6, 0xd9, 0xd9, 0x9c, 0x05, 0x71, 0x12,
0x1c, 0x27, 0xd8, 0xfb, 0x41, 0x17, 0xdb, 0x8a, 0x8a, 0x08, 0xeb, 0x87, 0xaf, 0xa2, 0x0a, 0xd1,
0xfd, 0xa1, 0x5a, 0xfe, 0x65, 0x74, 0x21, 0xc9, 0x23, 0x28, 0x98, 0x2d, 0xcf, 0x5f, 0x92, 0x22,
0x96, 0xbb, 0x0b, 0x68, 0x40, 0x08, 0xff, 0xea, 0xa1, 0x6b, 0x86, 0x10, 0xaa, 0xc0, 0x9f, 0x64,
0x55, 0xfa, 0xfe, 0xa8, 0xdd, 0x76, 0x43, 0x49, 0x04, 0xf6, 0xe3, 0x57, 0x53, 0x86, 0x18, 0xff,
0xdd, 0x43, 0x37, 0x5a, 0x63, 0x84, 0x14, 0xff, 0xe9, 0xa2, 0x9e, 0xb4, 0x74, 0xff, 0xf4, 0x95,
0xf5, 0x17, 0x09, 0x16, 0xa6, 0xc1, 0xc2, 0xc1, 0x6a, 0x53, 0xe2, 0xd3, 0x57, 0xd6, 0xd7, 0x5a,
0x3f, 0x7e, 0xe4, 0xec, 0x70, 0x9e, 0x95, 0x1f, 0x8f, 0x4c, 0xad, 0x9f, 0x24, 0xfc, 0xfa, 0x17,
0xa4, 0x95, 0x2e, 0x28, 0x38, 0xcb, 0xd1, 0xb9, 0xc7, 0xc1, 0x2c, 0x1e, 0x8a, 0x19, 0xc1, 0x41,
0xfd, 0x1d, 0xbf, 0x64, 0xfc, 0x1a, 0x64, 0xd9, 0xd9, 0x5b, 0x61, 0xf0, 0xf9, 0x8f, 0x1e, 0xba,
0x2c, 0x99, 0x1d, 0x0c, 0xc4, 0x6e, 0xfa, 0x9c, 0x1c, 0xc5, 0x74, 0xc4, 0xda, 0xe2, 0xc2, 0xfb,
0xc4, 0x66, 0xd2, 0xcc, 0x8b, 0x50, 0xbe, 0xbf, 0xb0, 0x9e, 0xdc, 0xd9, 0x72, 0xf9, 0x4e, 0x1e,
0x64, 0x23, 0x6d, 0x67, 0x0b, 0xc7, 0xff, 0x4a, 0x91, 0x65, 0x67, 0xab, 0x21, 0xf2, 0x8b, 0x3b,
0x9c, 0x41, 0xc4, 0x41, 0x1e, 0x8e, 0x3c, 0xa3, 0x0e, 0x97, 0x59, 0xbe, 0xb8, 0xeb, 0x8c, 0x7c,
0x70, 0x75, 0xc3, 0x83, 0xe9, 0x71, 0x11, 0xe6, 0xf1, 0x31, 0x36, 0x1f, 0xa8, 0xd4, 0x20, 0xf7,
0x81, 0xca, 0x26, 0x2c, 0xdf, 0xa8, 0x57, 0xa7, 0x2c, 0x0b, 0xe9, 0xd0, 0x78, 0x50, 0xb2, 0x4e,
0x58, 0xb6, 0xce, 0x66, 0x12, 0x5c, 0x9d, 0xa2, 0x0f, 0xea, 0xb7, 0xf7, 0x34, 0x2d, 0x84, 0xbf,
0x55, 0x7b, 0xcc, 0x35, 0xcc, 0xd2, 0x2e, 0x38, 0x70, 0xfd, 0xd4, 0xa8, 0xbd, 0x2b, 0x07, 0x23,
0xa6, 0xfe, 0xe0, 0x66, 0x3b, 0x28, 0x3f, 0xdb, 0xab, 0x7e, 0xa0, 0x58, 0xae, 0xb8, 0x2c, 0x68,
0x85, 0xf1, 0x76, 0x27, 0xd6, 0xe6, 0x10, 0x0a, 0x9e, 0xd3, 0xa1, 0x56, 0xdc, 0x6e, 0x77, 0x62,
0xf5, 0x67, 0xd8, 0x5c, 0xb8, 0x56, 0x5d, 0x76, 0x9a, 0x4b, 0x95, 0xdf, 0x15, 0x07, 0xcf, 0x7f,
0xec, 0xa1, 0x25, 0x93, 0x6b, 0x18, 0xe2, 0xf5, 0x76, 0x73, 0xda, 0x40, 0xdf, 0x5d, 0x40, 0xa3,
0x25, 0x06, 0x18, 0xf5, 0x0e, 0x31, 0x68, 0x63, 0x7f, 0x77, 0x01, 0x0d, 0x88, 0xe1, 0x2f, 0x3d,
0x74, 0x51, 0x8d, 0x41, 0x6d, 0xb1, 0x9c, 0x26, 0xcd, 0xad, 0xd5, 0xc6, 0x22, 0x2a, 0xf2, 0xb0,
0x45, 0x35, 0x99, 0xe9, 0x5e, 0x30, 0x27, 0x53, 0xfd, 0xb4, 0xae, 0x98, 0x95, 0x20, 0xb6, 0x7c,
0xa9, 0x36, 0x60, 0xb5, 0xa6, 0x8d, 0x4b, 0x1f, 0xe0, 0x80, 0x4e, 0x73, 0x1c, 0xd5, 0x67, 0xaf,
0x71, 0xac, 0x75, 0x50, 0xd9, 0x5c, 0xdf, 0x5d, 0x40, 0xa3, 0xb6, 0xd7, 0x32, 0x87, 0x70, 0x80,
0x27, 0x64, 0x86, 0xb5, 0xbd, 0x96, 0xcd, 0x26, 0x87, 0x2d, 0x7b, 0xad, 0x56, 0x25, 0xf9, 0x3e,
0x55, 0x0c, 0xf8, 0x6e, 0xf1, 0x20, 0x98, 0x91, 0x3c, 0xa6, 0xfa, 0xfb, 0x39, 0x39, 0x9a, 0x12,
0xb1, 0xf4, 0x10, 0x16, 0xd4, 0xe8, 0x6d, 0x33, 0x0f, 0x47, 0xf1, 0x0c, 0x47, 0x0e, 0x6f, 0x15,
0xd2, 0xc1, 0x5b, 0x0d, 0xd5, 0xd7, 0xe9, 0x43, 0xc2, 0xfa, 0x22, 0xe3, 0x3a, 0x5d, 0x8a, 0xdc,
0xeb, 0x74, 0x85, 0x80, 0xd5, 0x10, 0x9d, 0xe5, 0x82, 0xf2, 0x6b, 0x31, 0x9f, 0xa2, 0xa6, 0xe4,
0xe3, 0x5f, 0x80, 0xd5, 0x89, 0x79, 0xa3, 0x95, 0x93, 0x2f, 0x24, 0xa4, 0x54, 0x1d, 0x2c, 0xdf,
0x66, 0xa3, 0x7c, 0x03, 0xdb, 0x1c, 0xb1, 0xb5, 0xce, 0xbc, 0xd5, 0xb7, 0x48, 0x8b, 0x16, 0xdf,
0x8d, 0xdc, 0x58, 0xeb, 0xcc, 0x83, 0xef, 0x63, 0x38, 0x6c, 0x35, 0xc0, 0x74, 0x1b, 0xd3, 0x20,
0x4e, 0x0a, 0xcf, 0x76, 0x04, 0x05, 0xe4, 0x96, 0xb1, 0x35, 0x71, 0xf2, 0xc3, 0xc9, 0x7e, 0x30,
0xac, 0x7e, 0x6e, 0xa0, 0x7e, 0x38, 0x29, 0xcf, 0x63, 0x68, 0xdb, 0xb2, 0x2b, 0x0e, 0x42, 0x7e,
0xdb, 0x19, 0x88, 0x1f, 0x75, 0xa8, 0x5f, 0x46, 0x06, 0xcd, 0x5f, 0x74, 0x5c, 0xb6, 0x03, 0x72,
0x01, 0x7e, 0x84, 0x69, 0x1e, 0x87, 0xc5, 0x00, 0xd3, 0xfd, 0x20, 0x0f, 0x26, 0x98, 0xe2, 0x5c,
0x3f, 0xa8, 0x07, 0x88, 0xaf, 0x30, 0x96, 0x05, 0xd8, 0xc6, 0xea, 0x49, 0xcd, 0xfa, 0x7e, 0xb8,
0x0f, 0x53, 0x52, 0x97, 0xdb, 0x02, 0xed, 0x76, 0x6e, 0xb4, 0x72, 0xf2, 0x9c, 0x9b, 0x94, 0xb2,
0x34, 0xd0, 0x0e, 0x61, 0xd5, 0x54, 0xcb, 0x24, 0x31, 0x1f, 0xc2, 0x6a, 0x52, 0xf2, 0xb5, 0x91,
0x94, 0xd5, 0xd7, 0x19, 0x63, 0x0f, 0x51, 0x1a, 0x10, 0x65, 0x51, 0xf1, 0xe7, 0x77, 0xc5, 0xc1,
0x31, 0xad, 0x1a, 0xec, 0xba, 0x63, 0xb6, 0x9a, 0xdc, 0x69, 0x35, 0x54, 0x5f, 0x49, 0x56, 0x3b,
0xd2, 0xf2, 0x65, 0x55, 0xd3, 0x2b, 0xb4, 0x2d, 0x6b, 0xad, 0xa6, 0xb4, 0xae, 0x65, 0xbd, 0xbb,
0x82, 0xcb, 0x3d, 0xac, 0x5f, 0xed, 0xee, 0xb5, 0xb5, 0x6b, 0xbd, 0xbb, 0x02, 0xb8, 0xff, 0x09,
0xfa, 0xc6, 0x7e, 0x9c, 0x0e, 0xbd, 0x0b, 0xea, 0xe4, 0x8c, 0xd3, 0xa1, 0x30, 0xba, 0x64, 0x12,
0xc9, 0xc3, 0x63, 0xfb, 0x39, 0x09, 0x71, 0x51, 0xf4, 0x83, 0x34, 0xc4, 0x89, 0x76, 0x78, 0x0c,
0x64, 0x3e, 0x17, 0x5a, 0x0e, 0x8f, 0x35, 0x20, 0xb9, 0xec, 0x3c, 0x8c, 0x0b, 0x4a, 0xf2, 0x79,
0x79, 0x50, 0x58, 0x2d, 0x1f, 0x20, 0x51, 0x8f, 0x0a, 0x5f, 0x75, 0x21, 0xb2, 0x33, 0x02, 0x01,
0xfc, 0x78, 0x41, 0x3f, 0xc3, 0x57, 0xa9, 0x55, 0x62, 0x4b, 0x67, 0x64, 0xc0, 0xe4, 0x76, 0xa6,
0x8a, 0x1b, 0x53, 0x10, 0x6b, 0xdb, 0x19, 0x11, 0x9a, 0x00, 0x2c, 0xdb, 0x19, 0x23, 0x08, 0x7e,
0xfa, 0xe8, 0x75, 0xf8, 0x26, 0x7c, 0x51, 0x3b, 0xe2, 0xaf, 0x7c, 0x0d, 0xfe, 0xd0, 0x2c, 0x04,
0x23, 0xbf, 0x42, 0xef, 0xf2, 0x4b, 0xe2, 0x17, 0x45, 0x5a, 0x31, 0xd1, 0xa4, 0x96, 0x62, 0xd2,
0xa4, 0x74, 0xfb, 0x87, 0x78, 0x92, 0x25, 0x01, 0xc5, 0x85, 0xd1, 0xbe, 0x90, 0x3a, 0xed, 0xd7,
0x29, 0xb0, 0x1f, 0xa0, 0xb3, 0x5c, 0xb6, 0x47, 0xc2, 0x20, 0x61, 0x83, 0xa5, 0x1f, 0x2b, 0xd6,
0xc5, 0x96, 0xe7, 0x69, 0xc0, 0xe4, 0xef, 0x0d, 0x1e, 0x05, 0x63, 0x5c, 0x39, 0xd7, 0x12, 0xb1,
0x2e, 0xb2, 0x24, 0xa2, 0x86, 0x80, 0xd9, 0x39, 0x3a, 0x5f, 0x17, 0x6c, 0xcd, 0xe5, 0x74, 0xd5,
0x0a, 0xad, 0x0d, 0xb3, 0x14, 0x5a, 0x07, 0x0e, 0xae, 0x7f, 0x8e, 0xde, 0xe9, 0x27, 0x24, 0x95,
0xb7, 0xa4, 0xc6, 0xab, 0xc8, 0x2c, 0xef, 0x48, 0x74, 0x46, 0x5a, 0xde, 0xcc, 0xb2, 0x64, 0x6e,
0xb1, 0xac, 0xc8, 0x2c, 0x96, 0x75, 0x46, 0xb6, 0x06, 0xdb, 0xf8, 0x78, 0x3a, 0x1c, 0xcc, 0xd3,
0x50, 0x6b, 0x0d, 0xca, 0xeb, 0x3e, 0x13, 0x58, 0x5a, 0x03, 0x05, 0x90, 0xd5, 0xa5, 0xbc, 0x7c,
0x38, 0xca, 0x71, 0xe3, 0xe7, 0x1e, 0x5c, 0x81, 0x8b, 0x6c, 0x3f, 0x22, 0x51, 0x11, 0x2d, 0xca,
0xc3, 0x1c, 0x63, 0x63, 0x94, 0x4c, 0xe0, 0x8c, 0x12, 0x00, 0xb0, 0xb7, 0x8e, 0xde, 0x66, 0x6b,
0x24, 0x4e, 0xef, 0x97, 0xbf, 0xf6, 0xf5, 0xce, 0x08, 0x8d, 0xfb, 0x93, 0x8c, 0xce, 0x97, 0x6a,
0xff, 0x33, 0x60, 0xbd, 0xb7, 0x75, 0xe5, 0x3f, 0x2f, 0x96, 0x7b, 0x5f, 0xbf, 0x58, 0xee, 0xfd,
0xef, 0xc5, 0x72, 0xef, 0xab, 0x97, 0xcb, 0xaf, 0x7d, 0xfd, 0x72, 0xf9, 0xb5, 0xff, 0xbe, 0x5c,
0x7e, 0xed, 0xf3, 0x37, 0xe0, 0xd7, 0xc6, 0xc7, 0xaf, 0x97, 0xbf, 0x19, 0xbe, 0xf7, 0xff, 0x00,
0x00, 0x00, 0xff, 0xff, 0x6f, 0xe1, 0x0a, 0x22, 0x91, 0x3c, 0x00, 0x00,
// 2989 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9b, 0xcd, 0x6f, 0xdc, 0xc6,
0x15, 0xc0, 0xb3, 0x40, 0x91, 0xa4, 0x93, 0xc4, 0x71, 0xd8, 0x3a, 0xb1, 0xe5, 0x54, 0xfe, 0x88,
0x1d, 0xdb, 0xb2, 0x45, 0xc9, 0x72, 0x9b, 0xa2, 0x9f, 0x81, 0xb4, 0xb2, 0x65, 0x21, 0xb2, 0xad,
0x6a, 0x65, 0xab, 0x08, 0xfa, 0x45, 0x91, 0xe3, 0x5d, 0x66, 0xb9, 0x1c, 0x86, 0x9c, 0x5d, 0x69,
0x0b, 0xb4, 0xe8, 0x17, 0x0a, 0xf4, 0x16, 0xa0, 0xc7, 0x9e, 0x7a, 0xed, 0x5f, 0xd2, 0x63, 0x8e,
0x3d, 0x16, 0xf6, 0xa1, 0xff, 0x46, 0x31, 0x9c, 0xc7, 0x19, 0xce, 0x70, 0x66, 0xc8, 0xf5, 0x49,
0x10, 0xdf, 0xef, 0x7d, 0x70, 0xf8, 0xe6, 0xcd, 0x1b, 0x72, 0x16, 0x5d, 0xca, 0x8e, 0xd7, 0xb2,
0x9c, 0x50, 0x52, 0xac, 0x15, 0x38, 0x9f, 0xc5, 0x21, 0xae, 0xfe, 0xfa, 0xe5, 0x65, 0xef, 0x8d,
0x20, 0x9d, 0xd3, 0x79, 0x86, 0x97, 0xce, 0x4b, 0x32, 0x24, 0x93, 0x49, 0x90, 0x46, 0x05, 0x47,
0x96, 0xde, 0x97, 0x12, 0x3c, 0xc3, 0x29, 0x85, 0xeb, 0x1b, 0xff, 0x3b, 0x45, 0x67, 0xfa, 0x49,
0x8c, 0x53, 0xda, 0x07, 0x05, 0x2f, 0x47, 0xe7, 0x9e, 0x1c, 0x7f, 0x81, 0x43, 0xba, 0x19, 0x45,
0x47, 0x31, 0x1d, 0xf1, 0x7f, 0x76, 0x23, 0xef, 0xb6, 0x0f, 0x7e, 0xfc, 0x83, 0x2c, 0xf4, 0xf9,
0x65, 0x5f, 0x83, 0xfc, 0x03, 0xfc, 0xe5, 0x14, 0x17, 0x74, 0xe9, 0x4e, 0x37, 0xb8, 0xc8, 0x48,
0x5a, 0x60, 0xef, 0x39, 0x7a, 0x8f, 0x5f, 0x1c, 0x8c, 0x82, 0x1c, 0x6f, 0xcd, 0xf7, 0xe2, 0x74,
0xec, 0xdd, 0x30, 0x99, 0xa8, 0x01, 0xc2, 0xd7, 0xcd, 0x76, 0x10, 0xfc, 0x1c, 0xa1, 0xb7, 0x8f,
0x82, 0x24, 0xc1, 0xb4, 0x9f, 0xe3, 0x80, 0x62, 0xef, 0xaa, 0xa2, 0xc9, 0x45, 0x3e, 0x97, 0x09,
0xeb, 0x1f, 0x39, 0x19, 0x30, 0xfc, 0x39, 0x7a, 0x87, 0x4b, 0x0e, 0x70, 0x48, 0x66, 0x38, 0xf7,
0x8c, 0x5a, 0x20, 0x14, 0xa6, 0xaf, 0xb9, 0x21, 0xdd, 0x76, 0x9f, 0xa4, 0x33, 0x9c, 0x53, 0xb3,
0x6d, 0x10, 0xba, 0x6d, 0x4b, 0x08, 0x6c, 0xff, 0x06, 0xbd, 0x7b, 0x44, 0xf2, 0x71, 0x91, 0x05,
0x21, 0x86, 0x31, 0xb9, 0xae, 0x2a, 0x56, 0x52, 0x7d, 0x58, 0x3e, 0x6e, 0xc3, 0x0c, 0x1e, 0x06,
0x38, 0xc1, 0x21, 0xb5, 0x7a, 0xe0, 0xe2, 0x56, 0x0f, 0x02, 0x03, 0x0f, 0x09, 0xfa, 0x96, 0x10,
0xee, 0x60, 0xda, 0x9f, 0xe6, 0x39, 0x4e, 0xa9, 0x77, 0xcb, 0xa2, 0x2e, 0x11, 0xe1, 0x69, 0xa5,
0x0b, 0x6a, 0xb8, 0x9f, 0x1d, 0x4c, 0x37, 0x93, 0xc4, 0x7a, 0x3f, 0x5c, 0xdc, 0x7a, 0x3f, 0x02,
0x03, 0x0f, 0xbf, 0x47, 0x17, 0x6a, 0x23, 0x46, 0x77, 0x8b, 0x87, 0xf1, 0x70, 0x94, 0xc4, 0xc3,
0x11, 0xc5, 0x91, 0xb7, 0x66, 0x1d, 0x14, 0x15, 0x14, 0x5e, 0xd7, 0xbb, 0x2b, 0x80, 0xff, 0x5f,
0xa2, 0x33, 0x9b, 0x61, 0x48, 0xa6, 0xa9, 0x48, 0x66, 0x35, 0x97, 0x40, 0xd8, 0xc8, 0xe6, 0xeb,
0x2d, 0x94, 0x4c, 0x67, 0x90, 0x41, 0xc2, 0x7d, 0x64, 0xd4, 0xd3, 0xd2, 0xed, 0x9a, 0x1b, 0x6a,
0xd8, 0x86, 0x54, 0x33, 0xdb, 0xd6, 0x12, 0xed, 0x9a, 0x1b, 0x02, 0xdb, 0x87, 0xe8, 0xad, 0xca,
0x36, 0x25, 0x99, 0x77, 0xc5, 0xac, 0x44, 0x49, 0x26, 0xec, 0x5e, 0x75, 0x21, 0xd2, 0xea, 0x83,
0x38, 0xc1, 0x4f, 0x9e, 0x3f, 0x4f, 0x48, 0x10, 0x69, 0x56, 0x99, 0xc4, 0x07, 0x91, 0xc5, 0xaa,
0x86, 0xc8, 0x24, 0x65, 0x82, 0xbd, 0xb8, 0xa0, 0x95, 0xe5, 0xeb, 0x0d, 0x35, 0x26, 0x6d, 0x58,
0xff, 0xb8, 0x0d, 0x03, 0x0f, 0x3f, 0x43, 0xe8, 0x19, 0xce, 0x8b, 0x98, 0xa4, 0x3b, 0x98, 0x7a,
0x97, 0x15, 0x2d, 0x10, 0xb0, 0xc4, 0x16, 0x76, 0xaf, 0x38, 0x08, 0x30, 0xf9, 0x10, 0xbd, 0xb1,
0x47, 0x86, 0x03, 0x9c, 0x46, 0xde, 0x77, 0x14, 0x7a, 0x8f, 0x0c, 0x7d, 0x76, 0x59, 0x18, 0x5b,
0xb6, 0x89, 0xc1, 0xd2, 0x63, 0xf4, 0xcd, 0x3e, 0x49, 0x9f, 0xc7, 0x43, 0x16, 0xdb, 0x25, 0x05,
0xe6, 0xd7, 0x95, 0xd0, 0x2e, 0xdb, 0x01, 0xb0, 0xb7, 0x8b, 0xde, 0x1c, 0x8c, 0xa6, 0x34, 0x22,
0x27, 0xa9, 0x16, 0x5a, 0x75, 0xd9, 0x12, 0x5a, 0x4d, 0x2c, 0x57, 0xba, 0xfb, 0xa7, 0x14, 0xe7,
0x69, 0x90, 0x6c, 0xe7, 0x24, 0x63, 0x03, 0x5c, 0x68, 0x2b, 0x5d, 0x5d, 0x5e, 0x3e, 0x81, 0xc2,
0xb2, 0xd2, 0x19, 0x41, 0x59, 0x14, 0xeb, 0xe2, 0x3e, 0x49, 0x69, 0xb3, 0x28, 0x2a, 0x06, 0x00,
0xb1, 0x14, 0x45, 0x0b, 0x0a, 0xde, 0x0e, 0xd0, 0x5b, 0x6c, 0xa1, 0xdd, 0xcf, 0xf1, 0x2c, 0xc6,
0x27, 0x5a, 0x3a, 0xd4, 0x24, 0x96, 0x74, 0x50, 0x09, 0xb0, 0xf9, 0x04, 0xa1, 0xa7, 0x19, 0x4b,
0x3a, 0x76, 0x67, 0xda, 0x53, 0x94, 0x02, 0xcb, 0x53, 0x54, 0x00, 0x30, 0xf8, 0x14, 0xbd, 0xbd,
0x4d, 0x4e, 0x52, 0x61, 0x52, 0x8d, 0xa1, 0x2e, 0xb2, 0xcc, 0x35, 0x0d, 0x91, 0x33, 0x78, 0x2b,
0x21, 0xe1, 0x98, 0xbb, 0xd4, 0xac, 0x96, 0x12, 0x88, 0xc6, 0x62, 0x55, 0x43, 0x64, 0xa7, 0x52,
0x0a, 0x0e, 0x70, 0x96, 0x04, 0xa1, 0xde, 0xa9, 0x70, 0x1d, 0x90, 0x59, 0x3a, 0x15, 0x9d, 0x01,
0xc3, 0x31, 0xf2, 0x20, 0xdc, 0x28, 0xa0, 0xb8, 0xca, 0x8b, 0x9b, 0xc6, 0x90, 0x6a, 0x84, 0x70,
0x72, 0xab, 0x03, 0x29, 0xa7, 0x61, 0x29, 0x7f, 0x92, 0xe1, 0x54, 0x7b, 0x80, 0x5c, 0x8f, 0x09,
0x2c, 0x0f, 0x50, 0x01, 0x34, 0x7b, 0x83, 0x11, 0x39, 0x31, 0xda, 0x63, 0x02, 0xa7, 0x3d, 0x00,
0xc0, 0x1e, 0x41, 0xdf, 0x2e, 0x2f, 0xef, 0x60, 0xba, 0x3f, 0x3d, 0x4e, 0xe2, 0xf0, 0x08, 0x1f,
0x3f, 0x3d, 0xd8, 0xf3, 0x56, 0x0c, 0x9a, 0x1a, 0x23, 0xbc, 0xdc, 0xee, 0xc4, 0x6a, 0x0e, 0xd9,
0x6d, 0x6d, 0xe5, 0x38, 0x88, 0xc2, 0x7c, 0x3a, 0x39, 0x2e, 0x8c, 0x0e, 0x35, 0xc6, 0xe9, 0xb0,
0xc9, 0xca, 0x2a, 0xc0, 0x47, 0x0c, 0xd3, 0xba, 0x3f, 0xd3, 0x33, 0x54, 0x11, 0x4b, 0x15, 0xb0,
0xa0, 0xda, 0x4c, 0x80, 0x75, 0xdd, 0x34, 0x13, 0xb4, 0x55, 0xfd, 0xaa, 0x0b, 0x91, 0x6b, 0x59,
0xcd, 0xea, 0x7e, 0x30, 0xd4, 0x5b, 0xd4, 0xba, 0x1a, 0x13, 0x5b, 0xd6, 0x32, 0x03, 0x26, 0x1b,
0x9e, 0x9a, 0x87, 0x01, 0xa6, 0x5a, 0xc3, 0x53, 0xd7, 0x1c, 0xd4, 0x16, 0x8e, 0xeb, 0x2d, 0x94,
0x5e, 0x20, 0xd2, 0x84, 0x6d, 0x6b, 0x8c, 0x05, 0xa2, 0x14, 0xb9, 0x0b, 0x44, 0x85, 0xc8, 0x05,
0x98, 0x07, 0x9d, 0x90, 0x02, 0x7b, 0xa6, 0x64, 0x2f, 0x25, 0x96, 0x8a, 0xab, 0x12, 0xb2, 0x7b,
0x2a, 0xaf, 0x57, 0x75, 0xce, 0x33, 0x15, 0x94, 0x4a, 0x68, 0xe9, 0x9e, 0x1a, 0x10, 0xd8, 0xfe,
0x05, 0xd8, 0xde, 0xc1, 0xf4, 0x51, 0x90, 0x8f, 0x0b, 0xe3, 0x10, 0xb3, 0x45, 0xb7, 0x94, 0x3a,
0x87, 0xb8, 0x4e, 0x69, 0x95, 0xe1, 0x69, 0x1a, 0x11, 0x63, 0x65, 0x60, 0x02, 0x67, 0x65, 0x00,
0x40, 0xb3, 0x77, 0x80, 0x2d, 0xf6, 0x98, 0xc0, 0x69, 0x0f, 0x00, 0xb0, 0xf7, 0x6b, 0xc8, 0xb0,
0x01, 0xa6, 0x0f, 0x62, 0x9c, 0x44, 0x85, 0x31, 0x85, 0x59, 0xd6, 0x70, 0xb1, 0x33, 0x85, 0x15,
0x0c, 0x1c, 0x7c, 0x09, 0x95, 0x65, 0xc0, 0x76, 0xa0, 0x05, 0xcd, 0xe3, 0x90, 0xc6, 0x24, 0x2d,
0xbc, 0xdb, 0x16, 0xfd, 0x3a, 0x64, 0xd9, 0xb3, 0x5b, 0x61, 0x2d, 0x5b, 0x58, 0x7f, 0xf8, 0x88,
0xcc, 0xb0, 0x29, 0x5b, 0xca, 0xde, 0x91, 0x09, 0x5d, 0xd9, 0x52, 0x87, 0xc0, 0xf6, 0x14, 0xbd,
0xaf, 0xd8, 0x3e, 0x24, 0x8f, 0xf1, 0x49, 0x39, 0xf5, 0xef, 0x38, 0xf4, 0x05, 0x25, 0xbc, 0xad,
0x76, 0xa4, 0xc1, 0xed, 0x57, 0x3d, 0x74, 0x49, 0x40, 0xb0, 0x57, 0xee, 0x8f, 0xe2, 0x24, 0xca,
0x71, 0x7a, 0x48, 0x18, 0x5b, 0x78, 0xdf, 0xb3, 0x98, 0x34, 0xe3, 0x22, 0x92, 0x4f, 0x16, 0x55,
0x83, 0x90, 0xc6, 0xb0, 0x5c, 0x33, 0x58, 0x66, 0xcf, 0x2d, 0x8b, 0x35, 0x43, 0x06, 0xad, 0x74,
0x41, 0xc1, 0xd9, 0x0c, 0x9d, 0xab, 0x3b, 0x3b, 0xc4, 0xa7, 0x74, 0x40, 0xe7, 0x09, 0xf6, 0x56,
0x1d, 0x46, 0x18, 0xe5, 0x97, 0x98, 0xf0, 0xe9, 0x77, 0xc5, 0xb5, 0x9e, 0x84, 0x41, 0xdb, 0xd3,
0x2c, 0x89, 0x43, 0xb6, 0x7e, 0xdc, 0xb4, 0x58, 0x11, 0x84, 0xab, 0x27, 0x69, 0x90, 0xe0, 0xea,
0xaf, 0x3d, 0x74, 0xb1, 0x7e, 0x8f, 0x5b, 0x41, 0x38, 0x1e, 0xe6, 0x64, 0x9a, 0x46, 0x7d, 0x92,
0x90, 0xdc, 0xdb, 0x70, 0x84, 0xae, 0xb1, 0xc2, 0xfd, 0xbd, 0x85, 0x74, 0x20, 0x90, 0x11, 0x7a,
0xaf, 0x1e, 0xc7, 0x66, 0x12, 0x0f, 0x53, 0xeb, 0x2d, 0x33, 0x4b, 0x25, 0xd1, 0x7a, 0xcb, 0x75,
0x12, 0x3c, 0x15, 0x50, 0x1b, 0xc0, 0xd3, 0x76, 0x3c, 0xe3, 0x0f, 0xf5, 0x8e, 0xc3, 0xc4, 0x76,
0x3c, 0xd3, 0x9e, 0xe9, 0x6a, 0x47, 0xda, 0x9c, 0x4a, 0xac, 0x65, 0x6e, 0x4f, 0xa5, 0xb2, 0xb1,
0xee, 0x9e, 0x4a, 0x0a, 0x2e, 0xf7, 0x57, 0x02, 0x3a, 0x9c, 0xe6, 0xe9, 0x6e, 0x4a, 0x89, 0xb6,
0xbf, 0x92, 0x46, 0x2a, 0xc0, 0xb2, 0xbf, 0x32, 0x82, 0xe0, 0xe7, 0x0b, 0xf0, 0x33, 0xc0, 0x74,
0x2f, 0xa0, 0xf8, 0x94, 0xa5, 0xb5, 0xad, 0xaf, 0xf2, 0x4b, 0x82, 0x67, 0x7e, 0x4b, 0x5f, 0xa5,
0xa2, 0xe0, 0x6b, 0x88, 0xce, 0x56, 0xbe, 0x98, 0xa0, 0x74, 0x75, 0xd3, 0xa2, 0x5f, 0x6a, 0x2a,
0x9e, 0x6e, 0x75, 0x20, 0x9b, 0x37, 0xc5, 0x04, 0x7c, 0x46, 0x38, 0xf5, 0xd5, 0x89, 0xb0, 0xd2,
0x05, 0xb5, 0xd7, 0x1a, 0xee, 0xaf, 0xb5, 0xd6, 0xa8, 0x3e, 0xfd, 0xae, 0xb8, 0x79, 0x36, 0x30,
0x84, 0x35, 0x13, 0xce, 0xd9, 0x50, 0xda, 0x61, 0x54, 0xa7, 0xd9, 0x50, 0xa7, 0xcd, 0x03, 0xcb,
0x67, 0x82, 0x73, 0x60, 0xd5, 0x59, 0xb0, 0xd2, 0x05, 0x05, 0x5f, 0x99, 0xec, 0xf9, 0xcb, 0x41,
0x1d, 0xe1, 0x70, 0x8c, 0x23, 0x6b, 0x27, 0xc0, 0xc7, 0x88, 0x43, 0xad, 0x9d, 0x80, 0x06, 0x6b,
0xad, 0xe8, 0x20, 0x4b, 0x62, 0x6a, 0x6c, 0x45, 0x4b, 0x89, 0xb3, 0x15, 0xad, 0x08, 0xcd, 0xe4,
0x23, 0x9c, 0x0f, 0xcd, 0xdd, 0x6d, 0x29, 0x71, 0x9a, 0xac, 0x08, 0xad, 0xa7, 0xeb, 0x93, 0x6c,
0x6e, 0xec, 0xe9, 0x98, 0xc0, 0xd9, 0xd3, 0x01, 0xa0, 0x85, 0xb8, 0x1f, 0x14, 0xd4, 0x1c, 0x62,
0x29, 0x71, 0x86, 0x58, 0x11, 0x60, 0xf2, 0x33, 0xf4, 0x26, 0x0f, 0x71, 0x4a, 0xbd, 0x65, 0x53,
0x00, 0x53, 0x39, 0x88, 0x97, 0xac, 0x72, 0x6d, 0xdb, 0x71, 0xff, 0x34, 0x23, 0x39, 0x35, 0x6e,
0x3b, 0xb8, 0xc8, 0xb9, 0xed, 0x10, 0x88, 0xb6, 0xa3, 0xdc, 0x9d, 0xb0, 0xeb, 0x2c, 0xcb, 0xcb,
0xb7, 0x62, 0xa6, 0x5c, 0x56, 0x11, 0x67, 0x2e, 0x37, 0xd0, 0x66, 0xe5, 0x63, 0xc5, 0xfe, 0x71,
0x30, 0xc1, 0xd6, 0xca, 0x57, 0xae, 0x06, 0x8c, 0x68, 0xad, 0x7c, 0x75, 0xb2, 0x39, 0x41, 0x77,
0x27, 0xc1, 0x90, 0x7b, 0xb2, 0xe9, 0x97, 0x84, 0xea, 0x6a, 0xa5, 0x0b, 0x0a, 0xbe, 0x26, 0xd0,
0xed, 0x54, 0xbe, 0x8e, 0xe2, 0x88, 0x8e, 0x3c, 0xb7, 0x85, 0x92, 0x71, 0xbe, 0x03, 0x68, 0xb2,
0xcd, 0x5b, 0x7b, 0x16, 0x47, 0x98, 0x38, 0x6f, 0xad, 0x24, 0xba, 0xdd, 0x9a, 0x82, 0x36, 0x6f,
0xad, 0x14, 0xbb, 0x6f, 0x8d, 0x5b, 0xe8, 0x76, 0x6b, 0x2a, 0x0b, 0xee, 0xfe, 0xd4, 0x43, 0x17,
0xc4, 0x2a, 0x1c, 0xa7, 0xe3, 0xc3, 0x20, 0x1f, 0x62, 0xca, 0xf3, 0x33, 0xf2, 0xee, 0xda, 0x96,
0x58, 0xb6, 0x8f, 0x56, 0x50, 0xe1, 0x7d, 0x63, 0x11, 0x15, 0xad, 0x43, 0xdf, 0x22, 0x64, 0x3c,
0x09, 0xf2, 0xf1, 0x03, 0x4c, 0xc3, 0x91, 0x71, 0x80, 0x2b, 0xc2, 0x2f, 0x11, 0xe7, 0x00, 0x37,
0x50, 0xbd, 0x7d, 0xad, 0x00, 0xfe, 0xbe, 0x61, 0x33, 0x8d, 0xb8, 0xdb, 0x0d, 0x97, 0x2d, 0x95,
0x75, 0xb5, 0xaf, 0x0e, 0x1d, 0x08, 0xe4, 0x77, 0xe8, 0x7c, 0x49, 0xb2, 0xb9, 0x24, 0x18, 0x78,
0x05, 0xba, 0x66, 0x30, 0x58, 0xce, 0x39, 0x0d, 0xb4, 0x7c, 0xa3, 0x72, 0x2a, 0x80, 0xfb, 0x14,
0xca, 0xd0, 0x01, 0x4e, 0x02, 0xb6, 0x2f, 0x1d, 0x60, 0xfa, 0x19, 0x9e, 0x1b, 0x33, 0xad, 0x42,
0x7c, 0xce, 0x38, 0x33, 0xad, 0xc9, 0x82, 0x3f, 0x0c, 0x85, 0xa8, 0x02, 0x36, 0xa3, 0xc8, 0xd4,
0x55, 0x4a, 0x03, 0x9b, 0x51, 0xe4, 0xea, 0x2a, 0x75, 0x10, 0xdc, 0xfc, 0x16, 0x7d, 0xc0, 0xdf,
0xc0, 0x04, 0x34, 0x98, 0xc5, 0xf8, 0xe4, 0x59, 0x8c, 0x4f, 0xe0, 0x6d, 0x9a, 0x6f, 0x7a, 0xcd,
0x02, 0x98, 0x2f, 0x39, 0xe1, 0x74, 0xad, 0x33, 0xef, 0xf0, 0xbd, 0x8d, 0x13, 0xdc, 0xc5, 0x37,
0xe7, 0xba, 0xfb, 0x16, 0xbc, 0xc3, 0x37, 0x7f, 0xa9, 0xdc, 0xee, 0x9b, 0x73, 0xdd, 0x7d, 0x0b,
0x1e, 0x7c, 0xff, 0xb9, 0x87, 0x96, 0x1a, 0xce, 0xd9, 0x8e, 0x2c, 0xa4, 0xf1, 0x0c, 0x1b, 0xab,
0x88, 0x62, 0x4f, 0xa0, 0xce, 0x2a, 0x62, 0x55, 0x81, 0x28, 0xfe, 0xd6, 0x43, 0x1f, 0x9a, 0xa2,
0xd8, 0x27, 0x45, 0xcc, 0xf2, 0xc4, 0xbb, 0xd7, 0xc1, 0x68, 0x05, 0x8b, 0x48, 0xbe, 0xbb, 0x98,
0x12, 0xc4, 0x72, 0x02, 0x6f, 0x5f, 0x2a, 0x72, 0x80, 0xe9, 0x80, 0x4c, 0xf3, 0xd0, 0xb8, 0x79,
0x93, 0xf6, 0x04, 0xe6, 0xea, 0xcd, 0xcd, 0xb8, 0x56, 0x54, 0x2a, 0xa6, 0x3e, 0xdb, 0x9c, 0xcf,
0xb5, 0x06, 0x3a, 0x8b, 0x8a, 0x45, 0x41, 0x2f, 0xae, 0xba, 0x7f, 0x48, 0xc5, 0x8d, 0x2e, 0x16,
0xb5, 0x74, 0xbc, 0xb7, 0x90, 0x4e, 0x5b, 0x20, 0x30, 0x1f, 0x3b, 0x05, 0xa2, 0xcd, 0xc9, 0x7b,
0x0b, 0xe9, 0x40, 0x20, 0xff, 0xe8, 0xa1, 0xab, 0xc6, 0x40, 0xd8, 0x66, 0x67, 0x73, 0x16, 0xc4,
0x49, 0x70, 0x9c, 0x60, 0xef, 0x07, 0x5d, 0x6c, 0x2b, 0x2a, 0x22, 0xac, 0x1f, 0xbe, 0x8a, 0x2a,
0x44, 0xf7, 0x87, 0x6a, 0xf9, 0x97, 0xd1, 0x85, 0x24, 0x8f, 0xa0, 0x60, 0xb6, 0x3c, 0x7f, 0x49,
0x8a, 0x58, 0xee, 0x2e, 0xa0, 0x01, 0x21, 0xfc, 0xb3, 0x87, 0xae, 0x19, 0x42, 0xa8, 0x02, 0x7f,
0x92, 0x55, 0xe9, 0xfb, 0xa3, 0x76, 0xdb, 0x0d, 0x25, 0x11, 0xd8, 0x8f, 0x5f, 0x4d, 0x19, 0x62,
0xfc, 0x57, 0x0f, 0xdd, 0x68, 0x8d, 0x11, 0x52, 0xfc, 0xa7, 0x8b, 0x7a, 0xd2, 0xd2, 0xfd, 0xd3,
0x57, 0xd6, 0x5f, 0x24, 0x58, 0x98, 0x06, 0x0b, 0x07, 0xab, 0x4d, 0x89, 0x4f, 0x5f, 0x59, 0x5f,
0x6b, 0xfd, 0xf8, 0x91, 0xb3, 0xc3, 0x79, 0x56, 0x7e, 0x3c, 0x32, 0xb5, 0x7e, 0x92, 0xf0, 0xeb,
0x5f, 0x90, 0x56, 0xba, 0xa0, 0xe0, 0x2c, 0x47, 0xe7, 0x1e, 0x07, 0xb3, 0x78, 0x28, 0x66, 0x04,
0x07, 0xf5, 0x77, 0xfc, 0x92, 0xf1, 0x6b, 0x90, 0x65, 0x67, 0x6f, 0x85, 0xc1, 0xe7, 0xdf, 0x7b,
0xe8, 0xb2, 0x64, 0x76, 0x30, 0x10, 0xbb, 0xe9, 0x73, 0x72, 0x14, 0xd3, 0x11, 0x6b, 0x8b, 0x0b,
0xef, 0x13, 0x9b, 0x49, 0x33, 0x2f, 0x42, 0xf9, 0xfe, 0xc2, 0x7a, 0x72, 0x67, 0xcb, 0xe5, 0x3b,
0x79, 0x90, 0x8d, 0xb4, 0x9d, 0x2d, 0x1c, 0xff, 0x2b, 0x45, 0x96, 0x9d, 0xad, 0x86, 0xc8, 0x2f,
0xee, 0x70, 0x06, 0x11, 0x07, 0x79, 0x38, 0xf2, 0x8c, 0x3a, 0x5c, 0x66, 0xf9, 0xe2, 0xae, 0x33,
0xf2, 0xc1, 0xd5, 0x0d, 0x0f, 0xa6, 0xc7, 0x45, 0x98, 0xc7, 0xc7, 0xd8, 0x7c, 0xa0, 0x52, 0x83,
0xdc, 0x07, 0x2a, 0x9b, 0xb0, 0x7c, 0xa3, 0x5e, 0x9d, 0xb2, 0x2c, 0xa4, 0x43, 0xe3, 0x41, 0xc9,
0x3a, 0x61, 0xd9, 0x3a, 0x9b, 0x49, 0x70, 0x75, 0x8a, 0x3e, 0xa8, 0xdf, 0xde, 0xd3, 0xb4, 0x10,
0xfe, 0x56, 0xed, 0x31, 0xd7, 0x30, 0x4b, 0xbb, 0xe0, 0xc0, 0xf5, 0x53, 0xa3, 0xf6, 0xae, 0x1c,
0x8c, 0x98, 0xfa, 0x83, 0x9b, 0xed, 0xa0, 0xfc, 0x6c, 0xaf, 0xfa, 0x81, 0x62, 0xb9, 0xe2, 0xb2,
0xa0, 0x15, 0xc6, 0xdb, 0x9d, 0x58, 0x9b, 0x43, 0x28, 0x78, 0x4e, 0x87, 0x5a, 0x71, 0xbb, 0xdd,
0x89, 0xd5, 0x9f, 0x61, 0x73, 0xe1, 0x5a, 0x75, 0xd9, 0x69, 0x2e, 0x55, 0x7e, 0x57, 0x1c, 0x3c,
0xff, 0xb1, 0x87, 0x96, 0x4c, 0xae, 0x61, 0x88, 0xd7, 0xdb, 0xcd, 0x69, 0x03, 0x7d, 0x77, 0x01,
0x8d, 0x96, 0x18, 0x60, 0xd4, 0x3b, 0xc4, 0xa0, 0x8d, 0xfd, 0xdd, 0x05, 0x34, 0x20, 0x86, 0xbf,
0xf4, 0xd0, 0x45, 0x35, 0x06, 0xb5, 0xc5, 0x72, 0x9a, 0x34, 0xb7, 0x56, 0x1b, 0x8b, 0xa8, 0xc8,
0xc3, 0x16, 0xd5, 0x64, 0xa6, 0x7b, 0xc1, 0x9c, 0x4c, 0xf5, 0xd3, 0xba, 0x62, 0x56, 0x82, 0xd8,
0xf2, 0xa5, 0xda, 0x80, 0xd5, 0x9a, 0x36, 0x2e, 0x7d, 0x80, 0x03, 0x3a, 0xcd, 0x71, 0x54, 0x9f,
0xbd, 0xc6, 0xb1, 0xd6, 0x41, 0x65, 0x73, 0x7d, 0x77, 0x01, 0x8d, 0xda, 0x5e, 0xcb, 0x1c, 0xc2,
0x01, 0x9e, 0x90, 0x19, 0xd6, 0xf6, 0x5a, 0x36, 0x9b, 0x1c, 0xb6, 0xec, 0xb5, 0x5a, 0x95, 0xe4,
0xfb, 0x54, 0x31, 0xe0, 0xbb, 0xc5, 0x83, 0x60, 0x46, 0xf2, 0x98, 0xea, 0xef, 0xe7, 0xe4, 0x68,
0x4a, 0xc4, 0xd2, 0x43, 0x58, 0x50, 0xa3, 0xb7, 0xcd, 0x3c, 0x1c, 0xc5, 0x33, 0x1c, 0x39, 0xbc,
0x55, 0x48, 0x07, 0x6f, 0x35, 0x54, 0x5f, 0xa7, 0x0f, 0x09, 0xeb, 0x8b, 0x8c, 0xeb, 0x74, 0x29,
0x72, 0xaf, 0xd3, 0x15, 0x02, 0x56, 0x43, 0x74, 0x96, 0x0b, 0xca, 0xaf, 0xc5, 0x7c, 0x8a, 0x9a,
0x92, 0x8f, 0x7f, 0x01, 0x56, 0x27, 0xe6, 0x8d, 0x56, 0x4e, 0xbe, 0x90, 0x90, 0x52, 0x75, 0xb0,
0x7c, 0x9b, 0x8d, 0xf2, 0x0d, 0x6c, 0x73, 0xc4, 0xd6, 0x3a, 0xf3, 0x56, 0xdf, 0x22, 0x2d, 0x5a,
0x7c, 0x37, 0x72, 0x63, 0xad, 0x33, 0x0f, 0xbe, 0x8f, 0xe1, 0xb0, 0xd5, 0x00, 0xd3, 0x6d, 0x4c,
0x83, 0x38, 0x29, 0x3c, 0xdb, 0x11, 0x14, 0x90, 0x5b, 0xc6, 0xd6, 0xc4, 0xc9, 0x0f, 0x27, 0xfb,
0xc1, 0xb0, 0xfa, 0xb9, 0x81, 0xfa, 0xe1, 0xa4, 0x3c, 0x8f, 0xa1, 0x6d, 0xcb, 0xae, 0x38, 0x08,
0xf9, 0x6d, 0x67, 0x20, 0x7e, 0xd4, 0xa1, 0x7e, 0x19, 0x19, 0x34, 0x7f, 0xd1, 0x71, 0xd9, 0x0e,
0xc8, 0x05, 0xf8, 0x11, 0xa6, 0x79, 0x1c, 0x16, 0x03, 0x4c, 0xf7, 0x83, 0x3c, 0x98, 0x60, 0x8a,
0x73, 0xfd, 0xa0, 0x1e, 0x20, 0xbe, 0xc2, 0x58, 0x16, 0x60, 0x1b, 0xab, 0x27, 0x35, 0xeb, 0xfb,
0xe1, 0x3e, 0x4c, 0x49, 0x5d, 0x6e, 0x0b, 0xb4, 0xdb, 0xb9, 0xd1, 0xca, 0xc9, 0x73, 0x6e, 0x52,
0xca, 0xd2, 0x40, 0x3b, 0x84, 0x55, 0x53, 0x2d, 0x93, 0xc4, 0x7c, 0x08, 0xab, 0x49, 0xc9, 0xd7,
0x46, 0x52, 0x56, 0x5f, 0x67, 0x8c, 0x3d, 0x44, 0x69, 0x40, 0x94, 0x45, 0xc5, 0x9f, 0xdf, 0x15,
0x07, 0xc7, 0xb4, 0x6a, 0xb0, 0xeb, 0x8e, 0xd9, 0x6a, 0x72, 0xa7, 0xd5, 0x50, 0x7d, 0x25, 0x59,
0xed, 0x48, 0xcb, 0x97, 0x55, 0x4d, 0xaf, 0xd0, 0xb6, 0xac, 0xb5, 0x9a, 0xd2, 0xba, 0x96, 0xf5,
0xee, 0x0a, 0x2e, 0xf7, 0xb0, 0x7e, 0xb5, 0xbb, 0xd7, 0xd6, 0xae, 0xf5, 0xee, 0x0a, 0xe0, 0xfe,
0x27, 0xe8, 0x1b, 0xfb, 0x71, 0x3a, 0xf4, 0x2e, 0xa8, 0x93, 0x33, 0x4e, 0x87, 0xc2, 0xe8, 0x92,
0x49, 0x24, 0x0f, 0x8f, 0xed, 0xe7, 0x24, 0xc4, 0x45, 0xd1, 0x0f, 0xd2, 0x10, 0x27, 0xda, 0xe1,
0x31, 0x90, 0xf9, 0x5c, 0x68, 0x39, 0x3c, 0xd6, 0x80, 0xe4, 0xb2, 0xf3, 0x30, 0x2e, 0x28, 0xc9,
0xe7, 0xe5, 0x41, 0x61, 0xb5, 0x7c, 0x80, 0x44, 0x3d, 0x2a, 0x7c, 0xd5, 0x85, 0xc8, 0xce, 0x08,
0x04, 0xf0, 0xe3, 0x05, 0xfd, 0x0c, 0x5f, 0xa5, 0x56, 0x89, 0x2d, 0x9d, 0x91, 0x01, 0x93, 0xdb,
0x99, 0x2a, 0x6e, 0x4c, 0x41, 0xac, 0x6d, 0x67, 0x44, 0x68, 0x02, 0xb0, 0x6c, 0x67, 0x8c, 0x20,
0xf8, 0xe9, 0xa3, 0xd7, 0xe1, 0x9b, 0xf0, 0x45, 0xed, 0x88, 0xbf, 0xf2, 0x35, 0xf8, 0x43, 0xb3,
0x10, 0x8c, 0xfc, 0x0a, 0xbd, 0xcb, 0x2f, 0x89, 0x5f, 0x14, 0x69, 0xc5, 0x44, 0x93, 0x5a, 0x8a,
0x49, 0x93, 0xd2, 0xed, 0x1f, 0xe2, 0x49, 0x96, 0x04, 0x14, 0x17, 0x46, 0xfb, 0x42, 0xea, 0xb4,
0x5f, 0xa7, 0xc0, 0x7e, 0x80, 0xce, 0x72, 0xd9, 0x1e, 0x09, 0x83, 0x84, 0x0d, 0x96, 0x7e, 0xac,
0x58, 0x17, 0x5b, 0x9e, 0xa7, 0x01, 0x93, 0xbf, 0x37, 0x78, 0x14, 0x8c, 0x71, 0xe5, 0x5c, 0x4b,
0xc4, 0xba, 0xc8, 0x92, 0x88, 0x1a, 0x02, 0x66, 0xe7, 0xe8, 0x7c, 0x5d, 0xb0, 0x35, 0x97, 0xd3,
0x55, 0x2b, 0xb4, 0x36, 0xcc, 0x52, 0x68, 0x1d, 0x38, 0xb8, 0xfe, 0x39, 0x7a, 0xa7, 0x9f, 0x90,
0x54, 0xde, 0x92, 0x1a, 0xaf, 0x22, 0xb3, 0xbc, 0x23, 0xd1, 0x19, 0xf9, 0xb8, 0xb9, 0x43, 0x79,
0xfc, 0xcf, 0xb4, 0x36, 0x35, 0x8f, 0xfe, 0x5d, 0x6f, 0xa1, 0x64, 0xe4, 0x9b, 0x59, 0x96, 0xcc,
0x2d, 0x91, 0x2b, 0x32, 0x4b, 0xe4, 0x3a, 0x23, 0x5b, 0x8f, 0x6d, 0x7c, 0x3c, 0x1d, 0x0e, 0xe6,
0x69, 0xa8, 0xb5, 0x1e, 0xe5, 0x75, 0x9f, 0x09, 0x2c, 0xad, 0x87, 0x02, 0xc8, 0xea, 0x55, 0x5e,
0x3e, 0x1c, 0xe5, 0xb8, 0xf1, 0x73, 0x12, 0xae, 0xc0, 0x45, 0xb6, 0x1f, 0xa9, 0xa8, 0x88, 0x16,
0xe5, 0x61, 0x8e, 0xb1, 0x31, 0x4a, 0x26, 0x70, 0x46, 0x09, 0x00, 0xd8, 0x5b, 0x47, 0x6f, 0xb3,
0x35, 0x18, 0xa7, 0xf7, 0xcb, 0x5f, 0x13, 0x7b, 0x67, 0x84, 0xc6, 0xfd, 0x49, 0x46, 0xe7, 0x4b,
0xb5, 0xff, 0x19, 0xb0, 0xde, 0xdb, 0xba, 0xf2, 0xef, 0x17, 0xcb, 0xbd, 0xaf, 0x5f, 0x2c, 0xf7,
0xfe, 0xfb, 0x62, 0xb9, 0xf7, 0xd5, 0xcb, 0xe5, 0xd7, 0xbe, 0x7e, 0xb9, 0xfc, 0xda, 0x7f, 0x5e,
0x2e, 0xbf, 0xf6, 0xf9, 0x1b, 0xf0, 0x6b, 0xe6, 0xe3, 0xd7, 0xcb, 0xdf, 0x24, 0xdf, 0xfb, 0x7f,
0x00, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x4f, 0x31, 0x1d, 0xf1, 0x3c, 0x00, 0x00,
}
// This is a compile-time assertion to ensure that this generated file
@ -375,6 +376,7 @@ type ClientCommandsHandler interface {
MakeTemplate(*pb.RpcMakeTemplateRequest) *pb.RpcMakeTemplateResponse
MakeTemplateByObjectType(*pb.RpcMakeTemplateByObjectTypeRequest) *pb.RpcMakeTemplateByObjectTypeResponse
CloneTemplate(*pb.RpcCloneTemplateRequest) *pb.RpcCloneTemplateResponse
ObjectDuplicate(*pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse
ApplyTemplate(*pb.RpcApplyTemplateRequest) *pb.RpcApplyTemplateResponse
DebugSync(*pb.RpcDebugSyncRequest) *pb.RpcDebugSyncResponse
DebugThread(*pb.RpcDebugThreadRequest) *pb.RpcDebugThreadResponse
@ -3187,6 +3189,26 @@ func CloneTemplate(b []byte) (resp []byte) {
return resp
}
func ObjectDuplicate(b []byte) (resp []byte) {
defer func() {
if PanicHandler != nil {
if r := recover(); r != nil {
resp, _ = (&pb.RpcObjectDuplicateResponse{Error: &pb.RpcObjectDuplicateResponseError{Code: pb.RpcObjectDuplicateResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
PanicHandler(r)
}
}
}()
in := new(pb.RpcObjectDuplicateRequest)
if err := in.Unmarshal(b); err != nil {
resp, _ = (&pb.RpcObjectDuplicateResponse{Error: &pb.RpcObjectDuplicateResponseError{Code: pb.RpcObjectDuplicateResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
return resp
}
resp, _ = clientCommandsHandler.ObjectDuplicate(in).Marshal()
return resp
}
func ApplyTemplate(b []byte) (resp []byte) {
defer func() {
if PanicHandler != nil {
@ -3553,6 +3575,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
cd = MakeTemplateByObjectType(data)
case "CloneTemplate":
cd = CloneTemplate(data)
case "ObjectDuplicate":
cd = ObjectDuplicate(data)
case "ApplyTemplate":
cd = ApplyTemplate(data)
case "DebugSync":

View file

@ -4,13 +4,13 @@ import (
"flag"
"fmt"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/datastore"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/datastore/clientds"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/objectstore"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
dsbadgerv3 "github.com/anytypeio/go-ds-badger3"
"github.com/gogo/protobuf/types"
ds "github.com/ipfs/go-datastore"
dsbadgerv1 "github.com/ipfs/go-ds-badger"
"math/rand"
"os"
@ -38,7 +38,7 @@ func (o *options) withDatastorePath(path string) *options {
}
func initObjecStore(o *options) (os objectstore.ObjectStore, closer func(), err error) {
var ds ds.TxnDatastore
var ds datastore.DSTxnBatching
if o.isV3 {
ds, err = initBadgerV3(o)
closer = func() {

View file

@ -205,9 +205,8 @@ func (mw *Middleware) AccountCreate(req *pb.RpcAccountCreateRequest) *pb.RpcAcco
details := []*pb.RpcBlockSetDetailsDetail{{Key: "name", Value: pbtypes.String(req.Name)}}
if req.GetAvatarLocalPath() != "" {
hash, err := bs.UploadFile(pb.RpcUploadFileRequest{
LocalPath: req.GetAvatarLocalPath(),
Type: model.BlockContentFile_Image,
DisableEncryption: true,
LocalPath: req.GetAvatarLocalPath(),
Type: model.BlockContentFile_Image,
})
if err != nil {
log.Warnf("can't add avatar: %v", err)

View file

@ -29,7 +29,6 @@ import (
"github.com/anytypeio/go-anytype-middleware/pb"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
coresb "github.com/anytypeio/go-anytype-middleware/pkg/lib/core/smartblock"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/files"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/objectstore"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/schema"
@ -613,7 +612,7 @@ func (s *service) CreateAndUploadFile(ctx *state.Context, req pb.RpcBlockFileCre
func (s *service) UploadFile(req pb.RpcUploadFileRequest) (hash string, err error) {
upl := file.NewUploader(s)
if req.DisableEncryption {
upl.AddOptions(files.WithPlaintext(true))
log.Errorf("DisableEncryption is deprecated and has no effect")
}
upl.SetStyle(req.Style)

View file

@ -209,7 +209,7 @@ func (cb *clipboard) Cut(ctx *state.Context, req pb.RpcBlockCutRequest) (textSlo
}
ok := s.Unlink(b.Id)
if !ok {
return textSlot, htmlSlot, anySlot, fmt.Errorf("can't remove block with id: %s", b.Id)
return textSlot, htmlSlot, anySlot, fmt.Errorf("can't remove block")
}
}

View file

@ -795,6 +795,9 @@ func (d *sdataview) checkDVBlocks(s *state.State) (err error) {
}
return true
})
if !dvChanged {
return
}
var restrictedSources = []string{
bundle.TypeKeyFile.URL(),
bundle.TypeKeyImage.URL(),

View file

@ -277,9 +277,6 @@ func (u *uploader) Upload(ctx context.Context) (result UploadResult) {
if u.block != nil {
u.fileType = u.block.Model().GetFile().GetType()
}
if u.typeDetect || u.fileType == model.BlockContentFile_None {
u.fileType = u.detectType(buf)
}
}
if u.block != nil {
u.fileStyle = u.block.Model().GetFile().GetStyle()
@ -291,6 +288,7 @@ func (u *uploader) Upload(ctx context.Context) (result UploadResult) {
u.fileStyle = model.BlockContentFile_Embed
}
}
u.fileType = u.detectType(buf)
var opts = []files.AddOption{
files.WithName(u.name),
files.WithReader(buf),

View file

@ -2,7 +2,6 @@ package file_test
import (
"context"
"image"
"net/http"
"net/http/httptest"
"testing"
@ -58,7 +57,7 @@ func TestUploader_Upload(t *testing.T) {
Size: 3,
Added: time.Now(),
}
fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(nil, image.ErrFormat)
//fx.anytype.EXPECT().ImageAdd(gomock.Any(), gomock.Any()).Return(nil, image.ErrFormat)
fx.anytype.EXPECT().FileAdd(gomock.Any(), gomock.Any()).Return(fx.newFile("123", meta), nil)
b := newBlock(model.BlockContentFile_Image)
res := fx.Uploader.SetBlock(b).SetFile("./testdata/test.txt").Upload(ctx)

View file

@ -1088,6 +1088,7 @@ func (sb *smartBlock) setLayout(s *state.State, layout model.ObjectTypeLayout) (
func (sb *smartBlock) MakeTemplateState() (*state.State, error) {
st := sb.NewState().Copy()
st.SetLocalDetails(nil)
st.SetDetail(bundle.RelationKeyTargetObjectType.String(), pbtypes.String(st.ObjectType()))
st.SetObjectTypes([]string{bundle.TypeKeyTemplate.URL(), st.ObjectType()})
for _, rel := range sb.Relations() {

View file

@ -50,10 +50,13 @@ func (t *Template) Init(ctx *smartblock.InitContext) (err error) {
return
}
// GetNewPageState returns state that can be safely used to create the new document
// it has not localDetails set
func (t *Template) GetNewPageState(name string) (st *state.State, err error) {
st = t.NewState().Copy()
st.SetObjectType(pbtypes.GetString(st.Details(), bundle.RelationKeyTargetObjectType.String()))
// clean-up local details from the template
st.RemoveDetail(bundle.RelationKeyTargetObjectType.String(), bundle.RelationKeyTemplateIsBundled.String())
// clean-up local details from the template state
st.SetLocalDetails(nil)
st.SetDetail(bundle.RelationKeyName.String(), pbtypes.String(name))

View file

@ -1,6 +1,7 @@
package template
import (
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
)
@ -19,6 +20,10 @@ func ByLayout(layout model.ObjectTypeLayout, templates ...StateTransformer) []St
WithNoTitle,
WithNoDescription,
)
case model.ObjectType_todo:
templates = append(templates,
WithRelations([]bundle.RelationKey{bundle.RelationKeyDone}),
)
default:
templates = append(templates,
WithTitle,

View file

@ -139,9 +139,9 @@ var WithObjectTypeRecommendedRelationsMigration = func(relations []*model.Relati
}
}
var WithRequiredRelations = func() StateTransformer {
var WithRelations = func(rels []bundle.RelationKey) StateTransformer {
return func(s *state.State) {
for _, relKey := range bundle.RequiredInternalRelations {
for _, relKey := range rels {
if s.HasRelation(relKey.String()) {
continue
}
@ -151,6 +151,10 @@ var WithRequiredRelations = func() StateTransformer {
}
}
var WithRequiredRelations = func() StateTransformer {
return WithRelations(bundle.RequiredInternalRelations)
}
var WithMaxCountMigration = func(s *state.State) {
d := s.Details()
if d == nil || d.Fields == nil {

View file

@ -204,6 +204,7 @@ type Service interface {
MakeTemplate(id string) (templateId string, err error)
MakeTemplateByObjectType(otId string) (templateId string, err error)
CloneTemplate(id string) (templateId string, err error)
ObjectDuplicate(id string) (objectId string, err error)
ApplyTemplate(contextId, templateId string) error
CreateWorkspace(req *pb.RpcWorkspaceCreateRequest) (string, error)
@ -1291,6 +1292,7 @@ func (s *service) CloneTemplate(id string) (templateId string, err error) {
}
st = b.NewState().Copy()
st.RemoveDetail(bundle.RelationKeyTemplateIsBundled.String())
st.SetLocalDetails(nil)
return nil
}); err != nil {
return
@ -1302,6 +1304,22 @@ func (s *service) CloneTemplate(id string) (templateId string, err error) {
return
}
func (s *service) ObjectDuplicate(id string) (objectId string, err error) {
var st *state.State
if err = s.Do(id, func(b smartblock.SmartBlock) error {
st = b.NewState().Copy()
st.SetLocalDetails(nil)
return nil
}); err != nil {
return
}
objectId, _, err = s.CreateSmartBlockFromState(context.TODO(), coresb.SmartBlockTypeTemplate, nil, nil, st)
if err != nil {
return
}
return
}
func (s *service) ApplyTemplate(contextId, templateId string) error {
return s.Do(contextId, func(b smartblock.SmartBlock) error {
orig := b.NewState().ParentState()
@ -1312,9 +1330,9 @@ func (s *service) ApplyTemplate(contextId, templateId string) error {
ts.SetRootId(contextId)
ts.SetParent(orig)
ts.BlocksInit(orig)
ts.InjectDerivedDetails()
// preserve localDetails from the original object
ts.SetLocalDetails(orig.LocalDetails())
objType := ts.ObjectType()
// stateFromTemplate returns state without the localdetails, so they will be taken from the orig state
ts.SetObjectType(objType)
return b.Apply(ts, smartblock.NoRestrictions)
})

View file

@ -2,6 +2,7 @@ package file
import (
"fmt"
"strings"
"time"
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
@ -167,6 +168,9 @@ func (f *File) Diff(b simple.Block) (msgs []simple.EventMessage, err error) {
func (f *File) ApplyEvent(e *pb.EventBlockSetFile) error {
if e.Type != nil {
f.content.Type = e.Type.GetValue()
if f.content.Type == model.BlockContentFile_File {
f.content.Type = f.detectTypeByMIME(f.content.GetMime())
}
}
if e.State != nil {
f.content.State = e.State.GetValue()
@ -195,3 +199,20 @@ func (f *File) FillFileHashes(hashes []string) []string {
}
return hashes
}
func (f *File) detectTypeByMIME(mime string) model.BlockContentFileType {
if strings.HasPrefix(mime, "image") {
return model.BlockContentFile_Image
}
if strings.HasPrefix(mime, "video") {
return model.BlockContentFile_Video
}
if strings.HasPrefix(mime, "audio") {
return model.BlockContentFile_Audio
}
if strings.HasPrefix(mime, "application/pdf") {
return model.BlockContentFile_PDF
}
return model.BlockContentFile_File
}

View file

@ -18,6 +18,12 @@ func TestFile_Diff(t *testing.T) {
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{}},
}).(*File)
}
testBlockPdf := func() *File {
return NewFile(&model.Block{
Restrictions: &model.BlockRestrictions{},
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{Type: model.BlockContentFile_PDF}},
}).(*File)
}
t.Run("type error", func(t *testing.T) {
b1 := testBlock()
b2 := base.NewBase(&model.Block{})
@ -25,8 +31,8 @@ func TestFile_Diff(t *testing.T) {
assert.Error(t, err)
})
t.Run("no diff", func(t *testing.T) {
b1 := testBlock()
b2 := testBlock()
b1 := testBlockPdf()
b2 := testBlockPdf()
tm := time.Now()
b1.SetHash("1").SetMIME("2").SetName("3").SetSize(4).SetTime(tm)
b2.SetHash("1").SetMIME("2").SetName("3").SetSize(4).SetTime(tm)
@ -35,8 +41,8 @@ func TestFile_Diff(t *testing.T) {
assert.Len(t, d, 0)
})
t.Run("base diff", func(t *testing.T) {
b1 := testBlock()
b2 := testBlock()
b1 := testBlockPdf()
b2 := testBlockPdf()
b2.Restrictions.Read = true
d, err := b1.Diff(b2)
require.NoError(t, err)

View file

@ -43,6 +43,26 @@ func (mw *Middleware) BlockSetDetails(req *pb.RpcBlockSetDetailsRequest) *pb.Rpc
return response(pb.RpcBlockSetDetailsResponseError_NULL, nil)
}
func (mw *Middleware) ObjectDuplicate(req *pb.RpcObjectDuplicateRequest) *pb.RpcObjectDuplicateResponse {
response := func(templateId string, err error) *pb.RpcObjectDuplicateResponse {
m := &pb.RpcObjectDuplicateResponse{
Error: &pb.RpcObjectDuplicateResponseError{Code: pb.RpcObjectDuplicateResponseError_NULL},
Id: templateId,
}
if err != nil {
m.Error.Code = pb.RpcObjectDuplicateResponseError_UNKNOWN_ERROR
m.Error.Description = err.Error()
}
return m
}
var objectId string
err := mw.doBlockService(func(bs block.Service) (err error) {
objectId, err = bs.ObjectDuplicate(req.ContextId)
return
})
return response(objectId, err)
}
func handleDateSearch(req *pb.RpcObjectSearchRequest, records []database.Record) []database.Record {
n := time.Now()
f, _ := filter.MakeAndFilter(req.Filters)
@ -92,12 +112,12 @@ func (mw *Middleware) ObjectSearch(req *pb.RpcObjectSearchRequest) *pb.RpcObject
at := mw.app.MustComponent(core.CName).(core.Service)
records, _, err := at.ObjectStore().Query(nil, database.Query{
Filters: req.Filters,
Sorts: req.Sorts,
Offset: int(req.Offset),
Limit: int(req.Limit),
FullText: req.FullText,
ObjectTypeFilter: req.ObjectTypeFilter,
Filters: req.Filters,
Sorts: req.Sorts,
Offset: int(req.Offset),
Limit: int(req.Limit),
FullText: req.FullText,
ObjectTypeFilter: req.ObjectTypeFilter,
})
if err != nil {
return response(pb.RpcObjectSearchResponseError_UNKNOWN_ERROR, nil, err)

View file

@ -577,6 +577,10 @@
- [Rpc.Object.ToSet.Request](#anytype.Rpc.Object.ToSet.Request)
- [Rpc.Object.ToSet.Response](#anytype.Rpc.Object.ToSet.Response)
- [Rpc.Object.ToSet.Response.Error](#anytype.Rpc.Object.ToSet.Response.Error)
- [Rpc.ObjectDuplicate](#anytype.Rpc.ObjectDuplicate)
- [Rpc.ObjectDuplicate.Request](#anytype.Rpc.ObjectDuplicate.Request)
- [Rpc.ObjectDuplicate.Response](#anytype.Rpc.ObjectDuplicate.Response)
- [Rpc.ObjectDuplicate.Response.Error](#anytype.Rpc.ObjectDuplicate.Response.Error)
- [Rpc.ObjectList](#anytype.Rpc.ObjectList)
- [Rpc.ObjectList.Delete](#anytype.Rpc.ObjectList.Delete)
- [Rpc.ObjectList.Delete.Request](#anytype.Rpc.ObjectList.Delete.Request)
@ -813,6 +817,7 @@
- [Rpc.Object.SetLayout.Response.Error.Code](#anytype.Rpc.Object.SetLayout.Response.Error.Code)
- [Rpc.Object.ShareByLink.Response.Error.Code](#anytype.Rpc.Object.ShareByLink.Response.Error.Code)
- [Rpc.Object.ToSet.Response.Error.Code](#anytype.Rpc.Object.ToSet.Response.Error.Code)
- [Rpc.ObjectDuplicate.Response.Error.Code](#anytype.Rpc.ObjectDuplicate.Response.Error.Code)
- [Rpc.ObjectList.Delete.Response.Error.Code](#anytype.Rpc.ObjectList.Delete.Response.Error.Code)
- [Rpc.ObjectList.Set.IsArchived.Response.Error.Code](#anytype.Rpc.ObjectList.Set.IsArchived.Response.Error.Code)
- [Rpc.ObjectList.Set.IsFavorite.Response.Error.Code](#anytype.Rpc.ObjectList.Set.IsFavorite.Response.Error.Code)
@ -1236,6 +1241,7 @@
| MakeTemplate | [Rpc.MakeTemplate.Request](#anytype.Rpc.MakeTemplate.Request) | [Rpc.MakeTemplate.Response](#anytype.Rpc.MakeTemplate.Response) | |
| MakeTemplateByObjectType | [Rpc.MakeTemplateByObjectType.Request](#anytype.Rpc.MakeTemplateByObjectType.Request) | [Rpc.MakeTemplateByObjectType.Response](#anytype.Rpc.MakeTemplateByObjectType.Response) | |
| CloneTemplate | [Rpc.CloneTemplate.Request](#anytype.Rpc.CloneTemplate.Request) | [Rpc.CloneTemplate.Response](#anytype.Rpc.CloneTemplate.Response) | |
| ObjectDuplicate | [Rpc.ObjectDuplicate.Request](#anytype.Rpc.ObjectDuplicate.Request) | [Rpc.ObjectDuplicate.Response](#anytype.Rpc.ObjectDuplicate.Response) | |
| ApplyTemplate | [Rpc.ApplyTemplate.Request](#anytype.Rpc.ApplyTemplate.Request) | [Rpc.ApplyTemplate.Response](#anytype.Rpc.ApplyTemplate.Response) | |
| DebugSync | [Rpc.Debug.Sync.Request](#anytype.Rpc.Debug.Sync.Request) | [Rpc.Debug.Sync.Response](#anytype.Rpc.Debug.Sync.Response) | |
| DebugThread | [Rpc.Debug.Thread.Request](#anytype.Rpc.Debug.Thread.Request) | [Rpc.Debug.Thread.Response](#anytype.Rpc.Debug.Thread.Response) | |
@ -9535,6 +9541,63 @@ deprecated, to be removed |
<a name="anytype.Rpc.ObjectDuplicate"></a>
### Rpc.ObjectDuplicate
<a name="anytype.Rpc.ObjectDuplicate.Request"></a>
### Rpc.ObjectDuplicate.Request
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| contextId | [string](#string) | | id of template block for cloning |
<a name="anytype.Rpc.ObjectDuplicate.Response"></a>
### Rpc.ObjectDuplicate.Response
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| error | [Rpc.ObjectDuplicate.Response.Error](#anytype.Rpc.ObjectDuplicate.Response.Error) | | |
| id | [string](#string) | | created template id |
<a name="anytype.Rpc.ObjectDuplicate.Response.Error"></a>
### Rpc.ObjectDuplicate.Response.Error
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| code | [Rpc.ObjectDuplicate.Response.Error.Code](#anytype.Rpc.ObjectDuplicate.Response.Error.Code) | | |
| description | [string](#string) | | |
<a name="anytype.Rpc.ObjectList"></a>
### Rpc.ObjectList
@ -12716,6 +12779,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
<a name="anytype.Rpc.ObjectDuplicate.Response.Error.Code"></a>
### Rpc.ObjectDuplicate.Response.Error.Code
| Name | Number | Description |
| ---- | ------ | ----------- |
| NULL | 0 | |
| UNKNOWN_ERROR | 1 | |
| BAD_INPUT | 2 | ... |
<a name="anytype.Rpc.ObjectList.Delete.Response.Error.Code"></a>
### Rpc.ObjectList.Delete.Response.Error.Code

4
go.mod
View file

@ -90,7 +90,7 @@ require (
replace github.com/JohannesKaufmann/html-to-markdown => github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1
replace github.com/textileio/go-threads => github.com/anytypeio/go-threads v1.1.0-rc1.0.20211201121237-e27ec0f0019f
replace github.com/textileio/go-threads => github.com/anytypeio/go-threads v1.1.0-rc1.0.20211224084450-be1392aa8d22
replace github.com/msingleton/amplitude-go => github.com/anytypeio/amplitude-go v0.0.0-20211130222238-8d16496a9b31
@ -101,3 +101,5 @@ replace gopkg.in/Graylog2/go-gelf.v2 => github.com/anytypeio/go-gelf v0.0.0-2021
replace github.com/hsanjuan/ipfs-lite => github.com/anytypeio/ipfs-lite v1.1.20-0.20210428105030-fc5b3446abae
replace github.com/araddon/dateparse => github.com/mehanizm/dateparse v0.0.0-20210806203422-f82c8742c9f8 // use a fork to support dd.mm.yyyy date format
replace github.com/multiformats/go-multiaddr => github.com/anytypeio/go-multiaddr v0.3.4-0.20211216092130-ddd80e4d6e9e

20
go.sum
View file

@ -76,12 +76,30 @@ github.com/anytypeio/go-gelf v0.0.0-20210418191311-774bd5b016e7 h1:YBmcug6mOdwjJ
github.com/anytypeio/go-gelf v0.0.0-20210418191311-774bd5b016e7/go.mod h1:EuPAem8b51iulSY3wBQJc0Shz+A2DmyREddzDt0fywM=
github.com/anytypeio/go-log/v2 v2.1.2-0.20200810212702-264b187bb04f h1:aeyycLTPbhwjW2x/EkmuAgRzdX0bdwy+RStmevhQbhM=
github.com/anytypeio/go-log/v2 v2.1.2-0.20200810212702-264b187bb04f/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215113257-4c68dbbfce09 h1:ekAFvPz4Nwxe09Fppp57kFRGAC5SCh6re+Rko19IFbY=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215113257-4c68dbbfce09/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215200144-88ad0085ccf9 h1:A38rbte7VTCoG97Z1C/7dfY2q7uDOHyG14e6rBbpUvY=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215200144-88ad0085ccf9/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215201846-cc6cccdc52ed h1:uIAyPOlhgOHHI/GNQx0yJKB1iDMvWx1RBztzh/Bmi88=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211215201846-cc6cccdc52ed/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211216092130-ddd80e4d6e9e h1:51Svp85/PdIrpxpkkfmTnFQ8IpWZrRXs+wK3CzCWWSM=
github.com/anytypeio/go-multiaddr v0.3.4-0.20211216092130-ddd80e4d6e9e/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0=
github.com/anytypeio/go-slip10 v0.0.0-20200330112030-a352ca8495e4 h1:jB5Ke7NVoW52i65PtLFBr5Q5k6RskIY8L70pgnBcnWo=
github.com/anytypeio/go-slip10 v0.0.0-20200330112030-a352ca8495e4/go.mod h1:/8GIEJBE5wmdgcE49JPdupnHNUf7bEn6C+aArfWqvw8=
github.com/anytypeio/go-slip21 v0.0.0-20200218204727-e2e51e20ab51 h1:3Y+18zBC8LZgcL3l2dgoTEIzIUzCZa/kN0UV3ZWpbuA=
github.com/anytypeio/go-slip21 v0.0.0-20200218204727-e2e51e20ab51/go.mod h1:SoKy+W8Mf6v7XBV30xFWkIFMs7UnXwsNGrGV12yVkEs=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211201121237-e27ec0f0019f h1:/GtCeOnt23W6URu77Bd4E6Pi3dVxRxhTt99CWwm7kno=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211201121237-e27ec0f0019f/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211221202846-ede97c2acd2f h1:2ijedq9v4wuRYuXfcnG0PXwTuVIj2YyrabFBCdxtRc0=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211221202846-ede97c2acd2f/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211222110843-32949f7e0f33 h1:6rLgs5nQtVunDYllZa6c1Z1s3d/ZH/Gxyvw1GhDmCkA=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211222110843-32949f7e0f33/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211222121755-430c95fe7d33 h1:90BcVIKR9DWL1dGVVo1dubIzprUcR15BZygHwJ4zb4k=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211222121755-430c95fe7d33/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211223211353-75ca7043619a h1:RLePHFsEc1P56HabVOqxFnZheWUK4PmgKFBaC0or85I=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211223211353-75ca7043619a/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211224084450-be1392aa8d22 h1:Kcy6w9kAlCXZW3lV8+PEgS456zuz7yBwcaBYj3mYccU=
github.com/anytypeio/go-threads v1.1.0-rc1.0.20211224084450-be1392aa8d22/go.mod h1:O7G/oTjIZfQmB6ZoeU42IdRxWEY9D+HZuLzF6wMk4jI=
github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1 h1:g/LEIEQ0ACBOKX9MhORhlmluUKvuxvrIDbGMI0cqF5A=
github.com/anytypeio/html-to-markdown v0.0.0-20200617145221-2afd2a14bae1/go.mod h1:Qnhxlb4mi8T2624UtHX8EgDyYZXWbjQfLGuciFHZ+Go=
github.com/anytypeio/ipfs-lite v1.1.20-0.20210428105030-fc5b3446abae h1:drp4/4ippiDtCGQHJw9AEPFlNdZI49DUW/6dkCdmChc=
@ -592,12 +610,12 @@ github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw=
github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w=
github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=
github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo=
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=

File diff suppressed because it is too large Load diff

View file

@ -3932,6 +3932,31 @@ message Rpc {
}
}
message ObjectDuplicate {
message Request {
// id of template block for cloning
string contextId = 1;
}
message Response {
Error error = 1;
// created template id
string id = 2;
message Error {
Code code = 1;
string description = 2;
enum Code {
NULL = 0;
UNKNOWN_ERROR = 1;
BAD_INPUT = 2;
// ...
}
}
}
}
message ApplyTemplate {
message Request {
string contextId = 1;

View file

@ -196,6 +196,7 @@ service ClientCommands {
rpc MakeTemplate (anytype.Rpc.MakeTemplate.Request) returns (anytype.Rpc.MakeTemplate.Response);
rpc MakeTemplateByObjectType (anytype.Rpc.MakeTemplateByObjectType.Request) returns (anytype.Rpc.MakeTemplateByObjectType.Response);
rpc CloneTemplate (anytype.Rpc.CloneTemplate.Request) returns (anytype.Rpc.CloneTemplate.Response);
rpc ObjectDuplicate (anytype.Rpc.ObjectDuplicate.Request) returns (anytype.Rpc.ObjectDuplicate.Response);
rpc ApplyTemplate (anytype.Rpc.ApplyTemplate.Request) returns (anytype.Rpc.ApplyTemplate.Response);
rpc DebugSync (anytype.Rpc.Debug.Sync.Request) returns (anytype.Rpc.Debug.Sync.Response);

View file

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

View file

@ -47,6 +47,7 @@ type clientds struct {
threadsDbDS *textileBadger.Datastore
cfg Config
repoPath string
migrations []migration
}
type Config struct {
@ -67,6 +68,11 @@ type DSConfigGetter interface {
DSConfig() Config
}
type migration struct {
migrationFunc func() error
migrationKey ds.Key
}
func init() {
// lets set badger options inside the init, otherwise we need to directly import the badger intp MW
DefaultConfig.Logstore.ValueLogFileSize = 64 * 1024 * 1024 // Badger will rotate value log files after 64MB. GC only works starting from the 2nd value log file
@ -105,6 +111,16 @@ func (r *clientds) Init(a *app.App) (err error) {
}
r.repoPath = wl.(wallet.Wallet).RepoPath()
r.migrations = []migration{
{
migrationFunc: r.migrateLocalStoreBadger,
migrationKey: ds.NewKey("/migration/localstore/badgerv3"),
},
{
migrationFunc: r.migrateFileStoreAndIndexesBadger,
migrationKey: ds.NewKey("/migration/localstore/badgerv3/filesindexes"),
},
}
return nil
}
@ -146,31 +162,32 @@ func (r *clientds) Run() error {
}
func (r *clientds) migrateIfNeeded() error {
migrationKey := ds.NewKey("/migration/localstore/badgerv3")
_, err := r.localstoreDS.Get(migrationKey)
if err == nil {
return nil
for _, m := range r.migrations {
_, err := r.localstoreDS.Get(m.migrationKey)
if err == nil {
continue
}
if err != nil && err != ds.ErrNotFound {
return err
}
err = m.migrationFunc()
if err != nil {
return fmt.Errorf(
"migration with key %s failed: failed to migrate the keys from old db: %w",
m.migrationKey.String(),
err)
}
err = r.localstoreDS.Put(m.migrationKey, nil)
if err != nil {
return fmt.Errorf("failed to put %s migration key into db: %w", m.migrationKey.String(), err)
}
}
if err != nil && err != ds.ErrNotFound {
return err
}
err = r.migrate()
if err != nil {
return fmt.Errorf("failed to migrate the keys from old db: %w", err)
}
return r.localstoreDS.Put(migrationKey, nil)
return nil
}
func (r *clientds) migrate() error {
func (r *clientds) migrateWithKey(chooseKey func(item *dgraphbadgerv1.Item) bool) error {
s := r.logstoreDS.DB.NewStream()
s.ChooseKey = func(item *dgraphbadgerv1.Item) bool {
keyString := string(item.Key())
res := strings.HasPrefix(keyString, "/pages") ||
strings.HasPrefix(keyString, "/workspaces") ||
strings.HasPrefix(keyString, "/relations")
return res
}
s.ChooseKey = chooseKey
s.Send = func(list *dgraphbadgerv1pb.KVList) error {
batch, err := r.localstoreDS.Batch()
if err != nil {
@ -187,6 +204,23 @@ func (r *clientds) migrate() error {
return s.Orchestrate(context.Background())
}
func (r *clientds) migrateLocalStoreBadger() error {
return r.migrateWithKey(func(item *dgraphbadgerv1.Item) bool {
keyString := string(item.Key())
res := strings.HasPrefix(keyString, "/pages") ||
strings.HasPrefix(keyString, "/workspaces") ||
strings.HasPrefix(keyString, "/relations")
return res
})
}
func (r *clientds) migrateFileStoreAndIndexesBadger() error {
return r.migrateWithKey(func(item *dgraphbadgerv1.Item) bool {
keyString := string(item.Key())
return strings.HasPrefix(keyString, "/files") || strings.HasPrefix(keyString, "/idx")
})
}
type ValueLogInfo struct {
Index int64
Size int64
@ -303,7 +337,7 @@ func (r *clientds) ThreadsDbDS() (keytransform.TxnDatastoreExtended, error) {
return r.threadsDbDS, nil
}
func (r *clientds) LocalstoreDS() (ds.TxnDatastore, error) {
func (r *clientds) LocalstoreDS() (datastore.DSTxnBatching, error) {
if !r.running {
return nil, fmt.Errorf("exact ds may be requested only after Run")
}

View file

@ -14,7 +14,7 @@ type Datastore interface {
BlockstoreDS() (ds.Batching, error)
RunBlockstoreGC() (freed int64, err error)
LogstoreDS() (DSTxnBatching, error)
LocalstoreDS() (ds.TxnDatastore, error)
LocalstoreDS() (DSTxnBatching, error)
ThreadsDbDS() (keytransform.TxnDatastoreExtended, error)
}

View file

@ -187,7 +187,7 @@ func New() ObjectStore {
return &dsObjectStore{}
}
func NewWithLocalstore(ds ds.TxnDatastore) ObjectStore {
func NewWithLocalstore(ds datastore.DSTxnBatching) ObjectStore {
return &dsObjectStore{
ds: ds,
}
@ -335,7 +335,7 @@ func (m *filterSmartblockTypes) Filter(e query.Entry) bool {
type dsObjectStore struct {
// underlying storage
ds ds.TxnDatastore
ds datastore.DSTxnBatching
dsIface datastore.Datastore
sourceService SourceIdEncodedDetails
@ -603,25 +603,20 @@ func (m *dsObjectStore) eraseStoredRelations() (err error) {
}
func (m *dsObjectStore) eraseLinks() (err error) {
txn, err := m.ds.NewTransaction(false)
if err != nil {
return err
}
defer txn.Discard()
n, err := removeByPrefix(txn, pagesOutboundLinksBase.String())
n, err := removeByPrefix(m.ds, pagesOutboundLinksBase.String())
if err != nil {
return err
}
log.Infof("eraseLinks: removed %d outbound links", n)
n, err = removeByPrefix(txn, pagesInboundLinksBase.String())
n, err = removeByPrefix(m.ds, pagesInboundLinksBase.String())
if err != nil {
return err
}
log.Infof("eraseLinks: removed %d inbound links", n)
return txn.Commit()
return nil
}
func (m *dsObjectStore) Run() (err error) {
@ -1308,12 +1303,12 @@ func (m *dsObjectStore) DeleteObject(id string) error {
}
}
_, err = removeByPrefix(txn, pagesInboundLinksBase.String()+"/"+id+"/")
_, err = removeByPrefixInTx(txn, pagesInboundLinksBase.String()+"/"+id+"/")
if err != nil {
return err
}
_, err = removeByPrefix(txn, pagesOutboundLinksBase.String()+"/"+id+"/")
_, err = removeByPrefixInTx(txn, pagesOutboundLinksBase.String()+"/"+id+"/")
if err != nil {
return err
}
@ -2468,7 +2463,36 @@ func findByPrefix(txn ds.Txn, prefix string, limit int) ([]string, error) {
return localstore.GetLeavesFromResults(results)
}
func removeByPrefix(txn ds.Txn, prefix string) (int, error) {
// removeByPrefix query prefix and then remove keys in multiple TXs
func removeByPrefix(d datastore.DSTxnBatching, prefix string) (int, error) {
results, err := d.Query(query.Query{
Prefix: prefix,
KeysOnly: true,
})
if err != nil {
return 0, err
}
var keys []ds.Key
for res := range results.Next() {
keys = append(keys, ds.NewKey(res.Key))
}
b, err := d.Batch()
if err != nil {
return 0, err
}
var removed int
for _, key := range keys {
err := b.Delete(key)
if err != nil {
return removed, err
}
removed++
}
return removed, b.Commit()
}
func removeByPrefixInTx(txn ds.Txn, prefix string) (int, error) {
results, err := txn.Query(query.Query{
Prefix: prefix,
KeysOnly: true,
@ -2481,6 +2505,7 @@ func removeByPrefix(txn ds.Txn, prefix string) (int, error) {
for res := range results.Next() {
err := txn.Delete(ds.NewKey(res.Key))
if err != nil {
_ = results.Close()
return removed, err
}
removed++

View file

@ -5,6 +5,7 @@ import (
"github.com/anytypeio/go-anytype-middleware/pkg/lib/logging"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/schema"
"io/ioutil"
"math/rand"
"os"
"testing"
"time"
@ -35,6 +36,8 @@ func TestDsObjectStore_UpdateLocalDetails(t *testing.T) {
tmpDir, _ := ioutil.TempDir("", "")
defer os.RemoveAll(tmpDir)
app := testapp.New()
defer app.Close()
ds := New()
id, err := threads.ThreadCreateID(thread.AccessControlled, smartblock.SmartBlockTypePage)
@ -82,6 +85,8 @@ func TestDsObjectStore_IndexQueue(t *testing.T) {
defer os.RemoveAll(tmpDir)
app := testapp.New()
defer app.Close()
ds := New()
err := app.With(&config.DefaultConfig).With(wallet.NewWithRepoPathAndKeys(tmpDir, nil, nil)).With(clientds.New()).With(ds).Start()
require.NoError(t, err)
@ -137,6 +142,8 @@ func TestDsObjectStore_Query(t *testing.T) {
defer os.RemoveAll(tmpDir)
app := testapp.New()
defer app.Close()
ds := New()
err := app.With(&config.DefaultConfig).With(wallet.NewWithRepoPathAndKeys(tmpDir, nil, nil)).With(clientds.New()).With(ftsearch.New()).With(ds).Start()
require.NoError(t, err)
@ -253,6 +260,7 @@ func TestDsObjectStore_RelationsIndex(t *testing.T) {
logging.ApplyLevelsFromEnv()
app := testapp.New()
defer app.Close()
ds := New()
err := app.With(&config.DefaultConfig).With(wallet.NewWithRepoPathAndKeys(tmpDir, nil, nil)).With(clientds.New()).With(ftsearch.New()).With(ds).Start()
require.NoError(t, err)
@ -343,3 +351,44 @@ func TestDsObjectStore_RelationsIndex(t *testing.T) {
require.Equal(t, "rel3", rels[2].Key)
require.Equal(t, "rel4", rels[3].Key)
}
func Test_removeByPrefix(t *testing.T) {
tmpDir, _ := ioutil.TempDir("", "")
defer os.RemoveAll(tmpDir)
logging.ApplyLevelsFromEnv()
app := testapp.New()
defer app.Close()
ds := New()
err := app.With(&config.DefaultConfig).With(wallet.NewWithRepoPathAndKeys(tmpDir, nil, nil)).With(clientds.New()).With(ftsearch.New()).With(ds).Start()
require.NoError(t, err)
ds2 := ds.(*dsObjectStore)
var key = make([]byte, 32)
for i := 0; i < 10; i++ {
var links []string
rand.Seed(time.Now().UnixNano())
rand.Read(key)
objId := fmt.Sprintf("%x", key)
for j := 0; j < 8000; j++ {
rand.Seed(time.Now().UnixNano())
rand.Read(key)
links = append(links, fmt.Sprintf("%x", key))
}
require.NoError(t, ds.CreateObject(objId, nil, nil, links, ""))
}
tx, err := ds2.ds.NewTransaction(false)
_, err = removeByPrefixInTx(tx, pagesInboundLinksBase.String())
require.NotNil(t, err)
tx.Discard()
got, err := removeByPrefix(ds2.ds, pagesInboundLinksBase.String())
require.NoError(t, err)
require.Equal(t, 10*8000, got)
got, err = removeByPrefix(ds2.ds, pagesOutboundLinksBase.String())
require.NoError(t, err)
require.Equal(t, 10*8000, got)
}

View file

@ -3,6 +3,7 @@ package localstore
import (
"crypto/sha256"
"fmt"
datastore2 "github.com/anytypeio/go-anytype-middleware/pkg/lib/datastore"
"github.com/anytypeio/go-anytype-middleware/pkg/lib/logging"
"strings"
@ -167,28 +168,31 @@ func AddIndexWithTxn(index Index, ds ds.Txn, newVal interface{}, newValPrimary s
return nil
}
func EraseIndex(index Index, datastore ds.TxnDatastore) error {
return RunLargeOperationWithinMultipleTxs(datastore, func(txn ds.Txn) error {
return EraseIndexWithTxn(index, txn)
})
}
// EraseIndexWithTxn deletes the whole index
func EraseIndexWithTxn(index Index, txn ds.Txn) error {
// EraseIndex deletes the whole index
func EraseIndex(index Index, datastore datastore2.DSTxnBatching) error {
key := IndexBase.ChildString(index.Prefix).ChildString(index.Name)
txn, err := datastore.NewTransaction(true)
if err != nil {
return err
}
res, err := GetKeys(txn, key.String(), 0)
if err != nil {
return err
}
keys, err := ExtractKeysFromResults(res)
b, err := datastore.Batch()
if err != nil {
return err
}
for _, key := range keys {
err = txn.Delete(ds.NewKey(key))
err = b.Delete(ds.NewKey(key))
if err != nil {
return err
}
}
return nil
return b.Commit()
}
func RemoveIndexWithTxn(index Index, txn ds.Txn, val interface{}, valPrimary string) error {
@ -462,35 +466,3 @@ func GetKeys(tx ds.Txn, prefix string, limit int) (query.Results, error) {
KeysOnly: true,
})
}
// RunLargeOperationWithinMultipleTxs performs large operations. In case it faces ErrTxnTooBig it commits the txn and runs it again within the new txn
// underlying op func MUST be aware of ds change from previous retries e.g. it should rebuild the list of pending operations at start instead of passing the fixed list from outside
func RunLargeOperationWithinMultipleTxs(datastore ds.TxnDatastore, op func(txn ds.Txn) error) (err error) {
var txn ds.Txn
for {
txn, err = datastore.NewTransaction(false)
if err != nil {
return err
}
err = op(txn)
if err != nil {
// lets commit the current TXN and create another one
if err.Error() == errTxnTooBig.Error() {
err = txn.Commit()
if err != nil {
return err
}
continue
}
txn.Discard()
return
} else {
err = txn.Commit()
if err != nil {
return err
}
return
}
}
}

View file

@ -158,10 +158,6 @@ func Test_RunLargeOperationWithRetries(t *testing.T) {
require.NoError(t, err)
require.Equal(t, 30000, total)
err = EraseIndexWithTxn(index, tx)
require.Error(t, err, errTxnTooBig)
tx.Discard()
err = EraseIndex(index, ds)
require.NoError(t, err)
tx, err = ds.NewTransaction(false)

View file

@ -214,6 +214,7 @@ func (b *builtinObjects) createObject(ctx context.Context, rd io.ReadCloser) (er
vals[i] = newTarget
}
st.SetDetail(k, pbtypes.StringList(vals))
}
sbt, err := smartblock.SmartBlockTypeFromID(newId)