feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183)

prefixes. Changed primary keys and API methods.
Fixed tests and added new ones.
Fixed saved addresses and transaction tests to use ':memory:' sqlite
DB instead of a tmp file to speed up testing by hundred of times.

Fixes #8599
This commit is contained in:
IvanBelyakoff 2023-03-06 16:26:46 +03:00 committed by GitHub
parent 27a76f43ba
commit 48078393f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 681 additions and 434 deletions

View File

@ -49,6 +49,7 @@
// 1676951398_add_currency_format_cache.up.sql (291B) // 1676951398_add_currency_format_cache.up.sql (291B)
// 1676968196_keycards_add_clock_column.up.sql (73B) // 1676968196_keycards_add_clock_column.up.sql (73B)
// 1676968197_add_fallback_rpc_to_networks.up.sql (112B) // 1676968197_add_fallback_rpc_to_networks.up.sql (112B)
// 1677674090_add_chains_ens_istest_to_saved_addresses.up.sql (638B)
// doc.go (74B) // doc.go (74B)
package migrations package migrations
@ -133,7 +134,7 @@ func _1640111208_dummyUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}}
return a, nil return a, nil
} }
@ -153,7 +154,7 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}}
return a, nil return a, nil
} }
@ -173,7 +174,7 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}}
return a, nil return a, nil
} }
@ -193,7 +194,7 @@ func _1644188994_recent_stickersUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}}
return a, nil return a, nil
} }
@ -213,7 +214,7 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}}
return a, nil return a, nil
} }
@ -233,7 +234,7 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}}
return a, nil return a, nil
} }
@ -253,7 +254,7 @@ func _1647278782_display_nameUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}}
return a, nil return a, nil
} }
@ -273,7 +274,7 @@ func _1647862838_reset_last_backupUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xe3, 0xd5, 0xf6, 0x5f, 0xfe, 0x65, 0xfa, 0x1d, 0x88, 0xf8, 0x5f, 0x24, 0x71, 0x34, 0x68, 0x96, 0x2a, 0x60, 0x87, 0x15, 0x82, 0x4d, 0x8a, 0x59, 0x3d, 0x1f, 0xd8, 0x56, 0xd4, 0xfb, 0xda}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xe3, 0xd5, 0xf6, 0x5f, 0xfe, 0x65, 0xfa, 0x1d, 0x88, 0xf8, 0x5f, 0x24, 0x71, 0x34, 0x68, 0x96, 0x2a, 0x60, 0x87, 0x15, 0x82, 0x4d, 0x8a, 0x59, 0x3d, 0x1f, 0xd8, 0x56, 0xd4, 0xfb, 0xda}}
return a, nil return a, nil
} }
@ -293,7 +294,7 @@ func _1647871652_add_settings_sync_clock_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0x58, 0xec, 0x85, 0x90, 0xfa, 0x30, 0x98, 0x98, 0x9a, 0xa6, 0xa8, 0x96, 0x2b, 0x38, 0x93, 0xf3, 0xae, 0x46, 0x74, 0xa4, 0x41, 0x62, 0x9b, 0x2, 0x86, 0xbf, 0xe5, 0x2a, 0xce, 0xe2, 0xc0}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0x58, 0xec, 0x85, 0x90, 0xfa, 0x30, 0x98, 0x98, 0x9a, 0xa6, 0xa8, 0x96, 0x2b, 0x38, 0x93, 0xf3, 0xae, 0x46, 0x74, 0xa4, 0x41, 0x62, 0x9b, 0x2, 0x86, 0xbf, 0xe5, 0x2a, 0xce, 0xe2, 0xc0}}
return a, nil return a, nil
} }
@ -313,7 +314,7 @@ func _1647880168_add_torrent_configUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x92, 0x22, 0x37, 0x96, 0xf3, 0xb5, 0x5b, 0x27, 0xd0, 0x7d, 0x43, 0x5, 0x4e, 0x9d, 0xe2, 0x49, 0xbe, 0x86, 0x31, 0xa1, 0x89, 0xff, 0xd6, 0x51, 0xe0, 0x9c, 0xb, 0xda, 0xfc, 0xf2, 0x93}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x92, 0x22, 0x37, 0x96, 0xf3, 0xb5, 0x5b, 0x27, 0xd0, 0x7d, 0x43, 0x5, 0x4e, 0x9d, 0xe2, 0x49, 0xbe, 0x86, 0x31, 0xa1, 0x89, 0xff, 0xd6, 0x51, 0xe0, 0x9c, 0xb, 0xda, 0xfc, 0xf2, 0x93}}
return a, nil return a, nil
} }
@ -333,7 +334,7 @@ func _1647882837_add_communities_settings_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbd, 0x87, 0x78, 0x99, 0xd9, 0x5d, 0xbd, 0xf7, 0x57, 0x9c, 0xca, 0x97, 0xbd, 0xb3, 0xe9, 0xb5, 0x89, 0x31, 0x3f, 0xf6, 0x5c, 0x13, 0xb, 0xc3, 0x54, 0x93, 0x18, 0x40, 0x7, 0x82, 0xfe, 0x7e}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbd, 0x87, 0x78, 0x99, 0xd9, 0x5d, 0xbd, 0xf7, 0x57, 0x9c, 0xca, 0x97, 0xbd, 0xb3, 0xe9, 0xb5, 0x89, 0x31, 0x3f, 0xf6, 0x5c, 0x13, 0xb, 0xc3, 0x54, 0x93, 0x18, 0x40, 0x7, 0x82, 0xfe, 0x7e}}
return a, nil return a, nil
} }
@ -353,7 +354,7 @@ func _1647956635_add_waku_messages_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xe, 0xe1, 0xdc, 0xda, 0x2e, 0x89, 0x8d, 0xdc, 0x2a, 0x1c, 0x13, 0xa1, 0xfc, 0xfe, 0xf, 0xb2, 0xb9, 0x85, 0xc8, 0x45, 0xd6, 0xd1, 0x7, 0x5c, 0xa3, 0x8, 0x47, 0x44, 0x6d, 0x96, 0xe0}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xe, 0xe1, 0xdc, 0xda, 0x2e, 0x89, 0x8d, 0xdc, 0x2a, 0x1c, 0x13, 0xa1, 0xfc, 0xfe, 0xf, 0xb2, 0xb9, 0x85, 0xc8, 0x45, 0xd6, 0xd1, 0x7, 0x5c, 0xa3, 0x8, 0x47, 0x44, 0x6d, 0x96, 0xe0}}
return a, nil return a, nil
} }
@ -373,7 +374,7 @@ func _1648554928_network_testUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0xc5, 0x7f, 0x87, 0xf3, 0x2c, 0xf7, 0xbb, 0xd3, 0x3a, 0x4e, 0x76, 0x88, 0xca, 0xaf, 0x73, 0xce, 0x8f, 0xa1, 0xf6, 0x3d, 0x4d, 0xed, 0x6f, 0x49, 0xf2, 0xfe, 0x56, 0x2a, 0x60, 0x68, 0xca}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0xc5, 0x7f, 0x87, 0xf3, 0x2c, 0xf7, 0xbb, 0xd3, 0x3a, 0x4e, 0x76, 0x88, 0xca, 0xaf, 0x73, 0xce, 0x8f, 0xa1, 0xf6, 0x3d, 0x4d, 0xed, 0x6f, 0x49, 0xf2, 0xfe, 0x56, 0x2a, 0x60, 0x68, 0xca}}
return a, nil return a, nil
} }
@ -393,7 +394,7 @@ func _1649174829_add_visitble_tokenUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x22, 0xc0, 0x2b, 0x3f, 0x4f, 0x3d, 0x5e, 0x4c, 0x68, 0x7c, 0xd0, 0x15, 0x36, 0x9f, 0xec, 0xa1, 0x2a, 0x7b, 0xb4, 0xe3, 0xc6, 0xc9, 0xb4, 0x81, 0x50, 0x4a, 0x11, 0x3b, 0x35, 0x7, 0xcf}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x22, 0xc0, 0x2b, 0x3f, 0x4f, 0x3d, 0x5e, 0x4c, 0x68, 0x7c, 0xd0, 0x15, 0x36, 0x9f, 0xec, 0xa1, 0x2a, 0x7b, 0xb4, 0xe3, 0xc6, 0xc9, 0xb4, 0x81, 0x50, 0x4a, 0x11, 0x3b, 0x35, 0x7, 0xcf}}
return a, nil return a, nil
} }
@ -413,7 +414,7 @@ func _1649882262_add_derived_from_accountsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xb9, 0x44, 0x4d, 0x85, 0x8d, 0x7f, 0xb4, 0xae, 0x4f, 0x5c, 0x66, 0x64, 0xb6, 0xe2, 0xe, 0x3d, 0xad, 0x9d, 0x8, 0x4f, 0xab, 0x6e, 0xa8, 0x7d, 0x76, 0x3, 0xad, 0x96, 0x1, 0xee, 0x5c}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xb9, 0x44, 0x4d, 0x85, 0x8d, 0x7f, 0xb4, 0xae, 0x4f, 0x5c, 0x66, 0x64, 0xb6, 0xe2, 0xe, 0x3d, 0xad, 0x9d, 0x8, 0x4f, 0xab, 0x6e, 0xa8, 0x7d, 0x76, 0x3, 0xad, 0x96, 0x1, 0xee, 0x5c}}
return a, nil return a, nil
} }
@ -433,7 +434,7 @@ func _1650612625_add_community_message_archive_hashes_tableUpSql() (*asset, erro
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x31, 0xb3, 0x75, 0x23, 0xe2, 0x45, 0xe, 0x47, 0x1b, 0x35, 0xa5, 0x6e, 0x83, 0x4e, 0x64, 0x7d, 0xd7, 0xa2, 0xda, 0xe9, 0x53, 0xf1, 0x16, 0x86, 0x2c, 0x57, 0xad, 0xfa, 0xca, 0x39, 0xde}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x31, 0xb3, 0x75, 0x23, 0xe2, 0x45, 0xe, 0x47, 0x1b, 0x35, 0xa5, 0x6e, 0x83, 0x4e, 0x64, 0x7d, 0xd7, 0xa2, 0xda, 0xe9, 0x53, 0xf1, 0x16, 0x86, 0x2c, 0x57, 0xad, 0xfa, 0xca, 0x39, 0xde}}
return a, nil return a, nil
} }
@ -453,7 +454,7 @@ func _1650616788_add_communities_archives_info_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x4f, 0x80, 0x45, 0xb9, 0xd9, 0x15, 0xe2, 0x78, 0xd0, 0xcb, 0x71, 0xc1, 0x1b, 0xb7, 0x1b, 0x1b, 0x97, 0xfe, 0x47, 0x53, 0x3c, 0x62, 0xbc, 0xdd, 0x3a, 0x94, 0x1a, 0xc, 0x48, 0x76, 0xe}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x4f, 0x80, 0x45, 0xb9, 0xd9, 0x15, 0xe2, 0x78, 0xd0, 0xcb, 0x71, 0xc1, 0x1b, 0xb7, 0x1b, 0x1b, 0x97, 0xfe, 0x47, 0x53, 0x3c, 0x62, 0xbc, 0xdd, 0x3a, 0x94, 0x1a, 0xc, 0x48, 0x76, 0xe}}
return a, nil return a, nil
} }
@ -473,7 +474,7 @@ func _1652715604_add_clock_accountsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xd9, 0x8d, 0x73, 0xc9, 0xef, 0xfa, 0xb1, 0x4b, 0xa5, 0xf3, 0x5, 0x19, 0x26, 0x46, 0xf8, 0x47, 0x93, 0xdb, 0xac, 0x2, 0xef, 0xf9, 0x71, 0x56, 0x83, 0xe6, 0x2d, 0xb0, 0xd7, 0x83, 0x5c}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xd9, 0x8d, 0x73, 0xc9, 0xef, 0xfa, 0xb1, 0x4b, 0xa5, 0xf3, 0x5, 0x19, 0x26, 0x46, 0xf8, 0x47, 0x93, 0xdb, 0xac, 0x2, 0xef, 0xf9, 0x71, 0x56, 0x83, 0xe6, 0x2d, 0xb0, 0xd7, 0x83, 0x5c}}
return a, nil return a, nil
} }
@ -493,7 +494,7 @@ func _1653037334_add_notifications_settings_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xc4, 0x65, 0xac, 0xa, 0xf2, 0xef, 0xb6, 0x39, 0x3c, 0xc5, 0xb1, 0xb2, 0x9c, 0x86, 0x58, 0xe0, 0x38, 0xcb, 0x57, 0x3c, 0x76, 0x73, 0x87, 0x79, 0x4e, 0xf6, 0xed, 0xb0, 0x8e, 0x9e, 0xa}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xc4, 0x65, 0xac, 0xa, 0xf2, 0xef, 0xb6, 0x39, 0x3c, 0xc5, 0xb1, 0xb2, 0x9c, 0x86, 0x58, 0xe0, 0x38, 0xcb, 0x57, 0x3c, 0x76, 0x73, 0x87, 0x79, 0x4e, 0xf6, 0xed, 0xb0, 0x8e, 0x9e, 0xa}}
return a, nil return a, nil
} }
@ -513,7 +514,7 @@ func _1654702119_add_mutual_contact_settingsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x66, 0x67, 0x50, 0xfe, 0xd7, 0xe3, 0x29, 0x8b, 0xff, 0x9d, 0x5a, 0x87, 0xa7, 0x99, 0x6e, 0xd6, 0xcd, 0x2e, 0xbb, 0x17, 0xdf, 0x7f, 0xf7, 0xa3, 0xfa, 0x32, 0x7c, 0x2d, 0x92, 0xc8, 0x74}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x66, 0x67, 0x50, 0xfe, 0xd7, 0xe3, 0x29, 0x8b, 0xff, 0x9d, 0x5a, 0x87, 0xa7, 0x99, 0x6e, 0xd6, 0xcd, 0x2e, 0xbb, 0x17, 0xdf, 0x7f, 0xf7, 0xa3, 0xfa, 0x32, 0x7c, 0x2d, 0x92, 0xc8, 0x74}}
return a, nil return a, nil
} }
@ -533,7 +534,7 @@ func _1655375270_add_clock_field_to_communities_settings_tableUpSql() (*asset, e
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xc5, 0xc0, 0xf9, 0x84, 0x53, 0xdf, 0x83, 0xcf, 0xb6, 0x40, 0x6d, 0xf5, 0xdc, 0x77, 0x37, 0xb7, 0xe3, 0xa, 0x75, 0xe7, 0x6, 0x11, 0xca, 0x2b, 0x51, 0x92, 0xdd, 0x7d, 0xdb, 0xc3, 0xf5}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xc5, 0xc0, 0xf9, 0x84, 0x53, 0xdf, 0x83, 0xcf, 0xb6, 0x40, 0x6d, 0xf5, 0xdc, 0x77, 0x37, 0xb7, 0xe3, 0xa, 0x75, 0xe7, 0x6, 0x11, 0xca, 0x2b, 0x51, 0x92, 0xdd, 0x7d, 0xdb, 0xc3, 0xf5}}
return a, nil return a, nil
} }
@ -553,7 +554,7 @@ func _1655385721_drop_networks_configUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xa7, 0x20, 0xbb, 0x67, 0x21, 0xe, 0xc6, 0xc8, 0x21, 0x74, 0xe0, 0xce, 0xc8, 0xe2, 0x2, 0xb4, 0xea, 0xf0, 0xe5, 0xc4, 0x4d, 0xdd, 0xd4, 0x52, 0x31, 0xa9, 0x3d, 0xcd, 0xd8, 0x9b, 0xab}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xa7, 0x20, 0xbb, 0x67, 0x21, 0xe, 0xc6, 0xc8, 0x21, 0x74, 0xe0, 0xce, 0xc8, 0xe2, 0x2, 0xb4, 0xea, 0xf0, 0xe5, 0xc4, 0x4d, 0xdd, 0xd4, 0x52, 0x31, 0xa9, 0x3d, 0xcd, 0xd8, 0x9b, 0xab}}
return a, nil return a, nil
} }
@ -573,7 +574,7 @@ func _1655385724_networks_chaincolor_shortnameUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0xe7, 0x84, 0xbb, 0x5f, 0xd2, 0x2c, 0x42, 0x88, 0x62, 0x52, 0xb6, 0x58, 0x31, 0xac, 0xc, 0x96, 0x2b, 0x1b, 0xe5, 0x4e, 0x9a, 0x3a, 0xf6, 0xf6, 0xfc, 0xa9, 0x1a, 0x35, 0x62, 0x28, 0x88}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0xe7, 0x84, 0xbb, 0x5f, 0xd2, 0x2c, 0x42, 0x88, 0x62, 0x52, 0xb6, 0x58, 0x31, 0xac, 0xc, 0x96, 0x2b, 0x1b, 0xe5, 0x4e, 0x9a, 0x3a, 0xf6, 0xf6, 0xfc, 0xa9, 0x1a, 0x35, 0x62, 0x28, 0x88}}
return a, nil return a, nil
} }
@ -593,7 +594,7 @@ func _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql() (*asset, error)
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe7, 0x9a, 0xbd, 0x9a, 0xc9, 0xf, 0xdf, 0x90, 0x0, 0x5d, 0xea, 0x6e, 0x7d, 0x51, 0x95, 0xcd, 0x90, 0xd3, 0x1a, 0x36, 0x6c, 0xf4, 0xbd, 0xa7, 0x6b, 0xbf, 0xe5, 0xdb, 0xa3, 0x88, 0xe3, 0x50}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe7, 0x9a, 0xbd, 0x9a, 0xc9, 0xf, 0xdf, 0x90, 0x0, 0x5d, 0xea, 0x6e, 0x7d, 0x51, 0x95, 0xcd, 0x90, 0xd3, 0x1a, 0x36, 0x6c, 0xf4, 0xbd, 0xa7, 0x6b, 0xbf, 0xe5, 0xdb, 0xa3, 0x88, 0xe3, 0x50}}
return a, nil return a, nil
} }
@ -613,7 +614,7 @@ func _1655462032_create_bookmarks_deleted_at_indexUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x8e, 0x20, 0x6b, 0x14, 0x9e, 0xcd, 0x97, 0xd3, 0xfe, 0x62, 0x3, 0x26, 0x59, 0x1, 0x6c, 0x99, 0xef, 0x6d, 0x21, 0xd4, 0xb5, 0xa3, 0xf4, 0x39, 0x40, 0x54, 0x6, 0xd, 0x60, 0x13, 0x38}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x8e, 0x20, 0x6b, 0x14, 0x9e, 0xcd, 0x97, 0xd3, 0xfe, 0x62, 0x3, 0x26, 0x59, 0x1, 0x6c, 0x99, 0xef, 0x6d, 0x21, 0xd4, 0xb5, 0xa3, 0xf4, 0x39, 0x40, 0x54, 0x6, 0xd, 0x60, 0x13, 0x38}}
return a, nil return a, nil
} }
@ -633,7 +634,7 @@ func _1657617291_add_multi_transactions_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x86, 0xb0, 0x4e, 0x8c, 0x4, 0x82, 0xb4, 0x43, 0xaa, 0xd0, 0x16, 0xdd, 0xcb, 0x88, 0x81, 0xac, 0x4, 0x34, 0x1a, 0x8f, 0x2e, 0xc5, 0x69, 0xb, 0xf0, 0x17, 0xf7, 0xe3, 0x9, 0xe, 0x54, 0xe0}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x86, 0xb0, 0x4e, 0x8c, 0x4, 0x82, 0xb4, 0x43, 0xaa, 0xd0, 0x16, 0xdd, 0xcb, 0x88, 0x81, 0xac, 0x4, 0x34, 0x1a, 0x8f, 0x2e, 0xc5, 0x69, 0xb, 0xf0, 0x17, 0xf7, 0xe3, 0x9, 0xe, 0x54, 0xe0}}
return a, nil return a, nil
} }
@ -653,7 +654,7 @@ func _1660134042_add_social_links_settings_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x73, 0xb6, 0xe7, 0x3f, 0xaa, 0x39, 0x9a, 0x56, 0x56, 0x31, 0xf1, 0x8e, 0x26, 0x23, 0x1, 0xe4, 0xfa, 0x98, 0xfe, 0x78, 0x87, 0x20, 0xcb, 0x52, 0xf4, 0x38, 0x7f, 0xc4, 0x1c, 0x4, 0x22}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x73, 0xb6, 0xe7, 0x3f, 0xaa, 0x39, 0x9a, 0x56, 0x56, 0x31, 0xf1, 0x8e, 0x26, 0x23, 0x1, 0xe4, 0xfa, 0x98, 0xfe, 0x78, 0x87, 0x20, 0xcb, 0x52, 0xf4, 0x38, 0x7f, 0xc4, 0x1c, 0x4, 0x22}}
return a, nil return a, nil
} }
@ -673,7 +674,7 @@ func _1660134060_settings_bioUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x25, 0xa0, 0xa6, 0x47, 0xff, 0xbc, 0x2a, 0x0, 0xff, 0x59, 0x4b, 0xb0, 0xc9, 0x4e, 0x15, 0xe4, 0xd9, 0xda, 0xeb, 0xfe, 0x55, 0x98, 0xc3, 0x9d, 0x96, 0xe7, 0xf, 0xd1, 0x5c, 0x93, 0x73}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x25, 0xa0, 0xa6, 0x47, 0xff, 0xbc, 0x2a, 0x0, 0xff, 0x59, 0x4b, 0xb0, 0xc9, 0x4e, 0x15, 0xe4, 0xd9, 0xda, 0xeb, 0xfe, 0x55, 0x98, 0xc3, 0x9d, 0x96, 0xe7, 0xf, 0xd1, 0x5c, 0x93, 0x73}}
return a, nil return a, nil
} }
@ -693,7 +694,7 @@ func _1660134070_add_wakuv2_storeUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xe6, 0xc3, 0x9, 0xef, 0xdc, 0xae, 0x49, 0x30, 0x78, 0x54, 0xd6, 0xdb, 0xbf, 0xc0, 0x8e, 0x25, 0x8f, 0xfc, 0x67, 0x80, 0x39, 0x37, 0xd4, 0x86, 0xc1, 0x85, 0xc8, 0x99, 0xc4, 0x59, 0xd4}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xe6, 0xc3, 0x9, 0xef, 0xdc, 0xae, 0x49, 0x30, 0x78, 0x54, 0xd6, 0xdb, 0xbf, 0xc0, 0x8e, 0x25, 0x8f, 0xfc, 0x67, 0x80, 0x39, 0x37, 0xd4, 0x86, 0xc1, 0x85, 0xc8, 0x99, 0xc4, 0x59, 0xd4}}
return a, nil return a, nil
} }
@ -713,7 +714,7 @@ func _1660134072_waku2_store_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xeb, 0xb4, 0xa0, 0xa1, 0x2b, 0xcb, 0x4c, 0x3c, 0xc6, 0xd0, 0xe8, 0x96, 0xe3, 0x96, 0xf1, 0x4f, 0x1f, 0xe0, 0xe7, 0x1f, 0x85, 0xa3, 0xe, 0xf7, 0x52, 0x56, 0x63, 0x2b, 0xb0, 0x87, 0x7b}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xeb, 0xb4, 0xa0, 0xa1, 0x2b, 0xcb, 0x4c, 0x3c, 0xc6, 0xd0, 0xe8, 0x96, 0xe3, 0x96, 0xf1, 0x4f, 0x1f, 0xe0, 0xe7, 0x1f, 0x85, 0xa3, 0xe, 0xf7, 0x52, 0x56, 0x63, 0x2b, 0xb0, 0x87, 0x7b}}
return a, nil return a, nil
} }
@ -733,7 +734,7 @@ func _1662365868_add_key_uid_accountsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0xd8, 0x2f, 0x2f, 0x3b, 0xa8, 0xbd, 0x6d, 0xf6, 0x87, 0x7e, 0xd2, 0xf1, 0xa2, 0xf7, 0x81, 0x6a, 0x23, 0x10, 0xbc, 0xbf, 0x5b, 0xe7, 0x2b, 0x9c, 0xa9, 0x8a, 0x18, 0xbb, 0xd0, 0x86, 0x91}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0xd8, 0x2f, 0x2f, 0x3b, 0xa8, 0xbd, 0x6d, 0xf6, 0x87, 0x7e, 0xd2, 0xf1, 0xa2, 0xf7, 0x81, 0x6a, 0x23, 0x10, 0xbc, 0xbf, 0x5b, 0xe7, 0x2b, 0x9c, 0xa9, 0x8a, 0x18, 0xbb, 0xd0, 0x86, 0x91}}
return a, nil return a, nil
} }
@ -753,7 +754,7 @@ func _1662447680_add_keypairs_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x25, 0xa9, 0xc7, 0x63, 0x27, 0x97, 0x35, 0x5f, 0x6b, 0xab, 0x26, 0xcb, 0xf9, 0xbd, 0x5e, 0xac, 0x3, 0xa0, 0x5e, 0xb9, 0x71, 0xa3, 0x1f, 0xb3, 0x4f, 0x7f, 0x79, 0x28, 0x48, 0xbe, 0xc}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x25, 0xa9, 0xc7, 0x63, 0x27, 0x97, 0x35, 0x5f, 0x6b, 0xab, 0x26, 0xcb, 0xf9, 0xbd, 0x5e, 0xac, 0x3, 0xa0, 0x5e, 0xb9, 0x71, 0xa3, 0x1f, 0xb3, 0x4f, 0x7f, 0x79, 0x28, 0x48, 0xbe, 0xc}}
return a, nil return a, nil
} }
@ -773,7 +774,7 @@ func _1662460056_move_favourites_to_saved_addressesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xa2, 0x8c, 0xa3, 0xec, 0xad, 0xdf, 0xc3, 0x48, 0x5, 0x9b, 0x50, 0x25, 0x59, 0xae, 0x7d, 0xee, 0x58, 0xd2, 0x41, 0x27, 0xf2, 0x22, 0x2e, 0x9a, 0xb9, 0x4a, 0xcc, 0x38, 0x6e, 0x3a, 0xb2}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xa2, 0x8c, 0xa3, 0xec, 0xad, 0xdf, 0xc3, 0x48, 0x5, 0x9b, 0x50, 0x25, 0x59, 0xae, 0x7d, 0xee, 0x58, 0xd2, 0x41, 0x27, 0xf2, 0x22, 0x2e, 0x9a, 0xb9, 0x4a, 0xcc, 0x38, 0x6e, 0x3a, 0xb2}}
return a, nil return a, nil
} }
@ -793,7 +794,7 @@ func _1662738097_add_base_fee_transactionUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xfb, 0x10, 0xae, 0xfc, 0x77, 0x70, 0x98, 0x6f, 0xec, 0xaa, 0xcd, 0x7, 0xc7, 0x74, 0x23, 0xc, 0xd5, 0x1e, 0x82, 0xdd, 0xfe, 0xff, 0x3b, 0xd2, 0x49, 0x10, 0x5b, 0x30, 0xc, 0x2d, 0xb0}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xfb, 0x10, 0xae, 0xfc, 0x77, 0x70, 0x98, 0x6f, 0xec, 0xaa, 0xcd, 0x7, 0xc7, 0x74, 0x23, 0xc, 0xd5, 0x1e, 0x82, 0xdd, 0xfe, 0xff, 0x3b, 0xd2, 0x49, 0x10, 0x5b, 0x30, 0xc, 0x2d, 0xb0}}
return a, nil return a, nil
} }
@ -813,7 +814,7 @@ func _1662972194_add_keypairs_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x76, 0xf2, 0x86, 0xe1, 0x7e, 0xe9, 0x47, 0x32, 0x48, 0xd5, 0x6b, 0xe5, 0xd, 0xab, 0xb7, 0xf1, 0xd4, 0xf1, 0xad, 0x38, 0xa6, 0x11, 0xe7, 0xce, 0x5c, 0x11, 0x11, 0xf, 0x47, 0xb2, 0x4}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x76, 0xf2, 0x86, 0xe1, 0x7e, 0xe9, 0x47, 0x32, 0x48, 0xd5, 0x6b, 0xe5, 0xd, 0xab, 0xb7, 0xf1, 0xd4, 0xf1, 0xad, 0x38, 0xa6, 0x11, 0xe7, 0xce, 0x5c, 0x11, 0x11, 0xf, 0x47, 0xb2, 0x4}}
return a, nil return a, nil
} }
@ -833,7 +834,7 @@ func _1664392661_add_third_party_id_to_waku_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x67, 0x66, 0x9e, 0x66, 0x74, 0xce, 0x1c, 0xb, 0x1b, 0x9d, 0xd5, 0xfc, 0x65, 0xe, 0x83, 0x90, 0x4c, 0x61, 0x4e, 0x6b, 0xe7, 0x86, 0xbe, 0x36, 0x4f, 0x91, 0x36, 0x4, 0x47, 0x7b, 0x82}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x67, 0x66, 0x9e, 0x66, 0x74, 0xce, 0x1c, 0xb, 0x1b, 0x9d, 0xd5, 0xfc, 0x65, 0xe, 0x83, 0x90, 0x4c, 0x61, 0x4e, 0x6b, 0xe7, 0x86, 0xbe, 0x36, 0x4f, 0x91, 0x36, 0x4, 0x47, 0x7b, 0x82}}
return a, nil return a, nil
} }
@ -853,7 +854,7 @@ func _1664783660_add_sync_info_to_saved_addressesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x67, 0x7c, 0x3a, 0x95, 0x4e, 0x55, 0xb2, 0xbd, 0xb4, 0x18, 0x93, 0xc1, 0xcf, 0x9f, 0x12, 0xbb, 0x49, 0x8a, 0x2a, 0x6a, 0x2a, 0x7f, 0xad, 0x44, 0xc3, 0xf, 0x3a, 0x79, 0x18, 0xb9, 0x4c, 0x64}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x67, 0x7c, 0x3a, 0x95, 0x4e, 0x55, 0xb2, 0xbd, 0xb4, 0x18, 0x93, 0xc1, 0xcf, 0x9f, 0x12, 0xbb, 0x49, 0x8a, 0x2a, 0x6a, 0x2a, 0x7f, 0xad, 0x44, 0xc3, 0xf, 0x3a, 0x79, 0x18, 0xb9, 0x4c, 0x64}}
return a, nil return a, nil
} }
@ -873,7 +874,7 @@ func _1668109917_wakunodesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xaa, 0x9e, 0x2, 0x66, 0x85, 0x69, 0xa8, 0xd9, 0xe2, 0x4b, 0x8d, 0x2a, 0x9c, 0xdf, 0xd2, 0xef, 0x64, 0x58, 0xe3, 0xa6, 0xe7, 0xc1, 0xd1, 0xc8, 0x9c, 0xc0, 0x2c, 0x1, 0xa8, 0x7b, 0x81}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xaa, 0x9e, 0x2, 0x66, 0x85, 0x69, 0xa8, 0xd9, 0xe2, 0x4b, 0x8d, 0x2a, 0x9c, 0xdf, 0xd2, 0xef, 0x64, 0x58, 0xe3, 0xa6, 0xe7, 0xc1, 0xd1, 0xc8, 0x9c, 0xc0, 0x2c, 0x1, 0xa8, 0x7b, 0x81}}
return a, nil return a, nil
} }
@ -893,7 +894,7 @@ func _1670249678_display_name_to_settings_sync_clock_tableUpSql() (*asset, error
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0x18, 0xdc, 0xc4, 0x1f, 0x79, 0x22, 0x16, 0x4d, 0xdf, 0x6c, 0x66, 0xd5, 0xa4, 0x88, 0x5d, 0x5, 0x37, 0xa7, 0x41, 0x5, 0x50, 0xae, 0x12, 0xfa, 0x7e, 0x89, 0x24, 0x5c, 0xae, 0x30, 0xfc}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0x18, 0xdc, 0xc4, 0x1f, 0x79, 0x22, 0x16, 0x4d, 0xdf, 0x6c, 0x66, 0xd5, 0xa4, 0x88, 0x5d, 0x5, 0x37, 0xa7, 0x41, 0x5, 0x50, 0xae, 0x12, 0xfa, 0x7e, 0x89, 0x24, 0x5c, 0xae, 0x30, 0xfc}}
return a, nil return a, nil
} }
@ -913,7 +914,7 @@ func _1670836810_add_imported_flag_to_community_archive_hashesUpSql() (*asset, e
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0xf, 0xf0, 0xbd, 0xfe, 0x63, 0x25, 0x8f, 0x5e, 0x46, 0x4b, 0x45, 0x31, 0x8b, 0x3e, 0xd8, 0x6b, 0x5d, 0x9d, 0x6d, 0x10, 0x9a, 0x87, 0x4b, 0x18, 0xc6, 0x39, 0x81, 0x6e, 0xe4, 0x75, 0xfb}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0xf, 0xf0, 0xbd, 0xfe, 0x63, 0x25, 0x8f, 0x5e, 0x46, 0x4b, 0x45, 0x31, 0x8b, 0x3e, 0xd8, 0x6b, 0x5d, 0x9d, 0x6d, 0x10, 0x9a, 0x87, 0x4b, 0x18, 0xc6, 0x39, 0x81, 0x6e, 0xe4, 0x75, 0xfb}}
return a, nil return a, nil
} }
@ -933,7 +934,7 @@ func _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql() (*asset,
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x8b, 0x4b, 0xd6, 0xd8, 0xe2, 0x3d, 0xf7, 0x6b, 0xcd, 0x1e, 0x70, 0x9, 0x2e, 0x35, 0x4, 0x61, 0xc3, 0xb5, 0x9d, 0xc5, 0x27, 0x21, 0xa, 0x5a, 0xd6, 0x3e, 0xa6, 0x24, 0xa2, 0x12, 0xdf}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x8b, 0x4b, 0xd6, 0xd8, 0xe2, 0x3d, 0xf7, 0x6b, 0xcd, 0x1e, 0x70, 0x9, 0x2e, 0x35, 0x4, 0x61, 0xc3, 0xb5, 0x9d, 0xc5, 0x27, 0x21, 0xa, 0x5a, 0xd6, 0x3e, 0xa6, 0x24, 0xa2, 0x12, 0xdf}}
return a, nil return a, nil
} }
@ -953,7 +954,7 @@ func _1672933930_switcher_cardUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0xba, 0xdc, 0xbb, 0x40, 0x4, 0xf2, 0x10, 0xdf, 0xb4, 0xd2, 0x80, 0x8a, 0x74, 0x4d, 0xf6, 0xbc, 0x50, 0x7, 0xd, 0x22, 0x7f, 0xc4, 0xaf, 0xaa, 0xde, 0xdc, 0x71, 0xe9, 0x42, 0x98, 0x36}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0xba, 0xdc, 0xbb, 0x40, 0x4, 0xf2, 0x10, 0xdf, 0xb4, 0xd2, 0x80, 0x8a, 0x74, 0x4d, 0xf6, 0xbc, 0x50, 0x7, 0xd, 0x22, 0x7f, 0xc4, 0xaf, 0xaa, 0xde, 0xdc, 0x71, 0xe9, 0x42, 0x98, 0x36}}
return a, nil return a, nil
} }
@ -973,7 +974,7 @@ func _1674056187_add_price_cacheUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x79, 0x6a, 0x9b, 0x28, 0xd1, 0x22, 0xf0, 0x84, 0x76, 0x40, 0x39, 0x49, 0x15, 0x5d, 0xaa, 0xfd, 0x11, 0xff, 0x13, 0x27, 0x42, 0x12, 0xfa, 0x82, 0xe6, 0x7a, 0xf0, 0x5e, 0x1f, 0xe3, 0xba}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x79, 0x6a, 0x9b, 0x28, 0xd1, 0x22, 0xf0, 0x84, 0x76, 0x40, 0x39, 0x49, 0x15, 0x5d, 0xaa, 0xfd, 0x11, 0xff, 0x13, 0x27, 0x42, 0x12, 0xfa, 0x82, 0xe6, 0x7a, 0xf0, 0x5e, 0x1f, 0xe3, 0xba}}
return a, nil return a, nil
} }
@ -993,7 +994,7 @@ func _1674136690_ens_usernamesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x7a, 0xf3, 0xa8, 0x88, 0x99, 0xd6, 0x9c, 0x69, 0x48, 0x3c, 0x10, 0xda, 0x72, 0xdc, 0x14, 0xd, 0x6e, 0x8c, 0x82, 0x92, 0x2d, 0x2c, 0xee, 0x4c, 0x70, 0xa4, 0xdc, 0x5c, 0x5, 0x2, 0xc3}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x7a, 0xf3, 0xa8, 0x88, 0x99, 0xd6, 0x9c, 0x69, 0x48, 0x3c, 0x10, 0xda, 0x72, 0xdc, 0x14, 0xd, 0x6e, 0x8c, 0x82, 0x92, 0x2d, 0x2c, 0xee, 0x4c, 0x70, 0xa4, 0xdc, 0x5c, 0x5, 0x2, 0xc3}}
return a, nil return a, nil
} }
@ -1013,7 +1014,7 @@ func _1674232431_add_balance_historyUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0xb5, 0x18, 0xca, 0x4a, 0x93, 0xbb, 0x6f, 0xa4, 0xee, 0xe4, 0x3e, 0xff, 0x6a, 0x4b, 0xe2, 0xe1, 0x61, 0x28, 0xee, 0xc5, 0x26, 0x57, 0x61, 0x5e, 0x6d, 0x44, 0x1e, 0x85, 0x43, 0x70, 0xa2}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0xb5, 0x18, 0xca, 0x4a, 0x93, 0xbb, 0x6f, 0xa4, 0xee, 0xe4, 0x3e, 0xff, 0x6a, 0x4b, 0xe2, 0xe1, 0x61, 0x28, 0xee, 0xc5, 0x26, 0x57, 0x61, 0x5e, 0x6d, 0x44, 0x1e, 0x85, 0x43, 0x70, 0xa2}}
return a, nil return a, nil
} }
@ -1033,7 +1034,7 @@ func _1676368933_keypairs_to_keycardsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x93, 0x27, 0x2, 0xf0, 0x37, 0x81, 0x65, 0xa4, 0xb3, 0x5b, 0x60, 0x36, 0x95, 0xfc, 0x81, 0xf0, 0x3b, 0x7c, 0xc3, 0x2c, 0x85, 0xbd, 0x38, 0x46, 0xa4, 0x95, 0x4a, 0x6, 0x3e, 0x74, 0xd5}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x93, 0x27, 0x2, 0xf0, 0x37, 0x81, 0x65, 0xa4, 0xb3, 0x5b, 0x60, 0x36, 0x95, 0xfc, 0x81, 0xf0, 0x3b, 0x7c, 0xc3, 0x2c, 0x85, 0xbd, 0x38, 0x46, 0xa4, 0x95, 0x4a, 0x6, 0x3e, 0x74, 0xd5}}
return a, nil return a, nil
} }
@ -1053,7 +1054,7 @@ func _1676951398_add_currency_format_cacheUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xa3, 0x76, 0x35, 0xca, 0xf, 0xe8, 0xdf, 0xd9, 0x61, 0xf9, 0xed, 0xfc, 0x6d, 0xf5, 0xe, 0x11, 0x88, 0xbd, 0x14, 0x92, 0xc6, 0x57, 0x53, 0xe, 0xcd, 0x52, 0xf4, 0xa9, 0xb1, 0xdd, 0xfd}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xa3, 0x76, 0x35, 0xca, 0xf, 0xe8, 0xdf, 0xd9, 0x61, 0xf9, 0xed, 0xfc, 0x6d, 0xf5, 0xe, 0x11, 0x88, 0xbd, 0x14, 0x92, 0xc6, 0x57, 0x53, 0xe, 0xcd, 0x52, 0xf4, 0xa9, 0xb1, 0xdd, 0xfd}}
return a, nil return a, nil
} }
@ -1073,7 +1074,7 @@ func _1676968196_keycards_add_clock_columnUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0664), modTime: time.Unix(1677517539, 0)} info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xf, 0x1c, 0x28, 0x41, 0x57, 0x57, 0x6c, 0xe, 0x75, 0x6b, 0x75, 0x12, 0x0, 0x18, 0x1e, 0x88, 0x1e, 0x45, 0xe0, 0x32, 0xb9, 0xd4, 0xd9, 0x2e, 0xc8, 0xb, 0x80, 0x6, 0x51, 0x3d, 0x28}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xf, 0x1c, 0x28, 0x41, 0x57, 0x57, 0x6c, 0xe, 0x75, 0x6b, 0x75, 0x12, 0x0, 0x18, 0x1e, 0x88, 0x1e, 0x45, 0xe0, 0x32, 0xb9, 0xd4, 0xd9, 0x2e, 0xc8, 0xb, 0x80, 0x6, 0x51, 0x3d, 0x28}}
return a, nil return a, nil
} }
@ -1093,11 +1094,31 @@ func _1676968197_add_fallback_rpc_to_networksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677517540, 0)} info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6a, 0xc6, 0x45, 0xfa, 0x62, 0x84, 0x74, 0x6d, 0x7c, 0xd7, 0x1d, 0x79, 0xb6, 0x38, 0x43, 0xa8, 0x8, 0x6b, 0x75, 0x3d, 0x9, 0x2, 0xc5, 0x9f, 0xbb, 0x45, 0x56, 0x4c, 0x4e, 0x17, 0x89}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6a, 0xc6, 0x45, 0xfa, 0x62, 0x84, 0x74, 0x6d, 0x7c, 0xd7, 0x1d, 0x79, 0xb6, 0x38, 0x43, 0xa8, 0x8, 0x6b, 0x75, 0x3d, 0x9, 0x2, 0xc5, 0x9f, 0xbb, 0x45, 0x56, 0x4c, 0x4e, 0x17, 0x89}}
return a, nil return a, nil
} }
var __1677674090_add_chains_ens_istest_to_saved_addressesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x92\xc1\x6e\xf2\x30\x10\x84\xef\x7e\x8a\x11\x27\x90\x72\xf8\xef\x9c\x0c\x6c\x84\xf5\x9b\x18\x39\x4b\x81\x93\x65\x11\x57\xa0\x96\xa4\x8a\x03\x7d\xfd\x2a\x14\x52\xd1\x50\xa9\xbd\xee\xcc\x8e\xbe\x1d\xed\xd4\x92\x64\x02\xcb\x89\x26\xa8\x14\x99\x61\xd0\x46\xe5\x9c\x23\xfa\x73\x28\x9c\x2f\x8a\x3a\xc4\x18\xa2\x2b\xc3\x3b\x86\x02\xb8\x4e\xf0\x24\xed\x74\x2e\xed\x65\x25\x5b\x69\x9d\x08\xa0\xf4\xc7\x00\xa6\x0d\xdf\x4d\x9f\xfd\xb9\x3a\xd5\x87\x26\x60\x62\x8c\x26\x99\x75\x2a\x66\x94\xca\x95\x66\xa4\x52\xe7\xd4\x7a\xeb\x70\xac\xce\xa1\xf8\x85\xf3\xf4\x56\xf8\x26\xb8\xdd\x6b\xb5\x7b\x81\xca\xb8\x6f\xfd\xd7\xda\x76\x7b\x7f\x28\x5d\xdc\x57\x75\xe3\x5a\xbc\x2f\xf0\x9b\x6d\x30\x68\x7d\xa1\x8c\x17\xfd\x07\xf9\x10\x5d\x13\x62\xd3\x71\xf5\x70\x96\x56\x2d\xa4\xdd\xe2\x3f\x6d\x31\xbc\x76\x94\x74\xa9\xc9\x2d\x60\x24\x46\x58\x2b\x9e\x9b\x15\xc3\x9a\xb5\x9a\x8d\x85\x50\x59\x4e\x96\xdb\x1b\xcc\xe3\xd6\xbb\xb8\xcf\xa8\xae\xcf\xe4\x56\x57\x72\xd7\xc6\x48\x00\xc8\x49\xd3\x94\xf1\xc7\x55\xa4\xd6\x2c\xbe\x43\x8c\xc5\xcc\x9a\xe5\xf5\x49\x7a\x9a\xd4\x4c\xf6\xb1\x78\xa1\xb7\x94\xc9\x05\xa1\x7f\xdb\x58\x7c\x04\x00\x00\xff\xff\x4b\x7d\x7a\x1a\x7e\x02\x00\x00")
func _1677674090_add_chains_ens_istest_to_saved_addressesUpSqlBytes() ([]byte, error) {
return bindataRead(
__1677674090_add_chains_ens_istest_to_saved_addressesUpSql,
"1677674090_add_chains_ens_istest_to_saved_addresses.up.sql",
)
}
func _1677674090_add_chains_ens_istest_to_saved_addressesUpSql() (*asset, error) {
bytes, err := _1677674090_add_chains_ens_istest_to_saved_addressesUpSqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0664), modTime: time.Unix(1677674113, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0x2d, 0xa4, 0x1b, 0xf6, 0x6a, 0x13, 0x7b, 0xe, 0x59, 0xcd, 0xe2, 0x4e, 0x81, 0x99, 0xc4, 0x33, 0x84, 0xde, 0x66, 0xca, 0xac, 0x2f, 0x5, 0x90, 0xac, 0xfd, 0x4e, 0xfc, 0x55, 0x44, 0xe5}}
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") 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) { func docGoBytes() ([]byte, error) {
@ -1113,7 +1134,7 @@ func docGo() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 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}} 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 return a, nil
} }
@ -1307,6 +1328,8 @@ var _bindata = map[string]func() (*asset, error){
"1676968197_add_fallback_rpc_to_networks.up.sql": _1676968197_add_fallback_rpc_to_networksUpSql, "1676968197_add_fallback_rpc_to_networks.up.sql": _1676968197_add_fallback_rpc_to_networksUpSql,
"1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": _1677674090_add_chains_ens_istest_to_saved_addressesUpSql,
"doc.go": docGo, "doc.go": docGo,
} }
@ -1400,6 +1423,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1676951398_add_currency_format_cache.up.sql": &bintree{_1676951398_add_currency_format_cacheUpSql, map[string]*bintree{}}, "1676951398_add_currency_format_cache.up.sql": &bintree{_1676951398_add_currency_format_cacheUpSql, map[string]*bintree{}},
"1676968196_keycards_add_clock_column.up.sql": &bintree{_1676968196_keycards_add_clock_columnUpSql, map[string]*bintree{}}, "1676968196_keycards_add_clock_column.up.sql": &bintree{_1676968196_keycards_add_clock_columnUpSql, map[string]*bintree{}},
"1676968197_add_fallback_rpc_to_networks.up.sql": &bintree{_1676968197_add_fallback_rpc_to_networksUpSql, map[string]*bintree{}}, "1676968197_add_fallback_rpc_to_networks.up.sql": &bintree{_1676968197_add_fallback_rpc_to_networksUpSql, map[string]*bintree{}},
"1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": &bintree{_1677674090_add_chains_ens_istest_to_saved_addressesUpSql, map[string]*bintree{}},
"doc.go": &bintree{docGo, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}},
}} }}

View File

@ -0,0 +1,16 @@
CREATE TABLE IF NOT EXISTS saved_addresses_new (
address VARCHAR NOT NULL,
name TEXT NOT NULL,
favourite BOOLEAN NOT NULL DEFAULT FALSE,
removed BOOLEAN NOT NULL DEFAULT FALSE,
update_clock INT NOT NULL DEFAULT 0,
chain_short_names VARCHAR DEFAULT "",
ens_name VARCHAR DEFAULT "",
is_test BOOLEAN DEFAULT FALSE,
PRIMARY KEY (address, ens_name, is_test)
) WITHOUT ROWID;
INSERT INTO saved_addresses_new (address, name, favourite, removed, update_clock)
SELECT address, name, favourite, removed, update_clock FROM saved_addresses;
DROP TABLE saved_addresses;
ALTER TABLE saved_addresses_new RENAME TO saved_addresses;

View File

@ -137,7 +137,7 @@ func _0001_appDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}}
return a, nil return a, nil
} }
@ -157,7 +157,7 @@ func _0001_appUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}}
return a, nil return a, nil
} }
@ -177,7 +177,7 @@ func _0002_tokensDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}}
return a, nil return a, nil
} }
@ -197,7 +197,7 @@ func _0002_tokensUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}}
return a, nil return a, nil
} }
@ -217,7 +217,7 @@ func _0003_settingsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}}
return a, nil return a, nil
} }
@ -237,7 +237,7 @@ func _0003_settingsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}}
return a, nil return a, nil
} }
@ -257,7 +257,7 @@ func _0004_pending_stickersDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil return a, nil
} }
@ -277,7 +277,7 @@ func _0004_pending_stickersUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}}
return a, nil return a, nil
} }
@ -297,7 +297,7 @@ func _0005_waku_modeDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil return a, nil
} }
@ -317,7 +317,7 @@ func _0005_waku_modeUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}}
return a, nil return a, nil
} }
@ -337,7 +337,7 @@ func _0006_appearanceUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}}
return a, nil return a, nil
} }
@ -357,7 +357,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}}
return a, nil return a, nil
} }
@ -377,7 +377,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}}
return a, nil return a, nil
} }
@ -397,7 +397,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}}
return a, nil return a, nil
} }
@ -417,7 +417,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}}
return a, nil return a, nil
} }
@ -437,7 +437,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}}
return a, nil return a, nil
} }
@ -457,7 +457,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}}
return a, nil return a, nil
} }
@ -477,7 +477,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil return a, nil
} }
@ -497,7 +497,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}}
return a, nil return a, nil
} }
@ -517,7 +517,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}}
return a, nil return a, nil
} }
@ -537,7 +537,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}}
return a, nil return a, nil
} }
@ -557,7 +557,7 @@ func _0013_favouritesDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}}
return a, nil return a, nil
} }
@ -577,7 +577,7 @@ func _0013_favouritesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}}
return a, nil return a, nil
} }
@ -597,7 +597,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil return a, nil
} }
@ -617,7 +617,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}}
return a, nil return a, nil
} }
@ -637,7 +637,7 @@ func _0015_link_previewsDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}}
return a, nil return a, nil
} }
@ -657,7 +657,7 @@ func _0015_link_previewsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}}
return a, nil return a, nil
} }
@ -677,7 +677,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}}
return a, nil return a, nil
} }
@ -697,7 +697,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}}
return a, nil return a, nil
} }
@ -717,7 +717,7 @@ func _0017_bookmarksDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}}
return a, nil return a, nil
} }
@ -737,7 +737,7 @@ func _0017_bookmarksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}}
return a, nil return a, nil
} }
@ -757,7 +757,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}}
return a, nil return a, nil
} }
@ -777,7 +777,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}}
return a, nil return a, nil
} }
@ -797,7 +797,7 @@ func _0020_metricsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}}
return a, nil return a, nil
} }
@ -817,7 +817,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}}
return a, nil return a, nil
} }
@ -837,7 +837,7 @@ func _0022_pending_transfersUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}}
return a, nil return a, nil
} }
@ -857,7 +857,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}}
return a, nil return a, nil
} }
@ -877,7 +877,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}}
return a, nil return a, nil
} }
@ -897,7 +897,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}}
return a, nil return a, nil
} }
@ -917,7 +917,7 @@ func _1625872445_user_statusUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}}
return a, nil return a, nil
} }
@ -937,7 +937,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}}
return a, nil return a, nil
} }
@ -957,7 +957,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}}
return a, nil return a, nil
} }
@ -977,7 +977,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}}
return a, nil return a, nil
} }
@ -997,7 +997,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}}
return a, nil return a, nil
} }
@ -1017,7 +1017,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}}
return a, nil return a, nil
} }
@ -1037,7 +1037,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}}
return a, nil return a, nil
} }
@ -1057,7 +1057,7 @@ func _1630485153_networksDownSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}}
return a, nil return a, nil
} }
@ -1077,7 +1077,7 @@ func _1630485153_networksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}}
return a, nil return a, nil
} }
@ -1097,7 +1097,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}}
return a, nil return a, nil
} }
@ -1117,7 +1117,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}}
return a, nil return a, nil
} }
@ -1137,7 +1137,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}}
return a, nil return a, nil
} }
@ -1157,7 +1157,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}}
return a, nil return a, nil
} }
@ -1177,7 +1177,7 @@ func _1640111208_nodeconfigUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}}
return a, nil return a, nil
} }
@ -1197,7 +1197,7 @@ func docGo() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}}
return a, nil return a, nil
} }

View File

@ -603,14 +603,6 @@ func (db *Database) GetMasterAddress() (rst types.Address, err error) {
return return
} }
func (db *Database) TestNetworksEnabled() (rst bool, err error) {
err = db.makeSelectRow(TestNetworksEnabled).Scan(&rst)
if err == sql.ErrNoRows {
return rst, nil
}
return
}
func (db *Database) GetTestNetworksEnabled() (result bool, err error) { func (db *Database) GetTestNetworksEnabled() (result bool, err error) {
err = db.makeSelectRow(TestNetworksEnabled).Scan(&result) err = db.makeSelectRow(TestNetworksEnabled).Scan(&result)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {

View File

@ -20,12 +20,13 @@ func (m *Messenger) UpsertSavedAddress(ctx context.Context, sa wallet.SavedAddre
return m.syncNewSavedAddress(ctx, &sa, updatedClock, m.dispatchMessage) return m.syncNewSavedAddress(ctx, &sa, updatedClock, m.dispatchMessage)
} }
func (m *Messenger) DeleteSavedAddress(ctx context.Context, chainID uint64, address gethcommon.Address) error { func (m *Messenger) DeleteSavedAddress(ctx context.Context, address gethcommon.Address, ens string, isTest bool) error {
updatedClock, err := m.savedAddressesManager.DeleteSavedAddress(chainID, address) updateClock := uint64(time.Now().Unix())
_, err := m.savedAddressesManager.DeleteSavedAddress(address, ens, isTest, updateClock)
if err != nil { if err != nil {
return err return err
} }
return m.syncDeletedSavedAddress(ctx, chainID, address, updatedClock, m.dispatchMessage) return m.syncDeletedSavedAddress(ctx, address, ens, isTest, updateClock, m.dispatchMessage)
} }
func (m *Messenger) garbageCollectRemovedSavedAddresses() error { func (m *Messenger) garbageCollectRemovedSavedAddresses() error {
@ -65,23 +66,27 @@ func (m *Messenger) syncNewSavedAddress(ctx context.Context, savedAddress *walle
Address: savedAddress.Address.Bytes(), Address: savedAddress.Address.Bytes(),
Name: savedAddress.Name, Name: savedAddress.Name,
Favourite: savedAddress.Favourite, Favourite: savedAddress.Favourite,
ChainId: savedAddress.ChainID, Removed: savedAddress.Removed,
UpdateClock: updateClock, UpdateClock: savedAddress.UpdateClock,
ChainShortNames: savedAddress.ChainShortNames,
Ens: savedAddress.ENSName,
IsTest: savedAddress.IsTest,
}, rawMessageHandler) }, rawMessageHandler)
} }
func (m *Messenger) syncDeletedSavedAddress(ctx context.Context, chainID uint64, address gethcommon.Address, updateClock uint64, rawMessageHandler RawMessageHandler) error { func (m *Messenger) syncDeletedSavedAddress(ctx context.Context, address gethcommon.Address, ens string, isTest bool, updateClock uint64, rawMessageHandler RawMessageHandler) error {
return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{ return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{
Address: address.Bytes(), Address: address.Bytes(),
ChainId: chainID,
UpdateClock: updateClock, UpdateClock: updateClock,
Removed: true, Removed: true,
IsTest: isTest,
Ens: ens,
}, rawMessageHandler) }, rawMessageHandler)
} }
func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.SavedAddress, rawMessageHandler RawMessageHandler) (err error) { func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.SavedAddress, rawMessageHandler RawMessageHandler) (err error) {
if savedAddress.Removed { if savedAddress.Removed {
if err = m.syncDeletedSavedAddress(ctx, savedAddress.ChainID, savedAddress.Address, savedAddress.UpdateClock, rawMessageHandler); err != nil { if err = m.syncDeletedSavedAddress(ctx, savedAddress.Address, savedAddress.ENSName, savedAddress.IsTest, savedAddress.UpdateClock, rawMessageHandler); err != nil {
return err return err
} }
} else { } else {
@ -95,18 +100,20 @@ func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.Sa
func (m *Messenger) handleSyncSavedAddress(state *ReceivedMessageState, syncMessage protobuf.SyncSavedAddress) (err error) { func (m *Messenger) handleSyncSavedAddress(state *ReceivedMessageState, syncMessage protobuf.SyncSavedAddress) (err error) {
address := gethcommon.BytesToAddress(syncMessage.Address) address := gethcommon.BytesToAddress(syncMessage.Address)
if syncMessage.Removed { if syncMessage.Removed {
_, err = m.savedAddressesManager.DeleteSavedAddressIfNewerUpdate(syncMessage.ChainId, _, err = m.savedAddressesManager.DeleteSavedAddress(
address, syncMessage.UpdateClock) address, syncMessage.Ens, syncMessage.IsTest, syncMessage.UpdateClock)
if err != nil { if err != nil {
return err return err
} }
state.Response.AddSavedAddress(&wallet.SavedAddress{ChainID: syncMessage.ChainId, Address: address}) state.Response.AddSavedAddress(&wallet.SavedAddress{Address: address, ENSName: syncMessage.Ens, IsTest: syncMessage.IsTest})
} else { } else {
sa := wallet.SavedAddress{ sa := wallet.SavedAddress{
Address: address, Address: address,
Name: syncMessage.Name, Name: syncMessage.Name,
Favourite: syncMessage.Favourite, Favourite: syncMessage.Favourite,
ChainID: syncMessage.ChainId, ChainShortNames: syncMessage.ChainShortNames,
ENSName: syncMessage.Ens,
IsTest: syncMessage.IsTest,
} }
_, err = m.savedAddressesManager.AddSavedAddressIfNewerUpdate(sa, syncMessage.UpdateClock) _, err = m.savedAddressesManager.AddSavedAddressIfNewerUpdate(sa, syncMessage.UpdateClock)

View File

@ -13,6 +13,7 @@ import (
gethbridge "github.com/status-im/status-go/eth-node/bridge/geth" gethbridge "github.com/status-im/status-go/eth-node/bridge/geth"
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/multiaccounts/settings"
"github.com/status-im/status-go/protocol/encryption/multidevice" "github.com/status-im/status-go/protocol/encryption/multidevice"
"github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/protocol/tt"
"github.com/status-im/status-go/services/wallet" "github.com/status-im/status-go/services/wallet"
@ -113,12 +114,13 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool
} }
func savedAddressDataIsEqual(a, b wallet.SavedAddress) bool { func savedAddressDataIsEqual(a, b wallet.SavedAddress) bool {
return a.Address == b.Address && a.ChainID == b.ChainID && a.Name == b.Name && a.Favourite == b.Favourite 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
} }
func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() { func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() {
var testChainID1 uint64 = 1 var isTestChain1 bool = false
var testChainID2 uint64 = 2 var isTestChain2 bool = true
var testAddress1 = common.Address{1} var testAddress1 = common.Address{1}
// Add saved addresses to main device // Add saved addresses to main device
@ -126,13 +128,13 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() {
Address: testAddress1, Address: testAddress1,
Name: "TestC1A1", Name: "TestC1A1",
Favourite: false, Favourite: false,
ChainID: testChainID1, IsTest: isTestChain1,
} }
sa2 := wallet.SavedAddress{ sa2 := wallet.SavedAddress{
Address: testAddress1, ENSName: "test.ens.eth",
Name: "TestC2A1", Name: "TestC2A1",
Favourite: true, Favourite: true,
ChainID: testChainID2, IsTest: isTestChain2,
} }
savedAddressesManager := wallet.NewSavedAddressesManager(s.main.persistence.db) savedAddressesManager := wallet.NewSavedAddressesManager(s.main.persistence.db)
@ -169,22 +171,21 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() {
} }
func (s *MessengerSyncSavedAddressesSuite) TestSyncSavedAddresses() { func (s *MessengerSyncSavedAddressesSuite) TestSyncSavedAddresses() {
var testChainID1 uint64 = 1 var isTestChain1 bool = true
var testAddress1 = common.Address{1} var testAddress1 = common.Address{1}
var testAddress2 = common.Address{2}
// Add saved addresses to main device // Add saved addresses to main device
sa1 := wallet.SavedAddress{ sa1 := wallet.SavedAddress{
Address: testAddress1, Address: testAddress1,
Name: "TestC1A1", Name: "TestC1A1",
Favourite: false, Favourite: false,
ChainID: testChainID1, IsTest: isTestChain1,
} }
sa2 := wallet.SavedAddress{ sa2 := wallet.SavedAddress{
Address: testAddress2, ENSName: "test.ens.eth",
Name: "TestC1A2", Name: "TestC1A2",
Favourite: true, Favourite: true,
ChainID: testChainID1, IsTest: isTestChain1,
} }
err := s.main.UpsertSavedAddress(context.Background(), sa1) err := s.main.UpsertSavedAddress(context.Background(), sa1)
@ -213,26 +214,32 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncSavedAddresses() {
s.Require().True(haveSameElements([]wallet.SavedAddress{sa1, sa2}, savedAddresses, savedAddressDataIsEqual)) s.Require().True(haveSameElements([]wallet.SavedAddress{sa1, sa2}, savedAddresses, savedAddressDataIsEqual))
} }
func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() { func (s *MessengerSyncSavedAddressesSuite) testSyncDeletesOfSavedAddressesWithTestModes(testModeMain bool, testModeOther bool) {
var testChainID1 uint64 = 1 var isTestChain1 bool = true
var isTestChain2 bool = false
var testAddress1 = common.Address{1} var testAddress1 = common.Address{1}
var testAddress2 = common.Address{2}
// Add saved addresses to main device // Add saved addresses to main device
sa1 := wallet.SavedAddress{ sa1 := wallet.SavedAddress{
Address: testAddress1, Address: testAddress1,
Name: "TestC1A1", Name: "TestC1A1",
Favourite: false, Favourite: false,
ChainID: testChainID1, IsTest: isTestChain1,
} }
sa2 := wallet.SavedAddress{ sa2 := wallet.SavedAddress{
Address: testAddress2, ENSName: "test.ens.eth",
Name: "TestC1A2", Name: "TestC1A2",
Favourite: true, Favourite: true,
ChainID: testChainID1, IsTest: isTestChain2,
} }
err := s.main.UpsertSavedAddress(context.Background(), sa1) err := s.main.settings.SaveSettingField(settings.TestNetworksEnabled, testModeMain)
s.Require().NoError(err)
err = s.other.settings.SaveSettingField(settings.TestNetworksEnabled, testModeOther)
s.Require().NoError(err)
s.Require().NoError(err)
err = s.main.UpsertSavedAddress(context.Background(), sa1)
s.Require().NoError(err) s.Require().NoError(err)
err = s.main.UpsertSavedAddress(context.Background(), sa2) err = s.main.UpsertSavedAddress(context.Background(), sa2)
s.Require().NoError(err) s.Require().NoError(err)
@ -256,8 +263,8 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() {
s.Require().NoError(err) s.Require().NoError(err)
s.Require().Equal(2, len(savedAddresses)) s.Require().Equal(2, len(savedAddresses))
// Delete saved addresses from the other device // Delete saved addresses with test mode = true and sync with the other device
err = s.main.DeleteSavedAddress(context.Background(), sa1.ChainID, sa1.Address) err = s.main.DeleteSavedAddress(context.Background(), sa1.Address, sa1.ENSName, sa1.IsTest)
s.Require().NoError(err) s.Require().NoError(err)
// Wait and check that saved addresses are synced // Wait and check that saved addresses are synced
@ -265,11 +272,13 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() {
s.other, s.other,
func(r *MessengerResponse) bool { func(r *MessengerResponse) bool {
if len(r.SavedAddresses()) == 1 { if len(r.SavedAddresses()) == 1 {
// We expect the deleted event to report only address and chain ID sa := r.SavedAddresses()[0]
s.Require().Equal(sa1.Address, r.SavedAddresses()[0].Address) // We expect the deleted event to report address, ens, isTest
s.Require().Equal(sa1.ChainID, r.SavedAddresses()[0].ChainID) s.Require().Equal(sa1.Address, sa.Address)
s.Require().Equal("", r.SavedAddresses()[0].Name) s.Require().Equal(sa1.ENSName, sa.ENSName)
s.Require().Equal(false, r.SavedAddresses()[0].Favourite) s.Require().Equal(sa1.IsTest, sa.IsTest)
s.Require().Equal("", sa.Name)
s.Require().Equal(false, sa.Favourite)
return true return true
} }
return false return false
@ -282,4 +291,44 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() {
s.Require().NoError(err) s.Require().NoError(err)
s.Require().Equal(1, len(savedAddresses)) s.Require().Equal(1, len(savedAddresses))
s.Require().True(haveSameElements([]wallet.SavedAddress{sa2}, savedAddresses, savedAddressDataIsEqual)) s.Require().True(haveSameElements([]wallet.SavedAddress{sa2}, savedAddresses, savedAddressDataIsEqual))
// Delete saved addresses with test mode = false and sync with the other device
err = s.main.DeleteSavedAddress(context.Background(), sa2.Address, sa2.ENSName, sa2.IsTest)
s.Require().NoError(err)
// Wait and check that saved addresses are synced
_, err = WaitOnMessengerResponse(
s.other,
func(r *MessengerResponse) bool {
if len(r.SavedAddresses()) == 1 {
sa := r.SavedAddresses()[0]
// We expect the deleted event to report address, ens, isTest
s.Require().Equal(sa2.Address, sa.Address)
s.Require().Equal(sa2.ENSName, sa.ENSName)
s.Require().Equal(sa2.IsTest, sa.IsTest)
s.Require().Equal("", sa.Name)
s.Require().Equal(false, sa.Favourite)
return true
}
return false
},
"expected to receive one change",
)
s.Require().NoError(err)
savedAddresses, err = s.other.savedAddressesManager.GetSavedAddresses()
s.Require().NoError(err)
s.Require().Equal(0, len(savedAddresses))
}
func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddressesSameTestModeOnBothDevices() {
testModeMain := true
testModeOther := testModeMain
s.testSyncDeletesOfSavedAddressesWithTestModes(testModeMain, testModeOther)
}
func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddressesDifferentTestModeOnDevices() {
testModeMain := true
testModeOther := !testModeMain
s.testSyncDeletesOfSavedAddressesWithTestModes(testModeMain, testModeOther)
} }

View File

@ -2044,9 +2044,11 @@ type SyncSavedAddress struct {
Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Favourite bool `protobuf:"varint,3,opt,name=favourite,proto3" json:"favourite,omitempty"` Favourite bool `protobuf:"varint,3,opt,name=favourite,proto3" json:"favourite,omitempty"`
ChainId uint64 `protobuf:"varint,4,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"`
UpdateClock uint64 `protobuf:"varint,7,opt,name=update_clock,json=updateClock,proto3" json:"update_clock,omitempty"` UpdateClock uint64 `protobuf:"varint,7,opt,name=update_clock,json=updateClock,proto3" json:"update_clock,omitempty"`
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -2098,13 +2100,6 @@ func (m *SyncSavedAddress) GetFavourite() bool {
return false return false
} }
func (m *SyncSavedAddress) GetChainId() uint64 {
if m != nil {
return m.ChainId
}
return 0
}
func (m *SyncSavedAddress) GetRemoved() bool { func (m *SyncSavedAddress) GetRemoved() bool {
if m != nil { if m != nil {
return m.Removed return m.Removed
@ -2119,6 +2114,27 @@ func (m *SyncSavedAddress) GetUpdateClock() uint64 {
return 0 return 0
} }
func (m *SyncSavedAddress) GetChainShortNames() string {
if m != nil {
return m.ChainShortNames
}
return ""
}
func (m *SyncSavedAddress) GetEns() string {
if m != nil {
return m.Ens
}
return ""
}
func (m *SyncSavedAddress) GetIsTest() bool {
if m != nil {
return m.IsTest
}
return false
}
type SyncCommunitySettings struct { type SyncCommunitySettings struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` 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"` CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
@ -2784,170 +2800,172 @@ func init() {
} }
var fileDescriptor_d61ab7221f0b5518 = []byte{ var fileDescriptor_d61ab7221f0b5518 = []byte{
// 2631 bytes of a gzipped FileDescriptorProto // 2670 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x39, 0x4d, 0x73, 0x1b, 0xc7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x39, 0xcd, 0x73, 0xdb, 0xc6,
0xb1, 0x5e, 0x00, 0xc4, 0x47, 0x03, 0x04, 0xa1, 0x11, 0x2d, 0x41, 0x14, 0x5d, 0x92, 0xd6, 0x76, 0xf5, 0x01, 0x49, 0xf1, 0xe3, 0x91, 0xa2, 0xe8, 0xb5, 0x63, 0xd3, 0xb2, 0x32, 0xb6, 0x91, 0x64,
0x59, 0xaf, 0xca, 0x8f, 0x7e, 0x4f, 0x8e, 0xe3, 0xc4, 0x1f, 0x65, 0x43, 0x00, 0x62, 0xd1, 0x14, 0xe2, 0xdf, 0x6f, 0x52, 0xa5, 0x75, 0x9a, 0xa6, 0xcd, 0xc7, 0x24, 0x34, 0xc9, 0xc6, 0xb2, 0x2c,
0x41, 0xd6, 0x90, 0x90, 0x63, 0x57, 0xaa, 0xb6, 0x86, 0xbb, 0x23, 0x62, 0xc3, 0xc5, 0xee, 0x66, 0x4a, 0xb3, 0x12, 0x9d, 0x26, 0xd3, 0x19, 0xcc, 0x0a, 0x58, 0x8b, 0xa8, 0x40, 0x00, 0xc5, 0x2e,
0x67, 0x40, 0x05, 0xb9, 0xe5, 0x2f, 0xe4, 0x92, 0x1c, 0x7d, 0x4e, 0x6e, 0xa9, 0x72, 0x4e, 0x39, 0xe5, 0xb2, 0xb7, 0xfe, 0x0b, 0xbd, 0xb4, 0xc7, 0x9c, 0xdb, 0x5b, 0x67, 0x72, 0xeb, 0xa1, 0xc7,
0xe4, 0x98, 0x5b, 0x0e, 0x39, 0x26, 0x87, 0x9c, 0xf3, 0x2b, 0x52, 0xd3, 0x33, 0xbb, 0xd8, 0x05, 0xde, 0x7a, 0xe8, 0xb1, 0x3d, 0xf4, 0xdc, 0xbf, 0xa0, 0xc7, 0xce, 0xdb, 0x5d, 0x80, 0x00, 0x45,
0x01, 0x46, 0xaa, 0x9c, 0x72, 0xc2, 0x74, 0x6f, 0x77, 0x6f, 0x4f, 0x7f, 0x37, 0x16, 0x36, 0x63, 0xaa, 0xf6, 0xf4, 0xd4, 0x13, 0xf7, 0x3d, 0xbc, 0xf7, 0xf0, 0xf6, 0x7d, 0x3f, 0x10, 0x36, 0x63,
0xe6, 0x27, 0x7e, 0x78, 0xbe, 0x17, 0x27, 0x91, 0x8c, 0x48, 0x1d, 0x7f, 0xce, 0x66, 0xcf, 0x77, 0xe6, 0x27, 0x7e, 0x78, 0xb6, 0x1b, 0x27, 0x91, 0x8c, 0x48, 0x5d, 0xfd, 0x9c, 0xce, 0x9e, 0x6f,
0x6e, 0x8a, 0x79, 0xe8, 0x3a, 0x82, 0x4b, 0xe9, 0x87, 0xe7, 0x42, 0x3f, 0xde, 0xb1, 0x59, 0x1c, 0x5f, 0x17, 0xf3, 0xd0, 0x75, 0x04, 0x97, 0xd2, 0x0f, 0xcf, 0x84, 0x7e, 0xbc, 0x6d, 0xb3, 0x38,
0x07, 0xbe, 0xcb, 0xa4, 0x1f, 0x85, 0xce, 0x94, 0x4b, 0xe6, 0x31, 0xc9, 0x9c, 0x29, 0x17, 0x82, 0x0e, 0x7c, 0x97, 0x49, 0x3f, 0x0a, 0x9d, 0x29, 0x97, 0xcc, 0x63, 0x92, 0x39, 0x53, 0x2e, 0x04,
0x9d, 0x73, 0x4d, 0x63, 0x33, 0xb8, 0xfb, 0x23, 0x2e, 0xdd, 0x89, 0x1f, 0x9e, 0x3f, 0x66, 0xee, 0x3b, 0xe3, 0x9a, 0xc6, 0x66, 0x70, 0xe7, 0xc7, 0x5c, 0xba, 0x13, 0x3f, 0x3c, 0x7b, 0xc4, 0xdc,
0x05, 0xf7, 0xc6, 0xf1, 0x80, 0x49, 0x36, 0xe0, 0x92, 0xf9, 0x81, 0x20, 0xf7, 0xa0, 0x89, 0x4c, 0x73, 0xee, 0x8d, 0xe3, 0x01, 0x93, 0x6c, 0xc0, 0x25, 0xf3, 0x03, 0x41, 0xee, 0x42, 0x53, 0x31,
0xe1, 0x6c, 0x7a, 0xc6, 0x93, 0xae, 0x75, 0xdf, 0x7a, 0xb8, 0x49, 0x41, 0xa1, 0x46, 0x88, 0x21, 0x85, 0xb3, 0xe9, 0x29, 0x4f, 0xba, 0xd6, 0x3d, 0xeb, 0xc1, 0x26, 0x05, 0x44, 0x8d, 0x14, 0x86,
0x0f, 0xa0, 0x25, 0x23, 0xc9, 0x82, 0x94, 0xa2, 0x84, 0x14, 0x4d, 0xc4, 0x69, 0x12, 0xfb, 0x1f, 0xdc, 0x87, 0x96, 0x8c, 0x24, 0x0b, 0x52, 0x8a, 0x92, 0xa2, 0x68, 0x2a, 0x9c, 0x26, 0xb1, 0xff,
0x1b, 0x50, 0x55, 0xb2, 0x67, 0x31, 0xd9, 0x86, 0x0d, 0x37, 0x88, 0xdc, 0x0b, 0x14, 0x54, 0xa1, 0xb1, 0x01, 0x55, 0x94, 0x3d, 0x8b, 0xc9, 0x0d, 0xd8, 0x70, 0x83, 0xc8, 0x3d, 0x57, 0x82, 0x2a,
0x1a, 0x20, 0x6d, 0x28, 0xf9, 0x1e, 0x72, 0x36, 0x68, 0xc9, 0xf7, 0xc8, 0x67, 0x50, 0x77, 0xa3, 0x54, 0x03, 0xa4, 0x0d, 0x25, 0xdf, 0x53, 0x9c, 0x0d, 0x5a, 0xf2, 0x3d, 0xf2, 0x19, 0xd4, 0xdd,
0x50, 0x32, 0x57, 0x8a, 0x6e, 0xf9, 0x7e, 0xf9, 0x61, 0xf3, 0xd1, 0x9b, 0x7b, 0xe9, 0x4d, 0xf7, 0x28, 0x94, 0xcc, 0x95, 0xa2, 0x5b, 0xbe, 0x57, 0x7e, 0xd0, 0x7c, 0xf8, 0xe6, 0x6e, 0x7a, 0xd3,
0x4e, 0xe6, 0xa1, 0xbb, 0x1f, 0x0a, 0xc9, 0x82, 0x00, 0x2f, 0xd6, 0xd7, 0x94, 0xcf, 0x1e, 0xd1, 0xdd, 0xe3, 0x79, 0xe8, 0xee, 0x85, 0x42, 0xb2, 0x20, 0x50, 0x17, 0xeb, 0x6b, 0xca, 0x67, 0x0f,
0x8c, 0x89, 0xfc, 0x10, 0x9a, 0x6e, 0x34, 0x9d, 0xce, 0x42, 0x5f, 0xfa, 0x5c, 0x74, 0x2b, 0x28, 0x69, 0xc6, 0x44, 0x7e, 0x04, 0x4d, 0x37, 0x9a, 0x4e, 0x67, 0xa1, 0x2f, 0x7d, 0x2e, 0xba, 0x15,
0xe3, 0x76, 0x51, 0x46, 0xdf, 0x10, 0xcc, 0x69, 0x9e, 0x96, 0x1c, 0xc1, 0x56, 0x2a, 0xc6, 0xd8, 0x25, 0xe3, 0x56, 0x51, 0x46, 0xdf, 0x10, 0xcc, 0x69, 0x9e, 0x96, 0x1c, 0xc2, 0x56, 0x2a, 0xc6,
0xa0, 0xbb, 0x71, 0xdf, 0x7a, 0xd8, 0x7c, 0xf4, 0xf6, 0x82, 0xfd, 0x1a, 0x83, 0xd1, 0x65, 0x6e, 0xd8, 0xa0, 0xbb, 0x71, 0xcf, 0x7a, 0xd0, 0x7c, 0xf8, 0xf6, 0x82, 0xfd, 0x0a, 0x83, 0xd1, 0x65,
0x32, 0x06, 0x92, 0x93, 0x9f, 0xca, 0xac, 0xbe, 0x8a, 0xcc, 0x15, 0x02, 0xc8, 0xfb, 0x50, 0x8b, 0x6e, 0x32, 0x06, 0x92, 0x93, 0x9f, 0xca, 0xac, 0xbe, 0x8a, 0xcc, 0x15, 0x02, 0xc8, 0xfb, 0x50,
0x93, 0xe8, 0xb9, 0x1f, 0xf0, 0x6e, 0x0d, 0x65, 0xdd, 0x59, 0xc8, 0x4a, 0x65, 0x1c, 0x6b, 0x02, 0x8b, 0x93, 0xe8, 0xb9, 0x1f, 0xf0, 0x6e, 0x4d, 0xc9, 0xba, 0xbd, 0x90, 0x95, 0xca, 0x38, 0xd2,
0x9a, 0x52, 0x92, 0x43, 0x68, 0x9b, 0x63, 0xaa, 0x47, 0xfd, 0x55, 0xf4, 0x58, 0x62, 0x26, 0xef, 0x04, 0x34, 0xa5, 0x24, 0x07, 0xd0, 0x36, 0xc7, 0x54, 0x8f, 0xfa, 0xab, 0xe8, 0xb1, 0xc4, 0x4c,
0x41, 0xcd, 0x44, 0x5c, 0xb7, 0x81, 0x72, 0x5e, 0x2f, 0x9a, 0xf8, 0x44, 0x3f, 0xa4, 0x29, 0x95, 0xde, 0x83, 0x9a, 0x89, 0xb8, 0x6e, 0x43, 0xc9, 0x79, 0xbd, 0x68, 0xe2, 0x63, 0xfd, 0x90, 0xa6,
0x32, 0x6e, 0x1a, 0xa2, 0xa9, 0x02, 0xf0, 0x4a, 0xc6, 0x5d, 0xe2, 0x26, 0x1f, 0x40, 0xfd, 0x82, 0x54, 0x68, 0xdc, 0x34, 0x44, 0x53, 0x05, 0xe0, 0x95, 0x8c, 0xbb, 0xc4, 0x4d, 0x3e, 0x80, 0xfa,
0xcf, 0x5d, 0x96, 0x78, 0xa2, 0xdb, 0x5c, 0x36, 0x83, 0x52, 0xa1, 0x17, 0x04, 0x07, 0x86, 0x80, 0x39, 0x9f, 0xbb, 0x2c, 0xf1, 0x44, 0xb7, 0xb9, 0x6c, 0x06, 0x54, 0xa1, 0x17, 0x04, 0xfb, 0x86,
0x66, 0xa4, 0x4a, 0x8f, 0xf4, 0x9c, 0xea, 0xd1, 0x7a, 0x25, 0x3d, 0x96, 0xb8, 0xed, 0x3f, 0x56, 0x80, 0x66, 0xa4, 0xa8, 0x47, 0x7a, 0x4e, 0xf5, 0x68, 0xbd, 0x92, 0x1e, 0x4b, 0xdc, 0xf6, 0x1f,
0xa0, 0x75, 0x38, 0x0b, 0xa4, 0xdf, 0x73, 0xdd, 0x68, 0x16, 0x4a, 0x42, 0xa0, 0x12, 0xb2, 0x29, 0x2b, 0xd0, 0x3a, 0x98, 0x05, 0xd2, 0xef, 0xb9, 0x6e, 0x34, 0x0b, 0x25, 0x21, 0x50, 0x09, 0xd9,
0xc7, 0x38, 0x6f, 0x50, 0x3c, 0x93, 0x5d, 0x68, 0x48, 0x7f, 0xca, 0x85, 0x64, 0xd3, 0x18, 0xa3, 0x94, 0xab, 0x38, 0x6f, 0x50, 0x75, 0x26, 0x3b, 0xd0, 0x90, 0xfe, 0x94, 0x0b, 0xc9, 0xa6, 0xb1,
0xbd, 0x4c, 0x17, 0x08, 0xf5, 0xd4, 0xf7, 0x78, 0x28, 0x7d, 0x37, 0x0a, 0xbb, 0x65, 0x64, 0x5b, 0x8a, 0xf6, 0x32, 0x5d, 0x20, 0xf0, 0xa9, 0xef, 0xf1, 0x50, 0xfa, 0x6e, 0x14, 0x76, 0xcb, 0x8a,
0x20, 0xc8, 0xe7, 0x00, 0x6e, 0x14, 0x44, 0x89, 0x33, 0x61, 0x62, 0x62, 0x02, 0xfa, 0xc1, 0x42, 0x6d, 0x81, 0x20, 0x9f, 0x03, 0xb8, 0x51, 0x10, 0x25, 0xce, 0x84, 0x89, 0x89, 0x09, 0xe8, 0xfb,
0xd9, 0xfc, 0xbb, 0xf7, 0xfa, 0x51, 0x10, 0xcd, 0x92, 0x27, 0x4c, 0x4c, 0x68, 0x03, 0x99, 0xd4, 0x0b, 0x65, 0xf3, 0xef, 0xde, 0xed, 0x47, 0x41, 0x34, 0x4b, 0x1e, 0x33, 0x31, 0xa1, 0x0d, 0xc5,
0x91, 0x74, 0xa1, 0x86, 0xc0, 0xbe, 0x87, 0x01, 0x5d, 0xa6, 0x29, 0x48, 0xde, 0xc9, 0xac, 0xe1, 0x84, 0x47, 0xd2, 0x85, 0x9a, 0x02, 0xf6, 0x3c, 0x15, 0xd0, 0x65, 0x9a, 0x82, 0xe4, 0x9d, 0xcc,
0x98, 0xf2, 0x82, 0xe1, 0xd9, 0xa0, 0x6d, 0x83, 0x3e, 0xd6, 0x58, 0x72, 0x1b, 0x6a, 0x17, 0x7c, 0x1a, 0x8e, 0x29, 0x2f, 0x2a, 0x3c, 0x1b, 0xb4, 0x6d, 0xd0, 0x47, 0x1a, 0x4b, 0x6e, 0x41, 0xed,
0xee, 0xcc, 0x7c, 0x0f, 0x63, 0xae, 0x41, 0xab, 0x17, 0x7c, 0x3e, 0xf6, 0x3d, 0xf2, 0x09, 0x54, 0x9c, 0xcf, 0x9d, 0x99, 0xef, 0xa9, 0x98, 0x6b, 0xd0, 0xea, 0x39, 0x9f, 0x8f, 0x7d, 0x8f, 0x7c,
0xfd, 0x29, 0x3b, 0xe7, 0x2a, 0x9e, 0x94, 0x66, 0x6f, 0xad, 0xd1, 0x6c, 0x1f, 0xef, 0x23, 0xe7, 0x02, 0x55, 0x7f, 0xca, 0xce, 0x38, 0xc6, 0x13, 0x6a, 0xf6, 0xd6, 0x1a, 0xcd, 0xf6, 0xd4, 0x7d,
0xfb, 0x8a, 0x98, 0x1a, 0x9e, 0x1d, 0x1b, 0x60, 0xa1, 0xb2, 0x2a, 0x11, 0x7e, 0xe8, 0xf1, 0x9f, 0xe4, 0x7c, 0x0f, 0x89, 0xa9, 0xe1, 0xd9, 0xb6, 0x01, 0x16, 0x2a, 0x63, 0x89, 0xf0, 0x43, 0x8f,
0x77, 0xad, 0xfb, 0xe5, 0x87, 0x65, 0xaa, 0x81, 0x9d, 0xbf, 0x59, 0xb0, 0x59, 0xe0, 0xce, 0x2b, 0xff, 0xa2, 0x6b, 0xdd, 0x2b, 0x3f, 0x28, 0x53, 0x0d, 0x6c, 0xff, 0xcd, 0x82, 0xcd, 0x02, 0x77,
0x63, 0x15, 0x94, 0x49, 0x4d, 0x5f, 0xca, 0x99, 0xbe, 0x0b, 0xb5, 0x98, 0xcd, 0x83, 0x88, 0x79, 0x5e, 0x19, 0xab, 0xa0, 0x4c, 0x6a, 0xfa, 0x52, 0xce, 0xf4, 0x5d, 0xa8, 0xc5, 0x6c, 0x1e, 0x44,
0x68, 0xda, 0x16, 0x4d, 0x41, 0xf5, 0xba, 0x17, 0xbe, 0x27, 0x95, 0x4d, 0x95, 0x51, 0x34, 0x40, 0xcc, 0x53, 0xa6, 0x6d, 0xd1, 0x14, 0xc4, 0xd7, 0xbd, 0xf0, 0x3d, 0x89, 0x36, 0x45, 0xa3, 0x68,
0x6e, 0x41, 0x75, 0xc2, 0xfd, 0xf3, 0x89, 0x34, 0xb6, 0x32, 0x10, 0xd9, 0x81, 0xba, 0x4a, 0x00, 0x80, 0xdc, 0x84, 0xea, 0x84, 0xfb, 0x67, 0x13, 0x69, 0x6c, 0x65, 0x20, 0xb2, 0x0d, 0x75, 0x4c,
0xe1, 0xff, 0x82, 0xa3, 0x8d, 0xca, 0x34, 0x83, 0xc9, 0x9b, 0xb0, 0x99, 0xe0, 0xc9, 0x91, 0x2c, 0x00, 0xe1, 0xff, 0x92, 0x2b, 0x1b, 0x95, 0x69, 0x06, 0x93, 0x37, 0x61, 0x33, 0x51, 0x27, 0x47,
0x39, 0xe7, 0x12, 0x6d, 0x54, 0xa6, 0x2d, 0x8d, 0x3c, 0x45, 0xdc, 0xa2, 0x00, 0xd6, 0x73, 0x05, 0xb2, 0xe4, 0x8c, 0x4b, 0x65, 0xa3, 0x32, 0x6d, 0x69, 0xe4, 0x89, 0xc2, 0x2d, 0x0a, 0x60, 0x3d,
0xd0, 0xfe, 0xab, 0x05, 0x37, 0x9f, 0x46, 0x2e, 0x0b, 0x8c, 0xa5, 0x8f, 0x8d, 0x72, 0x1f, 0x40, 0x57, 0x00, 0xed, 0xbf, 0x5a, 0x70, 0xfd, 0x69, 0xe4, 0xb2, 0xc0, 0x58, 0xfa, 0xc8, 0x28, 0xf7,
0xe5, 0x82, 0xcf, 0x05, 0x9a, 0xa2, 0xe0, 0xef, 0x15, 0xc4, 0x7b, 0x07, 0x7c, 0x4e, 0x91, 0x9c, 0x01, 0x54, 0xce, 0xf9, 0x5c, 0x28, 0x53, 0x14, 0xfc, 0xbd, 0x82, 0x78, 0x77, 0x9f, 0xcf, 0xa9,
0x7c, 0x04, 0xad, 0xa9, 0x32, 0x3b, 0xd3, 0x66, 0x47, 0x4b, 0x34, 0x1f, 0xdd, 0x5a, 0xed, 0x14, 0x22, 0x27, 0x1f, 0x41, 0x6b, 0x8a, 0x66, 0x67, 0xda, 0xec, 0xca, 0x12, 0xcd, 0x87, 0x37, 0x57,
0x5a, 0xa0, 0x55, 0x37, 0x8c, 0x99, 0x10, 0x2f, 0xa2, 0xc4, 0x33, 0x51, 0x98, 0xc1, 0x3b, 0xff, 0x3b, 0x85, 0x16, 0x68, 0xf1, 0x86, 0x31, 0x13, 0xe2, 0x45, 0x94, 0x78, 0x26, 0x0a, 0x33, 0x78,
0x0b, 0xe5, 0x03, 0x3e, 0x5f, 0x19, 0xdb, 0x04, 0x2a, 0xaa, 0x29, 0xe0, 0xab, 0x5a, 0x14, 0xcf, 0xfb, 0x3b, 0x50, 0xde, 0xe7, 0xf3, 0x95, 0xb1, 0x4d, 0xa0, 0x82, 0x4d, 0x41, 0xbd, 0xaa, 0x45,
0xf6, 0xb7, 0x16, 0x74, 0x94, 0x8e, 0xf9, 0x6a, 0xbd, 0xa6, 0x03, 0xbc, 0x03, 0x5b, 0x7e, 0x8e, 0xd5, 0xd9, 0xfe, 0xc6, 0x82, 0x0e, 0xea, 0x98, 0xaf, 0xd6, 0x6b, 0x3a, 0xc0, 0x3b, 0xb0, 0xe5,
0xca, 0xc9, 0xda, 0x41, 0x3b, 0x8f, 0xde, 0xf7, 0xb0, 0x1f, 0xf1, 0x4b, 0xdf, 0xe5, 0x8e, 0x9c, 0xe7, 0xa8, 0x9c, 0xac, 0x1d, 0xb4, 0xf3, 0xe8, 0x3d, 0x4f, 0xf5, 0x23, 0x7e, 0xe1, 0xbb, 0xdc,
0xc7, 0xdc, 0x68, 0x08, 0x1a, 0x75, 0x3a, 0x8f, 0x79, 0xa6, 0x5c, 0xa5, 0xe8, 0xfd, 0x4b, 0x9e, 0x91, 0xf3, 0x98, 0x1b, 0x0d, 0x41, 0xa3, 0x4e, 0xe6, 0x31, 0xcf, 0x94, 0xab, 0x14, 0xbd, 0x7f,
0x08, 0x3f, 0x0a, 0xd1, 0x9d, 0x9b, 0x34, 0x05, 0xed, 0x7f, 0x5a, 0x70, 0x7b, 0x4d, 0x43, 0x79, 0xc1, 0x13, 0xe1, 0x47, 0xa1, 0x72, 0xe7, 0x26, 0x4d, 0x41, 0xfb, 0x9f, 0x16, 0xdc, 0x5a, 0xd3,
0xc9, 0x5e, 0xf5, 0x26, 0x6c, 0x9a, 0xaa, 0xe8, 0x60, 0x38, 0x1b, 0x95, 0x5a, 0x06, 0xa9, 0x63, 0x50, 0x5e, 0xb2, 0x57, 0xbd, 0x09, 0x9b, 0xa6, 0x2a, 0x3a, 0x2a, 0x9c, 0x8d, 0x4a, 0x2d, 0x83,
0xf5, 0x0e, 0xd4, 0x79, 0x28, 0x9c, 0x9c, 0x62, 0x35, 0x1e, 0x8a, 0x91, 0xd2, 0xed, 0x01, 0xb4, 0xd4, 0xb1, 0x7a, 0x1b, 0xea, 0x3c, 0x14, 0x4e, 0x4e, 0xb1, 0x1a, 0x0f, 0xc5, 0x08, 0x75, 0xbb,
0x02, 0x26, 0xa4, 0x33, 0x8b, 0x3d, 0x26, 0xb9, 0xce, 0xcd, 0x0a, 0x6d, 0x2a, 0xdc, 0x58, 0xa3, 0x0f, 0xad, 0x80, 0x09, 0xe9, 0xcc, 0x62, 0x8f, 0x49, 0xae, 0x73, 0xb3, 0x42, 0x9b, 0x88, 0x1b,
0xd4, 0x9d, 0xc5, 0x5c, 0x48, 0x3e, 0x75, 0x24, 0x3b, 0x57, 0xad, 0xa3, 0xac, 0xee, 0xac, 0x51, 0x6b, 0x14, 0xde, 0x59, 0xcc, 0x85, 0xe4, 0x53, 0x47, 0xb2, 0x33, 0x6c, 0x1d, 0x65, 0xbc, 0xb3,
0xa7, 0xec, 0x5c, 0x90, 0xb7, 0xa1, 0x1d, 0xa8, 0x80, 0x70, 0x42, 0xdf, 0xbd, 0xc0, 0x97, 0xe8, 0x46, 0x9d, 0xb0, 0x33, 0x41, 0xde, 0x86, 0x76, 0x80, 0x01, 0xe1, 0x84, 0xbe, 0x7b, 0xae, 0x5e,
0xf4, 0xdc, 0x44, 0xec, 0xc8, 0x20, 0xed, 0x5f, 0x56, 0xe1, 0xce, 0xda, 0xee, 0x49, 0xfe, 0x0f, 0xa2, 0xd3, 0x73, 0x53, 0x61, 0x47, 0x06, 0x69, 0xff, 0xaa, 0x0a, 0xb7, 0xd7, 0x76, 0x4f, 0xf2,
0xb6, 0xf3, 0x8a, 0x38, 0xc8, 0x1b, 0xcc, 0xcd, 0xed, 0x49, 0x4e, 0xa1, 0xa7, 0xfa, 0xc9, 0x7f, 0x5d, 0xb8, 0x91, 0x57, 0xc4, 0x51, 0xbc, 0xc1, 0xdc, 0xdc, 0x9e, 0xe4, 0x14, 0x7a, 0xaa, 0x9f,
0xb1, 0x29, 0x94, 0x6f, 0x99, 0xe7, 0x71, 0x0f, 0xfb, 0x56, 0x9d, 0x6a, 0x40, 0xc5, 0xc9, 0x99, 0xfc, 0x0f, 0x9b, 0x02, 0x7d, 0xcb, 0x3c, 0x8f, 0x7b, 0xaa, 0x6f, 0xd5, 0xa9, 0x06, 0x30, 0x4e,
0x72, 0x32, 0xf7, 0xb0, 0x2d, 0xd5, 0x69, 0x0a, 0x2a, 0xfa, 0xe9, 0x4c, 0xe9, 0xd4, 0xd4, 0xf4, 0x4e, 0xd1, 0xc9, 0xdc, 0x53, 0x6d, 0xa9, 0x4e, 0x53, 0x10, 0xe9, 0xa7, 0x33, 0xd4, 0xa9, 0xa9,
0x08, 0x28, 0xfa, 0x84, 0x4f, 0xa3, 0x4b, 0xee, 0x61, 0xfb, 0xa8, 0xd3, 0x14, 0x24, 0xf7, 0xa1, 0xe9, 0x15, 0x80, 0xf4, 0x09, 0x9f, 0x46, 0x17, 0xdc, 0x53, 0xed, 0xa3, 0x4e, 0x53, 0x90, 0xdc,
0x35, 0x61, 0xc2, 0x41, 0xb1, 0xce, 0x4c, 0x74, 0x37, 0xf1, 0x31, 0x4c, 0x98, 0xe8, 0x29, 0xd4, 0x83, 0xd6, 0x84, 0x09, 0x47, 0x89, 0x75, 0x66, 0xa2, 0xbb, 0xa9, 0x1e, 0xc3, 0x84, 0x89, 0x1e,
0x58, 0xf5, 0xce, 0x9b, 0x97, 0x3c, 0xf1, 0x9f, 0xa7, 0xe3, 0x99, 0x90, 0x4c, 0xce, 0x44, 0xb7, 0xa2, 0xc6, 0xd8, 0x3b, 0xaf, 0x5f, 0xf0, 0xc4, 0x7f, 0x9e, 0x8e, 0x67, 0x42, 0x32, 0x39, 0x13,
0x8d, 0x35, 0x83, 0xe4, 0x1f, 0x9d, 0xe0, 0x13, 0x1c, 0xb4, 0x92, 0x99, 0x90, 0x29, 0xe5, 0x16, 0xdd, 0xb6, 0xaa, 0x19, 0x24, 0xff, 0xe8, 0x58, 0x3d, 0x51, 0x83, 0x56, 0x32, 0x13, 0x32, 0xa5,
0x52, 0x36, 0x11, 0x67, 0x48, 0x3e, 0x85, 0xbb, 0x66, 0xfa, 0x70, 0x12, 0xfe, 0xb3, 0x19, 0x17, 0xdc, 0x52, 0x94, 0x4d, 0x85, 0x33, 0x24, 0x9f, 0xc2, 0x1d, 0x33, 0x7d, 0x38, 0x09, 0xff, 0xf9,
0x52, 0x7b, 0x11, 0x59, 0x78, 0xb7, 0x83, 0x1c, 0x5d, 0x43, 0x42, 0x35, 0x05, 0x3a, 0x53, 0xf1, 0x8c, 0x0b, 0xa9, 0xbd, 0xa8, 0x58, 0x78, 0xb7, 0xa3, 0x38, 0xba, 0x86, 0x84, 0x6a, 0x0a, 0xe5,
0xf3, 0xf5, 0xec, 0x3a, 0x0d, 0x6e, 0xac, 0x65, 0xef, 0x63, 0x66, 0x7c, 0x06, 0xbb, 0xcb, 0xec, 0x4c, 0xe4, 0xe7, 0xeb, 0xd9, 0x75, 0x1a, 0x5c, 0x5b, 0xcb, 0xde, 0x57, 0x99, 0xf1, 0x19, 0xec,
0xca, 0x1c, 0x92, 0x9b, 0xd7, 0x13, 0xe4, 0xbf, 0x53, 0xe4, 0xa7, 0x48, 0xa1, 0xdf, 0xbf, 0x5e, 0x2c, 0xb3, 0xa3, 0x39, 0x24, 0x37, 0xaf, 0x27, 0x8a, 0xff, 0x76, 0x91, 0x9f, 0x2a, 0x0a, 0xfd,
0x80, 0x56, 0xe0, 0xe6, 0x7a, 0x01, 0x5a, 0x83, 0x07, 0xd0, 0xf2, 0x7c, 0x11, 0x07, 0x6c, 0xae, 0xfe, 0xf5, 0x02, 0xb4, 0x02, 0xd7, 0xd7, 0x0b, 0xd0, 0x1a, 0xdc, 0x87, 0x96, 0xe7, 0x8b, 0x38,
0xe3, 0x6b, 0x1b, 0x5d, 0xdf, 0x34, 0x38, 0x15, 0x63, 0xf6, 0x8b, 0xab, 0xf9, 0x9e, 0xb6, 0xec, 0x60, 0x73, 0x1d, 0x5f, 0x37, 0x94, 0xeb, 0x9b, 0x06, 0x87, 0x31, 0x66, 0xbf, 0xb8, 0x9c, 0xef,
0xd5, 0xf9, 0x7e, 0x25, 0xa8, 0x4b, 0x2b, 0x82, 0x7a, 0x39, 0x72, 0xcb, 0x57, 0x22, 0xd7, 0x7e, 0x69, 0xcb, 0x5e, 0x9d, 0xef, 0x97, 0x82, 0xba, 0xb4, 0x22, 0xa8, 0x97, 0x23, 0xb7, 0x7c, 0x29,
0x0c, 0x3b, 0xcb, 0x2f, 0x3e, 0x9e, 0x9d, 0x05, 0xbe, 0xdb, 0x9f, 0xb0, 0x97, 0xac, 0x35, 0xf6, 0x72, 0xed, 0x47, 0xb0, 0xbd, 0xfc, 0xe2, 0xa3, 0xd9, 0x69, 0xe0, 0xbb, 0xfd, 0x09, 0x7b, 0xc9,
0x77, 0x65, 0xd8, 0x2c, 0x8c, 0xae, 0xff, 0x96, 0xaf, 0x85, 0x89, 0x79, 0x0f, 0x9a, 0x71, 0xe2, 0x5a, 0x63, 0x7f, 0x5b, 0x86, 0xcd, 0xc2, 0xe8, 0xfa, 0x1f, 0xf9, 0x5a, 0x2a, 0x31, 0xef, 0x42,
0x5f, 0x32, 0xc9, 0x9d, 0x0b, 0x3e, 0x37, 0x1d, 0x10, 0x0c, 0x4a, 0x55, 0xf4, 0xfb, 0xaa, 0xaa, 0x33, 0x4e, 0xfc, 0x0b, 0x26, 0xb9, 0x73, 0xce, 0xe7, 0xa6, 0x03, 0x82, 0x41, 0x61, 0x45, 0xbf,
0x0a, 0x37, 0xf1, 0x63, 0xa5, 0x17, 0xe6, 0x65, 0x8b, 0xe6, 0x51, 0xaa, 0x21, 0xfe, 0x34, 0xf2, 0x87, 0x55, 0x55, 0xb8, 0x89, 0x1f, 0xa3, 0x5e, 0x2a, 0x2f, 0x5b, 0x34, 0x8f, 0xc2, 0x86, 0xf8,
0x43, 0x93, 0x95, 0x75, 0x6a, 0x20, 0xd5, 0x2e, 0x74, 0xac, 0x72, 0x0f, 0x1b, 0x62, 0x9d, 0x66, 0xb3, 0xc8, 0x0f, 0x4d, 0x56, 0xd6, 0xa9, 0x81, 0xb0, 0x5d, 0xe8, 0x58, 0xe5, 0x9e, 0x6a, 0x88,
0xf0, 0x22, 0x69, 0x6a, 0xf9, 0xa4, 0x39, 0x82, 0x8e, 0xf1, 0xae, 0x70, 0x64, 0xe4, 0x28, 0x39, 0x75, 0x9a, 0xc1, 0x8b, 0xa4, 0xa9, 0xe5, 0x93, 0xe6, 0x10, 0x3a, 0xc6, 0xbb, 0xc2, 0x91, 0x91,
0x66, 0x6a, 0x78, 0x7b, 0xdd, 0x80, 0x6e, 0xc8, 0x4f, 0xa3, 0x2f, 0x23, 0x3f, 0xa4, 0xed, 0xa4, 0x83, 0x72, 0xcc, 0xd4, 0xf0, 0xf6, 0xba, 0x01, 0xdd, 0x90, 0x9f, 0x44, 0x4f, 0x22, 0x3f, 0xa4,
0x00, 0x93, 0x8f, 0xa1, 0x9e, 0x8e, 0x85, 0x66, 0x0c, 0xbd, 0xb7, 0x46, 0x90, 0x99, 0x47, 0x05, 0xed, 0xa4, 0x00, 0x93, 0x8f, 0xa1, 0x9e, 0x8e, 0x85, 0x66, 0x0c, 0xbd, 0xbb, 0x46, 0x90, 0x99,
0xcd, 0x18, 0xd4, 0xd4, 0xc5, 0x43, 0x37, 0x99, 0xc7, 0x32, 0x4b, 0xfa, 0x05, 0x42, 0x3d, 0x15, 0x47, 0x05, 0xcd, 0x18, 0x70, 0xea, 0xe2, 0xa1, 0x9b, 0xcc, 0x63, 0x99, 0x25, 0xfd, 0x02, 0x81,
0x31, 0x77, 0x25, 0x5b, 0xa4, 0xfe, 0x02, 0xa1, 0x9a, 0x96, 0x21, 0x55, 0x09, 0x8c, 0x8d, 0xba, 0x4f, 0x45, 0xcc, 0x5d, 0xc9, 0x16, 0xa9, 0xbf, 0x40, 0x60, 0xd3, 0x32, 0xa4, 0x98, 0xc0, 0xaa,
0x85, 0x96, 0x6b, 0x2f, 0xd0, 0x07, 0x7c, 0x2e, 0xec, 0xbf, 0x58, 0x70, 0xf7, 0x9a, 0x1b, 0x19, 0x51, 0xb7, 0x94, 0xe5, 0xda, 0x0b, 0xf4, 0x3e, 0x9f, 0x0b, 0xfb, 0x2f, 0x16, 0xdc, 0xb9, 0xe2,
0x7f, 0x59, 0x99, 0xbf, 0xde, 0x00, 0x88, 0x31, 0x36, 0xd0, 0x5d, 0xda, 0xff, 0x0d, 0x8d, 0x51, 0x46, 0xc6, 0x5f, 0x56, 0xe6, 0xaf, 0x37, 0x00, 0x62, 0x15, 0x1b, 0xca, 0x5d, 0xda, 0xff, 0x0d,
0xde, 0xca, 0x9c, 0x5e, 0xce, 0x3b, 0xfd, 0x9a, 0xc2, 0x7a, 0x1b, 0x6a, 0xee, 0x84, 0x49, 0xd5, 0x8d, 0x41, 0x6f, 0x65, 0x4e, 0x2f, 0xe7, 0x9d, 0x7e, 0x45, 0x61, 0xbd, 0x05, 0x35, 0x77, 0xc2,
0x55, 0x37, 0xf4, 0xa8, 0xa4, 0xc0, 0x7d, 0x4f, 0xc5, 0x6d, 0xba, 0x5a, 0xcc, 0xd5, 0xd3, 0xaa, 0x24, 0x76, 0xd5, 0x0d, 0x3d, 0x2a, 0x21, 0xb8, 0xe7, 0x61, 0xdc, 0xa6, 0xab, 0xc5, 0x1c, 0x9f,
0x76, 0x7c, 0x86, 0xdb, 0x47, 0x27, 0xea, 0xf4, 0xad, 0xe9, 0x97, 0x21, 0x60, 0xff, 0xaa, 0x04, 0x56, 0xb5, 0xe3, 0x33, 0xdc, 0x9e, 0x72, 0xa2, 0x4e, 0xdf, 0x9a, 0x7e, 0x99, 0x02, 0xec, 0x5f,
0x9d, 0xe5, 0x70, 0x26, 0x9f, 0xe6, 0xd6, 0xb6, 0x2b, 0x13, 0xcb, 0x9a, 0xc6, 0x93, 0x5b, 0xda, 0x97, 0xa0, 0xb3, 0x1c, 0xce, 0xe4, 0xd3, 0xdc, 0xda, 0x76, 0x69, 0x62, 0x59, 0xd3, 0x78, 0x72,
0xbe, 0x80, 0x96, 0xb9, 0xb5, 0xd2, 0x4e, 0x74, 0x4b, 0xcb, 0xa3, 0xe4, 0xfa, 0xfc, 0xa1, 0xcd, 0x4b, 0xdb, 0x17, 0xd0, 0x32, 0xb7, 0x46, 0xed, 0x44, 0xb7, 0xb4, 0x3c, 0x4a, 0xae, 0xcf, 0x1f,
0x38, 0x3b, 0x0b, 0xf2, 0x31, 0xd4, 0xd2, 0xc9, 0xa7, 0x8c, 0xf1, 0x70, 0x8d, 0x1a, 0xe9, 0x10, 0xda, 0x8c, 0xb3, 0xb3, 0x20, 0x1f, 0x43, 0x2d, 0x9d, 0x7c, 0xca, 0x2a, 0x1e, 0xae, 0x50, 0x23,
0x94, 0x72, 0xfc, 0x07, 0xab, 0xa3, 0xfd, 0x21, 0x6c, 0xe1, 0x53, 0xa5, 0x90, 0xe9, 0x03, 0x2f, 0x1d, 0x82, 0x52, 0x8e, 0xff, 0x62, 0x75, 0xb4, 0x3f, 0x84, 0x2d, 0xf5, 0x14, 0x15, 0x32, 0x7d,
0x97, 0xd7, 0x9f, 0xc0, 0x76, 0xca, 0x78, 0xa8, 0x97, 0x73, 0x41, 0x39, 0x7b, 0x59, 0xee, 0xcf, 0xe0, 0xe5, 0xf2, 0xfa, 0x13, 0xb8, 0x91, 0x32, 0x1e, 0xe8, 0xe5, 0x5c, 0x50, 0xce, 0x5e, 0x96,
0xe1, 0x16, 0x6e, 0x3a, 0xae, 0xf4, 0x2f, 0x7d, 0x39, 0xef, 0xf3, 0x50, 0xf2, 0xe4, 0x1a, 0xfe, 0xfb, 0x73, 0xb8, 0xa9, 0x36, 0x1d, 0x57, 0xfa, 0x17, 0xbe, 0x9c, 0xf7, 0x79, 0x28, 0x79, 0x72,
0x0e, 0x94, 0x7d, 0x4f, 0x9b, 0xb7, 0x45, 0xd5, 0xd1, 0x1e, 0xe8, 0xda, 0x54, 0x94, 0xd0, 0x73, 0x05, 0x7f, 0x07, 0xca, 0xbe, 0xa7, 0xcd, 0xdb, 0xa2, 0x78, 0xb4, 0x07, 0xba, 0x36, 0x15, 0x25,
0x5d, 0x8e, 0x49, 0xf0, 0xb2, 0x52, 0x86, 0x3a, 0xc8, 0x8b, 0x52, 0x06, 0xbe, 0x98, 0xfa, 0x42, 0xf4, 0x5c, 0x97, 0xab, 0x24, 0x78, 0x59, 0x29, 0x43, 0x1d, 0xe4, 0x45, 0x29, 0x03, 0x5f, 0x4c,
0xbc, 0x82, 0x98, 0x6f, 0x2d, 0x68, 0x29, 0x39, 0x8f, 0xa3, 0xe8, 0x62, 0xca, 0x92, 0x8b, 0xf5, 0x7d, 0x21, 0x5e, 0x41, 0xcc, 0x37, 0x16, 0xb4, 0x50, 0xce, 0xa3, 0x28, 0x3a, 0x9f, 0xb2, 0xe4,
0x8c, 0xb3, 0x24, 0x30, 0x66, 0x50, 0xc7, 0x6c, 0xf2, 0x2b, 0xe7, 0x26, 0xbf, 0xbb, 0xd0, 0xc0, 0x7c, 0x3d, 0xe3, 0x2c, 0x09, 0x8c, 0x19, 0xf0, 0x98, 0x4d, 0x7e, 0xe5, 0xdc, 0xe4, 0x77, 0x07,
0xaa, 0xed, 0x28, 0x5a, 0x9d, 0x15, 0x75, 0x44, 0x8c, 0x93, 0x20, 0xdf, 0xbe, 0x37, 0x8a, 0xed, 0x1a, 0xaa, 0x6a, 0x3b, 0x48, 0xab, 0xb3, 0xa2, 0xae, 0x10, 0xe3, 0x24, 0xc8, 0xb7, 0xef, 0x8d,
0xfb, 0x0d, 0x00, 0x8f, 0x07, 0x5c, 0x8d, 0x41, 0x4c, 0x62, 0x56, 0x54, 0x68, 0xc3, 0x60, 0x7a, 0x62, 0xfb, 0x7e, 0x03, 0xc0, 0xe3, 0x01, 0xc7, 0x31, 0x88, 0x49, 0x95, 0x15, 0x15, 0xda, 0x30,
0xd2, 0xfe, 0x52, 0x07, 0x7f, 0x3f, 0xe0, 0x2c, 0x79, 0xe2, 0x0b, 0x19, 0x25, 0xf3, 0x7c, 0x8e, 0x98, 0x9e, 0xb4, 0x9f, 0xe8, 0xe0, 0xef, 0x07, 0x9c, 0x25, 0x8f, 0x7d, 0x21, 0xa3, 0x64, 0x9e,
0x59, 0x85, 0x1c, 0x7b, 0x03, 0xc0, 0x55, 0x84, 0x5a, 0x56, 0x49, 0xcb, 0x32, 0x98, 0x9e, 0xb4, 0xcf, 0x31, 0xab, 0x90, 0x63, 0x6f, 0x00, 0xb8, 0x48, 0xa8, 0x65, 0x95, 0xb4, 0x2c, 0x83, 0xe9,
0xff, 0x6c, 0x01, 0x51, 0xc2, 0xcc, 0xae, 0x7e, 0xec, 0xbb, 0x72, 0x96, 0xf0, 0x95, 0x33, 0x76, 0x49, 0xfb, 0xcf, 0x16, 0x10, 0x14, 0x66, 0x76, 0xf5, 0x23, 0xdf, 0x95, 0xb3, 0x84, 0xaf, 0x9c,
0x6e, 0x89, 0x29, 0xad, 0x59, 0x62, 0xca, 0x38, 0xde, 0x5e, 0x59, 0x62, 0x2a, 0x88, 0x4e, 0x97, 0xb1, 0x73, 0x4b, 0x4c, 0x69, 0xcd, 0x12, 0x53, 0x56, 0xe3, 0xed, 0xa5, 0x25, 0xa6, 0xa2, 0xd0,
0x98, 0xbb, 0xd0, 0xc0, 0x7e, 0x86, 0x5b, 0x8c, 0x1e, 0x88, 0x71, 0x8b, 0x39, 0x59, 0xb9, 0xc5, 0xe9, 0x12, 0x73, 0x07, 0x1a, 0xaa, 0x9f, 0xa9, 0x2d, 0x46, 0x0f, 0xc4, 0x6a, 0x8b, 0x39, 0x5e,
0x54, 0x91, 0x60, 0xcd, 0x16, 0x53, 0xcb, 0x6f, 0x31, 0x13, 0xb8, 0x79, 0xf5, 0x26, 0x62, 0xfd, 0xb9, 0xc5, 0x54, 0x15, 0xc1, 0x9a, 0x2d, 0xa6, 0x96, 0xdf, 0x62, 0x26, 0x70, 0xfd, 0xf2, 0x4d,
0xa2, 0xf6, 0x03, 0xa8, 0xc7, 0x86, 0xc8, 0x24, 0xfb, 0x6e, 0x31, 0xcf, 0x8a, 0x92, 0x68, 0x46, 0xc4, 0xfa, 0x45, 0xed, 0x87, 0x50, 0x8f, 0x0d, 0x91, 0x49, 0xf6, 0x9d, 0x62, 0x9e, 0x15, 0x25,
0x6d, 0xff, 0xae, 0x04, 0x37, 0x14, 0xc1, 0x57, 0x2c, 0x08, 0xb8, 0xbc, 0xbe, 0x81, 0x77, 0xa1, 0xd1, 0x8c, 0xda, 0xfe, 0x7d, 0x09, 0xae, 0x21, 0xc1, 0x97, 0x2c, 0x08, 0xb8, 0xbc, 0xba, 0x81,
0xc6, 0x3c, 0x2f, 0xe1, 0x42, 0xa4, 0x56, 0x33, 0xa0, 0xb2, 0xcf, 0x0b, 0x14, 0x80, 0x66, 0xab, 0x77, 0xa1, 0xc6, 0x3c, 0x2f, 0xe1, 0x42, 0xa4, 0x56, 0x33, 0x20, 0xda, 0xe7, 0x85, 0x12, 0xa0,
0x53, 0x03, 0x29, 0xdb, 0x2b, 0xdf, 0xa1, 0xd5, 0xea, 0x14, 0xcf, 0x0a, 0x87, 0x0b, 0x87, 0xae, 0xcc, 0x56, 0xa7, 0x06, 0x42, 0xdb, 0xa3, 0xef, 0x94, 0xd5, 0xea, 0x54, 0x9d, 0x11, 0xa7, 0x16,
0x9f, 0x78, 0x56, 0x92, 0x95, 0xef, 0xd5, 0x50, 0xa0, 0xf7, 0xe5, 0x14, 0x54, 0xd4, 0x31, 0x93, 0x0e, 0x5d, 0x3f, 0xd5, 0x19, 0x25, 0xa3, 0xef, 0x71, 0x28, 0xd0, 0xfb, 0x72, 0x0a, 0x22, 0x75,
0x13, 0x33, 0x7b, 0xe2, 0x59, 0xf5, 0x92, 0xac, 0x84, 0xe3, 0xf6, 0xd7, 0xca, 0xd7, 0xf4, 0xd4, 0xcc, 0xe4, 0xc4, 0xcc, 0x9e, 0xea, 0x8c, 0xbd, 0x24, 0x2b, 0xe1, 0x6a, 0xfb, 0x6b, 0xe5, 0x6b,
0xdf, 0x8d, 0x9c, 0xbf, 0xd5, 0x7d, 0xd4, 0x8a, 0x8e, 0x7d, 0xa9, 0x41, 0x35, 0x80, 0x5e, 0xf5, 0x7a, 0xea, 0xef, 0x46, 0xce, 0xdf, 0x78, 0x1f, 0x5c, 0xd1, 0x55, 0x5f, 0x6a, 0x50, 0x0d, 0x28,
0x3d, 0x8f, 0x87, 0xa6, 0x21, 0x19, 0x68, 0xfd, 0x30, 0x6a, 0x1f, 0xea, 0x08, 0x2b, 0x18, 0x4b, 0xaf, 0xfa, 0x9e, 0xc7, 0x43, 0xd3, 0x90, 0x0c, 0xb4, 0x7e, 0x18, 0xb5, 0x0f, 0x74, 0x84, 0x15,
0x90, 0x0f, 0xa1, 0x6e, 0x6a, 0x5e, 0x5a, 0xad, 0xef, 0x16, 0xad, 0x5f, 0xa0, 0xa7, 0x19, 0xb1, 0x8c, 0x25, 0xc8, 0x87, 0x50, 0x37, 0x35, 0x2f, 0xad, 0xd6, 0x77, 0x8a, 0xd6, 0x2f, 0xd0, 0xd3,
0xfd, 0x07, 0x4b, 0x87, 0xff, 0x09, 0xbb, 0xe4, 0x5e, 0xcf, 0xd8, 0x32, 0x67, 0x65, 0xab, 0x68, 0x8c, 0xd8, 0xfe, 0x97, 0xa5, 0xc3, 0xff, 0x98, 0x5d, 0x70, 0xaf, 0x67, 0x6c, 0x99, 0xb3, 0xb2,
0xe5, 0x55, 0xeb, 0xf8, 0x2e, 0x34, 0x9e, 0xb3, 0xcb, 0x68, 0x96, 0xf8, 0x92, 0x1b, 0xe3, 0x2f, 0x55, 0xb4, 0xf2, 0xaa, 0x75, 0x7c, 0x07, 0x1a, 0xcf, 0xd9, 0x45, 0x34, 0x4b, 0x7c, 0xc9, 0x8d,
0x10, 0xaa, 0x93, 0xb9, 0x13, 0xe6, 0xe3, 0x16, 0x58, 0x41, 0x57, 0xd6, 0x10, 0xde, 0xf7, 0xae, 0xf1, 0x17, 0x88, 0x2b, 0xf2, 0xf2, 0x3e, 0xb4, 0xf4, 0x88, 0xe5, 0xe4, 0xc3, 0xaf, 0xa9, 0x71,
0x49, 0xd9, 0x07, 0xd0, 0xd2, 0xd3, 0x97, 0x93, 0x8f, 0xcc, 0xa6, 0xc6, 0xe1, 0x78, 0x68, 0xff, 0x7a, 0x06, 0xfc, 0x7f, 0xb8, 0xe6, 0x4e, 0x98, 0x1f, 0x3a, 0x62, 0x12, 0x25, 0x52, 0xb5, 0x43,
0xda, 0x82, 0xd7, 0x57, 0xce, 0x03, 0x6b, 0x22, 0x67, 0xb9, 0x3b, 0xea, 0x1b, 0x14, 0xba, 0xe3, 0xfd, 0x95, 0xab, 0x41, 0xb7, 0xd4, 0x83, 0x63, 0xc4, 0x63, 0x5b, 0x14, 0x58, 0x43, 0x78, 0x28,
0x10, 0xee, 0x4d, 0x74, 0x01, 0x70, 0x58, 0xe2, 0x4e, 0xfc, 0x4b, 0xee, 0x88, 0x59, 0x1c, 0x47, 0x8c, 0xcd, 0xf1, 0x88, 0xb1, 0xea, 0x0b, 0x47, 0x72, 0x21, 0xcd, 0x30, 0x50, 0xf5, 0xc5, 0x09,
0x89, 0x74, 0x78, 0xc8, 0xce, 0x02, 0x33, 0x0b, 0xd6, 0xe9, 0xae, 0x21, 0xeb, 0x69, 0xaa, 0x13, 0x17, 0xf2, 0x49, 0xa5, 0x5e, 0xe9, 0x6c, 0xd8, 0xbf, 0xb1, 0xe0, 0xf5, 0x95, 0x13, 0xc5, 0x9a,
0x4d, 0x34, 0xd4, 0x34, 0xf6, 0xef, 0x2d, 0xdd, 0x3a, 0x4e, 0xd5, 0x30, 0xaf, 0xd6, 0x03, 0x9e, 0xd8, 0x5b, 0xee, 0xaf, 0xda, 0x06, 0x85, 0xfe, 0x3a, 0x84, 0xbb, 0x13, 0x5d, 0x42, 0x1c, 0x96,
0xbc, 0xe4, 0xfa, 0xf9, 0x29, 0x54, 0xcd, 0x3e, 0xa0, 0xde, 0xd3, 0x5e, 0x9e, 0xa1, 0x72, 0x02, 0xb8, 0x13, 0xff, 0x82, 0x3b, 0x62, 0x16, 0xc7, 0xa8, 0x3b, 0x0f, 0xd9, 0x69, 0x60, 0xa6, 0xc9,
0xf7, 0x4e, 0x17, 0x9b, 0x02, 0x35, 0x4c, 0xf6, 0x47, 0xd0, 0xcc, 0xa1, 0x49, 0x13, 0x6a, 0xe3, 0x3a, 0xdd, 0x31, 0x64, 0x3d, 0x4d, 0x75, 0xac, 0x89, 0x86, 0x9a, 0xc6, 0xfe, 0x83, 0xa5, 0x9b,
0xd1, 0xc1, 0xe8, 0xe8, 0xab, 0x51, 0xe7, 0x35, 0x05, 0x9c, 0xd2, 0xf1, 0xc9, 0xe9, 0x70, 0xd0, 0xcf, 0x09, 0xae, 0x03, 0xb8, 0x60, 0xf0, 0xe4, 0x25, 0x17, 0xd8, 0x4f, 0xa1, 0x6a, 0x36, 0x0a,
0xb1, 0xc8, 0x0d, 0xd8, 0x1c, 0x8f, 0x10, 0xfc, 0xea, 0x88, 0x9e, 0x3e, 0xf9, 0xba, 0x53, 0xb2, 0x7c, 0x4f, 0x7b, 0x79, 0x0a, 0xcb, 0x09, 0xdc, 0x3d, 0x59, 0xec, 0x1a, 0xd4, 0x30, 0xd9, 0x1f,
0xbf, 0x2d, 0xeb, 0x59, 0xfa, 0x59, 0x6e, 0x57, 0x31, 0x83, 0xcd, 0x1a, 0xe5, 0x09, 0x54, 0x9e, 0x41, 0x33, 0x87, 0x26, 0x4d, 0xa8, 0x8d, 0x47, 0xfb, 0xa3, 0xc3, 0x2f, 0x47, 0x9d, 0xd7, 0x10,
0x27, 0xd1, 0x34, 0x0d, 0x05, 0x75, 0x56, 0x17, 0x92, 0x91, 0xa9, 0xd9, 0x25, 0x19, 0xa9, 0xd0, 0x38, 0xa1, 0xe3, 0xe3, 0x93, 0xe1, 0xa0, 0x63, 0x91, 0x6b, 0xb0, 0x39, 0x1e, 0x29, 0xf0, 0xcb,
0x70, 0x27, 0x2a, 0xf2, 0xc2, 0xf3, 0x74, 0x8e, 0x59, 0x20, 0x94, 0x4b, 0xcc, 0xf4, 0xa7, 0xcb, 0x43, 0x7a, 0xf2, 0xf8, 0xab, 0x4e, 0xc9, 0xfe, 0xa6, 0xac, 0xa7, 0xf1, 0x67, 0xb9, 0x6d, 0xc7,
0xa9, 0x59, 0x11, 0x33, 0x5c, 0x0f, 0xff, 0xc0, 0x48, 0xb8, 0x88, 0xa3, 0x50, 0xa4, 0x69, 0x99, 0x8c, 0x46, 0x6b, 0x94, 0x27, 0x50, 0x79, 0x9e, 0x44, 0xd3, 0x34, 0x98, 0xf0, 0x8c, 0x17, 0x92,
0xc1, 0xaa, 0x16, 0x27, 0x3c, 0x0e, 0x7c, 0xcd, 0xac, 0x43, 0xa4, 0x61, 0x30, 0x3d, 0x49, 0xf8, 0x91, 0xa9, 0xfa, 0x25, 0x19, 0x61, 0x70, 0xb9, 0x13, 0x8c, 0xdd, 0xf0, 0x2c, 0x9d, 0x84, 0x16,
0xea, 0x9d, 0xac, 0x8e, 0x96, 0xfd, 0x5e, 0xd1, 0xb2, 0x2b, 0x6e, 0xbd, 0xf7, 0xec, 0xca, 0xd6, 0x08, 0x74, 0x89, 0x99, 0x1f, 0x75, 0x41, 0x36, 0x4b, 0x66, 0x86, 0xeb, 0xa9, 0x4f, 0x20, 0x09,
0xb6, 0x72, 0x93, 0xd3, 0x3e, 0x6c, 0x64, 0x0d, 0xfc, 0xc7, 0x40, 0xae, 0x72, 0x5e, 0xf1, 0xc5, 0x17, 0x71, 0x14, 0x8a, 0x34, 0xb1, 0x33, 0x18, 0xab, 0x79, 0xc2, 0xe3, 0xc0, 0xd7, 0xcc, 0x3a,
0xf1, 0x70, 0x34, 0xd8, 0x1f, 0x7d, 0xd1, 0xb1, 0x48, 0x0b, 0xea, 0xbd, 0x7e, 0x7f, 0x78, 0xac, 0xfe, 0x1a, 0x06, 0xd3, 0x93, 0x84, 0xaf, 0xde, 0xea, 0xea, 0xca, 0xb2, 0xdf, 0x2f, 0x5a, 0x76,
0x3c, 0x53, 0x52, 0xd0, 0x60, 0xd8, 0x7f, 0xba, 0x3f, 0x1a, 0x0e, 0x3a, 0x65, 0x05, 0xf5, 0x7b, 0xc5, 0xad, 0x77, 0x9f, 0x5d, 0xda, 0xfb, 0x56, 0xee, 0x82, 0xda, 0x87, 0x8d, 0x6c, 0x04, 0xf8,
0xa3, 0xfe, 0xf0, 0xe9, 0x70, 0xd0, 0xa9, 0xd8, 0x7f, 0xb7, 0x74, 0x67, 0xef, 0x17, 0x56, 0xa6, 0x09, 0x90, 0xcb, 0x9c, 0x97, 0x7c, 0x71, 0x34, 0x1c, 0x0d, 0xf6, 0x46, 0x5f, 0x74, 0x2c, 0xd2,
0x01, 0x77, 0x7d, 0xb1, 0xfe, 0xbf, 0x98, 0x5d, 0x68, 0x18, 0x7b, 0xee, 0xa7, 0x91, 0xb6, 0x40, 0x82, 0x7a, 0xaf, 0xdf, 0x1f, 0x1e, 0xa1, 0x67, 0x4a, 0x08, 0x0d, 0x86, 0xfd, 0xa7, 0x7b, 0xa3,
0x90, 0x9f, 0xc0, 0x96, 0x67, 0xf8, 0x9d, 0x42, 0xe4, 0xbd, 0xbf, 0x3c, 0x23, 0xad, 0x7a, 0xe5, 0xe1, 0xa0, 0x53, 0x46, 0xa8, 0xdf, 0x1b, 0xf5, 0x87, 0x4f, 0x87, 0x83, 0x4e, 0xc5, 0xfe, 0xbb,
0x5e, 0x7a, 0x30, 0xe6, 0x69, 0x7b, 0x05, 0xd8, 0x7e, 0x17, 0xda, 0x45, 0x8a, 0xc2, 0x65, 0x5f, 0xa5, 0x67, 0x83, 0x7e, 0x61, 0xe9, 0x1a, 0x70, 0xd7, 0x17, 0xeb, 0xbf, 0xe6, 0xec, 0x40, 0xc3,
0x2b, 0x5c, 0xd6, 0xb2, 0xbf, 0xb3, 0x60, 0x6b, 0xe9, 0xbf, 0xee, 0xf5, 0xdd, 0x66, 0x79, 0x39, 0xd8, 0x73, 0x2f, 0x8d, 0xb4, 0x05, 0x82, 0xfc, 0x14, 0xb6, 0x3c, 0xc3, 0xef, 0x14, 0x22, 0xef,
0x2c, 0x5d, 0x59, 0x0e, 0xc9, 0xbb, 0x40, 0xf2, 0x24, 0x4e, 0x7e, 0xca, 0xee, 0xe4, 0x08, 0xf5, 0xfd, 0xe5, 0x29, 0x6b, 0xd5, 0x2b, 0x77, 0xd3, 0x83, 0x31, 0x4f, 0xdb, 0x2b, 0xc0, 0xf6, 0xbb,
0xb6, 0x99, 0x6f, 0x5f, 0x95, 0x57, 0x6a, 0x5f, 0x02, 0x80, 0xb2, 0x17, 0x66, 0xd4, 0xcb, 0xb7, 0xd0, 0x2e, 0x52, 0x14, 0x2e, 0xfb, 0x5a, 0xe1, 0xb2, 0x96, 0xfd, 0xad, 0x05, 0x5b, 0x4b, 0x5f,
0x75, 0xab, 0xd8, 0xd6, 0x0f, 0xa0, 0x69, 0x3e, 0xd6, 0x9c, 0xaa, 0xde, 0x53, 0x42, 0x3b, 0xff, 0xcb, 0xd7, 0xf7, 0xab, 0xe5, 0xf5, 0xb2, 0x74, 0x69, 0xbd, 0x24, 0xef, 0x02, 0xc9, 0x93, 0x38,
0xcf, 0xe2, 0x25, 0xbd, 0xc5, 0xe7, 0x9d, 0x43, 0xf3, 0x75, 0xc7, 0x08, 0xdd, 0x53, 0x0c, 0x34, 0xf9, 0x39, 0xbd, 0x93, 0x23, 0xd4, 0xb5, 0x2a, 0xdf, 0x00, 0x2b, 0xaf, 0xd4, 0x00, 0x05, 0x00,
0xcf, 0x6d, 0xff, 0xd6, 0x82, 0xb6, 0xd2, 0x2a, 0xf7, 0xe6, 0xef, 0x43, 0x33, 0xc9, 0xa0, 0xb4, 0x65, 0x2f, 0xcc, 0xb0, 0x98, 0x1f, 0x0c, 0xac, 0xe2, 0x60, 0xb0, 0x0f, 0x4d, 0xf3, 0x77, 0xcf,
0x0b, 0x6c, 0x2f, 0xe4, 0x2f, 0x48, 0x69, 0x9e, 0x90, 0x3c, 0x82, 0x6d, 0x31, 0x3b, 0x4b, 0x3b, 0x09, 0x76, 0xaf, 0x92, 0xb2, 0xf3, 0xff, 0x2d, 0x5e, 0xd2, 0x5b, 0xfc, 0x41, 0x74, 0x60, 0xfe,
0xc9, 0x97, 0x22, 0x0a, 0x1f, 0xcf, 0x25, 0x4f, 0xfb, 0xeb, 0xca, 0x67, 0xe4, 0x5d, 0xb8, 0x91, 0x1f, 0x32, 0x42, 0x77, 0x91, 0x81, 0xe6, 0xb9, 0xed, 0xdf, 0x59, 0xd0, 0x46, 0xad, 0x72, 0x6f,
0x2e, 0x5d, 0x0b, 0x06, 0xbd, 0x89, 0x5e, 0x7d, 0x60, 0xff, 0xc6, 0x82, 0xa6, 0x52, 0xd6, 0xfc, 0xfe, 0x01, 0x34, 0x93, 0x0c, 0x4a, 0xfb, 0xc8, 0x8d, 0x85, 0xfc, 0x05, 0x29, 0xcd, 0x13, 0x92,
0x77, 0x8f, 0xd3, 0x5e, 0xe6, 0x51, 0x75, 0x5c, 0xd9, 0x56, 0x6e, 0x41, 0xd5, 0xfc, 0x7d, 0x63, 0x87, 0x70, 0x43, 0xcc, 0x4e, 0xd3, 0x5e, 0xf4, 0x44, 0x44, 0xe1, 0xa3, 0xb9, 0xe4, 0x69, 0x87,
0x1a, 0xba, 0xf9, 0xf7, 0x26, 0x17, 0x13, 0x95, 0x42, 0x4c, 0xec, 0x42, 0xc3, 0xb4, 0x29, 0x2e, 0x5e, 0xf9, 0x8c, 0xbc, 0x0b, 0xd7, 0xd2, 0xb5, 0x6d, 0xc1, 0xa0, 0x77, 0xd9, 0xcb, 0x0f, 0xec,
0xba, 0x1b, 0x38, 0x83, 0x2e, 0x10, 0x8b, 0xf4, 0xa8, 0xe6, 0xa7, 0x9c, 0x3f, 0x99, 0xd9, 0xc3, 0xdf, 0x5a, 0xd0, 0x44, 0x65, 0xcd, 0xd7, 0x7f, 0x35, 0x2f, 0x66, 0x1e, 0xc5, 0xe3, 0xca, 0xc6,
0xa8, 0xa6, 0xc6, 0xdd, 0x28, 0x24, 0x1f, 0x41, 0x95, 0xe1, 0x09, 0x75, 0x6c, 0x3f, 0xb2, 0x8b, 0x74, 0x13, 0xaa, 0xe6, 0x03, 0x90, 0x19, 0x09, 0xcc, 0xf7, 0x9f, 0x5c, 0x4c, 0x54, 0x0a, 0x31,
0xa1, 0x50, 0x20, 0xde, 0xd3, 0x3f, 0xd4, 0x70, 0x90, 0xb7, 0x60, 0x33, 0x0a, 0x3c, 0x43, 0x32, 0xb1, 0x03, 0x0d, 0xd3, 0xe8, 0xb8, 0xe8, 0x6e, 0xa8, 0x29, 0x76, 0x81, 0x58, 0xa4, 0x47, 0x35,
0xce, 0xca, 0x7b, 0x11, 0x49, 0xde, 0xc3, 0x4b, 0x28, 0xc8, 0x6c, 0x35, 0xaf, 0xaf, 0x7c, 0x05, 0x3f, 0x27, 0xfd, 0xc9, 0x4c, 0x2f, 0x46, 0x35, 0x1c, 0x98, 0xa3, 0x90, 0x7c, 0x04, 0x55, 0xa6,
0x4d, 0xa9, 0x54, 0xbb, 0xab, 0x1a, 0xed, 0x6e, 0xc0, 0xe6, 0xc1, 0xf0, 0xeb, 0x7e, 0x8f, 0x0e, 0x4e, 0x4a, 0xc7, 0xf6, 0x43, 0xbb, 0x18, 0x0a, 0x05, 0xe2, 0x5d, 0xfd, 0x43, 0x0d, 0x07, 0x79,
0x9c, 0xde, 0x60, 0x80, 0x99, 0x44, 0xa0, 0xdd, 0xeb, 0xf7, 0x8f, 0xc6, 0xa3, 0xd3, 0x13, 0x83, 0x0b, 0x36, 0xa3, 0xc0, 0x33, 0x24, 0xe3, 0xac, 0xbc, 0x17, 0x91, 0xe4, 0x3d, 0x75, 0x09, 0x84,
0xb3, 0xc8, 0x4d, 0xd8, 0x4a, 0xc9, 0x06, 0xc3, 0xa7, 0x43, 0x5d, 0x5f, 0xb6, 0xa1, 0x93, 0x11, 0xcc, 0x5e, 0xf4, 0xfa, 0xca, 0x57, 0xd0, 0x94, 0x0a, 0xdb, 0x5d, 0xd5, 0x68, 0x77, 0x0d, 0x36,
0xd2, 0xe1, 0xe1, 0xd1, 0x33, 0xac, 0x33, 0x00, 0xd5, 0xa7, 0x47, 0xfd, 0x03, 0x55, 0x65, 0x54, 0xf7, 0x87, 0x5f, 0xf5, 0x7b, 0x74, 0xe0, 0xf4, 0x06, 0x03, 0x95, 0x49, 0x04, 0xda, 0xbd, 0x7e,
0x52, 0x8e, 0x47, 0x06, 0xda, 0x20, 0x5b, 0xd0, 0x1c, 0xef, 0x0f, 0x9c, 0xf1, 0xf1, 0xa0, 0xa7, 0xff, 0x70, 0x3c, 0x3a, 0x39, 0x36, 0x38, 0x8b, 0x5c, 0x87, 0xad, 0x94, 0x6c, 0x30, 0x7c, 0x3a,
0x04, 0x54, 0x49, 0x07, 0x5a, 0xa3, 0xde, 0xe1, 0xd0, 0xe9, 0x3f, 0xe9, 0x8d, 0xbe, 0x18, 0x0e, 0xd4, 0xf5, 0xe5, 0x06, 0x74, 0x32, 0x42, 0x3a, 0x3c, 0x38, 0x7c, 0xa6, 0xea, 0x0c, 0x40, 0xf5,
0x3a, 0x35, 0xfb, 0x1b, 0xdd, 0xed, 0x72, 0xdf, 0x66, 0xc8, 0xff, 0xe7, 0x3e, 0xe4, 0xe8, 0x38, 0xe9, 0x61, 0x7f, 0x1f, 0xab, 0x0c, 0x26, 0xe5, 0x78, 0x64, 0xa0, 0x0d, 0xb2, 0x05, 0xcd, 0xf1,
0x5c, 0x73, 0xbd, 0xc5, 0x47, 0x9c, 0xcc, 0x3d, 0xa5, 0x9c, 0x7b, 0x1e, 0x6f, 0x7e, 0xd3, 0xdc, 0xde, 0xc0, 0x19, 0x1f, 0x0d, 0x7a, 0x28, 0xa0, 0x4a, 0x3a, 0xd0, 0x1a, 0xf5, 0x0e, 0x86, 0x4e,
0x7b, 0xef, 0xe3, 0x94, 0xf5, 0xac, 0x8a, 0xa7, 0xf7, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x0a, 0xff, 0x71, 0x6f, 0xf4, 0xc5, 0x70, 0xd0, 0xa9, 0xd9, 0x5f, 0xeb, 0x6e, 0x97, 0xfb, 0x77, 0x87,
0x4f, 0x5b, 0xfc, 0x39, 0x1d, 0x00, 0x00, 0x7c, 0x2f, 0xf7, 0x57, 0x90, 0x8e, 0xc3, 0x35, 0xd7, 0x5b, 0xfc, 0x0d, 0x94, 0xb9, 0xa7, 0x94,
0x73, 0xcf, 0xa3, 0xcd, 0xaf, 0x9b, 0xbb, 0xef, 0x7d, 0x9c, 0xb2, 0x9e, 0x56, 0xd5, 0xe9, 0xfd,
0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x13, 0x2d, 0x88, 0x7b, 0x1d, 0x00, 0x00,
} }

View File

@ -225,12 +225,15 @@ message SyncWalletAccounts {
} }
message SyncSavedAddress { message SyncSavedAddress {
reserved 4;
bytes address = 1; bytes address = 1;
string name = 2; string name = 2;
bool favourite = 3; bool favourite = 3;
uint64 chain_id = 4;
bool removed = 5; bool removed = 5;
uint64 update_clock = 7; uint64 update_clock = 7;
string chain_short_names = 8;
string ens = 9;
bool is_test= 10;
} }
message SyncCommunitySettings { message SyncCommunitySettings {

View File

@ -930,19 +930,11 @@ func (api *PublicAPI) DestroyWalletConnectSession(ctx context.Context, PeerID st
// Saved Addresses APIs // Saved Addresses APIs
func (api *PublicAPI) UpsertSavedAddress(ctx context.Context, sa wallet.SavedAddress) error { func (api *PublicAPI) UpsertSavedAddress(ctx context.Context, sa wallet.SavedAddress) error {
if sa.ChainID == 0 {
sa.ChainID = api.service.rpcClient.UpstreamChainID
}
return api.service.messenger.UpsertSavedAddress(ctx, sa) return api.service.messenger.UpsertSavedAddress(ctx, sa)
} }
func (api *PublicAPI) DeleteSavedAddress(ctx context.Context, chainID uint64, address ethcommon.Address) error { func (api *PublicAPI) DeleteSavedAddress(ctx context.Context, address ethcommon.Address, ens string, isTest bool) error {
if chainID == 0 { return api.service.messenger.DeleteSavedAddress(ctx, address, ens, isTest)
chainID = api.service.rpcClient.UpstreamChainID
}
return api.service.messenger.DeleteSavedAddress(ctx, chainID, address)
} }
// PushNotifications server endpoints // PushNotifications server endpoints

View File

@ -202,24 +202,21 @@ func (api *API) DeleteCustomTokenByChainID(ctx context.Context, chainID uint64,
func (api *API) GetSavedAddresses(ctx context.Context) ([]SavedAddress, error) { func (api *API) GetSavedAddresses(ctx context.Context) ([]SavedAddress, error) {
log.Debug("call to get saved addresses") log.Debug("call to get saved addresses")
rst, err := api.s.savedAddressesManager.GetSavedAddressesForChainID(api.s.rpcClient.UpstreamChainID) rst, err := api.s.savedAddressesManager.GetSavedAddresses()
log.Debug("result from database for saved addresses", "len", len(rst)) log.Debug("result from database for saved addresses", "len", len(rst))
return rst, err return rst, err
} }
func (api *API) AddSavedAddress(ctx context.Context, sa SavedAddress) error { func (api *API) AddSavedAddress(ctx context.Context, sa SavedAddress) error {
log.Debug("call to create or edit saved address") log.Debug("call to create or edit saved address")
if sa.ChainID == 0 {
sa.ChainID = api.s.rpcClient.UpstreamChainID
}
_, err := api.s.savedAddressesManager.UpdateMetadataAndUpsertSavedAddress(sa) _, err := api.s.savedAddressesManager.UpdateMetadataAndUpsertSavedAddress(sa)
log.Debug("result from database for create or edit saved address", "err", err) log.Debug("result from database for create or edit saved address", "err", err)
return err return err
} }
func (api *API) DeleteSavedAddress(ctx context.Context, address common.Address) error { func (api *API) DeleteSavedAddress(ctx context.Context, address common.Address, ens string, isTest bool) error {
log.Debug("call to remove saved address") log.Debug("call to remove saved address")
_, err := api.s.savedAddressesManager.DeleteSavedAddress(api.s.rpcClient.UpstreamChainID, address) _, err := api.s.savedAddressesManager.DeleteSavedAddress(address, ens, isTest, uint64(time.Now().Unix()))
log.Debug("result from database for remove saved address", "err", err) log.Debug("result from database for remove saved address", "err", err)
return err return err
} }

View File

@ -15,16 +15,18 @@ type savedAddressMeta struct {
type SavedAddress struct { type SavedAddress struct {
Address common.Address `json:"address"` Address common.Address `json:"address"`
// TODO: Add Emoji and Networks // TODO: Add Emoji
// Emoji string `json:"emoji"` // Emoji string `json:"emoji"`
Name string `json:"name"` Name string `json:"name"`
Favourite bool `json:"favourite"` Favourite bool `json:"favourite"`
ChainID uint64 `json:"chainId"` ChainShortNames string `json:"chainShortNames"` // used with address only, not with ENSName
ENSName string `json:"ens"`
IsTest bool `json:"isTest"`
savedAddressMeta savedAddressMeta
} }
func (s *SavedAddress) ID() string { func (s *SavedAddress) ID() string {
return fmt.Sprintf("%s-%d", s.Address.Hex(), s.ChainID) return fmt.Sprintf("%s-%s-%t", s.Address.Hex(), s.ENSName, s.IsTest)
} }
type SavedAddressesManager struct { type SavedAddressesManager struct {
@ -35,7 +37,7 @@ func NewSavedAddressesManager(db *sql.DB) *SavedAddressesManager {
return &SavedAddressesManager{db: db} return &SavedAddressesManager{db: db}
} }
const rawQueryColumnsOrder = "address, name, favourite, network_id, removed, update_clock" const rawQueryColumnsOrder = "address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test"
// getSavedAddressesFromDBRows retrieves all data based on SELECT Query using rawQueryColumnsOrder // getSavedAddressesFromDBRows retrieves all data based on SELECT Query using rawQueryColumnsOrder
func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) {
@ -43,7 +45,7 @@ func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) {
for rows.Next() { for rows.Next() {
sa := SavedAddress{} sa := SavedAddress{}
// based on rawQueryColumnsOrder // based on rawQueryColumnsOrder
err := rows.Scan(&sa.Address, &sa.Name, &sa.Favourite, &sa.ChainID, &sa.Removed, &sa.UpdateClock) err := rows.Scan(&sa.Address, &sa.Name, &sa.Favourite, &sa.Removed, &sa.UpdateClock, &sa.ChainShortNames, &sa.ENSName, &sa.IsTest)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -54,8 +56,13 @@ func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) {
return addresses, nil return addresses, nil
} }
func (sam *SavedAddressesManager) GetSavedAddressesForChainID(chainID uint64) ([]SavedAddress, error) { func (sam *SavedAddressesManager) getSavedAddresses(condition string) ([]SavedAddress, error) {
rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses WHERE network_id = ? AND removed != 1", rawQueryColumnsOrder), chainID) var whereCondition string
if condition != "" {
whereCondition = fmt.Sprintf("WHERE %s", condition)
}
rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses %s", rawQueryColumnsOrder, whereCondition))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -66,29 +73,16 @@ func (sam *SavedAddressesManager) GetSavedAddressesForChainID(chainID uint64) ([
} }
func (sam *SavedAddressesManager) GetSavedAddresses() ([]SavedAddress, error) { func (sam *SavedAddressesManager) GetSavedAddresses() ([]SavedAddress, error) {
rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses WHERE removed != 1", rawQueryColumnsOrder)) return sam.getSavedAddresses("removed != 1")
if err != nil {
return nil, err
}
defer rows.Close()
addresses, err := getSavedAddressesFromDBRows(rows)
return addresses, err
} }
// GetRawSavedAddresses provides access to the soft-delete and sync metadata // GetRawSavedAddresses provides access to the soft-delete and sync metadata
func (sam *SavedAddressesManager) GetRawSavedAddresses() ([]SavedAddress, error) { func (sam *SavedAddressesManager) GetRawSavedAddresses() ([]SavedAddress, error) {
rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses", rawQueryColumnsOrder)) return sam.getSavedAddresses("")
if err != nil {
return nil, err
}
defer rows.Close()
return getSavedAddressesFromDBRows(rows)
} }
func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx) error { func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx) error {
sqlStatement := "INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, ?, ?, ?, ?)" sqlStatement := "INSERT OR REPLACE INTO saved_addresses (address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
var err error var err error
var insert *sql.Stmt var insert *sql.Stmt
if tx != nil { if tx != nil {
@ -100,7 +94,7 @@ func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx
return err return err
} }
defer insert.Close() defer insert.Close()
_, err = insert.Exec(sa.ChainID, sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock) _, err = insert.Exec(sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock, sa.ChainShortNames, sa.ENSName, sa.IsTest)
return err return err
} }
@ -113,12 +107,12 @@ func (sam *SavedAddressesManager) UpdateMetadataAndUpsertSavedAddress(sa SavedAd
return sa.UpdateClock, nil return sa.UpdateClock, nil
} }
func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(ChainID uint64, Address common.Address, updateClock uint64) (newer bool, tx *sql.Tx, err error) { func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(address common.Address, ens string, isTest bool, updateClock uint64) (newer bool, tx *sql.Tx, err error) {
tx, err = sam.db.Begin() tx, err = sam.db.Begin()
if err != nil { if err != nil {
return false, nil, err return false, nil, err
} }
row := tx.QueryRow("SELECT update_clock FROM saved_addresses WHERE network_id = ? AND address = ?", ChainID, Address) row := tx.QueryRow("SELECT update_clock FROM saved_addresses WHERE address = ? AND is_test = ? AND ens_name = ?", address, isTest, ens)
if err != nil { if err != nil {
return false, tx, err return false, tx, err
} }
@ -128,11 +122,11 @@ func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(ChainID
if err != nil { if err != nil {
return err == sql.ErrNoRows, tx, err return err == sql.ErrNoRows, tx, err
} }
return dbUpdateClock <= updateClock, tx, nil return dbUpdateClock < updateClock, tx, nil
} }
func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress, updateClock uint64) (insertedOrUpdated bool, err error) { func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress, updateClock uint64) (insertedOrUpdated bool, err error) {
newer, tx, err := sam.startTransactionAndCheckIfNewerChange(sa.ChainID, sa.Address, updateClock) newer, tx, err := sam.startTransactionAndCheckIfNewerChange(sa.Address, sa.ENSName, sa.IsTest, updateClock)
defer func() { defer func() {
if err == nil { if err == nil {
err = tx.Commit() err = tx.Commit()
@ -153,8 +147,11 @@ func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress,
return true, err return true, err
} }
func (sam *SavedAddressesManager) DeleteSavedAddressIfNewerUpdate(chainID uint64, address common.Address, updateClock uint64) (deleted bool, err error) { func (sam *SavedAddressesManager) DeleteSavedAddress(address common.Address, ens string, isTest bool, updateClock uint64) (deleted bool, err error) {
newer, tx, err := sam.startTransactionAndCheckIfNewerChange(chainID, address, updateClock) if err != nil {
return false, err
}
newer, tx, err := sam.startTransactionAndCheckIfNewerChange(address, ens, isTest, updateClock)
defer func() { defer func() {
if err == nil { if err == nil {
err = tx.Commit() err = tx.Commit()
@ -166,32 +163,22 @@ func (sam *SavedAddressesManager) DeleteSavedAddressIfNewerUpdate(chainID uint64
return false, err return false, err
} }
var insert *sql.Stmt update, err := tx.Prepare(`UPDATE saved_addresses SET removed = 1, update_clock = ? WHERE address = ? AND is_test = ? AND ens_name = ?`)
insert, err = tx.Prepare(`INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, "", 0, 1, ?)`)
if err != nil { if err != nil {
return false, err return false, err
} }
defer insert.Close() defer update.Close()
_, err = insert.Exec(chainID, address, updateClock) res, err := update.Exec(updateClock, address, isTest, ens)
if err != nil { if err != nil {
return false, err return false, err
} }
return true, nil nRows, err := res.RowsAffected()
if err != nil {
return false, err
} }
func (sam *SavedAddressesManager) DeleteSavedAddress(chainID uint64, address common.Address) (updatedClock uint64, err error) { return nRows > 0, nil
insert, err := sam.db.Prepare(`INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, "", 0, 1, ?)`)
if err != nil {
return 0, err
}
defer insert.Close()
updateClock := uint64(time.Now().Unix())
_, err = insert.Exec(chainID, address, updateClock)
if err != nil {
return 0, err
}
return updateClock, nil
} }
func (sam *SavedAddressesManager) DeleteSoftRemovedSavedAddresses(threshold uint64) error { func (sam *SavedAddressesManager) DeleteSoftRemovedSavedAddresses(threshold uint64) error {

View File

@ -1,10 +1,9 @@
package wallet package wallet
import ( import (
"io/ioutil"
"os"
"strconv" "strconv"
"testing" "testing"
"time"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -14,22 +13,26 @@ import (
"github.com/status-im/status-go/sqlite" "github.com/status-im/status-go/sqlite"
) )
const (
ensMember int = iota
isTestMember
addressMember
)
func setupTestSavedAddressesDB(t *testing.T) (*SavedAddressesManager, func()) { func setupTestSavedAddressesDB(t *testing.T) (*SavedAddressesManager, func()) {
tmpfile, err := ioutil.TempFile("", "wallet-saved_addresses-tests-") db, err := appdatabase.InitializeDB(sqlite.InMemoryPath, "wallet-saved_addresses-tests", sqlite.ReducedKDFIterationsNumber)
require.NoError(t, err)
db, err := appdatabase.InitializeDB(tmpfile.Name(), "wallet-saved_addresses-tests", sqlite.ReducedKDFIterationsNumber)
require.NoError(t, err) require.NoError(t, err)
return &SavedAddressesManager{db}, func() { return &SavedAddressesManager{db}, func() {
require.NoError(t, db.Close()) require.NoError(t, db.Close())
require.NoError(t, os.Remove(tmpfile.Name()))
} }
} }
func TestSavedAddresses(t *testing.T) { func TestSavedAddressesAdd(t *testing.T) {
manager, stop := setupTestSavedAddressesDB(t) manager, stop := setupTestSavedAddressesDB(t)
defer stop() defer stop()
rst, err := manager.GetSavedAddressesForChainID(777) rst, err := manager.GetRawSavedAddresses()
require.NoError(t, err) require.NoError(t, err)
require.Nil(t, rst) require.Nil(t, rst)
@ -37,26 +40,23 @@ func TestSavedAddresses(t *testing.T) {
Address: common.Address{1}, Address: common.Address{1},
Name: "Zilliqa", Name: "Zilliqa",
Favourite: true, Favourite: true,
ChainID: 777, ChainShortNames: "eth:arb:",
ENSName: "test.stateofus.eth",
IsTest: false,
} }
_, err = manager.UpdateMetadataAndUpsertSavedAddress(sa) _, err = manager.UpdateMetadataAndUpsertSavedAddress(sa)
require.NoError(t, err) require.NoError(t, err)
rst, err = manager.GetSavedAddressesForChainID(777) rst, err = manager.GetRawSavedAddresses()
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, 1, len(rst)) require.Equal(t, 1, len(rst))
require.Equal(t, sa.Address, rst[0].Address) require.Equal(t, sa.Address, rst[0].Address)
require.Equal(t, sa.Name, rst[0].Name) require.Equal(t, sa.Name, rst[0].Name)
require.Equal(t, sa.Favourite, rst[0].Favourite) require.Equal(t, sa.Favourite, rst[0].Favourite)
require.Equal(t, sa.ChainID, rst[0].ChainID) require.Equal(t, sa.ChainShortNames, rst[0].ChainShortNames)
require.Equal(t, sa.ENSName, rst[0].ENSName)
_, err = manager.DeleteSavedAddress(777, sa.Address) require.Equal(t, sa.IsTest, rst[0].IsTest)
require.NoError(t, err)
rst, err = manager.GetSavedAddressesForChainID(777)
require.NoError(t, err)
require.Equal(t, 0, len(rst))
} }
func contains[T comparable](container []T, element T, isEqual func(T, T) bool) bool { func contains[T comparable](container []T, element T, isEqual func(T, T) bool) bool {
@ -78,7 +78,8 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool
} }
func savedAddressDataIsEqual(a, b SavedAddress) bool { func savedAddressDataIsEqual(a, b SavedAddress) bool {
return a.Address == b.Address && a.ChainID == b.ChainID && a.Name == b.Name && a.Favourite == b.Favourite 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
} }
func TestSavedAddressesMetadata(t *testing.T) { func TestSavedAddressesMetadata(t *testing.T) {
@ -92,13 +93,15 @@ func TestSavedAddressesMetadata(t *testing.T) {
// Add raw saved addresses // Add raw saved addresses
sa1 := SavedAddress{ sa1 := SavedAddress{
Address: common.Address{1}, Address: common.Address{1},
ChainID: 777,
Name: "Raw", Name: "Raw",
Favourite: true, Favourite: true,
savedAddressMeta: savedAddressMeta{ savedAddressMeta: savedAddressMeta{
Removed: false, Removed: false,
UpdateClock: 234, UpdateClock: 234,
}, },
ChainShortNames: "eth:arb:",
ENSName: "test.stateofus.eth",
IsTest: false,
} }
err = manager.upsertSavedAddress(sa1, nil) err = manager.upsertSavedAddress(sa1, nil)
@ -112,9 +115,9 @@ func TestSavedAddressesMetadata(t *testing.T) {
// Add simple saved address without sync metadata // Add simple saved address without sync metadata
sa2 := SavedAddress{ sa2 := SavedAddress{
Address: common.Address{2}, Address: common.Address{2},
ChainID: 777,
Name: "Simple", Name: "Simple",
Favourite: false, Favourite: false,
IsTest: false,
} }
var sa2UpdatedClock uint64 var sa2UpdatedClock uint64
@ -133,9 +136,9 @@ func TestSavedAddressesMetadata(t *testing.T) {
} }
require.Equal(t, sa1, dbSavedAddresses[rawIndex]) require.Equal(t, sa1, dbSavedAddresses[rawIndex])
require.Equal(t, sa2.Address, dbSavedAddresses[simpleIndex].Address) require.Equal(t, sa2.Address, dbSavedAddresses[simpleIndex].Address)
require.Equal(t, sa2.ChainID, dbSavedAddresses[simpleIndex].ChainID)
require.Equal(t, sa2.Name, dbSavedAddresses[simpleIndex].Name) require.Equal(t, sa2.Name, dbSavedAddresses[simpleIndex].Name)
require.Equal(t, sa2.Favourite, dbSavedAddresses[simpleIndex].Favourite) require.Equal(t, sa2.Favourite, dbSavedAddresses[simpleIndex].Favourite)
require.Equal(t, sa2.IsTest, dbSavedAddresses[simpleIndex].IsTest)
// Check the default values // Check the default values
require.False(t, dbSavedAddresses[simpleIndex].Removed) require.False(t, dbSavedAddresses[simpleIndex].Removed)
@ -143,12 +146,12 @@ func TestSavedAddressesMetadata(t *testing.T) {
require.Greater(t, dbSavedAddresses[simpleIndex].UpdateClock, uint64(0)) require.Greater(t, dbSavedAddresses[simpleIndex].UpdateClock, uint64(0))
sa2Older := sa2 sa2Older := sa2
sa2Older.Name = "Conditional, NOT updated"
sa2Older.Favourite = true sa2Older.Favourite = true
sa2Older.IsTest = false
sa2Newer := sa2 sa2Newer := sa2
sa2Newer.Name = "Conditional, updated"
sa2Newer.Favourite = false sa2Newer.Favourite = false
sa2Newer.IsTest = false
// Try to add an older entry // Try to add an older entry
updated := false updated := false
@ -190,7 +193,7 @@ func TestSavedAddressesMetadata(t *testing.T) {
// Try to delete the sa2 newer entry // Try to delete the sa2 newer entry
updatedDeleteClock := updatedClock + 1 updatedDeleteClock := updatedClock + 1
updated, err = manager.DeleteSavedAddressIfNewerUpdate(sa2Newer.ChainID, sa2Newer.Address, updatedDeleteClock) updated, err = manager.DeleteSavedAddress(sa2Newer.Address, sa2Newer.ENSName, sa2Newer.IsTest, updatedDeleteClock)
require.NoError(t, err) require.NoError(t, err)
require.True(t, updated) require.True(t, updated)
@ -219,7 +222,6 @@ func TestSavedAddressesCleanSoftDeletes(t *testing.T) {
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
sa := SavedAddress{ sa := SavedAddress{
Address: common.Address{byte(i)}, Address: common.Address{byte(i)},
ChainID: 777,
Name: "Test" + strconv.Itoa(i), Name: "Test" + strconv.Itoa(i),
Favourite: false, Favourite: false,
savedAddressMeta: savedAddressMeta{ savedAddressMeta: savedAddressMeta{
@ -245,3 +247,168 @@ func TestSavedAddressesCleanSoftDeletes(t *testing.T) {
}, },
)) ))
} }
func TestSavedAddressesGet(t *testing.T) {
manager, stop := setupTestSavedAddressesDB(t)
defer stop()
sa := SavedAddress{
Address: common.Address{1},
ENSName: "test.ens.eth",
IsTest: false,
savedAddressMeta: savedAddressMeta{
Removed: true,
},
}
err := manager.upsertSavedAddress(sa, nil)
require.NoError(t, err)
dbSavedAddresses, err := manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(dbSavedAddresses))
require.True(t, savedAddressDataIsEqual(sa, dbSavedAddresses[0]))
dbSavedAddresses, err = manager.GetSavedAddresses()
require.NoError(t, err)
require.Equal(t, 0, len(dbSavedAddresses))
}
func TestSavedAddressesDelete(t *testing.T) {
manager, stop := setupTestSavedAddressesDB(t)
defer stop()
sa0 := SavedAddress{
Address: common.Address{1},
IsTest: false,
}
err := manager.upsertSavedAddress(sa0, nil)
require.NoError(t, err)
rst, err := manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(rst))
require.True(t, savedAddressDataIsEqual(sa0, rst[0]))
// Modify IsTest flag, insert
sa1 := sa0
sa1.IsTest = !sa1.IsTest
err = manager.upsertSavedAddress(sa1, nil)
require.NoError(t, err)
// Delete s0, test that only s1 is left
updateClock := uint64(time.Now().Unix())
_, err = manager.DeleteSavedAddress(sa0.Address, sa0.ENSName, sa0.IsTest, updateClock)
require.NoError(t, err)
rst, err = manager.GetSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(rst))
require.True(t, savedAddressDataIsEqual(sa1, rst[0]))
// Test that we still have both addresses
rst, err = manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 2, len(rst))
// Delete s0 one more time with the same timestamp
deleted, err := manager.DeleteSavedAddress(sa0.Address, sa0.ENSName, sa0.IsTest, updateClock)
require.NoError(t, err)
require.False(t, deleted)
}
func testInsertSameAddressWithOneChange(t *testing.T, member int) {
manager, stop := setupTestSavedAddressesDB(t)
defer stop()
// Insert one address
sa := SavedAddress{
Address: common.Address{1},
ENSName: "test.ens.eth",
IsTest: true,
}
err := manager.upsertSavedAddress(sa, nil)
require.NoError(t, err)
rst, err := manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(rst))
require.True(t, savedAddressDataIsEqual(sa, rst[0]))
sa2 := sa
if member == isTestMember {
sa2.IsTest = !sa2.IsTest
} else if member == addressMember {
sa2.Address = common.Address{7}
} else if member == ensMember {
sa2.ENSName += "_"
} else {
t.Error("Unsupported member change. Please add it to the list")
}
err = manager.upsertSavedAddress(sa2, nil)
require.NoError(t, err)
rst, err = manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 2, len(rst))
// The order of records returned by GetRawSavedAddresses is not
// guaranteed to be the same as insertions, so swap indices if first record does not match
firstIndex := 0
secondIndex := 1
if rst[firstIndex] != sa {
firstIndex = 1
secondIndex = 0
}
require.True(t, savedAddressDataIsEqual(sa, rst[firstIndex]))
require.True(t, savedAddressDataIsEqual(sa2, rst[secondIndex]))
}
func TestSavedAddressesAddDifferentAddress(t *testing.T) {
testInsertSameAddressWithOneChange(t, addressMember)
}
func TestSavedAddressesAddDifferentIsTest(t *testing.T) {
testInsertSameAddressWithOneChange(t, isTestMember)
}
func TestSavedAddressesAddDifferentEns(t *testing.T) {
testInsertSameAddressWithOneChange(t, ensMember)
}
func TestSavedAddressesAddSame(t *testing.T) {
manager, stop := setupTestSavedAddressesDB(t)
defer stop()
// Insert one address
sa := SavedAddress{
Address: common.Address{1},
ENSName: "test.ens.eth",
IsTest: true,
}
err := manager.upsertSavedAddress(sa, nil)
require.NoError(t, err)
rst, err := manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(rst))
require.True(t, savedAddressDataIsEqual(sa, rst[0]))
sa2 := sa
err = manager.upsertSavedAddress(sa2, nil)
require.NoError(t, err)
rst, err = manager.GetRawSavedAddresses()
require.NoError(t, err)
require.Equal(t, 1, len(rst))
}

View File

@ -1,9 +1,7 @@
package transfer package transfer
import ( import (
"io/ioutil"
"math/big" "math/big"
"os"
"testing" "testing"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -16,13 +14,10 @@ import (
) )
func setupTestTransactionDB(t *testing.T) (*TransactionManager, func()) { func setupTestTransactionDB(t *testing.T) (*TransactionManager, func()) {
tmpfile, err := ioutil.TempFile("", "wallet-transactions-tests-") db, err := appdatabase.InitializeDB(sqlite.InMemoryPath, "wallet-tests", sqlite.ReducedKDFIterationsNumber)
require.NoError(t, err)
db, err := appdatabase.InitializeDB(tmpfile.Name(), "wallet-tests", sqlite.ReducedKDFIterationsNumber)
require.NoError(t, err) require.NoError(t, err)
return &TransactionManager{db, nil, nil, nil, nil}, func() { return &TransactionManager{db, nil, nil, nil, nil}, func() {
require.NoError(t, db.Close()) require.NoError(t, db.Close())
require.NoError(t, os.Remove(tmpfile.Name()))
} }
} }

View File

@ -20,7 +20,7 @@ const (
// WALMode for sqlite. // WALMode for sqlite.
WALMode = "wal" WALMode = "wal"
inMemoryPath = ":memory:" InMemoryPath = ":memory:"
) )
// DecryptDB completely removes the encryption from the db // DecryptDB completely removes the encryption from the db
@ -108,7 +108,7 @@ func openDB(path string, key string, kdfIterationsNumber int) (*sql.DB, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if mode != WALMode && path != inMemoryPath { if mode != WALMode && path != InMemoryPath {
return nil, fmt.Errorf("unable to set journal_mode to WAL. actual mode %s", mode) return nil, fmt.Errorf("unable to set journal_mode to WAL. actual mode %s", mode)
} }