From a8357dceacd1b737952660272bf80251df19b8f8 Mon Sep 17 00:00:00 2001 From: Sale Djenic Date: Wed, 27 Dec 2023 15:59:06 +0100 Subject: [PATCH] feat: color field added to saved address - `color` column added to `saved_addresses` table - `colorId` parameter exposed via `SavedAddress` struct Affected area - saved addresses. The following endpoints return or receive `SavedAddress` instance: - `UpsertSavedAddress` - `GetSavedAddresses` - `AddSavedAddress` --- VERSION | 2 +- protocol/messenger_saved_address.go | 3 + .../messenger_sync_saved_addresses_test.go | 2 +- protocol/protobuf/pairing.pb.go | 422 +++++++++--------- protocol/protobuf/pairing.proto | 9 +- services/wallet/saved_addresses.go | 50 ++- services/wallet/saved_addresses_test.go | 10 +- walletdatabase/migrations/bindata.go | 58 ++- ...686612_add_color_to_saved_addresses.up.sql | 2 + 9 files changed, 317 insertions(+), 241 deletions(-) create mode 100644 walletdatabase/migrations/sql/1703686612_add_color_to_saved_addresses.up.sql diff --git a/VERSION b/VERSION index 17788c6f5..25b75ab88 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.171.39 +0.171.40 diff --git a/protocol/messenger_saved_address.go b/protocol/messenger_saved_address.go index a84ff44a6..56554c9a2 100644 --- a/protocol/messenger_saved_address.go +++ b/protocol/messenger_saved_address.go @@ -7,6 +7,7 @@ import ( "github.com/golang/protobuf/proto" gethcommon "github.com/ethereum/go-ethereum/common" + multiAccCommon "github.com/status-im/status-go/multiaccounts/common" "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/protobuf" v1protocol "github.com/status-im/status-go/protocol/v1" @@ -72,6 +73,7 @@ func (m *Messenger) syncNewSavedAddress(ctx context.Context, savedAddress *walle ChainShortNames: savedAddress.ChainShortNames, Ens: savedAddress.ENSName, IsTest: savedAddress.IsTest, + Color: string(savedAddress.ColorID), }, rawMessageHandler) } @@ -115,6 +117,7 @@ func (m *Messenger) HandleSyncSavedAddress(state *ReceivedMessageState, syncMess ChainShortNames: syncMessage.ChainShortNames, ENSName: syncMessage.Ens, IsTest: syncMessage.IsTest, + ColorID: multiAccCommon.CustomizationColor(syncMessage.Color), } _, err = m.savedAddressesManager.AddSavedAddressIfNewerUpdate(sa, syncMessage.UpdateClock) diff --git a/protocol/messenger_sync_saved_addresses_test.go b/protocol/messenger_sync_saved_addresses_test.go index 3f6fee7f7..26da89cc4 100644 --- a/protocol/messenger_sync_saved_addresses_test.go +++ b/protocol/messenger_sync_saved_addresses_test.go @@ -114,7 +114,7 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool func savedAddressDataIsEqual(a, b wallet.SavedAddress) bool { return a.Address == b.Address && a.IsTest == b.IsTest && a.Name == b.Name && - a.Favourite == b.Favourite && a.ENSName == b.ENSName && a.ChainShortNames == b.ChainShortNames + a.Favourite == b.Favourite && a.ENSName == b.ENSName && a.ChainShortNames == b.ChainShortNames && a.ColorID == b.ColorID } func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() { diff --git a/protocol/protobuf/pairing.pb.go b/protocol/protobuf/pairing.pb.go index ac83c4a6f..0bf41258d 100644 --- a/protocol/protobuf/pairing.pb.go +++ b/protocol/protobuf/pairing.pb.go @@ -2620,6 +2620,7 @@ type SyncSavedAddress struct { ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` + Color string `protobuf:"bytes,11,opt,name=color,proto3" json:"color,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2706,6 +2707,13 @@ func (m *SyncSavedAddress) GetIsTest() bool { return false } +func (m *SyncSavedAddress) GetColor() string { + if m != nil { + return m.Color + } + return "" +} + type SyncCommunitySettings struct { Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` @@ -3521,215 +3529,215 @@ func init() { } var fileDescriptor_d61ab7221f0b5518 = []byte{ - // 3351 bytes of a gzipped FileDescriptorProto + // 3356 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x5a, 0x4f, 0x6f, 0x1c, 0xc7, 0x72, 0xf7, 0xfe, 0xe1, 0x72, 0xb7, 0x76, 0x49, 0xae, 0x5a, 0x94, 0xb4, 0xa2, 0x24, 0x98, 0x1a, 0xdb, 0xb0, 0xec, 0x38, 0x74, 0x42, 0x3b, 0xb1, 0x61, 0xcb, 0x70, 0x28, 0x92, 0x8e, 0xa8, 0x3f, 0x14, 0xd3, 0x24, 0x65, 0x3b, 0x08, 0x30, 0x6e, 0xce, 0xb4, 0xb8, 0x63, 0xce, 0xce, 0x4c, 0xa6, - 0x7b, 0xc9, 0xac, 0x0f, 0x01, 0x02, 0xe4, 0xe0, 0x43, 0x0e, 0xb9, 0xf9, 0x16, 0x18, 0x41, 0x10, - 0x04, 0x39, 0xe6, 0x96, 0x2f, 0x10, 0xe4, 0xf8, 0xee, 0xef, 0x7d, 0x81, 0xf7, 0x0d, 0xde, 0xe5, - 0x01, 0x0f, 0x5d, 0xdd, 0x33, 0xd3, 0xb3, 0xbb, 0x43, 0x8b, 0x78, 0xa7, 0x9d, 0xaa, 0xae, 0xee, - 0xa9, 0xee, 0xae, 0x3f, 0xbf, 0xaa, 0x59, 0x58, 0x4a, 0x58, 0x90, 0x06, 0xd1, 0xe9, 0x46, 0x92, - 0xc6, 0x32, 0x26, 0x6d, 0xfc, 0x39, 0x19, 0xbf, 0x5a, 0xbb, 0xee, 0x0d, 0x99, 0x74, 0x03, 0x9f, - 0x47, 0x32, 0x90, 0x13, 0x3d, 0xbc, 0x76, 0x5d, 0x4c, 0x22, 0xcf, 0x15, 0x5c, 0xca, 0x20, 0x3a, - 0x15, 0x86, 0xe9, 0xb0, 0x24, 0x09, 0x03, 0x8f, 0xc9, 0x20, 0x8e, 0xdc, 0x11, 0x97, 0xcc, 0x67, - 0x92, 0xb9, 0x23, 0x2e, 0x04, 0x3b, 0xe5, 0x46, 0xe6, 0x9a, 0x17, 0x8f, 0x46, 0xe3, 0x28, 0x90, - 0x01, 0x37, 0xd3, 0x1c, 0x06, 0x77, 0xbe, 0xe2, 0xd2, 0x1b, 0x06, 0xd1, 0xe9, 0x23, 0xe6, 0x9d, - 0x71, 0xff, 0x38, 0xd9, 0x61, 0x92, 0xed, 0x70, 0xc9, 0x82, 0x50, 0x90, 0x37, 0xa1, 0x8b, 0xeb, - 0x44, 0xe3, 0xd1, 0x09, 0x4f, 0x07, 0xb5, 0xf5, 0xda, 0x83, 0x25, 0x0a, 0x8a, 0xb5, 0x8f, 0x1c, - 0x72, 0x1f, 0x7a, 0x32, 0x96, 0x2c, 0xcc, 0x24, 0xea, 0x28, 0xd1, 0x45, 0x9e, 0x16, 0x71, 0x7e, - 0xbf, 0x08, 0x2d, 0xb5, 0xf6, 0x38, 0x21, 0xab, 0xb0, 0xe0, 0x85, 0xb1, 0x77, 0x86, 0x0b, 0x35, - 0xa9, 0x26, 0xc8, 0x32, 0xd4, 0x03, 0x1f, 0x67, 0x76, 0x68, 0x3d, 0xf0, 0xc9, 0x97, 0xd0, 0xf6, - 0xe2, 0x48, 0x32, 0x4f, 0x8a, 0x41, 0x63, 0xbd, 0xf1, 0xa0, 0xbb, 0xf9, 0xd6, 0x46, 0x76, 0x22, - 0x1b, 0x87, 0x93, 0xc8, 0xdb, 0x8b, 0x84, 0x64, 0x61, 0x88, 0x7b, 0xdd, 0xd6, 0x92, 0x2f, 0x37, - 0x69, 0x3e, 0x89, 0xec, 0x42, 0xd7, 0xda, 0xe9, 0xa0, 0xf9, 0xcb, 0x6b, 0x68, 0xe1, 0x09, 0xb5, - 0xe7, 0x91, 0x17, 0xb0, 0x92, 0x2d, 0x69, 0xce, 0x63, 0xb0, 0xb0, 0x5e, 0x7b, 0xd0, 0xdd, 0x7c, - 0xa7, 0x58, 0xea, 0x92, 0xc3, 0xa3, 0xd3, 0xb3, 0xc9, 0x31, 0x10, 0x6b, 0xfd, 0x6c, 0xcd, 0xd6, - 0x55, 0xd6, 0x9c, 0xb3, 0x00, 0xf9, 0x08, 0x16, 0x93, 0x34, 0x7e, 0x15, 0x84, 0x7c, 0xb0, 0x88, - 0x6b, 0xdd, 0x2e, 0xd6, 0xca, 0xd6, 0x38, 0xd0, 0x02, 0x34, 0x93, 0x24, 0xcf, 0x61, 0xd9, 0x3c, - 0x66, 0x7a, 0xb4, 0xaf, 0xa2, 0xc7, 0xd4, 0x64, 0xf2, 0x21, 0x2c, 0x1a, 0x83, 0x1c, 0x74, 0x70, - 0x9d, 0x1b, 0xe5, 0xe3, 0x3e, 0xd4, 0x83, 0x34, 0x93, 0x52, 0x87, 0x9b, 0x59, 0x70, 0xa6, 0x00, - 0x5c, 0xe9, 0x70, 0xa7, 0x66, 0x2b, 0x0d, 0xce, 0xf8, 0x44, 0x39, 0xd2, 0xa0, 0x3b, 0x4f, 0x83, - 0xa7, 0x7a, 0x90, 0x66, 0x52, 0xea, 0x04, 0xcc, 0x63, 0xa6, 0x40, 0xef, 0x4a, 0x27, 0x50, 0x9e, - 0x4c, 0xb6, 0xa0, 0x7f, 0xc1, 0xa4, 0x37, 0x7c, 0x11, 0x85, 0x93, 0x2d, 0xcf, 0x8b, 0xc7, 0x91, - 0x1c, 0x2c, 0xcd, 0x53, 0xc4, 0x0c, 0xd2, 0x19, 0x71, 0xe2, 0xc2, 0xad, 0x69, 0x5e, 0xa6, 0xda, - 0xf2, 0x55, 0x54, 0xab, 0x5a, 0x85, 0x3c, 0x80, 0x05, 0x15, 0x50, 0xc4, 0x60, 0x05, 0x5d, 0x82, - 0x94, 0x15, 0xdb, 0x1e, 0x32, 0x49, 0xb5, 0x00, 0xd9, 0x83, 0x1e, 0x3e, 0x64, 0xef, 0xef, 0x5f, - 0xe5, 0xfd, 0xa5, 0xa9, 0xce, 0x7f, 0x2d, 0x40, 0xef, 0xf9, 0x38, 0x94, 0x41, 0xb6, 0x4d, 0x02, - 0xcd, 0x88, 0x8d, 0x38, 0x06, 0x81, 0x0e, 0xc5, 0x67, 0x72, 0x17, 0x3a, 0x32, 0x18, 0x71, 0x21, - 0xd9, 0x28, 0xc1, 0x50, 0xd0, 0xa0, 0x05, 0x43, 0x8d, 0xea, 0x18, 0xe8, 0xc5, 0xd1, 0xa0, 0x81, - 0xd3, 0x0a, 0x06, 0xf9, 0x12, 0xc0, 0x8b, 0xc3, 0x38, 0x75, 0x87, 0x4c, 0x0c, 0x8d, 0xb7, 0xaf, - 0x17, 0x9a, 0xda, 0xef, 0xde, 0xd8, 0x56, 0x82, 0x8f, 0x99, 0x18, 0xd2, 0x8e, 0x97, 0x3d, 0x92, - 0xdb, 0x2a, 0xe0, 0xa8, 0x05, 0x02, 0x1f, 0x3d, 0xbc, 0x41, 0x17, 0x91, 0xde, 0xf3, 0xc9, 0xbb, - 0xb0, 0x72, 0xc6, 0x27, 0x1e, 0x4b, 0x7d, 0xd7, 0xc4, 0x68, 0xf4, 0xd7, 0x0e, 0x5e, 0xbf, 0x62, - 0x1f, 0x68, 0x2e, 0xb9, 0x85, 0xe6, 0xe7, 0x8e, 0x03, 0x1f, 0x9d, 0xb0, 0x43, 0x5b, 0x67, 0x7c, - 0x72, 0x1c, 0xf8, 0xe4, 0x21, 0xb4, 0x82, 0x11, 0x3b, 0xe5, 0xca, 0xc1, 0x94, 0x66, 0x6f, 0x57, - 0x68, 0xb6, 0x67, 0x82, 0xfc, 0x9e, 0x12, 0xa6, 0x66, 0x0e, 0xf9, 0x10, 0xae, 0x7b, 0x63, 0x21, - 0xe3, 0x51, 0xf0, 0x83, 0x0e, 0xed, 0xa8, 0x18, 0xfa, 0x58, 0x87, 0x92, 0xd2, 0x10, 0x6e, 0x8d, - 0x7c, 0x06, 0xb7, 0xe7, 0x4c, 0x70, 0x75, 0xd8, 0x05, 0x0c, 0xbb, 0xb7, 0x66, 0xa7, 0x6d, 0xab, - 0xe1, 0xb5, 0xfb, 0xd0, 0xc9, 0xcf, 0x47, 0xc5, 0xea, 0x20, 0xf2, 0xf9, 0x3f, 0x0c, 0x6a, 0xeb, - 0x8d, 0x07, 0x0d, 0xaa, 0x89, 0xb5, 0x5f, 0xd7, 0x60, 0xa9, 0xa4, 0xa9, 0xbd, 0xf1, 0x5a, 0x69, - 0xe3, 0xd9, 0x35, 0xd7, 0xad, 0x6b, 0x1e, 0xc0, 0x62, 0xc2, 0x26, 0x61, 0xcc, 0x7c, 0xbc, 0xc6, - 0x1e, 0xcd, 0x48, 0xf5, 0xba, 0x8b, 0xc0, 0x97, 0xea, 0xfe, 0xd4, 0x05, 0x68, 0x82, 0xdc, 0x84, - 0xd6, 0x90, 0x07, 0xa7, 0x43, 0x69, 0xee, 0xc5, 0x50, 0x64, 0x0d, 0xda, 0x2a, 0xfa, 0x88, 0xe0, - 0x07, 0x8e, 0xf7, 0xd1, 0xa0, 0x39, 0x4d, 0xde, 0x82, 0xa5, 0x14, 0x9f, 0x5c, 0xc9, 0xd2, 0x53, - 0x2e, 0xf1, 0x3e, 0x1a, 0xb4, 0xa7, 0x99, 0x47, 0xc8, 0x2b, 0x32, 0x51, 0xdb, 0xca, 0x44, 0xce, - 0x4f, 0x75, 0xb8, 0xfe, 0x2c, 0xf6, 0x58, 0x68, 0x6e, 0xf5, 0xc0, 0x28, 0xf7, 0x17, 0xd0, 0x3c, - 0xe3, 0x13, 0x81, 0x47, 0xd1, 0xdd, 0xbc, 0x5f, 0xdc, 0xe0, 0x1c, 0xe1, 0x8d, 0xa7, 0x7c, 0x42, - 0x51, 0x9c, 0x7c, 0x06, 0xbd, 0x91, 0xba, 0x62, 0x66, 0xc2, 0x41, 0x1d, 0x9d, 0xe8, 0xe6, 0x7c, - 0x03, 0xa0, 0x25, 0x59, 0xb5, 0xc3, 0x84, 0x09, 0x71, 0x11, 0xa7, 0xbe, 0xb1, 0xf8, 0x9c, 0x56, - 0xa7, 0xa8, 0x3c, 0xec, 0x29, 0x9f, 0xe0, 0x69, 0x75, 0x68, 0x46, 0x92, 0x07, 0xb9, 0xb9, 0x1a, - 0xa5, 0x74, 0xca, 0xea, 0xd0, 0x69, 0xf6, 0xda, 0x9f, 0x42, 0x43, 0x4d, 0x98, 0xe7, 0x8b, 0x04, - 0x9a, 0x2a, 0xc3, 0xa3, 0xba, 0x3d, 0x8a, 0xcf, 0xce, 0xff, 0xd6, 0xe0, 0x46, 0x69, 0xb3, 0x9c, - 0xa7, 0x8f, 0x79, 0x18, 0xc6, 0xca, 0x43, 0x8c, 0x67, 0xb8, 0xe7, 0x3c, 0x15, 0x41, 0x1c, 0xe1, - 0x62, 0x0b, 0x74, 0xd9, 0xb0, 0x5f, 0x6a, 0xae, 0x32, 0x94, 0x84, 0x73, 0x74, 0x32, 0xbd, 0x72, - 0x4b, 0x91, 0x7b, 0x3e, 0x82, 0x0c, 0x7e, 0x1e, 0x78, 0xdc, 0x45, 0x55, 0xf4, 0x6e, 0x41, 0xb3, - 0xf6, 0x95, 0x42, 0x85, 0x80, 0x9c, 0x24, 0xdc, 0xec, 0xd9, 0x08, 0x1c, 0x4d, 0x12, 0x8c, 0x1e, - 0x22, 0x38, 0x8d, 0x98, 0x1c, 0xa7, 0x1c, 0x37, 0xdc, 0xa3, 0x05, 0xc3, 0xf9, 0x8f, 0x1a, 0xac, - 0xaa, 0xf8, 0xa6, 0x54, 0xb7, 0xd3, 0x7e, 0x05, 0x1c, 0x79, 0x17, 0x56, 0x02, 0x4b, 0xca, 0xcd, - 0xb1, 0xc9, 0xb2, 0xcd, 0x2e, 0xe9, 0x8d, 0x6a, 0x35, 0x66, 0xd4, 0xca, 0x0e, 0xb7, 0x59, 0xf6, - 0x80, 0xec, 0x98, 0x16, 0x10, 0x2b, 0x65, 0xa4, 0xf3, 0x4f, 0x2d, 0xb8, 0x5d, 0x89, 0x6e, 0xc8, - 0x9f, 0xc1, 0x6a, 0xc8, 0x84, 0x74, 0xc7, 0x89, 0xcf, 0x24, 0xf7, 0xdd, 0x50, 0x5d, 0x46, 0x38, - 0x31, 0xaa, 0x13, 0x35, 0x76, 0xac, 0x87, 0x9e, 0xe9, 0x91, 0x19, 0x58, 0xf5, 0x16, 0x2c, 0x99, - 0xa4, 0xed, 0x62, 0x70, 0x31, 0x0a, 0xf7, 0x0c, 0x53, 0x7b, 0xf3, 0x6d, 0x68, 0xf3, 0x48, 0xb8, - 0x96, 0xda, 0x8b, 0x3c, 0x12, 0x78, 0x0b, 0xf7, 0xa1, 0x67, 0x6b, 0x80, 0xea, 0x37, 0x69, 0xd7, - 0x7a, 0xb3, 0x3a, 0x11, 0x31, 0x11, 0x92, 0x8f, 0x5c, 0xc9, 0x4e, 0x15, 0xb2, 0x69, 0xa8, 0x13, - 0xd1, 0xac, 0x23, 0x76, 0x2a, 0xc8, 0x3b, 0xb0, 0x8c, 0x8a, 0xbb, 0x51, 0xe0, 0x9d, 0xe1, 0x4b, - 0x74, 0xb0, 0x5c, 0x42, 0xee, 0xbe, 0x61, 0xaa, 0x8b, 0x61, 0xbe, 0xcf, 0x7d, 0x8c, 0x73, 0x6d, - 0xaa, 0x09, 0x75, 0x74, 0x27, 0xea, 0x86, 0xb8, 0x8f, 0x81, 0xac, 0x4d, 0x33, 0x52, 0xc9, 0x8f, - 0xc6, 0x4a, 0xa7, 0xae, 0x96, 0x47, 0x42, 0xc9, 0xa7, 0x7c, 0x14, 0x9f, 0x73, 0x1f, 0x33, 0x7b, - 0x9b, 0x66, 0x24, 0x59, 0x87, 0xde, 0x90, 0x09, 0x17, 0x97, 0x75, 0xc7, 0x02, 0xf3, 0x74, 0x9b, - 0xc2, 0x90, 0x89, 0x2d, 0xc5, 0x3a, 0xc6, 0xb8, 0x7b, 0xce, 0xd3, 0xe0, 0x55, 0x86, 0xa8, 0x85, - 0x64, 0x72, 0xac, 0xd3, 0x70, 0x83, 0x12, 0x7b, 0xe8, 0x10, 0x47, 0x10, 0x08, 0xa7, 0x63, 0x21, - 0x33, 0xc9, 0x15, 0x94, 0xec, 0x22, 0xcf, 0x88, 0x7c, 0x01, 0x77, 0x0c, 0x22, 0x74, 0x53, 0xfe, - 0xf7, 0x63, 0x2e, 0xa4, 0xbe, 0x45, 0x9c, 0xc2, 0x31, 0xc5, 0x36, 0xe8, 0xc0, 0x88, 0x50, 0x2d, - 0x81, 0x97, 0xa9, 0xe6, 0xf3, 0xea, 0xe9, 0xda, 0x86, 0xaf, 0x55, 0x4e, 0xc7, 0xe0, 0x4e, 0xbe, - 0x84, 0xbb, 0xd3, 0xd3, 0xd5, 0x71, 0x48, 0x6e, 0x5e, 0x4f, 0x70, 0xfe, 0xed, 0xf2, 0x7c, 0x8a, - 0x12, 0xfa, 0xfd, 0xd5, 0x0b, 0x68, 0x05, 0xae, 0x57, 0x2f, 0xa0, 0x35, 0xb8, 0x0f, 0x3d, 0x3f, - 0x10, 0x49, 0xc8, 0x26, 0xda, 0xbe, 0x56, 0xf1, 0xea, 0xbb, 0x86, 0xa7, 0x6c, 0xcc, 0xb9, 0x80, - 0x5b, 0xd3, 0x2e, 0x90, 0xa1, 0x86, 0xf9, 0xce, 0x3a, 0x63, 0xd4, 0xf5, 0x39, 0x46, 0x3d, 0x6d, - 0xb9, 0x8d, 0x19, 0xcb, 0x75, 0xfe, 0xa5, 0x39, 0xcf, 0xf9, 0x4c, 0x59, 0xf0, 0x8b, 0x75, 0x4b, - 0xcf, 0x38, 0x58, 0x37, 0x49, 0x83, 0x73, 0x26, 0xb9, 0x7b, 0xc6, 0x27, 0x3a, 0xc1, 0x3d, 0xaa, - 0x0f, 0x6a, 0x14, 0x0c, 0x5b, 0x05, 0xdc, 0x75, 0x15, 0x34, 0x84, 0x97, 0x06, 0x89, 0x7a, 0x05, - 0xfa, 0x58, 0x8f, 0xda, 0x2c, 0x95, 0xf3, 0xbe, 0x8f, 0x83, 0xc8, 0x78, 0x58, 0x9b, 0x1a, 0x4a, - 0x65, 0x04, 0x6d, 0x77, 0xdc, 0xc7, 0x9c, 0xd7, 0xa6, 0x39, 0x5d, 0x38, 0xc0, 0xa2, 0xed, 0x00, - 0x2f, 0xa0, 0x6f, 0x6e, 0x4a, 0xb8, 0x32, 0x76, 0xd5, 0x3a, 0x06, 0x84, 0xbc, 0x33, 0x85, 0xfc, - 0xf2, 0x02, 0xc8, 0x88, 0x1f, 0xc5, 0x4f, 0xe2, 0x20, 0xa2, 0xcb, 0x69, 0x89, 0x26, 0x9f, 0x43, - 0x3b, 0x83, 0xdd, 0x06, 0xe6, 0xbf, 0x59, 0xb1, 0x90, 0xc1, 0xfb, 0x82, 0xe6, 0x13, 0x54, 0x90, - 0xe6, 0x91, 0x97, 0x4e, 0x12, 0x99, 0x3b, 0x70, 0xc1, 0xc0, 0x10, 0x9e, 0x70, 0x4f, 0xb2, 0xc2, - 0x8d, 0x0b, 0x86, 0x8a, 0xc9, 0x46, 0x54, 0x39, 0x23, 0xe6, 0xe2, 0x1e, 0x9e, 0xdc, 0x72, 0xc1, - 0x7e, 0xaa, 0x52, 0xee, 0x2e, 0xf4, 0x94, 0x01, 0xa6, 0x71, 0xe8, 0x46, 0xb1, 0xcf, 0x0d, 0x02, - 0x77, 0x2a, 0xb4, 0xdc, 0xd6, 0xa2, 0xfb, 0xb1, 0xcf, 0x55, 0xe9, 0x97, 0x13, 0x0a, 0x08, 0xdc, - 0xb9, 0xe4, 0x60, 0xcc, 0xd5, 0xd7, 0xf2, 0xab, 0xbf, 0x07, 0x90, 0x8c, 0x4f, 0xc2, 0xc0, 0xc3, - 0x9b, 0xd7, 0x36, 0xd8, 0xd1, 0x1c, 0x75, 0xe9, 0xb9, 0xfd, 0x34, 0x6c, 0xfb, 0xb9, 0x24, 0xd6, - 0xde, 0xd2, 0x19, 0x3e, 0x03, 0xa4, 0x1d, 0xda, 0x52, 0xe4, 0x9e, 0xaf, 0x4c, 0x39, 0xab, 0x00, - 0x27, 0x6a, 0xb4, 0xa5, 0xed, 0x27, 0xe7, 0xed, 0xa1, 0x2d, 0x68, 0x8f, 0x5e, 0xd4, 0x2f, 0x43, - 0x82, 0x7c, 0x05, 0xd7, 0x52, 0x7e, 0xce, 0x59, 0xc8, 0x7d, 0xd7, 0x60, 0x8c, 0x0c, 0x91, 0x5a, - 0xe5, 0x22, 0x35, 0x22, 0x79, 0x8d, 0x92, 0x96, 0x19, 0xc2, 0xf9, 0x16, 0x06, 0x55, 0x47, 0xf8, - 0x47, 0xe6, 0x53, 0xe7, 0xb7, 0x35, 0x68, 0x67, 0x75, 0x88, 0x75, 0xc2, 0x3a, 0x7b, 0xdd, 0x81, - 0x0e, 0x9e, 0x08, 0xa6, 0x5a, 0xdd, 0x65, 0x68, 0x2b, 0x46, 0x29, 0xd1, 0x36, 0xac, 0x44, 0xfb, - 0x0d, 0xdc, 0x1c, 0xf1, 0xd1, 0x09, 0x4f, 0xc5, 0x30, 0x48, 0xb4, 0x9b, 0xef, 0x9e, 0x73, 0xb5, - 0xeb, 0xd9, 0x0a, 0x61, 0xae, 0x1c, 0xad, 0x98, 0xaf, 0x1c, 0x94, 0x79, 0x32, 0x38, 0xe7, 0x99, - 0x83, 0x6a, 0xaa, 0xd8, 0x7e, 0xcb, 0xde, 0xfe, 0x5c, 0xd7, 0x74, 0x7e, 0xac, 0xc3, 0xcd, 0xf9, - 0xaf, 0xad, 0x38, 0x45, 0x02, 0x4d, 0x6b, 0xeb, 0xf8, 0xac, 0x12, 0x9c, 0x51, 0x11, 0xfb, 0x24, - 0x1d, 0x9a, 0x91, 0x73, 0x91, 0xc7, 0xa5, 0x20, 0xc9, 0xb6, 0xb8, 0x56, 0xc9, 0xe2, 0x08, 0x34, - 0x5f, 0xa5, 0xf1, 0xc8, 0x24, 0x6a, 0x7c, 0x56, 0x79, 0x3e, 0x65, 0x17, 0x6e, 0x06, 0xe5, 0xdb, - 0xb8, 0x18, 0xa4, 0xec, 0xe2, 0xa0, 0x40, 0xf3, 0x76, 0xa1, 0xa2, 0x09, 0x2c, 0x29, 0x30, 0x48, - 0x03, 0x4e, 0xd0, 0x84, 0xf3, 0x09, 0xac, 0xe4, 0xd5, 0xa7, 0xc9, 0xcf, 0xaf, 0xd5, 0x27, 0x72, - 0x1e, 0x6a, 0x58, 0xa7, 0x26, 0x3e, 0xd7, 0x7d, 0x2e, 0x41, 0x39, 0x7b, 0xdd, 0xd9, 0x7f, 0x05, - 0x37, 0x75, 0x35, 0x2e, 0x83, 0x73, 0x65, 0xc7, 0x3c, 0x92, 0x3c, 0xbd, 0x64, 0x7e, 0x1f, 0x1a, - 0x81, 0x2f, 0x06, 0xf5, 0xf5, 0xc6, 0x83, 0x1e, 0x55, 0x8f, 0xce, 0x0e, 0xac, 0xcd, 0xae, 0xb0, - 0xe5, 0x79, 0x1c, 0x03, 0xda, 0xeb, 0xae, 0xb2, 0xab, 0x23, 0x4d, 0x79, 0x95, 0x9d, 0x40, 0x8c, - 0x02, 0x21, 0xae, 0xb0, 0xcc, 0xb6, 0xce, 0x5f, 0x53, 0xcb, 0xf0, 0x90, 0x5f, 0x45, 0x97, 0x47, - 0xda, 0xb9, 0xcb, 0x8b, 0x1c, 0x47, 0xe9, 0x55, 0x4e, 0xe5, 0x3f, 0xeb, 0xf0, 0xfe, 0xec, 0x22, - 0xd3, 0x81, 0x74, 0x87, 0x7b, 0x81, 0xa8, 0xc6, 0xe0, 0xd3, 0xa9, 0xf5, 0x4f, 0xe0, 0x5a, 0xe1, - 0x8c, 0x19, 0xc4, 0x6a, 0xa0, 0x2b, 0xf4, 0x8b, 0x01, 0x83, 0xb3, 0xce, 0xa0, 0xed, 0x9b, 0xe5, - 0xd1, 0x01, 0x96, 0x37, 0x5f, 0x4c, 0x77, 0x60, 0x5e, 0x47, 0xb5, 0x8d, 0x22, 0xd0, 0x66, 0x78, - 0x27, 0x5b, 0x96, 0xe6, 0x2f, 0x70, 0x3e, 0x85, 0xb5, 0x6a, 0x39, 0xd2, 0x83, 0xf6, 0xd6, 0xf6, - 0xf6, 0xee, 0xc1, 0xd1, 0xee, 0x4e, 0xff, 0x0d, 0x45, 0xed, 0xec, 0x6e, 0x3f, 0xdb, 0xdb, 0xdf, - 0xdd, 0xe9, 0xd7, 0x9c, 0x9f, 0x6b, 0xd0, 0x53, 0xda, 0x3c, 0x8a, 0xe3, 0xb3, 0x11, 0x4b, 0xcf, - 0xaa, 0x4f, 0x78, 0x9c, 0x86, 0xc6, 0x70, 0xd5, 0xe3, 0xdc, 0x68, 0x77, 0x07, 0x3a, 0xe8, 0x4d, - 0xae, 0x92, 0xd5, 0x5e, 0xdf, 0x46, 0xc6, 0x71, 0x1a, 0xda, 0x40, 0x78, 0xa1, 0x0c, 0x84, 0xef, - 0x01, 0xf8, 0xda, 0x46, 0x5c, 0x26, 0x4d, 0xdc, 0xea, 0x18, 0xce, 0x96, 0x74, 0xfe, 0x11, 0x6e, - 0x28, 0x0d, 0x77, 0x23, 0x71, 0x2c, 0x78, 0xaa, 0x5e, 0xa4, 0x9b, 0x3a, 0x15, 0xaa, 0xae, 0x41, - 0x7b, 0x6c, 0xe4, 0x8c, 0xbe, 0x39, 0x8d, 0x3d, 0x96, 0x21, 0x0b, 0x30, 0xfc, 0xeb, 0x2c, 0xb8, - 0x88, 0xf4, 0x5e, 0x09, 0xa7, 0x37, 0x4b, 0xea, 0x39, 0x4f, 0xa0, 0x8f, 0x1e, 0x1e, 0x72, 0x96, - 0x3e, 0x0e, 0x84, 0x8c, 0xd3, 0x89, 0x1d, 0xa8, 0x6a, 0xa5, 0x40, 0x75, 0x0f, 0xc0, 0x53, 0x82, - 0x7a, 0x2f, 0x75, 0xbd, 0x17, 0xc3, 0xd9, 0x92, 0xce, 0xff, 0xd7, 0x80, 0x60, 0x15, 0xa8, 0x91, - 0xe1, 0x41, 0xe0, 0x61, 0xdc, 0x9b, 0x57, 0x00, 0x5b, 0x5d, 0x8a, 0x7a, 0x45, 0x97, 0x42, 0xdb, - 0xde, 0x4c, 0x97, 0xa2, 0x89, 0xec, 0xac, 0x4b, 0x71, 0x07, 0x3a, 0x88, 0x4c, 0xb1, 0x4d, 0xa1, - 0xab, 0x3d, 0x6c, 0x53, 0x1c, 0xce, 0x6d, 0x53, 0xb4, 0x50, 0xa0, 0xa2, 0x4d, 0xb1, 0x68, 0xb7, - 0x29, 0x86, 0x70, 0x7d, 0x76, 0x27, 0xa2, 0xba, 0x13, 0xf3, 0x29, 0xb4, 0x13, 0x23, 0x84, 0x9e, - 0xda, 0xdd, 0xbc, 0x5b, 0x76, 0x88, 0xf2, 0x4a, 0x34, 0x97, 0x76, 0x7e, 0xd5, 0x80, 0xae, 0xd5, - 0xb3, 0xac, 0xb8, 0xf7, 0x01, 0x2c, 0x32, 0xdf, 0x4f, 0xb9, 0x10, 0xd9, 0x79, 0x19, 0xd2, 0x56, - 0xa9, 0x51, 0x52, 0xa9, 0x0c, 0x98, 0x34, 0x0a, 0xb6, 0x00, 0x13, 0x81, 0x66, 0xc2, 0xe4, 0xd0, - 0x80, 0x1f, 0x7c, 0xce, 0x6f, 0xaa, 0x65, 0xdd, 0x94, 0xdd, 0xb9, 0x5b, 0x34, 0xad, 0x10, 0xd3, - 0xb9, 0x5b, 0x85, 0x05, 0x3e, 0x8a, 0xbf, 0x0f, 0x30, 0x3b, 0x75, 0xa8, 0x26, 0xd4, 0x55, 0x5d, - 0xb0, 0x30, 0xe4, 0xd2, 0x94, 0x96, 0x86, 0x52, 0x8b, 0x2b, 0x33, 0x32, 0xb8, 0x14, 0x9f, 0xf1, - 0x5a, 0x03, 0xdf, 0xe7, 0x91, 0xc1, 0xa3, 0x86, 0xba, 0xa4, 0xae, 0x5c, 0x83, 0x76, 0x12, 0x8b, - 0x00, 0x91, 0xfd, 0x92, 0x6e, 0x4b, 0x65, 0x34, 0xf9, 0x18, 0x6e, 0x24, 0x69, 0xec, 0x1f, 0xa4, - 0xfc, 0x15, 0x4f, 0x53, 0xee, 0x6f, 0xa3, 0xf5, 0xef, 0xe8, 0x9a, 0xb2, 0x43, 0xe7, 0x0f, 0xaa, - 0x59, 0x92, 0x0b, 0x39, 0x3b, 0x6b, 0x45, 0xcf, 0x9a, 0x3b, 0xa8, 0xf4, 0x88, 0x13, 0x9e, 0xb2, - 0x93, 0x50, 0x97, 0x95, 0x1d, 0x9a, 0xd3, 0xce, 0xbf, 0x9a, 0x2b, 0x35, 0xfd, 0xf0, 0x8a, 0x2b, - 0xb5, 0x2e, 0xae, 0x3e, 0xb7, 0xab, 0xd7, 0x28, 0x37, 0x8c, 0xac, 0xc6, 0x8c, 0xc6, 0x26, 0xaa, - 0xd8, 0xe3, 0x69, 0x70, 0xce, 0x7d, 0x17, 0xe1, 0xc3, 0x82, 0x29, 0xf6, 0x34, 0xef, 0x2b, 0x85, - 0x22, 0x3e, 0x87, 0x35, 0x5d, 0x96, 0x09, 0xee, 0xbb, 0x38, 0x60, 0x00, 0x22, 0xb6, 0x1d, 0x75, - 0x30, 0xba, 0x85, 0x45, 0x9a, 0xe0, 0xfe, 0x4e, 0x3e, 0xbe, 0xa7, 0x86, 0x75, 0xab, 0x21, 0xf2, - 0xb2, 0xe5, 0xf5, 0xe5, 0x83, 0x66, 0xe1, 0xea, 0x7f, 0x0e, 0xed, 0x29, 0x9c, 0x5b, 0xd1, 0x87, - 0xcf, 0xc5, 0xd4, 0x14, 0xd3, 0x26, 0x53, 0xe5, 0x4d, 0x63, 0xee, 0x37, 0x04, 0x35, 0x4a, 0x73, - 0x31, 0xdb, 0x16, 0xa0, 0x6c, 0x0b, 0xef, 0x41, 0x7f, 0xaa, 0x73, 0x2c, 0xd0, 0x8e, 0x7a, 0x33, - 0xbd, 0x38, 0xe7, 0x3b, 0x1d, 0x66, 0x33, 0x8c, 0x7d, 0x60, 0x4c, 0xa6, 0x0a, 0x0a, 0xda, 0x3b, - 0xab, 0xbf, 0xd6, 0xce, 0x9c, 0xdf, 0xd5, 0x74, 0x24, 0x3d, 0x64, 0xe7, 0xdc, 0xdf, 0x32, 0xce, - 0x69, 0xb9, 0x6d, 0xad, 0xec, 0xb6, 0xf3, 0x5a, 0xb7, 0x77, 0xa1, 0xf3, 0x8a, 0x9d, 0xc7, 0xe3, - 0x34, 0x90, 0xfa, 0xf6, 0xdb, 0xb4, 0x60, 0x5c, 0x92, 0x62, 0xee, 0x43, 0x4f, 0xd7, 0xdd, 0xae, - 0x1d, 0xc9, 0xba, 0x9a, 0xa7, 0x1b, 0x03, 0xef, 0xc3, 0x35, 0x9d, 0x1b, 0xc4, 0x30, 0x4e, 0x25, - 0x16, 0x44, 0xc2, 0xb8, 0xed, 0x0a, 0x0e, 0x1c, 0x2a, 0xbe, 0x2a, 0x8c, 0x84, 0x4a, 0x87, 0x3c, - 0x12, 0x06, 0x57, 0xaa, 0x47, 0x65, 0xaa, 0x81, 0x70, 0x95, 0x23, 0x98, 0x2b, 0x68, 0x05, 0xe2, - 0x88, 0x0b, 0xf9, 0xa4, 0xd9, 0x6e, 0xf6, 0x17, 0x9c, 0x9f, 0x6a, 0xfa, 0x74, 0x67, 0x4a, 0xd3, - 0x8a, 0xd3, 0x9d, 0xae, 0xb0, 0xf4, 0x19, 0x94, 0x2a, 0xac, 0x5d, 0x78, 0x73, 0xa8, 0xb3, 0x91, - 0xcb, 0x52, 0x6f, 0x18, 0x9c, 0x73, 0x57, 0x8c, 0x93, 0x44, 0xe9, 0xce, 0x23, 0xe5, 0x64, 0xbe, - 0x39, 0xa0, 0xbb, 0x46, 0x6c, 0x4b, 0x4b, 0x1d, 0x6a, 0xa1, 0x5d, 0x2d, 0xe3, 0xfc, 0x4f, 0x4d, - 0x23, 0xdf, 0xa3, 0x74, 0x2c, 0x24, 0xf7, 0x55, 0x8a, 0x7d, 0xcd, 0x2f, 0xa4, 0x5f, 0x40, 0xcb, - 0xc2, 0x40, 0xcb, 0xd3, 0xe5, 0xbc, 0xb5, 0xe0, 0xc6, 0x51, 0xd1, 0x80, 0xa2, 0x66, 0x92, 0xf3, - 0x19, 0x74, 0x2d, 0x36, 0xe9, 0xc2, 0xe2, 0xf1, 0xfe, 0xd3, 0xfd, 0x17, 0x5f, 0xef, 0xf7, 0xdf, - 0x50, 0xc4, 0x11, 0x3d, 0x3e, 0x54, 0x80, 0xa5, 0x46, 0xae, 0xc1, 0xd2, 0xf1, 0x3e, 0x92, 0x5f, - 0xbf, 0xa0, 0x47, 0x8f, 0xbf, 0xed, 0xd7, 0x9d, 0x9f, 0x1b, 0xba, 0x45, 0xf3, 0xd2, 0x6a, 0x81, - 0x19, 0xe0, 0x54, 0x5d, 0xb9, 0xa0, 0x8b, 0xd6, 0xad, 0x02, 0x62, 0x19, 0xea, 0x32, 0x36, 0x31, - 0xa4, 0x2e, 0x63, 0x65, 0x5c, 0xde, 0x50, 0x45, 0xe2, 0xe8, 0x34, 0x0b, 0x23, 0x05, 0x43, 0x5d, - 0x89, 0x41, 0x56, 0x3a, 0xb7, 0x9b, 0xce, 0x63, 0xce, 0xdb, 0xc2, 0x76, 0x79, 0xca, 0x45, 0x12, - 0x47, 0x22, 0x4b, 0x10, 0x39, 0xad, 0x72, 0x4d, 0xca, 0x93, 0x30, 0xd0, 0x93, 0xb5, 0xfd, 0x75, - 0x0c, 0x67, 0x4b, 0x12, 0x3e, 0xbf, 0xd5, 0xd7, 0xc6, 0x93, 0xfd, 0xb8, 0x7c, 0xb2, 0x73, 0x76, - 0xbd, 0xf1, 0x72, 0xa6, 0x19, 0x38, 0xb7, 0x41, 0xa8, 0xef, 0xb0, 0x93, 0xd7, 0x1f, 0xdf, 0x00, - 0x99, 0x9d, 0x39, 0x73, 0x17, 0x07, 0xbb, 0xfb, 0x3b, 0x7b, 0xfb, 0x7f, 0xdd, 0xaf, 0x95, 0xa0, - 0x64, 0xbd, 0x04, 0x25, 0x1b, 0x8a, 0xda, 0xde, 0xda, 0xdf, 0xde, 0x7d, 0xb6, 0xbb, 0xd3, 0x6f, - 0x3a, 0xbf, 0xa9, 0xe9, 0xc2, 0x64, 0xbb, 0xd4, 0x89, 0xfb, 0x05, 0xc4, 0x7d, 0x17, 0x3a, 0xe6, - 0x3c, 0xf7, 0x32, 0x4b, 0x2b, 0x18, 0xe4, 0xef, 0x60, 0x25, 0xc3, 0xb4, 0x6e, 0xc9, 0xf2, 0x3e, - 0x9a, 0xee, 0xac, 0xcc, 0x7b, 0xe5, 0x46, 0xf6, 0x60, 0x8e, 0x67, 0xd9, 0x2f, 0xd1, 0xce, 0x07, - 0xb0, 0x5c, 0x96, 0xb8, 0x14, 0x37, 0xff, 0x5f, 0x1d, 0x56, 0xa6, 0x3e, 0x6b, 0x57, 0x43, 0x9f, - 0xe9, 0x9e, 0x63, 0x7d, 0xa6, 0xe7, 0x48, 0x3e, 0x00, 0x62, 0x8b, 0xb8, 0x76, 0xa7, 0xa6, 0x6f, - 0x09, 0xea, 0x58, 0x65, 0x63, 0xa9, 0xe6, 0x55, 0xb0, 0x14, 0x79, 0x08, 0x3d, 0x11, 0x7b, 0x01, - 0x0b, 0xdd, 0x30, 0x88, 0xce, 0xb2, 0xff, 0x12, 0xdc, 0x9e, 0xfa, 0x4e, 0x8e, 0x12, 0xcf, 0x94, - 0x00, 0xed, 0x8a, 0x82, 0x20, 0x7f, 0x03, 0xab, 0x3c, 0x12, 0x6e, 0x86, 0xa7, 0x5d, 0x3f, 0xff, - 0xf7, 0x40, 0x63, 0xb6, 0x0d, 0x37, 0x03, 0xd8, 0x29, 0xe1, 0xd3, 0x2c, 0xe1, 0x08, 0x00, 0xca, - 0x2e, 0x4c, 0xe9, 0x6c, 0x83, 0xde, 0x5a, 0x19, 0xf4, 0x3e, 0x85, 0xae, 0xf9, 0x1f, 0xc9, 0x51, - 0xd6, 0x81, 0x58, 0xde, 0x7c, 0xaf, 0x78, 0xe3, 0x56, 0xf1, 0xcf, 0x93, 0xe7, 0xe6, 0x8f, 0x27, - 0x66, 0xd1, 0x0d, 0x35, 0x81, 0xda, 0xb3, 0x9d, 0xff, 0xae, 0xc1, 0xb2, 0x52, 0xd1, 0x7a, 0xf3, - 0x5f, 0x62, 0x37, 0x21, 0x2b, 0xe1, 0xcd, 0x47, 0xb6, 0x55, 0xab, 0x29, 0x95, 0x0f, 0x52, 0x5b, - 0x90, 0x6c, 0xc2, 0xaa, 0x18, 0x9f, 0x64, 0x59, 0xf3, 0x89, 0x88, 0xa3, 0x47, 0x13, 0xc9, 0x33, - 0x0c, 0x3a, 0x77, 0x8c, 0x7c, 0x00, 0xd7, 0xb2, 0x86, 0x64, 0x31, 0x41, 0x7f, 0x8a, 0x9c, 0x1d, - 0x70, 0xfe, 0xad, 0x96, 0x63, 0x25, 0x95, 0xb0, 0xb1, 0x16, 0xcb, 0x4d, 0x4c, 0x3d, 0xce, 0xcd, - 0x94, 0x37, 0xa1, 0x65, 0x3e, 0x53, 0xe8, 0x2c, 0x60, 0x28, 0xdb, 0x48, 0x9b, 0x25, 0x23, 0xbd, - 0x0b, 0x1d, 0x93, 0x79, 0xb9, 0x32, 0x0b, 0x55, 0x4a, 0x17, 0x8c, 0x12, 0xa8, 0xd4, 0xa0, 0x28, - 0xa7, 0x9d, 0xef, 0x74, 0x06, 0xb1, 0xac, 0x86, 0x7c, 0x32, 0x65, 0x66, 0x33, 0xc7, 0x59, 0x08, - 0x97, 0x2d, 0x2c, 0x8f, 0x0b, 0x75, 0xbb, 0xd6, 0xf8, 0xb1, 0x06, 0xf7, 0x2c, 0x4c, 0xb1, 0x3d, - 0xfb, 0xc5, 0xf9, 0x1e, 0x40, 0xf6, 0x51, 0x8a, 0x49, 0x13, 0x54, 0x3a, 0x86, 0xb3, 0x25, 0xab, - 0xbe, 0x60, 0xd7, 0x2b, 0xbf, 0x60, 0x57, 0xd5, 0x0c, 0xce, 0xbf, 0xd7, 0xa0, 0x7f, 0x14, 0x9f, - 0xf1, 0x48, 0x03, 0x5e, 0x1e, 0x79, 0x1a, 0x0f, 0xa8, 0x0a, 0xc2, 0x5c, 0xc9, 0x19, 0x9f, 0x94, - 0xce, 0xab, 0x3e, 0x05, 0xc2, 0xdf, 0x86, 0xa5, 0xd3, 0x34, 0x1e, 0x27, 0x19, 0xc4, 0xc2, 0x37, - 0x34, 0x68, 0x99, 0x89, 0xdf, 0xe8, 0x02, 0x11, 0x28, 0xf4, 0x6c, 0x0a, 0x52, 0x43, 0x92, 0x75, - 0xb0, 0x81, 0x40, 0x06, 0x6a, 0x2d, 0x96, 0xf3, 0xcf, 0xe6, 0x63, 0xe3, 0x8c, 0xa2, 0x95, 0xa5, - 0x93, 0x42, 0x2e, 0x11, 0xd7, 0x15, 0x6b, 0x9b, 0x66, 0x24, 0x79, 0x08, 0xdd, 0xa4, 0x98, 0x6e, - 0xfe, 0x08, 0xb5, 0x56, 0x5c, 0xe3, 0xf4, 0x0b, 0xa8, 0x2d, 0xfe, 0x68, 0xe9, 0x6f, 0xbb, 0x1b, - 0x1f, 0x7e, 0x9e, 0x09, 0x9f, 0xb4, 0xf0, 0xe9, 0xa3, 0x3f, 0x04, 0x00, 0x00, 0xff, 0xff, 0x1f, - 0xea, 0xfe, 0xb7, 0x69, 0x26, 0x00, 0x00, + 0x7b, 0xc9, 0xac, 0x0f, 0x01, 0x02, 0xe4, 0xe0, 0x43, 0x10, 0xe4, 0xe6, 0x5b, 0x60, 0x04, 0x41, + 0x10, 0xe4, 0x98, 0x5b, 0xbe, 0x40, 0xf0, 0x8e, 0xef, 0xfe, 0xde, 0x17, 0x78, 0x1f, 0xe2, 0x01, + 0x0f, 0x5d, 0xdd, 0x33, 0xd3, 0xb3, 0xbb, 0x43, 0x8b, 0x78, 0xa7, 0x9d, 0xaa, 0xae, 0xee, 0xa9, + 0xee, 0xae, 0x3f, 0xbf, 0xaa, 0x59, 0x58, 0x4a, 0x58, 0x90, 0x06, 0xd1, 0xe9, 0x46, 0x92, 0xc6, + 0x32, 0x26, 0x6d, 0xfc, 0x39, 0x19, 0xbf, 0x5a, 0xbb, 0xee, 0x0d, 0x99, 0x74, 0x03, 0x9f, 0x47, + 0x32, 0x90, 0x13, 0x3d, 0xbc, 0x76, 0x5d, 0x4c, 0x22, 0xcf, 0x15, 0x5c, 0xca, 0x20, 0x3a, 0x15, + 0x86, 0xe9, 0xb0, 0x24, 0x09, 0x03, 0x8f, 0xc9, 0x20, 0x8e, 0xdc, 0x11, 0x97, 0xcc, 0x67, 0x92, + 0xb9, 0x23, 0x2e, 0x04, 0x3b, 0xe5, 0x46, 0xe6, 0x9a, 0x17, 0x8f, 0x46, 0xe3, 0x28, 0x90, 0x01, + 0x37, 0xd3, 0x1c, 0x06, 0x77, 0xbe, 0xe2, 0xd2, 0x1b, 0x06, 0xd1, 0xe9, 0x23, 0xe6, 0x9d, 0x71, + 0xff, 0x38, 0xd9, 0x61, 0x92, 0xed, 0x70, 0xc9, 0x82, 0x50, 0x90, 0x37, 0xa1, 0x8b, 0xeb, 0x44, + 0xe3, 0xd1, 0x09, 0x4f, 0x07, 0xb5, 0xf5, 0xda, 0x83, 0x25, 0x0a, 0x8a, 0xb5, 0x8f, 0x1c, 0x72, + 0x1f, 0x7a, 0x32, 0x96, 0x2c, 0xcc, 0x24, 0xea, 0x28, 0xd1, 0x45, 0x9e, 0x16, 0x71, 0x7e, 0xbf, + 0x08, 0x2d, 0xb5, 0xf6, 0x38, 0x21, 0xab, 0xb0, 0xe0, 0x85, 0xb1, 0x77, 0x86, 0x0b, 0x35, 0xa9, + 0x26, 0xc8, 0x32, 0xd4, 0x03, 0x1f, 0x67, 0x76, 0x68, 0x3d, 0xf0, 0xc9, 0x97, 0xd0, 0xf6, 0xe2, + 0x48, 0x32, 0x4f, 0x8a, 0x41, 0x63, 0xbd, 0xf1, 0xa0, 0xbb, 0xf9, 0xd6, 0x46, 0x76, 0x22, 0x1b, + 0x87, 0x93, 0xc8, 0xdb, 0x8b, 0x84, 0x64, 0x61, 0x88, 0x7b, 0xdd, 0xd6, 0x92, 0x2f, 0x37, 0x69, + 0x3e, 0x89, 0xec, 0x42, 0xd7, 0xda, 0xe9, 0xa0, 0xf9, 0xcb, 0x6b, 0x68, 0xe1, 0x09, 0xb5, 0xe7, + 0x91, 0x17, 0xb0, 0x92, 0x2d, 0x69, 0xce, 0x63, 0xb0, 0xb0, 0x5e, 0x7b, 0xd0, 0xdd, 0x7c, 0xa7, + 0x58, 0xea, 0x92, 0xc3, 0xa3, 0xd3, 0xb3, 0xc9, 0x31, 0x10, 0x6b, 0xfd, 0x6c, 0xcd, 0xd6, 0x55, + 0xd6, 0x9c, 0xb3, 0x00, 0xf9, 0x08, 0x16, 0x93, 0x34, 0x7e, 0x15, 0x84, 0x7c, 0xb0, 0x88, 0x6b, + 0xdd, 0x2e, 0xd6, 0xca, 0xd6, 0x38, 0xd0, 0x02, 0x34, 0x93, 0x24, 0xcf, 0x61, 0xd9, 0x3c, 0x66, + 0x7a, 0xb4, 0xaf, 0xa2, 0xc7, 0xd4, 0x64, 0xf2, 0x21, 0x2c, 0x1a, 0x83, 0x1c, 0x74, 0x70, 0x9d, + 0x1b, 0xe5, 0xe3, 0x3e, 0xd4, 0x83, 0x34, 0x93, 0x52, 0x87, 0x9b, 0x59, 0x70, 0xa6, 0x00, 0x5c, + 0xe9, 0x70, 0xa7, 0x66, 0x2b, 0x0d, 0xce, 0xf8, 0x44, 0x39, 0xd2, 0xa0, 0x3b, 0x4f, 0x83, 0xa7, + 0x7a, 0x90, 0x66, 0x52, 0xea, 0x04, 0xcc, 0x63, 0xa6, 0x40, 0xef, 0x4a, 0x27, 0x50, 0x9e, 0x4c, + 0xb6, 0xa0, 0x7f, 0xc1, 0xa4, 0x37, 0x7c, 0x11, 0x85, 0x93, 0x2d, 0xcf, 0x8b, 0xc7, 0x91, 0x1c, + 0x2c, 0xcd, 0x53, 0xc4, 0x0c, 0xd2, 0x19, 0x71, 0xe2, 0xc2, 0xad, 0x69, 0x5e, 0xa6, 0xda, 0xf2, + 0x55, 0x54, 0xab, 0x5a, 0x85, 0x3c, 0x80, 0x05, 0x15, 0x50, 0xc4, 0x60, 0x05, 0x5d, 0x82, 0x94, + 0x15, 0xdb, 0x1e, 0x32, 0x49, 0xb5, 0x00, 0xd9, 0x83, 0x1e, 0x3e, 0x64, 0xef, 0xef, 0x5f, 0xe5, + 0xfd, 0xa5, 0xa9, 0xce, 0x7f, 0x2f, 0x40, 0xef, 0xf9, 0x38, 0x94, 0x41, 0xb6, 0x4d, 0x02, 0xcd, + 0x88, 0x8d, 0x38, 0x06, 0x81, 0x0e, 0xc5, 0x67, 0x72, 0x17, 0x3a, 0x32, 0x18, 0x71, 0x21, 0xd9, + 0x28, 0xc1, 0x50, 0xd0, 0xa0, 0x05, 0x43, 0x8d, 0xea, 0x18, 0xe8, 0xc5, 0xd1, 0xa0, 0x81, 0xd3, + 0x0a, 0x06, 0xf9, 0x12, 0xc0, 0x8b, 0xc3, 0x38, 0x75, 0x87, 0x4c, 0x0c, 0x8d, 0xb7, 0xaf, 0x17, + 0x9a, 0xda, 0xef, 0xde, 0xd8, 0x56, 0x82, 0x8f, 0x99, 0x18, 0xd2, 0x8e, 0x97, 0x3d, 0x92, 0xdb, + 0x2a, 0xe0, 0xa8, 0x05, 0x02, 0x1f, 0x3d, 0xbc, 0x41, 0x17, 0x91, 0xde, 0xf3, 0xc9, 0xbb, 0xb0, + 0x72, 0xc6, 0x27, 0x1e, 0x4b, 0x7d, 0xd7, 0xc4, 0x68, 0xf4, 0xd7, 0x0e, 0x5e, 0xbf, 0x62, 0x1f, + 0x68, 0x2e, 0xb9, 0x85, 0xe6, 0xe7, 0x8e, 0x03, 0x1f, 0x9d, 0xb0, 0x43, 0x5b, 0x67, 0x7c, 0x72, + 0x1c, 0xf8, 0xe4, 0x21, 0xb4, 0x82, 0x11, 0x3b, 0xe5, 0xca, 0xc1, 0x94, 0x66, 0x6f, 0x57, 0x68, + 0xb6, 0x67, 0x82, 0xfc, 0x9e, 0x12, 0xa6, 0x66, 0x0e, 0xf9, 0x10, 0xae, 0x7b, 0x63, 0x21, 0xe3, + 0x51, 0xf0, 0x83, 0x0e, 0xed, 0xa8, 0x18, 0xfa, 0x58, 0x87, 0x92, 0xd2, 0x10, 0x6e, 0x8d, 0x7c, + 0x06, 0xb7, 0xe7, 0x4c, 0x70, 0x75, 0xd8, 0x05, 0x0c, 0xbb, 0xb7, 0x66, 0xa7, 0x6d, 0xab, 0xe1, + 0xb5, 0xfb, 0xd0, 0xc9, 0xcf, 0x47, 0xc5, 0xea, 0x20, 0xf2, 0xf9, 0x3f, 0x0c, 0x6a, 0xeb, 0x8d, + 0x07, 0x0d, 0xaa, 0x89, 0xb5, 0xdf, 0xd4, 0x60, 0xa9, 0xa4, 0xa9, 0xbd, 0xf1, 0x5a, 0x69, 0xe3, + 0xd9, 0x35, 0xd7, 0xad, 0x6b, 0x1e, 0xc0, 0x62, 0xc2, 0x26, 0x61, 0xcc, 0x7c, 0xbc, 0xc6, 0x1e, + 0xcd, 0x48, 0xf5, 0xba, 0x8b, 0xc0, 0x97, 0xea, 0xfe, 0xd4, 0x05, 0x68, 0x82, 0xdc, 0x84, 0xd6, + 0x90, 0x07, 0xa7, 0x43, 0x69, 0xee, 0xc5, 0x50, 0x64, 0x0d, 0xda, 0x2a, 0xfa, 0x88, 0xe0, 0x07, + 0x8e, 0xf7, 0xd1, 0xa0, 0x39, 0x4d, 0xde, 0x82, 0xa5, 0x14, 0x9f, 0x5c, 0xc9, 0xd2, 0x53, 0x2e, + 0xf1, 0x3e, 0x1a, 0xb4, 0xa7, 0x99, 0x47, 0xc8, 0x2b, 0x32, 0x51, 0xdb, 0xca, 0x44, 0xce, 0x4f, + 0x75, 0xb8, 0xfe, 0x2c, 0xf6, 0x58, 0x68, 0x6e, 0xf5, 0xc0, 0x28, 0xf7, 0x17, 0xd0, 0x3c, 0xe3, + 0x13, 0x81, 0x47, 0xd1, 0xdd, 0xbc, 0x5f, 0xdc, 0xe0, 0x1c, 0xe1, 0x8d, 0xa7, 0x7c, 0x42, 0x51, + 0x9c, 0x7c, 0x06, 0xbd, 0x91, 0xba, 0x62, 0x66, 0xc2, 0x41, 0x1d, 0x9d, 0xe8, 0xe6, 0x7c, 0x03, + 0xa0, 0x25, 0x59, 0xb5, 0xc3, 0x84, 0x09, 0x71, 0x11, 0xa7, 0xbe, 0xb1, 0xf8, 0x9c, 0x56, 0xa7, + 0xa8, 0x3c, 0xec, 0x29, 0x9f, 0xe0, 0x69, 0x75, 0x68, 0x46, 0x92, 0x07, 0xb9, 0xb9, 0x1a, 0xa5, + 0x74, 0xca, 0xea, 0xd0, 0x69, 0xf6, 0xda, 0x9f, 0x42, 0x43, 0x4d, 0x98, 0xe7, 0x8b, 0x04, 0x9a, + 0x2a, 0xc3, 0xa3, 0xba, 0x3d, 0x8a, 0xcf, 0xce, 0xff, 0xd5, 0xe0, 0x46, 0x69, 0xb3, 0x9c, 0xa7, + 0x8f, 0x79, 0x18, 0xc6, 0xca, 0x43, 0x8c, 0x67, 0xb8, 0xe7, 0x3c, 0x15, 0x41, 0x1c, 0xe1, 0x62, + 0x0b, 0x74, 0xd9, 0xb0, 0x5f, 0x6a, 0xae, 0x32, 0x94, 0x84, 0x73, 0x74, 0x32, 0xbd, 0x72, 0x4b, + 0x91, 0x7b, 0x3e, 0x82, 0x0c, 0x7e, 0x1e, 0x78, 0xdc, 0x45, 0x55, 0xf4, 0x6e, 0x41, 0xb3, 0xf6, + 0x95, 0x42, 0x85, 0x80, 0x9c, 0x24, 0xdc, 0xec, 0xd9, 0x08, 0x1c, 0x4d, 0x12, 0x8c, 0x1e, 0x22, + 0x38, 0x8d, 0x98, 0x1c, 0xa7, 0x1c, 0x37, 0xdc, 0xa3, 0x05, 0xc3, 0xf9, 0xcf, 0x1a, 0xac, 0xaa, + 0xf8, 0xa6, 0x54, 0xb7, 0xd3, 0x7e, 0x05, 0x1c, 0x79, 0x17, 0x56, 0x02, 0x4b, 0xca, 0xcd, 0xb1, + 0xc9, 0xb2, 0xcd, 0x2e, 0xe9, 0x8d, 0x6a, 0x35, 0x66, 0xd4, 0xca, 0x0e, 0xb7, 0x59, 0xf6, 0x80, + 0xec, 0x98, 0x16, 0x10, 0x2b, 0x65, 0xa4, 0xf3, 0x4f, 0x2d, 0xb8, 0x5d, 0x89, 0x6e, 0xc8, 0x9f, + 0xc1, 0x6a, 0xc8, 0x84, 0x74, 0xc7, 0x89, 0xcf, 0x24, 0xf7, 0xdd, 0x50, 0x5d, 0x46, 0x38, 0x31, + 0xaa, 0x13, 0x35, 0x76, 0xac, 0x87, 0x9e, 0xe9, 0x91, 0x19, 0x58, 0xf5, 0x16, 0x2c, 0x99, 0xa4, + 0xed, 0x62, 0x70, 0x31, 0x0a, 0xf7, 0x0c, 0x53, 0x7b, 0xf3, 0x6d, 0x68, 0xf3, 0x48, 0xb8, 0x96, + 0xda, 0x8b, 0x3c, 0x12, 0x78, 0x0b, 0xf7, 0xa1, 0x67, 0x6b, 0x80, 0xea, 0x37, 0x69, 0xd7, 0x7a, + 0xb3, 0x3a, 0x11, 0x31, 0x11, 0x92, 0x8f, 0x5c, 0xc9, 0x4e, 0x15, 0xb2, 0x69, 0xa8, 0x13, 0xd1, + 0xac, 0x23, 0x76, 0x2a, 0xc8, 0x3b, 0xb0, 0x8c, 0x8a, 0xbb, 0x51, 0xe0, 0x9d, 0xe1, 0x4b, 0x74, + 0xb0, 0x5c, 0x42, 0xee, 0xbe, 0x61, 0xaa, 0x8b, 0x61, 0xbe, 0xcf, 0x7d, 0x8c, 0x73, 0x6d, 0xaa, + 0x09, 0x75, 0x74, 0x27, 0xea, 0x86, 0xb8, 0x8f, 0x81, 0xac, 0x4d, 0x33, 0x52, 0xc9, 0x8f, 0xc6, + 0x4a, 0xa7, 0xae, 0x96, 0x47, 0x42, 0xc9, 0xa7, 0x7c, 0x14, 0x9f, 0x73, 0x1f, 0x33, 0x7b, 0x9b, + 0x66, 0x24, 0x59, 0x87, 0xde, 0x90, 0x09, 0x17, 0x97, 0x75, 0xc7, 0x02, 0xf3, 0x74, 0x9b, 0xc2, + 0x90, 0x89, 0x2d, 0xc5, 0x3a, 0xc6, 0xb8, 0x7b, 0xce, 0xd3, 0xe0, 0x55, 0x86, 0xa8, 0x85, 0x64, + 0x72, 0xac, 0xd3, 0x70, 0x83, 0x12, 0x7b, 0xe8, 0x10, 0x47, 0x10, 0x08, 0xa7, 0x63, 0x21, 0x33, + 0xc9, 0x15, 0x94, 0xec, 0x22, 0xcf, 0x88, 0x7c, 0x01, 0x77, 0x0c, 0x22, 0x74, 0x53, 0xfe, 0xf7, + 0x63, 0x2e, 0xa4, 0xbe, 0x45, 0x9c, 0xc2, 0x31, 0xc5, 0x36, 0xe8, 0xc0, 0x88, 0x50, 0x2d, 0x81, + 0x97, 0xa9, 0xe6, 0xf3, 0xea, 0xe9, 0xda, 0x86, 0xaf, 0x55, 0x4e, 0xc7, 0xe0, 0x4e, 0xbe, 0x84, + 0xbb, 0xd3, 0xd3, 0xd5, 0x71, 0x48, 0x6e, 0x5e, 0x4f, 0x70, 0xfe, 0xed, 0xf2, 0x7c, 0x8a, 0x12, + 0xfa, 0xfd, 0xd5, 0x0b, 0x68, 0x05, 0xae, 0x57, 0x2f, 0xa0, 0x35, 0xb8, 0x0f, 0x3d, 0x3f, 0x10, + 0x49, 0xc8, 0x26, 0xda, 0xbe, 0x56, 0xf1, 0xea, 0xbb, 0x86, 0xa7, 0x6c, 0xcc, 0xb9, 0x80, 0x5b, + 0xd3, 0x2e, 0x90, 0xa1, 0x86, 0xf9, 0xce, 0x3a, 0x63, 0xd4, 0xf5, 0x39, 0x46, 0x3d, 0x6d, 0xb9, + 0x8d, 0x19, 0xcb, 0x75, 0xfe, 0xa5, 0x39, 0xcf, 0xf9, 0x4c, 0x59, 0xf0, 0x8b, 0x75, 0x4b, 0xcf, + 0x38, 0x58, 0x37, 0x49, 0x83, 0x73, 0x26, 0xb9, 0x7b, 0xc6, 0x27, 0x3a, 0xc1, 0x3d, 0xaa, 0x0f, + 0x6a, 0x14, 0x0c, 0x5b, 0x05, 0xdc, 0x75, 0x15, 0x34, 0x84, 0x97, 0x06, 0x89, 0x7a, 0x05, 0xfa, + 0x58, 0x8f, 0xda, 0x2c, 0x95, 0xf3, 0xbe, 0x8f, 0x83, 0xc8, 0x78, 0x58, 0x9b, 0x1a, 0x4a, 0x65, + 0x04, 0x6d, 0x77, 0xdc, 0xc7, 0x9c, 0xd7, 0xa6, 0x39, 0x5d, 0x38, 0xc0, 0xa2, 0xed, 0x00, 0x2f, + 0xa0, 0x6f, 0x6e, 0x4a, 0xb8, 0x32, 0x76, 0xd5, 0x3a, 0x06, 0x84, 0xbc, 0x33, 0x85, 0xfc, 0xf2, + 0x02, 0xc8, 0x88, 0x1f, 0xc5, 0x4f, 0xe2, 0x20, 0xa2, 0xcb, 0x69, 0x89, 0x26, 0x9f, 0x43, 0x3b, + 0x83, 0xdd, 0x06, 0xe6, 0xbf, 0x59, 0xb1, 0x90, 0xc1, 0xfb, 0x82, 0xe6, 0x13, 0x54, 0x90, 0xe6, + 0x91, 0x97, 0x4e, 0x12, 0x99, 0x3b, 0x70, 0xc1, 0xc0, 0x10, 0x9e, 0x70, 0x4f, 0xb2, 0xc2, 0x8d, + 0x0b, 0x86, 0x8a, 0xc9, 0x46, 0x54, 0x39, 0x23, 0xe6, 0xe2, 0x1e, 0x9e, 0xdc, 0x72, 0xc1, 0x7e, + 0xaa, 0x52, 0xee, 0x2e, 0xf4, 0x94, 0x01, 0xa6, 0x71, 0xe8, 0x46, 0xb1, 0xcf, 0x0d, 0x02, 0x77, + 0x2a, 0xb4, 0xdc, 0xd6, 0xa2, 0xfb, 0xb1, 0xcf, 0x55, 0xe9, 0x97, 0x13, 0x0a, 0x08, 0xdc, 0xb9, + 0xe4, 0x60, 0xcc, 0xd5, 0xd7, 0xf2, 0xab, 0xbf, 0x07, 0x90, 0x8c, 0x4f, 0xc2, 0xc0, 0xc3, 0x9b, + 0xd7, 0x36, 0xd8, 0xd1, 0x1c, 0x75, 0xe9, 0xb9, 0xfd, 0x34, 0x6c, 0xfb, 0xb9, 0x24, 0xd6, 0xde, + 0xd2, 0x19, 0x3e, 0x03, 0xa4, 0x1d, 0xda, 0x52, 0xe4, 0x9e, 0xaf, 0x4c, 0x39, 0xab, 0x00, 0x27, + 0x6a, 0xb4, 0xa5, 0xed, 0x27, 0xe7, 0xed, 0xa1, 0x2d, 0x68, 0x8f, 0x5e, 0xd4, 0x2f, 0x43, 0x82, + 0x7c, 0x05, 0xd7, 0x52, 0x7e, 0xce, 0x59, 0xc8, 0x7d, 0xd7, 0x60, 0x8c, 0x0c, 0x91, 0x5a, 0xe5, + 0x22, 0x35, 0x22, 0x79, 0x8d, 0x92, 0x96, 0x19, 0xc2, 0xf9, 0x16, 0x06, 0x55, 0x47, 0xf8, 0x47, + 0xe6, 0x53, 0xe7, 0x77, 0x35, 0x68, 0x67, 0x75, 0x88, 0x75, 0xc2, 0x3a, 0x7b, 0xdd, 0x81, 0x0e, + 0x9e, 0x08, 0xa6, 0x5a, 0xdd, 0x65, 0x68, 0x2b, 0x46, 0x29, 0xd1, 0x36, 0xac, 0x44, 0xfb, 0x0d, + 0xdc, 0x1c, 0xf1, 0xd1, 0x09, 0x4f, 0xc5, 0x30, 0x48, 0xb4, 0x9b, 0xef, 0x9e, 0x73, 0xb5, 0xeb, + 0xd9, 0x0a, 0x61, 0xae, 0x1c, 0xad, 0x98, 0xaf, 0x1c, 0x94, 0x79, 0x32, 0x38, 0xe7, 0x99, 0x83, + 0x6a, 0xaa, 0xd8, 0x7e, 0xcb, 0xde, 0xfe, 0x5c, 0xd7, 0x74, 0x7e, 0xac, 0xc3, 0xcd, 0xf9, 0xaf, + 0xad, 0x38, 0x45, 0x02, 0x4d, 0x6b, 0xeb, 0xf8, 0xac, 0x12, 0x9c, 0x51, 0x11, 0xfb, 0x24, 0x1d, + 0x9a, 0x91, 0x73, 0x91, 0xc7, 0xa5, 0x20, 0xc9, 0xb6, 0xb8, 0x56, 0xc9, 0xe2, 0x08, 0x34, 0x5f, + 0xa5, 0xf1, 0xc8, 0x24, 0x6a, 0x7c, 0x56, 0x79, 0x3e, 0x65, 0x17, 0x6e, 0x06, 0xe5, 0xdb, 0xb8, + 0x18, 0xa4, 0xec, 0xe2, 0xa0, 0x40, 0xf3, 0x76, 0xa1, 0xa2, 0x09, 0x2c, 0x29, 0x30, 0x48, 0x03, + 0x4e, 0xd0, 0x84, 0xf3, 0x09, 0xac, 0xe4, 0xd5, 0xa7, 0xc9, 0xcf, 0xaf, 0xd5, 0x27, 0x72, 0x1e, + 0x6a, 0x58, 0xa7, 0x26, 0x3e, 0xd7, 0x7d, 0x2e, 0x41, 0x39, 0x7b, 0xdd, 0xd9, 0x7f, 0x05, 0x37, + 0x75, 0x35, 0x2e, 0x83, 0x73, 0x65, 0xc7, 0x3c, 0x92, 0x3c, 0xbd, 0x64, 0x7e, 0x1f, 0x1a, 0x81, + 0x2f, 0x06, 0xf5, 0xf5, 0xc6, 0x83, 0x1e, 0x55, 0x8f, 0xce, 0x0e, 0xac, 0xcd, 0xae, 0xb0, 0xe5, + 0x79, 0x1c, 0x03, 0xda, 0xeb, 0xae, 0xb2, 0xab, 0x23, 0x4d, 0x79, 0x95, 0x9d, 0x40, 0x8c, 0x02, + 0x21, 0xae, 0xb0, 0xcc, 0xb6, 0xce, 0x5f, 0x53, 0xcb, 0xf0, 0x90, 0x5f, 0x45, 0x97, 0x47, 0xda, + 0xb9, 0xcb, 0x8b, 0x1c, 0x47, 0xe9, 0x55, 0x4e, 0xe5, 0xbf, 0xea, 0xf0, 0xfe, 0xec, 0x22, 0xd3, + 0x81, 0x74, 0x87, 0x7b, 0x81, 0xa8, 0xc6, 0xe0, 0xd3, 0xa9, 0xf5, 0x4f, 0xe0, 0x5a, 0xe1, 0x8c, + 0x19, 0xc4, 0x6a, 0xa0, 0x2b, 0xf4, 0x8b, 0x01, 0x83, 0xb3, 0xce, 0xa0, 0xed, 0x9b, 0xe5, 0xd1, + 0x01, 0x96, 0x37, 0x5f, 0x4c, 0x77, 0x60, 0x5e, 0x47, 0xb5, 0x8d, 0x22, 0xd0, 0x66, 0x78, 0x27, + 0x5b, 0x96, 0xe6, 0x2f, 0x70, 0x3e, 0x85, 0xb5, 0x6a, 0x39, 0xd2, 0x83, 0xf6, 0xd6, 0xf6, 0xf6, + 0xee, 0xc1, 0xd1, 0xee, 0x4e, 0xff, 0x0d, 0x45, 0xed, 0xec, 0x6e, 0x3f, 0xdb, 0xdb, 0xdf, 0xdd, + 0xe9, 0xd7, 0x9c, 0x9f, 0x6b, 0xd0, 0x53, 0xda, 0x3c, 0x8a, 0xe3, 0xb3, 0x11, 0x4b, 0xcf, 0xaa, + 0x4f, 0x78, 0x9c, 0x86, 0xc6, 0x70, 0xd5, 0xe3, 0xdc, 0x68, 0x77, 0x07, 0x3a, 0xe8, 0x4d, 0xae, + 0x92, 0xd5, 0x5e, 0xdf, 0x46, 0xc6, 0x71, 0x1a, 0xda, 0x40, 0x78, 0xa1, 0x0c, 0x84, 0xef, 0x01, + 0xf8, 0xda, 0x46, 0x5c, 0x26, 0x4d, 0xdc, 0xea, 0x18, 0xce, 0x96, 0x74, 0xfe, 0x11, 0x6e, 0x28, + 0x0d, 0x77, 0x23, 0x71, 0x2c, 0x78, 0xaa, 0x5e, 0xa4, 0x9b, 0x3a, 0x15, 0xaa, 0xae, 0x41, 0x7b, + 0x6c, 0xe4, 0x8c, 0xbe, 0x39, 0x8d, 0x3d, 0x96, 0x21, 0x0b, 0x30, 0xfc, 0xeb, 0x2c, 0xb8, 0x88, + 0xf4, 0x5e, 0x09, 0xa7, 0x37, 0x4b, 0xea, 0x39, 0x4f, 0xa0, 0x8f, 0x1e, 0x1e, 0x72, 0x96, 0x3e, + 0x0e, 0x84, 0x8c, 0xd3, 0x89, 0x1d, 0xa8, 0x6a, 0xa5, 0x40, 0x75, 0x0f, 0xc0, 0x53, 0x82, 0x7a, + 0x2f, 0x75, 0xbd, 0x17, 0xc3, 0xd9, 0x92, 0xce, 0xaf, 0x6a, 0x40, 0xb0, 0x0a, 0xd4, 0xc8, 0xf0, + 0x20, 0xf0, 0x30, 0xee, 0xcd, 0x2b, 0x80, 0xad, 0x2e, 0x45, 0xbd, 0xa2, 0x4b, 0xa1, 0x6d, 0x6f, + 0xa6, 0x4b, 0xd1, 0x44, 0x76, 0xd6, 0xa5, 0xb8, 0x03, 0x1d, 0x44, 0xa6, 0xd8, 0xa6, 0xd0, 0xd5, + 0x1e, 0xb6, 0x29, 0x0e, 0xe7, 0xb6, 0x29, 0x5a, 0x28, 0x50, 0xd1, 0xa6, 0x58, 0xb4, 0xdb, 0x14, + 0x43, 0xb8, 0x3e, 0xbb, 0x13, 0x51, 0xdd, 0x89, 0xf9, 0x14, 0xda, 0x89, 0x11, 0x42, 0x4f, 0xed, + 0x6e, 0xde, 0x2d, 0x3b, 0x44, 0x79, 0x25, 0x9a, 0x4b, 0x3b, 0xbf, 0x6e, 0x40, 0xd7, 0xea, 0x59, + 0x56, 0xdc, 0xfb, 0x00, 0x16, 0x99, 0xef, 0xa7, 0x5c, 0x88, 0xec, 0xbc, 0x0c, 0x69, 0xab, 0xd4, + 0x28, 0xa9, 0x54, 0x06, 0x4c, 0x1a, 0x05, 0x5b, 0x80, 0x89, 0x40, 0x33, 0x61, 0x72, 0x68, 0xc0, + 0x0f, 0x3e, 0xe7, 0x37, 0xd5, 0xb2, 0x6e, 0xca, 0xee, 0xdc, 0x2d, 0x9a, 0x56, 0x88, 0xe9, 0xdc, + 0xad, 0xc2, 0x02, 0x1f, 0xc5, 0xdf, 0x07, 0x98, 0x9d, 0x3a, 0x54, 0x13, 0xea, 0xaa, 0x2e, 0x58, + 0x18, 0x72, 0x69, 0x4a, 0x4b, 0x43, 0xa9, 0xc5, 0x95, 0x19, 0x19, 0x5c, 0x8a, 0xcf, 0x78, 0xad, + 0x81, 0xef, 0xf3, 0xc8, 0xe0, 0x51, 0x43, 0x5d, 0x52, 0x57, 0xae, 0x41, 0x3b, 0x89, 0x45, 0x80, + 0xc8, 0x7e, 0x49, 0xb7, 0xa5, 0x32, 0x9a, 0x7c, 0x0c, 0x37, 0x92, 0x34, 0xf6, 0x0f, 0x52, 0xfe, + 0x8a, 0xa7, 0x29, 0xf7, 0xb7, 0xd1, 0xfa, 0x77, 0x74, 0x4d, 0xd9, 0xa1, 0xf3, 0x07, 0xd5, 0x2c, + 0xc9, 0x85, 0x9c, 0x9d, 0xb5, 0xa2, 0x67, 0xcd, 0x1d, 0x54, 0x7a, 0xc4, 0x09, 0x4f, 0xd9, 0x49, + 0xa8, 0xcb, 0xca, 0x0e, 0xcd, 0x69, 0xe7, 0xdf, 0xcc, 0x95, 0x9a, 0x7e, 0x78, 0xc5, 0x95, 0x5a, + 0x17, 0x57, 0x9f, 0xdb, 0xd5, 0x6b, 0x94, 0x1b, 0x46, 0x56, 0x63, 0x46, 0x63, 0x13, 0x55, 0xec, + 0xf1, 0x34, 0x38, 0xe7, 0xbe, 0x8b, 0xf0, 0x61, 0xc1, 0x14, 0x7b, 0x9a, 0xf7, 0x95, 0x42, 0x11, + 0x9f, 0xc3, 0x9a, 0x2e, 0xcb, 0x04, 0xf7, 0x5d, 0x1c, 0x30, 0x00, 0x11, 0xdb, 0x8e, 0x3a, 0x18, + 0xdd, 0xc2, 0x22, 0x4d, 0x70, 0x7f, 0x27, 0x1f, 0xdf, 0x53, 0xc3, 0xba, 0xd5, 0x10, 0x79, 0xd9, + 0xf2, 0xfa, 0xf2, 0x41, 0xb3, 0x70, 0xf5, 0x3f, 0x87, 0xf6, 0x14, 0xce, 0xad, 0xe8, 0xc3, 0xe7, + 0x62, 0x6a, 0x8a, 0x69, 0x93, 0xa9, 0xf2, 0xa6, 0x31, 0xf7, 0x1b, 0x82, 0x1a, 0xa5, 0xb9, 0x98, + 0x6d, 0x0b, 0x50, 0xb6, 0x85, 0xf7, 0xa0, 0x3f, 0xd5, 0x39, 0x16, 0x68, 0x47, 0xbd, 0x99, 0x5e, + 0x9c, 0xf3, 0x9d, 0x0e, 0xb3, 0x19, 0xc6, 0x3e, 0x30, 0x26, 0x53, 0x05, 0x05, 0xed, 0x9d, 0xd5, + 0x5f, 0x6b, 0x67, 0xce, 0xbf, 0xd6, 0x75, 0x24, 0x3d, 0x64, 0xe7, 0xdc, 0xdf, 0x32, 0xce, 0x69, + 0xb9, 0x6d, 0xad, 0xec, 0xb6, 0xf3, 0x5a, 0xb7, 0x77, 0xa1, 0xf3, 0x8a, 0x9d, 0xc7, 0xe3, 0x34, + 0x90, 0xfa, 0xf6, 0xdb, 0xb4, 0x60, 0x5c, 0x92, 0x62, 0xee, 0x43, 0x4f, 0xd7, 0xdd, 0xae, 0x1d, + 0xc9, 0xba, 0x9a, 0xa7, 0x1b, 0x03, 0xef, 0xc3, 0x35, 0x9d, 0x1b, 0xc4, 0x30, 0x4e, 0x25, 0x16, + 0x44, 0xc2, 0xb8, 0xed, 0x0a, 0x0e, 0x1c, 0x2a, 0xbe, 0x2a, 0x8c, 0x84, 0x4a, 0x87, 0x3c, 0x12, + 0x06, 0x57, 0xaa, 0x47, 0x65, 0xaa, 0x81, 0x70, 0x95, 0x23, 0x98, 0x2b, 0x68, 0x05, 0xe2, 0x88, + 0x0b, 0x59, 0x80, 0xd0, 0xae, 0x05, 0x42, 0x9f, 0x34, 0xdb, 0xcd, 0xfe, 0x82, 0xf3, 0x53, 0x4d, + 0x9f, 0xf9, 0x4c, 0xc1, 0x5a, 0x71, 0xe6, 0xd3, 0x75, 0x97, 0x3e, 0x99, 0x52, 0xdd, 0xb5, 0x0b, + 0x6f, 0x0e, 0x75, 0x8e, 0x72, 0x59, 0xea, 0x0d, 0x83, 0x73, 0xee, 0x8a, 0x71, 0x92, 0xa8, 0x1d, + 0xf1, 0x48, 0xb9, 0x9e, 0x6f, 0x8e, 0xed, 0xae, 0x11, 0xdb, 0xd2, 0x52, 0x87, 0x5a, 0x68, 0x57, + 0xcb, 0x38, 0xff, 0x5b, 0xd3, 0x78, 0xf8, 0x28, 0x1d, 0x0b, 0xc9, 0x7d, 0x95, 0x78, 0x5f, 0xf3, + 0xbb, 0xe9, 0x17, 0xd0, 0xb2, 0x90, 0xd1, 0xf2, 0x74, 0x91, 0x6f, 0x2d, 0xb8, 0x71, 0x54, 0xb4, + 0xa5, 0xa8, 0x99, 0xe4, 0x7c, 0x06, 0x5d, 0x8b, 0x4d, 0xba, 0xb0, 0x78, 0xbc, 0xff, 0x74, 0xff, + 0xc5, 0xd7, 0xfb, 0xfd, 0x37, 0x14, 0x71, 0x44, 0x8f, 0x0f, 0x15, 0x8c, 0xa9, 0x91, 0x6b, 0xb0, + 0x74, 0xbc, 0x8f, 0xe4, 0xd7, 0x2f, 0xe8, 0xd1, 0xe3, 0x6f, 0xfb, 0x75, 0xe7, 0xe7, 0x86, 0x6e, + 0xdc, 0xbc, 0xb4, 0x1a, 0x63, 0x06, 0x4e, 0x55, 0xd7, 0x33, 0xe8, 0xb8, 0x75, 0xab, 0xac, 0x58, + 0x86, 0xba, 0x8c, 0x4d, 0x64, 0xa9, 0xcb, 0x58, 0x99, 0x9c, 0x37, 0x54, 0xf1, 0x39, 0x3a, 0xcd, + 0x82, 0x4b, 0xc1, 0x50, 0x57, 0x62, 0xf0, 0x96, 0xce, 0xf8, 0xa6, 0x1f, 0x99, 0xf3, 0xb6, 0xb0, + 0x89, 0x9e, 0x72, 0x91, 0xc4, 0x91, 0xc8, 0xd2, 0x46, 0x4e, 0xab, 0x0c, 0x94, 0xf2, 0x24, 0x0c, + 0xf4, 0x64, 0x6d, 0x95, 0x1d, 0xc3, 0xd9, 0x92, 0x84, 0xcf, 0x6f, 0x00, 0xb6, 0xf1, 0x64, 0x3f, + 0x2e, 0x9f, 0xec, 0x9c, 0x5d, 0x6f, 0xbc, 0x9c, 0x69, 0x11, 0xce, 0x6d, 0x1b, 0xea, 0x3b, 0xec, + 0xe4, 0x55, 0xc9, 0x37, 0x40, 0x66, 0x67, 0xce, 0xdc, 0xc5, 0xc1, 0xee, 0xfe, 0xce, 0xde, 0xfe, + 0x5f, 0xf7, 0x6b, 0x25, 0x80, 0x59, 0x2f, 0x01, 0xcc, 0x86, 0xa2, 0xb6, 0xb7, 0xf6, 0xb7, 0x77, + 0x9f, 0xed, 0xee, 0xf4, 0x9b, 0xce, 0x6f, 0x6b, 0xba, 0x5c, 0xd9, 0x2e, 0xf5, 0xe7, 0x7e, 0x01, + 0x87, 0xdf, 0x85, 0x8e, 0x39, 0xcf, 0xbd, 0xcc, 0xd2, 0x0a, 0x06, 0xf9, 0x3b, 0x58, 0xc9, 0x90, + 0xae, 0x5b, 0xb2, 0xbc, 0x8f, 0xa6, 0xfb, 0x2d, 0xf3, 0x5e, 0xb9, 0x91, 0x3d, 0x98, 0xe3, 0x59, + 0xf6, 0x4b, 0xb4, 0xf3, 0x01, 0x2c, 0x97, 0x25, 0x2e, 0x45, 0xd3, 0xff, 0x5f, 0x87, 0x95, 0xa9, + 0x8f, 0xdd, 0xd5, 0x80, 0x68, 0xba, 0x13, 0x59, 0x9f, 0xe9, 0x44, 0x92, 0x0f, 0x80, 0xd8, 0x22, + 0xae, 0xdd, 0xbf, 0xe9, 0x5b, 0x82, 0x3a, 0x82, 0xd9, 0x08, 0xab, 0x79, 0x15, 0x84, 0x45, 0x1e, + 0x42, 0x4f, 0xc4, 0x5e, 0xc0, 0x42, 0x37, 0x0c, 0xa2, 0xb3, 0xec, 0x1f, 0x06, 0xb7, 0xa7, 0xbe, + 0x9e, 0xa3, 0xc4, 0x33, 0x25, 0x40, 0xbb, 0xa2, 0x20, 0xc8, 0xdf, 0xc0, 0x2a, 0x8f, 0x84, 0x9b, + 0xa1, 0x6c, 0xd7, 0xcf, 0xff, 0x53, 0xd0, 0x98, 0x6d, 0xce, 0xcd, 0xc0, 0x78, 0x4a, 0xf8, 0x34, + 0x4b, 0x38, 0x02, 0x80, 0xb2, 0x0b, 0x53, 0x50, 0xdb, 0x50, 0xb8, 0x56, 0x86, 0xc2, 0x4f, 0xa1, + 0x6b, 0xfe, 0x5d, 0x72, 0x94, 0xf5, 0x25, 0x96, 0x37, 0xdf, 0x2b, 0xde, 0xb8, 0x55, 0xfc, 0x1f, + 0xe5, 0xb9, 0xf9, 0x3b, 0x8a, 0x59, 0x74, 0x43, 0x4d, 0xa0, 0xf6, 0x6c, 0xe7, 0x7f, 0x6a, 0xb0, + 0xac, 0x54, 0xb4, 0xde, 0xfc, 0x97, 0xd8, 0x63, 0xc8, 0x0a, 0x7b, 0xf3, 0xe9, 0x6d, 0xd5, 0x6a, + 0x55, 0xe5, 0x83, 0xd4, 0x16, 0x24, 0x9b, 0xb0, 0x2a, 0xc6, 0x27, 0x59, 0x2e, 0x7d, 0x22, 0xe2, + 0xe8, 0xd1, 0x44, 0xf2, 0x0c, 0x99, 0xce, 0x1d, 0x23, 0x1f, 0xc0, 0xb5, 0xac, 0x4d, 0x59, 0x4c, + 0xd0, 0x1f, 0x28, 0x67, 0x07, 0x9c, 0x7f, 0xaf, 0xe5, 0x08, 0x4a, 0xa5, 0x71, 0xac, 0xd0, 0x72, + 0x13, 0x53, 0x8f, 0x73, 0xf3, 0xe7, 0x4d, 0x68, 0x99, 0x8f, 0x17, 0x3a, 0x0b, 0x18, 0xca, 0x36, + 0xd2, 0x66, 0xc9, 0x48, 0xef, 0x42, 0xc7, 0xe4, 0x63, 0xae, 0xcc, 0x42, 0x15, 0xd8, 0x05, 0xa3, + 0x04, 0x35, 0x35, 0x54, 0xca, 0x69, 0xe7, 0x3b, 0x9d, 0x41, 0x2c, 0xab, 0x21, 0x9f, 0x4c, 0x99, + 0xd9, 0xcc, 0x71, 0x16, 0xc2, 0x65, 0x0b, 0xcb, 0xe3, 0x42, 0xdd, 0xae, 0x40, 0x7e, 0xac, 0xc1, + 0x3d, 0x0b, 0x69, 0x6c, 0xcf, 0x7e, 0x87, 0xbe, 0x07, 0x90, 0x7d, 0xaa, 0x62, 0xd2, 0x04, 0x95, + 0x8e, 0xe1, 0x6c, 0xc9, 0xaa, 0xef, 0xda, 0xf5, 0xca, 0xef, 0xda, 0x55, 0x95, 0x84, 0xf3, 0x1f, + 0x35, 0xe8, 0x1f, 0xc5, 0x67, 0x3c, 0xd2, 0x30, 0x98, 0x47, 0x9e, 0x46, 0x09, 0xaa, 0xae, 0x30, + 0x57, 0x72, 0xc6, 0x27, 0xa5, 0xf3, 0xaa, 0x4f, 0x41, 0xf3, 0xb7, 0x61, 0xe9, 0x34, 0x8d, 0xc7, + 0x49, 0x06, 0xbc, 0xf0, 0x0d, 0x0d, 0x5a, 0x66, 0xe2, 0x97, 0xbb, 0x40, 0x04, 0x0a, 0x53, 0x9b, + 0x32, 0xd5, 0x90, 0x64, 0x1d, 0x6c, 0x20, 0x90, 0x41, 0x5d, 0x8b, 0xe5, 0xfc, 0xb3, 0xf9, 0x04, + 0x39, 0xa3, 0x68, 0x65, 0x41, 0xa5, 0xf0, 0x4c, 0xc4, 0x75, 0x1d, 0xdb, 0xa6, 0x19, 0x49, 0x1e, + 0x42, 0x37, 0x29, 0xa6, 0x9b, 0xbf, 0x47, 0xad, 0x15, 0xd7, 0x38, 0xfd, 0x02, 0x6a, 0x8b, 0x3f, + 0x5a, 0xfa, 0xdb, 0xee, 0xc6, 0x87, 0x9f, 0x67, 0xc2, 0x27, 0x2d, 0x7c, 0xfa, 0xe8, 0x0f, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x1c, 0x08, 0xea, 0xc0, 0x7f, 0x26, 0x00, 0x00, } diff --git a/protocol/protobuf/pairing.proto b/protocol/protobuf/pairing.proto index 922278e28..d63104dfe 100644 --- a/protocol/protobuf/pairing.proto +++ b/protocol/protobuf/pairing.proto @@ -306,14 +306,15 @@ message SyncAccountsPositions { message SyncSavedAddress { reserved 4; - bytes address = 1; + bytes address = 1; string name = 2; - bool favourite = 3; - bool removed = 5; + bool favourite = 3; + bool removed = 5; uint64 update_clock = 7; string chain_short_names = 8; string ens = 9; - bool is_test= 10; + bool is_test = 10; + string color = 11; } message SyncCommunitySettings { diff --git a/services/wallet/saved_addresses.go b/services/wallet/saved_addresses.go index db7f533dd..2962f17ff 100644 --- a/services/wallet/saved_addresses.go +++ b/services/wallet/saved_addresses.go @@ -6,6 +6,7 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + multiAccCommon "github.com/status-im/status-go/multiaccounts/common" ) type savedAddressMeta struct { @@ -17,12 +18,13 @@ type SavedAddress struct { Address common.Address `json:"address"` // TODO: Add Emoji // Emoji string `json:"emoji"` - Name string `json:"name"` - Favourite bool `json:"favourite"` - ChainShortNames string `json:"chainShortNames"` // used with address only, not with ENSName - ENSName string `json:"ens"` - IsTest bool `json:"isTest"` - CreatedAt int64 `json:"createdAt"` + Name string `json:"name"` + Favourite bool `json:"favourite"` + ChainShortNames string `json:"chainShortNames"` // used with address only, not with ENSName + ENSName string `json:"ens"` + ColorID multiAccCommon.CustomizationColor `json:"colorId"` + IsTest bool `json:"isTest"` + CreatedAt int64 `json:"createdAt"` savedAddressMeta } @@ -38,7 +40,7 @@ func NewSavedAddressesManager(db *sql.DB) *SavedAddressesManager { return &SavedAddressesManager{db: db} } -const rawQueryColumnsOrder = "address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test, created_at" +const rawQueryColumnsOrder = "address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test, created_at, color" // getSavedAddressesFromDBRows retrieves all data based on SELECT Query using rawQueryColumnsOrder func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { @@ -46,7 +48,18 @@ func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { for rows.Next() { sa := SavedAddress{} // based on rawQueryColumnsOrder - err := rows.Scan(&sa.Address, &sa.Name, &sa.Favourite, &sa.Removed, &sa.UpdateClock, &sa.ChainShortNames, &sa.ENSName, &sa.IsTest, &sa.CreatedAt) + err := rows.Scan( + &sa.Address, + &sa.Name, + &sa.Favourite, + &sa.Removed, + &sa.UpdateClock, + &sa.ChainShortNames, + &sa.ENSName, + &sa.IsTest, + &sa.CreatedAt, + &sa.ColorID, + ) if err != nil { return nil, err } @@ -115,13 +128,30 @@ func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx break } } - sqlStatement := "INSERT OR REPLACE INTO saved_addresses (address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" + sqlStatement := ` + INSERT OR REPLACE + INTO + saved_addresses ( + address, + name, + favourite, + removed, + update_clock, + chain_short_names, + ens_name, is_test, + created_at, + color + ) + VALUES + (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ` insert, err := tx.Prepare(sqlStatement) if err != nil { return err } defer insert.Close() - _, err = insert.Exec(sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock, sa.ChainShortNames, sa.ENSName, sa.IsTest, sa.CreatedAt) + _, err = insert.Exec(sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock, sa.ChainShortNames, sa.ENSName, + sa.IsTest, sa.CreatedAt, sa.ColorID) return err } diff --git a/services/wallet/saved_addresses_test.go b/services/wallet/saved_addresses_test.go index 26192ca1f..19b53c167 100644 --- a/services/wallet/saved_addresses_test.go +++ b/services/wallet/saved_addresses_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/require" "github.com/ethereum/go-ethereum/common" + multiAccCommon "github.com/status-im/status-go/multiaccounts/common" "github.com/status-im/status-go/t/helpers" "github.com/status-im/status-go/walletdatabase" ) @@ -41,6 +42,7 @@ func TestSavedAddressesAdd(t *testing.T) { Favourite: true, ChainShortNames: "eth:arb:", ENSName: "test.stateofus.eth", + ColorID: multiAccCommon.CustomizationColorGreen, IsTest: false, } @@ -55,6 +57,7 @@ func TestSavedAddressesAdd(t *testing.T) { require.Equal(t, sa.Favourite, rst[0].Favourite) require.Equal(t, sa.ChainShortNames, rst[0].ChainShortNames) require.Equal(t, sa.ENSName, rst[0].ENSName) + require.Equal(t, sa.ColorID, rst[0].ColorID) require.Equal(t, sa.IsTest, rst[0].IsTest) } @@ -78,7 +81,7 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool func savedAddressDataIsEqual(a, b SavedAddress) bool { return a.Address == b.Address && a.Name == b.Name && a.Favourite == b.Favourite && - a.ChainShortNames == b.ChainShortNames && a.ENSName == b.ENSName && a.IsTest == b.IsTest + a.ChainShortNames == b.ChainShortNames && a.ENSName == b.ENSName && a.IsTest == b.IsTest && a.ColorID == b.ColorID } func TestSavedAddressesMetadata(t *testing.T) { @@ -100,6 +103,7 @@ func TestSavedAddressesMetadata(t *testing.T) { }, ChainShortNames: "eth:arb:", ENSName: "test.stateofus.eth", + ColorID: multiAccCommon.CustomizationColorGreen, IsTest: false, } @@ -115,6 +119,7 @@ func TestSavedAddressesMetadata(t *testing.T) { sa2 := SavedAddress{ Address: common.Address{2}, Name: "Simple", + ColorID: multiAccCommon.CustomizationColorBlue, Favourite: false, IsTest: false, } @@ -136,6 +141,7 @@ func TestSavedAddressesMetadata(t *testing.T) { require.Equal(t, sa1.Address, dbSavedAddresses[simpleIndex].Address) require.Equal(t, sa2.Address, dbSavedAddresses[rawIndex].Address) require.Equal(t, sa2.Name, dbSavedAddresses[rawIndex].Name) + require.Equal(t, sa2.ColorID, dbSavedAddresses[rawIndex].ColorID) require.Equal(t, sa2.Favourite, dbSavedAddresses[rawIndex].Favourite) require.Equal(t, sa2.IsTest, dbSavedAddresses[rawIndex].IsTest) @@ -212,6 +218,7 @@ func TestSavedAddressesCleanSoftDeletes(t *testing.T) { sa := SavedAddress{ Address: common.Address{byte(i)}, Name: "Test" + strconv.Itoa(i), + ColorID: multiAccCommon.CustomizationColorGreen, Favourite: false, savedAddressMeta: savedAddressMeta{ Removed: true, @@ -244,6 +251,7 @@ func TestSavedAddressesGet(t *testing.T) { sa := SavedAddress{ Address: common.Address{1}, ENSName: "test.ens.eth", + ColorID: multiAccCommon.CustomizationColorGreen, IsTest: false, savedAddressMeta: savedAddressMeta{ Removed: true, diff --git a/walletdatabase/migrations/bindata.go b/walletdatabase/migrations/bindata.go index 6313eee5a..4cfd543a3 100644 --- a/walletdatabase/migrations/bindata.go +++ b/walletdatabase/migrations/bindata.go @@ -16,6 +16,7 @@ // 1702467441_wallet_connect_sessions_instead_of_pairings.up.sql (356B) // 1702577524_add_community_collections_and_collectibles_images_cache.up.sql (210B) // 1702867707_add_balance_to_collectibles_ownership_cache.up.sql (289B) +// 1703686612_add_color_to_saved_addresses.up.sql (114B) // doc.go (74B) package migrations @@ -100,7 +101,7 @@ func _1691753758_initialUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1694703777, 0)} + info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0x25, 0x31, 0xc8, 0x27, 0x3, 0x6b, 0x9f, 0x15, 0x42, 0x2f, 0x85, 0xfb, 0xe3, 0x6, 0xea, 0xf7, 0x97, 0x12, 0x56, 0x3c, 0x9a, 0x5b, 0x1a, 0xca, 0xb1, 0x23, 0xfa, 0xcd, 0x57, 0x25, 0x5c}} return a, nil } @@ -120,7 +121,7 @@ func _1692701329_add_collectibles_and_collections_data_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1692701329_add_collectibles_and_collections_data_cache.up.sql", size: 1808, mode: os.FileMode(0644), modTime: time.Unix(1694703777, 0)} + info := bindataFileInfo{name: "1692701329_add_collectibles_and_collections_data_cache.up.sql", size: 1808, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x51, 0xf4, 0x2b, 0x92, 0xde, 0x59, 0x65, 0xd8, 0x9b, 0x57, 0xe0, 0xfd, 0x7b, 0x12, 0xb, 0x29, 0x6e, 0x9d, 0xb5, 0x90, 0xe, 0xfa, 0x12, 0x97, 0xd, 0x61, 0x60, 0x7f, 0x32, 0x1d, 0xc3}} return a, nil } @@ -140,7 +141,7 @@ func _1692701339_add_scope_to_pendingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1692701339_add_scope_to_pending.up.sql", size: 576, mode: os.FileMode(0644), modTime: time.Unix(1694703777, 0)} + info := bindataFileInfo{name: "1692701339_add_scope_to_pending.up.sql", size: 576, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x8a, 0x5e, 0xe2, 0x63, 0x15, 0x37, 0xba, 0x55, 0x18, 0xf3, 0xcc, 0xe0, 0x5, 0x84, 0xe1, 0x5b, 0xe8, 0x1, 0x32, 0x6b, 0x9f, 0x7d, 0x9f, 0xd9, 0x23, 0x6c, 0xa9, 0xb5, 0xdc, 0xf4, 0x93}} return a, nil } @@ -160,7 +161,7 @@ func _1694540071_add_collectibles_ownership_update_timestampUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1694540071_add_collectibles_ownership_update_timestamp.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1697205306, 0)} + info := bindataFileInfo{name: "1694540071_add_collectibles_ownership_update_timestamp.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x45, 0xc7, 0xce, 0x79, 0x63, 0xbc, 0x6f, 0x83, 0x5f, 0xe2, 0x3, 0x56, 0xcc, 0x5, 0x2f, 0x85, 0xda, 0x7e, 0xea, 0xf5, 0xd2, 0xac, 0x19, 0xd4, 0xd8, 0x5e, 0xdd, 0xed, 0xe2, 0xa9, 0x97}} return a, nil } @@ -180,7 +181,7 @@ func _1694692748_add_raw_balance_to_token_balancesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1694692748_add_raw_balance_to_token_balances.up.sql", size: 165, mode: os.FileMode(0644), modTime: time.Unix(1697205306, 0)} + info := bindataFileInfo{name: "1694692748_add_raw_balance_to_token_balances.up.sql", size: 165, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0xe0, 0x5b, 0x42, 0xf0, 0x96, 0xa5, 0xf5, 0xed, 0xc0, 0x97, 0x88, 0xb0, 0x6d, 0xfe, 0x7d, 0x97, 0x2e, 0x17, 0xd2, 0x16, 0xbc, 0x2a, 0xf2, 0xcc, 0x67, 0x9e, 0xc5, 0x47, 0xf6, 0x69, 0x1}} return a, nil } @@ -200,7 +201,7 @@ func _1695133989_add_community_id_to_collectibles_and_collections_data_cacheUpSq return nil, err } - info := bindataFileInfo{name: "1695133989_add_community_id_to_collectibles_and_collections_data_cache.up.sql", size: 275, mode: os.FileMode(0644), modTime: time.Unix(1697205306, 0)} + info := bindataFileInfo{name: "1695133989_add_community_id_to_collectibles_and_collections_data_cache.up.sql", size: 275, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x2, 0xa, 0x7f, 0x4b, 0xd1, 0x3, 0xd0, 0x3, 0x29, 0x84, 0x31, 0xed, 0x49, 0x4f, 0xb1, 0x2d, 0xd7, 0x80, 0x41, 0x5b, 0xfa, 0x6, 0xae, 0xb4, 0xf6, 0x6b, 0x49, 0xee, 0x57, 0x33, 0x76}} return a, nil } @@ -220,7 +221,7 @@ func _1695932536_balance_history_v2UpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1695932536_balance_history_v2.up.sql", size: 653, mode: os.FileMode(0644), modTime: time.Unix(1697205306, 0)} + info := bindataFileInfo{name: "1695932536_balance_history_v2.up.sql", size: 653, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x37, 0xf4, 0x14, 0x91, 0xf6, 0x5f, 0xc4, 0x9b, 0xb7, 0x83, 0x32, 0x72, 0xbe, 0x82, 0x42, 0x39, 0xa4, 0x3b, 0xc9, 0x78, 0x3d, 0xca, 0xd4, 0xbf, 0xfc, 0x7a, 0x33, 0x1e, 0xcd, 0x9e, 0xe4, 0x85}} return a, nil } @@ -240,7 +241,7 @@ func _1696853635_input_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1696853635_input_data.up.sql", size: 23140, mode: os.FileMode(0644), modTime: time.Unix(1698107690, 0)} + info := bindataFileInfo{name: "1696853635_input_data.up.sql", size: 23140, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x89, 0x30, 0x33, 0x33, 0x55, 0xc5, 0x57, 0x2b, 0xaf, 0xef, 0x3d, 0x8d, 0x2a, 0xaa, 0x5c, 0x32, 0xd1, 0xf4, 0xd, 0x4a, 0xd0, 0x33, 0x4a, 0xe8, 0xf6, 0x8, 0x6b, 0x65, 0xcc, 0xba, 0xed, 0x42}} return a, nil } @@ -260,7 +261,7 @@ func _1698117918_add_community_id_to_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698117918_add_community_id_to_tokens.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1698344993, 0)} + info := bindataFileInfo{name: "1698117918_add_community_id_to_tokens.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x82, 0xdb, 0xde, 0x3, 0x3, 0xc, 0x67, 0xf3, 0x54, 0xc4, 0xad, 0xd6, 0xce, 0x56, 0xfb, 0xc1, 0x87, 0xd7, 0xda, 0xab, 0xec, 0x1, 0xe1, 0x7d, 0xb3, 0x63, 0xd6, 0xe5, 0x5d, 0x1c, 0x15}} return a, nil } @@ -280,7 +281,7 @@ func _1698257443_add_community_metadata_to_wallet_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698257443_add_community_metadata_to_wallet_db.up.sql", size: 323, mode: os.FileMode(0644), modTime: time.Unix(1698749822, 0)} + info := bindataFileInfo{name: "1698257443_add_community_metadata_to_wallet_db.up.sql", size: 323, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x22, 0xd3, 0x4, 0x25, 0xfa, 0x23, 0x1, 0x48, 0x83, 0x26, 0x20, 0xf2, 0x3d, 0xbc, 0xc1, 0xa7, 0x7c, 0x27, 0x7c, 0x1d, 0x63, 0x3, 0xa, 0xd0, 0xce, 0x47, 0x86, 0xdc, 0xa1, 0x3c, 0x2, 0x1c}} return a, nil } @@ -300,7 +301,7 @@ func _1699987075_add_timestamp_and_state_to_community_data_cacheUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1699987075_add_timestamp_and_state_to_community_data_cache.up.sql", size: 865, mode: os.FileMode(0644), modTime: time.Unix(1701202578, 0)} + info := bindataFileInfo{name: "1699987075_add_timestamp_and_state_to_community_data_cache.up.sql", size: 865, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xee, 0x37, 0xf9, 0x7f, 0x9e, 0xfe, 0x93, 0x66, 0x2b, 0xd, 0x57, 0xf4, 0x89, 0x6c, 0x51, 0xfd, 0x14, 0xe9, 0xcd, 0xab, 0x65, 0xe7, 0xa7, 0x83, 0x7e, 0xe0, 0x5c, 0x14, 0x49, 0xf3, 0xe5}} return a, nil } @@ -320,7 +321,7 @@ func _1700414564_add_wallet_connect_pairings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700414564_add_wallet_connect_pairings_table.up.sql", size: 439, mode: os.FileMode(0644), modTime: time.Unix(1703037356, 0)} + info := bindataFileInfo{name: "1700414564_add_wallet_connect_pairings_table.up.sql", size: 439, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x77, 0x5e, 0x19, 0x62, 0x3c, 0x3a, 0x81, 0x16, 0xa0, 0x95, 0x35, 0x62, 0xab, 0x5e, 0x2b, 0xea, 0x11, 0x71, 0x11, 0xd0, 0x9, 0xab, 0x9c, 0xab, 0xf2, 0xdd, 0x5f, 0x88, 0x83, 0x9a, 0x93}} return a, nil } @@ -340,7 +341,7 @@ func _1701101493_add_token_blocks_rangeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1701101493_add_token_blocks_range.up.sql", size: 469, mode: os.FileMode(0644), modTime: time.Unix(1703037356, 0)} + info := bindataFileInfo{name: "1701101493_add_token_blocks_range.up.sql", size: 469, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x37, 0xfb, 0x1a, 0x6c, 0x8c, 0xa8, 0x1e, 0xa2, 0xa5, 0x1f, 0x90, 0x73, 0x3e, 0x31, 0x5f, 0x48, 0x1e, 0x9a, 0x37, 0x27, 0x1c, 0xc, 0x67, 0x1, 0xcd, 0xec, 0x85, 0x4c, 0x1c, 0x26, 0x52}} return a, nil } @@ -360,7 +361,7 @@ func _1702467441_wallet_connect_sessions_instead_of_pairingsUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1702467441_wallet_connect_sessions_instead_of_pairings.up.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1703037356, 0)} + info := bindataFileInfo{name: "1702467441_wallet_connect_sessions_instead_of_pairings.up.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x5f, 0x0, 0x60, 0x6, 0x28, 0x76, 0x61, 0x39, 0xdc, 0xa1, 0x84, 0x80, 0x46, 0x8a, 0xe4, 0x42, 0xb5, 0x1f, 0x18, 0x14, 0x23, 0x46, 0xb9, 0x51, 0xf, 0x62, 0xac, 0xc, 0x7, 0x98, 0xe}} return a, nil } @@ -380,7 +381,7 @@ func _1702577524_add_community_collections_and_collectibles_images_cacheUpSql() return nil, err } - info := bindataFileInfo{name: "1702577524_add_community_collections_and_collectibles_images_cache.up.sql", size: 210, mode: os.FileMode(0644), modTime: time.Unix(1703037356, 0)} + info := bindataFileInfo{name: "1702577524_add_community_collections_and_collectibles_images_cache.up.sql", size: 210, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x1b, 0x32, 0x2c, 0xfa, 0x11, 0x5e, 0x5e, 0x5d, 0xef, 0x92, 0xa0, 0x29, 0x52, 0xbf, 0x6e, 0xe3, 0x30, 0xe4, 0xdf, 0xdc, 0x5, 0xbe, 0xd1, 0xf8, 0x3e, 0xd9, 0x9b, 0xd6, 0x9b, 0x95, 0x96}} return a, nil } @@ -400,11 +401,31 @@ func _1702867707_add_balance_to_collectibles_ownership_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1702867707_add_balance_to_collectibles_ownership_cache.up.sql", size: 289, mode: os.FileMode(0644), modTime: time.Unix(1703149969, 0)} + info := bindataFileInfo{name: "1702867707_add_balance_to_collectibles_ownership_cache.up.sql", size: 289, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0x63, 0x30, 0x11, 0x22, 0xb9, 0xee, 0xae, 0xb8, 0xc4, 0xe6, 0xd3, 0x7, 0xc, 0xe6, 0xa3, 0x72, 0x8c, 0x6, 0x9d, 0x6c, 0x97, 0x8f, 0xb2, 0xd0, 0x37, 0x69, 0x69, 0x6, 0x7f, 0x67, 0x94}} return a, nil } +var __1703686612_add_color_to_saved_addressesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x4e\x2c\x4b\x4d\x89\x4f\x4c\x49\x29\x4a\x2d\x2e\x4e\x2d\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\xce\xcf\xc9\x2f\x52\x08\x71\x8d\x08\x51\x70\x71\x75\x73\x0c\xf5\x09\x51\x50\x2a\x28\xca\xcc\x4d\x2c\xaa\x54\xb2\xe6\x0a\x0d\x70\x71\x0c\xc1\xd4\x1f\xec\x1a\x02\xd5\x68\x8b\xa4\x1a\x10\x00\x00\xff\xff\x14\x6a\xd5\xb5\x72\x00\x00\x00") + +func _1703686612_add_color_to_saved_addressesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1703686612_add_color_to_saved_addressesUpSql, + "1703686612_add_color_to_saved_addresses.up.sql", + ) +} + +func _1703686612_add_color_to_saved_addressesUpSql() (*asset, error) { + bytes, err := _1703686612_add_color_to_saved_addressesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1703686612_add_color_to_saved_addresses.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1703687102, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x6e, 0x8d, 0xc0, 0x49, 0xc, 0xb, 0x66, 0xa0, 0x77, 0x32, 0x76, 0xa8, 0xd0, 0x40, 0xce, 0x67, 0xa, 0x9e, 0x23, 0x36, 0xe, 0xc3, 0xd3, 0x9d, 0xe2, 0xde, 0x60, 0x19, 0xba, 0x44, 0xf1}} + return a, nil +} + var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xc9\xb1\x0d\xc4\x20\x0c\x05\xd0\x9e\x29\xfe\x02\xd8\xfd\x6d\xe3\x4b\xac\x2f\x44\x82\x09\x78\x7f\xa5\x49\xfd\xa6\x1d\xdd\xe8\xd8\xcf\x55\x8a\x2a\xe3\x47\x1f\xbe\x2c\x1d\x8c\xfa\x6f\xe3\xb4\x34\xd4\xd9\x89\xbb\x71\x59\xb6\x18\x1b\x35\x20\xa2\x9f\x0a\x03\xa2\xe5\x0d\x00\x00\xff\xff\x60\xcd\x06\xbe\x4a\x00\x00\x00") func docGoBytes() ([]byte, error) { @@ -420,7 +441,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1694703777, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1703598405, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -548,6 +569,8 @@ var _bindata = map[string]func() (*asset, error){ "1702867707_add_balance_to_collectibles_ownership_cache.up.sql": _1702867707_add_balance_to_collectibles_ownership_cacheUpSql, + "1703686612_add_color_to_saved_addresses.up.sql": _1703686612_add_color_to_saved_addressesUpSql, + "doc.go": docGo, } @@ -608,6 +631,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1702467441_wallet_connect_sessions_instead_of_pairings.up.sql": &bintree{_1702467441_wallet_connect_sessions_instead_of_pairingsUpSql, map[string]*bintree{}}, "1702577524_add_community_collections_and_collectibles_images_cache.up.sql": &bintree{_1702577524_add_community_collections_and_collectibles_images_cacheUpSql, map[string]*bintree{}}, "1702867707_add_balance_to_collectibles_ownership_cache.up.sql": &bintree{_1702867707_add_balance_to_collectibles_ownership_cacheUpSql, map[string]*bintree{}}, + "1703686612_add_color_to_saved_addresses.up.sql": &bintree{_1703686612_add_color_to_saved_addressesUpSql, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}}, }} diff --git a/walletdatabase/migrations/sql/1703686612_add_color_to_saved_addresses.up.sql b/walletdatabase/migrations/sql/1703686612_add_color_to_saved_addresses.up.sql new file mode 100644 index 000000000..4a64c2397 --- /dev/null +++ b/walletdatabase/migrations/sql/1703686612_add_color_to_saved_addresses.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE saved_addresses ADD COLUMN color TEXT DEFAULT "primary"; +UPDATE saved_addresses SET color = "primary"; \ No newline at end of file