diff --git a/go.mod b/go.mod index 2a3a2fc2..ca835359 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/slack-go/slack v0.12.2 github.com/spf13/viper v1.16.0 - github.com/status-im/status-go v0.174.7-0.20240222013825-0aeaf82915d8 + github.com/status-im/status-go v0.177.1-0.20240502181839-d59ff96b54fa github.com/stretchr/testify v1.8.4 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a github.com/vincent-petithory/dataurl v1.0.0 @@ -165,7 +165,7 @@ require ( github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect - github.com/jellydator/ttlcache/v3 v3.1.0 // indirect + github.com/jellydator/ttlcache/v3 v3.2.0 // indirect github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a // indirect github.com/jmoiron/sqlx v1.3.5 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -315,7 +315,7 @@ require ( github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/waku-org/go-discover v0.0.0-20240129014929-85f2c00b96a3 // indirect github.com/waku-org/go-libp2p-rendezvous v0.0.0-20230628220917-7b4e5ae4c0e7 // indirect - github.com/waku-org/go-waku v0.8.1-0.20240220211751-9bb2c8e39680 // indirect + github.com/waku-org/go-waku v0.8.1-0.20240322182925-dd81e1d46971 // indirect github.com/waku-org/go-zerokit-rln v0.1.14-0.20240102145250-fa738c0bdf59 // indirect github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b // indirect github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 // indirect diff --git a/go.sum b/go.sum index f57bf4cc..6deaa4ae 100644 --- a/go.sum +++ b/go.sum @@ -1420,8 +1420,8 @@ github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABo github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -github.com/jellydator/ttlcache/v3 v3.1.0 h1:0gPFG0IHHP6xyUyXq+JaD8fwkDCqgqwohXNJBcYE71g= -github.com/jellydator/ttlcache/v3 v3.1.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4= +github.com/jellydator/ttlcache/v3 v3.2.0 h1:6lqVJ8X3ZaUwvzENqPAobDsXNExfUJd61u++uW8a3LE= +github.com/jellydator/ttlcache/v3 v3.2.0/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= @@ -2418,8 +2418,8 @@ github.com/status-im/rendezvous v1.3.7 h1:rZGWsFCjPV3MWeUkLkZSOGTAvyRf+rxx5hnEGL github.com/status-im/rendezvous v1.3.7/go.mod h1:r0vCbQJByTteMajN0f+Mcet/Vd7uAXxFPfewNpI2iXQ= github.com/status-im/resize v0.0.0-20201215164250-7c6d9f0d3088 h1:ClCAP2FPCvl8hGMhbUx/tq/sOu2wibztAa5jAvQEe4Q= github.com/status-im/resize v0.0.0-20201215164250-7c6d9f0d3088/go.mod h1:+92j1tN27DypDeBFxkg0uzkqfh1bNHTZe3Bv2PjvxpM= -github.com/status-im/status-go v0.174.7-0.20240222013825-0aeaf82915d8 h1:vjCXgZTfsIAibudrQyMVRzdKRrHKSptxFsP4Mjt5I/E= -github.com/status-im/status-go v0.174.7-0.20240222013825-0aeaf82915d8/go.mod h1:8M6g7DyP9Y0zE/I9KY/v/v7ZqNIsF/3pBb8LSjE6Hl4= +github.com/status-im/status-go v0.177.1-0.20240502181839-d59ff96b54fa h1:KgvJynkucsTM0XuQ4fIZ9tThEjkAlZtzMwX5yMCa86M= +github.com/status-im/status-go v0.177.1-0.20240502181839-d59ff96b54fa/go.mod h1:UfDzdoAlPk2Kt+TM4opcsH/rdW/Zanh5FelcZyRbmRw= github.com/status-im/status-go/extkeys v1.1.2 h1:FSjARgDathJ3rIapJt851LsIXP9Oyuu2M2jPJKuzloU= github.com/status-im/status-go/extkeys v1.1.2/go.mod h1:hCmFzb2jiiVF2voZKYbzuhOQiHHCmyLJsZJXrFFg7BY= github.com/status-im/tcp-shaker v1.1.1-status h1:TnVeeWlq2SKCWotHc4Vi6qZQfY8TTe3VLmu1xpEFYhg= @@ -2550,8 +2550,8 @@ github.com/waku-org/go-discover v0.0.0-20240129014929-85f2c00b96a3 h1:Kk0KYXZE/u github.com/waku-org/go-discover v0.0.0-20240129014929-85f2c00b96a3/go.mod h1:eBHgM6T4EG0RZzxpxKy+rGz/6Dw2Nd8DWxS0lm9ESDw= github.com/waku-org/go-libp2p-rendezvous v0.0.0-20230628220917-7b4e5ae4c0e7 h1:0e1h+p84yBp0IN7AqgbZlV7lgFBjm214lgSOE7CeJmE= github.com/waku-org/go-libp2p-rendezvous v0.0.0-20230628220917-7b4e5ae4c0e7/go.mod h1:pFvOZ9YTFsW0o5zJW7a0B5tr1owAijRWJctXJ2toL04= -github.com/waku-org/go-waku v0.8.1-0.20240220211751-9bb2c8e39680 h1:WGPMcGDmW7q9ZPoD5V53T1ak36/qo1rYLE9bv4g5BVY= -github.com/waku-org/go-waku v0.8.1-0.20240220211751-9bb2c8e39680/go.mod h1:RjTvkTrIwpoT1cM9HeQqwa2Q7t7WOkb3hpuB/zuZ6SM= +github.com/waku-org/go-waku v0.8.1-0.20240322182925-dd81e1d46971 h1:HSR8JmscSmCtpIAzFO5sNZRyYZbO8nw7rGM3QcC9bak= +github.com/waku-org/go-waku v0.8.1-0.20240322182925-dd81e1d46971/go.mod h1:RjTvkTrIwpoT1cM9HeQqwa2Q7t7WOkb3hpuB/zuZ6SM= github.com/waku-org/go-zerokit-rln v0.1.14-0.20240102145250-fa738c0bdf59 h1:jisj+OCI6QydLtFq3Pyhu49wl9ytPN7oAHjMfepHDrA= github.com/waku-org/go-zerokit-rln v0.1.14-0.20240102145250-fa738c0bdf59/go.mod h1:1PdBdPzyTaKt3VnpAHk3zj+r9dXPFOr3IHZP9nFle6E= github.com/waku-org/go-zerokit-rln-apple v0.0.0-20230916172309-ee0ee61dde2b h1:KgZVhsLkxsj5gb/FfndSCQu6VYwALrCOgYI3poR95yE= diff --git a/vendor/github.com/jellydator/ttlcache/v3/cache.go b/vendor/github.com/jellydator/ttlcache/v3/cache.go index 93943da2..1ad3afbe 100644 --- a/vendor/github.com/jellydator/ttlcache/v3/cache.go +++ b/vendor/github.com/jellydator/ttlcache/v3/cache.go @@ -148,6 +148,10 @@ func (c *Cache[K, V]) set(key K, value V, ttl time.Duration) *Item[K, V] { c.evict(EvictionReasonCapacityReached, c.items.lru.Back()) } + if ttl == PreviousOrDefaultTTL { + ttl = c.options.ttl + } + // create a new item item := newItem(key, value, ttl, c.options.enableVersionTracking) elem = c.items.lru.PushFront(item) @@ -478,6 +482,13 @@ func (c *Cache[K, V]) Items() map[K]*Item[K, V] { // Range stops the iteration. func (c *Cache[K, V]) Range(fn func(item *Item[K, V]) bool) { c.items.mu.RLock() + + // Check if cache is empty + if c.items.lru.Len() == 0 { + c.items.mu.RUnlock() + return + } + for item := c.items.lru.Front(); item != c.items.lru.Back().Next(); item = item.Next() { i := item.Value.(*Item[K, V]) c.items.mu.RUnlock() diff --git a/vendor/github.com/jellydator/ttlcache/v3/item.go b/vendor/github.com/jellydator/ttlcache/v3/item.go index 72568e07..c3c26cf6 100644 --- a/vendor/github.com/jellydator/ttlcache/v3/item.go +++ b/vendor/github.com/jellydator/ttlcache/v3/item.go @@ -9,6 +9,10 @@ const ( // NoTTL indicates that an item should never expire. NoTTL time.Duration = -1 + // PreviousOrDefaultTTL indicates that existing TTL of item should be used + // default TTL will be used as fallback if item doesn't exist + PreviousOrDefaultTTL time.Duration = -2 + // DefaultTTL indicates that the default TTL value of the cache // instance should be used. DefaultTTL time.Duration = 0 @@ -58,17 +62,23 @@ func (item *Item[K, V]) update(value V, ttl time.Duration) { defer item.mu.Unlock() item.value = value + + // update version if enabled + if item.version > -1 { + item.version++ + } + + // no need to update ttl or expiry in this case + if ttl == PreviousOrDefaultTTL { + return + } + item.ttl = ttl // reset expiration timestamp because the new TTL may be // 0 or below item.expiresAt = time.Time{} item.touchUnsafe() - - // update version if enabled - if item.version > -1 { - item.version++ - } } // touch updates the item's expiration timestamp. diff --git a/vendor/github.com/status-im/status-go/account/onboarding.go b/vendor/github.com/status-im/status-go/account/onboarding.go index 88551471..7f117dcc 100644 --- a/vendor/github.com/status-im/status-go/account/onboarding.go +++ b/vendor/github.com/status-im/status-go/account/onboarding.go @@ -89,10 +89,8 @@ func (o *Onboarding) generateAccount(mnemonicPhraseLength int) (*OnboardingAccou ChatPubKey: walletPubKey, } - uuid := uuid.NewRandom().String() - account := &OnboardingAccount{ - ID: uuid, + ID: uuid.NewRandom().String(), mnemonic: mnemonicPhrase, Info: info, } diff --git a/vendor/github.com/status-im/status-go/account/utils.go b/vendor/github.com/status-im/status-go/account/utils.go index c33e6553..7c6ae3b3 100644 --- a/vendor/github.com/status-im/status-go/account/utils.go +++ b/vendor/github.com/status-im/status-go/account/utils.go @@ -1,7 +1,6 @@ package account import ( - "encoding/json" "errors" "fmt" @@ -32,37 +31,6 @@ func (e *ErrZeroAddress) Error() string { return fmt.Sprintf("%s contains an empty address", e.field) } -func newErrZeroAddress(field string) *ErrZeroAddress { - return &ErrZeroAddress{ - field: field, - } -} - -func ParseLoginParams(paramsJSON string) (LoginParams, error) { - var ( - params LoginParams - zeroAddress types.Address - ) - if err := json.Unmarshal([]byte(paramsJSON), ¶ms); err != nil { - return params, err - } - - if params.ChatAddress == zeroAddress { - return params, newErrZeroAddress("ChatAddress") - } - - if params.MainAccount == zeroAddress { - return params, newErrZeroAddress("MainAccount") - } - - for _, address := range params.WatchAddresses { - if address == zeroAddress { - return params, newErrZeroAddress("WatchAddresses") - } - } - return params, nil -} - // Info contains wallet and chat addresses and public keys of an account. type Info struct { WalletAddress string diff --git a/vendor/github.com/status-im/status-go/api/default_networks.go b/vendor/github.com/status-im/status-go/api/default_networks.go index e4631bcc..8ac9ae8a 100644 --- a/vendor/github.com/status-im/status-go/api/default_networks.go +++ b/vendor/github.com/status-im/status-go/api/default_networks.go @@ -45,11 +45,11 @@ var mainnet = params.Network{ var goerli = params.Network{ ChainID: goerliChainID, ChainName: "Ethereum Goerli", - RPCURL: "https://goerli-archival.rpc.grove.city/v1/", - FallbackURL: "https://goerli.infura.io/v3/", + RPCURL: "https://goerli.infura.io/v3/", + FallbackURL: "", BlockExplorerURL: "https://goerli.etherscan.io/", IconURL: "network/Network=Testnet", - ChainColor: "#939BA1", + ChainColor: "#627EEA", ShortName: "goEth", NativeCurrencyName: "Ether", NativeCurrencySymbol: "ETH", @@ -63,11 +63,11 @@ var goerli = params.Network{ var sepolia = params.Network{ ChainID: sepoliaChainID, ChainName: "Ethereum Sepolia", - RPCURL: "https://sepolia-archival.rpc.grove.city/v1/", - FallbackURL: "https://sepolia.infura.io/v3/", + RPCURL: "https://sepolia.infura.io/v3/", + FallbackURL: "", BlockExplorerURL: "https://sepolia.etherscan.io/", IconURL: "network/Network=Testnet", - ChainColor: "#51D0F0", + ChainColor: "#627EEA", ShortName: "eth", NativeCurrencyName: "Ether", NativeCurrencySymbol: "ETH", @@ -103,7 +103,7 @@ var optimismGoerli = params.Network{ FallbackURL: "", BlockExplorerURL: "https://goerli-optimism.etherscan.io/", IconURL: "network/Network=Testnet", - ChainColor: "#939BA1", + ChainColor: "#E90101", ShortName: "goOpt", NativeCurrencyName: "Ether", NativeCurrencySymbol: "ETH", @@ -121,7 +121,7 @@ var optimismSepolia = params.Network{ FallbackURL: "", BlockExplorerURL: "https://sepolia-optimism.etherscan.io/", IconURL: "network/Network=Testnet", - ChainColor: "#939BA1", + ChainColor: "#E90101", ShortName: "opt", NativeCurrencyName: "Ether", NativeCurrencySymbol: "ETH", @@ -157,7 +157,7 @@ var arbitrumGoerli = params.Network{ FallbackURL: "", BlockExplorerURL: "https://goerli.arbiscan.io/", IconURL: "network/Network=Testnet", - ChainColor: "#939BA1", + ChainColor: "#51D0F0", ShortName: "goArb", NativeCurrencyName: "Ether", NativeCurrencySymbol: "ETH", diff --git a/vendor/github.com/status-im/status-go/api/defaults.go b/vendor/github.com/status-im/status-go/api/defaults.go index 24f3d8e3..1b6f81a6 100644 --- a/vendor/github.com/status-im/status-go/api/defaults.go +++ b/vendor/github.com/status-im/status-go/api/defaults.go @@ -27,23 +27,7 @@ const defaultKeycardPairingDataFile = "/ethereum/mainnet_rpc/keycard/pairings.js var paths = []string{pathWalletRoot, pathEIP1581, pathDefaultChat, pathDefaultWallet} -const ( - statusProdFleet = "status.prod" - statusTestFleet = "status.test" - wakuv2ProdFleet = "wakuv2.prod" - wakuv2TestFleet = "wakuv2.test" - shardsTest = "shards.test" -) - -var DefaultWakuNodes = map[string][]string{ - statusProdFleet: []string{"enrtree://AL65EKLJAUXKKPG43HVTML5EFFWEZ7L4LOKTLZCLJASG4DSESQZEC@prod.status.nodes.status.im"}, - statusTestFleet: []string{"enrtree://AIO6LUM3IVWCU2KCPBBI6FEH2W42IGK3ASCZHZGG5TIXUR56OGQUO@test.status.nodes.status.im"}, - wakuv2ProdFleet: []string{"enrtree://ANEDLO25QVUGJOUTQFRYKWX6P4Z4GKVESBMHML7DZ6YK4LGS5FC5O@prod.wakuv2.nodes.status.im"}, - wakuv2TestFleet: []string{"enrtree://AO47IDOLBKH72HIZZOXQP6NMRESAN7CHYWIBNXDXWRJRZWLODKII6@test.wakuv2.nodes.status.im"}, - shardsTest: []string{"enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.test.shards.nodes.status.im"}, -} - -var DefaultFleet = shardsTest +var DefaultFleet = params.FleetShardsTest func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derivedAddresses map[string]generator.AccountInfo, mnemonic *string) (*settings.Settings, error) { chatKeyString := derivedAddresses[pathDefaultChat].PublicKey @@ -83,6 +67,7 @@ func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derive s.UseMailservers = true s.PreviewPrivacy = true + s.PeerSyncingEnabled = false s.Currency = "usd" s.LinkPreviewRequestEnabled = true @@ -125,7 +110,6 @@ func SetFleet(fleet string, nodeConfig *params.NodeConfig) error { DiscoveryLimit: 20, Host: "0.0.0.0", AutoUpdate: true, - PeerExchange: true, } clusterConfig, err := params.LoadClusterConfigFromFleet(fleet) @@ -134,10 +118,10 @@ func SetFleet(fleet string, nodeConfig *params.NodeConfig) error { } nodeConfig.ClusterConfig = *clusterConfig nodeConfig.ClusterConfig.Fleet = fleet - nodeConfig.ClusterConfig.WakuNodes = DefaultWakuNodes[fleet] - nodeConfig.ClusterConfig.DiscV5BootstrapNodes = DefaultWakuNodes[fleet] + nodeConfig.ClusterConfig.WakuNodes = params.DefaultWakuNodes(fleet) + nodeConfig.ClusterConfig.DiscV5BootstrapNodes = params.DefaultWakuNodes(fleet) - if fleet == shardsTest { + if fleet == params.FleetShardsTest { nodeConfig.ClusterConfig.ClusterID = shardsTestClusterID nodeConfig.WakuV2Config.UseShardAsDefaultTopic = true } @@ -202,7 +186,7 @@ func buildWalletConfig(request *requests.WalletSecretsConfig) params.WalletConfi return walletConfig } -func defaultNodeConfig(installationID string, request *requests.CreateAccount) (*params.NodeConfig, error) { +func defaultNodeConfig(installationID string, request *requests.CreateAccount, opts ...params.Option) (*params.NodeConfig, error) { // Set mainnet nodeConfig := ¶ms.NodeConfig{} nodeConfig.NetworkID = request.NetworkID @@ -288,6 +272,12 @@ func defaultNodeConfig(installationID string, request *requests.CreateAccount) ( nodeConfig.Networks = BuildDefaultNetworks(request) + for _, opt := range opts { + if err := opt(nodeConfig); err != nil { + return nil, err + } + } + return nodeConfig, nil } diff --git a/vendor/github.com/status-im/status-go/api/geth_backend.go b/vendor/github.com/status-im/status-go/api/geth_backend.go index 10447caf..99451598 100644 --- a/vendor/github.com/status-im/status-go/api/geth_backend.go +++ b/vendor/github.com/status-im/status-go/api/geth_backend.go @@ -18,7 +18,6 @@ import ( "github.com/imdario/mergo" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" ethcrypto "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" @@ -49,7 +48,6 @@ import ( "github.com/status-im/status-go/services/ext" "github.com/status-im/status-go/services/personal" "github.com/status-im/status-go/services/typeddata" - wcommon "github.com/status-im/status-go/services/wallet/common" "github.com/status-im/status-go/signal" "github.com/status-im/status-go/transactions" "github.com/status-im/status-go/walletdatabase" @@ -624,20 +622,7 @@ func (b *GethStatusBackend) loginAccount(request *requests.Login) error { defaultCfg.WalletConfig = buildWalletConfig(&request.WalletSecretsConfig) - settings, err := b.GetSettings() - if err != nil { - return err - } - - var fleet string - fleetPtr := settings.Fleet - if fleetPtr == nil || *fleetPtr == "" { - fleet = DefaultFleet - } else { - fleet = *fleetPtr - } - - err = SetFleet(fleet, defaultCfg) + err = b.UpdateNodeConfigFleet(acc, password, defaultCfg) if err != nil { return err } @@ -705,7 +690,41 @@ func (b *GethStatusBackend) loginAccount(request *requests.Login) error { } return nil +} +// UpdateNodeConfigFleet loads the fleet from the settings and updates the node configuration +// If the fleet in settings is empty, or not supported anymore, it will be overridden with the default fleet. +// In that case settings fleet value remain the same, only runtime node configuration is updated. +func (b *GethStatusBackend) UpdateNodeConfigFleet(acc multiaccounts.Account, password string, config *params.NodeConfig) error { + if config == nil { + return nil + } + + err := b.ensureDBsOpened(acc, password) + if err != nil { + return err + } + + accountSettings, err := b.GetSettings() + if err != nil { + return err + } + + fleet := accountSettings.GetFleet() + + if !params.IsFleetSupported(fleet) { + b.log.Warn("fleet is not supported, overriding with default value", + "fleet", fleet, + "defaultFleet", DefaultFleet) + fleet = DefaultFleet + } + + err = SetFleet(fleet, config) + if err != nil { + return err + } + + return nil } func (b *GethStatusBackend) startNodeWithAccount(acc multiaccounts.Account, password string, inputNodeCfg *params.NodeConfig) error { @@ -1279,7 +1298,7 @@ func (b *GethStatusBackend) GetKeyUIDByMnemonic(mnemonic string) (string, error) return info.KeyUID, nil } -func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizationColorClock uint64, request *requests.CreateAccount) (*multiaccounts.Account, error) { +func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizationColorClock uint64, request *requests.CreateAccount, opts ...params.Option) (*multiaccounts.Account, error) { keystoreDir := keystoreRelativePath b.UpdateRootDataDir(request.BackupDisabledDataDir) @@ -1363,7 +1382,7 @@ func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizati //settings.MnemonicWasNotShown = true } - nodeConfig, err := defaultNodeConfig(settings.InstallationID, request) + nodeConfig, err := defaultNodeConfig(settings.InstallationID, request, opts...) if err != nil { return nil, err } @@ -1411,12 +1430,12 @@ func (b *GethStatusBackend) generateOrImportAccount(mnemonic string, customizati return &account, nil } -func (b *GethStatusBackend) CreateAccountAndLogin(request *requests.CreateAccount) (*multiaccounts.Account, error) { +func (b *GethStatusBackend) CreateAccountAndLogin(request *requests.CreateAccount, opts ...params.Option) (*multiaccounts.Account, error) { if err := request.Validate(); err != nil { return nil, err } - return b.generateOrImportAccount("", 1, request) + return b.generateOrImportAccount("", 1, request, opts...) } func (b *GethStatusBackend) ConvertToRegularAccount(mnemonic string, currPassword string, newPassword string) error { @@ -1890,24 +1909,7 @@ func (b *GethStatusBackend) SendTransaction(sendArgs transactions.SendTxArgs, pa return hash, err } - hash, err = b.transactor.SendTransaction(sendArgs, verifiedAccount) - if err != nil { - return - } - - err = b.statusNode.PendingTracker().TrackPendingTransaction( - wcommon.ChainID(b.transactor.NetworkID()), - common.Hash(hash), - common.Address(sendArgs.From), - transactions.WalletTransfer, - transactions.AutoDelete, - ) - if err != nil { - log.Error("TrackPendingTransaction error", "error", err) - return - } - - return + return b.transactor.SendTransaction(sendArgs, verifiedAccount) } func (b *GethStatusBackend) SendTransactionWithChainID(chainID uint64, sendArgs transactions.SendTxArgs, password string) (hash types.Hash, err error) { @@ -1916,45 +1918,11 @@ func (b *GethStatusBackend) SendTransactionWithChainID(chainID uint64, sendArgs return hash, err } - hash, err = b.transactor.SendTransactionWithChainID(chainID, sendArgs, verifiedAccount) - if err != nil { - return - } - - err = b.statusNode.PendingTracker().TrackPendingTransaction( - wcommon.ChainID(b.transactor.NetworkID()), - common.Hash(hash), - common.Address(sendArgs.From), - transactions.WalletTransfer, - transactions.AutoDelete, - ) - if err != nil { - log.Error("TrackPendingTransaction error", "error", err) - return - } - - return + return b.transactor.SendTransactionWithChainID(chainID, sendArgs, verifiedAccount) } func (b *GethStatusBackend) SendTransactionWithSignature(sendArgs transactions.SendTxArgs, sig []byte) (hash types.Hash, err error) { - hash, err = b.transactor.BuildTransactionAndSendWithSignature(b.transactor.NetworkID(), sendArgs, sig) - if err != nil { - return - } - - err = b.statusNode.PendingTracker().TrackPendingTransaction( - wcommon.ChainID(b.transactor.NetworkID()), - common.Hash(hash), - common.Address(sendArgs.From), - transactions.WalletTransfer, - transactions.AutoDelete, - ) - if err != nil { - log.Error("TrackPendingTransaction error", "error", err) - return - } - - return + return b.transactor.BuildTransactionAndSendWithSignature(b.transactor.NetworkID(), sendArgs, sig) } // HashTransaction validate the transaction and returns new sendArgs and the transaction hash. diff --git a/vendor/github.com/status-im/status-go/appdatabase/migrations/bindata.go b/vendor/github.com/status-im/status-go/appdatabase/migrations/bindata.go index 0a156699..24fc8c52 100644 --- a/vendor/github.com/status-im/status-go/appdatabase/migrations/bindata.go +++ b/vendor/github.com/status-im/status-go/appdatabase/migrations/bindata.go @@ -105,7 +105,12 @@ // 1704281285_tokens_advanced_settings.up.sql (743B) // 1705338819_collectible_preferences.up.sql (590B) // 1706097653_migration_order_fix.up.sql (9.484kB) -// doc.go (74B) +// 1706955596_community_storenodes.up.sql (515B) +// 1708352924_add_peer_syncing_enabled_to_settings.up.sql (85B) +// 1708416025_make_sepolia_default.up.sql (81B) +// 1709203128_fix_chain_colors.up.sql (244B) +// 1709795716_migration_order_fix.up.sql (7.909kB) +// doc.go (94B) package migrations @@ -188,7 +193,7 @@ func _1640111208_dummyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -208,7 +213,7 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -228,7 +233,7 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -248,7 +253,7 @@ func _1644188994_recent_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -268,7 +273,7 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -288,7 +293,7 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -308,7 +313,7 @@ func _1647278782_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -328,7 +333,7 @@ func _1647862838_reset_last_backupUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -348,7 +353,7 @@ func _1647871652_add_settings_sync_clock_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -368,7 +373,7 @@ func _1647880168_add_torrent_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -388,7 +393,7 @@ func _1647882837_add_communities_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -408,7 +413,7 @@ func _1647956635_add_waku_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -428,7 +433,7 @@ func _1648554928_network_testUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -448,7 +453,7 @@ func _1649174829_add_visitble_tokenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -468,7 +473,7 @@ func _1649882262_add_derived_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -488,7 +493,7 @@ func _1650612625_add_community_message_archive_hashes_tableUpSql() (*asset, erro return nil, err } - info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -508,7 +513,7 @@ func _1650616788_add_communities_archives_info_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -528,7 +533,7 @@ func _1652715604_add_clock_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -548,7 +553,7 @@ func _1653037334_add_notifications_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -568,7 +573,7 @@ func _1654702119_add_mutual_contact_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -588,7 +593,7 @@ func _1655375270_add_clock_field_to_communities_settings_tableUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -608,7 +613,7 @@ func _1655385721_drop_networks_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -628,7 +633,7 @@ func _1655385724_networks_chaincolor_shortnameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -648,7 +653,7 @@ func _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -668,7 +673,7 @@ func _1655462032_create_bookmarks_deleted_at_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -688,7 +693,7 @@ func _1657617291_add_multi_transactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -708,7 +713,7 @@ func _1660134042_add_social_links_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -728,7 +733,7 @@ func _1660134060_settings_bioUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -748,7 +753,7 @@ func _1660134070_add_wakuv2_storeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -768,7 +773,7 @@ func _1660134072_waku2_store_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -788,7 +793,7 @@ func _1662365868_add_key_uid_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -808,7 +813,7 @@ func _1662447680_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -828,7 +833,7 @@ func _1662460056_move_favourites_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -848,7 +853,7 @@ func _1662738097_add_base_fee_transactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -868,7 +873,7 @@ func _1662972194_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -888,7 +893,7 @@ func _1664392661_add_third_party_id_to_waku_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -908,7 +913,7 @@ func _1664783660_add_sync_info_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -928,7 +933,7 @@ func _1668109917_wakunodesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -948,7 +953,7 @@ func _1670249678_display_name_to_settings_sync_clock_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -968,7 +973,7 @@ func _1670836810_add_imported_flag_to_community_archive_hashesUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -988,7 +993,7 @@ func _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1008,7 +1013,7 @@ func _1672933930_switcher_cardUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1028,7 +1033,7 @@ func _1674056187_add_price_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1048,7 +1053,7 @@ func _1674136690_ens_usernamesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1068,7 +1073,7 @@ func _1674232431_add_balance_historyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1088,7 +1093,7 @@ func _1676368933_keypairs_to_keycardsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1108,7 +1113,7 @@ func _1676951398_add_currency_format_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1128,7 +1133,7 @@ func _1676968196_keycards_add_clock_columnUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1148,7 +1153,7 @@ func _1676968197_add_fallback_rpc_to_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1168,7 +1173,7 @@ func _1677674090_add_chains_ens_istest_to_saved_addressesUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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 } @@ -1188,7 +1193,7 @@ func _1677681143_accounts_table_type_column_updateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1677681143_accounts_table_type_column_update.up.sql", size: 135, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xc4, 0x6, 0x42, 0x50, 0x1d, 0xf4, 0x48, 0x55, 0xbc, 0xa2, 0x19, 0xdd, 0xad, 0xc8, 0xc, 0xa7, 0x30, 0xb6, 0xaf, 0xe, 0x2b, 0xaa, 0x2a, 0xa4, 0xe1, 0xb9, 0x41, 0x23, 0x66, 0xd3, 0x3}} return a, nil } @@ -1208,7 +1213,7 @@ func _1678264207_accounts_table_new_columns_addedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1678264207_accounts_table_new_columns_added.up.sql", size: 130, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xd4, 0xf3, 0x35, 0xef, 0x5c, 0x19, 0x3c, 0x15, 0x90, 0x60, 0xbd, 0x1f, 0x81, 0xf0, 0x86, 0x73, 0x89, 0xa0, 0x70, 0xf2, 0x46, 0xae, 0xea, 0xd0, 0xc6, 0x9e, 0x55, 0x4a, 0x54, 0x62, 0xbb}} return a, nil } @@ -1228,7 +1233,7 @@ func _1680770368_add_bio_to_settings_sync_clock_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1680770368_add_bio_to_settings_sync_clock_table.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x52, 0xf6, 0x3f, 0xaa, 0xd, 0xa0, 0xee, 0xe8, 0xe6, 0x16, 0x21, 0x80, 0x61, 0xe4, 0x7a, 0x4e, 0x37, 0x8d, 0x30, 0x51, 0x20, 0x4d, 0x15, 0x47, 0xfb, 0x6, 0xa1, 0xce, 0xc8, 0x27, 0x5a}} return a, nil } @@ -1248,7 +1253,7 @@ func _1681110436_add_mnemonic_to_settings_sync_clock_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1681110436_add_mnemonic_to_settings_sync_clock_table.up.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x74, 0x81, 0x7d, 0x9e, 0x77, 0xb6, 0xfe, 0xe3, 0xcb, 0x48, 0xe5, 0x5f, 0x39, 0x23, 0xa1, 0x7d, 0x53, 0x22, 0xe8, 0x96, 0x15, 0x8a, 0x1e, 0x8e, 0xbc, 0xe2, 0x1d, 0xc4, 0xc2, 0x56, 0x34}} return a, nil } @@ -1268,7 +1273,7 @@ func _1681392602_9d_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1681392602_9d_sync_period.up.sql", size: 60, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xa, 0x90, 0x29, 0x7f, 0x76, 0x98, 0xa7, 0x71, 0x80, 0x5a, 0x2f, 0xbe, 0x23, 0x9a, 0xd4, 0xf4, 0x39, 0x19, 0xd3, 0xa5, 0x34, 0x6e, 0x67, 0x6a, 0xbe, 0x8a, 0xad, 0x21, 0xc7, 0xba, 0x88}} return a, nil } @@ -1288,7 +1293,7 @@ func _1681762078_default_sync_period_9dUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1681762078_default_sync_period_9d.up.sql", size: 3002, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xd9, 0x26, 0xfc, 0xa9, 0x45, 0xc1, 0x81, 0xa8, 0xe2, 0x2c, 0xe9, 0x3c, 0xea, 0x1d, 0x37, 0x11, 0x45, 0x8c, 0x6c, 0xbc, 0xc2, 0x6, 0x69, 0x2, 0x75, 0x29, 0x40, 0x9f, 0xc5, 0xbb, 0x36}} return a, nil } @@ -1308,7 +1313,7 @@ func _1681780680_add_clock_to_social_links_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1681780680_add_clock_to_social_links_settings.up.sql", size: 137, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0x11, 0xf5, 0x41, 0xe5, 0x5a, 0xf4, 0xe3, 0xf3, 0x14, 0x87, 0x28, 0xd8, 0xf0, 0x52, 0x31, 0x8, 0xd5, 0xbb, 0xf4, 0xff, 0x55, 0x5f, 0x42, 0x90, 0xcb, 0xf7, 0x46, 0x2, 0x6, 0xbe, 0x42}} return a, nil } @@ -1328,7 +1333,7 @@ func _1682073779_settings_table_remove_latest_derived_path_columnUpSql() (*asset return nil, err } - info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1682073779_settings_table_remove_latest_derived_path_column.up.sql", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x36, 0x2, 0x41, 0xd, 0x5c, 0xd1, 0x92, 0x85, 0x6d, 0x84, 0xff, 0x67, 0xa7, 0x4c, 0x67, 0xa4, 0xef, 0x52, 0x69, 0x1f, 0x22, 0x25, 0x92, 0xc, 0xb3, 0x89, 0x50, 0x91, 0xc, 0x49, 0xf9}} return a, nil } @@ -1348,7 +1353,7 @@ func _1682146075_add_created_at_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1682146075_add_created_at_to_saved_addresses.up.sql", size: 107, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0xfe, 0x35, 0x9c, 0x6b, 0xdf, 0x67, 0x18, 0x16, 0xe4, 0xc9, 0xd4, 0x77, 0x7c, 0x4, 0xe2, 0x6c, 0x41, 0xd9, 0x53, 0x97, 0xfe, 0x5, 0xa3, 0x23, 0xce, 0x82, 0xad, 0x92, 0x5e, 0xd7, 0x7d}} return a, nil } @@ -1368,7 +1373,7 @@ func _1682393575_sync_ens_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1682393575_sync_ens_name.up.sql", size: 713, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0xea, 0xcb, 0x4d, 0x71, 0x5a, 0x49, 0x19, 0x8b, 0xef, 0x66, 0x27, 0x33, 0x89, 0xb0, 0xe, 0x37, 0x1b, 0x41, 0x8, 0x12, 0xcc, 0x56, 0xd8, 0x1b, 0xf, 0xf8, 0x50, 0x4b, 0x93, 0xf1, 0x29}} return a, nil } @@ -1388,7 +1393,7 @@ func _1683457503_add_blocks_ranges_sequential_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683457503_add_blocks_ranges_sequential_table.up.sql", size: 263, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1683457503_add_blocks_ranges_sequential_table.up.sql", size: 263, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x57, 0x2e, 0x0, 0x6a, 0x6e, 0xd7, 0xeb, 0xe6, 0x66, 0x79, 0x32, 0x22, 0x82, 0x92, 0xf4, 0xc9, 0xf1, 0x58, 0x1a, 0x45, 0x60, 0x77, 0x50, 0xe7, 0x54, 0x4a, 0xc0, 0x42, 0x3a, 0x4f, 0x35}} return a, nil } @@ -1408,7 +1413,7 @@ func _1683627613_accounts_and_keycards_improvementsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683627613_accounts_and_keycards_improvements.up.sql", size: 3640, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1683627613_accounts_and_keycards_improvements.up.sql", size: 3640, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xbe, 0x62, 0xf5, 0x9, 0x42, 0x8c, 0x8f, 0xa8, 0x45, 0xe7, 0x36, 0xc9, 0xde, 0xf4, 0xe2, 0xfd, 0xc4, 0x8, 0xd0, 0xa3, 0x8, 0x64, 0xe2, 0x56, 0xcc, 0xa7, 0x6d, 0xc5, 0xcc, 0x82, 0x2c}} return a, nil } @@ -1428,7 +1433,7 @@ func _1685041348_settings_table_add_latest_derived_path_columnUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1685041348_settings_table_add_latest_derived_path_column.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1685041348_settings_table_add_latest_derived_path_column.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xd4, 0x1b, 0xbf, 0x8, 0xf9, 0xd4, 0xb0, 0xa0, 0x6, 0x5b, 0xfb, 0x7e, 0xff, 0xfa, 0xbf, 0xcc, 0x64, 0x47, 0x81, 0x8b, 0x5e, 0x17, 0x6a, 0xa7, 0xa4, 0x35, 0x8f, 0x30, 0x4f, 0xd9, 0xd}} return a, nil } @@ -1448,7 +1453,7 @@ func _1685440989_update_color_id_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685440989_update_color_id_accounts.up.sql", size: 918, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1685440989_update_color_id_accounts.up.sql", size: 918, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x2e, 0x51, 0x1d, 0x2d, 0x16, 0x84, 0xd6, 0xe8, 0xbc, 0x20, 0x53, 0x47, 0xb8, 0x40, 0x21, 0x52, 0x5c, 0xd9, 0xbb, 0xea, 0xe2, 0xa5, 0x77, 0xc8, 0x35, 0x4c, 0xe0, 0x9d, 0x42, 0x44, 0x50}} return a, nil } @@ -1468,7 +1473,7 @@ func _1685463947_add_to_asset_to_multitransactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685463947_add_to_asset_to_multitransaction.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1685463947_add_to_asset_to_multitransaction.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd3, 0x66, 0x15, 0x10, 0xfa, 0x66, 0x81, 0x68, 0xd9, 0xb4, 0x93, 0x9e, 0x11, 0xed, 0x1d, 0x16, 0x9d, 0x5a, 0xf8, 0xd7, 0x8, 0xea, 0x7a, 0xaf, 0xe4, 0xb3, 0x22, 0x19, 0xca, 0xff, 0x75, 0x7c}} return a, nil } @@ -1488,7 +1493,7 @@ func _1685880973_add_profile_links_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685880973_add_profile_links_settings_table.up.sql", size: 1656, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1685880973_add_profile_links_settings_table.up.sql", size: 1656, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x13, 0x23, 0x7b, 0x1e, 0x82, 0x61, 0xcc, 0x76, 0xd6, 0xc7, 0x42, 0x6e, 0x69, 0x21, 0x1b, 0xfd, 0x7d, 0xda, 0xd7, 0xb7, 0xc7, 0xd3, 0x22, 0x63, 0xfe, 0xc6, 0xd3, 0xdf, 0xc8, 0x5f, 0x50, 0xcc}} return a, nil } @@ -1508,7 +1513,7 @@ func _1686041510_add_idx_transfers_blkno_loadedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686041510_add_idx_transfers_blkno_loaded.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1686041510_add_idx_transfers_blkno_loaded.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe2, 0x5d, 0x7e, 0x43, 0x14, 0x3c, 0x50, 0x44, 0x25, 0xd0, 0xe1, 0x75, 0xba, 0x61, 0x7b, 0x68, 0x2e, 0x43, 0x74, 0x1d, 0x10, 0x61, 0x8e, 0x45, 0xe6, 0x25, 0x78, 0x81, 0x68, 0x6, 0x24, 0x5b}} return a, nil } @@ -1528,7 +1533,7 @@ func _1686048341_transfers_receipt_json_blob_outUpSqlDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x6c, 0xd9, 0x76, 0x83, 0x64, 0xf0, 0xf2, 0x74, 0x97, 0xca, 0xd7, 0xaa, 0x4, 0x74, 0x7c, 0x34, 0x56, 0x88, 0x10, 0xa9, 0x4d, 0x1d, 0x8e, 0x85, 0xc3, 0x66, 0x1, 0x2b, 0x30, 0x90, 0xf4}} return a, nil } @@ -1548,7 +1553,7 @@ func _1686048341_transfers_receipt_json_blob_outUpSqlUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql", size: 1500, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1686048341_transfers_receipt_json_blob_out.up.sql.up.sql", size: 1500, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xcd, 0xe3, 0xa6, 0x8c, 0x53, 0x51, 0xe6, 0x3c, 0x64, 0xcb, 0x3, 0x3, 0xb, 0x4d, 0x52, 0xa5, 0x1c, 0xcc, 0xe1, 0x23, 0x94, 0x14, 0x79, 0xd7, 0x56, 0x58, 0xef, 0xcc, 0x1a, 0x6, 0xa4}} return a, nil } @@ -1568,7 +1573,7 @@ func _1686825075_cleanup_token_addressUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1686825075_cleanup_token_address.up.sql", size: 273, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1686825075_cleanup_token_address.up.sql", size: 273, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x14, 0x72, 0x10, 0xec, 0x97, 0xc9, 0x3a, 0xdb, 0x39, 0x33, 0xc9, 0x6, 0x92, 0xbe, 0xe4, 0xc2, 0x5c, 0xb6, 0xaa, 0xe5, 0x25, 0x21, 0x4d, 0x74, 0x18, 0x94, 0xc, 0x33, 0x2f, 0xa4, 0x9, 0x99}} return a, nil } @@ -1588,7 +1593,7 @@ func _1687193315_transfers_extract_from_to_addressDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.down.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x6c, 0xd9, 0x76, 0x83, 0x64, 0xf0, 0xf2, 0x74, 0x97, 0xca, 0xd7, 0xaa, 0x4, 0x74, 0x7c, 0x34, 0x56, 0x88, 0x10, 0xa9, 0x4d, 0x1d, 0x8e, 0x85, 0xc3, 0x66, 0x1, 0x2b, 0x30, 0x90, 0xf4}} return a, nil } @@ -1608,7 +1613,7 @@ func _1687193315_transfers_extract_from_to_addressUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.up.sql", size: 499, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1687193315_transfers_extract_from_to_address.up.sql", size: 499, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xef, 0xf4, 0x66, 0xac, 0x3a, 0xa6, 0xe3, 0x26, 0x43, 0x53, 0xe, 0xd8, 0xfe, 0xf2, 0xaa, 0x20, 0x8, 0x4e, 0x52, 0x49, 0x37, 0xbf, 0x46, 0xbf, 0x53, 0xa7, 0xcf, 0x27, 0x23, 0xab, 0x99}} return a, nil } @@ -1628,7 +1633,7 @@ func _1687249080_add_position_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687249080_add_position_accounts.up..sql", size: 2053, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1687249080_add_position_accounts.up..sql", size: 2053, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf3, 0x47, 0x9f, 0xb4, 0xe3, 0xc, 0x35, 0x15, 0x74, 0xc3, 0x72, 0x57, 0x9f, 0x3b, 0xc9, 0xd5, 0x9b, 0x31, 0xef, 0xd6, 0x21, 0xc4, 0x27, 0x8e, 0x37, 0xd5, 0x5, 0xdb, 0x3d, 0xcf, 0x37, 0xbb}} return a, nil } @@ -1648,7 +1653,7 @@ func _1687269871_add_device_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687269871_add_device_name.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1687269871_add_device_name.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x61, 0xf2, 0xf9, 0x78, 0x57, 0xc3, 0x57, 0xdb, 0x37, 0xe, 0x7, 0x15, 0xde, 0x5a, 0x2a, 0xb5, 0x86, 0xb8, 0x5, 0x48, 0x68, 0x2a, 0xb, 0x7c, 0xd, 0x60, 0xba, 0x67, 0x30, 0x2d, 0xa3}} return a, nil } @@ -1668,7 +1673,7 @@ func _1687506642_include_watch_only_account_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687506642_include_watch_only_account_setting.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1687506642_include_watch_only_account_setting.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xa0, 0x61, 0xf8, 0xb9, 0x15, 0x22, 0x9a, 0xca, 0x9b, 0x89, 0x96, 0x90, 0x47, 0x56, 0xf3, 0x21, 0xf6, 0xbd, 0xd1, 0xa1, 0x8f, 0xa8, 0x34, 0xc3, 0x54, 0x86, 0x69, 0x14, 0x96, 0xdb, 0xbb}} return a, nil } @@ -1688,7 +1693,7 @@ func _1688022264_add_include_watch_only_account_to_settings_sync_clockUpSql() (* return nil, err } - info := bindataFileInfo{name: "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1688022264_add_include_watch_only_account_to_settings_sync_clock.up.sql", size: 98, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0xa2, 0x31, 0xcc, 0x3d, 0x59, 0x1b, 0x26, 0x5b, 0x78, 0xd, 0x6a, 0x75, 0x2a, 0xe0, 0x2, 0x21, 0x28, 0x8c, 0x92, 0x24, 0x98, 0x86, 0xdd, 0x2, 0x53, 0xe8, 0xf6, 0xc2, 0x7d, 0x57, 0x13}} return a, nil } @@ -1708,7 +1713,7 @@ func _1688054680_add_columns_to_multitransactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1688054680_add_columns_to_multitransaction.up.sql", size: 342, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1688054680_add_columns_to_multitransaction.up.sql", size: 342, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0xbb, 0x88, 0xde, 0x98, 0x9e, 0xa8, 0xc0, 0xf7, 0x2b, 0xc4, 0x33, 0x77, 0xf5, 0x58, 0x46, 0x52, 0xc6, 0xc2, 0x27, 0x1d, 0x8, 0xc9, 0x83, 0xb6, 0x16, 0x31, 0x99, 0x15, 0xcb, 0xb1, 0x40}} return a, nil } @@ -1728,7 +1733,7 @@ func _1688636552_keycards_table_columns_updateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1688636552_keycards_table_columns_update.up.sql", size: 1051, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1688636552_keycards_table_columns_update.up.sql", size: 1051, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x82, 0x37, 0x82, 0xae, 0x44, 0x7f, 0x4d, 0xb5, 0x50, 0x1b, 0x5f, 0x2b, 0xaa, 0xb1, 0x3, 0x97, 0xba, 0x8b, 0xea, 0x30, 0x5, 0xa4, 0x1a, 0x2c, 0x7, 0x63, 0x89, 0x43, 0x12, 0xb6, 0xb7}} return a, nil } @@ -1748,7 +1753,7 @@ func _1689248269_add_related_chain_id_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689248269_add_related_chain_id_networks.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1689248269_add_related_chain_id_networks.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0xad, 0xde, 0xb5, 0xc7, 0x60, 0x1a, 0x99, 0x7d, 0x51, 0x74, 0x43, 0x60, 0x17, 0x54, 0x82, 0xb6, 0xc6, 0x96, 0x1c, 0x43, 0x74, 0x6, 0x15, 0xd6, 0xa4, 0x2a, 0xd2, 0x1c, 0xeb, 0xdc, 0xb4}} return a, nil } @@ -1768,7 +1773,7 @@ func _1689340211_index_filter_columnsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689340211_index_filter_columns.up.sql", size: 633, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1689340211_index_filter_columns.up.sql", size: 633, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x83, 0xc8, 0x1, 0x8b, 0x85, 0x2b, 0xa7, 0x46, 0xfe, 0xe9, 0x9c, 0xaf, 0xec, 0x10, 0xe5, 0xec, 0x23, 0xd3, 0xf, 0xee, 0xad, 0xfb, 0xf1, 0xc7, 0xc, 0xbc, 0x14, 0xac, 0xf8, 0x3b, 0x5a, 0x9e}} return a, nil } @@ -1788,7 +1793,7 @@ func _1689498471_make_wallet_accounts_positions_non_negativeUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1689498471_make_wallet_accounts_positions_non_negative.up.sql", size: 1617, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1689498471_make_wallet_accounts_positions_non_negative.up.sql", size: 1617, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x8d, 0xfc, 0x64, 0x78, 0x7a, 0x55, 0x38, 0xc9, 0x1e, 0x71, 0x25, 0xe2, 0x81, 0xc8, 0x3b, 0x1d, 0xf, 0xe7, 0x1f, 0x67, 0xbf, 0x6, 0xf1, 0x6a, 0x56, 0xf, 0x30, 0xb1, 0xc5, 0xca, 0x19}} return a, nil } @@ -1808,7 +1813,7 @@ func _1689856991_add_soft_remove_column_for_keypairs_and_accountsUpSql() (*asset return nil, err } - info := bindataFileInfo{name: "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1689856991_add_soft_remove_column_for_keypairs_and_accounts.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0xfb, 0x7b, 0x9a, 0xee, 0xa4, 0x1f, 0x54, 0x81, 0x9c, 0x66, 0xd1, 0xde, 0x2d, 0xee, 0x8f, 0xb0, 0xc, 0x8, 0xb7, 0x1f, 0x5f, 0x28, 0x42, 0x75, 0x3, 0x19, 0xfb, 0xb5, 0x53, 0xa2, 0xcc}} return a, nil } @@ -1828,7 +1833,7 @@ func _1690225863_add_collectibles_ownership_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1690225863_add_collectibles_ownership_cache.up.sql", size: 327, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1690225863_add_collectibles_ownership_cache.up.sql", size: 327, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x2d, 0xfa, 0x52, 0x54, 0x3e, 0x6e, 0x50, 0x7a, 0xe0, 0x4d, 0xd1, 0x5b, 0x3a, 0xc7, 0xb6, 0x67, 0xe8, 0x82, 0xf0, 0xc4, 0xb5, 0xcc, 0x3b, 0xbf, 0x89, 0xe0, 0x1b, 0xbc, 0xa4, 0xa9, 0x68}} return a, nil } @@ -1848,7 +1853,7 @@ func _1690734354_add_preferred_chain_idsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1690734354_add_preferred_chain_ids.up.sql", size: 189, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1690734354_add_preferred_chain_ids.up.sql", size: 189, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xb4, 0x32, 0x89, 0xa1, 0xed, 0x19, 0x61, 0x1a, 0xdf, 0x72, 0x4c, 0x28, 0x5f, 0x87, 0x72, 0x33, 0xad, 0x9a, 0xc6, 0xaf, 0x6b, 0xaf, 0xa9, 0x70, 0xc7, 0x8a, 0x42, 0xe2, 0xac, 0x15, 0x2a}} return a, nil } @@ -1868,7 +1873,7 @@ func _1691173699_add_collectibles_and_collections_data_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1691173699_add_collectibles_and_collections_data_cache.up.sql", size: 1811, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1691173699_add_collectibles_and_collections_data_cache.up.sql", size: 1811, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x0, 0xf2, 0xaa, 0xa9, 0x56, 0x92, 0xb7, 0x3c, 0xd8, 0xbf, 0x4c, 0x42, 0x90, 0xdd, 0xb3, 0xb8, 0xca, 0x4a, 0xa1, 0x91, 0x29, 0x5, 0xf6, 0xb0, 0x75, 0x82, 0x98, 0x7e, 0x6d, 0x74, 0x15, 0xc3}} return a, nil } @@ -1888,7 +1893,7 @@ func _1691753758_move_wallet_tables_to_wallet_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753758_move_wallet_tables_to_wallet_db.up.sql", size: 603, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1691753758_move_wallet_tables_to_wallet_db.up.sql", size: 603, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x7f, 0xd9, 0x6f, 0x91, 0x37, 0x7a, 0x8f, 0xf4, 0xd6, 0xec, 0xd4, 0xb9, 0x8e, 0xc5, 0xeb, 0x1a, 0xfa, 0xd1, 0x4, 0x1, 0xff, 0x51, 0x23, 0xc, 0x96, 0xf2, 0x3c, 0x12, 0xa7, 0xf7, 0x33}} return a, nil } @@ -1908,7 +1913,7 @@ func _1691753800_pubsubtopic_keyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753800_pubsubtopic_key.up.sql", size: 767, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1691753800_pubsubtopic_key.up.sql", size: 767, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x42, 0x78, 0x4, 0x20, 0xa5, 0x62, 0xa1, 0xa5, 0x82, 0xa1, 0x41, 0x14, 0xaf, 0x5e, 0xe2, 0xc9, 0xcf, 0xad, 0x4b, 0x32, 0x6e, 0xc7, 0xac, 0x9f, 0xe0, 0xf, 0xe0, 0x3a, 0xa0, 0x67, 0x2d}} return a, nil } @@ -1928,7 +1933,7 @@ func _1693900971_add_profile_migration_needed_column_to_settings_tableUpSql() (* return nil, err } - info := bindataFileInfo{name: "1693900971_add_profile_migration_needed_column_to_settings_table.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1693900971_add_profile_migration_needed_column_to_settings_table.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x89, 0x89, 0x81, 0xf1, 0x1, 0x2d, 0xa6, 0x24, 0xba, 0x48, 0x1, 0x9a, 0x7a, 0xcf, 0xe0, 0xfd, 0x3f, 0xc6, 0xc2, 0xd9, 0xe2, 0xfc, 0x6f, 0x2f, 0x83, 0x16, 0x61, 0x8e, 0x89, 0x64, 0xef}} return a, nil } @@ -1948,7 +1953,7 @@ func _1694764094_add_original_to_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1694764094_add_original_to_networks.up.sql", size: 120, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1694764094_add_original_to_networks.up.sql", size: 120, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x64, 0xa0, 0xef, 0x4e, 0xf3, 0x1, 0xd5, 0x61, 0xcb, 0x83, 0xd2, 0xdf, 0x6a, 0x69, 0xee, 0x36, 0x0, 0x13, 0x94, 0x57, 0xb2, 0xa, 0x12, 0x28, 0x5c, 0x5, 0x69, 0x1a, 0xfd, 0xa0, 0x31, 0x6c}} return a, nil } @@ -1968,7 +1973,7 @@ func _1695974515_add_is_sepolia_enabled_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1695974515_add_is_sepolia_enabled_to_settings.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1695974515_add_is_sepolia_enabled_to_settings.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0x95, 0xa7, 0xbb, 0x64, 0x91, 0x4e, 0x66, 0x9c, 0xbd, 0x96, 0xbb, 0x79, 0x3d, 0xc4, 0x2d, 0x3a, 0x36, 0xb5, 0x35, 0xdb, 0x53, 0x45, 0xf2, 0xf3, 0x61, 0xac, 0xe3, 0x38, 0xe6, 0x73, 0x54}} return a, nil } @@ -1988,7 +1993,7 @@ func _1696259336_settings_add_url_unfurling_modeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1696259336_settings_add_url_unfurling_mode.up.sql", size: 160, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1696259336_settings_add_url_unfurling_mode.up.sql", size: 160, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x62, 0xf4, 0x5, 0x31, 0x4e, 0x35, 0xb5, 0xcd, 0x1a, 0xad, 0xdc, 0xcb, 0x4, 0x94, 0x16, 0x67, 0xc4, 0x8d, 0x6f, 0x63, 0xa6, 0x8f, 0xbf, 0xa5, 0x6, 0xfd, 0xbe, 0xb1, 0x7c, 0xe8, 0xa7}} return a, nil } @@ -2008,7 +2013,7 @@ func _1697123140_drop_include_watch_only_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1697123140_drop_include_watch_only_accounts.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1697123140_drop_include_watch_only_accounts.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xc9, 0xc7, 0xaf, 0x7b, 0xe4, 0x83, 0x5, 0xe1, 0xde, 0x83, 0xd9, 0xdd, 0xbe, 0xb6, 0x1d, 0x24, 0x5c, 0x19, 0x88, 0xad, 0xc1, 0x5c, 0xd1, 0x26, 0x84, 0x61, 0xce, 0x3a, 0x74, 0x3c, 0x8c}} return a, nil } @@ -2028,7 +2033,7 @@ func _1697123233_drop_include_watch_only_account_to_settings_sync_clockUpSql() ( return nil, err } - info := bindataFileInfo{name: "1697123233_drop_include_watch_only_account_to_settings_sync_clock.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1697123233_drop_include_watch_only_account_to_settings_sync_clock.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcd, 0xe9, 0x5b, 0xc9, 0xd2, 0x96, 0x18, 0x8e, 0x97, 0x13, 0x3b, 0x72, 0x2d, 0x8a, 0xa9, 0xa3, 0x32, 0x6, 0x17, 0xb, 0xd1, 0xd8, 0x44, 0x13, 0xde, 0xb6, 0xa3, 0xbf, 0xef, 0xf4, 0xf9, 0xff}} return a, nil } @@ -2048,7 +2053,7 @@ func _1697623289_add_omit_transfers_history_scan_to_settingsUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1697623289_add_omit_transfers_history_scan_to_settings.up.sql", size: 92, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1697623289_add_omit_transfers_history_scan_to_settings.up.sql", size: 92, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xf, 0x2e, 0x73, 0x46, 0xee, 0x96, 0x1d, 0xa6, 0x75, 0xde, 0x46, 0x19, 0xbd, 0x13, 0x3f, 0x41, 0xf3, 0x6a, 0xb4, 0x93, 0x85, 0x8b, 0xed, 0x19, 0xa1, 0x4f, 0x91, 0xa1, 0x8, 0x88, 0xe2}} return a, nil } @@ -2068,7 +2073,7 @@ func _1699577175_use_shardsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1699577175_use_shards.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1699577175_use_shards.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xc9, 0x51, 0x6d, 0x40, 0xb9, 0x96, 0xd2, 0xe3, 0xfc, 0xd8, 0xb1, 0xdf, 0xc7, 0x55, 0xf6, 0x63, 0xb4, 0xec, 0xc1, 0xe5, 0xb9, 0xcc, 0xa, 0xaa, 0xac, 0x49, 0x20, 0x7f, 0xdd, 0xa2, 0x71}} return a, nil } @@ -2088,7 +2093,7 @@ func _1700741911_clusteridUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700741911_clusterID.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "1700741911_clusterID.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x60, 0x13, 0x88, 0x61, 0x66, 0xe0, 0xf3, 0x38, 0x91, 0x1a, 0x91, 0xa7, 0x0, 0x7b, 0x32, 0x5e, 0x8, 0xa9, 0xb3, 0x76, 0x5, 0xeb, 0xf, 0x37, 0x85, 0xdf, 0x5c, 0xed, 0x34, 0x50, 0x9e}} return a, nil } @@ -2108,7 +2113,7 @@ func _1701084316_add_wallet_was_not_shown_to_keypairs_accountsUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1701084316_add_wallet_was_not_shown_to_keypairs_accounts.up.sql", size: 95, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1701084316_add_wallet_was_not_shown_to_keypairs_accounts.up.sql", size: 95, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0xe, 0x28, 0xdd, 0x95, 0xfb, 0xf4, 0xd2, 0xf4, 0xed, 0xd4, 0xdf, 0x14, 0xde, 0xa, 0x53, 0x60, 0x3, 0xa5, 0xbc, 0xd6, 0xdb, 0x7b, 0xd5, 0x62, 0x1c, 0xc3, 0xc6, 0xae, 0x8e, 0x4d, 0x85}} return a, nil } @@ -2128,7 +2133,7 @@ func _1701084317_add_mnemonic_was_not_shown_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1701084317_add_mnemonic_was_not_shown_to_settings.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1701084317_add_mnemonic_was_not_shown_to_settings.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xcd, 0xc9, 0x6b, 0x4, 0x7, 0xec, 0x71, 0x55, 0x7a, 0xce, 0x2f, 0xa4, 0xd3, 0xfb, 0x58, 0xcc, 0x5a, 0xa0, 0x19, 0xb1, 0x85, 0xb8, 0xa6, 0xcd, 0xcd, 0x5a, 0x5c, 0xa3, 0x39, 0xe5, 0x8e}} return a, nil } @@ -2148,7 +2153,7 @@ func _1701444172_token_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1701444172_token_preferences.up.sql", size: 511, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1701444172_token_preferences.up.sql", size: 511, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xe, 0x76, 0xb9, 0x1d, 0xd4, 0xf0, 0xa, 0x12, 0xd3, 0x3, 0x42, 0x1, 0x4, 0x25, 0x93, 0xab, 0xb8, 0x30, 0xff, 0x12, 0x91, 0x1e, 0xc1, 0x1a, 0x7a, 0xf8, 0xc5, 0xbc, 0x3e, 0x29, 0x5a}} return a, nil } @@ -2168,7 +2173,7 @@ func _1701961850_shards_testUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1701961850_shards_test.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "1701961850_shards_test.up.sql", size: 1276, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x72, 0x86, 0x27, 0x90, 0xff, 0x69, 0x70, 0xe4, 0xe3, 0x38, 0x57, 0x4b, 0x47, 0x33, 0xfb, 0xcd, 0xe2, 0xc9, 0x87, 0xd9, 0x6c, 0x92, 0xc3, 0x90, 0xf1, 0x4c, 0x41, 0xdc, 0x39, 0x16, 0x2a, 0x69}} return a, nil } @@ -2188,7 +2193,7 @@ func _1702395750_fix_enr_shards_testUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1702395750_fix_enr_shards_test.up.sql", size: 1234, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "1702395750_fix_enr_shards_test.up.sql", size: 1234, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x99, 0xd8, 0xc9, 0xe0, 0xf0, 0xe1, 0xf1, 0x77, 0xf, 0x5f, 0x97, 0xfc, 0x54, 0xd4, 0x8d, 0xc1, 0xa4, 0xbb, 0x4f, 0x5c, 0x50, 0x5d, 0xef, 0xb2, 0xa3, 0xc1, 0x13, 0x2, 0xbd, 0x9, 0x30}} return a, nil } @@ -2208,7 +2213,7 @@ func _1702999401_add_dns_discovery_urlUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1702999401_add_dns_discovery_url.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "1702999401_add_dns_discovery_url.up.sql", size: 284, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xec, 0x31, 0xf8, 0x99, 0xf5, 0xe2, 0xd1, 0xae, 0x95, 0x13, 0xbf, 0x73, 0x84, 0xd3, 0xd1, 0x90, 0x25, 0x9b, 0x3d, 0x9e, 0xd7, 0x55, 0x2, 0x7a, 0x61, 0x68, 0x6f, 0xca, 0x1e, 0x9d, 0x8f, 0x42}} return a, nil } @@ -2228,7 +2233,7 @@ func _1704281285_tokens_advanced_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1704281285_tokens_advanced_settings.up.sql", size: 743, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1704281285_tokens_advanced_settings.up.sql", size: 743, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x45, 0xa7, 0x62, 0x1f, 0x62, 0x24, 0x5c, 0x66, 0x97, 0x6, 0x49, 0xb7, 0x5d, 0x44, 0x9f, 0x13, 0xab, 0x64, 0x35, 0xc4, 0xfb, 0xa8, 0x3f, 0xee, 0x2f, 0x3f, 0x3e, 0x65, 0x33, 0xf6, 0x7b, 0xdc}} return a, nil } @@ -2248,7 +2253,7 @@ func _1705338819_collectible_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1705338819_collectible_preferences.up.sql", size: 590, mode: os.FileMode(0644), modTime: time.Unix(1705661902, 0)} + info := bindataFileInfo{name: "1705338819_collectible_preferences.up.sql", size: 590, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x9d, 0xd9, 0x5e, 0x8c, 0x57, 0x8e, 0x53, 0x1a, 0x7b, 0xc8, 0x7f, 0x1a, 0x1f, 0x61, 0x79, 0x67, 0x72, 0x77, 0x8d, 0x24, 0xe1, 0xe6, 0x2d, 0x78, 0xac, 0xa1, 0x97, 0x67, 0x5b, 0xb, 0xa4}} return a, nil } @@ -2268,12 +2273,112 @@ func _1706097653_migration_order_fixUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1706097653_migration_order_fix.up.sql", size: 9484, mode: os.FileMode(0644), modTime: time.Unix(1706279715, 0)} + info := bindataFileInfo{name: "1706097653_migration_order_fix.up.sql", size: 9484, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x5b, 0x3, 0x9c, 0xaf, 0xa5, 0xb0, 0x3f, 0x8e, 0xe3, 0x67, 0x86, 0xed, 0x92, 0xbc, 0x2d, 0xb3, 0xc8, 0x6e, 0x31, 0xf, 0x74, 0xdf, 0xf7, 0x2f, 0x26, 0x67, 0xf1, 0xe7, 0x35, 0x25, 0xb7}} 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 __1706955596_community_storenodesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x91\x4d\x4f\x32\x31\x14\x85\xf7\xfc\x8a\xb3\x84\x04\x92\x77\xfd\xba\xea\x40\x09\x13\xeb\xd4\x94\x22\xb2\x22\x95\x5e\xa5\xb1\x1f\x64\x5a\x30\xfc\x7b\x23\x24\x7c\x19\xdc\xde\xe7\x39\x67\x71\xee\x50\x71\xa6\x39\x34\xab\x04\x47\x3d\x46\x23\x35\xf8\x6b\x3d\xd5\x53\xac\x52\x08\xdb\xe8\xca\x7e\x99\x4b\x6a\x29\x26\x4b\x19\xdd\x0e\x80\x0b\xe4\x2c\x2a\x21\xab\x43\xae\x99\x09\xd1\x3f\xf0\x53\xe0\x87\xbf\x30\x35\x9c\x30\x75\xa3\x44\x13\xe8\x0e\x32\xd6\xb6\x94\xf3\x1d\xfa\xee\x89\xca\x1d\xb6\xa3\x36\xbb\x14\x51\x37\xfa\x86\xac\x7c\x5a\x7d\x5e\xdd\x31\xe2\x63\x36\x13\x1a\xff\x8e\x46\x4b\x21\xed\xc8\xa2\x92\x52\x70\xd6\xfc\xf6\xc6\x4c\x4c\xf9\xd1\xb5\xe4\xa9\x90\x5d\x9a\xf2\x67\xe5\xb3\xaa\x9f\x98\x5a\xe0\x91\x2f\xd0\xbd\xdc\xac\x7f\xb5\x50\x0f\x83\x01\x64\x24\x94\x84\x60\xe2\x1e\x2d\x79\x53\x5c\x8a\x79\xed\x36\x78\xa3\xf2\x45\x14\x4f\x9b\x3b\xca\x30\xd1\x9e\x1b\xf2\x7f\xa4\x48\xe7\x9f\x20\xb8\x8f\x75\xc1\xda\xec\x08\x61\xeb\x8b\xdb\x78\xba\xb0\x3b\x3d\xcc\x6b\x3d\x91\x33\x0d\x25\xe7\xf5\xe8\xe1\x3b\x00\x00\xff\xff\x88\x8f\xd5\xa1\x03\x02\x00\x00") + +func _1706955596_community_storenodesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1706955596_community_storenodesUpSql, + "1706955596_community_storenodes.up.sql", + ) +} + +func _1706955596_community_storenodesUpSql() (*asset, error) { + bytes, err := _1706955596_community_storenodesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1706955596_community_storenodes.up.sql", size: 515, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x52, 0x79, 0xe, 0xb1, 0xd3, 0xc6, 0x63, 0x2d, 0x21, 0xb, 0x70, 0xbd, 0x51, 0xc, 0x7, 0xd6, 0x57, 0xbc, 0x75, 0xc6, 0x2e, 0x8f, 0x53, 0xbd, 0x8f, 0xff, 0xb1, 0xe1, 0xde, 0x5e, 0xa6, 0x18}} + return a, nil +} + +var __1708352924_add_peer_syncing_enabled_to_settingsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\x4d\x0a\xc2\x40\x0c\x05\xe0\xbd\xa7\x78\xf7\x70\x95\x3a\xe9\xea\x99\x80\x66\xd6\xc5\x9f\x50\x0a\x12\xc4\xe9\xc6\xdb\xf7\x13\x86\xde\x10\x32\x51\x31\x72\xdf\xb7\x5a\x07\xa4\x35\x5c\x9c\xfd\x6a\xf8\x66\xfe\x96\xf1\xaf\xd7\x56\xeb\x92\xf5\x78\x7e\xf2\x8d\xc9\x9d\x2a\x06\xf3\x80\x75\x12\x4d\x67\xe9\x0c\xcc\xc2\xbb\x9e\x4f\x47\x00\x00\x00\xff\xff\x75\xdd\xb1\x90\x55\x00\x00\x00") + +func _1708352924_add_peer_syncing_enabled_to_settingsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708352924_add_peer_syncing_enabled_to_settingsUpSql, + "1708352924_add_peer_syncing_enabled_to_settings.up.sql", + ) +} + +func _1708352924_add_peer_syncing_enabled_to_settingsUpSql() (*asset, error) { + bytes, err := _1708352924_add_peer_syncing_enabled_to_settingsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708352924_add_peer_syncing_enabled_to_settings.up.sql", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x72, 0x80, 0xfb, 0x97, 0x97, 0xd8, 0xee, 0x5, 0xf5, 0xdb, 0x83, 0x8f, 0xe2, 0xa5, 0x4c, 0xbc, 0xa9, 0xf6, 0xc4, 0x93, 0x69, 0xdd, 0x85, 0x6c, 0xa1, 0x4c, 0xc6, 0xec, 0xac, 0x7e, 0xeb, 0xf6}} + return a, nil +} + +var __1708416025_make_sepolia_defaultUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\x41\x0a\x02\x31\x0c\x05\xd0\xab\xfc\x7b\xb8\xca\xd8\xcc\xea\x9b\x80\xa6\xeb\x41\x31\x0c\x85\x52\xc1\xf6\xfe\xcc\x13\x86\x3e\x11\xb2\x51\x31\x73\xad\x36\xce\x09\x29\x05\x77\x67\x7d\x18\xda\x3c\xce\x5f\xfe\x7b\x3b\x72\xbc\x3f\x3d\xbf\xd8\xdc\xa9\x62\x30\x0f\x58\x25\x51\x74\x97\xca\xc0\x2e\x7c\xe9\xed\x0a\x00\x00\xff\xff\x12\xd8\xb5\xbe\x51\x00\x00\x00") + +func _1708416025_make_sepolia_defaultUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708416025_make_sepolia_defaultUpSql, + "1708416025_make_sepolia_default.up.sql", + ) +} + +func _1708416025_make_sepolia_defaultUpSql() (*asset, error) { + bytes, err := _1708416025_make_sepolia_defaultUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708416025_make_sepolia_default.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0x1d, 0x8f, 0x1a, 0xbc, 0xe7, 0x98, 0xba, 0x6b, 0xcd, 0x86, 0xe7, 0x6f, 0xea, 0xfb, 0x92, 0x10, 0xdd, 0xae, 0xa0, 0xf, 0x14, 0x8b, 0x91, 0xd1, 0x92, 0x11, 0xcd, 0xe8, 0xa9, 0x63, 0x34}} + return a, nil +} + +var __1709203128_fix_chain_colorsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x0a\x0d\x70\x71\x0c\x71\x55\xc8\x4b\x2d\x29\xcf\x2f\xca\x2e\x56\x08\x76\x0d\x51\x48\xce\x48\xcc\xcc\x8b\x4f\xce\xcf\xc9\x2f\xb2\x55\x52\x36\x33\x32\x77\x75\x75\x54\x52\x08\xf7\x70\x0d\x72\x85\xca\x65\xa6\x28\x78\xfa\x29\x68\x18\xea\x28\x98\xea\x28\x18\x1a\x1a\x9a\x9a\x1a\x1a\x1a\x6a\x5a\x73\x11\x36\xcd\xd5\xd2\xc0\xd0\xc0\x10\xbb\x69\x06\x3a\x0a\x26\x46\x06\x50\x03\x4d\x8c\x0c\x88\x32\xd0\xd4\xd0\xc5\xc0\xcd\x00\xab\x81\x26\x46\x86\x66\x86\x20\x33\x0d\xcd\x0c\x8d\xa1\xb4\x89\xa6\x35\x17\x20\x00\x00\xff\xff\xe8\x77\x57\x6e\xf4\x00\x00\x00") + +func _1709203128_fix_chain_colorsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1709203128_fix_chain_colorsUpSql, + "1709203128_fix_chain_colors.up.sql", + ) +} + +func _1709203128_fix_chain_colorsUpSql() (*asset, error) { + bytes, err := _1709203128_fix_chain_colorsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1709203128_fix_chain_colors.up.sql", size: 244, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3, 0xd4, 0xb5, 0x34, 0x47, 0xd, 0x1, 0x93, 0x5f, 0x1a, 0x13, 0x65, 0xb8, 0xab, 0x9f, 0x4c, 0x43, 0xbc, 0x2, 0x98, 0xbc, 0x63, 0x28, 0xc2, 0xcb, 0x17, 0xee, 0xdb, 0x81, 0x51, 0xd1, 0x4f}} + return a, nil +} + +var __1709795716_migration_order_fixUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x59\x4d\x8f\xdb\xba\x15\xdd\xfb\x57\x10\xb3\x49\x1f\xe0\x07\x4c\x02\xb4\x69\x91\x95\x27\xa3\x24\x46\x1d\x3b\xf0\x78\x9a\x66\x45\xd0\xd4\xb5\x45\x98\x22\x55\x92\xb2\xe1\x7f\x5f\x90\xd4\xb7\x48\x5b\x93\x97\x95\x75\xc9\x4b\x51\xf7\xeb\x9c\x93\xf9\xbc\x4d\x16\xbb\x04\xed\x16\x4f\xab\x04\x3d\x68\x30\x86\x89\xa3\xfe\xf0\x80\xfe\x36\x43\x08\x21\x92\xa6\x0a\xb4\x46\xff\x59\x6c\x3f\x7f\x5b\x6c\xd1\x7a\xb3\x43\xeb\xd7\xd5\x6a\x8e\x68\x46\xa4\xc6\xb9\x4c\x01\x3d\x6d\x36\xab\x64\xb1\x46\xcf\xc9\x97\xc5\xeb\x6a\x87\x0e\x84\x6b\x98\x23\x5a\x2a\x05\x82\x5e\x1b\xe7\x7a\xfd\x5d\xa9\xd3\x77\xf5\xba\xc1\x02\xcc\x45\xaa\x53\xe8\x1d\xa5\x36\x32\xc7\x7b\x29\x8d\x90\x29\x68\xf4\xb4\xda\x3c\x8d\xcd\x18\x04\xd9\x73\x48\xab\xe5\x94\x14\x85\xc6\xf1\x9b\x03\x2b\xde\xff\xfd\x9f\xef\x87\x3b\xe6\xe8\xc0\x01\x4c\xfb\x98\xb1\x14\x70\x26\x73\xc0\x46\x4a\x6e\x58\x11\xfb\x50\x26\xb4\x21\x9c\x13\xc3\xa4\xc0\x2c\x0d\xbc\xf2\x04\x57\x5c\xc6\x56\x28\x51\x29\x76\x67\x08\x0a\xdd\x6d\xed\x6a\x41\x98\x82\x14\x4b\x81\x5e\xd7\x2f\xcb\xaf\xeb\xe4\x19\x3d\x2d\xbf\x2e\xd7\xbb\xfe\x16\x26\x8e\xad\x2f\x27\xda\xe0\xb2\x48\x89\x81\x74\xec\xc6\xe5\x11\x73\x38\x03\x6f\x1d\x72\x01\xb9\x14\x8c\xb6\x16\x41\x72\x08\xdc\xb9\x4a\x98\x4f\x47\xd7\x2e\x53\xc0\x54\x8a\x03\x3b\x56\xa9\x10\xd2\xb0\x03\xa3\x2e\x32\x9d\x34\x85\xc3\x58\x64\xd2\x48\x5c\x10\x93\x0d\x0f\x2e\x98\x10\x90\xe2\x9c\x30\xae\x41\x9d\x41\xd5\x95\x50\x28\x38\x80\xb2\xa1\xe9\x5e\xd5\xd9\xcf\x0c\x2e\xb8\x50\xec\x4c\xe8\x35\xfa\xc6\x72\xcf\x19\xc5\x27\xb8\x06\xbe\x52\x41\x0e\xf9\x1e\x14\xd6\x57\x41\x99\x38\x62\x9a\x49\x46\xa3\xd5\xae\xd9\x51\xd8\x5d\x45\xa6\x88\x0e\x45\x4d\x1b\x46\x4f\xa0\x34\x2e\x08\x3d\x69\x5c\x15\x4d\x53\xb5\xcd\xb2\x02\x6a\xbb\xa2\x7e\xae\x97\xab\x4b\x48\x81\x73\xb9\x67\x1c\x9a\xb6\x89\xdd\xe7\x2a\x4c\x06\x86\xd1\x6e\x45\x36\x1d\xc8\xd2\x77\xe8\xc7\x76\xf9\x7d\xb1\xfd\x85\xfe\x9d\xfc\x9a\xa3\x52\x83\xb2\x31\xac\xdf\x77\xb1\x77\x33\x58\x49\x69\x6e\xb4\x52\xb5\x4b\x83\xad\x34\x5c\x10\xad\xe3\xe9\xad\xf6\x9e\x99\x66\x7b\x6e\x7b\xea\x04\xa2\xd3\x7c\x83\xf0\x14\x20\x52\x5b\xce\xf5\x6d\x4e\xe5\xbd\xf2\x71\x7b\xf6\x5c\xca\x1c\x1f\x18\x37\xa0\x6e\x0e\x27\x52\x14\x40\x94\xed\x38\xb4\x5c\xef\x9a\x4f\x6a\xb6\x3d\xba\x02\x90\x06\x70\x51\xea\x0c\x4f\x2b\xe4\x2f\x8b\xd5\x4b\x32\x47\x1a\x44\x1a\x70\x1b\x6d\xdf\x6d\x5f\x13\x5b\x84\xa3\xf3\x7d\x91\xdf\x7b\x4d\xc0\xf1\xa0\x64\x6e\x3b\xd0\x10\x6a\x34\x96\x82\x8f\x4b\x3f\xee\xbc\xe7\x92\x9e\x70\x0e\x22\x7c\xdb\xca\xf1\x02\x7b\xd7\x5a\x84\x73\x79\xc1\x05\xa8\x9c\x69\x6d\x07\x9f\x82\xff\x95\xa0\x4d\xd4\xb1\xd4\xd0\xef\xe0\x60\x34\x38\x13\x27\x5c\xb7\x6f\x75\x64\x34\x10\x63\x97\x26\x37\x58\x33\x03\xed\x98\x90\x07\xdb\x32\x05\xa3\xa6\x54\xa0\x7d\x11\x32\xce\xcc\x35\x9c\xfd\xf7\x73\x44\x84\x6d\x35\x30\x8a\x51\x8d\x75\x26\x4b\x9e\x62\x9b\xd8\x58\x41\xe5\xa0\x35\x39\xc2\x5b\x72\x90\xc2\x81\x94\xdc\xb8\x01\x63\x23\xc9\x64\x6a\xaf\x93\x7c\x4d\xda\x4e\xfd\xf8\xf1\xe3\x3f\x1e\x1f\xe7\xe8\xcf\x3f\xd1\xbf\x50\x4a\xae\xda\xc1\x72\x0d\x9d\xb6\x6b\xb1\x36\xc4\x94\xcd\x9c\xb0\xb5\xe7\x2d\xd5\xf0\x8f\x45\xfa\xc8\x0e\xd5\xac\xa9\x7d\xad\xe5\x40\xce\x52\x75\x42\x27\x0b\x10\x1a\xc8\xdd\xd9\x3d\x8c\xb0\xce\xe4\x05\x1b\x19\x0d\xaf\x01\x0e\x36\xba\xd7\xba\xd8\x4b\xc5\x47\x03\xa6\x71\x78\x78\x98\xa3\x3d\xa1\xa7\xb2\xb8\x57\x0b\x16\xf4\xfc\xce\x68\x5f\x57\x07\x1d\xc0\xd0\x2c\xde\x5d\xa4\x34\x12\x57\x49\xbd\xd7\x89\x36\x70\xa4\x60\x0e\x48\x76\xc9\x7f\x03\xaf\xb5\x1f\x90\x32\x5d\x70\x72\xf5\x50\x15\xdf\x66\x6c\xc5\xd7\x10\x3b\x7a\xf3\xc8\xa5\xba\x42\x5e\x9a\x92\xf0\xba\xee\xee\x5d\x78\xcf\xe4\x8d\x1b\xd4\x44\x00\xdb\x09\x78\x9e\xf0\x72\x4e\xdc\xa5\x53\x50\xec\x0c\xa9\x87\xf0\x60\xf4\x1f\x1e\x6d\x1c\xe0\xcc\x28\xdc\x0b\x43\x05\x17\x84\x52\x59\x0a\xa3\x71\x21\x35\x73\x04\x8b\x66\x44\x1c\x01\x53\x3b\xad\x9a\x76\x09\xe5\xb9\xae\xc9\x9c\x1d\x95\xe7\x66\x02\x20\x9d\xf0\x39\xcc\x4e\xe0\x42\x72\x36\x2e\xfb\x98\x4b\xa9\x38\x2e\xc5\xa1\x54\xdc\x82\xb4\x03\x9e\x58\xe5\xcb\x9c\x19\x6c\x14\x11\xfa\x60\xe1\x2e\x63\xda\x48\xdb\x06\x94\x88\xfb\x59\xae\x33\x73\x21\xda\x4e\x6f\xd7\x66\xf7\xdd\xaa\x58\x3a\xc8\xc5\x9e\x33\x81\xa0\xa0\xa7\xc7\x32\x7a\xc2\x51\xc9\xb2\xc0\xfb\x2b\xa6\x32\xcf\x4b\x61\x27\xea\xc4\xdb\xb8\x09\xd1\x78\x61\xcb\x1d\x0c\xbe\x64\x20\xdc\x98\xb5\x61\xac\x28\x42\xf4\x5e\xbe\xe5\xab\xe3\xea\xee\x72\xe7\x68\xbc\x07\x0b\x4f\x7b\xc2\x1d\xc4\x4f\xbc\xd2\xad\x33\xb0\xc9\x14\xe8\x4c\xf2\x11\x99\x0e\x64\xf9\xb1\xfa\xd7\x9c\x4c\x25\xe7\x40\x8d\x63\x3e\x7f\x25\x01\xb1\x73\x3a\x69\xf0\x1b\xe4\xe4\xaa\x98\x70\xe4\xd4\xcc\x16\xd0\xa1\xcb\x53\x5b\x87\x69\x7c\x94\xa0\x38\x9b\xe8\x31\xfb\x03\xfd\x5c\xee\xbe\x6d\x5e\x77\x68\xbb\xf9\xb9\x7c\xfe\x34\x9b\x2d\xd7\x2f\xc9\x76\x67\xe3\xb7\x71\xf0\xd8\xc8\xd8\xbe\x8a\xed\x8a\xd6\x56\x9e\x8e\x84\xe8\x58\x60\xc6\x25\xe7\x40\x6d\x8e\xc4\x65\x25\x2a\x03\x62\x72\x24\x1b\x1b\x95\x18\x16\x85\x01\x31\x38\x12\x7f\x7d\xd1\xd7\x11\x79\xed\xe4\xf0\xa2\xae\xd5\x70\x3d\xd5\x16\x11\x6c\x5d\x69\x16\x12\x63\x43\x1d\x36\xd2\x5f\x5d\xa5\x15\x15\x56\x43\x09\x15\x57\x4c\x71\xb1\x74\x43\x27\xf5\x15\x51\x47\xf0\x04\xb5\x4e\x58\xda\x44\x44\x4c\x4c\xbc\xf4\x75\x4b\x4c\xa1\x74\xb5\xc8\x04\xd1\x11\x95\x17\x13\x94\xc4\x44\xcd\x30\x41\x1d\x4c\xd0\x01\x23\xc6\x7f\x9b\xdc\xdf\xe4\xf1\x37\x29\x7c\x9c\xab\xdf\x64\xe5\x41\xfe\x3d\x0f\x51\xeb\x20\xab\xee\x11\xe8\x01\x77\x1e\xd1\xe6\x38\x41\x0e\x33\xe1\x21\xdb\xed\x11\xdb\x21\x83\x0d\x73\xd5\x1e\x2b\xed\x93\xcf\x08\xc7\x8c\x91\x48\x47\x17\xc7\xac\x30\x48\xfb\x7a\xec\x6e\x22\x89\x8b\x33\xb5\x10\x15\x0b\x71\xad\x9b\xa4\xea\xcd\x84\x63\x12\x1d\x78\x23\x67\x78\x13\x11\xf8\x1d\xb4\xff\x0d\x38\x0f\x40\xef\xec\x8f\xd9\x4b\xb2\x4a\x3e\xef\x7a\xb0\xe9\x25\x67\x0b\x9d\x1d\x09\x4a\xaf\xf3\x9e\x20\xad\x87\x6d\x65\x1c\xc0\x68\xd0\xda\x24\xd6\xad\xf6\xe1\xd4\x99\x86\x90\xea\x8c\x1e\x56\xdd\xcf\x31\xb4\x3a\xf3\x10\x5e\x9d\xb1\x86\xd8\xfa\x61\x0c\xb3\xbd\x95\x16\x6a\x47\x66\x3b\xdf\x9d\xb1\x07\xb9\xde\xd2\xc0\xae\x7b\x6c\xa0\xd7\x3d\xb9\xc6\xf0\xbf\x6a\x08\xf6\x4f\x1d\x18\xae\x0c\xa1\xe9\xef\x96\x3a\x70\xec\x9f\xc7\x90\xec\xed\x7d\x58\xae\x6d\x3d\x68\xf6\xc6\x16\x9e\xdd\x73\x0c\xa2\x3d\xbb\xea\xc3\xb4\xb7\xc5\xa0\xba\xbf\x3a\x84\x6b\xbf\x1a\x85\xec\x7a\xb9\x85\x6d\x67\x69\xa1\xdb\x3d\x86\xe0\xbb\xbb\xd0\x87\xf0\xee\xca\x00\xc6\x43\x5f\x52\x43\x79\xe5\xd6\x81\xf3\xd6\x32\x86\x74\xdf\x3e\x2d\xac\xd7\x41\xbd\x03\xed\x15\x79\x0d\xc3\x7b\x95\xa8\x7b\x10\x1f\xdb\x16\x00\xc0\xd8\xd6\x01\xd4\xfb\x0f\xbd\x0b\xf7\x75\x6a\xc6\x65\x78\x13\xf6\x47\x3b\x86\xd0\x5f\x55\x6d\x1c\xfe\x7d\xb0\x63\x14\xc0\xb7\xe0\x0d\x1a\xe0\xc7\x4e\x80\x0a\xc4\xfe\xa7\xad\x93\xa6\x01\x25\x70\x0b\x5d\x5a\xd0\x18\x5a\x6a\xe0\x4c\x43\x7a\x10\xfe\xc6\x9a\x22\xb8\xd5\x20\x4d\x70\x2b\x03\xaa\xd0\x0e\xa5\x8a\x2e\x74\x37\xd5\x94\xc1\xc7\x2c\x44\x1b\x9a\x2b\xd7\xd4\xc1\xc7\xa7\x4b\x1f\xaa\xfb\x84\x28\x84\x8f\x76\x98\x46\xf8\x7b\x30\xd9\x9f\x8a\x0d\x9d\xa8\xee\x3d\xa6\x14\x55\x82\x5a\x5a\xd1\x6d\xe1\x3b\xd4\xa2\x17\xd8\x11\xbd\xf0\x38\x31\xa6\x18\xbe\x94\xc7\x34\xc3\xe7\xee\x06\xd5\xe8\x8d\x9d\xa9\x74\xa3\xeb\x74\x93\x72\x4c\xdd\xd8\xa1\x1d\x5d\x97\x49\xd4\x63\x8a\x43\x88\x7e\xbc\xd1\xaf\xa6\x20\x75\x06\x06\x34\xe4\xcb\x76\xf3\xbd\x51\xf1\x9f\x66\xb3\xe7\xed\xe6\x47\xf5\x37\xea\x8e\x75\xb1\xda\x25\xdb\x81\xf9\x03\xda\x26\xeb\xc5\xf7\x04\xed\x36\xed\xd6\xff\x07\x00\x00\xff\xff\x76\xd6\x98\x65\xe5\x1e\x00\x00") + +func _1709795716_migration_order_fixUpSqlBytes() ([]byte, error) { + return bindataRead( + __1709795716_migration_order_fixUpSql, + "1709795716_migration_order_fix.up.sql", + ) +} + +func _1709795716_migration_order_fixUpSql() (*asset, error) { + bytes, err := _1709795716_migration_order_fixUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1709795716_migration_order_fix.up.sql", size: 7909, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xca, 0x77, 0x1a, 0xfe, 0xf1, 0xd5, 0xe9, 0xf3, 0xfe, 0x18, 0xf8, 0x6, 0xfe, 0xeb, 0x6f, 0xe1, 0x22, 0x42, 0xad, 0x30, 0xb3, 0x83, 0x42, 0xae, 0x73, 0x6a, 0xbe, 0x69, 0x27, 0x7b, 0x34, 0xc6}} + return a, nil +} + +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xcb\x41\x0e\x02\x31\x08\x05\xd0\x7d\x4f\xf1\x2f\x00\xe8\xca\xc4\xc4\xc3\xa0\x43\x08\x19\x5b\xc6\x96\xfb\xc7\x4d\xdf\xfe\x5d\xfa\x39\xd5\x0d\xeb\xf7\x6d\x4d\xc4\xf3\xe9\x36\x6c\x6a\x19\x3c\xe9\x1d\xe3\xd0\x52\x50\xcf\xa3\xa2\xdb\xeb\xfe\xb8\x6d\xa0\xeb\x74\xf4\xf0\xa9\x15\x39\x16\x28\xc1\x2c\x7b\xb0\x27\x58\xda\x3f\x00\x00\xff\xff\x57\xd4\xd5\x90\x5e\x00\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -2288,8 +2393,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 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}} + info := bindataFileInfo{name: "doc.go", size: 94, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x81, 0x21, 0x7a, 0x87, 0xd2, 0xef, 0xcc, 0x25, 0x5e, 0x95, 0x3f, 0x25, 0x79, 0xf7, 0x18, 0xaf, 0x57, 0xe7, 0x1e, 0x58, 0x50, 0xbb, 0xea, 0x27, 0x98, 0x89, 0xe1, 0x9f, 0x5c, 0xf6, 0x0}} return a, nil } @@ -2489,6 +2594,11 @@ var _bindata = map[string]func() (*asset, error){ "1704281285_tokens_advanced_settings.up.sql": _1704281285_tokens_advanced_settingsUpSql, "1705338819_collectible_preferences.up.sql": _1705338819_collectible_preferencesUpSql, "1706097653_migration_order_fix.up.sql": _1706097653_migration_order_fixUpSql, + "1706955596_community_storenodes.up.sql": _1706955596_community_storenodesUpSql, + "1708352924_add_peer_syncing_enabled_to_settings.up.sql": _1708352924_add_peer_syncing_enabled_to_settingsUpSql, + "1708416025_make_sepolia_default.up.sql": _1708416025_make_sepolia_defaultUpSql, + "1709203128_fix_chain_colors.up.sql": _1709203128_fix_chain_colorsUpSql, + "1709795716_migration_order_fix.up.sql": _1709795716_migration_order_fixUpSql, "doc.go": docGo, } @@ -2643,6 +2753,11 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1704281285_tokens_advanced_settings.up.sql": {_1704281285_tokens_advanced_settingsUpSql, map[string]*bintree{}}, "1705338819_collectible_preferences.up.sql": {_1705338819_collectible_preferencesUpSql, map[string]*bintree{}}, "1706097653_migration_order_fix.up.sql": {_1706097653_migration_order_fixUpSql, map[string]*bintree{}}, + "1706955596_community_storenodes.up.sql": {_1706955596_community_storenodesUpSql, map[string]*bintree{}}, + "1708352924_add_peer_syncing_enabled_to_settings.up.sql": {_1708352924_add_peer_syncing_enabled_to_settingsUpSql, map[string]*bintree{}}, + "1708416025_make_sepolia_default.up.sql": {_1708416025_make_sepolia_defaultUpSql, map[string]*bintree{}}, + "1709203128_fix_chain_colors.up.sql": {_1709203128_fix_chain_colorsUpSql, map[string]*bintree{}}, + "1709795716_migration_order_fix.up.sql": {_1709795716_migration_order_fixUpSql, map[string]*bintree{}}, "doc.go": {docGo, map[string]*bintree{}}, }} diff --git a/vendor/github.com/status-im/status-go/appdatabase/migrationsprevnodecfg/bindata.go b/vendor/github.com/status-im/status-go/appdatabase/migrationsprevnodecfg/bindata.go index ee361106..e87f0981 100644 --- a/vendor/github.com/status-im/status-go/appdatabase/migrationsprevnodecfg/bindata.go +++ b/vendor/github.com/status-im/status-go/appdatabase/migrationsprevnodecfg/bindata.go @@ -53,7 +53,7 @@ // 1635942154_add_backup_setting.up.sql (287B) // 1637745568_add_auto_message_setting.up.sql (122B) // 1640111208_nodeconfig.up.sql (7.659kB) -// doc.go (85B) +// doc.go (105B) package migrationsprevnodecfg @@ -136,7 +136,7 @@ func _0001_appDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -156,7 +156,7 @@ func _0001_appUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -176,7 +176,7 @@ func _0002_tokensDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -196,7 +196,7 @@ func _0002_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -216,7 +216,7 @@ func _0003_settingsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -236,7 +236,7 @@ func _0003_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -256,7 +256,7 @@ func _0004_pending_stickersDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -276,7 +276,7 @@ func _0004_pending_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -296,7 +296,7 @@ func _0005_waku_modeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -316,7 +316,7 @@ func _0005_waku_modeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -336,7 +336,7 @@ func _0006_appearanceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -356,7 +356,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -376,7 +376,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -396,7 +396,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -416,7 +416,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -436,7 +436,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -456,7 +456,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -476,7 +476,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -496,7 +496,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -516,7 +516,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -536,7 +536,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -556,7 +556,7 @@ func _0013_favouritesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -576,7 +576,7 @@ func _0013_favouritesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -596,7 +596,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -616,7 +616,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -636,7 +636,7 @@ func _0015_link_previewsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -656,7 +656,7 @@ func _0015_link_previewsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -676,7 +676,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -696,7 +696,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -716,7 +716,7 @@ func _0017_bookmarksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -736,7 +736,7 @@ func _0017_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -756,7 +756,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -776,7 +776,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -796,7 +796,7 @@ func _0020_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -816,7 +816,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -836,7 +836,7 @@ func _0022_pending_transfersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -856,7 +856,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -876,7 +876,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -896,7 +896,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -916,7 +916,7 @@ func _1625872445_user_statusUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -936,7 +936,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -956,7 +956,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -976,7 +976,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -996,7 +996,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1016,7 +1016,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1036,7 +1036,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1056,7 +1056,7 @@ func _1630485153_networksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1076,7 +1076,7 @@ func _1630485153_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1096,7 +1096,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1116,7 +1116,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1136,7 +1136,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1156,7 +1156,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -1176,12 +1176,12 @@ func _1640111208_nodeconfigUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xca\xb1\x11\x85\x20\x0c\x06\xe0\x9e\x29\xb2\x00\x49\xff\xb6\xc9\x83\xf8\x1f\x87\x26\x08\x9c\xf3\xdb\xd8\x7f\x43\x4b\x57\x18\xad\xfb\x4c\x49\x04\xf1\x83\xb9\x4d\xdd\x46\x88\xfc\x6f\x5e\x75\x2b\xe5\xd1\x41\x57\xc3\xd4\xdd\xc2\xd7\x98\xf6\x78\x54\x2b\x07\x28\x07\x31\xcb\x07\x19\x41\x2c\xe9\x0d\x00\x00\xff\xff\x09\x8c\xb2\x2f\x55\x00\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xcb\x41\x0e\xc2\x20\x10\x05\xd0\x3d\xa7\xf8\x17\x00\x74\x65\x62\xe2\x61\xc6\x32\xfe\x90\xca\x0c\xd2\x89\xe7\xef\xa6\x6f\xff\xa6\x6c\xbb\x50\x71\xfc\xbe\x29\xd5\x4a\x7f\x52\x4d\x97\x84\x82\x9e\xdf\xdd\x9a\x84\x20\x0f\x6f\xd1\x87\xbe\xee\x8f\xdb\x05\x79\xee\xc4\xe8\x5c\x12\xdd\xed\x98\x4b\xff\xe6\x4d\xb7\x0f\x91\x1d\xa5\xd4\x2b\x17\x3a\x4a\x4d\x67\x00\x00\x00\xff\xff\x2c\x75\x2e\x34\x69\x00\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -1196,8 +1196,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 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}} + info := bindataFileInfo{name: "doc.go", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4f, 0xf, 0x66, 0x70, 0xa7, 0xe9, 0xe9, 0x73, 0xeb, 0x3e, 0x5e, 0x83, 0xab, 0x85, 0x52, 0x1d, 0x10, 0xb5, 0x18, 0xb4, 0x9c, 0x58, 0x69, 0x74, 0x61, 0xb7, 0xcf, 0xd5, 0x23, 0x3a, 0x1e, 0x3c}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/circuitbreaker/circuit_breaker.go b/vendor/github.com/status-im/status-go/circuitbreaker/circuit_breaker.go new file mode 100644 index 00000000..c8afb6b2 --- /dev/null +++ b/vendor/github.com/status-im/status-go/circuitbreaker/circuit_breaker.go @@ -0,0 +1,135 @@ +package circuitbreaker + +import ( + "fmt" + "strings" + + "github.com/afex/hystrix-go/hystrix" +) + +type FallbackFunc func() ([]any, error) + +type CommandResult struct { + res []any + err error +} + +func (cr CommandResult) Result() []any { + return cr.res +} + +func (cr CommandResult) Error() error { + return cr.err +} + +type Command struct { + functors []*Functor +} + +func NewCommand(functors []*Functor) *Command { + return &Command{ + functors: functors, + } +} + +func (cmd *Command) Add(ftor *Functor) { + cmd.functors = append(cmd.functors, ftor) +} + +func (cmd *Command) IsEmpty() bool { + return len(cmd.functors) == 0 +} + +type Config struct { + CommandName string + Timeout int + MaxConcurrentRequests int + RequestVolumeThreshold int + SleepWindow int + ErrorPercentThreshold int +} + +type CircuitBreaker struct { + config Config +} + +func NewCircuitBreaker(config Config) *CircuitBreaker { + return &CircuitBreaker{ + config: config, + } +} + +type Functor struct { + Exec FallbackFunc +} + +func NewFunctor(exec FallbackFunc) *Functor { + return &Functor{ + Exec: exec, + } +} + +// This a blocking function +func (eh *CircuitBreaker) Execute(cmd Command) CommandResult { + resultChan := make(chan CommandResult, 1) + var result CommandResult + + for i := 0; i < len(cmd.functors); i += 2 { + f1 := cmd.functors[i] + var f2 *Functor + if i+1 < len(cmd.functors) { + f2 = cmd.functors[i+1] + } + + circuitName := fmt.Sprintf("%s_%d", eh.config.CommandName, i) + if hystrix.GetCircuitSettings()[circuitName] == nil { + hystrix.ConfigureCommand(circuitName, hystrix.CommandConfig{ + Timeout: eh.config.Timeout, + MaxConcurrentRequests: eh.config.MaxConcurrentRequests, + RequestVolumeThreshold: eh.config.RequestVolumeThreshold, + SleepWindow: eh.config.SleepWindow, + ErrorPercentThreshold: eh.config.ErrorPercentThreshold, + }) + } + + // If circuit is the same for all functions, in case of len(cmd.functors) > 2, + // main and fallback providers are different next run if first two fail, + // which causes health issues for both main and fallback and ErrorPercentThreshold + // is reached faster than it should be. + errChan := hystrix.Go(circuitName, func() error { + res, err := f1.Exec() + // Write to resultChan only if success + if err == nil { + resultChan <- CommandResult{res: res, err: err} + } + return err + }, func(err error) error { + // In case of concurrency, we should not execute the fallback + if f2 == nil || err == hystrix.ErrMaxConcurrency { + return err + } + res, err := f2.Exec() + if err == nil { + resultChan <- CommandResult{res: res, err: err} + } + return err + }) + + select { + case result = <-resultChan: + if result.err == nil { + return result + } + case err := <-errChan: + result = CommandResult{err: err} + + // In case of max concurrency, we should delay the execution and stop iterating over fallbacks + // No error unwrapping here, so use strings.Contains + if strings.Contains(err.Error(), hystrix.ErrMaxConcurrency.Error()) { + return result + } + } + } + + return result +} diff --git a/vendor/github.com/status-im/status-go/contracts/community-tokens/deployer/address.go b/vendor/github.com/status-im/status-go/contracts/community-tokens/deployer/address.go index 696f9013..28422c53 100644 --- a/vendor/github.com/status-im/status-go/contracts/community-tokens/deployer/address.go +++ b/vendor/github.com/status-im/status-go/contracts/community-tokens/deployer/address.go @@ -18,6 +18,7 @@ var contractAddressByChainID = map[uint64]common.Address{ 421613: common.HexToAddress("0x7Ff554af5b6624db2135E4364F416d1D397f43e6"), // Arbitrum Goerli 11155111: common.HexToAddress("0xCDE984e57cdb88c70b53437cc694345B646371f9"), // Sepolia 421614: common.HexToAddress("0x7Ff554af5b6624db2135E4364F416d1D397f43e6"), // Arbitrum Sepolia + 11155420: common.HexToAddress("0xcE2A896eEA2F585BC0C3753DC8116BbE2AbaE541"), // Optimism Sepolia } func ContractAddress(chainID uint64) (common.Address, error) { diff --git a/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/address.go b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/address.go new file mode 100644 index 00000000..57b171e9 --- /dev/null +++ b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/address.go @@ -0,0 +1,24 @@ +package gaspriceoracle + +import ( + "errors" + + "github.com/ethereum/go-ethereum/common" + + wallet_common "github.com/status-im/status-go/services/wallet/common" +) + +var ErrorNotAvailableOnChainID = errors.New("not available for chainID") + +var contractAddressByChainID = map[uint64]common.Address{ + wallet_common.OptimismMainnet: common.HexToAddress("0x8527c030424728cF93E72bDbf7663281A44Eeb22"), + wallet_common.OptimismSepolia: common.HexToAddress("0x5230210c2b4995FD5084b0F5FD0D7457aebb5010"), +} + +func ContractAddress(chainID uint64) (common.Address, error) { + addr, exists := contractAddressByChainID[chainID] + if !exists { + return *new(common.Address), ErrorNotAvailableOnChainID + } + return addr, nil +} diff --git a/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/doc.go b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/doc.go new file mode 100644 index 00000000..bcb1b415 --- /dev/null +++ b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/doc.go @@ -0,0 +1,3 @@ +package gaspriceoracle + +//go:generate abigen -abi gaspriceoracle.abi -pkg gaspriceoracle -out gaspriceoracle.go diff --git a/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.abi b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.abi new file mode 100644 index 00000000..16dfef8b --- /dev/null +++ b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.abi @@ -0,0 +1,316 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "DecimalsUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "GasPriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "L1BaseFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "OverheadUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ScalarUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "adminCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gasPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAdmin", + "outputs": [ + { + "internalType": "address", + "name": "adminAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "getL1Fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "getL1GasUsed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initPayload", + "type": "bytes" + } + ], + "name": "init", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "l1BaseFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "overhead", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scalar", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "adminAddress", + "type": "address" + } + ], + "name": "setAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_decimals", + "type": "uint256" + } + ], + "name": "setDecimals", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_gasPrice", + "type": "uint256" + } + ], + "name": "setGasPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_baseFee", + "type": "uint256" + } + ], + "name": "setL1BaseFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_overhead", + "type": "uint256" + } + ], + "name": "setOverhead", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_scalar", + "type": "uint256" + } + ], + "name": "setScalar", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.go b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.go new file mode 100644 index 00000000..596a3c8d --- /dev/null +++ b/vendor/github.com/status-im/status-go/contracts/gas-price-oracle/gaspriceoracle.go @@ -0,0 +1,1298 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package gaspriceoracle + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// GaspriceoracleMetaData contains all meta data concerning the Gaspriceoracle contract. +var GaspriceoracleMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"DecimalsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GasPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"L1BaseFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"OverheadUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ScalarUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"adminCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getL1Fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getL1GasUsed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initPayload\",\"type\":\"bytes\"}],\"name\":\"init\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"overhead\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scalar\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminAddress\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_decimals\",\"type\":\"uint256\"}],\"name\":\"setDecimals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasPrice\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_baseFee\",\"type\":\"uint256\"}],\"name\":\"setL1BaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_overhead\",\"type\":\"uint256\"}],\"name\":\"setOverhead\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_scalar\",\"type\":\"uint256\"}],\"name\":\"setScalar\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// GaspriceoracleABI is the input ABI used to generate the binding from. +// Deprecated: Use GaspriceoracleMetaData.ABI instead. +var GaspriceoracleABI = GaspriceoracleMetaData.ABI + +// Gaspriceoracle is an auto generated Go binding around an Ethereum contract. +type Gaspriceoracle struct { + GaspriceoracleCaller // Read-only binding to the contract + GaspriceoracleTransactor // Write-only binding to the contract + GaspriceoracleFilterer // Log filterer for contract events +} + +// GaspriceoracleCaller is an auto generated read-only Go binding around an Ethereum contract. +type GaspriceoracleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GaspriceoracleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GaspriceoracleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GaspriceoracleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GaspriceoracleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GaspriceoracleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GaspriceoracleSession struct { + Contract *Gaspriceoracle // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GaspriceoracleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GaspriceoracleCallerSession struct { + Contract *GaspriceoracleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GaspriceoracleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GaspriceoracleTransactorSession struct { + Contract *GaspriceoracleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GaspriceoracleRaw is an auto generated low-level Go binding around an Ethereum contract. +type GaspriceoracleRaw struct { + Contract *Gaspriceoracle // Generic contract binding to access the raw methods on +} + +// GaspriceoracleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GaspriceoracleCallerRaw struct { + Contract *GaspriceoracleCaller // Generic read-only contract binding to access the raw methods on +} + +// GaspriceoracleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GaspriceoracleTransactorRaw struct { + Contract *GaspriceoracleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGaspriceoracle creates a new instance of Gaspriceoracle, bound to a specific deployed contract. +func NewGaspriceoracle(address common.Address, backend bind.ContractBackend) (*Gaspriceoracle, error) { + contract, err := bindGaspriceoracle(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Gaspriceoracle{GaspriceoracleCaller: GaspriceoracleCaller{contract: contract}, GaspriceoracleTransactor: GaspriceoracleTransactor{contract: contract}, GaspriceoracleFilterer: GaspriceoracleFilterer{contract: contract}}, nil +} + +// NewGaspriceoracleCaller creates a new read-only instance of Gaspriceoracle, bound to a specific deployed contract. +func NewGaspriceoracleCaller(address common.Address, caller bind.ContractCaller) (*GaspriceoracleCaller, error) { + contract, err := bindGaspriceoracle(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GaspriceoracleCaller{contract: contract}, nil +} + +// NewGaspriceoracleTransactor creates a new write-only instance of Gaspriceoracle, bound to a specific deployed contract. +func NewGaspriceoracleTransactor(address common.Address, transactor bind.ContractTransactor) (*GaspriceoracleTransactor, error) { + contract, err := bindGaspriceoracle(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GaspriceoracleTransactor{contract: contract}, nil +} + +// NewGaspriceoracleFilterer creates a new log filterer instance of Gaspriceoracle, bound to a specific deployed contract. +func NewGaspriceoracleFilterer(address common.Address, filterer bind.ContractFilterer) (*GaspriceoracleFilterer, error) { + contract, err := bindGaspriceoracle(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GaspriceoracleFilterer{contract: contract}, nil +} + +// bindGaspriceoracle binds a generic wrapper to an already deployed contract. +func bindGaspriceoracle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GaspriceoracleMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Gaspriceoracle *GaspriceoracleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Gaspriceoracle.Contract.GaspriceoracleCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Gaspriceoracle *GaspriceoracleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.GaspriceoracleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Gaspriceoracle *GaspriceoracleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.GaspriceoracleTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Gaspriceoracle *GaspriceoracleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Gaspriceoracle.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Gaspriceoracle *GaspriceoracleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Gaspriceoracle *GaspriceoracleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.contract.Transact(opts, method, params...) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Gaspriceoracle *GaspriceoracleCaller) Admin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "admin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Gaspriceoracle *GaspriceoracleSession) Admin() (common.Address, error) { + return _Gaspriceoracle.Contract.Admin(&_Gaspriceoracle.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Gaspriceoracle *GaspriceoracleCallerSession) Admin() (common.Address, error) { + return _Gaspriceoracle.Contract.Admin(&_Gaspriceoracle.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) Decimals(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) Decimals() (*big.Int, error) { + return _Gaspriceoracle.Contract.Decimals(&_Gaspriceoracle.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) Decimals() (*big.Int, error) { + return _Gaspriceoracle.Contract.Decimals(&_Gaspriceoracle.CallOpts) +} + +// GasPrice is a free data retrieval call binding the contract method 0xfe173b97. +// +// Solidity: function gasPrice() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) GasPrice(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "gasPrice") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPrice is a free data retrieval call binding the contract method 0xfe173b97. +// +// Solidity: function gasPrice() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) GasPrice() (*big.Int, error) { + return _Gaspriceoracle.Contract.GasPrice(&_Gaspriceoracle.CallOpts) +} + +// GasPrice is a free data retrieval call binding the contract method 0xfe173b97. +// +// Solidity: function gasPrice() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) GasPrice() (*big.Int, error) { + return _Gaspriceoracle.Contract.GasPrice(&_Gaspriceoracle.CallOpts) +} + +// GetAdmin is a free data retrieval call binding the contract method 0x6e9960c3. +// +// Solidity: function getAdmin() view returns(address adminAddress) +func (_Gaspriceoracle *GaspriceoracleCaller) GetAdmin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "getAdmin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetAdmin is a free data retrieval call binding the contract method 0x6e9960c3. +// +// Solidity: function getAdmin() view returns(address adminAddress) +func (_Gaspriceoracle *GaspriceoracleSession) GetAdmin() (common.Address, error) { + return _Gaspriceoracle.Contract.GetAdmin(&_Gaspriceoracle.CallOpts) +} + +// GetAdmin is a free data retrieval call binding the contract method 0x6e9960c3. +// +// Solidity: function getAdmin() view returns(address adminAddress) +func (_Gaspriceoracle *GaspriceoracleCallerSession) GetAdmin() (common.Address, error) { + return _Gaspriceoracle.Contract.GetAdmin(&_Gaspriceoracle.CallOpts) +} + +// GetL1Fee is a free data retrieval call binding the contract method 0x49948e0e. +// +// Solidity: function getL1Fee(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) GetL1Fee(opts *bind.CallOpts, _data []byte) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "getL1Fee", _data) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetL1Fee is a free data retrieval call binding the contract method 0x49948e0e. +// +// Solidity: function getL1Fee(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) GetL1Fee(_data []byte) (*big.Int, error) { + return _Gaspriceoracle.Contract.GetL1Fee(&_Gaspriceoracle.CallOpts, _data) +} + +// GetL1Fee is a free data retrieval call binding the contract method 0x49948e0e. +// +// Solidity: function getL1Fee(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) GetL1Fee(_data []byte) (*big.Int, error) { + return _Gaspriceoracle.Contract.GetL1Fee(&_Gaspriceoracle.CallOpts, _data) +} + +// GetL1GasUsed is a free data retrieval call binding the contract method 0xde26c4a1. +// +// Solidity: function getL1GasUsed(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) GetL1GasUsed(opts *bind.CallOpts, _data []byte) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "getL1GasUsed", _data) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetL1GasUsed is a free data retrieval call binding the contract method 0xde26c4a1. +// +// Solidity: function getL1GasUsed(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) GetL1GasUsed(_data []byte) (*big.Int, error) { + return _Gaspriceoracle.Contract.GetL1GasUsed(&_Gaspriceoracle.CallOpts, _data) +} + +// GetL1GasUsed is a free data retrieval call binding the contract method 0xde26c4a1. +// +// Solidity: function getL1GasUsed(bytes _data) view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) GetL1GasUsed(_data []byte) (*big.Int, error) { + return _Gaspriceoracle.Contract.GetL1GasUsed(&_Gaspriceoracle.CallOpts, _data) +} + +// L1BaseFee is a free data retrieval call binding the contract method 0x519b4bd3. +// +// Solidity: function l1BaseFee() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) L1BaseFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "l1BaseFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// L1BaseFee is a free data retrieval call binding the contract method 0x519b4bd3. +// +// Solidity: function l1BaseFee() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) L1BaseFee() (*big.Int, error) { + return _Gaspriceoracle.Contract.L1BaseFee(&_Gaspriceoracle.CallOpts) +} + +// L1BaseFee is a free data retrieval call binding the contract method 0x519b4bd3. +// +// Solidity: function l1BaseFee() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) L1BaseFee() (*big.Int, error) { + return _Gaspriceoracle.Contract.L1BaseFee(&_Gaspriceoracle.CallOpts) +} + +// Overhead is a free data retrieval call binding the contract method 0x0c18c162. +// +// Solidity: function overhead() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) Overhead(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "overhead") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Overhead is a free data retrieval call binding the contract method 0x0c18c162. +// +// Solidity: function overhead() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) Overhead() (*big.Int, error) { + return _Gaspriceoracle.Contract.Overhead(&_Gaspriceoracle.CallOpts) +} + +// Overhead is a free data retrieval call binding the contract method 0x0c18c162. +// +// Solidity: function overhead() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) Overhead() (*big.Int, error) { + return _Gaspriceoracle.Contract.Overhead(&_Gaspriceoracle.CallOpts) +} + +// Scalar is a free data retrieval call binding the contract method 0xf45e65d8. +// +// Solidity: function scalar() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCaller) Scalar(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Gaspriceoracle.contract.Call(opts, &out, "scalar") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Scalar is a free data retrieval call binding the contract method 0xf45e65d8. +// +// Solidity: function scalar() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleSession) Scalar() (*big.Int, error) { + return _Gaspriceoracle.Contract.Scalar(&_Gaspriceoracle.CallOpts) +} + +// Scalar is a free data retrieval call binding the contract method 0xf45e65d8. +// +// Solidity: function scalar() view returns(uint256) +func (_Gaspriceoracle *GaspriceoracleCallerSession) Scalar() (*big.Int, error) { + return _Gaspriceoracle.Contract.Scalar(&_Gaspriceoracle.CallOpts) +} + +// AdminCall is a paid mutator transaction binding the contract method 0xbf64a82d. +// +// Solidity: function adminCall(address target, bytes data) payable returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) AdminCall(opts *bind.TransactOpts, target common.Address, data []byte) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "adminCall", target, data) +} + +// AdminCall is a paid mutator transaction binding the contract method 0xbf64a82d. +// +// Solidity: function adminCall(address target, bytes data) payable returns() +func (_Gaspriceoracle *GaspriceoracleSession) AdminCall(target common.Address, data []byte) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.AdminCall(&_Gaspriceoracle.TransactOpts, target, data) +} + +// AdminCall is a paid mutator transaction binding the contract method 0xbf64a82d. +// +// Solidity: function adminCall(address target, bytes data) payable returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) AdminCall(target common.Address, data []byte) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.AdminCall(&_Gaspriceoracle.TransactOpts, target, data) +} + +// Init is a paid mutator transaction binding the contract method 0x4ddf47d4. +// +// Solidity: function init(bytes initPayload) returns(bytes4) +func (_Gaspriceoracle *GaspriceoracleTransactor) Init(opts *bind.TransactOpts, initPayload []byte) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "init", initPayload) +} + +// Init is a paid mutator transaction binding the contract method 0x4ddf47d4. +// +// Solidity: function init(bytes initPayload) returns(bytes4) +func (_Gaspriceoracle *GaspriceoracleSession) Init(initPayload []byte) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.Init(&_Gaspriceoracle.TransactOpts, initPayload) +} + +// Init is a paid mutator transaction binding the contract method 0x4ddf47d4. +// +// Solidity: function init(bytes initPayload) returns(bytes4) +func (_Gaspriceoracle *GaspriceoracleTransactorSession) Init(initPayload []byte) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.Init(&_Gaspriceoracle.TransactOpts, initPayload) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address adminAddress) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetAdmin(opts *bind.TransactOpts, adminAddress common.Address) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setAdmin", adminAddress) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address adminAddress) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetAdmin(adminAddress common.Address) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetAdmin(&_Gaspriceoracle.TransactOpts, adminAddress) +} + +// SetAdmin is a paid mutator transaction binding the contract method 0x704b6c02. +// +// Solidity: function setAdmin(address adminAddress) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetAdmin(adminAddress common.Address) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetAdmin(&_Gaspriceoracle.TransactOpts, adminAddress) +} + +// SetDecimals is a paid mutator transaction binding the contract method 0x8c8885c8. +// +// Solidity: function setDecimals(uint256 _decimals) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetDecimals(opts *bind.TransactOpts, _decimals *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setDecimals", _decimals) +} + +// SetDecimals is a paid mutator transaction binding the contract method 0x8c8885c8. +// +// Solidity: function setDecimals(uint256 _decimals) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetDecimals(_decimals *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetDecimals(&_Gaspriceoracle.TransactOpts, _decimals) +} + +// SetDecimals is a paid mutator transaction binding the contract method 0x8c8885c8. +// +// Solidity: function setDecimals(uint256 _decimals) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetDecimals(_decimals *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetDecimals(&_Gaspriceoracle.TransactOpts, _decimals) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xbf1fe420. +// +// Solidity: function setGasPrice(uint256 _gasPrice) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetGasPrice(opts *bind.TransactOpts, _gasPrice *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setGasPrice", _gasPrice) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xbf1fe420. +// +// Solidity: function setGasPrice(uint256 _gasPrice) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetGasPrice(_gasPrice *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetGasPrice(&_Gaspriceoracle.TransactOpts, _gasPrice) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xbf1fe420. +// +// Solidity: function setGasPrice(uint256 _gasPrice) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetGasPrice(_gasPrice *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetGasPrice(&_Gaspriceoracle.TransactOpts, _gasPrice) +} + +// SetL1BaseFee is a paid mutator transaction binding the contract method 0xbede39b5. +// +// Solidity: function setL1BaseFee(uint256 _baseFee) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetL1BaseFee(opts *bind.TransactOpts, _baseFee *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setL1BaseFee", _baseFee) +} + +// SetL1BaseFee is a paid mutator transaction binding the contract method 0xbede39b5. +// +// Solidity: function setL1BaseFee(uint256 _baseFee) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetL1BaseFee(_baseFee *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetL1BaseFee(&_Gaspriceoracle.TransactOpts, _baseFee) +} + +// SetL1BaseFee is a paid mutator transaction binding the contract method 0xbede39b5. +// +// Solidity: function setL1BaseFee(uint256 _baseFee) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetL1BaseFee(_baseFee *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetL1BaseFee(&_Gaspriceoracle.TransactOpts, _baseFee) +} + +// SetOverhead is a paid mutator transaction binding the contract method 0x3577afc5. +// +// Solidity: function setOverhead(uint256 _overhead) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetOverhead(opts *bind.TransactOpts, _overhead *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setOverhead", _overhead) +} + +// SetOverhead is a paid mutator transaction binding the contract method 0x3577afc5. +// +// Solidity: function setOverhead(uint256 _overhead) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetOverhead(_overhead *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetOverhead(&_Gaspriceoracle.TransactOpts, _overhead) +} + +// SetOverhead is a paid mutator transaction binding the contract method 0x3577afc5. +// +// Solidity: function setOverhead(uint256 _overhead) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetOverhead(_overhead *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetOverhead(&_Gaspriceoracle.TransactOpts, _overhead) +} + +// SetScalar is a paid mutator transaction binding the contract method 0x70465597. +// +// Solidity: function setScalar(uint256 _scalar) returns() +func (_Gaspriceoracle *GaspriceoracleTransactor) SetScalar(opts *bind.TransactOpts, _scalar *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.contract.Transact(opts, "setScalar", _scalar) +} + +// SetScalar is a paid mutator transaction binding the contract method 0x70465597. +// +// Solidity: function setScalar(uint256 _scalar) returns() +func (_Gaspriceoracle *GaspriceoracleSession) SetScalar(_scalar *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetScalar(&_Gaspriceoracle.TransactOpts, _scalar) +} + +// SetScalar is a paid mutator transaction binding the contract method 0x70465597. +// +// Solidity: function setScalar(uint256 _scalar) returns() +func (_Gaspriceoracle *GaspriceoracleTransactorSession) SetScalar(_scalar *big.Int) (*types.Transaction, error) { + return _Gaspriceoracle.Contract.SetScalar(&_Gaspriceoracle.TransactOpts, _scalar) +} + +// GaspriceoracleDecimalsUpdatedIterator is returned from FilterDecimalsUpdated and is used to iterate over the raw logs and unpacked data for DecimalsUpdated events raised by the Gaspriceoracle contract. +type GaspriceoracleDecimalsUpdatedIterator struct { + Event *GaspriceoracleDecimalsUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GaspriceoracleDecimalsUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleDecimalsUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleDecimalsUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GaspriceoracleDecimalsUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GaspriceoracleDecimalsUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GaspriceoracleDecimalsUpdated represents a DecimalsUpdated event raised by the Gaspriceoracle contract. +type GaspriceoracleDecimalsUpdated struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDecimalsUpdated is a free log retrieval operation binding the contract event 0xd68112a8707e326d08be3656b528c1bcc5bbbfc47f4177e2179b14d8640838c1. +// +// Solidity: event DecimalsUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) FilterDecimalsUpdated(opts *bind.FilterOpts) (*GaspriceoracleDecimalsUpdatedIterator, error) { + + logs, sub, err := _Gaspriceoracle.contract.FilterLogs(opts, "DecimalsUpdated") + if err != nil { + return nil, err + } + return &GaspriceoracleDecimalsUpdatedIterator{contract: _Gaspriceoracle.contract, event: "DecimalsUpdated", logs: logs, sub: sub}, nil +} + +// WatchDecimalsUpdated is a free log subscription operation binding the contract event 0xd68112a8707e326d08be3656b528c1bcc5bbbfc47f4177e2179b14d8640838c1. +// +// Solidity: event DecimalsUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) WatchDecimalsUpdated(opts *bind.WatchOpts, sink chan<- *GaspriceoracleDecimalsUpdated) (event.Subscription, error) { + + logs, sub, err := _Gaspriceoracle.contract.WatchLogs(opts, "DecimalsUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GaspriceoracleDecimalsUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "DecimalsUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDecimalsUpdated is a log parse operation binding the contract event 0xd68112a8707e326d08be3656b528c1bcc5bbbfc47f4177e2179b14d8640838c1. +// +// Solidity: event DecimalsUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) ParseDecimalsUpdated(log types.Log) (*GaspriceoracleDecimalsUpdated, error) { + event := new(GaspriceoracleDecimalsUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "DecimalsUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GaspriceoracleGasPriceUpdatedIterator is returned from FilterGasPriceUpdated and is used to iterate over the raw logs and unpacked data for GasPriceUpdated events raised by the Gaspriceoracle contract. +type GaspriceoracleGasPriceUpdatedIterator struct { + Event *GaspriceoracleGasPriceUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GaspriceoracleGasPriceUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleGasPriceUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleGasPriceUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GaspriceoracleGasPriceUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GaspriceoracleGasPriceUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GaspriceoracleGasPriceUpdated represents a GasPriceUpdated event raised by the Gaspriceoracle contract. +type GaspriceoracleGasPriceUpdated struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGasPriceUpdated is a free log retrieval operation binding the contract event 0xfcdccc6074c6c42e4bd578aa9870c697dc976a270968452d2b8c8dc369fae396. +// +// Solidity: event GasPriceUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) FilterGasPriceUpdated(opts *bind.FilterOpts) (*GaspriceoracleGasPriceUpdatedIterator, error) { + + logs, sub, err := _Gaspriceoracle.contract.FilterLogs(opts, "GasPriceUpdated") + if err != nil { + return nil, err + } + return &GaspriceoracleGasPriceUpdatedIterator{contract: _Gaspriceoracle.contract, event: "GasPriceUpdated", logs: logs, sub: sub}, nil +} + +// WatchGasPriceUpdated is a free log subscription operation binding the contract event 0xfcdccc6074c6c42e4bd578aa9870c697dc976a270968452d2b8c8dc369fae396. +// +// Solidity: event GasPriceUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) WatchGasPriceUpdated(opts *bind.WatchOpts, sink chan<- *GaspriceoracleGasPriceUpdated) (event.Subscription, error) { + + logs, sub, err := _Gaspriceoracle.contract.WatchLogs(opts, "GasPriceUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GaspriceoracleGasPriceUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "GasPriceUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGasPriceUpdated is a log parse operation binding the contract event 0xfcdccc6074c6c42e4bd578aa9870c697dc976a270968452d2b8c8dc369fae396. +// +// Solidity: event GasPriceUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) ParseGasPriceUpdated(log types.Log) (*GaspriceoracleGasPriceUpdated, error) { + event := new(GaspriceoracleGasPriceUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "GasPriceUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GaspriceoracleL1BaseFeeUpdatedIterator is returned from FilterL1BaseFeeUpdated and is used to iterate over the raw logs and unpacked data for L1BaseFeeUpdated events raised by the Gaspriceoracle contract. +type GaspriceoracleL1BaseFeeUpdatedIterator struct { + Event *GaspriceoracleL1BaseFeeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GaspriceoracleL1BaseFeeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleL1BaseFeeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleL1BaseFeeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GaspriceoracleL1BaseFeeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GaspriceoracleL1BaseFeeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GaspriceoracleL1BaseFeeUpdated represents a L1BaseFeeUpdated event raised by the Gaspriceoracle contract. +type GaspriceoracleL1BaseFeeUpdated struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterL1BaseFeeUpdated is a free log retrieval operation binding the contract event 0x351fb23757bb5ea0546c85b7996ddd7155f96b939ebaa5ff7bc49c75f27f2c44. +// +// Solidity: event L1BaseFeeUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) FilterL1BaseFeeUpdated(opts *bind.FilterOpts) (*GaspriceoracleL1BaseFeeUpdatedIterator, error) { + + logs, sub, err := _Gaspriceoracle.contract.FilterLogs(opts, "L1BaseFeeUpdated") + if err != nil { + return nil, err + } + return &GaspriceoracleL1BaseFeeUpdatedIterator{contract: _Gaspriceoracle.contract, event: "L1BaseFeeUpdated", logs: logs, sub: sub}, nil +} + +// WatchL1BaseFeeUpdated is a free log subscription operation binding the contract event 0x351fb23757bb5ea0546c85b7996ddd7155f96b939ebaa5ff7bc49c75f27f2c44. +// +// Solidity: event L1BaseFeeUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) WatchL1BaseFeeUpdated(opts *bind.WatchOpts, sink chan<- *GaspriceoracleL1BaseFeeUpdated) (event.Subscription, error) { + + logs, sub, err := _Gaspriceoracle.contract.WatchLogs(opts, "L1BaseFeeUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GaspriceoracleL1BaseFeeUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "L1BaseFeeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseL1BaseFeeUpdated is a log parse operation binding the contract event 0x351fb23757bb5ea0546c85b7996ddd7155f96b939ebaa5ff7bc49c75f27f2c44. +// +// Solidity: event L1BaseFeeUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) ParseL1BaseFeeUpdated(log types.Log) (*GaspriceoracleL1BaseFeeUpdated, error) { + event := new(GaspriceoracleL1BaseFeeUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "L1BaseFeeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GaspriceoracleOverheadUpdatedIterator is returned from FilterOverheadUpdated and is used to iterate over the raw logs and unpacked data for OverheadUpdated events raised by the Gaspriceoracle contract. +type GaspriceoracleOverheadUpdatedIterator struct { + Event *GaspriceoracleOverheadUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GaspriceoracleOverheadUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleOverheadUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleOverheadUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GaspriceoracleOverheadUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GaspriceoracleOverheadUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GaspriceoracleOverheadUpdated represents a OverheadUpdated event raised by the Gaspriceoracle contract. +type GaspriceoracleOverheadUpdated struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOverheadUpdated is a free log retrieval operation binding the contract event 0x32740b35c0ea213650f60d44366b4fb211c9033b50714e4a1d34e65d5beb9bb4. +// +// Solidity: event OverheadUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) FilterOverheadUpdated(opts *bind.FilterOpts) (*GaspriceoracleOverheadUpdatedIterator, error) { + + logs, sub, err := _Gaspriceoracle.contract.FilterLogs(opts, "OverheadUpdated") + if err != nil { + return nil, err + } + return &GaspriceoracleOverheadUpdatedIterator{contract: _Gaspriceoracle.contract, event: "OverheadUpdated", logs: logs, sub: sub}, nil +} + +// WatchOverheadUpdated is a free log subscription operation binding the contract event 0x32740b35c0ea213650f60d44366b4fb211c9033b50714e4a1d34e65d5beb9bb4. +// +// Solidity: event OverheadUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) WatchOverheadUpdated(opts *bind.WatchOpts, sink chan<- *GaspriceoracleOverheadUpdated) (event.Subscription, error) { + + logs, sub, err := _Gaspriceoracle.contract.WatchLogs(opts, "OverheadUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GaspriceoracleOverheadUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "OverheadUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOverheadUpdated is a log parse operation binding the contract event 0x32740b35c0ea213650f60d44366b4fb211c9033b50714e4a1d34e65d5beb9bb4. +// +// Solidity: event OverheadUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) ParseOverheadUpdated(log types.Log) (*GaspriceoracleOverheadUpdated, error) { + event := new(GaspriceoracleOverheadUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "OverheadUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GaspriceoracleScalarUpdatedIterator is returned from FilterScalarUpdated and is used to iterate over the raw logs and unpacked data for ScalarUpdated events raised by the Gaspriceoracle contract. +type GaspriceoracleScalarUpdatedIterator struct { + Event *GaspriceoracleScalarUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GaspriceoracleScalarUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleScalarUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GaspriceoracleScalarUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GaspriceoracleScalarUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GaspriceoracleScalarUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GaspriceoracleScalarUpdated represents a ScalarUpdated event raised by the Gaspriceoracle contract. +type GaspriceoracleScalarUpdated struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterScalarUpdated is a free log retrieval operation binding the contract event 0x3336cd9708eaf2769a0f0dc0679f30e80f15dcd88d1921b5a16858e8b85c591a. +// +// Solidity: event ScalarUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) FilterScalarUpdated(opts *bind.FilterOpts) (*GaspriceoracleScalarUpdatedIterator, error) { + + logs, sub, err := _Gaspriceoracle.contract.FilterLogs(opts, "ScalarUpdated") + if err != nil { + return nil, err + } + return &GaspriceoracleScalarUpdatedIterator{contract: _Gaspriceoracle.contract, event: "ScalarUpdated", logs: logs, sub: sub}, nil +} + +// WatchScalarUpdated is a free log subscription operation binding the contract event 0x3336cd9708eaf2769a0f0dc0679f30e80f15dcd88d1921b5a16858e8b85c591a. +// +// Solidity: event ScalarUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) WatchScalarUpdated(opts *bind.WatchOpts, sink chan<- *GaspriceoracleScalarUpdated) (event.Subscription, error) { + + logs, sub, err := _Gaspriceoracle.contract.WatchLogs(opts, "ScalarUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GaspriceoracleScalarUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "ScalarUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseScalarUpdated is a log parse operation binding the contract event 0x3336cd9708eaf2769a0f0dc0679f30e80f15dcd88d1921b5a16858e8b85c591a. +// +// Solidity: event ScalarUpdated(uint256 arg0) +func (_Gaspriceoracle *GaspriceoracleFilterer) ParseScalarUpdated(log types.Log) (*GaspriceoracleScalarUpdated, error) { + event := new(GaspriceoracleScalarUpdated) + if err := _Gaspriceoracle.contract.UnpackLog(event, "ScalarUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/vendor/github.com/status-im/status-go/contracts/snt/address.go b/vendor/github.com/status-im/status-go/contracts/snt/address.go index 4589c058..45b91f27 100644 --- a/vendor/github.com/status-im/status-go/contracts/snt/address.go +++ b/vendor/github.com/status-im/status-go/contracts/snt/address.go @@ -9,8 +9,9 @@ import ( var errorNotAvailableOnChainID = errors.New("not available for chainID") var contractAddressByChainID = map[uint64]common.Address{ - 1: common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"), // mainnet - 5: common.HexToAddress("0x3d6afaa395c31fcd391fe3d562e75fe9e8ec7e6a"), // goerli + 1: common.HexToAddress("0x744d70fdbe2ba4cf95131626614a1763df805b9e"), // mainnet + 5: common.HexToAddress("0x3d6afaa395c31fcd391fe3d562e75fe9e8ec7e6a"), // goerli + 11155111: common.HexToAddress("0xE452027cdEF746c7Cd3DB31CB700428b16cD8E51"), // sepolia } func ContractAddress(chainID uint64) (common.Address, error) { diff --git a/vendor/github.com/status-im/status-go/eth-node/types/waku.go b/vendor/github.com/status-im/status-go/eth-node/types/waku.go index 9fed1a5a..eba3cc0b 100644 --- a/vendor/github.com/status-im/status-go/eth-node/types/waku.go +++ b/vendor/github.com/status-im/status-go/eth-node/types/waku.go @@ -54,6 +54,16 @@ func (u *ConnStatusSubscription) Unsubscribe() { u.active = false } +func (u *ConnStatusSubscription) Send(s ConnStatus) bool { + u.RLock() + defer u.RUnlock() + if !u.active { + return false + } + u.C <- s + return true +} + type WakuKeyManager interface { // GetPrivateKey retrieves the private key of the specified identity. GetPrivateKey(id string) (*ecdsa.PrivateKey, error) diff --git a/vendor/github.com/status-im/status-go/images/decode.go b/vendor/github.com/status-im/status-go/images/decode.go index 0a6b7d7a..8e834273 100644 --- a/vendor/github.com/status-im/status-go/images/decode.go +++ b/vendor/github.com/status-im/status-go/images/decode.go @@ -11,13 +11,35 @@ import ( "io/ioutil" "net/http" "os" + "regexp" "time" + "unicode/utf8" "golang.org/x/image/webp" "github.com/ethereum/go-ethereum/log" ) +var ( + htmlCommentRegex = regexp.MustCompile(`(?i)`) + svgRegex = regexp.MustCompile(`(?i)^\s*(?:<\?xml[^>]*>\s*)?(?:]*>\s*)?]*>[^*]*<\/svg>\s*$`) +) + +// IsSVG returns true if the given buffer is a valid SVG image. +func IsSVG(buf []byte) bool { + var isBinary bool + if len(buf) < 24 { + isBinary = false + } + for i := 0; i < 14; i++ { + charCode, _ := utf8.DecodeRuneInString(string(buf[i])) + if charCode == 65533 || charCode <= 8 { + isBinary = true + } + } + return !isBinary && svgRegex.Match(htmlCommentRegex.ReplaceAll(buf, []byte{})) +} + func Decode(fileName string) (image.Image, error) { file, err := os.Open(fileName) if err != nil { @@ -109,6 +131,8 @@ func GetType(buf []byte) ImageType { return GIF case IsWebp(buf): return WEBP + case IsIco(buf): + return ICO default: return UNKNOWN } @@ -124,6 +148,10 @@ func GetMimeType(buf []byte) (string, error) { return "gif", nil case IsWebp(buf): return "webp", nil + case IsIco(buf): + return "ico", nil + case IsSVG(buf): + return "svg", nil default: return "", errors.New("image format not supported") } @@ -153,6 +181,12 @@ func IsWebp(buf []byte) bool { buf[10] == 0x42 && buf[11] == 0x50 } +func IsIco(buf []byte) bool { + return len(buf) > 4 && + buf[0] == 0 && buf[1] == 0 && buf[2] == 1 || buf[2] == 2 && + buf[4] > 0 +} + func GetImageDimensions(imgBytes []byte) (int, int, error) { // Decode image bytes img, _, err := image.Decode(bytes.NewReader(imgBytes)) diff --git a/vendor/github.com/status-im/status-go/images/meta.go b/vendor/github.com/status-im/status-go/images/meta.go index 6cacc07b..26f6166d 100644 --- a/vendor/github.com/status-im/status-go/images/meta.go +++ b/vendor/github.com/status-im/status-go/images/meta.go @@ -8,6 +8,7 @@ const ( PNG GIF WEBP + ICO ) const ( diff --git a/vendor/github.com/status-im/status-go/images/qr-assets.go b/vendor/github.com/status-im/status-go/images/qr-assets.go index d5c0c2de..ecc69870 100644 --- a/vendor/github.com/status-im/status-go/images/qr-assets.go +++ b/vendor/github.com/status-im/status-go/images/qr-assets.go @@ -1,17 +1,22 @@ -// Code generated by go-bindata. DO NOT EDIT. +// Code generated by go-bindata. // sources: -// _assets/tests/qr/QRWithLogo.png (13.814kB) -// _assets/tests/qr/defaultQR.png (12.007kB) -// _assets/tests/qr/status.png (9.398kB) +// _assets/tests/1.gif +// _assets/tests/2x1.png +// _assets/tests/spin.gif +// _assets/tests/qr/QRWithLogo.png +// _assets/tests/qr/defaultQR.png +// _assets/tests/qr/status.png +// _assets/tests/wikipedia.ico +// DO NOT EDIT! package images import ( "bytes" "compress/gzip" - "crypto/sha256" "fmt" "io" + "io/ioutil" "os" "path/filepath" "strings" @@ -21,7 +26,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("Read %q: %v", name, err) } var buf bytes.Buffer @@ -29,7 +34,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("Read %q: %v", name, err) } if clErr != nil { return nil, err @@ -39,9 +44,8 @@ func bindataRead(data []byte, name string) ([]byte, error) { } type asset struct { - bytes []byte - info os.FileInfo - digest [sha256.Size]byte + bytes []byte + info os.FileInfo } type bindataFileInfo struct { @@ -70,6 +74,66 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } +var __assetsTests1Gif = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x0a\xf2\x74\x73\x93\x63\x60\x60\x08\x77\x75\x0a\x08\x0b\xb0\xf0\x11\x64\x60\x60\xd0\x67\x60\x60\x60\x60\x0f\x78\x66\x34\x7d\xe7\xff\xc6\x8e\x17\xf5\x0c\x0c\x80\x00\x00\x00\xff\xff\xd7\x34\xfd\x79\x26\x00\x00\x00") + +func _assetsTests1GifBytes() ([]byte, error) { + return bindataRead( + __assetsTests1Gif, + "_assets/tests/1.gif", + ) +} + +func _assetsTests1Gif() (*asset, error) { + bytes, err := _assetsTests1GifBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "_assets/tests/1.gif", size: 38, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var __assetsTests2x1Png = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x0a\xf2\x74\x73\x93\x63\x60\x60\x08\x77\x75\x0a\x08\x0b\xb0\xf0\x11\x64\x60\x60\xd0\x67\x64\x60\x60\x60\x0f\x78\x66\x34\x7d\xe7\xff\xc6\x8e\x17\xf5\x0c\x0c\x80\x00\x00\x00\xff\xff\x94\xff\x5b\xfe\x26\x00\x00\x00") + +func _assetsTests2x1PngBytes() ([]byte, error) { + return bindataRead( + __assetsTests2x1Png, + "_assets/tests/2x1.png", + ) +} + +func _assetsTests2x1Png() (*asset, error) { + bytes, err := _assetsTests2x1PngBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "_assets/tests/2x1.png", size: 38, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var __assetsTestsSpinGif = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\xb8\xfb\x3f\xd3\x8f\xff\xff\xff\x78\x3c\xf6\xd8\x81\x0d\x1b\xc3\xc8\x61\x9b\x43\x64\x18\xa9\x46\x68\xce\xc7\x58\x45\xad\x42\x73\x8a\xa2\x5a\x85\x26\xd2\xe6\x7c\xb6\x16\x42\x68\x44\xa9\x28\x87\x1c\x9f\xa5\x59\x07\x9e\x9d\x9e\xa2\x44\x0e\x8d\x54\x2a\x15\x29\xa9\x94\xef\xe5\xf5\x7e\x5f\xde\xdf\xcf\xfb\xf5\xc3\xfb\x75\xff\x1b\xae\x97\xdb\xf5\x76\xbb\xbb\x79\xb8\x32\xac\x83\x01\x10\x00\x53\x75\x81\x95\x95\x95\xef\xdf\xbf\x7f\xfe\xfc\xf9\xcd\x9b\x37\x13\x13\x13\x43\x43\x43\x8f\x1f\x3f\xbe\x7b\xf7\xee\xcd\x9b\x37\x5b\x5b\x5b\x1b\x1a\x1a\x6a\x6b\x6b\xcb\xcb\xcb\x0b\x0b\x0b\x73\x73\x73\x53\x53\x53\x13\x12\x12\x8e\x1e\x3d\x1a\x15\x15\x15\x1a\x1a\xba\x6b\xd7\xae\xad\x5b\xb7\x7a\x7a\x7a\x3a\x3a\x3a\xda\xd8\xd8\x58\x58\x58\x18\x1b\x1b\x53\x28\x14\x0d\x0d\x0d\x0c\x06\x03\x00\x00\x1e\x8f\xa7\xac\x60\x7d\x5c\xfc\xb6\x39\x39\xb0\x5c\x2c\xcd\xe8\x08\x10\x00\x00\xca\x0f\x18\x46\x03\x00\x40\x03\xfe\x75\x20\x00\x02\xc8\x15\x3e\x43\x54\x1b\x5f\x7d\xa9\xab\xb9\xe1\x97\xb4\xc9\x76\xb0\xf5\xc4\xab\xce\xee\x85\x9b\x2b\x88\x14\x29\xa5\x29\xd2\x96\x7a\xfa\xbe\x41\xcb\xbb\x44\xc7\xf3\x03\xc6\xad\xfb\x6f\x86\xb4\xbc\x30\x6d\xff\xf0\x3b\xf9\xf6\x94\x45\x67\xb4\xfd\xf9\xc1\xf7\xeb\xfe\xfa\x98\x74\xfb\xd5\x17\xeb\x9b\x07\x6f\xbd\x5a\xf8\x69\x77\xeb\xf3\x0a\x02\x25\xaf\xa8\xac\xa6\xa9\x43\x35\x5c\x63\x66\xb9\xde\xc6\xde\xd1\xd5\xd3\x67\xeb\xf6\x5d\x41\x21\x7b\xf7\x1f\x3c\x12\x77\x3c\x29\x39\x3d\x3b\x5f\x54\x5c\x56\x59\x7d\xe1\xf2\xd5\xe6\xb6\xae\x6e\xe9\xbd\xfb\x8f\x07\x86\x5e\x4c\x4c\xbd\x79\xff\xe9\xcb\xe2\xcf\x3f\x10\x1a\xab\xa4\xa2\xbe\x4a\x57\x6f\xb5\x89\xf9\xda\x0d\x1b\x37\x39\xb9\x79\xf9\x6e\xdb\xb1\x7b\x4f\x68\x44\xd4\xa1\xa3\xc7\x12\x4e\xa6\x64\xe4\x14\x9c\x3e\x73\xf6\xdc\xf9\x8b\x57\xae\xb5\xb4\xff\x75\xeb\x76\xef\x83\x7f\x06\x9f\x8f\xbe\x7c\xf5\xf6\xc3\xe7\x85\xef\xbf\x56\x10\x31\x04\x8e\x84\x0f\x80\xb1\x30\x43\xcc\xec\x01\x53\xd0\x87\x88\x6c\x09\xbf\x27\x19\x52\x3a\x44\x2e\x61\x10\x7a\x5c\x54\x61\x74\x8d\xbb\xf8\x94\x43\x32\x11\xed\x83\xd2\x62\xad\x70\x0c\x40\x22\x75\x5d\xb1\x6d\x15\x00\xa5\xa2\xd1\x80\x1a\x5d\x3c\xc8\xe7\xab\x98\xaf\xbe\x47\xdb\xc2\x84\x9e\x94\x31\x8e\x69\x36\x46\x4e\xad\xfe\x5b\x05\x9f\xa9\x7c\x02\xe0\x02\x5b\x11\x64\x2f\xba\x82\x0d\x15\x7c\x22\xe7\xac\x0a\xe0\x58\xcf\xf8\xb7\x1b\xf4\x5a\x21\x3c\x1e\xbc\x9c\x8a\xb1\xbb\xb8\xfd\x80\x07\x35\x2a\x0b\x19\x98\x55\xfd\xed\x8c\xca\xbe\x9d\x40\x8c\x1b\x8e\x63\x02\x4a\x5d\x40\xff\xa2\xec\x25\x13\x69\x4f\xa0\x5c\xa6\x92\x72\xdd\xcf\xa1\xcf\x23\x04\x14\xbc\xb1\xff\x7b\x93\xb9\x5c\x93\xff\x23\xa9\xd6\xfc\x53\x93\x27\x57\x0c\xe5\x19\xdc\x46\x71\xc5\xfd\x0a\xa4\xaf\xb3\xeb\xf1\x6f\xe6\x3b\xe4\x6a\x76\x9c\xc5\xcb\x64\x50\x3a\x56\x99\x7b\x25\xe7\x66\x0b\x7f\x9f\x72\xa8\x82\x7c\x87\x8d\xf8\xe2\xae\x36\x02\x03\xcd\xe6\x50\x9c\x50\xb8\x9b\x72\xd7\x54\xf2\xaf\x4b\xc2\x08\x7e\xb1\xca\xb2\x80\x10\x00\x31\xa0\xe5\x06\x33\x99\x20\x22\xf6\xfd\xf3\x11\xe4\xf0\xc6\xf5\xb6\x59\x45\xe3\xfe\x44\x1e\x59\xb5\x11\x5e\xfc\x38\xbe\x7b\x8e\x6d\x03\xf5\x6d\x28\xde\x37\xd5\x40\x17\x62\xa0\x15\x2b\x6e\xcf\xc9\x8f\xc1\x4c\x01\x38\x77\x7d\xfd\xf6\xad\xdf\x7b\xf0\x7c\x48\x75\xe9\xbb\x2e\x4a\x8d\xc6\x97\xd9\x20\x76\x96\x14\x2a\x10\x6d\xdd\xc7\x91\x8a\x1c\x8c\x2f\xf0\xe2\x9d\x7e\x35\x16\xc1\xc0\x54\xc1\x47\x26\x9d\xc4\x51\x0c\xba\x2c\x08\xf9\x76\x7e\x21\x50\x11\x0a\xe0\x80\x08\xcb\x09\x15\x66\xce\x5a\x7d\x56\x80\x9b\x6f\x99\xb8\x06\xd8\xb6\x75\xe7\xeb\x42\x5b\x9a\xb0\xb6\x78\xf7\xde\x52\xc0\xf7\x8d\x1f\xbb\xda\x07\x9a\x68\x74\x40\x47\x54\x97\xbe\x29\xd5\xb4\x6d\xd4\xdf\x10\x9c\xbd\x6f\x4a\x51\x9d\xc7\xba\x58\x71\xec\x78\x7f\x0f\x5a\x03\x50\x57\x2c\x0f\x11\xed\x43\x54\xf0\xa6\x2e\xad\x3e\x37\x3d\x43\x7a\x5b\x62\x8b\xf3\xac\xab\x38\x1e\x24\x7c\xbe\x01\xc2\xb3\xc4\x69\x82\xa1\x46\x10\x7d\xf6\xc8\x0b\x63\xf4\x2a\x36\xd9\xb8\xf0\xbc\x68\x17\xa2\xd6\x06\x2f\x9b\xb6\x9f\xbf\x9b\x99\x12\x31\x36\xbf\x40\xdd\xca\x18\x12\x6b\x9f\x58\x4a\x5c\x5d\xaa\x90\xae\x11\xe9\x5b\x1d\xaa\xca\x9f\x96\x2f\x56\x7c\xbb\xd7\xa6\xb9\x98\x67\xa2\xd0\x17\xb4\x3f\xda\xba\x13\xda\x3d\x74\x84\xae\x9f\xa1\x93\xdb\xb2\xd2\xbc\x9d\x5a\x3f\xf3\xae\x66\x8d\xfc\xcb\x6f\xdf\xa2\xfc\x27\x8a\x8f\x36\xf8\x1b\x46\xba\x5d\x3d\x36\x9c\x1f\x41\x69\x98\x91\xd4\xd1\xda\x47\xe3\xbf\x13\x1c\xa8\xec\x35\x3a\x2d\x1e\x37\x13\x14\x6b\x43\xb3\x23\xdf\xed\x6e\x33\xe3\x91\xe4\xeb\xd5\xc8\x9f\xf9\x3b\xaa\x25\x1f\x7c\x18\xca\x34\x28\xf7\x20\x8a\xd5\x64\xdf\x9b\x87\xb7\x00\x2a\x29\xcf\x08\xd7\x51\xfd\x97\x2d\x80\x79\xfb\x3b\xf3\x3e\x06\x99\x38\xe0\x1e\xb8\x39\xd7\xf2\x2f\x3d\x06\x2e\x88\x69\xf8\xc0\xc3\xf1\x3e\x30\x8d\xc5\xe7\x4e\x8d\x7b\x1f\xbd\xf5\x93\xb8\xb4\xf0\x48\x6f\xf0\xd7\x3f\x9e\x1b\x29\x0c\xab\x5e\x93\xb4\xd6\x81\xb6\x99\xee\x00\x48\x60\x22\x17\xe5\x7b\xd7\x52\xd1\x54\xfa\xac\x56\x04\x34\x74\x05\xbc\x6d\x7b\x3e\xc8\x69\x61\x1a\x83\x8f\x45\x15\x6d\x2f\xa2\x5a\xc6\xdb\x46\x0f\xdd\xd6\x6e\x1f\x3b\x3a\x18\xd8\x3e\x7e\xec\x55\x45\xfb\x44\xc2\xc2\x78\xfb\xcb\x93\x08\x9d\x0e\x59\x8a\x4a\x50\xc7\x64\x86\x5e\x65\xc7\x54\xce\xda\x89\x8e\x57\x05\x4e\x3a\x9d\xd3\xa7\xb7\x05\x75\xbe\x3e\x13\x5a\xd9\xf9\xe6\xec\xd1\x89\xce\xb7\xe7\x52\x74\xba\x66\xce\xaf\x3e\x1d\xd4\xf5\xee\xe2\xf9\xca\xae\xf7\x57\x5a\x26\xba\x3e\x5c\xbb\xad\xf3\xd7\x6c\xcb\x60\xd0\x5f\x1f\xdb\x5f\x55\xfe\xf5\xe9\xaf\x85\x89\xbf\x3e\xdf\x42\x98\xfb\x60\xfe\x5f\x76\x84\x00\x21\x80\x2d\x60\x0b\xfc\x4f\x76\x40\x0e\xfc\xe6\x86\x5f\x95\x29\x34\x49\xab\x82\x52\x9a\x4f\x7d\xfb\x4a\x0e\x2a\x3d\x58\x80\xb2\xbd\x00\x43\xaa\xd9\x74\x2d\xcd\xcd\xd0\x88\x38\xc3\x8a\x00\xa4\x46\xfe\xfd\x63\x3a\x1f\x4e\x77\x86\x4e\xdd\x14\x41\x11\x0d\x45\xd3\x69\xd5\x44\xdc\xbd\x6a\xbe\xcf\x35\x30\x65\x70\x14\x18\x5a\xfd\xf0\xc9\xc8\x78\x15\x31\xd8\xee\x47\x11\x4c\xa2\x61\xcc\xa6\xc7\xe5\xf0\xd9\xce\xfb\x0d\x92\x15\xfa\xe4\x0c\xaf\xab\xbe\xd1\xee\x0a\xbe\xa0\x8d\x19\xd8\x39\x11\xef\xba\x78\x98\x10\xfd\x98\xc2\x53\x7b\x5f\x34\x9b\xd7\x98\x4e\x29\x59\x33\xfc\xf8\x42\x11\x2b\x28\x29\x8f\xc8\x90\xd7\x24\x23\x8d\x7e\xa7\x21\x77\xf8\xe7\x43\x65\x86\xf4\x41\xbc\x85\x8a\xba\xf8\x02\xb0\x6a\xd2\x52\x53\xa9\xac\xce\xd8\x96\x69\xcb\xac\x9e\xc6\x1f\x8a\xf7\xe9\xca\x62\x5b\xec\x2b\xa3\x96\xe0\xc8\x0c\x67\x77\x77\x67\x2b\xf8\x34\xdb\xcd\x71\x77\x4e\x10\x0d\xaa\xa0\x52\x64\x4c\x04\x66\x79\xe9\x07\x82\x74\x4f\xd8\xa3\x6a\xbb\x1f\xc7\xe6\x8a\x33\x4a\x90\x8a\xba\x8e\x01\x1c\xfa\x23\x77\x5e\x73\x74\x3f\xf9\xfb\x0a\x47\xb7\x2f\x69\xc5\x27\x9f\x15\x1a\xb9\x5b\x01\xfc\xc1\x6e\x4b\xe4\x5c\x7b\xd3\x26\x5a\x0f\x31\x22\xff\x56\x82\xae\xe9\x7e\x46\x55\x1b\xf7\x5b\x42\x29\x26\x20\x2e\x64\x01\x7c\x22\x00\x4b\x36\x3c\x9d\x29\x31\x70\x88\xf0\x23\x07\x9e\x98\xfd\x6a\xb0\x98\xf9\xac\xc9\x82\x20\xde\x7c\x45\xad\x07\x44\x44\xd0\xf6\x86\x3b\xa8\x64\xa6\x75\xc5\x7d\x1e\xaa\x05\x28\x20\xff\x9a\x5e\x22\xf5\x6f\x32\x8f\x3e\x89\x23\xd1\xd9\x5c\xba\xe4\x10\xbe\x29\x4d\x57\xd7\xe7\x46\xc4\x27\xd3\xa6\x0c\xf3\xd0\x7b\x01\x55\x0e\xaa\x02\x53\xa3\x97\x78\x6e\xb0\xd5\xbb\x01\x75\x9a\x1f\xbf\xf1\x09\xed\xc3\x10\xf2\x01\x14\x2f\xbf\xe4\x96\x5a\x9d\x56\x48\x10\xf2\xc2\x7a\x32\x70\x04\x3c\xfd\xa0\x45\xda\x40\xf4\xaa\x55\xb6\x31\x4b\xfc\x1e\x07\x70\xd8\x68\xbb\x7b\xcc\xc4\x94\x20\xe3\x7d\x9f\xb5\x1f\x07\xf8\xf9\x3c\x4e\x17\xc5\x88\x99\xe1\xd8\xdd\x48\x97\x93\xcb\xf6\x7d\x1a\x08\xdc\xcc\x01\xe4\x68\x89\xf8\x4d\xdd\xc7\x52\x9f\xfd\x03\xce\x0c\x85\x84\xa5\xc5\xa4\x51\x61\xba\xd0\x21\x71\x88\xf2\x5d\x80\xc4\x01\x71\x85\x58\xf9\x8b\xdd\xe4\x6d\x3a\xb0\x73\xa3\x03\x6f\xc1\x9f\xcb\xb7\x01\x46\x9e\xb8\x9e\x34\xae\x6f\xd2\x31\x26\xf2\x57\xbf\x44\xab\xa7\xfa\x7b\x25\xc9\x23\x53\x3c\x3d\x03\x73\x4f\x4b\x90\xf3\x06\x11\x0e\x59\x86\xb3\x92\x5c\xef\x3b\xe5\xa9\x79\xbe\x10\x43\x08\xa2\xbb\x2b\xdc\xb1\xd8\x4a\x39\x63\x17\x5b\x49\x9f\x81\x9b\xbf\x1b\xdd\x7d\x1b\x71\xf3\x41\x9e\xbf\xfe\x16\x17\xd5\xfb\x6c\x56\xb3\xc4\xe5\xf4\xde\x78\xe5\xb0\x3d\xad\xb8\x3b\x95\x4a\xb8\x6a\xf4\xbd\xbc\xa2\xdc\x70\xe1\x99\x3d\xc5\x92\xb4\xa2\x73\xf0\x57\xa9\xee\x81\x1b\xf1\x6e\xe6\xa3\xfe\x4e\x1e\x5c\xdb\x7d\x5b\x4e\xdb\xe4\x05\x6a\x04\x54\xc8\x7f\x1c\xd9\x75\xf4\x6a\xe0\xa9\xd1\xe3\x5b\xa8\x3f\xbd\x4e\xb5\xa4\xfe\x2f\xef\x85\x02\x21\xc0\xc6\xff\xc5\x6e\x36\xd8\xd5\xdc\xe0\x25\x0f\x38\xdc\xf8\x97\xf7\xcc\x06\xce\x77\x21\x40\x8b\x1d\x93\x11\xf2\x18\x51\x8f\xe8\x32\xc7\xa4\x12\x4a\x75\x14\xd0\x03\xec\xdd\x58\x83\x62\x0e\x9d\x78\x75\xf8\xcc\xb6\xeb\x69\xf1\xb7\x26\x2d\x0a\xea\xd6\xe5\x63\xf6\xac\x2b\xb7\xd3\x2c\xb9\xcf\x6f\x71\x17\xfe\x59\x1c\xee\x2c\x7d\xf6\xf7\xa3\x79\xb9\xab\x33\xf3\x0a\x0f\x4f\x4c\x1a\x28\x7e\xea\xf9\xad\x81\x7f\x3a\xf2\xae\x36\xf2\x66\xad\x95\x4d\xf6\x38\x06\xc7\xac\xb6\xaa\xa6\xfd\x59\xb2\x0e\xaa\xf6\xf6\x0f\xfe\x43\x9a\x7d\x5d\xf3\x85\x71\xb5\x82\x4c\x9b\xa3\x16\xfe\x04\x1e\x66\x63\xfe\x5a\x2e\xae\x7f\xac\x71\x45\xcb\x88\xce\x58\xab\x4f\x42\xd4\xe1\x4f\xa7\xe9\x68\x50\x35\xad\x36\x6d\x74\x0b\xf5\xb8\xb6\xf4\x5b\x4d\x9f\x16\xb3\xd1\x5c\x2b\xc0\xeb\x13\xe9\x63\xf5\xc5\x5f\xae\x2f\xe8\xbd\x6b\x69\xfa\x30\xd4\x34\x5a\xde\x6b\xc2\xac\x09\x3d\x97\x0f\xce\x3c\xfd\xf6\x40\x60\xec\x06\xc5\x4f\xc6\xe1\xc7\x82\x59\x7b\xaa\xd3\x6c\xe0\x81\x07\x91\x54\xd4\xa5\x7c\x1d\x0f\x39\x4f\x5e\xc8\x7d\x75\x35\xa5\x58\x4c\xa6\x78\xe5\x88\x81\x57\x11\x9e\xa4\xd5\x58\xb7\x25\x35\xb5\x6c\xfd\xa1\x17\xa9\x42\x66\x8d\x6b\xb9\x7d\xd4\xfb\xe9\xf8\x5e\x1f\xfe\x39\x7b\x5d\x32\xdd\x31\xdc\x78\xdb\x9a\x64\x0c\x33\x73\x4d\xec\xfe\xa7\x68\x79\xea\xe3\x87\x97\x63\xa3\x2c\x30\x98\xd4\xa1\x99\xad\xa6\x18\x04\x8e\xa8\x49\x12\xbe\x73\x44\x6e\x27\x23\xcc\xc2\x24\xdc\x60\x69\x72\x9b\x29\x3c\x8c\xa4\x52\x10\x2f\x3b\xd4\xa8\x89\x2d\x4f\xee\xaa\xe2\x61\x35\xfa\xd7\xd7\x39\x55\xd2\x94\x58\x53\x28\x33\xaf\x06\x12\xa4\x62\x33\x7f\xdd\xb7\xbb\xf2\x8e\x3d\x0a\x21\x9e\x36\xe3\xc5\x47\xef\x40\xf2\x24\x33\x93\x6e\xa0\x64\xfc\xf6\x76\xa7\x03\xe4\xe1\xb9\x60\xa9\x3d\x3a\x63\x4b\x68\x23\x10\xbc\x60\x45\xe4\x6c\xd1\x92\xc8\x7a\x9c\xd0\x0a\x38\x19\x89\xcf\x65\xc4\xc2\x13\xb1\xb6\xe7\x18\xeb\xa6\x3c\x0b\xb6\xa3\xe8\x31\xa4\x3f\x55\xd0\x21\x58\x85\xf6\x76\xe2\xe6\x62\xaa\xae\xb2\x20\x1a\xc9\x95\x04\xf3\xd0\x8a\x4a\xc3\x16\x62\x8e\xe0\x93\x07\xa8\x56\x8b\x7f\xe0\x92\x83\x57\xc2\x8e\x64\x85\xf2\xf9\xc6\x18\x16\x31\xcb\x74\x90\xde\x58\x19\x47\x38\x5c\x5e\xe8\x21\x87\x86\xe8\x00\x72\x25\x56\x28\x80\xc4\xaf\x39\xb9\x16\x78\x48\x28\x41\xdd\x8e\xa7\xef\x0e\x0a\xb5\x7d\x9e\xa5\xa4\x94\x28\x99\x40\xf5\x8e\x50\x02\x75\xe3\x4b\xea\xee\x22\x89\xbb\x24\x67\x37\xfe\xe2\xdc\x9d\xb4\x52\x30\x62\x07\x40\xd1\x2c\x69\x7e\xbe\xe5\xd2\x73\x87\xb4\x4d\x22\x77\xa9\x93\x13\xd4\xc8\x47\xe9\x72\xb9\xa0\x48\x95\xd0\xd4\x0f\x28\xb2\x17\x25\x99\x6b\x83\xfb\x9e\xb9\x07\x25\x5f\x52\xd5\x09\x7c\x81\x87\xfe\x45\x21\x12\x0d\xe8\xfe\x5b\x82\x9e\x63\x88\x6a\xf7\xa1\x2e\x76\x35\x37\x6c\x54\x9e\x9a\x1b\x88\x3d\x40\x6a\xeb\x5e\xf8\x6d\xd2\x21\xbf\x69\x8f\xc9\xa2\xf1\x43\x1f\xa9\x9a\x70\x26\x06\x89\xe9\x5c\xdd\xba\xdf\x6b\x57\xde\xd0\xea\xc5\xe1\x86\xa4\x58\xaf\x53\x71\xbf\x8c\x7f\xc9\x6f\x6e\x89\x9c\xc5\x1e\x7a\x72\xad\xf9\xd7\x4d\x33\xb9\xf7\x5d\xa0\x8c\x48\x02\x26\x2e\x79\x57\x00\x92\x0a\x02\x71\xa6\xa7\xa6\x04\xa7\xaf\x49\xc4\x5b\x75\x6b\x7d\xa9\x2b\xc5\x30\xa7\x48\xde\x57\x69\x49\x2c\x11\xaf\x99\x24\xb2\x56\xe3\x1e\x11\x55\xea\x5f\x1e\x23\x60\x9a\x9d\x1b\x7e\xd7\x5e\x9e\x22\x67\x89\x80\xe1\xae\xaf\xef\x80\xa8\xa9\x37\xf7\xa0\x6b\x00\x06\x37\x43\x58\x74\x1e\xbf\xec\x29\x3f\xfb\x78\xff\xfb\x2d\xcf\x01\xe6\xd1\xf7\x3a\xcf\x97\x8b\x76\x0e\x60\x9c\x95\x60\x1e\xfa\x57\x92\x78\xc1\xdd\xa3\x65\x41\x5f\x25\xf3\x64\x6f\x88\x4a\xc5\x8e\xd7\x2d\xf3\x7b\xbe\x5d\xd1\xc2\x18\x71\x65\x02\x77\x8f\xb0\xdf\xab\x2c\xf8\xe0\xed\x74\x45\x0d\x33\x77\x60\xcd\x64\x66\x86\x1a\x45\xb3\xc3\x6d\xfe\xb6\x4b\x0e\xd6\xb2\x6d\xc4\x3d\x24\xb8\x37\x9d\x90\xa6\xbf\x0d\xb5\x12\x69\xf0\x80\xb9\x1d\xc6\xe7\x6a\x18\x17\xf7\x95\x55\x45\x7f\xe9\x0f\xab\xed\x01\xcb\x37\xea\x33\x39\xcc\xf0\x9d\x6b\x57\x23\xf5\xc9\x45\x73\x4c\xc1\x5a\x82\x4b\x05\xcc\x15\x12\xf7\xc1\xe8\x8d\x31\x6d\x8e\xee\xa1\x12\x08\xb3\xed\xd2\x7a\xde\xc0\x23\xb7\x66\x84\x02\x35\x11\xd9\x25\xbb\x3b\xd8\x14\x76\xbd\xb2\x44\xc0\x4c\xad\x82\x15\xfb\x7d\x1a\x6c\x9e\xff\x93\x51\xfd\xd9\x73\x9a\xf3\x2d\xbb\x27\x0d\x8b\x6f\x74\xde\x32\x27\x8b\x82\x51\x47\x5c\xad\xce\xba\x1d\xa8\xce\x92\xd7\xb0\xe4\xd4\x49\x0a\x9d\xf9\x10\xee\xc6\xd6\x58\xad\x3b\x5a\xb6\xca\xa1\x34\xa2\x19\x2d\x95\x09\xe3\xce\x58\xb8\xd3\xb7\xb4\x81\xa9\x18\x07\xdd\x07\x18\xbf\x2e\x58\x97\x40\xb2\xe1\xcd\x35\x06\x7b\x24\xcb\x5f\x5d\x1b\x80\x31\x49\x90\x08\x60\x0c\x4e\x82\x24\xff\x1e\xcd\x7c\xd9\x93\xf1\x80\xc7\x9d\x5c\x97\x56\x99\x56\xf3\x39\x6e\xbe\x36\x27\x76\xd2\x0b\xd0\x12\x73\x97\xa5\x29\x65\xc9\x0f\x42\xd5\x29\xe2\x9e\xb8\x87\xaa\xca\x5f\xf5\x52\xb3\xe0\xc4\x0d\x6e\x05\xa1\x00\xb8\x2a\x3e\x37\xc4\xf1\xa4\x81\x11\x47\x10\x45\x3a\xc4\x6e\x1c\xda\x94\xa3\xc5\x90\x87\x81\x7b\x8b\xbe\x87\x0c\x9c\xdd\x1d\x0f\x63\xb7\xcb\xb4\x57\x25\xfb\xa3\xcb\xe3\xf3\x6d\xc5\x64\xd4\x78\x53\x55\x9f\xbc\x86\x88\x0b\xc0\x44\x16\xd0\xb3\x6d\x09\xc3\x7a\x25\xaf\x1e\x23\x3c\x8f\xca\x89\x49\x07\x20\x74\x7f\x0b\x82\x67\xe2\x27\x0c\x45\x93\x64\x6f\xb6\xc9\xe1\xa3\x25\x20\x5a\x05\xbe\x14\x06\x29\x7b\xd3\x41\x84\xa6\xb1\xb5\xa3\x0e\x63\x0e\xac\x3c\xb3\x27\x59\xe3\x42\x0c\x05\xf8\xbf\x2d\x2e\xff\xae\xb3\xb9\xe1\x83\x22\x73\xcb\x8d\xd6\x13\x39\x69\x82\x85\xdf\x1e\xbf\x92\x2f\x3a\xe4\xb6\x1e\x45\x02\x77\xaa\xfb\x8f\xc5\x80\x82\xcd\x22\xe6\x2e\x7c\x79\x25\xed\xdd\xd7\x1d\x9e\xc5\xd7\x9d\x0e\x9f\x71\xe6\x9d\xf2\x1a\x6b\xf6\x48\x50\x6c\xc7\xec\xa2\x25\x7c\x55\xd3\x28\xe1\x15\x93\x03\x75\x0f\x37\xfc\x40\x8e\xfd\x6e\x58\x02\x97\x14\xc8\x9a\xf7\x0b\xfb\x0d\xae\xd6\x0b\x2a\x60\x56\xf3\x8d\x40\x51\x87\xa0\xd6\x74\x88\x43\xc0\xcf\x14\x11\x95\x31\x91\x10\xb1\x0c\x3f\xde\x70\xe0\xe3\x2c\xf3\xf2\x93\xc7\x50\xe4\x0b\x51\x4d\xf3\x7b\xdb\xab\x7d\x69\xaa\xc2\x7c\xdc\xf9\x1b\x86\xe0\xab\xaf\x65\xe5\x5b\xd4\x66\x9b\x67\xe4\xea\xb7\x76\xb2\x46\x5f\x2f\xe2\x6e\xe4\x33\xd7\x5e\x94\xdb\x60\x7a\xe8\x67\xf4\xda\x9f\x01\xbe\x87\xb1\xf1\x1b\x6a\xd1\x16\xad\x1b\x1e\x0f\x3e\x1f\xf5\x45\x62\x70\x99\x5f\xbe\x2f\xa8\xa3\x29\xd3\x87\x64\x80\x9f\xf5\xe3\x75\x96\x62\x2e\xe5\x76\xda\xe4\xc4\x48\x94\xd1\x96\x60\x06\xff\xbb\xa1\x27\xee\xd8\x21\x17\x20\x17\x87\x2d\xa7\x5e\xd8\xcf\xd9\x94\x63\x07\x8b\x96\x23\x56\xf6\xe9\x79\x05\xc6\x4e\xcf\x63\x1a\x15\xa8\x8a\xc8\xf8\xfb\xd3\x5e\xa8\x05\x17\x08\x85\x55\x0e\xd8\x67\xd9\xf0\xb4\x10\xc4\xe5\xff\x74\x26\x87\xad\xca\x36\xc4\x0a\xa9\xfe\x5c\x59\x71\x9e\xcf\x82\xb2\x6d\xda\x71\x2b\xd0\x11\x18\x7c\x8c\x64\xf7\x52\x5f\x36\x40\xf2\xd7\x75\x7e\xff\x70\xa4\x65\x21\x34\x75\xc6\x8c\x64\x9c\xcb\x18\x10\xdd\xbc\xbf\x35\xeb\x52\x9e\x1c\xa8\x62\xc3\x1b\x6e\x14\xa7\xc3\x72\x0a\x9e\x38\x26\x5f\x7d\x1f\xc4\xbf\x76\xc4\x58\x26\x0b\xfe\x82\xc6\xb0\xcd\x04\xc6\x01\x0c\x47\x68\x2f\xbb\x6a\xbd\x9a\xa3\x0c\xe2\x28\x69\x5b\xc6\xa8\x9d\x0a\x6e\x4d\xd3\x46\xe8\x44\x16\x03\xcf\x9d\xdd\x90\xd8\x83\x7a\x40\x66\xee\x9a\x03\x68\x5d\xc3\x84\x3a\xef\x5e\xe9\x7b\x5c\x83\x0b\x39\x53\x3b\x98\x2e\x8f\xc0\xe0\xf0\xc3\xa5\x06\x4e\xef\x14\xd5\x67\x20\xf2\xe3\x9f\x99\x00\xba\x49\x37\xe6\x1b\x81\x2c\xfd\xfc\xb7\x96\x26\x6b\xe0\xe0\x72\x96\x00\xd3\xa4\xd1\xef\xd4\x58\x65\x83\x34\x7b\x5f\x90\x83\x69\x24\xaf\x87\x67\x63\x61\x16\xab\x02\x85\x0d\x38\x72\x4e\x0d\xc1\xc4\x8f\x06\xa7\x27\xd1\x58\x41\x5c\x65\x61\x08\x47\x4e\xce\xe8\xa2\x44\x17\xc1\x66\x05\xa2\x3c\x8b\xc8\x14\xb9\x6b\x77\xdf\x00\x9b\x19\x24\xba\x6e\x78\x71\xa9\x2c\x78\xf7\x72\xda\x8e\x14\x50\x23\xb1\xbf\x07\xbd\x14\xcb\xd6\xca\x1b\xb7\x6a\x1c\x41\x44\xcf\x33\x99\xb0\x46\x24\x07\x14\xac\xae\x73\x4f\x0e\xc0\x33\x1a\x25\x99\x1b\x60\x2e\x13\x81\x1b\x73\x0e\x3b\xac\xba\x74\xf8\x1e\x48\x69\xb5\x82\x50\xbb\xb7\x0a\x0d\x94\xd4\x02\x38\x20\x1c\x34\xc1\xe5\x27\x28\xd5\xb8\xbe\xc1\x6e\xa6\xf2\x0d\x56\xfd\x3b\x92\xa1\x80\x2d\xb0\xf1\xff\x47\x52\xf4\x5f\x72\x56\x0e\x9d\x1f\x58\x87\xaf\xbb\xde\x38\xd5\xb9\x59\x29\xee\x62\x69\x1f\x79\x99\xb2\x05\xd6\xcd\xc2\xd0\xaf\xe2\xfe\x56\x53\xa1\x93\xf2\xc5\x17\x86\x67\x6c\x62\x0f\x7b\xf9\x7c\x54\x7f\x67\x5a\x19\x3e\x12\x3a\xa2\xc6\x85\xe4\x67\x97\xba\x0a\xdb\xda\x7c\x17\x76\xb7\x4c\xfc\x93\x52\xd4\x98\xf7\x11\xec\xc2\x48\x4c\x2f\xa9\x6a\xab\x26\x7d\xab\x1f\xab\x20\x5c\x65\xe4\xfb\x55\xe0\xc7\x02\xa5\xbf\xed\x76\x5e\x4d\xbd\xe9\x7e\x60\x2a\xbc\x22\x1e\x79\x22\x56\x1a\x3d\xef\xd2\x9c\x59\x5c\xd6\x18\xf7\xac\x8c\x5f\x06\x67\x16\x23\x71\x8d\x9a\xc4\x9a\x47\xdb\xcb\xdc\x3b\xdb\x30\x73\xc5\x1c\xcd\xb2\x2e\x98\x6c\xf3\x17\x46\xef\xc7\x44\xd2\xb8\x2a\x7e\xba\xd9\x28\x74\xb5\xc0\xd7\x78\x23\x96\xb0\xfa\x87\xcd\x39\xdf\x7f\x8d\x52\x5f\xd5\xbe\x7f\x06\x73\x22\xe5\x4d\x23\xa4\xed\xf5\x9f\xd1\x71\xbf\x72\x62\x43\x01\xf0\x38\xea\xed\xeb\xdd\xb1\xfd\x32\x03\x82\x9d\x8e\xe3\x1d\x0b\x53\xea\x5d\xbe\xda\x36\x12\x83\x83\xe1\xe4\x6d\x50\xa4\x73\x80\xaf\xe9\xab\xc4\x20\x96\xc6\x9d\x91\xad\x80\x0e\x3a\x10\x2a\x59\x21\xd2\x55\x8f\x09\xc9\xaf\xf2\x3b\x3e\xd7\x28\xd0\x93\x07\xcd\x4f\x6e\xff\x45\x90\x00\xb0\x02\xe3\x68\xdc\x12\x50\xe5\x2d\x38\xc7\xf4\xe8\x1e\x7e\x26\x93\x66\x94\xbb\x6f\x8a\x14\x0a\x99\x86\xd7\xf7\xf8\x9c\xeb\xa2\xef\xa4\xd4\xfa\x2b\x69\xaf\x67\xb1\x65\xaf\x49\x36\xd7\xf6\x04\x7f\xe1\x08\x27\xeb\x46\x94\x48\x5a\xc4\xbe\x60\x71\x72\x6a\x12\xd5\x5b\x73\x6e\xfe\xe3\xc7\xf5\xa5\xaa\xf6\x32\xef\x32\x8a\x14\x5c\x8f\xa7\x87\x75\x48\x64\x63\x7c\x18\x47\x32\xe2\x5c\xc8\x6d\xd4\x2b\xd4\xb6\x8f\x2a\x11\xca\x7c\x92\xb1\x1a\x3e\x7b\x78\x1c\xf3\x0c\xbe\xb6\xa1\xf9\x9e\xa1\xbe\x87\x1f\xbd\xac\x8d\x74\x4a\x86\x58\x82\x9e\x66\x50\x99\x1c\x21\x61\x3a\xac\x87\xe5\xee\x69\xbc\x64\x02\x67\x7b\x20\xe2\xf3\x69\x87\x71\x11\xe7\xf8\x84\x0a\xce\xfb\xfc\x41\x7a\xf5\xd2\xe1\x91\x6b\xc1\x2d\x31\x13\x65\xab\x4d\xe5\x25\x16\xee\x5c\x69\x20\xf4\x85\xfa\xe0\xec\xd1\x03\x0b\xf3\x56\x28\xec\xa3\xf6\x55\x11\xe6\xab\xf8\x00\xf2\x81\xca\x8d\xa3\x7c\xe4\x5b\x07\xf2\xfd\xe3\x1f\xb3\x58\x92\x84\x6b\x79\xde\x2a\x3d\xf1\xaa\xa9\x19\x7b\x8e\x19\xb3\x51\xbb\xf7\xce\x1a\xf1\x03\xc3\x14\x4b\xb8\xb2\xa4\x45\x5a\x63\x40\x2a\x1f\x33\xb7\xea\x84\x4a\xa2\x51\x72\xc6\x43\xad\xc6\xb1\xb4\x74\x3c\x0b\x74\xff\x66\xc1\x95\x66\xc7\x2d\x1d\x1b\x81\xa6\x86\x99\x12\x58\x2d\x80\xe3\x00\xb7\x8e\xb1\x93\x41\x4a\xc8\xfa\x3c\x00\xc7\xc4\xf7\x20\xf4\x44\x2c\x7d\x39\x48\x8b\xae\x5d\x18\xbf\xdc\x9c\xa7\xa7\x34\x8d\x76\xc8\xd6\xc3\xd0\xf9\x25\xf3\x9d\xaf\x98\x49\x4a\x73\x3c\x82\x9c\xbc\x2d\x00\xc2\xeb\x2e\xef\x44\x80\x18\x6f\x37\xd7\xf2\xfe\xeb\xae\x6f\x94\xfe\x9b\xd0\xff\x11\x77\x28\xb0\xf1\xbf\x09\xfd\x2f\x71\xcb\xeb\x1d\x6e\x6e\xf8\xd5\xe6\x64\x71\xa1\xf1\x44\x81\x83\xad\x26\xe2\x0f\xc2\xeb\xca\xa9\xcf\xfe\xd8\x32\xc0\x3e\x25\xca\x68\x4d\x31\x64\x62\x48\xf4\xd8\x2a\x2d\x3f\x77\x19\x63\x12\xb2\xcb\xf7\x99\x74\x8b\xcb\x54\x12\xdc\x62\x6e\x53\x9f\xb4\xef\xc9\xae\x23\x8c\x11\xc3\xbb\x5e\x9f\x0f\x55\xa8\xb2\x73\x22\x4f\x4c\xbf\xc6\x2c\x56\xf0\x08\x93\x15\x79\xfa\x3a\x5d\xee\xad\xf8\xa4\x65\x53\xfb\xca\xd9\x13\x7c\xa4\x65\x12\x63\x51\xa3\x2c\xf7\x19\x7e\xef\x04\xbe\xf0\x89\x10\x78\xdf\xa4\x3c\x53\x73\x24\xbf\x11\x55\xba\xb5\x28\xb1\x6d\xba\xab\x49\x2c\xf2\x9b\x98\xcd\xee\x4f\xea\x4f\x03\xe1\x77\x85\xf8\x51\xb8\xaf\x84\x44\x1c\x0b\x44\x29\x59\x66\xa0\x42\xf5\xe4\x48\xf7\xfe\xf0\x12\xa8\xd6\xbb\x87\xf6\xe9\x51\x36\x99\x3c\xbf\xb4\xed\x62\xeb\xad\xdb\xbd\x0f\x6e\xe1\x8c\x98\x7e\x01\x9c\x99\xcf\x0b\xbb\xaf\x47\xa9\x03\x61\x1c\x69\xba\x22\x4a\x89\x6a\xc5\xab\xd2\x5e\xab\x02\xe3\x58\xb2\xfe\x1e\xc4\xdd\x6c\x35\x3b\x5a\xcd\x90\x10\x56\xc9\x54\x36\x4f\x7e\xc8\xdb\xa7\x57\x60\x8a\x33\xe2\xf4\x37\xae\x04\x1b\x3c\x28\xa6\xbe\xfd\xa1\xc1\x24\x93\x1f\x95\x59\x05\x4f\x3d\x94\x4b\xa9\xf1\x51\xf3\x54\x76\xae\x03\x3e\xa1\x2d\x09\xb3\x6d\x94\x8e\x8b\x05\x3d\x14\xa3\xee\x7a\x52\x24\x5f\xd9\x29\x1d\xa7\x7e\x61\x5d\x82\x33\x47\x90\x9a\xe8\xbf\x96\xc3\xcb\xba\xd3\x6f\x4a\xda\xa4\xc7\x16\xff\x54\x75\x4a\x43\x63\xf2\x0f\x8f\xf2\x0a\x53\xf9\x08\xa5\x35\x75\x0d\xd9\x3d\x8e\x30\x32\x30\x88\x10\x9e\xf1\xd1\xd8\x0c\x41\xb8\xf1\xfe\x26\x53\x60\xac\x80\x52\xe4\x0d\x18\x89\xc3\xb5\xac\xce\xc9\xcd\xbd\x0f\xff\x40\xf6\xdc\x2a\xa7\xcc\x71\xb7\xc0\x37\x78\x6f\xe9\xab\x54\xf6\x1e\xc7\x4e\x36\x08\x51\x95\x76\x1b\xe6\x28\xe2\x3e\x40\xbb\xca\x65\x15\x46\xf5\x3b\x92\x8f\x20\x18\xf9\x09\xc5\xc0\x66\x40\x7c\x8d\x92\xcb\x90\x70\xac\x11\x86\x9e\xf2\xb2\x4f\x94\xac\x09\xc1\x7b\x7b\xac\x2d\x4f\x3b\xd8\xe1\xc8\x9b\x47\x79\xf6\x77\x02\x39\x9f\x0c\x40\x2c\xf5\x46\x12\xd3\xd1\x7a\x61\xf3\xfe\x6a\x25\xa3\x17\x8a\x7c\xc1\x6c\xa5\x9e\x3e\xfb\xf3\x89\xd3\xa2\x99\x7b\x2f\x14\x24\x92\x28\xe5\xe8\x0b\x7b\x12\x6e\x31\x33\xce\x5a\x4f\x1d\x8b\x79\xa3\x71\xc4\xa0\xb1\x7d\xcc\xb0\x12\x27\x7b\xc9\x0a\xb5\xa6\x93\x43\x51\x9e\x24\x17\x5e\xb5\xa9\x3b\x11\x9a\xb1\xe6\x39\xa6\xbe\x0c\x9c\xaf\x8c\x5c\xf9\x06\xf2\x21\xfd\x83\x11\x53\x49\x86\x63\x86\x9a\xdb\x9d\x0d\x00\x07\x98\x40\x8c\x94\x66\xa9\xb8\xb6\x4d\xe5\x31\xfa\x7b\xc7\x40\xda\x72\x66\xa6\x37\x8c\x1f\xa2\x6e\x78\xe3\xdc\x01\x08\xad\x61\x56\xb8\xaf\x2d\xad\x51\xeb\xd8\x8e\x4a\x91\x04\xc2\x4e\xf7\xd6\x2a\xac\xc9\x5f\x7d\x61\x67\xa1\x50\xdd\xf5\x3f\xcd\xf0\xdb\x64\xb8\xee\x97\xd4\x62\x24\x3f\x39\xf1\x55\x93\x9d\x62\xe7\xca\x73\xbe\x74\x1b\x9f\x45\xee\x38\xae\xa7\x7f\xbf\x4f\xab\x2c\x2e\x5d\x7a\xb5\x86\x68\x57\xd5\x9d\xdc\xc7\x14\x9f\xba\xca\xaf\x5f\x34\x94\x75\xdf\x09\x03\x3a\xbc\x1f\x26\x35\xd4\xb4\x0e\x9f\x70\x44\xe0\x62\xd7\xd1\x0e\xee\x11\xc9\xb2\xe6\x3a\x59\xbf\x4f\x95\xe7\x91\xfa\xc0\xea\x19\xed\x6e\x92\xe2\x63\x87\x6c\xa2\xb6\xed\xfd\x25\xc2\x1f\xbf\x71\x8f\xc8\x68\x36\x8d\x77\x0f\xdf\x96\x57\x85\x92\x2f\x23\x07\x24\xc6\xc4\x70\xbd\xb5\xc4\x6a\xa5\xd5\x85\xd5\x4f\xf3\xc8\x9c\x44\x1e\x7c\x2c\xd2\x99\x24\x9e\xfa\xd1\x43\xbb\x5c\x39\x97\xad\xc5\x96\xa0\x12\x62\x12\xc3\xac\xe6\x0c\x7a\xdd\xf3\x89\xb4\x29\x1c\x9d\xcd\x8d\xf1\xde\x76\x92\xad\xdf\x8f\x99\x91\x3e\x3d\x71\x86\xc8\x28\x80\xb5\x98\x61\xee\xbe\x0f\x06\x2c\x47\x5b\xdd\x0c\x80\xa2\x82\x17\xf4\xed\x07\x85\x5f\x47\x5b\xc5\x90\xf5\x51\x25\xb1\xb8\xcc\x92\x3c\x99\x03\x20\xb5\x6e\xac\x69\xaf\x7a\x78\x83\x02\x29\x3a\x4b\xda\x65\x4a\x82\x93\x4c\x94\x7e\xa6\x6c\xa5\x60\xb3\xc1\xe9\xa2\x20\x29\x4c\x06\x04\x18\xec\xfa\x43\x53\xd7\x25\x5f\x0a\x04\x95\xf6\x27\x21\x86\xe5\x61\x7e\x8a\x3c\x29\x9f\xba\x39\xfb\x6b\xbf\xa6\xca\x4b\x8c\x6d\x23\xd7\x0a\xf1\xec\xf2\xf6\xb5\x5a\xef\xd9\x8e\x80\xdf\x25\xd2\xd5\xe4\x47\xfb\x5d\x99\x10\x86\xb8\x66\xda\xfb\x81\x5f\xba\xf2\xaa\x89\x24\xe9\x47\x0f\x0b\xc3\xf1\x2e\xc3\xeb\x3f\x4b\x46\xe5\x7a\x10\x72\x27\xa7\x3b\x9b\x86\xc9\xc9\xf0\xad\xf0\x1a\xee\x93\x0f\xc9\x12\x08\x93\xa6\xbb\x6a\xcc\x51\x9a\xf3\x20\x50\xee\xa7\x7d\xd2\x2c\x73\xfe\xea\x46\x6b\x7b\x9b\xbe\x65\x06\x94\x82\x28\x12\xb8\xa7\x06\x9f\x02\x83\x9f\x10\xb4\xf4\x31\x53\x4f\xb6\x4c\x05\xd6\xbb\x78\xf1\xc4\x9c\x7b\x02\x24\xef\xdd\x3a\x97\x1e\xd3\xa0\x99\x87\x78\x92\xe4\x76\x33\x1f\x4c\x19\xfe\xd4\x35\x77\x64\xfd\xe7\x90\x0f\x18\x05\xef\x43\x2e\x92\xf2\x78\x68\x15\xf8\x46\xd1\x77\x20\xb5\x07\x81\x69\x4c\x33\x8f\xe8\x96\xb0\xb3\xcf\x79\x7b\x22\x95\xa6\x93\xaf\xb4\xcb\xc2\xda\x37\xbc\x9d\x4c\x4a\x7a\x08\xa0\xe6\x0a\x6a\xce\xf9\xce\xef\x3b\x5d\x04\x2d\x69\xe3\xef\x25\xe5\x73\x97\x51\xce\x76\x4b\x1f\x2f\xc8\xf8\x06\x61\x84\x9d\x1a\xb9\x07\xda\x99\xc9\xca\x8b\xce\xae\xd4\x7e\x87\x23\x2f\xe3\x1e\x1f\x9e\x41\xe2\x26\xf7\x09\xaa\x8e\xa3\x14\x1a\xc5\xd8\xd2\xe1\x2d\xcc\xe3\xb8\xfe\x98\x33\x39\xc1\xac\x2f\x3b\x8e\xcb\x5b\x3d\x9b\x4a\x35\x1c\x13\xa1\xf5\x61\xb2\x90\x09\xfd\x5d\x14\xa9\xab\x94\x01\x8b\x1d\xdd\xec\xe3\x96\xa0\x8d\x71\x2e\xf3\x6a\xb9\x7e\x13\x2c\x67\x70\x77\x65\xfa\x6b\x1c\xc4\x78\x57\x5b\x62\x96\xfa\x1f\x5a\x24\x4a\xda\xd9\xdc\xf0\x0b\x42\xd8\x0e\xc6\x32\x9f\x76\x76\xab\xe9\x75\x23\xc0\xb4\x8c\xb4\x66\x61\xa9\xdf\x35\xc0\xb2\x63\x2b\x87\xa1\x9b\x3b\x55\x73\xdd\xda\x4b\x7e\xf3\xc5\x85\xaa\x65\xf7\x1d\xc5\xe2\xd5\x54\xb8\xb9\xe6\x40\xef\xab\x49\xfa\xc0\xd4\x0e\x12\x6b\xc7\x2a\xda\x01\xdf\xde\x10\x9d\xbc\x1e\xab\x4b\x20\x6c\x15\x3d\x7b\x82\xd1\x97\x05\x17\xd3\x95\xaf\xe2\x59\x89\x1d\xf1\x61\xe4\x87\x4d\x38\xd7\x32\x98\xc6\xed\x8c\xf5\xb6\xb2\x86\xfe\x8c\x38\xc4\x29\xba\xfb\x75\x1d\xa0\xf5\x95\x56\x9e\x22\x3e\x94\x57\xc6\x3f\xa4\x72\x66\x63\xfd\x96\x1f\x16\xe7\x91\xb8\xf6\x6d\x38\x3a\xcb\xcf\x59\x9f\x6d\xc7\x65\x1f\xb1\xaa\x79\x34\xd1\x40\xbf\x49\x72\x0e\xe0\x70\x02\x98\xa4\x12\xa2\xdf\x52\x50\xc9\xef\xd4\xc3\x9a\xcf\xa3\x8f\x45\x84\x71\xfc\xac\x9e\x22\xe9\xe4\xae\xe0\xcc\xdb\x01\xd8\x80\x16\x22\x7f\x4e\xb1\x72\x83\x9e\x3e\xc6\x7b\xa9\x91\xa2\x82\x37\xac\x73\x6d\x44\x90\xc9\xe0\x06\xdc\x1c\x26\x48\xc8\x67\xba\x00\x48\xfc\xc1\x60\x95\x49\x96\x28\x07\x52\x30\xc2\xe9\x47\xae\x4c\x3a\x28\xf9\xaf\xdb\xab\x21\x99\xfc\x72\x47\x80\x56\xbd\x11\x48\xeb\xb8\x76\x5a\x00\x11\x76\xeb\xf3\x39\x3d\x53\x2e\x72\x15\x18\x02\x9b\x3e\x39\x9e\x76\x6e\x63\xcc\xa3\x1a\x82\x44\xf2\x37\x16\x47\xcd\x5a\x85\xf7\xcf\xe0\x97\xf9\x44\x25\xda\xad\x89\xa3\xed\xf4\x85\x89\x0c\x1e\x10\x6c\x3a\xda\x86\xff\x03\x6a\xb0\x38\x66\xe3\x5d\x06\x86\xf6\x42\xf1\x31\xf3\x97\x37\x77\xc7\xa6\x1e\xd0\x97\x84\xbe\x94\x1e\x7f\xd0\x36\x63\x41\x4a\x9e\x94\x66\x82\x6a\x36\x12\x99\x43\xea\xfd\x62\xf3\x1d\xa8\xd2\x50\xbe\xe0\x71\xe5\xa6\x9c\x04\xa3\x29\xe0\xdd\xc0\x05\xa5\xc8\x24\x63\xce\xba\x0f\x43\x57\xb0\x76\xf9\x79\xd4\xc6\x59\x55\x04\x5e\xcb\xe1\xf8\xf5\x0f\x10\x0a\x57\x1e\xfe\xe3\xac\x1e\x13\x44\x76\x17\x0c\xee\x05\x8f\x31\x04\x70\xef\x39\x73\xae\x68\x17\xfe\xd3\xdb\x5e\xd5\xd9\xfa\x8a\x3b\xcc\x43\x1f\x70\x44\x2d\xbe\xe9\xd8\xdd\x7f\x5e\x2b\x2b\xc5\x64\xe4\x8b\xf3\xc7\xde\x51\xa7\x2f\x6b\xc8\xb4\x8e\x27\x67\xdc\xd9\x78\xfe\xb0\x45\xae\x7e\xb6\xca\x97\x73\xa1\x11\xb8\x88\xca\x2c\x57\xc7\x23\xbd\x25\xdc\x51\x08\xbb\x9f\x8f\x1e\x0d\x44\x26\xaa\x3d\xc4\xbd\x72\xd1\x77\x13\x50\x09\x73\x23\xba\x2d\x5a\x3c\xf1\x49\x71\x91\xb2\x28\xee\x7b\xfc\xf6\x8c\x84\x02\x85\xe1\x52\xdf\xb2\xc8\x0c\x28\xd5\x60\xe2\x59\xb5\xbe\x26\xea\x08\x75\x67\x78\xe2\x05\xff\x5c\x4b\x7b\x77\xb1\xaa\x4d\xae\x1b\x22\xdf\xae\x29\x34\x74\x4d\xc5\xd2\xda\x1d\xce\xab\x1f\xbf\xe6\xe8\xd7\xbb\xb4\x9e\x4b\xb2\xcd\x07\xb2\xe2\xfd\x7e\x66\x18\x6c\xda\xb1\xdf\x58\x79\xe7\xbf\xfb\x38\xe4\x7f\x37\xc6\x7d\xa8\xd4\x26\xc5\x8b\xbf\xa4\xf3\x26\x56\x44\x03\x83\xe6\xee\x05\xf8\xee\xe1\xf5\xca\x3a\x4d\x91\x96\x61\x36\x9e\xb9\x4d\x1e\x9a\x5a\xca\x72\x4e\xb2\x98\x61\x9e\xad\xf6\xa3\x8b\x1f\xbe\xc9\x4b\x5f\x5a\x74\x06\xd8\xbb\x1b\xa9\x66\xf6\x64\x3f\xdb\x1f\x90\xe2\xd8\x13\x7d\x2b\x81\xa0\x8a\x7b\x03\xed\x2b\x0a\x08\x3f\x30\x79\x82\x88\x61\x54\xcc\x04\x87\x71\xd8\xfa\x42\x39\xa9\xaa\x8e\x61\x19\xd1\x9b\xbe\xde\x13\x0f\x77\x1f\x28\xc5\x10\xeb\xeb\xf1\xc4\xca\x24\x53\x76\x64\x10\x3d\xd7\x43\x39\xff\x92\x50\xa7\xfa\x45\x92\x73\x64\x08\x8b\x28\x94\x1c\xc9\xcb\x13\x95\x4d\x54\x1b\xce\x86\x5b\xd9\x90\xb3\x97\x45\x30\x8c\x25\x8e\xda\x07\xe8\x6f\xd4\xc9\x65\x14\xe0\x84\xcd\xec\xfc\xe1\x2d\x33\xae\xc0\x9f\x17\xaa\x7e\xeb\xe4\x9c\x8d\xc9\x78\xe6\xe9\x75\xec\xd5\x7b\x8c\x62\x2a\xce\xa8\x02\xe9\x8a\x4b\xa3\x04\x0e\x40\x71\x84\xd1\x18\xfc\xa9\x53\xe2\x28\xc7\x8b\x88\x13\x66\x6c\x15\xca\xfd\xdd\xab\x89\x47\xbb\xeb\x4c\x1c\xc4\x0e\xb0\x9c\x0e\x85\x4e\xe7\xf7\xe7\x24\xfb\xe7\xd1\xc8\x4c\xff\x95\x77\x23\x5a\x87\x50\x18\xfa\x60\xdf\x13\xbd\x47\x68\xf9\x81\x13\x82\xfe\x0c\x07\x6f\x75\x63\xcf\x3c\x02\xfd\x81\x81\xf7\x5a\x8c\x56\x4c\x8d\x71\x15\x27\x19\x9c\xc7\x17\xbe\xa2\xdc\xc7\x02\x55\xd2\x80\xa1\xae\x16\x20\x79\x6b\x01\x41\x53\x8b\xf9\xf4\x68\x46\x17\x60\x1a\xa8\x39\x1c\x11\xb5\x77\x87\x50\xf5\x6c\xb9\x8b\xd7\xec\xd0\x93\x9a\x75\xaf\x36\xaf\x5d\xd8\xba\x6b\x42\x49\x5e\xc7\xa8\x61\xf0\x8c\xf7\x0b\x30\xe5\x16\xa6\x90\x5b\x92\x2b\xbb\x1b\xaa\xc9\xf8\x64\x09\x18\x76\xa8\x2c\xaf\x09\x7d\x5c\xbe\xb3\x4e\x80\xa8\xdc\x94\xb2\x68\x3b\x24\x62\x41\x17\x7c\xcf\x2f\x66\x18\x31\x05\x30\x96\x24\xc9\x37\x5d\xd5\x36\xd9\xb7\x66\xb2\x29\xc1\x2e\xa1\xdd\x64\xb4\x1d\x35\xfd\xe6\xe6\xe8\xf7\x43\x43\x57\x63\xb1\x11\xac\xb3\x1d\x15\xd7\x5d\x6e\x89\x63\xb3\x36\x34\xdf\x7a\x3f\x74\x65\x21\xfc\xea\x6f\x35\x7e\x6e\x51\xeb\xd9\xcd\x19\xf1\x5f\x66\x9c\xb7\xef\x09\x09\x6a\xfa\xe7\x57\x57\x07\xb5\x27\xf6\xfc\xeb\xeb\x1e\xbc\xeb\x37\x95\x91\x99\x3e\xa5\x19\x23\x55\xce\x17\xdf\xaa\x8e\xdb\xbf\x4e\x73\x94\xf8\x4f\xd4\x4f\xdf\x51\x47\x5f\xb8\xdf\xab\xe3\x85\xbb\xdc\x3e\x86\x76\xb4\x66\xdc\x0e\x50\x81\xc2\xd0\x11\x6c\x6b\x83\x07\x1b\x2c\x6a\xb8\x39\xa0\xe6\xcf\xf6\x33\xf6\xdd\x9b\x5d\xfd\xe2\xdf\xd6\x86\xa3\xf8\xc9\x4d\xae\x68\xed\x38\x80\x93\x4e\x47\xda\xba\xa5\x03\x97\x4b\x41\x66\x62\x0d\x20\xd5\x34\x3d\xbe\x2f\xb3\x22\x1e\x9d\xfd\x7c\xdc\x3f\xef\xc0\x31\xb7\xac\x65\xcc\xa5\xa0\xd3\x3c\x6f\xab\x87\x6b\xbd\x7c\xde\xe9\x27\xdb\xb9\x8c\x84\x14\x87\x2f\x2f\x4d\x62\x02\x2d\x7f\x84\xab\x9b\x8b\x1c\xf6\x52\xd4\x2d\x23\x24\xe1\xd4\xba\x2c\xb7\xd2\xee\xda\xd7\x9c\xf2\x63\x61\x77\xc7\x92\x0c\x84\xc6\x19\xb9\xd6\x65\x3f\x7a\x62\x8e\xa2\x8e\x63\xab\xd2\xa6\xaa\x74\xce\x66\x56\x37\x47\x84\xff\xc7\xfd\x0d\x5b\xc0\x17\x7f\x49\x2d\xea\x6d\x7d\x53\xfa\x3a\xbb\x11\xc2\x70\x7f\xea\x0d\xca\x29\xe7\x1e\xb2\xc9\xdd\x5a\x23\x7f\x23\x5c\x50\xb1\x37\x2a\xf4\xb0\x82\x22\xc6\xb9\xea\x2e\x4d\x95\xa4\x88\xbe\x9d\x56\xb2\xfd\x9a\xa1\xc3\xed\xe4\x4e\x67\xc5\x97\xa2\x49\xc2\x29\x67\x2d\x68\xb0\x74\xbf\x1d\x25\x20\x11\xb7\xbf\xf0\x51\x1e\x89\xe9\x4e\x73\x95\x15\x7e\xad\x2d\xc5\x39\x27\xc6\xf0\x62\xb8\x46\x5a\xf9\x78\x06\xcd\xcc\xde\xf9\x14\xf3\xcf\x29\xd8\x28\x8c\x1d\xb4\x37\xf3\xa0\xbc\xd1\xd8\x09\x33\xdb\xea\xa2\x23\x3e\x89\xbc\x80\x24\xd2\xc1\x7c\x5e\x92\x23\x3e\x77\xe8\x72\x16\x4c\x8f\xae\x8b\x63\xcf\xfe\xc8\x27\x1b\x25\x59\xf2\x40\xa1\x26\x82\xc4\xa6\x1d\xd5\xb7\x3d\x43\x4f\x9c\xd2\x60\xaa\x17\x60\x6c\xb9\x33\x41\x3e\x7e\x27\x11\x5a\xee\x29\x36\x7b\x9c\x42\x69\x51\x42\x73\x82\x2d\x81\x71\x96\x96\xd9\xda\x77\x76\xdd\x51\x00\xe5\xde\x57\xfb\x01\x01\x1f\xd3\x83\x66\x09\x32\xee\x1d\x3e\x8c\x35\x33\x24\xd3\x09\x12\xc4\x61\x7c\xf5\x53\x6c\x23\xf3\xb6\xe5\x76\xf3\x4a\x80\x14\xb7\x52\x4d\x4d\x29\xc6\xa9\x91\x39\x5b\xa8\x02\xa6\x5c\xaf\xb7\xb6\x77\x1d\x76\xb0\x5e\xd9\xc7\x9d\x28\x11\x49\x6a\xbd\x90\xa8\x3f\xda\xd1\x8d\x46\x6e\xcd\x5e\xaa\x86\x28\xe4\x82\x94\x0f\x55\xbb\xfc\x25\xe4\xe2\xd7\xf5\xa6\x28\xe4\x03\x70\xa4\x81\x71\xba\xcb\x15\xf3\xb5\xc7\x47\x30\xb7\x99\xeb\x8a\x0c\x97\x5f\xd3\x59\x43\xef\x93\x11\xee\x19\xcb\xce\x55\x43\xce\x39\x08\xff\x77\x49\x9d\x26\xd0\xfd\x09\x12\x46\x0d\xaf\xba\xfb\x4e\x83\x39\x88\xbc\xaf\xbc\x3c\xb0\x9d\xae\x72\xb9\x7b\x49\xf0\x7b\x3b\xcf\x9d\xff\xe8\xb3\xfd\x42\x1a\x83\x63\xf5\x6e\xe0\xbc\xdd\x02\xbd\x61\x17\xdf\x99\x80\x58\xd2\xc8\x34\x4d\x88\x8b\x7e\xfa\x59\x5f\xd1\x88\x99\x70\x2c\xba\xdf\x5a\xfa\xfe\xcd\xe6\xd1\x63\xb9\xc1\x9d\x69\x4a\xab\x75\x9c\xae\x67\xbf\x79\x7c\xf6\x64\xc2\xef\xe5\x1f\x3d\x43\xf7\xaf\x85\xde\x7a\xb4\x24\xfc\x48\xc9\x6e\x31\x7f\x8b\x0d\xea\x5d\x2c\x7c\x15\x3c\x3b\xf2\x93\xd6\x8e\xcd\xcb\x08\x43\x99\xdd\x92\x33\x73\xd1\x01\xdb\xda\x84\xba\x13\xa9\xe0\x4f\x8e\x51\x41\xf8\x84\x53\xef\xcd\x58\x91\xdf\xb8\x69\x95\x0e\x20\x1f\x37\x40\xb9\x1d\x47\x68\x20\x57\x44\x59\xd7\x88\x9d\x88\x26\x00\x9b\x0c\x40\x33\xa7\x1f\x59\xfc\x2c\xe2\xcb\x94\xb5\xa8\x47\xf2\xfd\xde\x56\x0c\x06\x67\x18\x25\x6f\x51\xc8\xa2\xd6\x77\x90\x73\x2c\xba\x67\x28\x72\x88\x7a\xcc\x94\xfa\x7b\xbb\xba\x10\x9c\xc5\x63\x75\xa7\x3c\x66\x73\x47\x7a\x01\xc5\x32\xee\x69\xbc\x53\xb5\x78\xe2\xd8\x46\xc5\x45\xfd\xd3\x46\x22\x14\x79\xab\xf3\x56\x2b\x66\x7a\xf7\x81\x9d\xd3\xbb\x70\xc7\xf7\x79\x9a\xf8\xa6\x7b\x40\x51\xa5\x3f\x94\xa1\xff\xf3\x29\xbe\x0f\x95\x7c\xbc\xb9\xe1\x57\x57\x46\x35\x19\x4e\x7c\x15\x8f\x70\xf8\x47\x84\x48\x31\xcc\xac\x59\xc2\x53\x3d\x52\x6a\xc5\xaa\xc6\x9e\x64\x9a\x43\x0f\x87\xa4\xef\x9b\x0a\x7f\xe7\xdb\xd9\xe5\x6c\xf5\x83\x94\xb3\xe8\xd1\x3b\xb7\x06\xf7\x70\x68\xf8\x7a\xee\xd7\x30\x61\x80\x99\x9a\x67\xc8\xa3\xb8\x5b\xa6\x75\x45\xfd\x79\xa7\x30\x8c\x00\x0e\x6d\x57\xdf\x8f\x3c\xa3\x1b\x37\x0d\xe0\x12\x62\x19\x99\xc5\x09\x0b\xe3\xb0\x6c\x45\x64\xf7\x6e\x0d\xb6\xa3\x46\x36\x8e\x19\x7d\x24\x68\x99\xef\x98\xbf\xc6\xea\x54\x80\x48\xdf\xaf\x31\xc4\x5d\x22\xd2\x02\xba\xb5\xf1\x95\xcd\x2e\x33\xeb\x17\x27\xf2\xcd\x12\xb3\x86\x21\x98\xce\x9e\xa9\x5e\x44\x91\x80\xb5\x0c\x1b\x95\x1c\x92\xf7\xcc\x76\xfd\xda\xba\xfe\x4a\x7d\x9a\x7a\xee\x30\x35\x88\xbb\x37\xc0\xaa\x3c\xe0\x1f\x23\x9c\x8e\x32\x71\x46\xa5\xe4\x4c\x98\x89\x1f\xc4\xc1\x3a\x98\xf9\x54\xb2\x88\x91\xdc\xe0\x94\x74\xac\x9b\x37\xab\x29\xa4\x56\xc2\xe7\x77\xbb\x5a\xb0\xda\xa1\xb2\x32\x7f\x94\xb9\x91\x91\x05\x07\x4c\x53\xd0\xf6\x39\x22\xe1\xae\x50\xab\xef\x64\xa9\x7a\x39\x87\x08\xc5\x23\x72\xb4\x4f\x71\xda\x9e\x64\x87\xdb\x19\x8a\x3a\xb6\x31\x4b\xdc\xe0\xa0\xee\x62\xe5\x1f\x3f\x42\xd2\x43\xf9\x30\x56\x2a\xd6\xe0\x0b\xab\xde\xfe\x73\x4e\xdb\xb2\x2f\xd4\x42\x9c\xbd\x05\x81\xc4\xb0\x89\x54\x1a\x20\x40\xa9\x31\x96\xea\x5f\x08\x9c\xd2\x76\x9a\x67\xc7\xd5\x92\xd4\xdc\x01\x91\xe1\x95\x3f\xc4\xfb\xfc\x0b\x58\x90\xbb\xfb\xf2\x03\x48\x70\x79\x97\x82\xa2\xfc\xc3\xb4\xa6\x67\x91\x9b\x28\xd0\xfa\xba\x71\x3a\xe8\x10\xa2\x05\xaa\xad\xea\x38\x03\x83\xac\x36\x4f\xdd\xd7\x57\x68\xb0\x93\xed\xa3\x24\xcd\x08\x6b\x3e\x43\x23\x8a\x32\x7d\xbf\xc7\xac\xd7\x66\xfd\x81\x48\x03\xa8\x7d\xe8\xcb\x54\x94\xcb\x60\x67\xcb\xd2\x1f\xd3\xd4\x6b\x73\xca\x3d\x1e\x85\x10\x99\x23\x99\x9f\x32\x2d\xdb\x58\x60\x76\x82\x67\x3e\x15\xd5\x2d\x46\x55\x9e\x50\x38\xc8\x76\x3f\x15\xd6\xfe\xf8\xb7\x41\xdd\xa7\xbf\xef\x9c\xe9\xa0\x05\x5c\xcf\xfc\x5c\xd0\xb6\x69\xc7\xd6\xbb\xa9\x5d\xf7\xfd\x76\xe9\xa3\xb0\xf0\x09\xb5\x0f\x7f\x83\x33\x11\x1a\x72\xc6\xcc\x5e\x94\x5c\x4f\xe9\x06\xa9\xba\x55\xf4\xef\x5e\x47\xa6\xc2\xbd\x0c\x78\x73\x47\xec\x19\x71\x32\x6c\xa5\xce\x4f\x57\xd6\x2c\xc9\x3e\x6c\x16\x3d\xfc\x22\x55\x4f\xe8\x0f\x25\x4a\xf3\x18\xd2\xac\xc1\x5a\x23\xc7\x2c\xcf\xeb\xa8\x2a\x77\xed\xcb\x6c\x4a\x82\x3b\x1b\xf3\x0a\x23\xa7\x48\xd6\xa3\x2d\xc7\x77\xe8\xe1\xae\x08\x06\x5e\x61\x4d\xdf\xd7\x4d\x15\x64\x3f\x61\x70\x04\x05\x7e\x7b\x6b\x30\xd6\x66\xdf\x77\x67\x0e\x1a\x1c\xd5\x2d\x66\xbc\xe9\x78\x8d\x35\x41\x11\x20\x60\xe3\xff\x17\x00\x00\xff\xff\x46\x3c\x33\x56\x0f\x21\x00\x00") + +func _assetsTestsSpinGifBytes() ([]byte, error) { + return bindataRead( + __assetsTestsSpinGif, + "_assets/tests/spin.gif", + ) +} + +func _assetsTestsSpinGif() (*asset, error) { + bytes, err := _assetsTestsSpinGifBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "_assets/tests/spin.gif", size: 8463, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + var __assetsTestsQrQrwithlogoPng = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\xfb\x55\x54\x1c\x51\xb7\x05\x0a\x23\x0d\x41\x1a\xd2\xb8\x35\xae\x41\x1b\x77\x77\x08\x10\x02\x34\x90\x40\x43\xe3\xee\xee\x34\xee\x09\x1e\x2c\x48\x02\xc1\xdd\x3d\x40\x08\x21\x58\x70\x6f\x20\xb8\xbb\xc3\x3f\xf2\x9d\xf3\x7f\xe7\xde\xb7\xfb\x50\x0f\x35\x46\x8d\x5d\x55\x6b\xcf\x35\xd7\x9a\x63\xcf\x15\xf3\x46\x53\x19\x0f\x87\x12\x07\x05\x05\x05\x4f\x55\x45\xe1\x2d\x0a\x0a\xca\xcf\x7f\x17\x16\x1a\x0a\x0a\x0a\x83\x98\xe8\x10\x0a\x8a\x60\xa7\xaa\x82\xac\xae\x4f\xce\x41\xa0\x6f\x00\xb1\xe2\x42\xf0\x5d\x96\x3f\x5f\x2b\x0b\x3d\x13\xfd\x52\x24\x87\x1b\x4e\x34\x78\x4d\xc9\x14\xc3\x22\xe6\xfb\xba\x1b\x4f\xf4\x0e\x07\x26\x31\x76\x7b\x5d\xe8\x26\xb1\xb7\x25\x19\x53\x57\x21\x9d\x82\x8c\x6c\x20\x2a\x3d\x67\x14\xee\x5f\x66\x2c\xb9\x16\xd5\x9f\xa8\xa2\x80\xe4\xd7\x89\x43\x39\x81\x4f\x52\xc5\xd7\xfa\xef\x9d\x5f\x96\x7e\x1a\xb5\x00\x7d\xe9\x0e\xfe\x2a\xa6\xa5\xaf\xaf\x27\x3d\x79\x39\xe5\x9e\x8c\xa0\x03\xbc\x7a\x33\x3e\xd5\x13\xbc\x8b\xca\x76\xe3\x29\x07\xe7\xc4\x40\x0d\xfd\x6e\x80\x83\x86\x16\x51\x4b\x0c\x00\xe0\x98\xbf\xc2\xc2\x22\xfe\xf1\x16\x04\x62\x8b\xff\x4a\x47\xf7\x86\x5c\x5d\x56\x26\x1f\x92\x8e\x08\x09\x51\x78\x6e\xaf\xaa\x3a\x5a\x68\xb4\x07\x0f\x4a\x56\x9c\x02\x3e\x8d\x6c\x5d\x1d\x2e\xde\x6b\x3a\x37\x2f\x56\xc3\x3a\x7f\xd5\x55\xcc\xf5\xbb\x4a\xd0\xd3\xd3\x0b\x08\x10\x83\x74\xa1\xd0\xad\xcd\x4d\x54\x74\x74\x45\x6d\xe3\x36\x8f\x09\xbb\x46\x0d\x41\xd3\x74\xcb\x6a\x58\xa7\x5d\xf3\x62\x6f\x5a\x4b\x4b\x0b\x29\xd7\x3b\x3a\xa7\xa1\x91\x91\xca\x8a\x0a\x87\x9d\x6e\x26\x55\xaf\xa3\x25\xc3\xea\xd9\x7b\xa9\xc8\x8e\x8e\x8e\xd8\x58\x9c\xd5\xdd\x47\x80\x2c\x28\x57\xcc\x93\x8f\x32\x01\x8b\x12\xe8\xf8\x67\x68\x74\x94\x46\xd8\x09\xdc\x61\x17\xaa\xe4\xe6\x76\x36\x48\x1b\x1c\x0f\xcf\x4c\xba\xc8\xe0\x36\xa6\x94\xf4\xf3\x70\x74\xac\x9c\xd3\x2d\xd5\x15\xf7\x3e\x02\x8b\xba\x31\xd1\xcd\x35\x3b\xaf\x5e\xec\x4e\xfa\xe6\x91\x65\xaf\xad\xad\x45\xbd\xa4\xd5\x54\x51\xb1\x29\x43\x9d\x9d\x9a\x8a\xa7\x14\xdc\xdb\x9b\x2e\x47\xfe\x5a\x1f\x88\xcb\xe0\x7a\x3f\x03\x92\x1c\x74\xe5\xb7\xfa\x3d\xd7\xec\x6c\x22\x0f\x60\x49\xd9\xed\x09\x45\x37\x6e\xf7\xba\x0c\x04\xd6\x5b\x8d\x2c\x74\xfa\x37\xe7\x68\xdf\x63\x74\xc2\x9e\x47\x84\xff\xad\xf7\x42\x76\x63\x33\x6e\xc0\x35\x67\xd9\xa9\x79\xde\x41\x43\xb2\x09\x73\xcd\xad\xd5\x62\xc2\x1d\x6c\x5d\x1e\xf5\xef\xed\xc8\x7d\x66\x84\xa5\x61\xf6\x08\x26\xb9\x7a\xd1\x44\x48\x77\x36\x00\x41\x27\x02\xc6\xf7\x89\xb1\xc9\x52\x5a\x5d\x77\x6b\x05\xa9\xab\x81\xc2\x97\x08\x0a\xc5\x81\x80\x0e\x27\xb3\xd8\xff\x86\x16\x69\xc9\x91\x8a\xd2\x07\x49\x50\xda\x68\x47\xf9\x4b\x82\xa0\x6b\x59\x76\xea\xcf\x30\x01\x01\x32\x86\x23\x40\x80\x4e\xa7\x5c\x80\xec\x8e\x87\xd8\x09\x56\x25\x74\xdf\xad\x15\x8c\xff\x62\x9d\x34\x41\x29\x6c\xe3\xf9\x76\xa8\xf5\xdf\x73\xab\x6b\x2e\xdf\x74\xd9\x73\x35\x59\x85\x78\x81\x45\x6c\x6a\x20\xc0\xaa\x7e\x0c\x1d\x56\xe3\x3b\xbc\x2c\xbf\xce\x95\x31\x92\x62\x36\xb5\xaf\x6f\x05\x0b\xe4\x89\x07\x5d\x9d\x9a\xdf\xcf\x70\x9d\xfd\xfb\xb4\x0a\xa3\xd6\xb7\xe9\x46\x31\x98\x1a\x93\xa5\xa5\xa5\xdb\x63\x9f\x9d\xa3\xf3\xdb\xda\xee\x46\x84\x57\x39\xb9\xb9\x9d\xa2\x7b\xac\xea\x0b\xc6\x48\x1f\xef\xaf\x57\xbb\x83\xa5\x0d\x2c\xa3\xfa\x6a\xad\x46\xb2\xce\xce\xce\x5e\x10\x9a\x93\xcf\xb4\x79\xee\x5f\xaf\x06\xaf\x5a\xf0\xc5\xe8\x8b\x24\xbe\x6f\x75\xdb\x2c\xd5\x29\xa1\xdc\x33\x29\x9f\xee\xba\x9c\x79\xaf\xad\xad\x8d\xc4\xb9\x53\xd9\x89\x81\x75\xfa\x71\x99\x74\xe5\x14\xb2\xd5\xaa\x82\x14\xf6\x67\x2a\x2d\x2f\xe9\x64\x9b\x9d\x96\xd3\x79\x4c\xf0\xf9\xcb\x3f\xff\x1c\x1a\x32\xac\xb3\x88\xe1\x5c\x49\x7e\x1c\xd8\x5b\x68\xb4\x7f\xfb\x36\xf9\xa1\x56\x92\x9c\x3b\x83\x83\x93\x13\x28\x2b\x33\x79\x31\x5f\x6f\xed\xee\xee\x4e\xf5\x18\xfd\xd3\x2f\xc4\x4a\x51\x71\x60\x7d\x20\xae\xda\xa4\x7b\x05\xd4\x39\x60\x16\xda\xad\x85\xa0\x33\xea\xf4\xbb\xbc\x3f\xee\x76\x8e\x96\x12\x10\xf0\xb8\xdc\x9b\x8e\x89\x89\x49\xa0\x81\x2b\x28\xf4\xe7\xcb\x86\xe9\xb2\xeb\x15\xf9\x7f\xa0\x63\x62\xb2\x40\xf6\x84\x6a\x7c\x7b\x4b\x30\x6f\x4c\xda\xc9\x60\xfe\x28\x36\x11\xbe\xae\xb6\xe1\xa7\xf3\x5f\x2c\xcb\xe4\xc5\x6f\xc6\x3c\x3c\x04\x84\x9b\xee\x63\xd7\xcf\x4b\x98\xf5\x63\xd1\x7d\x13\x42\x93\xf4\xbf\x3a\x58\x6a\xe5\xbf\x11\xd1\x87\x42\xad\xac\xac\xd0\x72\x99\xc6\xce\x95\x93\x68\x14\xe7\x84\xf7\xf6\xf6\xec\xec\xec\x90\x1c\xcb\x6d\x9e\x61\x49\x8c\xb5\xb5\xb5\x75\xfd\xb0\xac\xe2\xee\xc7\xab\x45\xda\xe0\x07\x02\xa3\xdd\x85\x46\xfb\x66\xa7\x65\x99\xfa\xe2\xe2\xad\xf1\x02\x79\xe4\xc5\xaf\xf3\x00\x6d\x6d\x82\x25\x79\x55\xd5\xa1\x26\xc7\x45\x95\xb3\xd5\x63\xb9\xaf\x6f\x13\xc0\xa2\x7c\x12\x12\x4b\xd7\xbc\xf9\xbd\x90\xd7\x56\x56\xc5\x9c\xd9\x5a\xcf\x4f\x8f\x8b\x4d\x8e\xfb\xb3\x3a\x18\x4c\x9a\x9f\xa5\x1c\x21\xe4\x28\xb5\x9a\x25\xe2\x41\x0f\x22\xaf\x6b\x3c\xf7\xa1\x86\x49\xfe\x5b\x9f\xac\xed\xec\xed\x7b\x0f\x35\x4b\xdc\x6f\x4e\xd6\x20\xbd\xa9\xaf\x74\x7c\xf2\x5e\x00\xbc\x8f\x57\x02\xf7\x4a\x4b\x4c\x11\x9e\xfb\x33\xbd\xe8\x37\xa7\x83\xb4\xbd\xd8\x55\xae\x2a\xea\xea\xf2\x15\x28\x7d\x90\x8d\xc1\xa4\x8c\x69\xb8\x9d\x1d\xfb\x52\x5f\xa3\xfd\x2c\x03\x03\x43\x40\xf7\xb2\x05\xdf\xe3\xcd\x46\xd2\xce\x35\xc3\xbf\x25\x90\x34\x91\x2f\x69\x8f\x3c\xc4\x7a\x83\x2b\xa1\xfb\xfc\x63\x12\x8c\xf6\x38\xef\x9b\x9d\x22\xee\xa5\x5d\xd7\x01\xe3\x25\x00\x0c\x0c\x0a\x60\xe4\x64\x89\x56\x51\xd4\x17\x87\x88\xff\x17\x2f\x3c\x90\xac\x04\xbb\x7e\xd3\x2d\xcb\xcc\x24\x9f\x13\xfe\xd6\xd6\x46\x39\x33\x60\xdf\xb8\x50\x53\x03\x09\x67\x61\x11\x11\x21\x77\x6a\x5b\x76\x32\x18\xb5\x34\x84\x96\x4c\x0e\xfc\xf8\x71\x27\x42\x03\xec\x43\x84\x85\xc1\x53\xf0\x15\xb5\x47\xb2\x85\x67\x6d\x04\x42\xfe\x61\x8d\x5e\x9c\x51\x22\x40\xe2\x2a\x7e\xba\xca\xb8\x1d\xfd\x05\x3e\x8a\xb1\xa8\xc6\x24\x2e\x29\xa7\x48\xd0\x83\x08\x9d\x8a\x9a\xda\x1d\x32\xec\xa5\xe9\xe2\x67\x40\xf2\xb9\x3e\x1c\xbe\xc6\x51\xdd\xf1\xd6\xd8\x98\x4b\x08\x1b\x61\xd0\xe6\xb1\xeb\x7f\xdc\xb9\x7d\xff\x41\x4e\x4e\x0e\x69\x35\x9c\xce\xd5\x7d\xbb\x45\x05\x91\x4b\xdc\x58\xf1\xdb\xaf\x0c\x7b\xf1\xf2\x6e\x65\x6d\x23\x7a\x30\xaf\x76\xca\xce\xb3\x1c\x5a\x29\x33\x79\xe8\xd5\xb7\x4d\x76\x8a\x35\xd9\xe4\xf8\x1e\x60\xae\xda\x03\x79\x0d\x87\xc3\xf5\xf4\xd2\xe6\x98\x54\xff\xd8\x08\xdc\xb9\x5f\x15\xb3\xe1\xd0\xd0\x0f\xba\xd6\x75\xc8\xd3\xea\xb0\xf1\xcd\xa0\xe7\x33\xa9\x9d\xd2\xfe\x1f\xfd\x49\xec\xf1\x41\x5d\x5c\x5c\xec\xec\xd8\x41\x5f\x15\xa9\x46\xf7\xab\xbb\x57\xfe\xf1\x85\x8b\x51\x9f\x7c\x48\xdf\xda\x5c\x8b\xab\xb9\xa1\x21\x45\x0b\x9f\x59\x7f\xf4\x44\x91\xb2\x70\x9b\x7c\xc9\x64\xab\xd3\xb2\x58\xfd\xfc\x12\x48\x56\x57\x77\x0a\x81\x81\xcb\x14\x35\xaf\x8c\x97\x24\x66\xbe\xeb\xd1\xb6\xfa\x78\xe4\x7d\x92\xa6\x18\x47\xea\xb8\xd4\x72\x9a\x41\xf5\x91\xd8\xa9\x59\x9c\x91\x71\xe3\x6c\x73\x18\x19\x3b\x64\x71\x16\x55\x6b\x93\xb5\xd2\x68\x4f\x86\x40\x96\x96\xe4\x65\x89\xba\x6f\x31\x8e\x1a\xfc\x82\x7e\xfb\x2f\xfb\xce\xa0\x8f\x37\x1c\x65\x84\xf6\x14\x55\x83\x4e\xf5\x7f\xf0\x65\x8f\xd4\x19\xf1\x89\x79\xee\xfd\x6d\xaf\xaa\x23\xa0\xc3\x2a\x34\x6e\xf7\xaa\x79\x20\xa0\xa4\xbc\xeb\x7b\x29\x4d\x47\x43\x49\x45\xb5\xd8\xe1\xeb\x3e\x3e\x65\x23\x20\xe9\x77\x81\x52\x30\x0d\x90\xd5\x85\x42\x9f\x4e\xfa\x5e\x9a\xe9\x80\xc2\x3f\x7c\xf8\xe0\x75\xb8\x70\x2b\x85\x5b\x32\xe9\xbb\xf1\x03\x0f\xa4\x34\xec\x0a\x0e\x20\x25\x10\xbc\xac\xd3\x6d\x39\x3d\x3d\xed\xf1\x1d\x26\x8b\x26\x38\xed\x9a\x34\x27\x27\x25\x20\xa0\xe7\x18\xff\x49\xf4\xc4\x37\x13\x4d\xc0\x88\x09\x24\x47\x8a\x4b\x46\xc2\x09\x47\x7c\x26\x11\x4c\x43\x9b\xc3\x19\x7d\xf4\x57\xf7\xd7\xc7\xb4\x82\x76\xc4\x0c\x41\xf6\xf3\x75\x96\x71\xa4\x5c\x68\x23\x33\x95\xef\x83\x2f\xa7\xf5\xf3\x87\xea\x0e\x3a\x7c\xcf\x57\xfc\xf6\xb9\x6a\x63\xe0\x73\x73\xb5\xe6\xd2\x8f\x17\x3a\xab\xb7\xc8\xd1\x5c\x71\x22\x56\x4d\xc0\x10\x25\x04\x98\x12\xde\x7e\x71\xb4\xec\x3f\x98\x48\xdd\xf5\x42\xe7\xa7\xb1\x7c\xae\x66\xb3\xeb\x86\xd2\x2a\x91\x0b\x16\x02\x19\xfc\xe1\x73\x77\xbc\xe2\x74\xdf\x98\x66\x16\x08\x41\xb7\xe3\x21\x76\x13\xa7\xa8\x9d\x3a\x6d\xa7\x18\xce\xad\x06\xe3\x57\x4d\x3e\x39\xe4\x1c\xe6\x03\xea\xe8\xeb\xbf\xa8\xca\x37\x27\x94\xec\x3d\x0f\x30\x96\xa4\x64\xc8\x67\x63\x17\x11\x69\xc1\x2e\xf2\x90\x38\x3d\x49\x50\xf9\x3f\x8e\xa5\x73\xe6\x20\x06\x84\x16\xdb\xb6\x62\xc3\x41\x2e\xad\x46\x30\xfe\xf2\x96\x65\xa7\x1b\x10\x53\xe4\x6d\x18\xcb\xd8\x39\xac\xbe\x5d\x25\x1f\x5a\xce\x8c\x06\x90\x60\x04\x0f\xa2\xb7\x71\xc4\xf8\xd3\x82\x9f\x55\x41\x80\x0e\x7c\xf2\xc8\x52\x5d\x76\x9f\x70\xf0\x20\x2f\x10\x3d\x8b\x3c\xb2\xa0\x4f\xd2\x27\xcf\x5b\x2c\x57\x43\xc4\x74\x88\xe3\x04\xe3\x8c\x7c\xf8\xd0\xab\xa4\xb8\xb8\xd0\x3c\xc3\x32\x74\xfb\x36\x8e\x8c\x87\x01\xab\xac\xbc\x5c\xe7\xed\x5b\x35\x75\xf5\xde\x34\x54\x74\xcc\x80\xfb\xc3\xe6\xfc\x4f\x9f\x3f\x77\xfb\x9c\x9a\xad\xf2\xfb\x60\xbc\x78\x51\x6d\xd2\x2d\x25\x25\x45\x63\x34\xf4\xeb\x97\xdf\x5a\x04\x99\x4c\xbd\xe7\xfe\x8c\xfd\x6c\x95\xa2\x35\xc9\xf9\x0b\x91\x44\x9e\x77\x0d\x36\xc8\x9e\x50\xa4\x1a\x1c\xbe\xa6\xce\xd3\x09\x08\xb7\x0f\xeb\xad\xb1\x1a\xa1\x9c\xd3\xde\xde\xaf\xee\x7e\xba\xd9\x48\x92\xe5\x17\x12\xf2\x5a\x6e\xf3\x8c\x6e\x76\x39\x5d\x1f\x50\x4d\x61\x11\x5c\xdb\x6d\x2f\x2b\x63\xaf\x69\xa5\xf2\xc9\x53\xfe\x6b\x88\x05\x58\x72\xf2\x86\x42\x49\xc1\x66\xd2\x0e\x73\x10\x91\x1a\x56\x06\x06\xb9\x99\xf9\xf7\x5f\xdf\x5e\xee\xcf\x56\x9b\x0f\x26\x22\x7f\x95\xea\x94\x24\x82\x45\xd1\xb2\x62\x62\x62\x4e\xb6\xe9\x41\x3e\x77\xbb\x25\x6b\xaf\xc0\x22\x2e\xc8\xb9\x5a\x73\x64\xbb\x3d\xdf\xa7\x0a\x28\xc7\xeb\xe0\xfb\x2b\x47\x9f\x70\x2d\xc9\x4b\xe2\x3b\x46\xc7\x5a\x83\x44\x1a\x49\xca\x90\xd0\xe1\x10\x86\xff\x4b\x0e\xd7\xf8\x08\x38\xec\x4f\x95\x54\x38\xea\x8d\xea\x89\x3d\x64\x37\x73\x64\xeb\xef\xdf\xbf\x2c\x12\x98\x7e\x03\xf5\x63\x52\x71\x10\x16\x53\x72\xaf\xd3\xf5\x01\x6a\x71\x2f\x14\x44\x61\x21\x43\x83\x0a\x31\x2d\x2d\x8f\x92\x7e\x9c\x46\xd1\x04\xdb\xf0\x1a\xa0\xaf\x06\x15\x1d\xb3\x27\xeb\x28\x4f\xd2\xff\x3b\x80\x3d\xcd\xee\x62\x67\xc2\xb8\xcd\x03\x55\x9f\x90\x88\x68\xed\x55\xe6\xeb\xe2\x18\x22\x56\x34\x8c\x57\x89\x1b\xae\xae\xae\x10\xd9\xd7\xaf\x7f\x0f\xf3\x74\x03\x1d\xa4\x88\x15\x2d\xad\xad\x57\x5b\x5c\xd1\x3d\x76\x3c\xc4\xd6\x0c\xb6\x77\x76\x6c\x6e\x8c\xc0\xc4\xc4\x53\xd5\x26\xd2\xab\xd6\x7f\xa5\x05\x28\x13\xae\x81\x28\xb0\xbe\xe6\xdb\x28\xdc\xc4\x8d\x71\xfa\x2b\x91\x44\x73\x10\xd3\xa4\x76\xa9\xae\x59\x56\x63\x64\x31\xdd\xae\x09\x28\x7c\x6a\x4a\xb7\x25\xaa\xbf\x5f\x21\x6e\x80\xa1\xfc\xc5\xd8\xab\x7c\x67\x65\x22\x5d\x3d\xbd\xcb\x9d\x09\xf4\x3c\x73\x35\x35\x1c\x3f\x94\x97\xb7\x82\x92\x2e\x38\x84\x3e\xd2\x5a\x92\x16\x3a\xdd\xb3\x83\x82\x0c\xdb\xbc\x4b\xd6\x1b\xc5\x61\x47\xb2\x6e\x18\x1a\x27\x3d\xa8\x2a\x58\xfd\xde\x93\x3b\x34\x68\x78\x26\x79\x97\xfd\x43\x06\x38\x34\xf8\xff\x09\x89\xcf\x3c\x0e\x45\x64\x69\x59\x19\xda\x67\x4b\x60\x9f\x9c\xbc\x7c\xf6\xcc\xba\xb6\xb1\x31\x9e\xbd\x67\xe3\x3b\x2e\x31\xae\x8f\x13\x36\x0a\x73\x7b\xaf\x62\xdd\x44\xc0\xd7\x47\xcb\xe8\xfa\x02\x94\x78\xe0\x2c\x4e\x1c\x5e\x97\x8f\xa8\xaa\x0d\xe2\x7d\x90\xcd\xcd\xcd\x1a\x4c\x3e\x01\x01\x62\xa1\x82\x96\x65\xa7\xb9\x02\x9c\xc1\xd3\x7f\xb4\x9a\x9c\x6e\x39\x5f\x56\xc6\xee\xf3\xe2\x25\x36\xf6\x47\x95\xd5\xba\x1e\xd7\x9c\x01\x33\xd9\x68\x80\x5d\x23\x25\xf7\xdd\x3a\x76\x54\x1f\xfd\x44\x6f\x61\xc1\xdb\xd2\xbf\x59\xef\x3b\x20\x33\x69\x1c\xfa\x56\x23\x59\x18\x60\x45\x01\xca\x91\x74\xae\xf7\x7e\xd7\x47\x5c\xfb\x14\x58\x2d\xcb\x47\xa9\xa9\xa9\x15\x15\x9c\x2e\x96\x07\x73\xb5\xff\xd0\x76\xb0\xee\xbe\x3d\x9a\x2b\xea\x6e\x25\xff\x6c\x49\x6e\x75\xb9\x37\x1d\xfc\xb0\x41\xdb\x9b\xa6\x5d\xa4\xd4\xf9\xfc\x74\xdf\xd3\xa5\xfd\xfe\xbd\xb8\xe3\x42\xc3\xc3\x43\x80\x0c\xdd\x90\x0a\xd4\xc0\x40\xc4\xeb\xc0\xc0\x74\x98\x51\xf5\x2c\xec\xa5\x14\xb9\x90\x03\x39\x9d\x88\xef\xd9\xdf\x6c\xe7\x2e\x6c\x83\x49\x0b\x3e\xc7\xd5\x2e\x63\xb7\xef\x21\xae\xf7\x57\x87\xa5\x3a\x25\x68\xb0\x7e\xd7\x87\xc7\xeb\x55\x5a\x41\x3b\x5d\xf9\x0b\x98\xb6\x91\x91\x84\xe7\x9e\xae\x82\x60\x5e\xd0\xe3\x9d\xe3\x42\x03\x36\x5c\x6b\xa9\xdd\xfb\xf8\x57\x1a\x47\x60\xb0\xd9\xf1\x4a\x67\xb3\xc3\x3c\xc3\xfe\x20\x32\xa2\x36\x47\x73\xbb\xf2\x7d\x73\x8f\xf3\xbb\x92\xc9\xa1\x4b\x25\x39\x79\x50\xf8\x9f\x3f\x6f\xe7\xcc\x18\x45\x7f\xfb\x33\xf0\xf1\x11\x9e\x92\x2e\x3b\x79\x3b\x3a\x72\x2d\xad\x4d\x6a\x49\xe3\x11\xd5\x70\xbe\xd7\xd5\x0d\x57\xe9\x3b\xf0\x6a\x87\x37\x31\xaa\xbe\x3d\x53\xad\x9f\x77\x68\x6d\x6d\x0d\xa9\x95\x93\x97\x9f\xf0\x12\xc8\x2a\x3e\x3f\x3f\x47\xa5\x45\x8a\x24\x9e\x8c\x9c\x61\x08\x68\x90\x11\x13\xf7\x98\x58\x62\xaf\x6f\x6c\x4c\xc4\x56\x65\x65\x51\x1a\xc6\x7c\x2b\x2a\x2a\xda\xcc\xfb\x44\x4c\xf1\xdf\x9e\x80\xc6\xdc\x57\xcf\xd4\x87\xdd\xf4\x2f\xa1\x04\x20\xdf\xfa\x54\xa6\x93\x03\x58\xad\x8d\xb9\x83\xed\xd7\xf8\xea\xb6\x4e\x0a\x56\x82\x7c\x66\x7c\x08\x97\x68\xa6\x88\x84\xff\x99\x9c\xec\xbe\x3f\x12\x77\xf9\xaa\x5f\x0d\x4b\x61\xd1\x40\x1b\xc9\xca\xca\xe2\x7a\xdf\x64\xc0\x99\x1e\xe9\x17\x1d\x17\x97\x2d\xe9\x2f\xc4\x96\x25\xa3\x3d\x75\x30\x5f\x1f\x85\x4f\x8d\x83\xb5\xe4\x74\xbd\x3e\x10\x27\x4b\x34\x78\x6a\x3b\x59\xdc\xeb\xe4\xea\xe9\xe9\xe9\x72\x20\xff\xfa\xf5\xef\xa5\x56\xf7\x50\xa3\x57\x7f\xfa\x4e\xa9\xb1\xb1\xb1\x4f\xec\xc7\x77\x3d\x70\xc9\xb8\x15\xe2\x4f\x56\x3a\xfd\xdf\x37\x39\xa0\xe2\xc3\x24\xc6\x9c\x17\x9b\x0e\x83\x9f\xaf\x83\x51\x43\xdf\x55\x46\x32\x9b\x54\x42\xa9\xa8\xa9\xf1\xb2\x10\x74\x60\x49\x3f\xe2\x2b\x37\x7a\x55\xb7\x89\x42\x45\x53\xa0\x48\xa2\xba\x83\x94\xb0\xd3\xd2\x5c\x57\xa0\x38\x68\x61\xc9\xe9\x7a\xb9\xdd\x9b\x8a\x32\x2f\x73\x9c\x43\x50\x90\x64\x0d\x31\x53\x67\xa9\x7e\x93\xba\xe7\xd5\x3e\x39\x39\xb9\x56\xc7\x2b\x2a\x2a\x8a\xda\xfc\xa9\x90\xe4\x3c\xb9\x62\x28\xaf\x7b\x6b\x77\xb2\xa4\xef\x62\x60\x60\x60\x47\xf7\x6d\xa7\xff\x75\x64\x3d\x8b\x3f\x5a\x13\x3a\x26\x06\x86\xa0\xfd\xcc\xc1\xd6\x48\x36\x44\x56\x4d\x0d\x67\x09\x7e\x7d\xb4\x6c\x6f\x67\xc7\xf4\x03\x4f\xe1\xb9\x50\x1b\x4d\xf6\x43\x4a\x4a\x98\xd4\xbb\x24\x5a\xe9\xbc\x62\x5b\x85\x97\xb6\xb6\xb6\x90\xc0\xc1\x44\x6a\x0e\x76\x76\x10\xe3\x52\x77\xb0\x74\x45\xef\xa9\xd1\xdf\xd4\x54\x62\x43\x9d\x0f\x0f\xb3\xfc\xf6\x75\x46\x82\x8f\xf9\xb2\x61\x07\x5e\xe2\xeb\x31\x79\x1f\x0e\xb3\xe2\x59\x6c\x92\x93\x6a\x3e\x77\x33\x55\x2f\x86\xcf\x2e\xa2\x77\xea\xdc\xd4\xa7\x08\xc5\x04\xf7\xcb\xcf\xe1\x90\xac\x19\xff\xef\x8e\xf4\x0c\x43\x6d\x20\xe4\x79\x41\x77\xb6\xa0\xb3\xde\xf3\x80\xa0\x20\xa9\x0a\x48\x45\x45\x45\x87\xcb\x1a\x9a\x0d\x54\x5f\xbf\xd9\x71\x91\xb4\x69\x28\x35\x35\xb5\xa7\xcc\xb1\x7d\x39\x68\xf7\x0f\x73\xb8\xc6\x0f\xbb\x46\xaf\xe3\x15\x6a\x01\x0d\x16\x1d\x59\x59\x54\xce\x6f\x6f\x89\x31\x88\x98\x98\x98\x7a\x0a\x3b\xe9\xb0\x22\x22\x22\xe8\x64\x9e\x50\x89\x58\x86\xfe\xe9\x16\x73\xed\x8f\x21\x1b\x2d\x1d\x1d\x12\x22\xec\x4a\x20\x80\x4f\xf8\x48\xb6\x70\x77\xd0\xa3\x18\x67\x99\xda\x1b\x43\xc3\xf9\x46\x7b\x7d\xd5\x57\xf6\xe4\xc4\x8a\xbd\x71\x07\x24\xbd\xbd\xbd\x8e\x0b\x0d\xb2\x0e\xd1\x56\xf5\xa2\xdc\xdc\xf8\x02\xcb\x4e\xde\x30\x18\x6c\xd2\xef\xce\x1f\x5e\x31\x9a\x2b\xde\x77\x1b\x48\x8d\x3f\xf8\x45\x35\x45\xf3\xb3\x14\x5e\x95\x85\x95\x55\x9e\x84\x2f\xa1\x40\x51\x51\x91\xf7\xe1\xc2\x74\x9d\xa5\xba\x8b\xe5\xe9\xfa\xc0\xee\xee\x6e\xbe\xef\xf9\xd6\x08\xaf\xf9\x0f\xba\x2d\x09\xa7\xa5\x96\x22\xe5\x24\x34\xdc\xd7\xbe\xbe\xb7\xea\x3c\x9d\xba\x6f\xde\xa0\x60\xad\x04\x5e\x2f\x9b\x0f\x26\x86\xd2\x60\x21\x42\x56\x29\xfa\x20\xea\x19\xdc\x92\x01\x37\x2e\xf2\x8f\xca\x0a\x0a\x60\x11\x97\x7c\xec\xf2\xb9\xd9\xe9\xe9\x91\x3c\x49\xaa\xd1\xab\x26\xd3\x5e\x34\x9f\x70\x5f\x5f\xdf\xa1\xa1\x21\xba\xf7\x55\xac\x91\x40\x0a\x37\x64\x0f\x6a\x38\x86\xd7\x70\x3a\x57\xd8\x8b\x97\x57\x81\x2a\xf2\x91\xc0\xf9\x56\x77\xd6\xf5\x41\xfe\xa0\x87\x1b\x41\xfb\x99\x10\x02\x52\x52\xd2\x44\x0a\xfe\xad\x92\xcf\x41\x67\x8f\x04\xb0\xb5\x88\x5a\x2c\x44\x88\xb4\x34\xb1\xa2\x6a\x45\xa5\x87\xa4\xcc\xa4\x8d\x00\x25\x10\xf3\x86\x34\x66\x20\x76\x43\xa4\xe1\x36\xc5\x72\xfe\xc3\x07\x10\xc4\xba\x64\xd2\xb6\x79\x71\x8d\x07\x94\xb8\x91\x1c\x30\x0b\x01\xc8\x7e\x18\x57\x97\xd1\xd6\x4d\xd1\xaf\xad\x2e\x2f\x4f\x91\x20\xa0\x29\x80\x55\x5f\x33\x85\xc8\x4e\x36\x0c\x59\xc8\x41\x48\x13\x37\xa2\x17\x25\xd7\x04\x63\x3a\xde\x55\x46\x2a\x93\x83\xc1\x4b\x7f\x3f\xbd\xfb\x4f\x86\x8d\x5f\xc4\x5f\xc6\x71\xcc\x90\x48\xe0\x9c\x08\x2f\x02\x13\x37\x4e\xb6\x54\xb4\x89\xfb\x20\x35\x8d\xab\xf6\x57\xe0\x64\xa6\xb5\x63\x48\xe2\x86\x53\x33\x95\x43\x84\x80\x46\x0a\x13\xb6\x33\x91\xd9\xda\x7d\xa4\x5f\x91\x6d\x16\x1d\x56\x7f\xd3\xfa\xee\xeb\xef\xae\x60\x4e\x11\x7e\x60\x51\xd9\x8b\x96\xef\x75\x9c\x7e\xd7\xc4\xe5\x3f\xfa\xf4\x91\x04\x7e\x5e\x6c\xa1\x22\x96\x37\x2f\x54\x93\xbf\x2c\x51\xfe\x86\xf4\xff\x79\x36\xc5\x5b\x76\x6a\xb6\x78\x90\x18\xeb\x63\x24\xbe\xec\xcc\x7f\x45\xba\x1e\x75\xe9\x6b\xa6\x33\x43\xfe\x60\x59\xf1\xe5\xcb\x97\xe7\xbb\xea\x67\x34\x8d\xec\x91\x26\xb3\x01\x1c\x83\x58\xb9\x6d\x48\x31\x1b\xbb\xa0\x20\x89\x94\xfc\x72\x9b\xe7\x7e\x73\xf7\x23\x97\x8d\x5d\xe3\x82\xf7\x8a\xef\x0b\x52\xac\xba\xfa\x7a\x56\xcd\x9c\xb9\x37\x51\x00\x59\x20\x95\x90\xc3\x4c\x85\x61\x34\xeb\x8f\xfe\xfe\x1e\xfd\xae\x9b\xf5\xb8\xe5\x76\xef\x30\x2b\x1f\x9f\x9b\xd5\xe7\x27\x6f\xba\xdb\x3a\xce\x76\xaf\xc3\x05\x7e\xeb\x51\x81\xa9\x82\x5e\xd3\xb9\x1a\x38\xba\xc4\x26\x2e\x19\x77\x0f\x23\x10\x0f\xef\x71\xdf\xe4\x39\x96\xed\x31\x70\x7b\x34\xf7\x5f\x13\x88\x5c\xde\xbf\xbc\x6b\x68\x68\xf0\x3a\x5c\x10\x54\x38\x26\xc9\xe0\x31\xc9\xe3\xb3\xc4\xb9\x69\xe5\x03\xa2\x8b\xa3\xc1\xc9\xbd\x6e\x4e\xd6\xc4\xbd\x8f\x42\x38\xbc\xda\x8d\xcd\x36\xfc\x2e\xa7\xf5\xa3\x80\x14\x68\x59\x6b\x6b\x6b\x75\x9d\xe2\x96\xbb\xbb\x87\x5e\xf7\xf9\xb2\x61\xc8\xc5\x12\x8d\x6c\x4c\xa2\xd4\xd4\xd4\x06\xdb\xc9\x1f\xd7\x25\xf6\x02\x59\xbf\x7f\xbf\x6e\x79\xd1\xca\x42\x8d\x4d\x43\xfe\x35\x0c\x53\x4c\x6d\xb0\x1e\x54\xfc\xcc\x42\x8d\xcd\xc4\x92\xfb\xe1\x03\x48\x95\xfe\xb7\xe7\xfe\xcc\x6d\xd7\x17\x0d\x34\x55\xfa\xdf\x4a\x3d\x26\x14\x1c\xa0\x5e\x7a\xad\x96\xd4\xab\xfd\xcc\x2e\x37\x76\xdd\xff\xd5\xfa\x1f\x58\x3b\x88\x00\x1f\x53\x53\x89\x29\x28\xb0\xab\x14\x14\x14\x0e\xe6\xeb\x5f\x08\xe4\x6a\x6e\x87\xa0\xa2\xfb\x5d\xec\xac\xf9\x47\xb5\xb6\xb6\xba\x18\xde\x1e\x1c\x38\x18\xca\x27\x87\x6c\xdf\xea\x94\x68\x0e\xb9\xfd\xee\x0e\x7a\x6c\xab\x50\x4e\x4d\x4f\x0f\xba\xdd\xcc\x88\xae\x01\x0f\xf9\x0e\xd8\x35\x06\x9d\x8f\x08\xd3\x55\xd1\xf6\xd5\x48\x05\xde\xf5\x90\x92\xb4\x42\x28\x13\x54\x55\x55\x6b\xcc\x24\xc5\xc5\xa9\xbc\x9a\x93\x43\x98\x86\x64\xc3\x30\x87\x70\xea\x43\xf7\x91\x31\xa7\x2c\xac\x5a\x79\x80\x17\x01\xc9\x4c\x2f\x80\xe4\xc8\xaf\x88\x36\xa3\x82\xf8\xfb\xee\xb9\x36\x4f\x0e\xfc\x02\xc5\x38\x52\xb3\x7c\xd4\x6d\x2a\x07\xa1\xc5\x68\x02\x46\x24\x0d\x93\x5c\xb6\xd1\x9a\x71\x80\x7b\x0b\x58\x25\x6f\x47\xcf\x87\x8c\x04\xd0\xe5\xcd\x56\x50\xc2\x66\x37\x96\x27\x79\x12\xcf\xf4\xbd\xdd\x9a\xc4\x3f\xe6\x64\xa5\x2b\xf0\xfe\xcf\x9f\xb7\x35\x91\x9c\xc3\x9a\x79\x12\x14\xb5\x74\x4a\x45\xa7\xbf\x3f\xf1\x4b\x75\x11\x10\x10\x26\x55\x11\xb1\x6a\x92\x03\x31\x21\x11\x48\x24\xb2\xa2\x82\x53\xe0\xf3\x4f\xa8\xb0\xcf\xde\x13\x9c\x1a\x7b\xec\x5c\x41\x32\xe0\x20\x81\x0e\x6b\x82\x57\xe3\x08\x02\x02\xb1\xce\x84\x53\xfb\xc9\x1d\x85\x30\x5f\x3c\x89\xe7\x10\x00\x50\xbb\xb1\xaa\x95\xd9\x3e\xd2\x3f\xf8\x7e\xdb\x31\xc6\x7a\xba\x12\xc3\x50\xfc\x57\xf7\x05\x02\x2f\xab\x4d\x06\x6d\x29\x94\x5c\x5c\x5c\x1c\x1c\x2a\xd8\x74\x6b\x39\xf7\x5d\x44\x0e\xbc\xda\x15\xde\x1f\x8a\xd3\x3c\xfa\xb1\x6b\xa0\xf1\xc4\x0f\xd4\x55\xec\x68\xaf\x80\x42\x99\xae\xde\x82\xc2\xcb\xca\xd8\x55\x1d\x78\x81\x08\x3a\x39\x39\xb9\x1e\x6b\x8a\x3e\x48\xca\x10\xa0\x5f\x06\xd8\x67\x93\xd5\xf4\xae\x12\x4f\x52\x1b\x04\xe8\x84\x39\x0b\x65\x67\x7f\x08\xa4\xbe\xb4\xd9\xe9\x66\x52\xe5\x7e\xdf\x74\xb0\xec\xbd\x4a\x32\x40\x97\x55\xcc\x45\x3a\x9c\x2b\xee\x5d\x05\xeb\xf4\x3b\x5a\x6a\xa5\x12\x76\xf2\x19\xd1\xfa\xed\x0a\xee\x88\x24\x8f\x34\xac\x84\xfa\xc4\x48\x48\x92\x95\x95\x97\xc3\xd1\x62\x9a\xd1\xc6\xce\xd3\xd2\xd2\x64\x56\x40\x78\x22\x90\x50\xa5\x22\x5e\xca\x04\x64\x8c\x52\x11\x01\xf7\x19\x1d\x16\x9a\xdf\xaf\x3c\x99\xf3\x1e\xf4\xb5\x81\xee\xfb\xf5\x81\x38\xf7\xad\xdf\xb2\xc0\xc2\xe2\x62\xcc\xab\x0d\xed\xf2\xe9\x1d\x35\x9e\x98\x98\x98\xdd\xdd\x5d\x3a\xd6\x5a\xf2\x60\xd4\x87\x1b\x80\xac\x88\xcf\x09\x32\x99\x59\xbd\xc7\x6b\xa5\xc2\xb0\xfe\xb8\xfb\x99\x26\x5c\x0a\x17\xe1\x72\xbc\xd2\x59\x56\x56\xc6\xf2\xb0\x1c\x7c\xb3\x16\xf5\xaf\x5c\x6d\xd0\x0a\xda\x4d\x5d\x1d\x2e\x26\x28\x31\xf6\x9d\x35\x42\xdb\xfe\xac\x97\x35\xb4\xd8\x55\x36\x8c\xf4\xfe\x93\x94\x1e\xa9\xaf\x0c\x48\x08\xaa\xb0\x71\xf5\x52\x00\x3a\xc6\x7a\x6b\x82\xb9\x2e\x41\x41\x4f\x0d\xb6\x93\x48\xd0\xfd\xdc\x9c\xc1\xcd\xc0\xec\xf4\x74\x5a\x7a\x3a\x82\x45\x35\x99\xeb\x7d\x53\xf8\x80\x6f\xdc\x80\xdb\xf3\x53\xe0\x3f\x1d\xf3\xef\xde\xb2\xb8\xae\x8e\x2f\x53\xfc\xb3\xff\x51\x6b\xf7\xe3\xa1\x33\xdd\xbe\x48\xe2\xc6\x3f\xc1\x52\xcc\x84\xf5\x7d\x34\x57\x5c\xbf\x1a\x76\x28\x5e\x3d\x77\x78\xb5\xbe\x6e\x26\xe3\x0c\x21\xc7\xa7\x95\x8a\x1f\xbd\xda\xda\x8c\xdb\x74\x11\x71\x5a\xe9\xd8\x9d\xee\x7e\x21\x73\xa1\xa8\x00\x22\x07\x62\xc6\x74\x12\x8d\xc6\x73\x29\xb1\xd0\xb3\xc4\xc3\x0d\x3c\x24\x03\xc0\x49\x3c\x20\xfb\x4f\x84\x80\x89\x02\xf9\x28\x51\xf7\xad\x8e\x9b\x75\x05\x32\x8d\x2d\x8b\xd5\xf6\x80\x11\xb7\xf6\x2f\x55\x33\x6a\x93\x02\x83\xe7\xcf\x14\x84\x89\xe6\xec\x24\x70\x1c\x68\x63\x3c\x3f\x8b\x17\xce\xf1\xb8\x14\x0b\xa7\x6e\x18\xe3\x2d\x58\x6a\xe4\x44\x22\xe9\x0d\x5e\x74\x3b\xc0\x61\xe1\x3c\x7c\x78\xb3\xcd\xf7\x9c\x05\x21\x53\x32\xe9\xb9\x33\x5e\x40\xbf\xcf\x14\x09\x9f\x9e\x9e\x9e\xad\x32\x96\x4f\x98\x73\x96\x88\x25\x81\xd2\x76\xa5\x5a\x41\xc8\x93\x53\x52\x74\xde\x92\x46\x28\xf7\xe7\x76\xbe\x71\xdd\x5a\x4a\xf3\xbf\xa6\x06\xde\x23\x8b\x68\xc7\x70\xb9\xc9\xf6\xdd\x6a\xaf\x87\xa9\xc9\xb8\xf5\x04\xe2\xfe\x5c\x1e\x4e\x57\x38\x57\x7f\x3b\x79\xa3\xfb\xf6\x39\x2a\xde\xc4\x28\xd9\x9f\x98\x62\x9f\x9e\x91\x8f\xcf\x6d\xba\x4c\x2f\x85\x55\x8b\x8b\xb3\xf8\x3a\xc0\xaf\xe8\x5b\x4b\xe2\x46\xc0\x34\x0b\x84\xd3\xe4\xad\xd5\xfd\x2e\x6c\x2d\x42\x9d\xa4\x28\x6a\x40\x7a\x59\x34\x87\xe9\x33\xd6\xfc\x12\x07\xf1\x0f\x9c\x2c\x09\x5f\x3e\x4d\x9b\xa4\xdc\x0e\xef\x03\xdd\x4f\xcb\x2b\x99\x21\x68\x89\x1b\xe7\x71\x76\xcf\xfe\xdb\x09\xf4\x8f\xe6\x4a\x78\xb6\x05\xb3\x1c\xe5\x7b\x09\xb5\xeb\x1b\x1b\x19\x5c\xef\x31\x3b\x16\x28\x22\x6f\x1f\xce\xc7\xe2\x62\x63\x51\x64\x9b\x9d\x96\x59\x5e\x67\xa2\x64\x41\xcb\x2f\x53\xb4\xa4\x42\xd1\x5f\x28\x25\xd1\x2c\x97\x68\xd1\x8e\xc7\xc7\xc4\x84\x3a\x12\x70\x0e\x1f\x2d\xb5\x12\x91\xbe\xaa\x32\x6a\x45\xd0\xbc\xb5\xb2\x62\x01\x8f\xac\xbd\x64\x60\x64\x64\xd5\xca\x7b\x5d\x16\x7f\x7f\x45\x96\x3b\xda\xb5\x38\xbe\xb2\xcd\x78\xe0\xb5\x35\x3e\xb1\x2e\x46\xc5\x0f\x77\xe0\x48\xaf\x1a\xfe\xf9\x93\x8d\x87\x87\xcc\xfb\xab\xf0\x8a\x0f\xba\xab\xb9\x93\xd3\x11\x99\x49\x00\x2a\x90\x85\x32\xc1\xea\xee\x62\xd7\xc5\x71\x74\xb2\x44\xcb\xda\xca\x4a\xc8\xcf\xd4\xa9\xf9\xbe\x7e\x4c\x2a\x6c\xf8\x47\x48\x5b\x9e\x54\xa1\x5e\x39\x54\xa7\x44\x13\x43\x59\x3d\x4d\x8d\xf9\x63\xbc\xe4\x5a\x44\xad\x99\xb9\xf9\xda\x6b\x1c\xfc\xa8\x8d\xbf\x43\x29\x10\x73\xcf\xc3\x05\x92\x2b\x6b\x76\x2e\xae\xe5\x66\x67\xda\xdf\x06\x8c\x4a\xf1\x06\x35\xa6\xb2\xf2\x8f\xf5\x9c\xd9\x1f\x3f\xa2\x5a\x8b\x9d\xc4\x16\x29\x27\x55\x99\x74\xaf\x78\xdf\x45\x9a\x42\xc8\xa1\x95\xef\x22\x88\x16\x02\xef\xe3\x34\x73\x5b\x87\xef\x9a\x1e\xd7\xc8\x8b\x27\x3f\xc2\x0b\xb2\x40\x29\x6a\x45\x2c\x00\xfa\x9f\xbb\x66\x1c\xe5\x46\xe9\xec\xc2\x7d\x2e\xc0\xe1\xcf\x62\xee\xc2\x6c\x6c\x36\x4b\xe7\xae\xe4\x91\x8f\x97\xd5\xc1\x8d\xf3\x0e\xd4\xe2\x5e\x0f\xb3\xdd\x4f\x11\x35\x15\xd4\x22\x2e\xa6\x63\x79\x92\x21\xb5\x53\x76\x97\x15\x86\xf5\xa6\xdb\x83\x97\xfb\xb3\xf7\x7d\x06\x02\x1a\xce\xcb\x6d\x7a\xdc\xfc\xbd\xd1\x49\x49\xc1\xf7\x87\xcd\x96\x7a\xab\x01\x72\xd2\x0b\x00\x59\x26\x56\x56\xad\x3c\x89\xcb\xb9\x21\xff\x92\xfa\xc0\x75\xf6\x58\x86\x77\xfd\xe4\x7e\x1e\x82\xde\x36\xb4\x84\x04\x55\x13\x65\xaa\x39\x3d\xfd\x81\x35\xa3\x3f\x96\xd8\x2b\x1e\x9f\x2e\xb4\x7c\x31\x04\x39\x07\x3f\x8f\x76\xd9\x0b\xbc\x49\x61\xd5\x1a\x19\x1a\xba\x3d\xa8\x1f\xa3\xf9\x15\x4e\x23\x2a\x51\x10\x3f\x5d\x20\x1f\x95\x9a\xaa\x18\x31\x70\x51\xab\x63\x09\xf3\x96\x01\xf6\x15\x16\x79\xf4\xa5\xac\xfb\x49\x50\xc3\x71\xd2\xfd\x76\x92\x01\x05\xf8\x8c\x0c\xdf\x05\xb0\x0f\xe5\xae\x03\x52\x82\xb7\x96\x02\x23\x37\x93\x72\xd9\xed\xe7\xbf\x67\x26\xd7\xed\x1c\xcc\xd7\x6b\xd8\x63\x07\x1a\x9d\x30\x2d\xe0\x4c\xdb\x5d\xe6\x88\xba\x7f\x67\x5c\xef\xba\xb7\xae\xd5\xb7\xa5\x1e\xac\xed\xd7\x5c\x3b\x2f\xf6\x56\xf3\xab\x6a\x65\xd5\xef\xc5\x12\x2c\xfd\x91\x60\x47\x42\x54\x49\xb6\x59\x79\xfc\x64\x08\xa6\x21\x10\xb6\x1e\xcd\x61\x89\x6f\x0b\x8a\x47\x1e\x93\x95\x97\x95\xed\x9d\x6d\x0e\xbb\xfc\x93\xb5\x2e\x80\xce\xc5\xc3\x48\x6c\xa6\x7c\xdb\x05\x07\x21\x56\x16\x16\x04\x07\xb4\xfc\x72\x34\x57\x5c\x26\x6d\xa0\xce\xc1\xc9\x89\x7b\xdc\x09\x17\xf1\xc6\xd0\x70\x57\x4b\x8e\x3c\xb6\x30\x12\x9f\xfa\x6e\xbd\x7f\x35\xaf\xf3\x8d\xb6\xee\x01\x33\x19\x5b\xa2\x79\x67\x9b\x62\x97\x44\x81\x63\xa6\xb3\x58\x99\x4a\x7d\xd3\xe0\xe4\xd6\x9f\xcf\x07\x08\x3a\x62\x92\xd9\xdc\xce\x37\xa7\xeb\x71\x44\xc1\x0f\xa7\x83\x3f\xf0\x48\x64\xea\x14\x80\x7d\xc4\xc4\xc4\x3d\xae\xdf\x5d\x5d\x5d\x5d\xb2\x2c\xea\xe7\x03\x2e\xf7\xf4\xf2\xdb\xbd\xc5\x72\x47\xb2\x85\xa3\xfc\xbf\x95\x95\xb1\x73\x70\xd8\xdb\xe0\xf1\x02\xed\x27\x0a\x31\xc0\x9e\x60\x12\x12\xcf\xc3\x05\x41\x10\x32\x1c\x6e\x30\x9c\xce\x35\xc1\x4c\xfd\x68\x59\x21\x1f\x85\xaf\x2a\x77\xe0\x7d\x30\x87\x4a\x4b\xf1\xe7\xcf\x1f\xa6\x53\x32\x88\x00\xe5\x88\x32\x6d\xe0\xc5\x5a\x14\x2d\x82\xc3\x24\xe8\x76\xb3\xbc\xba\x0b\x67\xcb\xa1\xd6\x00\xe6\xbb\x49\x32\xd7\xb4\x63\x0d\xa7\x4d\x19\xba\x28\x91\x7e\x8c\x79\xfb\x69\x34\xa7\x7d\x5d\xcf\x64\xfa\xb4\x74\x3c\xe3\x47\xf3\xe9\xc7\xf2\xbd\x28\xb2\x29\x76\xa9\xcc\x42\x97\xac\x2d\x91\x44\x69\xf7\xa3\xa0\xe3\x23\x63\x58\xc0\xa9\x62\xb0\x59\x2b\x02\x81\x48\x4e\x49\x19\x4c\xa4\xc6\xcd\x6a\x76\x5a\xa6\x14\x76\x02\xe7\x2c\x79\xed\xfe\xf9\xea\x62\x33\x59\xaa\x53\x12\x74\x9e\xbd\x1a\x12\xc1\x47\x0e\x5c\x6c\x72\x0c\x4b\x79\x28\x2e\x29\xe9\xbe\x3f\x6a\x8f\x66\x2d\xfe\xf2\xa5\x47\x0a\x36\x3f\x3f\xbf\xf1\x23\x01\x1d\xaa\x5d\x34\xd1\xe2\x7f\xed\x74\x53\x73\x8c\x1d\x4c\xa1\x4e\x68\x56\x3d\xbb\x9f\xa0\xc4\x78\x50\xf1\xd3\x15\x9c\x43\x62\x8c\xa6\x21\x69\xea\x17\x33\xa2\x0c\x02\x18\x4e\x6c\xc2\x0a\xa6\xed\xfa\xbe\x7f\x77\x5a\x29\xeb\xf4\x5e\x8d\x23\x11\xe2\xd4\xe5\x0f\xf2\x28\x3f\x81\xf8\x52\x7d\x82\x29\x27\x03\x58\xaa\x7e\x76\xde\x27\x66\xdf\x36\xaa\xaa\x86\x09\x52\x76\xa7\x9e\xad\xb3\x87\x16\x5b\x47\xa2\x86\xf5\xa2\x54\x17\x40\xcb\x2b\xab\xaa\x30\xff\x95\x2e\x58\x75\x14\xf6\x85\x9f\xe4\x7a\x0a\xcf\xbb\x3b\xb8\x5f\xae\xa6\xbe\x8e\x0e\xfa\xeb\x1f\xc0\x3e\x1f\x3c\x32\x47\x3f\x8a\xe1\x60\x73\x39\x19\x0d\x31\x6a\x31\x0f\x2c\x3c\x7e\x93\x2e\x2b\xd9\xe1\x03\x91\x44\xc9\xd9\x76\xc3\xfd\x74\xbe\xbd\xf0\x18\x53\x72\x1a\x72\x52\x8a\xf4\xee\x80\x91\xc2\x19\x1b\xcb\xe9\x90\x47\x4f\xe4\x10\xe1\x0a\x2f\x70\x7f\xbe\x9e\x75\x58\xbb\x59\xbd\x43\x45\x9f\x00\x9e\xd5\xd5\x99\x45\x60\xb3\x78\x16\xf6\xe6\xad\x55\xd1\xa7\xe7\x9a\x0a\x9b\x1f\x4e\x53\xa6\xb4\xce\x02\xa7\x3c\xaa\x1e\x84\x51\x8c\x33\xbc\x40\xf9\x07\x98\x6a\xf2\x5f\x5f\x9a\xf1\x38\xa7\x5f\xc4\x8a\xf4\x52\xef\x6a\x92\x38\x77\x00\x4e\xb1\x24\x63\x48\x54\x14\x02\xe5\x4a\x28\x2b\x0b\x0b\x54\xaf\xbd\xb3\xeb\x20\xfc\xaa\x40\x7b\x0b\xd3\x3c\x83\x4a\x4e\x83\x2b\x50\xaa\x04\xcd\x2b\x02\x44\xed\xcc\xf0\x5d\xe0\x24\x0b\x04\x08\x7d\xaa\xaa\xbf\x94\x79\xd0\x3f\xea\x41\xe2\x0f\xf4\x60\x60\x87\x5a\xe0\x3d\x6a\x49\x4d\xf6\xc7\x5b\xd6\x1a\xac\xf8\x6c\xe0\xdd\xe8\xce\x95\xeb\xf3\x88\xc4\x2b\xa3\x25\x6e\xe0\x83\x45\x50\x58\xc7\xed\xa6\xcb\xa6\xab\x8c\xdb\x41\xfb\x5d\x8e\x8b\x42\x2d\xb1\x81\xfb\x33\x95\x19\x3c\x26\xf8\x79\x3f\x21\xbf\x17\x1a\xed\xd7\xc2\x0c\x56\xbb\x02\xc9\xb8\x8d\xd8\xaa\x88\x55\x93\x3b\xfd\xaf\x47\x39\x3c\x26\x04\xd4\x14\xe8\x54\x25\x0a\x8c\xa3\x8d\xdc\xeb\x96\x7b\x69\x1e\xb6\x73\x11\x8b\xcf\xac\xaa\x44\x1a\xee\x69\xa4\xfa\xa8\xb0\x0f\xe9\xe9\x2c\x91\x6b\x1b\x22\x4f\x5b\xd9\xce\x0c\x39\x9f\xc0\xf8\x51\x4c\xe5\x21\x00\xa1\x6c\x3c\xfa\x26\xbf\xef\xbb\x1e\xdc\xc6\x6d\xc4\x52\x42\xdf\x6f\x7f\x28\x94\x34\x37\x34\x08\xb4\x34\x7d\x3d\x76\x85\xe2\x15\xc4\x50\x0c\x6f\xba\xa9\x1e\xf0\xab\xaa\xaa\xe6\x69\x73\x43\x1e\x07\x69\x83\x81\xab\x7c\x96\xbf\x52\x4f\x37\x06\x19\xc9\x71\x47\xe3\xb9\xd4\xea\xcc\x07\x13\x31\xac\xcd\x9b\x17\x1f\x6f\xb7\x3f\xf7\x01\x6a\x6b\x6b\x37\x06\x93\xa2\x82\x11\xd2\x7f\x89\xfb\x68\x49\xb4\x6c\xa6\x14\x0c\xa2\x17\xde\x0d\xba\x74\x84\x3c\x3e\x84\xf6\xb2\x11\xb2\xaa\x3e\x84\xd2\x52\xca\x62\xb9\xb5\xce\x2d\x32\x37\x99\xb3\xaa\xf3\xc0\x4a\x53\x73\x04\x7c\x61\xdf\x6a\xff\x7c\x84\x2f\xd5\x9a\x0f\x2a\xd8\x53\x27\x6e\xb8\xa0\xb9\x6b\x41\x80\xee\xeb\xfd\xd8\x80\x50\xa3\x1a\xce\xfb\xc7\xeb\x55\x46\xac\x0b\xbf\xc7\x9f\x1f\x19\xcd\xcd\xcd\xb3\x4f\x0a\xb4\x72\xde\x18\x3e\xdb\x9e\x16\x12\x7b\xb6\xb7\x2e\x9b\x90\xb9\x48\x1f\x4f\xa0\x45\x3e\x3e\xa0\x4e\xda\xfd\x34\x2d\x62\x17\x50\x20\x21\x2d\x14\xa2\xd4\xa5\xc4\x93\x05\x89\x0c\x9f\x09\x89\xeb\xc0\xd6\x38\xd9\x9b\x48\x33\x16\x1c\xbc\x84\xd8\x76\x50\x1f\xec\xbc\x21\xec\x69\x7b\xaa\x29\xab\x9f\x2b\xe6\xfd\x30\x22\xe1\xef\xf0\x08\x08\xaa\xf0\x70\xf5\x5e\x50\xe9\xb1\x93\x70\x63\x49\x9f\x7f\x5a\xee\x9d\x9a\x6a\x53\x0f\xae\x6b\x35\x02\x0f\x3f\x6e\x2f\x45\x6d\x64\x4e\x0e\xf0\xc6\x67\xd4\x5f\x13\x61\xcd\xc7\x5f\xc6\xb5\xb3\xdc\xbd\xec\x4c\xf4\x43\x7a\x16\xc9\x4e\x97\x67\xb7\x7a\x8f\x7d\xcb\xb4\x12\xab\x8c\x64\xc2\x32\xca\xd9\x1f\xfb\xc3\xcd\x53\x03\x3c\x76\x73\xd7\x24\xdb\x76\xa9\x2b\xac\xe7\xd3\x34\x15\x89\x0c\xac\xe5\xe9\xde\xc1\x67\xbf\xfd\x2a\xab\x3c\xd1\x50\x4e\x40\xe8\x5d\x34\xf1\xf7\x2e\x4b\xc9\x63\x27\xa2\x96\x93\x54\x1d\x0a\x25\x35\x20\x4e\xdc\x20\x24\x24\x34\x6d\x3d\x1b\xcd\x15\x77\x91\x33\xe9\x84\x3d\x2f\xb9\x8f\xf5\x3e\x91\x08\x65\x3b\xae\x76\x05\xe2\x5d\x8e\xb9\x1a\x2d\x36\x39\xc2\xe1\xd2\xec\xec\x7b\xfb\xd5\xdd\x4a\xc0\x57\xd2\xd2\xb4\x42\xbb\x53\x53\x53\x07\xab\xdd\xb4\x12\x1f\x2d\x0d\x45\x8e\x90\xa1\x58\xd8\xd0\x35\x11\x16\x82\xfa\xdf\x04\x0b\x19\xac\x0d\x87\x0b\xa2\xdf\x75\xac\xaa\x5f\x56\x3e\x19\xfe\xfe\x63\xa7\xaa\xea\x3b\xa4\x16\x37\xbc\xab\xe0\x0a\x4c\x34\x2f\x36\x4d\x1b\x78\x1b\x89\xa5\x12\x93\x98\x18\xb4\x16\x41\xd6\xc3\x50\xcf\x99\x9d\x96\x86\xd1\x4e\xd3\x68\x3f\x5b\xe5\xbe\x3d\x1a\x5d\xb2\xd4\xee\xfd\x12\xf6\xb7\xdd\xfb\x38\x91\x82\x1f\xb3\xa0\x8f\x93\x9d\xbd\xcd\x63\x97\xd0\x40\xbe\x7d\x39\x68\x67\x9c\x5e\x01\x7e\x57\xae\x5f\xfd\xeb\x11\xee\x03\xaf\x58\x5a\x5a\x5a\x7d\x7e\xba\xa6\xcb\x94\xab\x9e\x3d\x5e\x6e\x27\xab\xd2\xad\x77\x5c\x6c\x9a\xaf\xb7\x0e\x2b\xce\xb4\x00\x6a\x7e\x4c\x4b\x4e\x46\xcb\xf8\x9a\x2a\x53\x34\x11\x70\xbb\x99\xe1\x92\x58\x6d\xdc\xee\xd5\xf9\x70\x36\x8c\xe7\x0b\xf0\x21\x5d\xe7\xe6\xe4\xcc\x91\x0a\x14\x7b\x8d\x9c\xce\xa6\x63\x30\x2a\x7a\x4b\xc0\x3d\x1b\x0c\x55\xab\x64\xf9\x91\x60\x37\xbd\x61\x5b\xbf\x34\xe6\xba\x6b\xec\xaf\xc1\xa5\xe6\x5e\xf0\x96\x80\x60\x2d\x2b\x87\xf6\x98\x4e\x6d\xd5\xe3\x78\x45\x92\x91\x11\xfd\xa9\x34\x1e\x2c\x4a\x68\x55\x51\x6b\x3e\x58\x05\xeb\x6c\x2b\x58\xc4\x90\xcd\x14\x75\xdf\x12\x3f\xee\x40\xaf\x02\x52\x8b\x79\x8c\xe5\x49\x62\x6d\x5c\x4b\x3f\x9d\x26\x45\xe0\x92\x21\xb6\x3a\xfd\xaf\x61\x81\x97\x7a\xfd\x9c\x34\xdf\x0a\x64\xfa\x70\xcd\xb1\x11\x28\xe5\x32\xe4\x91\x04\xf5\x2f\x51\xd0\xb4\x38\xc8\x55\x93\x93\xd9\x84\x1a\xd4\x94\xfe\xd0\x27\x6e\xd4\x24\xfc\x24\xfb\xf9\xc8\xab\x18\x6e\xff\xba\x97\x3d\xb3\xf6\xdd\x0f\x8a\x76\x66\xa5\x9f\x9b\xec\xe9\x44\xdc\xc6\x8d\x2d\x1f\xb3\x70\x75\x6a\xd8\x39\x75\x03\x37\x7f\x91\xf4\x7f\x61\x2a\x93\xf2\x11\x54\x50\x49\xff\x49\x94\xac\x48\xea\x19\x1a\xfd\xbe\xff\x37\xe6\xb3\x35\xb7\x46\xa7\x8e\x74\x2c\x4b\xae\x8c\x7c\xfc\x12\xa2\xba\x21\xf6\xe5\xcc\xbe\x45\x5c\xf6\x57\xe9\x79\x1e\xe3\x4a\x85\x61\x5a\xae\x8d\x78\xa6\xde\x1c\xe9\xe0\xa7\x59\x32\xba\xc4\x1f\x29\x96\x7f\x08\x82\xb3\x9c\x32\xf8\x6b\x75\x44\x14\x9f\x06\xcd\xbf\xdb\xe4\xff\x7d\x02\xdb\x64\x49\x07\xd5\xfd\x7e\x9b\x10\x0b\xfd\xaa\x22\x51\xab\xe3\xa3\xea\xfa\x51\x5f\xf9\xc9\x84\xb6\xe3\xe1\xb5\x6a\x32\x10\x1b\x1b\x95\x56\x2f\x57\x33\xea\x89\xc5\x1f\x43\x16\xa4\x54\x44\x10\x30\x2d\x40\x99\x30\xbc\x89\xe6\x67\x31\xc1\x40\x4c\x4a\xba\x75\x7f\x9c\xbd\xd1\xd2\xd6\x26\x96\xb9\x62\x0a\xe9\x09\xd3\x2d\xd5\xd5\xd3\xd3\x33\x1d\xae\x2a\x2d\x6d\xf5\xdc\x87\x5e\xd3\xa0\x67\x29\xee\xaa\xfd\x7a\xe2\x12\x6f\x5b\x3e\x03\x60\xc1\xb0\xc4\xbc\x6b\x1f\xa2\x70\xaf\x27\x36\x1c\x48\xbf\xaa\xdb\xd8\x2f\x5c\xcd\xe3\x67\x15\x87\xae\x67\xd3\x61\x65\x15\xaf\x99\x3a\xc5\x16\x82\x30\xb4\x15\x04\xf9\xe4\xa6\xb9\xb1\x10\x16\x9f\x2d\xc9\x8b\xcb\xca\x70\x00\x15\x4f\x0f\xc3\xbc\x94\x96\xad\x47\x3b\x97\x7e\xaa\x2b\x36\xad\x9e\x15\x9d\x10\x68\x06\xb7\x31\x3e\xb5\x18\xa0\x1f\x0e\x1e\x64\x7e\xd5\xfa\xb7\x50\x3e\x0a\x7f\x77\x77\xb7\x06\x63\x2b\xec\xa5\x94\x41\x93\x03\x05\x9d\xcf\xd5\xbc\x75\x12\xad\xf4\xd1\x7d\x90\xdf\xc6\x8f\x04\xc3\x7a\xab\xd0\x0d\x0c\x45\xed\x72\x68\x25\x22\x89\xcc\x7a\x2c\x8f\x5a\xc8\x81\x3c\x13\x31\x61\x13\xf0\xfc\x78\xdd\x27\x37\x1d\xe8\x2f\x78\xbf\x0b\xa3\x1f\x3c\x45\xd0\x3d\x78\x8c\xf5\x42\x24\x14\x6f\x2f\x1e\xb7\x22\xf2\x39\x66\x39\xef\xf1\x89\x45\x3f\x6c\xcb\x22\x7a\xee\xaf\x62\xcd\x76\xb2\xce\xb7\xc7\xfe\x01\x10\x42\x3a\x76\x9e\x2d\xe4\x88\xd0\x81\xe1\x91\x43\x4c\xfb\x22\xf1\xa2\x4d\x0e\x8e\x96\xdb\xe1\x25\xc2\x5a\x2a\x72\xe5\x63\xb9\xe2\xac\x56\xd4\x44\xd9\x7e\x9d\x52\x92\x92\xd4\x81\x55\xa9\xc8\xc3\xe6\xd5\x7f\x49\x80\xc4\x37\xf1\x3f\x14\x34\xcc\x73\x81\x91\xab\x97\x4c\x0e\x51\x7e\xd0\xdf\xf1\x68\xd3\xcc\x15\x0b\xbd\xf0\xe2\xce\x28\x2f\x2c\x44\xf3\xe2\x3d\xfc\xf3\x55\xdd\xcc\xac\xf0\x38\x7e\xa0\x8e\xf3\xe1\x3d\x71\x2e\x15\xdc\x79\x28\x5b\xd8\x19\xd6\x15\x40\x01\x81\x2a\x28\x84\x4f\xd8\xf4\xbb\xfe\xeb\x9f\x71\x33\xd8\xcf\xe2\xec\xc2\x10\x08\x1c\xa7\xd9\xf4\x27\x0b\x67\x92\x24\xb7\x18\xe2\xde\x9a\xef\x49\xa2\x24\x26\x4f\x5a\xb2\x11\x03\xea\xdc\x1f\xa0\x5c\xf1\x9d\xed\xd9\xde\x81\xa7\x43\x95\xef\x9b\xc5\x3c\xf7\x00\x85\x1e\x22\x89\xe5\x95\x95\x11\x25\x4b\x85\x8a\xb8\x17\x19\xd5\x85\x34\xb0\x41\x4c\xd3\xfa\x79\x64\x05\x42\xa9\x48\x1b\x8a\x03\x9a\xc0\x67\x39\x15\x49\xb3\x4f\x0f\x5a\xb7\xe0\x0c\x39\x79\x73\xb9\x03\x3f\xf5\x93\x64\xf6\x63\x0e\xf0\x6e\x68\x69\xc2\xf7\xa4\x24\x09\xa7\x53\x4f\xbb\x5f\x3c\x8e\x95\x5a\x4d\xd1\xd7\xde\x8d\x28\xbf\xf0\xdb\xbb\x85\x73\x71\xa6\x31\xef\xee\xee\x06\xb5\x75\x48\x15\xfb\x14\x6a\x88\x69\x79\xe3\xd3\xfe\x91\xde\x1a\x9f\x30\x8b\xdc\x1c\xdb\xd6\xad\xe1\x94\x76\x53\x31\x0a\xc8\xd1\x2e\x8a\xdc\x9f\xc2\x98\x10\xd0\x87\xbb\x1a\x77\x59\x89\xba\x3f\x05\xed\x6a\x79\x55\xe3\x8f\x10\xc7\xbc\xdc\xa5\x9d\x6c\x8b\xb0\x3b\x5d\xf7\x14\x76\x5a\x42\x29\x75\xcb\x63\x13\x28\xf6\xa8\xfe\x2c\xb8\x64\x29\x79\x1a\xfa\xc8\x28\xf6\x51\xef\x53\x06\x53\xed\x47\xf9\x77\x53\xf3\xe4\xbc\xa6\x97\xdf\x37\x7f\x75\x20\x16\xa0\xa7\x3f\x6e\x44\xcc\xbf\xa9\x46\x6c\x88\xf4\xb9\xe8\x4d\x1f\xfd\x69\xbf\xaa\x6b\xbf\xca\x7a\x27\xbc\xc0\xba\xbe\x1a\x48\x78\xe3\x1e\x58\x18\x05\xb4\x69\x72\x1f\x9c\x59\x6e\xf7\x1e\x9e\xe6\x90\x02\xff\x9c\x0e\x14\x90\xd3\x5f\x67\x5e\xfa\xda\xd0\x20\xc0\xc8\x88\x0e\x16\x63\x8b\xcd\x12\xb0\x25\xe4\xec\x0e\xbe\xdb\x2d\xe1\xb7\xfa\x8d\x32\xf2\xe1\xc3\x07\x0a\x7e\xab\x9e\x2a\xe9\x9a\x20\x92\xbe\x9a\xcc\xcc\xcc\x7f\xbc\x83\xec\x61\x88\x9c\x5b\x6d\xf3\xc4\x05\x31\xb1\xb0\x74\xdd\xac\xc7\x99\x2a\x37\x2f\x1e\x2e\x36\x3b\x47\xe1\xba\x01\x69\x24\x5a\x9c\x57\xbb\x42\x42\xb9\x8d\x5a\x20\x3e\x27\xa6\x48\x32\x2d\xed\x29\x75\x9e\xce\xa9\xae\x40\x7f\x19\x9e\xe2\xe0\x88\xf3\xbc\x52\x5d\xf6\x53\x2f\x60\x5f\x5e\xe0\xd5\x7c\xd5\xf2\x5d\xd0\xf9\x32\xb5\x48\x3f\x8d\xee\x3d\x29\xc0\xd7\x5e\xed\xa3\xb4\xfb\x74\xcb\xf6\x46\x12\xb5\x24\x24\xf8\x29\x80\xb7\x7f\xc5\x41\x68\x2c\x47\x94\x48\xe8\xbd\x6a\xc0\x0f\x6c\xc4\x07\x95\x23\x01\x0d\x61\xb8\x40\xa1\x01\xd5\x0b\xd2\xe4\xd1\x3c\x49\xff\x13\xa4\xac\x42\xea\x68\x38\x36\x51\x9b\xd7\x21\x4e\xd5\x89\xc4\x18\x04\x98\xaf\x5f\x3e\xad\x53\xa2\x19\x51\xfe\x56\x2a\x9f\xe8\xe2\xbb\xa5\xa5\x65\x02\x58\x94\x50\x68\xf7\x60\xb5\x5b\xfa\xd5\x2b\x6c\x90\x0a\xb9\x7a\x00\xbd\xcb\x67\xda\xa0\x1b\x7a\xb0\xd9\xf1\x65\x36\xeb\x2d\xdd\x72\xbb\xb7\xf3\x78\xbe\x6c\x6b\x6b\x2b\xf2\x57\x9b\xe7\x3e\xb2\x7f\x88\xf0\xc7\x19\xb8\xe7\x8b\x6a\x0a\x1f\x1f\x5f\x48\x88\x89\xb6\x36\xaf\xcd\x38\xdd\x07\x44\xbb\x46\xb6\x50\xb9\x7e\x35\x0d\xdf\x85\x6f\x70\x32\x22\x7a\x7c\xbf\x94\xfe\xd1\x3c\x12\x68\xe3\x75\xb0\xe3\x7d\xdc\x71\x9e\xd8\xff\x09\x3f\x84\x2e\x3a\x3e\x1e\x38\xc7\xbc\xdf\x13\x8a\xce\xd3\x75\xc3\x70\x73\x19\x19\x1e\x0e\x16\xf7\x02\xe2\xd7\x5e\x13\x41\xcb\x3d\xe7\x6a\xe0\x2e\xd1\x9d\xb3\x37\xa2\xd8\xbd\xf9\xb2\x61\xf8\x34\x12\x58\xc0\xba\x2e\x07\xa3\xb3\x70\xef\x6a\x69\x93\x6a\x8a\x38\x49\xfb\x67\x7f\xc2\x9f\x94\xc9\x3c\xe8\x32\x17\x86\x6f\xde\x40\x82\x9f\x1e\x72\xc5\x9b\xf0\x83\xb8\x03\xb6\x52\xc3\x9b\x2a\x5f\x03\xe8\xef\x65\xe4\x41\x3e\x8b\xd0\xe2\x4f\x3a\x84\x98\xd2\x64\x5d\xee\x83\x33\xb7\xe7\xdb\xc2\xfd\x7a\x52\x55\x05\x4b\xa8\xf9\x6b\xa2\x81\xd2\x83\xc8\x4b\x66\xa9\xdd\xef\xed\xd1\x67\x67\x67\xcc\xea\xe9\x7f\xff\xfe\xfd\xf2\x85\x33\x4b\xb8\x53\x3e\x70\xbd\xf1\x3e\xba\xdf\x1e\xc2\x46\x58\xad\xd5\x41\x3a\xdd\xde\x3e\xff\xd6\xb0\xce\xe7\xb4\x6d\xb9\xdd\xfb\x3e\x0f\xe5\x54\x1f\x18\x51\x8b\x50\x18\x18\xb3\xfe\x1c\xe8\x75\x75\x60\xc8\xab\x67\x71\x4c\x63\xec\xb4\x52\x76\xc9\xab\x67\x21\xf7\x9e\x48\x7e\xf6\xe0\x6e\x3d\xe5\xe2\xe2\x82\x4a\xd8\x49\x22\xeb\xcf\x5d\x5f\x94\x37\x86\xad\x9c\x1c\xda\x9b\xea\xd2\xe9\xbd\xd8\x58\x9c\x16\xa5\xe8\x2f\x72\x8d\xd6\x66\xd0\xac\x62\xb8\x5f\x25\x94\x8a\x96\xf6\x25\x40\xb5\x96\x90\x7a\x9d\x15\xa6\xa3\x43\x44\x46\xf6\xa2\x5c\xc6\x30\x3d\x42\x9c\x93\x93\x33\x7c\xd3\x08\xd8\xd7\x3f\x55\x8b\x54\x73\x71\x39\xb9\xdc\x9f\xed\x25\xaa\x84\x96\xf7\xb7\xb6\x77\x74\x74\xd4\xd5\x25\x6f\xb4\x94\xeb\x57\x73\xbf\x6b\xd8\xb9\x39\xdd\x58\x6c\x76\x3e\x5e\x2d\x31\xfc\x9c\xf7\x91\xae\xd5\x31\x21\x8d\x94\x3a\xeb\x52\x8c\xfd\x8b\x54\x6b\xe5\x0e\xc3\x9a\x97\xa8\x56\x8e\x48\x9b\xf7\xf1\x0a\x87\x7e\xd5\x89\x04\x8f\x1d\xe9\xdf\x3d\xfe\x04\x25\xf3\xc1\x44\xea\xd0\x78\x4b\x01\x4a\x66\x1a\x9e\xe4\xbf\x4d\x79\xd1\x31\x31\xa1\x8c\xeb\xcc\xad\x36\x8e\x42\x54\x62\x8d\xfc\x8a\xda\x5c\xef\x9b\x14\xbe\x3d\x31\xb7\x7a\x04\x86\x7a\xa7\x8c\xae\xf5\x45\xf5\x82\x72\x35\xb7\x3b\x7c\xcf\x47\xf3\x24\x71\xb1\x98\x16\xa4\xeb\xe7\x73\x3e\x7e\x44\xa5\xa5\xd2\xaf\x32\x12\x75\x41\xca\x8c\x1f\xac\x74\xde\xeb\x9b\x04\x62\xc0\x24\x34\x26\x5f\xbd\x7a\x15\x3d\x87\x5a\x3f\xdf\xe1\xb8\x28\x34\x5e\x40\x87\xb5\x3f\x5b\x1d\x25\x6e\x61\x48\xba\xa5\x1e\x5b\x08\xad\x86\x49\x06\xdc\xb8\xb8\x6c\x8e\x17\xc8\xcb\x47\xe1\x63\xd0\x26\xd7\xd4\xd4\x38\x2e\x36\x35\x3a\x2e\x92\x82\x2a\xde\x35\xda\xf5\x45\xe2\xad\xaf\x3a\x35\xb7\xd7\xd4\x7c\x80\x93\xbb\x66\xc7\x61\x4d\x2a\x84\xdb\xe2\x9c\x20\x7e\x42\x8e\x9e\x4b\x36\xbc\x08\x00\x93\x6d\x9e\x53\xdd\x63\x69\x94\x97\xee\x63\x92\xb3\xcd\xce\x26\xe3\xd9\x74\x58\xb4\x01\x27\xbd\x65\x7a\xe5\xe3\xb8\xb8\x45\xce\xab\x5d\xcf\x0f\xdb\xd2\xb2\x3a\xaf\xb5\xf1\x89\x0e\x16\x1a\xf7\x3b\xaf\x57\xec\x77\xbc\x80\x7d\x42\x8e\x0b\x80\x8c\x95\x87\xb5\x28\xda\x7f\xd2\xe5\xc4\xae\x43\x29\x65\xb0\xbf\x3f\xe0\x72\x5a\xdf\xa5\x4c\x18\x9b\x2d\x36\x39\x7b\xa1\xbf\x9d\x80\xd2\x8b\x93\xd8\x7d\x5b\x1f\x0a\x15\x52\xd0\x02\x29\x18\x18\x90\xe7\x58\xc4\x6f\x88\x64\xc2\x92\x79\x8d\x72\xf8\x0b\xe5\x93\x99\xc2\xc2\xc2\xd6\xf0\x07\x38\xb7\xa3\x79\xd5\x77\x06\xaa\x39\x1f\xf4\x52\x40\xf9\xe7\x31\xb5\x9c\xd9\xe9\xe9\x5e\x07\x73\xbc\x6f\x64\x4c\x7f\x7e\xa0\x7f\x7e\x5c\x7d\xe6\x12\x52\x4d\x0e\xf7\xe4\xe8\xf2\xd8\xc1\x4e\x53\x8b\xe0\xf6\xf9\xeb\x21\x36\xa1\x93\xfe\x05\x60\x4d\x5e\x5c\x57\xf7\xc7\x3b\xa1\x7b\xfb\xfd\x39\x6d\x6c\xfc\x26\x35\xb4\x9c\x64\xb4\x3e\xfa\x9b\x73\x3e\x8a\x4c\xa9\x59\x35\x1d\xdd\xc9\xd3\x00\x22\x49\x34\x0f\xbf\x82\x30\x0d\x33\x71\x43\x62\xac\xaf\xd9\x87\x87\x08\x83\xa4\x98\xb0\x3d\x99\x38\x03\x21\x7e\xa1\xa8\xc5\x42\xaa\x14\xe6\xac\x4c\xd4\x43\xb0\xe9\x22\xd1\x75\x7c\x52\x11\xc9\x7c\xfa\x98\xf6\x55\x89\x8c\xfa\xf7\x9a\x1e\x09\x00\x95\xa6\x40\x04\x23\x38\xa8\x67\x1d\x2c\xfb\x32\xb9\x99\x65\xef\xdb\xe3\xeb\xce\xbf\x92\x99\xeb\x3c\xc1\xb7\xb8\x73\x95\xa2\x89\x29\x53\x0a\xe4\x22\x2e\xc8\xa5\x56\x77\xd9\xc9\x5d\x8f\x2a\xc3\x7a\xcc\xf4\x62\x1e\x58\x47\xf4\x8e\xc9\xd7\xb7\x9d\xe7\xa3\xe2\x93\xc5\x1a\xe8\xfa\x75\x75\x75\x4f\xa7\x49\xc1\x3d\x1f\x31\x9c\x3b\x2f\x49\x41\x57\xbc\xc0\xf6\x80\x5b\x3e\x39\xd7\xdf\xae\x4b\x91\x78\x54\x7c\x7c\x7c\x3d\x69\xc9\xc9\x84\x37\x9d\x0b\x0e\x4d\xcd\xab\x41\x54\x52\x42\x5e\x07\x73\x04\xc5\xc2\x9f\x5e\xd7\x85\x33\xb5\x2f\x77\x05\xdc\xba\xb5\xb0\x05\xc8\xc9\x7d\x1f\xcd\x15\x97\xad\x6f\x68\xf0\xb8\x3d\xdb\xec\x12\xff\x35\x7f\x78\x45\xc2\x01\xed\xa1\x08\x5f\x6c\x76\x7e\x99\x74\x72\xb4\xdc\x6e\x6b\x6b\xeb\xd2\x10\xc1\x69\x4a\x2e\x64\xd6\x1f\xad\x0f\xf3\xc5\x08\x5a\xa7\x7d\xbe\x51\x76\x71\xeb\x87\x38\x8c\xe6\x88\xaa\xaa\xaa\x06\xbd\x2a\x9f\xd8\x04\x6a\x7d\x96\xe2\x72\x75\x4a\x95\x78\xed\x44\x72\x6f\x9d\xe7\x5b\xdc\xd4\x44\x7a\xaa\xa0\x4a\xe2\xaf\x75\x63\x66\x75\xe5\xb8\xf7\xac\xf4\xee\x1d\xa5\x99\x04\xac\x7c\x4e\x5f\x4f\xaf\xb7\x4a\x5d\x56\x56\xb6\xb4\xb4\xd4\xe5\xe5\x6c\x95\x71\xd8\xa6\x19\x78\xd0\xfb\x78\x25\xc1\xc7\xcc\xd3\xb3\xb1\x3f\x2f\x25\x39\x19\x8d\x68\xa9\xc3\xb7\xde\xb0\xde\x0a\xd2\x9b\x48\x2d\x6e\x8a\xf8\xfd\xfb\xf5\x05\xbd\x53\x2f\x02\x03\x12\x18\x14\xd4\xa5\x80\x71\x8e\xab\x5b\x9b\x11\xc0\x4e\x13\x44\x72\x1f\xe5\x4c\xa8\x3d\x8e\x25\xd1\x9a\x18\x84\x83\x86\xf3\x1f\x07\x48\x5d\xf9\xdc\xf5\xde\x34\x6e\x3a\xf9\xf7\xef\xdf\xff\x49\xa3\xac\xb4\xb4\xb4\xba\xa5\x72\xdf\x3c\x69\xef\x23\xb0\x03\xca\x2b\x1e\x1e\x5a\x7e\xab\xf8\x0a\x6d\x55\x31\x89\xe0\xa7\x8e\x1d\x2c\x66\x06\x31\xb1\x36\xff\xeb\xa3\x68\xae\xec\x6d\x5f\x1f\x1c\x42\x17\xf0\x8b\x92\x8f\x97\x00\x45\x6d\x74\x4c\xa0\xcd\x44\x21\x46\xcb\x7a\xc9\x30\x9b\xa2\xf6\xe3\xfd\x75\xd4\x25\xd2\xae\x91\x92\x06\x6e\x68\x48\xd1\xa6\x52\x38\xef\x10\xf4\x74\xbb\x1d\x9a\x10\x6d\x39\x7f\x70\x70\x90\x95\x45\x29\xf3\x46\x57\x17\xe0\x6d\xd3\xf8\xee\xfe\x72\xff\xc5\xa0\xdd\xbf\x1f\x05\x10\x10\x10\x74\xfa\x5d\x26\x7b\x6b\x2a\xc4\x99\x12\xae\x19\x97\x4f\x5b\x59\x59\xb5\xd1\x07\x9c\x0d\xb1\xb2\x63\xc1\xc2\xfa\x98\xbe\xb7\x4f\xee\x82\x25\xfd\x04\x96\xfa\xa6\x4a\x75\x8c\xb9\x33\xda\x6b\x6b\xde\x55\x8e\x49\x3f\x4b\x3c\xf4\xc7\x10\xb1\x8a\x81\xf1\xfb\xb9\x4a\x4b\x4b\xd9\x99\x98\xac\xf8\x62\x4e\xb8\x95\x4c\x7a\xa9\x63\x83\x22\x50\xdc\x22\xbc\xc7\xf0\x67\xab\x8c\xe3\x60\x16\x31\x27\xa3\xe7\x12\x01\xfe\x8a\x8a\x8a\x63\x79\x92\x70\x3f\xf0\xe0\x1a\x3e\x11\x21\x21\x0e\x2e\x2e\x6a\xe7\xf0\x66\x16\xaf\x39\xe6\x6b\x88\xc3\x1c\x24\xaa\x8f\x5e\xd9\x2b\xc3\x70\x00\x76\xa1\x18\xee\xf8\xdb\xac\xd6\xd8\x30\x57\xa5\x07\x02\x5c\x42\x1f\x3b\xef\xe9\xab\x27\x08\xd1\x93\x62\x70\x01\xeb\x97\x4f\xdb\x50\x95\x7d\xd6\x39\xe1\x9f\xf9\x63\x1f\xe5\x46\x66\x78\x91\x8c\xa1\x31\xb6\x7b\x2e\xf1\xd2\xfb\x27\x24\xfe\x6f\xa3\x1f\xe1\x4f\x49\xc2\x57\x7c\xe9\x88\x10\x99\xff\x98\xf1\xba\x95\x6c\xd2\xd4\x30\x02\x24\x14\x22\x5a\x96\x9d\xae\x25\x3d\xb1\x23\xe1\x98\x61\xa8\x47\xa1\x85\xdf\xb2\xb2\xb2\x94\x9c\x23\x0a\xa3\x19\xf7\x49\x13\x94\x18\x5d\x75\x64\x51\xfa\x20\x22\x9c\xdf\xc9\x40\x00\x38\xdf\x27\x05\x7d\xf0\x04\xbd\x5c\xb2\x50\xb2\xa5\x61\xfb\x32\xfe\xb1\xa0\x5f\x27\xcd\x0a\xde\xb4\x5d\xa3\xc5\x47\x47\x21\x2a\x87\x34\x37\x11\x70\x8d\x03\x77\xe8\x88\xd5\xa4\x5d\x63\xb4\xe8\xde\xa5\x5f\xf6\x08\xe6\x35\x5d\x31\x34\xa4\x3c\x6e\x38\x90\xf1\x89\x6f\xe6\xe7\x47\xc6\x24\x5a\x69\xfc\xac\xeb\xe3\xd5\xcf\xe2\xde\xdc\x6d\x99\x42\xc0\x34\xb5\x46\xab\x11\x4a\xde\xdc\x9a\xe8\x83\x83\x03\x78\x5f\xe4\x6d\xd1\xdf\xf0\x04\xfa\x2e\xd3\xbb\x8b\xdd\x22\xa5\x84\xb3\x8f\x06\x20\x40\xca\x10\xd3\x7e\x00\x31\x2d\x6d\xb7\xf3\xaa\x54\xe6\x32\xb3\x1e\xd3\x58\x8e\x68\xbd\xcd\x04\x43\x8f\xaf\x52\x91\xeb\x64\xb1\x06\xb5\xb8\x17\x00\x90\xc2\xa2\x81\xa8\xe7\x5c\xed\x0a\xf4\x3f\x5a\x6a\x3d\xd1\xbe\xe3\x09\xbe\x1d\x56\xa6\x0d\x9c\x1a\x47\x11\xa0\x1c\xf9\x1e\x81\x4b\xd0\x4a\xf0\x6b\x78\xf8\x5f\xbb\x27\x22\xd9\xdf\x60\x3b\xb9\x35\x92\xfd\x22\x4b\xa9\x88\x80\xf8\xcf\x29\xc1\x13\x1f\xd4\x47\x52\xa6\xbe\xa1\x41\x37\x9d\x29\x0e\x4e\x7e\xe0\xce\xba\x65\xd6\xe2\xb2\xf6\xbd\x6f\x2a\x4f\xb8\x5a\x19\x79\x37\x6b\x23\x40\x98\x9d\x04\x68\x6c\x6c\x24\xe3\x81\x85\x17\x79\x30\x55\xe9\x6a\x5f\xa2\x68\x74\xc2\x78\xd6\x0e\x16\x2f\x6d\xbe\x05\x17\x4d\x90\x93\x91\x45\x61\xdd\xbf\x62\x63\xfb\x39\x32\x12\x61\x1c\x06\xf3\x3f\x14\x94\xee\x0b\xa7\x51\xa4\xd8\xc7\x6e\x1e\x7a\x10\x2b\x7e\x66\xe3\x4b\x47\x98\xa0\xfe\xe7\x18\xff\x67\x4a\x2d\x79\xe4\x7c\xa7\xbf\x70\x61\x9d\xb9\x86\x24\x92\x23\xec\xc5\xcb\x48\x6f\xfb\xd8\x42\xa9\xbb\x1d\xc6\xf0\x36\xc2\xd1\x5e\xce\x5f\x44\x43\x43\x43\x2e\x31\xfc\x02\x22\x89\xf7\x57\x8b\xce\xb8\xb8\xb8\xbd\x69\x4b\x4b\x4b\x97\xfb\xb3\x61\xac\x76\x8d\x0b\x19\x30\x3f\xec\x74\x5c\xad\xcf\x52\xb9\xb9\xb9\x87\xe6\xcf\x66\xf8\x1b\xb5\xe6\x83\x0c\xc5\x1f\x72\x73\x13\xbe\xd5\x27\xc1\xe7\x32\x79\xcd\x4d\xeb\xb5\xb2\x85\x1c\x49\xb9\x8d\xb0\xbe\xf8\x57\x42\x71\xd5\x75\xcd\xfc\xca\x82\x1f\xf7\x4d\xf2\x0d\x61\xb0\x44\x95\xb4\x7d\xec\xac\x62\xef\x83\xb9\xd0\x9f\x35\x03\xae\x4b\xa9\xaf\x74\x90\xe6\x56\xb6\xb6\xaf\x0a\x0b\xc5\x15\xb5\x89\x58\x35\xe3\x63\x62\x64\x25\x49\x2a\x33\xaf\x2f\x06\x93\xe3\x5e\x4a\x3f\x80\x8e\x4e\x0e\xe6\xeb\x77\x7e\xe5\x10\x0a\xfc\xcf\x79\x6d\xd7\x7b\x42\x23\x6e\xb2\x85\x29\x72\x02\x02\xd7\xc3\x05\xc1\x1b\xd2\x16\x9c\x6e\x9e\x13\x81\x5d\x95\x0f\xe9\xe9\x91\x2d\xcb\x64\x29\x89\x00\x97\xf4\x26\x99\x7c\x8d\x6c\x21\x66\x66\xe6\x13\x22\xf8\xac\xba\x16\xf9\xff\x18\xbe\x06\x2b\xfe\xcf\xf0\xd5\x8d\x62\x2e\x79\x77\xdb\x86\x1e\xcb\x6a\x71\x07\x0b\xf7\xae\x84\x2e\x56\x19\x8b\xb7\x52\x70\xc2\x55\xd6\x45\xa7\xed\x3c\xdb\xbd\x0e\x03\xb4\xb2\x09\x28\x29\xdf\x41\xa1\x98\x59\x08\x3a\x05\x05\x85\xf0\xa8\x28\x46\x98\x96\x83\x03\xe7\x77\x46\x76\x4e\xce\x8a\xa1\x5c\x82\xf1\x37\xa5\xba\xae\xae\xae\x3d\xf1\xf2\x20\xc0\x3b\x07\x4b\xc3\xa6\x2f\x5f\x00\x5e\xdc\x21\xcb\xc3\x0a\x09\xf6\x46\x46\x39\xc7\xbc\xc7\xe0\xc1\xb4\xf4\x74\xb4\xaf\x1c\x91\x70\x38\x1c\x6e\x55\x4f\xc1\xf6\x3b\x4b\xd0\xde\x6b\x7b\xf4\xb9\x34\xb7\x60\x72\x17\x29\xe8\x21\x02\xfe\xfa\xf5\x6b\x1d\xb1\x83\x94\xa5\xc6\x95\xb2\xe5\x8b\xb3\xb9\x58\x15\x15\x15\x19\x9f\x69\xdf\xc2\xba\x3a\xb7\xab\x83\x79\x99\xca\x78\xf8\x5c\x9d\xe5\x30\xb2\x85\x0e\x9b\x2d\xf6\x5d\xad\x19\x86\xc6\xe4\xcb\xbf\x12\xbc\x35\x43\xd7\xfc\x56\x29\xf9\x96\xc3\xe9\xf7\x57\x87\xe8\xdb\x6f\x26\xd8\xc2\xf3\x9b\x17\x0f\xdd\xb7\x47\x23\xea\x57\xd5\x46\x43\x6a\x6b\x6b\x4d\x82\x6e\x2d\x2d\x2c\xbe\x24\xd1\x76\xb7\xb5\xb5\xfd\xfd\x6b\x21\x62\x64\xb7\xd4\xe2\x6a\x6b\x6b\x8b\xbc\x4a\x4e\x4e\x9e\xaf\xb7\xee\xdb\xa5\x5f\xf1\x3f\xee\x9c\x9a\xd2\x95\xf9\x90\x96\x26\xe8\xb9\xa7\xeb\x81\x86\x85\xdd\x01\x21\x55\xd4\x4e\x2e\xaa\xfe\xfc\xa6\x7c\x3a\x19\x8b\xa8\xfa\x5b\x55\x55\x64\xa0\xc8\xa1\x97\xb8\x99\xac\x2b\x58\x99\x98\xea\x4e\x51\x26\xd9\x42\x57\x37\xf5\x18\xf5\x00\x41\xa7\x0b\x85\x32\x2c\x41\xb1\x11\xd1\xb1\xb1\x67\x81\x14\xcc\x2c\x8e\xb2\x20\x0f\x31\x63\x0f\x0f\x81\x16\xb3\xe6\x45\x2e\x52\xdc\x07\x85\x34\x35\x0c\xa2\xfc\xe6\xe8\x17\x72\x04\x2b\x24\xff\xb5\xdf\xda\x99\x49\x40\xb4\xbf\x1e\xcb\x95\x7d\x33\x06\xf6\xb4\x58\xc8\x27\x13\x7f\x8b\x79\xac\x3d\x3b\x3b\x9b\xa9\x32\xbe\x87\xe8\x20\xaf\xf7\x67\x5f\x5e\x01\x70\xb0\xb1\x0d\x9b\x9d\xa8\x0f\x6a\x22\xbc\xb6\x4d\x0d\xaf\x9c\x83\xef\xa9\x38\xbf\x5d\xed\x4e\x5a\x3f\x3d\xdc\x46\x7b\x7e\x12\x71\x35\x93\x93\x43\xb3\x21\x25\x23\xab\x36\x6a\xfd\xe3\x9d\x1d\xb3\xec\x64\xd2\xea\xc6\x7c\x80\x98\x29\xd6\xc8\xa6\x16\xf7\x0a\x29\x26\x9f\x3a\x6e\x9f\x14\xd3\x98\x74\x33\xfe\x25\xe4\xbc\x92\x93\x96\x86\x91\x65\xdc\xe6\x61\xd8\xe2\x52\x20\x1d\xb5\x7a\x71\x71\x61\x3e\x98\x18\x6a\xe5\xe3\x73\x53\xac\x91\x1d\x52\x8d\xaf\x9a\xec\x02\xdb\x7b\x81\x5e\x99\x79\xbd\xfa\x85\x91\x4c\xa7\xf8\x35\x81\xbb\x83\x00\x7e\x1e\x4b\xae\x6a\x0a\x4b\xcc\x2b\x81\x80\xfe\xaf\xea\x19\x12\x3a\xb0\xde\x13\xfe\xfe\x95\x60\x89\xcb\x29\x1d\xef\xe3\x95\x08\x5a\x5e\xcb\x5f\xc4\x99\xa6\x37\x27\x6b\x9a\x25\x44\x0f\xb3\x76\x8d\x52\xe7\xbf\xf9\x21\xa1\xb3\x20\x7f\x6c\x4c\x3c\x4a\xa6\xbb\x96\x3b\x7c\x4b\x0e\xdd\xff\xba\x8d\xf7\x51\x6f\x48\x0c\x8c\x83\x4e\x89\x42\x24\x82\x39\x93\x99\xda\xbd\x8f\xf1\xf5\x6b\xaf\x89\x24\xc6\x4c\x3a\x7c\x08\xaa\x6c\x10\x91\x74\x58\xad\xad\xad\x2e\x7c\xec\xd8\x22\x89\x71\x09\x09\x11\x29\x8b\x4a\x8a\x8a\xd4\xa2\x6e\x80\x5e\x8e\xc3\x85\x46\xfb\xe5\x36\x41\x9b\xbd\xcb\xbb\xde\xb0\x17\x7d\x83\x18\xd8\xc8\x77\x74\x85\xf8\xad\xce\xab\x5d\x32\xc6\x31\x70\x83\x6c\x21\x47\xa4\x79\x6a\xaf\xa9\x8a\x9a\x9a\xdc\x97\x8c\xca\x6f\xdf\x7e\x0e\x0d\x9d\x46\x91\xb4\x79\xec\xa2\x69\xb5\x2a\x27\xd1\xec\xb8\xc9\x33\x33\x33\x7f\xfa\xf4\x09\xf9\x6b\xb9\xdd\x7b\xed\x9c\x22\x12\x6e\xdc\xe6\x11\x93\x98\x88\x29\x1f\x1b\x17\x27\xee\xba\x0e\x70\x48\xdb\x9b\xa9\xcc\x26\x53\x14\x78\x07\x48\xc1\x3a\xf6\xeb\x7c\x1a\x2f\x90\xc7\x8f\xea\x9b\x57\xf8\x56\x56\x46\x29\xe6\xc1\x26\x41\xd3\x70\x32\x7a\xfe\x90\xcc\xac\xde\xf0\xae\xb2\x18\x35\xf3\x75\x71\x75\xf7\x13\x25\x0d\x5c\x49\x29\x12\x56\xed\x1c\x0d\x2b\x9a\xa8\x78\xd7\x88\x13\x04\x18\xae\x8b\xc6\x16\x03\xe3\x67\x0c\x33\x53\x14\x0c\x6f\x22\xb0\x97\x9c\x84\x5f\xf7\x9c\x4b\xf8\x11\x5c\x1d\x2d\xe3\x2a\xd3\xfb\x47\x94\x9c\x68\x4e\x0a\x48\xa0\x94\x4c\x62\xbf\xec\xd1\xf1\x29\x61\xc3\x81\xc9\xab\x02\xf0\x23\xe1\xef\x9b\x1c\x42\xc9\xd6\x7e\x7e\x64\x84\xc3\xe1\x21\x2b\x0e\x42\xd6\x96\x96\x05\xa2\xca\x5e\x97\x3c\x8d\xef\xf0\xd4\x38\x05\xb1\x2d\x98\x41\x83\x90\x78\x38\x79\xf8\x44\xec\xb6\x6f\x32\xd3\x1a\x01\x21\x80\x9e\xdb\x43\xbe\x59\x65\x1d\x84\x8d\xf8\x20\x2e\xeb\x61\x43\x1c\x09\xdf\x11\xb0\xa9\x6b\xd9\x0b\x95\x99\xad\xb8\x06\xe8\x24\x45\x3e\x71\x60\x21\x7e\xfa\xba\x3c\x57\xf9\x45\x6b\x24\x33\x75\x5a\xa3\x5c\x06\x0a\xe0\x10\xdf\xe0\xff\x87\x04\x9e\x30\x2b\xf8\x80\x8c\xea\x3c\x5a\xa0\xf0\xa5\x87\x3b\x42\x1b\x01\xca\x39\xfb\xbc\x6d\xdf\x86\xf4\x9c\xc2\x6f\x48\xa4\xa9\x08\x73\x4d\xdf\x5a\x88\xb7\x52\xf3\x22\x9e\x75\xde\x80\xab\x91\x13\xa8\x73\xd9\x49\xd9\xa1\x51\x24\x71\xdf\x43\xcc\x20\xcb\x4b\x2c\xf7\xe4\x69\x18\x12\x3f\x61\xa3\xf0\x6d\x6b\xa0\x42\x29\xff\x15\xe9\xd1\x75\xe0\x07\x4f\x4f\xcf\x1d\x1c\x69\xb3\x15\x14\x9f\x70\xf0\xa0\x61\x25\xd4\x65\xe0\xd0\x8b\x0a\x88\x99\xef\x1b\xf5\xec\x84\xf5\xc4\x07\xb5\xb2\x62\x11\xf3\x92\x41\x68\xe6\x8a\x39\x2e\xb5\x68\x1f\x65\x87\xf1\x5a\x8f\xe6\xd4\x9a\x0f\x22\xac\x9c\x9c\x8e\xca\xab\xbb\x62\x4f\xc0\x60\x11\x17\xe4\x47\x46\xe5\x90\xd7\x6f\x8c\x8d\x25\x9d\x57\x24\xe6\xac\xce\x76\x4b\x3e\xd3\x88\xba\x01\x04\x16\x9b\x1c\xdb\x7d\xcf\xad\x62\xa8\x28\xd0\xa0\xe5\x9e\x2b\x1d\xbe\xb7\xb7\xb7\x78\x04\x0d\x76\xd3\x7b\x45\x49\x52\x68\xca\xb6\x79\xdb\xfa\x15\x06\xae\x17\x3b\xda\x32\xe3\xad\xee\xdb\xcf\xb7\x9f\x9f\x3f\x32\x79\x84\xd4\x9a\x0f\x26\x26\x50\x09\x23\xac\x6c\x6d\x6d\xdd\xdc\xea\x8e\xe5\xd2\xac\xab\xec\xb1\xcd\xcc\xcc\x84\x9c\x57\xc0\x14\x14\xd8\x55\x07\x4b\xad\xe7\x1b\x49\xd2\x98\x23\x5e\x87\x0b\xbd\xac\x40\x04\x5d\x07\x4b\xc6\x79\x46\x2d\x3b\x3b\x3b\x12\x27\xae\xab\x67\xec\xce\xc0\xf5\x12\x45\x23\x99\x69\xa2\x3b\xaf\xe6\x3f\xce\xe5\x08\x05\x21\x9e\xf2\x17\x36\x6d\x46\xdc\x86\xb6\x8a\xfd\x7b\x9a\x35\x26\x79\x00\xa1\x6c\xbc\xa3\x37\x02\x05\x3d\x71\xa4\x14\x14\xf3\xf5\xd6\x5a\xe1\x58\x3c\x31\x4b\x6e\xad\x46\x3b\x4c\xdb\x6e\x05\xd0\xf2\x76\xaf\x43\x9c\xf7\x9e\x42\xce\x2b\xc0\xa4\x37\x25\x93\x9e\xc7\x2b\xc6\x33\xd0\xa2\x9f\xff\xb5\xe6\x6b\x31\x98\xdf\x9a\x50\xb7\xec\xfe\x38\x43\x3e\x3d\x06\x28\xe4\x6b\xbc\xed\x8a\x3f\xa9\xad\x7e\x22\xa1\xa0\xb8\x8d\x92\x7e\x40\xe5\x9e\x75\xbd\xdc\xd3\x13\xe9\xef\x0a\xbc\xbf\x62\x54\x8a\x47\xb1\xaf\x84\x96\xb3\x6a\xe5\x01\xef\xbd\xad\xad\xad\x3f\x8b\x7b\x57\x15\x3c\xf9\xe6\x49\x7b\xec\x80\x8c\x36\x5a\x3d\xf7\x67\x18\x95\x13\x01\x75\x4d\xef\x2a\x83\x6e\x37\x33\xd6\x08\x63\x09\xbf\xe9\x96\x8d\x49\x3f\x83\xb1\x10\x08\x3a\x62\x62\x62\xba\x8e\x67\x23\xee\x59\xe1\xd5\x00\xf4\x92\x6e\x39\xc0\x41\x1c\xb9\x54\x80\x08\xa7\x46\x46\x6a\x2a\x58\xc2\x07\x54\x80\x96\x16\x57\x57\x57\x37\x92\x2d\x1c\xb6\x81\xa6\xa8\xdd\x7d\x3b\xe2\x9c\xc5\xd7\x0f\x2b\x99\xa4\x96\x0e\x02\xb3\xcc\xb5\x79\x96\x57\xd0\xfb\x59\x69\x44\x26\x18\xbd\xec\xa5\x8d\xab\x7e\x11\x10\xc7\xd4\x2f\xc5\xcb\x3b\x61\x56\x1b\xf2\xec\x97\x2e\xf1\x09\x02\x47\x13\xeb\x87\xa1\xc5\x48\xa7\x5b\x7f\x3d\xe2\x35\xff\xd1\xb2\xec\x24\x63\x62\x6c\xbc\x5c\xa4\xfc\xd2\xb0\x9c\x7d\x28\x2b\xe0\xe6\x04\x6e\xf8\x03\xbd\x95\xfe\x4a\xa9\xe8\x74\xaa\x54\x67\xc7\x50\xfa\xca\x84\xb3\xf5\x24\x38\xfb\xc4\xfd\xf3\xd9\xa6\xd7\x73\xf3\xf7\x90\xa3\xd9\x2e\x1f\x76\xe9\x18\xbe\x74\x44\x14\xca\x7f\xc2\x93\xf4\x08\x55\x99\xf4\x30\x34\xa4\xa8\xf9\x36\x2e\x90\xd0\x74\x72\x22\x61\x02\x85\x62\x2e\x6a\x29\xbc\x64\x1f\x4f\x25\x1e\xb9\xc6\x19\xc3\x97\x97\x97\x9f\xe8\x9d\xd1\xd6\xd6\xae\xf9\x4b\x49\x4d\x9d\xb0\x62\x28\x27\x27\x67\xba\xcd\x1a\x09\xff\xf5\xeb\xd7\xc3\x04\x7f\xf6\x6b\x16\x83\x03\xfb\x95\x0e\x5f\x5b\xdb\x57\x35\x94\xd8\x08\xa4\xbf\xe7\x40\xe4\xc9\x1c\x3f\x14\x06\x83\xb9\xb9\xf1\x9d\x0c\x13\x01\x50\x0f\x85\x0c\x74\x74\xf8\x1d\x17\x1a\x3a\x3a\x24\x5c\x2c\x47\x73\x44\x57\x83\x9f\x25\x6d\xde\x12\x33\x73\x84\xe9\x1b\x1b\x2f\xff\xfe\xc4\xef\xbc\xd4\x82\x5a\xd5\xf1\x74\xb7\x1f\x47\xca\x65\x17\x4d\x33\x78\x2a\xfd\xb8\xab\x55\xa3\xa7\x56\x3e\x5d\x78\xc8\x3f\x34\x34\x74\x82\x5d\x94\x9f\x8f\x6c\xee\x7e\xe4\x0a\x70\x48\x8d\xc3\x26\x62\x79\xb8\x1d\x0b\xc6\x1c\xf9\xf3\xe7\xcf\xed\xf9\x76\x1f\x05\x03\xa5\xb1\x25\x11\xb2\xd6\x9a\xf3\x34\x2e\x82\xfb\xf9\xa5\x3c\x67\x1b\xc0\x1a\xeb\x07\x04\x48\x5d\x84\xc0\x1c\x3b\xbf\x3e\x5e\xcd\xd0\x65\x54\x5e\x25\xa4\xa1\xe1\xde\x8f\x51\x2a\x22\x28\x6e\x5e\x3c\x0c\x9a\x99\x16\x24\x07\xba\x44\x39\x35\xb7\x77\x74\x80\xf3\x10\xcf\x6f\x2c\xfe\xff\x43\x1d\x88\xa8\x11\x83\xee\x68\xca\xa1\xcf\x6e\x7d\xdd\x3e\x2d\xea\x21\x21\x79\x19\xb3\x75\x4b\xa8\xc2\xbb\x17\xc7\xab\x26\xe9\x67\x92\x0c\x0c\x72\x4e\xa7\x40\x72\x04\xdd\xc1\x7c\x3d\x2b\x3f\x3f\xd1\xeb\xdf\x66\xb5\xf9\xe7\xdf\x1f\x4f\xfa\x5e\xf2\x5b\x8f\x02\x38\x14\x27\x2f\x96\xdb\xbd\xe1\x88\xc0\xfb\xab\x5e\x52\xaa\x31\x56\x86\x3a\x85\x38\x54\x96\xe0\xa7\xf3\xcf\x70\xdb\xe6\x96\x16\x9f\x1f\xf1\x14\x2e\xf4\x41\x17\xf4\xfb\x7f\xbe\xaa\x07\x3f\xdf\xaf\x86\xda\xe3\xa9\x26\x4f\x16\x6b\xf8\x1f\x36\xce\xa2\xc8\x6e\x8f\xe6\x12\x34\x0f\x63\x44\xc2\x07\x93\x68\x3f\x8b\xba\xb3\x90\xc3\x8d\x8d\xa9\x25\x82\x80\x7d\x56\xbf\x33\x51\xc9\x0c\x3f\x86\x30\xa9\x7a\xa8\xde\xb2\x98\x56\x34\x5d\x9e\xe4\x76\x11\xec\x32\x9b\x9a\x92\x7b\x3d\x3d\xdc\x6a\x49\x3f\x4e\x5d\xbf\x97\x18\x0e\x55\xc1\x74\xa9\xa5\x49\xa0\x49\x56\xfb\xea\xb7\x16\x41\x86\xe4\xe0\x80\x56\x7c\x10\xfc\x9e\x9c\x9c\x7c\xb8\xd8\xdc\xc7\xac\xb5\x35\x92\xbd\x6d\x3d\x40\x00\x00\xc8\xb6\x04\x3d\xde\x35\xda\xcf\x82\x00\x8f\x77\x97\xd9\x52\x81\x62\x6d\x44\x17\x3a\x34\xdd\x95\xe3\xc1\x12\xeb\xed\x8b\xf2\xe4\x79\xcf\x49\x6f\x5e\x8b\xe1\x04\x51\xfc\xaf\xd1\xc5\xdc\x15\x9c\x91\x92\x32\x19\x2e\x9e\xb5\x78\xa8\xc4\xe1\x6b\x9b\xd5\xe5\x73\xca\xe0\xd2\x4c\x08\x90\xfd\xfa\x16\x8f\x52\x00\x0b\x34\xe7\xd0\x94\x93\x03\x5e\xed\x9c\x7a\x15\xfb\x8f\xf3\xa5\x3f\xca\x8d\x64\x09\x8a\xfb\x9e\x59\xc8\xb3\xab\xc9\x82\x98\xe6\x2b\x3d\xc4\x8c\x9b\x9d\x96\x43\x9c\x72\xe9\xb0\x44\x1c\x7a\x89\x38\x87\xf3\xa4\x83\xbb\x9a\x9a\x9a\x0a\x1e\x3a\x92\x73\x7e\xc1\x64\x41\x0a\xb3\x55\xc6\x96\x9f\x88\xec\xec\xed\xb5\x72\x44\x50\x31\x41\x84\x84\xc9\x99\x99\x6c\x1c\x0d\x06\x34\xe6\xad\xcb\x47\xcc\xea\xe9\x37\xa5\x57\x11\xf4\x58\x68\x6d\x7f\x82\x3d\x3d\x2f\x69\x9f\x4e\xa2\xde\x37\x3b\x85\x72\x1c\x77\x5e\xaf\xf4\x86\xbd\x90\xe5\x67\x65\xdd\xbe\xdd\xfe\x7c\x6d\x7c\x4e\x03\x06\x77\xd8\x4e\x16\xe3\x53\x8b\x09\xf8\xfd\x7e\xf1\x92\x26\x07\x02\x47\x43\xa4\x31\xd3\x78\x71\xbd\x6b\xf8\xf9\xf3\x67\x88\xa3\xfb\x8e\x7b\xed\xb2\x53\xf0\x46\x82\x30\xc8\xf9\xe3\xb6\xaf\x21\xbd\xb7\x58\xae\x53\x5f\x24\x5e\xb2\xdc\x95\xcd\x3f\x1c\xaa\x67\x70\x63\x8c\xa0\xa2\x63\x1e\x2c\x36\x6b\xa5\x27\x65\x1c\xe8\xd0\x67\xbd\xcc\x02\x17\x1e\xd3\x54\xbc\xe9\x81\x00\x9f\x56\xf2\x8b\x66\x25\x43\xe1\x99\xd0\xf2\xcb\xed\x38\xc5\xe4\x2f\x7d\x6b\x27\x8f\x54\xaf\x7e\x90\xfc\xf2\x33\x4b\x29\x79\x33\x65\x23\x50\x87\xd9\xe3\x0a\xee\xd8\xe2\xce\x50\x2f\x35\xab\x46\x7e\x0c\xf9\x6e\x80\x43\x83\xf2\x6c\x69\xc3\xf3\x9e\x5e\x16\xf4\xa4\xc0\x25\x8c\x46\x99\x80\x09\x2d\x8c\xa5\xa2\x3d\x81\x11\x0e\x2f\xf5\x01\xcc\x30\x08\x56\x73\x53\x28\xb5\x3f\x18\xa3\x21\xe8\xe2\x95\x8a\x8e\x0b\x70\x92\x6f\xfc\xb4\x3e\x30\xd9\x42\xc8\x2d\x86\x36\xf2\x24\x7b\x34\xc0\x83\x09\x4a\x8c\x2d\x3b\xea\x0a\x12\x40\xde\x12\xd0\x01\x6f\xf1\xb4\xdd\x26\x77\x16\x59\x91\x96\xb1\xf1\x72\xa3\xfd\xec\x43\xbc\xf1\x15\xb5\x59\x69\xce\xd5\xe1\x22\xfa\x44\x1a\x3c\x93\x43\xbf\xaa\xa7\xe4\xfb\xcd\xcd\xcd\xdc\x9c\x01\x44\xab\x7d\x39\x68\xf3\x17\xc9\xaa\xb2\x0a\x48\x61\x7b\x34\xf7\x71\x68\xee\xbd\xb6\x36\x6a\xbb\xbb\x6f\x84\x66\xc9\xfe\x9f\xaf\xb8\x0c\x88\xae\xb6\xb6\xbb\x1f\x09\x54\x4f\x6c\x5c\x8b\xcd\xce\xce\x42\xd9\xb2\x93\x66\xb5\x7f\xb7\xb6\x10\xf8\x9b\x9a\x86\xa0\xf0\xff\x99\x31\xaa\xf9\xc9\x92\x52\x6a\x3e\x98\x78\x46\xa8\x29\xb9\x6e\x67\x83\x91\xf4\xea\xff\xe1\x05\xfd\xff\x30\x14\x75\xf2\x8c\x86\x82\xf2\xfc\x6c\x3d\xb4\x93\xa2\xc5\xdd\x2d\x81\x82\x82\x82\xa2\xaa\xa8\xa9\x50\x25\x67\x8a\xf8\xff\x05\x00\x00\xff\xff\x03\x5e\x06\x03\xf6\x35\x00\x00") func _assetsTestsQrQrwithlogoPngBytes() ([]byte, error) { @@ -85,8 +149,8 @@ func _assetsTestsQrQrwithlogoPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "_assets/tests/qr/QRWithLogo.png", size: 13814, mode: os.FileMode(0644), modTime: time.Unix(1684560243, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc8, 0x9f, 0x71, 0xf7, 0x44, 0x33, 0xa3, 0x2a, 0x9c, 0xb4, 0xd7, 0x51, 0x9d, 0x1a, 0xdc, 0x36, 0x50, 0xfa, 0x17, 0x48, 0x3c, 0xa, 0xfe, 0xda, 0x6, 0x28, 0xe4, 0xef, 0x75, 0x64, 0x39, 0xf4}} + info := bindataFileInfo{name: "_assets/tests/qr/QRWithLogo.png", size: 13814, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -105,8 +169,8 @@ func _assetsTestsQrDefaultqrPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "_assets/tests/qr/defaultQR.png", size: 12007, mode: os.FileMode(0644), modTime: time.Unix(1684410764, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xfd, 0xc9, 0x88, 0xce, 0xea, 0xea, 0xa5, 0x97, 0x8b, 0x82, 0x5f, 0x40, 0x68, 0x75, 0xb8, 0x8, 0x50, 0xcd, 0xea, 0x7e, 0xd8, 0xba, 0xb7, 0x30, 0xa8, 0x4, 0x64, 0xb3, 0x8f, 0x33, 0x3a}} + info := bindataFileInfo{name: "_assets/tests/qr/defaultQR.png", size: 12007, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -125,8 +189,28 @@ func _assetsTestsQrStatusPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "_assets/tests/qr/status.png", size: 9398, mode: os.FileMode(0644), modTime: time.Unix(1684410764, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x51, 0x48, 0x2c, 0x42, 0xb2, 0x4d, 0x24, 0xbd, 0xcc, 0x98, 0x13, 0x6d, 0xbf, 0x9e, 0xb6, 0x9f, 0x26, 0x99, 0x63, 0x44, 0x60, 0x5b, 0x7, 0x42, 0x37, 0xa3, 0xff, 0x3, 0x97, 0xe, 0xeb, 0x8a}} + info := bindataFileInfo{name: "_assets/tests/qr/status.png", size: 9398, mode: os.FileMode(436), modTime: time.Unix(1696070017, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var __assetsTestsWikipediaIco = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x56\x4d\x4c\x63\x65\x17\x7e\xee\x00\x05\xe6\x83\xdc\x7e\x9a\x80\x18\xf9\x89\x33\x01\x92\xf9\x6b\x88\xb8\x41\xb0\x06\x12\x42\x62\x00\x77\x10\x23\xc3\x86\x20\x9b\x3a\x71\x41\x20\x9a\xa1\x26\x06\x58\x98\xca\x4c\x42\x22\x1b\x66\xdc\xa0\x6c\xca\x8c\x24\xb2\xc3\xea\x42\x5c\x90\x02\x33\x20\x61\xd3\x08\xb4\xa5\x2d\xbd\x0f\x1d\x34\x19\x9c\x18\xae\x39\xb7\xbd\xf4\xc7\x56\x43\x62\x74\xe3\x49\xb8\xe7\x9e\x87\xf7\xed\x79\xcf\xcf\xfb\x9c\x0b\x28\xc8\x83\xcd\x66\x85\x82\x7c\xbc\x6b\x01\x5e\x05\x50\x53\x13\xb7\x43\x17\x80\x59\x0b\x60\xb5\xc6\xed\x7a\x05\x18\x2f\x06\xea\x01\xd8\x00\xf4\x03\x06\x6e\x88\x05\x67\x62\x4d\x68\x45\x51\x50\x5e\x5e\x0e\x9b\xcd\x86\xf6\xf6\x76\xf4\xf4\xf4\x60\x70\x70\x10\xc3\xc3\xc3\x98\x98\x98\xc0\xf4\xf4\x34\xe6\xe7\xe7\xb1\xb4\xb4\x84\x95\x95\x15\x6c\x6f\x6f\x23\x14\x0a\xe1\xf4\xf4\xd4\xd8\xaf\xeb\xfa\x29\x33\xe4\x48\x17\xc9\x44\x45\xb2\xad\x4e\xec\xc8\x06\x93\xd9\x97\x93\x47\xe7\xc5\xb3\xc3\x49\xf9\x7e\x59\x9e\xda\xdb\x99\xf8\x3d\x87\x3c\x43\x96\x0c\x58\xb3\xbd\x28\x6a\x53\xf1\xa6\xe3\x87\x28\x10\x35\x05\x57\x3a\xbe\x09\xb8\x49\xad\x4b\xbf\x96\x8e\xaf\xe9\xff\x6f\x26\x23\x50\x7e\x4d\xc7\xdf\x53\x47\x8a\xc9\x2d\x14\xbd\x9c\xee\xb6\xfa\xc9\x72\x83\x8f\x0f\x70\xed\xd6\x72\x2a\x7e\x10\xcb\xe7\x3d\x17\xed\x70\x6d\xb4\xa4\xe2\xbb\x6a\x05\xf7\x2b\xa3\x38\xf6\x06\x4a\x52\xf1\x4f\xf5\x16\x1e\x16\xf8\xf5\x42\x46\xf3\x53\x71\xab\xe2\x22\xed\x53\x78\x8d\xb4\xa7\x44\x16\xc1\x31\x49\x0f\xe0\x20\xbf\xe9\x4b\xe2\x7b\x6a\x21\xc9\x00\x2e\x78\xc9\xfd\xca\x24\xfe\x10\x62\xf8\x21\x59\x0b\x3f\x4d\xe2\x76\xc8\x66\x8f\x6a\x2c\x7d\xce\x67\xc2\x51\x2b\xe4\xbd\x0b\x2f\x89\xe5\x3c\x4b\x5d\x50\xfd\x45\xfe\x5b\xad\x18\x39\xdd\xb8\x6e\xe2\x8f\xf4\xdf\x0c\xb7\x96\x37\xdc\x12\x7b\xb1\x89\x3b\x21\xc1\x7f\xab\x56\x3e\xe8\x94\x52\x98\x91\x69\xaf\xeb\x92\xac\x7e\xdc\x0e\xc8\x52\xcd\xd8\x25\x27\xab\x96\xa8\xa2\x37\x14\xdf\xe1\xf3\xe2\x7f\xc1\x11\xc7\xb7\xf4\x67\xe2\x1c\x45\xe4\xd8\x2c\xc9\xc7\x57\xe2\xf8\xe7\x31\x29\xde\x57\x12\xdb\xc3\xab\xd2\x14\xf1\xc8\x34\x3b\xc4\x5d\xbf\xee\x20\x37\x2d\x3e\x32\x1c\x6f\x8a\x1f\x63\xb2\x32\x5c\x8d\xdb\xe4\x77\xd2\x0f\x07\x68\x26\xf9\x75\x0d\xa0\x7c\x10\xe9\x86\x5e\x30\xfb\x83\x0d\x3f\x7f\x12\xe9\x86\xf2\x21\xd9\x70\xa9\xad\xad\xa1\x76\x4f\x9e\x57\xee\x5e\x6a\x6b\x95\xd7\xd6\xcb\xfc\xb7\xe4\xef\xba\x77\xb9\xee\x75\x4e\x1e\xc8\xc5\x1b\x39\x78\xc6\x60\xa1\x31\x20\x26\x5a\x05\x7e\x12\x5d\x08\x78\x44\xe7\x01\x4e\x83\xe4\xfe\xa8\xff\x93\x74\xc9\x95\x27\x33\x8f\x66\x5e\xcd\x3c\x9b\x79\x97\x39\x53\x03\xc0\x9e\x32\x67\x9c\x17\x92\xbf\x9b\x3a\x67\xca\xca\xca\x50\x57\x57\x87\xc6\xc6\x46\x63\xd6\xf4\xf6\xf6\x62\x60\x60\x00\x23\x23\x23\x98\x9c\x9c\xc4\xcc\xcc\x0c\xdc\x6e\x37\x56\x57\x57\x8d\x39\x13\x0e\x87\x53\xe6\x4c\x46\x3f\x64\x34\xc8\xe9\x9f\xf7\x63\x76\xfe\xdf\xf6\x91\xd1\x14\xa6\xee\xef\x23\xf7\x2e\x9e\x99\x1a\x4a\xc8\x85\x24\x41\x1e\x08\xb9\xdb\xd4\x33\x62\xdc\x38\x5e\xf0\x46\xf0\xb1\xc3\xb4\xa7\x8a\xf7\x1c\xfe\x27\x91\x52\xd3\xb6\x56\x45\x4a\xd6\x4e\xf8\x42\xc2\x8c\xc4\x5c\xac\xbd\x59\xc5\x8f\x12\xf6\xbe\xe2\xe3\x7d\xb8\xb8\x3e\x1b\xb7\xef\x3f\x25\x77\x15\x1f\x83\x09\x0a\xef\x2a\x25\xd7\x2d\xe4\x61\xfc\x44\x51\x21\xcf\x31\xa1\xd4\x57\x0c\x3b\x00\x2f\x35\x6b\xb7\x97\x5c\x30\x4e\xb4\x9e\x2f\x27\x7c\xd4\x47\xee\x1a\x27\x1a\x7b\x46\x6e\x14\x46\xfe\x47\x1e\x54\x1a\xa3\xa3\x85\xbc\x55\xca\xcb\xa4\x56\x24\xec\xa5\xbb\xa9\xa9\x0e\x2e\xb8\xc9\xb7\x7c\xe4\x86\xea\x63\x50\x5f\xe6\xda\x55\xf2\xe6\x3b\xdc\x57\xf5\x02\xde\xd0\x2b\x42\xd5\xfa\xec\x5d\x5d\xef\xcb\x9a\xbf\x73\xc8\x5f\xd5\x27\xb3\x9e\x99\xf5\x8e\x01\xaa\x07\xc8\x73\x02\x8a\xf3\x1f\xb8\xc1\xa6\x1f\xf1\x29\xbe\xeb\x13\xbd\x5c\x93\xd2\xe7\x1e\x64\xef\x73\xf9\x9e\x92\x3e\x6f\x6a\x6a\x42\x47\x47\x07\x86\x86\x86\x30\x3a\x3a\x8a\xf1\xf1\x71\xe3\x7b\x6a\x6e\x6e\x0e\x8b\x8b\x8b\x46\x9f\xef\xec\xec\x20\x18\x0c\x26\xfb\x3c\x11\x70\x22\x3f\x47\x64\x94\x34\x26\xe5\xae\x2b\x20\x73\x86\x53\x9d\xeb\x4d\xa2\x6b\xbf\x7c\x7f\x4b\xba\xaa\xc4\x5f\x11\xf0\x91\xfe\xce\x40\xd5\xa1\xcc\xe7\xe5\xbd\xeb\xec\x24\x5b\x79\xe7\x0b\x7e\x46\xed\xa2\x56\xef\xf7\xed\x73\xf1\xc4\x7f\xf2\xb8\xf9\xce\x9b\x39\xea\x62\xe6\x5f\xf7\xe4\x41\x75\x2a\x72\xc3\xcf\xf7\x27\x7b\x64\xef\xef\x01\x00\x00\xff\xff\xd8\xc1\x95\x6e\xae\x0a\x00\x00") + +func _assetsTestsWikipediaIcoBytes() ([]byte, error) { + return bindataRead( + __assetsTestsWikipediaIco, + "_assets/tests/wikipedia.ico", + ) +} + +func _assetsTestsWikipediaIco() (*asset, error) { + bytes, err := _assetsTestsWikipediaIcoBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "_assets/tests/wikipedia.ico", size: 2734, mode: os.FileMode(436), modTime: time.Unix(1709831282, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -134,8 +218,8 @@ func _assetsTestsQrStatusPng() (*asset, error) { // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) @@ -145,12 +229,6 @@ func Asset(name string) ([]byte, error) { return nil, fmt.Errorf("Asset %s not found", name) } -// AssetString returns the asset contents as a string (instead of a []byte). -func AssetString(name string) (string, error) { - data, err := Asset(name) - return string(data), err -} - // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { @@ -162,18 +240,12 @@ func MustAsset(name string) []byte { return a } -// MustAssetString is like AssetString but panics when Asset would return an -// error. It simplifies safe initialization of global variables. -func MustAssetString(name string) string { - return string(MustAsset(name)) -} - // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) @@ -183,33 +255,6 @@ func AssetInfo(name string) (os.FileInfo, error) { return nil, fmt.Errorf("AssetInfo %s not found", name) } -// AssetDigest returns the digest of the file with the given name. It returns an -// error if the asset could not be found or the digest could not be loaded. -func AssetDigest(name string) ([sha256.Size]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { - a, err := f() - if err != nil { - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) - } - return a.digest, nil - } - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) -} - -// Digests returns a map of all known files and their checksums. -func Digests() (map[string][sha256.Size]byte, error) { - mp := make(map[string][sha256.Size]byte, len(_bindata)) - for name := range _bindata { - a, err := _bindata[name]() - if err != nil { - return nil, err - } - mp[name] = a.digest - } - return mp, nil -} - // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) @@ -221,34 +266,33 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ + "_assets/tests/1.gif": _assetsTests1Gif, + "_assets/tests/2x1.png": _assetsTests2x1Png, + "_assets/tests/spin.gif": _assetsTestsSpinGif, "_assets/tests/qr/QRWithLogo.png": _assetsTestsQrQrwithlogoPng, - "_assets/tests/qr/defaultQR.png": _assetsTestsQrDefaultqrPng, - "_assets/tests/qr/status.png": _assetsTestsQrStatusPng, + "_assets/tests/qr/defaultQR.png": _assetsTestsQrDefaultqrPng, + "_assets/tests/qr/status.png": _assetsTestsQrStatusPng, + "_assets/tests/wikipedia.ico": _assetsTestsWikipediaIco, } -// AssetDebug is true if the assets were built with the debug flag enabled. -const AssetDebug = false - // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// -// data/ -// foo.txt -// img/ -// a.png -// b.png -// -// then AssetDir("data") would return []string{"foo.txt", "img"}, -// AssetDir("data/img") would return []string{"a.png", "b.png"}, -// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { - canonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(canonicalName, "/") + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { @@ -270,20 +314,23 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } - var _bintree = &bintree{nil, map[string]*bintree{ - "_assets": {nil, map[string]*bintree{ - "tests": {nil, map[string]*bintree{ - "qr": {nil, map[string]*bintree{ - "QRWithLogo.png": {_assetsTestsQrQrwithlogoPng, map[string]*bintree{}}, - "defaultQR.png": {_assetsTestsQrDefaultqrPng, map[string]*bintree{}}, - "status.png": {_assetsTestsQrStatusPng, map[string]*bintree{}}, + "_assets": &bintree{nil, map[string]*bintree{ + "tests": &bintree{nil, map[string]*bintree{ + "1.gif": &bintree{_assetsTests1Gif, map[string]*bintree{}}, + "2x1.png": &bintree{_assetsTests2x1Png, map[string]*bintree{}}, + "qr": &bintree{nil, map[string]*bintree{ + "QRWithLogo.png": &bintree{_assetsTestsQrQrwithlogoPng, map[string]*bintree{}}, + "defaultQR.png": &bintree{_assetsTestsQrDefaultqrPng, map[string]*bintree{}}, + "status.png": &bintree{_assetsTestsQrStatusPng, map[string]*bintree{}}, }}, + "spin.gif": &bintree{_assetsTestsSpinGif, map[string]*bintree{}}, + "wikipedia.ico": &bintree{_assetsTestsWikipediaIco, map[string]*bintree{}}, }}, }}, }} -// RestoreAsset restores an asset under the given directory. +// RestoreAsset restores an asset under the given directory func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { @@ -297,14 +344,18 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = os.WriteFile(_filePath(dir, name), data, info.Mode()) + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } - return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil } -// RestoreAssets restores an asset under the given directory recursively. +// RestoreAssets restores an asset under the given directory recursively func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File @@ -322,6 +373,7 @@ func RestoreAssets(dir, name string) error { } func _filePath(dir, name string) string { - canonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } + diff --git a/vendor/github.com/status-im/status-go/mailserver/migrations/bindata.go b/vendor/github.com/status-im/status-go/mailserver/migrations/bindata.go index 4f82ec16..98ed1d24 100644 --- a/vendor/github.com/status-im/status-go/mailserver/migrations/bindata.go +++ b/vendor/github.com/status-im/status-go/mailserver/migrations/bindata.go @@ -2,7 +2,7 @@ // sources: // 1557732988_initialize_db.down.sql (72B) // 1557732988_initialize_db.up.sql (278B) -// static.go (178B) +// static.go (198B) package migrations @@ -85,7 +85,7 @@ func _1557732988_initialize_dbDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x40, 0x78, 0xb7, 0x71, 0x3c, 0x20, 0x3b, 0xc9, 0xb, 0x2f, 0x49, 0xe4, 0xff, 0x1c, 0x84, 0x54, 0xa1, 0x30, 0xe3, 0x90, 0xf8, 0x73, 0xda, 0xb0, 0x2a, 0xea, 0x8e, 0xf1, 0x82, 0xe7, 0xd2}} return a, nil } @@ -105,12 +105,12 @@ func _1557732988_initialize_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x85, 0x41, 0x7a, 0xba, 0x4f, 0xa3, 0x43, 0xc0, 0x63, 0xfa, 0x2c, 0xd1, 0xc5, 0xbb, 0x20, 0xa0, 0x64, 0xa8, 0x3b, 0x65, 0x82, 0xa2, 0x14, 0x28, 0x18, 0x7c, 0x8b, 0x3a, 0x7a, 0xfd, 0xe0}} return a, nil } -var _staticGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8c\x41\x6a\xc3\x40\x0c\x45\xf7\x73\x8a\xbf\x6c\xa1\x1e\xed\x7b\x82\x52\x12\x08\x24\x17\x90\x6d\x21\x0b\xc7\x33\x46\x52\x72\xfe\x6c\x12\x42\x96\x8f\xc7\x7b\x44\x38\xf1\xb4\xb2\x0a\x22\x39\x6d\x82\x6c\xa3\xcc\xf1\xa2\xaf\xff\xf3\x0f\xfe\x2e\xc7\xc3\x37\x5c\xa2\xdf\x7c\x92\x80\x9b\x2e\x09\x6b\xd9\x91\x8b\x60\xb4\xc6\x6e\x12\x65\xff\x38\x95\x42\xa4\xfd\x57\xa5\x89\x73\x0a\xb4\x0f\xa3\xb5\x99\x93\x31\xec\xab\x62\x33\x75\x4e\xeb\x2d\x30\x74\xd4\x4a\xb5\xd2\xc6\x76\x0d\xf1\xbb\x38\xbd\x35\x3d\xb3\xaa\x1d\xb5\x3c\x02\x00\x00\xff\xff\xf4\xe4\x35\xe2\xb2\x00\x00\x00") +var _staticGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\xcc\x31\x4a\x06\x41\x0c\xc5\xf1\x7e\x4e\xf1\x4a\x05\x67\xa2\x95\x20\xd8\x8b\x28\x08\x7a\x81\xec\x6e\xc8\x17\xd6\x99\x2c\x99\xe8\xf9\x6d\x56\xc4\xd7\x3d\xfe\xf0\x23\xc2\x1b\xaf\x3b\xab\x60\x26\xa7\xad\x90\xbe\xc8\x36\x7f\xdf\xd5\xf3\xfb\x0d\x9e\x3e\x5e\x5f\xae\x11\x32\xfd\x2b\x56\x99\x08\xd3\x4b\xc2\x46\x3a\xf2\x22\x58\x6c\x70\x98\xcc\x72\xfc\x93\x4a\x21\x52\x7f\x50\x19\x12\x9c\x02\xf5\xba\xd8\xd8\x38\x19\xb5\xfb\x96\xd6\xe5\xf1\xee\xfe\xf6\x1c\xea\xb1\x2b\xba\x69\x70\x9a\x8f\x89\xea\x68\x8d\x5a\xa3\xce\xf6\x39\x25\xbe\x25\xe8\x2f\xd3\x49\x35\x75\xb4\xf2\x13\x00\x00\xff\xff\x9a\xab\xca\x11\xc6\x00\x00\x00") func staticGoBytes() ([]byte, error) { return bindataRead( @@ -125,8 +125,8 @@ func staticGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x8a, 0xf4, 0x27, 0x24, 0x9d, 0x2a, 0x1, 0x7b, 0x54, 0xea, 0xae, 0x4a, 0x35, 0x40, 0x92, 0xb5, 0xf9, 0xb3, 0x54, 0x3e, 0x3a, 0x1a, 0x2b, 0xae, 0xfb, 0x9e, 0x82, 0xeb, 0x4c, 0xf, 0x6}} + info := bindataFileInfo{name: "static.go", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xd2, 0xfd, 0xbf, 0xe5, 0xff, 0xcb, 0x54, 0xec, 0x41, 0x23, 0x7b, 0xc0, 0xeb, 0x55, 0xb8, 0x69, 0xd7, 0x57, 0xf1, 0x83, 0x13, 0x88, 0x55, 0xd9, 0x73, 0xdc, 0x93, 0xee, 0x23, 0xe3, 0xe9}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/multiaccounts/accounts/database.go b/vendor/github.com/status-im/status-go/multiaccounts/accounts/database.go index f37a3d19..b1396f67 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/accounts/database.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/accounts/database.go @@ -961,7 +961,7 @@ func (db *Database) updateKeypairClock(tx *sql.Tx, keyUID string, clock uint64) return err } -func (db *Database) saveOrUpdateAccounts(tx *sql.Tx, accounts []*Account, updateKeypairClock, isSepoliaEnabled bool) (err error) { +func (db *Database) saveOrUpdateAccounts(tx *sql.Tx, accounts []*Account, updateKeypairClock, isGoerliEnabled bool) (err error) { if tx == nil { return errDbTransactionIsNil } @@ -994,10 +994,10 @@ func (db *Database) saveOrUpdateAccounts(tx *sql.Tx, accounts []*Account, update } if acc.TestPreferredChainIDs == "" { - if isSepoliaEnabled { - acc.TestPreferredChainIDs = TestSepoliaPreferredChainIDsDefault - } else { + if isGoerliEnabled { acc.TestPreferredChainIDs = TestPreferredChainIDsDefault + } else { + acc.TestPreferredChainIDs = TestSepoliaPreferredChainIDsDefault } } } @@ -1090,7 +1090,7 @@ func (db *Database) SaveOrUpdateAccounts(accounts []*Account, updateKeypairClock if len(accounts) == 0 { return errors.New("no provided accounts to save/update") } - isSepoliaEnabled, err := db.GetIsSepoliaEnabled() + isGoerliEnabled, err := db.GetIsGoerliEnabled() if err != nil { return err } @@ -1106,7 +1106,7 @@ func (db *Database) SaveOrUpdateAccounts(accounts []*Account, updateKeypairClock } _ = tx.Rollback() }() - err = db.saveOrUpdateAccounts(tx, accounts, updateKeypairClock, isSepoliaEnabled) + err = db.saveOrUpdateAccounts(tx, accounts, updateKeypairClock, isGoerliEnabled) return err } @@ -1119,7 +1119,7 @@ func (db *Database) SaveOrUpdateKeypair(keypair *Keypair) error { return errDbPassedParameterIsNil } - isSepoliaEnabled, err := db.GetIsSepoliaEnabled() + isGoerliEnabled, err := db.GetIsGoerliEnabled() if err != nil { return err } @@ -1173,7 +1173,7 @@ func (db *Database) SaveOrUpdateKeypair(keypair *Keypair) error { if err != nil { return err } - return db.saveOrUpdateAccounts(tx, keypair.Accounts, false, isSepoliaEnabled) + return db.saveOrUpdateAccounts(tx, keypair.Accounts, false, isGoerliEnabled) } func (db *Database) UpdateKeypairName(keyUID string, name string, clock uint64, updateChatAccountName bool) error { diff --git a/vendor/github.com/status-im/status-go/multiaccounts/database.go b/vendor/github.com/status-im/status-go/multiaccounts/database.go index 9ca2bc8e..9822262f 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/database.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/database.go @@ -31,6 +31,10 @@ type Account struct { CustomizationColorClock uint64 `json:"-"` } +func (a *Account) RefersToKeycard() bool { + return a.KeycardPairing != "" +} + func (a *Account) ToProtobuf() *protobuf.MultiAccount { var colorHashes []*protobuf.MultiAccount_ColorHash for _, index := range a.ColorHash { diff --git a/vendor/github.com/status-im/status-go/multiaccounts/migrations/bindata.go b/vendor/github.com/status-im/status-go/multiaccounts/migrations/bindata.go index c3b0c63d..7d0130d3 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/migrations/bindata.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/migrations/bindata.go @@ -12,7 +12,7 @@ // 1660238799_accounts_kdf.up.sql (115B) // 1679505708_add_customization_color.up.sql (78B) // 1687853321_add_customization_color_updated_at.up.sql (80B) -// doc.go (74B) +// doc.go (94B) package migrations @@ -95,7 +95,7 @@ func _0001_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x61, 0x4c, 0x18, 0xfc, 0xc, 0xdf, 0x5c, 0x1f, 0x5e, 0xd3, 0xbd, 0xfa, 0x12, 0x5e, 0x8d, 0x8d, 0x8b, 0xb9, 0x5f, 0x99, 0x46, 0x63, 0xa5, 0xe3, 0xa6, 0x8a, 0x4, 0xf1, 0x73, 0x8a, 0xe9}} return a, nil } @@ -115,7 +115,7 @@ func _0001_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0xfa, 0x99, 0x8e, 0x96, 0xb3, 0x13, 0x6c, 0x1f, 0x6, 0x27, 0xc5, 0xd2, 0xd4, 0xe0, 0xa5, 0x26, 0x82, 0xa7, 0x26, 0xf2, 0x68, 0x9d, 0xed, 0x9c, 0x3d, 0xbb, 0xdc, 0x37, 0x28, 0xbc, 0x1}} return a, nil } @@ -135,7 +135,7 @@ func _1605007189_identity_imagesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0xcf, 0xa7, 0xae, 0xd5, 0x4f, 0xcd, 0x14, 0x63, 0x9, 0xbe, 0x39, 0x49, 0x18, 0x96, 0xb2, 0xa3, 0x8, 0x7d, 0x41, 0xdb, 0x50, 0x5d, 0xf5, 0x4d, 0xa2, 0xd, 0x8f, 0x57, 0x79, 0x77, 0x67}} return a, nil } @@ -155,7 +155,7 @@ func _1605007189_identity_imagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0xb6, 0xc1, 0x5c, 0x76, 0x72, 0x6b, 0x22, 0x34, 0xdc, 0x96, 0xdc, 0x2b, 0xfd, 0x2d, 0xbe, 0xcc, 0x1e, 0xd4, 0x5, 0x93, 0xd, 0xc2, 0x51, 0xf3, 0x1a, 0xef, 0x2b, 0x26, 0xa4, 0xeb, 0x65}} return a, nil } @@ -175,7 +175,7 @@ func _1606224181_drop_photo_path_from_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0x24, 0x17, 0x7, 0x80, 0x93, 0x6f, 0x8d, 0x5d, 0xaa, 0x8c, 0x79, 0x15, 0x5d, 0xb3, 0x19, 0xd7, 0xd8, 0x39, 0xf9, 0x3a, 0x63, 0x8f, 0x81, 0x15, 0xb6, 0xd6, 0x9a, 0x37, 0xa8, 0x8e, 0x9b}} return a, nil } @@ -195,7 +195,7 @@ func _1606224181_drop_photo_path_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xff, 0x4c, 0x97, 0xee, 0xef, 0x82, 0xb8, 0x6c, 0x71, 0xbb, 0x50, 0x7b, 0xe6, 0xd9, 0x22, 0x31, 0x7c, 0x1a, 0xfe, 0x91, 0x28, 0xf6, 0x6, 0x36, 0xe, 0xb1, 0xf1, 0xc8, 0x25, 0xac, 0x7e, 0xd6}} return a, nil } @@ -215,7 +215,7 @@ func _1648646095_image_clockDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1648646095_image_clock.down.sql", size: 939, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0xa8, 0x1f, 0xf, 0xe0, 0xd7, 0xc9, 0x68, 0x98, 0xd8, 0x37, 0xb8, 0xba, 0x9e, 0xb2, 0x19, 0xf3, 0xc4, 0x73, 0x80, 0x3, 0x17, 0x2a, 0x53, 0x68, 0x10, 0x13, 0x54, 0x99, 0xb1, 0xf5, 0x1c}} return a, nil } @@ -235,7 +235,7 @@ func _1648646095_image_clockUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1648646095_image_clock.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x98, 0xa6, 0xa4, 0x4e, 0x4e, 0xca, 0x17, 0x56, 0xea, 0xfb, 0xf0, 0xa9, 0x81, 0x95, 0xe, 0x80, 0x52, 0x1, 0x47, 0x9b, 0xde, 0x14, 0xfa, 0x72, 0xc9, 0x62, 0x6f, 0x24, 0xa2, 0xc, 0x32, 0x50}} return a, nil } @@ -255,7 +255,7 @@ func _1649317600_add_color_hashUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1649317600_add_color_hash.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xf, 0x37, 0x6d, 0xcf, 0x99, 0xc9, 0x2e, 0xdc, 0x70, 0x11, 0xb4, 0x36, 0x26, 0x4f, 0x39, 0xa8, 0x44, 0xf, 0xcb, 0xcc, 0x81, 0x74, 0x7a, 0x88, 0xaa, 0x54, 0x8c, 0xc4, 0xe, 0x56, 0x4f}} return a, nil } @@ -275,7 +275,7 @@ func _1660238799_accounts_kdfUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1660238799_accounts_kdf.up.sql", size: 115, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0xe6, 0x7a, 0x69, 0x25, 0x42, 0x3b, 0x9c, 0x20, 0xf5, 0xcb, 0xae, 0xb0, 0xb3, 0x1b, 0x66, 0xc2, 0x5d, 0xd0, 0xc1, 0x59, 0xe8, 0xa9, 0xc5, 0x69, 0x58, 0x8f, 0xae, 0xe6, 0xd1, 0x4c, 0x53}} return a, nil } @@ -295,7 +295,7 @@ func _1679505708_add_customization_colorUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1679505708_add_customization_color.up.sql", size: 78, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0xe1, 0x3d, 0xaa, 0x5d, 0x35, 0x87, 0x8a, 0x8b, 0xe9, 0x4a, 0xa6, 0x7b, 0x85, 0xbc, 0x33, 0x11, 0xc7, 0x7d, 0x61, 0xac, 0x65, 0x59, 0xda, 0x32, 0x59, 0x68, 0x9d, 0xa1, 0x10, 0x7b, 0xa9}} return a, nil } @@ -315,12 +315,12 @@ func _1687853321_add_customization_color_updated_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 0)} + info := bindataFileInfo{name: "1687853321_add_customization_color_updated_at.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xc2, 0x9, 0xec, 0xf4, 0xd1, 0x46, 0x29, 0xc5, 0xce, 0x4d, 0xd4, 0xf, 0x9c, 0xfa, 0x62, 0x1, 0x29, 0xe6, 0xd2, 0xd5, 0xe, 0xf0, 0x27, 0x81, 0x4a, 0x82, 0x25, 0x5f, 0x67, 0xff, 0xd1}} 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\xcb\x41\x0e\x02\x31\x08\x05\xd0\x7d\x4f\xf1\x2f\x00\xe8\xca\xc4\xc4\xc3\xa0\x43\x08\x19\x5b\xc6\x96\xfb\xc7\x4d\xdf\xfe\x5d\xfa\x39\xd5\x0d\xeb\xf7\x6d\x4d\xc4\xf3\xe9\x36\x6c\x6a\x19\x3c\xe9\x1d\xe3\xd0\x52\x50\xcf\xa3\xa2\xdb\xeb\xfe\xb8\x6d\xa0\xeb\x74\xf4\xf0\xa9\x15\x39\x16\x28\xc1\x2c\x7b\xb0\x27\x58\xda\x3f\x00\x00\xff\xff\x57\xd4\xd5\x90\x5e\x00\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -335,8 +335,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1704726861, 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}} + info := bindataFileInfo{name: "doc.go", size: 94, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x81, 0x21, 0x7a, 0x87, 0xd2, 0xef, 0xcc, 0x25, 0x5e, 0x95, 0x3f, 0x25, 0x79, 0xf7, 0x18, 0xaf, 0x57, 0xe7, 0x1e, 0x58, 0x50, 0xbb, 0xea, 0x27, 0x98, 0x89, 0xe1, 0x9f, 0x5c, 0xf6, 0x0}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/columns.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/columns.go index ecd206be..26ddbc67 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/columns.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/columns.go @@ -392,9 +392,9 @@ var ( dBColumnName: "test_networks_enabled", valueHandler: BoolHandler, } - IsSepoliaEnabled = SettingField{ - reactFieldName: "is-sepolia-enabled?", - dBColumnName: "is_sepolia_enabled", + IsGoerliEnabled = SettingField{ + reactFieldName: "is-goerli-enabled?", + dBColumnName: "is_goerli_enabled", valueHandler: BoolHandler, } TokenGroupByCommunity = SettingField{ @@ -425,9 +425,10 @@ var ( }, } DisplayAssetsBelowBalanceThreshold = SettingField{ - reactFieldName: "display-assets-below-balance-threshold", - dBColumnName: "wallet_display_assets_below_balance_threshold", - valueHandler: Int64Handler, + reactFieldName: "display-assets-below-balance-threshold", + dBColumnName: "wallet_display_assets_below_balance_threshold", + valueHandler: Int64Handler, + valueCastHandler: Float64ToInt64Handler, syncProtobufFactory: &SyncProtobufFactory{ fromInterface: displayAssetsBelowBalanceThresholdProtobufFactory, fromStruct: displayAssetsBelowBalanceThresholdProtobufFactoryStruct, @@ -505,13 +506,21 @@ var ( dBColumnName: "mnemonic_was_not_shown", valueHandler: BoolHandler, } + PeerSyncingEnabled = SettingField{ + reactFieldName: "peer-syncing-enabled?", + dBColumnName: "peer_syncing_enabled", + valueHandler: BoolHandler, + } SettingFieldRegister = []SettingField{ AnonMetricsShouldSend, Appearance, AutoMessageEnabled, BackupEnabled, BackupFetched, + Bio, ChaosMode, + CollectibleGroupByCollection, + CollectibleGroupByCommunity, Currency, CurrentUserStatus, CustomBootNodes, @@ -519,14 +528,16 @@ var ( DappsAddress, DefaultSyncPeriod, DeviceName, + DisplayAssetsBelowBalance, + DisplayAssetsBelowBalanceThreshold, DisplayName, - Bio, EIP1581Address, Fleet, GifAPIKey, GifFavourites, GifRecents, HideHomeTooltip, + IsGoerliEnabled, KeycardInstanceUID, KeycardPairedOn, KeycardPairing, @@ -546,10 +557,12 @@ var ( NodeConfig, NotificationsEnabled, OpenseaEnabled, + PeerSyncingEnabled, PhotoPath, PinnedMailservers, PreferredName, PreviewPrivacy, + ProfileMigrationNeeded, ProfilePicturesShowTo, ProfilePicturesVisibility, PublicKey, @@ -560,27 +573,21 @@ var ( RemotePushNotificationsEnabled, SendPushNotifications, SendStatusUpdates, + ShowCommunityAssetWhenSendingTokens, StickersPacksInstalled, StickersPacksPending, StickersRecentStickers, SyncingOnMobileNetwork, TelemetryServerURL, TestNetworksEnabled, + TokenGroupByCommunity, + URLUnfurlingMode, UseMailservers, WakuBloomFilterMode, WalletRootAddress, WalletSetUpPassed, WalletVisibleTokens, WebviewAllowPermissionRequests, - ProfileMigrationNeeded, - IsSepoliaEnabled, - TokenGroupByCommunity, - ShowCommunityAssetWhenSendingTokens, - DisplayAssetsBelowBalance, - DisplayAssetsBelowBalanceThreshold, - CollectibleGroupByCollection, - CollectibleGroupByCommunity, - URLUnfurlingMode, } ) diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/database.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/database.go index cecac073..68f55791 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/database.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/database.go @@ -255,6 +255,13 @@ func (db *Database) saveSetting(setting SettingField, value interface{}) error { } func (db *Database) parseSaveAndSyncSetting(sf SettingField, value interface{}) (err error) { + if sf.ValueCastHandler() != nil { + value, err = sf.ValueCastHandler()(value) + if err != nil { + return err + } + } + if sf.ValueHandler() != nil { value, err = sf.ValueHandler()(value) if err != nil { @@ -382,9 +389,10 @@ func (db *Database) GetSettings() (Settings, error) { profile_pictures_show_to, profile_pictures_visibility, wallet_root_address, wallet_set_up_passed, wallet_visible_tokens, waku_bloom_filter_mode, webview_allow_permission_requests, current_user_status, send_status_updates, gif_recents, gif_favorites, opensea_enabled, last_backup, backup_enabled, telemetry_server_url, auto_message_enabled, gif_api_key, - test_networks_enabled, mutual_contact_enabled, profile_migration_needed, is_sepolia_enabled, wallet_token_preferences_group_by_community, url_unfurling_mode, + test_networks_enabled, mutual_contact_enabled, profile_migration_needed, is_goerli_enabled, wallet_token_preferences_group_by_community, url_unfurling_mode, omit_transfers_history_scan, mnemonic_was_not_shown, wallet_show_community_asset_when_sending_tokens, wallet_display_assets_below_balance, - wallet_display_assets_below_balance_threshold, wallet_collectible_preferences_group_by_collection, wallet_collectible_preferences_group_by_community + wallet_display_assets_below_balance_threshold, wallet_collectible_preferences_group_by_collection, wallet_collectible_preferences_group_by_community, + peer_syncing_enabled FROM settings WHERE @@ -458,7 +466,7 @@ func (db *Database) GetSettings() (Settings, error) { &s.TestNetworksEnabled, &s.MutualContactEnabled, &s.ProfileMigrationNeeded, - &s.IsSepoliaEnabled, + &s.IsGoerliEnabled, &s.TokenGroupByCommunity, &s.URLUnfurlingMode, &s.OmitTransfersHistoryScan, @@ -468,6 +476,7 @@ func (db *Database) GetSettings() (Settings, error) { &s.DisplayAssetsBelowBalanceThreshold, &s.CollectibleGroupByCollection, &s.CollectibleGroupByCommunity, + &s.PeerSyncingEnabled, ) return s, err @@ -748,8 +757,20 @@ func (db *Database) GetTestNetworksEnabled() (result bool, err error) { return result, err } -func (db *Database) GetIsSepoliaEnabled() (result bool, err error) { - err = db.makeSelectRow(IsSepoliaEnabled).Scan(&result) +func (db *Database) GetIsGoerliEnabled() (result bool, err error) { + err = db.makeSelectRow(IsGoerliEnabled).Scan(&result) + if err == sql.ErrNoRows { + return result, nil + } + return result, err +} + +func (db *Database) SetPeerSyncingEnabled(value bool) error { + return db.SaveSettingField(PeerSyncingEnabled, value) +} + +func (db *Database) GetPeerSyncingEnabled() (result bool, err error) { + err = db.makeSelectRow(PeerSyncingEnabled).Scan(&result) if err == sql.ErrNoRows { return result, nil } diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/database_settings_manager.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/database_settings_manager.go index 8dbaf9e4..599ac74d 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/database_settings_manager.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/database_settings_manager.go @@ -36,7 +36,7 @@ type DatabaseSettingsManager interface { GetEIP1581Address() (rst types.Address, err error) GetMasterAddress() (rst types.Address, err error) GetTestNetworksEnabled() (result bool, err error) - GetIsSepoliaEnabled() (result bool, err error) + GetIsGoerliEnabled() (result bool, err error) GetTokenGroupByCommunity() (result bool, err error) GetCollectibleGroupByCommunity() (result bool, err error) GetCollectibleGroupByCollection() (result bool, err error) @@ -49,6 +49,7 @@ type DatabaseSettingsManager interface { SetPinnedMailservers(mailservers map[string]string) error SetUseMailservers(value bool) error SetTokenGroupByCommunity(value bool) error + SetPeerSyncingEnabled(value bool) error CreateSettings(s Settings, n params.NodeConfig) error SaveSetting(setting string, value interface{}) error @@ -76,4 +77,5 @@ type DatabaseSettingsManager interface { URLUnfurlingMode() (result int64, err error) SubscribeToChanges() chan *SyncSettingField MnemonicWasShown() error + GetPeerSyncingEnabled() (result bool, err error) } diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/structs.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/structs.go index c4e31df4..81e306de 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/structs.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/structs.go @@ -6,11 +6,13 @@ import ( accountJson "github.com/status-im/status-go/account/json" "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/params" "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/protobuf" ) type ValueHandler func(interface{}) (interface{}, error) +type ValueCastHandler func(interface{}) (interface{}, error) type SyncSettingProtobufFactoryInterface func(interface{}, uint64, string) (*common.RawMessage, *protobuf.SyncSetting, error) type SyncSettingProtobufFactoryStruct func(Settings, uint64, string) (*common.RawMessage, *protobuf.SyncSetting, error) type SyncSettingProtobufToValue func(setting *protobuf.SyncSetting) interface{} @@ -69,6 +71,7 @@ type SettingField struct { dBColumnName string valueHandler ValueHandler syncProtobufFactory *SyncProtobufFactory + valueCastHandler ValueCastHandler } func (s SettingField) GetReactName() string { @@ -83,6 +86,10 @@ func (s SettingField) ValueHandler() ValueHandler { return s.valueHandler } +func (s SettingField) ValueCastHandler() ValueCastHandler { + return s.valueCastHandler +} + func (s SettingField) SyncProtobufFactory() *SyncProtobufFactory { return s.syncProtobufFactory } @@ -153,9 +160,18 @@ type Settings struct { NotificationsEnabled bool `json:"notifications-enabled?,omitempty"` PhotoPath string `json:"photo-path"` PinnedMailserver *json.RawMessage `json:"pinned-mailservers,omitempty"` - PreferredName *string `json:"preferred-name,omitempty"` - PreviewPrivacy bool `json:"preview-privacy?"` - PublicKey string `json:"public-key"` + // PreferredName represents the user's preferred Ethereum Name Service (ENS) name. + // If a user has multiple ENS names, they can select one as the PreferredName. + // When PreferredName is set, it takes precedence over the DisplayName for displaying the user's name. + // If PreferredName is empty or doesn't match any of the user's ENS names, the DisplayName is used instead. + // + // There is a race condition between updating DisplayName and PreferredName, where the account.Name field + // could be incorrectly updated based on the order in which the backup messages (BackedUpProfile/BackedUpSettings) arrive. + // To handle this race condition, the code checks the LastSynced clock value for both DisplayName and PreferredName, + // and updates account.Name with the value that has the latest clock + PreferredName *string `json:"preferred-name,omitempty"` + PreviewPrivacy bool `json:"preview-privacy?"` + PublicKey string `json:"public-key"` // PushNotificationsServerEnabled indicates whether we should be running a push notification server PushNotificationsServerEnabled bool `json:"push-notifications-server-enabled?,omitempty"` // PushNotificationsFromContactsOnly indicates whether we should only receive push notifications from contacts @@ -198,7 +214,7 @@ type Settings struct { GifAPIKey string `json:"gifs/api-key"` TestNetworksEnabled bool `json:"test-networks-enabled?,omitempty"` ProfileMigrationNeeded bool `json:"profile-migration-needed,omitempty"` - IsSepoliaEnabled bool `json:"is-sepolia-enabled?,omitempty"` + IsGoerliEnabled bool `json:"is-goerli-enabled?,omitempty"` TokenGroupByCommunity bool `json:"token-group-by-community?,omitempty"` ShowCommunityAssetWhenSendingTokens bool `json:"show-community-asset-when-sending-tokens?,omitempty"` DisplayAssetsBelowBalance bool `json:"display-assets-below-balance?,omitempty"` @@ -206,6 +222,7 @@ type Settings struct { CollectibleGroupByCollection bool `json:"collectible-group-by-collection?,omitempty"` CollectibleGroupByCommunity bool `json:"collectible-group-by-community?,omitempty"` URLUnfurlingMode URLUnfurlingModeType `json:"url-unfurling-mode,omitempty"` + PeerSyncingEnabled bool `json:"peer-syncing-enabled?,omitempty"` } func (s Settings) MarshalJSON() ([]byte, error) { @@ -224,3 +241,10 @@ func (s Settings) IsEmpty() bool { empty := reflect.Zero(reflect.TypeOf(s)).Interface() return reflect.DeepEqual(s, empty) } + +func (s Settings) GetFleet() string { + if s.Fleet == nil { + return params.FleetUndefined + } + return *s.Fleet +} diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/sync_protobuf_factories.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/sync_protobuf_factories.go index 956abfa0..e5b361dd 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/sync_protobuf_factories.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/sync_protobuf_factories.go @@ -341,6 +341,8 @@ func stickersRecentStickersProtobufFactoryStruct(s Settings, clock uint64, chatI return buildRawStickersRecentStickersSyncMessage(srs, clock, chatID) } +// Helpers + func assertBytes(value interface{}) ([]byte, error) { v, ok := value.([]byte) if !ok { diff --git a/vendor/github.com/status-im/status-go/multiaccounts/settings/value_handlers.go b/vendor/github.com/status-im/status-go/multiaccounts/settings/value_handlers.go index c2074f93..98150e89 100644 --- a/vendor/github.com/status-im/status-go/multiaccounts/settings/value_handlers.go +++ b/vendor/github.com/status-im/status-go/multiaccounts/settings/value_handlers.go @@ -72,3 +72,12 @@ func NodeConfigHandler(value interface{}) (interface{}, error) { return nodeConfig, nil } + +func Float64ToInt64Handler(value interface{}) (interface{}, error) { + floatValue, ok := value.(float64) + if !ok { + // Ignore if not float64 + return value, nil + } + return int64(floatValue), nil +} diff --git a/vendor/github.com/status-im/status-go/node/get_status_node.go b/vendor/github.com/status-im/status-go/node/get_status_node.go index 1763f887..bd13ba35 100644 --- a/vendor/github.com/status-im/status-go/node/get_status_node.go +++ b/vendor/github.com/status-im/status-go/node/get_status_node.go @@ -477,11 +477,11 @@ func (n *StatusNode) stop() error { n.downloader = nil if n.db != nil { - err := n.db.Close() - + if err = n.db.Close(); err != nil { + n.log.Error("Error closing the leveldb of status node", "error", err) + return err + } n.db = nil - - return err } n.rpcFiltersSrvc = nil diff --git a/vendor/github.com/status-im/status-go/node/status_node_services.go b/vendor/github.com/status-im/status-go/node/status_node_services.go index 9e8d1052..ec2cb912 100644 --- a/vendor/github.com/status-im/status-go/node/status_node_services.go +++ b/vendor/github.com/status-im/status-go/node/status_node_services.go @@ -318,14 +318,12 @@ func (b *StatusNode) wakuV2Service(nodeConfig *params.NodeConfig, telemetryServe KeepAliveInterval: nodeConfig.WakuV2Config.KeepAliveInterval, Rendezvous: nodeConfig.Rendezvous, WakuNodes: nodeConfig.ClusterConfig.WakuNodes, - PeerExchange: nodeConfig.WakuV2Config.PeerExchange, EnableStore: nodeConfig.WakuV2Config.EnableStore, StoreCapacity: nodeConfig.WakuV2Config.StoreCapacity, StoreSeconds: nodeConfig.WakuV2Config.StoreSeconds, DiscoveryLimit: nodeConfig.WakuV2Config.DiscoveryLimit, DiscV5BootstrapNodes: nodeConfig.ClusterConfig.DiscV5BootstrapNodes, Nameserver: nodeConfig.WakuV2Config.Nameserver, - EnableDiscV5: nodeConfig.WakuV2Config.EnableDiscV5, UDPPort: nodeConfig.WakuV2Config.UDPPort, AutoUpdate: nodeConfig.WakuV2Config.AutoUpdate, DefaultShardPubsubTopic: shard.DefaultShardPubsubTopic(), @@ -334,6 +332,17 @@ func (b *StatusNode) wakuV2Service(nodeConfig *params.NodeConfig, telemetryServe ClusterID: nodeConfig.ClusterConfig.ClusterID, } + // Configure peer exchange and discv5 settings based on node type + if cfg.LightClient { + cfg.EnablePeerExchangeServer = false + cfg.EnablePeerExchangeClient = true + cfg.EnableDiscV5 = false + } else { + cfg.EnablePeerExchangeServer = true + cfg.EnablePeerExchangeClient = false + cfg.EnableDiscV5 = true + } + if nodeConfig.WakuV2Config.MaxMessageSize > 0 { cfg.MaxMessageSize = nodeConfig.WakuV2Config.MaxMessageSize } @@ -443,6 +452,9 @@ func (b *StatusNode) ensService(timesource func() time.Time) *ens.Service { func (b *StatusNode) pendingTrackerService(walletFeed *event.Feed) *transactions.PendingTxTracker { if b.pendingTracker == nil { b.pendingTracker = transactions.NewPendingTxTracker(b.walletDB, b.rpcClient, b.rpcFiltersSrvc, walletFeed, transactions.PendingCheckInterval) + if b.transactor != nil { + b.transactor.SetPendingTracker(b.pendingTracker) + } } return b.pendingTracker } diff --git a/vendor/github.com/status-im/status-go/params/cluster.go b/vendor/github.com/status-im/status-go/params/cluster.go index e4669836..3c618587 100644 --- a/vendor/github.com/status-im/status-go/params/cluster.go +++ b/vendor/github.com/status-im/status-go/params/cluster.go @@ -20,3 +20,23 @@ type Cluster struct { MailServers []string `json:"mailservers"` // list of trusted mail servers RendezvousNodes []string `json:"rendezvousnodes"` } + +// DefaultWakuNodes is a list of "supported" fleets. This list is populated to clients UI settings. +var supportedFleets = map[string][]string{ + FleetWakuV2Prod: {"enrtree://ANEDLO25QVUGJOUTQFRYKWX6P4Z4GKVESBMHML7DZ6YK4LGS5FC5O@prod.wakuv2.nodes.status.im"}, + FleetWakuV2Test: {"enrtree://AO47IDOLBKH72HIZZOXQP6NMRESAN7CHYWIBNXDXWRJRZWLODKII6@test.wakuv2.nodes.status.im"}, + FleetShardsTest: {"enrtree://AMOJVZX4V6EXP7NTJPMAYJYST2QP6AJXYW76IU6VGJS7UVSNDYZG4@boot.test.shards.nodes.status.im"}, +} + +func DefaultWakuNodes(fleet string) []string { + return supportedFleets[fleet] +} + +func IsFleetSupported(fleet string) bool { + _, ok := supportedFleets[fleet] + return ok +} + +func GetSupportedFleets() map[string][]string { + return supportedFleets +} diff --git a/vendor/github.com/status-im/status-go/params/config.go b/vendor/github.com/status-im/status-go/params/config.go index a26570be..6e298f43 100644 --- a/vendor/github.com/status-im/status-go/params/config.go +++ b/vendor/github.com/status-im/status-go/params/config.go @@ -189,12 +189,14 @@ type WakuV2Config struct { CustomNodes map[string]string // PeerExchange determines whether WakuV2 Peer Exchange is enabled or not + // Deprecated: will be calculated based on LightClient PeerExchange bool // Nameserver determines which nameserver will be used for dns discovery Nameserver string // EnableDiscV5 indicates if DiscoveryV5 is enabled or not + // Deprecated: will be calculated based on LightClient EnableDiscV5 bool // UDPPort number to start discovery v5 diff --git a/vendor/github.com/status-im/status-go/protocol/activity_center.go b/vendor/github.com/status-im/status-go/protocol/activity_center.go index a53191ec..ae6930e5 100644 --- a/vendor/github.com/status-im/status-go/protocol/activity_center.go +++ b/vendor/github.com/status-im/status-go/protocol/activity_center.go @@ -7,6 +7,7 @@ import ( "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/verification" + "github.com/status-im/status-go/services/wallet/thirdparty" ) // The activity center is a place where we store incoming notifications before @@ -36,6 +37,9 @@ const ( ActivityCenterNotificationTypeSetSignerDeclined ActivityCenterNotificationTypeShareAccounts ActivityCenterNotificationTypeCommunityTokenReceived + ActivityCenterNotificationTypeFirstCommunityTokenReceived + ActivityCenterNotificationTypeCommunityBanned + ActivityCenterNotificationTypeCommunityUnbanned ) type ActivityCenterMembershipStatus int @@ -60,6 +64,22 @@ const ( var ErrInvalidActivityCenterNotification = errors.New("invalid activity center notification") +type ActivityTokenData struct { + ChainID uint64 `json:"chainId,omitempty"` + CollectibleID thirdparty.CollectibleUniqueID `json:"collectibleId,omitempty"` + TxHash string `json:"txHash,omitempty"` + WalletAddress string `json:"walletAddress,omitempty"` + IsFirst bool `json:"isFirst,omitempty"` + // Community data + CommunityID string `json:"communityId,omitempty"` + // Token data + Amount string `json:"amount,omitempty"` + Name string `json:"name,omitempty"` + Symbol string `json:"symbol,omitempty"` + ImageURL string `json:"imageUrl,omitempty"` + TokenType int `json:"tokenType,omitempty"` +} + type ActivityCenterNotification struct { ID types.HexBytes `json:"id"` ChatID string `json:"chatId"` @@ -77,6 +97,7 @@ type ActivityCenterNotification struct { Deleted bool `json:"deleted"` Accepted bool `json:"accepted"` ContactVerificationStatus verification.RequestStatus `json:"contactVerificationStatus"` + TokenData *ActivityTokenData `json:"tokenData"` //Used for synchronization. Each update should increment the UpdatedAt. //The value should represent the time when the update occurred. UpdatedAt uint64 `json:"updatedAt"` diff --git a/vendor/github.com/status-im/status-go/protocol/activity_center_persistence.go b/vendor/github.com/status-im/status-go/protocol/activity_center_persistence.go index ce117696..ed1c0ad1 100644 --- a/vendor/github.com/status-im/status-go/protocol/activity_center_persistence.go +++ b/vendor/github.com/status-im/status-go/protocol/activity_center_persistence.go @@ -11,8 +11,8 @@ import ( "github.com/status-im/status-go/protocol/common" ) -const allFieldsForTableActivityCenterNotification = `id, timestamp, notification_type, chat_id, read, dismissed, accepted, message, author, - reply_message, community_id, membership_status, contact_verification_status, deleted, updated_at` +const allFieldsForTableActivityCenterNotification = `id, timestamp, notification_type, chat_id, read, dismissed, accepted, message, author, + reply_message, community_id, membership_status, contact_verification_status, token_data, deleted, updated_at` var emptyNotifications = make([]*ActivityCenterNotification, 0) @@ -125,6 +125,15 @@ func (db sqlitePersistence) SaveActivityCenterNotification(notification *Activit } } + // encode token data + var encodedTokenData []byte + if notification.TokenData != nil { + encodedTokenData, err = json.Marshal(notification.TokenData) + if err != nil { + return 0, err + } + } + result, err := tx.Exec(` INSERT OR REPLACE INTO activity_center_notifications ( @@ -141,10 +150,11 @@ func (db sqlitePersistence) SaveActivityCenterNotification(notification *Activit read, accepted, dismissed, + token_data, deleted, updated_at ) - VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) + VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) `, notification.ID, notification.Timestamp, @@ -159,9 +169,9 @@ func (db sqlitePersistence) SaveActivityCenterNotification(notification *Activit notification.Read, notification.Accepted, notification.Dismissed, + encodedTokenData, notification.Deleted, notification.UpdatedAt, - notification.ID, ) if err != nil { return 0, err @@ -187,6 +197,7 @@ func (db sqlitePersistence) parseRowFromTableActivityCenterNotification(rows *sq var communityID sql.NullString var messageBytes []byte var replyMessageBytes []byte + var tokenDataBytes []byte var author sql.NullString notification := &ActivityCenterNotification{} err := rows.Scan( @@ -203,6 +214,7 @@ func (db sqlitePersistence) parseRowFromTableActivityCenterNotification(rows *sq &communityID, ¬ification.MembershipStatus, ¬ification.ContactVerificationStatus, + &tokenDataBytes, ¬ification.Deleted, ¬ification.UpdatedAt, ) @@ -222,6 +234,13 @@ func (db sqlitePersistence) parseRowFromTableActivityCenterNotification(rows *sq notification.Author = author.String } + if len(tokenDataBytes) > 0 { + err = json.Unmarshal(tokenDataBytes, ¬ification.TokenData) + if err != nil { + return nil, err + } + } + if len(messageBytes) > 0 { err = json.Unmarshal(messageBytes, ¬ification.Message) if err != nil { @@ -251,6 +270,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) var lastMessageBytes []byte var messageBytes []byte var replyMessageBytes []byte + var tokenDataBytes []byte var name sql.NullString var author sql.NullString notification := &ActivityCenterNotification{} @@ -271,6 +291,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) ¬ification.ContactVerificationStatus, &name, &author, + &tokenDataBytes, ¬ification.UpdatedAt) if err != nil { @@ -293,6 +314,13 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRow(row *sql.Row) notification.Author = author.String } + if len(tokenDataBytes) > 0 { + err = json.Unmarshal(tokenDataBytes, ¬ification.TokenData) + if err != nil { + return nil, err + } + } + // Restore last message if lastMessageBytes != nil { lastMessage := common.NewMessage() @@ -332,6 +360,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro var lastMessageBytes []byte var messageBytes []byte var replyMessageBytes []byte + var tokenDataBytes []byte var name sql.NullString var author sql.NullString notification := &ActivityCenterNotification{} @@ -351,6 +380,7 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro ¬ification.ContactVerificationStatus, &name, &author, + &tokenDataBytes, &latestCursor, ¬ification.UpdatedAt) if err != nil { @@ -373,6 +403,14 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro notification.Author = author.String } + if len(tokenDataBytes) > 0 { + tokenData := &ActivityTokenData{} + if err = json.Unmarshal(tokenDataBytes, &tokenData); err != nil { + return "", nil, err + } + notification.TokenData = tokenData + } + // Restore last message if lastMessageBytes != nil { lastMessage := common.NewMessage() @@ -503,6 +541,7 @@ func (db sqlitePersistence) buildActivityCenterQuery(tx *sql.Tx, params activity a.contact_verification_status, c.name, a.author, + a.token_data, substr('0000000000000000000000000000000000000000000000000000000000000000' || a.timestamp, -64, 64) || hex(a.id) as cursor, a.updated_at FROM activity_center_notifications a @@ -567,7 +606,7 @@ func (db sqlitePersistence) GetToProcessActivityCenterNotificationIds() ([][]byt return db.runActivityCenterIDQuery(` SELECT a.id FROM activity_center_notifications a - WHERE NOT a.dismissed AND NOT a.accepted AND NOT a.deleted + WHERE NOT a.dismissed AND NOT a.accepted AND NOT a.deleted `) } @@ -623,6 +662,7 @@ func (db sqlitePersistence) GetActivityCenterNotificationsByID(ids []types.HexBy a.contact_verification_status, c.name, a.author, + a.token_data, substr('0000000000000000000000000000000000000000000000000000000000000000' || a.timestamp, -64, 64) || hex(a.id) as cursor, a.updated_at FROM activity_center_notifications a @@ -663,6 +703,7 @@ func (db sqlitePersistence) GetActivityCenterNotificationByID(id types.HexBytes) a.contact_verification_status, c.name, a.author, + a.token_data, a.updated_at FROM activity_center_notifications a LEFT JOIN chats c @@ -733,10 +774,10 @@ func (db sqlitePersistence) DismissAllActivityCenterNotificationsFromUser(userPu _ = tx.Rollback() }() - query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications WHERE - author = ? AND - NOT deleted AND - NOT dismissed AND + query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications WHERE + author = ? AND + NOT deleted AND + NOT dismissed AND NOT accepted`, allFieldsForTableActivityCenterNotification) rows, err := tx.Query(query, userPublicKey) if err != nil { @@ -874,8 +915,9 @@ func (db sqlitePersistence) DismissActivityCenterNotificationsByCommunity(commun _ = tx.Rollback() }() - query := "UPDATE activity_center_notifications SET read = 1, dismissed = 1, updated_at = ? WHERE community_id = ? AND notification_type IN (?, ?) AND NOT deleted" // nolint: gosec - _, err = tx.Exec(query, updatedAt, communityID, ActivityCenterNotificationTypeCommunityRequest, ActivityCenterNotificationTypeCommunityKicked) + query := "UPDATE activity_center_notifications SET read = 1, dismissed = 1, updated_at = ? WHERE community_id = ? AND notification_type IN (?, ?, ?, ?) AND NOT deleted" // nolint: gosec + _, err = tx.Exec(query, updatedAt, communityID, + ActivityCenterNotificationTypeCommunityRequest, ActivityCenterNotificationTypeCommunityKicked, ActivityCenterNotificationTypeCommunityBanned, ActivityCenterNotificationTypeCommunityUnbanned) if err != nil { return nil, err } @@ -963,10 +1005,10 @@ func (db sqlitePersistence) DismissAllActivityCenterNotificationsFromChatID(chat _ = tx.Rollback() }() - query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications - WHERE chat_id = ? - AND NOT deleted - AND NOT accepted + query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications + WHERE chat_id = ? + AND NOT deleted + AND NOT accepted AND notification_type != ?`, allFieldsForTableActivityCenterNotification) rows, err := tx.Query(query, chatID, ActivityCenterNotificationTypeContactRequest) if err != nil { @@ -986,7 +1028,7 @@ func (db sqlitePersistence) DismissAllActivityCenterNotificationsFromChatID(chat query = ` UPDATE activity_center_notifications SET read = 1, dismissed = 1, updated_at = ? - WHERE chat_id = ? + WHERE chat_id = ? AND NOT deleted AND NOT accepted AND notification_type != ? @@ -1092,11 +1134,11 @@ func (db sqlitePersistence) AcceptActivityCenterNotificationsForInvitesFromUser( _ = tx.Rollback() }() - query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications - WHERE author = ? - AND NOT deleted - AND NOT dismissed - AND NOT accepted + query := fmt.Sprintf(`SELECT %s FROM activity_center_notifications + WHERE author = ? + AND NOT deleted + AND NOT dismissed + AND NOT accepted AND notification_type = ?`, allFieldsForTableActivityCenterNotification) rows, err := tx.Query(query, userPublicKey, ActivityCenterNotificationTypeNewPrivateGroupChat) if err != nil { @@ -1113,8 +1155,8 @@ func (db sqlitePersistence) AcceptActivityCenterNotificationsForInvitesFromUser( _, err = tx.Exec(` UPDATE activity_center_notifications - SET read = 1, accepted = 1, updated_at = ? - WHERE author = ? + SET read = 1, accepted = 1, updated_at = ? + WHERE author = ? AND NOT deleted AND NOT dismissed AND NOT accepted @@ -1295,10 +1337,11 @@ func (db sqlitePersistence) ActiveContactRequestNotification(contactID string) ( a.contact_verification_status, c.name, a.author, + a.token_data, a.updated_at FROM activity_center_notifications a LEFT JOIN chats c ON c.id = a.chat_id - WHERE a.author = ? + WHERE a.author = ? AND NOT a.deleted AND NOT a.dismissed AND NOT a.accepted @@ -1329,7 +1372,7 @@ func (db sqlitePersistence) DeleteChatContactRequestActivityCenterNotifications( } _, err = db.db.Exec(` - UPDATE activity_center_notifications SET deleted = 1, updated_at = ? + UPDATE activity_center_notifications SET deleted = 1, updated_at = ? WHERE chat_id = ? AND NOT deleted diff --git a/vendor/github.com/status-im/status-go/protocol/anonmetrics/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/anonmetrics/migrations/migrations.go index 8929b656..3895fbeb 100644 --- a/vendor/github.com/status-im/status-go/protocol/anonmetrics/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/anonmetrics/migrations/migrations.go @@ -2,7 +2,7 @@ // sources: // 1619446565_postgres_make_anon_metrics_table.down.sql (24B) // 1619446565_postgres_make_anon_metrics_table.up.sql (443B) -// doc.go (380B) +// doc.go (400B) package migrations @@ -85,7 +85,7 @@ func _1619446565_postgres_make_anon_metrics_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x75, 0xea, 0x1, 0x74, 0xe6, 0xa3, 0x11, 0xd0, 0x86, 0x87, 0x7e, 0x31, 0xb4, 0x1a, 0x27, 0x5d, 0xda, 0x77, 0xa3, 0xf5, 0x1d, 0x88, 0x79, 0xcf, 0xd5, 0x95, 0x75, 0xd, 0x47, 0xa1, 0x90, 0x5}} return a, nil } @@ -105,12 +105,12 @@ func _1619446565_postgres_make_anon_metrics_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xdc, 0x72, 0x28, 0x3c, 0xf6, 0x94, 0xb0, 0x47, 0x3d, 0xca, 0x55, 0x3d, 0xf7, 0x83, 0xb8, 0x7d, 0x2f, 0x1e, 0x98, 0xb7, 0xde, 0xa, 0xff, 0xa0, 0x52, 0x60, 0x83, 0x56, 0xc5, 0xd1, 0xa2}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbd\x6e\xf3\x30\x0c\x45\x77\x3f\xc5\x45\x96\x2c\x9f\xa5\xe5\x9b\xba\x75\xec\xde\x17\x60\xe4\x6b\x49\x88\x2d\x1a\x22\xf3\xf7\xf6\x85\xd3\x02\xcd\xd6\xf5\x00\xe7\xf0\x32\x46\x7c\x96\x6a\x98\xeb\x42\x54\x43\x63\xa2\x99\xf4\x07\x4e\x4c\x72\x31\xe2\x90\xab\x97\xcb\x29\x24\x5d\xa3\xb9\xf8\xc5\xc6\xba\xc6\xb5\xe6\x2e\xce\x78\xfd\x7f\x18\x62\x44\x92\x76\x74\x14\x69\xd3\xc2\x67\xcb\x60\x2e\xdd\x6b\xcb\xb8\x55\x2f\x10\x6c\x9d\x73\xbd\x07\xbc\x3b\x16\x8a\x39\xbc\x88\x1f\x0d\x5e\x88\x24\xc6\x3d\x33\x6b\x47\xd6\xf1\x54\xdb\x24\x2e\x61\x47\x1f\xf3\x0b\xd9\x17\x26\x59\x16\x4e\x98\xbb\xae\x4f\xd7\x64\x25\xa6\xda\x99\x5c\xfb\xe3\x1f\xc4\x8c\x8e\x26\x2b\x6d\xf7\x8b\x5c\x89\xa6\x3f\xe7\x21\x6d\xfa\xfb\x23\xdc\xb4\x9f\x0d\x62\xe0\x7d\x63\x72\x4e\x61\x18\x36\x49\x67\xc9\xc4\xa6\xe6\xb9\xd3\x86\x21\xc6\xac\x6f\x99\x8d\xbb\xf7\xba\x72\xdc\xce\x19\xdf\xbd\xaa\xcd\x30\x2a\x42\x88\xbf\x20\x64\x45\x88\xc3\x57\x00\x00\x00\xff\xff\xa9\xf1\x73\x83\x7c\x01\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbd\x6a\x03\x31\x10\x84\xfb\x7b\x8a\xc1\x8d\x9b\x9c\x94\x40\x20\x10\x48\x91\x32\x7d\x5e\x60\x2d\xed\x49\xc2\x27\xed\xa1\xdd\xf3\xcf\xdb\x87\x73\x0c\x71\x97\x2d\x3f\xf8\x66\x66\xbd\xc7\x77\x2e\x8a\xa9\xcc\x8c\xa2\x68\x1c\x58\x95\xfa\x15\x07\x0e\xb4\x2a\x63\x97\x8a\xe5\xf5\xe0\x82\x54\xaf\x46\xb6\xea\x58\xaa\xaf\x25\x75\x32\xf6\xa7\xd7\xdd\xe0\x3d\x02\xb5\xbd\x21\x53\x8b\x33\xdf\xb2\x14\x6a\xd4\xad\xb4\x84\x73\xb1\x0c\xc2\xd2\x79\x2a\x17\x87\x4f\xc3\xcc\xa4\x06\xcb\x64\x7b\x85\x65\x46\x20\xe5\x2d\x66\x92\x8e\x24\xe3\xa1\xb4\x48\x46\x6e\x43\x5f\xd3\x03\xd9\x16\x06\x9a\x67\x8e\x98\xba\xd4\x9b\xab\x54\x19\xb1\x74\x0e\x26\xfd\xfa\x04\x52\x65\x43\xa3\xca\xba\xf9\x99\x4e\x8c\x26\xf7\x7a\x50\x8b\xff\x7f\x84\xb3\xf4\xa3\x82\x14\x7c\x59\x38\x18\x47\x37\x0c\x0b\x85\x23\x25\xc6\x22\x6a\xa9\xb3\x0e\x83\xf7\x49\xde\x13\x37\xde\xbc\xc7\x95\x63\x95\x68\xa5\xf2\xc7\xcb\xdb\xf3\xfd\x30\x2e\xc7\x84\xdf\x8e\x22\x4d\x31\x0a\x9c\xf3\x7f\xc0\x25\x81\xf3\xc3\x4f\x00\x00\x00\xff\xff\xe2\x75\x5f\x6c\x90\x01\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -125,8 +125,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x1, 0xd4, 0xd6, 0xc7, 0x44, 0xd4, 0xfd, 0x7b, 0x69, 0x1f, 0xe3, 0xe, 0x48, 0x14, 0x99, 0xf0, 0x8e, 0x43, 0xae, 0x54, 0x64, 0xa2, 0x8b, 0x82, 0x1c, 0x2b, 0xb, 0xec, 0xf5, 0xb3, 0xfc}} + info := bindataFileInfo{name: "doc.go", size: 400, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf0, 0xa9, 0x91, 0x6, 0x5d, 0x91, 0xf7, 0x39, 0x3d, 0xc3, 0xf8, 0x5e, 0x4f, 0x7e, 0x7a, 0x8c, 0x60, 0x68, 0x66, 0x7d, 0x52, 0xe4, 0xd8, 0x23, 0x84, 0x55, 0x2c, 0x38, 0xa1, 0x64, 0xe7, 0xe6}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/chat.go b/vendor/github.com/status-im/status-go/protocol/chat.go index 79cf968f..762d9345 100644 --- a/vendor/github.com/status-im/status-go/protocol/chat.go +++ b/vendor/github.com/status-im/status-go/protocol/chat.go @@ -31,6 +31,8 @@ var chatColors = []string{ type ChatType int +type ChatContext string + const ( ChatTypeOneToOne ChatType = iota + 1 ChatTypePublic @@ -85,6 +87,9 @@ type Chat struct { // Active indicates whether the chat has been soft deleted Active bool `json:"active"` + // ViewersCanPostReactions indicates whether users can post reactions in view only mode + ViewersCanPostReactions bool `json:"viewersCanPostReactions"` + ChatType ChatType `json:"chatType"` // Timestamp indicates the last time this chat has received/sent a message @@ -155,6 +160,9 @@ type Chat struct { // Image of the chat in Base64 format Base64Image string `json:"image,omitempty"` + + // If true, the chat is invisible if permissions are not met + HideIfPermissionsNotMet bool `json:"hideIfPermissionsNotMet,omitempty"` } type ChatPreview struct { @@ -487,6 +495,7 @@ func CreateCommunityChat(orgID, chatID string, orgChat *protobuf.CommunityChat, return &Chat{ CommunityID: orgID, CategoryID: orgChat.CategoryId, + HideIfPermissionsNotMet: orgChat.HideIfPermissionsNotMet, Name: orgChat.Identity.DisplayName, Description: orgChat.Identity.Description, Active: true, @@ -498,6 +507,7 @@ func CreateCommunityChat(orgID, chatID string, orgChat *protobuf.CommunityChat, ReadMessagesAtClockValue: 0, ChatType: ChatTypeCommunityChat, FirstMessageTimestamp: orgChat.Identity.FirstMessageTimestamp, + ViewersCanPostReactions: orgChat.ViewersCanPostReactions, } } @@ -636,3 +646,12 @@ func stringSliceContains(slice []string, item string) bool { } return false } + +func GetChatContextFromChatType(chatType ChatType) ChatContext { + switch chatType { + case ChatTypeOneToOne, ChatTypePrivateGroupChat: + return privateChat + default: + return publicChat + } +} diff --git a/vendor/github.com/status-im/status-go/protocol/common/code_control_flags.go b/vendor/github.com/status-im/status-go/protocol/common/code_control_flags.go new file mode 100644 index 00000000..4a99a59f --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/common/code_control_flags.go @@ -0,0 +1,11 @@ +package common + +type CodeControlFlags struct { + // AutoRequestHistoricMessages indicates whether we should automatically request + // historic messages on getting online, connecting to store node, etc. + AutoRequestHistoricMessages bool + + // CuratedCommunitiesUpdateLoopEnabled indicates whether we should disable the curated communities update loop. + // Usually should be disabled in tests. + CuratedCommunitiesUpdateLoopEnabled bool +} diff --git a/vendor/github.com/status-im/status-go/protocol/common/feature_flags.go b/vendor/github.com/status-im/status-go/protocol/common/feature_flags.go index 907c4c69..daf4960a 100644 --- a/vendor/github.com/status-im/status-go/protocol/common/feature_flags.go +++ b/vendor/github.com/status-im/status-go/protocol/common/feature_flags.go @@ -26,8 +26,4 @@ type FeatureFlags struct { // Peersyncing indicates whether we should advertise and sync messages with other peers Peersyncing bool - - // AutoRequestHistoricMessages indicates whether we should automatically request - // historic messages on getting online, connecting to store node, etc. - AutoRequestHistoricMessages bool } diff --git a/vendor/github.com/status-im/status-go/protocol/common/message.go b/vendor/github.com/status-im/status-go/protocol/common/message.go index bb73d4bc..36526426 100644 --- a/vendor/github.com/status-im/status-go/protocol/common/message.go +++ b/vendor/github.com/status-im/status-go/protocol/common/message.go @@ -49,6 +49,7 @@ type QuotedMessage struct { DeletedForMe bool `json:"deletedForMe,omitempty"` DiscordMessage *protobuf.DiscordMessage `json:"discordMessage,omitempty"` + BridgeMessage *protobuf.BridgeMessage `json:"bridgeMessage,omitempty"` } type CommandState int diff --git a/vendor/github.com/status-im/status-go/protocol/common/message_linkpreview.go b/vendor/github.com/status-im/status-go/protocol/common/message_linkpreview.go index e10d962b..04e42703 100644 --- a/vendor/github.com/status-im/status-go/protocol/common/message_linkpreview.go +++ b/vendor/github.com/status-im/status-go/protocol/common/message_linkpreview.go @@ -15,8 +15,8 @@ type MakeMediaServerURLType func(msgID string, previewURL string, imageID MediaS type MakeMediaServerURLMessageWrapperType func(previewURL string, imageID MediaServerImageID) string type LinkPreviewThumbnail struct { - Width int `json:"width"` - Height int `json:"height"` + Width int `json:"width,omitempty"` + Height int `json:"height,omitempty"` // Non-empty when the thumbnail is available via the media server, i.e. after // the chat message is sent. URL string `json:"url,omitempty"` @@ -31,6 +31,7 @@ type LinkPreview struct { Hostname string `json:"hostname"` Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` + Favicon LinkPreviewThumbnail `json:"favicon,omitempty"` Thumbnail LinkPreviewThumbnail `json:"thumbnail,omitempty"` } @@ -288,12 +289,19 @@ func (m *Message) ConvertLinkPreviewsToProto() ([]*protobuf.UnfurledLink, error) return nil, fmt.Errorf("invalid link preview, url='%s': %w", preview.URL, err) } - var payload []byte + var thumbnailPayload []byte + var faviconPayload []byte var err error if preview.Thumbnail.DataURI != "" { - payload, err = images.GetPayloadFromURI(preview.Thumbnail.DataURI) + thumbnailPayload, err = images.GetPayloadFromURI(preview.Thumbnail.DataURI) if err != nil { - return nil, fmt.Errorf("could not get data URI payload, url='%s': %w", preview.URL, err) + return nil, fmt.Errorf("could not get data URI payload for link preview thumbnail, url='%s': %w", preview.URL, err) + } + } + if preview.Favicon.DataURI != "" { + faviconPayload, err = images.GetPayloadFromURI(preview.Favicon.DataURI) + if err != nil { + return nil, fmt.Errorf("could not get data URI payload for link preview favicon, url='%s': %w", preview.URL, err) } } @@ -304,7 +312,8 @@ func (m *Message) ConvertLinkPreviewsToProto() ([]*protobuf.UnfurledLink, error) Description: preview.Description, ThumbnailWidth: uint32(preview.Thumbnail.Width), ThumbnailHeight: uint32(preview.Thumbnail.Height), - ThumbnailPayload: payload, + ThumbnailPayload: thumbnailPayload, + FaviconPayload: faviconPayload, } unfurledLinks = append(unfurledLinks, ul) } @@ -312,7 +321,8 @@ func (m *Message) ConvertLinkPreviewsToProto() ([]*protobuf.UnfurledLink, error) return unfurledLinks, nil } -func (m *Message) ConvertFromProtoToLinkPreviews(makeMediaServerURL func(msgID string, previewURL string) string) []LinkPreview { +func (m *Message) ConvertFromProtoToLinkPreviews(makeThumbnailMediaServerURL func(msgID string, previewURL string) string, + makeFaviconMediaServerURL func(msgID string, previewURL string) string) []LinkPreview { var links []*protobuf.UnfurledLink if links = m.GetUnfurledLinks(); links == nil { @@ -340,13 +350,20 @@ func (m *Message) ConvertFromProtoToLinkPreviews(makeMediaServerURL func(msgID s } mediaURL := "" if len(link.ThumbnailPayload) > 0 { - mediaURL = makeMediaServerURL(m.ID, link.Url) + mediaURL = makeThumbnailMediaServerURL(m.ID, link.Url) } if link.GetThumbnailPayload() != nil { lp.Thumbnail.Width = int(link.ThumbnailWidth) lp.Thumbnail.Height = int(link.ThumbnailHeight) lp.Thumbnail.URL = mediaURL } + faviconMediaURL := "" + if len(link.FaviconPayload) > 0 { + faviconMediaURL = makeFaviconMediaServerURL(m.ID, link.Url) + } + if link.GetFaviconPayload() != nil { + lp.Favicon.URL = faviconMediaURL + } previews = append(previews, lp) } diff --git a/vendor/github.com/status-im/status-go/protocol/common/message_sender.go b/vendor/github.com/status-im/status-go/protocol/common/message_sender.go index 0493d6ee..2bcbd6c3 100644 --- a/vendor/github.com/status-im/status-go/protocol/common/message_sender.go +++ b/vendor/github.com/status-im/status-go/protocol/common/message_sender.go @@ -82,7 +82,8 @@ type MessageSender struct { ephemeralKeysMutex sync.Mutex // messageEventsSubscriptions contains all the subscriptions for message events - messageEventsSubscriptions []chan<- *MessageEvent + messageEventsSubscriptions []chan<- *MessageEvent + messageEventsSubscriptionsMutex sync.Mutex featureFlags FeatureFlags @@ -114,6 +115,9 @@ func NewMessageSender( } func (s *MessageSender) Stop() { + s.messageEventsSubscriptionsMutex.Lock() + defer s.messageEventsSubscriptionsMutex.Unlock() + for _, c := range s.messageEventsSubscriptions { close(c) } @@ -1184,6 +1188,10 @@ func (s *MessageSender) notifyOnSentMessage(sentMessage *SentMessage) { Type: MessageSent, SentMessage: sentMessage, } + + s.messageEventsSubscriptionsMutex.Lock() + defer s.messageEventsSubscriptionsMutex.Unlock() + // Publish on channels, drop if buffer is full for _, c := range s.messageEventsSubscriptions { select { @@ -1202,6 +1210,9 @@ func (s *MessageSender) notifyOnScheduledMessage(recipient *ecdsa.PublicKey, mes RawMessage: message, } + s.messageEventsSubscriptionsMutex.Lock() + defer s.messageEventsSubscriptionsMutex.Unlock() + // Publish on channels, drop if buffer is full for _, c := range s.messageEventsSubscriptions { select { diff --git a/vendor/github.com/status-im/status-go/protocol/communities/check_permissions_response.go b/vendor/github.com/status-im/status-go/protocol/communities/check_permissions_response.go index ac7d1568..9688f03a 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/check_permissions_response.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/check_permissions_response.go @@ -23,11 +23,13 @@ type HighestRoleResponse struct { Criteria []*PermissionTokenCriteriaResult `json:"criteria"` } -var joiningRoleOrders = map[protobuf.CommunityTokenPermission_Type]int{ - protobuf.CommunityTokenPermission_BECOME_MEMBER: 1, - protobuf.CommunityTokenPermission_BECOME_ADMIN: 2, - protobuf.CommunityTokenPermission_BECOME_TOKEN_MASTER: 3, - protobuf.CommunityTokenPermission_BECOME_TOKEN_OWNER: 4, +var roleOrders = map[protobuf.CommunityTokenPermission_Type]int{ + protobuf.CommunityTokenPermission_BECOME_MEMBER: 1, + protobuf.CommunityTokenPermission_CAN_VIEW_CHANNEL: 2, + protobuf.CommunityTokenPermission_CAN_VIEW_AND_POST_CHANNEL: 3, + protobuf.CommunityTokenPermission_BECOME_ADMIN: 4, + protobuf.CommunityTokenPermission_BECOME_TOKEN_MASTER: 5, + protobuf.CommunityTokenPermission_BECOME_TOKEN_OWNER: 6, } type ByRoleDesc []*HighestRoleResponse @@ -35,7 +37,7 @@ type ByRoleDesc []*HighestRoleResponse func (a ByRoleDesc) Len() int { return len(a) } func (a ByRoleDesc) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a ByRoleDesc) Less(i, j int) bool { - return joiningRoleOrders[a[i].Role] > joiningRoleOrders[a[j].Role] + return roleOrders[a[i].Role] > roleOrders[a[j].Role] } type rolesAndHighestRole struct { @@ -47,7 +49,7 @@ func calculateRolesAndHighestRole(permissions map[string]*PermissionTokenCriteri item := &rolesAndHighestRole{} byRoleMap := make(map[protobuf.CommunityTokenPermission_Type]*HighestRoleResponse) for _, p := range permissions { - if joiningRoleOrders[p.Role] == 0 { + if roleOrders[p.Role] == 0 { continue } if byRoleMap[p.Role] == nil { diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community.go b/vendor/github.com/status-im/status-go/protocol/communities/community.go index b4aa4a6d..225c86ea 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/community.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/community.go @@ -6,11 +6,14 @@ import ( "encoding/json" "errors" "fmt" + "math" + "math/big" "sync" "time" "github.com/golang/protobuf/proto" "go.uber.org/zap" + slices "golang.org/x/exp/slices" "github.com/ethereum/go-ethereum/common/hexutil" @@ -93,16 +96,20 @@ type CommunityAdminSettings struct { } type CommunityChat struct { - ID string `json:"id"` - Name string `json:"name"` - Color string `json:"color"` - Emoji string `json:"emoji"` - Description string `json:"description"` - Members map[string]*protobuf.CommunityMember `json:"members"` - Permissions *protobuf.CommunityPermissions `json:"permissions"` - CanPost bool `json:"canPost"` - Position int `json:"position"` - CategoryID string `json:"categoryID"` + ID string `json:"id"` + Name string `json:"name"` + Color string `json:"color"` + Emoji string `json:"emoji"` + Description string `json:"description"` + Members map[string]*protobuf.CommunityMember `json:"members"` + Permissions *protobuf.CommunityPermissions `json:"permissions"` + CanPost bool `json:"canPost"` + CanView bool `json:"canView"` + ViewersCanPostReactions bool `json:"viewersCanPostReactions"` + Position int `json:"position"` + CategoryID string `json:"categoryID"` + TokenGated bool `json:"tokenGated"` + HideIfPermissionsNotMet bool `json:"hideIfPermissionsNotMet"` } type CommunityCategory struct { @@ -123,6 +130,7 @@ const ( CommunityMemberBanPending CommunityMemberUnbanPending CommunityMemberKickPending + CommunityMemberBanWithAllMessagesDelete ) func (o *Community) MarshalPublicAPIJSON() ([]byte, error) { @@ -174,21 +182,29 @@ func (o *Community) MarshalPublicAPIJSON() ([]byte, error) { communityItem.Encrypted = o.Encrypted() } for id, c := range o.config.CommunityDescription.Chats { - canPost, err := o.CanPost(o.config.MemberIdentity, id) + // NOTE: Here `CanPost` is only set for ChatMessage. But it can be different for reactions/pin/etc. + // Consider adding more properties to `CommunityChat` to reflect that. + canPost, err := o.CanPost(o.config.MemberIdentity, id, protobuf.ApplicationMetadataMessage_CHAT_MESSAGE) if err != nil { return nil, err } + canView := o.CanView(o.config.MemberIdentity, id) + chat := CommunityChat{ - ID: id, - Name: c.Identity.DisplayName, - Color: c.Identity.Color, - Emoji: c.Identity.Emoji, - Description: c.Identity.Description, - Permissions: c.Permissions, - Members: c.Members, - CanPost: canPost, - CategoryID: c.CategoryId, - Position: int(c.Position), + ID: id, + Name: c.Identity.DisplayName, + Color: c.Identity.Color, + Emoji: c.Identity.Emoji, + Description: c.Identity.Description, + Permissions: c.Permissions, + Members: c.Members, + CanPost: canPost, + CanView: canView, + ViewersCanPostReactions: c.ViewersCanPostReactions, + TokenGated: o.channelEncrypted(id), + CategoryID: c.CategoryId, + HideIfPermissionsNotMet: c.HideIfPermissionsNotMet, + Position: int(c.Position), } communityItem.Chats[id] = chat } @@ -272,8 +288,10 @@ func (o *Community) MarshalJSON() ([]byte, error) { PubsubTopicKey string `json:"pubsubTopicKey"` Shard *shard.Shard `json:"shard"` LastOpenedAt int64 `json:"lastOpenedAt"` + Clock uint64 `json:"clock"` }{ ID: o.ID(), + Clock: o.Clock(), MemberRole: o.MemberRole(o.MemberIdentity()), IsControlNode: o.IsControlNode(), Verified: o.config.Verified, @@ -308,21 +326,29 @@ func (o *Community) MarshalJSON() ([]byte, error) { communityItem.Categories[id] = category } for id, c := range o.config.CommunityDescription.Chats { - canPost, err := o.CanPost(o.config.MemberIdentity, id) + // NOTE: Here `CanPost` is only set for ChatMessage. But it can be different for reactions/pin/etc. + // Consider adding more properties to `CommunityChat` to reflect that. + canPost, err := o.CanPost(o.config.MemberIdentity, id, protobuf.ApplicationMetadataMessage_CHAT_MESSAGE) if err != nil { return nil, err } + canView := o.CanView(o.config.MemberIdentity, id) + chat := CommunityChat{ - ID: id, - Name: c.Identity.DisplayName, - Emoji: c.Identity.Emoji, - Color: c.Identity.Color, - Description: c.Identity.Description, - Permissions: c.Permissions, - Members: c.Members, - CanPost: canPost, - CategoryID: c.CategoryId, - Position: int(c.Position), + ID: id, + Name: c.Identity.DisplayName, + Emoji: c.Identity.Emoji, + Color: c.Identity.Color, + Description: c.Identity.Description, + Permissions: c.Permissions, + Members: c.Members, + CanPost: canPost, + CanView: canView, + ViewersCanPostReactions: c.ViewersCanPostReactions, + TokenGated: o.channelEncrypted(id), + CategoryID: c.CategoryId, + HideIfPermissionsNotMet: c.HideIfPermissionsNotMet, + Position: int(c.Position), } communityItem.Chats[id] = chat } @@ -516,16 +542,6 @@ type CommunitySettings struct { Clock uint64 `json:"clock"` } -// `CommunityAdminEventChanges contain additional changes that don't live on -// a `Community` but still have to be propagated to other admin and control nodes -type CommunityEventChanges struct { - *CommunityChanges - // `RejectedRequestsToJoin` is a map of signer keys to requests to join - RejectedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin `json:"rejectedRequestsToJoin"` - // `AcceptedRequestsToJoin` is a map of signer keys to requests to join - AcceptedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin `json:"acceptedRequestsToJoin"` -} - func (o *Community) emptyCommunityChanges() *CommunityChanges { changes := EmptyCommunityChanges() changes.Community = o @@ -621,6 +637,15 @@ func (o *Community) GetMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember { return o.getMember(pk) } +func (o *Community) GetChat(chatID string) (*protobuf.CommunityChat, error) { + chat, ok := o.config.CommunityDescription.Chats[chatID] + if !ok { + return nil, ErrChatNotFound + } + + return chat, nil +} + func (o *Community) getChatMember(pk *ecdsa.PublicKey, chatID string) *protobuf.CommunityMember { if !o.hasMember(pk) { return nil @@ -648,14 +673,17 @@ func (o *Community) IsBanned(pk *ecdsa.PublicKey) bool { } func (o *Community) isBanned(pk *ecdsa.PublicKey) bool { + key := common.PubkeyToHex(pk) - for _, k := range o.config.CommunityDescription.BanList { - if k == key { - return true - } + banned := slices.Contains(o.config.CommunityDescription.BanList, key) + + if o.config.CommunityDescription.BannedMembers != nil && !banned { + _, banned = o.config.CommunityDescription.BannedMembers[key] } - return false + + return banned + } func (o *Community) rolesOf(pk *ecdsa.PublicKey) []protobuf.CommunityMember_Roles { @@ -850,7 +878,7 @@ func (o *Community) UnbanUserFromCommunity(pk *ecdsa.PublicKey) (*protobuf.Commu return o.config.CommunityDescription, nil } -func (o *Community) BanUserFromCommunity(pk *ecdsa.PublicKey) (*protobuf.CommunityDescription, error) { +func (o *Community) BanUserFromCommunity(pk *ecdsa.PublicKey, communityBanInfo *protobuf.CommunityBanInfo) (*protobuf.CommunityDescription, error) { o.mutex.Lock() defer o.mutex.Unlock() @@ -863,13 +891,20 @@ func (o *Community) BanUserFromCommunity(pk *ecdsa.PublicKey) (*protobuf.Communi } if o.IsControlNode() { - o.banUserFromCommunity(pk) + o.banUserFromCommunity(pk, communityBanInfo) o.increaseClock() } else { - err := o.addNewCommunityEvent(o.ToBanCommunityMemberCommunityEvent(common.PubkeyToHex(pk))) + pkStr := common.PubkeyToHex(pk) + err := o.addNewCommunityEvent(o.ToBanCommunityMemberCommunityEvent(pkStr)) if err != nil { return nil, err } + if communityBanInfo.DeleteAllMessages { + err := o.addNewCommunityEvent(o.ToDeleteAllMemberMessagesEvent(pkStr)) + if err != nil { + return nil, err + } + } } return o.config.CommunityDescription, nil @@ -969,6 +1004,13 @@ func (o *Community) Edit(description *protobuf.CommunityDescription) { o.config.CommunityDescription.AdminSettings.PinMessageAllMembersEnabled = description.AdminSettings.PinMessageAllMembersEnabled } +func (o *Community) EditPermissionAccess(permissionAccess protobuf.CommunityPermissions_Access) { + o.config.CommunityDescription.Permissions.Access = permissionAccess + if o.IsControlNode() { + o.increaseClock() + } +} + func (o *Community) Join() { o.config.Joined = true o.config.JoinedAt = time.Now().Unix() @@ -1039,7 +1081,8 @@ func (o *Community) UpdateCommunityDescription(description *protobuf.CommunityDe response := o.emptyCommunityChanges() - if description.Clock <= o.config.CommunityDescription.Clock { + // Enables processing of identical clocks. Identical descriptions may be reprocessed upon subsequent receipt of the previously missing encryption key. + if description.Clock < o.config.CommunityDescription.Clock { return response, nil } @@ -1140,7 +1183,12 @@ func (o *Community) ValidateEditSharedAddresses(signer *ecdsa.PublicKey, request return errors.New("no addresses were shared") } - if request.Clock < o.config.CommunityDescription.Members[common.PubkeyToHex(signer)].LastUpdateClock { + member, exists := o.config.CommunityDescription.Members[common.PubkeyToHex(signer)] + if !exists { + return errors.New("signer is not a community member") + } + + if request.Clock < member.LastUpdateClock { return errors.New("edit request is older than the last one we have. Ignore") } @@ -1391,6 +1439,17 @@ func (o *Community) Description() *protobuf.CommunityDescription { return o.config.CommunityDescription } +func (o *Community) EncryptedDescription() (*protobuf.CommunityDescription, error) { + clone := proto.Clone(o.config.CommunityDescription).(*protobuf.CommunityDescription) + if o.encryptor != nil { + err := encryptDescription(o.encryptor, o, clone) + if err != nil { + return nil, err + } + } + return clone, nil +} + func (o *Community) DescriptionProtocolMessage() []byte { return o.config.CommunityDescriptionProtocolMessage } @@ -1477,6 +1536,37 @@ func hydrateChannelsMembers(communityID string, description *protobuf.CommunityD } } +func upgradeTokenPermissions(description *protobuf.CommunityDescription) { + + floatToWeiIntFunc := func(floatStr string, decimals uint64) string { + bigfloat := new(big.Float) + bigfloat.SetString(floatStr) + + multiplier := big.NewFloat(math.Pow(10, float64(decimals))) + bigfloat.Mul(bigfloat, multiplier) + + result := new(big.Int) + bigfloat.Int(result) + return result.String() + } + + for _, permission := range description.TokenPermissions { + for _, criteria := range permission.TokenCriteria { + if criteria.AmountInWei != "" { + continue + } + // set AmountInWei if missing + // Amount format (deprecated): "0.123" + // AmountInWei format: "123000..000" + if criteria.Type == protobuf.CommunityTokenType_ERC20 { + criteria.AmountInWei = floatToWeiIntFunc(criteria.Amount, criteria.Decimals) + } else { + criteria.AmountInWei = criteria.Amount + } + } + } +} + func (o *Community) Chats() map[string]*protobuf.CommunityChat { // Why are we checking here for nil, it should be the responsibility of the caller if o == nil { @@ -1583,8 +1673,20 @@ func (o *Community) tokenPermissions() map[string]*CommunityTokenPermission { func (o *Community) PendingAndBannedMembers() map[string]CommunityMemberState { result := make(map[string]CommunityMemberState) + if o.config.CommunityDescription.BannedMembers != nil { + for bannedMemberID, banInfo := range o.config.CommunityDescription.BannedMembers { + state := CommunityMemberBanned + if banInfo.DeleteAllMessages { + state = CommunityMemberBanWithAllMessagesDelete + } + result[bannedMemberID] = state + } + } + for _, bannedMemberID := range o.config.CommunityDescription.BanList { - result[bannedMemberID] = CommunityMemberBanned + if _, exists := result[bannedMemberID]; !exists { + result[bannedMemberID] = CommunityMemberBanned + } } if o.config.EventsData == nil { @@ -1805,53 +1907,71 @@ func (o *Community) VerifyGrantSignature(data []byte) (*protobuf.Grant, error) { return grant, nil } -func (o *Community) CanPost(pk *ecdsa.PublicKey, chatID string) (bool, error) { +func (o *Community) CanView(pk *ecdsa.PublicKey, chatID string) bool { if o.config.CommunityDescription.Chats == nil { - o.config.Logger.Debug("Community.CanPost: no-chats") - return false, nil + o.config.Logger.Debug("Community.CanView: no-chats") + return false } chat, ok := o.config.CommunityDescription.Chats[chatID] if !ok { - o.config.Logger.Debug("Community.CanPost: no chat with id", zap.String("chat-id", chatID)) - return false, nil + o.config.Logger.Debug("Community.CanView: no chat with id", zap.String("chat-id", chatID)) + return false } // community creator can always post, return immediately if common.IsPubKeyEqual(pk, o.ControlNode()) { - return true, nil + return true } if o.isBanned(pk) { - o.config.Logger.Debug("Community.CanPost: user is banned", zap.String("chat-id", chatID)) - return false, nil + o.config.Logger.Debug("Community.CanView: user is banned", zap.String("chat-id", chatID)) + return false } if o.config.CommunityDescription.Members == nil { - o.config.Logger.Debug("Community.CanPost: no members in org", zap.String("chat-id", chatID)) - return false, nil + o.config.Logger.Debug("Community.CanView: no members in org", zap.String("chat-id", chatID)) + return false } // If community member, also check chat membership next _, ok = o.config.CommunityDescription.Members[common.PubkeyToHex(pk)] if !ok { - o.config.Logger.Debug("Community.CanPost: not a community member", zap.String("chat-id", chatID)) - return false, nil + o.config.Logger.Debug("Community.CanView: not a community member", zap.String("chat-id", chatID)) + return false } if chat.Members == nil { - o.config.Logger.Debug("Community.CanPost: no members in chat", zap.String("chat-id", chatID)) + o.config.Logger.Debug("Community.CanView: no members in chat", zap.String("chat-id", chatID)) + return false + } + + _, isChatMember := chat.Members[common.PubkeyToHex(pk)] + return isChatMember +} + +func (o *Community) CanPost(pk *ecdsa.PublicKey, chatID string, messageType protobuf.ApplicationMetadataMessage_Type) (bool, error) { + hasAccessToChat := o.CanView(pk, chatID) + if !hasAccessToChat { return false, nil } - // Need to also be a chat member to post - if !o.IsMemberInChat(pk, chatID) { - o.config.Logger.Debug("Community.CanPost: not a chat member", zap.String("chat-id", chatID)) - return false, nil - } + chat := o.config.CommunityDescription.Chats[chatID] + member := chat.Members[common.PubkeyToHex(pk)] - // all conditions satisfied, user can post after all - return true, nil + switch messageType { + case protobuf.ApplicationMetadataMessage_PIN_MESSAGE: + pinAllowed := o.IsPrivilegedMember(pk) || o.AllowsAllMembersToPinMessage() + return pinAllowed, nil + + case protobuf.ApplicationMetadataMessage_EMOJI_REACTION: + isPoster := member.GetChannelRole() == protobuf.CommunityMember_CHANNEL_ROLE_POSTER + isViewer := member.GetChannelRole() == protobuf.CommunityMember_CHANNEL_ROLE_VIEWER + return isPoster || (isViewer && chat.ViewersCanPostReactions), nil + + default: + return member.GetChannelRole() == protobuf.CommunityMember_CHANNEL_ROLE_POSTER, nil + } } func (o *Community) BuildGrant(key *ecdsa.PublicKey, chatID string) ([]byte, error) { @@ -1926,8 +2046,8 @@ func (o *Community) isMember() bool { return o.hasMember(o.config.MemberIdentity) } -func (o *Community) CanMemberIdentityPost(chatID string) (bool, error) { - return o.CanPost(o.config.MemberIdentity, chatID) +func (o *Community) CanMemberIdentityPost(chatID string, messageType protobuf.ApplicationMetadataMessage_Type) (bool, error) { + return o.CanPost(o.config.MemberIdentity, chatID, messageType) } // CanJoin returns whether a user can join the community, only if it's @@ -2010,7 +2130,9 @@ func (o *Community) AddMember(publicKey *ecdsa.PublicKey, roles []protobuf.Commu return changes, nil } -func (o *Community) AddMemberToChat(chatID string, publicKey *ecdsa.PublicKey, roles []protobuf.CommunityMember_Roles) (*CommunityChanges, error) { +func (o *Community) AddMemberToChat(chatID string, publicKey *ecdsa.PublicKey, + roles []protobuf.CommunityMember_Roles, channelRole protobuf.CommunityMember_ChannelRole) (*CommunityChanges, error) { + o.mutex.Lock() defer o.mutex.Unlock() @@ -2030,7 +2152,8 @@ func (o *Community) AddMemberToChat(chatID string, publicKey *ecdsa.PublicKey, r chat.Members = make(map[string]*protobuf.CommunityMember) } chat.Members[memberKey] = &protobuf.CommunityMember{ - Roles: roles, + Roles: roles, + ChannelRole: channelRole, } changes.ChatsModified[chatID] = &CommunityChatChanges{ ChatModified: chat, @@ -2187,9 +2310,13 @@ func (o *Community) unbanUserFromCommunity(pk *ecdsa.PublicKey) { break } } + + if o.config.CommunityDescription.BannedMembers != nil { + delete(o.config.CommunityDescription.BannedMembers, key) + } } -func (o *Community) banUserFromCommunity(pk *ecdsa.PublicKey) { +func (o *Community) banUserFromCommunity(pk *ecdsa.PublicKey, communityBanInfo *protobuf.CommunityBanInfo) { key := common.PubkeyToHex(pk) if o.hasMember(pk) { // Remove from org @@ -2201,6 +2328,14 @@ func (o *Community) banUserFromCommunity(pk *ecdsa.PublicKey) { } } + if o.config.CommunityDescription.BannedMembers == nil { + o.config.CommunityDescription.BannedMembers = make(map[string]*protobuf.CommunityBanInfo) + } + + if _, exists := o.config.CommunityDescription.BannedMembers[key]; !exists { + o.config.CommunityDescription.BannedMembers[key] = communityBanInfo + } + for _, u := range o.config.CommunityDescription.BanList { if u == key { return @@ -2210,6 +2345,21 @@ func (o *Community) banUserFromCommunity(pk *ecdsa.PublicKey) { o.config.CommunityDescription.BanList = append(o.config.CommunityDescription.BanList, key) } +func (o *Community) deleteBannedMemberAllMessages(pk *ecdsa.PublicKey) error { + key := common.PubkeyToHex(pk) + + if o.config.CommunityDescription.BannedMembers == nil { + return ErrBannedMemberNotFound + } + + if _, exists := o.config.CommunityDescription.BannedMembers[key]; !exists { + return ErrBannedMemberNotFound + } + + o.config.CommunityDescription.BannedMembers[key].DeleteAllMessages = true + return nil +} + func (o *Community) editChat(chatID string, chat *protobuf.CommunityChat) error { err := validateCommunityChat(o.config.CommunityDescription, chat) if err != nil { @@ -2343,20 +2493,14 @@ func (o *Community) DeclineRequestToJoin(dbRequest *RequestToJoin) (adminEventCr } if o.IsControlNode() { - // typically, community's clock is increased implicitly when making changes - // to it, however in this scenario there are no changes in the community, yet - // we need to increase the clock to ensure the owner event is processed by other - // nodes. + pk, err := common.HexToPubkey(dbRequest.PublicKey) + if err != nil { + return false, err + } + o.removeMemberFromOrg(pk) o.increaseClock() } else { - rejectedRequestsToJoin := make(map[string]*protobuf.CommunityRequestToJoin) - rejectedRequestsToJoin[dbRequest.PublicKey] = dbRequest.ToCommunityRequestToJoinProtobuf() - - adminChanges := &CommunityEventChanges{ - CommunityChanges: o.emptyCommunityChanges(), - RejectedRequestsToJoin: rejectedRequestsToJoin, - } - err = o.addNewCommunityEvent(o.ToCommunityRequestToJoinRejectCommunityEvent(adminChanges)) + err = o.addNewCommunityEvent(o.ToCommunityRequestToJoinRejectCommunityEvent(dbRequest.PublicKey, dbRequest.ToCommunityRequestToJoinProtobuf())) if err != nil { return adminEventCreated, err } @@ -2367,11 +2511,8 @@ func (o *Community) DeclineRequestToJoin(dbRequest *RequestToJoin) (adminEventCr return adminEventCreated, err } -func (o *Community) ValidateEvent(event *CommunityEvent, signer *ecdsa.PublicKey) error { - o.mutex.Lock() - defer o.mutex.Unlock() - - err := validateCommunityEvent(event) +func (o *Community) validateEvent(event *CommunityEvent, signer *ecdsa.PublicKey) error { + err := event.Validate() if err != nil { return err } @@ -2397,6 +2538,12 @@ func (o *Community) ValidateEvent(event *CommunityEvent, signer *ecdsa.PublicKey return nil } +func (o *Community) ValidateEvent(event *CommunityEvent, signer *ecdsa.PublicKey) error { + o.mutex.Lock() + defer o.mutex.Unlock() + return o.validateEvent(event, signer) +} + func (o *Community) MemberCanManageToken(member *ecdsa.PublicKey, token *community_token.CommunityToken) bool { return o.IsMemberOwner(member) || o.IsControlNode() || (o.IsMemberTokenMaster(member) && token.PrivilegesLevel != community_token.OwnerLevel && token.PrivilegesLevel != community_token.MasterLevel) diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_changes.go b/vendor/github.com/status-im/status-go/protocol/communities/community_changes.go index 0cd40dde..c007ae35 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/community_changes.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_changes.go @@ -3,6 +3,8 @@ package communities import ( "crypto/ecdsa" + slices "golang.org/x/exp/slices" + "github.com/status-im/status-go/protocol/protobuf" ) @@ -20,8 +22,10 @@ type CommunityChanges struct { ControlNodeChanged *ecdsa.PublicKey `json:"controlNodeChanged"` - MembersAdded map[string]*protobuf.CommunityMember `json:"membersAdded"` - MembersRemoved map[string]*protobuf.CommunityMember `json:"membersRemoved"` + MembersAdded map[string]*protobuf.CommunityMember `json:"membersAdded"` + MembersRemoved map[string]*protobuf.CommunityMember `json:"membersRemoved"` + MembersBanned map[string]bool `json:"membersBanned"` + MembersUnbanned map[string]bool `json:"membersUnbanned"` TokenPermissionsAdded map[string]*CommunityTokenPermission `json:"tokenPermissionsAdded"` TokenPermissionsModified map[string]*CommunityTokenPermission `json:"tokenPermissionsModified"` @@ -48,8 +52,10 @@ type CommunityChanges struct { func EmptyCommunityChanges() *CommunityChanges { return &CommunityChanges{ - MembersAdded: make(map[string]*protobuf.CommunityMember), - MembersRemoved: make(map[string]*protobuf.CommunityMember), + MembersAdded: make(map[string]*protobuf.CommunityMember), + MembersRemoved: make(map[string]*protobuf.CommunityMember), + MembersBanned: make(map[string]bool), + MembersUnbanned: make(map[string]bool), TokenPermissionsAdded: make(map[string]*CommunityTokenPermission), TokenPermissionsModified: make(map[string]*CommunityTokenPermission), @@ -84,6 +90,22 @@ func (c *CommunityChanges) HasMemberLeft(identity string) bool { return ok } +func (c *CommunityChanges) IsMemberBanned(identity string) bool { + if len(c.MembersBanned) == 0 { + return false + } + _, ok := c.MembersBanned[identity] + return ok +} + +func (c *CommunityChanges) IsMemberUnbanned(identity string) bool { + if len(c.MembersUnbanned) == 0 { + return false + } + _, ok := c.MembersUnbanned[identity] + return ok +} + func EvaluateCommunityChanges(origin, modified *Community) *CommunityChanges { changes := evaluateCommunityChangesByDescription(origin.Description(), modified.Description()) @@ -122,19 +144,23 @@ func evaluateCommunityChangesByDescription(origin, modified *protobuf.CommunityD // Check for new members at the org level for pk, member := range modified.Members { if _, ok := origin.Members[pk]; !ok { - if changes.MembersAdded == nil { - changes.MembersAdded = make(map[string]*protobuf.CommunityMember) - } changes.MembersAdded[pk] = member } } + // Check ban/unban + findDiffInBannedMembers(modified.BannedMembers, origin.BannedMembers, changes.MembersBanned) + findDiffInBannedMembers(origin.BannedMembers, modified.BannedMembers, changes.MembersUnbanned) + + // Check for new banned members (from deprecated BanList) + findDiffInBanList(modified.BanList, origin.BanList, changes.MembersBanned) + + // Check for new unbanned members (from deprecated BanList) + findDiffInBanList(origin.BanList, modified.BanList, changes.MembersUnbanned) + // Check for removed members at the org level for pk, member := range origin.Members { if _, ok := modified.Members[pk]; !ok { - if changes.MembersRemoved == nil { - changes.MembersRemoved = make(map[string]*protobuf.CommunityMember) - } changes.MembersRemoved[pk] = member } } @@ -145,10 +171,6 @@ func evaluateCommunityChangesByDescription(origin, modified *protobuf.CommunityD modified.Chats = make(map[string]*protobuf.CommunityChat) } if _, ok := modified.Chats[chatID]; !ok { - if changes.ChatsRemoved == nil { - changes.ChatsRemoved = make(map[string]*protobuf.CommunityChat) - } - changes.ChatsRemoved[chatID] = chat } } @@ -159,10 +181,6 @@ func evaluateCommunityChangesByDescription(origin, modified *protobuf.CommunityD } if _, ok := origin.Chats[chatID]; !ok { - if changes.ChatsAdded == nil { - changes.ChatsAdded = make(map[string]*protobuf.CommunityChat) - } - changes.ChatsAdded[chatID] = chat } else { // Check for members added @@ -232,10 +250,6 @@ func evaluateCommunityChangesByDescription(origin, modified *protobuf.CommunityD origin.Categories = make(map[string]*protobuf.CommunityCategory) } if _, ok := origin.Categories[categoryID]; !ok { - if changes.CategoriesAdded == nil { - changes.CategoriesAdded = make(map[string]*protobuf.CommunityCategory) - } - changes.CategoriesAdded[categoryID] = category } else { if origin.Categories[categoryID].Name != category.Name || origin.Categories[categoryID].Position != category.Position { @@ -268,3 +282,33 @@ func evaluateCommunityChangesByDescription(origin, modified *protobuf.CommunityD return changes } + +func findDiffInBanList(searchFrom []string, searchIn []string, storeTo map[string]bool) { + for _, memberToFind := range searchFrom { + if _, stored := storeTo[memberToFind]; stored { + continue + } + + exists := slices.Contains(searchIn, memberToFind) + + if !exists { + storeTo[memberToFind] = false + } + } +} + +func findDiffInBannedMembers(searchFrom map[string]*protobuf.CommunityBanInfo, searchIn map[string]*protobuf.CommunityBanInfo, storeTo map[string]bool) { + if searchFrom == nil { + return + } else if searchIn == nil { + for memberToFind, value := range searchFrom { + storeTo[memberToFind] = value.DeleteAllMessages + } + } else { + for memberToFind, value := range searchFrom { + if _, exists := searchIn[memberToFind]; !exists { + storeTo[memberToFind] = value.DeleteAllMessages + } + } + } +} diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_description_encryption.go b/vendor/github.com/status-im/status-go/protocol/communities/community_description_encryption.go index 39140d9d..859bf9df 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/community_description_encryption.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_description_encryption.go @@ -1,8 +1,6 @@ package communities import ( - "github.com/golang/protobuf/proto" - "go.uber.org/zap" "github.com/status-im/status-go/eth-node/types" @@ -26,7 +24,7 @@ func encryptDescription(encryptor DescriptionEncryptor, community *Community, de descriptionToEncrypt := &protobuf.CommunityDescription{ Chats: map[string]*protobuf.CommunityChat{ - channelID: proto.Clone(channel).(*protobuf.CommunityChat), + channelID: channel, }, } @@ -42,8 +40,10 @@ func encryptDescription(encryptor DescriptionEncryptor, community *Community, de if community.Encrypted() { descriptionToEncrypt := &protobuf.CommunityDescription{ - Members: description.Members, - Chats: description.Chats, + Members: description.Members, + ActiveMembersCount: description.ActiveMembersCount, + Chats: description.Chats, + Categories: description.Categories, } keyIDSeqNo, encryptedDescription, err := encryptor.encryptCommunityDescription(community, descriptionToEncrypt) @@ -51,10 +51,12 @@ func encryptDescription(encryptor DescriptionEncryptor, community *Community, de return err } - // Set private data and cleanup unencrypted members and chats + // Set private data and cleanup unencrypted members, chats and categories description.PrivateData[keyIDSeqNo] = encryptedDescription description.Members = make(map[string]*protobuf.CommunityMember) + description.ActiveMembersCount = 0 description.Chats = make(map[string]*protobuf.CommunityChat) + description.Categories = make(map[string]*protobuf.CommunityCategory) } return nil @@ -85,11 +87,12 @@ func decryptDescription(id types.HexBytes, encryptor DescriptionEncryptor, descr } decryptedDescription := decryptedDescriptionResponse.Description - for pk, member := range decryptedDescription.Members { - if description.Members == nil { - description.Members = make(map[string]*protobuf.CommunityMember) - } - description.Members[pk] = member + if len(decryptedDescription.Members) > 0 { + description.Members = decryptedDescription.Members + } + + if decryptedDescription.ActiveMembersCount > 0 { + description.ActiveMembersCount = decryptedDescription.ActiveMembersCount } for id, decryptedChannel := range decryptedDescription.Chats { @@ -98,13 +101,17 @@ func decryptDescription(id types.HexBytes, encryptor DescriptionEncryptor, descr } if channel := description.Chats[id]; channel != nil { - if len(channel.Members) == 0 { + if len(decryptedChannel.Members) > 0 { channel.Members = decryptedChannel.Members } } else { description.Chats[id] = decryptedChannel } } + + if len(decryptedDescription.Categories) > 0 { + description.Categories = decryptedDescription.Categories + } } return failedToDecrypt, nil diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_event.go b/vendor/github.com/status-im/status-go/protocol/communities/community_event.go index 0c1d3af3..a737341a 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/community_event.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_event.go @@ -2,413 +2,262 @@ package communities import ( "crypto/ecdsa" + "encoding/json" "errors" - "time" + "fmt" "github.com/golang/protobuf/proto" - utils "github.com/status-im/status-go/common" - "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/protocol/protobuf" ) -var ErrInvalidCommunityEventClock = errors.New("clock for admin event message is outdated") +type CommunityEvent struct { + CommunityEventClock uint64 `json:"communityEventClock"` + Type protobuf.CommunityEvent_EventType `json:"type"` + CommunityConfig *protobuf.CommunityConfig `json:"communityConfig,omitempty"` + TokenPermission *protobuf.CommunityTokenPermission `json:"tokenPermissions,omitempty"` + CategoryData *protobuf.CategoryData `json:"categoryData,omitempty"` + ChannelData *protobuf.ChannelData `json:"channelData,omitempty"` + MemberToAction string `json:"memberToAction,omitempty"` + RequestToJoin *protobuf.CommunityRequestToJoin `json:"requestToJoin,omitempty"` + TokenMetadata *protobuf.CommunityTokenMetadata `json:"tokenMetadata,omitempty"` + Payload []byte `json:"payload"` + Signature []byte `json:"signature"` +} -func (o *Community) ToCreateChannelCommunityEvent(channelID string, channel *protobuf.CommunityChat) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE, - ChannelData: &protobuf.ChannelData{ - ChannelId: channelID, - Channel: channel, - }, +func (e *CommunityEvent) ToProtobuf() *protobuf.CommunityEvent { + var acceptedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin + var rejectedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin + + switch e.Type { + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT: + acceptedRequestsToJoin = make(map[string]*protobuf.CommunityRequestToJoin) + acceptedRequestsToJoin[e.MemberToAction] = e.RequestToJoin + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT: + rejectedRequestsToJoin = make(map[string]*protobuf.CommunityRequestToJoin) + rejectedRequestsToJoin[e.MemberToAction] = e.RequestToJoin + } + + return &protobuf.CommunityEvent{ + CommunityEventClock: e.CommunityEventClock, + Type: e.Type, + CommunityConfig: e.CommunityConfig, + TokenPermission: e.TokenPermission, + CategoryData: e.CategoryData, + ChannelData: e.ChannelData, + MemberToAction: e.MemberToAction, + RejectedRequestsToJoin: rejectedRequestsToJoin, + AcceptedRequestsToJoin: acceptedRequestsToJoin, + TokenMetadata: e.TokenMetadata, } } -func (o *Community) ToEditChannelCommunityEvent(channelID string, channel *protobuf.CommunityChat) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT, - ChannelData: &protobuf.ChannelData{ - ChannelId: channelID, - Channel: channel, - }, +func communityEventFromProtobuf(msg *protobuf.SignedCommunityEvent) (*CommunityEvent, error) { + decodedEvent := protobuf.CommunityEvent{} + err := proto.Unmarshal(msg.Payload, &decodedEvent) + if err != nil { + return nil, err } + + memberToAction := decodedEvent.MemberToAction + var requestToJoin *protobuf.CommunityRequestToJoin + + switch decodedEvent.Type { + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT: + for member, request := range decodedEvent.AcceptedRequestsToJoin { + memberToAction = member + requestToJoin = request + break + } + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT: + for member, request := range decodedEvent.RejectedRequestsToJoin { + memberToAction = member + requestToJoin = request + break + } + } + + return &CommunityEvent{ + CommunityEventClock: decodedEvent.CommunityEventClock, + Type: decodedEvent.Type, + CommunityConfig: decodedEvent.CommunityConfig, + TokenPermission: decodedEvent.TokenPermission, + CategoryData: decodedEvent.CategoryData, + ChannelData: decodedEvent.ChannelData, + MemberToAction: memberToAction, + RequestToJoin: requestToJoin, + TokenMetadata: decodedEvent.TokenMetadata, + Payload: msg.Payload, + Signature: msg.Signature, + }, nil } -func (o *Community) ToDeleteChannelCommunityEvent(channelID string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE, - ChannelData: &protobuf.ChannelData{ - ChannelId: channelID, - }, +func (e *CommunityEvent) RecoverSigner() (*ecdsa.PublicKey, error) { + if e.Signature == nil || len(e.Signature) == 0 { + return nil, errors.New("missing signature") } + + signer, err := crypto.SigToPub( + crypto.Keccak256(e.Payload), + e.Signature, + ) + if err != nil { + return nil, errors.New("failed to recover signer") + } + + return signer, nil } -func (o *Community) ToReorderChannelCommunityEvent(categoryID string, channelID string, position int) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER, - ChannelData: &protobuf.ChannelData{ - CategoryId: categoryID, - ChannelId: channelID, - Position: int32(position), - }, - } -} - -func (o *Community) ToCreateCategoryCommunityEvent(categoryID string, categoryName string, channelsIds []string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE, - CategoryData: &protobuf.CategoryData{ - Name: categoryName, - CategoryId: categoryID, - ChannelsIds: channelsIds, - }, - } -} - -func (o *Community) ToEditCategoryCommunityEvent(categoryID string, categoryName string, channelsIds []string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT, - CategoryData: &protobuf.CategoryData{ - Name: categoryName, - CategoryId: categoryID, - ChannelsIds: channelsIds, - }, - } -} - -func (o *Community) ToDeleteCategoryCommunityEvent(categoryID string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE, - CategoryData: &protobuf.CategoryData{ - CategoryId: categoryID, - }, - } -} - -func (o *Community) ToReorderCategoryCommunityEvent(categoryID string, position int) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER, - CategoryData: &protobuf.CategoryData{ - CategoryId: categoryID, - Position: int32(position), - }, - } -} - -func (o *Community) ToBanCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN, - MemberToAction: pubkey, - } -} - -func (o *Community) ToUnbanCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN, - MemberToAction: pubkey, - } -} - -func (o *Community) ToKickCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK, - MemberToAction: pubkey, - } -} - -func (o *Community) ToCommunityEditCommunityEvent(description *protobuf.CommunityDescription) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_EDIT, - CommunityConfig: &protobuf.CommunityConfig{ - Identity: description.Identity, - Permissions: description.Permissions, - AdminSettings: description.AdminSettings, - IntroMessage: description.IntroMessage, - OutroMessage: description.OutroMessage, - Tags: description.Tags, - }, - } -} - -func (o *Community) ToCommunityTokenPermissionChangeCommunityEvent(permission *protobuf.CommunityTokenPermission) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE, - TokenPermission: permission, - } -} - -func (o *Community) ToCommunityTokenPermissionDeleteCommunityEvent(permission *protobuf.CommunityTokenPermission) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE, - TokenPermission: permission, - } -} - -func (o *Community) ToCommunityRequestToJoinAcceptCommunityEvent(changes *CommunityEventChanges) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT, - AcceptedRequestsToJoin: changes.AcceptedRequestsToJoin, - } -} - -func (o *Community) ToCommunityRequestToJoinRejectCommunityEvent(changes *CommunityEventChanges) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT, - RejectedRequestsToJoin: changes.RejectedRequestsToJoin, - } -} - -func (o *Community) ToAddTokenMetadataCommunityEvent(tokenMetadata *protobuf.CommunityTokenMetadata) *CommunityEvent { - return &CommunityEvent{ - CommunityEventClock: o.NewCommunityEventClock(), - Type: protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD, - TokenMetadata: tokenMetadata, - } -} - -func (o *Community) UpdateCommunityByEvents(communityEventMessage *CommunityEventsMessage) error { - o.mutex.Lock() - defer o.mutex.Unlock() - - // Validate that EventsBaseCommunityDescription was signed by the control node - description, err := validateAndGetEventsMessageCommunityDescription(communityEventMessage.EventsBaseCommunityDescription, o.ControlNode()) - if err != nil { - return err - } - - if description.Clock != o.config.CommunityDescription.Clock { - return ErrInvalidCommunityEventClock - } - - // Merge community events to existing community. Community events must be stored to the db - // during saving the community - o.mergeCommunityEvents(communityEventMessage) - - if o.encryptor != nil { - _, err = decryptDescription(o.ID(), o.encryptor, description, o.config.Logger) - if err != nil { - return err - } - } - - o.config.CommunityDescription = description - o.config.CommunityDescriptionProtocolMessage = communityEventMessage.EventsBaseCommunityDescription - - // Update the copy of the CommunityDescription by community events - err = o.updateCommunityDescriptionByEvents() +func (e *CommunityEvent) Sign(pk *ecdsa.PrivateKey) error { + sig, err := crypto.Sign(crypto.Keccak256(e.Payload), pk) if err != nil { return err } + e.Signature = sig return nil } -func (o *Community) updateCommunityDescriptionByEvents() error { - if o.config.EventsData == nil { - return nil - } - - for _, event := range o.config.EventsData.Events { - err := o.updateCommunityDescriptionByCommunityEvent(event) - if err != nil { - return err - } - } - - return nil -} - -func (o *Community) updateCommunityDescriptionByCommunityEvent(communityEvent CommunityEvent) error { - switch communityEvent.Type { +func (e *CommunityEvent) Validate() error { + switch e.Type { case protobuf.CommunityEvent_COMMUNITY_EDIT: - o.config.CommunityDescription.Identity = communityEvent.CommunityConfig.Identity - o.config.CommunityDescription.Permissions = communityEvent.CommunityConfig.Permissions - o.config.CommunityDescription.AdminSettings = communityEvent.CommunityConfig.AdminSettings - o.config.CommunityDescription.IntroMessage = communityEvent.CommunityConfig.IntroMessage - o.config.CommunityDescription.OutroMessage = communityEvent.CommunityConfig.OutroMessage - o.config.CommunityDescription.Tags = communityEvent.CommunityConfig.Tags + if e.CommunityConfig == nil || e.CommunityConfig.Identity == nil || + e.CommunityConfig.Permissions == nil || e.CommunityConfig.AdminSettings == nil { + return errors.New("invalid config change admin event") + } case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE: - if o.IsControlNode() { - _, err := o.upsertTokenPermission(communityEvent.TokenPermission) - if err != nil { - return err - } + if e.TokenPermission == nil || len(e.TokenPermission.Id) == 0 { + return errors.New("invalid token permission change event") } case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE: - if o.IsControlNode() { - _, err := o.deleteTokenPermission(communityEvent.TokenPermission.Id) - if err != nil { - return err - } + if e.TokenPermission == nil || len(e.TokenPermission.Id) == 0 { + return errors.New("invalid token permission delete event") } case protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE: - _, err := o.createCategory(communityEvent.CategoryData.CategoryId, communityEvent.CategoryData.Name, communityEvent.CategoryData.ChannelsIds) - if err != nil { - return err + if e.CategoryData == nil || len(e.CategoryData.CategoryId) == 0 { + return errors.New("invalid community category create event") } case protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE: - _, err := o.deleteCategory(communityEvent.CategoryData.CategoryId) - if err != nil { - return err + if e.CategoryData == nil || len(e.CategoryData.CategoryId) == 0 { + return errors.New("invalid community category delete event") } case protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT: - _, err := o.editCategory(communityEvent.CategoryData.CategoryId, communityEvent.CategoryData.Name, communityEvent.CategoryData.ChannelsIds) - if err != nil { - return err + if e.CategoryData == nil || len(e.CategoryData.CategoryId) == 0 { + return errors.New("invalid community category edit event") } case protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE: - err := o.createChat(communityEvent.ChannelData.ChannelId, communityEvent.ChannelData.Channel) - if err != nil { - return err + if e.ChannelData == nil || len(e.ChannelData.ChannelId) == 0 || + e.ChannelData.Channel == nil { + return errors.New("invalid community channel create event") } case protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE: - o.deleteChat(communityEvent.ChannelData.ChannelId) + if e.ChannelData == nil || len(e.ChannelData.ChannelId) == 0 { + return errors.New("invalid community channel delete event") + } case protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT: - err := o.editChat(communityEvent.ChannelData.ChannelId, communityEvent.ChannelData.Channel) - if err != nil { - return err + if e.ChannelData == nil || len(e.ChannelData.ChannelId) == 0 || + e.ChannelData.Channel == nil { + return errors.New("invalid community channel edit event") } case protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER: - _, err := o.reorderChat(communityEvent.ChannelData.CategoryId, communityEvent.ChannelData.ChannelId, int(communityEvent.ChannelData.Position)) - if err != nil { - return err + if e.ChannelData == nil || len(e.ChannelData.ChannelId) == 0 { + return errors.New("invalid community channel reorder event") } case protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER: - _, err := o.reorderCategories(communityEvent.CategoryData.CategoryId, int(communityEvent.CategoryData.Position)) - if err != nil { - return err + if e.CategoryData == nil || len(e.CategoryData.CategoryId) == 0 { + return errors.New("invalid community category reorder event") + } + + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT, protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT: + if len(e.MemberToAction) == 0 || e.RequestToJoin == nil { + return errors.New("invalid community request to join event") } case protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK: - if o.IsControlNode() { - pk, err := common.HexToPubkey(communityEvent.MemberToAction) - if err != nil { - return err - } - o.removeMemberFromOrg(pk) + if len(e.MemberToAction) == 0 { + return errors.New("invalid community member kick event") } + case protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN: - if o.IsControlNode() { - pk, err := common.HexToPubkey(communityEvent.MemberToAction) - if err != nil { - return err - } - o.banUserFromCommunity(pk) + if len(e.MemberToAction) == 0 { + return errors.New("invalid community member ban event") } + case protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN: - if o.IsControlNode() { - pk, err := common.HexToPubkey(communityEvent.MemberToAction) - if err != nil { - return err - } - o.unbanUserFromCommunity(pk) + if len(e.MemberToAction) == 0 { + return errors.New("invalid community member unban event") } + case protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD: - o.config.CommunityDescription.CommunityTokensMetadata = append(o.config.CommunityDescription.CommunityTokensMetadata, communityEvent.TokenMetadata) + if e.TokenMetadata == nil || len(e.TokenMetadata.ContractAddresses) == 0 { + return errors.New("invalid add community token event") + } + case protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES: + if len(e.MemberToAction) == 0 { + return errors.New("invalid delete all community member messages event") + } } return nil } -func (o *Community) NewCommunityEventClock() uint64 { - return uint64(time.Now().Unix()) +// EventTypeID constructs a unique identifier for an event and its associated target. +func (e *CommunityEvent) EventTypeID() string { + switch e.Type { + case protobuf.CommunityEvent_COMMUNITY_EDIT: + return fmt.Sprintf("%d", e.Type) + + case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE, + protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE: + return fmt.Sprintf("%d-%s", e.Type, e.TokenPermission.Id) + + case protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE, + protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE, + protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT, + protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER: + return fmt.Sprintf("%d-%s", e.Type, e.CategoryData.CategoryId) + + case protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE, + protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE, + protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT, + protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER: + return fmt.Sprintf("%d-%s", e.Type, e.ChannelData.ChannelId) + + case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT, + protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT, + protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK, + protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN, + protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN, + protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES: + return fmt.Sprintf("%d-%s", e.Type, e.MemberToAction) + + case protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD: + return fmt.Sprintf("%d-%s", e.Type, e.TokenMetadata.Name) + } + + return "" } -func (o *Community) addNewCommunityEvent(event *CommunityEvent) error { - err := validateCommunityEvent(event) - if err != nil { - return err - } - - // All events must be built on top of the control node CommunityDescription - // If there were no events before, extract CommunityDescription from CommunityDescriptionProtocolMessage - // and check the signature - if o.config.EventsData == nil || len(o.config.EventsData.EventsBaseCommunityDescription) == 0 { - _, err := validateAndGetEventsMessageCommunityDescription(o.config.CommunityDescriptionProtocolMessage, o.ControlNode()) - if err != nil { - return err - } - - o.config.EventsData = &EventsData{ - EventsBaseCommunityDescription: o.config.CommunityDescriptionProtocolMessage, - Events: []CommunityEvent{}, - } - } - - event.Payload, err = proto.Marshal(event.ToProtobuf()) - if err != nil { - return err - } - - o.config.EventsData.Events = append(o.config.EventsData.Events, *event) - - return nil +func communityEventsToJSONEncodedBytes(communityEvents []CommunityEvent) ([]byte, error) { + return json.Marshal(communityEvents) } -func (o *Community) ToCommunityEventsMessage() *CommunityEventsMessage { - return &CommunityEventsMessage{ - CommunityID: o.ID(), - EventsBaseCommunityDescription: o.config.EventsData.EventsBaseCommunityDescription, - Events: o.config.EventsData.Events, - } -} - -func validateAndGetEventsMessageCommunityDescription(signedDescription []byte, signerPubkey *ecdsa.PublicKey) (*protobuf.CommunityDescription, error) { - metadata := &protobuf.ApplicationMetadataMessage{} - - err := proto.Unmarshal(signedDescription, metadata) +func communityEventsFromJSONEncodedBytes(jsonEncodedRawEvents []byte) ([]CommunityEvent, error) { + var events []CommunityEvent + err := json.Unmarshal(jsonEncodedRawEvents, &events) if err != nil { return nil, err } - if metadata.Type != protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION { - return nil, ErrInvalidMessage - } - - signer, err := utils.RecoverKey(metadata) - if err != nil { - return nil, err - } - - if signer == nil { - return nil, errors.New("CommunityDescription does not contain the control node signature") - } - - if !signer.Equal(signerPubkey) { - return nil, errors.New("CommunityDescription was not signed by an owner") - } - - description := &protobuf.CommunityDescription{} - - err = proto.Unmarshal(metadata.Payload, description) - if err != nil { - return nil, err - } - - return description, nil + return events, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_event_message.go b/vendor/github.com/status-im/status-go/protocol/communities/community_event_message.go index 423264de..2472be9f 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/community_event_message.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_event_message.go @@ -1,100 +1,11 @@ package communities import ( - "bytes" - "crypto/ecdsa" - "encoding/json" - "errors" - "sort" - "github.com/golang/protobuf/proto" - "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/protocol/protobuf" ) -type CommunityEvent struct { - CommunityEventClock uint64 `json:"communityEventClock"` - Type protobuf.CommunityEvent_EventType `json:"type"` - CommunityConfig *protobuf.CommunityConfig `json:"communityConfig,omitempty"` - TokenPermission *protobuf.CommunityTokenPermission `json:"tokenPermissions,omitempty"` - CategoryData *protobuf.CategoryData `json:"categoryData,omitempty"` - ChannelData *protobuf.ChannelData `json:"channelData,omitempty"` - MemberToAction string `json:"memberToAction,omitempty"` - MembersAdded map[string]*protobuf.CommunityMember `json:"membersAdded,omitempty"` - RejectedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin `json:"rejectedRequestsToJoin,omitempty"` - AcceptedRequestsToJoin map[string]*protobuf.CommunityRequestToJoin `json:"acceptedRequestsToJoin,omitempty"` - TokenMetadata *protobuf.CommunityTokenMetadata `json:"tokenMetadata,omitempty"` - Payload []byte `json:"payload"` - Signature []byte `json:"signature"` -} - -func (e *CommunityEvent) ToProtobuf() *protobuf.CommunityEvent { - return &protobuf.CommunityEvent{ - CommunityEventClock: e.CommunityEventClock, - Type: e.Type, - CommunityConfig: e.CommunityConfig, - TokenPermission: e.TokenPermission, - CategoryData: e.CategoryData, - ChannelData: e.ChannelData, - MemberToAction: e.MemberToAction, - MembersAdded: e.MembersAdded, - RejectedRequestsToJoin: e.RejectedRequestsToJoin, - AcceptedRequestsToJoin: e.AcceptedRequestsToJoin, - TokenMetadata: e.TokenMetadata, - } -} - -func communityEventFromProtobuf(msg *protobuf.SignedCommunityEvent) (*CommunityEvent, error) { - decodedEvent := protobuf.CommunityEvent{} - err := proto.Unmarshal(msg.Payload, &decodedEvent) - if err != nil { - return nil, err - } - - return &CommunityEvent{ - CommunityEventClock: decodedEvent.CommunityEventClock, - Type: decodedEvent.Type, - CommunityConfig: decodedEvent.CommunityConfig, - TokenPermission: decodedEvent.TokenPermission, - CategoryData: decodedEvent.CategoryData, - ChannelData: decodedEvent.ChannelData, - MemberToAction: decodedEvent.MemberToAction, - MembersAdded: decodedEvent.MembersAdded, - RejectedRequestsToJoin: decodedEvent.RejectedRequestsToJoin, - AcceptedRequestsToJoin: decodedEvent.AcceptedRequestsToJoin, - TokenMetadata: decodedEvent.TokenMetadata, - Payload: msg.Payload, - Signature: msg.Signature, - }, nil -} - -func (e *CommunityEvent) RecoverSigner() (*ecdsa.PublicKey, error) { - if e.Signature == nil || len(e.Signature) == 0 { - return nil, errors.New("missing signature") - } - - signer, err := crypto.SigToPub( - crypto.Keccak256(e.Payload), - e.Signature, - ) - if err != nil { - return nil, errors.New("failed to recover signer") - } - - return signer, nil -} - -func (e *CommunityEvent) Sign(pk *ecdsa.PrivateKey) error { - sig, err := crypto.Sign(crypto.Keccak256(e.Payload), pk) - if err != nil { - return err - } - - e.Signature = sig - return nil -} - type CommunityEventsMessage struct { CommunityID []byte `json:"communityId"` EventsBaseCommunityDescription []byte `json:"eventsBaseCommunityDescription"` @@ -141,145 +52,3 @@ func (m *CommunityEventsMessage) Marshal() ([]byte, error) { pb := m.ToProtobuf() return proto.Marshal(pb) } - -func (c *Community) mergeCommunityEvents(communityEventMessage *CommunityEventsMessage) { - if c.config.EventsData == nil { - c.config.EventsData = &EventsData{ - EventsBaseCommunityDescription: communityEventMessage.EventsBaseCommunityDescription, - Events: communityEventMessage.Events, - } - return - } - - for _, update := range communityEventMessage.Events { - var exists bool - for _, existing := range c.config.EventsData.Events { - if isCommunityEventsEqual(update, existing) { - exists = true - break - } - } - if !exists { - c.config.EventsData.Events = append(c.config.EventsData.Events, update) - } - } - - c.sortCommunityEvents() -} - -func (c *Community) sortCommunityEvents() { - sort.Slice(c.config.EventsData.Events, func(i, j int) bool { - return c.config.EventsData.Events[i].CommunityEventClock < c.config.EventsData.Events[j].CommunityEventClock - }) -} - -func validateCommunityEvent(communityEvent *CommunityEvent) error { - switch communityEvent.Type { - case protobuf.CommunityEvent_COMMUNITY_EDIT: - if communityEvent.CommunityConfig == nil || communityEvent.CommunityConfig.Identity == nil || - communityEvent.CommunityConfig.Permissions == nil || communityEvent.CommunityConfig.AdminSettings == nil { - return errors.New("invalid config change admin event") - } - - case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE: - if communityEvent.TokenPermission == nil || len(communityEvent.TokenPermission.Id) == 0 { - return errors.New("invalid token permission change event") - } - - case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE: - if communityEvent.TokenPermission == nil || len(communityEvent.TokenPermission.Id) == 0 { - return errors.New("invalid token permission delete event") - } - - case protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE: - if communityEvent.CategoryData == nil || len(communityEvent.CategoryData.CategoryId) == 0 { - return errors.New("invalid community category create event") - } - - case protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE: - if communityEvent.CategoryData == nil || len(communityEvent.CategoryData.CategoryId) == 0 { - return errors.New("invalid community category delete event") - } - - case protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT: - if communityEvent.CategoryData == nil || len(communityEvent.CategoryData.CategoryId) == 0 { - return errors.New("invalid community category edit event") - } - - case protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE: - if communityEvent.ChannelData == nil || len(communityEvent.ChannelData.ChannelId) == 0 || - communityEvent.ChannelData.Channel == nil { - return errors.New("invalid community channel create event") - } - - case protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE: - if communityEvent.ChannelData == nil || len(communityEvent.ChannelData.ChannelId) == 0 { - return errors.New("invalid community channel delete event") - } - - case protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT: - if communityEvent.ChannelData == nil || len(communityEvent.ChannelData.ChannelId) == 0 || - communityEvent.ChannelData.Channel == nil { - return errors.New("invalid community channel edit event") - } - - case protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER: - if communityEvent.ChannelData == nil || len(communityEvent.ChannelData.ChannelId) == 0 { - return errors.New("invalid community channel reorder event") - } - - case protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER: - if communityEvent.CategoryData == nil || len(communityEvent.CategoryData.CategoryId) == 0 { - return errors.New("invalid community category reorder event") - } - - case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT: - if communityEvent.AcceptedRequestsToJoin == nil { - return errors.New("invalid community request to join accepted event") - } - - case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT: - if communityEvent.RejectedRequestsToJoin == nil { - return errors.New("invalid community request to join reject event") - } - - case protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK: - if len(communityEvent.MemberToAction) == 0 { - return errors.New("invalid community member kick event") - } - - case protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN: - if len(communityEvent.MemberToAction) == 0 { - return errors.New("invalid community member ban event") - } - - case protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN: - if len(communityEvent.MemberToAction) == 0 { - return errors.New("invalid community member unban event") - } - - case protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD: - if communityEvent.TokenMetadata == nil || len(communityEvent.TokenMetadata.ContractAddresses) == 0 { - return errors.New("invalid add community token event") - } - } - return nil -} - -func isCommunityEventsEqual(left CommunityEvent, right CommunityEvent) bool { - return bytes.Equal(left.Payload, right.Payload) -} - -func communityEventsToJSONEncodedBytes(communityEvents []CommunityEvent) ([]byte, error) { - return json.Marshal(communityEvents) -} - -func communityEventsFromJSONEncodedBytes(jsonEncodedRawEvents []byte) ([]CommunityEvent, error) { - var events []CommunityEvent - err := json.Unmarshal(jsonEncodedRawEvents, &events) - if err != nil { - return nil, err - } - - return events, nil -} diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_events_factory.go b/vendor/github.com/status-im/status-go/protocol/communities/community_events_factory.go new file mode 100644 index 00000000..685bb2d8 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_events_factory.go @@ -0,0 +1,207 @@ +package communities + +import "github.com/status-im/status-go/protocol/protobuf" + +func (o *Community) ToCreateChannelCommunityEvent(channelID string, channel *protobuf.CommunityChat) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE, + ChannelData: &protobuf.ChannelData{ + ChannelId: channelID, + Channel: channel, + }, + } +} + +func (o *Community) ToEditChannelCommunityEvent(channelID string, channel *protobuf.CommunityChat) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT, + ChannelData: &protobuf.ChannelData{ + ChannelId: channelID, + Channel: channel, + }, + } +} + +func (o *Community) ToDeleteChannelCommunityEvent(channelID string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE, + ChannelData: &protobuf.ChannelData{ + ChannelId: channelID, + }, + } +} + +func (o *Community) ToReorderChannelCommunityEvent(categoryID string, channelID string, position int) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER, + ChannelData: &protobuf.ChannelData{ + CategoryId: categoryID, + ChannelId: channelID, + Position: int32(position), + }, + } +} + +func (o *Community) ToCreateCategoryCommunityEvent(categoryID string, categoryName string, channelsIds []string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE, + CategoryData: &protobuf.CategoryData{ + Name: categoryName, + CategoryId: categoryID, + ChannelsIds: channelsIds, + }, + } +} + +func (o *Community) ToEditCategoryCommunityEvent(categoryID string, categoryName string, channelsIds []string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT, + CategoryData: &protobuf.CategoryData{ + Name: categoryName, + CategoryId: categoryID, + ChannelsIds: channelsIds, + }, + } +} + +func (o *Community) ToDeleteCategoryCommunityEvent(categoryID string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE, + CategoryData: &protobuf.CategoryData{ + CategoryId: categoryID, + }, + } +} + +func (o *Community) ToReorderCategoryCommunityEvent(categoryID string, position int) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER, + CategoryData: &protobuf.CategoryData{ + CategoryId: categoryID, + Position: int32(position), + }, + } +} + +func (o *Community) ToBanCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN, + MemberToAction: pubkey, + } +} + +func (o *Community) ToDeleteAllMemberMessagesEvent(pubkey string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES, + MemberToAction: pubkey, + } +} + +func (o *Community) ToUnbanCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN, + MemberToAction: pubkey, + } +} + +func (o *Community) ToKickCommunityMemberCommunityEvent(pubkey string) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK, + MemberToAction: pubkey, + } +} + +func (o *Community) ToCommunityEditCommunityEvent(description *protobuf.CommunityDescription) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_EDIT, + CommunityConfig: &protobuf.CommunityConfig{ + Identity: description.Identity, + Permissions: description.Permissions, + AdminSettings: description.AdminSettings, + IntroMessage: description.IntroMessage, + OutroMessage: description.OutroMessage, + Tags: description.Tags, + }, + } +} + +func (o *Community) ToCommunityTokenPermissionChangeCommunityEvent(permission *protobuf.CommunityTokenPermission) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE, + TokenPermission: permission, + } +} + +func (o *Community) ToCommunityTokenPermissionDeleteCommunityEvent(permission *protobuf.CommunityTokenPermission) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE, + TokenPermission: permission, + } +} + +func (o *Community) ToCommunityRequestToJoinAcceptCommunityEvent(member string, request *protobuf.CommunityRequestToJoin) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT, + MemberToAction: member, + RequestToJoin: request, + } +} + +func (o *Community) ToCommunityRequestToJoinRejectCommunityEvent(member string, request *protobuf.CommunityRequestToJoin) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT, + MemberToAction: member, + RequestToJoin: request, + } +} + +func (o *Community) ToAddTokenMetadataCommunityEvent(tokenMetadata *protobuf.CommunityTokenMetadata) *CommunityEvent { + return &CommunityEvent{ + CommunityEventClock: o.nextEventClock(), + Type: protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD, + TokenMetadata: tokenMetadata, + } +} + +func (o *Community) nextEventClock() uint64 { + latestEventClock := uint64(0) + if o.config.EventsData != nil { + for _, event := range o.config.EventsData.Events { + if event.CommunityEventClock > latestEventClock { + latestEventClock = event.CommunityEventClock + } + } + } + + clock := o.config.CommunityDescription.Clock + if latestEventClock > clock { + clock = latestEventClock + } + + // lamport timestamp + timestamp := o.timesource.GetCurrentTime() + if clock == 0 || clock < timestamp { + clock = timestamp + } else { + clock = clock + 1 + } + + return clock +} diff --git a/vendor/github.com/status-im/status-go/protocol/communities/community_events_processing.go b/vendor/github.com/status-im/status-go/protocol/communities/community_events_processing.go new file mode 100644 index 00000000..e7b98a3c --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/communities/community_events_processing.go @@ -0,0 +1,354 @@ +package communities + +import ( + "crypto/ecdsa" + "errors" + "sort" + + "github.com/golang/protobuf/proto" + "go.uber.org/zap" + + utils "github.com/status-im/status-go/common" + "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/protobuf" +) + +var ErrInvalidCommunityEventClock = errors.New("clock for admin event message is outdated") + +func (o *Community) processEvents(message *CommunityEventsMessage, lastlyAppliedEvents map[string]uint64) error { + processor := &eventsProcessor{ + community: o, + message: message, + logger: o.config.Logger.Named("eventsProcessor"), + lastlyAppliedEvents: lastlyAppliedEvents, + } + return processor.exec() +} + +type eventsProcessor struct { + community *Community + message *CommunityEventsMessage + logger *zap.Logger + lastlyAppliedEvents map[string]uint64 + + eventsToApply []CommunityEvent +} + +func (e *eventsProcessor) exec() error { + e.community.mutex.Lock() + defer e.community.mutex.Unlock() + + err := e.validateDescription() + if err != nil { + return err + } + + e.filterEvents() + e.mergeEvents() + e.retainNewestEventsPerEventTypeID() + e.sortEvents() + e.applyEvents() + + return nil +} + +func (e *eventsProcessor) validateDescription() error { + description, err := validateAndGetEventsMessageCommunityDescription(e.message.EventsBaseCommunityDescription, e.community.ControlNode()) + if err != nil { + return err + } + + // Control node is the only entity that can apply events from past description. + // In this case, events are compared against the clocks of the most recently applied events. + if e.community.IsControlNode() && description.Clock < e.community.config.CommunityDescription.Clock { + return nil + } + + if description.Clock != e.community.config.CommunityDescription.Clock { + return ErrInvalidCommunityEventClock + } + + return nil +} + +func (e *eventsProcessor) validateEvent(event *CommunityEvent) error { + if e.lastlyAppliedEvents != nil { + if clock, found := e.lastlyAppliedEvents[event.EventTypeID()]; found && clock >= event.CommunityEventClock { + return errors.New("event outdated") + } + } + + signer, err := event.RecoverSigner() + if err != nil { + return err + } + + return e.community.validateEvent(event, signer) +} + +// Filter invalid and outdated events. +func (e *eventsProcessor) filterEvents() { + for _, ev := range e.message.Events { + event := ev + if err := e.validateEvent(&event); err == nil { + e.eventsToApply = append(e.eventsToApply, event) + } else { + e.logger.Warn("invalid community event", zap.String("EventTypeID", event.EventTypeID()), zap.Uint64("clock", event.CommunityEventClock), zap.Error(err)) + } + } +} + +// Merge message's events with community's events. +func (e *eventsProcessor) mergeEvents() { + if e.community.config.EventsData != nil { + for _, ev := range e.community.config.EventsData.Events { + event := ev + if err := e.validateEvent(&event); err == nil { + e.eventsToApply = append(e.eventsToApply, event) + } else { + // NOTE: this should not happen, events should be validated before they are saved in the db. + // It has been identified that an invalid event is saved to the database for some reason. + // The code flow leading to this behavior is not yet known. + // https://github.com/status-im/status-desktop/issues/14106 + e.logger.Error("invalid community event read from db", zap.String("EventTypeID", event.EventTypeID()), zap.Uint64("clock", event.CommunityEventClock), zap.Error(err)) + } + } + } +} + +// Keep only the newest event per PropertyTypeID. +func (e *eventsProcessor) retainNewestEventsPerEventTypeID() { + eventsMap := make(map[string]CommunityEvent) + + for _, event := range e.eventsToApply { + if existingEvent, found := eventsMap[event.EventTypeID()]; !found || event.CommunityEventClock > existingEvent.CommunityEventClock { + eventsMap[event.EventTypeID()] = event + } + } + + e.eventsToApply = []CommunityEvent{} + for _, event := range eventsMap { + e.eventsToApply = append(e.eventsToApply, event) + } +} + +// Sorts events by clock. +func (e *eventsProcessor) sortEvents() { + sort.Slice(e.eventsToApply, func(i, j int) bool { + if e.eventsToApply[i].CommunityEventClock == e.eventsToApply[j].CommunityEventClock { + return e.eventsToApply[i].Type < e.eventsToApply[j].Type + } + return e.eventsToApply[i].CommunityEventClock < e.eventsToApply[j].CommunityEventClock + }) +} + +func (e *eventsProcessor) applyEvents() { + if e.community.config.EventsData == nil { + e.community.config.EventsData = &EventsData{ + EventsBaseCommunityDescription: e.message.EventsBaseCommunityDescription, + } + } + e.community.config.EventsData.Events = e.eventsToApply + + e.community.applyEvents() +} + +func (o *Community) applyEvents() { + if o.config.EventsData == nil { + return + } + + for _, event := range o.config.EventsData.Events { + err := o.applyEvent(event) + if err != nil { + o.config.Logger.Warn("failed to apply event", zap.String("EventTypeID", event.EventTypeID()), zap.Uint64("clock", event.CommunityEventClock), zap.Error(err)) + } + } +} + +func (o *Community) applyEvent(communityEvent CommunityEvent) error { + switch communityEvent.Type { + case protobuf.CommunityEvent_COMMUNITY_EDIT: + o.config.CommunityDescription.Identity = communityEvent.CommunityConfig.Identity + o.config.CommunityDescription.Permissions = communityEvent.CommunityConfig.Permissions + o.config.CommunityDescription.AdminSettings = communityEvent.CommunityConfig.AdminSettings + o.config.CommunityDescription.IntroMessage = communityEvent.CommunityConfig.IntroMessage + o.config.CommunityDescription.OutroMessage = communityEvent.CommunityConfig.OutroMessage + o.config.CommunityDescription.Tags = communityEvent.CommunityConfig.Tags + + case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE: + if o.IsControlNode() { + _, err := o.upsertTokenPermission(communityEvent.TokenPermission) + if err != nil { + return err + } + } + + case protobuf.CommunityEvent_COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE: + if o.IsControlNode() { + _, err := o.deleteTokenPermission(communityEvent.TokenPermission.Id) + if err != nil { + return err + } + } + + case protobuf.CommunityEvent_COMMUNITY_CATEGORY_CREATE: + _, err := o.createCategory(communityEvent.CategoryData.CategoryId, communityEvent.CategoryData.Name, communityEvent.CategoryData.ChannelsIds) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CATEGORY_DELETE: + _, err := o.deleteCategory(communityEvent.CategoryData.CategoryId) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CATEGORY_EDIT: + _, err := o.editCategory(communityEvent.CategoryData.CategoryId, communityEvent.CategoryData.Name, communityEvent.CategoryData.ChannelsIds) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CHANNEL_CREATE: + err := o.createChat(communityEvent.ChannelData.ChannelId, communityEvent.ChannelData.Channel) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CHANNEL_DELETE: + o.deleteChat(communityEvent.ChannelData.ChannelId) + + case protobuf.CommunityEvent_COMMUNITY_CHANNEL_EDIT: + err := o.editChat(communityEvent.ChannelData.ChannelId, communityEvent.ChannelData.Channel) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CHANNEL_REORDER: + _, err := o.reorderChat(communityEvent.ChannelData.CategoryId, communityEvent.ChannelData.ChannelId, int(communityEvent.ChannelData.Position)) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_CATEGORY_REORDER: + _, err := o.reorderCategories(communityEvent.CategoryData.CategoryId, int(communityEvent.CategoryData.Position)) + if err != nil { + return err + } + + case protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK: + if o.IsControlNode() { + pk, err := common.HexToPubkey(communityEvent.MemberToAction) + if err != nil { + return err + } + o.removeMemberFromOrg(pk) + } + case protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN: + if o.IsControlNode() { + pk, err := common.HexToPubkey(communityEvent.MemberToAction) + if err != nil { + return err + } + o.banUserFromCommunity(pk, &protobuf.CommunityBanInfo{DeleteAllMessages: false}) + } + case protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN: + if o.IsControlNode() { + pk, err := common.HexToPubkey(communityEvent.MemberToAction) + if err != nil { + return err + } + o.unbanUserFromCommunity(pk) + } + case protobuf.CommunityEvent_COMMUNITY_TOKEN_ADD: + o.config.CommunityDescription.CommunityTokensMetadata = append(o.config.CommunityDescription.CommunityTokensMetadata, communityEvent.TokenMetadata) + case protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES: + if o.IsControlNode() { + pk, err := common.HexToPubkey(communityEvent.MemberToAction) + if err != nil { + return err + } + + err = o.deleteBannedMemberAllMessages(pk) + if err != nil { + return err + } + } + } + return nil +} + +func (o *Community) addNewCommunityEvent(event *CommunityEvent) error { + err := event.Validate() + if err != nil { + return err + } + + // All events must be built on top of the control node CommunityDescription + // If there were no events before, extract CommunityDescription from CommunityDescriptionProtocolMessage + // and check the signature + if o.config.EventsData == nil || len(o.config.EventsData.EventsBaseCommunityDescription) == 0 { + _, err := validateAndGetEventsMessageCommunityDescription(o.config.CommunityDescriptionProtocolMessage, o.ControlNode()) + if err != nil { + return err + } + + o.config.EventsData = &EventsData{ + EventsBaseCommunityDescription: o.config.CommunityDescriptionProtocolMessage, + Events: []CommunityEvent{}, + } + } + + event.Payload, err = proto.Marshal(event.ToProtobuf()) + if err != nil { + return err + } + + o.config.EventsData.Events = append(o.config.EventsData.Events, *event) + + return nil +} + +func (o *Community) toCommunityEventsMessage() *CommunityEventsMessage { + return &CommunityEventsMessage{ + CommunityID: o.ID(), + EventsBaseCommunityDescription: o.config.EventsData.EventsBaseCommunityDescription, + Events: o.config.EventsData.Events, + } +} + +func validateAndGetEventsMessageCommunityDescription(signedDescription []byte, signerPubkey *ecdsa.PublicKey) (*protobuf.CommunityDescription, error) { + metadata := &protobuf.ApplicationMetadataMessage{} + + err := proto.Unmarshal(signedDescription, metadata) + if err != nil { + return nil, err + } + + if metadata.Type != protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION { + return nil, ErrInvalidMessage + } + + signer, err := utils.RecoverKey(metadata) + if err != nil { + return nil, err + } + + if signer == nil { + return nil, errors.New("CommunityDescription does not contain the control node signature") + } + + if !signer.Equal(signerPubkey) { + return nil, errors.New("CommunityDescription was not signed by an owner") + } + + description := &protobuf.CommunityDescription{} + + err = proto.Unmarshal(metadata.Payload, description) + if err != nil { + return nil, err + } + + return description, nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/communities/errors.go b/vendor/github.com/status-im/status-go/protocol/communities/errors.go index a34a552b..81148353 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/errors.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/errors.go @@ -45,3 +45,4 @@ var ErrRevealedAccountsAbsent = errors.New("revealed accounts is absent") var ErrNoRevealedAccountsSignature = errors.New("revealed accounts without the signature") var ErrNoFreeSpaceForHistoryArchives = errors.New("history archive: No free space for downloading history archives") var ErrPermissionToJoinNotSatisfied = errors.New("permission to join not satisfied") +var ErrBannedMemberNotFound = errors.New("banned member not found") diff --git a/vendor/github.com/status-im/status-go/protocol/communities/manager.go b/vendor/github.com/status-im/status-go/protocol/communities/manager.go index 7111a904..66f77820 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/manager.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/manager.go @@ -57,6 +57,9 @@ var pieceLength = 100 * 1024 const maxArchiveSizeInBytes = 30000000 +var maxNbMembers = 5000 +var maxNbPendingRequestedMembers = 100 + var memberPermissionsCheckInterval = 1 * time.Hour var validateInterval = 2 * time.Minute @@ -64,6 +67,12 @@ var validateInterval = 2 * time.Minute func SetValidateInterval(duration time.Duration) { validateInterval = duration } +func SetMaxNbMembers(maxNb int) { + maxNbMembers = maxNb +} +func SetMaxNbPendingRequestedMembers(maxNb int) { + maxNbPendingRequestedMembers = maxNb +} // errors var ( @@ -73,35 +82,79 @@ var ( ) type Manager struct { - persistence *Persistence - encryptor *encryption.Protocol - ensSubscription chan []*ens.VerificationRecord - subscriptions []chan *Subscription - ensVerifier *ens.Verifier - ownerVerifier OwnerVerifier - identity *ecdsa.PrivateKey - installationID string - accountsManager account.Manager - tokenManager TokenManager - collectiblesManager CollectiblesManager - logger *zap.Logger - stdoutLogger *zap.Logger - transport *transport.Transport - timesource common.TimeSource - quit chan struct{} - torrentConfig *params.TorrentConfig - torrentClient *torrent.Client - walletConfig *params.WalletConfig - communityTokensService communitytokens.ServiceInterface - historyArchiveTasksWaitGroup sync.WaitGroup - historyArchiveTasks sync.Map // stores `chan struct{}` - periodicMembersReevaluationTasks sync.Map // stores `chan struct{}` - torrentTasks map[string]metainfo.Hash - historyArchiveDownloadTasks map[string]*HistoryArchiveDownloadTask - stopped bool - RekeyInterval time.Duration - PermissionChecker PermissionChecker - keyDistributor KeyDistributor + persistence *Persistence + encryptor *encryption.Protocol + ensSubscription chan []*ens.VerificationRecord + subscriptions []chan *Subscription + ensVerifier *ens.Verifier + ownerVerifier OwnerVerifier + identity *ecdsa.PrivateKey + installationID string + accountsManager account.Manager + tokenManager TokenManager + collectiblesManager CollectiblesManager + logger *zap.Logger + stdoutLogger *zap.Logger + transport *transport.Transport + timesource common.TimeSource + quit chan struct{} + torrentConfig *params.TorrentConfig + torrentClient *torrent.Client + walletConfig *params.WalletConfig + communityTokensService communitytokens.ServiceInterface + historyArchiveTasksWaitGroup sync.WaitGroup + historyArchiveTasks sync.Map // stores `chan struct{}` + membersReevaluationTasks sync.Map // stores `membersReevaluationTask` + torrentTasks map[string]metainfo.Hash + historyArchiveDownloadTasks map[string]*HistoryArchiveDownloadTask + stopped bool + RekeyInterval time.Duration + PermissionChecker PermissionChecker + keyDistributor KeyDistributor + communityLock *CommunityLock +} + +type CommunityLock struct { + logger *zap.Logger + locks map[string]*sync.Mutex + mutex sync.Mutex +} + +func NewCommunityLock(logger *zap.Logger) *CommunityLock { + return &CommunityLock{ + logger: logger.Named("CommunityLock"), + locks: make(map[string]*sync.Mutex), + } +} + +func (c *CommunityLock) Lock(communityID types.HexBytes) { + c.mutex.Lock() + communityIDStr := types.EncodeHex(communityID) + lock, ok := c.locks[communityIDStr] + if !ok { + lock = &sync.Mutex{} + c.locks[communityIDStr] = lock + } + c.mutex.Unlock() + + lock.Lock() +} + +func (c *CommunityLock) Unlock(communityID types.HexBytes) { + c.mutex.Lock() + communityIDStr := types.EncodeHex(communityID) + lock, ok := c.locks[communityIDStr] + c.mutex.Unlock() + + if ok { + lock.Unlock() + } else { + c.logger.Warn("trying to unlock a non-existent lock", zap.String("communityID", communityIDStr)) + } +} + +func (c *CommunityLock) Init() { + c.locks = make(map[string]*sync.Mutex) } type HistoryArchiveDownloadTask struct { @@ -124,6 +177,12 @@ func (t *HistoryArchiveDownloadTask) Cancel() { close(t.CancelChan) } +type membersReevaluationTask struct { + lastSuccessTime time.Time + onDemandRequestTime time.Time + mutex sync.Mutex +} + type managerOptions struct { accountsManager account.Manager tokenManager TokenManager @@ -171,6 +230,7 @@ func (m *DefaultTokenManager) GetAllChainIDs() ([]uint64, error) { type CollectiblesManager interface { FetchBalancesByOwnerAndContractAddress(ctx context.Context, chainID walletcommon.ChainID, ownerAddress gethcommon.Address, contractAddresses []gethcommon.Address) (thirdparty.TokenBalancesPerContractAddress, error) + GetCollectibleOwnership(id thirdparty.CollectibleUniqueID) ([]thirdparty.AccountBalance, error) } func (m *DefaultTokenManager) GetBalancesByChain(ctx context.Context, accounts, tokenAddresses []gethcommon.Address, chainIDs []uint64) (BalancesByChain, error) { @@ -269,6 +329,7 @@ func NewManager(identity *ecdsa.PrivateKey, installationID string, db *sql.DB, e torrentTasks: make(map[string]metainfo.Hash), historyArchiveDownloadTasks: make(map[string]*HistoryArchiveDownloadTask), keyDistributor: keyDistributor, + communityLock: NewCommunityLock(logger), } manager.persistence = &Persistence{ @@ -353,7 +414,6 @@ type Subscription struct { DownloadingHistoryArchivesFinishedSignal *signal.DownloadingHistoryArchivesFinishedSignal ImportingHistoryArchiveMessagesSignal *signal.ImportingHistoryArchiveMessagesSignal CommunityEventsMessage *CommunityEventsMessage - CommunityEventsMessageInvalidClock *CommunityEventsMessageInvalidClockSignal AcceptedRequestsToJoin []types.HexBytes RejectedRequestsToJoin []types.HexBytes CommunityPrivilegedMemberSyncMessage *CommunityPrivilegedMemberSyncMessage @@ -367,11 +427,6 @@ type CommunityResponse struct { FailedToDecrypt []*CommunityPrivateDataFailedToDecrypt `json:"-"` } -type CommunityEventsMessageInvalidClockSignal struct { - Community *Community - CommunityEventsMessage *CommunityEventsMessage -} - func (m *Manager) Subscribe() chan *Subscription { subscription := make(chan *Subscription, 100) m.subscriptions = append(m.subscriptions, subscription) @@ -380,6 +435,7 @@ func (m *Manager) Subscribe() chan *Subscription { func (m *Manager) Start() error { m.stopped = false + m.communityLock.Init() if m.ensVerifier != nil { m.runENSVerificationLoop() } @@ -685,7 +741,7 @@ func (m *Manager) GetStoredDescriptionForCommunities(communityIDs []string) (*Kn } community, err := m.GetByID(types.HexBytes(communityIDBytes)) - if err != nil { + if err != nil && err != ErrOrgNotFound { return nil, err } @@ -710,6 +766,9 @@ func (m *Manager) Spectated() ([]*Community, error) { } func (m *Manager) CommunityUpdateLastOpenedAt(communityID types.HexBytes, timestamp int64) (*Community, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, err @@ -804,6 +863,16 @@ func (m *Manager) CreateCommunity(request *requests.CreateCommunity, publish boo return nil, err } + // Save grant for own community + grant, err := community.BuildGrant(&m.identity.PublicKey, "") + if err != nil { + return nil, err + } + err = m.persistence.SaveCommunityGrant(community.IDString(), grant, description.Clock) + if err != nil { + return nil, err + } + // Mark this device as the control node syncControlNode := &protobuf.SyncCommunityControlNode{ Clock: 1, @@ -822,6 +891,9 @@ func (m *Manager) CreateCommunity(request *requests.CreateCommunity, publish boo } func (m *Manager) CreateCommunityTokenPermission(request *requests.CreateCommunityTokenPermission) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -855,6 +927,9 @@ func (m *Manager) CreateCommunityTokenPermission(request *requests.CreateCommuni } func (m *Manager) EditCommunityTokenPermission(request *requests.EditCommunityTokenPermission) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -876,6 +951,9 @@ func (m *Manager) EditCommunityTokenPermission(request *requests.EditCommunityTo } func (m *Manager) ReevaluateMembers(community *Community) (map[protobuf.CommunityMember_Roles][]*ecdsa.PublicKey, error) { + m.communityLock.Lock(community.ID()) + defer m.communityLock.Unlock(community.ID()) + becomeMemberPermissions := community.TokenPermissionsByType(protobuf.CommunityTokenPermission_BECOME_MEMBER) becomeAdminPermissions := community.TokenPermissionsByType(protobuf.CommunityTokenPermission_BECOME_ADMIN) becomeTokenMasterPermissions := community.TokenPermissionsByType(protobuf.CommunityTokenPermission_BECOME_TOKEN_MASTER) @@ -944,7 +1022,7 @@ func (m *Manager) ReevaluateMembers(community *Community) (map[protobuf.Communit if isNewRoleAdmin { if !isCurrentRoleAdmin { newPrivilegedRoles[protobuf.CommunityMember_ROLE_ADMIN] = - append(newPrivilegedRoles[protobuf.CommunityMember_ROLE_TOKEN_MASTER], memberPubKey) + append(newPrivilegedRoles[protobuf.CommunityMember_ROLE_ADMIN], memberPubKey) } // Skip further validation if user has Admin permissions continue @@ -990,11 +1068,15 @@ func (m *Manager) ReevaluateMembers(community *Community) (map[protobuf.Communit isMemberAlreadyInChannel := community.IsMemberInChat(memberPubKey, channelID) if response.ViewOnlyPermissions.Satisfied || response.ViewAndPostPermissions.Satisfied { - if !isMemberAlreadyInChannel { - _, err := community.AddMemberToChat(channelID, memberPubKey, []protobuf.CommunityMember_Roles{}) - if err != nil { - return nil, err - } + channelRole := protobuf.CommunityMember_CHANNEL_ROLE_VIEWER + if response.ViewAndPostPermissions.Satisfied { + channelRole = protobuf.CommunityMember_CHANNEL_ROLE_POSTER + } + + // Add the member back to the chat member list in case the role changed (it replaces the previous values) + _, err := community.AddMemberToChat(channelID, memberPubKey, []protobuf.CommunityMember_Roles{}, channelRole) + if err != nil { + return nil, err } } else if isMemberAlreadyInChannel { _, err := community.RemoveUserFromChat(memberPubKey, channelID) @@ -1009,38 +1091,105 @@ func (m *Manager) ReevaluateMembers(community *Community) (map[protobuf.Communit } func (m *Manager) ReevaluateMembersPeriodically(communityID types.HexBytes) { - if _, exists := m.periodicMembersReevaluationTasks.Load(communityID.String()); exists { + logger := m.logger.Named("reevaluate members loop").With(zap.String("communityID", communityID.String())) + + if _, exists := m.membersReevaluationTasks.Load(communityID.String()); exists { return } - cancel := make(chan struct{}) - m.periodicMembersReevaluationTasks.Store(communityID.String(), cancel) + m.membersReevaluationTasks.Store(communityID.String(), &membersReevaluationTask{}) + defer m.membersReevaluationTasks.Delete(communityID.String()) - ticker := time.NewTicker(memberPermissionsCheckInterval) + type criticalError struct { + error + } + + reevaluateMembers := func() (err error) { + t, exists := m.membersReevaluationTasks.Load(communityID.String()) + if !exists { + return criticalError{ + error: errors.New("missing task"), + } + } + task, ok := t.(*membersReevaluationTask) + if !ok { + return criticalError{ + error: errors.New("invalid task type"), + } + } + task.mutex.Lock() + defer task.mutex.Unlock() + + // Ensure reevaluation is performed not more often than once per minute. + if task.lastSuccessTime.After(time.Now().Add(-1 * time.Minute)) { + return nil + } + + if task.lastSuccessTime.Before(time.Now().Add(-memberPermissionsCheckInterval)) || + task.lastSuccessTime.Before(task.onDemandRequestTime) { + community, err := m.GetByID(communityID) + if err != nil { + if err == ErrOrgNotFound { + return criticalError{ + error: err, + } + } + return err + } + + err = m.ReevaluateCommunityMembersPermissions(community) + if err != nil { + return err + } + task.lastSuccessTime = time.Now() + } + return nil + } + + ticker := time.NewTicker(10 * time.Second) defer ticker.Stop() + logger.Debug("loop started") + defer logger.Debug("loop stopped") + for { select { case <-ticker.C: - community, err := m.GetByID(communityID) + err := reevaluateMembers() if err != nil { - m.logger.Debug("can't validate member permissions, community was not found", zap.Error(err)) - m.periodicMembersReevaluationTasks.Delete(communityID.String()) + logger.Error("reevaluation failed", zap.Error(err)) + if _, isCritical := err.(*criticalError); isCritical { + return + } } - if err = m.ReevaluateCommunityMembersPermissions(community); err != nil { - m.logger.Debug("failed to check member permissions", zap.Error(err)) - continue - } - - case <-cancel: - m.periodicMembersReevaluationTasks.Delete(communityID.String()) + case <-m.quit: return } } } +func (m *Manager) ScheduleMembersReevaluation(communityID types.HexBytes) error { + t, exists := m.membersReevaluationTasks.Load(communityID.String()) + if !exists { + return errors.New("reevaluation task doesn't exist") + } + + task, ok := t.(*membersReevaluationTask) + if !ok { + return errors.New("invalid task type") + } + task.mutex.Lock() + defer task.mutex.Unlock() + task.onDemandRequestTime = time.Now() + + return nil +} + func (m *Manager) DeleteCommunityTokenPermission(request *requests.DeleteCommunityTokenPermission) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1079,6 +1228,9 @@ func (m *Manager) ReevaluateCommunityMembersPermissions(community *Community) er } func (m *Manager) DeleteCommunity(id types.HexBytes) error { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + err := m.persistence.DeleteCommunity(id) if err != nil { return err @@ -1086,7 +1238,7 @@ func (m *Manager) DeleteCommunity(id types.HexBytes) error { return m.persistence.DeleteCommunitySettings(id) } -func (m *Manager) UpdateShard(community *Community, shard *shard.Shard, clock uint64) error { +func (m *Manager) updateShard(community *Community, shard *shard.Shard, clock uint64) error { community.config.Shard = shard if shard == nil { return m.persistence.DeleteCommunityShard(community.ID()) @@ -1095,8 +1247,18 @@ func (m *Manager) UpdateShard(community *Community, shard *shard.Shard, clock ui return m.persistence.SaveCommunityShard(community.ID(), shard, clock) } +func (m *Manager) UpdateShard(community *Community, shard *shard.Shard, clock uint64) error { + m.communityLock.Lock(community.ID()) + defer m.communityLock.Unlock(community.ID()) + + return m.updateShard(community, shard, clock) +} + // SetShard assigns a shard to a community func (m *Manager) SetShard(communityID types.HexBytes, shard *shard.Shard) (*Community, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, err @@ -1104,7 +1266,7 @@ func (m *Manager) SetShard(communityID types.HexBytes, shard *shard.Shard) (*Com community.increaseClock() - err = m.UpdateShard(community, shard, community.Clock()) + err = m.updateShard(community, shard, community.Clock()) if err != nil { return nil, err } @@ -1128,6 +1290,9 @@ func (m *Manager) UpdatePubsubTopicPrivateKey(topic string, privKey *ecdsa.Priva // EditCommunity takes a description, updates the community with the description, // saves it and returns it func (m *Manager) EditCommunity(request *requests.EditCommunity) (*Community, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, err @@ -1135,7 +1300,7 @@ func (m *Manager) EditCommunity(request *requests.EditCommunity) (*Community, er newDescription, err := request.ToCommunityDescription() if err != nil { - return nil, fmt.Errorf("Can't create community description: %v", err) + return nil, fmt.Errorf("can't create community description: %v", err) } // If permissions weren't explicitly set on original request, use existing ones @@ -1190,6 +1355,9 @@ func (m *Manager) EditCommunity(request *requests.EditCommunity) (*Community, er } func (m *Manager) RemovePrivateKey(id types.HexBytes) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return community, err @@ -1223,6 +1391,9 @@ func (m *Manager) ExportCommunity(id types.HexBytes) (*ecdsa.PrivateKey, error) func (m *Manager) ImportCommunity(key *ecdsa.PrivateKey, clock uint64) (*Community, error) { communityID := crypto.CompressPubkey(&key.PublicKey) + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil && err != ErrOrgNotFound { return nil, err @@ -1279,6 +1450,16 @@ func (m *Manager) ImportCommunity(key *ecdsa.PrivateKey, clock uint64) (*Communi return nil, err } + // Save grant for own community + grant, err := community.BuildGrant(&m.identity.PublicKey, "") + if err != nil { + return nil, err + } + err = m.persistence.SaveCommunityGrant(community.IDString(), grant, community.Description().Clock) + if err != nil { + return nil, err + } + // Mark this device as the control node syncControlNode := &protobuf.SyncCommunityControlNode{ Clock: clock, @@ -1293,6 +1474,9 @@ func (m *Manager) ImportCommunity(key *ecdsa.PrivateKey, clock uint64) (*Communi } func (m *Manager) CreateChat(communityID types.HexBytes, chat *protobuf.CommunityChat, publish bool, thirdPartyID string) (*CommunityChanges, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, err @@ -1316,6 +1500,9 @@ func (m *Manager) CreateChat(communityID types.HexBytes, chat *protobuf.Communit } func (m *Manager) EditChat(communityID types.HexBytes, chatID string, chat *protobuf.CommunityChat) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, nil, err @@ -1326,6 +1513,15 @@ func (m *Manager) EditChat(communityID types.HexBytes, chatID string, chat *prot chatID = strings.TrimPrefix(chatID, communityID.String()) } + oldChat, err := community.GetChat(chatID) + if err != nil { + return nil, nil, err + } + + // We can't edit permissions and members with an Edit, so we set to what we had, otherwise they will be lost + chat.Permissions = oldChat.Permissions + chat.Members = oldChat.Members + changes, err := community.EditChat(chatID, chat) if err != nil { return nil, nil, err @@ -1340,6 +1536,9 @@ func (m *Manager) EditChat(communityID types.HexBytes, chatID string, chat *prot } func (m *Manager) DeleteChat(communityID types.HexBytes, chatID string) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, nil, err @@ -1363,6 +1562,9 @@ func (m *Manager) DeleteChat(communityID types.HexBytes, chatID string) (*Commun } func (m *Manager) CreateCategory(request *requests.CreateCommunityCategory, publish bool) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1394,6 +1596,9 @@ func (m *Manager) CreateCategory(request *requests.CreateCommunityCategory, publ } func (m *Manager) EditCategory(request *requests.EditCommunityCategory) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1420,6 +1625,9 @@ func (m *Manager) EditCategory(request *requests.EditCommunityCategory) (*Commun } func (m *Manager) EditChatFirstMessageTimestamp(communityID types.HexBytes, chatID string, timestamp uint32) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, nil, err @@ -1447,6 +1655,9 @@ func (m *Manager) EditChatFirstMessageTimestamp(communityID types.HexBytes, chat } func (m *Manager) ReorderCategories(request *requests.ReorderCommunityCategories) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1466,6 +1677,9 @@ func (m *Manager) ReorderCategories(request *requests.ReorderCommunityCategories } func (m *Manager) ReorderChat(request *requests.ReorderCommunityChat) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1490,6 +1704,9 @@ func (m *Manager) ReorderChat(request *requests.ReorderCommunityChat) (*Communit } func (m *Manager) DeleteCategory(request *requests.DeleteCommunityCategory) (*Community, *CommunityChanges, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return nil, nil, err @@ -1568,11 +1785,12 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des id = crypto.CompressPubkey(signer) } - failedToDecrypt, err := m.preprocessDescription(id, description) + failedToDecrypt, processedDescription, err := m.preprocessDescription(id, description) if err != nil { return nil, err } - + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) community, err := m.GetByID(id) if err != nil && err != ErrOrgNotFound { return nil, err @@ -1580,12 +1798,12 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des // We don't process failed to decrypt if the whole metadata is encrypted // and we joined the community already - if community != nil && community.Joined() && len(failedToDecrypt) != 0 && description != nil && len(description.Members) == 0 { + if community != nil && community.Joined() && len(failedToDecrypt) != 0 && processedDescription != nil && len(processedDescription.Members) == 0 { return &CommunityResponse{FailedToDecrypt: failedToDecrypt}, nil } // We should queue only if the community has a token owner, and the owner has been verified - hasTokenOwnership := HasTokenOwnership(description) + hasTokenOwnership := HasTokenOwnership(processedDescription) shouldQueue := hasTokenOwnership && verifiedOwner == nil if community == nil { @@ -1594,7 +1812,7 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des return nil, err } config := Config{ - CommunityDescription: description, + CommunityDescription: processedDescription, Logger: m.logger, CommunityDescriptionProtocolMessage: payload, MemberIdentity: &m.identity.PublicKey, @@ -1615,15 +1833,15 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des // A new community, we need to check if we need to validate async. // That would be the case if it has a contract. We queue everything and process separately. if shouldQueue { - return nil, m.Queue(signer, community, description.Clock, payload) + return nil, m.Queue(signer, community, processedDescription.Clock, payload) } } else { // only queue if already known control node is different than the signer // and if the clock is greater shouldQueue = shouldQueue && !common.IsPubKeyEqual(community.ControlNode(), signer) && - community.config.CommunityDescription.Clock < description.Clock + community.config.CommunityDescription.Clock < processedDescription.Clock if shouldQueue { - return nil, m.Queue(signer, community, description.Clock, payload) + return nil, m.Queue(signer, community, processedDescription.Clock, payload) } } @@ -1649,7 +1867,7 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des return nil, ErrNotAuthorized } - r, err := m.handleCommunityDescriptionMessageCommon(community, description, payload, verifiedOwner) + r, err := m.handleCommunityDescriptionMessageCommon(community, processedDescription, payload, verifiedOwner) if err != nil { return nil, err } @@ -1657,20 +1875,34 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des return r, nil } -func (m *Manager) preprocessDescription(id types.HexBytes, description *protobuf.CommunityDescription) ([]*CommunityPrivateDataFailedToDecrypt, error) { +func (m *Manager) NewHashRatchetKeys(keys []*encryption.HashRatchetInfo) error { + return m.persistence.InvalidateDecryptedCommunityCacheForKeys(keys) +} + +func (m *Manager) preprocessDescription(id types.HexBytes, description *protobuf.CommunityDescription) ([]*CommunityPrivateDataFailedToDecrypt, *protobuf.CommunityDescription, error) { + decryptedCommunity, err := m.persistence.GetDecryptedCommunityDescription(id, description.Clock) + if err != nil { + return nil, nil, err + } + if decryptedCommunity != nil { + return nil, decryptedCommunity, nil + } + response, err := decryptDescription(id, m, description, m.logger) if err != nil { - return response, err + return response, description, err } + upgradeTokenPermissions(description) + // Workaround for https://github.com/status-im/status-desktop/issues/12188 hydrateChannelsMembers(types.EncodeHex(id), description) - return response, nil + return response, description, m.persistence.SaveDecryptedCommunityDescription(id, response, description) } func (m *Manager) handleCommunityDescriptionMessageCommon(community *Community, description *protobuf.CommunityDescription, payload []byte, newControlNode *ecdsa.PublicKey) (*CommunityResponse, error) { - + prevClock := community.config.CommunityDescription.Clock changes, err := community.UpdateCommunityDescription(description, payload, newControlNode) if err != nil { return nil, err @@ -1735,11 +1967,13 @@ func (m *Manager) handleCommunityDescriptionMessageCommon(community *Community, } } - err = m.persistence.DeleteCommunityEvents(community.ID()) - if err != nil { - return nil, err + if description.Clock > prevClock { + err = m.persistence.DeleteCommunityEvents(community.ID()) + if err != nil { + return nil, err + } + community.config.EventsData = nil } - community.config.EventsData = nil // Set Joined if we are part of the member list if !community.Joined() && community.hasMember(&m.identity.PublicKey) { @@ -1815,6 +2049,9 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message return nil, err } + m.communityLock.Lock(eventsMessage.CommunityID) + defer m.communityLock.Unlock(eventsMessage.CommunityID) + community, err := m.GetByID(eventsMessage.CommunityID) if err != nil { return nil, err @@ -1826,19 +2063,15 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message originCommunity := community.CreateDeepCopy() - eventsMessage.Events = m.validateAndFilterEvents(community, eventsMessage.Events) - - err = community.UpdateCommunityByEvents(eventsMessage) - if err != nil { - if err == ErrInvalidCommunityEventClock && community.IsControlNode() { - // send updated CommunityDescription to the event sender on top of which he must apply his changes - eventsMessage.EventsBaseCommunityDescription = community.config.CommunityDescriptionProtocolMessage - m.publish(&Subscription{ - CommunityEventsMessageInvalidClock: &CommunityEventsMessageInvalidClockSignal{ - Community: community, - CommunityEventsMessage: eventsMessage, - }}) + var lastlyAppliedEvents map[string]uint64 + if community.IsControlNode() { + lastlyAppliedEvents, err = m.persistence.GetAppliedCommunityEvents(community.ID()) + if err != nil { + return nil, err } + } + err = community.processEvents(eventsMessage, lastlyAppliedEvents) + if err != nil { return nil, err } @@ -1853,6 +2086,12 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message // Control node applies events and publish updated CommunityDescription if community.IsControlNode() { + appliedEvents := map[string]uint64{} + if community.config.EventsData != nil { + for _, event := range community.config.EventsData.Events { + appliedEvents[event.EventTypeID()] = event.CommunityEventClock + } + } community.config.EventsData = nil // clear events, they are already applied community.increaseClock() @@ -1869,6 +2108,11 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message return nil, err } + err = m.persistence.UpsertAppliedCommunityEvents(community.ID(), appliedEvents) + if err != nil { + return nil, err + } + m.publish(&Subscription{Community: community}) } else { err = m.persistence.SaveCommunity(community) @@ -1939,7 +2183,7 @@ func (m *Manager) HandleCommunityEventsMessageRejected(signer *ecdsa.PublicKey, EventsBaseCommunityDescription: community.config.CommunityDescriptionProtocolMessage, Events: myRejectedEvents, } - reapplyEventsMessage := community.ToCommunityEventsMessage() + reapplyEventsMessage := community.toCommunityEventsMessage() return reapplyEventsMessage, nil } @@ -1954,10 +2198,20 @@ func (m *Manager) handleAdditionalAdminChanges(community *Community) (*Community return &communityResponse, nil } - for i := range community.config.EventsData.Events { + if community.config.EventsData == nil { + return &communityResponse, nil + } + + handledMembers := map[string]struct{}{} + + for i := len(community.config.EventsData.Events) - 1; i >= 0; i-- { communityEvent := &community.config.EventsData.Events[i] + if _, handled := handledMembers[communityEvent.MemberToAction]; handled { + continue + } switch communityEvent.Type { case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT: + handledMembers[communityEvent.MemberToAction] = struct{}{} requestsToJoin, err := m.handleCommunityEventRequestAccepted(community, communityEvent) if err != nil { return nil, err @@ -1967,6 +2221,7 @@ func (m *Manager) handleAdditionalAdminChanges(community *Community) (*Community } case protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_REJECT: + handledMembers[communityEvent.MemberToAction] = struct{}{} requestsToJoin, err := m.handleCommunityEventRequestRejected(community, communityEvent) if err != nil { return nil, err @@ -2018,43 +2273,45 @@ func (m *Manager) handleCommunityEventRequestAccepted(community *Community, comm requestsToJoin := make([]*RequestToJoin, 0) - for signer, request := range communityEvent.AcceptedRequestsToJoin { - requestToJoin := &RequestToJoin{ - PublicKey: signer, - Clock: request.Clock, - ENSName: request.EnsName, - CommunityID: request.CommunityId, - State: RequestToJoinStateAcceptedPending, - } - requestToJoin.CalculateID() + signer := communityEvent.MemberToAction + request := communityEvent.RequestToJoin - existingRequestToJoin, err := m.persistence.GetRequestToJoin(requestToJoin.ID) - if err != nil && err != sql.ErrNoRows { - return nil, err - } - - if existingRequestToJoin != nil { - alreadyProcessedByControlNode := existingRequestToJoin.State == RequestToJoinStateAccepted || existingRequestToJoin.State == RequestToJoinStateDeclined - if alreadyProcessedByControlNode || existingRequestToJoin.State == RequestToJoinStateCanceled { - continue - } - } - - requestUpdated, err := m.saveOrUpdateRequestToJoin(community.ID(), requestToJoin) - if err != nil { - return nil, err - } - - // If request to join exists in control node, add request to acceptedRequestsToJoin. - // Otherwise keep the request as RequestToJoinStateAcceptedPending, - // as privileged users don't have revealed addresses. This can happen if control node received - // community event message before user request to join. - if community.IsControlNode() && requestUpdated { - acceptedRequestsToJoin = append(acceptedRequestsToJoin, requestToJoin.ID) - } - - requestsToJoin = append(requestsToJoin, requestToJoin) + requestToJoin := &RequestToJoin{ + PublicKey: signer, + Clock: request.Clock, + ENSName: request.EnsName, + CommunityID: request.CommunityId, + State: RequestToJoinStateAcceptedPending, } + requestToJoin.CalculateID() + + existingRequestToJoin, err := m.persistence.GetRequestToJoin(requestToJoin.ID) + if err != nil && err != sql.ErrNoRows { + return nil, err + } + + if existingRequestToJoin != nil { + alreadyProcessedByControlNode := existingRequestToJoin.State == RequestToJoinStateAccepted + if alreadyProcessedByControlNode || existingRequestToJoin.State == RequestToJoinStateCanceled { + return requestsToJoin, nil + } + } + + requestUpdated, err := m.saveOrUpdateRequestToJoin(community.ID(), requestToJoin) + if err != nil { + return nil, err + } + + // If request to join exists in control node, add request to acceptedRequestsToJoin. + // Otherwise keep the request as RequestToJoinStateAcceptedPending, + // as privileged users don't have revealed addresses. This can happen if control node received + // community event message before user request to join. + if community.IsControlNode() && requestUpdated { + acceptedRequestsToJoin = append(acceptedRequestsToJoin, requestToJoin.ID) + } + + requestsToJoin = append(requestsToJoin, requestToJoin) + if community.IsControlNode() { m.publish(&Subscription{AcceptedRequestsToJoin: acceptedRequestsToJoin}) } @@ -2066,42 +2323,43 @@ func (m *Manager) handleCommunityEventRequestRejected(community *Community, comm requestsToJoin := make([]*RequestToJoin, 0) - for signer, request := range communityEvent.RejectedRequestsToJoin { - requestToJoin := &RequestToJoin{ - PublicKey: signer, - Clock: request.Clock, - ENSName: request.EnsName, - CommunityID: request.CommunityId, - State: RequestToJoinStateDeclinedPending, - } - requestToJoin.CalculateID() + signer := communityEvent.MemberToAction + request := communityEvent.RequestToJoin - existingRequestToJoin, err := m.persistence.GetRequestToJoin(requestToJoin.ID) - if err != nil && err != sql.ErrNoRows { - return nil, err - } - - if existingRequestToJoin != nil { - alreadyProcessedByControlNode := existingRequestToJoin.State == RequestToJoinStateAccepted || existingRequestToJoin.State == RequestToJoinStateDeclined - if alreadyProcessedByControlNode || existingRequestToJoin.State == RequestToJoinStateCanceled { - continue - } - } - - requestUpdated, err := m.saveOrUpdateRequestToJoin(community.ID(), requestToJoin) - if err != nil { - return nil, err - } - // If request to join exists in control node, add request to rejectedRequestsToJoin. - // Otherwise keep the request as RequestToJoinStateDeclinedPending, - // as privileged users don't have revealed addresses. This can happen if control node received - // community event message before user request to join. - if community.IsControlNode() && requestUpdated { - rejectedRequestsToJoin = append(rejectedRequestsToJoin, requestToJoin.ID) - } - - requestsToJoin = append(requestsToJoin, requestToJoin) + requestToJoin := &RequestToJoin{ + PublicKey: signer, + Clock: request.Clock, + ENSName: request.EnsName, + CommunityID: request.CommunityId, + State: RequestToJoinStateDeclinedPending, } + requestToJoin.CalculateID() + + existingRequestToJoin, err := m.persistence.GetRequestToJoin(requestToJoin.ID) + if err != nil && err != sql.ErrNoRows { + return nil, err + } + + if existingRequestToJoin != nil { + alreadyProcessedByControlNode := existingRequestToJoin.State == RequestToJoinStateDeclined + if alreadyProcessedByControlNode || existingRequestToJoin.State == RequestToJoinStateCanceled { + return requestsToJoin, nil + } + } + + requestUpdated, err := m.saveOrUpdateRequestToJoin(community.ID(), requestToJoin) + if err != nil { + return nil, err + } + // If request to join exists in control node, add request to rejectedRequestsToJoin. + // Otherwise keep the request as RequestToJoinStateDeclinedPending, + // as privileged users don't have revealed addresses. This can happen if control node received + // community event message before user request to join. + if community.IsControlNode() && requestUpdated { + rejectedRequestsToJoin = append(rejectedRequestsToJoin, requestToJoin.ID) + } + + requestsToJoin = append(requestsToJoin, requestToJoin) if community.IsControlNode() { m.publish(&Subscription{RejectedRequestsToJoin: rejectedRequestsToJoin}) @@ -2127,6 +2385,9 @@ func (m *Manager) markRequestToJoinAsAcceptedPending(pk *ecdsa.PublicKey, commun } func (m *Manager) DeletePendingRequestToJoin(request *RequestToJoin) error { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + community, err := m.GetByID(request.CommunityID) if err != nil { return err @@ -2151,10 +2412,16 @@ func (m *Manager) UpdateClockInRequestToJoin(id types.HexBytes, clock uint64) er } func (m *Manager) SetMuted(id types.HexBytes, muted bool) error { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + return m.persistence.SetMuted(id, muted) } func (m *Manager) MuteCommunityTill(communityID []byte, muteTill time.Time) error { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + return m.persistence.MuteCommunityTill(communityID, muteTill) } func (m *Manager) CancelRequestToJoin(request *requests.CancelRequestToJoinCommunity) (*RequestToJoin, *Community, error) { @@ -2216,8 +2483,9 @@ func (m *Manager) accountsSatisfyPermissionsToJoin(community *Community, account return true, protobuf.CommunityMember_ROLE_NONE, nil } -func (m *Manager) accountsSatisfyPermissionsToJoinChannels(community *Community, accounts []*protobuf.RevealedAccount) (map[string]*protobuf.CommunityChat, error) { - result := make(map[string]*protobuf.CommunityChat) +func (m *Manager) accountsSatisfyPermissionsToJoinChannels(community *Community, accounts []*protobuf.RevealedAccount) (map[string]*protobuf.CommunityChat, map[string]*protobuf.CommunityChat, error) { + viewChats := make(map[string]*protobuf.CommunityChat) + viewAndPostChats := make(map[string]*protobuf.CommunityChat) accountsAndChainIDs := revealedAccountsToAccountsAndChainIDsCombination(accounts) @@ -2226,23 +2494,37 @@ func (m *Manager) accountsSatisfyPermissionsToJoinChannels(community *Community, channelViewAndPostPermissions := community.ChannelTokenPermissionsByType(community.IDString()+channelID, protobuf.CommunityTokenPermission_CAN_VIEW_AND_POST_CHANNEL) channelPermissions := append(channelViewOnlyPermissions, channelViewAndPostPermissions...) - if len(channelPermissions) > 0 { - permissionResponse, err := m.PermissionChecker.CheckPermissions(channelPermissions, accountsAndChainIDs, true) - if err != nil { - return nil, err + if len(channelPermissions) == 0 { + viewAndPostChats[channelID] = channel + continue + } + + permissionResponse, err := m.PermissionChecker.CheckPermissions(channelPermissions, accountsAndChainIDs, true) + if err != nil { + return nil, nil, err + } + + if permissionResponse.Satisfied { + highestRole := calculateRolesAndHighestRole(permissionResponse.Permissions).HighestRole + if highestRole == nil { + return nil, nil, errors.New("failed to calculate highest role") } - if permissionResponse.Satisfied { - result[channelID] = channel + switch highestRole.Role { + case protobuf.CommunityTokenPermission_CAN_VIEW_CHANNEL: + viewChats[channelID] = channel + case protobuf.CommunityTokenPermission_CAN_VIEW_AND_POST_CHANNEL: + viewAndPostChats[channelID] = channel } - } else { - result[channelID] = channel } } - return result, nil + return viewChats, viewAndPostChats, nil } func (m *Manager) AcceptRequestToJoin(dbRequest *RequestToJoin) (*Community, error) { + m.communityLock.Lock(dbRequest.CommunityID) + defer m.communityLock.Unlock(dbRequest.CommunityID) + pk, err := common.HexToPubkey(dbRequest.PublicKey) if err != nil { return nil, err @@ -2278,13 +2560,20 @@ func (m *Manager) AcceptRequestToJoin(dbRequest *RequestToJoin) (*Community, err return nil, err } - channels, err := m.accountsSatisfyPermissionsToJoinChannels(community, revealedAccounts) + viewChannels, postChannels, err := m.accountsSatisfyPermissionsToJoinChannels(community, revealedAccounts) if err != nil { return nil, err } - for channelID := range channels { - _, err = community.AddMemberToChat(channelID, pk, memberRoles) + for channelID := range viewChannels { + _, err = community.AddMemberToChat(channelID, pk, memberRoles, protobuf.CommunityMember_CHANNEL_ROLE_VIEWER) + if err != nil { + return nil, err + } + } + + for channelID := range postChannels { + _, err = community.AddMemberToChat(channelID, pk, memberRoles, protobuf.CommunityMember_CHANNEL_ROLE_POSTER) if err != nil { return nil, err } @@ -2312,16 +2601,7 @@ func (m *Manager) AcceptRequestToJoin(dbRequest *RequestToJoin) (*Community, err } } } else if community.hasPermissionToSendCommunityEvent(protobuf.CommunityEvent_COMMUNITY_REQUEST_TO_JOIN_ACCEPT) { - // admins do not perform permission checks, they merely mark the - // request as accepted (pending) and forward their decision to the control node - acceptedRequestsToJoin := make(map[string]*protobuf.CommunityRequestToJoin) - acceptedRequestsToJoin[dbRequest.PublicKey] = dbRequest.ToCommunityRequestToJoinProtobuf() - - adminChanges := &CommunityEventChanges{ - AcceptedRequestsToJoin: acceptedRequestsToJoin, - } - - err := community.addNewCommunityEvent(community.ToCommunityRequestToJoinAcceptCommunityEvent(adminChanges)) + err := community.addNewCommunityEvent(community.ToCommunityRequestToJoinAcceptCommunityEvent(dbRequest.PublicKey, dbRequest.ToCommunityRequestToJoinProtobuf())) if err != nil { return nil, err } @@ -2347,6 +2627,9 @@ func (m *Manager) GetRequestToJoin(ID types.HexBytes) (*RequestToJoin, error) { } func (m *Manager) DeclineRequestToJoin(dbRequest *RequestToJoin) (*Community, error) { + m.communityLock.Lock(dbRequest.CommunityID) + defer m.communityLock.Unlock(dbRequest.CommunityID) + community, err := m.GetByID(dbRequest.CommunityID) if err != nil { return nil, err @@ -2390,6 +2673,9 @@ func (m *Manager) shouldUserRetainDeclined(signer *ecdsa.PublicKey, community *C } func (m *Manager) HandleCommunityCancelRequestToJoin(signer *ecdsa.PublicKey, request *protobuf.CommunityCancelRequestToJoin) (*RequestToJoin, error) { + m.communityLock.Lock(request.CommunityId) + defer m.communityLock.Unlock(request.CommunityId) + community, err := m.GetByID(request.CommunityId) if err != nil { return nil, err @@ -2448,6 +2734,14 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, receiver return nil, nil, err } + nbPendingRequestsToJoin, err := m.persistence.GetNumberOfPendingRequestsToJoin(community.ID()) + if err != nil { + return nil, nil, err + } + if nbPendingRequestsToJoin >= maxNbPendingRequestedMembers { + return nil, nil, errors.New("max number of requests to join reached") + } + requestToJoin := &RequestToJoin{ PublicKey: common.PubkeyToHex(signer), Clock: request.Clock, @@ -2539,6 +2833,15 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, receiver } } + // Check if we reached the limit, if we did, change the community setting to be On Request + if community.AutoAccept() && community.MembersCount() >= maxNbMembers { + community.EditPermissionAccess(protobuf.CommunityPermissions_MANUAL_ACCEPT) + err = m.saveAndPublish(community) + if err != nil { + return nil, nil, err + } + } + // If user is already a member, then accept request automatically // It may happen when member removes itself from community and then tries to rejoin // More specifically, CommunityRequestToLeave may be delivered later than CommunityRequestToJoin, or not delivered at all @@ -2555,6 +2858,9 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, receiver } func (m *Manager) HandleCommunityEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditSharedAddresses) error { + m.communityLock.Lock(request.CommunityId) + defer m.communityLock.Unlock(request.CommunityId) + community, err := m.GetByID(request.CommunityId) if err != nil { return err @@ -2673,6 +2979,9 @@ func (m *Manager) GetOwnedERC721Tokens(walletAddresses []gethcommon.Address, tok } func (m *Manager) CheckChannelPermissions(communityID types.HexBytes, chatID string, addresses []gethcommon.Address) (*CheckChannelPermissionsResponse, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, err @@ -2811,6 +3120,9 @@ type CheckAllChannelsPermissionsResponse struct { } func (m *Manager) HandleCommunityRequestToJoinResponse(signer *ecdsa.PublicKey, request *protobuf.CommunityRequestToJoinResponse) (*RequestToJoin, error) { + m.communityLock.Lock(request.CommunityId) + defer m.communityLock.Unlock(request.CommunityId) + pkString := common.PubkeyToHex(&m.identity.PublicKey) community, err := m.GetByID(request.CommunityId) @@ -2843,12 +3155,12 @@ func (m *Manager) HandleCommunityRequestToJoinResponse(signer *ecdsa.PublicKey, return nil, ErrNotAuthorized } - _, err = m.preprocessDescription(community.ID(), request.Community) + _, processedDescription, err := m.preprocessDescription(community.ID(), request.Community) if err != nil { return nil, err } - _, err = community.UpdateCommunityDescription(request.Community, appMetadataMsg, nil) + _, err = community.UpdateCommunityDescription(processedDescription, appMetadataMsg, nil) if err != nil { return nil, err } @@ -2857,6 +3169,10 @@ func (m *Manager) HandleCommunityRequestToJoinResponse(signer *ecdsa.PublicKey, return nil, err } + if err = m.handleCommunityGrant(community.ID(), request.Grant, request.Clock); err != nil { + return nil, err + } + err = m.persistence.SaveCommunity(community) if err != nil { @@ -2923,6 +3239,9 @@ func UnwrapCommunityDescriptionMessage(payload []byte) (*ecdsa.PublicKey, *proto } func (m *Manager) JoinCommunity(id types.HexBytes, forceJoin bool) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return nil, err @@ -2940,6 +3259,9 @@ func (m *Manager) JoinCommunity(id types.HexBytes, forceJoin bool) (*Community, } func (m *Manager) SpectateCommunity(id types.HexBytes) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return nil, err @@ -2978,6 +3300,9 @@ func (m *Manager) GetRequestToJoinByPkAndCommunityID(pk *ecdsa.PublicKey, commun } func (m *Manager) UpdateCommunityDescriptionMagnetlinkMessageClock(communityID types.HexBytes, clock uint64) error { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByIDString(communityID.String()) if err != nil { return err @@ -2999,6 +3324,9 @@ func (m *Manager) GetLastSeenMagnetlink(communityID types.HexBytes) (string, err } func (m *Manager) LeaveCommunity(id types.HexBytes) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return nil, err @@ -3014,8 +3342,11 @@ func (m *Manager) LeaveCommunity(id types.HexBytes) (*Community, error) { return community, nil } -// Same as LeaveCommunity, but we want to stay spectating -func (m *Manager) KickedOutOfCommunity(id types.HexBytes) (*Community, error) { +// Same as LeaveCommunity, but we have an option to stay spectating +func (m *Manager) KickedOutOfCommunity(id types.HexBytes, spectateMode bool) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return nil, err @@ -3023,7 +3354,9 @@ func (m *Manager) KickedOutOfCommunity(id types.HexBytes) (*Community, error) { community.RemoveOurselvesFromOrg(&m.identity.PublicKey) community.Leave() - community.Spectate() + if spectateMode { + community.Spectate() + } if err = m.persistence.SaveCommunity(community); err != nil { return nil, err @@ -3033,6 +3366,9 @@ func (m *Manager) KickedOutOfCommunity(id types.HexBytes) (*Community, error) { } func (m *Manager) AddMemberOwnerToCommunity(communityID types.HexBytes, pk *ecdsa.PublicKey) (*Community, error) { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + community, err := m.GetByID(communityID) if err != nil { return nil, err @@ -3053,6 +3389,9 @@ func (m *Manager) AddMemberOwnerToCommunity(communityID types.HexBytes, pk *ecds } func (m *Manager) RemoveUserFromCommunity(id types.HexBytes, pk *ecdsa.PublicKey) (*Community, error) { + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + community, err := m.GetByID(id) if err != nil { return nil, err @@ -3072,6 +3411,9 @@ func (m *Manager) RemoveUserFromCommunity(id types.HexBytes, pk *ecdsa.PublicKey } func (m *Manager) UnbanUserFromCommunity(request *requests.UnbanUserFromCommunity) (*Community, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + id := request.CommunityID publicKey, err := common.HexToPubkey(request.User.String()) if err != nil { @@ -3097,6 +3439,9 @@ func (m *Manager) UnbanUserFromCommunity(request *requests.UnbanUserFromCommunit } func (m *Manager) AddRoleToMember(request *requests.AddRoleToMember) (*Community, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + id := request.CommunityID publicKey, err := common.HexToPubkey(request.User.String()) if err != nil { @@ -3128,6 +3473,9 @@ func (m *Manager) AddRoleToMember(request *requests.AddRoleToMember) (*Community } func (m *Manager) RemoveRoleFromMember(request *requests.RemoveRoleFromMember) (*Community, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + id := request.CommunityID publicKey, err := common.HexToPubkey(request.User.String()) if err != nil { @@ -3159,6 +3507,9 @@ func (m *Manager) RemoveRoleFromMember(request *requests.RemoveRoleFromMember) ( } func (m *Manager) BanUserFromCommunity(request *requests.BanUserFromCommunity) (*Community, error) { + m.communityLock.Lock(request.CommunityID) + defer m.communityLock.Unlock(request.CommunityID) + id := request.CommunityID publicKey, err := common.HexToPubkey(request.User.String()) @@ -3171,7 +3522,7 @@ func (m *Manager) BanUserFromCommunity(request *requests.BanUserFromCommunity) ( return nil, err } - _, err = community.BanUserFromCommunity(publicKey) + _, err = community.BanUserFromCommunity(publicKey, &protobuf.CommunityBanInfo{DeleteAllMessages: request.DeleteAllMessages}) if err != nil { return nil, err } @@ -3191,14 +3542,21 @@ func (m *Manager) dbRecordBundleToCommunity(r *CommunityRecordBundle) (*Communit } return recordBundleToCommunity(r, &m.identity.PublicKey, m.installationID, m.logger, m.timesource, descriptionEncryptor, func(community *Community) error { - _, err := m.preprocessDescription(community.ID(), community.config.CommunityDescription) + _, description, err := m.preprocessDescription(community.ID(), community.config.CommunityDescription) if err != nil { return err } - err = community.updateCommunityDescriptionByEvents() - if err != nil { - return err + community.config.CommunityDescription = description + + if community.config.EventsData != nil { + eventsDescription, err := validateAndGetEventsMessageCommunityDescription(community.config.EventsData.EventsBaseCommunityDescription, community.ControlNode()) + if err != nil { + m.logger.Error("invalid EventsBaseCommunityDescription", zap.Error(err)) + } + if eventsDescription.Clock == community.Clock() { + community.applyEvents() + } } if m.transport != nil && m.transport.WakuVersion() == 2 { @@ -3238,10 +3596,16 @@ func (m *Manager) GetCommunityShard(communityID types.HexBytes) (*shard.Shard, e } func (m *Manager) SaveCommunityShard(communityID types.HexBytes, shard *shard.Shard, clock uint64) error { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + return m.persistence.SaveCommunityShard(communityID, shard, clock) } func (m *Manager) DeleteCommunityShard(communityID types.HexBytes) error { + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + return m.persistence.DeleteCommunityShard(communityID) } @@ -3357,12 +3721,12 @@ func (m *Manager) RequestsToJoinForCommunityAwaitingAddresses(id types.HexBytes) return m.persistence.RequestsToJoinForCommunityAwaitingAddresses(id) } -func (m *Manager) CanPost(pk *ecdsa.PublicKey, communityID string, chatID string) (bool, error) { +func (m *Manager) CanPost(pk *ecdsa.PublicKey, communityID string, chatID string, messageType protobuf.ApplicationMetadataMessage_Type) (bool, error) { community, err := m.GetByIDString(communityID) if err != nil { return false, err } - return community.CanPost(pk, chatID) + return community.CanPost(pk, chatID, messageType) } func (m *Manager) IsEncrypted(communityID string) (bool, error) { @@ -4412,6 +4776,10 @@ func (m *Manager) GetAllCommunityTokens() ([]*community_token.CommunityToken, er return m.persistence.GetAllCommunityTokens() } +func (m *Manager) GetCommunityGrant(communityID string) ([]byte, uint64, error) { + return m.persistence.GetCommunityGrant(communityID) +} + func (m *Manager) ImageToBase64(uri string) string { if uri == "" { return "" @@ -4467,7 +4835,15 @@ func (m *Manager) AddCommunityToken(token *community_token.CommunityToken, clock return nil, errors.New("Token is absent in database") } - community, err := m.GetByIDString(token.CommunityID) + communityID, err := types.DecodeHex(token.CommunityID) + if err != nil { + return nil, err + } + + m.communityLock.Lock(communityID) + defer m.communityLock.Unlock(communityID) + + community, err := m.GetByID(communityID) if err != nil { return nil, err } @@ -4505,7 +4881,8 @@ func (m *Manager) AddCommunityToken(token *community_token.CommunityToken, clock Symbol: token.Symbol, Name: token.Name, Amount: "1", - Decimals: uint64(token.Decimals), + AmountInWei: "1", + Decimals: uint64(0), } request := &requests.CreateCommunityTokenPermission{ @@ -4549,7 +4926,15 @@ func (m *Manager) RemoveCommunityToken(chainID int, contractAddress string) erro } func (m *Manager) SetCommunityActiveMembersCount(communityID string, activeMembersCount uint64) error { - community, err := m.GetByIDString(communityID) + id, err := types.DecodeHex(communityID) + if err != nil { + return err + } + + m.communityLock.Lock(id) + defer m.communityLock.Unlock(id) + + community, err := m.GetByID(id) if err != nil { return err } @@ -4570,20 +4955,6 @@ func (m *Manager) SetCommunityActiveMembersCount(communityID string, activeMembe return nil } -// UpdateCommunity takes a Community persists it and republishes it. -// The clock is incremented meaning even a no change update will be republished by the admin, and parsed by the member. -func (m *Manager) UpdateCommunity(c *Community) error { - c.increaseClock() - - err := m.persistence.SaveCommunity(c) - if err != nil { - return err - } - - m.publish(&Subscription{Community: c}) - return nil -} - func combineAddressesAndChainIDs(addresses []gethcommon.Address, chainIDs []uint64) []*AccountChainIDsCombination { combinations := make([]*AccountChainIDsCombination, 0) for _, address := range addresses { @@ -4637,7 +5008,7 @@ func (m *Manager) saveAndPublish(community *Community) error { return err } - m.publish(&Subscription{CommunityEventsMessage: community.ToCommunityEventsMessage()}) + m.publish(&Subscription{CommunityEventsMessage: community.toCommunityEventsMessage()}) return nil } @@ -4686,7 +5057,7 @@ func (m *Manager) ReevaluatePrivilegedMember(community *Community, tokenPermissi // Make sure privileged user is added to every channel for channelID := range community.Chats() { if !community.IsMemberInChat(memberPubKey, channelID) { - _, err := community.AddMemberToChat(channelID, memberPubKey, []protobuf.CommunityMember_Roles{privilegedRole}) + _, err := community.AddMemberToChat(channelID, memberPubKey, []protobuf.CommunityMember_Roles{privilegedRole}, protobuf.CommunityMember_CHANNEL_ROLE_POSTER) if err != nil { return alreadyHasPrivilegedRole, err } @@ -4727,6 +5098,19 @@ func (m *Manager) handleCommunityTokensMetadata(community *Community) error { return nil } +func (m *Manager) handleCommunityGrant(communityID types.HexBytes, grant []byte, clock uint64) error { + _, oldClock, err := m.persistence.GetCommunityGrant(communityID.String()) + if err != nil { + return err + } + + if oldClock >= clock { + return nil + } + + return m.persistence.SaveCommunityGrant(communityID.String(), grant, clock) +} + func (m *Manager) FetchCommunityToken(community *Community, tokenMetadata *protobuf.CommunityTokenMetadata, chainID uint64, contractAddress string) (*community_token.CommunityToken, error) { communityID := community.IDString() @@ -4841,6 +5225,9 @@ func (m *Manager) PromoteSelfToControlNode(community *Community, clock uint64) ( return nil, ErrOrgNotFound } + m.communityLock.Lock(community.ID()) + defer m.communityLock.Unlock(community.ID()) + ownerChanged, err := m.promoteSelfToControlNode(community, clock) if err != nil { return nil, err @@ -4881,7 +5268,7 @@ func (m *Manager) promoteSelfToControlNode(community *Community, clock uint64) ( } for channelID := range community.Chats() { - _, err = community.AddMemberToChat(channelID, &m.identity.PublicKey, ownerRole) + _, err = community.AddMemberToChat(channelID, &m.identity.PublicKey, ownerRole, protobuf.CommunityMember_CHANNEL_ROLE_POSTER) if err != nil { return false, err } @@ -5117,6 +5504,11 @@ func (m *Manager) encryptCommunityDescriptionChannel(community *Community, chann return m.encryptCommunityDescriptionImpl([]byte(community.IDString()+channelID), d) } +// TODO: add collectiblesManager to messenger intance +func (m *Manager) GetCollectiblesManager() CollectiblesManager { + return m.collectiblesManager +} + type DecryptCommunityResponse struct { Decrypted bool Description *protobuf.CommunityDescription diff --git a/vendor/github.com/status-im/status-go/protocol/communities/permission_checker.go b/vendor/github.com/status-im/status-go/protocol/communities/permission_checker.go index 914a4d96..bd1211c4 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/permission_checker.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/permission_checker.go @@ -3,9 +3,8 @@ package communities import ( "context" "errors" - "math" + "fmt" "math/big" - "strconv" "strings" "go.uber.org/zap" @@ -330,7 +329,7 @@ func (p *DefaultPermissionChecker) CheckPermissions(permissions []*CommunityToke continue } - accumulatedBalance := new(big.Float) + accumulatedBalance := new(big.Int) chainIDLoopERC20: for chainID, address := range tokenRequirement.ContractAddresses { @@ -345,16 +344,11 @@ func (p *DefaultPermissionChecker) CheckPermissions(permissions []*CommunityToke value := ownedERC20TokenBalances[chainID][account][contractAddress] - accountChainBalance := new(big.Float).Quo( - new(big.Float).SetInt(value.ToInt()), - big.NewFloat(math.Pow(10, float64(tokenRequirement.Decimals))), - ) - if _, exists := accountsChainIDsCombinations[account]; !exists { accountsChainIDsCombinations[account] = make(map[uint64]bool) } - if accountChainBalance.Cmp(big.NewFloat(0)) > 0 { + if value.ToInt().Cmp(big.NewInt(0)) > 0 { // account has balance > 0 on this chain for this token, so let's add it the chain IDs accountsChainIDsCombinations[account][chainID] = true } @@ -362,14 +356,14 @@ func (p *DefaultPermissionChecker) CheckPermissions(permissions []*CommunityToke // check if adding current chain account balance to accumulated balance // satisfies required amount prevBalance := accumulatedBalance - accumulatedBalance.Add(prevBalance, accountChainBalance) + accumulatedBalance.Add(prevBalance, value.ToInt()) - requiredAmount, err := strconv.ParseFloat(tokenRequirement.Amount, 32) - if err != nil { - return nil, err + requiredAmount, success := new(big.Int).SetString(tokenRequirement.AmountInWei, 10) + if !success { + return nil, fmt.Errorf("amountInWeis value is incorrect") } - if accumulatedBalance.Cmp(big.NewFloat(requiredAmount)) != -1 { + if accumulatedBalance.Cmp(requiredAmount) != -1 { tokenRequirementMet = true if shortcircuit { break chainIDLoopERC20 diff --git a/vendor/github.com/status-im/status-go/protocol/communities/persistence.go b/vendor/github.com/status-im/status-go/protocol/communities/persistence.go index ab1dbcfd..7d62369c 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/persistence.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/persistence.go @@ -18,6 +18,7 @@ import ( "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/common/shard" "github.com/status-im/status-go/protocol/communities/token" + "github.com/status-im/status-go/protocol/encryption" "github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/services/wallet/bigint" ) @@ -591,6 +592,9 @@ func (p *Persistence) GetPermissionTokenCriteriaResult(permissionID string, comm criteria := make([]bool, 0) for _, r := range strings.Split(criteriaString, ",") { + if r == "" { + continue + } val, err := strconv.ParseBool(r) if err != nil { return nil, err @@ -838,6 +842,15 @@ func (p *Persistence) GetRequestToJoin(id []byte) (*RequestToJoin, error) { return request, nil } +func (p *Persistence) GetNumberOfPendingRequestsToJoin(communityID types.HexBytes) (int, error) { + var count int + err := p.db.QueryRow(`SELECT count(1) FROM communities_requests_to_join WHERE community_id = ? AND state = ?`, communityID, RequestToJoinStatePending).Scan(&count) + if err != nil { + return 0, err + } + return count, nil +} + func (p *Persistence) GetRequestToJoinByPkAndCommunityID(pk string, communityID []byte) (*RequestToJoin, error) { request := &RequestToJoin{} err := p.db.QueryRow(`SELECT id,public_key,clock,ens_name,chat_id,community_id,state FROM communities_requests_to_join WHERE public_key = ? AND community_id = ?`, pk, communityID).Scan(&request.ID, &request.PublicKey, &request.Clock, &request.ENSName, &request.ChatID, &request.CommunityID, &request.State) @@ -1326,6 +1339,31 @@ func (p *Persistence) RemoveCommunityToken(chainID int, contractAddress string) return err } +func (p *Persistence) GetCommunityGrant(communityID string) ([]byte, uint64, error) { + var grant []byte + var clock uint64 + + err := p.db.QueryRow(`SELECT grant, clock FROM community_grants WHERE community_id = ?`, communityID).Scan(&grant, &clock) + if err == sql.ErrNoRows { + return []byte{}, 0, nil + } else if err != nil { + return []byte{}, 0, err + } + + return grant, clock, nil +} + +func (p *Persistence) SaveCommunityGrant(communityID string, grant []byte, clock uint64) error { + _, err := p.db.Exec(`INSERT OR REPLACE INTO community_grants(community_id, grant, clock) VALUES (?, ?, ?)`, + communityID, grant, clock) + return err +} + +func (p *Persistence) RemoveCommunityGrant(communityID string) error { + _, err := p.db.Exec(`DELETE FROM community_grants WHERE community_id = ?`, communityID) + return err +} + func decodeWrappedCommunityDescription(wrappedDescriptionBytes []byte) (*protobuf.CommunityDescription, error) { metadata := &protobuf.ApplicationMetadataMessage{} @@ -1781,3 +1819,216 @@ func (p *Persistence) DeleteCommunityShard(communityID types.HexBytes) error { _, err := p.db.Exec(`DELETE FROM communities_shards WHERE community_id = ?`, communityID) return err } + +func (p *Persistence) GetAppliedCommunityEvents(communityID types.HexBytes) (map[string]uint64, error) { + rows, err := p.db.Query(`SELECT event_type_id, clock FROM applied_community_events WHERE community_id = ?`, communityID.String()) + if err != nil { + return nil, err + } + defer rows.Close() + + result := map[string]uint64{} + + eventTypeID := "" + clock := uint64(0) + + for rows.Next() { + err := rows.Scan(&eventTypeID, &clock) + if err != nil { + return nil, err + } + result[eventTypeID] = clock + } + + return result, nil +} + +func (p *Persistence) UpsertAppliedCommunityEvents(communityID types.HexBytes, processedEvents map[string]uint64) error { + tx, err := p.db.BeginTx(context.Background(), &sql.TxOptions{}) + if err != nil { + return err + } + + defer func() { + if err == nil { + err = tx.Commit() + return + } + // don't shadow original error + _ = tx.Rollback() + }() + + for eventTypeID, newClock := range processedEvents { + var currentClock uint64 + err = tx.QueryRow(` + SELECT clock + FROM applied_community_events + WHERE community_id = ? AND event_type_id = ?`, + communityID.String(), eventTypeID).Scan(¤tClock) + + if err != nil && err != sql.ErrNoRows { + return err + } + + if newClock > currentClock { + _, err = tx.Exec(` + INSERT OR REPLACE INTO applied_community_events(community_id, event_type_id, clock) + VALUES (?, ?, ?)`, + communityID.String(), eventTypeID, newClock) + if err != nil { + return err + } + } + } + return err +} + +func (p *Persistence) InvalidateDecryptedCommunityCacheForKeys(keys []*encryption.HashRatchetInfo) error { + tx, err := p.db.BeginTx(context.Background(), &sql.TxOptions{}) + if err != nil { + return err + } + + defer func() { + if err == nil { + err = tx.Commit() + return + } + // don't shadow original error + _ = tx.Rollback() + }() + + if len(keys) == 0 { + return nil + } + idsArgs := make([]interface{}, 0, len(keys)) + for _, k := range keys { + idsArgs = append(idsArgs, k.KeyID) + } + + inVector := strings.Repeat("?, ", len(keys)-1) + "?" + + query := "SELECT DISTINCT(community_id) FROM encrypted_community_description_missing_keys WHERE key_id IN (" + inVector + ")" // nolint: gosec + + var communityIDs []interface{} + rows, err := tx.Query(query, idsArgs...) + if err != nil { + return err + } + defer rows.Close() + + for rows.Next() { + var communityID []byte + err = rows.Scan(&communityID) + if err != nil { + return err + } + communityIDs = append(communityIDs, communityID) + } + if len(communityIDs) == 0 { + return nil + } + + inVector = strings.Repeat("?, ", len(communityIDs)-1) + "?" + + query = "DELETE FROM encrypted_community_description_cache WHERE community_id IN (" + inVector + ")" //nolint: gosec + _, err = tx.Exec(query, communityIDs...) + + return err +} + +func (p *Persistence) SaveDecryptedCommunityDescription(communityID []byte, missingKeys []*CommunityPrivateDataFailedToDecrypt, description *protobuf.CommunityDescription) error { + if description == nil { + return nil + } + marshaledDescription, err := proto.Marshal(description) + if err != nil { + return err + } + tx, err := p.db.BeginTx(context.Background(), &sql.TxOptions{}) + if err != nil { + return err + } + + defer func() { + if err == nil { + err = tx.Commit() + return + } + // don't shadow original error + _ = tx.Rollback() + }() + previousCommunity, err := p.getDecryptedCommunityDescriptionByID(tx, communityID) + if err != nil { + return err + } + + if previousCommunity != nil && previousCommunity.Clock >= description.Clock { + return nil + } + + insertCommunity := "INSERT INTO encrypted_community_description_cache (community_id, clock, description) VALUES (?, ?, ?);" + _, err = tx.Exec(insertCommunity, communityID, description.Clock, marshaledDescription) + if err != nil { + return err + } + for _, key := range missingKeys { + insertKey := "INSERT INTO encrypted_community_description_missing_keys (community_id, key_id) VALUES(?, ?)" + _, err = tx.Exec(insertKey, communityID, key.KeyID) + if err != nil { + return err + } + } + + return nil +} + +func (p *Persistence) GetDecryptedCommunityDescription(communityID []byte, clock uint64) (*protobuf.CommunityDescription, error) { + return p.getDecryptedCommunityDescriptionByIDAndClock(communityID, clock) +} + +func (p *Persistence) getDecryptedCommunityDescriptionByIDAndClock(communityID []byte, clock uint64) (*protobuf.CommunityDescription, error) { + query := "SELECT description FROM encrypted_community_description_cache WHERE community_id = ? AND clock = ?" + + qr := p.db.QueryRow(query, communityID, clock) + + var descriptionBytes []byte + + err := qr.Scan(&descriptionBytes) + switch err { + case sql.ErrNoRows: + return nil, nil + case nil: + var communityDescription protobuf.CommunityDescription + err := proto.Unmarshal(descriptionBytes, &communityDescription) + if err != nil { + return nil, err + } + return &communityDescription, nil + default: + return nil, err + } +} + +func (p *Persistence) getDecryptedCommunityDescriptionByID(tx *sql.Tx, communityID []byte) (*protobuf.CommunityDescription, error) { + query := "SELECT description FROM encrypted_community_description_cache WHERE community_id = ?" + + qr := tx.QueryRow(query, communityID) + + var descriptionBytes []byte + + err := qr.Scan(&descriptionBytes) + switch err { + case sql.ErrNoRows: + return nil, nil + case nil: + var communityDescription protobuf.CommunityDescription + err := proto.Unmarshal(descriptionBytes, &communityDescription) + if err != nil { + return nil, err + } + return &communityDescription, nil + default: + return nil, err + } +} diff --git a/vendor/github.com/status-im/status-go/protocol/communities/roles_authorization.go b/vendor/github.com/status-im/status-go/protocol/communities/roles_authorization.go index 591b61a3..d32a3a05 100644 --- a/vendor/github.com/status-im/status-go/protocol/communities/roles_authorization.go +++ b/vendor/github.com/status-im/status-go/protocol/communities/roles_authorization.go @@ -23,6 +23,7 @@ var adminAuthorizedEventTypes = []protobuf.CommunityEvent_EventType{ protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK, protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN, protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN, + protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES, } var tokenMasterAuthorizedEventTypes = append(adminAuthorizedEventTypes, []protobuf.CommunityEvent_EventType{ @@ -112,7 +113,9 @@ func RolesAuthorizedToPerformEvent(senderRoles []protobuf.CommunityMember_Roles, } if event.Type == protobuf.CommunityEvent_COMMUNITY_MEMBER_BAN || - event.Type == protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK { + event.Type == protobuf.CommunityEvent_COMMUNITY_MEMBER_KICK || + event.Type == protobuf.CommunityEvent_COMMUNITY_MEMBER_UNBAN || + event.Type == protobuf.CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES { return canRolesKickOrBanMember(senderRoles, memberRoles) } diff --git a/vendor/github.com/status-im/status-go/protocol/contact.go b/vendor/github.com/status-im/status-go/protocol/contact.go index beff45f2..27e1a984 100644 --- a/vendor/github.com/status-im/status-go/protocol/contact.go +++ b/vendor/github.com/status-im/status-go/protocol/contact.go @@ -109,6 +109,7 @@ type Contact struct { // Bio - description of the contact (tell us about yourself) Bio string `json:"bio"` + // Deprecated: use social links from ProfileShowcasePreferences SocialLinks identity.SocialLinks `json:"socialLinks"` Images map[string]images.IdentityImage `json:"images"` diff --git a/vendor/github.com/status-im/status-go/protocol/encryption/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/encryption/migrations/migrations.go index 16683c8b..eac7ce83 100644 --- a/vendor/github.com/status-im/status-go/protocol/encryption/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/encryption/migrations/migrations.go @@ -19,7 +19,9 @@ // 1632236298_add_communities.down.sql (151B) // 1632236298_add_communities.up.sql (584B) // 1636536507_add_index_bundles.up.sql (347B) -// doc.go (377B) +// 1698137564_add_migration_index.up.sql (483B) +// 1709200114_add_migration_index.up.sql (483B) +// doc.go (397B) package migrations @@ -102,7 +104,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x44, 0xcf, 0x76, 0x71, 0x1f, 0x5e, 0x9a, 0x43, 0xd8, 0xcd, 0xb8, 0xc3, 0x70, 0xc3, 0x7f, 0xfc, 0x90, 0xb4, 0x25, 0x1e, 0xf4, 0x66, 0x20, 0xb8, 0x33, 0x7e, 0xb0, 0x76, 0x1f, 0xc, 0xc0, 0x75}} return a, nil } @@ -122,7 +124,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x90, 0x5a, 0x59, 0x3e, 0x3, 0xe2, 0x3c, 0x81, 0x42, 0xcd, 0x4c, 0x9a, 0xe8, 0xda, 0x93, 0x2b, 0x70, 0xa4, 0xd5, 0x29, 0x3e, 0xd5, 0xc9, 0x27, 0xb6, 0xb7, 0x65, 0xff, 0x0, 0xcb, 0xde}} return a, nil } @@ -142,7 +144,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xa4, 0xeb, 0xa0, 0xe6, 0xa0, 0xd4, 0x48, 0xbb, 0xad, 0x6f, 0x7d, 0x67, 0x8c, 0xbd, 0x25, 0xde, 0x1f, 0x73, 0x9a, 0xbb, 0xa8, 0xc9, 0x30, 0xb7, 0xa9, 0x7c, 0xaf, 0xb5, 0x1, 0x61, 0xdd}} return a, nil } @@ -162,7 +164,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x8e, 0xbf, 0x6f, 0xa, 0xc0, 0xe1, 0x3c, 0x42, 0x28, 0x88, 0x1d, 0xdb, 0xba, 0x1c, 0x83, 0xec, 0xba, 0xd3, 0x5f, 0x5c, 0x77, 0x5e, 0xa7, 0x46, 0x36, 0xec, 0x69, 0xa, 0x4b, 0x17, 0x79}} return a, nil } @@ -182,7 +184,7 @@ func _1540715431_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9, 0x4, 0xe3, 0x76, 0x2e, 0xb8, 0x9, 0x23, 0xf0, 0x70, 0x93, 0xc4, 0x50, 0xe, 0x9d, 0x84, 0x22, 0x8c, 0x94, 0xd3, 0x24, 0x9, 0x9a, 0xc1, 0xa1, 0x48, 0x45, 0xfd, 0x40, 0x6e, 0xe6}} return a, nil } @@ -202,7 +204,7 @@ func _1540715431_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc7, 0x4c, 0x36, 0x96, 0xdf, 0x16, 0x10, 0xa6, 0x27, 0x1a, 0x79, 0x8b, 0x42, 0x83, 0x23, 0xc, 0x7e, 0xb6, 0x3d, 0x2, 0xda, 0xa4, 0xb4, 0xd, 0x27, 0x55, 0xba, 0xdc, 0xb2, 0x88, 0x8f, 0xa6}} return a, nil } @@ -222,7 +224,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xfd, 0xe6, 0xd8, 0xca, 0x3b, 0x38, 0x18, 0xee, 0x0, 0x5f, 0x36, 0x9e, 0x1e, 0xd, 0x19, 0x3e, 0xb4, 0x73, 0x53, 0xe9, 0xa5, 0xac, 0xdd, 0xa1, 0x2f, 0xc7, 0x6c, 0xa8, 0xd9, 0xa, 0x88}} return a, nil } @@ -242,7 +244,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x18, 0x26, 0xb8, 0x88, 0x47, 0xdb, 0x83, 0xcc, 0xb6, 0x9d, 0x1c, 0x1, 0xae, 0x2f, 0xde, 0x97, 0x82, 0x3, 0x30, 0xa8, 0x63, 0xa1, 0x78, 0x4b, 0xa5, 0x9, 0x8, 0x75, 0xa2, 0x57, 0x81}} return a, nil } @@ -262,7 +264,7 @@ func _1558084410_add_secretDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xb, 0x65, 0xdf, 0x59, 0xbf, 0xe9, 0x5, 0x5b, 0x6f, 0xd5, 0x3a, 0xb7, 0x57, 0xe8, 0x78, 0x38, 0x73, 0x53, 0x57, 0xf7, 0x24, 0x4, 0xe4, 0xa2, 0x49, 0x22, 0xa2, 0xc6, 0xfd, 0x80, 0xa4}} return a, nil } @@ -282,7 +284,7 @@ func _1558084410_add_secretUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x32, 0x36, 0x8e, 0x47, 0xb0, 0x8f, 0xc1, 0xc6, 0xf7, 0xc6, 0x9f, 0x2d, 0x44, 0x75, 0x2b, 0x26, 0xec, 0x6, 0xa0, 0x7b, 0xa5, 0xbd, 0xc8, 0x76, 0x8a, 0x82, 0x68, 0x2, 0x42, 0xb5, 0xf4}} return a, nil } @@ -302,7 +304,7 @@ func _1558588866_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x52, 0x34, 0x3c, 0x46, 0x4a, 0xf0, 0x72, 0x47, 0x6f, 0x49, 0x5c, 0xc7, 0xf9, 0x32, 0xce, 0xc4, 0x3d, 0xfd, 0x61, 0xa1, 0x8b, 0x8f, 0xf2, 0x31, 0x34, 0xde, 0x15, 0x49, 0xa6, 0xde, 0xb9}} return a, nil } @@ -322,7 +324,7 @@ func _1558588866_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0xea, 0x64, 0x39, 0x61, 0x20, 0x83, 0x83, 0xb, 0x2e, 0x79, 0x64, 0xb, 0x53, 0xfa, 0xfe, 0xc6, 0xf7, 0x67, 0x42, 0xd3, 0x4f, 0xdc, 0x7e, 0x30, 0x32, 0xe8, 0x14, 0x41, 0xe9, 0xe7, 0x3b}} return a, nil } @@ -342,7 +344,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x64, 0x6d, 0xce, 0x24, 0x42, 0x20, 0x8d, 0x4f, 0x37, 0xaa, 0x9d, 0xc, 0x57, 0x98, 0xc1, 0xd1, 0x1a, 0x34, 0xcd, 0x9f, 0x8f, 0x34, 0x86, 0xb3, 0xd3, 0xdc, 0xf1, 0x7d, 0xe5, 0x1b, 0x6e}} return a, nil } @@ -362,7 +364,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x16, 0xf6, 0xc2, 0x62, 0x9c, 0xd2, 0xc9, 0x1e, 0xd8, 0xea, 0xaa, 0xea, 0x95, 0x8f, 0x89, 0x6a, 0x85, 0x5d, 0x9d, 0x99, 0x78, 0x3c, 0x90, 0x66, 0x99, 0x3e, 0x4b, 0x19, 0x62, 0xfb, 0x31, 0x4d}} return a, nil } @@ -382,7 +384,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xde, 0x3f, 0xd2, 0x4a, 0x50, 0x98, 0x56, 0xe3, 0xc0, 0xcd, 0x9d, 0xb0, 0x34, 0x3b, 0xe5, 0x62, 0x18, 0xb5, 0x20, 0xc9, 0x3e, 0xdc, 0x6a, 0x40, 0x36, 0x66, 0xea, 0x51, 0x8c, 0x71, 0xf5}} return a, nil } @@ -402,7 +404,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x71, 0x8f, 0x29, 0xb1, 0xaa, 0xd6, 0xd1, 0x8c, 0x17, 0xef, 0x6c, 0xd5, 0x80, 0xb8, 0x2c, 0xc3, 0xfe, 0xec, 0x24, 0x4d, 0xc8, 0x25, 0xd3, 0xb4, 0xcd, 0xa9, 0xac, 0x63, 0x61, 0xb2, 0x9c}} return a, nil } @@ -422,7 +424,7 @@ func _1632236298_add_communitiesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0xe5, 0x47, 0xd1, 0xe5, 0xec, 0x5b, 0x3e, 0xdc, 0x22, 0xf4, 0x27, 0xee, 0x70, 0xf3, 0x9, 0x4f, 0xd2, 0x9f, 0x92, 0xf, 0x5a, 0x18, 0x11, 0xb7, 0x40, 0xab, 0xf1, 0x98, 0x72, 0xd6, 0x60}} return a, nil } @@ -442,7 +444,7 @@ func _1632236298_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xe0, 0x1, 0x6e, 0x84, 0xc, 0x35, 0xe4, 0x5a, 0xf, 0xbe, 0xcb, 0xf7, 0xd2, 0xa8, 0x25, 0xf5, 0xdb, 0x7, 0xcb, 0xa3, 0xe6, 0xf4, 0xc4, 0x1b, 0xa5, 0xec, 0x32, 0x1e, 0x1e, 0x48, 0x60}} return a, nil } @@ -462,12 +464,52 @@ func _1636536507_add_index_bundlesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0xb9, 0x3c, 0x16, 0xfc, 0xfb, 0xb2, 0xb4, 0x3b, 0xfe, 0xdc, 0xf5, 0x9c, 0x42, 0xa0, 0xa0, 0xd4, 0xd, 0x5b, 0x97, 0x10, 0x80, 0x95, 0xe, 0x13, 0xc1, 0x18, 0x8, 0xee, 0xf, 0x99, 0xee}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbb\x6e\xc3\x30\x0c\x45\x77\x7f\xc5\x45\x96\x2c\xb5\xb4\x74\xea\xd6\xb1\x7b\x7f\x80\x91\x68\x89\x88\x1e\xae\x48\xe7\xf1\xf7\x85\xd3\x02\xcd\xd6\xf5\x00\xe7\xf0\xd2\x7b\x7c\x66\x51\x2c\x52\x18\xa2\x68\x1c\x58\x95\xc6\x1d\x27\x0e\xb4\x29\xe3\x90\xc4\xf2\x76\x72\xa1\x57\xaf\x46\xb6\xe9\x2c\xd5\x57\x49\x83\x8c\xfd\xe5\xf5\x30\x79\x8f\x40\xed\x68\xc8\xd4\x62\xe1\x47\x4b\xa1\x46\xc3\xa4\x25\x5c\xc5\x32\x08\xeb\xe0\x45\x6e\x0e\xef\x86\xc2\xa4\x06\xcb\x64\x47\x85\x65\x46\x20\xe5\x3d\xb3\xf4\x81\xd4\xe7\x93\xb4\x48\x46\x6e\x47\x1f\xcb\x13\xd9\x17\x06\x2a\x85\x23\x96\xd1\xeb\xc3\x55\xaa\x8c\x28\x83\x83\xf5\x71\x7f\x01\xa9\xb2\xa1\x51\x65\xdd\xfd\x4c\x17\x46\xeb\xbf\xe7\x41\x2d\xfe\xff\x11\xae\x7d\x9c\x15\xa4\xe0\xdb\xca\xc1\x38\xba\x69\x5a\x29\x9c\x29\x31\xf4\xab\x88\xf1\x34\x79\x9f\xfa\x5b\xe2\xc6\xbb\xf5\xbc\x71\x5e\xcf\x09\x3f\x35\xe9\x4d\x31\x77\x38\xe7\xff\x80\x4b\x1d\x6e\xfa\x0e\x00\x00\xff\xff\x9d\x60\x3d\x88\x79\x01\x00\x00") +var __1698137564_add_migration_indexUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x90\xc1\xaa\xc2\x30\x10\x45\xf7\xfd\x8a\x59\xbe\x07\xfe\x81\x2b\x69\x23\x74\xd3\x82\xed\xa2\xbb\x21\x24\x83\x09\xa5\x6d\x4c\x46\x30\x7f\x2f\x25\x16\x41\xb1\x2a\x6e\x66\x36\xf7\xdc\x03\x37\x3f\x88\x5d\x2b\xa0\xac\x0a\xd1\x41\xb9\x87\xaa\x6e\x41\x74\x65\xd3\x36\x60\xf5\x05\x8f\x7e\x3a\x3b\x64\x3b\x50\x60\x39\x38\xd4\x14\x54\x56\x57\x60\x64\x30\xe8\x25\x2b\x43\x8c\x34\x2a\x1f\x1d\xdb\x69\x84\xbf\x04\x58\xbd\x81\x9e\xe2\x1d\x84\x42\x34\xf9\xff\x36\xcb\xde\xf8\x5e\xf4\x62\x4f\x31\xcc\x07\xad\x5e\xd5\xa7\xc8\xaf\x22\x4d\xce\x93\x92\x4c\xfa\x13\xe7\x53\xfa\x5b\xbd\x92\xca\x10\x2e\xcb\xdd\x4a\x30\xd0\x09\xc7\x69\xc5\x9c\xb8\xc7\xc9\xe7\x9f\xd0\x65\xf3\x6b\x00\x00\x00\xff\xff\x97\xf4\x28\xe3\xe3\x01\x00\x00") + +func _1698137564_add_migration_indexUpSqlBytes() ([]byte, error) { + return bindataRead( + __1698137564_add_migration_indexUpSql, + "1698137564_add_migration_index.up.sql", + ) +} + +func _1698137564_add_migration_indexUpSql() (*asset, error) { + bytes, err := _1698137564_add_migration_indexUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1698137564_add_migration_index.up.sql", size: 483, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe2, 0xec, 0xd4, 0x54, 0xff, 0x5e, 0x6e, 0xaf, 0x3f, 0x2b, 0xb5, 0x76, 0xe9, 0x84, 0x2a, 0x4d, 0x1f, 0xd8, 0x22, 0x8b, 0x4b, 0x5c, 0xf1, 0xe0, 0x3a, 0x34, 0xc5, 0xed, 0xef, 0x74, 0xe4, 0x2b}} + return a, nil +} + +var __1709200114_add_migration_indexUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x90\xc1\xaa\xc2\x30\x10\x45\xf7\xfd\x8a\x59\xbe\x07\xfe\x81\x2b\x69\x23\x74\xd3\x82\xed\xa2\xbb\x21\x24\x83\x09\xa5\x6d\x4c\x46\x30\x7f\x2f\x25\x16\x41\xb1\x2a\x6e\x66\x36\xf7\xdc\x03\x37\x3f\x88\x5d\x2b\xa0\xac\x0a\xd1\x41\xb9\x87\xaa\x6e\x41\x74\x65\xd3\x36\x60\xf5\x05\x8f\x7e\x3a\x3b\x64\x3b\x50\x60\x39\x38\xd4\x14\x54\x56\x57\x60\x64\x30\xe8\x25\x2b\x43\x8c\x34\x2a\x1f\x1d\xdb\x69\x84\xbf\x04\x58\xbd\x81\x9e\xe2\x1d\x84\x42\x34\xf9\xff\x36\xcb\xde\xf8\x5e\xf4\x62\x4f\x31\xcc\x07\xad\x5e\xd5\xa7\xc8\xaf\x22\x4d\xce\x93\x92\x4c\xfa\x13\xe7\x53\xfa\x5b\xbd\x92\xca\x10\x2e\xcb\xdd\x4a\x30\xd0\x09\xc7\x69\xc5\x9c\xb8\xc7\xc9\xe7\x9f\xd0\x65\xf3\x6b\x00\x00\x00\xff\xff\x97\xf4\x28\xe3\xe3\x01\x00\x00") + +func _1709200114_add_migration_indexUpSqlBytes() ([]byte, error) { + return bindataRead( + __1709200114_add_migration_indexUpSql, + "1709200114_add_migration_index.up.sql", + ) +} + +func _1709200114_add_migration_indexUpSql() (*asset, error) { + bytes, err := _1709200114_add_migration_indexUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1709200114_add_migration_index.up.sql", size: 483, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe2, 0xec, 0xd4, 0x54, 0xff, 0x5e, 0x6e, 0xaf, 0x3f, 0x2b, 0xb5, 0x76, 0xe9, 0x84, 0x2a, 0x4d, 0x1f, 0xd8, 0x22, 0x8b, 0x4b, 0x5c, 0xf1, 0xe0, 0x3a, 0x34, 0xc5, 0xed, 0xef, 0x74, 0xe4, 0x2b}} + return a, nil +} + +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbd\x6a\x2b\x31\x10\x85\xfb\x7d\x8a\x83\x1b\x37\x77\xa5\x1b\x08\x04\x02\x29\x52\xa6\xcf\x0b\x8c\xa5\x59\x69\xf0\x4a\xda\x68\x66\xfd\xf3\xf6\x61\x1d\x43\xdc\x65\xca\x0f\xbe\x73\xce\x78\x8f\xcf\x2c\x8a\x49\x66\x86\x28\x2a\x07\x56\xa5\x7e\xc5\x81\x03\xad\xca\xd8\x25\xb1\xbc\x1e\x5c\x68\xc5\xab\x91\xad\x3a\x4a\xf1\x45\x52\x27\x63\x7f\x7a\xde\x0d\xde\x23\x50\xdd\x1b\x32\xd5\x38\xf3\x2d\x4b\xa1\x46\xdd\xa4\x26\x9c\xc5\x32\x08\x4b\xe7\x49\x2e\x0e\xef\x86\x99\x49\x0d\x96\xc9\xf6\x0a\xcb\x8c\x40\xca\x5b\xcc\xd4\x3a\x52\x1b\x0f\x52\x23\x19\xb9\x0d\x7d\x4c\x0f\x64\x5b\x18\x68\x9e\x39\x62\xea\xad\xdc\x5c\xa5\xc2\x88\xd2\x39\x58\xeb\xd7\x7f\x20\x55\x36\x54\x2a\xac\x9b\x9f\xe9\xc4\xa8\xed\x5e\x0f\xaa\xf1\xef\x8f\x70\x6e\xfd\xa8\x20\x05\x5f\x16\x0e\xc6\xd1\x0d\xc3\x42\xe1\x48\x89\xa1\x5f\xb3\x18\x0f\x83\xf7\xa9\xbd\x26\xae\xbc\x59\x8f\x1b\xc7\xd2\xa2\x49\xe1\xb7\xa7\x97\xff\xf7\xc3\xb8\x1c\x13\x7e\x1a\xa4\x55\xc5\xd8\xe0\x9c\xff\x05\x2e\x35\xb8\xe1\x3b\x00\x00\xff\xff\x73\x18\x09\xa7\x8d\x01\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -482,8 +524,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}} + info := bindataFileInfo{name: "doc.go", size: 397, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xd0, 0xec, 0xce, 0xa1, 0x5d, 0x5f, 0x7d, 0x3d, 0xc5, 0xba, 0xdd, 0xe3, 0x71, 0xc9, 0x56, 0xc3, 0x54, 0xd7, 0x57, 0x2d, 0xca, 0xd5, 0x87, 0x1a, 0xa9, 0xff, 0x23, 0xf6, 0xa2, 0x1, 0xb7}} return a, nil } @@ -597,6 +639,8 @@ var _bindata = map[string]func() (*asset, error){ "1632236298_add_communities.down.sql": _1632236298_add_communitiesDownSql, "1632236298_add_communities.up.sql": _1632236298_add_communitiesUpSql, "1636536507_add_index_bundles.up.sql": _1636536507_add_index_bundlesUpSql, + "1698137564_add_migration_index.up.sql": _1698137564_add_migration_indexUpSql, + "1709200114_add_migration_index.up.sql": _1709200114_add_migration_indexUpSql, "doc.go": docGo, } @@ -665,6 +709,8 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1632236298_add_communities.down.sql": {_1632236298_add_communitiesDownSql, map[string]*bintree{}}, "1632236298_add_communities.up.sql": {_1632236298_add_communitiesUpSql, map[string]*bintree{}}, "1636536507_add_index_bundles.up.sql": {_1636536507_add_index_bundlesUpSql, map[string]*bintree{}}, + "1698137564_add_migration_index.up.sql": {_1698137564_add_migration_indexUpSql, map[string]*bintree{}}, + "1709200114_add_migration_index.up.sql": {_1709200114_add_migration_indexUpSql, map[string]*bintree{}}, "doc.go": {docGo, map[string]*bintree{}}, }} diff --git a/vendor/github.com/status-im/status-go/protocol/encryption/persistence.go b/vendor/github.com/status-im/status-go/protocol/encryption/persistence.go index 2d7b48db..3988aea0 100644 --- a/vendor/github.com/status-im/status-go/protocol/encryption/persistence.go +++ b/vendor/github.com/status-im/status-go/protocol/encryption/persistence.go @@ -1,6 +1,7 @@ package encryption import ( + "context" "crypto/ecdsa" "database/sql" "errors" @@ -742,52 +743,53 @@ type HRCache struct { // If cache data with given seqNo (e.g. 0) is not found, // then the query will return the cache data with the latest seqNo func (s *sqlitePersistence) GetHashRatchetCache(ratchet *HashRatchetKeyCompatibility, seqNo uint32) (*HRCache, error) { - stmt, err := s.DB.Prepare(`WITH input AS ( - select ? AS group_id, ? AS key_id, ? as seq_no, ? AS old_key_id - ), - cec AS ( - SELECT e.key, c.seq_no, c.hash FROM hash_ratchet_encryption e, input i - LEFT JOIN hash_ratchet_encryption_cache c ON e.group_id=c.group_id AND (e.key_id=c.key_id OR e.deprecated_key_id=c.key_id) - WHERE (e.key_id=i.key_id OR e.deprecated_key_id=i.old_key_id) AND e.group_id=i.group_id), - seq_nos AS ( - select CASE - WHEN EXISTS (SELECT c.seq_no from cec c, input i where c.seq_no=i.seq_no) - THEN i.seq_no - ELSE (select max(seq_no) from cec) - END as seq_no from input i - ) - SELECT c.key, c.seq_no, c.hash FROM cec c, input i, seq_nos s - where case when not exists(select seq_no from seq_nos where seq_no is not null) - then 1 else c.seq_no = s.seq_no end`) + tx, err := s.DB.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return nil, err } - defer stmt.Close() + defer func() { + if err == nil { + err = tx.Commit() + return + } + // don't shadow original error + _ = tx.Rollback() + }() - var key, hash []byte - var seqNoPtr *uint32 - - oldFormat := ratchet.IsOldFormat() - if oldFormat { - // Query using the deprecated format - err = stmt.QueryRow(ratchet.GroupID, nil, seqNo, ratchet.DeprecatedKeyID()).Scan(&key, &seqNoPtr, &hash) //nolint: ineffassign - - } else { - keyID, err := ratchet.GetKeyID() + var key, keyID []byte + if !ratchet.IsOldFormat() { + keyID, err = ratchet.GetKeyID() if err != nil { return nil, err } - - err = stmt.QueryRow(ratchet.GroupID, keyID, seqNo, ratchet.DeprecatedKeyID()).Scan(&key, &seqNoPtr, &hash) //nolint: ineffassign,staticcheck } - if len(hash) == 0 && len(key) == 0 { + + err = tx.QueryRow("SELECT key FROM hash_ratchet_encryption WHERE key_id = ? OR deprecated_key_id = ?", keyID, ratchet.DeprecatedKeyID()).Scan(&key) + if err == sql.ErrNoRows { return nil, nil } + if err != nil { + return nil, err + } + args := make([]interface{}, 0) + args = append(args, ratchet.GroupID) + args = append(args, keyID) + args = append(args, ratchet.DeprecatedKeyID()) + var query string + if seqNo == 0 { + query = "SELECT seq_no, hash FROM hash_ratchet_encryption_cache WHERE group_id = ? AND (key_id = ? OR key_id = ?) ORDER BY seq_no DESC limit 1" + } else { + query = "SELECT seq_no, hash FROM hash_ratchet_encryption_cache WHERE group_id = ? AND (key_id = ? OR key_id = ?) AND seq_no == ? ORDER BY seq_no DESC limit 1" + args = append(args, seqNo) + } + + var hash []byte + var seqNoPtr *uint32 + + err = tx.QueryRow(query, args...).Scan(&seqNoPtr, &hash) //nolint: ineffassign,staticcheck switch err { - case sql.ErrNoRows: - return nil, nil - case nil: + case sql.ErrNoRows, nil: var seqNoResult uint32 if seqNoPtr == nil { seqNoResult = 0 diff --git a/vendor/github.com/status-im/status-go/protocol/encryption/protocol.go b/vendor/github.com/status-im/status-go/protocol/encryption/protocol.go index 5d211f6a..28907c40 100644 --- a/vendor/github.com/status-im/status-go/protocol/encryption/protocol.go +++ b/vendor/github.com/status-im/status-go/protocol/encryption/protocol.go @@ -26,6 +26,7 @@ const ( sharedSecretNegotiationVersion = 1 partitionedTopicMinVersion = 1 defaultMinVersion = 0 + maxKeysChannelSize = 10000 ) type PartitionTopicMode int @@ -121,9 +122,10 @@ func NewWithEncryptorConfig( } type Subscriptions struct { - SharedSecrets []*sharedsecret.Secret - SendContactCode <-chan struct{} - Quit chan struct{} + SharedSecrets []*sharedsecret.Secret + SendContactCode <-chan struct{} + NewHashRatchetKeys chan []*HashRatchetInfo + Quit chan struct{} } func (p *Protocol) Start(myIdentity *ecdsa.PrivateKey) (*Subscriptions, error) { @@ -133,9 +135,10 @@ func (p *Protocol) Start(myIdentity *ecdsa.PrivateKey) (*Subscriptions, error) { return nil, errors.Wrap(err, "failed to get all secrets") } p.subscriptions = &Subscriptions{ - SharedSecrets: secrets, - SendContactCode: p.publisher.Start(), - Quit: make(chan struct{}), + SharedSecrets: secrets, + SendContactCode: p.publisher.Start(), + NewHashRatchetKeys: make(chan []*HashRatchetInfo, maxKeysChannelSize), + Quit: make(chan struct{}), } return p.subscriptions, nil } @@ -234,16 +237,45 @@ func (p *Protocol) GenerateHashRatchetKey(groupID []byte) (*HashRatchetKeyCompat return p.encryptor.GenerateHashRatchetKey(groupID) } -func (p *Protocol) GetAllHREncodedKeys(groupID []byte) ([]byte, error) { - keys, err := p.encryptor.persistence.GetKeysForGroup(groupID) +// Deprecated: This function is deprecated as it does not marshal groupID. Kept for backward compatibility. +func (p *Protocol) GetAllHRKeysMarshaledV1(groupID []byte) ([]byte, error) { + keys, err := p.GetAllHRKeys(groupID) if err != nil { return nil, err } - if len(keys) == 0 { + if keys == nil { return nil, nil } - return p.GetMarshaledHREncodedKeys(groupID, keys) + return proto.Marshal(keys) +} + +func (p *Protocol) GetAllHRKeysMarshaledV2(groupID []byte) ([]byte, error) { + keys, err := p.GetAllHRKeys(groupID) + if err != nil { + return nil, err + } + if keys == nil { + return nil, nil + } + + header := &HRHeader{ + SeqNo: 0, + GroupId: groupID, + Keys: keys, + } + return proto.Marshal(header) +} + +func (p *Protocol) GetAllHRKeys(groupID []byte) (*HRKeys, error) { + ratchets, err := p.encryptor.persistence.GetKeysForGroup(groupID) + if err != nil { + return nil, err + } + if len(ratchets) == 0 { + return nil, nil + } + return p.GetHRKeys(ratchets), nil } // GetKeyIDsForGroup returns a slice of key IDs belonging to a given group ID @@ -251,7 +283,7 @@ func (p *Protocol) GetKeysForGroup(groupID []byte) ([]*HashRatchetKeyCompatibili return p.encryptor.persistence.GetKeysForGroup(groupID) } -func (p *Protocol) GetHREncodedKeys(groupID []byte, ratchets []*HashRatchetKeyCompatibility) *HRKeys { +func (p *Protocol) GetHRKeys(ratchets []*HashRatchetKeyCompatibility) *HRKeys { keys := &HRKeys{} for _, ratchet := range ratchets { key := &HRKey{ @@ -265,11 +297,6 @@ func (p *Protocol) GetHREncodedKeys(groupID []byte, ratchets []*HashRatchetKeyCo return keys } -func (p *Protocol) GetMarshaledHREncodedKeys(groupID []byte, ratchets []*HashRatchetKeyCompatibility) ([]byte, error) { - keys := p.GetHREncodedKeys(groupID, ratchets) - return proto.Marshal(keys) -} - // BuildHashRatchetRekeyGroup builds a public message // with the new key func (p *Protocol) BuildHashRatchetReKeyGroupMessage(myIdentityKey *ecdsa.PrivateKey, recipients []*ecdsa.PublicKey, groupID []byte, payload []byte, ratchet *HashRatchetKeyCompatibility) (*ProtocolMessageSpec, error) { @@ -313,7 +340,7 @@ func (p *Protocol) BuildHashRatchetReKeyGroupMessage(myIdentityKey *ecdsa.Privat // containing newly generated hash ratchet key func (p *Protocol) BuildHashRatchetKeyExchangeMessage(myIdentityKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey, groupID []byte, ratchets []*HashRatchetKeyCompatibility) (*ProtocolMessageSpec, error) { - keys := p.GetHREncodedKeys(groupID, ratchets) + keys := p.GetHRKeys(ratchets) encodedKeys, err := proto.Marshal(keys) if err != nil { @@ -342,7 +369,7 @@ func (p *Protocol) BuildHashRatchetKeyExchangeMessage(myIdentityKey *ecdsa.Priva func (p *Protocol) BuildHashRatchetKeyExchangeMessageWithPayload(myIdentityKey *ecdsa.PrivateKey, publicKey *ecdsa.PublicKey, groupID []byte, ratchets []*HashRatchetKeyCompatibility, payload []byte) (*ProtocolMessageSpec, error) { - keys := p.GetHREncodedKeys(groupID, ratchets) + keys := p.GetHRKeys(ratchets) response, err := p.BuildEncryptedMessage(myIdentityKey, publicKey, payload) if err != nil { @@ -578,7 +605,6 @@ type DecryptMessageResponse struct { } func (p *Protocol) HandleHashRatchetKeysPayload(groupID, encodedKeys []byte, myIdentityKey *ecdsa.PrivateKey, theirIdentityKey *ecdsa.PublicKey) ([]*HashRatchetInfo, error) { - keys := &HRKeys{} err := proto.Unmarshal(encodedKeys, keys) if err != nil { @@ -587,6 +613,21 @@ func (p *Protocol) HandleHashRatchetKeysPayload(groupID, encodedKeys []byte, myI return p.HandleHashRatchetKeys(groupID, keys, myIdentityKey, theirIdentityKey) } +func (p *Protocol) HandleHashRatchetHeadersPayload(encodedHeaders [][]byte) error { + for _, encodedHeader := range encodedHeaders { + header := &HRHeader{} + err := proto.Unmarshal(encodedHeader, header) + if err != nil { + return err + } + _, err = p.HandleHashRatchetKeys(header.GroupId, header.Keys, nil, nil) + if err != nil { + return err + } + } + return nil +} + func (p *Protocol) HandleHashRatchetKeys(groupID []byte, keys *HRKeys, myIdentityKey *ecdsa.PrivateKey, theirIdentityKey *ecdsa.PublicKey) ([]*HashRatchetInfo, error) { if keys == nil { return nil, nil @@ -653,6 +694,10 @@ func (p *Protocol) HandleHashRatchetKeys(groupID []byte, keys *HRKeys, myIdentit } } + if p.subscriptions != nil { + p.subscriptions.NewHashRatchetKeys <- info + } + return info, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/encryption/protocol_message.pb.go b/vendor/github.com/status-im/status-go/protocol/encryption/protocol_message.pb.go index 4b9f8761..2302c517 100644 --- a/vendor/github.com/status-im/status-go/protocol/encryption/protocol_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/encryption/protocol_message.pb.go @@ -1,82 +1,94 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: protocol_message.proto package encryption import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SignedPreKey struct { - SignedPreKey []byte `protobuf:"bytes,1,opt,name=signed_pre_key,json=signedPreKey,proto3" json:"signed_pre_key,omitempty"` - Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - ProtocolVersion uint32 `protobuf:"varint,3,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SignedPreKey []byte `protobuf:"bytes,1,opt,name=signed_pre_key,json=signedPreKey,proto3" json:"signed_pre_key,omitempty"` + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + ProtocolVersion uint32 `protobuf:"varint,3,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` } -func (m *SignedPreKey) Reset() { *m = SignedPreKey{} } -func (m *SignedPreKey) String() string { return proto.CompactTextString(m) } -func (*SignedPreKey) ProtoMessage() {} +func (x *SignedPreKey) Reset() { + *x = SignedPreKey{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedPreKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedPreKey) ProtoMessage() {} + +func (x *SignedPreKey) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedPreKey.ProtoReflect.Descriptor instead. func (*SignedPreKey) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{0} + return file_protocol_message_proto_rawDescGZIP(), []int{0} } -func (m *SignedPreKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignedPreKey.Unmarshal(m, b) -} -func (m *SignedPreKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignedPreKey.Marshal(b, m, deterministic) -} -func (m *SignedPreKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignedPreKey.Merge(m, src) -} -func (m *SignedPreKey) XXX_Size() int { - return xxx_messageInfo_SignedPreKey.Size(m) -} -func (m *SignedPreKey) XXX_DiscardUnknown() { - xxx_messageInfo_SignedPreKey.DiscardUnknown(m) -} - -var xxx_messageInfo_SignedPreKey proto.InternalMessageInfo - -func (m *SignedPreKey) GetSignedPreKey() []byte { - if m != nil { - return m.SignedPreKey +func (x *SignedPreKey) GetSignedPreKey() []byte { + if x != nil { + return x.SignedPreKey } return nil } -func (m *SignedPreKey) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *SignedPreKey) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *SignedPreKey) GetProtocolVersion() uint32 { - if m != nil { - return m.ProtocolVersion +func (x *SignedPreKey) GetProtocolVersion() uint32 { + if x != nil { + return x.ProtocolVersion } return 0 } // X3DH prekey bundle type Bundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Identity key Identity []byte `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` // Installation id @@ -84,115 +96,131 @@ type Bundle struct { // Prekey signature Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` // When the bundle was created locally - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *Bundle) Reset() { *m = Bundle{} } -func (m *Bundle) String() string { return proto.CompactTextString(m) } -func (*Bundle) ProtoMessage() {} +func (x *Bundle) Reset() { + *x = Bundle{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bundle) ProtoMessage() {} + +func (x *Bundle) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bundle.ProtoReflect.Descriptor instead. func (*Bundle) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{1} + return file_protocol_message_proto_rawDescGZIP(), []int{1} } -func (m *Bundle) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Bundle.Unmarshal(m, b) -} -func (m *Bundle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Bundle.Marshal(b, m, deterministic) -} -func (m *Bundle) XXX_Merge(src proto.Message) { - xxx_messageInfo_Bundle.Merge(m, src) -} -func (m *Bundle) XXX_Size() int { - return xxx_messageInfo_Bundle.Size(m) -} -func (m *Bundle) XXX_DiscardUnknown() { - xxx_messageInfo_Bundle.DiscardUnknown(m) -} - -var xxx_messageInfo_Bundle proto.InternalMessageInfo - -func (m *Bundle) GetIdentity() []byte { - if m != nil { - return m.Identity +func (x *Bundle) GetIdentity() []byte { + if x != nil { + return x.Identity } return nil } -func (m *Bundle) GetSignedPreKeys() map[string]*SignedPreKey { - if m != nil { - return m.SignedPreKeys +func (x *Bundle) GetSignedPreKeys() map[string]*SignedPreKey { + if x != nil { + return x.SignedPreKeys } return nil } -func (m *Bundle) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *Bundle) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *Bundle) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *Bundle) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } type BundleContainer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // X3DH prekey bundle Bundle *Bundle `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"` // Private signed prekey - PrivateSignedPreKey []byte `protobuf:"bytes,2,opt,name=private_signed_pre_key,json=privateSignedPreKey,proto3" json:"private_signed_pre_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrivateSignedPreKey []byte `protobuf:"bytes,2,opt,name=private_signed_pre_key,json=privateSignedPreKey,proto3" json:"private_signed_pre_key,omitempty"` } -func (m *BundleContainer) Reset() { *m = BundleContainer{} } -func (m *BundleContainer) String() string { return proto.CompactTextString(m) } -func (*BundleContainer) ProtoMessage() {} +func (x *BundleContainer) Reset() { + *x = BundleContainer{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BundleContainer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BundleContainer) ProtoMessage() {} + +func (x *BundleContainer) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BundleContainer.ProtoReflect.Descriptor instead. func (*BundleContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{2} + return file_protocol_message_proto_rawDescGZIP(), []int{2} } -func (m *BundleContainer) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BundleContainer.Unmarshal(m, b) -} -func (m *BundleContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BundleContainer.Marshal(b, m, deterministic) -} -func (m *BundleContainer) XXX_Merge(src proto.Message) { - xxx_messageInfo_BundleContainer.Merge(m, src) -} -func (m *BundleContainer) XXX_Size() int { - return xxx_messageInfo_BundleContainer.Size(m) -} -func (m *BundleContainer) XXX_DiscardUnknown() { - xxx_messageInfo_BundleContainer.DiscardUnknown(m) -} - -var xxx_messageInfo_BundleContainer proto.InternalMessageInfo - -func (m *BundleContainer) GetBundle() *Bundle { - if m != nil { - return m.Bundle +func (x *BundleContainer) GetBundle() *Bundle { + if x != nil { + return x.Bundle } return nil } -func (m *BundleContainer) GetPrivateSignedPreKey() []byte { - if m != nil { - return m.PrivateSignedPreKey +func (x *BundleContainer) GetPrivateSignedPreKey() []byte { + if x != nil { + return x.PrivateSignedPreKey } return nil } type DRHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Current ratchet public key Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Number of the message in the sending chain @@ -200,156 +228,180 @@ type DRHeader struct { // Length of the previous sending chain Pn uint32 `protobuf:"varint,3,opt,name=pn,proto3" json:"pn,omitempty"` // Bundle ID - Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DRHeader) Reset() { *m = DRHeader{} } -func (m *DRHeader) String() string { return proto.CompactTextString(m) } -func (*DRHeader) ProtoMessage() {} +func (x *DRHeader) Reset() { + *x = DRHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DRHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DRHeader) ProtoMessage() {} + +func (x *DRHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DRHeader.ProtoReflect.Descriptor instead. func (*DRHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{3} + return file_protocol_message_proto_rawDescGZIP(), []int{3} } -func (m *DRHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DRHeader.Unmarshal(m, b) -} -func (m *DRHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DRHeader.Marshal(b, m, deterministic) -} -func (m *DRHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_DRHeader.Merge(m, src) -} -func (m *DRHeader) XXX_Size() int { - return xxx_messageInfo_DRHeader.Size(m) -} -func (m *DRHeader) XXX_DiscardUnknown() { - xxx_messageInfo_DRHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_DRHeader proto.InternalMessageInfo - -func (m *DRHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *DRHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *DRHeader) GetN() uint32 { - if m != nil { - return m.N +func (x *DRHeader) GetN() uint32 { + if x != nil { + return x.N } return 0 } -func (m *DRHeader) GetPn() uint32 { - if m != nil { - return m.Pn +func (x *DRHeader) GetPn() uint32 { + if x != nil { + return x.Pn } return 0 } -func (m *DRHeader) GetId() []byte { - if m != nil { - return m.Id +func (x *DRHeader) GetId() []byte { + if x != nil { + return x.Id } return nil } type DHHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Compressed ephemeral public key - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (m *DHHeader) Reset() { *m = DHHeader{} } -func (m *DHHeader) String() string { return proto.CompactTextString(m) } -func (*DHHeader) ProtoMessage() {} +func (x *DHHeader) Reset() { + *x = DHHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DHHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DHHeader) ProtoMessage() {} + +func (x *DHHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DHHeader.ProtoReflect.Descriptor instead. func (*DHHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{4} + return file_protocol_message_proto_rawDescGZIP(), []int{4} } -func (m *DHHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DHHeader.Unmarshal(m, b) -} -func (m *DHHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DHHeader.Marshal(b, m, deterministic) -} -func (m *DHHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_DHHeader.Merge(m, src) -} -func (m *DHHeader) XXX_Size() int { - return xxx_messageInfo_DHHeader.Size(m) -} -func (m *DHHeader) XXX_DiscardUnknown() { - xxx_messageInfo_DHHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_DHHeader proto.InternalMessageInfo - -func (m *DHHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *DHHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } type X3DHHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Ephemeral key used Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Used bundle's signed prekey - Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id []byte `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"` } -func (m *X3DHHeader) Reset() { *m = X3DHHeader{} } -func (m *X3DHHeader) String() string { return proto.CompactTextString(m) } -func (*X3DHHeader) ProtoMessage() {} +func (x *X3DHHeader) Reset() { + *x = X3DHHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *X3DHHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*X3DHHeader) ProtoMessage() {} + +func (x *X3DHHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use X3DHHeader.ProtoReflect.Descriptor instead. func (*X3DHHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{5} + return file_protocol_message_proto_rawDescGZIP(), []int{5} } -func (m *X3DHHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_X3DHHeader.Unmarshal(m, b) -} -func (m *X3DHHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_X3DHHeader.Marshal(b, m, deterministic) -} -func (m *X3DHHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_X3DHHeader.Merge(m, src) -} -func (m *X3DHHeader) XXX_Size() int { - return xxx_messageInfo_X3DHHeader.Size(m) -} -func (m *X3DHHeader) XXX_DiscardUnknown() { - xxx_messageInfo_X3DHHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_X3DHHeader proto.InternalMessageInfo - -func (m *X3DHHeader) GetKey() []byte { - if m != nil { - return m.Key +func (x *X3DHHeader) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *X3DHHeader) GetId() []byte { - if m != nil { - return m.Id +func (x *X3DHHeader) GetId() []byte { + if x != nil { + return x.Id } return nil } // Hash Ratchet Header type HRHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // deprecated group key ID DeprecatedKeyId uint32 `protobuf:"varint,1,opt,name=deprecated_key_id,json=deprecatedKeyId,proto3" json:"deprecated_key_id,omitempty"` // group message number for this key_id @@ -357,297 +409,337 @@ type HRHeader struct { // group ID GroupId []byte `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // group key ID - KeyId []byte `protobuf:"bytes,4,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - Keys *HRKeys `protobuf:"bytes,5,opt,name=keys,proto3" json:"keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + KeyId []byte `protobuf:"bytes,4,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + Keys *HRKeys `protobuf:"bytes,5,opt,name=keys,proto3" json:"keys,omitempty"` } -func (m *HRHeader) Reset() { *m = HRHeader{} } -func (m *HRHeader) String() string { return proto.CompactTextString(m) } -func (*HRHeader) ProtoMessage() {} +func (x *HRHeader) Reset() { + *x = HRHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRHeader) ProtoMessage() {} + +func (x *HRHeader) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRHeader.ProtoReflect.Descriptor instead. func (*HRHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{6} + return file_protocol_message_proto_rawDescGZIP(), []int{6} } -func (m *HRHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRHeader.Unmarshal(m, b) -} -func (m *HRHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRHeader.Marshal(b, m, deterministic) -} -func (m *HRHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRHeader.Merge(m, src) -} -func (m *HRHeader) XXX_Size() int { - return xxx_messageInfo_HRHeader.Size(m) -} -func (m *HRHeader) XXX_DiscardUnknown() { - xxx_messageInfo_HRHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_HRHeader proto.InternalMessageInfo - -func (m *HRHeader) GetDeprecatedKeyId() uint32 { - if m != nil { - return m.DeprecatedKeyId +func (x *HRHeader) GetDeprecatedKeyId() uint32 { + if x != nil { + return x.DeprecatedKeyId } return 0 } -func (m *HRHeader) GetSeqNo() uint32 { - if m != nil { - return m.SeqNo +func (x *HRHeader) GetSeqNo() uint32 { + if x != nil { + return x.SeqNo } return 0 } -func (m *HRHeader) GetGroupId() []byte { - if m != nil { - return m.GroupId +func (x *HRHeader) GetGroupId() []byte { + if x != nil { + return x.GroupId } return nil } -func (m *HRHeader) GetKeyId() []byte { - if m != nil { - return m.KeyId +func (x *HRHeader) GetKeyId() []byte { + if x != nil { + return x.KeyId } return nil } -func (m *HRHeader) GetKeys() *HRKeys { - if m != nil { - return m.Keys +func (x *HRHeader) GetKeys() *HRKeys { + if x != nil { + return x.Keys } return nil } type RekeyGroup struct { - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Keys map[uint32][]byte `protobuf:"bytes,4,rep,name=keys,proto3" json:"keys,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Keys map[uint32][]byte `protobuf:"bytes,4,rep,name=keys,proto3" json:"keys,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *RekeyGroup) Reset() { *m = RekeyGroup{} } -func (m *RekeyGroup) String() string { return proto.CompactTextString(m) } -func (*RekeyGroup) ProtoMessage() {} +func (x *RekeyGroup) Reset() { + *x = RekeyGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RekeyGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RekeyGroup) ProtoMessage() {} + +func (x *RekeyGroup) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RekeyGroup.ProtoReflect.Descriptor instead. func (*RekeyGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{7} + return file_protocol_message_proto_rawDescGZIP(), []int{7} } -func (m *RekeyGroup) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RekeyGroup.Unmarshal(m, b) -} -func (m *RekeyGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RekeyGroup.Marshal(b, m, deterministic) -} -func (m *RekeyGroup) XXX_Merge(src proto.Message) { - xxx_messageInfo_RekeyGroup.Merge(m, src) -} -func (m *RekeyGroup) XXX_Size() int { - return xxx_messageInfo_RekeyGroup.Size(m) -} -func (m *RekeyGroup) XXX_DiscardUnknown() { - xxx_messageInfo_RekeyGroup.DiscardUnknown(m) -} - -var xxx_messageInfo_RekeyGroup proto.InternalMessageInfo - -func (m *RekeyGroup) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *RekeyGroup) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *RekeyGroup) GetKeys() map[uint32][]byte { - if m != nil { - return m.Keys +func (x *RekeyGroup) GetKeys() map[uint32][]byte { + if x != nil { + return x.Keys } return nil } type HRKeys struct { - Keys []*HRKey `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - RekeyGroup *RekeyGroup `protobuf:"bytes,2,opt,name=rekey_group,json=rekeyGroup,proto3" json:"rekey_group,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []*HRKey `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + RekeyGroup *RekeyGroup `protobuf:"bytes,2,opt,name=rekey_group,json=rekeyGroup,proto3" json:"rekey_group,omitempty"` } -func (m *HRKeys) Reset() { *m = HRKeys{} } -func (m *HRKeys) String() string { return proto.CompactTextString(m) } -func (*HRKeys) ProtoMessage() {} +func (x *HRKeys) Reset() { + *x = HRKeys{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRKeys) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRKeys) ProtoMessage() {} + +func (x *HRKeys) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRKeys.ProtoReflect.Descriptor instead. func (*HRKeys) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{8} + return file_protocol_message_proto_rawDescGZIP(), []int{8} } -func (m *HRKeys) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRKeys.Unmarshal(m, b) -} -func (m *HRKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRKeys.Marshal(b, m, deterministic) -} -func (m *HRKeys) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRKeys.Merge(m, src) -} -func (m *HRKeys) XXX_Size() int { - return xxx_messageInfo_HRKeys.Size(m) -} -func (m *HRKeys) XXX_DiscardUnknown() { - xxx_messageInfo_HRKeys.DiscardUnknown(m) -} - -var xxx_messageInfo_HRKeys proto.InternalMessageInfo - -func (m *HRKeys) GetKeys() []*HRKey { - if m != nil { - return m.Keys +func (x *HRKeys) GetKeys() []*HRKey { + if x != nil { + return x.Keys } return nil } -func (m *HRKeys) GetRekeyGroup() *RekeyGroup { - if m != nil { - return m.RekeyGroup +func (x *HRKeys) GetRekeyGroup() *RekeyGroup { + if x != nil { + return x.RekeyGroup } return nil } type HRKey struct { - DeprecatedKeyId uint32 `protobuf:"varint,1,opt,name=deprecated_key_id,json=deprecatedKeyId,proto3" json:"deprecated_key_id,omitempty"` - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeprecatedKeyId uint32 `protobuf:"varint,1,opt,name=deprecated_key_id,json=deprecatedKeyId,proto3" json:"deprecated_key_id,omitempty"` + Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *HRKey) Reset() { *m = HRKey{} } -func (m *HRKey) String() string { return proto.CompactTextString(m) } -func (*HRKey) ProtoMessage() {} +func (x *HRKey) Reset() { + *x = HRKey{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *HRKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HRKey) ProtoMessage() {} + +func (x *HRKey) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use HRKey.ProtoReflect.Descriptor instead. func (*HRKey) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{9} + return file_protocol_message_proto_rawDescGZIP(), []int{9} } -func (m *HRKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_HRKey.Unmarshal(m, b) -} -func (m *HRKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_HRKey.Marshal(b, m, deterministic) -} -func (m *HRKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_HRKey.Merge(m, src) -} -func (m *HRKey) XXX_Size() int { - return xxx_messageInfo_HRKey.Size(m) -} -func (m *HRKey) XXX_DiscardUnknown() { - xxx_messageInfo_HRKey.DiscardUnknown(m) -} - -var xxx_messageInfo_HRKey proto.InternalMessageInfo - -func (m *HRKey) GetDeprecatedKeyId() uint32 { - if m != nil { - return m.DeprecatedKeyId +func (x *HRKey) GetDeprecatedKeyId() uint32 { + if x != nil { + return x.DeprecatedKeyId } return 0 } -func (m *HRKey) GetKey() []byte { - if m != nil { - return m.Key +func (x *HRKey) GetKey() []byte { + if x != nil { + return x.Key } return nil } -func (m *HRKey) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *HRKey) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } // Direct message value type EncryptedMessageProtocol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + X3DHHeader *X3DHHeader `protobuf:"bytes,1,opt,name=X3DH_header,json=X3DHHeader,proto3" json:"X3DH_header,omitempty"` DRHeader *DRHeader `protobuf:"bytes,2,opt,name=DR_header,json=DRHeader,proto3" json:"DR_header,omitempty"` DHHeader *DHHeader `protobuf:"bytes,101,opt,name=DH_header,json=DHHeader,proto3" json:"DH_header,omitempty"` HRHeader *HRHeader `protobuf:"bytes,102,opt,name=HR_header,json=HRHeader,proto3" json:"HR_header,omitempty"` // Encrypted payload - Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *EncryptedMessageProtocol) Reset() { *m = EncryptedMessageProtocol{} } -func (m *EncryptedMessageProtocol) String() string { return proto.CompactTextString(m) } -func (*EncryptedMessageProtocol) ProtoMessage() {} +func (x *EncryptedMessageProtocol) Reset() { + *x = EncryptedMessageProtocol{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EncryptedMessageProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptedMessageProtocol) ProtoMessage() {} + +func (x *EncryptedMessageProtocol) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptedMessageProtocol.ProtoReflect.Descriptor instead. func (*EncryptedMessageProtocol) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{10} + return file_protocol_message_proto_rawDescGZIP(), []int{10} } -func (m *EncryptedMessageProtocol) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EncryptedMessageProtocol.Unmarshal(m, b) -} -func (m *EncryptedMessageProtocol) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EncryptedMessageProtocol.Marshal(b, m, deterministic) -} -func (m *EncryptedMessageProtocol) XXX_Merge(src proto.Message) { - xxx_messageInfo_EncryptedMessageProtocol.Merge(m, src) -} -func (m *EncryptedMessageProtocol) XXX_Size() int { - return xxx_messageInfo_EncryptedMessageProtocol.Size(m) -} -func (m *EncryptedMessageProtocol) XXX_DiscardUnknown() { - xxx_messageInfo_EncryptedMessageProtocol.DiscardUnknown(m) -} - -var xxx_messageInfo_EncryptedMessageProtocol proto.InternalMessageInfo - -func (m *EncryptedMessageProtocol) GetX3DHHeader() *X3DHHeader { - if m != nil { - return m.X3DHHeader +func (x *EncryptedMessageProtocol) GetX3DHHeader() *X3DHHeader { + if x != nil { + return x.X3DHHeader } return nil } -func (m *EncryptedMessageProtocol) GetDRHeader() *DRHeader { - if m != nil { - return m.DRHeader +func (x *EncryptedMessageProtocol) GetDRHeader() *DRHeader { + if x != nil { + return x.DRHeader } return nil } -func (m *EncryptedMessageProtocol) GetDHHeader() *DHHeader { - if m != nil { - return m.DHHeader +func (x *EncryptedMessageProtocol) GetDHHeader() *DHHeader { + if x != nil { + return x.DHHeader } return nil } -func (m *EncryptedMessageProtocol) GetHRHeader() *HRHeader { - if m != nil { - return m.HRHeader +func (x *EncryptedMessageProtocol) GetHRHeader() *HRHeader { + if x != nil { + return x.HRHeader } return nil } -func (m *EncryptedMessageProtocol) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *EncryptedMessageProtocol) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } // Top-level protocol message type ProtocolMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The device id of the sender InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` // List of bundles @@ -656,136 +748,411 @@ type ProtocolMessage struct { // TODO map here is redundant in case of community messages EncryptedMessage map[string]*EncryptedMessageProtocol `protobuf:"bytes,101,rep,name=encrypted_message,json=encryptedMessage,proto3" json:"encrypted_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Public chats, not encrypted - PublicMessage []byte `protobuf:"bytes,102,opt,name=public_message,json=publicMessage,proto3" json:"public_message,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PublicMessage []byte `protobuf:"bytes,102,opt,name=public_message,json=publicMessage,proto3" json:"public_message,omitempty"` } -func (m *ProtocolMessage) Reset() { *m = ProtocolMessage{} } -func (m *ProtocolMessage) String() string { return proto.CompactTextString(m) } -func (*ProtocolMessage) ProtoMessage() {} +func (x *ProtocolMessage) Reset() { + *x = ProtocolMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_message_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProtocolMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProtocolMessage) ProtoMessage() {} + +func (x *ProtocolMessage) ProtoReflect() protoreflect.Message { + mi := &file_protocol_message_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead. func (*ProtocolMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_4e37b52004a72e16, []int{11} + return file_protocol_message_proto_rawDescGZIP(), []int{11} } -func (m *ProtocolMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProtocolMessage.Unmarshal(m, b) -} -func (m *ProtocolMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProtocolMessage.Marshal(b, m, deterministic) -} -func (m *ProtocolMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProtocolMessage.Merge(m, src) -} -func (m *ProtocolMessage) XXX_Size() int { - return xxx_messageInfo_ProtocolMessage.Size(m) -} -func (m *ProtocolMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ProtocolMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ProtocolMessage proto.InternalMessageInfo - -func (m *ProtocolMessage) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *ProtocolMessage) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *ProtocolMessage) GetBundles() []*Bundle { - if m != nil { - return m.Bundles +func (x *ProtocolMessage) GetBundles() []*Bundle { + if x != nil { + return x.Bundles } return nil } -func (m *ProtocolMessage) GetEncryptedMessage() map[string]*EncryptedMessageProtocol { - if m != nil { - return m.EncryptedMessage +func (x *ProtocolMessage) GetEncryptedMessage() map[string]*EncryptedMessageProtocol { + if x != nil { + return x.EncryptedMessage } return nil } -func (m *ProtocolMessage) GetPublicMessage() []byte { - if m != nil { - return m.PublicMessage +func (x *ProtocolMessage) GetPublicMessage() []byte { + if x != nil { + return x.PublicMessage } return nil } -func init() { - proto.RegisterType((*SignedPreKey)(nil), "encryption.SignedPreKey") - proto.RegisterType((*Bundle)(nil), "encryption.Bundle") - proto.RegisterMapType((map[string]*SignedPreKey)(nil), "encryption.Bundle.SignedPreKeysEntry") - proto.RegisterType((*BundleContainer)(nil), "encryption.BundleContainer") - proto.RegisterType((*DRHeader)(nil), "encryption.DRHeader") - proto.RegisterType((*DHHeader)(nil), "encryption.DHHeader") - proto.RegisterType((*X3DHHeader)(nil), "encryption.X3DHHeader") - proto.RegisterType((*HRHeader)(nil), "encryption.HRHeader") - proto.RegisterType((*RekeyGroup)(nil), "encryption.RekeyGroup") - proto.RegisterMapType((map[uint32][]byte)(nil), "encryption.RekeyGroup.KeysEntry") - proto.RegisterType((*HRKeys)(nil), "encryption.HRKeys") - proto.RegisterType((*HRKey)(nil), "encryption.HRKey") - proto.RegisterType((*EncryptedMessageProtocol)(nil), "encryption.EncryptedMessageProtocol") - proto.RegisterType((*ProtocolMessage)(nil), "encryption.ProtocolMessage") - proto.RegisterMapType((map[string]*EncryptedMessageProtocol)(nil), "encryption.ProtocolMessage.EncryptedMessageEntry") +var File_protocol_message_proto protoreflect.FileDescriptor + +var file_protocol_message_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, + 0x65, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x8b, 0x02, 0x0a, 0x06, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4d, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, 0x79, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, + 0x65, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x1a, 0x5a, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, + 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, + 0x65, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x78, 0x0a, + 0x0f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x12, 0x2a, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x16, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x70, + 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x50, 0x72, 0x65, 0x4b, 0x65, + 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x4a, 0x0a, 0x08, 0x44, 0x52, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x01, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x70, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x70, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x08, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x22, 0x34, 0x0a, 0x0a, 0x58, 0x33, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, + 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xa7, 0x01, 0x0a, 0x08, 0x48, 0x52, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x73, 0x65, 0x71, 0x5f, 0x6e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x65, 0x71, 0x4e, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x52, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x22, 0x99, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, + 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x68, 0x0a, + 0x06, 0x48, 0x52, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x48, 0x52, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x37, + 0x0a, 0x0b, 0x72, 0x65, 0x6b, 0x65, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x52, 0x65, 0x6b, 0x65, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x6b, + 0x65, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x63, 0x0a, 0x05, 0x48, 0x52, 0x4b, 0x65, 0x79, + 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x86, 0x02, 0x0a, + 0x18, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x37, 0x0a, 0x0b, 0x58, 0x33, 0x44, + 0x48, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x58, 0x33, 0x44, 0x48, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x58, 0x33, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x44, 0x52, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x44, 0x52, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x44, 0x48, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, + 0x44, 0x48, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x48, 0x52, 0x5f, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x08, 0x48, 0x52, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x12, 0x5e, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x69, 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("protocol_message.proto", fileDescriptor_4e37b52004a72e16) +var ( + file_protocol_message_proto_rawDescOnce sync.Once + file_protocol_message_proto_rawDescData = file_protocol_message_proto_rawDesc +) + +func file_protocol_message_proto_rawDescGZIP() []byte { + file_protocol_message_proto_rawDescOnce.Do(func() { + file_protocol_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_message_proto_rawDescData) + }) + return file_protocol_message_proto_rawDescData } -var fileDescriptor_4e37b52004a72e16 = []byte{ - // 770 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdb, 0x4e, 0xdc, 0x48, - 0x10, 0x95, 0xed, 0xb9, 0xd6, 0x5c, 0xe9, 0x05, 0xe4, 0x1d, 0xf1, 0x30, 0xb2, 0x60, 0x77, 0x16, - 0xad, 0xbc, 0xe2, 0x22, 0xb1, 0x22, 0x6f, 0x04, 0x94, 0x01, 0x44, 0x84, 0x3a, 0x52, 0x14, 0xf1, - 0x10, 0xcb, 0x8c, 0x0b, 0xb0, 0x18, 0x6c, 0x63, 0x7b, 0x50, 0xfc, 0x03, 0x79, 0xc9, 0x17, 0xe4, - 0x0b, 0xf2, 0x4f, 0xf9, 0x9a, 0xa8, 0x2f, 0xb6, 0x7b, 0x2e, 0x3c, 0xe4, 0xcd, 0x5d, 0x5d, 0x75, - 0xea, 0x54, 0xd5, 0xe9, 0x32, 0x6c, 0x46, 0x71, 0x98, 0x86, 0x93, 0x70, 0xea, 0x3c, 0x61, 0x92, - 0xb8, 0xf7, 0x68, 0x73, 0x03, 0x01, 0x0c, 0x26, 0x71, 0x16, 0xa5, 0x7e, 0x18, 0x58, 0x19, 0xb4, - 0x3f, 0xf8, 0xf7, 0x01, 0x7a, 0xd7, 0x31, 0x5e, 0x62, 0x46, 0xb6, 0xa1, 0x9b, 0xf0, 0xb3, 0x13, - 0xc5, 0xe8, 0x3c, 0x62, 0x66, 0x6a, 0x43, 0x6d, 0xd4, 0xa6, 0xed, 0x44, 0xf5, 0x32, 0xa1, 0xfe, - 0x82, 0x71, 0xe2, 0x87, 0x81, 0xa9, 0x0f, 0xb5, 0x51, 0x87, 0xe6, 0x47, 0xf2, 0x0f, 0xf4, 0x8b, - 0xac, 0xb9, 0x8b, 0xc1, 0x5d, 0x7a, 0xb9, 0xfd, 0xa3, 0x30, 0x5b, 0xdf, 0x74, 0xa8, 0x9d, 0xcc, - 0x02, 0x6f, 0x8a, 0x64, 0x00, 0x0d, 0xdf, 0xc3, 0x20, 0xf5, 0xd3, 0x3c, 0x5f, 0x71, 0x26, 0x57, - 0xd0, 0x9b, 0x67, 0x94, 0x98, 0xfa, 0xd0, 0x18, 0xb5, 0xf6, 0x77, 0xec, 0xb2, 0x0e, 0x5b, 0x00, - 0xd9, 0x6a, 0x2d, 0xc9, 0x59, 0x90, 0xc6, 0x19, 0xed, 0xa8, 0xcc, 0x13, 0xb2, 0x05, 0x4d, 0x66, - 0x70, 0xd3, 0x59, 0x8c, 0x66, 0x85, 0xe7, 0x2a, 0x0d, 0xec, 0x36, 0xf5, 0x9f, 0x30, 0x49, 0xdd, - 0xa7, 0xc8, 0xac, 0x0e, 0xb5, 0x91, 0x41, 0x4b, 0xc3, 0xe0, 0x06, 0xc8, 0x72, 0x02, 0xd2, 0x07, - 0x23, 0xef, 0x53, 0x93, 0xb2, 0x4f, 0x62, 0x43, 0xf5, 0xc5, 0x9d, 0xce, 0x90, 0x37, 0xa7, 0xb5, - 0x6f, 0xaa, 0x44, 0x55, 0x00, 0x2a, 0xdc, 0x8e, 0xf5, 0xff, 0x35, 0xeb, 0x0b, 0xf4, 0x44, 0x0d, - 0x6f, 0xc3, 0x20, 0x75, 0xfd, 0x00, 0x63, 0xb2, 0x0b, 0xb5, 0x5b, 0x6e, 0xe2, 0xd8, 0xad, 0x7d, - 0xb2, 0x5c, 0x30, 0x95, 0x1e, 0xe4, 0x80, 0x4d, 0xdb, 0x7f, 0x71, 0x53, 0x74, 0x16, 0xe6, 0xa7, - 0xf3, 0x1a, 0xff, 0x90, 0xb7, 0x6a, 0xfa, 0x8b, 0x4a, 0xc3, 0xe8, 0x57, 0xac, 0x0b, 0x68, 0x9c, - 0xd2, 0x31, 0xba, 0x1e, 0xc6, 0x6a, 0x2d, 0x6d, 0x51, 0x4b, 0x1b, 0xb4, 0x7c, 0xc8, 0x5a, 0x40, - 0xba, 0xa0, 0x47, 0xf9, 0x40, 0xf5, 0x88, 0x9f, 0x7d, 0x4f, 0xb6, 0x51, 0xf7, 0x3d, 0x6b, 0x0b, - 0x1a, 0xa7, 0xe3, 0xd7, 0xb0, 0xac, 0x43, 0x80, 0x4f, 0x07, 0xaf, 0xdf, 0x2f, 0xa2, 0x49, 0x7e, - 0x3f, 0x34, 0x68, 0x8c, 0x73, 0x82, 0xbb, 0xb0, 0xe6, 0x61, 0x14, 0xe3, 0xc4, 0x4d, 0xd1, 0x63, - 0xf5, 0x39, 0xbe, 0xc7, 0x21, 0x3a, 0xb4, 0x57, 0x5e, 0x5c, 0x62, 0x76, 0xee, 0x91, 0x0d, 0xa8, - 0x25, 0xf8, 0xec, 0x04, 0xa1, 0xe4, 0x5f, 0x4d, 0xf0, 0xf9, 0x7d, 0x48, 0xfe, 0x84, 0xc6, 0x7d, - 0x1c, 0xce, 0x22, 0x16, 0x69, 0xf0, 0x5c, 0x75, 0x7e, 0x16, 0x11, 0x12, 0x52, 0x90, 0xa8, 0x3e, - 0x72, 0xa0, 0xbf, 0xa0, 0xc2, 0x75, 0x57, 0x5d, 0x1e, 0xc3, 0x98, 0x32, 0x21, 0x50, 0x7e, 0x6f, - 0x7d, 0xd7, 0x00, 0x28, 0x3e, 0x62, 0xf6, 0x8e, 0xe1, 0xcd, 0x8b, 0x89, 0x51, 0xa8, 0x28, 0x62, - 0x22, 0x87, 0x12, 0xb4, 0xc2, 0xc5, 0x3c, 0x54, 0x41, 0x4b, 0x0c, 0xbb, 0xd4, 0x31, 0xf7, 0x1e, - 0x1c, 0x41, 0x73, 0xa5, 0xf2, 0x3a, 0xa2, 0x83, 0xeb, 0xaa, 0xf2, 0xda, 0xaa, 0xbe, 0x1e, 0xa0, - 0x26, 0xb8, 0x92, 0x1d, 0x99, 0x58, 0xe3, 0x89, 0xd7, 0x96, 0xaa, 0x11, 0x99, 0xc8, 0x11, 0xb4, - 0x62, 0xc6, 0xc3, 0xe1, 0xcd, 0x91, 0x52, 0xde, 0x5c, 0x4d, 0x93, 0x42, 0x5c, 0x7c, 0x5b, 0x13, - 0xa8, 0x72, 0x9c, 0xdf, 0x9a, 0x95, 0x2c, 0x45, 0x2f, 0xc5, 0x30, 0xd7, 0x3d, 0x63, 0xa1, 0x7b, - 0xd6, 0x57, 0x1d, 0xcc, 0x33, 0x41, 0x05, 0xbd, 0x2b, 0xb1, 0xde, 0xae, 0xe5, 0x82, 0x61, 0xd4, - 0x99, 0xce, 0x9c, 0x07, 0xae, 0x19, 0xf9, 0x7a, 0xe6, 0xa8, 0x97, 0x32, 0xa4, 0xaa, 0x24, 0xf7, - 0xa0, 0x79, 0x4a, 0xf3, 0x30, 0x51, 0xf1, 0xba, 0x1a, 0x96, 0xbf, 0x13, 0x5a, 0xbe, 0x18, 0x16, - 0x52, 0x64, 0xc2, 0x15, 0x21, 0xe3, 0x22, 0x44, 0xc9, 0x32, 0x2e, 0xb2, 0xdc, 0x2d, 0x87, 0x8c, - 0x8b, 0x2c, 0x85, 0xec, 0x4d, 0xa8, 0x47, 0x6e, 0x36, 0x0d, 0xdd, 0x42, 0xb2, 0xf2, 0x68, 0xfd, - 0xd4, 0xa1, 0x97, 0x17, 0x2e, 0xfb, 0x40, 0xfe, 0x86, 0x9e, 0x1f, 0x24, 0xa9, 0x3b, 0x9d, 0xba, - 0x0c, 0x90, 0xb5, 0x5d, 0xe7, 0xdb, 0xa9, 0xab, 0x9a, 0xcf, 0x3d, 0xf2, 0x2f, 0xd4, 0xc5, 0xfe, - 0x48, 0x4c, 0x83, 0xab, 0x61, 0xd5, 0x8a, 0xc9, 0x5d, 0xc8, 0x67, 0x58, 0xc3, 0xbc, 0xe5, 0xf9, - 0x2f, 0xc5, 0x44, 0x1e, 0xb7, 0xa7, 0xc6, 0x2d, 0xd0, 0xb1, 0x17, 0xe7, 0x24, 0xf4, 0xdc, 0xc7, - 0x05, 0x33, 0xd9, 0x81, 0x6e, 0x34, 0xbb, 0x9d, 0xfa, 0x93, 0x02, 0xfc, 0x8e, 0xd7, 0xda, 0x11, - 0x56, 0xe9, 0x36, 0xf0, 0x61, 0x63, 0x25, 0xe2, 0x8a, 0x45, 0x7c, 0x3c, 0xbf, 0x88, 0xb7, 0x55, - 0x96, 0xaf, 0xa9, 0x47, 0x79, 0x34, 0x27, 0xbd, 0x9b, 0x8e, 0xfd, 0xdf, 0x9b, 0x32, 0xe8, 0xb6, - 0xc6, 0x7f, 0x62, 0x07, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x20, 0xbb, 0xc5, 0x5b, 0x07, - 0x00, 0x00, +var file_protocol_message_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_protocol_message_proto_goTypes = []interface{}{ + (*SignedPreKey)(nil), // 0: encryption.SignedPreKey + (*Bundle)(nil), // 1: encryption.Bundle + (*BundleContainer)(nil), // 2: encryption.BundleContainer + (*DRHeader)(nil), // 3: encryption.DRHeader + (*DHHeader)(nil), // 4: encryption.DHHeader + (*X3DHHeader)(nil), // 5: encryption.X3DHHeader + (*HRHeader)(nil), // 6: encryption.HRHeader + (*RekeyGroup)(nil), // 7: encryption.RekeyGroup + (*HRKeys)(nil), // 8: encryption.HRKeys + (*HRKey)(nil), // 9: encryption.HRKey + (*EncryptedMessageProtocol)(nil), // 10: encryption.EncryptedMessageProtocol + (*ProtocolMessage)(nil), // 11: encryption.ProtocolMessage + nil, // 12: encryption.Bundle.SignedPreKeysEntry + nil, // 13: encryption.RekeyGroup.KeysEntry + nil, // 14: encryption.ProtocolMessage.EncryptedMessageEntry +} +var file_protocol_message_proto_depIdxs = []int32{ + 12, // 0: encryption.Bundle.signed_pre_keys:type_name -> encryption.Bundle.SignedPreKeysEntry + 1, // 1: encryption.BundleContainer.bundle:type_name -> encryption.Bundle + 8, // 2: encryption.HRHeader.keys:type_name -> encryption.HRKeys + 13, // 3: encryption.RekeyGroup.keys:type_name -> encryption.RekeyGroup.KeysEntry + 9, // 4: encryption.HRKeys.keys:type_name -> encryption.HRKey + 7, // 5: encryption.HRKeys.rekey_group:type_name -> encryption.RekeyGroup + 5, // 6: encryption.EncryptedMessageProtocol.X3DH_header:type_name -> encryption.X3DHHeader + 3, // 7: encryption.EncryptedMessageProtocol.DR_header:type_name -> encryption.DRHeader + 4, // 8: encryption.EncryptedMessageProtocol.DH_header:type_name -> encryption.DHHeader + 6, // 9: encryption.EncryptedMessageProtocol.HR_header:type_name -> encryption.HRHeader + 1, // 10: encryption.ProtocolMessage.bundles:type_name -> encryption.Bundle + 14, // 11: encryption.ProtocolMessage.encrypted_message:type_name -> encryption.ProtocolMessage.EncryptedMessageEntry + 0, // 12: encryption.Bundle.SignedPreKeysEntry.value:type_name -> encryption.SignedPreKey + 10, // 13: encryption.ProtocolMessage.EncryptedMessageEntry.value:type_name -> encryption.EncryptedMessageProtocol + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name +} + +func init() { file_protocol_message_proto_init() } +func file_protocol_message_proto_init() { + if File_protocol_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedPreKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BundleContainer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DRHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DHHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*X3DHHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RekeyGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRKeys); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*HRKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EncryptedMessageProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_message_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProtocolMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protocol_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 15, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_message_proto_goTypes, + DependencyIndexes: file_protocol_message_proto_depIdxs, + MessageInfos: file_protocol_message_proto_msgTypes, + }.Build() + File_protocol_message_proto = out.File + file_protocol_message_proto_rawDesc = nil + file_protocol_message_proto_goTypes = nil + file_protocol_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/identity/profile_showcase.go b/vendor/github.com/status-im/status-go/protocol/identity/profile_showcase.go new file mode 100644 index 00000000..195686ac --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/identity/profile_showcase.go @@ -0,0 +1,164 @@ +package identity + +import "errors" + +var ErrorNoAccountProvidedWithTokenOrCollectible = errors.New("no account provided with tokens or collectible") + +var ErrorExceedMaxProfileShowcaseCommunitiesLimit = errors.New("exeed maximum profile showcase communities limit") +var ErrorExceedMaxProfileShowcaseAccountsLimit = errors.New("exeed maximum profile showcase accounts limit") +var ErrorExceedMaxProfileShowcaseCollectiblesLimit = errors.New("exeed maximum profile showcase collectibles limit") +var ErrorExceedMaxProfileShowcaseVerifiedTokensLimit = errors.New("exeed maximum profile showcase verified tokens limit") +var ErrorExceedMaxProfileShowcaseUnverifiedTokensLimit = errors.New("exeed maximum profile showcase unverified tokens limit") +var ErrorExceedMaxProfileShowcaseSocialLinksLimit = errors.New("exeed maximum profile showcase communities limit") + +const MaxProfileShowcaseSocialLinksLimit = 20 +const MaxProfileShowcaseEntriesLimit = 100 + +type ProfileShowcaseVisibility int + +const ( + ProfileShowcaseVisibilityNoOne ProfileShowcaseVisibility = iota + ProfileShowcaseVisibilityIDVerifiedContacts + ProfileShowcaseVisibilityContacts + ProfileShowcaseVisibilityEveryone +) + +type ProfileShowcaseMembershipStatus int + +const ( + ProfileShowcaseMembershipStatusUnproven ProfileShowcaseMembershipStatus = iota + ProfileShowcaseMembershipStatusProvenMember + ProfileShowcaseMembershipStatusNotAMember +) + +// Profile showcase preferences + +type ProfileShowcaseCommunityPreference struct { + CommunityID string `json:"communityId"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcaseAccountPreference struct { + Address string `json:"address"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcaseCollectiblePreference struct { + ContractAddress string `json:"contractAddress"` + ChainID uint64 `json:"chainId"` + TokenID string `json:"tokenId"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcaseVerifiedTokenPreference struct { + Symbol string `json:"symbol"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcaseUnverifiedTokenPreference struct { + ContractAddress string `json:"contractAddress"` + ChainID uint64 `json:"chainId"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcaseSocialLinkPreference struct { + URL string `json:"url"` + Text string `json:"text"` + ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` + Order int `json:"order"` +} + +type ProfileShowcasePreferences struct { + Clock uint64 `json:"clock"` + Communities []*ProfileShowcaseCommunityPreference `json:"communities"` + Accounts []*ProfileShowcaseAccountPreference `json:"accounts"` + Collectibles []*ProfileShowcaseCollectiblePreference `json:"collectibles"` + VerifiedTokens []*ProfileShowcaseVerifiedTokenPreference `json:"verifiedTokens"` + UnverifiedTokens []*ProfileShowcaseUnverifiedTokenPreference `json:"unverifiedTokens"` + SocialLinks []*ProfileShowcaseSocialLinkPreference `json:"socialLinks"` +} + +// Profile showcase for a contact + +type ProfileShowcaseCommunity struct { + CommunityID string `json:"communityId"` + Order int `json:"order"` + MembershipStatus ProfileShowcaseMembershipStatus `json:"membershipStatus"` + Grant []byte `json:"grant,omitempty"` +} + +type ProfileShowcaseAccount struct { + ContactID string `json:"contactId"` + Address string `json:"address"` + Name string `json:"name"` + ColorID string `json:"colorId"` + Emoji string `json:"emoji"` + Order int `json:"order"` +} + +type ProfileShowcaseCollectible struct { + ContractAddress string `json:"contractAddress"` + ChainID uint64 `json:"chainId"` + TokenID string `json:"tokenId"` + Order int `json:"order"` +} + +type ProfileShowcaseVerifiedToken struct { + Symbol string `json:"symbol"` + Order int `json:"order"` +} + +type ProfileShowcaseUnverifiedToken struct { + ContractAddress string `json:"contractAddress"` + ChainID uint64 `json:"chainId"` + Order int `json:"order"` +} + +type ProfileShowcaseSocialLink struct { + URL string `json:"url"` + Text string `json:"text"` + Order int `json:"order"` +} + +type ProfileShowcase struct { + ContactID string `json:"contactId"` + Communities []*ProfileShowcaseCommunity `json:"communities"` + Accounts []*ProfileShowcaseAccount `json:"accounts"` + Collectibles []*ProfileShowcaseCollectible `json:"collectibles"` + VerifiedTokens []*ProfileShowcaseVerifiedToken `json:"verifiedTokens"` + UnverifiedTokens []*ProfileShowcaseUnverifiedToken `json:"unverifiedTokens"` + SocialLinks []*ProfileShowcaseSocialLink `json:"socialLinks"` +} + +func Validate(preferences *ProfileShowcasePreferences) error { + if len(preferences.Communities) > MaxProfileShowcaseEntriesLimit { + return ErrorExceedMaxProfileShowcaseCommunitiesLimit + } + if len(preferences.Accounts) > MaxProfileShowcaseEntriesLimit { + return ErrorExceedMaxProfileShowcaseAccountsLimit + } + if len(preferences.Collectibles) > MaxProfileShowcaseEntriesLimit { + return ErrorExceedMaxProfileShowcaseCollectiblesLimit + } + if len(preferences.VerifiedTokens) > MaxProfileShowcaseEntriesLimit { + return ErrorExceedMaxProfileShowcaseVerifiedTokensLimit + } + if len(preferences.UnverifiedTokens) > MaxProfileShowcaseEntriesLimit { + return ErrorExceedMaxProfileShowcaseUnverifiedTokensLimit + } + if len(preferences.SocialLinks) > MaxProfileShowcaseSocialLinksLimit { + return ErrorExceedMaxProfileShowcaseSocialLinksLimit + } + + if (len(preferences.VerifiedTokens) > 0 || len(preferences.UnverifiedTokens) > 0 || len(preferences.Collectibles) > 0) && + len(preferences.Accounts) == 0 { + return ErrorNoAccountProvidedWithTokenOrCollectible + } + + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/linkpreview_unfurler_opengraph.go b/vendor/github.com/status-im/status-go/protocol/linkpreview_unfurler_opengraph.go index 21d9053b..ed7d4740 100644 --- a/vendor/github.com/status-im/status-go/protocol/linkpreview_unfurler_opengraph.go +++ b/vendor/github.com/status-im/status-go/protocol/linkpreview_unfurler_opengraph.go @@ -6,9 +6,11 @@ import ( "io/ioutil" "net/http" neturl "net/url" + "strings" "github.com/keighl/metabolize" "go.uber.org/zap" + "golang.org/x/net/html" "github.com/status-im/status-go/images" "github.com/status-im/status-go/protocol/common" @@ -38,6 +40,43 @@ func NewOpenGraphUnfurler(URL *neturl.URL, logger *zap.Logger, httpClient *http. } } +func GetFavicon(bodyBytes []byte) string { + htmlTokens := html.NewTokenizer(bytes.NewBuffer(bodyBytes)) +loop: + for { + tt := htmlTokens.Next() + switch tt { + case html.ErrorToken: + break loop + case html.StartTagToken: + t := htmlTokens.Token() + if t.Data != "link" { + continue + } + + isIcon := false + href := "" + for _, attr := range t.Attr { + k := attr.Key + v := attr.Val + if k == "rel" && (v == "icon" || v == "shortcut icon") { + isIcon = true + } else if k == "href" && + (strings.Contains(v, ".ico") || + strings.Contains(v, ".png") || + strings.Contains(v, ".svg")) { + href = v + } + } + + if isIcon && href != "" { + return href + } + } + } + return "" +} + func (u *OpenGraphUnfurler) Unfurl() (*common.LinkPreview, error) { preview := newDefaultLinkPreview(u.url) preview.Type = protobuf.UnfurledLink_LINK @@ -58,6 +97,13 @@ func (u *OpenGraphUnfurler) Unfurl() (*common.LinkPreview, error) { return preview, fmt.Errorf("failed to parse OpenGraph data") } + faviconPath := GetFavicon(bodyBytes) + t, err := fetchImage(u.logger, u.httpClient, faviconPath, false) + if err != nil { + u.logger.Info("failed to fetch favicon", zap.String("url", u.url.String()), zap.Error(err)) + } else { + preview.Favicon.DataURI = t.DataURI + } // There are URLs like https://wikipedia.org/ that don't have an OpenGraph // title tag, but article pages do. In the future, we can fallback to the // website's title by using the tag. @@ -66,7 +112,7 @@ func (u *OpenGraphUnfurler) Unfurl() (*common.LinkPreview, error) { } if ogMetadata.ThumbnailURL != "" { - t, err := fetchThumbnail(u.logger, u.httpClient, ogMetadata.ThumbnailURL) + t, err := fetchImage(u.logger, u.httpClient, ogMetadata.ThumbnailURL, true) if err != nil { // Given we want to fetch thumbnails on a best-effort basis, if an error // happens we simply log it. @@ -78,24 +124,25 @@ func (u *OpenGraphUnfurler) Unfurl() (*common.LinkPreview, error) { preview.Title = ogMetadata.Title preview.Description = ogMetadata.Description + return preview, nil } -func fetchThumbnail(logger *zap.Logger, httpClient *http.Client, url string) (common.LinkPreviewThumbnail, error) { +func fetchImage(logger *zap.Logger, httpClient *http.Client, url string, getDimensions bool) (common.LinkPreviewThumbnail, error) { var thumbnail common.LinkPreviewThumbnail imgBytes, err := fetchBody(logger, httpClient, url, nil) if err != nil { return thumbnail, fmt.Errorf("could not fetch thumbnail url='%s': %w", url, err) } - - width, height, err := images.GetImageDimensions(imgBytes) - if err != nil { - return thumbnail, fmt.Errorf("could not get image dimensions url='%s': %w", url, err) + if getDimensions { + width, height, err := images.GetImageDimensions(imgBytes) + if err != nil { + return thumbnail, fmt.Errorf("could not get image dimensions url='%s': %w", url, err) + } + thumbnail.Width = width + thumbnail.Height = height } - thumbnail.Width = width - thumbnail.Height = height - dataURI, err := images.GetPayloadDataURI(imgBytes) if err != nil { return thumbnail, fmt.Errorf("could not build data URI url='%s': %w", url, err) diff --git a/vendor/github.com/status-im/status-go/protocol/message_persistence.go b/vendor/github.com/status-im/status-go/protocol/message_persistence.go index e5cd162d..92108b1b 100644 --- a/vendor/github.com/status-im/status-go/protocol/message_persistence.go +++ b/vendor/github.com/status-im/status-go/protocol/message_persistence.go @@ -34,6 +34,8 @@ LEFT JOIN discord_message_authors m2_dm_author ON m2_dm.author_id = m2_dm_author.id LEFT JOIN bridge_messages bm ON m1.id = bm.user_messages_id +LEFT JOIN bridge_messages bm_response +ON m2.id = bm_response.user_messages_id ` var basicInsertDiscordMessageAuthorQuery = `INSERT OR REPLACE INTO discord_message_authors(id,name,discriminator,nickname,avatar_url, avatar_image_payload) VALUES (?,?,?,?,?,?)` @@ -205,7 +207,12 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string { COALESCE(bm.user_id, ""), COALESCE(bm.content, ""), COALESCE(bm.message_id, ""), - COALESCE(bm.parent_message_id, "")` + COALESCE(bm.parent_message_id, ""), + COALESCE(bm_response.bridge_name, ""), + COALESCE(bm_response.user_name, ""), + COALESCE(bm_response.user_avatar, ""), + COALESCE(bm_response.user_id, ""), + COALESCE(bm_response.content, "")` } func (db sqlitePersistence) tableUserMessagesAllFieldsCount() int { @@ -256,6 +263,8 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message } bridgeMessage := &protobuf.BridgeMessage{} + quotedBridgeMessage := &protobuf.BridgeMessage{} + quotedDiscordMessage := &protobuf.DiscordMessage{ Author: &protobuf.DiscordMessageAuthor{}, } @@ -354,6 +363,11 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message &bridgeMessage.Content, &bridgeMessage.MessageID, &bridgeMessage.ParentMessageID, + "edBridgeMessage.BridgeName, + "edBridgeMessage.UserName, + "edBridgeMessage.UserAvatar, + "edBridgeMessage.UserID, + "edBridgeMessage.Content, } err := row.Scan(append(args, others...)...) if err != nil { @@ -407,6 +421,9 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message if message.QuotedMessage.ContentType == int64(protobuf.ChatMessage_DISCORD_MESSAGE) { message.QuotedMessage.DiscordMessage = quotedDiscordMessage } + if message.QuotedMessage.ContentType == int64(protobuf.ChatMessage_BRIDGE_MESSAGE) { + message.QuotedMessage.BridgeMessage = quotedBridgeMessage + } } } message.Alias = alias.String @@ -648,6 +665,9 @@ func (db sqlitePersistence) messageByID(tx *sql.Tx, id string) (*common.Message, } func (db sqlitePersistence) albumMessages(chatID, albumID string) ([]*common.Message, error) { + if albumID == "" { + return nil, nil + } query := db.buildMessagesQuery("WHERE m1.album_id = ? and m1.local_chat_id = ?") rows, err := db.db.Query(query, albumID, chatID) if err != nil { @@ -1191,6 +1211,9 @@ func (db sqlitePersistence) PinnedMessageByChatIDs(chatIDs []string, currCursor LEFT JOIN bridge_messages bm ON m1.id = bm.user_messages_id + LEFT JOIN bridge_messages bm_response + ON m2.id = bm_response.user_messages_id + WHERE pm.pinned = 1 AND NOT(m1.hide) AND m1.local_chat_id IN %s %s @@ -1529,6 +1552,22 @@ func (db sqlitePersistence) SaveMessages(messages []*common.Message) (err error) if msg.ContentType == protobuf.ChatMessage_BRIDGE_MESSAGE { err = db.saveBridgeMessage(tx, msg.GetBridgeMessage(), msg.ID) + if err != nil { + return + } + // handle replies + err = db.findAndUpdateReplies(tx, msg.GetBridgeMessage().MessageID, msg.ID) + if err != nil { + return + } + parentMessageID := msg.GetBridgeMessage().ParentMessageID + if parentMessageID != "" { + err = db.findAndUpdateRepliedTo(tx, parentMessageID, msg.ID) + if err != nil { + return + } + } + } } return @@ -1998,11 +2037,11 @@ func (db sqlitePersistence) MarkMessageAsUnread(chatID string, messageID string) } _, err = tx.Exec( - `UPDATE user_messages - SET seen = 0 - WHERE local_chat_id = ? - AND seen = 1 - AND NOT(mentioned OR replied) + `UPDATE user_messages + SET seen = 0 + WHERE local_chat_id = ? + AND seen = 1 + AND NOT(mentioned OR replied) AND timestamp >= (SELECT timestamp FROM user_messages WHERE id = ?)`, chatID, messageID) if err != nil { return 0, 0, err @@ -2583,7 +2622,7 @@ func (db sqlitePersistence) GetDeletes(messageID string, from string) ([]*Delete } func (db sqlitePersistence) SaveOrUpdateDeleteForMeMessage(deleteForMeMessage *protobuf.SyncDeleteForMeMessage) error { - _, err := db.db.Exec(`INSERT OR REPLACE INTO user_messages_deleted_for_mes (clock, message_id) + _, err := db.db.Exec(`INSERT OR REPLACE INTO user_messages_deleted_for_mes (clock, message_id) SELECT ?,? WHERE NOT EXISTS (SELECT 1 FROM user_messages_deleted_for_mes WHERE message_id = ? AND clock >= ?)`, deleteForMeMessage.Clock, deleteForMeMessage.MessageId, deleteForMeMessage.MessageId, deleteForMeMessage.Clock) return err @@ -2882,3 +2921,124 @@ func (db sqlitePersistence) saveBridgeMessage(tx *sql.Tx, message *protobuf.Brid ) return } + +func (db sqlitePersistence) GetCommunityMemberMessagesToDelete(member string, communityID string) ([]*protobuf.DeleteCommunityMemberMessage, error) { + rows, err := db.db.Query(`SELECT m.id, m.chat_id FROM user_messages as m + INNER JOIN chats AS ch ON ch.id = m.chat_id AND ch.community_id = ? + WHERE m.source = ?`, communityID, member) + + if err != nil { + return nil, err + } + + defer rows.Close() + + result := []*protobuf.DeleteCommunityMemberMessage{} + + for rows.Next() { + removeMsgsInfo := &protobuf.DeleteCommunityMemberMessage{} + err = rows.Scan(&removeMsgsInfo.Id, &removeMsgsInfo.ChatId) + if err != nil { + return nil, err + } + result = append(result, removeMsgsInfo) + } + + return result, nil +} + +// Finds status messages id which are replies for bridgeMessageID +func (db sqlitePersistence) findStatusMessageIdsReplies(tx *sql.Tx, bridgeMessageID string) ([]string, error) { + rows, err := tx.Query(`SELECT user_messages_id FROM bridge_messages WHERE parent_message_id = ?`, bridgeMessageID) + if err != nil { + return []string{}, err + } + defer rows.Close() + + var statusMessageIDs []string + for rows.Next() { + var statusMessageID string + err = rows.Scan(&statusMessageID) + if err != nil { + return []string{}, err + } + statusMessageIDs = append(statusMessageIDs, statusMessageID) + } + return statusMessageIDs, nil +} + +// Finds status messages id which are replies for bridgeMessageID +func (db sqlitePersistence) findStatusMessageIdsRepliedTo(tx *sql.Tx, parentMessageID string) (string, error) { + rows, err := tx.Query(`SELECT user_messages_id FROM bridge_messages WHERE message_id = ?`, parentMessageID) + if err != nil { + return "", err + } + defer rows.Close() + + if rows.Next() { + var statusMessageID string + err = rows.Scan(&statusMessageID) + if err != nil { + return "", err + } + return statusMessageID, nil + } + return "", nil +} + +func (db sqlitePersistence) updateStatusMessagesWithResponse(tx *sql.Tx, statusMessagesToUpdate []string, responseValue string) error { + sql := "UPDATE user_messages SET response_to = ? WHERE id IN (?" + strings.Repeat(",?", len(statusMessagesToUpdate)-1) + ")" + stmt, err := tx.Prepare(sql) + if err != nil { + return err + } + defer stmt.Close() + + args := make([]interface{}, 0, len(statusMessagesToUpdate)+1) + args = append(args, responseValue) + for _, msgToUpdate := range statusMessagesToUpdate { + args = append(args, msgToUpdate) + } + _, err = stmt.Exec(args...) + return err +} + +// Finds if there are any messages that are replies to that message (in case replies were received earlier) +func (db sqlitePersistence) findAndUpdateReplies(tx *sql.Tx, bridgeMessageID string, statusMessageID string) error { + replyMessageIds, err := db.findStatusMessageIdsReplies(tx, bridgeMessageID) + if err != nil { + return err + } + if len(replyMessageIds) == 0 { + return nil + } + return db.updateStatusMessagesWithResponse(tx, replyMessageIds, statusMessageID) +} + +func (db sqlitePersistence) findAndUpdateRepliedTo(tx *sql.Tx, discordParentMessageID string, statusMessageID string) error { + repliedMessageID, err := db.findStatusMessageIdsRepliedTo(tx, discordParentMessageID) + if err != nil { + return err + } + if repliedMessageID == "" { + return nil + } + return db.updateStatusMessagesWithResponse(tx, []string{statusMessageID}, repliedMessageID) +} + +func (db sqlitePersistence) GetCommunityMemberAllMessages(member string, communityID string) ([]*common.Message, error) { + additionalRequestData := "INNER JOIN chats AS ch ON ch.id = m1.chat_id AND ch.community_id = ? WHERE m1.source = ?" + query := db.buildMessagesQueryWithAdditionalFields("", additionalRequestData) + + rows, err := db.db.Query(query, communityID, member) + + if err != nil { + if err == sql.ErrNoRows { + return []*common.Message{}, nil + } + + return nil, err + } + + return getMessagesFromScanRows(db, rows, false) +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger.go b/vendor/github.com/status-im/status-go/protocol/messenger.go index 635c0257..ae2caf99 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger.go @@ -55,6 +55,7 @@ import ( "github.com/status-im/status-go/protocol/pushnotificationserver" "github.com/status-im/status-go/protocol/requests" "github.com/status-im/status-go/protocol/sqlite" + "github.com/status-im/status-go/protocol/storenodes" "github.com/status-im/status-go/protocol/transport" v1protocol "github.com/status-im/status-go/protocol/v1" "github.com/status-im/status-go/protocol/verification" @@ -72,16 +73,13 @@ import ( "github.com/status-im/status-go/telemetry" ) -// todo: kozieiev: get rid of wakutransp word -type chatContext string - const ( PubKeyStringLength = 132 transactionSentTxt = "Transaction sent" - publicChat chatContext = "public-chat" - privateChat chatContext = "private-chat" + publicChat ChatContext = "public-chat" + privateChat ChatContext = "private-chat" ) var communityAdvertiseIntervalSecond int64 = 60 * 60 @@ -134,6 +132,7 @@ type Messenger struct { modifiedInstallations *stringBoolMap installationID string mailserverCycle mailserverCycle + communityStorenodes *storenodes.CommunityStorenodes database *sql.DB multiAccounts *multiaccounts.Database settings *accounts.Database @@ -142,6 +141,7 @@ type Messenger struct { browserDatabase *browsers.Database httpServer *server.MediaServer + started bool quit chan struct{} ctx context.Context cancel context.CancelFunc @@ -164,7 +164,7 @@ type Messenger struct { // TODO(samyoul) Determine if/how the remaining usage of this mutex can be removed mutex sync.Mutex - mailPeersMutex sync.Mutex + mailPeersMutex sync.RWMutex handleMessagesMutex sync.Mutex handleImportMessagesMutex sync.Mutex @@ -449,17 +449,16 @@ func NewMessenger( ensVerifier := ens.New(node, logger, transp, database, c.verifyENSURL, c.verifyENSContractAddress) - var walletAPI *wallet.API - if c.walletService != nil { - walletAPI = wallet.NewAPI(c.walletService) - } - managerOptions := []communities.ManagerOption{ communities.WithAccountManager(c.accountsManager), } - if walletAPI != nil { + var walletAPI *wallet.API + if c.walletService != nil { + walletAPI = wallet.NewAPI(c.walletService) managerOptions = append(managerOptions, communities.WithCollectiblesManager(walletAPI)) + } else if c.collectiblesManager != nil { + managerOptions = append(managerOptions, communities.WithCollectiblesManager(c.collectiblesManager)) } if c.tokenManager != nil { @@ -544,6 +543,7 @@ func NewMessenger( availabilitySubscriptions: make([]chan struct{}, 0), }, mailserversDatabase: c.mailserversDatabase, + communityStorenodes: storenodes.NewCommunityStorenodes(storenodes.NewDB(database), logger), account: c.account, quit: make(chan struct{}), ctx: ctx, @@ -681,7 +681,8 @@ func (m *Messenger) shouldResendMessage(message *common.RawMessage, t common.Tim return false, nil } //exponential backoff depends on how many attempts to send message already made - backoff := uint64(math.Pow(2, float64(message.SendCount-1))) * uint64(m.config.messageResendMinDelay) * uint64(time.Second.Milliseconds()) + power := math.Pow(2, float64(message.SendCount-1)) + backoff := uint64(power) * uint64(m.config.messageResendMinDelay.Milliseconds()) backoffElapsed := t.GetCurrentTime() > (message.LastSent + backoff) return backoffElapsed, nil } @@ -744,6 +745,11 @@ func (m *Messenger) ToBackground() { } func (m *Messenger) Start() (*MessengerResponse, error) { + if m.started { + return nil, errors.New("messenger already started") + } + m.started = true + now := time.Now().UnixMilli() if err := m.settings.CheckAndDeleteExpiredKeypairsAndAccounts(uint64(now)); err != nil { return nil, err @@ -828,7 +834,9 @@ func (m *Messenger) Start() (*MessengerResponse, error) { m.startSyncSettingsLoop() m.startSettingsChangesLoop() m.startCommunityRekeyLoop() - m.startCuratedCommunitiesUpdateLoop() + if m.config.codeControlFlags.CuratedCommunitiesUpdateLoopEnabled { + m.startCuratedCommunitiesUpdateLoop() + } m.startMessageSegmentsCleanupLoop() if err := m.cleanTopics(); err != nil { @@ -847,6 +855,10 @@ func (m *Messenger) Start() (*MessengerResponse, error) { return nil, err } + if err := m.communityStorenodes.ReloadFromDB(); err != nil { + return nil, err + } + controlledCommunities, err := m.communitiesManager.Controlled() if err != nil { return nil, err @@ -950,7 +962,7 @@ func (m *Messenger) handleConnectionChange(online bool) { } // Start fetching messages from store nodes - if online && m.config.featureFlags.AutoRequestHistoricMessages { + if online && m.config.codeControlFlags.AutoRequestHistoricMessages { m.asyncRequestAllHistoricMessages() } @@ -1114,7 +1126,9 @@ func (m *Messenger) handleStandaloneChatIdentity(chat *Chat) error { return nil } - ci, err := m.createChatIdentity(publicChat) + chatContext := GetChatContextFromChatType(chat.ChatType) + + ci, err := m.createChatIdentity(chatContext) if err != nil { return err } @@ -1261,7 +1275,7 @@ func (m *Messenger) shouldPublishChatIdentity(chatID string) (bool, error) { // createChatIdentity creates a context based protobuf.ChatIdentity. // context 'public-chat' will attach only the 'thumbnail' IdentityImage // context 'private-chat' will attach all IdentityImage -func (m *Messenger) createChatIdentity(context chatContext) (*protobuf.ChatIdentity, error) { +func (m *Messenger) createChatIdentity(context ChatContext) (*protobuf.ChatIdentity, error) { m.logger.Info(fmt.Sprintf("account keyUID '%s'", m.account.KeyUID)) m.logger.Info(fmt.Sprintf("context '%s'", context)) @@ -1311,7 +1325,7 @@ func (m *Messenger) adaptIdentityImageToProtobuf(img *images.IdentityImage) *pro } } -func (m *Messenger) attachIdentityImagesToChatIdentity(context chatContext, ci *protobuf.ChatIdentity) error { +func (m *Messenger) attachIdentityImagesToChatIdentity(context ChatContext, ci *protobuf.ChatIdentity) error { s, err := m.getSettings() if err != nil { return err @@ -1414,6 +1428,13 @@ func (m *Messenger) handleEncryptionLayerSubscriptions(subscriptions *encryption m.logger.Error("failed to clean processed messages", zap.Error(err)) } + case keys := <-subscriptions.NewHashRatchetKeys: + if m.communitiesManager == nil { + continue + } + if err := m.communitiesManager.NewHashRatchetKeys(keys); err != nil { + m.logger.Error("failed to invalidate cache for decrypted communities", zap.Error(err)) + } case <-subscriptions.Quit: m.logger.Debug("quitting encryption subscription loop") return @@ -1537,7 +1558,7 @@ func (m *Messenger) watchChatsAndCommunitiesToUnmute() { go func() { for { select { - case <-time.After(3 * time.Second): // Poll every 3 seconds + case <-time.After(1 * time.Minute): response := &MessengerResponse{} m.allChats.Range(func(chatID string, c *Chat) bool { chatMuteTill, _ := time.Parse(time.RFC3339, c.MuteTill.Format(time.RFC3339)) @@ -1572,7 +1593,7 @@ func (m *Messenger) watchCommunitiesToUnmute() { go func() { for { select { - case <-time.After(3 * time.Second): // Poll every 3 seconds + case <-time.After(1 * time.Minute): response, err := m.CheckCommunitiesToUnmute() if err != nil { return @@ -1930,6 +1951,15 @@ func (m *Messenger) Shutdown() (err error) { if m == nil { return nil } + + select { + case _, ok := <-m.quit: + if !ok { + return errors.New("messenger already shutdown") + } + default: + } + close(m.quit) m.cancel() m.shutdownWaitGroup.Wait() @@ -2205,22 +2235,26 @@ func (m *Messenger) dispatchMessage(ctx context.Context, rawMessage common.RawMe if err != nil { return rawMessage, err } - case ChatTypeCommunityChat: + case ChatTypeCommunityChat: community, err := m.communitiesManager.GetByIDString(chat.CommunityID) if err != nil { return rawMessage, err } rawMessage.PubsubTopic = community.PubsubTopic() - canPost, err := m.communitiesManager.CanPost(&m.identity.PublicKey, chat.CommunityID, chat.CommunityChatID()) + canPost, err := m.communitiesManager.CanPost(&m.identity.PublicKey, chat.CommunityID, chat.CommunityChatID(), rawMessage.MessageType) if err != nil { return rawMessage, err } if !canPost { - m.logger.Error("can't post on chat", zap.String("chat-id", chat.ID), zap.String("chat-name", chat.Name)) - return rawMessage, errors.New("can't post on chat") + m.logger.Error("can't post on chat", + zap.String("chatID", chat.ID), + zap.String("chatName", chat.Name), + zap.Any("messageType", rawMessage.MessageType), + ) + return rawMessage, fmt.Errorf("can't post message type '%d' on chat '%s'", rawMessage.MessageType, chat.ID) } logger.Debug("sending community chat message", zap.String("chatName", chat.Name)) @@ -2835,7 +2869,17 @@ func (m *Messenger) SyncDevices(ctx context.Context, ensName, photoPath string, return err } - return m.syncSocialLinks(context.Background(), rawMessageHandler) + err = m.syncSocialLinks(context.Background(), rawMessageHandler) + if err != nil { + return err + } + + err = m.syncProfileShowcasePreferences(context.Background(), rawMessageHandler) + if err != nil { + return err + } + + return nil } func (m *Messenger) syncContactRequestDecision(ctx context.Context, requestID string, accepted bool, rawMessageHandler RawMessageHandler) error { @@ -3105,6 +3149,36 @@ func (m *Messenger) syncContact(ctx context.Context, contact *Contact, rawMessag return m.saveChat(chat) } +func (m *Messenger) propagateSyncInstallationCommunityWithHRKeys(msg *protobuf.SyncInstallationCommunity, c *communities.Community) error { + communityKeys, err := m.encryptor.GetAllHRKeysMarshaledV1(c.ID()) + if err != nil { + return err + } + msg.EncryptionKeysV1 = communityKeys + + communityAndChannelKeys := [][]byte{} + communityKeys, err = m.encryptor.GetAllHRKeysMarshaledV2(c.ID()) + if err != nil { + return err + } + if len(communityKeys) > 0 { + communityAndChannelKeys = append(communityAndChannelKeys, communityKeys) + } + + for channelID := range c.Chats() { + channelKeys, err := m.encryptor.GetAllHRKeysMarshaledV2([]byte(c.IDString() + channelID)) + if err != nil { + return err + } + if len(channelKeys) > 0 { + communityAndChannelKeys = append(communityAndChannelKeys, channelKeys) + } + } + msg.EncryptionKeysV2 = communityAndChannelKeys + + return nil +} + func (m *Messenger) syncCommunity(ctx context.Context, community *communities.Community, rawMessageHandler RawMessageHandler) error { logger := m.logger.Named("syncCommunity") if !m.hasPairedDevices() { @@ -3130,11 +3204,10 @@ func (m *Messenger) syncCommunity(ctx context.Context, community *communities.Co return err } - encodedKeys, err := m.encryptor.GetAllHREncodedKeys(community.ID()) + err = m.propagateSyncInstallationCommunityWithHRKeys(syncMessage, community) if err != nil { return err } - syncMessage.EncryptionKeys = encodedKeys encodedMessage, err := proto.Marshal(syncMessage) if err != nil { @@ -3416,6 +3489,10 @@ func (m *Messenger) GetStats() types.StatsSummary { return m.transport.GetStats() } +func (m *Messenger) GetTransport() *transport.Transport { + return m.transport +} + type CurrentMessageState struct { // Message is the protobuf message received Message *protobuf.ChatMessage @@ -3631,6 +3708,19 @@ func (m *Messenger) outputToCSV(timestamp uint32, messageID types.HexBytes, from } } +func (m *Messenger) shouldSkipDuplicate(messageType protobuf.ApplicationMetadataMessage_Type) bool { + // Permit re-processing of ApplicationMetadataMessage_COMMUNITY_DESCRIPTION messages, + // as they may be queued pending receipt of decryption keys. + allowedDuplicateTypes := map[protobuf.ApplicationMetadataMessage_Type]struct{}{ + protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION: struct{}{}, + } + if _, isAllowedDuplicate := allowedDuplicateTypes[messageType]; isAllowedDuplicate { + return false + } + + return true +} + func (m *Messenger) handleImportedMessages(messagesToHandle map[transport.Filter][]*types.Message) error { messageState := m.buildMessageState() @@ -3654,14 +3744,21 @@ func (m *Messenger) handleImportedMessages(messagesToHandle map[transport.Filter publicKey := msg.SigPubKey() senderID := contactIDFromPublicKey(publicKey) + if len(msg.EncryptionLayer.HashRatchetInfo) != 0 { + err := m.communitiesManager.NewHashRatchetKeys(msg.EncryptionLayer.HashRatchetInfo) + if err != nil { + m.logger.Warn("failed to invalidate communities description cache", zap.Error(err)) + } + + } // Don't process duplicates messageID := msg.TransportLayer.Message.ThirdPartyID exists, err := m.messageExists(messageID, messageState.ExistingMessagesMap) if err != nil { logger.Warn("failed to check message exists", zap.Error(err)) } - if exists { - logger.Debug("messageExists", zap.String("messageID", messageID)) + if exists && m.shouldSkipDuplicate(msg.ApplicationLayer.Type) { + logger.Debug("skipping duplicate", zap.String("messageID", messageID)) continue } @@ -3859,8 +3956,8 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte if err != nil { logger.Warn("failed to check message exists", zap.Error(err)) } - if exists { - logger.Debug("messageExists", zap.String("messageID", messageID)) + if exists && m.shouldSkipDuplicate(msg.ApplicationLayer.Type) { + logger.Debug("skipping duplicate", zap.String("messageID", messageID)) continue } @@ -4143,9 +4240,8 @@ func (m *Messenger) MessageByChatID(chatID, cursor string, limit int) ([]*common } if m.httpServer != nil { - for idx := range msgs { - err = m.prepareMessage(msgs[idx], m.httpServer) - + for _, msg := range msgs { + err = m.prepareMessage(msg, m.httpServer) if err != nil { return nil, "", err } @@ -4156,13 +4252,13 @@ func (m *Messenger) MessageByChatID(chatID, cursor string, limit int) ([]*common } func (m *Messenger) prepareMessages(messages map[string]*common.Message) error { - if m.httpServer != nil { - for idx := range messages { - err := m.prepareMessage(messages[idx], m.httpServer) - - if err != nil { - return err - } + if m.httpServer == nil { + return nil + } + for idx := range messages { + err := m.prepareMessage(messages[idx], m.httpServer) + if err != nil { + return err } } return nil @@ -4179,6 +4275,15 @@ func extractQuotedImages(messages []*common.Message, s *server.MediaServer) []st return quotedImages } +func (m *Messenger) prepareTokenData(tokenData *ActivityTokenData, s *server.MediaServer) error { + if tokenData.TokenType == int(protobuf.CommunityTokenType_ERC721) { + tokenData.ImageURL = s.MakeWalletCollectibleImagesURL(tokenData.CollectibleID) + } else if tokenData.TokenType == int(protobuf.CommunityTokenType_ERC20) { + tokenData.ImageURL = s.MakeCommunityTokenImagesURL(tokenData.CommunityID, tokenData.ChainID, tokenData.Symbol) + } + return nil +} + func (m *Messenger) prepareMessage(msg *common.Message, s *server.MediaServer) error { if msg.QuotedMessage != nil && msg.QuotedMessage.ContentType == int64(protobuf.ChatMessage_IMAGE) { msg.QuotedMessage.ImageLocalURL = s.MakeImageURL(msg.QuotedMessage.ID) @@ -4192,18 +4297,22 @@ func (m *Messenger) prepareMessage(msg *common.Message, s *server.MediaServer) e } if quotedMessage.ChatMessage != nil { + image := quotedMessage.ChatMessage.GetImage() albumID := quotedMessage.ChatMessage.GetImage().AlbumId - albumMessages, err := m.persistence.albumMessages(quotedMessage.LocalChatID, albumID) - if err != nil { - return err - } - var quotedImages = extractQuotedImages(albumMessages, s) + if image != nil && image.GetAlbumId() != "" { + albumMessages, err := m.persistence.albumMessages(quotedMessage.LocalChatID, albumID) + if err != nil { + return err + } + + quotedImages := extractQuotedImages(albumMessages, s) + quotedImagesJSON, err := json.Marshal(quotedImages) + if err != nil { + return err + } - if quotedImagesJSON, err := json.Marshal(quotedImages); err == nil { msg.QuotedMessage.AlbumImages = quotedImagesJSON - } else { - return err } } } @@ -4264,8 +4373,7 @@ func (m *Messenger) prepareMessage(msg *common.Message, s *server.MediaServer) e if msg.ContentType == protobuf.ChatMessage_STICKER { msg.StickerLocalURL = s.MakeStickerURL(msg.GetSticker().Hash) } - - msg.LinkPreviews = msg.ConvertFromProtoToLinkPreviews(s.MakeLinkPreviewThumbnailURL) + msg.LinkPreviews = msg.ConvertFromProtoToLinkPreviews(s.MakeLinkPreviewThumbnailURL, s.MakeLinkPreviewFaviconURL) msg.StatusLinkPreviews = msg.ConvertFromProtoToStatusLinkPreviews(s.MakeStatusLinkPreviewThumbnailURL) return nil @@ -5619,143 +5727,6 @@ func generateAliasAndIdenticon(pk string) (string, string, error) { } -func (m *Messenger) SendEmojiReaction(ctx context.Context, chatID, messageID string, emojiID protobuf.EmojiReaction_Type) (*MessengerResponse, error) { - var response MessengerResponse - - chat, ok := m.allChats.Load(chatID) - if !ok { - return nil, ErrChatNotFound - } - clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) - - emojiR := &EmojiReaction{ - EmojiReaction: &protobuf.EmojiReaction{ - Clock: clock, - MessageId: messageID, - ChatId: chatID, - Type: emojiID, - }, - LocalChatID: chatID, - From: types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)), - } - encodedMessage, err := m.encodeChatEntity(chat, emojiR) - if err != nil { - return nil, err - } - - _, err = m.dispatchMessage(ctx, common.RawMessage{ - LocalChatID: chatID, - Payload: encodedMessage, - SkipGroupMessageWrap: true, - MessageType: protobuf.ApplicationMetadataMessage_EMOJI_REACTION, - // Don't resend using datasync, that would create quite a lot - // of traffic if clicking too eagelry - ResendAutomatically: false, - }) - if err != nil { - return nil, err - } - - response.AddEmojiReaction(emojiR) - response.AddChat(chat) - - err = m.persistence.SaveEmojiReaction(emojiR) - if err != nil { - return nil, errors.Wrap(err, "Can't save emoji reaction in db") - } - - return &response, nil -} - -func (m *Messenger) EmojiReactionsByChatID(chatID string, cursor string, limit int) ([]*EmojiReaction, error) { - chat, err := m.persistence.Chat(chatID) - if err != nil { - return nil, err - } - - if chat.Timeline() { - var chatIDs = []string{"@" + contactIDFromPublicKey(&m.identity.PublicKey)} - m.allContacts.Range(func(contactID string, contact *Contact) (shouldContinue bool) { - if contact.added() { - chatIDs = append(chatIDs, "@"+contact.ID) - } - return true - }) - return m.persistence.EmojiReactionsByChatIDs(chatIDs, cursor, limit) - } - return m.persistence.EmojiReactionsByChatID(chatID, cursor, limit) -} - -func (m *Messenger) EmojiReactionsByChatIDMessageID(chatID string, messageID string) ([]*EmojiReaction, error) { - _, err := m.persistence.Chat(chatID) - if err != nil { - return nil, err - } - - return m.persistence.EmojiReactionsByChatIDMessageID(chatID, messageID) -} - -func (m *Messenger) SendEmojiReactionRetraction(ctx context.Context, emojiReactionID string) (*MessengerResponse, error) { - emojiR, err := m.persistence.EmojiReactionByID(emojiReactionID) - if err != nil { - return nil, err - } - - // Check that the sender is the key owner - pk := types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)) - if emojiR.From != pk { - return nil, errors.Errorf("identity mismatch, "+ - "emoji reactions can only be retracted by the reaction sender, "+ - "emoji reaction sent by '%s', current identity '%s'", - emojiR.From, pk, - ) - } - - // Get chat and clock - chat, ok := m.allChats.Load(emojiR.GetChatId()) - if !ok { - return nil, ErrChatNotFound - } - clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) - - // Update the relevant fields - emojiR.Clock = clock - emojiR.Retracted = true - - encodedMessage, err := m.encodeChatEntity(chat, emojiR) - if err != nil { - return nil, err - } - - // Send the marshalled EmojiReactionRetraction protobuf - _, err = m.dispatchMessage(ctx, common.RawMessage{ - LocalChatID: emojiR.GetChatId(), - Payload: encodedMessage, - SkipGroupMessageWrap: true, - MessageType: protobuf.ApplicationMetadataMessage_EMOJI_REACTION, - // Don't resend using datasync, that would create quite a lot - // of traffic if clicking too eagelry - ResendAutomatically: false, - }) - if err != nil { - return nil, err - } - - // Update MessengerResponse - response := MessengerResponse{} - emojiR.Retracted = true - response.AddEmojiReaction(emojiR) - response.AddChat(chat) - - // Persist retraction state for emoji reaction - err = m.persistence.SaveEmojiReaction(emojiR) - if err != nil { - return nil, err - } - - return &response, nil -} - func (m *Messenger) encodeChatEntity(chat *Chat, message common.ChatEntity) ([]byte, error) { var encodedMessage []byte var err error diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_activity_center.go b/vendor/github.com/status-im/status-go/protocol/messenger_activity_center.go index a3901bb7..616e6248 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_activity_center.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_activity_center.go @@ -70,6 +70,14 @@ func (m *Messenger) ActivityCenterNotifications(request ActivityCenterNotificati } } } + if notification.TokenData != nil { + if notification.Type == ActivityCenterNotificationTypeCommunityTokenReceived || notification.Type == ActivityCenterNotificationTypeFirstCommunityTokenReceived { + err = m.prepareTokenData(notification.TokenData, m.httpServer) + if err != nil { + return nil, err + } + } + } } } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_backup.go b/vendor/github.com/status-im/status-go/protocol/messenger_backup.go index 81cf6b8a..003d5f7f 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_backup.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_backup.go @@ -315,11 +315,10 @@ func (m *Messenger) backupCommunities(ctx context.Context, clock uint64) ([]*pro return nil, err } - encodedKeys, err := m.encryptor.GetAllHREncodedKeys(c.ID()) + err = m.propagateSyncInstallationCommunityWithHRKeys(syncMessage, c) if err != nil { return nil, err } - syncMessage.EncryptionKeys = encodedKeys backupMessage := &protobuf.Backup{ Communities: []*protobuf.SyncInstallationCommunity{syncMessage}, @@ -475,14 +474,20 @@ func (m *Messenger) backupProfile(ctx context.Context, clock uint64) ([]*protobu } } + profileShowcasePreferences, err := m.GetProfileShowcasePreferences() + if err != nil { + return nil, err + } + backupMessage := &protobuf.Backup{ Profile: &protobuf.BackedUpProfile{ - KeyUid: keyUID, - DisplayName: displayName, - Pictures: pictureProtos, - DisplayNameClock: displayNameClock, - SocialLinks: syncSocialLinks, - EnsUsernameDetails: ensUsernameDetailProtos, + KeyUid: keyUID, + DisplayName: displayName, + Pictures: pictureProtos, + DisplayNameClock: displayNameClock, + SocialLinks: syncSocialLinks, + EnsUsernameDetails: ensUsernameDetailProtos, + ProfileShowcasePreferences: ToProfileShowcasePreferencesProto(profileShowcasePreferences), }, } @@ -492,7 +497,7 @@ func (m *Messenger) backupProfile(ctx context.Context, clock uint64) ([]*protobu } func (m *Messenger) backupKeypairs() ([]*protobuf.Backup, error) { - keypairs, err := m.settings.GetActiveKeypairs() + keypairs, err := m.settings.GetAllKeypairs() if err != nil { return nil, err } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_backup_handler.go b/vendor/github.com/status-im/status-go/protocol/messenger_backup_handler.go index 01f09471..e7464b8d 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_backup_handler.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_backup_handler.go @@ -7,6 +7,7 @@ import ( "github.com/status-im/status-go/images" "github.com/status-im/status-go/multiaccounts/errors" + "github.com/status-im/status-go/multiaccounts/settings" "github.com/status-im/status-go/protocol/identity" "github.com/status-im/status-go/protocol/protobuf" v1protocol "github.com/status-im/status-go/protocol/v1" @@ -177,6 +178,14 @@ func (m *Messenger) handleBackedUpProfile(message *protobuf.BackedUpProfile, bac return err } + profileShowcasePreferences, err := m.saveProfileShowcasePreferencesProto(message.ProfileShowcasePreferences, false) + if err != nil { + return err + } + if profileShowcasePreferences != nil { + response.SetProfileShowcasePreferences(profileShowcasePreferences) + } + var ensUsernameDetails []*ensservice.UsernameDetail for _, d := range message.EnsUsernameDetails { dd, err := m.saveEnsUsernameDetailProto(d) @@ -212,12 +221,21 @@ func (m *Messenger) handleBackedUpSettings(message *protobuf.SyncSetting) error if settingField != nil { if message.GetType() == protobuf.SyncSetting_PREFERRED_NAME && message.GetValueString() != "" { - m.account.Name = message.GetValueString() - err = m.multiAccounts.SaveAccount(*m.account) + displayNameClock, err := m.settings.GetSettingLastSynced(settings.DisplayName) if err != nil { - m.logger.Warn("[handleBackedUpSettings] failed to save account", zap.Error(err)) + m.logger.Warn("failed to get last synced clock for display name", zap.Error(err)) return nil } + // there is a race condition between display name and preferred name on updating m.account.Name, so we need to check the clock + // there is also a similar check within SaveSyncDisplayName + if displayNameClock < message.GetClock() { + m.account.Name = message.GetValueString() + err = m.multiAccounts.SaveAccount(*m.account) + if err != nil { + m.logger.Warn("[handleBackedUpSettings] failed to save account", zap.Error(err)) + return nil + } + } } if m.config.messengerSignalsHandler != nil { @@ -242,7 +260,7 @@ func (m *Messenger) handleKeypair(message *protobuf.SyncKeypair) error { } // If user is recovering his account via seed phrase, but the backed up messages indicate that the profile keypair // is a keycard related profile, then we need to remove related profile keycards (only profile, other keycards should remain). - if multiAcc != nil && multiAcc.KeyUID == message.KeyUid && multiAcc.KeycardPairing == "" && len(message.Keycards) > 0 { + if multiAcc != nil && multiAcc.KeyUID == message.KeyUid && !multiAcc.RefersToKeycard() && len(message.Keycards) > 0 { message.Keycards = []*protobuf.SyncKeycard{} } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_communities.go b/vendor/github.com/status-im/status-go/protocol/messenger_communities.go index b5ab28b6..5fcb2a4f 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_communities.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_communities.go @@ -7,6 +7,7 @@ import ( "encoding/json" "errors" "fmt" + "strings" "sync" "time" @@ -156,36 +157,6 @@ func (m *Messenger) publishCommunityEvents(community *communities.Community, msg return err } -func (m *Messenger) publishCommunityEventsRejected(community *communities.Community, msg *communities.CommunityEventsMessage) error { - if !community.IsControlNode() { - return communities.ErrNotControlNode - } - m.logger.Debug("publishing community events rejected", zap.Any("event", msg)) - - communityEventsMessage := msg.ToProtobuf() - communityEventsMessageRejected := &protobuf.CommunityEventsMessageRejected{ - Msg: communityEventsMessage, - } - - payload, err := proto.Marshal(communityEventsMessageRejected) - if err != nil { - return err - } - - rawMessage := common.RawMessage{ - Payload: payload, - Sender: community.PrivateKey(), - // we don't want to wrap in an encryption layer message - SkipEncryptionLayer: true, - MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED, - PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be sent in community pubsub topic - } - - // TODO: resend in case of failure? - _, err = m.sender.SendPublic(context.Background(), types.EncodeHex(msg.CommunityID), rawMessage) - return err -} - func (m *Messenger) publishCommunityPrivilegedMemberSyncMessage(msg *communities.CommunityPrivilegedMemberSyncMessage) error { m.logger.Debug("publishing privileged user sync message", zap.Any("event", msg)) @@ -409,14 +380,6 @@ func (m *Messenger) handleCommunitiesSubscription(c chan *communities.Subscripti } } - if sub.CommunityEventsMessageInvalidClock != nil { - err := m.publishCommunityEventsRejected(sub.CommunityEventsMessageInvalidClock.Community, - sub.CommunityEventsMessageInvalidClock.CommunityEventsMessage) - if err != nil { - m.logger.Warn("failed to publish community events rejected", zap.Error(err)) - } - } - if sub.AcceptedRequestsToJoin != nil { for _, requestID := range sub.AcceptedRequestsToJoin { accept := &requests.AcceptRequestToJoinCommunity{ @@ -637,6 +600,31 @@ func (m *Messenger) JoinedCommunities() ([]*communities.Community, error) { return m.communitiesManager.Joined() } +func (m *Messenger) IsDisplayNameDupeOfCommunityMember(name string) (bool, error) { + controlled, err := m.communitiesManager.Controlled() + if err != nil { + return false, err + } + + joined, err := m.communitiesManager.Joined() + if err != nil { + return false, err + } + + for _, community := range append(controlled, joined...) { + for memberKey := range community.Members() { + contact := m.GetContactByID(memberKey) + if contact == nil { + continue + } + if strings.Compare(contact.DisplayName, name) == 0 { + return true, nil + } + } + } + return false, nil +} + func (m *Messenger) CommunityUpdateLastOpenedAt(communityID string) (int64, error) { id, err := hexutil.Decode(communityID) if err != nil { @@ -1565,11 +1553,16 @@ func (m *Messenger) acceptRequestToJoinCommunity(requestToJoin *communities.Requ } } + encryptedDescription, err := community.EncryptedDescription() + if err != nil { + return nil, err + } + requestToJoinResponseProto := &protobuf.CommunityRequestToJoinResponse{ Clock: community.Clock(), Accepted: true, CommunityId: community.ID(), - Community: community.Description(), + Community: encryptedDescription, Grant: grant, ProtectedTopicPrivateKey: crypto.FromECDSA(key), Shard: community.Shard().Protobuffer(), @@ -1831,17 +1824,19 @@ func (m *Messenger) leaveCommunity(communityID types.HexBytes) (*MessengerRespon return response, nil } -func (m *Messenger) kickedOutOfCommunity(communityID types.HexBytes) (*MessengerResponse, error) { +func (m *Messenger) kickedOutOfCommunity(communityID types.HexBytes, spectateMode bool) (*MessengerResponse, error) { response := &MessengerResponse{} - community, err := m.communitiesManager.KickedOutOfCommunity(communityID) + community, err := m.communitiesManager.KickedOutOfCommunity(communityID, spectateMode) if err != nil { return nil, err } - err = m.DeleteProfileShowcaseCommunity(community) - if err != nil { - return nil, err + if !spectateMode { + err = m.DeleteProfileShowcaseCommunity(community) + if err != nil { + return nil, err + } } response.AddCommunity(community) @@ -2216,6 +2211,51 @@ func (m *Messenger) RemovePubsubTopicPrivateKey(topic string) error { return m.transport.RemovePubsubTopicKey(topic) } +func (m *Messenger) SetCommunityStorenodes(request *requests.SetCommunityStorenodes) (*MessengerResponse, error) { + if err := request.Validate(); err != nil { + return nil, err + } + community, err := m.communitiesManager.GetByID(request.CommunityID) + if err != nil { + return nil, err + } + if !community.IsControlNode() { + return nil, errors.New("not admin or owner") + } + + if err := m.communityStorenodes.UpdateStorenodesInDB(request.CommunityID, request.Storenodes, 0); err != nil { + return nil, err + } + err = m.sendCommunityPublicStorenodesInfo(community, request.Storenodes) + if err != nil { + return nil, err + } + response := &MessengerResponse{ + CommunityStorenodes: request.Storenodes, + } + return response, nil +} + +func (m *Messenger) GetCommunityStorenodes(communityID types.HexBytes) (*MessengerResponse, error) { + community, err := m.communitiesManager.GetByID(communityID) + if err != nil { + return nil, err + } + if community == nil { + return nil, communities.ErrOrgNotFound + } + + snodes, err := m.communityStorenodes.GetStorenodesFromDB(communityID) + if err != nil { + return nil, err + } + + response := &MessengerResponse{ + CommunityStorenodes: snodes, + } + return response, nil +} + func (m *Messenger) UpdateCommunityFilters(community *communities.Community) error { defaultFilters := m.DefaultFilters(community) publicFiltersToInit := make([]transport.FiltersToInitialize, 0, len(defaultFilters)+len(community.Chats())) @@ -2259,6 +2299,8 @@ func (m *Messenger) UpdateCommunityFilters(community *communities.Community) err } func (m *Messenger) CreateCommunityTokenPermission(request *requests.CreateCommunityTokenPermission) (*MessengerResponse, error) { + request.FillDeprecatedAmount() + if err := request.Validate(); err != nil { return nil, err } @@ -2279,6 +2321,12 @@ func (m *Messenger) CreateCommunityTokenPermission(request *requests.CreateCommu }() } + // ensure HRkeys are synced + err = m.syncCommunity(context.Background(), community, m.dispatchMessage) + if err != nil { + return nil, err + } + response := &MessengerResponse{} response.AddCommunity(community) response.CommunityChanges = []*communities.CommunityChanges{changes} @@ -2287,6 +2335,8 @@ func (m *Messenger) CreateCommunityTokenPermission(request *requests.CreateCommu } func (m *Messenger) EditCommunityTokenPermission(request *requests.EditCommunityTokenPermission) (*MessengerResponse, error) { + request.FillDeprecatedAmount() + if err := request.Validate(); err != nil { return nil, err } @@ -2342,6 +2392,23 @@ func (m *Messenger) DeleteCommunityTokenPermission(request *requests.DeleteCommu return response, nil } +func (m *Messenger) HandleCommunityReevaluatePermissionsRequest(state *ReceivedMessageState, request *protobuf.CommunityReevaluatePermissionsRequest, statusMessage *v1protocol.StatusMessage) error { + community, err := m.communitiesManager.GetByID(request.CommunityId) + if err != nil { + return err + } + + if !community.IsControlNode() { + return communities.ErrNotControlNode + } + + if !community.IsMemberTokenMaster(statusMessage.SigPubKey()) { + return communities.ErrNotAuthorized + } + + return m.communitiesManager.ScheduleMembersReevaluation(request.CommunityId) +} + func (m *Messenger) ReevaluateCommunityMembersPermissions(request *requests.ReevaluateCommunityMembersPermissions) (*MessengerResponse, error) { if err := request.Validate(); err != nil { return nil, err @@ -2352,14 +2419,37 @@ func (m *Messenger) ReevaluateCommunityMembersPermissions(request *requests.Reev return nil, err } - if err = m.communitiesManager.ReevaluateCommunityMembersPermissions(community); err != nil { - return nil, err + if community.IsControlNode() { + err = m.communitiesManager.ScheduleMembersReevaluation(request.CommunityID) + if err != nil { + return nil, err + } + } else if community.IsTokenMaster() { + reevaluateRequest := &protobuf.CommunityReevaluatePermissionsRequest{ + CommunityId: request.CommunityID, + } + + encodedMessage, err := proto.Marshal(reevaluateRequest) + if err != nil { + return nil, err + } + + rawMessage := common.RawMessage{ + Payload: encodedMessage, + CommunityID: request.CommunityID, + SkipEncryptionLayer: true, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST, + PubsubTopic: community.PubsubTopic(), + } + _, err = m.SendMessageToControlNode(community, rawMessage) + if err != nil { + return nil, err + } + } else { + return nil, communities.ErrNotAuthorized } - response := &MessengerResponse{} - response.AddCommunity(community) - - return response, nil + return &MessengerResponse{}, nil } func (m *Messenger) EditCommunity(request *requests.EditCommunity) (*MessengerResponse, error) { @@ -2656,6 +2746,24 @@ func (m *Messenger) BanUserFromCommunity(ctx context.Context, request *requests. } response.AddCommunity(community) + + if request.DeleteAllMessages && community.IsControlNode() { + deleteMessagesResponse, err := m.deleteCommunityMemberMessages(request.User.String(), request.CommunityID.String(), []*protobuf.DeleteCommunityMemberMessage{}) + if err != nil { + return nil, err + } + + err = response.Merge(deleteMessagesResponse) + if err != nil { + return nil, err + } + + // signal client with community and messages changes + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.MessengerResponse(deleteMessagesResponse) + } + } + return response, nil } @@ -2791,6 +2899,21 @@ func (m *Messenger) handleCommunityDescription(state *ReceivedMessageState, sign func (m *Messenger) handleCommunityResponse(state *ReceivedMessageState, communityResponse *communities.CommunityResponse) error { community := communityResponse.Community + if len(communityResponse.Changes.MembersBanned) > 0 { + for memberID, deleteAllMessages := range communityResponse.Changes.MembersBanned { + if deleteAllMessages { + response, err := m.deleteCommunityMemberMessages(memberID, community.IDString(), []*protobuf.DeleteCommunityMemberMessage{}) + if err != nil { + return err + } + + if err = state.Response.Merge(response); err != nil { + return err + } + } + } + } + state.Response.AddCommunity(community) state.Response.CommunityChanges = append(state.Response.CommunityChanges, communityResponse.Changes) state.Response.AddRequestsToJoinCommunity(communityResponse.RequestsToJoin) @@ -2835,11 +2958,13 @@ func (m *Messenger) handleCommunityResponse(state *ReceivedMessageState, communi oldChat.Description != chat.Description || oldChat.Emoji != chat.Emoji || oldChat.Color != chat.Color || + oldChat.HideIfPermissionsNotMet != chat.HideIfPermissionsNotMet || oldChat.UpdateFirstMessageTimestamp(chat.FirstMessageTimestamp) { oldChat.Name = chat.Name oldChat.Description = chat.Description oldChat.Emoji = chat.Emoji oldChat.Color = chat.Color + oldChat.HideIfPermissionsNotMet = chat.HideIfPermissionsNotMet // TODO(samyoul) remove storing of an updated reference pointer? state.AllChats.Store(chat.ID, oldChat) state.Response.AddChat(chat) @@ -2919,7 +3044,7 @@ func (m *Messenger) HandleCommunityUserKicked(state *ReceivedMessageState, messa return nil } - response, err := m.kickedOutOfCommunity(community.ID()) + response, err := m.kickedOutOfCommunity(community.ID(), false) if err != nil { m.logger.Error("cannot leave community", zap.Error(err)) return err @@ -3168,10 +3293,18 @@ func (m *Messenger) handleSyncInstallationCommunity(messageState *ReceivedMessag return nil } - // Handle community keys - if len(syncCommunity.EncryptionKeys) != 0 { + // Handle deprecated community keys + if len(syncCommunity.EncryptionKeysV1) != 0 { // We pass nil,nil as private key/public key as they won't be encrypted - _, err := m.encryptor.HandleHashRatchetKeysPayload(syncCommunity.Id, syncCommunity.EncryptionKeys, nil, nil) + _, err := m.encryptor.HandleHashRatchetKeysPayload(syncCommunity.Id, syncCommunity.EncryptionKeysV1, nil, nil) + if err != nil { + return err + } + } + + // Handle community and channel keys + if len(syncCommunity.EncryptionKeysV2) != 0 { + err := m.encryptor.HandleHashRatchetHeadersPayload(syncCommunity.EncryptionKeysV2) if err != nil { return err } @@ -3377,7 +3510,8 @@ func (m *Messenger) InitHistoryArchiveTasks(communities []*communities.Community } // Request possibly missed waku messages for community - _, err = m.syncFiltersFrom(filters, uint32(latestWakuMessageTimestamp)) + ms := m.getActiveMailserver(c.ID().String()) + _, err = m.syncFiltersFrom(*ms, filters, uint32(latestWakuMessageTimestamp)) if err != nil { m.communitiesManager.LogStdout("failed to request missing messages", zap.Error(err)) continue @@ -3933,28 +4067,53 @@ func (m *Messenger) CheckPermissionsToJoinCommunity(request *requests.CheckPermi return m.communitiesManager.CheckPermissionToJoin(request.CommunityID, addresses) } -func (m *Messenger) CheckCommunityChannelPermissions(request *requests.CheckCommunityChannelPermissions) (*communities.CheckChannelPermissionsResponse, error) { - if err := request.Validate(); err != nil { - return nil, err +func (m *Messenger) getSharedAddresses(communityID types.HexBytes, requestAddresses []string) ([]gethcommon.Address, error) { + addressesMap := make(map[string]struct{}) + + for _, v := range requestAddresses { + addressesMap[v] = struct{}{} } - var addresses []gethcommon.Address + if len(requestAddresses) == 0 { + sharedAddresses, err := m.GetRevealedAccounts(communityID, common.PubkeyToHex(&m.identity.PublicKey)) + if err != nil { + return nil, err + } - if len(request.Addresses) == 0 { + for _, v := range sharedAddresses { + addressesMap[v.Address] = struct{}{} + } + } + + if len(addressesMap) == 0 { accounts, err := m.settings.GetActiveAccounts() if err != nil { return nil, err } for _, a := range accounts { - addresses = append(addresses, gethcommon.HexToAddress(a.Address.Hex())) - } - } else { - for _, v := range request.Addresses { - addresses = append(addresses, gethcommon.HexToAddress(v)) + addressesMap[a.Address.Hex()] = struct{}{} } } + var addresses []gethcommon.Address + for addr := range addressesMap { + addresses = append(addresses, gethcommon.HexToAddress(addr)) + } + + return addresses, nil +} + +func (m *Messenger) CheckCommunityChannelPermissions(request *requests.CheckCommunityChannelPermissions) (*communities.CheckChannelPermissionsResponse, error) { + if err := request.Validate(); err != nil { + return nil, err + } + + addresses, err := m.getSharedAddresses(request.CommunityID, request.Addresses) + if err != nil { + return nil, err + } + return m.communitiesManager.CheckChannelPermissions(request.CommunityID, request.ChatID, addresses) } @@ -3963,21 +4122,9 @@ func (m *Messenger) CheckAllCommunityChannelsPermissions(request *requests.Check return nil, err } - var addresses []gethcommon.Address - - if len(request.Addresses) == 0 { - accounts, err := m.settings.GetActiveAccounts() - if err != nil { - return nil, err - } - - for _, a := range accounts { - addresses = append(addresses, gethcommon.HexToAddress(a.Address.Hex())) - } - } else { - for _, v := range request.Addresses { - addresses = append(addresses, gethcommon.HexToAddress(v)) - } + addresses, err := m.getSharedAddresses(request.CommunityID, request.Addresses) + if err != nil { + return nil, err } return m.communitiesManager.CheckAllChannelsPermissions(request.CommunityID, addresses) @@ -4145,6 +4292,7 @@ func (m *Messenger) GetCommunityMembersForWalletAddresses(communityID types.HexB func (m *Messenger) processCommunityChanges(messageState *ReceivedMessageState) { // Process any community changes + pkString := common.PubkeyToHex(&m.identity.PublicKey) for _, changes := range messageState.Response.CommunityChanges { if changes.ShouldMemberJoin { response, err := m.joinCommunity(context.TODO(), changes.Community.ID(), false) @@ -4159,38 +4307,13 @@ func (m *Messenger) processCommunityChanges(messageState *ReceivedMessageState) } } else if changes.MemberKicked { - response, err := m.kickedOutOfCommunity(changes.Community.ID()) - if err != nil { - m.logger.Error("cannot leave community", zap.Error(err)) - continue - } - - if err := messageState.Response.Merge(response); err != nil { - m.logger.Error("cannot merge join community response", zap.Error(err)) - continue - } - - // Activity Center notification - now := m.GetCurrentTimeInMillis() - notification := &ActivityCenterNotification{ - ID: types.FromHex(uuid.New().String()), - Type: ActivityCenterNotificationTypeCommunityKicked, - Timestamp: now, - CommunityID: changes.Community.IDString(), - Read: false, - UpdatedAt: now, - } - - err = m.addActivityCenterNotification(response, notification, nil) - if err != nil { - m.logger.Error("failed to save notification", zap.Error(err)) - continue - } - - if err := messageState.Response.Merge(response); err != nil { - m.logger.Error("cannot merge notification response", zap.Error(err)) - continue + notificationType := ActivityCenterNotificationTypeCommunityKicked + if changes.IsMemberBanned(pkString) { + notificationType = ActivityCenterNotificationTypeCommunityBanned } + m.leaveCommunityDueToKickOrBan(changes, notificationType, messageState.Response) + } else if changes.IsMemberUnbanned(pkString) { + m.AddActivityCenterNotificationToResponse(changes.Community.IDString(), ActivityCenterNotificationTypeCommunityUnbanned, messageState.Response) } } // Clean up as not used by clients currently @@ -4241,7 +4364,13 @@ func (m *Messenger) PromoteSelfToControlNode(communityID types.HexBytes) (*Messe return &response, nil } -func (m *Messenger) CreateResponseWithACNotification(communityID string, acType ActivityCenterType, isRead bool) (*MessengerResponse, error) { +func (m *Messenger) CreateResponseWithACNotification(communityID string, acType ActivityCenterType, isRead bool, tokenDataJSON string) (*MessengerResponse, error) { + tokenData := ActivityTokenData{} + err := json.Unmarshal([]byte(tokenDataJSON), &tokenData) + if len(tokenDataJSON) > 0 && err != nil { + // Only return error when activityDataString is not empty + return nil, err + } // Activity center notification notification := &ActivityCenterNotification{ ID: types.FromHex(uuid.New().String()), @@ -4251,11 +4380,17 @@ func (m *Messenger) CreateResponseWithACNotification(communityID string, acType Read: isRead, Deleted: false, UpdatedAt: m.GetCurrentTimeInMillis(), + TokenData: &tokenData, + } + + err = m.prepareTokenData(notification.TokenData, m.httpServer) + if err != nil { + return nil, err } response := &MessengerResponse{} - err := m.addActivityCenterNotification(response, notification, nil) + err = m.addActivityCenterNotification(response, notification, nil) if err != nil { m.logger.Error("failed to save notification", zap.Error(err)) return response, err @@ -4289,3 +4424,137 @@ func (m *Messenger) AddActivityCenterNotificationToResponse(communityID string, m.logger.Error("failed to save notification", zap.Error(err)) } } + +func (m *Messenger) leaveCommunityDueToKickOrBan(changes *communities.CommunityChanges, acType ActivityCenterType, stateResponse *MessengerResponse) { + // during the ownership change kicked user must stay in the spectate mode + ownerhipChange := changes.ControlNodeChanged != nil + response, err := m.kickedOutOfCommunity(changes.Community.ID(), ownerhipChange) + if err != nil { + m.logger.Error("cannot leave community", zap.Error(err)) + return + } + + if !ownerhipChange { + // Activity Center notification + notification := &ActivityCenterNotification{ + ID: types.FromHex(uuid.New().String()), + Type: acType, + Timestamp: m.getTimesource().GetCurrentTime(), + CommunityID: changes.Community.IDString(), + Read: false, + UpdatedAt: m.GetCurrentTimeInMillis(), + } + + err = m.addActivityCenterNotification(response, notification, nil) + if err != nil { + m.logger.Error("failed to save notification", zap.Error(err)) + return + } + } + + if err := stateResponse.Merge(response); err != nil { + m.logger.Error("cannot merge leave and notification response", zap.Error(err)) + } +} + +func (m *Messenger) GetCommunityMemberAllMessages(request *requests.CommunityMemberMessages) ([]*common.Message, error) { + if err := request.Validate(); err != nil { + return nil, err + } + + messages, err := m.persistence.GetCommunityMemberAllMessages(request.MemberPublicKey, request.CommunityID) + if err != nil { + return nil, err + } + + for _, message := range messages { + updatedMessages, err := m.persistence.MessagesByResponseTo(message.ID) + if err != nil { + return nil, err + } + + messages = append(messages, updatedMessages...) + } + + return messages, nil + +} + +func (m *Messenger) DeleteCommunityMemberMessages(request *requests.DeleteCommunityMemberMessages) (*MessengerResponse, error) { + if err := request.Validate(); err != nil { + return nil, err + } + + community, err := m.GetCommunityByID(request.CommunityID) + if err != nil { + return nil, err + } + + if community == nil { + return nil, communities.ErrOrgNotFound + } + + if !community.IsControlNode() && !community.IsPrivilegedMember(m.IdentityPublicKey()) { + return nil, communities.ErrNotEnoughPermissions + } + + memberPubKey, err := common.HexToPubkey(request.MemberPubKey) + if err != nil { + return nil, err + } + + if community.IsMemberOwner(memberPubKey) && !m.IdentityPublicKey().Equal(memberPubKey) { + return nil, communities.ErrNotOwner + } + + deleteMessagesResponse, err := m.deleteCommunityMemberMessages(request.MemberPubKey, request.CommunityID.String(), request.Messages) + if err != nil { + return nil, err + } + + deletedMessages := &protobuf.DeleteCommunityMemberMessages{ + Clock: uint64(time.Now().Unix()), + CommunityId: community.ID(), + MemberId: request.MemberPubKey, + Messages: request.Messages, + } + + payload, err := proto.Marshal(deletedMessages) + if err != nil { + return nil, err + } + + rawMessage := common.RawMessage{ + Payload: payload, + Sender: community.PrivateKey(), + SkipEncryptionLayer: true, + MessageType: protobuf.ApplicationMetadataMessage_DELETE_COMMUNITY_MEMBER_MESSAGES, + PubsubTopic: community.PubsubTopic(), + } + + _, err = m.sender.SendPublic(context.Background(), community.IDString(), rawMessage) + + return deleteMessagesResponse, err +} + +func (m *Messenger) HandleDeleteCommunityMemberMessages(state *ReceivedMessageState, request *protobuf.DeleteCommunityMemberMessages, statusMessage *v1protocol.StatusMessage) error { + community, err := m.communitiesManager.GetByID(request.CommunityId) + if err != nil { + return err + } + + if community == nil { + return communities.ErrOrgNotFound + } + + if !community.ControlNode().Equal(state.CurrentMessageState.PublicKey) && !community.IsPrivilegedMember(state.CurrentMessageState.PublicKey) { + return communities.ErrNotAuthorized + } + + deleteMessagesResponse, err := m.deleteCommunityMemberMessages(request.MemberId, community.IDString(), request.Messages) + if err != nil { + return err + } + + return state.Response.Merge(deleteMessagesResponse) +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_communities_import_discord.go b/vendor/github.com/status-im/status-go/protocol/messenger_communities_import_discord.go index e34236d2..f9e0f61d 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_communities_import_discord.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_communities_import_discord.go @@ -500,7 +500,8 @@ func createCommunityChannelForImport(request *requests.ImportDiscordChannel) *pr Description: request.Description, Color: request.Color, }, - CategoryId: "", + CategoryId: "", + HideIfPermissionsNotMet: false, } } @@ -1210,7 +1211,8 @@ func (m *Messenger) RequestImportDiscordCommunity(request *requests.ImportDiscor Description: channel.Channel.Description, Color: discordCommunity.Color(), }, - CategoryId: processedCategoriesIds[channel.Channel.CategoryID], + CategoryId: processedCategoriesIds[channel.Channel.CategoryID], + HideIfPermissionsNotMet: false, } // We call `CreateChat` on `communitiesManager` directly to get more control diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_community_for_mobile_testing.go b/vendor/github.com/status-im/status-go/protocol/messenger_community_for_mobile_testing.go index 3598ab4c..76717505 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_community_for_mobile_testing.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_community_for_mobile_testing.go @@ -126,7 +126,7 @@ func (m *Messenger) CreateTokenGatedCommunity() (*MessengerResponse, error) { Type: protobuf.CommunityTokenType_ERC20, Symbol: "STT", Name: "Status Test Token", - Amount: "10", + AmountInWei: "10000000000000000000", Decimals: 18, }}, ChatIds: []string{generalChatID}, diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_community_shard.go b/vendor/github.com/status-im/status-go/protocol/messenger_community_shard.go index e23de4d6..097c3ea8 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_community_shard.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_community_shard.go @@ -2,7 +2,6 @@ package protocol import ( "context" - "crypto/ecdsa" "errors" "github.com/golang/protobuf/proto" @@ -75,13 +74,7 @@ func (m *Messenger) HandleCommunityPublicShardInfo(state *ReceivedMessageState, m.logger.Error("HandleCommunityPublicShardInfo failed: ", zap.Error(err), zap.String("communityID", types.EncodeHex(publicShardInfo.CommunityId))) } - signer, err := recoverCommunityShardInfoSignature(a) - if err != nil { - logError(err) - return err - } - - err = m.verifyCommunityPublicShardInfo(publicShardInfo, signer) + err = m.verifyCommunitySignature(a.Payload, a.Signature, publicShardInfo.CommunityId, publicShardInfo.ChainId) if err != nil { logError(err) return err @@ -95,26 +88,25 @@ func (m *Messenger) HandleCommunityPublicShardInfo(state *ReceivedMessageState, return nil } -func recoverCommunityShardInfoSignature(rawShardInfo *protobuf.CommunityPublicShardInfo) (*ecdsa.PublicKey, error) { - if rawShardInfo.Signature == nil || len(rawShardInfo.Signature) == 0 { - return nil, errors.New("missing shard info signature") +func (m *Messenger) verifyCommunitySignature(payload, signature, communityID []byte, chainID uint64) error { + if len(signature) == 0 { + return errors.New("missing signature") } - - return crypto.SigToPub(crypto.Keccak256(rawShardInfo.Payload), rawShardInfo.Signature) -} - -func (m *Messenger) verifyCommunityPublicShardInfo(publicShardInfo *protobuf.PublicShardInfo, signer *ecdsa.PublicKey) error { - pubKeyStr := common.PubkeyToHex(signer) + pubKey, err := crypto.SigToPub(crypto.Keccak256(payload), signature) + if err != nil { + return err + } + pubKeyStr := common.PubkeyToHex(pubKey) var ownerPublicKey string - if publicShardInfo.ChainId > 0 { - owner, err := m.communitiesManager.SafeGetSignerPubKey(publicShardInfo.ChainId, types.EncodeHex(publicShardInfo.CommunityId)) + if chainID > 0 { + owner, err := m.communitiesManager.SafeGetSignerPubKey(chainID, types.EncodeHex(communityID)) if err != nil { return err } ownerPublicKey = owner } else { - communityPubkey, err := crypto.DecompressPubkey(publicShardInfo.CommunityId) + communityPubkey, err := crypto.DecompressPubkey(communityID) if err != nil { return err } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_community_storenodes.go b/vendor/github.com/status-im/status-go/protocol/messenger_community_storenodes.go new file mode 100644 index 00000000..e2374085 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/messenger_community_storenodes.go @@ -0,0 +1,92 @@ +package protocol + +import ( + "context" + "errors" + + "github.com/golang/protobuf/proto" + "go.uber.org/zap" + + "github.com/status-im/status-go/eth-node/crypto" + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/communities" + "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/protocol/storenodes" + v1protocol "github.com/status-im/status-go/protocol/v1" +) + +func (m *Messenger) sendCommunityPublicStorenodesInfo(community *communities.Community, snodes storenodes.Storenodes) error { + if !community.IsControlNode() { + return communities.ErrNotControlNode + } + + clock, _ := m.getLastClockWithRelatedChat() + pb := &protobuf.CommunityStorenodes{ + Clock: clock, + CommunityId: community.ID(), + Storenodes: snodes.ToProtobuf(), + ChainId: communities.CommunityDescriptionTokenOwnerChainID(community.Description()), + } + snPayload, err := proto.Marshal(pb) + if err != nil { + return err + } + signature, err := crypto.Sign(crypto.Keccak256(snPayload), community.PrivateKey()) + if err != nil { + return err + } + signedStorenodesInfo := &protobuf.CommunityPublicStorenodesInfo{ + Signature: signature, + Payload: snPayload, + } + signedPayload, err := proto.Marshal(signedStorenodesInfo) + if err != nil { + return err + } + + rawMessage := common.RawMessage{ + Payload: signedPayload, + Sender: community.PrivateKey(), + SkipEncryptionLayer: true, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_PUBLIC_STORENODES_INFO, + PubsubTopic: community.PubsubTopic(), + } + + _, err = m.sender.SendPublic(context.Background(), community.IDString(), rawMessage) + return err +} + +// HandleCommunityPublicStorenodesInfo will process the control message sent by the community owner on updating the community storenodes for his community (sendCommunityPublicStorenodesInfo). +// The message will be received by many peers that are not interested on that community, so if we don't have this community in our DB we just ignore this message. +func (m *Messenger) HandleCommunityPublicStorenodesInfo(state *ReceivedMessageState, a *protobuf.CommunityPublicStorenodesInfo, statusMessage *v1protocol.StatusMessage) error { + sn := &protobuf.CommunityStorenodes{} + err := proto.Unmarshal(a.Payload, sn) + if err != nil { + return err + } + logger := m.logger.Named("HandleCommunityPublicStorenodesInfo").With(zap.String("communityID", types.EncodeHex(sn.CommunityId))) + + err = m.verifyCommunitySignature(a.Payload, a.Signature, sn.CommunityId, sn.ChainId) + if err != nil { + logger.Error("failed to verify community signature", zap.Error(err)) + return err + } + + // verify if we are interested in this control message + _, err = m.communitiesManager.GetByID(sn.CommunityId) + if err != nil { + if errors.Is(err, communities.ErrOrgNotFound) { + logger.Debug("ignoring control message, community not found") + return nil + } + logger.Error("failed get community by id", zap.Error(err)) + return err + } + + if err := m.communityStorenodes.UpdateStorenodesInDB(sn.CommunityId, storenodes.FromProtobuf(sn.Storenodes, sn.Clock), sn.Clock); err != nil { + logger.Error("failed to update storenodes for community", zap.Error(err)) + return err + } + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_config.go b/vendor/github.com/status-im/status-go/protocol/messenger_config.go index 75cb52a3..c4a6aeb4 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_config.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_config.go @@ -3,6 +3,7 @@ package protocol import ( "database/sql" "encoding/json" + "time" "github.com/status-im/status-go/account" "github.com/status-im/status-go/rpc" @@ -75,7 +76,8 @@ type config struct { // Config for the envelopes monitor envelopesMonitorConfig *transport.EnvelopesMonitorConfig - featureFlags common.FeatureFlags + featureFlags common.FeatureFlags + codeControlFlags common.CodeControlFlags appDb *sql.DB walletDb *sql.DB @@ -92,6 +94,7 @@ type config struct { httpServer *server.MediaServer rpcClient *rpc.Client tokenManager communities.TokenManager + collectiblesManager communities.CollectiblesManager accountsManager account.Manager verifyTransactionClient EthClient @@ -113,17 +116,18 @@ type config struct { telemetryServerURL string wakuService *wakuv2.Waku - messageResendMinDelay int + messageResendMinDelay time.Duration messageResendMaxCount int } func messengerDefaultConfig() config { c := config{ - messageResendMinDelay: 30, + messageResendMinDelay: 30 * time.Second, messageResendMaxCount: 3, } - c.featureFlags.AutoRequestHistoricMessages = true + c.codeControlFlags.AutoRequestHistoricMessages = true + c.codeControlFlags.CuratedCommunitiesUpdateLoopEnabled = true return c } @@ -152,7 +156,7 @@ func WithVerifyTransactionClient(client EthClient) Option { } } -func WithResendParams(minDelay int, maxCount int) Option { +func WithResendParams(minDelay time.Duration, maxCount int) Option { return func(c *config) error { c.messageResendMinDelay = minDelay c.messageResendMaxCount = maxCount @@ -394,16 +398,16 @@ func WithTokenManager(tokenManager communities.TokenManager) Option { } } +func WithCollectiblesManager(collectiblesManager communities.CollectiblesManager) Option { + return func(c *config) error { + c.collectiblesManager = collectiblesManager + return nil + } +} + func WithAccountManager(accountManager account.Manager) Option { return func(c *config) error { c.accountsManager = accountManager return nil } } - -func WithAutoRequestHistoricMessages(enabled bool) Option { - return func(c *config) error { - c.featureFlags.AutoRequestHistoricMessages = enabled - return nil - } -} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_contact_verification.go b/vendor/github.com/status-im/status-go/protocol/messenger_contact_verification.go index 05016eed..32a0cbfa 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_contact_verification.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_contact_verification.go @@ -869,20 +869,20 @@ func (m *Messenger) HandleAcceptContactVerification(state *ReceivedMessageState, return err } - if persistedVR != nil && persistedVR.RepliedAt > request.Clock { - return nil // older message, ignore it - } - - if persistedVR.RequestStatus == verification.RequestStatusCANCELED { - return nil // Do nothing, We have already cancelled the verification request - } - if persistedVR == nil { // This is a response for which we have not received its request before persistedVR = &verification.Request{} persistedVR.ID = request.Id persistedVR.From = contactID persistedVR.To = myPubKey + } else { + if persistedVR.RepliedAt > request.Clock { + return nil // older message, ignore it + } + + if persistedVR.RequestStatus == verification.RequestStatusCANCELED { + return nil // Do nothing, We have already cancelled the verification request + } } persistedVR.RequestStatus = verification.RequestStatusACCEPTED diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_contacts.go b/vendor/github.com/status-im/status-go/protocol/messenger_contacts.go index 2d7d2355..2683b1c3 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_contacts.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_contacts.go @@ -27,6 +27,8 @@ const incomingMutualStateEventSentDefaultText = "@%s sent you a contact request" const incomingMutualStateEventAcceptedDefaultText = "@%s accepted your contact request" const incomingMutualStateEventRemovedDefaultText = "@%s removed you as a contact" +var ErrGetLatestContactRequestForContactInvalidID = errors.New("get-latest-contact-request-for-contact: invalid id") + type SelfContactChangeEvent struct { DisplayNameChanged bool PreferredNameChanged bool @@ -854,6 +856,7 @@ func (m *Messenger) blockContact(ctx context.Context, response *MessengerRespons return err } + contactWasAdded := contact.added() contact.Block(clock) contact.LastUpdatedLocally = m.getTimesource().GetCurrentTime() @@ -876,9 +879,11 @@ func (m *Messenger) blockContact(ctx context.Context, response *MessengerRespons } if !fromSyncing { - err = m.sendRetractContactRequest(contact) - if err != nil { - return err + if contactWasAdded { + err = m.sendRetractContactRequest(contact) + if err != nil { + return err + } } err = m.syncContact(context.Background(), contact, m.dispatchMessage) @@ -1158,6 +1163,28 @@ func (m *Messenger) sendRetractContactRequest(contact *Contact) error { return err } +func (m *Messenger) GetLatestContactRequestForContact(contactID string) (*MessengerResponse, error) { + if len(contactID) == 0 { + return nil, ErrGetLatestContactRequestForContactInvalidID + } + + contactRequestID, err := m.persistence.LatestPendingContactRequestIDForContact(contactID) + if err != nil { + return nil, err + } + + contactRequest, err := m.persistence.MessageByID(contactRequestID) + if err != nil { + m.logger.Error("contact request not found", zap.String("contactRequestID", contactRequestID), zap.Error(err)) + return nil, err + } + + response := &MessengerResponse{} + response.AddMessage(contactRequest) + + return response, nil +} + func (m *Messenger) AcceptLatestContactRequestForContact(ctx context.Context, request *requests.AcceptLatestContactRequestForContact) (*MessengerResponse, error) { if err := request.Validate(); err != nil { return nil, err diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_curated_communities.go b/vendor/github.com/status-im/status-go/protocol/messenger_curated_communities.go index 905cee51..9d1f0208 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_curated_communities.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_curated_communities.go @@ -20,7 +20,12 @@ const ( // Regularly gets list of curated communities and signals them to client func (m *Messenger) startCuratedCommunitiesUpdateLoop() { - logger := m.logger.Named("startCuratedCommunitiesUpdateLoop") + logger := m.logger.Named("curatedCommunitiesUpdateLoop") + + if m.contractMaker == nil { + logger.Warn("not starting curated communities loop: contract maker not initialized") + return + } go func() { // Initialize interval to 0 for immediate execution @@ -76,7 +81,6 @@ func (m *Messenger) startCuratedCommunitiesUpdateLoop() { func (m *Messenger) getCuratedCommunitiesFromContract() (*communities.CuratedCommunities, error) { if m.contractMaker == nil { - m.logger.Warn("contract maker not initialized") return nil, errors.New("contract maker not initialized") } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_emoji_reactions.go b/vendor/github.com/status-im/status-go/protocol/messenger_emoji_reactions.go new file mode 100644 index 00000000..9c945dc0 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/messenger_emoji_reactions.go @@ -0,0 +1,149 @@ +package protocol + +import ( + "context" + + "github.com/pkg/errors" + + "github.com/status-im/status-go/eth-node/crypto" + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/protobuf" +) + +func (m *Messenger) SendEmojiReaction(ctx context.Context, chatID, messageID string, emojiID protobuf.EmojiReaction_Type) (*MessengerResponse, error) { + var response MessengerResponse + + chat, ok := m.allChats.Load(chatID) + if !ok { + return nil, ErrChatNotFound + } + clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) + + emojiR := &EmojiReaction{ + EmojiReaction: &protobuf.EmojiReaction{ + Clock: clock, + MessageId: messageID, + ChatId: chatID, + Type: emojiID, + }, + LocalChatID: chatID, + From: types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)), + } + encodedMessage, err := m.encodeChatEntity(chat, emojiR) + if err != nil { + return nil, err + } + + _, err = m.dispatchMessage(ctx, common.RawMessage{ + LocalChatID: chatID, + Payload: encodedMessage, + SkipGroupMessageWrap: true, + MessageType: protobuf.ApplicationMetadataMessage_EMOJI_REACTION, + // Don't resend using datasync, that would create quite a lot + // of traffic if clicking too eagelry + ResendAutomatically: false, + }) + if err != nil { + return nil, err + } + + response.AddEmojiReaction(emojiR) + response.AddChat(chat) + + err = m.persistence.SaveEmojiReaction(emojiR) + if err != nil { + return nil, errors.Wrap(err, "Can't save emoji reaction in db") + } + + return &response, nil +} + +func (m *Messenger) EmojiReactionsByChatID(chatID string, cursor string, limit int) ([]*EmojiReaction, error) { + chat, err := m.persistence.Chat(chatID) + if err != nil { + return nil, err + } + + if chat.Timeline() { + var chatIDs = []string{"@" + contactIDFromPublicKey(&m.identity.PublicKey)} + m.allContacts.Range(func(contactID string, contact *Contact) (shouldContinue bool) { + if contact.added() { + chatIDs = append(chatIDs, "@"+contact.ID) + } + return true + }) + return m.persistence.EmojiReactionsByChatIDs(chatIDs, cursor, limit) + } + return m.persistence.EmojiReactionsByChatID(chatID, cursor, limit) +} + +func (m *Messenger) EmojiReactionsByChatIDMessageID(chatID string, messageID string) ([]*EmojiReaction, error) { + _, err := m.persistence.Chat(chatID) + if err != nil { + return nil, err + } + + return m.persistence.EmojiReactionsByChatIDMessageID(chatID, messageID) +} + +func (m *Messenger) SendEmojiReactionRetraction(ctx context.Context, emojiReactionID string) (*MessengerResponse, error) { + emojiR, err := m.persistence.EmojiReactionByID(emojiReactionID) + if err != nil { + return nil, err + } + + // Check that the sender is the key owner + pk := types.EncodeHex(crypto.FromECDSAPub(&m.identity.PublicKey)) + if emojiR.From != pk { + return nil, errors.Errorf("identity mismatch, "+ + "emoji reactions can only be retracted by the reaction sender, "+ + "emoji reaction sent by '%s', current identity '%s'", + emojiR.From, pk, + ) + } + + // Get chat and clock + chat, ok := m.allChats.Load(emojiR.GetChatId()) + if !ok { + return nil, ErrChatNotFound + } + clock, _ := chat.NextClockAndTimestamp(m.getTimesource()) + + // Update the relevant fields + emojiR.Clock = clock + emojiR.Retracted = true + + encodedMessage, err := m.encodeChatEntity(chat, emojiR) + if err != nil { + return nil, err + } + + // Send the marshalled EmojiReactionRetraction protobuf + _, err = m.dispatchMessage(ctx, common.RawMessage{ + LocalChatID: emojiR.GetChatId(), + Payload: encodedMessage, + SkipGroupMessageWrap: true, + MessageType: protobuf.ApplicationMetadataMessage_EMOJI_REACTION, + // Don't resend using datasync, that would create quite a lot + // of traffic if clicking too eagelry + ResendAutomatically: false, + }) + if err != nil { + return nil, err + } + + // Update MessengerResponse + response := MessengerResponse{} + emojiR.Retracted = true + response.AddEmojiReaction(emojiR) + response.AddChat(chat) + + // Persist retraction state for emoji reaction + err = m.persistence.SaveEmojiReaction(emojiR) + if err != nil { + return nil, err + } + + return &response, nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_handler.go b/vendor/github.com/status-im/status-go/protocol/messenger_handler.go index 85cb0b29..d1c0caa6 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_handler.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_handler.go @@ -393,7 +393,26 @@ func (m *Messenger) handleCommandMessage(state *ReceivedMessageState, message *c if err := message.PrepareContent(common.PubkeyToHex(&m.identity.PublicKey)); err != nil { return fmt.Errorf("failed to prepare content: %v", err) } - chat, err := m.matchChatEntity(message) + + // Get Application layer messageType from commandState + // Currently this is not really used in `matchChatEntity`, but I did want to pass UNKNOWN there. + var messageType protobuf.ApplicationMetadataMessage_Type + switch message.CommandParameters.CommandState { + case common.CommandStateRequestAddressForTransaction: + messageType = protobuf.ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION + case common.CommandStateRequestAddressForTransactionAccepted: + messageType = protobuf.ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION + case common.CommandStateRequestAddressForTransactionDeclined: + messageType = protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION + case common.CommandStateRequestTransaction: + messageType = protobuf.ApplicationMetadataMessage_REQUEST_TRANSACTION + case common.CommandStateRequestTransactionDeclined: + messageType = protobuf.ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION + default: + messageType = protobuf.ApplicationMetadataMessage_UNKNOWN + } + + chat, err := m.matchChatEntity(message, messageType) if err != nil { return err } @@ -862,7 +881,7 @@ func (m *Messenger) handlePinMessage(pinner *Contact, whisperTimestamp uint64, r Alias: pinner.Alias, } - chat, err := m.matchChatEntity(pinMessage) + chat, err := m.matchChatEntity(pinMessage, protobuf.ApplicationMetadataMessage_PIN_MESSAGE) if err != nil { return err // matchChatEntity returns a descriptive error message } @@ -2092,6 +2111,7 @@ func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen boo logger.Warn("failed to validate message", zap.Error(err)) return err } + receivedMessage := &common.Message{ ID: state.CurrentMessageState.MessageID, ChatMessage: state.CurrentMessageState.Message, @@ -2126,7 +2146,7 @@ func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen boo } } - chat, err := m.matchChatEntity(receivedMessage) + chat, err := m.matchChatEntity(receivedMessage, protobuf.ApplicationMetadataMessage_CHAT_MESSAGE) if err != nil { return err // matchChatEntity returns a descriptive error message } @@ -2144,6 +2164,39 @@ func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen boo return ErrMessageNotAllowed } + if chat.ChatType == ChatTypeCommunityChat { + communityID, err := types.DecodeHex(chat.CommunityID) + if err != nil { + return err + } + + community, err := m.GetCommunityByID(communityID) + if err != nil { + return err + } + + if community == nil { + logger.Warn("community not found for msg", + zap.String("messageID", receivedMessage.ID), + zap.String("from", receivedMessage.From), + zap.String("communityID", chat.CommunityID)) + return communities.ErrOrgNotFound + } + + pk, err := common.HexToPubkey(state.CurrentMessageState.Contact.ID) + if err != nil { + return err + } + + if community.IsBanned(pk) { + logger.Warn("skipping msg from banned user", + zap.String("messageID", receivedMessage.ID), + zap.String("from", receivedMessage.From), + zap.String("communityID", chat.CommunityID)) + return errors.New("received a messaged from banned user") + } + } + // It looks like status-mobile created profile chats as public chats // so for now we need to check for the presence of "@" in their chatID if chat.Public() && !chat.ProfileUpdates() { @@ -2650,7 +2703,7 @@ func (m *Messenger) HandleDeclineRequestTransaction(messageState *ReceivedMessag return m.handleCommandMessage(messageState, oldMessage) } -func (m *Messenger) matchChatEntity(chatEntity common.ChatEntity) (*Chat, error) { +func (m *Messenger) matchChatEntity(chatEntity common.ChatEntity, messageType protobuf.ApplicationMetadataMessage_Type) (*Chat, error) { if chatEntity.GetSigPubKey() == nil { m.logger.Error("public key can't be empty") return nil, errors.New("received a chatEntity with empty public key") @@ -2719,7 +2772,7 @@ func (m *Messenger) matchChatEntity(chatEntity common.ChatEntity) (*Chat, error) return nil, errors.New("not an community chat") } - canPost, err := m.communitiesManager.CanPost(chatEntity.GetSigPubKey(), chat.CommunityID, chat.CommunityChatID()) + canPost, err := m.communitiesManager.CanPost(chatEntity.GetSigPubKey(), chat.CommunityID, chat.CommunityChatID(), messageType) if err != nil { return nil, err } @@ -2728,21 +2781,8 @@ func (m *Messenger) matchChatEntity(chatEntity common.ChatEntity) (*Chat, error) return nil, errors.New("user can't post in community") } - _, isPinMessage := chatEntity.(*common.PinMessage) - if isPinMessage { - community, err := m.communitiesManager.GetByIDString(chat.CommunityID) - if err != nil { - return nil, err - } - - hasPermission := community.IsPrivilegedMember(chatEntity.GetSigPubKey()) - pinMessageAllowed := community.AllowsAllMembersToPinMessage() - if !hasPermission && !pinMessageAllowed { - return nil, errors.New("user can't pin message") - } - } - return chat, nil + case chatEntity.GetMessageType() == protobuf.MessageType_PRIVATE_GROUP: // In the case of a group chatEntity, ChatID is the same for all messages belonging to a group. // It needs to be verified if the signature public key belongs to the chat. @@ -2819,7 +2859,7 @@ func (m *Messenger) HandleEmojiReaction(state *ReceivedMessageState, pbEmojiR *p return nil } - chat, err := m.matchChatEntity(emojiReaction) + chat, err := m.matchChatEntity(emojiReaction, protobuf.ApplicationMetadataMessage_EMOJI_REACTION) if err != nil { return err // matchChatEntity returns a descriptive error message } @@ -3016,6 +3056,7 @@ func (m *Messenger) HandleChatIdentity(state *ReceivedMessageState, ci *protobuf if err != nil { return err } + state.Response.AddUpdatedProfileShowcaseContactID(contact.ID) } } @@ -3213,13 +3254,13 @@ func mapSyncAccountToAccount(message *protobuf.SyncAccount, accountOperability a } } -func (m *Messenger) resolveAccountOperability(syncAcc *protobuf.SyncAccount, syncKpMigratedToKeycard bool, - dbKpMigratedToKeycard bool, accountReceivedFromLocalPairing bool) (accounts.AccountOperable, error) { +func (m *Messenger) resolveAccountOperability(syncAcc *protobuf.SyncAccount, recoverinrecoveringFromWakuInitiatedByKeycard bool, + syncKpMigratedToKeycard bool, dbKpMigratedToKeycard bool, accountReceivedFromLocalPairing bool) (accounts.AccountOperable, error) { if accountReceivedFromLocalPairing { return accounts.AccountOperable(syncAcc.Operable), nil } - if syncKpMigratedToKeycard || m.account.KeyUID == syncAcc.KeyUid { + if syncKpMigratedToKeycard || recoverinrecoveringFromWakuInitiatedByKeycard && m.account.KeyUID == syncAcc.KeyUid { return accounts.AccountFullyOperable, nil } @@ -3500,18 +3541,19 @@ func (m *Messenger) handleSyncKeypair(message *protobuf.SyncKeypair, fromLocalPa } syncKpMigratedToKeycard := len(message.Keycards) > 0 + recoveringFromWaku := message.SyncedFrom == accounts.SyncedFromBackup + + multiAcc, err := m.multiAccounts.GetAccount(kp.KeyUID) + if err != nil { + return nil, err + } + recoverinrecoveringFromWakuInitiatedByKeycard := recoveringFromWaku && multiAcc != nil && multiAcc.RefersToKeycard() for _, sAcc := range message.Accounts { - if message.SyncedFrom == accounts.SyncedFromBackup && kp.Type == accounts.KeypairTypeProfile { - // if a profile keypair is coming from backup, we're handling within this block the case when a recovering - // was inititiated via keycard, while backed up profile keypair data refers to a regular profile - multiAcc, err := m.multiAccounts.GetAccount(kp.KeyUID) - if err != nil { - return nil, err - } - syncKpMigratedToKeycard = multiAcc != nil && multiAcc.KeycardPairing != "" - } - accountOperability, err := m.resolveAccountOperability(sAcc, syncKpMigratedToKeycard, - dbKeypair != nil && dbKeypair.MigratedToKeycard(), fromLocalPairing) + accountOperability, err := m.resolveAccountOperability(sAcc, + recoverinrecoveringFromWakuInitiatedByKeycard, + syncKpMigratedToKeycard, + dbKeypair != nil && dbKeypair.MigratedToKeycard(), + fromLocalPairing) if err != nil { return nil, err } @@ -3520,7 +3562,7 @@ func (m *Messenger) handleSyncKeypair(message *protobuf.SyncKeypair, fromLocalPa kp.Accounts = append(kp.Accounts, acc) } - if !fromLocalPairing { + if !fromLocalPairing && !recoverinrecoveringFromWakuInitiatedByKeycard { if kp.Removed || dbKeypair != nil && !dbKeypair.MigratedToKeycard() && syncKpMigratedToKeycard { // delete all keystore files @@ -3895,3 +3937,8 @@ func (m *Messenger) addNewKeypairAddedOnPairedDeviceACNotification(keyUID string } return nil } + +func (m *Messenger) HandleSyncProfileShowcasePreferences(state *ReceivedMessageState, p *protobuf.SyncProfileShowcasePreferences, statusMessage *v1protocol.StatusMessage) error { + _, err := m.saveProfileShowcasePreferencesProto(p, false) + return err +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_handlers.go b/vendor/github.com/status-im/status-go/protocol/messenger_handlers.go index ed6387ce..de0761f7 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_handlers.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_handlers.go @@ -244,6 +244,18 @@ func (m *Messenger) dispatchToHandler(messageState *ReceivedMessageState, protoB case protobuf.ApplicationMetadataMessage_COMMUNITY_USER_KICKED: return m.handleCommunityUserKickedProtobuf(messageState, protoBytes, msg, filter) + case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_SHOWCASE_PREFERENCES: + return m.handleSyncProfileShowcasePreferencesProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_PUBLIC_STORENODES_INFO: + return m.handleCommunityPublicStorenodesInfoProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST: + return m.handleCommunityReevaluatePermissionsRequestProtobuf(messageState, protoBytes, msg, filter) + + case protobuf.ApplicationMetadataMessage_DELETE_COMMUNITY_MEMBER_MESSAGES: + return m.handleDeleteCommunityMemberMessagesProtobuf(messageState, protoBytes, msg, filter) + default: m.logger.Info("protobuf type not found", zap.String("type", string(msg.ApplicationLayer.Type))) return errors.New("protobuf type not found") @@ -1749,3 +1761,80 @@ func (m *Messenger) handleCommunityUserKickedProtobuf(messageState *ReceivedMess } +func (m *Messenger) handleSyncProfileShowcasePreferencesProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling SyncProfileShowcasePreferences") + + if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) { + m.logger.Warn("not coming from us, ignoring") + return nil + } + + + + p := &protobuf.SyncProfileShowcasePreferences{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportLayer.Message.Timestamp, msg.ApplicationLayer.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.ApplicationLayer.Type, p) + + return m.HandleSyncProfileShowcasePreferences(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityPublicStorenodesInfoProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityPublicStorenodesInfo") + + + + p := &protobuf.CommunityPublicStorenodesInfo{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportLayer.Message.Timestamp, msg.ApplicationLayer.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.ApplicationLayer.Type, p) + + return m.HandleCommunityPublicStorenodesInfo(messageState, p, msg) + +} + + +func (m *Messenger) handleCommunityReevaluatePermissionsRequestProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling CommunityReevaluatePermissionsRequest") + + + + p := &protobuf.CommunityReevaluatePermissionsRequest{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportLayer.Message.Timestamp, msg.ApplicationLayer.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.ApplicationLayer.Type, p) + + return m.HandleCommunityReevaluatePermissionsRequest(messageState, p, msg) + +} + + +func (m *Messenger) handleDeleteCommunityMemberMessagesProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error { + m.logger.Info("handling DeleteCommunityMemberMessages") + + + + p := &protobuf.DeleteCommunityMemberMessages{} + err := proto.Unmarshal(protoBytes, p) + if err != nil { + return err + } + + m.outputToCSV(msg.TransportLayer.Message.Timestamp, msg.ApplicationLayer.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.ApplicationLayer.Type, p) + + return m.HandleDeleteCommunityMemberMessages(messageState, p, msg) + +} + + diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_identity.go b/vendor/github.com/status-im/status-go/protocol/messenger_identity.go index 5f45ec3b..52c2b1f0 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_identity.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_identity.go @@ -26,6 +26,7 @@ var ErrInvalidDisplayNameEthSuffix = errors.New(`usernames ending with "eth" are var ErrInvalidDisplayNameNotAllowed = errors.New("name is not allowed") var ErrInvalidBioLength = errors.New("invalid bio length") var ErrInvalidSocialLinkTextLength = errors.New("invalid social link text length") +var ErrDisplayNameDupeOfCommunityMember = errors.New("display name duplicates on of community members") func ValidateDisplayName(displayName *string) error { name := strings.TrimSpace(*displayName) @@ -66,6 +67,15 @@ func (m *Messenger) SetDisplayName(displayName string) error { return err } + isDupe, err := m.IsDisplayNameDupeOfCommunityMember(displayName) + if err != nil { + return err + } + + if isDupe { + return ErrDisplayNameDupeOfCommunityMember + } + m.account.Name = displayName err = m.multiAccounts.UpdateDisplayName(m.account.KeyUID, displayName) if err != nil { @@ -95,11 +105,15 @@ func (m *Messenger) SaveSyncDisplayName(displayName string, clock uint64) error if err != nil { return err } + preferredNameClock, err := m.settings.GetSettingLastSynced(settings.PreferredName) if err != nil { return err } - // check clock of preferred name to avoid override account name + // When either the display name or preferred name changes, m.account.Name should be updated. + // However, a race condition can occur during BackupData, where m.account.Name could be incorrectly updated. + // The final value of m.account.Name depending on which backup message(BackedUpProfile/BackedUpSettings) arrives later. + // So we should check the clock of the preferred name and only update m.account.Name if it's older than the display name. if preferredNameClock < clock { m.account.Name = displayName return m.multiAccounts.SaveAccount(*m.account) diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_mailserver.go b/vendor/github.com/status-im/status-go/protocol/messenger_mailserver.go index 2992fd91..eab644f5 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_mailserver.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_mailserver.go @@ -41,6 +41,7 @@ var maxTopicsPerRequest int = 10 var ErrNoFiltersForChat = errors.New("no filter registered for given chat") func (m *Messenger) shouldSync() (bool, error) { + // TODO (pablo) support community store node as well if m.mailserverCycle.activeMailserver == nil || !m.Online() { return false, nil } @@ -66,8 +67,9 @@ func (m *Messenger) scheduleSyncChat(chat *Chat) (bool, error) { } go func() { - _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { - response, err := m.syncChatWithFilters(chat.ID) + ms := m.getActiveMailserver(chat.CommunityID) + _, err = m.performMailserverRequest(ms, func(mailServer mailservers.Mailserver) (*MessengerResponse, error) { + response, err := m.syncChatWithFilters(mailServer, chat.ID) if err != nil { m.logger.Error("failed to sync chat", zap.Error(err)) @@ -102,45 +104,42 @@ func (m *Messenger) connectToNewMailserverAndWait() error { return m.findNewMailserver() } -func (m *Messenger) performMailserverRequest(fn func() (*MessengerResponse, error)) (*MessengerResponse, error) { +func (m *Messenger) performMailserverRequest(ms *mailservers.Mailserver, fn func(mailServer mailservers.Mailserver) (*MessengerResponse, error)) (*MessengerResponse, error) { + if ms == nil { + return nil, errors.New("mailserver not available") + } m.mailserverCycle.RLock() defer m.mailserverCycle.RUnlock() var tries uint = 0 for tries < mailserverMaxTries { - if !m.isActiveMailserverAvailable() { - return nil, errors.New("mailserver not available") - } - - m.logger.Info("trying performing mailserver requests", zap.Uint("try", tries)) - activeMailserver := m.getActiveMailserver() - // Make sure we are connected to a mailserver - if activeMailserver == nil { + if !m.communityStorenodes.IsCommunityStoreNode(ms.ID) && !m.isMailserverAvailable(ms.ID) { return nil, errors.New("mailserver not available") } + m.logger.Info("trying performing mailserver requests", zap.Uint("try", tries), zap.String("mailserverID", ms.ID)) // Peform request - response, err := fn() + response, err := fn(*ms) // pass by value because we don't want the fn to modify the mailserver if err == nil { // Reset failed requests m.logger.Debug("mailserver request performed successfully", - zap.String("mailserverID", activeMailserver.ID)) - activeMailserver.FailedRequests = 0 + zap.String("mailserverID", ms.ID)) + ms.FailedRequests = 0 return response, nil } m.logger.Error("failed to perform mailserver request", - zap.String("mailserverID", activeMailserver.ID), + zap.String("mailserverID", ms.ID), zap.Uint("tries", tries), zap.Error(err), ) tries++ // Increment failed requests - activeMailserver.FailedRequests++ + ms.FailedRequests++ // Change mailserver - if activeMailserver.FailedRequests >= mailserverMaxFailedRequests { + if ms.FailedRequests >= mailserverMaxFailedRequests { return nil, errors.New("too many failed requests") } // Wait a couple of second not to spam @@ -162,21 +161,26 @@ func (m *Messenger) scheduleSyncFilters(filters []*transport.Filter) (bool, erro } go func() { - _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { - response, err := m.syncFilters(filters) + // split filters by community store node so we can request the filters to the correct mailserver + filtersByMs := m.SplitFiltersByStoreNode(filters) + for communityID, filtersForMs := range filtersByMs { + ms := m.getActiveMailserver(communityID) + _, err := m.performMailserverRequest(ms, func(ms mailservers.Mailserver) (*MessengerResponse, error) { + response, err := m.syncFilters(ms, filtersForMs) + if err != nil { + m.logger.Error("failed to sync filter", zap.Error(err)) + return nil, err + } + + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.MessengerResponse(response) + } + return response, nil + }) if err != nil { - m.logger.Error("failed to sync filter", zap.Error(err)) - return nil, err + m.logger.Error("failed to perform mailserver request", zap.Error(err)) } - - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.MessengerResponse(response) - } - return response, nil - }) - if err != nil { - m.logger.Error("failed to perform mailserver request", zap.Error(err)) } }() @@ -242,12 +246,13 @@ func (m *Messenger) topicsForChat(chatID string) (string, []types.TopicType, err return filters[0].PubsubTopic, contentTopics, nil } -func (m *Messenger) syncChatWithFilters(chatID string) (*MessengerResponse, error) { +func (m *Messenger) syncChatWithFilters(ms mailservers.Mailserver, chatID string) (*MessengerResponse, error) { filters, err := m.filtersForChat(chatID) if err != nil { return nil, err } - return m.syncFilters(filters) + + return m.syncFilters(ms, filters) } func (m *Messenger) syncBackup() error { @@ -260,7 +265,8 @@ func (m *Messenger) syncBackup() error { from, to := m.calculateMailserverTimeBounds(oneMonthDuration) batch := MailserverBatch{From: from, To: to, Topics: []types.TopicType{filter.ContentTopic}} - err := m.processMailserverBatch(batch) + ms := m.getActiveMailserver(filter.ChatID) + err := m.processMailserverBatch(*ms, batch) if err != nil { return err } @@ -303,14 +309,24 @@ func (m *Messenger) resetFiltersPriority(filters []*transport.Filter) { } } -func (m *Messenger) RequestAllHistoricMessagesWithRetries(forceFetchingBackup bool) (*MessengerResponse, error) { - return m.performMailserverRequest(func() (*MessengerResponse, error) { - return m.RequestAllHistoricMessages(forceFetchingBackup) - }) +func (m *Messenger) SplitFiltersByStoreNode(filters []*transport.Filter) map[string][]*transport.Filter { + // split filters by community store node so we can request the filters to the correct mailserver + filtersByMs := make(map[string][]*transport.Filter, len(filters)) + for _, f := range filters { + communityID := "" // none by default + if chat, ok := m.allChats.Load(f.ChatID); ok && chat.CommunityChat() && m.communityStorenodes.HasStorenodeSetup(chat.CommunityID) { + communityID = chat.CommunityID + } + if _, exists := filtersByMs[communityID]; !exists { + filtersByMs[communityID] = make([]*transport.Filter, 0, len(filters)) + } + filtersByMs[communityID] = append(filtersByMs[communityID], f) + } + return filtersByMs } // RequestAllHistoricMessages requests all the historic messages for any topic -func (m *Messenger) RequestAllHistoricMessages(forceFetchingBackup bool) (*MessengerResponse, error) { +func (m *Messenger) RequestAllHistoricMessages(forceFetchingBackup, withRetries bool) (*MessengerResponse, error) { shouldSync, err := m.shouldSync() if err != nil { return nil, err @@ -337,18 +353,37 @@ func (m *Messenger) RequestAllHistoricMessages(forceFetchingBackup bool) (*Messe filters := m.transport.Filters() m.updateFiltersPriority(filters) defer m.resetFiltersPriority(filters) - response, err := m.syncFilters(filters) - if err != nil { - return nil, err + + filtersByMs := m.SplitFiltersByStoreNode(filters) + allResponses := &MessengerResponse{} + for communityID, filtersForMs := range filtersByMs { + ms := m.getActiveMailserver(communityID) + if withRetries { + response, err := m.performMailserverRequest(ms, func(ms mailservers.Mailserver) (*MessengerResponse, error) { + return m.syncFilters(ms, filtersForMs) + }) + if err != nil { + return nil, err + } + allResponses.AddChats(response.Chats()) + allResponses.AddMessages(response.Messages()) + continue + } + response, err := m.syncFilters(*ms, filtersForMs) + if err != nil { + return nil, err + } + allResponses.AddChats(response.Chats()) + allResponses.AddMessages(response.Messages()) } - return response, nil + return allResponses, nil } func getPrioritizedBatches() []int { return []int{1, 5, 10} } -func (m *Messenger) syncFiltersFrom(filters []*transport.Filter, lastRequest uint32) (*MessengerResponse, error) { +func (m *Messenger) syncFiltersFrom(ms mailservers.Mailserver, filters []*transport.Filter, lastRequest uint32) (*MessengerResponse, error) { response := &MessengerResponse{} topicInfo, err := m.mailserversDatabase.Topics() if err != nil { @@ -519,10 +554,8 @@ func (m *Messenger) syncFiltersFrom(filters []*transport.Filter, lastRequest uin } } - i := 0 for _, batch := range batches24h { - i++ - err := m.processMailserverBatch(batch) + err := m.processMailserverBatch(ms, batch) if err != nil { m.logger.Error("error syncing topics", zap.Error(err)) return nil, err @@ -580,8 +613,8 @@ func (m *Messenger) syncFiltersFrom(filters []*transport.Filter, lastRequest uin return response, nil } -func (m *Messenger) syncFilters(filters []*transport.Filter) (*MessengerResponse, error) { - return m.syncFiltersFrom(filters, 0) +func (m *Messenger) syncFilters(ms mailservers.Mailserver, filters []*transport.Filter) (*MessengerResponse, error) { + return m.syncFiltersFrom(ms, filters, 0) } func (m *Messenger) calculateGapForChat(chat *Chat, from uint32) (*common.Message, error) { @@ -802,30 +835,30 @@ loop: return result } -func (m *Messenger) processMailserverBatch(batch MailserverBatch) error { +func (m *Messenger) processMailserverBatch(ms mailservers.Mailserver, batch MailserverBatch) error { if m.featureFlags.StoreNodesDisabled { return nil } - mailserverID, err := m.activeMailserverID() + mailserverID, err := ms.IDBytes() if err != nil { return err } - - return processMailserverBatch(m.ctx, m.transport, batch, mailserverID, m.logger, defaultStoreNodeRequestPageSize, nil, false) + logger := m.logger.With(zap.String("mailserverID", ms.ID)) + return processMailserverBatch(m.ctx, m.transport, batch, mailserverID, logger, defaultStoreNodeRequestPageSize, nil, false) } -func (m *Messenger) processMailserverBatchWithOptions(batch MailserverBatch, pageLimit uint32, shouldProcessNextPage func(int) (bool, uint32), processEnvelopes bool) error { +func (m *Messenger) processMailserverBatchWithOptions(ms mailservers.Mailserver, batch MailserverBatch, pageLimit uint32, shouldProcessNextPage func(int) (bool, uint32), processEnvelopes bool) error { if m.featureFlags.StoreNodesDisabled { return nil } - mailserverID, err := m.activeMailserverID() + mailserverID, err := ms.IDBytes() if err != nil { return err } - - return processMailserverBatch(m.ctx, m.transport, batch, mailserverID, m.logger, pageLimit, shouldProcessNextPage, processEnvelopes) + logger := m.logger.With(zap.String("mailserverID", ms.ID)) + return processMailserverBatch(m.ctx, m.transport, batch, mailserverID, logger, pageLimit, shouldProcessNextPage, processEnvelopes) } type MailserverBatch struct { @@ -838,18 +871,19 @@ type MailserverBatch struct { } func (m *Messenger) SyncChatFromSyncedFrom(chatID string) (uint32, error) { + chat, ok := m.allChats.Load(chatID) + if !ok { + return 0, ErrChatNotFound + } + + ms := m.getActiveMailserver(chat.CommunityID) var from uint32 - _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + _, err := m.performMailserverRequest(ms, func(ms mailservers.Mailserver) (*MessengerResponse, error) { pubsubTopic, topics, err := m.topicsForChat(chatID) if err != nil { return nil, nil } - chat, ok := m.allChats.Load(chatID) - if !ok { - return nil, ErrChatNotFound - } - defaultSyncPeriod, err := m.settings.GetDefaultSyncPeriod() if err != nil { return nil, err @@ -866,7 +900,7 @@ func (m *Messenger) SyncChatFromSyncedFrom(chatID string) (uint32, error) { m.config.messengerSignalsHandler.HistoryRequestStarted(1) } - err = m.processMailserverBatch(batch) + err = m.processMailserverBatch(ms, batch) if err != nil { return nil, err } @@ -897,7 +931,7 @@ func (m *Messenger) FillGaps(chatID string, messageIDs []string) error { return err } - _, ok := m.allChats.Load(chatID) + chat, ok := m.allChats.Load(chatID) if !ok { return errors.New("chat not existing") } @@ -935,7 +969,8 @@ func (m *Messenger) FillGaps(chatID string, messageIDs []string) error { m.config.messengerSignalsHandler.HistoryRequestStarted(1) } - err = m.processMailserverBatch(batch) + ms := m.getActiveMailserver(chat.CommunityID) + err = m.processMailserverBatch(*ms, batch) if err != nil { return err } @@ -1017,17 +1052,19 @@ func (m *Messenger) ConnectionChanged(state connection.State) { func (m *Messenger) fetchMessages(chatID string, duration time.Duration) (uint32, error) { from, to := m.calculateMailserverTimeBounds(duration) - _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + chat, ok := m.allChats.Load(chatID) + if !ok { + return 0, ErrChatNotFound + } + + ms := m.getActiveMailserver(chat.CommunityID) + _, err := m.performMailserverRequest(ms, func(ms mailservers.Mailserver) (*MessengerResponse, error) { + m.logger.Debug("fetching messages", zap.String("chatID", chatID), zap.String("mailserver", ms.Name)) pubsubTopic, topics, err := m.topicsForChat(chatID) if err != nil { return nil, nil } - chat, ok := m.allChats.Load(chatID) - if !ok { - return nil, ErrChatNotFound - } - batch := MailserverBatch{ ChatIDs: []string{chatID}, From: from, @@ -1039,7 +1076,7 @@ func (m *Messenger) fetchMessages(chatID string, duration time.Duration) (uint32 m.config.messengerSignalsHandler.HistoryRequestStarted(1) } - err = m.processMailserverBatch(batch) + err = m.processMailserverBatch(ms, batch) if err != nil { return nil, err } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_mailserver_cycle.go b/vendor/github.com/status-im/status-go/protocol/messenger_mailserver_cycle.go index 1ac813ba..85e100c0 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_mailserver_cycle.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_mailserver_cycle.go @@ -18,6 +18,7 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/status-im/status-go/params" + "github.com/status-im/status-go/protocol/storenodes" "github.com/status-im/status-go/services/mailservers" "github.com/status-im/status-go/signal" ) @@ -50,14 +51,6 @@ func (s byRTTMsAndCanConnectBefore) Less(i, j int) bool { return s[i].CanConnectAfter.Before(s[j].CanConnectAfter) } -func (m *Messenger) activeMailserverID() ([]byte, error) { - if m.mailserverCycle.activeMailserver == nil { - return nil, nil - } - - return m.mailserverCycle.activeMailserver.IDBytes() -} - func (m *Messenger) StartMailserverCycle(mailservers []mailservers.Mailserver) error { m.mailserverCycle.allMailservers = mailservers @@ -353,19 +346,14 @@ func (m *Messenger) findNewMailserver() error { } -func (m *Messenger) activeMailserverStatus() (connStatus, error) { - if m.mailserverCycle.activeMailserver == nil { - return disconnected, errors.New("Active mailserver is not set") +func (m *Messenger) mailserverStatus(mailserverID string) connStatus { + m.mailPeersMutex.RLock() + defer m.mailPeersMutex.RUnlock() + peer, ok := m.mailserverCycle.peers[mailserverID] + if !ok { + return disconnected } - - mailserverID := m.mailserverCycle.activeMailserver.ID - - m.mailPeersMutex.Lock() - status := m.mailserverCycle.peers[mailserverID].status - m.mailPeersMutex.Unlock() - - return status, nil - + return peer.status } func (m *Messenger) connectToMailserver(ms mailservers.Mailserver) error { @@ -380,11 +368,7 @@ func (m *Messenger) connectToMailserver(ms mailservers.Mailserver) error { // received after the peer was added. So we first set the peer status as // Connecting and once a peerConnected signal is received, we mark it as // Connected - activeMailserverStatus, err := m.activeMailserverStatus() - if err != nil { - return err - } - + activeMailserverStatus := m.mailserverStatus(ms.ID) if ms.Version != m.transport.WakuVersion() { return errors.New("mailserver waku version doesn't match") } @@ -425,28 +409,51 @@ func (m *Messenger) connectToMailserver(ms mailservers.Mailserver) error { signal.SendMailserverAvailable(m.mailserverCycle.activeMailserver.Address, m.mailserverCycle.activeMailserver.ID) // Query mailserver - if m.config.featureFlags.AutoRequestHistoricMessages { - m.asyncRequestAllHistoricMessages() + if m.config.codeControlFlags.AutoRequestHistoricMessages { + go func() { + _, err := m.performMailserverRequest(&ms, func(_ mailservers.Mailserver) (*MessengerResponse, error) { + return m.RequestAllHistoricMessages(false, false) + }) + if err != nil { + m.logger.Error("could not perform mailserver request", zap.Error(err)) + } + }() } } } return nil } -func (m *Messenger) getActiveMailserver() *mailservers.Mailserver { - return m.mailserverCycle.activeMailserver -} - -func (m *Messenger) isActiveMailserverAvailable() bool { - mailserverStatus, err := m.activeMailserverStatus() - if err != nil { - return false +// getActiveMailserver returns the active mailserver if a communityID is present then it'll return the mailserver +// for that community if it has a mailserver setup otherwise it'll return the global mailserver +func (m *Messenger) getActiveMailserver(communityID ...string) *mailservers.Mailserver { + if len(communityID) == 0 || communityID[0] == "" { + return m.mailserverCycle.activeMailserver } - - return mailserverStatus == connected + ms, err := m.communityStorenodes.GetStorenodeByCommunnityID(communityID[0]) + if err != nil { + if !errors.Is(err, storenodes.ErrNotFound) { + m.logger.Error("getting storenode for community, using global", zap.String("communityID", communityID[0]), zap.Error(err)) + } + // if we don't find a specific mailserver for the community, we just use the regular mailserverCycle's one + return m.mailserverCycle.activeMailserver + } + return &ms } -func (m *Messenger) mailserverAddressToID(uniqueID string, allMailservers []mailservers.Mailserver) (string, error) { +func (m *Messenger) getActiveMailserverID(communityID ...string) string { + ms := m.getActiveMailserver(communityID...) + if ms == nil { + return "" + } + return ms.ID +} + +func (m *Messenger) isMailserverAvailable(mailserverID string) bool { + return m.mailserverStatus(mailserverID) == connected +} + +func mailserverAddressToID(uniqueID string, allMailservers []mailservers.Mailserver) (string, error) { for _, ms := range allMailservers { if uniqueID == ms.UniqueID() { return ms.ID, nil @@ -485,6 +492,7 @@ func (m *Messenger) penalizeMailserver(id string) { m.mailserverCycle.peers[id] = pInfo } +// handleMailserverCycleEvent runs every 1 second or when updating peers to keep the data of the active mailserver updated func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) error { m.logger.Debug("mailserver cycle event", zap.Any("connected", connectedPeers), @@ -501,7 +509,7 @@ func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) e found := false for _, connectedPeer := range connectedPeers { - id, err := m.mailserverAddressToID(connectedPeer.UniqueID, m.mailserverCycle.allMailservers) + id, err := mailserverAddressToID(connectedPeer.UniqueID, m.mailserverCycle.allMailservers) if err != nil { m.logger.Error("failed to convert id to hex", zap.Error(err)) return err @@ -527,7 +535,7 @@ func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) e // not available error if m.mailserverCycle.activeMailserver != nil { for _, connectedPeer := range connectedPeers { - id, err := m.mailserverAddressToID(connectedPeer.UniqueID, m.mailserverCycle.allMailservers) + id, err := mailserverAddressToID(connectedPeer.UniqueID, m.mailserverCycle.allMailservers) if err != nil { m.logger.Error("failed to convert id to hex", zap.Error(err)) return err @@ -554,8 +562,13 @@ func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) e signal.SendMailserverAvailable(m.mailserverCycle.activeMailserver.Address, m.mailserverCycle.activeMailserver.ID) } // Query mailserver - if m.config.featureFlags.AutoRequestHistoricMessages { - m.asyncRequestAllHistoricMessages() + if m.config.codeControlFlags.AutoRequestHistoricMessages { + go func() { + _, err := m.RequestAllHistoricMessages(false, true) + if err != nil { + m.logger.Error("failed to request historic messages", zap.Error(err)) + } + }() } } else { m.mailPeersMutex.Unlock() @@ -600,7 +613,7 @@ func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) e func (m *Messenger) asyncRequestAllHistoricMessages() { m.logger.Debug("asyncRequestAllHistoricMessages") go func() { - _, err := m.RequestAllHistoricMessagesWithRetries(false) + _, err := m.RequestAllHistoricMessages(false, true) if err != nil { m.logger.Error("failed to request historic messages", zap.Error(err)) } @@ -760,7 +773,7 @@ func (m *Messenger) waitForAvailableStoreNode(timeout time.Duration) bool { defer func() { wg.Done() }() - for !m.isActiveMailserverAvailable() { + for !m.isMailserverAvailable(m.getActiveMailserverID()) { select { case <-m.SubscribeMailserverAvailable(): case <-cancel: @@ -784,5 +797,5 @@ func (m *Messenger) waitForAvailableStoreNode(timeout time.Duration) bool { close(cancel) } - return m.isActiveMailserverAvailable() + return m.isMailserverAvailable(m.getActiveMailserverID()) } diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_messages.go b/vendor/github.com/status-im/status-go/protocol/messenger_messages.go index 829dac45..afc6c604 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_messages.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_messages.go @@ -518,3 +518,42 @@ func (m *Messenger) SendGroupChatMessage(request *requests.SendGroupChatMessage) return m.sendChatMessage(context.Background(), message) } + +func (m *Messenger) deleteCommunityMemberMessages(member string, communityID string, deleteMessages []*protobuf.DeleteCommunityMemberMessage) (*MessengerResponse, error) { + messagesToDelete := deleteMessages + var err error + if len(deleteMessages) == 0 { + messagesToDelete, err = m.persistence.GetCommunityMemberMessagesToDelete(member, communityID) + if err != nil { + return nil, err + } + } + + response := &MessengerResponse{} + + if len(messagesToDelete) == 0 { + return response, nil + } + + for _, messageToDelete := range messagesToDelete { + updatedMessages, err := m.persistence.MessagesByResponseTo(messageToDelete.Id) + if err != nil { + return nil, err + } + response.AddMessages(updatedMessages) + } + + response.AddDeletedMessages(messagesToDelete) + + messageIDs := make([]string, 0, len(messagesToDelete)) + + for _, rm := range messagesToDelete { + messageIDs = append(messageIDs, rm.Id) + } + + if err = m.persistence.DeleteMessages(messageIDs); err != nil { + return nil, err + } + + return response, nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_peersyncing.go b/vendor/github.com/status-im/status-go/protocol/messenger_peersyncing.go index 29d7bce3..a8cdf164 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_peersyncing.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_peersyncing.go @@ -62,7 +62,15 @@ func (m *Messenger) handleDatasyncMetadata(response *common.HandleMessageRespons return nil } - err := m.OnDatasyncOffer(response) + isPeerSyncingEnabled, err := m.settings.GetPeerSyncingEnabled() + if err != nil { + return err + } + if !isPeerSyncingEnabled { + return nil + } + + err = m.OnDatasyncOffer(response) if err != nil { return err } @@ -102,6 +110,14 @@ func (m *Messenger) sendDatasyncOffers() error { return nil } + isPeerSyncingEnabled, err := m.settings.GetPeerSyncingEnabled() + if err != nil { + return err + } + if !isPeerSyncingEnabled { + return nil + } + communities, err := m.communitiesManager.Joined() if err != nil { return err diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_pin_messages.go b/vendor/github.com/status-im/status-go/protocol/messenger_pin_messages.go index 71a9acdd..1732b206 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_pin_messages.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_pin_messages.go @@ -31,24 +31,6 @@ func (m *Messenger) sendPinMessage(ctx context.Context, message *common.PinMessa return nil, errors.New("chat not found") } - if chat.CommunityChat() { - community, err := m.communitiesManager.GetByIDString(chat.CommunityID) - if err != nil { - return nil, err - } - - hasPermission := community.IsPrivilegedMember(&m.identity.PublicKey) - pinMessageAllowed := community.AllowsAllMembersToPinMessage() - canPost, err := community.CanPost(&m.identity.PublicKey, chat.CommunityChatID()) - if err != nil { - return nil, err - } - - if !canPost && !pinMessageAllowed && !hasPermission { - return nil, errors.New("can't pin message") - } - } - err := m.handleStandaloneChatIdentity(chat) if err != nil { return nil, err diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase.go b/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase.go index 6cdfe414..806b69a9 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase.go @@ -1,125 +1,311 @@ package protocol import ( + "context" "crypto/ecdsa" crand "crypto/rand" "errors" + "math/big" "reflect" + "sort" + "strings" "github.com/golang/protobuf/proto" + "go.uber.org/zap" + eth_common "github.com/ethereum/go-ethereum/common" + + "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/multiaccounts/accounts" "github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/communities" + "github.com/status-im/status-go/protocol/identity" "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/services/wallet/bigint" + w_common "github.com/status-im/status-go/services/wallet/common" + "github.com/status-im/status-go/services/wallet/thirdparty" ) -var errorNoAccountProvidedWithTokenOrCollectible = errors.New("no account provided with tokens or collectible") -var errorDublicateAccountAddress = errors.New("duplicate account address") - -// NOTE: this error is temporary unused because we don't know account on this stage -// var errorNoAccountAddressForCollectible = errors.New("no account found for collectible") -var errorAccountVisibilityLowerThanCollectible = errors.New("account visibility lower than collectible") var errorDecryptingPayloadEncryptionKey = errors.New("decrypting the payload encryption key resulted in no error and a nil key") +var errorConvertCollectibleTokenIDToInt = errors.New("failed to convert collectible token id to bigint") +var errorNoAccountPresentedForCollectible = errors.New("account holding the collectible is not presented in the profile showcase") +var errorDublicateAccountAddress = errors.New("duplicate account address") +var errorAccountVisibilityLowerThanCollectible = errors.New("account visibility lower than collectible") -func toProfileShowcaseCommunityProto(preferences []*ProfileShowcaseCommunityPreference, visibility ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseCommunity { - communities := []*protobuf.ProfileShowcaseCommunity{} - for _, preference := range preferences { - if preference.ShowcaseVisibility != visibility { - continue - } - - communities = append(communities, &protobuf.ProfileShowcaseCommunity{ - CommunityId: preference.CommunityID, - Order: uint32(preference.Order), - }) - } - return communities +func sortProfileEntyByOrder(slice interface{}, getOrder func(int) int) { + sort.Slice(slice, func(i, j int) bool { + return getOrder(j) > getOrder(i) + }) } -func toProfileShowcaseAccountProto(preferences []*ProfileShowcaseAccountPreference, visibility ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseAccount { - accounts := []*protobuf.ProfileShowcaseAccount{} +func toCollectibleUniqueID(contractAddress string, tokenID string, chainID uint64) (thirdparty.CollectibleUniqueID, error) { + tokenIDInt := new(big.Int) + tokenIDInt, isTokenIDOk := tokenIDInt.SetString(tokenID, 10) + if !isTokenIDOk { + return thirdparty.CollectibleUniqueID{}, errorConvertCollectibleTokenIDToInt + } + + return thirdparty.CollectibleUniqueID{ + ContractID: thirdparty.ContractID{ + ChainID: w_common.ChainID(chainID), + Address: eth_common.HexToAddress(contractAddress), + }, + TokenID: &bigint.BigInt{Int: tokenIDInt}, + }, nil +} + +func (m *Messenger) fetchCollectibleOwner(contractAddress string, tokenID string, chainID uint64) ([]thirdparty.AccountBalance, error) { + collectibleID, err := toCollectibleUniqueID(contractAddress, tokenID, chainID) + if err != nil { + return nil, err + } + + balance, err := m.communitiesManager.GetCollectiblesManager().GetCollectibleOwnership(collectibleID) + if err != nil { + return nil, err + } + return balance, nil +} + +func (m *Messenger) validateCollectiblesOwnership(accounts []*identity.ProfileShowcaseAccountPreference, + collectibles []*identity.ProfileShowcaseCollectiblePreference) error { + accountsMap := make(map[string]identity.ProfileShowcaseVisibility) + + for _, accountProfile := range accounts { + addressCapitalized := strings.ToUpper(accountProfile.Address) + if _, ok := accountsMap[addressCapitalized]; ok { + return errorDublicateAccountAddress + } + accountsMap[addressCapitalized] = accountProfile.ShowcaseVisibility + } + + for _, collectibleProfile := range collectibles { + balances, err := m.fetchCollectibleOwner(collectibleProfile.ContractAddress, collectibleProfile.TokenID, + collectibleProfile.ChainID) + if err != nil { + return err + } + + // NOTE: ERC721 tokens can have only a single holder + // but ERC1155 which can be supported later can have more than one holder and balances > 1 + found := false + for _, balance := range balances { + addressCapitalized := strings.ToUpper(balance.Address.String()) + if accountShowcaseVisibility, ok := accountsMap[addressCapitalized]; ok { + if accountShowcaseVisibility < collectibleProfile.ShowcaseVisibility { + return errorAccountVisibilityLowerThanCollectible + } + found = true + break + } + } + if !found { + return errorNoAccountPresentedForCollectible + } + } + + return nil +} + +func (m *Messenger) validateCommunityMembershipEntry( + entry *identity.ProfileShowcaseCommunity, + community *communities.Community, + contactPubKey *ecdsa.PublicKey) (identity.ProfileShowcaseMembershipStatus, error) { + if community == nil { + return identity.ProfileShowcaseMembershipStatusUnproven, nil + } + + if community.Encrypted() { + // NOTE: commentend for 0.177.x release, actual fix is here: + // https://github.com/status-im/status-go/pull/5024 + return identity.ProfileShowcaseMembershipStatusProvenMember, nil + // grant, err := community.VerifyGrantSignature(entry.Grant) + // if err != nil { + // m.logger.Warn("failed to verify grant signature ", zap.Error(err)) + // return identity.ProfileShowcaseMembershipStatusNotAMember, nil + // } + + // if grant != nil && bytes.Equal(grant.MemberId, crypto.CompressPubkey(contactPubKey)) { + // return identity.ProfileShowcaseMembershipStatusProvenMember, nil + // } + // // Show as not a member if membership can't be proven + // return identity.ProfileShowcaseMembershipStatusNotAMember, nil + } + + if community.HasMember(contactPubKey) { + return identity.ProfileShowcaseMembershipStatusProvenMember, nil + } + + return identity.ProfileShowcaseMembershipStatusNotAMember, nil +} + +func (m *Messenger) validateCommunitiesMembership(communities []*identity.ProfileShowcaseCommunity, contactPubKey *ecdsa.PublicKey) ([]*identity.ProfileShowcaseCommunity, error) { + validatedCommunities := []*identity.ProfileShowcaseCommunity{} + + for _, communityEntry := range communities { + community, err := m.FetchCommunity(&FetchCommunityRequest{ + CommunityKey: communityEntry.CommunityID, + Shard: nil, + TryDatabase: true, + WaitForResponse: true, + }) + if err != nil { + m.logger.Warn("failed to fetch community for profile entry ", zap.Error(err)) + continue + } + + communityEntry.MembershipStatus, err = m.validateCommunityMembershipEntry(communityEntry, community, contactPubKey) + if err != nil { + m.logger.Warn("failed to verify grant signature ", zap.Error(err)) + } + validatedCommunities = append(validatedCommunities, communityEntry) + } + + return validatedCommunities, nil +} + +func (m *Messenger) toProfileShowcaseCommunityProto(preferences []*identity.ProfileShowcaseCommunityPreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseCommunity { + entries := []*protobuf.ProfileShowcaseCommunity{} for _, preference := range preferences { if preference.ShowcaseVisibility != visibility { continue } - accounts = append(accounts, &protobuf.ProfileShowcaseAccount{ + entry := &protobuf.ProfileShowcaseCommunity{ + CommunityId: preference.CommunityID, + Order: uint32(preference.Order), + } + + community, err := m.communitiesManager.GetByIDString(preference.CommunityID) + if err != nil { + m.logger.Warn("failed to get community for profile entry ", zap.Error(err)) + } + + if community != nil && community.Encrypted() { + grant, _, err := m.communitiesManager.GetCommunityGrant(preference.CommunityID) + if err != nil { + m.logger.Warn("failed to get community for profile entry ", zap.Error(err)) + } + + entry.Grant = grant + } + + entries = append(entries, entry) + } + return entries +} + +func (m *Messenger) toProfileShowcaseAccountProto(preferences []*identity.ProfileShowcaseAccountPreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseAccount { + entries := []*protobuf.ProfileShowcaseAccount{} + for _, preference := range preferences { + if preference.ShowcaseVisibility != visibility { + continue + } + + account, err := m.settings.GetAccountByAddress(types.HexToAddress(preference.Address)) + if err != nil { + m.logger.Warn("failed to get account for profile entry ", zap.Error(err)) + } + if account == nil { + m.logger.Warn("can not find wallet account for profile entry ") + continue + } + + entries = append(entries, &protobuf.ProfileShowcaseAccount{ Address: preference.Address, - Name: preference.Name, - ColorId: preference.ColorID, - Emoji: preference.Emoji, + Name: account.Name, + ColorId: string(account.ColorID), + Emoji: account.Emoji, Order: uint32(preference.Order), }) } - return accounts + return entries } -func toProfileShowcaseCollectibleProto(preferences []*ProfileShowcaseCollectiblePreference, visibility ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseCollectible { - collectibles := []*protobuf.ProfileShowcaseCollectible{} +func (m *Messenger) toProfileShowcaseCollectibleProto(preferences []*identity.ProfileShowcaseCollectiblePreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseCollectible { + entries := []*protobuf.ProfileShowcaseCollectible{} for _, preference := range preferences { if preference.ShowcaseVisibility != visibility { continue } - collectibles = append(collectibles, &protobuf.ProfileShowcaseCollectible{ + entries = append(entries, &protobuf.ProfileShowcaseCollectible{ ContractAddress: preference.ContractAddress, ChainId: preference.ChainID, TokenId: preference.TokenID, - CommunityId: preference.CommunityID, - AccountAddress: preference.AccountAddress, Order: uint32(preference.Order), }) } - return collectibles + return entries } -func toProfileShowcaseVerifiedTokensProto(preferences []*ProfileShowcaseVerifiedTokenPreference, visibility ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseVerifiedToken { - tokens := []*protobuf.ProfileShowcaseVerifiedToken{} +func (m *Messenger) toProfileShowcaseVerifiedTokensProto(preferences []*identity.ProfileShowcaseVerifiedTokenPreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseVerifiedToken { + entries := []*protobuf.ProfileShowcaseVerifiedToken{} for _, preference := range preferences { if preference.ShowcaseVisibility != visibility { continue } - tokens = append(tokens, &protobuf.ProfileShowcaseVerifiedToken{ + entries = append(entries, &protobuf.ProfileShowcaseVerifiedToken{ Symbol: preference.Symbol, Order: uint32(preference.Order), }) } - return tokens + return entries } -func toProfileShowcaseUnverifiedTokensProto(preferences []*ProfileShowcaseUnverifiedTokenPreference, visibility ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseUnverifiedToken { - tokens := []*protobuf.ProfileShowcaseUnverifiedToken{} +func (m *Messenger) toProfileShowcaseUnverifiedTokensProto(preferences []*identity.ProfileShowcaseUnverifiedTokenPreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseUnverifiedToken { + entries := []*protobuf.ProfileShowcaseUnverifiedToken{} for _, preference := range preferences { if preference.ShowcaseVisibility != visibility { continue } - tokens = append(tokens, &protobuf.ProfileShowcaseUnverifiedToken{ + entries = append(entries, &protobuf.ProfileShowcaseUnverifiedToken{ ContractAddress: preference.ContractAddress, ChainId: preference.ChainID, Order: uint32(preference.Order), }) } - return tokens + return entries } -func fromProfileShowcaseCommunityProto(messages []*protobuf.ProfileShowcaseCommunity) []*ProfileShowcaseCommunity { - communities := []*ProfileShowcaseCommunity{} - for _, entry := range messages { - communities = append(communities, &ProfileShowcaseCommunity{ - CommunityID: entry.CommunityId, - Order: int(entry.Order), +func (m *Messenger) toProfileShowcaseSocialLinksProto(preferences []*identity.ProfileShowcaseSocialLinkPreference, visibility identity.ProfileShowcaseVisibility) []*protobuf.ProfileShowcaseSocialLink { + entries := []*protobuf.ProfileShowcaseSocialLink{} + for _, preference := range preferences { + if preference.ShowcaseVisibility != visibility { + continue + } + + entries = append(entries, &protobuf.ProfileShowcaseSocialLink{ + Text: preference.Text, + Url: preference.URL, + Order: uint32(preference.Order), }) } - return communities + return entries } -func fromProfileShowcaseAccountProto(messages []*protobuf.ProfileShowcaseAccount) []*ProfileShowcaseAccount { - accounts := []*ProfileShowcaseAccount{} +func (m *Messenger) fromProfileShowcaseCommunityProto(senderPubKey *ecdsa.PublicKey, messages []*protobuf.ProfileShowcaseCommunity) []*identity.ProfileShowcaseCommunity { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseCommunity{} + for _, message := range messages { + entry := &identity.ProfileShowcaseCommunity{ + CommunityID: message.CommunityId, + Order: int(message.Order), + Grant: message.Grant, + } + + entries = append(entries, entry) + } + return entries +} + +func (m *Messenger) fromProfileShowcaseAccountProto(messages []*protobuf.ProfileShowcaseAccount) []*identity.ProfileShowcaseAccount { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseAccount{} for _, entry := range messages { - accounts = append(accounts, &ProfileShowcaseAccount{ + entries = append(entries, &identity.ProfileShowcaseAccount{ Address: entry.Address, Name: entry.Name, ColorID: entry.ColorId, @@ -127,78 +313,75 @@ func fromProfileShowcaseAccountProto(messages []*protobuf.ProfileShowcaseAccount Order: int(entry.Order), }) } - return accounts + return entries } -func fromProfileShowcaseCollectibleProto(messages []*protobuf.ProfileShowcaseCollectible) []*ProfileShowcaseCollectible { - collectibles := []*ProfileShowcaseCollectible{} - for _, entry := range messages { - collectibles = append(collectibles, &ProfileShowcaseCollectible{ - ContractAddress: entry.ContractAddress, - ChainID: entry.ChainId, - TokenID: entry.TokenId, - CommunityID: entry.CommunityId, - AccountAddress: entry.AccountAddress, - Order: int(entry.Order), - }) +func (m *Messenger) fromProfileShowcaseCollectibleProto(messages []*protobuf.ProfileShowcaseCollectible) []*identity.ProfileShowcaseCollectible { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseCollectible{} + for _, message := range messages { + entry := &identity.ProfileShowcaseCollectible{ + ContractAddress: message.ContractAddress, + ChainID: message.ChainId, + TokenID: message.TokenId, + Order: int(message.Order), + } + entries = append(entries, entry) } - return collectibles + return entries } -func fromProfileShowcaseVerifiedTokenProto(messages []*protobuf.ProfileShowcaseVerifiedToken) []*ProfileShowcaseVerifiedToken { - tokens := []*ProfileShowcaseVerifiedToken{} +func (m *Messenger) fromProfileShowcaseVerifiedTokenProto(messages []*protobuf.ProfileShowcaseVerifiedToken) []*identity.ProfileShowcaseVerifiedToken { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseVerifiedToken{} for _, entry := range messages { - tokens = append(tokens, &ProfileShowcaseVerifiedToken{ + entries = append(entries, &identity.ProfileShowcaseVerifiedToken{ Symbol: entry.Symbol, Order: int(entry.Order), }) } - return tokens + return entries } -func fromProfileShowcaseUnverifiedTokenProto(messages []*protobuf.ProfileShowcaseUnverifiedToken) []*ProfileShowcaseUnverifiedToken { - tokens := []*ProfileShowcaseUnverifiedToken{} +func (m *Messenger) fromProfileShowcaseUnverifiedTokenProto(messages []*protobuf.ProfileShowcaseUnverifiedToken) []*identity.ProfileShowcaseUnverifiedToken { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseUnverifiedToken{} for _, entry := range messages { - tokens = append(tokens, &ProfileShowcaseUnverifiedToken{ + entries = append(entries, &identity.ProfileShowcaseUnverifiedToken{ ContractAddress: entry.ContractAddress, ChainID: entry.ChainId, Order: int(entry.Order), }) } - return tokens + return entries } -func Validate(preferences *ProfileShowcasePreferences) error { - if (len(preferences.VerifiedTokens) > 0 || len(preferences.UnverifiedTokens) > 0 || len(preferences.Collectibles) > 0) && - len(preferences.Accounts) == 0 { - return errorNoAccountProvidedWithTokenOrCollectible +func (m *Messenger) fromProfileShowcaseSocialLinkProto(messages []*protobuf.ProfileShowcaseSocialLink) []*identity.ProfileShowcaseSocialLink { + // NOTE: no requests to the network are allowed to be made here, called in the receiver thread + entries := []*identity.ProfileShowcaseSocialLink{} + for _, entry := range messages { + entries = append(entries, &identity.ProfileShowcaseSocialLink{ + Text: entry.Text, + URL: entry.Url, + Order: int(entry.Order), + }) } - - accountsMap := make(map[string]*ProfileShowcaseAccountPreference) - for _, account := range preferences.Accounts { - if _, ok := accountsMap[account.Address]; ok { - return errorDublicateAccountAddress - } - accountsMap[account.Address] = account - } - - for _, collectible := range preferences.Collectibles { - account, ok := accountsMap[collectible.AccountAddress] - if !ok { - return nil - // NOTE: with current wallet collectible implementation we don't know account on this stage - // return errorNoAccountAddressForCollectible - } - if account.ShowcaseVisibility < collectible.ShowcaseVisibility { - return errorAccountVisibilityLowerThanCollectible - } - } - - return nil + return entries } -func (m *Messenger) SetProfileShowcasePreferences(preferences *ProfileShowcasePreferences) error { - err := Validate(preferences) +func (m *Messenger) SetProfileShowcasePreferences(preferences *identity.ProfileShowcasePreferences, sync bool) error { + clock, _ := m.getLastClockWithRelatedChat() + preferences.Clock = clock + return m.setProfileShowcasePreferences(preferences, sync) +} + +func (m *Messenger) setProfileShowcasePreferences(preferences *identity.ProfileShowcasePreferences, sync bool) error { + err := identity.Validate(preferences) + if err != nil { + return err + } + + err = m.validateCollectiblesOwnership(preferences.Accounts, preferences.Collectibles) if err != nil { return err } @@ -208,25 +391,65 @@ func (m *Messenger) SetProfileShowcasePreferences(preferences *ProfileShowcasePr return err } + if sync { + err = m.syncProfileShowcasePreferences(context.Background(), m.dispatchMessage) + if err != nil { + return err + } + } + return m.DispatchProfileShowcase() } func (m *Messenger) DispatchProfileShowcase() error { - return m.publishContactCode() + err := m.publishContactCode() + if err != nil { + return err + } + return nil } -func (m *Messenger) GetProfileShowcasePreferences() (*ProfileShowcasePreferences, error) { +func (m *Messenger) GetProfileShowcasePreferences() (*identity.ProfileShowcasePreferences, error) { return m.persistence.GetProfileShowcasePreferences() } -func (m *Messenger) GetProfileShowcaseForContact(contactID string) (*ProfileShowcase, error) { - return m.persistence.GetProfileShowcaseForContact(contactID) +func (m *Messenger) GetProfileShowcaseForContact(contactID string, validate bool) (*identity.ProfileShowcase, error) { + profileShowcase, err := m.persistence.GetProfileShowcaseForContact(contactID) + if err != nil { + return nil, err + } + + if !validate { + return profileShowcase, nil + } + + contactPubKey, err := common.HexToPubkey(contactID) + if err != nil { + return nil, err + } + + profileShowcase.Communities, err = m.validateCommunitiesMembership(profileShowcase.Communities, contactPubKey) + if err != nil { + return nil, err + } + + // TODO: validate collectibles & assets ownership, https://github.com/status-im/status-desktop/issues/14129 + + return profileShowcase, nil } -func (m *Messenger) GetProfileShowcaseAccountsByAddress(address string) ([]*ProfileShowcaseAccount, error) { +func (m *Messenger) GetProfileShowcaseAccountsByAddress(address string) ([]*identity.ProfileShowcaseAccount, error) { return m.persistence.GetProfileShowcaseAccountsByAddress(address) } +func (m *Messenger) GetProfileShowcaseSocialLinksLimit() (int, error) { + return identity.MaxProfileShowcaseSocialLinksLimit, nil +} + +func (m *Messenger) GetProfileShowcaseEntriesLimit() (int, error) { + return identity.MaxProfileShowcaseEntriesLimit, nil +} + func (m *Messenger) EncryptProfileShowcaseEntriesWithContactPubKeys(entries *protobuf.ProfileShowcaseEntries, contacts []*Contact) (*protobuf.ProfileShowcaseEntriesEncrypted, error) { // Make AES key AESKey := make([]byte, 32) @@ -324,27 +547,30 @@ func (m *Messenger) GetProfileShowcaseForSelfIdentity() (*protobuf.ProfileShowca } forEveryone := &protobuf.ProfileShowcaseEntries{ - Communities: toProfileShowcaseCommunityProto(preferences.Communities, ProfileShowcaseVisibilityEveryone), - Accounts: toProfileShowcaseAccountProto(preferences.Accounts, ProfileShowcaseVisibilityEveryone), - Collectibles: toProfileShowcaseCollectibleProto(preferences.Collectibles, ProfileShowcaseVisibilityEveryone), - VerifiedTokens: toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, ProfileShowcaseVisibilityEveryone), - UnverifiedTokens: toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, ProfileShowcaseVisibilityEveryone), + Communities: m.toProfileShowcaseCommunityProto(preferences.Communities, identity.ProfileShowcaseVisibilityEveryone), + Accounts: m.toProfileShowcaseAccountProto(preferences.Accounts, identity.ProfileShowcaseVisibilityEveryone), + Collectibles: m.toProfileShowcaseCollectibleProto(preferences.Collectibles, identity.ProfileShowcaseVisibilityEveryone), + VerifiedTokens: m.toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, identity.ProfileShowcaseVisibilityEveryone), + UnverifiedTokens: m.toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, identity.ProfileShowcaseVisibilityEveryone), + SocialLinks: m.toProfileShowcaseSocialLinksProto(preferences.SocialLinks, identity.ProfileShowcaseVisibilityEveryone), } forContacts := &protobuf.ProfileShowcaseEntries{ - Communities: toProfileShowcaseCommunityProto(preferences.Communities, ProfileShowcaseVisibilityContacts), - Accounts: toProfileShowcaseAccountProto(preferences.Accounts, ProfileShowcaseVisibilityContacts), - Collectibles: toProfileShowcaseCollectibleProto(preferences.Collectibles, ProfileShowcaseVisibilityContacts), - VerifiedTokens: toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, ProfileShowcaseVisibilityContacts), - UnverifiedTokens: toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, ProfileShowcaseVisibilityContacts), + Communities: m.toProfileShowcaseCommunityProto(preferences.Communities, identity.ProfileShowcaseVisibilityContacts), + Accounts: m.toProfileShowcaseAccountProto(preferences.Accounts, identity.ProfileShowcaseVisibilityContacts), + Collectibles: m.toProfileShowcaseCollectibleProto(preferences.Collectibles, identity.ProfileShowcaseVisibilityContacts), + VerifiedTokens: m.toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, identity.ProfileShowcaseVisibilityContacts), + UnverifiedTokens: m.toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, identity.ProfileShowcaseVisibilityContacts), + SocialLinks: m.toProfileShowcaseSocialLinksProto(preferences.SocialLinks, identity.ProfileShowcaseVisibilityContacts), } forIDVerifiedContacts := &protobuf.ProfileShowcaseEntries{ - Communities: toProfileShowcaseCommunityProto(preferences.Communities, ProfileShowcaseVisibilityIDVerifiedContacts), - Accounts: toProfileShowcaseAccountProto(preferences.Accounts, ProfileShowcaseVisibilityIDVerifiedContacts), - Collectibles: toProfileShowcaseCollectibleProto(preferences.Collectibles, ProfileShowcaseVisibilityIDVerifiedContacts), - VerifiedTokens: toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, ProfileShowcaseVisibilityIDVerifiedContacts), - UnverifiedTokens: toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, ProfileShowcaseVisibilityIDVerifiedContacts), + Communities: m.toProfileShowcaseCommunityProto(preferences.Communities, identity.ProfileShowcaseVisibilityIDVerifiedContacts), + Accounts: m.toProfileShowcaseAccountProto(preferences.Accounts, identity.ProfileShowcaseVisibilityIDVerifiedContacts), + Collectibles: m.toProfileShowcaseCollectibleProto(preferences.Collectibles, identity.ProfileShowcaseVisibilityIDVerifiedContacts), + VerifiedTokens: m.toProfileShowcaseVerifiedTokensProto(preferences.VerifiedTokens, identity.ProfileShowcaseVisibilityIDVerifiedContacts), + UnverifiedTokens: m.toProfileShowcaseUnverifiedTokensProto(preferences.UnverifiedTokens, identity.ProfileShowcaseVisibilityIDVerifiedContacts), + SocialLinks: m.toProfileShowcaseSocialLinksProto(preferences.SocialLinks, identity.ProfileShowcaseVisibilityIDVerifiedContacts), } mutualContacts := []*Contact{} @@ -378,32 +604,35 @@ func (m *Messenger) GetProfileShowcaseForSelfIdentity() (*protobuf.ProfileShowca } func (m *Messenger) BuildProfileShowcaseFromIdentity(state *ReceivedMessageState, message *protobuf.ProfileShowcase) error { - communities := []*ProfileShowcaseCommunity{} - accounts := []*ProfileShowcaseAccount{} - collectibles := []*ProfileShowcaseCollectible{} - verifiedTokens := []*ProfileShowcaseVerifiedToken{} - unverifiedTokens := []*ProfileShowcaseUnverifiedToken{} - - communities = append(communities, fromProfileShowcaseCommunityProto(message.ForEveryone.Communities)...) - accounts = append(accounts, fromProfileShowcaseAccountProto(message.ForEveryone.Accounts)...) - collectibles = append(collectibles, fromProfileShowcaseCollectibleProto(message.ForEveryone.Collectibles)...) - verifiedTokens = append(verifiedTokens, fromProfileShowcaseVerifiedTokenProto(message.ForEveryone.VerifiedTokens)...) - unverifiedTokens = append(unverifiedTokens, fromProfileShowcaseUnverifiedTokenProto(message.ForEveryone.UnverifiedTokens)...) - senderPubKey := state.CurrentMessageState.PublicKey contactID := state.CurrentMessageState.Contact.ID + communities := []*identity.ProfileShowcaseCommunity{} + accounts := []*identity.ProfileShowcaseAccount{} + collectibles := []*identity.ProfileShowcaseCollectible{} + verifiedTokens := []*identity.ProfileShowcaseVerifiedToken{} + unverifiedTokens := []*identity.ProfileShowcaseUnverifiedToken{} + socialLinks := []*identity.ProfileShowcaseSocialLink{} + + communities = append(communities, m.fromProfileShowcaseCommunityProto(senderPubKey, message.ForEveryone.Communities)...) + accounts = append(accounts, m.fromProfileShowcaseAccountProto(message.ForEveryone.Accounts)...) + collectibles = append(collectibles, m.fromProfileShowcaseCollectibleProto(message.ForEveryone.Collectibles)...) + verifiedTokens = append(verifiedTokens, m.fromProfileShowcaseVerifiedTokenProto(message.ForEveryone.VerifiedTokens)...) + unverifiedTokens = append(unverifiedTokens, m.fromProfileShowcaseUnverifiedTokenProto(message.ForEveryone.UnverifiedTokens)...) + socialLinks = append(socialLinks, m.fromProfileShowcaseSocialLinkProto(message.ForEveryone.SocialLinks)...) + forContacts, err := m.DecryptProfileShowcaseEntriesWithPubKey(senderPubKey, message.ForContacts) if err != nil { return err } if forContacts != nil { - communities = append(communities, fromProfileShowcaseCommunityProto(forContacts.Communities)...) - accounts = append(accounts, fromProfileShowcaseAccountProto(forContacts.Accounts)...) - collectibles = append(collectibles, fromProfileShowcaseCollectibleProto(forContacts.Collectibles)...) - verifiedTokens = append(verifiedTokens, fromProfileShowcaseVerifiedTokenProto(forContacts.VerifiedTokens)...) - unverifiedTokens = append(unverifiedTokens, fromProfileShowcaseUnverifiedTokenProto(forContacts.UnverifiedTokens)...) + communities = append(communities, m.fromProfileShowcaseCommunityProto(senderPubKey, forContacts.Communities)...) + accounts = append(accounts, m.fromProfileShowcaseAccountProto(forContacts.Accounts)...) + collectibles = append(collectibles, m.fromProfileShowcaseCollectibleProto(forContacts.Collectibles)...) + verifiedTokens = append(verifiedTokens, m.fromProfileShowcaseVerifiedTokenProto(forContacts.VerifiedTokens)...) + unverifiedTokens = append(unverifiedTokens, m.fromProfileShowcaseUnverifiedTokenProto(forContacts.UnverifiedTokens)...) + socialLinks = append(socialLinks, m.fromProfileShowcaseSocialLinkProto(forContacts.SocialLinks)...) } forIDVerifiedContacts, err := m.DecryptProfileShowcaseEntriesWithPubKey(senderPubKey, message.ForIdVerifiedContacts) @@ -412,23 +641,29 @@ func (m *Messenger) BuildProfileShowcaseFromIdentity(state *ReceivedMessageState } if forIDVerifiedContacts != nil { - communities = append(communities, fromProfileShowcaseCommunityProto(forIDVerifiedContacts.Communities)...) - accounts = append(accounts, fromProfileShowcaseAccountProto(forIDVerifiedContacts.Accounts)...) - collectibles = append(collectibles, fromProfileShowcaseCollectibleProto(forIDVerifiedContacts.Collectibles)...) - verifiedTokens = append(verifiedTokens, fromProfileShowcaseVerifiedTokenProto(forIDVerifiedContacts.VerifiedTokens)...) - unverifiedTokens = append(unverifiedTokens, fromProfileShowcaseUnverifiedTokenProto(forIDVerifiedContacts.UnverifiedTokens)...) + communities = append(communities, m.fromProfileShowcaseCommunityProto(senderPubKey, forIDVerifiedContacts.Communities)...) + accounts = append(accounts, m.fromProfileShowcaseAccountProto(forIDVerifiedContacts.Accounts)...) + collectibles = append(collectibles, m.fromProfileShowcaseCollectibleProto(forIDVerifiedContacts.Collectibles)...) + verifiedTokens = append(verifiedTokens, m.fromProfileShowcaseVerifiedTokenProto(forIDVerifiedContacts.VerifiedTokens)...) + unverifiedTokens = append(unverifiedTokens, m.fromProfileShowcaseUnverifiedTokenProto(forIDVerifiedContacts.UnverifiedTokens)...) + socialLinks = append(socialLinks, m.fromProfileShowcaseSocialLinkProto(forIDVerifiedContacts.SocialLinks)...) } - // TODO: validate community membership here (https://github.com/status-im/status-desktop/issues/13081) - // TODO: validate collectible ownership here (https://github.com/status-im/status-desktop/issues/13073) + sortProfileEntyByOrder(communities, func(i int) int { return communities[i].Order }) + sortProfileEntyByOrder(accounts, func(i int) int { return accounts[i].Order }) + sortProfileEntyByOrder(collectibles, func(i int) int { return collectibles[i].Order }) + sortProfileEntyByOrder(verifiedTokens, func(i int) int { return verifiedTokens[i].Order }) + sortProfileEntyByOrder(unverifiedTokens, func(i int) int { return unverifiedTokens[i].Order }) + sortProfileEntyByOrder(socialLinks, func(i int) int { return socialLinks[i].Order }) - newShowcase := &ProfileShowcase{ + newShowcase := &identity.ProfileShowcase{ ContactID: contactID, Communities: communities, Accounts: accounts, Collectibles: collectibles, VerifiedTokens: verifiedTokens, UnverifiedTokens: unverifiedTokens, + SocialLinks: socialLinks, } oldShowcase, err := m.persistence.GetProfileShowcaseForContact(contactID) @@ -450,7 +685,6 @@ func (m *Messenger) BuildProfileShowcaseFromIdentity(state *ReceivedMessageState return err } - state.Response.AddProfileShowcase(newShowcase) return nil } @@ -465,15 +699,6 @@ func (m *Messenger) UpdateProfileShowcaseWalletAccount(account *accounts.Account return nil } - profileAccount.Name = account.Name - profileAccount.ColorID = string(account.ColorID) - profileAccount.Emoji = account.Emoji - - err = m.persistence.SaveProfileShowcaseAccountPreference(profileAccount) - if err != nil { - return err - } - return m.DispatchProfileShowcase() } @@ -500,3 +725,35 @@ func (m *Messenger) DeleteProfileShowcaseCommunity(community *communities.Commun } return nil } + +func (m *Messenger) saveProfileShowcasePreferencesProto(p *protobuf.SyncProfileShowcasePreferences, shouldSync bool) (*identity.ProfileShowcasePreferences, error) { + if p == nil { + return nil, nil + } + preferences := FromProfileShowcasePreferencesProto(p) + return preferences, m.setProfileShowcasePreferences(preferences, shouldSync) +} + +func (m *Messenger) syncProfileShowcasePreferences(ctx context.Context, rawMessageHandler RawMessageHandler) error { + preferences, err := m.GetProfileShowcasePreferences() + if err != nil { + return err + } + + syncMessage := ToProfileShowcasePreferencesProto(preferences) + encodedMessage, err := proto.Marshal(syncMessage) + if err != nil { + return err + } + + _, chat := m.getLastClockWithRelatedChat() + rawMessage := common.RawMessage{ + LocalChatID: chat.ID, + Payload: encodedMessage, + MessageType: protobuf.ApplicationMetadataMessage_SYNC_PROFILE_SHOWCASE_PREFERENCES, + ResendAutomatically: true, + } + + _, err = rawMessageHandler(ctx, rawMessage) + return err +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase_proto_conversions.go b/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase_proto_conversions.go new file mode 100644 index 00000000..b0357dfb --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/messenger_profile_showcase_proto_conversions.go @@ -0,0 +1,231 @@ +package protocol + +import ( + "github.com/status-im/status-go/protocol/identity" + "github.com/status-im/status-go/protocol/protobuf" +) + +func FromProfileShowcaseCommunityPreferenceProto(p *protobuf.ProfileShowcaseCommunityPreference) *identity.ProfileShowcaseCommunityPreference { + return &identity.ProfileShowcaseCommunityPreference{ + CommunityID: p.GetCommunityId(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseCommunitiesPreferencesProto(preferences []*protobuf.ProfileShowcaseCommunityPreference) []*identity.ProfileShowcaseCommunityPreference { + out := make([]*identity.ProfileShowcaseCommunityPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseCommunityPreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseCommunityPreferenceProto(p *identity.ProfileShowcaseCommunityPreference) *protobuf.ProfileShowcaseCommunityPreference { + return &protobuf.ProfileShowcaseCommunityPreference{ + CommunityId: p.CommunityID, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } +} + +func ToProfileShowcaseCommunitiesPreferencesProto(preferences []*identity.ProfileShowcaseCommunityPreference) []*protobuf.ProfileShowcaseCommunityPreference { + out := make([]*protobuf.ProfileShowcaseCommunityPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseCommunityPreferenceProto(p)) + } + return out +} + +func FromProfileShowcaseAccountPreferenceProto(p *protobuf.ProfileShowcaseAccountPreference) *identity.ProfileShowcaseAccountPreference { + return &identity.ProfileShowcaseAccountPreference{ + Address: p.GetAddress(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseAccountsPreferencesProto(preferences []*protobuf.ProfileShowcaseAccountPreference) []*identity.ProfileShowcaseAccountPreference { + out := make([]*identity.ProfileShowcaseAccountPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseAccountPreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseAccountPreferenceProto(p *identity.ProfileShowcaseAccountPreference) *protobuf.ProfileShowcaseAccountPreference { + return &protobuf.ProfileShowcaseAccountPreference{ + Address: p.Address, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } +} + +func ToProfileShowcaseAccountsPreferenceProto(preferences []*identity.ProfileShowcaseAccountPreference) []*protobuf.ProfileShowcaseAccountPreference { + out := make([]*protobuf.ProfileShowcaseAccountPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseAccountPreferenceProto(p)) + } + return out +} + +func FromProfileShowcaseCollectiblePreferenceProto(p *protobuf.ProfileShowcaseCollectiblePreference) *identity.ProfileShowcaseCollectiblePreference { + return &identity.ProfileShowcaseCollectiblePreference{ + ContractAddress: p.GetContractAddress(), + ChainID: p.GetChainId(), + TokenID: p.GetTokenId(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseCollectiblesPreferencesProto(preferences []*protobuf.ProfileShowcaseCollectiblePreference) []*identity.ProfileShowcaseCollectiblePreference { + out := make([]*identity.ProfileShowcaseCollectiblePreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseCollectiblePreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseCollectiblePreferenceProto(p *identity.ProfileShowcaseCollectiblePreference) *protobuf.ProfileShowcaseCollectiblePreference { + return &protobuf.ProfileShowcaseCollectiblePreference{ + ContractAddress: p.ContractAddress, + ChainId: p.ChainID, + TokenId: p.TokenID, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } +} + +func ToProfileShowcaseCollectiblesPreferenceProto(preferences []*identity.ProfileShowcaseCollectiblePreference) []*protobuf.ProfileShowcaseCollectiblePreference { + out := make([]*protobuf.ProfileShowcaseCollectiblePreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseCollectiblePreferenceProto(p)) + } + return out +} + +func FromProfileShowcaseVerifiedTokenPreferenceProto(p *protobuf.ProfileShowcaseVerifiedTokenPreference) *identity.ProfileShowcaseVerifiedTokenPreference { + return &identity.ProfileShowcaseVerifiedTokenPreference{ + Symbol: p.GetSymbol(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseVerifiedTokensPreferencesProto(preferences []*protobuf.ProfileShowcaseVerifiedTokenPreference) []*identity.ProfileShowcaseVerifiedTokenPreference { + out := make([]*identity.ProfileShowcaseVerifiedTokenPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseVerifiedTokenPreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseVerifiedTokenPreferenceProto(p *identity.ProfileShowcaseVerifiedTokenPreference) *protobuf.ProfileShowcaseVerifiedTokenPreference { + return &protobuf.ProfileShowcaseVerifiedTokenPreference{ + Symbol: p.Symbol, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } + +} + +func ToProfileShowcaseVerifiedTokensPreferenceProto(preferences []*identity.ProfileShowcaseVerifiedTokenPreference) []*protobuf.ProfileShowcaseVerifiedTokenPreference { + out := make([]*protobuf.ProfileShowcaseVerifiedTokenPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseVerifiedTokenPreferenceProto(p)) + } + return out +} + +func FromProfileShowcaseUnverifiedTokenPreferenceProto(p *protobuf.ProfileShowcaseUnverifiedTokenPreference) *identity.ProfileShowcaseUnverifiedTokenPreference { + return &identity.ProfileShowcaseUnverifiedTokenPreference{ + ContractAddress: p.GetContractAddress(), + ChainID: p.GetChainId(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseUnverifiedTokensPreferencesProto(preferences []*protobuf.ProfileShowcaseUnverifiedTokenPreference) []*identity.ProfileShowcaseUnverifiedTokenPreference { + out := make([]*identity.ProfileShowcaseUnverifiedTokenPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseUnverifiedTokenPreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseUnverifiedTokenPreferenceProto(p *identity.ProfileShowcaseUnverifiedTokenPreference) *protobuf.ProfileShowcaseUnverifiedTokenPreference { + return &protobuf.ProfileShowcaseUnverifiedTokenPreference{ + ContractAddress: p.ContractAddress, + ChainId: p.ChainID, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } +} + +func ToProfileShowcaseUnverifiedTokensPreferenceProto(preferences []*identity.ProfileShowcaseUnverifiedTokenPreference) []*protobuf.ProfileShowcaseUnverifiedTokenPreference { + out := make([]*protobuf.ProfileShowcaseUnverifiedTokenPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseUnverifiedTokenPreferenceProto(p)) + } + return out +} + +func FromProfileShowcaseSocialLinkPreferenceProto(p *protobuf.ProfileShowcaseSocialLinkPreference) *identity.ProfileShowcaseSocialLinkPreference { + return &identity.ProfileShowcaseSocialLinkPreference{ + Text: p.GetText(), + URL: p.GetUrl(), + ShowcaseVisibility: identity.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: int(p.Order), + } +} + +func FromProfileShowcaseSocialLinksPreferencesProto(preferences []*protobuf.ProfileShowcaseSocialLinkPreference) []*identity.ProfileShowcaseSocialLinkPreference { + out := make([]*identity.ProfileShowcaseSocialLinkPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, FromProfileShowcaseSocialLinkPreferenceProto(p)) + } + return out +} + +func ToProfileShowcaseSocialLinkPreferenceProto(p *identity.ProfileShowcaseSocialLinkPreference) *protobuf.ProfileShowcaseSocialLinkPreference { + return &protobuf.ProfileShowcaseSocialLinkPreference{ + Text: p.Text, + Url: p.URL, + ShowcaseVisibility: protobuf.ProfileShowcaseVisibility(p.ShowcaseVisibility), + Order: uint32(p.Order), + } +} + +func ToProfileShowcaseSocialLinksPreferenceProto(preferences []*identity.ProfileShowcaseSocialLinkPreference) []*protobuf.ProfileShowcaseSocialLinkPreference { + out := make([]*protobuf.ProfileShowcaseSocialLinkPreference, 0, len(preferences)) + for _, p := range preferences { + out = append(out, ToProfileShowcaseSocialLinkPreferenceProto(p)) + } + return out +} + +func FromProfileShowcasePreferencesProto(p *protobuf.SyncProfileShowcasePreferences) *identity.ProfileShowcasePreferences { + return &identity.ProfileShowcasePreferences{ + Clock: p.GetClock(), + Communities: FromProfileShowcaseCommunitiesPreferencesProto(p.Communities), + Accounts: FromProfileShowcaseAccountsPreferencesProto(p.Accounts), + Collectibles: FromProfileShowcaseCollectiblesPreferencesProto(p.Collectibles), + VerifiedTokens: FromProfileShowcaseVerifiedTokensPreferencesProto(p.VerifiedTokens), + UnverifiedTokens: FromProfileShowcaseUnverifiedTokensPreferencesProto(p.UnverifiedTokens), + SocialLinks: FromProfileShowcaseSocialLinksPreferencesProto(p.SocialLinks), + } +} + +func ToProfileShowcasePreferencesProto(p *identity.ProfileShowcasePreferences) *protobuf.SyncProfileShowcasePreferences { + return &protobuf.SyncProfileShowcasePreferences{ + Clock: p.Clock, + Communities: ToProfileShowcaseCommunitiesPreferencesProto(p.Communities), + Accounts: ToProfileShowcaseAccountsPreferenceProto(p.Accounts), + Collectibles: ToProfileShowcaseCollectiblesPreferenceProto(p.Collectibles), + VerifiedTokens: ToProfileShowcaseVerifiedTokensPreferenceProto(p.VerifiedTokens), + UnverifiedTokens: ToProfileShowcaseUnverifiedTokensPreferenceProto(p.UnverifiedTokens), + SocialLinks: ToProfileShowcaseSocialLinksPreferenceProto(p.SocialLinks), + } +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_response.go b/vendor/github.com/status-im/status-go/protocol/messenger_response.go index 9bc72dde..6daafedb 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_response.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_response.go @@ -21,6 +21,7 @@ import ( "github.com/status-im/status-go/protocol/encryption/multidevice" "github.com/status-im/status-go/protocol/identity" "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/protocol/storenodes" "github.com/status-im/status-go/protocol/verification" localnotifications "github.com/status-im/status-go/services/local-notifications" "github.com/status-im/status-go/services/mailservers" @@ -51,6 +52,7 @@ type MessengerResponse struct { CommunityChanges []*communities.CommunityChanges AnonymousMetrics []*appmetrics.AppMetric Mailservers []mailservers.Mailserver + CommunityStorenodes []storenodes.Storenode Bookmarks []*browsers.Bookmark Settings []*settings.SyncSettingField IdentityImages []images.IdentityImage @@ -67,31 +69,32 @@ type MessengerResponse struct { // notifications a list of notifications derived from messenger events // that are useful to notify the user about - notifications map[string]*localnotifications.Notification - requestsToJoinCommunity map[string]*communities.RequestToJoin - chats map[string]*Chat - removedChats map[string]bool - removedMessages map[string]*RemovedMessage - communities map[string]*communities.Community - communitiesSettings map[string]*communities.CommunitySettings - activityCenterNotifications map[string]*ActivityCenterNotification - activityCenterState *ActivityCenterState - messages map[string]*common.Message - pinMessages map[string]*common.PinMessage - discordMessages map[string]*protobuf.DiscordMessage - discordMessageAttachments map[string]*protobuf.DiscordMessageAttachment - discordMessageAuthors map[string]*protobuf.DiscordMessageAuthor - currentStatus *UserStatus - statusUpdates map[string]UserStatus - clearedHistories map[string]*ClearedHistory - verificationRequests map[string]*verification.Request - trustStatus map[string]verification.TrustStatus - emojiReactions map[string]*EmojiReaction - savedAddresses map[string]*wallet.SavedAddress - SocialLinksInfo *identity.SocialLinksInfo - ensUsernameDetails []*ensservice.UsernameDetail - updatedProfileShowcases map[string]*ProfileShowcase - seenAndUnseenMessages map[string]*SeenUnseenMessages + notifications map[string]*localnotifications.Notification + requestsToJoinCommunity map[string]*communities.RequestToJoin + chats map[string]*Chat + removedChats map[string]bool + removedMessages map[string]*RemovedMessage + deletedMessages map[string]string + communities map[string]*communities.Community + communitiesSettings map[string]*communities.CommunitySettings + activityCenterNotifications map[string]*ActivityCenterNotification + activityCenterState *ActivityCenterState + messages map[string]*common.Message + pinMessages map[string]*common.PinMessage + discordMessages map[string]*protobuf.DiscordMessage + discordMessageAttachments map[string]*protobuf.DiscordMessageAttachment + discordMessageAuthors map[string]*protobuf.DiscordMessageAuthor + currentStatus *UserStatus + statusUpdates map[string]UserStatus + clearedHistories map[string]*ClearedHistory + verificationRequests map[string]*verification.Request + trustStatus map[string]verification.TrustStatus + emojiReactions map[string]*EmojiReaction + savedAddresses map[string]*wallet.SavedAddress + SocialLinksInfo *identity.SocialLinksInfo + ensUsernameDetails []*ensservice.UsernameDetail + updatedProfileShowcaseContactIDs map[string]bool + seenAndUnseenMessages map[string]*SeenUnseenMessages } func (r *MessengerResponse) MarshalJSON() ([]byte, error) { @@ -99,6 +102,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) { Chats []*Chat `json:"chats,omitempty"` RemovedChats []string `json:"removedChats,omitempty"` RemovedMessages []*RemovedMessage `json:"removedMessages,omitempty"` + DeletedMessages map[string][]string `json:"deletedMessages,omitempty"` Messages []*common.Message `json:"messages,omitempty"` Contacts []*Contact `json:"contacts,omitempty"` Installations []*multidevice.Installation `json:"installations,omitempty"` @@ -108,37 +112,38 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) { CommunityChanges []*communities.CommunityChanges `json:"communityChanges,omitempty"` RequestsToJoinCommunity []*communities.RequestToJoin `json:"requestsToJoinCommunity,omitempty"` Mailservers []mailservers.Mailserver `json:"mailservers,omitempty"` + CommunityStorenodes []storenodes.Storenode `json:"communityStorenodes,omitempty"` Bookmarks []*browsers.Bookmark `json:"bookmarks,omitempty"` ClearedHistories []*ClearedHistory `json:"clearedHistories,omitempty"` VerificationRequests []*verification.Request `json:"verificationRequests,omitempty"` TrustStatus map[string]verification.TrustStatus `json:"trustStatus,omitempty"` // Notifications a list of notifications derived from messenger events // that are useful to notify the user about - Notifications []*localnotifications.Notification `json:"notifications"` - Communities []*communities.Community `json:"communities,omitempty"` - CommunitiesSettings []*communities.CommunitySettings `json:"communitiesSettings,omitempty"` - ActivityCenterNotifications []*ActivityCenterNotification `json:"activityCenterNotifications,omitempty"` - ActivityCenterState *ActivityCenterState `json:"activityCenterState,omitempty"` - CurrentStatus *UserStatus `json:"currentStatus,omitempty"` - StatusUpdates []UserStatus `json:"statusUpdates,omitempty"` - Settings []*settings.SyncSettingField `json:"settings,omitempty"` - IdentityImages []images.IdentityImage `json:"identityImages,omitempty"` - CustomizationColor string `json:"customizationColor,omitempty"` - WatchOnlyAccounts []*accounts.Account `json:"watchOnlyAccounts,omitempty"` - Keypairs []*accounts.Keypair `json:"keypairs,omitempty"` - AccountsPositions []*accounts.Account `json:"accountsPositions,omitempty"` - TokenPreferences []walletsettings.TokenPreferences `json:"tokenPreferences,omitempty"` - CollectiblePreferences []walletsettings.CollectiblePreferences `json:"collectiblePreferences,omitempty"` - DiscordCategories []*discord.Category `json:"discordCategories,omitempty"` - DiscordChannels []*discord.Channel `json:"discordChannels,omitempty"` - DiscordOldestMessageTimestamp int `json:"discordOldestMessageTimestamp"` - DiscordMessages []*protobuf.DiscordMessage `json:"discordMessages,omitempty"` - DiscordMessageAttachments []*protobuf.DiscordMessageAttachment `json:"discordMessageAtachments,omitempty"` - SavedAddresses []*wallet.SavedAddress `json:"savedAddresses,omitempty"` - SocialLinksInfo *identity.SocialLinksInfo `json:"socialLinksInfo,omitempty"` - EnsUsernameDetails []*ensservice.UsernameDetail `json:"ensUsernameDetails,omitempty"` - UpdatedProfileShowcases []*ProfileShowcase `json:"updatedProfileShowcases,omitempty"` - SeenAndUnseenMessages []*SeenUnseenMessages `json:"seenAndUnseenMessages,omitempty"` + Notifications []*localnotifications.Notification `json:"notifications"` + Communities []*communities.Community `json:"communities,omitempty"` + CommunitiesSettings []*communities.CommunitySettings `json:"communitiesSettings,omitempty"` + ActivityCenterNotifications []*ActivityCenterNotification `json:"activityCenterNotifications,omitempty"` + ActivityCenterState *ActivityCenterState `json:"activityCenterState,omitempty"` + CurrentStatus *UserStatus `json:"currentStatus,omitempty"` + StatusUpdates []UserStatus `json:"statusUpdates,omitempty"` + Settings []*settings.SyncSettingField `json:"settings,omitempty"` + IdentityImages []images.IdentityImage `json:"identityImages,omitempty"` + CustomizationColor string `json:"customizationColor,omitempty"` + WatchOnlyAccounts []*accounts.Account `json:"watchOnlyAccounts,omitempty"` + Keypairs []*accounts.Keypair `json:"keypairs,omitempty"` + AccountsPositions []*accounts.Account `json:"accountsPositions,omitempty"` + TokenPreferences []walletsettings.TokenPreferences `json:"tokenPreferences,omitempty"` + CollectiblePreferences []walletsettings.CollectiblePreferences `json:"collectiblePreferences,omitempty"` + DiscordCategories []*discord.Category `json:"discordCategories,omitempty"` + DiscordChannels []*discord.Channel `json:"discordChannels,omitempty"` + DiscordOldestMessageTimestamp int `json:"discordOldestMessageTimestamp"` + DiscordMessages []*protobuf.DiscordMessage `json:"discordMessages,omitempty"` + DiscordMessageAttachments []*protobuf.DiscordMessageAttachment `json:"discordMessageAtachments,omitempty"` + SavedAddresses []*wallet.SavedAddress `json:"savedAddresses,omitempty"` + SocialLinksInfo *identity.SocialLinksInfo `json:"socialLinksInfo,omitempty"` + EnsUsernameDetails []*ensservice.UsernameDetail `json:"ensUsernameDetails,omitempty"` + UpdatedProfileShowcaseContactIDs []string `json:"updatedProfileShowcaseContactIDs,omitempty"` + SeenAndUnseenMessages []*SeenUnseenMessages `json:"seenAndUnseenMessages,omitempty"` }{ Contacts: r.Contacts, Installations: r.Installations, @@ -146,6 +151,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) { CommunityChanges: r.CommunityChanges, RequestsToJoinCommunity: r.RequestsToJoinCommunity(), Mailservers: r.Mailservers, + CommunityStorenodes: r.CommunityStorenodes, Bookmarks: r.Bookmarks, CurrentStatus: r.currentStatus, Settings: r.Settings, @@ -157,28 +163,29 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) { TokenPreferences: r.TokenPreferences, CollectiblePreferences: r.CollectiblePreferences, - Messages: r.Messages(), - VerificationRequests: r.VerificationRequests(), - SavedAddresses: r.SavedAddresses(), - Notifications: r.Notifications(), - Chats: r.Chats(), - Communities: r.Communities(), - CommunitiesSettings: r.CommunitiesSettings(), - RemovedChats: r.RemovedChats(), - RemovedMessages: r.RemovedMessages(), - ClearedHistories: r.ClearedHistories(), - ActivityCenterNotifications: r.ActivityCenterNotifications(), - ActivityCenterState: r.ActivityCenterState(), - PinMessages: r.PinMessages(), - EmojiReactions: r.EmojiReactions(), - StatusUpdates: r.StatusUpdates(), - DiscordCategories: r.DiscordCategories, - DiscordChannels: r.DiscordChannels, - DiscordOldestMessageTimestamp: r.DiscordOldestMessageTimestamp, - SocialLinksInfo: r.SocialLinksInfo, - EnsUsernameDetails: r.EnsUsernameDetails(), - UpdatedProfileShowcases: r.GetUpdatedProfileShowcases(), - SeenAndUnseenMessages: r.GetSeenAndUnseenMessages(), + Messages: r.Messages(), + VerificationRequests: r.VerificationRequests(), + SavedAddresses: r.SavedAddresses(), + Notifications: r.Notifications(), + Chats: r.Chats(), + Communities: r.Communities(), + CommunitiesSettings: r.CommunitiesSettings(), + RemovedChats: r.RemovedChats(), + RemovedMessages: r.RemovedMessages(), + DeletedMessages: r.DeletedMessagesInChats(), + ClearedHistories: r.ClearedHistories(), + ActivityCenterNotifications: r.ActivityCenterNotifications(), + ActivityCenterState: r.ActivityCenterState(), + PinMessages: r.PinMessages(), + EmojiReactions: r.EmojiReactions(), + StatusUpdates: r.StatusUpdates(), + DiscordCategories: r.DiscordCategories, + DiscordChannels: r.DiscordChannels, + DiscordOldestMessageTimestamp: r.DiscordOldestMessageTimestamp, + SocialLinksInfo: r.SocialLinksInfo, + EnsUsernameDetails: r.EnsUsernameDetails(), + UpdatedProfileShowcaseContactIDs: r.GetUpdatedProfileShowcaseContactIDs(), + SeenAndUnseenMessages: r.GetSeenAndUnseenMessages(), } responseItem.TrustStatus = r.TrustStatus() @@ -209,6 +216,18 @@ func (r *MessengerResponse) RemovedMessages() []*RemovedMessage { return messages } +func (r *MessengerResponse) DeletedMessages() map[string]string { + return r.deletedMessages +} + +func (r *MessengerResponse) DeletedMessagesInChats() map[string][]string { + deletedMessagesInChats := make(map[string][]string) + for messageID, chatID := range r.deletedMessages { + deletedMessagesInChats[chatID] = append(deletedMessagesInChats[chatID], messageID) + } + return deletedMessagesInChats +} + func (r *MessengerResponse) ClearedHistories() []*ClearedHistory { var clearedHistories []*ClearedHistory for chatID := range r.clearedHistories { @@ -293,7 +312,9 @@ func (r *MessengerResponse) IsEmpty() bool { len(r.CommunityChanges)+ len(r.removedChats)+ len(r.removedMessages)+ + len(r.deletedMessages)+ len(r.Mailservers)+ + len(r.CommunityStorenodes)+ len(r.IdentityImages)+ len(r.WatchOnlyAccounts)+ len(r.Keypairs)+ @@ -307,7 +328,7 @@ func (r *MessengerResponse) IsEmpty() bool { len(r.verificationRequests)+ len(r.requestsToJoinCommunity)+ len(r.savedAddresses)+ - len(r.updatedProfileShowcases)+ + len(r.updatedProfileShowcaseContactIDs)+ len(r.seenAndUnseenMessages)+ len(r.ensUsernameDetails) == 0 && r.currentStatus == nil && @@ -330,6 +351,7 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error { r.AddChats(response.Chats()) r.AddRemovedChats(response.RemovedChats()) r.AddRemovedMessages(response.RemovedMessages()) + r.MergeDeletedMessages(response.DeletedMessages()) r.AddNotifications(response.Notifications()) r.AddMessages(response.Messages()) r.AddContacts(response.Contacts) @@ -346,7 +368,7 @@ func (r *MessengerResponse) Merge(response *MessengerResponse) error { r.AddEnsUsernameDetails(response.EnsUsernameDetails()) r.AddRequestsToJoinCommunity(response.RequestsToJoinCommunity()) r.AddBookmarks(response.GetBookmarks()) - r.AddProfileShowcases(response.GetUpdatedProfileShowcases()) + r.AddSeveralUpdatedProfileShowcaseContactIDs(response.GetUpdatedProfileShowcaseContactIDs()) r.AddSeveralSeenAndUnseenMessages(response.GetSeenAndUnseenMessages()) r.CommunityChanges = append(r.CommunityChanges, response.CommunityChanges...) r.BackupHandled = response.BackupHandled @@ -578,6 +600,26 @@ func (r *MessengerResponse) AddRemovedMessage(rm *RemovedMessage) { } } +func (r *MessengerResponse) AddDeletedMessages(messagesToAdd []*protobuf.DeleteCommunityMemberMessage) { + if r.deletedMessages == nil { + r.deletedMessages = make(map[string]string) + } + + for _, message := range messagesToAdd { + r.deletedMessages[message.Id] = message.ChatId + } +} + +func (r *MessengerResponse) MergeDeletedMessages(messagesToAdd map[string]string) { + if r.deletedMessages == nil { + r.deletedMessages = make(map[string]string) + } + + for messageID, chatID := range messagesToAdd { + r.deletedMessages[messageID] = chatID + } +} + func (r *MessengerResponse) AddClearedHistory(ch *ClearedHistory) { if r.clearedHistories == nil { r.clearedHistories = make(map[string]*ClearedHistory) @@ -682,6 +724,13 @@ func (r *MessengerResponse) DiscordMessageAttachments() []*protobuf.DiscordMessa return attachments } +// Messages extracts the messages from the response and returns them as a slice. +// Since 'r.messages' is a map, the order of messages in the resulting slice is not +// guaranteed and can vary with each call to this method. This is inherent to Go's map +// iteration behavior, which does not define a sequence for the order of map elements. +// Consumers should not depend on the ordering of messages in the slice for any logic +// that requires consistent ordering, as map iteration order can change when keys are +// added or deleted. Consider sorting the slice after retrieval if a specific order is needed. func (r *MessengerResponse) Messages() []*common.Message { var ms []*common.Message for _, m := range r.messages { @@ -821,26 +870,30 @@ func (r *MessengerResponse) HasDiscordChannel(id string) bool { return false } -func (r *MessengerResponse) AddProfileShowcases(showcases []*ProfileShowcase) { - for _, showcase := range showcases { - r.AddProfileShowcase(showcase) +func (r *MessengerResponse) AddSeveralUpdatedProfileShowcaseContactIDs(contactIDs []string) { + for _, contactID := range contactIDs { + r.AddUpdatedProfileShowcaseContactID(contactID) } } -func (r *MessengerResponse) AddProfileShowcase(showcase *ProfileShowcase) { - if r.updatedProfileShowcases == nil { - r.updatedProfileShowcases = make(map[string]*ProfileShowcase) +func (r *MessengerResponse) AddUpdatedProfileShowcaseContactID(contactID string) { + if r.updatedProfileShowcaseContactIDs == nil { + r.updatedProfileShowcaseContactIDs = make(map[string]bool) } - r.updatedProfileShowcases[showcase.ContactID] = showcase + if _, exists := r.updatedProfileShowcaseContactIDs[contactID]; exists { + return + } + + r.updatedProfileShowcaseContactIDs[contactID] = true } -func (r *MessengerResponse) GetUpdatedProfileShowcases() []*ProfileShowcase { - var showcases []*ProfileShowcase - for _, showcase := range r.updatedProfileShowcases { - showcases = append(showcases, showcase) +func (r *MessengerResponse) GetUpdatedProfileShowcaseContactIDs() []string { + var contactIDs []string + for contactID := range r.updatedProfileShowcaseContactIDs { + contactIDs = append(contactIDs, contactID) } - return showcases + return contactIDs } func (r *MessengerResponse) AddSeveralSeenAndUnseenMessages(messages []*SeenUnseenMessages) { diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_settings.go b/vendor/github.com/status-im/status-go/protocol/messenger_settings.go index 6f4cf66c..f9d73720 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_settings.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_settings.go @@ -57,3 +57,15 @@ func (m *Messenger) SetCustomizationColor(ctx context.Context, request *requests } return nil } + +func (m *Messenger) TogglePeerSyncing(request *requests.TogglePeerSyncingRequest) error { + if err := request.Validate(); err != nil { + return err + } + + err := m.settings.SetPeerSyncingEnabled(request.Enabled) + if err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_store_node_request_manager.go b/vendor/github.com/status-im/status-go/protocol/messenger_store_node_request_manager.go index 75f9cfd8..4962e24b 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_store_node_request_manager.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_store_node_request_manager.go @@ -15,6 +15,7 @@ import ( "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/protocol/communities" "github.com/status-im/status-go/protocol/transport" + "github.com/status-im/status-go/services/mailservers" ) const ( @@ -32,6 +33,17 @@ type storeNodeRequestID struct { DataID string `json:"dataID"` } +func (r *storeNodeRequestID) getCommunityID() string { + switch r.RequestType { + case storeNodeCommunityRequest: + return r.DataID + case storeNodeShardRequest: + return strings.TrimSuffix(r.DataID, transport.CommunityShardInfoTopicPrefix()) + default: + return "" + } +} + type StoreNodeRequestManager struct { messenger *Messenger logger *zap.Logger @@ -225,9 +237,7 @@ func (m *StoreNodeRequestManager) getFilter(requestType storeNodeRequestType, da } switch requestType { - case storeNodeShardRequest: - fallthrough - case storeNodeCommunityRequest: + case storeNodeShardRequest, storeNodeCommunityRequest: // If filter wasn't installed we create it and // remember for uninstalling after response is received filters, err := m.messenger.transport.InitPublicFilters([]transport.FiltersToInitialize{{ @@ -503,23 +513,29 @@ func (r *storeNodeRequest) routine() { r.finalize() }() - if !r.manager.messenger.waitForAvailableStoreNode(storeNodeAvailableTimeout) { - r.result.err = fmt.Errorf("store node is not available") - return + communityID := r.requestID.getCommunityID() + + if r.requestID.RequestType != storeNodeCommunityRequest || !r.manager.messenger.communityStorenodes.HasStorenodeSetup(communityID) { + if !r.manager.messenger.waitForAvailableStoreNode(storeNodeAvailableTimeout) { + r.result.err = fmt.Errorf("store node is not available") + return + } } + storeNode := r.manager.messenger.getActiveMailserver(communityID) + // Check if community already exists locally and get Clock. - - localCommunity, _ := r.manager.messenger.communitiesManager.GetByIDString(r.requestID.DataID) - - if localCommunity != nil { - r.minimumDataClock = localCommunity.Clock() + if r.requestID.RequestType == storeNodeCommunityRequest { + localCommunity, _ := r.manager.messenger.communitiesManager.GetByIDString(communityID) + if localCommunity != nil { + r.minimumDataClock = localCommunity.Clock() + } } // Start store node request from, to := r.manager.messenger.calculateMailserverTimeBounds(oneMonthDuration) - _, err := r.manager.messenger.performMailserverRequest(func() (*MessengerResponse, error) { + _, err := r.manager.messenger.performMailserverRequest(storeNode, func(ms mailservers.Mailserver) (*MessengerResponse, error) { batch := MailserverBatch{ From: from, To: to, @@ -531,7 +547,7 @@ func (r *storeNodeRequest) routine() { r.manager.onPerformingBatch(batch) } - return nil, r.manager.messenger.processMailserverBatchWithOptions(batch, r.config.InitialPageSize, r.shouldFetchNextPage, true) + return nil, r.manager.messenger.processMailserverBatchWithOptions(ms, batch, r.config.InitialPageSize, r.shouldFetchNextPage, true) }) r.result.err = err diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_sync_raw_messages.go b/vendor/github.com/status-im/status-go/protocol/messenger_sync_raw_messages.go index 088039e5..5eebaa8c 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_sync_raw_messages.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_sync_raw_messages.go @@ -327,6 +327,16 @@ func (m *Messenger) HandleSyncRawMessages(rawMessages []*protobuf.RawMessage) er if err != nil { return err } + case protobuf.ApplicationMetadataMessage_SYNC_PROFILE_SHOWCASE_PREFERENCES: + var message protobuf.SyncProfileShowcasePreferences + err := proto.Unmarshal(rawMessage.GetPayload(), &message) + if err != nil { + return err + } + _, err = m.saveProfileShowcasePreferencesProto(&message, false) + if err != nil { + return err + } } } response, err := m.saveDataAndPrepareResponse(state) diff --git a/vendor/github.com/status-im/status-go/protocol/messenger_testing_utils.go b/vendor/github.com/status-im/status-go/protocol/messenger_testing_utils.go index 55bc695d..0365cb6f 100644 --- a/vendor/github.com/status-im/status-go/protocol/messenger_testing_utils.go +++ b/vendor/github.com/status-im/status-go/protocol/messenger_testing_utils.go @@ -4,10 +4,18 @@ import ( "context" "crypto/rand" "errors" + "fmt" "math/big" "sync" "time" + "github.com/status-im/status-go/protocol/wakusync" + + "github.com/status-im/status-go/protocol/identity" + + "github.com/status-im/status-go/eth-node/types" + waku2 "github.com/status-im/status-go/wakuv2" + "golang.org/x/exp/maps" "github.com/stretchr/testify/suite" @@ -46,8 +54,18 @@ func WaitOnMessengerResponse(m *Messenger, condition func(*MessengerResponse) bo type MessengerSignalsHandlerMock struct { MessengerSignalsHandler - responseChan chan *MessengerResponse - communityFoundChan chan *communities.Community + responseChan chan *MessengerResponse + communityFoundChan chan *communities.Community + wakuBackedUpDataResponseChan chan *wakusync.WakuBackedUpDataResponse +} + +func (m *MessengerSignalsHandlerMock) SendWakuFetchingBackupProgress(response *wakusync.WakuBackedUpDataResponse) { + m.wakuBackedUpDataResponseChan <- response +} +func (m *MessengerSignalsHandlerMock) SendWakuBackedUpProfile(*wakusync.WakuBackedUpDataResponse) {} +func (m *MessengerSignalsHandlerMock) SendWakuBackedUpSettings(*wakusync.WakuBackedUpDataResponse) {} +func (m *MessengerSignalsHandlerMock) SendWakuBackedUpKeypair(*wakusync.WakuBackedUpDataResponse) {} +func (m *MessengerSignalsHandlerMock) SendWakuBackedUpWatchOnlyAccount(*wakusync.WakuBackedUpDataResponse) { } func (m *MessengerSignalsHandlerMock) MessengerResponse(response *MessengerResponse) { @@ -67,6 +85,42 @@ func (m *MessengerSignalsHandlerMock) CommunityInfoFound(community *communities. } } +func WaitOnSignaledSendWakuFetchingBackupProgress(m *Messenger, condition func(*wakusync.WakuBackedUpDataResponse) bool, errorMessage string) (*wakusync.WakuBackedUpDataResponse, error) { + interval := 500 * time.Millisecond + timeoutChan := time.After(10 * time.Second) + + if m.config.messengerSignalsHandler != nil { + return nil, errors.New("messengerSignalsHandler already provided/mocked") + } + + responseChan := make(chan *wakusync.WakuBackedUpDataResponse, 1000) + m.config.messengerSignalsHandler = &MessengerSignalsHandlerMock{ + wakuBackedUpDataResponseChan: responseChan, + } + + defer func() { + m.config.messengerSignalsHandler = nil + }() + + for { + _, err := m.RetrieveAll() + if err != nil { + return nil, err + } + + select { + case r := <-responseChan: + if condition(r) { + return r, nil + } + case <-timeoutChan: + return nil, errors.New("timed out: " + errorMessage) + default: // No immediate response, rest & loop back to retrieve again + time.Sleep(interval) + } + } +} + func WaitOnSignaledMessengerResponse(m *Messenger, condition func(*MessengerResponse) bool, errorMessage string) (*MessengerResponse, error) { interval := 500 * time.Millisecond timeoutChan := time.After(10 * time.Second) @@ -75,7 +129,7 @@ func WaitOnSignaledMessengerResponse(m *Messenger, condition func(*MessengerResp return nil, errors.New("messengerSignalsHandler already provided/mocked") } - responseChan := make(chan *MessengerResponse, 1) + responseChan := make(chan *MessengerResponse, 64) m.config.messengerSignalsHandler = &MessengerSignalsHandlerMock{ responseChan: responseChan, } @@ -95,10 +149,9 @@ func WaitOnSignaledMessengerResponse(m *Messenger, condition func(*MessengerResp if condition(r) { return r, nil } - return nil, errors.New(errorMessage) case <-timeoutChan: - return nil, errors.New("timed out: " + errorMessage) + return nil, errors.New(errorMessage) default: // No immediate response, rest & loop back to retrieve again time.Sleep(interval) @@ -138,6 +191,66 @@ func WaitOnSignaledCommunityFound(m *Messenger, action func(), condition func(co } } +func WaitForConnectionStatus(s *suite.Suite, waku *waku2.Waku, action func() bool) { + subscription := waku.SubscribeToConnStatusChanges() + defer subscription.Unsubscribe() + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + // Action should return the desired online status + wantedOnline := action() + + for { + select { + case status := <-subscription.C: + if status.IsOnline == wantedOnline { + return + } + case <-ctx.Done(): + s.Require().Fail(fmt.Sprintf("timeout waiting for waku connection status '%t'", wantedOnline)) + return + } + } +} + +func hasAllPeers(m map[string]types.WakuV2Peer, checkSlice []string) bool { + for _, check := range checkSlice { + if _, ok := m[check]; !ok { + return false + } + } + return true +} + +func WaitForPeersConnected(s *suite.Suite, waku *waku2.Waku, action func() []string) { + subscription := waku.SubscribeToConnStatusChanges() + defer subscription.Unsubscribe() + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + // Action should return the desired peer ID + peerIDs := action() + if hasAllPeers(waku.Peers(), peerIDs) { + return + } + + for { + select { + case status := <-subscription.C: + if hasAllPeers(status.Peers, peerIDs) { + // Give some time for p2p events, otherwise might look like peer is available, but fail to send a message. + time.Sleep(100 * time.Millisecond) + return + } + case <-ctx.Done(): + s.Require().Fail(fmt.Sprintf("timeout waiting for peers connected '%+v'", peerIDs)) + return + } + } +} + func FindFirstByContentType(messages []*common.Message, contentType protobuf.ChatMessage_ContentType) *common.Message { for _, message := range messages { if message.ContentType == contentType { @@ -302,3 +415,97 @@ func RandomBytes(length int) []byte { } return out } + +func DummyProfileShowcasePreferences(withCollectibles bool) *identity.ProfileShowcasePreferences { + preferences := &identity.ProfileShowcasePreferences{ + Communities: []*identity.ProfileShowcaseCommunityPreference{ + { + CommunityID: "0x254254546768764565565", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + }, + { + CommunityID: "0x865241434343432412343", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityContacts, + }, + }, + Accounts: []*identity.ProfileShowcaseAccountPreference{ + { + Address: "0x0000000000000000000000000033433445133423", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + Order: 0, + }, + { + Address: "0x0000000000000000000000000032433445133424", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityContacts, + Order: 1, + }, + }, + VerifiedTokens: []*identity.ProfileShowcaseVerifiedTokenPreference{ + { + Symbol: "ETH", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + Order: 1, + }, + { + Symbol: "DAI", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityIDVerifiedContacts, + Order: 2, + }, + { + Symbol: "SNT", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityNoOne, + Order: 3, + }, + }, + UnverifiedTokens: []*identity.ProfileShowcaseUnverifiedTokenPreference{ + { + ContractAddress: "0x454525452023452", + ChainID: 11155111, + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + Order: 0, + }, + { + ContractAddress: "0x12312323323233", + ChainID: 1, + ShowcaseVisibility: identity.ProfileShowcaseVisibilityContacts, + Order: 1, + }, + }, + SocialLinks: []*identity.ProfileShowcaseSocialLinkPreference{ + &identity.ProfileShowcaseSocialLinkPreference{ + Text: identity.TwitterID, + URL: "https://twitter.com/ethstatus", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + Order: 1, + }, + &identity.ProfileShowcaseSocialLinkPreference{ + Text: identity.TwitterID, + URL: "https://twitter.com/StatusIMBlog", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityIDVerifiedContacts, + Order: 2, + }, + &identity.ProfileShowcaseSocialLinkPreference{ + Text: identity.GithubID, + URL: "https://github.com/status-im", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityContacts, + Order: 3, + }, + }, + } + + if withCollectibles { + preferences.Collectibles = []*identity.ProfileShowcaseCollectiblePreference{ + { + ContractAddress: "0x12378534257568678487683576", + ChainID: 1, + TokenID: "12321389592999903", + ShowcaseVisibility: identity.ProfileShowcaseVisibilityEveryone, + Order: 0, + }, + } + } else { + preferences.Collectibles = []*identity.ProfileShowcaseCollectiblePreference{} + } + + return preferences +} diff --git a/vendor/github.com/status-im/status-go/protocol/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/migrations/migrations.go index f7ad547a..7692b33a 100644 --- a/vendor/github.com/status-im/status-go/protocol/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/migrations/migrations.go @@ -121,8 +121,19 @@ // 1704832512_add_peersyncing.up.sql (276B) // 1706028033_profile_showcase_address_and_community.up.sql (2.42kB) // 1706520870_add_bridge_messages_table.up.sql (389B) +// 1706520871_add_community_description_cache.up.sql (730B) +// 1707749393_add_community_grants.up.sql (147B) +// 1707841194_add_profile_showcase_preferences.up.sql (132B) +// 1708062699_activity_data.up.sql (82B) +// 1708423707_applied_community_events.up.sql (201B) +// 1708440786_profile_showcase_social_links.up.sql (906B) +// 1709805967_simplify_profile_showcase_preferences.up.sql (701B) +// 1709828431_add_community_description_cache.up.sql (730B) +// 1710331283_add_bio_to_contacts.up.sql (42B) +// 1710331284_hash_ratchet_encrypted_messages_key_id.up.sql (111B) +// 1711389881_add_profile_showcase_community_grant.up.sql (86B) // README.md (554B) -// doc.go (850B) +// doc.go (870B) package migrations @@ -132,6 +143,7 @@ import ( "crypto/sha256" "fmt" "io" + "io/ioutil" "os" "path/filepath" "strings" @@ -141,7 +153,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } var buf bytes.Buffer @@ -149,7 +161,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } if clErr != nil { return nil, err @@ -205,7 +217,7 @@ func _000001_initDownDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}} return a, nil } @@ -225,7 +237,7 @@ func _000001_initUpDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}} return a, nil } @@ -245,7 +257,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}} return a, nil } @@ -265,7 +277,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}} return a, nil } @@ -285,7 +297,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}} return a, nil } @@ -305,7 +317,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}} return a, nil } @@ -325,7 +337,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}} return a, nil } @@ -345,7 +357,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}} return a, nil } @@ -365,7 +377,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}} return a, nil } @@ -385,7 +397,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}} return a, nil } @@ -405,7 +417,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}} return a, nil } @@ -425,7 +437,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}} return a, nil } @@ -445,7 +457,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}} return a, nil } @@ -465,7 +477,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}} return a, nil } @@ -485,7 +497,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}} return a, nil } @@ -505,7 +517,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}} return a, nil } @@ -525,7 +537,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}} return a, nil } @@ -545,7 +557,7 @@ func _1603816533_add_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}} return a, nil } @@ -565,7 +577,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}} return a, nil } @@ -585,7 +597,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}} return a, nil } @@ -605,7 +617,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}} return a, nil } @@ -625,7 +637,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}} return a, nil } @@ -645,7 +657,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}} return a, nil } @@ -665,7 +677,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}} return a, nil } @@ -685,7 +697,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}} return a, nil } @@ -705,7 +717,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}} return a, nil } @@ -725,7 +737,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}} return a, nil } @@ -745,7 +757,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}} return a, nil } @@ -765,7 +777,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}} return a, nil } @@ -785,7 +797,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}} return a, nil } @@ -805,7 +817,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}} return a, nil } @@ -825,7 +837,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}} return a, nil } @@ -845,7 +857,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}} return a, nil } @@ -865,7 +877,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}} return a, nil } @@ -885,7 +897,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}} return a, nil } @@ -905,7 +917,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}} return a, nil } @@ -925,7 +937,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}} return a, nil } @@ -945,7 +957,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}} return a, nil } @@ -965,7 +977,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}} return a, nil } @@ -985,7 +997,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (* return nil, err } - info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}} return a, nil } @@ -1005,7 +1017,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}} return a, nil } @@ -1025,7 +1037,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}} return a, nil } @@ -1045,7 +1057,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}} return a, nil } @@ -1065,7 +1077,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}} return a, nil } @@ -1085,7 +1097,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}} return a, nil } @@ -1105,7 +1117,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}} return a, nil } @@ -1125,7 +1137,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}} return a, nil } @@ -1145,7 +1157,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}} return a, nil } @@ -1165,7 +1177,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}} return a, nil } @@ -1185,7 +1197,7 @@ func _1645034601_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}} return a, nil } @@ -1205,7 +1217,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}} return a, nil } @@ -1225,7 +1237,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}} return a, nil } @@ -1245,7 +1257,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}} return a, nil } @@ -1265,7 +1277,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}} return a, nil } @@ -1285,7 +1297,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}} return a, nil } @@ -1305,7 +1317,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}} return a, nil } @@ -1325,7 +1337,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}} return a, nil } @@ -1345,7 +1357,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}} return a, nil } @@ -1365,7 +1377,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}} return a, nil } @@ -1385,7 +1397,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}} return a, nil } @@ -1405,7 +1417,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}} return a, nil } @@ -1425,7 +1437,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}} return a, nil } @@ -1445,7 +1457,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}} return a, nil } @@ -1465,7 +1477,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}} return a, nil } @@ -1485,7 +1497,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}} return a, nil } @@ -1505,7 +1517,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}} return a, nil } @@ -1525,7 +1537,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}} return a, nil } @@ -1545,7 +1557,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}} return a, nil } @@ -1565,7 +1577,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}} return a, nil } @@ -1585,7 +1597,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}} return a, nil } @@ -1605,7 +1617,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}} return a, nil } @@ -1625,7 +1637,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}} return a, nil } @@ -1645,7 +1657,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}} return a, nil } @@ -1665,7 +1677,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}} return a, nil } @@ -1685,7 +1697,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}} return a, nil } @@ -1705,7 +1717,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql( return nil, err } - info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}} return a, nil } @@ -1725,7 +1737,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}} return a, nil } @@ -1745,7 +1757,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}} return a, nil } @@ -1765,7 +1777,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}} return a, nil } @@ -1785,7 +1797,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql( return nil, err } - info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}} return a, nil } @@ -1805,7 +1817,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}} return a, nil } @@ -1825,7 +1837,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}} return a, nil } @@ -1845,7 +1857,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}} return a, nil } @@ -1865,7 +1877,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}} return a, nil } @@ -1885,7 +1897,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}} return a, nil } @@ -1905,7 +1917,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}} return a, nil } @@ -1925,7 +1937,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}} return a, nil } @@ -1945,7 +1957,7 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}} return a, nil } @@ -1965,7 +1977,7 @@ func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}} return a, nil } @@ -1985,7 +1997,7 @@ func _1684175608_add_token_balancesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}} return a, nil } @@ -2005,7 +2017,7 @@ func _1684979808_sync_activity_center_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}} return a, nil } @@ -2025,7 +2037,7 @@ func _1685383829_add_communities_mute_tillUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}} return a, nil } @@ -2045,7 +2057,7 @@ func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}} return a, nil } @@ -2065,7 +2077,7 @@ func _1687370421_add_communities_muted_till_newUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}} return a, nil } @@ -2085,7 +2097,7 @@ func _1687416607_add_communities_check_channel_permission_responses_tableUpSql() return nil, err } - info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}} return a, nil } @@ -2105,7 +2117,7 @@ func _1687856939_add_community_tokens_decimalsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}} return a, nil } @@ -2125,7 +2137,7 @@ func _1687959987_modify_community_tokens_supply_as_stringUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}} return a, nil } @@ -2145,7 +2157,7 @@ func _1689258900_add_airdrop_address_to_revealed_addressesUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}} return a, nil } @@ -2165,7 +2177,7 @@ func _1689266326_create_communities_events_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}} return a, nil } @@ -2185,7 +2197,7 @@ func _1689931300_add_community_tokens_deployer_and_priv_levelUpSql() (*asset, er return nil, err } - info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}} return a, nil } @@ -2205,7 +2217,7 @@ func _1693311881_add_unfurled_links_to_message_editsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xc7, 0x7c, 0xe4, 0x80, 0x6f, 0xf8, 0x96, 0xb, 0x37, 0xff, 0xa2, 0xab, 0x1c, 0xbd, 0x25, 0x8d, 0x1e, 0x9a, 0x65, 0xe9, 0x45, 0xaf, 0x7f, 0x77, 0x84, 0x1b, 0x10, 0x1b, 0x1a, 0x5, 0xcc}} return a, nil } @@ -2225,7 +2237,7 @@ func _1693311981_community_shardUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1693311981_community_shard.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1693311981_community_shard.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x12, 0xf9, 0xde, 0x49, 0x9f, 0x95, 0xaa, 0x22, 0x5e, 0x54, 0x5a, 0x1, 0xd, 0xc6, 0x1f, 0x42, 0x93, 0xe8, 0x69, 0x30, 0x11, 0x69, 0x41, 0x7f, 0x87, 0x57, 0x56, 0x2a, 0x32, 0xb9, 0x3e}} return a, nil } @@ -2245,7 +2257,7 @@ func _1695331492_add_status_link_previewsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1695331492_add_status_link_previews.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1695331492_add_status_link_previews.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0x7d, 0x6e, 0x86, 0xf0, 0xf8, 0x23, 0x4b, 0x16, 0x3d, 0xca, 0x8f, 0xfc, 0x8, 0x22, 0xd5, 0x70, 0x14, 0xbb, 0xdd, 0xa9, 0xb8, 0x3e, 0xc6, 0x20, 0xfb, 0x0, 0x26, 0x73, 0xcb, 0x92, 0xb2}} return a, nil } @@ -2265,7 +2277,7 @@ func _1695918296_add_validated_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1695918296_add_validated_at.up.sql", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1695918296_add_validated_at.up.sql", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0x48, 0xa7, 0xd5, 0xb, 0xbb, 0x23, 0xfd, 0x40, 0x49, 0x33, 0x1b, 0x5c, 0xb3, 0x5b, 0x7a, 0xd8, 0xed, 0x5, 0xd, 0xb4, 0x91, 0xa3, 0x37, 0xaf, 0xaf, 0xc6, 0xa1, 0x13, 0xeb, 0x56, 0x1d}} return a, nil } @@ -2285,7 +2297,7 @@ func _1697699419_community_control_node_syncUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1697699419_community_control_node_sync.up.sql", size: 435, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1697699419_community_control_node_sync.up.sql", size: 435, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xd6, 0x63, 0x10, 0x1b, 0x16, 0x35, 0x57, 0xf1, 0x4a, 0x4, 0x51, 0xe0, 0x1, 0xe1, 0xfc, 0x12, 0x3a, 0x10, 0x4f, 0xb1, 0x96, 0x53, 0x2, 0xf5, 0x66, 0x7b, 0xe0, 0x8a, 0xdf, 0x78, 0x53}} return a, nil } @@ -2305,7 +2317,7 @@ func _1698137561_add_profile_showcase_tablesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698137561_add_profile_showcase_tables.up.sql", size: 440, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1698137561_add_profile_showcase_tables.up.sql", size: 440, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0xef, 0x89, 0x68, 0x42, 0xbf, 0xff, 0xb9, 0x8f, 0x8f, 0x19, 0x91, 0xd2, 0x6a, 0x85, 0xda, 0x2c, 0x63, 0x5f, 0x3c, 0x84, 0x4, 0x93, 0x16, 0x10, 0xf0, 0xe0, 0xd9, 0x9b, 0xbe, 0x8d, 0x62}} return a, nil } @@ -2325,7 +2337,7 @@ func _1698137562_fix_encryption_key_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698137562_fix_encryption_key_id.up.sql", size: 758, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1698137562_fix_encryption_key_id.up.sql", size: 758, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0x61, 0x1b, 0x6a, 0xb1, 0x44, 0x8d, 0x47, 0xde, 0x55, 0x45, 0x77, 0x8e, 0x4f, 0xb, 0x6a, 0x7f, 0x83, 0x56, 0x9c, 0x80, 0xc0, 0xae, 0xda, 0xd8, 0xaf, 0x7e, 0x2b, 0xb4, 0x5e, 0xc3, 0x63}} return a, nil } @@ -2345,7 +2357,7 @@ func _1698414646_add_paddingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698414646_add_padding.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1698414646_add_padding.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x48, 0x8e, 0x18, 0x1b, 0x81, 0x78, 0xab, 0x42, 0xcb, 0x11, 0xf5, 0xe, 0x44, 0xd4, 0x35, 0x33, 0x4e, 0x8, 0x6f, 0x14, 0x90, 0xe6, 0x2b, 0x59, 0xee, 0x87, 0xb, 0x96, 0x62, 0x3, 0x45}} return a, nil } @@ -2365,7 +2377,7 @@ func _1698746210_add_signature_to_revealed_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698746210_add_signature_to_revealed_addresses.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1698746210_add_signature_to_revealed_addresses.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x64, 0xef, 0xe7, 0x5d, 0x82, 0x3e, 0x7d, 0x5a, 0x34, 0xd2, 0xa, 0x5c, 0x48, 0xef, 0x40, 0xb4, 0x7d, 0x78, 0xc8, 0x11, 0xbc, 0xf3, 0xc5, 0x1d, 0xd5, 0xe9, 0x39, 0xd9, 0xfa, 0xc8, 0x27}} return a, nil } @@ -2385,7 +2397,7 @@ func _1699041816_profile_showcase_contactsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1699041816_profile_showcase_contacts.up.sql", size: 2206, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1699041816_profile_showcase_contacts.up.sql", size: 2206, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x7b, 0x55, 0xda, 0x93, 0x4a, 0x92, 0xf8, 0x45, 0xb2, 0x9f, 0x32, 0xf4, 0x37, 0xc, 0x5f, 0x62, 0xba, 0x33, 0xe2, 0x5c, 0x91, 0x1c, 0xc, 0x7, 0x9, 0xc2, 0x27, 0x5, 0x90, 0x94, 0xf3}} return a, nil } @@ -2405,7 +2417,7 @@ func _1699554099_message_segmentsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1699554099_message_segments.up.sql", size: 426, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1699554099_message_segments.up.sql", size: 426, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0xca, 0xd, 0xfa, 0xfa, 0x17, 0xef, 0x7e, 0x24, 0xf9, 0x28, 0xbd, 0x39, 0x75, 0xff, 0x34, 0x31, 0x27, 0x58, 0x3c, 0x17, 0x77, 0xfd, 0xc2, 0x66, 0x47, 0x63, 0x58, 0x3e, 0xb3, 0x88, 0x1a}} return a, nil } @@ -2425,7 +2437,7 @@ func _1700044186_message_segments_timestampUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700044186_message_segments_timestamp.up.sql", size: 322, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1700044186_message_segments_timestamp.up.sql", size: 322, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0x4e, 0x7, 0x86, 0x71, 0xc8, 0x1f, 0x2f, 0xf4, 0xbc, 0xc5, 0xc4, 0x37, 0x56, 0xa1, 0x47, 0xd9, 0xc9, 0xfd, 0xdf, 0x9a, 0x48, 0x1d, 0xfd, 0xb4, 0xeb, 0xb6, 0xb1, 0xc2, 0x73, 0x11, 0x19}} return a, nil } @@ -2445,7 +2457,7 @@ func _1700044187_curated_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700044187_curated_communities.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1700044187_curated_communities.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xf1, 0xf1, 0x57, 0xb5, 0x83, 0xad, 0x9d, 0x9b, 0xf, 0x49, 0xe, 0x3d, 0xa5, 0xf6, 0xf5, 0x9c, 0x7f, 0xb3, 0xf7, 0x22, 0x43, 0x8a, 0xa0, 0x49, 0xfa, 0xcc, 0x9b, 0xea, 0xac, 0xc0, 0xb9}} return a, nil } @@ -2465,7 +2477,7 @@ func _1700820989_add_resend_automatically_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700820989_add_resend_automatically_index.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1700820989_add_resend_automatically_index.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x6a, 0xd4, 0xd2, 0x34, 0xa7, 0x68, 0xaa, 0xe5, 0x69, 0x9, 0xce, 0xcf, 0xcb, 0x13, 0x94, 0x9d, 0x3, 0x4c, 0x59, 0xac, 0x5f, 0x71, 0xb2, 0xe4, 0xda, 0x67, 0x42, 0xbe, 0xf2, 0x1d, 0xe8}} return a, nil } @@ -2485,7 +2497,7 @@ func _1702996953_add_communities_shards_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1702996953_add_communities_shards_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1702996953_add_communities_shards_table.up.sql", size: 208, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x40, 0x38, 0xcb, 0x1e, 0x85, 0x1, 0x6b, 0xe6, 0xe9, 0xf0, 0xf9, 0xe6, 0x6d, 0x23, 0x4d, 0xe6, 0x12, 0x61, 0xc8, 0x12, 0x25, 0x31, 0x39, 0x7d, 0x40, 0xad, 0x64, 0xfa, 0xf1, 0x87, 0x86}} return a, nil } @@ -2505,7 +2517,7 @@ func _1704489636_add_album_imagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1704489636_add_album_images.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1704489636_add_album_images.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x28, 0x82, 0xf2, 0x12, 0x94, 0xb, 0x1b, 0x9f, 0x3f, 0xbf, 0x41, 0x96, 0x29, 0x63, 0x5e, 0x28, 0x4c, 0x9d, 0xd2, 0x26, 0xc9, 0x52, 0x4a, 0x19, 0x80, 0x10, 0xac, 0x1a, 0x51, 0x96, 0xe6, 0xa2}} return a, nil } @@ -2525,7 +2537,7 @@ func _1704821941_add_joined_at_for_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1704821941_add_joined_at_for_community.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1704988411, 0)} + info := bindataFileInfo{name: "1704821941_add_joined_at_for_community.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x87, 0xa1, 0xca, 0xbe, 0x8e, 0xd1, 0xd5, 0xf, 0xe3, 0x4, 0x7, 0xdd, 0x62, 0x47, 0xc3, 0x90, 0xfb, 0x3, 0xb8, 0x48, 0x35, 0xc9, 0xc9, 0xe0, 0xe3, 0xb7, 0x36, 0x9f, 0xb8, 0x61, 0x1e, 0x18}} return a, nil } @@ -2545,7 +2557,7 @@ func _1704832511_add_last_opened_at_for_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1704832511_add_last_opened_at_for_communities.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1705923883, 0)} + info := bindataFileInfo{name: "1704832511_add_last_opened_at_for_communities.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa7, 0x73, 0x6, 0x6f, 0xa5, 0xc5, 0x5b, 0x5a, 0xf7, 0xf3, 0xb3, 0x28, 0x27, 0x61, 0x28, 0x2c, 0x6a, 0x1, 0x93, 0x14, 0x5b, 0xc0, 0xe8, 0xb5, 0xf6, 0xbf, 0x9f, 0xfb, 0x20, 0x7c, 0xd9, 0x54}} return a, nil } @@ -2565,7 +2577,7 @@ func _1704832512_add_peersyncingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1704832512_add_peersyncing.up.sql", size: 276, mode: os.FileMode(0644), modTime: time.Unix(1706021756, 0)} + info := bindataFileInfo{name: "1704832512_add_peersyncing.up.sql", size: 276, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xfc, 0x4c, 0x13, 0x67, 0xfb, 0x26, 0x58, 0xd3, 0x7f, 0x72, 0xd0, 0xe7, 0xd7, 0x28, 0x41, 0xa8, 0xa3, 0xf3, 0x9f, 0x1, 0x4c, 0xdd, 0xb6, 0x7b, 0xa4, 0x2a, 0x27, 0xb2, 0x31, 0xb1, 0x30}} return a, nil } @@ -2585,7 +2597,7 @@ func _1706028033_profile_showcase_address_and_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1706028033_profile_showcase_address_and_community.up.sql", size: 2420, mode: os.FileMode(0644), modTime: time.Unix(1706279715, 0)} + info := bindataFileInfo{name: "1706028033_profile_showcase_address_and_community.up.sql", size: 2420, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x8e, 0xc2, 0xbf, 0x32, 0x2d, 0x27, 0x4a, 0x83, 0xfc, 0x4c, 0xb5, 0x9b, 0x45, 0x12, 0xf0, 0xfc, 0x65, 0x36, 0xe0, 0x3c, 0x78, 0xd1, 0xdd, 0xd3, 0xfb, 0x44, 0x14, 0x20, 0x3, 0x3e, 0xcf}} return a, nil } @@ -2605,11 +2617,231 @@ func _1706520870_add_bridge_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1706520870_add_bridge_messages_table.up.sql", size: 389, mode: os.FileMode(0644), modTime: time.Unix(1706640492, 0)} + info := bindataFileInfo{name: "1706520870_add_bridge_messages_table.up.sql", size: 389, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe4, 0xd8, 0xaa, 0x58, 0x51, 0xae, 0x28, 0x95, 0x4, 0x3e, 0xd, 0x9c, 0x73, 0xec, 0xe8, 0x84, 0xd, 0x77, 0xdf, 0x8f, 0xb0, 0x1a, 0xfe, 0xef, 0xfc, 0x5b, 0xe1, 0xe9, 0xc2, 0xc1, 0xe7, 0x73}} return a, nil } +var __1706520871_add_community_description_cacheUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x91\xb1\x6e\x83\x30\x10\x86\x77\x3f\xc5\x8d\x20\x31\x56\x5d\x98\x8c\x39\x2a\xab\xd4\x4e\x8d\x91\xc8\x64\x45\xc6\x6a\x2d\x0a\x44\x81\x0e\xbc\x7d\x45\x89\x1a\x2a\x3a\xa4\x89\x37\xdf\xfd\x3a\x7d\xf7\x1d\x53\x48\x35\x82\xa6\x49\x8e\xc0\x33\x10\x52\x03\x56\xbc\xd0\x05\xb8\xce\x9e\xa6\xe3\xe8\x6a\x63\xfb\xb6\xfd\xec\xfc\x38\x99\xda\x0d\xf6\xe4\x8f\xa3\xef\x3b\x63\x0f\xf6\xdd\x41\x40\x00\x2e\x7d\x5f\x83\xc6\x4a\xc3\x4e\xf1\x17\xaa\xf6\xf0\x8c\xfb\x68\x0e\x7c\xf4\xb6\x81\x92\x0b\xfd\xf8\x30\xff\x57\x63\x20\xc9\x65\x32\xd7\x4a\xc1\x5f\x4b\x0c\xd6\xb3\x42\x90\x02\x98\x14\x59\xce\x99\x06\x85\xbb\x9c\x32\x24\x00\x61\x4c\xc8\x1d\xe0\xad\x1f\x06\xdf\xbd\x99\xc6\x4d\xc3\x37\xff\xf2\x36\x5b\x44\x3f\xad\xc6\xfd\x51\x5c\xed\x08\xbf\xb0\xa3\x73\x3e\xbc\x64\x33\xa9\x90\x3f\x89\x6d\x36\x04\x85\x19\x2a\x14\x0c\xaf\x34\xbe\x35\x94\x62\x8e\x1a\x81\xd1\x82\xd1\x14\xc9\xca\x0e\x17\x29\x56\xff\xb4\xe3\x6b\x73\xe8\x6a\xb3\x9c\x4c\x8a\x1b\xa0\xa2\xe5\xde\x61\x7c\x0f\xc6\xa2\x70\xb8\x86\x60\x7d\xcf\xe0\xac\x3e\x26\x5f\x01\x00\x00\xff\xff\x71\xc3\x1d\x10\xda\x02\x00\x00") + +func _1706520871_add_community_description_cacheUpSqlBytes() ([]byte, error) { + return bindataRead( + __1706520871_add_community_description_cacheUpSql, + "1706520871_add_community_description_cache.up.sql", + ) +} + +func _1706520871_add_community_description_cacheUpSql() (*asset, error) { + bytes, err := _1706520871_add_community_description_cacheUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1706520871_add_community_description_cache.up.sql", size: 730, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xe4, 0x66, 0xd6, 0x9d, 0xb8, 0x87, 0x6e, 0x70, 0xfd, 0x78, 0xa, 0x8c, 0xfb, 0xb2, 0xbc, 0xc4, 0x8c, 0x8d, 0x77, 0xc2, 0xf, 0xe1, 0x68, 0xf3, 0xd6, 0xf3, 0xb0, 0x42, 0x86, 0x3f, 0xf4}} + return a, nil +} + +var __1707749393_add_community_grantsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\x0e\x72\x75\x0c\x71\x55\x08\x71\x74\xf2\x71\x55\xf0\x74\x53\xf0\xf3\x0f\x51\x70\x8d\xf0\x0c\x0e\x09\x56\x48\xce\xcf\xcd\x2d\xcd\xcb\x2c\xa9\x8c\x4f\x2f\x4a\xcc\x2b\x29\x56\xd0\xe0\x52\x40\x12\xcc\x4c\x51\x08\x71\x8d\x08\x51\x08\x08\xf2\xf4\x75\x0c\x8a\x54\xf0\x76\x8d\x04\xeb\xf6\x0b\xf5\xf1\xd1\xe1\x52\x50\x00\x6b\x82\x28\x71\x71\x75\x73\x0c\xf5\x09\x51\x50\x52\x02\x49\x24\xe7\xe4\x27\x67\x2b\x78\xfa\x85\xc0\x95\xc3\x15\x18\x70\x69\x5a\x73\x01\x02\x00\x00\xff\xff\x3e\x6f\x1c\xa5\x93\x00\x00\x00") + +func _1707749393_add_community_grantsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1707749393_add_community_grantsUpSql, + "1707749393_add_community_grants.up.sql", + ) +} + +func _1707749393_add_community_grantsUpSql() (*asset, error) { + bytes, err := _1707749393_add_community_grantsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1707749393_add_community_grants.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0xd9, 0xbb, 0x31, 0xf4, 0xb7, 0xbd, 0x1f, 0x57, 0x5b, 0x40, 0x28, 0xed, 0xf7, 0x2c, 0xb3, 0xf, 0xcc, 0x50, 0x7f, 0x2c, 0x74, 0xe1, 0x19, 0x7c, 0xa0, 0xec, 0xfc, 0xb7, 0xbe, 0x1e, 0xbc}} + return a, nil +} + +var __1707841194_add_profile_showcase_preferencesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\x0e\x72\x75\x0c\x71\x55\x08\x71\x74\xf2\x71\x55\x28\x28\xca\x4f\xcb\xcc\x49\x8d\x2f\xce\xc8\x2f\x4f\x4e\x2c\x4e\x8d\x2f\x28\x4a\x4d\x4b\x2d\x4a\xcd\x4b\x4e\x2d\x56\xd0\xe0\x52\x50\x50\x50\x48\xce\xc9\x4f\xce\x56\xf0\xf4\x0b\x51\x70\x71\x75\x73\x0c\xf5\x09\x51\x30\xe0\xd2\xb4\xe6\xe2\xf2\xf4\x0b\x76\x0d\x0a\x01\x49\xf8\x13\x30\x06\x6c\x82\xa6\x42\x98\xa3\x4f\xa8\x6b\xb0\x82\x86\x81\xa6\x35\x20\x00\x00\xff\xff\x2d\x8d\x56\xab\x84\x00\x00\x00") + +func _1707841194_add_profile_showcase_preferencesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1707841194_add_profile_showcase_preferencesUpSql, + "1707841194_add_profile_showcase_preferences.up.sql", + ) +} + +func _1707841194_add_profile_showcase_preferencesUpSql() (*asset, error) { + bytes, err := _1707841194_add_profile_showcase_preferencesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1707841194_add_profile_showcase_preferences.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa4, 0x3b, 0x28, 0x2f, 0xd9, 0x3f, 0xe6, 0xe6, 0x22, 0xc7, 0x3, 0xcc, 0x4a, 0xc8, 0xc1, 0x8c, 0x32, 0xd5, 0x15, 0xc2, 0xaf, 0xf9, 0x2f, 0x2c, 0xaf, 0xab, 0xc4, 0xaf, 0x29, 0x8a, 0x33, 0x69}} + return a, nil +} + +var __1708062699_activity_dataUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\x51\x0a\xc3\x20\x0c\x06\xe0\xab\xfc\xf7\xd8\x53\x9c\xee\x29\x53\x18\xfa\x2c\xc1\x59\x08\x85\x08\x6d\x28\xf4\xf6\xfd\x88\x6b\xfa\xa1\x52\xe0\x04\x19\xae\x97\xfa\xdd\xc7\x34\x9f\x47\xb7\xe5\xba\xe9\x10\xd7\x65\x27\x28\x46\xbc\x0b\xb7\x6f\x86\xaf\x7d\x5a\xff\x8b\x0b\x02\x97\x80\x98\x3e\xd4\xb8\x22\x37\xe6\xd7\x13\x00\x00\xff\xff\xe1\x59\x5a\x05\x52\x00\x00\x00") + +func _1708062699_activity_dataUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708062699_activity_dataUpSql, + "1708062699_activity_data.up.sql", + ) +} + +func _1708062699_activity_dataUpSql() (*asset, error) { + bytes, err := _1708062699_activity_dataUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708062699_activity_data.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8c, 0xfa, 0x24, 0x80, 0xea, 0xb0, 0xb, 0x50, 0xce, 0x10, 0xc9, 0x6c, 0x6f, 0xd4, 0x29, 0xe, 0xb, 0xe2, 0xa1, 0x70, 0x46, 0x2, 0x66, 0x40, 0x33, 0xb3, 0x4c, 0x6d, 0x82, 0x1f, 0xdf, 0x9}} + return a, nil +} + +var __1708423707_applied_community_eventsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\xcd\xcd\x0a\x83\x30\x10\x04\xe0\xbb\x4f\x31\x47\x05\xdf\xa0\xa7\x34\x5d\x41\xba\x8d\x12\x56\xa8\x27\x29\x9a\x43\xa8\x3f\x81\xa6\x05\xdf\xbe\xe0\xa1\xb5\xbd\xee\x7e\x33\xa3\x2d\x29\x21\x88\x3a\x32\xe1\x16\xc2\xe8\xdd\xd0\xf5\xcb\x34\x3d\x67\x1f\xd7\xce\xbd\xdc\x1c\x1f\x48\x13\x00\xf8\x9e\xfd\x00\xa1\xab\xc0\x54\x02\xd3\x30\xe7\xdb\x7f\xc3\x5d\x5c\x83\xfb\x80\x13\x15\xaa\xe1\x3d\xea\xc7\xa5\xbf\xa3\x34\xff\xe1\xda\x96\x17\x65\x5b\x9c\xa9\x45\xba\x5f\xca\x7f\x7b\x33\x54\x06\xba\x32\x05\x97\x5a\x60\xa9\x66\xa5\x29\xc9\x0e\xef\x00\x00\x00\xff\xff\x3c\x32\x66\x2a\xc9\x00\x00\x00") + +func _1708423707_applied_community_eventsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708423707_applied_community_eventsUpSql, + "1708423707_applied_community_events.up.sql", + ) +} + +func _1708423707_applied_community_eventsUpSql() (*asset, error) { + bytes, err := _1708423707_applied_community_eventsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708423707_applied_community_events.up.sql", size: 201, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x58, 0x5b, 0x9b, 0xed, 0x69, 0x1b, 0xf9, 0x11, 0xb8, 0xa3, 0x85, 0x97, 0xd, 0xe7, 0x2d, 0x44, 0xf2, 0x61, 0x51, 0x92, 0x1b, 0x13, 0x64, 0xb6, 0x75, 0x4c, 0x2b, 0x2f, 0xd4, 0x97, 0x39, 0x29}} + return a, nil +} + +var __1708440786_profile_showcase_social_linksUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x92\xc1\x8e\xda\x30\x18\x84\xef\x79\x8a\x39\x26\x52\x90\xb8\x23\x55\x4a\x83\x11\x11\x21\xa9\x82\xa9\xe0\x14\x85\xf0\x03\x56\x5d\x3b\xb2\x4d\x81\xb7\xaf\x12\x68\x03\xbb\xab\x15\x9c\xf6\xfc\xcf\x78\x3c\x9f\xc6\x1b\x0c\x10\x1b\xaa\x1c\xc1\x55\x1b\x49\x16\x3b\x6d\x60\x9d\x36\x42\xed\x61\x75\x2d\x2a\x09\x29\xd4\x2f\x0b\xa1\xe0\x0e\x84\xc6\xe8\xad\x90\x04\x7b\xd0\xa7\xba\xb2\xe4\xc5\x05\x8b\x38\x03\x8f\xbe\xa7\xac\xbd\xee\x84\xa4\xf2\xdf\xb5\xbc\x3e\x51\x76\x4f\x94\x8d\xa1\x1d\x19\x52\x35\x59\xf8\x1e\x00\x1c\x8d\xc4\xcf\xa8\x88\xa7\x51\x81\x2c\xe7\xc8\x96\x69\x8a\x78\xca\xe2\x19\x7c\x49\x6a\xef\x0e\xbe\x33\xe2\xb7\x7f\x34\x32\x08\xf0\x0d\xc3\x20\xec\x7c\x8e\xce\xee\x29\x63\x2b\x7c\x70\xfe\x11\x56\x6c\x84\x14\xee\x82\x24\xe3\xbd\x77\xcc\x26\xd1\x32\xe5\x18\x5e\x65\x56\x1b\x57\x6a\xb3\x25\xd3\xc9\xde\x5c\x7f\x14\xc9\x3c\x2a\xd6\x98\xb1\x35\xba\x88\xb0\x6d\x12\x78\xc1\xc8\x7b\x85\x47\xad\x95\xab\x6a\xf7\x75\x30\x3e\x6f\x79\xfb\x5e\x29\xb6\xe0\x6c\xd5\xb3\xfa\x80\x41\x2f\x0d\xf1\xc8\xe3\x86\x23\xc9\xc6\x6c\xf5\x1c\x8e\x36\x2f\xcf\x9e\x46\xd7\xbb\x5a\xfa\xed\x9e\x75\x73\x01\x9d\x85\x75\xef\x36\xec\x34\x2a\x28\x3a\x5d\xc7\xee\x25\xd9\x82\x15\xbc\xad\x9e\xbf\xb2\xdc\xff\x05\xc3\x3b\x80\x41\x07\x65\xc1\x52\x16\x73\xdc\x29\x1a\x6d\x85\x13\x5a\x75\xe7\x49\x91\xcf\xfb\xa4\xbb\x80\x91\xf7\x37\x00\x00\xff\xff\xef\x9a\xe8\xfb\x8a\x03\x00\x00") + +func _1708440786_profile_showcase_social_linksUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708440786_profile_showcase_social_linksUpSql, + "1708440786_profile_showcase_social_links.up.sql", + ) +} + +func _1708440786_profile_showcase_social_linksUpSql() (*asset, error) { + bytes, err := _1708440786_profile_showcase_social_linksUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708440786_profile_showcase_social_links.up.sql", size: 906, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe4, 0xa2, 0xd6, 0x49, 0x3e, 0x3d, 0xc8, 0xe1, 0x75, 0x75, 0x36, 0x1e, 0x8a, 0xb1, 0xaf, 0xd3, 0xd8, 0xc7, 0x77, 0xe8, 0x8, 0xdb, 0xd9, 0x2c, 0x8e, 0x1e, 0xa, 0x7c, 0xda, 0x37, 0xf5}} + return a, nil +} + +var __1709805967_simplify_profile_showcase_preferencesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xcf\x41\xae\x82\x30\x14\x46\xe1\x39\xab\xe8\x3e\x18\xf1\x9e\xcc\x50\x0c\xc1\x71\x53\x6f\x7f\x62\xb5\xbd\x97\xb4\x45\xe3\xee\x9d\x38\x34\x80\xc1\x0d\x9c\x7c\xa7\xa8\x9a\xbe\xee\x54\x5f\xfd\x35\xb5\x1a\xa3\x0c\xce\x43\xa7\x8b\x3c\xc8\x24\x68\x43\x24\x13\xe7\xa4\xc7\x88\x01\x11\x4c\x48\x6a\xd7\xb5\x47\xf5\xdf\x36\xa7\xfd\x41\xb1\x09\x28\x37\x36\x48\xbc\x44\xed\xec\xd6\x0e\x82\x5c\x5d\x59\xcc\x57\x48\xbc\x07\x65\x77\xf6\x98\x13\x85\x30\xb1\xcb\xcf\x65\xd5\xaa\xde\x9b\xae\x8d\xb5\x11\x29\x2d\x19\x27\xbe\x23\xba\xc1\xc1\xea\x2c\x37\xf0\x5a\xe8\x17\x52\x12\xce\x86\xf2\x6f\xb6\x3f\xc6\x36\x3f\xaf\x20\xbe\x02\x00\x00\xff\xff\xf4\xeb\xf5\x93\xbd\x02\x00\x00") + +func _1709805967_simplify_profile_showcase_preferencesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1709805967_simplify_profile_showcase_preferencesUpSql, + "1709805967_simplify_profile_showcase_preferences.up.sql", + ) +} + +func _1709805967_simplify_profile_showcase_preferencesUpSql() (*asset, error) { + bytes, err := _1709805967_simplify_profile_showcase_preferencesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1709805967_simplify_profile_showcase_preferences.up.sql", size: 701, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xdc, 0xce, 0x1d, 0x56, 0x57, 0xf4, 0xa5, 0xc8, 0x15, 0x89, 0x92, 0xbf, 0x57, 0x5a, 0xbc, 0x37, 0x9e, 0xf0, 0xe4, 0x7a, 0x2c, 0x19, 0xd0, 0x3e, 0xca, 0xd0, 0xab, 0x2d, 0x8f, 0xe3, 0x16}} + return a, nil +} + +var __1709828431_add_community_description_cacheUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x91\xb1\x6e\x83\x30\x10\x86\x77\x3f\xc5\x8d\x20\x31\x56\x5d\x98\x8c\x39\x2a\xab\xd4\x4e\x8d\x91\xc8\x64\x45\xc6\x6a\x2d\x0a\x44\x81\x0e\xbc\x7d\x45\x89\x1a\x2a\x3a\xa4\x89\x37\xdf\xfd\x3a\x7d\xf7\x1d\x53\x48\x35\x82\xa6\x49\x8e\xc0\x33\x10\x52\x03\x56\xbc\xd0\x05\xb8\xce\x9e\xa6\xe3\xe8\x6a\x63\xfb\xb6\xfd\xec\xfc\x38\x99\xda\x0d\xf6\xe4\x8f\xa3\xef\x3b\x63\x0f\xf6\xdd\x41\x40\x00\x2e\x7d\x5f\x83\xc6\x4a\xc3\x4e\xf1\x17\xaa\xf6\xf0\x8c\xfb\x68\x0e\x7c\xf4\xb6\x81\x92\x0b\xfd\xf8\x30\xff\x57\x63\x20\xc9\x65\x32\xd7\x4a\xc1\x5f\x4b\x0c\xd6\xb3\x42\x90\x02\x98\x14\x59\xce\x99\x06\x85\xbb\x9c\x32\x24\x00\x61\x4c\xc8\x1d\xe0\xad\x1f\x06\xdf\xbd\x99\xc6\x4d\xc3\x37\xff\xf2\x36\x5b\x44\x3f\xad\xc6\xfd\x51\x5c\xed\x08\xbf\xb0\xa3\x73\x3e\xbc\x64\x33\xa9\x90\x3f\x89\x6d\x36\x04\x85\x19\x2a\x14\x0c\xaf\x34\xbe\x35\x94\x62\x8e\x1a\x81\xd1\x82\xd1\x14\xc9\xca\x0e\x17\x29\x56\xff\xb4\xe3\x6b\x73\xe8\x6a\xb3\x9c\x4c\x8a\x1b\xa0\xa2\xe5\xde\x61\x7c\x0f\xc6\xa2\x70\xb8\x86\x60\x7d\xcf\xe0\xac\x3e\x26\x5f\x01\x00\x00\xff\xff\x71\xc3\x1d\x10\xda\x02\x00\x00") + +func _1709828431_add_community_description_cacheUpSqlBytes() ([]byte, error) { + return bindataRead( + __1709828431_add_community_description_cacheUpSql, + "1709828431_add_community_description_cache.up.sql", + ) +} + +func _1709828431_add_community_description_cacheUpSql() (*asset, error) { + bytes, err := _1709828431_add_community_description_cacheUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1709828431_add_community_description_cache.up.sql", size: 730, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xe4, 0x66, 0xd6, 0x9d, 0xb8, 0x87, 0x6e, 0x70, 0xfd, 0x78, 0xa, 0x8c, 0xfb, 0xb2, 0xbc, 0xc4, 0x8c, 0x8d, 0x77, 0xc2, 0xf, 0xe1, 0x68, 0xf3, 0xd6, 0xf3, 0xb0, 0x42, 0x86, 0x3f, 0xf4}} + return a, nil +} + +var __1710331283_add_bio_to_contactsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\xce\xcf\x2b\x49\x4c\x2e\x29\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\xca\xcc\x57\x08\x71\x8d\x08\xb1\xe6\x02\x04\x00\x00\xff\xff\xb8\x6b\x6f\x26\x2a\x00\x00\x00") + +func _1710331283_add_bio_to_contactsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1710331283_add_bio_to_contactsUpSql, + "1710331283_add_bio_to_contacts.up.sql", + ) +} + +func _1710331283_add_bio_to_contactsUpSql() (*asset, error) { + bytes, err := _1710331283_add_bio_to_contactsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1710331283_add_bio_to_contacts.up.sql", size: 42, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0xe8, 0x4b, 0xa8, 0xd9, 0xa0, 0xc4, 0xd, 0x3d, 0x15, 0x3a, 0xc8, 0x98, 0x33, 0xb2, 0x8b, 0x4c, 0x0, 0xad, 0xfc, 0x92, 0x51, 0xeb, 0xf5, 0x1, 0xd2, 0x15, 0x8f, 0xc9, 0x79, 0x8e, 0x81}} + return a, nil +} + +var __1710331284_hash_ratchet_encrypted_messages_key_idUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\x0e\x72\x75\x0c\x71\x55\xf0\xf4\x73\x71\x8d\x50\xf0\x74\x53\xf0\xf3\x0f\x51\x70\x8d\xf0\x0c\x0e\x09\x56\xc8\x48\x2c\xce\x88\x2f\x4a\x2c\x49\xce\x48\x2d\x89\x4f\xcd\x4b\x2e\xaa\x2c\x28\x49\x4d\x89\xcf\x4d\x2d\x2e\x4e\x4c\x4f\x2d\x8e\xcf\x4e\xad\x8c\xcf\x4c\x51\xf0\xf7\x23\xa4\x52\x41\x03\xa2\x54\xd3\x9a\x0b\x10\x00\x00\xff\xff\x0e\x85\x79\x48\x6f\x00\x00\x00") + +func _1710331284_hash_ratchet_encrypted_messages_key_idUpSqlBytes() ([]byte, error) { + return bindataRead( + __1710331284_hash_ratchet_encrypted_messages_key_idUpSql, + "1710331284_hash_ratchet_encrypted_messages_key_id.up.sql", + ) +} + +func _1710331284_hash_ratchet_encrypted_messages_key_idUpSql() (*asset, error) { + bytes, err := _1710331284_hash_ratchet_encrypted_messages_key_idUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1710331284_hash_ratchet_encrypted_messages_key_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x8b, 0xfe, 0xb3, 0xa0, 0x73, 0x30, 0xe, 0x1a, 0xd5, 0x85, 0x3e, 0x22, 0xf9, 0xfe, 0x1, 0x5c, 0x5f, 0x9c, 0x26, 0x36, 0x9e, 0x11, 0x1c, 0x2b, 0x42, 0xa9, 0xcc, 0x9, 0x63, 0xe8, 0xff}} + return a, nil +} + +var __1711389881_add_profile_showcase_community_grantUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\x41\x0e\x02\x21\x0c\x05\xd0\xbd\xa7\xf8\xf7\x70\x55\x04\x57\x75\x26\x31\xb0\x26\xa4\x41\x25\x71\xa8\xa1\x35\x5e\xdf\x47\x9c\xd3\x1d\x99\x02\x27\x7c\x96\x3e\xc6\xbb\x57\x7b\xe9\x4f\x9a\xf5\x2a\x7a\x1c\xdf\x39\x7c\x74\xab\xa2\xd3\x9b\xb8\x81\x62\xc4\x65\xe7\x72\xdb\xf0\x5c\x6d\x3a\x02\xef\x01\x31\x5d\xa9\x70\xc6\x56\x98\xcf\xa7\x7f\x00\x00\x00\xff\xff\x50\x71\xc8\xa0\x56\x00\x00\x00") + +func _1711389881_add_profile_showcase_community_grantUpSqlBytes() ([]byte, error) { + return bindataRead( + __1711389881_add_profile_showcase_community_grantUpSql, + "1711389881_add_profile_showcase_community_grant.up.sql", + ) +} + +func _1711389881_add_profile_showcase_community_grantUpSql() (*asset, error) { + bytes, err := _1711389881_add_profile_showcase_community_grantUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1711389881_add_profile_showcase_community_grant.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x45, 0x39, 0x37, 0xf3, 0x6a, 0xb, 0xb8, 0x38, 0x8, 0xcb, 0x62, 0xe1, 0x5b, 0xf2, 0xc, 0x6c, 0xf2, 0xa3, 0x5c, 0xeb, 0x22, 0x4f, 0x6c, 0xe1, 0x56, 0xd1, 0xd1, 0x3, 0xf9, 0x6d, 0x5e, 0x69}} + return a, nil +} + var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00") func readmeMdBytes() ([]byte, error) { @@ -2625,12 +2857,12 @@ func readmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\x3f\x8f\xdb\x3e\x0c\xdd\xf3\x29\x1e\x6e\xb9\xe5\x22\x07\xf8\xfd\xa6\xdb\x3a\x74\xe8\xd2\x2e\xd9\x0b\x46\xa6\x6d\x22\x32\xe5\x8a\xf4\x39\xf9\xf6\x85\x74\x17\x9c\x51\x14\xe8\x4a\x89\x8f\xef\x5f\xd7\xe1\x3c\x89\x61\x90\xc4\x10\x83\x72\x64\x33\x2a\x77\x5c\x38\xd2\x6a\x8c\xa7\x51\x7c\x5a\x2f\x21\xe6\xb9\x33\x27\x5f\xed\x28\x73\x37\xcb\x58\xc8\xb9\x7b\xfb\xff\xe9\xd0\x75\x88\xa4\xcf\x8e\x89\xb4\x4f\xdc\xb0\x0c\xe6\x54\x5c\x74\xc4\x26\x3e\x81\xb0\x14\x1e\xe4\x16\xf0\xc5\x91\x98\xcc\xe1\x13\xf9\xb3\xc1\x27\x46\x24\xe3\x0a\x33\xe4\x82\x31\x1f\x2f\xa2\x3d\x39\x85\x3a\xfa\x36\xec\x26\x95\x61\xa4\x94\xb8\xc7\x50\xf2\xdc\x76\x8d\x66\x46\x2f\x85\xa3\xe7\x72\x7f\x01\x99\xb1\x43\x69\x66\xab\xfb\x13\xbd\x31\x34\x7f\x9c\x07\x69\xff\x6f\x45\xd8\x72\xb9\x1a\xc8\xc0\xb7\x85\xa3\x73\x1f\x0e\x15\xeb\xfb\x8f\xf3\xd7\x57\x9c\x27\xae\xf0\x55\x5a\x1e\x1a\x85\x66\x9e\x32\xf7\x06\xcf\x18\x72\x4a\x79\x6b\x0f\xab\xca\x0d\x2e\x33\x9b\xd3\xbc\x20\x66\x7d\x63\x75\xc9\x5a\xd1\x56\x4d\x72\xe5\xf6\xcf\xb7\x0c\x51\x71\xa1\xf4\xee\x5e\x93\x7e\x7e\x37\xe8\x11\x44\x5c\x4b\x61\xf5\x74\x6f\x2b\xac\xb1\xdc\x97\x8a\x85\x77\xe6\x92\xd5\x9a\xbc\xa5\x64\xcf\x31\xa7\xdd\xbc\xa2\xd9\x44\x85\x3f\x1d\x73\xba\x24\x7e\xc1\x36\x49\x9c\x30\x33\xa9\xb5\x40\xda\x87\x44\xce\xe6\x9f\xfb\x10\x85\x73\x99\xad\x0a\xae\xfc\xaa\xbb\x15\xb3\x16\xe7\x91\xc3\x8e\x50\x33\x7f\xa1\xf8\x51\x85\xc7\x95\xd5\xd8\x40\x7f\x98\xf2\x08\x79\x63\x50\xdf\xe3\x74\x3a\x9d\xfe\xfb\x19\x42\x68\x5d\xe0\x1b\xcd\x4b\xa5\xe9\xb5\xa3\x9b\xa4\x84\x0b\x43\x46\xcd\x85\xfb\xca\x8a\x6f\x62\xad\x64\x31\x09\xab\xd7\xcc\x2a\x5e\x4e\x3d\x97\xaa\x47\xf7\x7a\xfe\x66\x59\x38\x1c\x16\x8a\x57\x1a\x19\xf6\x2b\x89\x73\x0d\x7a\xcc\xaf\x23\x2b\xd7\x3a\xec\xcb\x77\x5c\xae\xe3\xde\xec\x63\x46\x08\xdd\xe7\x20\x8c\x19\xe1\xf0\x3b\x00\x00\xff\xff\x12\xcd\x7f\xc4\x52\x03\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x52\xbd\x6e\xdb\x40\x0c\xde\xfd\x14\x44\x96\x2c\xb1\xe4\xa2\x05\x0a\x04\xe8\xd0\xa1\x43\x97\x76\xf1\x5e\xd0\x27\x4a\x22\x7c\x47\xaa\x47\x2a\xb2\xdf\xbe\xe0\x25\x46\x8c\xa2\x40\x35\x52\xc7\x8f\xdf\x5f\xdf\xc3\x71\x66\x83\x91\x33\x01\x1b\x08\x25\x32\xc3\x7a\x85\x13\x25\x5c\x8d\xe0\x61\x62\x9f\xd7\x53\x97\xb4\xf4\xe6\xe8\xab\xed\xb9\xf4\x85\xa7\x8a\x4e\xfd\xcb\xa7\x87\x5d\xdf\x43\x42\x79\x74\x98\x51\x86\x4c\x0d\xcb\xc0\x1c\xab\xb3\x4c\xb0\xb1\xcf\x80\xb0\x54\x1a\xf9\xd2\xc1\x57\x87\x4c\x68\x0e\x3e\xa3\x3f\x1a\xf8\x4c\x90\xd0\x28\x60\x46\xad\x30\xe9\xfe\xc4\x32\xa0\x63\x17\xa3\xef\xe3\xdd\x24\x18\x26\xcc\x99\x06\x18\xab\x96\xb6\x6b\x58\x08\x06\xae\x94\x5c\xeb\xf5\x09\xd0\x8c\x1c\x04\x0b\x59\xec\xcf\xf8\x42\x20\xfa\x76\x1e\x50\x86\xff\x2b\x82\x4d\xeb\xd9\x00\x0d\xe8\xb2\x50\x72\x1a\xba\x5d\x60\xfd\xf8\x79\xfc\xf6\x0c\xc7\x99\x02\x3e\xa4\xe9\xd8\x28\x34\xf3\x84\x68\x30\x70\x85\x51\x73\xd6\xad\xfd\x58\x85\x2f\xe0\x5c\xc8\x1c\xcb\x02\x49\xe5\x85\xc4\x59\x25\xd0\x56\xc9\x7c\xa6\xf6\xce\x37\x05\x16\x76\xc6\xfc\xea\x5e\x93\x7e\x7c\x35\xe8\x16\x44\x5a\x6b\x25\xf1\x7c\x6d\x2b\x24\xa9\x5e\x97\xc0\x82\x57\xe6\xac\x62\x4d\xde\x52\xd5\x35\x69\xbe\x9b\x07\x9a\xcd\x58\xe9\xdd\x31\xc7\x53\xa6\x27\xd8\x66\x4e\x33\x14\x42\xb1\x16\x48\x7b\x90\xd1\xc9\xfc\x7d\x1f\x58\xc0\xa9\x16\x0b\xc1\xc1\x2f\xdc\x0d\xcc\x28\xce\x2d\x87\x3b\x42\xcd\xfc\x05\xd3\x5b\x15\x6e\x57\x56\x23\x03\xfc\xcb\x94\x5b\xc8\x1b\x01\x0e\x03\x1c\x0e\x87\xc3\xc7\x5f\x5d\xd7\xb5\x2e\xd0\x05\xcb\x12\x34\x3d\x3a\xba\x71\xce\x70\x22\xe0\x49\xb4\xd2\x10\xac\xe8\xc2\xd6\x4a\x96\x32\x93\x78\x64\x16\x78\x9a\x07\xaa\xa1\x47\xee\xf5\xfc\xcb\xb2\x6e\xb7\x5b\x30\x9d\x71\x22\xb0\xdf\x99\x9d\x22\xe8\x49\x9f\x27\x12\x8a\x3a\xdc\x97\x6f\x5f\x74\x08\xde\x5f\x3e\x7c\x3e\xbc\x7d\xb0\x5f\xce\xd3\x7d\x00\x7b\x85\xae\xeb\xdf\x07\xdd\xa4\xd0\xed\xfe\x04\x00\x00\xff\xff\x43\x00\xde\x4c\x66\x03\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -2645,8 +2877,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}} + info := bindataFileInfo{name: "doc.go", size: 870, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x64, 0x9a, 0x6c, 0x93, 0x57, 0xcc, 0xf2, 0xe0, 0xa7, 0x7d, 0xc3, 0x88, 0x1c, 0x88, 0xad, 0x8e, 0xb0, 0x16, 0x39, 0xda, 0x17, 0x1a, 0x2b, 0x9c, 0x6b, 0x3a, 0x3e, 0x2a, 0x3e, 0xae, 0x6e, 0xfb}} return a, nil } @@ -2741,145 +2973,284 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "000001_init.down.db.sql": _000001_initDownDbSql, - "000001_init.up.db.sql": _000001_initUpDbSql, - "000002_add_last_ens_clock_value.up.sql": _000002_add_last_ens_clock_valueUpSql, - "1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql, - "1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql, - "1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql, - "1591277220_add_index_messages.up.sql": _1591277220_add_index_messagesUpSql, - "1593087212_add_mute_chat_and_raw_message_fields.up.sql": _1593087212_add_mute_chat_and_raw_message_fieldsUpSql, - "1595862781_add_audio_data.up.sql": _1595862781_add_audio_dataUpSql, - "1595865249_create_emoji_reactions_table.up.sql": _1595865249_create_emoji_reactions_tableUpSql, - "1596805115_create_group_chat_invitations_table.up.sql": _1596805115_create_group_chat_invitations_tableUpSql, - "1597322655_add_invitation_admin_chat_field.up.sql": _1597322655_add_invitation_admin_chat_fieldUpSql, - "1597757544_add_nickname.up.sql": _1597757544_add_nicknameUpSql, - "1598955122_add_mentions.up.sql": _1598955122_add_mentionsUpSql, - "1599641390_add_emoji_reactions_index.up.sql": _1599641390_add_emoji_reactions_indexUpSql, - "1599720851_add_seen_index_remove_long_messages.up.sql": _1599720851_add_seen_index_remove_long_messagesUpSql, - "1603198582_add_profile_chat_field.up.sql": _1603198582_add_profile_chat_fieldUpSql, - "1603816533_add_links.up.sql": _1603816533_add_linksUpSql, - "1603888149_create_chat_identity_last_published_table.up.sql": _1603888149_create_chat_identity_last_published_tableUpSql, - "1605075346_add_communities.up.sql": _1605075346_add_communitiesUpSql, - "1610117927_add_message_cache.up.sql": _1610117927_add_message_cacheUpSql, - "1610959908_add_dont_wrap_to_raw_messages.up.sql": _1610959908_add_dont_wrap_to_raw_messagesUpSql, - "1610960912_add_send_on_personal_topic.up.sql": _1610960912_add_send_on_personal_topicUpSql, - "1612870480_add_datasync_id.up.sql": _1612870480_add_datasync_idUpSql, - "1614152139_add_communities_request_to_join.up.sql": _1614152139_add_communities_request_to_joinUpSql, - "1615374373_add_confirmations.up.sql": _1615374373_add_confirmationsUpSql, - "1617694931_add_notification_center.up.sql": _1617694931_add_notification_centerUpSql, - "1618923660_create_pin_messages.up.sql": _1618923660_create_pin_messagesUpSql, - "1619094007_add_joined_chat_field.up.sql": _1619094007_add_joined_chat_fieldUpSql, - "1619099821_add_last_synced_field.up.sql": _1619099821_add_last_synced_fieldUpSql, - "1621933219_add_mentioned.up.sql": _1621933219_add_mentionedUpSql, - "1622010048_add_unviewed_mentions_count.up.sql": _1622010048_add_unviewed_mentions_countUpSql, - "1622061278_add_message_activity_center_notification_field.up.sql": _1622061278_add_message_activity_center_notification_fieldUpSql, - "1622464518_set_synced_to_from.up.sql": _1622464518_set_synced_to_fromUpSql, - "1622464519_add_chat_description.up.sql": _1622464519_add_chat_descriptionUpSql, - "1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql, - "1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql, - "1623938330_add_edit_messages.up.sql": _1623938330_add_edit_messagesUpSql, - "1624978434_add_muted_community.up.sql": _1624978434_add_muted_communityUpSql, - "1625018910_add_repply_message_activity_center_notification_field.up.sql": _1625018910_add_repply_message_activity_center_notification_fieldUpSql, - "1625762506_add_deleted_messages.up.sql": _1625762506_add_deleted_messagesUpSql, - "1627388946_add_communities_synced_at.up.sql": _1627388946_add_communities_synced_atUpSql, - "1628280060_create-usermessages-index.sql": _1628280060_createUsermessagesIndexSql, - "1632303896_modify_contacts_table.up.sql": _1632303896_modify_contacts_tableUpSql, - "1633349838_add_emoji_column_in_chats.up.sql": _1633349838_add_emoji_column_in_chatsUpSql, - "1634831235_add_highlight_column_in_chats.up.sql": _1634831235_add_highlight_column_in_chatsUpSql, - "1634896007_add_last_updated_locally_and_removed.up.sql": _1634896007_add_last_updated_locally_and_removedUpSql, - "1635840039_add_clock_read_at_column_in_chats.up.sql": _1635840039_add_clock_read_at_column_in_chatsUpSql, - "1637852321_add_received_invitation_admin_column_in_chats.up.sql": _1637852321_add_received_invitation_admin_column_in_chatsUpSql, - "1645034601_display_name.up.sql": _1645034601_display_nameUpSql, - "1645034602_add_mutual_contact_request.up.sql": _1645034602_add_mutual_contact_requestUpSql, - "1650373957_add_contact_request_state.up.sql": _1650373957_add_contact_request_stateUpSql, - "1656958989_contact_verification.up.sql": _1656958989_contact_verificationUpSql, - "1658236268_add_discord_message_authors_table.up.sql": _1658236268_add_discord_message_authors_tableUpSql, - "1659619997_add_discord_messages_table.up.sql": _1659619997_add_discord_messages_tableUpSql, - "1660226788_create_chat_identity_social_links.up.sql": _1660226788_create_chat_identity_social_linksUpSql, - "1660226789_add_walletconnectsessions_table.up.sql": _1660226789_add_walletconnectsessions_tableUpSql, - "1661242854_add_communities_requests_to_leave.up.sql": _1661242854_add_communities_requests_to_leaveUpSql, - "1662044232_add_chat_image.up.sql": _1662044232_add_chat_imageUpSql, - "1662106895_add_chat_first_message_timestamp.up.sql": _1662106895_add_chat_first_message_timestampUpSql, - "1662723928_add_discord_author_image_fields.up.sql": _1662723928_add_discord_author_image_fieldsUpSql, - "1664195977_add_deleted_for_mes.up.sql": _1664195977_add_deleted_for_mesUpSql, - "1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql, - "1665079662_add_spectated_column_in_communities.up.sql": _1665079662_add_spectated_column_in_communitiesUpSql, - "1665479047_add_community_id_in_notifications.up.sql": _1665479047_add_community_id_in_notificationsUpSql, - "1665484435_add_encrypted_messages.up.sql": _1665484435_add_encrypted_messagesUpSql, - "1665560200_add_contact_verification_individual.up.sql": _1665560200_add_contact_verification_individualUpSql, - "1670921937_add_album_id.up.sql": _1670921937_add_album_idUpSql, - "1673373000_add_replied.up.sql": _1673373000_add_repliedUpSql, - "1673428910_add_image_width_height.up.sql": _1673428910_add_image_width_heightUpSql, - "1674210659_add_contact_request_local_clock.up.sql": _1674210659_add_contact_request_local_clockUpSql, - "1675212323_add_deleted_by.up.sql": _1675212323_add_deleted_byUpSql, - "1675247084_add_activity_center_states.up.sql": _1675247084_add_activity_center_statesUpSql, - "1675272329_fix_protocol_migration.up.sql": _1675272329_fix_protocol_migrationUpSql, - "1676998418_fix_activity_center_migration.up.sql": _1676998418_fix_activity_center_migrationUpSql, - "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, - "1677486338_add_community_tokens_table.up.sql": _1677486338_add_community_tokens_tableUpSql, - "1678292329_add_collapsed_categories.up.sql": _1678292329_add_collapsed_categoriesUpSql, - "1678800760_add_index_to_raw_messages.up.sql": _1678800760_add_index_to_raw_messagesUpSql, - "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, - "1679326850_add_community_token_owners.up.sql": _1679326850_add_community_token_ownersUpSql, - "1680011500_add_album_images_count.up.sql": _1680011500_add_album_images_countUpSql, - "1680114896_add_index_on_album_id.up.sql": _1680114896_add_index_on_album_idUpSql, - "1681655289_add_mute_till.up.sql": _1681655289_add_mute_tillUpSql, - "1681934966_add_index_response_to.up.sql": _1681934966_add_index_response_toUpSql, - "1682528339_add_index_user_messages_unseen.up.sql": _1682528339_add_index_user_messages_unseenUpSql, - "1683707289_recreate_deleted_for_mes.up.sql": _1683707289_recreate_deleted_for_mesUpSql, - "1683725607_mark_discord_messages_as_seen.up.sql": _1683725607_mark_discord_messages_as_seenUpSql, - "1684174617_add_url_previews_to_user_messages.up.sql": _1684174617_add_url_previews_to_user_messagesUpSql, - "1684175608_add_token_balances.up.sql": _1684175608_add_token_balancesUpSql, - "1684979808_sync_activity_center_notifications.up.sql": _1684979808_sync_activity_center_notificationsUpSql, - "1685383829_add_communities_mute_till.up.sql": _1685383829_add_communities_mute_tillUpSql, - "1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql, - "1687370421_add_communities_muted_till_new.up.sql": _1687370421_add_communities_muted_till_newUpSql, - "1687416607_add_communities_check_channel_permission_responses_table.up.sql": _1687416607_add_communities_check_channel_permission_responses_tableUpSql, - "1687856939_add_community_tokens_decimals.up.sql": _1687856939_add_community_tokens_decimalsUpSql, - "1687959987_modify_community_tokens_supply_as_string.up.sql": _1687959987_modify_community_tokens_supply_as_stringUpSql, - "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": _1689258900_add_airdrop_address_to_revealed_addressesUpSql, - "1689266326_create_communities_events_table.up.sql": _1689266326_create_communities_events_tableUpSql, - "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": _1689931300_add_community_tokens_deployer_and_priv_levelUpSql, - "1693311881_add_unfurled_links_to_message_edits.up.sql": _1693311881_add_unfurled_links_to_message_editsUpSql, - "1693311981_community_shard.up.sql": _1693311981_community_shardUpSql, - "1695331492_add_status_link_previews.up.sql": _1695331492_add_status_link_previewsUpSql, - "1695918296_add_validated_at.up.sql": _1695918296_add_validated_atUpSql, - "1697699419_community_control_node_sync.up.sql": _1697699419_community_control_node_syncUpSql, - "1698137561_add_profile_showcase_tables.up.sql": _1698137561_add_profile_showcase_tablesUpSql, - "1698137562_fix_encryption_key_id.up.sql": _1698137562_fix_encryption_key_idUpSql, - "1698414646_add_padding.up.sql": _1698414646_add_paddingUpSql, - "1698746210_add_signature_to_revealed_addresses.up.sql": _1698746210_add_signature_to_revealed_addressesUpSql, - "1699041816_profile_showcase_contacts.up.sql": _1699041816_profile_showcase_contactsUpSql, - "1699554099_message_segments.up.sql": _1699554099_message_segmentsUpSql, - "1700044186_message_segments_timestamp.up.sql": _1700044186_message_segments_timestampUpSql, - "1700044187_curated_communities.up.sql": _1700044187_curated_communitiesUpSql, - "1700820989_add_resend_automatically_index.up.sql": _1700820989_add_resend_automatically_indexUpSql, - "1702996953_add_communities_shards_table.up.sql": _1702996953_add_communities_shards_tableUpSql, - "1704489636_add_album_images.up.sql": _1704489636_add_album_imagesUpSql, - "1704821941_add_joined_at_for_community.up.sql": _1704821941_add_joined_at_for_communityUpSql, - "1704832511_add_last_opened_at_for_communities.up.sql": _1704832511_add_last_opened_at_for_communitiesUpSql, - "1704832512_add_peersyncing.up.sql": _1704832512_add_peersyncingUpSql, - "1706028033_profile_showcase_address_and_community.up.sql": _1706028033_profile_showcase_address_and_communityUpSql, - "1706520870_add_bridge_messages_table.up.sql": _1706520870_add_bridge_messages_tableUpSql, - "README.md": readmeMd, - "doc.go": docGo, -} + "000001_init.down.db.sql": _000001_initDownDbSql, -// AssetDebug is true if the assets were built with the debug flag enabled. -const AssetDebug = false + "000001_init.up.db.sql": _000001_initUpDbSql, + + "000002_add_last_ens_clock_value.up.sql": _000002_add_last_ens_clock_valueUpSql, + + "1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql, + + "1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql, + + "1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql, + + "1591277220_add_index_messages.up.sql": _1591277220_add_index_messagesUpSql, + + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": _1593087212_add_mute_chat_and_raw_message_fieldsUpSql, + + "1595862781_add_audio_data.up.sql": _1595862781_add_audio_dataUpSql, + + "1595865249_create_emoji_reactions_table.up.sql": _1595865249_create_emoji_reactions_tableUpSql, + + "1596805115_create_group_chat_invitations_table.up.sql": _1596805115_create_group_chat_invitations_tableUpSql, + + "1597322655_add_invitation_admin_chat_field.up.sql": _1597322655_add_invitation_admin_chat_fieldUpSql, + + "1597757544_add_nickname.up.sql": _1597757544_add_nicknameUpSql, + + "1598955122_add_mentions.up.sql": _1598955122_add_mentionsUpSql, + + "1599641390_add_emoji_reactions_index.up.sql": _1599641390_add_emoji_reactions_indexUpSql, + + "1599720851_add_seen_index_remove_long_messages.up.sql": _1599720851_add_seen_index_remove_long_messagesUpSql, + + "1603198582_add_profile_chat_field.up.sql": _1603198582_add_profile_chat_fieldUpSql, + + "1603816533_add_links.up.sql": _1603816533_add_linksUpSql, + + "1603888149_create_chat_identity_last_published_table.up.sql": _1603888149_create_chat_identity_last_published_tableUpSql, + + "1605075346_add_communities.up.sql": _1605075346_add_communitiesUpSql, + + "1610117927_add_message_cache.up.sql": _1610117927_add_message_cacheUpSql, + + "1610959908_add_dont_wrap_to_raw_messages.up.sql": _1610959908_add_dont_wrap_to_raw_messagesUpSql, + + "1610960912_add_send_on_personal_topic.up.sql": _1610960912_add_send_on_personal_topicUpSql, + + "1612870480_add_datasync_id.up.sql": _1612870480_add_datasync_idUpSql, + + "1614152139_add_communities_request_to_join.up.sql": _1614152139_add_communities_request_to_joinUpSql, + + "1615374373_add_confirmations.up.sql": _1615374373_add_confirmationsUpSql, + + "1617694931_add_notification_center.up.sql": _1617694931_add_notification_centerUpSql, + + "1618923660_create_pin_messages.up.sql": _1618923660_create_pin_messagesUpSql, + + "1619094007_add_joined_chat_field.up.sql": _1619094007_add_joined_chat_fieldUpSql, + + "1619099821_add_last_synced_field.up.sql": _1619099821_add_last_synced_fieldUpSql, + + "1621933219_add_mentioned.up.sql": _1621933219_add_mentionedUpSql, + + "1622010048_add_unviewed_mentions_count.up.sql": _1622010048_add_unviewed_mentions_countUpSql, + + "1622061278_add_message_activity_center_notification_field.up.sql": _1622061278_add_message_activity_center_notification_fieldUpSql, + + "1622464518_set_synced_to_from.up.sql": _1622464518_set_synced_to_fromUpSql, + + "1622464519_add_chat_description.up.sql": _1622464519_add_chat_descriptionUpSql, + + "1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql, + + "1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql, + + "1623938330_add_edit_messages.up.sql": _1623938330_add_edit_messagesUpSql, + + "1624978434_add_muted_community.up.sql": _1624978434_add_muted_communityUpSql, + + "1625018910_add_repply_message_activity_center_notification_field.up.sql": _1625018910_add_repply_message_activity_center_notification_fieldUpSql, + + "1625762506_add_deleted_messages.up.sql": _1625762506_add_deleted_messagesUpSql, + + "1627388946_add_communities_synced_at.up.sql": _1627388946_add_communities_synced_atUpSql, + + "1628280060_create-usermessages-index.sql": _1628280060_createUsermessagesIndexSql, + + "1632303896_modify_contacts_table.up.sql": _1632303896_modify_contacts_tableUpSql, + + "1633349838_add_emoji_column_in_chats.up.sql": _1633349838_add_emoji_column_in_chatsUpSql, + + "1634831235_add_highlight_column_in_chats.up.sql": _1634831235_add_highlight_column_in_chatsUpSql, + + "1634896007_add_last_updated_locally_and_removed.up.sql": _1634896007_add_last_updated_locally_and_removedUpSql, + + "1635840039_add_clock_read_at_column_in_chats.up.sql": _1635840039_add_clock_read_at_column_in_chatsUpSql, + + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": _1637852321_add_received_invitation_admin_column_in_chatsUpSql, + + "1645034601_display_name.up.sql": _1645034601_display_nameUpSql, + + "1645034602_add_mutual_contact_request.up.sql": _1645034602_add_mutual_contact_requestUpSql, + + "1650373957_add_contact_request_state.up.sql": _1650373957_add_contact_request_stateUpSql, + + "1656958989_contact_verification.up.sql": _1656958989_contact_verificationUpSql, + + "1658236268_add_discord_message_authors_table.up.sql": _1658236268_add_discord_message_authors_tableUpSql, + + "1659619997_add_discord_messages_table.up.sql": _1659619997_add_discord_messages_tableUpSql, + + "1660226788_create_chat_identity_social_links.up.sql": _1660226788_create_chat_identity_social_linksUpSql, + + "1660226789_add_walletconnectsessions_table.up.sql": _1660226789_add_walletconnectsessions_tableUpSql, + + "1661242854_add_communities_requests_to_leave.up.sql": _1661242854_add_communities_requests_to_leaveUpSql, + + "1662044232_add_chat_image.up.sql": _1662044232_add_chat_imageUpSql, + + "1662106895_add_chat_first_message_timestamp.up.sql": _1662106895_add_chat_first_message_timestampUpSql, + + "1662723928_add_discord_author_image_fields.up.sql": _1662723928_add_discord_author_image_fieldsUpSql, + + "1664195977_add_deleted_for_mes.up.sql": _1664195977_add_deleted_for_mesUpSql, + + "1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql, + + "1665079662_add_spectated_column_in_communities.up.sql": _1665079662_add_spectated_column_in_communitiesUpSql, + + "1665479047_add_community_id_in_notifications.up.sql": _1665479047_add_community_id_in_notificationsUpSql, + + "1665484435_add_encrypted_messages.up.sql": _1665484435_add_encrypted_messagesUpSql, + + "1665560200_add_contact_verification_individual.up.sql": _1665560200_add_contact_verification_individualUpSql, + + "1670921937_add_album_id.up.sql": _1670921937_add_album_idUpSql, + + "1673373000_add_replied.up.sql": _1673373000_add_repliedUpSql, + + "1673428910_add_image_width_height.up.sql": _1673428910_add_image_width_heightUpSql, + + "1674210659_add_contact_request_local_clock.up.sql": _1674210659_add_contact_request_local_clockUpSql, + + "1675212323_add_deleted_by.up.sql": _1675212323_add_deleted_byUpSql, + + "1675247084_add_activity_center_states.up.sql": _1675247084_add_activity_center_statesUpSql, + + "1675272329_fix_protocol_migration.up.sql": _1675272329_fix_protocol_migrationUpSql, + + "1676998418_fix_activity_center_migration.up.sql": _1676998418_fix_activity_center_migrationUpSql, + + "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, + + "1677486338_add_community_tokens_table.up.sql": _1677486338_add_community_tokens_tableUpSql, + + "1678292329_add_collapsed_categories.up.sql": _1678292329_add_collapsed_categoriesUpSql, + + "1678800760_add_index_to_raw_messages.up.sql": _1678800760_add_index_to_raw_messagesUpSql, + + "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, + + "1679326850_add_community_token_owners.up.sql": _1679326850_add_community_token_ownersUpSql, + + "1680011500_add_album_images_count.up.sql": _1680011500_add_album_images_countUpSql, + + "1680114896_add_index_on_album_id.up.sql": _1680114896_add_index_on_album_idUpSql, + + "1681655289_add_mute_till.up.sql": _1681655289_add_mute_tillUpSql, + + "1681934966_add_index_response_to.up.sql": _1681934966_add_index_response_toUpSql, + + "1682528339_add_index_user_messages_unseen.up.sql": _1682528339_add_index_user_messages_unseenUpSql, + + "1683707289_recreate_deleted_for_mes.up.sql": _1683707289_recreate_deleted_for_mesUpSql, + + "1683725607_mark_discord_messages_as_seen.up.sql": _1683725607_mark_discord_messages_as_seenUpSql, + + "1684174617_add_url_previews_to_user_messages.up.sql": _1684174617_add_url_previews_to_user_messagesUpSql, + + "1684175608_add_token_balances.up.sql": _1684175608_add_token_balancesUpSql, + + "1684979808_sync_activity_center_notifications.up.sql": _1684979808_sync_activity_center_notificationsUpSql, + + "1685383829_add_communities_mute_till.up.sql": _1685383829_add_communities_mute_tillUpSql, + + "1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql, + + "1687370421_add_communities_muted_till_new.up.sql": _1687370421_add_communities_muted_till_newUpSql, + + "1687416607_add_communities_check_channel_permission_responses_table.up.sql": _1687416607_add_communities_check_channel_permission_responses_tableUpSql, + + "1687856939_add_community_tokens_decimals.up.sql": _1687856939_add_community_tokens_decimalsUpSql, + + "1687959987_modify_community_tokens_supply_as_string.up.sql": _1687959987_modify_community_tokens_supply_as_stringUpSql, + + "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": _1689258900_add_airdrop_address_to_revealed_addressesUpSql, + + "1689266326_create_communities_events_table.up.sql": _1689266326_create_communities_events_tableUpSql, + + "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": _1689931300_add_community_tokens_deployer_and_priv_levelUpSql, + + "1693311881_add_unfurled_links_to_message_edits.up.sql": _1693311881_add_unfurled_links_to_message_editsUpSql, + + "1693311981_community_shard.up.sql": _1693311981_community_shardUpSql, + + "1695331492_add_status_link_previews.up.sql": _1695331492_add_status_link_previewsUpSql, + + "1695918296_add_validated_at.up.sql": _1695918296_add_validated_atUpSql, + + "1697699419_community_control_node_sync.up.sql": _1697699419_community_control_node_syncUpSql, + + "1698137561_add_profile_showcase_tables.up.sql": _1698137561_add_profile_showcase_tablesUpSql, + + "1698137562_fix_encryption_key_id.up.sql": _1698137562_fix_encryption_key_idUpSql, + + "1698414646_add_padding.up.sql": _1698414646_add_paddingUpSql, + + "1698746210_add_signature_to_revealed_addresses.up.sql": _1698746210_add_signature_to_revealed_addressesUpSql, + + "1699041816_profile_showcase_contacts.up.sql": _1699041816_profile_showcase_contactsUpSql, + + "1699554099_message_segments.up.sql": _1699554099_message_segmentsUpSql, + + "1700044186_message_segments_timestamp.up.sql": _1700044186_message_segments_timestampUpSql, + + "1700044187_curated_communities.up.sql": _1700044187_curated_communitiesUpSql, + + "1700820989_add_resend_automatically_index.up.sql": _1700820989_add_resend_automatically_indexUpSql, + + "1702996953_add_communities_shards_table.up.sql": _1702996953_add_communities_shards_tableUpSql, + + "1704489636_add_album_images.up.sql": _1704489636_add_album_imagesUpSql, + + "1704821941_add_joined_at_for_community.up.sql": _1704821941_add_joined_at_for_communityUpSql, + + "1704832511_add_last_opened_at_for_communities.up.sql": _1704832511_add_last_opened_at_for_communitiesUpSql, + + "1704832512_add_peersyncing.up.sql": _1704832512_add_peersyncingUpSql, + + "1706028033_profile_showcase_address_and_community.up.sql": _1706028033_profile_showcase_address_and_communityUpSql, + + "1706520870_add_bridge_messages_table.up.sql": _1706520870_add_bridge_messages_tableUpSql, + + "1706520871_add_community_description_cache.up.sql": _1706520871_add_community_description_cacheUpSql, + + "1707749393_add_community_grants.up.sql": _1707749393_add_community_grantsUpSql, + + "1707841194_add_profile_showcase_preferences.up.sql": _1707841194_add_profile_showcase_preferencesUpSql, + + "1708062699_activity_data.up.sql": _1708062699_activity_dataUpSql, + + "1708423707_applied_community_events.up.sql": _1708423707_applied_community_eventsUpSql, + + "1708440786_profile_showcase_social_links.up.sql": _1708440786_profile_showcase_social_linksUpSql, + + "1709805967_simplify_profile_showcase_preferences.up.sql": _1709805967_simplify_profile_showcase_preferencesUpSql, + + "1709828431_add_community_description_cache.up.sql": _1709828431_add_community_description_cacheUpSql, + + "1710331283_add_bio_to_contacts.up.sql": _1710331283_add_bio_to_contactsUpSql, + + "1710331284_hash_ratchet_encrypted_messages_key_id.up.sql": _1710331284_hash_ratchet_encrypted_messages_key_idUpSql, + + "1711389881_add_profile_showcase_community_grant.up.sql": _1711389881_add_profile_showcase_community_grantUpSql, + + "README.md": readmeMd, + + "doc.go": docGo, +} // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// -// data/ -// foo.txt -// img/ -// a.png -// b.png -// +// data/ +// foo.txt +// img/ +// a.png +// b.png // then AssetDir("data") would return []string{"foo.txt", "img"}, // AssetDir("data/img") would return []string{"a.png", "b.png"}, // AssetDir("foo.txt") and AssetDir("notexist") would return an error, and @@ -2912,129 +3283,140 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "000001_init.down.db.sql": {_000001_initDownDbSql, map[string]*bintree{}}, - "000001_init.up.db.sql": {_000001_initUpDbSql, map[string]*bintree{}}, - "000002_add_last_ens_clock_value.up.sql": {_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, - "1586358095_add_replace.up.sql": {_1586358095_add_replaceUpSql, map[string]*bintree{}}, - "1588665364_add_image_data.up.sql": {_1588665364_add_image_dataUpSql, map[string]*bintree{}}, - "1589365189_add_pow_target.up.sql": {_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, - "1591277220_add_index_messages.up.sql": {_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, - "1593087212_add_mute_chat_and_raw_message_fields.up.sql": {_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, - "1595862781_add_audio_data.up.sql": {_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, - "1595865249_create_emoji_reactions_table.up.sql": {_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, - "1596805115_create_group_chat_invitations_table.up.sql": {_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, - "1597322655_add_invitation_admin_chat_field.up.sql": {_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, - "1597757544_add_nickname.up.sql": {_1597757544_add_nicknameUpSql, map[string]*bintree{}}, - "1598955122_add_mentions.up.sql": {_1598955122_add_mentionsUpSql, map[string]*bintree{}}, - "1599641390_add_emoji_reactions_index.up.sql": {_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, - "1599720851_add_seen_index_remove_long_messages.up.sql": {_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, - "1603198582_add_profile_chat_field.up.sql": {_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, - "1603816533_add_links.up.sql": {_1603816533_add_linksUpSql, map[string]*bintree{}}, - "1603888149_create_chat_identity_last_published_table.up.sql": {_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, - "1605075346_add_communities.up.sql": {_1605075346_add_communitiesUpSql, map[string]*bintree{}}, - "1610117927_add_message_cache.up.sql": {_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, - "1610959908_add_dont_wrap_to_raw_messages.up.sql": {_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, - "1610960912_add_send_on_personal_topic.up.sql": {_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, - "1612870480_add_datasync_id.up.sql": {_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, - "1614152139_add_communities_request_to_join.up.sql": {_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, - "1615374373_add_confirmations.up.sql": {_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, - "1617694931_add_notification_center.up.sql": {_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, - "1618923660_create_pin_messages.up.sql": {_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, - "1619094007_add_joined_chat_field.up.sql": {_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, - "1619099821_add_last_synced_field.up.sql": {_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, - "1621933219_add_mentioned.up.sql": {_1621933219_add_mentionedUpSql, map[string]*bintree{}}, - "1622010048_add_unviewed_mentions_count.up.sql": {_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, - "1622061278_add_message_activity_center_notification_field.up.sql": {_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1622464518_set_synced_to_from.up.sql": {_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, - "1622464519_add_chat_description.up.sql": {_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, - "1622622253_add_pinned_by_to_pin_messages.up.sql": {_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, - "1623938329_add_author_activity_center_notification_field.up.sql": {_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1623938330_add_edit_messages.up.sql": {_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, - "1624978434_add_muted_community.up.sql": {_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, - "1625018910_add_repply_message_activity_center_notification_field.up.sql": {_1625018910_add_repply_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1625762506_add_deleted_messages.up.sql": {_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, - "1627388946_add_communities_synced_at.up.sql": {_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, - "1628280060_create-usermessages-index.sql": {_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, - "1632303896_modify_contacts_table.up.sql": {_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, - "1633349838_add_emoji_column_in_chats.up.sql": {_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, - "1634831235_add_highlight_column_in_chats.up.sql": {_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, - "1634896007_add_last_updated_locally_and_removed.up.sql": {_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, - "1635840039_add_clock_read_at_column_in_chats.up.sql": {_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, - "1637852321_add_received_invitation_admin_column_in_chats.up.sql": {_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, - "1645034601_display_name.up.sql": {_1645034601_display_nameUpSql, map[string]*bintree{}}, - "1645034602_add_mutual_contact_request.up.sql": {_1645034602_add_mutual_contact_requestUpSql, map[string]*bintree{}}, - "1650373957_add_contact_request_state.up.sql": {_1650373957_add_contact_request_stateUpSql, map[string]*bintree{}}, - "1656958989_contact_verification.up.sql": {_1656958989_contact_verificationUpSql, map[string]*bintree{}}, - "1658236268_add_discord_message_authors_table.up.sql": {_1658236268_add_discord_message_authors_tableUpSql, map[string]*bintree{}}, - "1659619997_add_discord_messages_table.up.sql": {_1659619997_add_discord_messages_tableUpSql, map[string]*bintree{}}, - "1660226788_create_chat_identity_social_links.up.sql": {_1660226788_create_chat_identity_social_linksUpSql, map[string]*bintree{}}, - "1660226789_add_walletconnectsessions_table.up.sql": {_1660226789_add_walletconnectsessions_tableUpSql, map[string]*bintree{}}, - "1661242854_add_communities_requests_to_leave.up.sql": {_1661242854_add_communities_requests_to_leaveUpSql, map[string]*bintree{}}, - "1662044232_add_chat_image.up.sql": {_1662044232_add_chat_imageUpSql, map[string]*bintree{}}, - "1662106895_add_chat_first_message_timestamp.up.sql": {_1662106895_add_chat_first_message_timestampUpSql, map[string]*bintree{}}, - "1662723928_add_discord_author_image_fields.up.sql": {_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}}, - "1664195977_add_deleted_for_mes.up.sql": {_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}}, - "1664367420_add_discord_attachments_table.up.sql": {_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}}, - "1665079662_add_spectated_column_in_communities.up.sql": {_1665079662_add_spectated_column_in_communitiesUpSql, map[string]*bintree{}}, - "1665479047_add_community_id_in_notifications.up.sql": {_1665479047_add_community_id_in_notificationsUpSql, map[string]*bintree{}}, - "1665484435_add_encrypted_messages.up.sql": {_1665484435_add_encrypted_messagesUpSql, map[string]*bintree{}}, - "1665560200_add_contact_verification_individual.up.sql": {_1665560200_add_contact_verification_individualUpSql, map[string]*bintree{}}, - "1670921937_add_album_id.up.sql": {_1670921937_add_album_idUpSql, map[string]*bintree{}}, - "1673373000_add_replied.up.sql": {_1673373000_add_repliedUpSql, map[string]*bintree{}}, - "1673428910_add_image_width_height.up.sql": {_1673428910_add_image_width_heightUpSql, map[string]*bintree{}}, - "1674210659_add_contact_request_local_clock.up.sql": {_1674210659_add_contact_request_local_clockUpSql, map[string]*bintree{}}, - "1675212323_add_deleted_by.up.sql": {_1675212323_add_deleted_byUpSql, map[string]*bintree{}}, - "1675247084_add_activity_center_states.up.sql": {_1675247084_add_activity_center_statesUpSql, map[string]*bintree{}}, - "1675272329_fix_protocol_migration.up.sql": {_1675272329_fix_protocol_migrationUpSql, map[string]*bintree{}}, - "1676998418_fix_activity_center_migration.up.sql": {_1676998418_fix_activity_center_migrationUpSql, map[string]*bintree{}}, - "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": {_1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, map[string]*bintree{}}, - "1677486338_add_community_tokens_table.up.sql": {_1677486338_add_community_tokens_tableUpSql, map[string]*bintree{}}, - "1678292329_add_collapsed_categories.up.sql": {_1678292329_add_collapsed_categoriesUpSql, map[string]*bintree{}}, - "1678800760_add_index_to_raw_messages.up.sql": {_1678800760_add_index_to_raw_messagesUpSql, map[string]*bintree{}}, - "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": {_1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, map[string]*bintree{}}, - "1679326850_add_community_token_owners.up.sql": {_1679326850_add_community_token_ownersUpSql, map[string]*bintree{}}, - "1680011500_add_album_images_count.up.sql": {_1680011500_add_album_images_countUpSql, map[string]*bintree{}}, - "1680114896_add_index_on_album_id.up.sql": {_1680114896_add_index_on_album_idUpSql, map[string]*bintree{}}, - "1681655289_add_mute_till.up.sql": {_1681655289_add_mute_tillUpSql, map[string]*bintree{}}, - "1681934966_add_index_response_to.up.sql": {_1681934966_add_index_response_toUpSql, map[string]*bintree{}}, - "1682528339_add_index_user_messages_unseen.up.sql": {_1682528339_add_index_user_messages_unseenUpSql, map[string]*bintree{}}, - "1683707289_recreate_deleted_for_mes.up.sql": {_1683707289_recreate_deleted_for_mesUpSql, map[string]*bintree{}}, - "1683725607_mark_discord_messages_as_seen.up.sql": {_1683725607_mark_discord_messages_as_seenUpSql, map[string]*bintree{}}, - "1684174617_add_url_previews_to_user_messages.up.sql": {_1684174617_add_url_previews_to_user_messagesUpSql, map[string]*bintree{}}, - "1684175608_add_token_balances.up.sql": {_1684175608_add_token_balancesUpSql, map[string]*bintree{}}, - "1684979808_sync_activity_center_notifications.up.sql": {_1684979808_sync_activity_center_notificationsUpSql, map[string]*bintree{}}, - "1685383829_add_communities_mute_till.up.sql": {_1685383829_add_communities_mute_tillUpSql, map[string]*bintree{}}, - "1685964183_add_chainids_to_revealed_addresses.up.sql": {_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}}, - "1687370421_add_communities_muted_till_new.up.sql": {_1687370421_add_communities_muted_till_newUpSql, map[string]*bintree{}}, - "1687416607_add_communities_check_channel_permission_responses_table.up.sql": {_1687416607_add_communities_check_channel_permission_responses_tableUpSql, map[string]*bintree{}}, - "1687856939_add_community_tokens_decimals.up.sql": {_1687856939_add_community_tokens_decimalsUpSql, map[string]*bintree{}}, - "1687959987_modify_community_tokens_supply_as_string.up.sql": {_1687959987_modify_community_tokens_supply_as_stringUpSql, map[string]*bintree{}}, - "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": {_1689258900_add_airdrop_address_to_revealed_addressesUpSql, map[string]*bintree{}}, - "1689266326_create_communities_events_table.up.sql": {_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}}, - "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": {_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}}, - "1693311881_add_unfurled_links_to_message_edits.up.sql": {_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}}, - "1693311981_community_shard.up.sql": {_1693311981_community_shardUpSql, map[string]*bintree{}}, - "1695331492_add_status_link_previews.up.sql": {_1695331492_add_status_link_previewsUpSql, map[string]*bintree{}}, - "1695918296_add_validated_at.up.sql": {_1695918296_add_validated_atUpSql, map[string]*bintree{}}, - "1697699419_community_control_node_sync.up.sql": {_1697699419_community_control_node_syncUpSql, map[string]*bintree{}}, - "1698137561_add_profile_showcase_tables.up.sql": {_1698137561_add_profile_showcase_tablesUpSql, map[string]*bintree{}}, - "1698137562_fix_encryption_key_id.up.sql": {_1698137562_fix_encryption_key_idUpSql, map[string]*bintree{}}, - "1698414646_add_padding.up.sql": {_1698414646_add_paddingUpSql, map[string]*bintree{}}, - "1698746210_add_signature_to_revealed_addresses.up.sql": {_1698746210_add_signature_to_revealed_addressesUpSql, map[string]*bintree{}}, - "1699041816_profile_showcase_contacts.up.sql": {_1699041816_profile_showcase_contactsUpSql, map[string]*bintree{}}, - "1699554099_message_segments.up.sql": {_1699554099_message_segmentsUpSql, map[string]*bintree{}}, - "1700044186_message_segments_timestamp.up.sql": {_1700044186_message_segments_timestampUpSql, map[string]*bintree{}}, - "1700044187_curated_communities.up.sql": {_1700044187_curated_communitiesUpSql, map[string]*bintree{}}, - "1700820989_add_resend_automatically_index.up.sql": {_1700820989_add_resend_automatically_indexUpSql, map[string]*bintree{}}, - "1702996953_add_communities_shards_table.up.sql": {_1702996953_add_communities_shards_tableUpSql, map[string]*bintree{}}, - "1704489636_add_album_images.up.sql": {_1704489636_add_album_imagesUpSql, map[string]*bintree{}}, - "1704821941_add_joined_at_for_community.up.sql": {_1704821941_add_joined_at_for_communityUpSql, map[string]*bintree{}}, - "1704832511_add_last_opened_at_for_communities.up.sql": {_1704832511_add_last_opened_at_for_communitiesUpSql, map[string]*bintree{}}, - "1704832512_add_peersyncing.up.sql": {_1704832512_add_peersyncingUpSql, map[string]*bintree{}}, - "1706028033_profile_showcase_address_and_community.up.sql": {_1706028033_profile_showcase_address_and_communityUpSql, map[string]*bintree{}}, - "1706520870_add_bridge_messages_table.up.sql": {_1706520870_add_bridge_messages_tableUpSql, map[string]*bintree{}}, - "README.md": {readmeMd, map[string]*bintree{}}, - "doc.go": {docGo, map[string]*bintree{}}, + "000001_init.down.db.sql": &bintree{_000001_initDownDbSql, map[string]*bintree{}}, + "000001_init.up.db.sql": &bintree{_000001_initUpDbSql, map[string]*bintree{}}, + "000002_add_last_ens_clock_value.up.sql": &bintree{_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, + "1586358095_add_replace.up.sql": &bintree{_1586358095_add_replaceUpSql, map[string]*bintree{}}, + "1588665364_add_image_data.up.sql": &bintree{_1588665364_add_image_dataUpSql, map[string]*bintree{}}, + "1589365189_add_pow_target.up.sql": &bintree{_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, + "1591277220_add_index_messages.up.sql": &bintree{_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": &bintree{_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, + "1595862781_add_audio_data.up.sql": &bintree{_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, + "1595865249_create_emoji_reactions_table.up.sql": &bintree{_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, + "1596805115_create_group_chat_invitations_table.up.sql": &bintree{_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, + "1597322655_add_invitation_admin_chat_field.up.sql": &bintree{_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, + "1597757544_add_nickname.up.sql": &bintree{_1597757544_add_nicknameUpSql, map[string]*bintree{}}, + "1598955122_add_mentions.up.sql": &bintree{_1598955122_add_mentionsUpSql, map[string]*bintree{}}, + "1599641390_add_emoji_reactions_index.up.sql": &bintree{_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, + "1599720851_add_seen_index_remove_long_messages.up.sql": &bintree{_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, + "1603198582_add_profile_chat_field.up.sql": &bintree{_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, + "1603816533_add_links.up.sql": &bintree{_1603816533_add_linksUpSql, map[string]*bintree{}}, + "1603888149_create_chat_identity_last_published_table.up.sql": &bintree{_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, + "1605075346_add_communities.up.sql": &bintree{_1605075346_add_communitiesUpSql, map[string]*bintree{}}, + "1610117927_add_message_cache.up.sql": &bintree{_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, + "1610959908_add_dont_wrap_to_raw_messages.up.sql": &bintree{_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, + "1610960912_add_send_on_personal_topic.up.sql": &bintree{_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, + "1612870480_add_datasync_id.up.sql": &bintree{_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, + "1614152139_add_communities_request_to_join.up.sql": &bintree{_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, + "1615374373_add_confirmations.up.sql": &bintree{_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, + "1617694931_add_notification_center.up.sql": &bintree{_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, + "1618923660_create_pin_messages.up.sql": &bintree{_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, + "1619094007_add_joined_chat_field.up.sql": &bintree{_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, + "1619099821_add_last_synced_field.up.sql": &bintree{_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, + "1621933219_add_mentioned.up.sql": &bintree{_1621933219_add_mentionedUpSql, map[string]*bintree{}}, + "1622010048_add_unviewed_mentions_count.up.sql": &bintree{_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, + "1622061278_add_message_activity_center_notification_field.up.sql": &bintree{_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1622464518_set_synced_to_from.up.sql": &bintree{_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, + "1622464519_add_chat_description.up.sql": &bintree{_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, + "1622622253_add_pinned_by_to_pin_messages.up.sql": &bintree{_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, + "1623938329_add_author_activity_center_notification_field.up.sql": &bintree{_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1623938330_add_edit_messages.up.sql": &bintree{_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, + "1624978434_add_muted_community.up.sql": &bintree{_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, + "1625018910_add_repply_message_activity_center_notification_field.up.sql": &bintree{_1625018910_add_repply_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1625762506_add_deleted_messages.up.sql": &bintree{_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, + "1627388946_add_communities_synced_at.up.sql": &bintree{_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, + "1628280060_create-usermessages-index.sql": &bintree{_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, + "1632303896_modify_contacts_table.up.sql": &bintree{_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, + "1633349838_add_emoji_column_in_chats.up.sql": &bintree{_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, + "1634831235_add_highlight_column_in_chats.up.sql": &bintree{_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, + "1634896007_add_last_updated_locally_and_removed.up.sql": &bintree{_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, + "1635840039_add_clock_read_at_column_in_chats.up.sql": &bintree{_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": &bintree{_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, + "1645034601_display_name.up.sql": &bintree{_1645034601_display_nameUpSql, map[string]*bintree{}}, + "1645034602_add_mutual_contact_request.up.sql": &bintree{_1645034602_add_mutual_contact_requestUpSql, map[string]*bintree{}}, + "1650373957_add_contact_request_state.up.sql": &bintree{_1650373957_add_contact_request_stateUpSql, map[string]*bintree{}}, + "1656958989_contact_verification.up.sql": &bintree{_1656958989_contact_verificationUpSql, map[string]*bintree{}}, + "1658236268_add_discord_message_authors_table.up.sql": &bintree{_1658236268_add_discord_message_authors_tableUpSql, map[string]*bintree{}}, + "1659619997_add_discord_messages_table.up.sql": &bintree{_1659619997_add_discord_messages_tableUpSql, map[string]*bintree{}}, + "1660226788_create_chat_identity_social_links.up.sql": &bintree{_1660226788_create_chat_identity_social_linksUpSql, map[string]*bintree{}}, + "1660226789_add_walletconnectsessions_table.up.sql": &bintree{_1660226789_add_walletconnectsessions_tableUpSql, map[string]*bintree{}}, + "1661242854_add_communities_requests_to_leave.up.sql": &bintree{_1661242854_add_communities_requests_to_leaveUpSql, map[string]*bintree{}}, + "1662044232_add_chat_image.up.sql": &bintree{_1662044232_add_chat_imageUpSql, map[string]*bintree{}}, + "1662106895_add_chat_first_message_timestamp.up.sql": &bintree{_1662106895_add_chat_first_message_timestampUpSql, map[string]*bintree{}}, + "1662723928_add_discord_author_image_fields.up.sql": &bintree{_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}}, + "1664195977_add_deleted_for_mes.up.sql": &bintree{_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}}, + "1664367420_add_discord_attachments_table.up.sql": &bintree{_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}}, + "1665079662_add_spectated_column_in_communities.up.sql": &bintree{_1665079662_add_spectated_column_in_communitiesUpSql, map[string]*bintree{}}, + "1665479047_add_community_id_in_notifications.up.sql": &bintree{_1665479047_add_community_id_in_notificationsUpSql, map[string]*bintree{}}, + "1665484435_add_encrypted_messages.up.sql": &bintree{_1665484435_add_encrypted_messagesUpSql, map[string]*bintree{}}, + "1665560200_add_contact_verification_individual.up.sql": &bintree{_1665560200_add_contact_verification_individualUpSql, map[string]*bintree{}}, + "1670921937_add_album_id.up.sql": &bintree{_1670921937_add_album_idUpSql, map[string]*bintree{}}, + "1673373000_add_replied.up.sql": &bintree{_1673373000_add_repliedUpSql, map[string]*bintree{}}, + "1673428910_add_image_width_height.up.sql": &bintree{_1673428910_add_image_width_heightUpSql, map[string]*bintree{}}, + "1674210659_add_contact_request_local_clock.up.sql": &bintree{_1674210659_add_contact_request_local_clockUpSql, map[string]*bintree{}}, + "1675212323_add_deleted_by.up.sql": &bintree{_1675212323_add_deleted_byUpSql, map[string]*bintree{}}, + "1675247084_add_activity_center_states.up.sql": &bintree{_1675247084_add_activity_center_statesUpSql, map[string]*bintree{}}, + "1675272329_fix_protocol_migration.up.sql": &bintree{_1675272329_fix_protocol_migrationUpSql, map[string]*bintree{}}, + "1676998418_fix_activity_center_migration.up.sql": &bintree{_1676998418_fix_activity_center_migrationUpSql, map[string]*bintree{}}, + "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql": &bintree{_1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql, map[string]*bintree{}}, + "1677486338_add_community_tokens_table.up.sql": &bintree{_1677486338_add_community_tokens_tableUpSql, map[string]*bintree{}}, + "1678292329_add_collapsed_categories.up.sql": &bintree{_1678292329_add_collapsed_categoriesUpSql, map[string]*bintree{}}, + "1678800760_add_index_to_raw_messages.up.sql": &bintree{_1678800760_add_index_to_raw_messagesUpSql, map[string]*bintree{}}, + "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql": &bintree{_1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql, map[string]*bintree{}}, + "1679326850_add_community_token_owners.up.sql": &bintree{_1679326850_add_community_token_ownersUpSql, map[string]*bintree{}}, + "1680011500_add_album_images_count.up.sql": &bintree{_1680011500_add_album_images_countUpSql, map[string]*bintree{}}, + "1680114896_add_index_on_album_id.up.sql": &bintree{_1680114896_add_index_on_album_idUpSql, map[string]*bintree{}}, + "1681655289_add_mute_till.up.sql": &bintree{_1681655289_add_mute_tillUpSql, map[string]*bintree{}}, + "1681934966_add_index_response_to.up.sql": &bintree{_1681934966_add_index_response_toUpSql, map[string]*bintree{}}, + "1682528339_add_index_user_messages_unseen.up.sql": &bintree{_1682528339_add_index_user_messages_unseenUpSql, map[string]*bintree{}}, + "1683707289_recreate_deleted_for_mes.up.sql": &bintree{_1683707289_recreate_deleted_for_mesUpSql, map[string]*bintree{}}, + "1683725607_mark_discord_messages_as_seen.up.sql": &bintree{_1683725607_mark_discord_messages_as_seenUpSql, map[string]*bintree{}}, + "1684174617_add_url_previews_to_user_messages.up.sql": &bintree{_1684174617_add_url_previews_to_user_messagesUpSql, map[string]*bintree{}}, + "1684175608_add_token_balances.up.sql": &bintree{_1684175608_add_token_balancesUpSql, map[string]*bintree{}}, + "1684979808_sync_activity_center_notifications.up.sql": &bintree{_1684979808_sync_activity_center_notificationsUpSql, map[string]*bintree{}}, + "1685383829_add_communities_mute_till.up.sql": &bintree{_1685383829_add_communities_mute_tillUpSql, map[string]*bintree{}}, + "1685964183_add_chainids_to_revealed_addresses.up.sql": &bintree{_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}}, + "1687370421_add_communities_muted_till_new.up.sql": &bintree{_1687370421_add_communities_muted_till_newUpSql, map[string]*bintree{}}, + "1687416607_add_communities_check_channel_permission_responses_table.up.sql": &bintree{_1687416607_add_communities_check_channel_permission_responses_tableUpSql, map[string]*bintree{}}, + "1687856939_add_community_tokens_decimals.up.sql": &bintree{_1687856939_add_community_tokens_decimalsUpSql, map[string]*bintree{}}, + "1687959987_modify_community_tokens_supply_as_string.up.sql": &bintree{_1687959987_modify_community_tokens_supply_as_stringUpSql, map[string]*bintree{}}, + "1689258900_add_airdrop_address_to_revealed_addresses.up.sql": &bintree{_1689258900_add_airdrop_address_to_revealed_addressesUpSql, map[string]*bintree{}}, + "1689266326_create_communities_events_table.up.sql": &bintree{_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}}, + "1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}}, + "1693311881_add_unfurled_links_to_message_edits.up.sql": &bintree{_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}}, + "1693311981_community_shard.up.sql": &bintree{_1693311981_community_shardUpSql, map[string]*bintree{}}, + "1695331492_add_status_link_previews.up.sql": &bintree{_1695331492_add_status_link_previewsUpSql, map[string]*bintree{}}, + "1695918296_add_validated_at.up.sql": &bintree{_1695918296_add_validated_atUpSql, map[string]*bintree{}}, + "1697699419_community_control_node_sync.up.sql": &bintree{_1697699419_community_control_node_syncUpSql, map[string]*bintree{}}, + "1698137561_add_profile_showcase_tables.up.sql": &bintree{_1698137561_add_profile_showcase_tablesUpSql, map[string]*bintree{}}, + "1698137562_fix_encryption_key_id.up.sql": &bintree{_1698137562_fix_encryption_key_idUpSql, map[string]*bintree{}}, + "1698414646_add_padding.up.sql": &bintree{_1698414646_add_paddingUpSql, map[string]*bintree{}}, + "1698746210_add_signature_to_revealed_addresses.up.sql": &bintree{_1698746210_add_signature_to_revealed_addressesUpSql, map[string]*bintree{}}, + "1699041816_profile_showcase_contacts.up.sql": &bintree{_1699041816_profile_showcase_contactsUpSql, map[string]*bintree{}}, + "1699554099_message_segments.up.sql": &bintree{_1699554099_message_segmentsUpSql, map[string]*bintree{}}, + "1700044186_message_segments_timestamp.up.sql": &bintree{_1700044186_message_segments_timestampUpSql, map[string]*bintree{}}, + "1700044187_curated_communities.up.sql": &bintree{_1700044187_curated_communitiesUpSql, map[string]*bintree{}}, + "1700820989_add_resend_automatically_index.up.sql": &bintree{_1700820989_add_resend_automatically_indexUpSql, map[string]*bintree{}}, + "1702996953_add_communities_shards_table.up.sql": &bintree{_1702996953_add_communities_shards_tableUpSql, map[string]*bintree{}}, + "1704489636_add_album_images.up.sql": &bintree{_1704489636_add_album_imagesUpSql, map[string]*bintree{}}, + "1704821941_add_joined_at_for_community.up.sql": &bintree{_1704821941_add_joined_at_for_communityUpSql, map[string]*bintree{}}, + "1704832511_add_last_opened_at_for_communities.up.sql": &bintree{_1704832511_add_last_opened_at_for_communitiesUpSql, map[string]*bintree{}}, + "1704832512_add_peersyncing.up.sql": &bintree{_1704832512_add_peersyncingUpSql, map[string]*bintree{}}, + "1706028033_profile_showcase_address_and_community.up.sql": &bintree{_1706028033_profile_showcase_address_and_communityUpSql, map[string]*bintree{}}, + "1706520870_add_bridge_messages_table.up.sql": &bintree{_1706520870_add_bridge_messages_tableUpSql, map[string]*bintree{}}, + "1706520871_add_community_description_cache.up.sql": &bintree{_1706520871_add_community_description_cacheUpSql, map[string]*bintree{}}, + "1707749393_add_community_grants.up.sql": &bintree{_1707749393_add_community_grantsUpSql, map[string]*bintree{}}, + "1707841194_add_profile_showcase_preferences.up.sql": &bintree{_1707841194_add_profile_showcase_preferencesUpSql, map[string]*bintree{}}, + "1708062699_activity_data.up.sql": &bintree{_1708062699_activity_dataUpSql, map[string]*bintree{}}, + "1708423707_applied_community_events.up.sql": &bintree{_1708423707_applied_community_eventsUpSql, map[string]*bintree{}}, + "1708440786_profile_showcase_social_links.up.sql": &bintree{_1708440786_profile_showcase_social_linksUpSql, map[string]*bintree{}}, + "1709805967_simplify_profile_showcase_preferences.up.sql": &bintree{_1709805967_simplify_profile_showcase_preferencesUpSql, map[string]*bintree{}}, + "1709828431_add_community_description_cache.up.sql": &bintree{_1709828431_add_community_description_cacheUpSql, map[string]*bintree{}}, + "1710331283_add_bio_to_contacts.up.sql": &bintree{_1710331283_add_bio_to_contactsUpSql, map[string]*bintree{}}, + "1710331284_hash_ratchet_encrypted_messages_key_id.up.sql": &bintree{_1710331284_hash_ratchet_encrypted_messages_key_idUpSql, map[string]*bintree{}}, + "1711389881_add_profile_showcase_community_grant.up.sql": &bintree{_1711389881_add_profile_showcase_community_grantUpSql, map[string]*bintree{}}, + "README.md": &bintree{readmeMd, map[string]*bintree{}}, + "doc.go": &bintree{docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. @@ -3051,7 +3433,7 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = os.WriteFile(_filePath(dir, name), data, info.Mode()) + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) if err != nil { return err } diff --git a/vendor/github.com/status-im/status-go/protocol/persistence.go b/vendor/github.com/status-im/status-go/protocol/persistence.go index 5f057a4b..aa6b63c7 100644 --- a/vendor/github.com/status-im/status-go/protocol/persistence.go +++ b/vendor/github.com/status-im/status-go/protocol/persistence.go @@ -571,6 +571,7 @@ func (db sqlitePersistence) Contacts() ([]*Contact, error) { c.last_updated_locally, c.blocked, c.removed, + c.bio, c.local_nickname, c.contact_request_state, c.contact_request_local_clock, @@ -606,6 +607,7 @@ func (db sqlitePersistence) Contacts() ([]*Contact, error) { ensVerified sql.NullBool blocked sql.NullBool removed sql.NullBool + bio sql.NullString lastUpdatedLocally sql.NullInt64 identityImageClock sql.NullInt64 imagePayload []byte @@ -625,6 +627,7 @@ func (db sqlitePersistence) Contacts() ([]*Contact, error) { &lastUpdatedLocally, &blocked, &removed, + &bio, &nickname, &contactRequestLocalState, &contactRequestLocalClock, @@ -644,6 +647,10 @@ func (db sqlitePersistence) Contacts() ([]*Contact, error) { contact.LocalNickname = nickname.String } + if bio.Valid { + contact.Bio = bio.String + } + if contactRequestLocalState.Valid { contact.ContactRequestLocalState = ContactRequestState(contactRequestLocalState.Int64) } @@ -966,10 +973,11 @@ func (db sqlitePersistence) SaveContact(contact *Contact, tx *sql.Tx) (err error blocked, removed, verification_status, + bio, name, photo, tribute_to_talk - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) `) if err != nil { return @@ -992,6 +1000,7 @@ func (db sqlitePersistence) SaveContact(contact *Contact, tx *sql.Tx) (err error contact.Blocked, contact.Removed, contact.VerificationStatus, + contact.Bio, //TODO we need to drop these columns "", "", diff --git a/vendor/github.com/status-im/status-go/protocol/persistence_profile_showcase.go b/vendor/github.com/status-im/status-go/protocol/persistence_profile_showcase.go index 25ef518c..cbd7feba 100644 --- a/vendor/github.com/status-im/status-go/protocol/persistence_profile_showcase.go +++ b/vendor/github.com/status-im/status-go/protocol/persistence_profile_showcase.go @@ -4,54 +4,65 @@ import ( "context" "database/sql" "errors" + + "github.com/status-im/status-go/protocol/identity" ) -type ProfileShowcaseVisibility int - -const ( - ProfileShowcaseVisibilityNoOne ProfileShowcaseVisibility = iota - ProfileShowcaseVisibilityIDVerifiedContacts - ProfileShowcaseVisibilityContacts - ProfileShowcaseVisibilityEveryone -) +// Profile showcase preferences +const upsertProfileShowcasePreferencesQuery = "UPDATE profile_showcase_preferences SET clock=? WHERE NOT EXISTS (SELECT 1 FROM profile_showcase_preferences WHERE clock >= ?)" +const selectProfileShowcasePreferencesQuery = "SELECT clock FROM profile_showcase_preferences" const upsertProfileShowcaseCommunityPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_communities_preferences(community_id, visibility, sort_order) VALUES (?, ?, ?)" // #nosec G101 const selectProfileShowcaseCommunityPreferenceQuery = "SELECT community_id, visibility, sort_order FROM profile_showcase_communities_preferences" // #nosec G101 const deleteProfileShowcaseCommunityPreferenceQuery = "DELETE FROM profile_showcase_communities_preferences WHERE community_id = ?" // #nosec G101 +const clearProfileShowcaseCommunitiyPreferencesQuery = "DELETE FROM profile_showcase_communities_preferences" // #nosec G101 -const upsertProfileShowcaseAccountPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_accounts_preferences(address, name, color_id, emoji, visibility, sort_order) VALUES (?, ?, ?, ?, ?, ?)" // #nosec G101 -const selectProfileShowcaseAccountPreferenceQuery = "SELECT address, name, color_id, emoji, visibility, sort_order FROM profile_showcase_accounts_preferences" // #nosec G101 -const selectSpecifiedShowcaseAccountPreferenceQuery = "SELECT address, name, color_id, emoji, visibility, sort_order FROM profile_showcase_accounts_preferences WHERE address = ?" // #nosec G101 -const deleteProfileShowcaseAccountPreferenceQuery = "DELETE FROM profile_showcase_accounts_preferences WHERE address = ?" // #nosec G101 +const upsertProfileShowcaseAccountPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_accounts_preferences(address, visibility, sort_order) VALUES (?, ?, ?)" // #nosec G101 +const selectProfileShowcaseAccountPreferenceQuery = "SELECT address, visibility, sort_order FROM profile_showcase_accounts_preferences" // #nosec G101 +const selectSpecifiedShowcaseAccountPreferenceQuery = "SELECT address, visibility, sort_order FROM profile_showcase_accounts_preferences WHERE address = ?" // #nosec G101 +const deleteProfileShowcaseAccountPreferenceQuery = "DELETE FROM profile_showcase_accounts_preferences WHERE address = ?" // #nosec G101 +const clearProfileShowcaseAccountPreferencesQuery = "DELETE FROM profile_showcase_accounts_preferences" // #nosec G101 -const upsertProfileShowcaseCollectiblePreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_collectibles_preferences(contract_address, chain_id, token_id, community_id, account_address, visibility, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)" // #nosec G101 -const selectProfileShowcaseCollectiblePreferenceQuery = "SELECT contract_address, chain_id, token_id, community_id, account_address, visibility, sort_order FROM profile_showcase_collectibles_preferences" // #nosec G101 +const upsertProfileShowcaseCollectiblePreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_collectibles_preferences(contract_address, chain_id, token_id, visibility, sort_order) VALUES (?, ?, ?, ?, ?)" // #nosec G101 +const selectProfileShowcaseCollectiblePreferenceQuery = "SELECT contract_address, chain_id, token_id, visibility, sort_order FROM profile_showcase_collectibles_preferences" // #nosec G101 +const clearProfileShowcaseCollectiblePreferencesQuery = "DELETE FROM profile_showcase_collectibles_preferences" // #nosec G101 const upsertProfileShowcaseVerifiedTokenPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_verified_tokens_preferences(symbol, visibility, sort_order) VALUES (?, ?, ?)" // #nosec G101 const selectProfileShowcaseVerifiedTokenPreferenceQuery = "SELECT symbol, visibility, sort_order FROM profile_showcase_verified_tokens_preferences" // #nosec G101 +const clearProfileShowcaseVerifiedTokenPreferencesQuery = "DELETE FROM profile_showcase_verified_tokens_preferences" // #nosec G101 -const upsertProfileShowcaseUnverifiedTokenPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_unverified_tokens_preferences(contract_address, chain_id, community_id, visibility, sort_order) VALUES (?, ?, ?, ?, ?)" // #nosec G101 -const selectProfileShowcaseUnverifiedTokenPreferenceQuery = "SELECT contract_address, chain_id, community_id, visibility, sort_order FROM profile_showcase_unverified_tokens_preferences" // #nosec G101 +const upsertProfileShowcaseUnverifiedTokenPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_unverified_tokens_preferences(contract_address, chain_id, visibility, sort_order) VALUES (?, ?, ?, ?)" // #nosec G101 +const selectProfileShowcaseUnverifiedTokenPreferenceQuery = "SELECT contract_address, chain_id, visibility, sort_order FROM profile_showcase_unverified_tokens_preferences" // #nosec G101 +const clearProfileShowcaseUnverifiedTokenPreferencesQuery = "DELETE FROM profile_showcase_unverified_tokens_preferences" // #nosec G101 -const upsertContactProfileShowcaseCommunityQuery = "INSERT OR REPLACE INTO profile_showcase_communities_contacts(contact_id, community_id, sort_order) VALUES (?, ?, ?)" // #nosec G101 -const selectContactProfileShowcaseCommunityQuery = "SELECT community_id, sort_order FROM profile_showcase_communities_contacts WHERE contact_id = ?" // #nosec G101 -const removeContactProfileShowcaseCommunityQuery = "DELETE FROM profile_showcase_communities_contacts WHERE contact_id = ?" // #nosec G101 +const upsertProfileShowcaseSocialLinkPreferenceQuery = "INSERT OR REPLACE INTO profile_showcase_social_links_preferences(url, text, visibility, sort_order) VALUES (?, ?, ?, ?)" // #nosec G101 +const selectProfileShowcaseSocialLinkPreferenceQuery = "SELECT url, text, visibility, sort_order FROM profile_showcase_social_links_preferences" // #nosec G101 +const clearProfileShowcaseSocialLinkPreferencesQuery = "DELETE FROM profile_showcase_social_links_preferences" // #nosec G101 + +// Profile showcase for a contact +const upsertContactProfileShowcaseCommunityQuery = "INSERT OR REPLACE INTO profile_showcase_communities_contacts(contact_id, community_id, sort_order, grant) VALUES (?, ?, ?, ?)" // #nosec G101 +const selectContactProfileShowcaseCommunityQuery = "SELECT community_id, sort_order, grant FROM profile_showcase_communities_contacts WHERE contact_id = ?" // #nosec G101 +const removeContactProfileShowcaseCommunityQuery = "DELETE FROM profile_showcase_communities_contacts WHERE contact_id = ?" // #nosec G101 const upsertContactProfileShowcaseAccountQuery = "INSERT OR REPLACE INTO profile_showcase_accounts_contacts(contact_id, address, name, color_id, emoji, sort_order) VALUES (?, ?, ?, ?, ?, ?)" // #nosec G101 const selectContactProfileShowcaseAccountQuery = "SELECT * FROM profile_showcase_accounts_contacts WHERE contact_id = ?" // #nosec G101 const removeContactProfileShowcaseAccountQuery = "DELETE FROM profile_showcase_accounts_contacts WHERE contact_id = ?" // #nosec G101 -const upsertContactProfileShowcaseCollectibleQuery = "INSERT OR REPLACE INTO profile_showcase_collectibles_contacts(contact_id, contract_address, chain_id, token_id, community_id, account_address, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)" // #nosec G101 -const selectContactProfileShowcaseCollectibleQuery = "SELECT contract_address, chain_id, token_id, community_id, account_address, sort_order FROM profile_showcase_collectibles_contacts WHERE contact_id = ?" // #nosec G101 -const removeContactProfileShowcaseCollectibleQuery = "DELETE FROM profile_showcase_collectibles_contacts WHERE contact_id = ?" // #nosec G101 +const upsertContactProfileShowcaseCollectibleQuery = "INSERT OR REPLACE INTO profile_showcase_collectibles_contacts(contact_id, contract_address, chain_id, token_id, sort_order) VALUES (?, ?, ?, ?, ?)" // #nosec G101 +const selectContactProfileShowcaseCollectibleQuery = "SELECT contract_address, chain_id, token_id, sort_order FROM profile_showcase_collectibles_contacts WHERE contact_id = ?" // #nosec G101 +const removeContactProfileShowcaseCollectibleQuery = "DELETE FROM profile_showcase_collectibles_contacts WHERE contact_id = ?" // #nosec G101 const upsertContactProfileShowcaseVerifiedTokenQuery = "INSERT OR REPLACE INTO profile_showcase_verified_tokens_contacts(contact_id, symbol, sort_order) VALUES (?, ?, ?)" // #nosec G101 const selectContactProfileShowcaseVerifiedTokenQuery = "SELECT symbol, sort_order FROM profile_showcase_verified_tokens_contacts WHERE contact_id = ?" // #nosec G101 const removeContactProfileShowcaseVerifiedTokenQuery = "DELETE FROM profile_showcase_verified_tokens_contacts WHERE contact_id = ?" // #nosec G101 -const upsertContactProfileShowcaseUnverifiedTokenQuery = "INSERT OR REPLACE INTO profile_showcase_unverified_tokens_contacts(contact_id, contract_address, chain_id, community_id, sort_order) VALUES (?, ?, ?, ?, ?)" // #nosec G101 -const selectContactProfileShowcaseUnverifiedTokenQuery = "SELECT contract_address, chain_id, community_id, sort_order FROM profile_showcase_unverified_tokens_contacts WHERE contact_id = ?" // #nosec G101 -const removeContactProfileShowcaseUnverifiedTokenQuery = "DELETE FROM profile_showcase_unverified_tokens_contacts WHERE contact_id = ?" // #nosec G101 +const upsertContactProfileShowcaseUnverifiedTokenQuery = "INSERT OR REPLACE INTO profile_showcase_unverified_tokens_contacts(contact_id, contract_address, chain_id, sort_order) VALUES (?, ?, ?, ?)" // #nosec G101 +const selectContactProfileShowcaseUnverifiedTokenQuery = "SELECT contract_address, chain_id, sort_order FROM profile_showcase_unverified_tokens_contacts WHERE contact_id = ?" // #nosec G101 +const removeContactProfileShowcaseUnverifiedTokenQuery = "DELETE FROM profile_showcase_unverified_tokens_contacts WHERE contact_id = ?" // #nosec G101 + +const upsertContactProfileShowcaseSocialLinkQuery = "INSERT OR REPLACE INTO profile_showcase_social_links_contacts(contact_id, url, text, sort_order) VALUES (?, ?, ?, ?)" // #nosec G101 +const selectContactProfileShowcaseSocialLinkQuery = "SELECT url, text, sort_order FROM profile_showcase_social_links_contacts WHERE contact_id = ?" // #nosec G101 +const removeContactProfileShowcaseSocialLinkQuery = "DELETE FROM profile_showcase_social_links_contacts WHERE contact_id = ?" // #nosec G101 const selectProfileShowcaseAccountsWhichMatchTheAddress = ` SELECT psa.* @@ -65,99 +76,20 @@ WHERE psa.address = ? ` -type ProfileShowcaseCommunityPreference struct { - CommunityID string `json:"communityId"` - ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` - Order int `json:"order"` +// Queries for the profile showcase preferences + +func (db sqlitePersistence) saveProfileShowcasePreferencesClock(tx *sql.Tx, clock uint64) error { + _, err := tx.Exec(upsertProfileShowcasePreferencesQuery, clock, clock) + return err } -type ProfileShowcaseAccountPreference struct { - Address string `json:"address"` - Name string `json:"name"` - ColorID string `json:"colorId"` - Emoji string `json:"emoji"` - ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` - Order int `json:"order"` +func (db sqlitePersistence) getProfileShowcasePreferencesClock(tx *sql.Tx) (uint64, error) { + var clock uint64 + err := tx.QueryRow(selectProfileShowcasePreferencesQuery).Scan(&clock) + return clock, err } -type ProfileShowcaseCollectiblePreference struct { - ContractAddress string `json:"contractAddress"` - ChainID uint64 `json:"chainId"` - TokenID string `json:"tokenId"` - CommunityID string `json:"communityId"` - AccountAddress string `json:"accountAddress"` - ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` - Order int `json:"order"` -} - -type ProfileShowcaseVerifiedTokenPreference struct { - Symbol string `json:"symbol"` - ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` - Order int `json:"order"` -} - -type ProfileShowcaseUnverifiedTokenPreference struct { - ContractAddress string `json:"contractAddress"` - ChainID uint64 `json:"chainId"` - CommunityID string `json:"communityId"` - ShowcaseVisibility ProfileShowcaseVisibility `json:"showcaseVisibility"` - Order int `json:"order"` -} - -type ProfileShowcasePreferences struct { - Communities []*ProfileShowcaseCommunityPreference `json:"communities"` - Accounts []*ProfileShowcaseAccountPreference `json:"accounts"` - Collectibles []*ProfileShowcaseCollectiblePreference `json:"collectibles"` - VerifiedTokens []*ProfileShowcaseVerifiedTokenPreference `json:"verifiedTokens"` - UnverifiedTokens []*ProfileShowcaseUnverifiedTokenPreference `json:"unverifiedTokens"` -} - -type ProfileShowcaseCommunity struct { - CommunityID string `json:"communityId"` - Order int `json:"order"` -} - -type ProfileShowcaseAccount struct { - ContactID string `json:"contactId"` - Address string `json:"address"` - Name string `json:"name"` - ColorID string `json:"colorId"` - Emoji string `json:"emoji"` - Order int `json:"order"` -} - -type ProfileShowcaseCollectible struct { - ContractAddress string `json:"contractAddress"` - ChainID uint64 `json:"chainId"` - TokenID string `json:"tokenId"` - CommunityID string `json:"communityId"` - AccountAddress string `json:"accountAddress"` - Order int `json:"order"` -} - -type ProfileShowcaseVerifiedToken struct { - Symbol string `json:"symbol"` - Order int `json:"order"` -} - -type ProfileShowcaseUnverifiedToken struct { - ContractAddress string `json:"contractAddress"` - ChainID uint64 `json:"chainId"` - CommunityID string `json:"communityId"` - Order int `json:"order"` -} - -type ProfileShowcase struct { - ContactID string `json:"contactId"` - Communities []*ProfileShowcaseCommunity `json:"communities"` - Accounts []*ProfileShowcaseAccount `json:"accounts"` - Collectibles []*ProfileShowcaseCollectible `json:"collectibles"` - VerifiedTokens []*ProfileShowcaseVerifiedToken `json:"verifiedTokens"` - UnverifiedTokens []*ProfileShowcaseUnverifiedToken `json:"unverifiedTokens"` -} - -// Queries for showcase preferences -func (db sqlitePersistence) saveProfileShowcaseCommunityPreference(tx *sql.Tx, community *ProfileShowcaseCommunityPreference) error { +func (db sqlitePersistence) saveProfileShowcaseCommunityPreference(tx *sql.Tx, community *identity.ProfileShowcaseCommunityPreference) error { _, err := tx.Exec(upsertProfileShowcaseCommunityPreferenceQuery, community.CommunityID, community.ShowcaseVisibility, @@ -167,16 +99,16 @@ func (db sqlitePersistence) saveProfileShowcaseCommunityPreference(tx *sql.Tx, c return err } -func (db sqlitePersistence) getProfileShowcaseCommunitiesPreferences(tx *sql.Tx) ([]*ProfileShowcaseCommunityPreference, error) { +func (db sqlitePersistence) getProfileShowcaseCommunitiesPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseCommunityPreference, error) { rows, err := tx.Query(selectProfileShowcaseCommunityPreferenceQuery) if err != nil { return nil, err } - communities := []*ProfileShowcaseCommunityPreference{} + communities := []*identity.ProfileShowcaseCommunityPreference{} for rows.Next() { - community := &ProfileShowcaseCommunityPreference{} + community := &identity.ProfileShowcaseCommunityPreference{} err := rows.Scan( &community.CommunityID, @@ -193,12 +125,24 @@ func (db sqlitePersistence) getProfileShowcaseCommunitiesPreferences(tx *sql.Tx) return communities, nil } -func (db sqlitePersistence) saveProfileShowcaseAccountPreference(tx *sql.Tx, account *ProfileShowcaseAccountPreference) error { +func (db sqlitePersistence) DeleteProfileShowcaseCommunityPreference(communityID string) (bool, error) { + result, err := db.db.Exec(deleteProfileShowcaseCommunityPreferenceQuery, communityID) + if err != nil { + return false, err + } + + rows, err := result.RowsAffected() + return rows > 0, err +} + +func (db sqlitePersistence) clearProfileShowcaseCommunityPreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseCommunitiyPreferencesQuery) + return err +} + +func (db sqlitePersistence) saveProfileShowcaseAccountPreference(tx *sql.Tx, account *identity.ProfileShowcaseAccountPreference) error { _, err := tx.Exec(upsertProfileShowcaseAccountPreferenceQuery, account.Address, - account.Name, - account.ColorID, - account.Emoji, account.ShowcaseVisibility, account.Order, ) @@ -206,19 +150,16 @@ func (db sqlitePersistence) saveProfileShowcaseAccountPreference(tx *sql.Tx, acc return err } -func (db sqlitePersistence) processProfileShowcaseAccountPreferences(rows *sql.Rows) (result []*ProfileShowcaseAccountPreference, err error) { +func (db sqlitePersistence) processProfileShowcaseAccountPreferences(rows *sql.Rows) (result []*identity.ProfileShowcaseAccountPreference, err error) { if rows == nil { return nil, errors.New("rows is nil") } for rows.Next() { - account := &ProfileShowcaseAccountPreference{} + account := &identity.ProfileShowcaseAccountPreference{} err := rows.Scan( &account.Address, - &account.Name, - &account.ColorID, - &account.Emoji, &account.ShowcaseVisibility, &account.Order, ) @@ -234,7 +175,7 @@ func (db sqlitePersistence) processProfileShowcaseAccountPreferences(rows *sql.R return } -func (db sqlitePersistence) getProfileShowcaseAccountsPreferences(tx *sql.Tx) ([]*ProfileShowcaseAccountPreference, error) { +func (db sqlitePersistence) getProfileShowcaseAccountsPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseAccountPreference, error) { rows, err := tx.Query(selectProfileShowcaseAccountPreferenceQuery) if err != nil { return nil, err @@ -243,7 +184,7 @@ func (db sqlitePersistence) getProfileShowcaseAccountsPreferences(tx *sql.Tx) ([ return db.processProfileShowcaseAccountPreferences(rows) } -func (db sqlitePersistence) GetProfileShowcaseAccountPreference(accountAddress string) (*ProfileShowcaseAccountPreference, error) { +func (db sqlitePersistence) GetProfileShowcaseAccountPreference(accountAddress string) (*identity.ProfileShowcaseAccountPreference, error) { rows, err := db.db.Query(selectSpecifiedShowcaseAccountPreferenceQuery, accountAddress) if err != nil { return nil, err @@ -266,23 +207,16 @@ func (db sqlitePersistence) DeleteProfileShowcaseAccountPreference(accountAddres return rows > 0, err } -func (db sqlitePersistence) DeleteProfileShowcaseCommunityPreference(communityID string) (bool, error) { - result, err := db.db.Exec(deleteProfileShowcaseCommunityPreferenceQuery, communityID) - if err != nil { - return false, err - } - - rows, err := result.RowsAffected() - return rows > 0, err +func (db sqlitePersistence) clearProfileShowcaseAccountPreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseAccountPreferencesQuery) + return err } -func (db sqlitePersistence) saveProfileShowcaseCollectiblePreference(tx *sql.Tx, collectible *ProfileShowcaseCollectiblePreference) error { +func (db sqlitePersistence) saveProfileShowcaseCollectiblePreference(tx *sql.Tx, collectible *identity.ProfileShowcaseCollectiblePreference) error { _, err := tx.Exec(upsertProfileShowcaseCollectiblePreferenceQuery, collectible.ContractAddress, collectible.ChainID, collectible.TokenID, - collectible.CommunityID, - collectible.AccountAddress, collectible.ShowcaseVisibility, collectible.Order, ) @@ -290,23 +224,21 @@ func (db sqlitePersistence) saveProfileShowcaseCollectiblePreference(tx *sql.Tx, return err } -func (db sqlitePersistence) getProfileShowcaseCollectiblesPreferences(tx *sql.Tx) ([]*ProfileShowcaseCollectiblePreference, error) { +func (db sqlitePersistence) getProfileShowcaseCollectiblesPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseCollectiblePreference, error) { rows, err := tx.Query(selectProfileShowcaseCollectiblePreferenceQuery) if err != nil { return nil, err } - collectibles := []*ProfileShowcaseCollectiblePreference{} + collectibles := []*identity.ProfileShowcaseCollectiblePreference{} for rows.Next() { - collectible := &ProfileShowcaseCollectiblePreference{} + collectible := &identity.ProfileShowcaseCollectiblePreference{} err := rows.Scan( &collectible.ContractAddress, &collectible.ChainID, &collectible.TokenID, - &collectible.CommunityID, - &collectible.AccountAddress, &collectible.ShowcaseVisibility, &collectible.Order, ) @@ -320,7 +252,12 @@ func (db sqlitePersistence) getProfileShowcaseCollectiblesPreferences(tx *sql.Tx return collectibles, nil } -func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenPreference(tx *sql.Tx, token *ProfileShowcaseVerifiedTokenPreference) error { +func (db sqlitePersistence) clearProfileShowcaseCollectiblePreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseCollectiblePreferencesQuery) + return err +} + +func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenPreference(tx *sql.Tx, token *identity.ProfileShowcaseVerifiedTokenPreference) error { _, err := tx.Exec(upsertProfileShowcaseVerifiedTokenPreferenceQuery, token.Symbol, token.ShowcaseVisibility, @@ -330,28 +267,16 @@ func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenPreference(tx *sql.T return err } -func (db sqlitePersistence) saveProfileShowcaseUnverifiedTokenPreference(tx *sql.Tx, token *ProfileShowcaseUnverifiedTokenPreference) error { - _, err := tx.Exec(upsertProfileShowcaseUnverifiedTokenPreferenceQuery, - token.ContractAddress, - token.ChainID, - token.CommunityID, - token.ShowcaseVisibility, - token.Order, - ) - - return err -} - -func (db sqlitePersistence) getProfileShowcaseVerifiedTokensPreferences(tx *sql.Tx) ([]*ProfileShowcaseVerifiedTokenPreference, error) { +func (db sqlitePersistence) getProfileShowcaseVerifiedTokensPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseVerifiedTokenPreference, error) { rows, err := tx.Query(selectProfileShowcaseVerifiedTokenPreferenceQuery) if err != nil { return nil, err } - tokens := []*ProfileShowcaseVerifiedTokenPreference{} + tokens := []*identity.ProfileShowcaseVerifiedTokenPreference{} for rows.Next() { - token := &ProfileShowcaseVerifiedTokenPreference{} + token := &identity.ProfileShowcaseVerifiedTokenPreference{} err := rows.Scan( &token.Symbol, @@ -368,21 +293,36 @@ func (db sqlitePersistence) getProfileShowcaseVerifiedTokensPreferences(tx *sql. return tokens, nil } -func (db sqlitePersistence) getProfileShowcaseUnverifiedTokensPreferences(tx *sql.Tx) ([]*ProfileShowcaseUnverifiedTokenPreference, error) { +func (db sqlitePersistence) clearProfileShowcaseVerifiedTokenPreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseVerifiedTokenPreferencesQuery) + return err +} + +func (db sqlitePersistence) saveProfileShowcaseUnverifiedTokenPreference(tx *sql.Tx, token *identity.ProfileShowcaseUnverifiedTokenPreference) error { + _, err := tx.Exec(upsertProfileShowcaseUnverifiedTokenPreferenceQuery, + token.ContractAddress, + token.ChainID, + token.ShowcaseVisibility, + token.Order, + ) + + return err +} + +func (db sqlitePersistence) getProfileShowcaseUnverifiedTokensPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseUnverifiedTokenPreference, error) { rows, err := tx.Query(selectProfileShowcaseUnverifiedTokenPreferenceQuery) if err != nil { return nil, err } - tokens := []*ProfileShowcaseUnverifiedTokenPreference{} + tokens := []*identity.ProfileShowcaseUnverifiedTokenPreference{} for rows.Next() { - token := &ProfileShowcaseUnverifiedTokenPreference{} + token := &identity.ProfileShowcaseUnverifiedTokenPreference{} err := rows.Scan( &token.ContractAddress, &token.ChainID, - &token.CommunityID, &token.ShowcaseVisibility, &token.Order, ) @@ -396,29 +336,78 @@ func (db sqlitePersistence) getProfileShowcaseUnverifiedTokensPreferences(tx *sq return tokens, nil } -// Queries for contacts showcase -func (db sqlitePersistence) saveProfileShowcaseCommunityContact(tx *sql.Tx, contactID string, community *ProfileShowcaseCommunity) error { - _, err := tx.Exec(upsertContactProfileShowcaseCommunityQuery, - contactID, - community.CommunityID, - community.Order, +func (db sqlitePersistence) clearProfileShowcaseUnverifiedTokenPreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseUnverifiedTokenPreferencesQuery) + return err +} + +func (db sqlitePersistence) saveProfileShowcaseSocialLinkPreference(tx *sql.Tx, link *identity.ProfileShowcaseSocialLinkPreference) error { + _, err := tx.Exec(upsertProfileShowcaseSocialLinkPreferenceQuery, + link.URL, + link.Text, + link.ShowcaseVisibility, + link.Order, ) return err } -func (db sqlitePersistence) getProfileShowcaseCommunitiesContact(tx *sql.Tx, contactID string) ([]*ProfileShowcaseCommunity, error) { +func (db sqlitePersistence) getProfileShowcaseSocialLinkPreferences(tx *sql.Tx) ([]*identity.ProfileShowcaseSocialLinkPreference, error) { + rows, err := tx.Query(selectProfileShowcaseSocialLinkPreferenceQuery) + if err != nil { + return nil, err + } + + links := []*identity.ProfileShowcaseSocialLinkPreference{} + + for rows.Next() { + link := &identity.ProfileShowcaseSocialLinkPreference{} + + err := rows.Scan( + &link.URL, + &link.Text, + &link.ShowcaseVisibility, + &link.Order, + ) + + if err != nil { + return nil, err + } + + links = append(links, link) + } + return links, nil +} + +func (db sqlitePersistence) clearProfileShowcaseSocialLinkPreferences(tx *sql.Tx) error { + _, err := tx.Exec(clearProfileShowcaseSocialLinkPreferencesQuery) + return err +} + +// Queries for the profile showcase for a contact +func (db sqlitePersistence) saveProfileShowcaseCommunityContact(tx *sql.Tx, contactID string, community *identity.ProfileShowcaseCommunity) error { + _, err := tx.Exec(upsertContactProfileShowcaseCommunityQuery, + contactID, + community.CommunityID, + community.Order, + community.Grant, + ) + + return err +} + +func (db sqlitePersistence) getProfileShowcaseCommunitiesContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseCommunity, error) { rows, err := tx.Query(selectContactProfileShowcaseCommunityQuery, contactID) if err != nil { return nil, err } - communities := []*ProfileShowcaseCommunity{} + communities := []*identity.ProfileShowcaseCommunity{} for rows.Next() { - community := &ProfileShowcaseCommunity{} + community := &identity.ProfileShowcaseCommunity{} - err := rows.Scan(&community.CommunityID, &community.Order) + err := rows.Scan(&community.CommunityID, &community.Order, &community.Grant) if err != nil { return nil, err } @@ -437,7 +426,7 @@ func (db sqlitePersistence) clearProfileShowcaseCommunityContact(tx *sql.Tx, con return nil } -func (db sqlitePersistence) saveProfileShowcaseAccountContact(tx *sql.Tx, contactID string, account *ProfileShowcaseAccount) error { +func (db sqlitePersistence) saveProfileShowcaseAccountContact(tx *sql.Tx, contactID string, account *identity.ProfileShowcaseAccount) error { _, err := tx.Exec(upsertContactProfileShowcaseAccountQuery, contactID, account.Address, @@ -450,14 +439,13 @@ func (db sqlitePersistence) saveProfileShowcaseAccountContact(tx *sql.Tx, contac return err } -func (db sqlitePersistence) processProfileShowcaseAccounts(rows *sql.Rows) (result []*ProfileShowcaseAccount, err error) { +func (db sqlitePersistence) processProfileShowcaseAccounts(rows *sql.Rows) (result []*identity.ProfileShowcaseAccount, err error) { if rows == nil { return nil, errors.New("rows is nil") } for rows.Next() { - account := &ProfileShowcaseAccount{} - + account := &identity.ProfileShowcaseAccount{} err = rows.Scan(&account.Address, &account.Name, &account.ColorID, &account.Emoji, &account.Order, &account.ContactID) if err != nil { return @@ -470,7 +458,7 @@ func (db sqlitePersistence) processProfileShowcaseAccounts(rows *sql.Rows) (resu return } -func (db sqlitePersistence) getProfileShowcaseAccountsContact(tx *sql.Tx, contactID string) ([]*ProfileShowcaseAccount, error) { +func (db sqlitePersistence) getProfileShowcaseAccountsContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseAccount, error) { rows, err := tx.Query(selectContactProfileShowcaseAccountQuery, contactID) if err != nil { return nil, err @@ -479,7 +467,7 @@ func (db sqlitePersistence) getProfileShowcaseAccountsContact(tx *sql.Tx, contac return db.processProfileShowcaseAccounts(rows) } -func (db sqlitePersistence) GetProfileShowcaseAccountsByAddress(address string) ([]*ProfileShowcaseAccount, error) { +func (db sqlitePersistence) GetProfileShowcaseAccountsByAddress(address string) ([]*identity.ProfileShowcaseAccount, error) { rows, err := db.db.Query(selectProfileShowcaseAccountsWhichMatchTheAddress, address) if err != nil { return nil, err @@ -493,37 +481,33 @@ func (db sqlitePersistence) clearProfileShowcaseAccountsContact(tx *sql.Tx, cont return err } -func (db sqlitePersistence) saveProfileShowcaseCollectibleContact(tx *sql.Tx, contactID string, collectible *ProfileShowcaseCollectible) error { +func (db sqlitePersistence) saveProfileShowcaseCollectibleContact(tx *sql.Tx, contactID string, collectible *identity.ProfileShowcaseCollectible) error { _, err := tx.Exec(upsertContactProfileShowcaseCollectibleQuery, contactID, collectible.ContractAddress, collectible.ChainID, collectible.TokenID, - collectible.CommunityID, - collectible.AccountAddress, collectible.Order, ) return err } -func (db sqlitePersistence) getProfileShowcaseCollectiblesContact(tx *sql.Tx, contactID string) ([]*ProfileShowcaseCollectible, error) { +func (db sqlitePersistence) getProfileShowcaseCollectiblesContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseCollectible, error) { rows, err := tx.Query(selectContactProfileShowcaseCollectibleQuery, contactID) if err != nil { return nil, err } - collectibles := []*ProfileShowcaseCollectible{} + collectibles := []*identity.ProfileShowcaseCollectible{} for rows.Next() { - collectible := &ProfileShowcaseCollectible{} + collectible := &identity.ProfileShowcaseCollectible{} err := rows.Scan( &collectible.ContractAddress, &collectible.ChainID, &collectible.TokenID, - &collectible.CommunityID, - &collectible.AccountAddress, &collectible.Order) if err != nil { return nil, err @@ -539,7 +523,7 @@ func (db sqlitePersistence) clearProfileShowcaseCollectiblesContact(tx *sql.Tx, return err } -func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenContact(tx *sql.Tx, contactID string, token *ProfileShowcaseVerifiedToken) error { +func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenContact(tx *sql.Tx, contactID string, token *identity.ProfileShowcaseVerifiedToken) error { _, err := tx.Exec(upsertContactProfileShowcaseVerifiedTokenQuery, contactID, token.Symbol, @@ -549,28 +533,16 @@ func (db sqlitePersistence) saveProfileShowcaseVerifiedTokenContact(tx *sql.Tx, return err } -func (db sqlitePersistence) saveProfileShowcaseUnverifiedTokenContact(tx *sql.Tx, contactID string, token *ProfileShowcaseUnverifiedToken) error { - _, err := tx.Exec(upsertContactProfileShowcaseUnverifiedTokenQuery, - contactID, - token.ContractAddress, - token.ChainID, - token.CommunityID, - token.Order, - ) - - return err -} - -func (db sqlitePersistence) getProfileShowcaseVerifiedTokensContact(tx *sql.Tx, contactID string) ([]*ProfileShowcaseVerifiedToken, error) { +func (db sqlitePersistence) getProfileShowcaseVerifiedTokensContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseVerifiedToken, error) { rows, err := tx.Query(selectContactProfileShowcaseVerifiedTokenQuery, contactID) if err != nil { return nil, err } - tokens := []*ProfileShowcaseVerifiedToken{} + tokens := []*identity.ProfileShowcaseVerifiedToken{} for rows.Next() { - token := &ProfileShowcaseVerifiedToken{} + token := &identity.ProfileShowcaseVerifiedToken{} err := rows.Scan( &token.Symbol, @@ -584,43 +556,97 @@ func (db sqlitePersistence) getProfileShowcaseVerifiedTokensContact(tx *sql.Tx, return tokens, nil } -func (db sqlitePersistence) getProfileShowcaseUnverifiedTokensContact(tx *sql.Tx, contactID string) ([]*ProfileShowcaseUnverifiedToken, error) { - rows, err := tx.Query(selectContactProfileShowcaseUnverifiedTokenQuery, contactID) - if err != nil { - return nil, err - } - - tokens := []*ProfileShowcaseUnverifiedToken{} - - for rows.Next() { - token := &ProfileShowcaseUnverifiedToken{} - - err := rows.Scan( - &token.ContractAddress, - &token.ChainID, - &token.CommunityID, - &token.Order) - if err != nil { - return nil, err - } - - tokens = append(tokens, token) - } - return tokens, nil -} - func (db sqlitePersistence) clearProfileShowcaseVerifiedTokensContact(tx *sql.Tx, contactID string) error { _, err := tx.Exec(removeContactProfileShowcaseVerifiedTokenQuery, contactID) return err } +func (db sqlitePersistence) saveProfileShowcaseUnverifiedTokenContact(tx *sql.Tx, contactID string, token *identity.ProfileShowcaseUnverifiedToken) error { + _, err := tx.Exec(upsertContactProfileShowcaseUnverifiedTokenQuery, + contactID, + token.ContractAddress, + token.ChainID, + token.Order, + ) + + return err +} + +func (db sqlitePersistence) getProfileShowcaseUnverifiedTokensContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseUnverifiedToken, error) { + rows, err := tx.Query(selectContactProfileShowcaseUnverifiedTokenQuery, contactID) + if err != nil { + return nil, err + } + + tokens := []*identity.ProfileShowcaseUnverifiedToken{} + + for rows.Next() { + token := &identity.ProfileShowcaseUnverifiedToken{} + + err := rows.Scan( + &token.ContractAddress, + &token.ChainID, + &token.Order) + if err != nil { + return nil, err + } + + tokens = append(tokens, token) + } + return tokens, nil +} + func (db sqlitePersistence) clearProfileShowcaseUnverifiedTokensContact(tx *sql.Tx, contactID string) error { _, err := tx.Exec(removeContactProfileShowcaseUnverifiedTokenQuery, contactID) return err } +func (db sqlitePersistence) saveProfileShowcaseSocialLinkContact(tx *sql.Tx, contactID string, link *identity.ProfileShowcaseSocialLink) error { + _, err := tx.Exec(upsertContactProfileShowcaseSocialLinkQuery, + contactID, + link.URL, + link.Text, + link.Order, + ) + + return err +} + +func (db sqlitePersistence) getProfileShowcaseSocialLinksContact(tx *sql.Tx, contactID string) ([]*identity.ProfileShowcaseSocialLink, error) { + rows, err := tx.Query(selectContactProfileShowcaseSocialLinkQuery, contactID) + if err != nil { + return nil, err + } + + links := []*identity.ProfileShowcaseSocialLink{} + + for rows.Next() { + link := &identity.ProfileShowcaseSocialLink{} + + err := rows.Scan( + &link.URL, + &link.Text, + &link.Order) + if err != nil { + return nil, err + } + + links = append(links, link) + } + err = rows.Err() + if err != nil { + return nil, err + } + return links, nil +} + +func (db sqlitePersistence) clearProfileShowcaseSocialLinksContact(tx *sql.Tx, contactID string) error { + _, err := tx.Exec(removeContactProfileShowcaseSocialLinkQuery, contactID) + return err +} + // public functions -func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileShowcasePreferences) error { +func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *identity.ProfileShowcasePreferences) error { tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return err @@ -634,6 +660,11 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS _ = tx.Rollback() }() + err = db.clearProfileShowcaseCommunityPreferences(tx) + if err != nil { + return err + } + for _, community := range preferences.Communities { err = db.saveProfileShowcaseCommunityPreference(tx, community) if err != nil { @@ -641,6 +672,11 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS } } + err = db.clearProfileShowcaseAccountPreferences(tx) + if err != nil { + return err + } + for _, account := range preferences.Accounts { err = db.saveProfileShowcaseAccountPreference(tx, account) if err != nil { @@ -648,6 +684,11 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS } } + err = db.clearProfileShowcaseCollectiblePreferences(tx) + if err != nil { + return err + } + for _, collectible := range preferences.Collectibles { err = db.saveProfileShowcaseCollectiblePreference(tx, collectible) if err != nil { @@ -655,6 +696,11 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS } } + err = db.clearProfileShowcaseVerifiedTokenPreferences(tx) + if err != nil { + return err + } + for _, token := range preferences.VerifiedTokens { err = db.saveProfileShowcaseVerifiedTokenPreference(tx, token) if err != nil { @@ -662,6 +708,11 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS } } + err = db.clearProfileShowcaseUnverifiedTokenPreferences(tx) + if err != nil { + return err + } + for _, token := range preferences.UnverifiedTokens { err = db.saveProfileShowcaseUnverifiedTokenPreference(tx, token) if err != nil { @@ -669,10 +720,27 @@ func (db sqlitePersistence) SaveProfileShowcasePreferences(preferences *ProfileS } } + err = db.clearProfileShowcaseSocialLinkPreferences(tx) + if err != nil { + return err + } + + for _, link := range preferences.SocialLinks { + err = db.saveProfileShowcaseSocialLinkPreference(tx, link) + if err != nil { + return err + } + } + + err = db.saveProfileShowcasePreferencesClock(tx, preferences.Clock) + if err != nil { + return err + } + return nil } -func (db sqlitePersistence) SaveProfileShowcaseAccountPreference(account *ProfileShowcaseAccountPreference) error { +func (db sqlitePersistence) SaveProfileShowcaseAccountPreference(account *identity.ProfileShowcaseAccountPreference) error { tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return err @@ -688,7 +756,7 @@ func (db sqlitePersistence) SaveProfileShowcaseAccountPreference(account *Profil return db.saveProfileShowcaseAccountPreference(tx, account) } -func (db sqlitePersistence) GetProfileShowcasePreferences() (*ProfileShowcasePreferences, error) { +func (db sqlitePersistence) GetProfileShowcasePreferences() (*identity.ProfileShowcasePreferences, error) { tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return nil, err @@ -702,6 +770,11 @@ func (db sqlitePersistence) GetProfileShowcasePreferences() (*ProfileShowcasePre _ = tx.Rollback() }() + clock, err := db.getProfileShowcasePreferencesClock(tx) + if err != nil { + return nil, err + } + communities, err := db.getProfileShowcaseCommunitiesPreferences(tx) if err != nil { return nil, err @@ -727,16 +800,23 @@ func (db sqlitePersistence) GetProfileShowcasePreferences() (*ProfileShowcasePre return nil, err } - return &ProfileShowcasePreferences{ + socialLinks, err := db.getProfileShowcaseSocialLinkPreferences(tx) + if err != nil { + return nil, err + } + + return &identity.ProfileShowcasePreferences{ + Clock: clock, Communities: communities, Accounts: accounts, Collectibles: collectibles, VerifiedTokens: verifiedTokens, UnverifiedTokens: unverifiedTokens, + SocialLinks: socialLinks, }, nil } -func (db sqlitePersistence) SaveProfileShowcaseForContact(showcase *ProfileShowcase) error { +func (db sqlitePersistence) SaveProfileShowcaseForContact(showcase *identity.ProfileShowcase) error { tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return err @@ -785,10 +865,17 @@ func (db sqlitePersistence) SaveProfileShowcaseForContact(showcase *ProfileShowc } } + for _, link := range showcase.SocialLinks { + err = db.saveProfileShowcaseSocialLinkContact(tx, showcase.ContactID, link) + if err != nil { + return err + } + } + return nil } -func (db sqlitePersistence) GetProfileShowcaseForContact(contactID string) (*ProfileShowcase, error) { +func (db sqlitePersistence) GetProfileShowcaseForContact(contactID string) (*identity.ProfileShowcase, error) { tx, err := db.db.BeginTx(context.Background(), &sql.TxOptions{}) if err != nil { return nil, err @@ -827,13 +914,19 @@ func (db sqlitePersistence) GetProfileShowcaseForContact(contactID string) (*Pro return nil, err } - return &ProfileShowcase{ + socialLinks, err := db.getProfileShowcaseSocialLinksContact(tx, contactID) + if err != nil { + return nil, err + } + + return &identity.ProfileShowcase{ ContactID: contactID, Communities: communities, Accounts: accounts, Collectibles: collectibles, VerifiedTokens: verifiedTokens, UnverifiedTokens: unverifiedTokens, + SocialLinks: socialLinks, }, nil } @@ -876,5 +969,10 @@ func (db sqlitePersistence) ClearProfileShowcaseForContact(contactID string) err return err } + err = db.clearProfileShowcaseSocialLinksContact(tx, contactID) + if err != nil { + return err + } + return nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/anon_metrics.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/anon_metrics.pb.go index 799226b2..1fd708d6 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/anon_metrics.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/anon_metrics.pb.go @@ -1,28 +1,32 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: anon_metrics.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - math "math" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // AnonymousMetric represents a single metric data point type AnonymousMetric struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // id is the unique id of the metric message Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // event is the app metric event type @@ -36,153 +40,243 @@ type AnonymousMetric struct { // session_id is the id of the session the metric was recorded in SessionId string `protobuf:"bytes,6,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // created_at is the datetime at which the metric was stored in the local db - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` } -func (m *AnonymousMetric) Reset() { *m = AnonymousMetric{} } -func (m *AnonymousMetric) String() string { return proto.CompactTextString(m) } -func (*AnonymousMetric) ProtoMessage() {} +func (x *AnonymousMetric) Reset() { + *x = AnonymousMetric{} + if protoimpl.UnsafeEnabled { + mi := &file_anon_metrics_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnonymousMetric) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnonymousMetric) ProtoMessage() {} + +func (x *AnonymousMetric) ProtoReflect() protoreflect.Message { + mi := &file_anon_metrics_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnonymousMetric.ProtoReflect.Descriptor instead. func (*AnonymousMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_4be044a92fa0408c, []int{0} + return file_anon_metrics_proto_rawDescGZIP(), []int{0} } -func (m *AnonymousMetric) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AnonymousMetric.Unmarshal(m, b) -} -func (m *AnonymousMetric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AnonymousMetric.Marshal(b, m, deterministic) -} -func (m *AnonymousMetric) XXX_Merge(src proto.Message) { - xxx_messageInfo_AnonymousMetric.Merge(m, src) -} -func (m *AnonymousMetric) XXX_Size() int { - return xxx_messageInfo_AnonymousMetric.Size(m) -} -func (m *AnonymousMetric) XXX_DiscardUnknown() { - xxx_messageInfo_AnonymousMetric.DiscardUnknown(m) -} - -var xxx_messageInfo_AnonymousMetric proto.InternalMessageInfo - -func (m *AnonymousMetric) GetId() string { - if m != nil { - return m.Id +func (x *AnonymousMetric) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AnonymousMetric) GetEvent() string { - if m != nil { - return m.Event +func (x *AnonymousMetric) GetEvent() string { + if x != nil { + return x.Event } return "" } -func (m *AnonymousMetric) GetValue() []byte { - if m != nil { - return m.Value +func (x *AnonymousMetric) GetValue() []byte { + if x != nil { + return x.Value } return nil } -func (m *AnonymousMetric) GetAppVersion() string { - if m != nil { - return m.AppVersion +func (x *AnonymousMetric) GetAppVersion() string { + if x != nil { + return x.AppVersion } return "" } -func (m *AnonymousMetric) GetOs() string { - if m != nil { - return m.Os +func (x *AnonymousMetric) GetOs() string { + if x != nil { + return x.Os } return "" } -func (m *AnonymousMetric) GetSessionId() string { - if m != nil { - return m.SessionId +func (x *AnonymousMetric) GetSessionId() string { + if x != nil { + return x.SessionId } return "" } -func (m *AnonymousMetric) GetCreatedAt() *timestamppb.Timestamp { - if m != nil { - return m.CreatedAt +func (x *AnonymousMetric) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt } return nil } // AnonymousMetricBatch represents a batch of AnonymousMetrics allowing broadcast of AnonymousMetrics with fewer messages type AnonymousMetricBatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // metrics is an array of AnonymousMetric metrics - Metrics []*AnonymousMetric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Metrics []*AnonymousMetric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty"` } -func (m *AnonymousMetricBatch) Reset() { *m = AnonymousMetricBatch{} } -func (m *AnonymousMetricBatch) String() string { return proto.CompactTextString(m) } -func (*AnonymousMetricBatch) ProtoMessage() {} +func (x *AnonymousMetricBatch) Reset() { + *x = AnonymousMetricBatch{} + if protoimpl.UnsafeEnabled { + mi := &file_anon_metrics_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnonymousMetricBatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnonymousMetricBatch) ProtoMessage() {} + +func (x *AnonymousMetricBatch) ProtoReflect() protoreflect.Message { + mi := &file_anon_metrics_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnonymousMetricBatch.ProtoReflect.Descriptor instead. func (*AnonymousMetricBatch) Descriptor() ([]byte, []int) { - return fileDescriptor_4be044a92fa0408c, []int{1} + return file_anon_metrics_proto_rawDescGZIP(), []int{1} } -func (m *AnonymousMetricBatch) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AnonymousMetricBatch.Unmarshal(m, b) -} -func (m *AnonymousMetricBatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AnonymousMetricBatch.Marshal(b, m, deterministic) -} -func (m *AnonymousMetricBatch) XXX_Merge(src proto.Message) { - xxx_messageInfo_AnonymousMetricBatch.Merge(m, src) -} -func (m *AnonymousMetricBatch) XXX_Size() int { - return xxx_messageInfo_AnonymousMetricBatch.Size(m) -} -func (m *AnonymousMetricBatch) XXX_DiscardUnknown() { - xxx_messageInfo_AnonymousMetricBatch.DiscardUnknown(m) -} - -var xxx_messageInfo_AnonymousMetricBatch proto.InternalMessageInfo - -func (m *AnonymousMetricBatch) GetMetrics() []*AnonymousMetric { - if m != nil { - return m.Metrics +func (x *AnonymousMetricBatch) GetMetrics() []*AnonymousMetric { + if x != nil { + return x.Metrics } return nil } -func init() { - proto.RegisterType((*AnonymousMetric)(nil), "protobuf.AnonymousMetric") - proto.RegisterType((*AnonymousMetricBatch)(nil), "protobuf.AnonymousMetricBatch") +var File_anon_metrics_proto protoreflect.FileDescriptor + +var file_anon_metrics_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x61, 0x6e, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xd8, 0x01, 0x0a, 0x0f, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4b, 0x0a, 0x14, 0x41, 0x6e, + 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("anon_metrics.proto", fileDescriptor_4be044a92fa0408c) +var ( + file_anon_metrics_proto_rawDescOnce sync.Once + file_anon_metrics_proto_rawDescData = file_anon_metrics_proto_rawDesc +) + +func file_anon_metrics_proto_rawDescGZIP() []byte { + file_anon_metrics_proto_rawDescOnce.Do(func() { + file_anon_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_anon_metrics_proto_rawDescData) + }) + return file_anon_metrics_proto_rawDescData } -var fileDescriptor_4be044a92fa0408c = []byte{ - // 269 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x3d, 0x6b, 0xc3, 0x30, - 0x10, 0x86, 0x51, 0xd2, 0x24, 0xf5, 0xb9, 0x1f, 0x20, 0x32, 0xa8, 0x81, 0x12, 0x93, 0xc9, 0x93, - 0x0d, 0xc9, 0x54, 0x3a, 0x25, 0x5b, 0x29, 0x5d, 0x4c, 0xe9, 0xd0, 0xc5, 0x28, 0xb6, 0x9a, 0x0a, - 0x62, 0x9d, 0xb0, 0x64, 0x43, 0xff, 0x69, 0x7f, 0x4e, 0xb1, 0x64, 0x51, 0xc8, 0x24, 0xdd, 0xa3, - 0xf7, 0x5e, 0x78, 0x04, 0x94, 0x2b, 0x54, 0x65, 0x23, 0x6c, 0x2b, 0x2b, 0x93, 0xe9, 0x16, 0x2d, - 0xd2, 0x6b, 0x77, 0x1c, 0xbb, 0xaf, 0xd5, 0xfa, 0x84, 0x78, 0x3a, 0x8b, 0x3c, 0x80, 0xdc, 0xca, - 0x46, 0x18, 0xcb, 0x1b, 0xed, 0xa3, 0x9b, 0x5f, 0x02, 0xf7, 0x7b, 0x85, 0xea, 0xa7, 0xc1, 0xce, - 0xbc, 0xb9, 0x16, 0x7a, 0x07, 0x13, 0x59, 0x33, 0x92, 0x90, 0x34, 0x2a, 0x26, 0xb2, 0xa6, 0x4b, - 0x98, 0x89, 0x5e, 0x28, 0xcb, 0x26, 0x0e, 0xf9, 0x61, 0xa0, 0x3d, 0x3f, 0x77, 0x82, 0x4d, 0x13, - 0x92, 0xde, 0x14, 0x7e, 0xa0, 0x6b, 0x88, 0xb9, 0xd6, 0x65, 0x2f, 0x5a, 0x23, 0x51, 0xb1, 0x2b, - 0xb7, 0x01, 0x5c, 0xeb, 0x0f, 0x4f, 0x86, 0x72, 0x34, 0x6c, 0xe6, 0xcb, 0xd1, 0xd0, 0x47, 0x00, - 0x23, 0xcc, 0xf0, 0x54, 0xca, 0x9a, 0xcd, 0x1d, 0x8f, 0x46, 0xf2, 0x52, 0xd3, 0x27, 0x80, 0xaa, - 0x15, 0xdc, 0x8a, 0xba, 0xe4, 0x96, 0x2d, 0x12, 0x92, 0xc6, 0xdb, 0x55, 0xe6, 0xad, 0xb2, 0x60, - 0x95, 0xbd, 0x07, 0xab, 0x22, 0x1a, 0xd3, 0x7b, 0xbb, 0x79, 0x85, 0xe5, 0x85, 0xd9, 0x81, 0xdb, - 0xea, 0x9b, 0xee, 0x60, 0x31, 0x7e, 0x17, 0x23, 0xc9, 0x34, 0x8d, 0xb7, 0x0f, 0xff, 0x45, 0x17, - 0x0b, 0x45, 0x48, 0x1e, 0x6e, 0x3f, 0xe3, 0x2c, 0x7f, 0x0e, 0xb9, 0xe3, 0xdc, 0xdd, 0x76, 0x7f, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x86, 0xa1, 0x32, 0x7e, 0x01, 0x00, 0x00, +var file_anon_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_anon_metrics_proto_goTypes = []interface{}{ + (*AnonymousMetric)(nil), // 0: protobuf.AnonymousMetric + (*AnonymousMetricBatch)(nil), // 1: protobuf.AnonymousMetricBatch + (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp +} +var file_anon_metrics_proto_depIdxs = []int32{ + 2, // 0: protobuf.AnonymousMetric.created_at:type_name -> google.protobuf.Timestamp + 0, // 1: protobuf.AnonymousMetricBatch.metrics:type_name -> protobuf.AnonymousMetric + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_anon_metrics_proto_init() } +func file_anon_metrics_proto_init() { + if File_anon_metrics_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_anon_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnonymousMetric); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_anon_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnonymousMetricBatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_anon_metrics_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_anon_metrics_proto_goTypes, + DependencyIndexes: file_anon_metrics_proto_depIdxs, + MessageInfos: file_anon_metrics_proto_msgTypes, + }.Build() + File_anon_metrics_proto = out.File + file_anon_metrics_proto_rawDesc = nil + file_anon_metrics_proto_goTypes = nil + file_anon_metrics_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.pb.go index b04df120..3681d73c 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.pb.go @@ -1,54 +1,56 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: application_metadata_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ApplicationMetadataMessage_Type int32 const ( - ApplicationMetadataMessage_UNKNOWN ApplicationMetadataMessage_Type = 0 - ApplicationMetadataMessage_CHAT_MESSAGE ApplicationMetadataMessage_Type = 1 - ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2 - ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3 - ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4 - ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5 // Deprecated: Do not use. - ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 6 - ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 7 - ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 8 - ApplicationMetadataMessage_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 9 - ApplicationMetadataMessage_SEND_TRANSACTION ApplicationMetadataMessage_Type = 10 - ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 11 - ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2 ApplicationMetadataMessage_Type = 12 - ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT ApplicationMetadataMessage_Type = 13 - ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT ApplicationMetadataMessage_Type = 15 - ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION ApplicationMetadataMessage_Type = 16 - ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION_RESPONSE ApplicationMetadataMessage_Type = 17 - ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY ApplicationMetadataMessage_Type = 18 - ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY_RESPONSE ApplicationMetadataMessage_Type = 19 - ApplicationMetadataMessage_PUSH_NOTIFICATION_REQUEST ApplicationMetadataMessage_Type = 20 - ApplicationMetadataMessage_PUSH_NOTIFICATION_RESPONSE ApplicationMetadataMessage_Type = 21 - ApplicationMetadataMessage_EMOJI_REACTION ApplicationMetadataMessage_Type = 22 - ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23 - ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24 - ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25 - ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 // Deprecated: Do not use. + ApplicationMetadataMessage_UNKNOWN ApplicationMetadataMessage_Type = 0 + ApplicationMetadataMessage_CHAT_MESSAGE ApplicationMetadataMessage_Type = 1 + ApplicationMetadataMessage_CONTACT_UPDATE ApplicationMetadataMessage_Type = 2 + ApplicationMetadataMessage_MEMBERSHIP_UPDATE_MESSAGE ApplicationMetadataMessage_Type = 3 + ApplicationMetadataMessage_SYNC_PAIR_INSTALLATION ApplicationMetadataMessage_Type = 4 + // Deprecated: Marked as deprecated in application_metadata_message.proto. + ApplicationMetadataMessage_DEPRECATED_SYNC_INSTALLATION ApplicationMetadataMessage_Type = 5 + ApplicationMetadataMessage_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 6 + ApplicationMetadataMessage_ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 7 + ApplicationMetadataMessage_DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION ApplicationMetadataMessage_Type = 8 + ApplicationMetadataMessage_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 9 + ApplicationMetadataMessage_SEND_TRANSACTION ApplicationMetadataMessage_Type = 10 + ApplicationMetadataMessage_DECLINE_REQUEST_TRANSACTION ApplicationMetadataMessage_Type = 11 + ApplicationMetadataMessage_SYNC_INSTALLATION_CONTACT_V2 ApplicationMetadataMessage_Type = 12 + ApplicationMetadataMessage_SYNC_INSTALLATION_ACCOUNT ApplicationMetadataMessage_Type = 13 + ApplicationMetadataMessage_CONTACT_CODE_ADVERTISEMENT ApplicationMetadataMessage_Type = 15 + ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION ApplicationMetadataMessage_Type = 16 + ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION_RESPONSE ApplicationMetadataMessage_Type = 17 + ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY ApplicationMetadataMessage_Type = 18 + ApplicationMetadataMessage_PUSH_NOTIFICATION_QUERY_RESPONSE ApplicationMetadataMessage_Type = 19 + ApplicationMetadataMessage_PUSH_NOTIFICATION_REQUEST ApplicationMetadataMessage_Type = 20 + ApplicationMetadataMessage_PUSH_NOTIFICATION_RESPONSE ApplicationMetadataMessage_Type = 21 + ApplicationMetadataMessage_EMOJI_REACTION ApplicationMetadataMessage_Type = 22 + ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23 + ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24 + ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25 + // Deprecated: Marked as deprecated in application_metadata_message.proto. + ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27 ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28 ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29 @@ -101,319 +103,522 @@ const ( ApplicationMetadataMessage_COMMUNITY_PUBLIC_SHARD_INFO ApplicationMetadataMessage_Type = 79 ApplicationMetadataMessage_SYNC_COLLECTIBLE_PREFERENCES ApplicationMetadataMessage_Type = 80 ApplicationMetadataMessage_COMMUNITY_USER_KICKED ApplicationMetadataMessage_Type = 81 + ApplicationMetadataMessage_SYNC_PROFILE_SHOWCASE_PREFERENCES ApplicationMetadataMessage_Type = 82 + ApplicationMetadataMessage_COMMUNITY_PUBLIC_STORENODES_INFO ApplicationMetadataMessage_Type = 83 + ApplicationMetadataMessage_COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST ApplicationMetadataMessage_Type = 84 + ApplicationMetadataMessage_DELETE_COMMUNITY_MEMBER_MESSAGES ApplicationMetadataMessage_Type = 85 ) -var ApplicationMetadataMessage_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CHAT_MESSAGE", - 2: "CONTACT_UPDATE", - 3: "MEMBERSHIP_UPDATE_MESSAGE", - 4: "SYNC_PAIR_INSTALLATION", - 5: "DEPRECATED_SYNC_INSTALLATION", - 6: "REQUEST_ADDRESS_FOR_TRANSACTION", - 7: "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION", - 8: "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION", - 9: "REQUEST_TRANSACTION", - 10: "SEND_TRANSACTION", - 11: "DECLINE_REQUEST_TRANSACTION", - 12: "SYNC_INSTALLATION_CONTACT_V2", - 13: "SYNC_INSTALLATION_ACCOUNT", - 15: "CONTACT_CODE_ADVERTISEMENT", - 16: "PUSH_NOTIFICATION_REGISTRATION", - 17: "PUSH_NOTIFICATION_REGISTRATION_RESPONSE", - 18: "PUSH_NOTIFICATION_QUERY", - 19: "PUSH_NOTIFICATION_QUERY_RESPONSE", - 20: "PUSH_NOTIFICATION_REQUEST", - 21: "PUSH_NOTIFICATION_RESPONSE", - 22: "EMOJI_REACTION", - 23: "GROUP_CHAT_INVITATION", - 24: "CHAT_IDENTITY", - 25: "COMMUNITY_DESCRIPTION", - 26: "COMMUNITY_INVITATION", - 27: "COMMUNITY_REQUEST_TO_JOIN", - 28: "PIN_MESSAGE", - 29: "EDIT_MESSAGE", - 30: "STATUS_UPDATE", - 31: "DELETE_MESSAGE", - 32: "SYNC_INSTALLATION_COMMUNITY", - 33: "ANONYMOUS_METRIC_BATCH", - 34: "SYNC_CHAT_REMOVED", - 35: "SYNC_CHAT_MESSAGES_READ", - 36: "BACKUP", - 37: "SYNC_ACTIVITY_CENTER_READ", - 38: "SYNC_ACTIVITY_CENTER_ACCEPTED", - 39: "SYNC_ACTIVITY_CENTER_DISMISSED", - 40: "SYNC_BOOKMARK", - 41: "SYNC_CLEAR_HISTORY", - 42: "SYNC_SETTING", - 43: "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK", - 44: "SYNC_PROFILE_PICTURES", - 45: "SYNC_ACCOUNT", - 46: "ACCEPT_CONTACT_REQUEST", - 47: "RETRACT_CONTACT_REQUEST", - 48: "COMMUNITY_REQUEST_TO_JOIN_RESPONSE", - 49: "SYNC_COMMUNITY_SETTINGS", - 50: "REQUEST_CONTACT_VERIFICATION", - 51: "ACCEPT_CONTACT_VERIFICATION", - 52: "DECLINE_CONTACT_VERIFICATION", - 53: "SYNC_TRUSTED_USER", - 54: "SYNC_VERIFICATION_REQUEST", - 56: "SYNC_CONTACT_REQUEST_DECISION", - 57: "COMMUNITY_REQUEST_TO_LEAVE", - 58: "SYNC_DELETE_FOR_ME_MESSAGE", - 59: "SYNC_SAVED_ADDRESS", - 60: "COMMUNITY_CANCEL_REQUEST_TO_JOIN", - 61: "CANCEL_CONTACT_VERIFICATION", - 62: "SYNC_KEYPAIR", - 63: "SYNC_SOCIAL_LINKS", - 64: "SYNC_ENS_USERNAME_DETAIL", - 67: "COMMUNITY_EVENTS_MESSAGE", - 68: "COMMUNITY_EDIT_SHARED_ADDRESSES", - 69: "SYNC_ACCOUNT_CUSTOMIZATION_COLOR", - 70: "SYNC_ACCOUNTS_POSITIONS", - 71: "COMMUNITY_EVENTS_MESSAGE_REJECTED", - 72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE", - 73: "COMMUNITY_SHARD_KEY", - 74: "SYNC_CHAT", - 75: "SYNC_ACTIVITY_CENTER_DELETED", - 76: "SYNC_ACTIVITY_CENTER_UNREAD", - 77: "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION", - 78: "SYNC_TOKEN_PREFERENCES", - 79: "COMMUNITY_PUBLIC_SHARD_INFO", - 80: "SYNC_COLLECTIBLE_PREFERENCES", - 81: "COMMUNITY_USER_KICKED", -} +// Enum value maps for ApplicationMetadataMessage_Type. +var ( + ApplicationMetadataMessage_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CHAT_MESSAGE", + 2: "CONTACT_UPDATE", + 3: "MEMBERSHIP_UPDATE_MESSAGE", + 4: "SYNC_PAIR_INSTALLATION", + 5: "DEPRECATED_SYNC_INSTALLATION", + 6: "REQUEST_ADDRESS_FOR_TRANSACTION", + 7: "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION", + 8: "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION", + 9: "REQUEST_TRANSACTION", + 10: "SEND_TRANSACTION", + 11: "DECLINE_REQUEST_TRANSACTION", + 12: "SYNC_INSTALLATION_CONTACT_V2", + 13: "SYNC_INSTALLATION_ACCOUNT", + 15: "CONTACT_CODE_ADVERTISEMENT", + 16: "PUSH_NOTIFICATION_REGISTRATION", + 17: "PUSH_NOTIFICATION_REGISTRATION_RESPONSE", + 18: "PUSH_NOTIFICATION_QUERY", + 19: "PUSH_NOTIFICATION_QUERY_RESPONSE", + 20: "PUSH_NOTIFICATION_REQUEST", + 21: "PUSH_NOTIFICATION_RESPONSE", + 22: "EMOJI_REACTION", + 23: "GROUP_CHAT_INVITATION", + 24: "CHAT_IDENTITY", + 25: "COMMUNITY_DESCRIPTION", + 26: "COMMUNITY_INVITATION", + 27: "COMMUNITY_REQUEST_TO_JOIN", + 28: "PIN_MESSAGE", + 29: "EDIT_MESSAGE", + 30: "STATUS_UPDATE", + 31: "DELETE_MESSAGE", + 32: "SYNC_INSTALLATION_COMMUNITY", + 33: "ANONYMOUS_METRIC_BATCH", + 34: "SYNC_CHAT_REMOVED", + 35: "SYNC_CHAT_MESSAGES_READ", + 36: "BACKUP", + 37: "SYNC_ACTIVITY_CENTER_READ", + 38: "SYNC_ACTIVITY_CENTER_ACCEPTED", + 39: "SYNC_ACTIVITY_CENTER_DISMISSED", + 40: "SYNC_BOOKMARK", + 41: "SYNC_CLEAR_HISTORY", + 42: "SYNC_SETTING", + 43: "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK", + 44: "SYNC_PROFILE_PICTURES", + 45: "SYNC_ACCOUNT", + 46: "ACCEPT_CONTACT_REQUEST", + 47: "RETRACT_CONTACT_REQUEST", + 48: "COMMUNITY_REQUEST_TO_JOIN_RESPONSE", + 49: "SYNC_COMMUNITY_SETTINGS", + 50: "REQUEST_CONTACT_VERIFICATION", + 51: "ACCEPT_CONTACT_VERIFICATION", + 52: "DECLINE_CONTACT_VERIFICATION", + 53: "SYNC_TRUSTED_USER", + 54: "SYNC_VERIFICATION_REQUEST", + 56: "SYNC_CONTACT_REQUEST_DECISION", + 57: "COMMUNITY_REQUEST_TO_LEAVE", + 58: "SYNC_DELETE_FOR_ME_MESSAGE", + 59: "SYNC_SAVED_ADDRESS", + 60: "COMMUNITY_CANCEL_REQUEST_TO_JOIN", + 61: "CANCEL_CONTACT_VERIFICATION", + 62: "SYNC_KEYPAIR", + 63: "SYNC_SOCIAL_LINKS", + 64: "SYNC_ENS_USERNAME_DETAIL", + 67: "COMMUNITY_EVENTS_MESSAGE", + 68: "COMMUNITY_EDIT_SHARED_ADDRESSES", + 69: "SYNC_ACCOUNT_CUSTOMIZATION_COLOR", + 70: "SYNC_ACCOUNTS_POSITIONS", + 71: "COMMUNITY_EVENTS_MESSAGE_REJECTED", + 72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE", + 73: "COMMUNITY_SHARD_KEY", + 74: "SYNC_CHAT", + 75: "SYNC_ACTIVITY_CENTER_DELETED", + 76: "SYNC_ACTIVITY_CENTER_UNREAD", + 77: "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION", + 78: "SYNC_TOKEN_PREFERENCES", + 79: "COMMUNITY_PUBLIC_SHARD_INFO", + 80: "SYNC_COLLECTIBLE_PREFERENCES", + 81: "COMMUNITY_USER_KICKED", + 82: "SYNC_PROFILE_SHOWCASE_PREFERENCES", + 83: "COMMUNITY_PUBLIC_STORENODES_INFO", + 84: "COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST", + 85: "DELETE_COMMUNITY_MEMBER_MESSAGES", + } + ApplicationMetadataMessage_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CHAT_MESSAGE": 1, + "CONTACT_UPDATE": 2, + "MEMBERSHIP_UPDATE_MESSAGE": 3, + "SYNC_PAIR_INSTALLATION": 4, + "DEPRECATED_SYNC_INSTALLATION": 5, + "REQUEST_ADDRESS_FOR_TRANSACTION": 6, + "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION": 7, + "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION": 8, + "REQUEST_TRANSACTION": 9, + "SEND_TRANSACTION": 10, + "DECLINE_REQUEST_TRANSACTION": 11, + "SYNC_INSTALLATION_CONTACT_V2": 12, + "SYNC_INSTALLATION_ACCOUNT": 13, + "CONTACT_CODE_ADVERTISEMENT": 15, + "PUSH_NOTIFICATION_REGISTRATION": 16, + "PUSH_NOTIFICATION_REGISTRATION_RESPONSE": 17, + "PUSH_NOTIFICATION_QUERY": 18, + "PUSH_NOTIFICATION_QUERY_RESPONSE": 19, + "PUSH_NOTIFICATION_REQUEST": 20, + "PUSH_NOTIFICATION_RESPONSE": 21, + "EMOJI_REACTION": 22, + "GROUP_CHAT_INVITATION": 23, + "CHAT_IDENTITY": 24, + "COMMUNITY_DESCRIPTION": 25, + "COMMUNITY_INVITATION": 26, + "COMMUNITY_REQUEST_TO_JOIN": 27, + "PIN_MESSAGE": 28, + "EDIT_MESSAGE": 29, + "STATUS_UPDATE": 30, + "DELETE_MESSAGE": 31, + "SYNC_INSTALLATION_COMMUNITY": 32, + "ANONYMOUS_METRIC_BATCH": 33, + "SYNC_CHAT_REMOVED": 34, + "SYNC_CHAT_MESSAGES_READ": 35, + "BACKUP": 36, + "SYNC_ACTIVITY_CENTER_READ": 37, + "SYNC_ACTIVITY_CENTER_ACCEPTED": 38, + "SYNC_ACTIVITY_CENTER_DISMISSED": 39, + "SYNC_BOOKMARK": 40, + "SYNC_CLEAR_HISTORY": 41, + "SYNC_SETTING": 42, + "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK": 43, + "SYNC_PROFILE_PICTURES": 44, + "SYNC_ACCOUNT": 45, + "ACCEPT_CONTACT_REQUEST": 46, + "RETRACT_CONTACT_REQUEST": 47, + "COMMUNITY_REQUEST_TO_JOIN_RESPONSE": 48, + "SYNC_COMMUNITY_SETTINGS": 49, + "REQUEST_CONTACT_VERIFICATION": 50, + "ACCEPT_CONTACT_VERIFICATION": 51, + "DECLINE_CONTACT_VERIFICATION": 52, + "SYNC_TRUSTED_USER": 53, + "SYNC_VERIFICATION_REQUEST": 54, + "SYNC_CONTACT_REQUEST_DECISION": 56, + "COMMUNITY_REQUEST_TO_LEAVE": 57, + "SYNC_DELETE_FOR_ME_MESSAGE": 58, + "SYNC_SAVED_ADDRESS": 59, + "COMMUNITY_CANCEL_REQUEST_TO_JOIN": 60, + "CANCEL_CONTACT_VERIFICATION": 61, + "SYNC_KEYPAIR": 62, + "SYNC_SOCIAL_LINKS": 63, + "SYNC_ENS_USERNAME_DETAIL": 64, + "COMMUNITY_EVENTS_MESSAGE": 67, + "COMMUNITY_EDIT_SHARED_ADDRESSES": 68, + "SYNC_ACCOUNT_CUSTOMIZATION_COLOR": 69, + "SYNC_ACCOUNTS_POSITIONS": 70, + "COMMUNITY_EVENTS_MESSAGE_REJECTED": 71, + "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72, + "COMMUNITY_SHARD_KEY": 73, + "SYNC_CHAT": 74, + "SYNC_ACTIVITY_CENTER_DELETED": 75, + "SYNC_ACTIVITY_CENTER_UNREAD": 76, + "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION": 77, + "SYNC_TOKEN_PREFERENCES": 78, + "COMMUNITY_PUBLIC_SHARD_INFO": 79, + "SYNC_COLLECTIBLE_PREFERENCES": 80, + "COMMUNITY_USER_KICKED": 81, + "SYNC_PROFILE_SHOWCASE_PREFERENCES": 82, + "COMMUNITY_PUBLIC_STORENODES_INFO": 83, + "COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST": 84, + "DELETE_COMMUNITY_MEMBER_MESSAGES": 85, + } +) -var ApplicationMetadataMessage_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CHAT_MESSAGE": 1, - "CONTACT_UPDATE": 2, - "MEMBERSHIP_UPDATE_MESSAGE": 3, - "SYNC_PAIR_INSTALLATION": 4, - "DEPRECATED_SYNC_INSTALLATION": 5, - "REQUEST_ADDRESS_FOR_TRANSACTION": 6, - "ACCEPT_REQUEST_ADDRESS_FOR_TRANSACTION": 7, - "DECLINE_REQUEST_ADDRESS_FOR_TRANSACTION": 8, - "REQUEST_TRANSACTION": 9, - "SEND_TRANSACTION": 10, - "DECLINE_REQUEST_TRANSACTION": 11, - "SYNC_INSTALLATION_CONTACT_V2": 12, - "SYNC_INSTALLATION_ACCOUNT": 13, - "CONTACT_CODE_ADVERTISEMENT": 15, - "PUSH_NOTIFICATION_REGISTRATION": 16, - "PUSH_NOTIFICATION_REGISTRATION_RESPONSE": 17, - "PUSH_NOTIFICATION_QUERY": 18, - "PUSH_NOTIFICATION_QUERY_RESPONSE": 19, - "PUSH_NOTIFICATION_REQUEST": 20, - "PUSH_NOTIFICATION_RESPONSE": 21, - "EMOJI_REACTION": 22, - "GROUP_CHAT_INVITATION": 23, - "CHAT_IDENTITY": 24, - "COMMUNITY_DESCRIPTION": 25, - "COMMUNITY_INVITATION": 26, - "COMMUNITY_REQUEST_TO_JOIN": 27, - "PIN_MESSAGE": 28, - "EDIT_MESSAGE": 29, - "STATUS_UPDATE": 30, - "DELETE_MESSAGE": 31, - "SYNC_INSTALLATION_COMMUNITY": 32, - "ANONYMOUS_METRIC_BATCH": 33, - "SYNC_CHAT_REMOVED": 34, - "SYNC_CHAT_MESSAGES_READ": 35, - "BACKUP": 36, - "SYNC_ACTIVITY_CENTER_READ": 37, - "SYNC_ACTIVITY_CENTER_ACCEPTED": 38, - "SYNC_ACTIVITY_CENTER_DISMISSED": 39, - "SYNC_BOOKMARK": 40, - "SYNC_CLEAR_HISTORY": 41, - "SYNC_SETTING": 42, - "COMMUNITY_MESSAGE_ARCHIVE_MAGNETLINK": 43, - "SYNC_PROFILE_PICTURES": 44, - "SYNC_ACCOUNT": 45, - "ACCEPT_CONTACT_REQUEST": 46, - "RETRACT_CONTACT_REQUEST": 47, - "COMMUNITY_REQUEST_TO_JOIN_RESPONSE": 48, - "SYNC_COMMUNITY_SETTINGS": 49, - "REQUEST_CONTACT_VERIFICATION": 50, - "ACCEPT_CONTACT_VERIFICATION": 51, - "DECLINE_CONTACT_VERIFICATION": 52, - "SYNC_TRUSTED_USER": 53, - "SYNC_VERIFICATION_REQUEST": 54, - "SYNC_CONTACT_REQUEST_DECISION": 56, - "COMMUNITY_REQUEST_TO_LEAVE": 57, - "SYNC_DELETE_FOR_ME_MESSAGE": 58, - "SYNC_SAVED_ADDRESS": 59, - "COMMUNITY_CANCEL_REQUEST_TO_JOIN": 60, - "CANCEL_CONTACT_VERIFICATION": 61, - "SYNC_KEYPAIR": 62, - "SYNC_SOCIAL_LINKS": 63, - "SYNC_ENS_USERNAME_DETAIL": 64, - "COMMUNITY_EVENTS_MESSAGE": 67, - "COMMUNITY_EDIT_SHARED_ADDRESSES": 68, - "SYNC_ACCOUNT_CUSTOMIZATION_COLOR": 69, - "SYNC_ACCOUNTS_POSITIONS": 70, - "COMMUNITY_EVENTS_MESSAGE_REJECTED": 71, - "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72, - "COMMUNITY_SHARD_KEY": 73, - "SYNC_CHAT": 74, - "SYNC_ACTIVITY_CENTER_DELETED": 75, - "SYNC_ACTIVITY_CENTER_UNREAD": 76, - "SYNC_ACTIVITY_CENTER_COMMUNITY_REQUEST_DECISION": 77, - "SYNC_TOKEN_PREFERENCES": 78, - "COMMUNITY_PUBLIC_SHARD_INFO": 79, - "SYNC_COLLECTIBLE_PREFERENCES": 80, - "COMMUNITY_USER_KICKED": 81, +func (x ApplicationMetadataMessage_Type) Enum() *ApplicationMetadataMessage_Type { + p := new(ApplicationMetadataMessage_Type) + *p = x + return p } func (x ApplicationMetadataMessage_Type) String() string { - return proto.EnumName(ApplicationMetadataMessage_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ApplicationMetadataMessage_Type) Descriptor() protoreflect.EnumDescriptor { + return file_application_metadata_message_proto_enumTypes[0].Descriptor() +} + +func (ApplicationMetadataMessage_Type) Type() protoreflect.EnumType { + return &file_application_metadata_message_proto_enumTypes[0] +} + +func (x ApplicationMetadataMessage_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ApplicationMetadataMessage_Type.Descriptor instead. func (ApplicationMetadataMessage_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_ad09a6406fcf24c7, []int{0, 0} + return file_application_metadata_message_proto_rawDescGZIP(), []int{0, 0} } type ApplicationMetadataMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // This is the encoded protobuf of the application level message, i.e ChatMessage Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` // The type of protobuf message sent - Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Type ApplicationMetadataMessage_Type `protobuf:"varint,3,opt,name=type,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"type,omitempty"` } -func (m *ApplicationMetadataMessage) Reset() { *m = ApplicationMetadataMessage{} } -func (m *ApplicationMetadataMessage) String() string { return proto.CompactTextString(m) } -func (*ApplicationMetadataMessage) ProtoMessage() {} +func (x *ApplicationMetadataMessage) Reset() { + *x = ApplicationMetadataMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_application_metadata_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ApplicationMetadataMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ApplicationMetadataMessage) ProtoMessage() {} + +func (x *ApplicationMetadataMessage) ProtoReflect() protoreflect.Message { + mi := &file_application_metadata_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ApplicationMetadataMessage.ProtoReflect.Descriptor instead. func (*ApplicationMetadataMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ad09a6406fcf24c7, []int{0} + return file_application_metadata_message_proto_rawDescGZIP(), []int{0} } -func (m *ApplicationMetadataMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ApplicationMetadataMessage.Unmarshal(m, b) -} -func (m *ApplicationMetadataMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ApplicationMetadataMessage.Marshal(b, m, deterministic) -} -func (m *ApplicationMetadataMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ApplicationMetadataMessage.Merge(m, src) -} -func (m *ApplicationMetadataMessage) XXX_Size() int { - return xxx_messageInfo_ApplicationMetadataMessage.Size(m) -} -func (m *ApplicationMetadataMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ApplicationMetadataMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ApplicationMetadataMessage proto.InternalMessageInfo - -func (m *ApplicationMetadataMessage) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *ApplicationMetadataMessage) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *ApplicationMetadataMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *ApplicationMetadataMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type { - if m != nil { - return m.Type +func (x *ApplicationMetadataMessage) GetType() ApplicationMetadataMessage_Type { + if x != nil { + return x.Type } return ApplicationMetadataMessage_UNKNOWN } -func init() { - proto.RegisterEnum("protobuf.ApplicationMetadataMessage_Type", ApplicationMetadataMessage_Type_name, ApplicationMetadataMessage_Type_value) - proto.RegisterType((*ApplicationMetadataMessage)(nil), "protobuf.ApplicationMetadataMessage") +var File_application_metadata_message_proto protoreflect.FileDescriptor + +var file_application_metadata_message_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xc1, + 0x15, 0x0a, 0x1a, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0xab, 0x14, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, + 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, + 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x48, 0x49, 0x50, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, + 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x1c, 0x44, + 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x07, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x4f, + 0x52, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, + 0x17, 0x0a, 0x13, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x4e, 0x44, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x1f, + 0x0a, 0x1b, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, + 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x32, 0x10, + 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, + 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0d, + 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x0f, + 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x10, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, + 0x11, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x12, 0x12, 0x24, + 0x0a, 0x20, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, + 0x53, 0x45, 0x10, 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, + 0x45, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x5f, 0x52, 0x45, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, + 0x49, 0x54, 0x59, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x19, + 0x12, 0x1c, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x4e, + 0x56, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, + 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, + 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x1b, 0x12, 0x0f, 0x0a, + 0x0b, 0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1c, 0x12, 0x10, + 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1d, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x1f, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, + 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4f, 0x4e, + 0x59, 0x4d, 0x4f, 0x55, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x42, 0x41, 0x54, + 0x43, 0x48, 0x10, 0x21, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, + 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x23, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x10, 0x24, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43, 0x43, 0x45, + 0x50, 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x44, + 0x49, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x45, 0x44, 0x10, 0x27, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x42, 0x4f, 0x4f, 0x4b, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x28, 0x12, 0x16, 0x0a, + 0x12, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x48, 0x49, 0x53, 0x54, + 0x4f, 0x52, 0x59, 0x10, 0x29, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, + 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x2a, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x52, 0x43, + 0x48, 0x49, 0x56, 0x45, 0x5f, 0x4d, 0x41, 0x47, 0x4e, 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, + 0x2b, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, + 0x45, 0x5f, 0x50, 0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x2c, 0x12, 0x10, 0x0a, 0x0c, + 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x2d, 0x12, 0x1a, + 0x0a, 0x16, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, + 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2e, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, + 0x54, 0x52, 0x41, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x30, 0x12, + 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, + 0x59, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x31, 0x12, 0x20, 0x0a, 0x1c, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, + 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x12, 0x1f, + 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, + 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x33, 0x12, + 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, + 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x34, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, + 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x35, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x59, 0x4e, 0x43, + 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x36, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, + 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x38, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, + 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, + 0x54, 0x4f, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x39, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x4d, 0x45, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x3a, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x3b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, + 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, + 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x3c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, + 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x3d, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x59, 0x4e, + 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x50, 0x41, 0x49, 0x52, 0x10, 0x3e, 0x12, 0x15, 0x0a, 0x11, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x53, + 0x10, 0x3f, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x45, 0x4e, 0x53, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x40, + 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x43, 0x12, 0x23, + 0x0a, 0x1f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, + 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, + 0x53, 0x10, 0x44, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x45, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x4e, + 0x43, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x46, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, + 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x47, 0x12, 0x2a, 0x0a, + 0x26, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49, + 0x4c, 0x45, 0x47, 0x45, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x48, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, + 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, 0x4b, 0x45, 0x59, + 0x10, 0x49, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x10, + 0x4a, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, + 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x44, 0x10, 0x4b, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x52, 0x45, + 0x41, 0x44, 0x10, 0x4c, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4d, + 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x44, + 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x4d, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x4e, + 0x43, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, + 0x43, 0x45, 0x53, 0x10, 0x4e, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x5f, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x4f, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x43, + 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, + 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x50, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x45, + 0x44, 0x10, 0x51, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, + 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x52, 0x45, + 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x52, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, + 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x53, + 0x54, 0x4f, 0x52, 0x45, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x53, + 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, + 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x54, 0x12, 0x24, + 0x0a, 0x20, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x53, 0x10, 0x55, 0x22, 0x04, 0x08, 0x0e, 0x10, 0x0e, 0x22, 0x04, 0x08, 0x41, 0x10, 0x41, + 0x22, 0x04, 0x08, 0x42, 0x10, 0x42, 0x2a, 0x1d, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, + 0x5f, 0x43, 0x48, 0x41, 0x54, 0x2a, 0x22, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x2a, 0x27, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("application_metadata_message.proto", fileDescriptor_ad09a6406fcf24c7) +var ( + file_application_metadata_message_proto_rawDescOnce sync.Once + file_application_metadata_message_proto_rawDescData = file_application_metadata_message_proto_rawDesc +) + +func file_application_metadata_message_proto_rawDescGZIP() []byte { + file_application_metadata_message_proto_rawDescOnce.Do(func() { + file_application_metadata_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_application_metadata_message_proto_rawDescData) + }) + return file_application_metadata_message_proto_rawDescData } -var fileDescriptor_ad09a6406fcf24c7 = []byte{ - // 1177 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x6d, 0x73, 0x13, 0x37, - 0x17, 0x7d, 0x02, 0x7e, 0xc0, 0x28, 0x24, 0x08, 0x11, 0xc0, 0x09, 0x0e, 0x04, 0x13, 0x92, 0x10, - 0x5a, 0xa7, 0x4d, 0xda, 0x4e, 0x5b, 0x4a, 0x5b, 0x59, 0xba, 0xb6, 0x15, 0xef, 0x4a, 0x1b, 0x49, - 0xeb, 0x8e, 0xf9, 0xa2, 0x31, 0xc5, 0x65, 0x32, 0x03, 0xc4, 0x43, 0xcc, 0x87, 0xfc, 0x85, 0xfe, - 0x8a, 0xfe, 0xd4, 0x8e, 0xf6, 0xd5, 0x89, 0x9d, 0xe6, 0x53, 0x62, 0xdd, 0xa3, 0x97, 0x73, 0xee, - 0xb9, 0xf7, 0x2e, 0x6a, 0x0c, 0xc7, 0xe3, 0x0f, 0xc7, 0x7f, 0x0e, 0x27, 0xc7, 0x27, 0x9f, 0xdc, - 0xc7, 0xd1, 0x64, 0xf8, 0x6e, 0x38, 0x19, 0xba, 0x8f, 0xa3, 0xd3, 0xd3, 0xe1, 0xfb, 0x51, 0x73, - 0xfc, 0xf9, 0x64, 0x72, 0x42, 0xaa, 0xc9, 0x9f, 0xb7, 0x5f, 0xfe, 0x6a, 0xfc, 0xb3, 0x82, 0xd6, - 0x68, 0xb9, 0x21, 0xcc, 0xf0, 0x61, 0x0a, 0x27, 0x75, 0x74, 0xeb, 0xf4, 0xf8, 0xfd, 0xa7, 0xe1, - 0xe4, 0xcb, 0xe7, 0x51, 0x6d, 0x61, 0x63, 0x61, 0xe7, 0xb6, 0x2e, 0x17, 0x48, 0x0d, 0xdd, 0x1c, - 0x0f, 0xcf, 0x3e, 0x9c, 0x0c, 0xdf, 0xd5, 0xae, 0x25, 0xb1, 0xfc, 0x27, 0x79, 0x8d, 0x2a, 0x93, - 0xb3, 0xf1, 0xa8, 0x76, 0x7d, 0x63, 0x61, 0x67, 0x79, 0xff, 0x45, 0x33, 0xbf, 0xaf, 0x79, 0xf9, - 0x5d, 0x4d, 0x7b, 0x36, 0x1e, 0xe9, 0x64, 0x5b, 0xe3, 0xef, 0x7b, 0xa8, 0xe2, 0x7f, 0x92, 0x45, - 0x74, 0x33, 0x96, 0x3d, 0xa9, 0xfe, 0x90, 0xf8, 0x7f, 0x04, 0xa3, 0xdb, 0xac, 0x4b, 0xad, 0x0b, - 0xc1, 0x18, 0xda, 0x01, 0xbc, 0x40, 0x08, 0x5a, 0x66, 0x4a, 0x5a, 0xca, 0xac, 0x8b, 0x23, 0x4e, - 0x2d, 0xe0, 0x6b, 0x64, 0x1d, 0xad, 0x86, 0x10, 0xb6, 0x40, 0x9b, 0xae, 0x88, 0xb2, 0xe5, 0x62, - 0xcb, 0x75, 0xb2, 0x86, 0x1e, 0x98, 0x81, 0x64, 0x2e, 0xa2, 0x42, 0x3b, 0x21, 0x8d, 0xa5, 0x41, - 0x40, 0xad, 0x50, 0x12, 0x57, 0xc8, 0x26, 0xaa, 0x73, 0x88, 0x34, 0x30, 0x6a, 0x81, 0xbb, 0x04, - 0x76, 0x0e, 0xf1, 0xff, 0xb5, 0x6b, 0xd5, 0x05, 0xf2, 0x0c, 0x3d, 0xd1, 0x70, 0x14, 0x83, 0xb1, - 0x8e, 0x72, 0xae, 0xc1, 0x18, 0xd7, 0x56, 0xda, 0x59, 0x4d, 0xa5, 0xa1, 0x2c, 0x01, 0xde, 0x20, - 0xbb, 0x68, 0x8b, 0x32, 0x06, 0x91, 0x75, 0x57, 0x61, 0x6f, 0x92, 0x97, 0x68, 0x9b, 0x03, 0x0b, - 0x84, 0x84, 0x2b, 0xc1, 0x55, 0xf2, 0x10, 0xdd, 0xcb, 0x41, 0xd3, 0x81, 0x5b, 0x64, 0x05, 0x61, - 0x03, 0x92, 0x9f, 0x5b, 0x45, 0xe4, 0x09, 0x7a, 0x74, 0xf1, 0xec, 0x69, 0xc0, 0x22, 0xd9, 0x40, - 0xf5, 0x19, 0xa2, 0x2e, 0x17, 0xb5, 0xbf, 0x8f, 0x6f, 0x7b, 0x41, 0x67, 0x11, 0x94, 0x31, 0x15, - 0x4b, 0x8b, 0x97, 0xc8, 0x63, 0xb4, 0x96, 0xc3, 0x99, 0xe2, 0xe0, 0x28, 0xef, 0x83, 0xb6, 0xc2, - 0x40, 0x08, 0xd2, 0xe2, 0x3b, 0xa4, 0x81, 0x1e, 0x47, 0xb1, 0xe9, 0x3a, 0xa9, 0xac, 0x68, 0x0b, - 0x96, 0x6e, 0xd7, 0xd0, 0x11, 0xc6, 0xea, 0x54, 0x56, 0xec, 0x15, 0xf8, 0x6f, 0x8c, 0xd3, 0x60, - 0x22, 0x25, 0x0d, 0xe0, 0xbb, 0xe4, 0x11, 0x7a, 0x38, 0x0b, 0x3e, 0x8a, 0x41, 0x0f, 0x30, 0x21, - 0x9b, 0x68, 0xe3, 0x92, 0x60, 0x79, 0xc4, 0x3d, 0x4f, 0x69, 0xde, 0x7d, 0x89, 0x3e, 0x78, 0xc5, - 0x53, 0x9a, 0x17, 0xce, 0xb6, 0xdf, 0xf7, 0xb6, 0x83, 0x50, 0x1d, 0x0a, 0xa7, 0x21, 0xd3, 0xf1, - 0x01, 0x59, 0x45, 0xf7, 0x3b, 0x5a, 0xc5, 0x91, 0x4b, 0x2c, 0x2a, 0x64, 0x5f, 0xd8, 0x94, 0xdd, - 0x43, 0x72, 0x17, 0x2d, 0xa5, 0x8b, 0x1c, 0xa4, 0x15, 0x76, 0x80, 0x6b, 0x1e, 0xcd, 0x54, 0x18, - 0xc6, 0x52, 0xd8, 0x81, 0xe3, 0x60, 0x98, 0x16, 0x51, 0x82, 0x5e, 0x25, 0x75, 0xb4, 0x52, 0x86, - 0xa6, 0xce, 0x59, 0x4b, 0xcc, 0xb7, 0x8e, 0x56, 0xcb, 0x68, 0x91, 0x51, 0xe5, 0x0e, 0x95, 0x90, - 0xf8, 0x11, 0xb9, 0x83, 0x16, 0x23, 0x21, 0x0b, 0xbb, 0xd7, 0x7d, 0xcd, 0x00, 0x17, 0x65, 0xcd, - 0xac, 0xfb, 0xd7, 0x18, 0x4b, 0x6d, 0x6c, 0xf2, 0x92, 0x79, 0xec, 0xf9, 0x70, 0x08, 0x60, 0xaa, - 0x4e, 0x9e, 0x78, 0xe3, 0xcc, 0xf3, 0x45, 0x76, 0x35, 0xde, 0xf0, 0x85, 0x44, 0xa5, 0x92, 0x83, - 0x50, 0xc5, 0xc6, 0x85, 0x60, 0xb5, 0x60, 0xae, 0x45, 0x2d, 0xeb, 0xe2, 0xa7, 0xe4, 0x3e, 0xba, - 0x9b, 0x6c, 0x4e, 0x68, 0x6b, 0x08, 0x55, 0x1f, 0x38, 0x6e, 0xf8, 0xcc, 0x95, 0xcb, 0xd9, 0x55, - 0xc6, 0x8b, 0xc8, 0xf1, 0x33, 0x82, 0xd0, 0x8d, 0x16, 0x65, 0xbd, 0x38, 0xc2, 0x9b, 0x85, 0xe5, - 0xbc, 0xba, 0x7d, 0xcf, 0x94, 0x81, 0xb4, 0xa0, 0x53, 0xe8, 0x73, 0xf2, 0x14, 0xad, 0xcf, 0x0d, - 0xa7, 0x15, 0x07, 0x1c, 0x6f, 0x79, 0xd7, 0xcd, 0x85, 0x70, 0x61, 0x42, 0x61, 0x0c, 0x70, 0xbc, - 0x9d, 0x28, 0xe1, 0x31, 0x2d, 0xa5, 0x7a, 0x21, 0xd5, 0x3d, 0xbc, 0x43, 0x1e, 0x20, 0x92, 0xbe, - 0x30, 0x00, 0xaa, 0x5d, 0x57, 0x18, 0xab, 0xf4, 0x00, 0xbf, 0xf0, 0x32, 0x26, 0xeb, 0x06, 0xac, - 0x15, 0xb2, 0x83, 0x77, 0xc9, 0x0e, 0xda, 0x2c, 0x13, 0x91, 0x71, 0x71, 0x54, 0xb3, 0xae, 0xe8, - 0x83, 0x0b, 0x69, 0x47, 0x82, 0x0d, 0x84, 0xec, 0xe1, 0x97, 0x3e, 0xd7, 0x69, 0xc7, 0xd1, 0xaa, - 0x2d, 0x02, 0x70, 0x91, 0x60, 0x36, 0xd6, 0x60, 0xf0, 0x57, 0xc5, 0xb1, 0x79, 0x35, 0x7d, 0x9d, - 0xa8, 0x9a, 0xf6, 0x8d, 0xbc, 0xa8, 0x72, 0x5b, 0x36, 0xbd, 0x7c, 0x1a, 0xac, 0x4e, 0x2b, 0xed, - 0x7c, 0x70, 0x8f, 0x6c, 0xa1, 0xc6, 0xa5, 0xc6, 0x28, 0xbd, 0xfb, 0x4d, 0x99, 0x83, 0x02, 0x9c, - 0x71, 0x32, 0xf8, 0x5b, 0xdf, 0x0c, 0xf2, 0xad, 0x45, 0x0b, 0x00, 0x5d, 0xd4, 0x00, 0xde, 0xf7, - 0xb6, 0xb8, 0xf0, 0xbe, 0x73, 0x80, 0x03, 0x7f, 0x44, 0xde, 0x70, 0xe6, 0x22, 0xbe, 0x2b, 0xcc, - 0x61, 0x75, 0x6c, 0x7c, 0x9f, 0x8d, 0x0d, 0x68, 0xfc, 0x7d, 0x91, 0xf3, 0x69, 0x74, 0xc1, 0xef, - 0x87, 0x22, 0xe7, 0x17, 0x98, 0x3b, 0x0e, 0x4c, 0x18, 0x7f, 0xf0, 0x8f, 0x69, 0x27, 0x9a, 0x23, - 0x41, 0x00, 0xb4, 0x0f, 0xf8, 0x27, 0x1f, 0x4f, 0x8e, 0xc8, 0xbc, 0xee, 0x7b, 0x6b, 0x58, 0x5a, - 0xfe, 0xe7, 0x22, 0xf9, 0x86, 0xf6, 0x81, 0xe7, 0x2d, 0x18, 0xbf, 0xf2, 0x3d, 0xa5, 0x3c, 0x97, - 0x51, 0xc9, 0x20, 0x98, 0x29, 0xbd, 0x5f, 0xbc, 0x32, 0x59, 0x6c, 0x2e, 0xef, 0xd7, 0x45, 0xb2, - 0x7b, 0x30, 0xf0, 0xc3, 0x07, 0xff, 0x5a, 0x28, 0x61, 0x14, 0x13, 0x34, 0x70, 0xde, 0x2f, 0x06, - 0xff, 0x46, 0xea, 0xa8, 0x96, 0x2c, 0x83, 0x34, 0x89, 0x38, 0x92, 0x86, 0xe0, 0x38, 0x58, 0x2a, - 0x02, 0xfc, 0xbb, 0x8f, 0x96, 0xaf, 0x81, 0x3e, 0x48, 0x6b, 0x0a, 0x0e, 0xcc, 0x0f, 0xa7, 0xa9, - 0xa8, 0xaf, 0x7c, 0xd3, 0xa5, 0xba, 0xa4, 0x03, 0x06, 0x73, 0x4f, 0x68, 0xda, 0x76, 0x8e, 0xc5, - 0xc6, 0xaa, 0x50, 0xbc, 0xc9, 0x8b, 0x3c, 0x50, 0x1a, 0x43, 0xe1, 0x94, 0x0c, 0x65, 0x5c, 0xa4, - 0x8c, 0xf0, 0x08, 0x83, 0xdb, 0xe4, 0x39, 0x7a, 0x7a, 0xd9, 0x2b, 0x9c, 0x86, 0x43, 0x60, 0xbe, - 0x0c, 0x3b, 0x7e, 0x0c, 0x96, 0xb0, 0x48, 0x8b, 0xbe, 0x08, 0xa0, 0x93, 0xe5, 0x3c, 0x1d, 0xb0, - 0xf9, 0xd3, 0xbb, 0x7e, 0xb2, 0x4d, 0x99, 0xb2, 0x4b, 0x35, 0xf7, 0x52, 0x61, 0x41, 0x96, 0xd0, - 0xad, 0xa2, 0x6d, 0xe0, 0xc3, 0x62, 0x62, 0xcd, 0x94, 0x76, 0x92, 0x56, 0x8e, 0x7b, 0x45, 0xef, - 0xba, 0x88, 0x88, 0x65, 0xd2, 0x40, 0x02, 0x72, 0x80, 0xf6, 0xe6, 0x02, 0x66, 0xed, 0x53, 0xd8, - 0x2b, 0x2c, 0xbe, 0x1c, 0xac, 0xea, 0x81, 0x74, 0x91, 0x86, 0x36, 0x68, 0x90, 0x0c, 0x0c, 0x96, - 0x49, 0xf2, 0x4b, 0x9e, 0x71, 0x2b, 0x10, 0x2c, 0xa3, 0x20, 0x64, 0x5b, 0x61, 0x55, 0x3c, 0x9a, - 0xa9, 0x20, 0x00, 0x66, 0x45, 0xcb, 0x37, 0x82, 0xa9, 0x23, 0xa2, 0xf3, 0x23, 0x21, 0xd1, 0xa7, - 0x27, 0x58, 0x0f, 0x38, 0x3e, 0x6a, 0x54, 0xaa, 0xcb, 0x78, 0xb9, 0x51, 0xa9, 0x52, 0x4c, 0x1b, - 0x95, 0x6a, 0x0b, 0xb7, 0x76, 0xd7, 0x67, 0x7b, 0x73, 0x76, 0xab, 0x17, 0x69, 0xb7, 0x31, 0x97, - 0xdd, 0xf4, 0x38, 0x33, 0xbb, 0xdb, 0x57, 0x62, 0x9c, 0x9f, 0x13, 0xd0, 0x5a, 0x7a, 0xb3, 0xd8, - 0xdc, 0x7b, 0x95, 0x7f, 0xc1, 0xbd, 0xbd, 0x91, 0xfc, 0x77, 0xf0, 0x6f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x37, 0xfa, 0x36, 0xf9, 0x68, 0x0a, 0x00, 0x00, +var file_application_metadata_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_application_metadata_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_application_metadata_message_proto_goTypes = []interface{}{ + (ApplicationMetadataMessage_Type)(0), // 0: protobuf.ApplicationMetadataMessage.Type + (*ApplicationMetadataMessage)(nil), // 1: protobuf.ApplicationMetadataMessage +} +var file_application_metadata_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.ApplicationMetadataMessage.type:type_name -> protobuf.ApplicationMetadataMessage.Type + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_application_metadata_message_proto_init() } +func file_application_metadata_message_proto_init() { + if File_application_metadata_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_application_metadata_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ApplicationMetadataMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_application_metadata_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_application_metadata_message_proto_goTypes, + DependencyIndexes: file_application_metadata_message_proto_depIdxs, + EnumInfos: file_application_metadata_message_proto_enumTypes, + MessageInfos: file_application_metadata_message_proto_msgTypes, + }.Build() + File_application_metadata_message_proto = out.File + file_application_metadata_message_proto_rawDesc = nil + file_application_metadata_message_proto_goTypes = nil + file_application_metadata_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.proto index d791dc3e..71fa0dd8 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/application_metadata_message.proto @@ -99,5 +99,9 @@ message ApplicationMetadataMessage { COMMUNITY_PUBLIC_SHARD_INFO = 79; SYNC_COLLECTIBLE_PREFERENCES = 80; COMMUNITY_USER_KICKED = 81; + SYNC_PROFILE_SHOWCASE_PREFERENCES = 82; + COMMUNITY_PUBLIC_STORENODES_INFO = 83; + COMMUNITY_REEVALUATE_PERMISSIONS_REQUEST = 84; + DELETE_COMMUNITY_MEMBER_MESSAGES = 85; } } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_identity.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_identity.pb.go index fc59644f..64f5c69b 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_identity.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_identity.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: chat_identity.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) // SourceType are the predefined types of image source allowed type IdentityImage_SourceType int32 @@ -34,28 +34,53 @@ const ( IdentityImage_ENS_AVATAR IdentityImage_SourceType = 2 ) -var IdentityImage_SourceType_name = map[int32]string{ - 0: "UNKNOWN_SOURCE_TYPE", - 1: "RAW_PAYLOAD", - 2: "ENS_AVATAR", -} +// Enum value maps for IdentityImage_SourceType. +var ( + IdentityImage_SourceType_name = map[int32]string{ + 0: "UNKNOWN_SOURCE_TYPE", + 1: "RAW_PAYLOAD", + 2: "ENS_AVATAR", + } + IdentityImage_SourceType_value = map[string]int32{ + "UNKNOWN_SOURCE_TYPE": 0, + "RAW_PAYLOAD": 1, + "ENS_AVATAR": 2, + } +) -var IdentityImage_SourceType_value = map[string]int32{ - "UNKNOWN_SOURCE_TYPE": 0, - "RAW_PAYLOAD": 1, - "ENS_AVATAR": 2, +func (x IdentityImage_SourceType) Enum() *IdentityImage_SourceType { + p := new(IdentityImage_SourceType) + *p = x + return p } func (x IdentityImage_SourceType) String() string { - return proto.EnumName(IdentityImage_SourceType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (IdentityImage_SourceType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_identity_proto_enumTypes[0].Descriptor() +} + +func (IdentityImage_SourceType) Type() protoreflect.EnumType { + return &file_chat_identity_proto_enumTypes[0] +} + +func (x IdentityImage_SourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IdentityImage_SourceType.Descriptor instead. func (IdentityImage_SourceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{1, 0} + return file_chat_identity_proto_rawDescGZIP(), []int{1, 0} } // ChatIdentity represents the user defined identity associated with their public chat key type ChatIdentity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // ens_name is the valid ENS name associated with the chat key @@ -74,108 +99,116 @@ type ChatIdentity struct { // 1 - no messages FirstMessageTimestamp uint32 `protobuf:"varint,9,opt,name=first_message_timestamp,json=firstMessageTimestamp,proto3" json:"first_message_timestamp,omitempty"` ProfileShowcase *ProfileShowcase `protobuf:"bytes,10,opt,name=profile_showcase,json=profileShowcase,proto3" json:"profile_showcase,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ChatIdentity) Reset() { *m = ChatIdentity{} } -func (m *ChatIdentity) String() string { return proto.CompactTextString(m) } -func (*ChatIdentity) ProtoMessage() {} +func (x *ChatIdentity) Reset() { + *x = ChatIdentity{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatIdentity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatIdentity) ProtoMessage() {} + +func (x *ChatIdentity) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatIdentity.ProtoReflect.Descriptor instead. func (*ChatIdentity) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{0} + return file_chat_identity_proto_rawDescGZIP(), []int{0} } -func (m *ChatIdentity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChatIdentity.Unmarshal(m, b) -} -func (m *ChatIdentity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChatIdentity.Marshal(b, m, deterministic) -} -func (m *ChatIdentity) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChatIdentity.Merge(m, src) -} -func (m *ChatIdentity) XXX_Size() int { - return xxx_messageInfo_ChatIdentity.Size(m) -} -func (m *ChatIdentity) XXX_DiscardUnknown() { - xxx_messageInfo_ChatIdentity.DiscardUnknown(m) -} - -var xxx_messageInfo_ChatIdentity proto.InternalMessageInfo - -func (m *ChatIdentity) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ChatIdentity) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ChatIdentity) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ChatIdentity) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ChatIdentity) GetImages() map[string]*IdentityImage { - if m != nil { - return m.Images +func (x *ChatIdentity) GetImages() map[string]*IdentityImage { + if x != nil { + return x.Images } return nil } -func (m *ChatIdentity) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *ChatIdentity) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *ChatIdentity) GetDescription() string { - if m != nil { - return m.Description +func (x *ChatIdentity) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *ChatIdentity) GetColor() string { - if m != nil { - return m.Color +func (x *ChatIdentity) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *ChatIdentity) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *ChatIdentity) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *ChatIdentity) GetSocialLinks() []*SocialLink { - if m != nil { - return m.SocialLinks +func (x *ChatIdentity) GetSocialLinks() []*SocialLink { + if x != nil { + return x.SocialLinks } return nil } -func (m *ChatIdentity) GetFirstMessageTimestamp() uint32 { - if m != nil { - return m.FirstMessageTimestamp +func (x *ChatIdentity) GetFirstMessageTimestamp() uint32 { + if x != nil { + return x.FirstMessageTimestamp } return 0 } -func (m *ChatIdentity) GetProfileShowcase() *ProfileShowcase { - if m != nil { - return m.ProfileShowcase +func (x *ChatIdentity) GetProfileShowcase() *ProfileShowcase { + if x != nil { + return x.ProfileShowcase } return nil } // ProfileImage represents data associated with a user's profile image type IdentityImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // payload is a context based payload for the profile image data, // context is determined by the `source_type` Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` @@ -186,168 +219,297 @@ type IdentityImage struct { // encryption_keys is a list of encrypted keys that can be used to decrypted an encrypted payload EncryptionKeys [][]byte `protobuf:"bytes,4,rep,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` // encrypted signals the encryption state of the payload, default is false. - Encrypted bool `protobuf:"varint,5,opt,name=encrypted,proto3" json:"encrypted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Encrypted bool `protobuf:"varint,5,opt,name=encrypted,proto3" json:"encrypted,omitempty"` } -func (m *IdentityImage) Reset() { *m = IdentityImage{} } -func (m *IdentityImage) String() string { return proto.CompactTextString(m) } -func (*IdentityImage) ProtoMessage() {} +func (x *IdentityImage) Reset() { + *x = IdentityImage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IdentityImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IdentityImage) ProtoMessage() {} + +func (x *IdentityImage) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IdentityImage.ProtoReflect.Descriptor instead. func (*IdentityImage) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{1} + return file_chat_identity_proto_rawDescGZIP(), []int{1} } -func (m *IdentityImage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_IdentityImage.Unmarshal(m, b) -} -func (m *IdentityImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_IdentityImage.Marshal(b, m, deterministic) -} -func (m *IdentityImage) XXX_Merge(src proto.Message) { - xxx_messageInfo_IdentityImage.Merge(m, src) -} -func (m *IdentityImage) XXX_Size() int { - return xxx_messageInfo_IdentityImage.Size(m) -} -func (m *IdentityImage) XXX_DiscardUnknown() { - xxx_messageInfo_IdentityImage.DiscardUnknown(m) -} - -var xxx_messageInfo_IdentityImage proto.InternalMessageInfo - -func (m *IdentityImage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *IdentityImage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *IdentityImage) GetSourceType() IdentityImage_SourceType { - if m != nil { - return m.SourceType +func (x *IdentityImage) GetSourceType() IdentityImage_SourceType { + if x != nil { + return x.SourceType } return IdentityImage_UNKNOWN_SOURCE_TYPE } -func (m *IdentityImage) GetImageFormat() ImageFormat { - if m != nil { - return m.ImageFormat +func (x *IdentityImage) GetImageFormat() ImageFormat { + if x != nil { + return x.ImageFormat } return ImageFormat_UNKNOWN_IMAGE_FORMAT } -func (m *IdentityImage) GetEncryptionKeys() [][]byte { - if m != nil { - return m.EncryptionKeys +func (x *IdentityImage) GetEncryptionKeys() [][]byte { + if x != nil { + return x.EncryptionKeys } return nil } -func (m *IdentityImage) GetEncrypted() bool { - if m != nil { - return m.Encrypted +func (x *IdentityImage) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } // SocialLinks represents social link assosiated with given chat identity (personal/community) type SocialLink struct { - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` } -func (m *SocialLink) Reset() { *m = SocialLink{} } -func (m *SocialLink) String() string { return proto.CompactTextString(m) } -func (*SocialLink) ProtoMessage() {} +func (x *SocialLink) Reset() { + *x = SocialLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_identity_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SocialLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SocialLink) ProtoMessage() {} + +func (x *SocialLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_identity_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SocialLink.ProtoReflect.Descriptor instead. func (*SocialLink) Descriptor() ([]byte, []int) { - return fileDescriptor_7a652489000a5879, []int{2} + return file_chat_identity_proto_rawDescGZIP(), []int{2} } -func (m *SocialLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SocialLink.Unmarshal(m, b) -} -func (m *SocialLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SocialLink.Marshal(b, m, deterministic) -} -func (m *SocialLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_SocialLink.Merge(m, src) -} -func (m *SocialLink) XXX_Size() int { - return xxx_messageInfo_SocialLink.Size(m) -} -func (m *SocialLink) XXX_DiscardUnknown() { - xxx_messageInfo_SocialLink.DiscardUnknown(m) -} - -var xxx_messageInfo_SocialLink proto.InternalMessageInfo - -func (m *SocialLink) GetText() string { - if m != nil { - return m.Text +func (x *SocialLink) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *SocialLink) GetUrl() string { - if m != nil { - return m.Url +func (x *SocialLink) GetUrl() string { + if x != nil { + return x.Url } return "" } -func init() { - proto.RegisterEnum("protobuf.IdentityImage_SourceType", IdentityImage_SourceType_name, IdentityImage_SourceType_value) - proto.RegisterType((*ChatIdentity)(nil), "protobuf.ChatIdentity") - proto.RegisterMapType((map[string]*IdentityImage)(nil), "protobuf.ChatIdentity.ImagesEntry") - proto.RegisterType((*IdentityImage)(nil), "protobuf.IdentityImage") - proto.RegisterType((*SocialLink)(nil), "protobuf.SocialLink") +var File_chat_identity_proto protoreflect.FileDescriptor + +var file_chat_identity_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, + 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x03, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, + 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x6f, 0x6a, 0x69, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x36, 0x0a, 0x17, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x44, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x1a, 0x52, 0x0a, 0x0b, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, + 0x02, 0x0a, 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x38, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0c, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x22, 0x46, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, + 0x0a, 0x13, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x41, 0x57, 0x5f, 0x50, + 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x53, 0x5f, + 0x41, 0x56, 0x41, 0x54, 0x41, 0x52, 0x10, 0x02, 0x22, 0x32, 0x0a, 0x0a, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x5a, 0x0b, + 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("chat_identity.proto", fileDescriptor_7a652489000a5879) +var ( + file_chat_identity_proto_rawDescOnce sync.Once + file_chat_identity_proto_rawDescData = file_chat_identity_proto_rawDesc +) + +func file_chat_identity_proto_rawDescGZIP() []byte { + file_chat_identity_proto_rawDescOnce.Do(func() { + file_chat_identity_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_identity_proto_rawDescData) + }) + return file_chat_identity_proto_rawDescData } -var fileDescriptor_7a652489000a5879 = []byte{ - // 568 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x53, 0x51, 0x4f, 0xdb, 0x3c, - 0x14, 0xfd, 0xd2, 0x16, 0x68, 0xaf, 0x0b, 0x54, 0x06, 0x3e, 0x0c, 0xda, 0x43, 0xd6, 0x97, 0xf5, - 0x65, 0x99, 0xd4, 0x49, 0x1b, 0x62, 0x4f, 0x19, 0x14, 0x09, 0xc1, 0x0a, 0x72, 0xcb, 0x10, 0x7b, - 0xb1, 0x4c, 0xea, 0x82, 0xd7, 0x24, 0x8e, 0x62, 0x77, 0x5b, 0x7e, 0xd9, 0x7e, 0xda, 0x5e, 0xa7, - 0x38, 0x09, 0x69, 0xf7, 0xd4, 0x7b, 0xcf, 0x39, 0x3e, 0xbe, 0xbd, 0xc7, 0x81, 0xbd, 0xe0, 0x99, - 0x1b, 0x26, 0x67, 0x22, 0x36, 0xd2, 0x64, 0x5e, 0x92, 0x2a, 0xa3, 0x70, 0xdb, 0xfe, 0x3c, 0x2e, - 0xe7, 0xc7, 0x48, 0xc4, 0xcb, 0x48, 0x17, 0xf0, 0xf1, 0xff, 0x49, 0xaa, 0xe6, 0x32, 0x14, 0x4c, - 0x3f, 0xab, 0x9f, 0x01, 0xd7, 0xa2, 0xc0, 0xfb, 0x7f, 0x9a, 0xd0, 0x3d, 0x7b, 0xe6, 0xe6, 0xb2, - 0x74, 0xc1, 0xfb, 0xb0, 0x11, 0x84, 0x2a, 0x58, 0x10, 0xc7, 0x75, 0x06, 0x2d, 0x5a, 0x34, 0xf8, - 0x08, 0xda, 0x22, 0xd6, 0x2c, 0xe6, 0x91, 0x20, 0x0d, 0xd7, 0x19, 0x74, 0xe8, 0x96, 0x88, 0xf5, - 0x98, 0x47, 0x02, 0x9f, 0xc2, 0xa6, 0x8c, 0xf8, 0x93, 0xd0, 0xa4, 0xe9, 0x36, 0x07, 0x68, 0xd8, - 0xf7, 0xaa, 0x09, 0xbc, 0x55, 0x63, 0xef, 0xd2, 0x8a, 0x46, 0xb1, 0x49, 0x33, 0x5a, 0x9e, 0xc0, - 0xaf, 0xa1, 0x3b, 0x93, 0x3a, 0x09, 0x79, 0x56, 0x58, 0xb7, 0xac, 0x35, 0x2a, 0x31, 0x6b, 0xef, - 0x02, 0x9a, 0x09, 0x1d, 0xa4, 0x32, 0x31, 0x52, 0xc5, 0x64, 0xa3, 0x54, 0xd4, 0x90, 0x9d, 0x58, - 0x85, 0x2a, 0x25, 0x9b, 0x96, 0x2b, 0x9a, 0x1c, 0x15, 0x91, 0xfa, 0x2e, 0xc9, 0x56, 0x81, 0xda, - 0x06, 0x7f, 0x84, 0xae, 0x56, 0x81, 0xe4, 0x21, 0x0b, 0x65, 0xbc, 0xd0, 0xa4, 0x6d, 0x47, 0xde, - 0xaf, 0x47, 0x9e, 0x58, 0xf6, 0x5a, 0xc6, 0x0b, 0x8a, 0xf4, 0x4b, 0xad, 0xf1, 0x07, 0x38, 0x9c, - 0xcb, 0x54, 0x1b, 0x16, 0x09, 0xad, 0xf9, 0x93, 0x60, 0x46, 0x46, 0x42, 0x1b, 0x1e, 0x25, 0xa4, - 0xe3, 0x3a, 0x83, 0x6d, 0x7a, 0x60, 0xe9, 0x2f, 0x05, 0x3b, 0xad, 0x48, 0x7c, 0x0e, 0xbd, 0x7f, - 0x37, 0x4f, 0xc0, 0x75, 0x06, 0x68, 0x78, 0x54, 0x5f, 0x7a, 0x5b, 0x28, 0x26, 0xa5, 0x80, 0xee, - 0x26, 0xeb, 0xc0, 0x31, 0x05, 0xb4, 0xb2, 0x3e, 0xdc, 0x83, 0xe6, 0x42, 0x64, 0x36, 0xa1, 0x0e, - 0xcd, 0x4b, 0xfc, 0x16, 0x36, 0x7e, 0xf0, 0x70, 0x59, 0x84, 0x83, 0x86, 0x87, 0xb5, 0x77, 0xb5, - 0x7f, 0x7b, 0x9e, 0x16, 0xaa, 0xd3, 0xc6, 0x89, 0xd3, 0xff, 0xdd, 0x80, 0xed, 0x35, 0x12, 0x13, - 0xd8, 0x4a, 0x78, 0x16, 0x2a, 0x3e, 0xb3, 0xd6, 0x5d, 0x5a, 0xb5, 0xf8, 0x0c, 0x90, 0x56, 0xcb, - 0x34, 0x10, 0xcc, 0x64, 0x49, 0x71, 0xc9, 0xce, 0x6a, 0xd0, 0x6b, 0x3e, 0xde, 0xc4, 0x4a, 0xa7, - 0x59, 0x22, 0x28, 0xe8, 0x97, 0x1a, 0x9f, 0x40, 0xd7, 0xc6, 0xce, 0xe6, 0x2a, 0x8d, 0xb8, 0x21, - 0x4d, 0xeb, 0x72, 0xb0, 0xe2, 0x92, 0xb3, 0x17, 0x96, 0xa4, 0x48, 0xd6, 0x0d, 0x7e, 0x03, 0xbb, - 0x22, 0x0e, 0xd2, 0xcc, 0xe6, 0xcd, 0x16, 0x22, 0xd3, 0xa4, 0xe5, 0x36, 0x07, 0x5d, 0xba, 0x53, - 0xc3, 0x57, 0x22, 0xd3, 0xf8, 0x15, 0x74, 0x4a, 0x44, 0xcc, 0xec, 0x53, 0x69, 0xd3, 0x1a, 0xe8, - 0x5f, 0x00, 0xd4, 0xa3, 0xe1, 0x43, 0xd8, 0xbb, 0x1b, 0x5f, 0x8d, 0x6f, 0xee, 0xc7, 0x6c, 0x72, - 0x73, 0x47, 0xcf, 0x46, 0x6c, 0xfa, 0x70, 0x3b, 0xea, 0xfd, 0x87, 0x77, 0x01, 0x51, 0xff, 0x9e, - 0xdd, 0xfa, 0x0f, 0xd7, 0x37, 0xfe, 0x79, 0xcf, 0xc1, 0x3b, 0x00, 0xa3, 0xf1, 0x84, 0xf9, 0x5f, - 0xfd, 0xa9, 0x4f, 0x7b, 0x8d, 0xfe, 0x30, 0xf7, 0xa9, 0x9e, 0x06, 0xc6, 0xd0, 0x32, 0xe2, 0x97, - 0x29, 0xd3, 0xb0, 0x75, 0x1e, 0xd0, 0x32, 0x0d, 0xcb, 0x2f, 0x25, 0x2f, 0x3f, 0x6f, 0x7f, 0x43, - 0xde, 0xbb, 0x4f, 0xd5, 0x5f, 0x7d, 0xdc, 0xb4, 0xd5, 0xfb, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xf2, 0x9d, 0x33, 0x90, 0xc3, 0x03, 0x00, 0x00, +var file_chat_identity_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_chat_identity_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_chat_identity_proto_goTypes = []interface{}{ + (IdentityImage_SourceType)(0), // 0: protobuf.IdentityImage.SourceType + (*ChatIdentity)(nil), // 1: protobuf.ChatIdentity + (*IdentityImage)(nil), // 2: protobuf.IdentityImage + (*SocialLink)(nil), // 3: protobuf.SocialLink + nil, // 4: protobuf.ChatIdentity.ImagesEntry + (*ProfileShowcase)(nil), // 5: protobuf.ProfileShowcase + (ImageFormat)(0), // 6: protobuf.ImageFormat +} +var file_chat_identity_proto_depIdxs = []int32{ + 4, // 0: protobuf.ChatIdentity.images:type_name -> protobuf.ChatIdentity.ImagesEntry + 3, // 1: protobuf.ChatIdentity.social_links:type_name -> protobuf.SocialLink + 5, // 2: protobuf.ChatIdentity.profile_showcase:type_name -> protobuf.ProfileShowcase + 0, // 3: protobuf.IdentityImage.source_type:type_name -> protobuf.IdentityImage.SourceType + 6, // 4: protobuf.IdentityImage.image_format:type_name -> protobuf.ImageFormat + 2, // 5: protobuf.ChatIdentity.ImagesEntry.value:type_name -> protobuf.IdentityImage + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_chat_identity_proto_init() } +func file_chat_identity_proto_init() { + if File_chat_identity_proto != nil { + return + } + file_enums_proto_init() + file_profile_showcase_proto_init() + if !protoimpl.UnsafeEnabled { + file_chat_identity_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatIdentity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_identity_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IdentityImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_identity_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SocialLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_chat_identity_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_chat_identity_proto_goTypes, + DependencyIndexes: file_chat_identity_proto_depIdxs, + EnumInfos: file_chat_identity_proto_enumTypes, + MessageInfos: file_chat_identity_proto_msgTypes, + }.Build() + File_chat_identity_proto = out.File + file_chat_identity_proto_rawDesc = nil + file_chat_identity_proto_goTypes = nil + file_chat_identity_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.pb.go index b0f60bdc..6e8cd3e2 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: chat_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type AudioMessage_AudioType int32 @@ -28,24 +28,45 @@ const ( AudioMessage_AMR AudioMessage_AudioType = 2 ) -var AudioMessage_AudioType_name = map[int32]string{ - 0: "UNKNOWN_AUDIO_TYPE", - 1: "AAC", - 2: "AMR", -} +// Enum value maps for AudioMessage_AudioType. +var ( + AudioMessage_AudioType_name = map[int32]string{ + 0: "UNKNOWN_AUDIO_TYPE", + 1: "AAC", + 2: "AMR", + } + AudioMessage_AudioType_value = map[string]int32{ + "UNKNOWN_AUDIO_TYPE": 0, + "AAC": 1, + "AMR": 2, + } +) -var AudioMessage_AudioType_value = map[string]int32{ - "UNKNOWN_AUDIO_TYPE": 0, - "AAC": 1, - "AMR": 2, +func (x AudioMessage_AudioType) Enum() *AudioMessage_AudioType { + p := new(AudioMessage_AudioType) + *p = x + return p } func (x AudioMessage_AudioType) String() string { - return proto.EnumName(AudioMessage_AudioType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (AudioMessage_AudioType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[0].Descriptor() +} + +func (AudioMessage_AudioType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[0] +} + +func (x AudioMessage_AudioType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AudioMessage_AudioType.Descriptor instead. func (AudioMessage_AudioType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{2, 0} + return file_chat_message_proto_rawDescGZIP(), []int{2, 0} } type UnfurledLink_LinkType int32 @@ -55,22 +76,43 @@ const ( UnfurledLink_IMAGE UnfurledLink_LinkType = 1 ) -var UnfurledLink_LinkType_name = map[int32]string{ - 0: "LINK", - 1: "IMAGE", -} +// Enum value maps for UnfurledLink_LinkType. +var ( + UnfurledLink_LinkType_name = map[int32]string{ + 0: "LINK", + 1: "IMAGE", + } + UnfurledLink_LinkType_value = map[string]int32{ + "LINK": 0, + "IMAGE": 1, + } +) -var UnfurledLink_LinkType_value = map[string]int32{ - "LINK": 0, - "IMAGE": 1, +func (x UnfurledLink_LinkType) Enum() *UnfurledLink_LinkType { + p := new(UnfurledLink_LinkType) + *p = x + return p } func (x UnfurledLink_LinkType) String() string { - return proto.EnumName(UnfurledLink_LinkType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (UnfurledLink_LinkType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[1].Descriptor() +} + +func (UnfurledLink_LinkType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[1] +} + +func (x UnfurledLink_LinkType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UnfurledLink_LinkType.Descriptor instead. func (UnfurledLink_LinkType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{12, 0} + return file_chat_message_proto_rawDescGZIP(), []int{12, 0} } type ChatMessage_ContentType int32 @@ -103,1314 +145,1511 @@ const ( ChatMessage_BRIDGE_MESSAGE ChatMessage_ContentType = 18 ) -var ChatMessage_ContentType_name = map[int32]string{ - 0: "UNKNOWN_CONTENT_TYPE", - 1: "TEXT_PLAIN", - 2: "STICKER", - 3: "STATUS", - 4: "EMOJI", - 5: "TRANSACTION_COMMAND", - 6: "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP", - 7: "IMAGE", - 8: "AUDIO", - 9: "COMMUNITY", - 10: "SYSTEM_MESSAGE_GAP", - 11: "CONTACT_REQUEST", - 12: "DISCORD_MESSAGE", - 13: "IDENTITY_VERIFICATION", - 14: "SYSTEM_MESSAGE_PINNED_MESSAGE", - 15: "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT", - 16: "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED", - 17: "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED", - 18: "BRIDGE_MESSAGE", -} +// Enum value maps for ChatMessage_ContentType. +var ( + ChatMessage_ContentType_name = map[int32]string{ + 0: "UNKNOWN_CONTENT_TYPE", + 1: "TEXT_PLAIN", + 2: "STICKER", + 3: "STATUS", + 4: "EMOJI", + 5: "TRANSACTION_COMMAND", + 6: "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP", + 7: "IMAGE", + 8: "AUDIO", + 9: "COMMUNITY", + 10: "SYSTEM_MESSAGE_GAP", + 11: "CONTACT_REQUEST", + 12: "DISCORD_MESSAGE", + 13: "IDENTITY_VERIFICATION", + 14: "SYSTEM_MESSAGE_PINNED_MESSAGE", + 15: "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT", + 16: "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED", + 17: "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED", + 18: "BRIDGE_MESSAGE", + } + ChatMessage_ContentType_value = map[string]int32{ + "UNKNOWN_CONTENT_TYPE": 0, + "TEXT_PLAIN": 1, + "STICKER": 2, + "STATUS": 3, + "EMOJI": 4, + "TRANSACTION_COMMAND": 5, + "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP": 6, + "IMAGE": 7, + "AUDIO": 8, + "COMMUNITY": 9, + "SYSTEM_MESSAGE_GAP": 10, + "CONTACT_REQUEST": 11, + "DISCORD_MESSAGE": 12, + "IDENTITY_VERIFICATION": 13, + "SYSTEM_MESSAGE_PINNED_MESSAGE": 14, + "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT": 15, + "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED": 16, + "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED": 17, + "BRIDGE_MESSAGE": 18, + } +) -var ChatMessage_ContentType_value = map[string]int32{ - "UNKNOWN_CONTENT_TYPE": 0, - "TEXT_PLAIN": 1, - "STICKER": 2, - "STATUS": 3, - "EMOJI": 4, - "TRANSACTION_COMMAND": 5, - "SYSTEM_MESSAGE_CONTENT_PRIVATE_GROUP": 6, - "IMAGE": 7, - "AUDIO": 8, - "COMMUNITY": 9, - "SYSTEM_MESSAGE_GAP": 10, - "CONTACT_REQUEST": 11, - "DISCORD_MESSAGE": 12, - "IDENTITY_VERIFICATION": 13, - "SYSTEM_MESSAGE_PINNED_MESSAGE": 14, - "SYSTEM_MESSAGE_MUTUAL_EVENT_SENT": 15, - "SYSTEM_MESSAGE_MUTUAL_EVENT_ACCEPTED": 16, - "SYSTEM_MESSAGE_MUTUAL_EVENT_REMOVED": 17, - "BRIDGE_MESSAGE": 18, +func (x ChatMessage_ContentType) Enum() *ChatMessage_ContentType { + p := new(ChatMessage_ContentType) + *p = x + return p } func (x ChatMessage_ContentType) String() string { - return proto.EnumName(ChatMessage_ContentType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ChatMessage_ContentType) Descriptor() protoreflect.EnumDescriptor { + return file_chat_message_proto_enumTypes[2].Descriptor() +} + +func (ChatMessage_ContentType) Type() protoreflect.EnumType { + return &file_chat_message_proto_enumTypes[2] +} + +func (x ChatMessage_ContentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ChatMessage_ContentType.Descriptor instead. func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{18, 0} + return file_chat_message_proto_rawDescGZIP(), []int{18, 0} } type StickerMessage struct { - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - Pack int32 `protobuf:"varint,2,opt,name=pack,proto3" json:"pack,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Pack int32 `protobuf:"varint,2,opt,name=pack,proto3" json:"pack,omitempty"` } -func (m *StickerMessage) Reset() { *m = StickerMessage{} } -func (m *StickerMessage) String() string { return proto.CompactTextString(m) } -func (*StickerMessage) ProtoMessage() {} +func (x *StickerMessage) Reset() { + *x = StickerMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StickerMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StickerMessage) ProtoMessage() {} + +func (x *StickerMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StickerMessage.ProtoReflect.Descriptor instead. func (*StickerMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{0} + return file_chat_message_proto_rawDescGZIP(), []int{0} } -func (m *StickerMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StickerMessage.Unmarshal(m, b) -} -func (m *StickerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StickerMessage.Marshal(b, m, deterministic) -} -func (m *StickerMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_StickerMessage.Merge(m, src) -} -func (m *StickerMessage) XXX_Size() int { - return xxx_messageInfo_StickerMessage.Size(m) -} -func (m *StickerMessage) XXX_DiscardUnknown() { - xxx_messageInfo_StickerMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_StickerMessage proto.InternalMessageInfo - -func (m *StickerMessage) GetHash() string { - if m != nil { - return m.Hash +func (x *StickerMessage) GetHash() string { + if x != nil { + return x.Hash } return "" } -func (m *StickerMessage) GetPack() int32 { - if m != nil { - return m.Pack +func (x *StickerMessage) GetPack() int32 { + if x != nil { + return x.Pack } return 0 } type ImageMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Format ImageFormat `protobuf:"varint,2,opt,name=format,proto3,enum=protobuf.ImageFormat" json:"format,omitempty"` - AlbumId string `protobuf:"bytes,3,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` - Width uint32 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` - Height uint32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` - AlbumImagesCount uint32 `protobuf:"varint,6,opt,name=album_images_count,json=albumImagesCount,proto3" json:"album_images_count,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Format ImageFormat `protobuf:"varint,2,opt,name=format,proto3,enum=protobuf.ImageFormat" json:"format,omitempty"` + AlbumId string `protobuf:"bytes,3,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + Width uint32 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + AlbumImagesCount uint32 `protobuf:"varint,6,opt,name=album_images_count,json=albumImagesCount,proto3" json:"album_images_count,omitempty"` } -func (m *ImageMessage) Reset() { *m = ImageMessage{} } -func (m *ImageMessage) String() string { return proto.CompactTextString(m) } -func (*ImageMessage) ProtoMessage() {} +func (x *ImageMessage) Reset() { + *x = ImageMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImageMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImageMessage) ProtoMessage() {} + +func (x *ImageMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImageMessage.ProtoReflect.Descriptor instead. func (*ImageMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{1} + return file_chat_message_proto_rawDescGZIP(), []int{1} } -func (m *ImageMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ImageMessage.Unmarshal(m, b) -} -func (m *ImageMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ImageMessage.Marshal(b, m, deterministic) -} -func (m *ImageMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ImageMessage.Merge(m, src) -} -func (m *ImageMessage) XXX_Size() int { - return xxx_messageInfo_ImageMessage.Size(m) -} -func (m *ImageMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ImageMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ImageMessage proto.InternalMessageInfo - -func (m *ImageMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *ImageMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *ImageMessage) GetFormat() ImageFormat { - if m != nil { - return m.Format +func (x *ImageMessage) GetFormat() ImageFormat { + if x != nil { + return x.Format } return ImageFormat_UNKNOWN_IMAGE_FORMAT } -func (m *ImageMessage) GetAlbumId() string { - if m != nil { - return m.AlbumId +func (x *ImageMessage) GetAlbumId() string { + if x != nil { + return x.AlbumId } return "" } -func (m *ImageMessage) GetWidth() uint32 { - if m != nil { - return m.Width +func (x *ImageMessage) GetWidth() uint32 { + if x != nil { + return x.Width } return 0 } -func (m *ImageMessage) GetHeight() uint32 { - if m != nil { - return m.Height +func (x *ImageMessage) GetHeight() uint32 { + if x != nil { + return x.Height } return 0 } -func (m *ImageMessage) GetAlbumImagesCount() uint32 { - if m != nil { - return m.AlbumImagesCount +func (x *ImageMessage) GetAlbumImagesCount() uint32 { + if x != nil { + return x.AlbumImagesCount } return 0 } type AudioMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Type AudioMessage_AudioType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.AudioMessage_AudioType" json:"type,omitempty"` - DurationMs uint64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Type AudioMessage_AudioType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.AudioMessage_AudioType" json:"type,omitempty"` + DurationMs uint64 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` } -func (m *AudioMessage) Reset() { *m = AudioMessage{} } -func (m *AudioMessage) String() string { return proto.CompactTextString(m) } -func (*AudioMessage) ProtoMessage() {} +func (x *AudioMessage) Reset() { + *x = AudioMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AudioMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AudioMessage) ProtoMessage() {} + +func (x *AudioMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AudioMessage.ProtoReflect.Descriptor instead. func (*AudioMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{2} + return file_chat_message_proto_rawDescGZIP(), []int{2} } -func (m *AudioMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AudioMessage.Unmarshal(m, b) -} -func (m *AudioMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AudioMessage.Marshal(b, m, deterministic) -} -func (m *AudioMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_AudioMessage.Merge(m, src) -} -func (m *AudioMessage) XXX_Size() int { - return xxx_messageInfo_AudioMessage.Size(m) -} -func (m *AudioMessage) XXX_DiscardUnknown() { - xxx_messageInfo_AudioMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_AudioMessage proto.InternalMessageInfo - -func (m *AudioMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *AudioMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *AudioMessage) GetType() AudioMessage_AudioType { - if m != nil { - return m.Type +func (x *AudioMessage) GetType() AudioMessage_AudioType { + if x != nil { + return x.Type } return AudioMessage_UNKNOWN_AUDIO_TYPE } -func (m *AudioMessage) GetDurationMs() uint64 { - if m != nil { - return m.DurationMs +func (x *AudioMessage) GetDurationMs() uint64 { + if x != nil { + return x.DurationMs } return 0 } type EditMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // Text of the message Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` MessageId string `protobuf:"bytes,4,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // Grant for community edit messages - Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Marked as deprecated in chat_message.proto. + Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` - UnfurledLinks []*UnfurledLink `protobuf:"bytes,8,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"` - UnfurledStatusLinks *UnfurledStatusLinks `protobuf:"bytes,9,opt,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,6,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` + ContentType ChatMessage_ContentType `protobuf:"varint,7,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` + UnfurledLinks []*UnfurledLink `protobuf:"bytes,8,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"` + UnfurledStatusLinks *UnfurledStatusLinks `protobuf:"bytes,9,opt,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"` } -func (m *EditMessage) Reset() { *m = EditMessage{} } -func (m *EditMessage) String() string { return proto.CompactTextString(m) } -func (*EditMessage) ProtoMessage() {} +func (x *EditMessage) Reset() { + *x = EditMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EditMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EditMessage) ProtoMessage() {} + +func (x *EditMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EditMessage.ProtoReflect.Descriptor instead. func (*EditMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{3} + return file_chat_message_proto_rawDescGZIP(), []int{3} } -func (m *EditMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EditMessage.Unmarshal(m, b) -} -func (m *EditMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EditMessage.Marshal(b, m, deterministic) -} -func (m *EditMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_EditMessage.Merge(m, src) -} -func (m *EditMessage) XXX_Size() int { - return xxx_messageInfo_EditMessage.Size(m) -} -func (m *EditMessage) XXX_DiscardUnknown() { - xxx_messageInfo_EditMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_EditMessage proto.InternalMessageInfo - -func (m *EditMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *EditMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *EditMessage) GetText() string { - if m != nil { - return m.Text +func (x *EditMessage) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *EditMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *EditMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *EditMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *EditMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -// Deprecated: Do not use. -func (m *EditMessage) GetGrant() []byte { - if m != nil { - return m.Grant +// Deprecated: Marked as deprecated in chat_message.proto. +func (x *EditMessage) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *EditMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *EditMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *EditMessage) GetContentType() ChatMessage_ContentType { - if m != nil { - return m.ContentType +func (x *EditMessage) GetContentType() ChatMessage_ContentType { + if x != nil { + return x.ContentType } return ChatMessage_UNKNOWN_CONTENT_TYPE } -func (m *EditMessage) GetUnfurledLinks() []*UnfurledLink { - if m != nil { - return m.UnfurledLinks +func (x *EditMessage) GetUnfurledLinks() []*UnfurledLink { + if x != nil { + return x.UnfurledLinks } return nil } -func (m *EditMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks { - if m != nil { - return m.UnfurledStatusLinks +func (x *EditMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks { + if x != nil { + return x.UnfurledStatusLinks } return nil } type DeleteMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` MessageId string `protobuf:"bytes,3,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // Grant for community delete messages - Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Marked as deprecated in chat_message.proto. + Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - DeletedBy string `protobuf:"bytes,6,opt,name=deleted_by,json=deletedBy,proto3" json:"deleted_by,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` + DeletedBy string `protobuf:"bytes,6,opt,name=deleted_by,json=deletedBy,proto3" json:"deleted_by,omitempty"` } -func (m *DeleteMessage) Reset() { *m = DeleteMessage{} } -func (m *DeleteMessage) String() string { return proto.CompactTextString(m) } -func (*DeleteMessage) ProtoMessage() {} +func (x *DeleteMessage) Reset() { + *x = DeleteMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteMessage) ProtoMessage() {} + +func (x *DeleteMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteMessage.ProtoReflect.Descriptor instead. func (*DeleteMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{4} + return file_chat_message_proto_rawDescGZIP(), []int{4} } -func (m *DeleteMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteMessage.Unmarshal(m, b) -} -func (m *DeleteMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteMessage.Marshal(b, m, deterministic) -} -func (m *DeleteMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteMessage.Merge(m, src) -} -func (m *DeleteMessage) XXX_Size() int { - return xxx_messageInfo_DeleteMessage.Size(m) -} -func (m *DeleteMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteMessage proto.InternalMessageInfo - -func (m *DeleteMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeleteMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeleteMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeleteMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *DeleteMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DeleteMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -// Deprecated: Do not use. -func (m *DeleteMessage) GetGrant() []byte { - if m != nil { - return m.Grant +// Deprecated: Marked as deprecated in chat_message.proto. +func (x *DeleteMessage) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *DeleteMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *DeleteMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *DeleteMessage) GetDeletedBy() string { - if m != nil { - return m.DeletedBy +func (x *DeleteMessage) GetDeletedBy() string { + if x != nil { + return x.DeletedBy } return "" } type SyncDeleteForMeMessage struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } -func (m *SyncDeleteForMeMessage) Reset() { *m = SyncDeleteForMeMessage{} } -func (m *SyncDeleteForMeMessage) String() string { return proto.CompactTextString(m) } -func (*SyncDeleteForMeMessage) ProtoMessage() {} +func (x *SyncDeleteForMeMessage) Reset() { + *x = SyncDeleteForMeMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncDeleteForMeMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncDeleteForMeMessage) ProtoMessage() {} + +func (x *SyncDeleteForMeMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncDeleteForMeMessage.ProtoReflect.Descriptor instead. func (*SyncDeleteForMeMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{5} + return file_chat_message_proto_rawDescGZIP(), []int{5} } -func (m *SyncDeleteForMeMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncDeleteForMeMessage.Unmarshal(m, b) -} -func (m *SyncDeleteForMeMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncDeleteForMeMessage.Marshal(b, m, deterministic) -} -func (m *SyncDeleteForMeMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncDeleteForMeMessage.Merge(m, src) -} -func (m *SyncDeleteForMeMessage) XXX_Size() int { - return xxx_messageInfo_SyncDeleteForMeMessage.Size(m) -} -func (m *SyncDeleteForMeMessage) XXX_DiscardUnknown() { - xxx_messageInfo_SyncDeleteForMeMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncDeleteForMeMessage proto.InternalMessageInfo - -func (m *SyncDeleteForMeMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncDeleteForMeMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncDeleteForMeMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *SyncDeleteForMeMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } type DiscordMessage struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - TimestampEdited string `protobuf:"bytes,4,opt,name=timestampEdited,proto3" json:"timestampEdited,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` - Author *DiscordMessageAuthor `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"` - Reference *DiscordMessageReference `protobuf:"bytes,7,opt,name=reference,proto3" json:"reference,omitempty"` - Attachments []*DiscordMessageAttachment `protobuf:"bytes,8,rep,name=attachments,proto3" json:"attachments,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Timestamp string `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + TimestampEdited string `protobuf:"bytes,4,opt,name=timestampEdited,proto3" json:"timestampEdited,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + Author *DiscordMessageAuthor `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"` + Reference *DiscordMessageReference `protobuf:"bytes,7,opt,name=reference,proto3" json:"reference,omitempty"` + Attachments []*DiscordMessageAttachment `protobuf:"bytes,8,rep,name=attachments,proto3" json:"attachments,omitempty"` } -func (m *DiscordMessage) Reset() { *m = DiscordMessage{} } -func (m *DiscordMessage) String() string { return proto.CompactTextString(m) } -func (*DiscordMessage) ProtoMessage() {} +func (x *DiscordMessage) Reset() { + *x = DiscordMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessage) ProtoMessage() {} + +func (x *DiscordMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessage.ProtoReflect.Descriptor instead. func (*DiscordMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{6} + return file_chat_message_proto_rawDescGZIP(), []int{6} } -func (m *DiscordMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessage.Unmarshal(m, b) -} -func (m *DiscordMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessage.Marshal(b, m, deterministic) -} -func (m *DiscordMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessage.Merge(m, src) -} -func (m *DiscordMessage) XXX_Size() int { - return xxx_messageInfo_DiscordMessage.Size(m) -} -func (m *DiscordMessage) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessage proto.InternalMessageInfo - -func (m *DiscordMessage) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessage) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessage) GetType() string { - if m != nil { - return m.Type +func (x *DiscordMessage) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *DiscordMessage) GetTimestamp() string { - if m != nil { - return m.Timestamp +func (x *DiscordMessage) GetTimestamp() string { + if x != nil { + return x.Timestamp } return "" } -func (m *DiscordMessage) GetTimestampEdited() string { - if m != nil { - return m.TimestampEdited +func (x *DiscordMessage) GetTimestampEdited() string { + if x != nil { + return x.TimestampEdited } return "" } -func (m *DiscordMessage) GetContent() string { - if m != nil { - return m.Content +func (x *DiscordMessage) GetContent() string { + if x != nil { + return x.Content } return "" } -func (m *DiscordMessage) GetAuthor() *DiscordMessageAuthor { - if m != nil { - return m.Author +func (x *DiscordMessage) GetAuthor() *DiscordMessageAuthor { + if x != nil { + return x.Author } return nil } -func (m *DiscordMessage) GetReference() *DiscordMessageReference { - if m != nil { - return m.Reference +func (x *DiscordMessage) GetReference() *DiscordMessageReference { + if x != nil { + return x.Reference } return nil } -func (m *DiscordMessage) GetAttachments() []*DiscordMessageAttachment { - if m != nil { - return m.Attachments +func (x *DiscordMessage) GetAttachments() []*DiscordMessageAttachment { + if x != nil { + return x.Attachments } return nil } type DiscordMessageAuthor struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Discriminator string `protobuf:"bytes,3,opt,name=discriminator,proto3" json:"discriminator,omitempty"` - Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` - AvatarUrl string `protobuf:"bytes,5,opt,name=avatarUrl,proto3" json:"avatarUrl,omitempty"` - AvatarImagePayload []byte `protobuf:"bytes,6,opt,name=avatarImagePayload,proto3" json:"avatarImagePayload,omitempty"` - LocalUrl string `protobuf:"bytes,7,opt,name=localUrl,proto3" json:"localUrl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Discriminator string `protobuf:"bytes,3,opt,name=discriminator,proto3" json:"discriminator,omitempty"` + Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` + AvatarUrl string `protobuf:"bytes,5,opt,name=avatarUrl,proto3" json:"avatarUrl,omitempty"` + AvatarImagePayload []byte `protobuf:"bytes,6,opt,name=avatarImagePayload,proto3" json:"avatarImagePayload,omitempty"` + LocalUrl string `protobuf:"bytes,7,opt,name=localUrl,proto3" json:"localUrl,omitempty"` } -func (m *DiscordMessageAuthor) Reset() { *m = DiscordMessageAuthor{} } -func (m *DiscordMessageAuthor) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageAuthor) ProtoMessage() {} +func (x *DiscordMessageAuthor) Reset() { + *x = DiscordMessageAuthor{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageAuthor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageAuthor) ProtoMessage() {} + +func (x *DiscordMessageAuthor) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageAuthor.ProtoReflect.Descriptor instead. func (*DiscordMessageAuthor) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{7} + return file_chat_message_proto_rawDescGZIP(), []int{7} } -func (m *DiscordMessageAuthor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageAuthor.Unmarshal(m, b) -} -func (m *DiscordMessageAuthor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageAuthor.Marshal(b, m, deterministic) -} -func (m *DiscordMessageAuthor) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageAuthor.Merge(m, src) -} -func (m *DiscordMessageAuthor) XXX_Size() int { - return xxx_messageInfo_DiscordMessageAuthor.Size(m) -} -func (m *DiscordMessageAuthor) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageAuthor.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageAuthor proto.InternalMessageInfo - -func (m *DiscordMessageAuthor) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessageAuthor) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessageAuthor) GetName() string { - if m != nil { - return m.Name +func (x *DiscordMessageAuthor) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *DiscordMessageAuthor) GetDiscriminator() string { - if m != nil { - return m.Discriminator +func (x *DiscordMessageAuthor) GetDiscriminator() string { + if x != nil { + return x.Discriminator } return "" } -func (m *DiscordMessageAuthor) GetNickname() string { - if m != nil { - return m.Nickname +func (x *DiscordMessageAuthor) GetNickname() string { + if x != nil { + return x.Nickname } return "" } -func (m *DiscordMessageAuthor) GetAvatarUrl() string { - if m != nil { - return m.AvatarUrl +func (x *DiscordMessageAuthor) GetAvatarUrl() string { + if x != nil { + return x.AvatarUrl } return "" } -func (m *DiscordMessageAuthor) GetAvatarImagePayload() []byte { - if m != nil { - return m.AvatarImagePayload +func (x *DiscordMessageAuthor) GetAvatarImagePayload() []byte { + if x != nil { + return x.AvatarImagePayload } return nil } -func (m *DiscordMessageAuthor) GetLocalUrl() string { - if m != nil { - return m.LocalUrl +func (x *DiscordMessageAuthor) GetLocalUrl() string { + if x != nil { + return x.LocalUrl } return "" } type DiscordMessageReference struct { - MessageId string `protobuf:"bytes,1,opt,name=messageId,proto3" json:"messageId,omitempty"` - ChannelId string `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"` - GuildId string `protobuf:"bytes,3,opt,name=guildId,proto3" json:"guildId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageId string `protobuf:"bytes,1,opt,name=messageId,proto3" json:"messageId,omitempty"` + ChannelId string `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"` + GuildId string `protobuf:"bytes,3,opt,name=guildId,proto3" json:"guildId,omitempty"` } -func (m *DiscordMessageReference) Reset() { *m = DiscordMessageReference{} } -func (m *DiscordMessageReference) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageReference) ProtoMessage() {} +func (x *DiscordMessageReference) Reset() { + *x = DiscordMessageReference{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageReference) ProtoMessage() {} + +func (x *DiscordMessageReference) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageReference.ProtoReflect.Descriptor instead. func (*DiscordMessageReference) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{8} + return file_chat_message_proto_rawDescGZIP(), []int{8} } -func (m *DiscordMessageReference) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageReference.Unmarshal(m, b) -} -func (m *DiscordMessageReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageReference.Marshal(b, m, deterministic) -} -func (m *DiscordMessageReference) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageReference.Merge(m, src) -} -func (m *DiscordMessageReference) XXX_Size() int { - return xxx_messageInfo_DiscordMessageReference.Size(m) -} -func (m *DiscordMessageReference) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageReference.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageReference proto.InternalMessageInfo - -func (m *DiscordMessageReference) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DiscordMessageReference) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *DiscordMessageReference) GetChannelId() string { - if m != nil { - return m.ChannelId +func (x *DiscordMessageReference) GetChannelId() string { + if x != nil { + return x.ChannelId } return "" } -func (m *DiscordMessageReference) GetGuildId() string { - if m != nil { - return m.GuildId +func (x *DiscordMessageReference) GetGuildId() string { + if x != nil { + return x.GuildId } return "" } type DiscordMessageAttachment struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` - FileName string `protobuf:"bytes,4,opt,name=fileName,proto3" json:"fileName,omitempty"` - FileSizeBytes uint64 `protobuf:"varint,5,opt,name=fileSizeBytes,proto3" json:"fileSizeBytes,omitempty"` - ContentType string `protobuf:"bytes,6,opt,name=contentType,proto3" json:"contentType,omitempty"` - Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` - LocalUrl string `protobuf:"bytes,8,opt,name=localUrl,proto3" json:"localUrl,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=messageId,proto3" json:"messageId,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + FileName string `protobuf:"bytes,4,opt,name=fileName,proto3" json:"fileName,omitempty"` + FileSizeBytes uint64 `protobuf:"varint,5,opt,name=fileSizeBytes,proto3" json:"fileSizeBytes,omitempty"` + ContentType string `protobuf:"bytes,6,opt,name=contentType,proto3" json:"contentType,omitempty"` + Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` + LocalUrl string `protobuf:"bytes,8,opt,name=localUrl,proto3" json:"localUrl,omitempty"` } -func (m *DiscordMessageAttachment) Reset() { *m = DiscordMessageAttachment{} } -func (m *DiscordMessageAttachment) String() string { return proto.CompactTextString(m) } -func (*DiscordMessageAttachment) ProtoMessage() {} +func (x *DiscordMessageAttachment) Reset() { + *x = DiscordMessageAttachment{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscordMessageAttachment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscordMessageAttachment) ProtoMessage() {} + +func (x *DiscordMessageAttachment) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscordMessageAttachment.ProtoReflect.Descriptor instead. func (*DiscordMessageAttachment) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{9} + return file_chat_message_proto_rawDescGZIP(), []int{9} } -func (m *DiscordMessageAttachment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DiscordMessageAttachment.Unmarshal(m, b) -} -func (m *DiscordMessageAttachment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DiscordMessageAttachment.Marshal(b, m, deterministic) -} -func (m *DiscordMessageAttachment) XXX_Merge(src proto.Message) { - xxx_messageInfo_DiscordMessageAttachment.Merge(m, src) -} -func (m *DiscordMessageAttachment) XXX_Size() int { - return xxx_messageInfo_DiscordMessageAttachment.Size(m) -} -func (m *DiscordMessageAttachment) XXX_DiscardUnknown() { - xxx_messageInfo_DiscordMessageAttachment.DiscardUnknown(m) -} - -var xxx_messageInfo_DiscordMessageAttachment proto.InternalMessageInfo - -func (m *DiscordMessageAttachment) GetId() string { - if m != nil { - return m.Id +func (x *DiscordMessageAttachment) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DiscordMessageAttachment) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *DiscordMessageAttachment) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *DiscordMessageAttachment) GetUrl() string { - if m != nil { - return m.Url +func (x *DiscordMessageAttachment) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *DiscordMessageAttachment) GetFileName() string { - if m != nil { - return m.FileName +func (x *DiscordMessageAttachment) GetFileName() string { + if x != nil { + return x.FileName } return "" } -func (m *DiscordMessageAttachment) GetFileSizeBytes() uint64 { - if m != nil { - return m.FileSizeBytes +func (x *DiscordMessageAttachment) GetFileSizeBytes() uint64 { + if x != nil { + return x.FileSizeBytes } return 0 } -func (m *DiscordMessageAttachment) GetContentType() string { - if m != nil { - return m.ContentType +func (x *DiscordMessageAttachment) GetContentType() string { + if x != nil { + return x.ContentType } return "" } -func (m *DiscordMessageAttachment) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *DiscordMessageAttachment) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *DiscordMessageAttachment) GetLocalUrl() string { - if m != nil { - return m.LocalUrl +func (x *DiscordMessageAttachment) GetLocalUrl() string { + if x != nil { + return x.LocalUrl } return "" } type BridgeMessage struct { - BridgeName string `protobuf:"bytes,1,opt,name=bridgeName,proto3" json:"bridgeName,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"` - UserAvatar string `protobuf:"bytes,3,opt,name=userAvatar,proto3" json:"userAvatar,omitempty"` - UserID string `protobuf:"bytes,4,opt,name=userID,proto3" json:"userID,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` - MessageID string `protobuf:"bytes,6,opt,name=messageID,proto3" json:"messageID,omitempty"` - ParentMessageID string `protobuf:"bytes,7,opt,name=parentMessageID,proto3" json:"parentMessageID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BridgeName string `protobuf:"bytes,1,opt,name=bridgeName,proto3" json:"bridgeName,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName,proto3" json:"userName,omitempty"` + UserAvatar string `protobuf:"bytes,3,opt,name=userAvatar,proto3" json:"userAvatar,omitempty"` + UserID string `protobuf:"bytes,4,opt,name=userID,proto3" json:"userID,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"` + MessageID string `protobuf:"bytes,6,opt,name=messageID,proto3" json:"messageID,omitempty"` + ParentMessageID string `protobuf:"bytes,7,opt,name=parentMessageID,proto3" json:"parentMessageID,omitempty"` } -func (m *BridgeMessage) Reset() { *m = BridgeMessage{} } -func (m *BridgeMessage) String() string { return proto.CompactTextString(m) } -func (*BridgeMessage) ProtoMessage() {} +func (x *BridgeMessage) Reset() { + *x = BridgeMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BridgeMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BridgeMessage) ProtoMessage() {} + +func (x *BridgeMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BridgeMessage.ProtoReflect.Descriptor instead. func (*BridgeMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{10} + return file_chat_message_proto_rawDescGZIP(), []int{10} } -func (m *BridgeMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BridgeMessage.Unmarshal(m, b) -} -func (m *BridgeMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BridgeMessage.Marshal(b, m, deterministic) -} -func (m *BridgeMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_BridgeMessage.Merge(m, src) -} -func (m *BridgeMessage) XXX_Size() int { - return xxx_messageInfo_BridgeMessage.Size(m) -} -func (m *BridgeMessage) XXX_DiscardUnknown() { - xxx_messageInfo_BridgeMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_BridgeMessage proto.InternalMessageInfo - -func (m *BridgeMessage) GetBridgeName() string { - if m != nil { - return m.BridgeName +func (x *BridgeMessage) GetBridgeName() string { + if x != nil { + return x.BridgeName } return "" } -func (m *BridgeMessage) GetUserName() string { - if m != nil { - return m.UserName +func (x *BridgeMessage) GetUserName() string { + if x != nil { + return x.UserName } return "" } -func (m *BridgeMessage) GetUserAvatar() string { - if m != nil { - return m.UserAvatar +func (x *BridgeMessage) GetUserAvatar() string { + if x != nil { + return x.UserAvatar } return "" } -func (m *BridgeMessage) GetUserID() string { - if m != nil { - return m.UserID +func (x *BridgeMessage) GetUserID() string { + if x != nil { + return x.UserID } return "" } -func (m *BridgeMessage) GetContent() string { - if m != nil { - return m.Content +func (x *BridgeMessage) GetContent() string { + if x != nil { + return x.Content } return "" } -func (m *BridgeMessage) GetMessageID() string { - if m != nil { - return m.MessageID +func (x *BridgeMessage) GetMessageID() string { + if x != nil { + return x.MessageID } return "" } -func (m *BridgeMessage) GetParentMessageID() string { - if m != nil { - return m.ParentMessageID +func (x *BridgeMessage) GetParentMessageID() string { + if x != nil { + return x.ParentMessageID } return "" } type UnfurledLinkThumbnail struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - Width uint32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"` - Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Width uint32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` } -func (m *UnfurledLinkThumbnail) Reset() { *m = UnfurledLinkThumbnail{} } -func (m *UnfurledLinkThumbnail) String() string { return proto.CompactTextString(m) } -func (*UnfurledLinkThumbnail) ProtoMessage() {} +func (x *UnfurledLinkThumbnail) Reset() { + *x = UnfurledLinkThumbnail{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledLinkThumbnail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledLinkThumbnail) ProtoMessage() {} + +func (x *UnfurledLinkThumbnail) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledLinkThumbnail.ProtoReflect.Descriptor instead. func (*UnfurledLinkThumbnail) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{11} + return file_chat_message_proto_rawDescGZIP(), []int{11} } -func (m *UnfurledLinkThumbnail) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledLinkThumbnail.Unmarshal(m, b) -} -func (m *UnfurledLinkThumbnail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledLinkThumbnail.Marshal(b, m, deterministic) -} -func (m *UnfurledLinkThumbnail) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledLinkThumbnail.Merge(m, src) -} -func (m *UnfurledLinkThumbnail) XXX_Size() int { - return xxx_messageInfo_UnfurledLinkThumbnail.Size(m) -} -func (m *UnfurledLinkThumbnail) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledLinkThumbnail.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledLinkThumbnail proto.InternalMessageInfo - -func (m *UnfurledLinkThumbnail) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *UnfurledLinkThumbnail) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *UnfurledLinkThumbnail) GetWidth() uint32 { - if m != nil { - return m.Width +func (x *UnfurledLinkThumbnail) GetWidth() uint32 { + if x != nil { + return x.Width } return 0 } -func (m *UnfurledLinkThumbnail) GetHeight() uint32 { - if m != nil { - return m.Height +func (x *UnfurledLinkThumbnail) GetHeight() uint32 { + if x != nil { + return x.Height } return 0 } type UnfurledLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // A valid URL which uniquely identifies this link. Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // Website's title. Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` // Description is sometimes available, but can be empty. Most mainstream // websites provide this information. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - ThumbnailPayload []byte `protobuf:"bytes,4,opt,name=thumbnail_payload,json=thumbnailPayload,proto3" json:"thumbnail_payload,omitempty"` - ThumbnailWidth uint32 `protobuf:"varint,5,opt,name=thumbnail_width,json=thumbnailWidth,proto3" json:"thumbnail_width,omitempty"` - ThumbnailHeight uint32 `protobuf:"varint,6,opt,name=thumbnail_height,json=thumbnailHeight,proto3" json:"thumbnail_height,omitempty"` - Type UnfurledLink_LinkType `protobuf:"varint,7,opt,name=type,proto3,enum=protobuf.UnfurledLink_LinkType" json:"type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + ThumbnailPayload []byte `protobuf:"bytes,4,opt,name=thumbnail_payload,json=thumbnailPayload,proto3" json:"thumbnail_payload,omitempty"` + ThumbnailWidth uint32 `protobuf:"varint,5,opt,name=thumbnail_width,json=thumbnailWidth,proto3" json:"thumbnail_width,omitempty"` + ThumbnailHeight uint32 `protobuf:"varint,6,opt,name=thumbnail_height,json=thumbnailHeight,proto3" json:"thumbnail_height,omitempty"` + Type UnfurledLink_LinkType `protobuf:"varint,7,opt,name=type,proto3,enum=protobuf.UnfurledLink_LinkType" json:"type,omitempty"` + FaviconPayload []byte `protobuf:"bytes,8,opt,name=favicon_payload,json=faviconPayload,proto3" json:"favicon_payload,omitempty"` } -func (m *UnfurledLink) Reset() { *m = UnfurledLink{} } -func (m *UnfurledLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledLink) ProtoMessage() {} +func (x *UnfurledLink) Reset() { + *x = UnfurledLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledLink) ProtoMessage() {} + +func (x *UnfurledLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledLink.ProtoReflect.Descriptor instead. func (*UnfurledLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{12} + return file_chat_message_proto_rawDescGZIP(), []int{12} } -func (m *UnfurledLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledLink.Unmarshal(m, b) -} -func (m *UnfurledLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledLink.Marshal(b, m, deterministic) -} -func (m *UnfurledLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledLink.Merge(m, src) -} -func (m *UnfurledLink) XXX_Size() int { - return xxx_messageInfo_UnfurledLink.Size(m) -} -func (m *UnfurledLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledLink proto.InternalMessageInfo - -func (m *UnfurledLink) GetUrl() string { - if m != nil { - return m.Url +func (x *UnfurledLink) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *UnfurledLink) GetTitle() string { - if m != nil { - return m.Title +func (x *UnfurledLink) GetTitle() string { + if x != nil { + return x.Title } return "" } -func (m *UnfurledLink) GetDescription() string { - if m != nil { - return m.Description +func (x *UnfurledLink) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *UnfurledLink) GetThumbnailPayload() []byte { - if m != nil { - return m.ThumbnailPayload +func (x *UnfurledLink) GetThumbnailPayload() []byte { + if x != nil { + return x.ThumbnailPayload } return nil } -func (m *UnfurledLink) GetThumbnailWidth() uint32 { - if m != nil { - return m.ThumbnailWidth +func (x *UnfurledLink) GetThumbnailWidth() uint32 { + if x != nil { + return x.ThumbnailWidth } return 0 } -func (m *UnfurledLink) GetThumbnailHeight() uint32 { - if m != nil { - return m.ThumbnailHeight +func (x *UnfurledLink) GetThumbnailHeight() uint32 { + if x != nil { + return x.ThumbnailHeight } return 0 } -func (m *UnfurledLink) GetType() UnfurledLink_LinkType { - if m != nil { - return m.Type +func (x *UnfurledLink) GetType() UnfurledLink_LinkType { + if x != nil { + return x.Type } return UnfurledLink_LINK } -type UnfurledStatusContactLink struct { - PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Icon *UnfurledLinkThumbnail `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UnfurledStatusContactLink) Reset() { *m = UnfurledStatusContactLink{} } -func (m *UnfurledStatusContactLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledStatusContactLink) ProtoMessage() {} -func (*UnfurledStatusContactLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{13} -} - -func (m *UnfurledStatusContactLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledStatusContactLink.Unmarshal(m, b) -} -func (m *UnfurledStatusContactLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledStatusContactLink.Marshal(b, m, deterministic) -} -func (m *UnfurledStatusContactLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledStatusContactLink.Merge(m, src) -} -func (m *UnfurledStatusContactLink) XXX_Size() int { - return xxx_messageInfo_UnfurledStatusContactLink.Size(m) -} -func (m *UnfurledStatusContactLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledStatusContactLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledStatusContactLink proto.InternalMessageInfo - -func (m *UnfurledStatusContactLink) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *UnfurledLink) GetFaviconPayload() []byte { + if x != nil { + return x.FaviconPayload } return nil } -func (m *UnfurledStatusContactLink) GetDisplayName() string { - if m != nil { - return m.DisplayName +type UnfurledStatusContactLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublicKey []byte `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Icon *UnfurledLinkThumbnail `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"` +} + +func (x *UnfurledStatusContactLink) Reset() { + *x = UnfurledStatusContactLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledStatusContactLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledStatusContactLink) ProtoMessage() {} + +func (x *UnfurledStatusContactLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledStatusContactLink.ProtoReflect.Descriptor instead. +func (*UnfurledStatusContactLink) Descriptor() ([]byte, []int) { + return file_chat_message_proto_rawDescGZIP(), []int{13} +} + +func (x *UnfurledStatusContactLink) GetPublicKey() []byte { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *UnfurledStatusContactLink) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *UnfurledStatusContactLink) GetDescription() string { - if m != nil { - return m.Description +func (x *UnfurledStatusContactLink) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *UnfurledStatusContactLink) GetIcon() *UnfurledLinkThumbnail { - if m != nil { - return m.Icon +func (x *UnfurledStatusContactLink) GetIcon() *UnfurledLinkThumbnail { + if x != nil { + return x.Icon } return nil } type UnfurledStatusCommunityLink struct { - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - MembersCount uint32 `protobuf:"varint,4,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` - Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` - Icon *UnfurledLinkThumbnail `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` - Banner *UnfurledLinkThumbnail `protobuf:"bytes,8,opt,name=banner,proto3" json:"banner,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + MembersCount uint32 `protobuf:"varint,4,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` + Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` + Icon *UnfurledLinkThumbnail `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` + Banner *UnfurledLinkThumbnail `protobuf:"bytes,8,opt,name=banner,proto3" json:"banner,omitempty"` } -func (m *UnfurledStatusCommunityLink) Reset() { *m = UnfurledStatusCommunityLink{} } -func (m *UnfurledStatusCommunityLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledStatusCommunityLink) ProtoMessage() {} +func (x *UnfurledStatusCommunityLink) Reset() { + *x = UnfurledStatusCommunityLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledStatusCommunityLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledStatusCommunityLink) ProtoMessage() {} + +func (x *UnfurledStatusCommunityLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledStatusCommunityLink.ProtoReflect.Descriptor instead. func (*UnfurledStatusCommunityLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{14} + return file_chat_message_proto_rawDescGZIP(), []int{14} } -func (m *UnfurledStatusCommunityLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledStatusCommunityLink.Unmarshal(m, b) -} -func (m *UnfurledStatusCommunityLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledStatusCommunityLink.Marshal(b, m, deterministic) -} -func (m *UnfurledStatusCommunityLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledStatusCommunityLink.Merge(m, src) -} -func (m *UnfurledStatusCommunityLink) XXX_Size() int { - return xxx_messageInfo_UnfurledStatusCommunityLink.Size(m) -} -func (m *UnfurledStatusCommunityLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledStatusCommunityLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledStatusCommunityLink proto.InternalMessageInfo - -func (m *UnfurledStatusCommunityLink) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *UnfurledStatusCommunityLink) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *UnfurledStatusCommunityLink) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *UnfurledStatusCommunityLink) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *UnfurledStatusCommunityLink) GetDescription() string { - if m != nil { - return m.Description +func (x *UnfurledStatusCommunityLink) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *UnfurledStatusCommunityLink) GetMembersCount() uint32 { - if m != nil { - return m.MembersCount +func (x *UnfurledStatusCommunityLink) GetMembersCount() uint32 { + if x != nil { + return x.MembersCount } return 0 } -func (m *UnfurledStatusCommunityLink) GetColor() string { - if m != nil { - return m.Color +func (x *UnfurledStatusCommunityLink) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *UnfurledStatusCommunityLink) GetIcon() *UnfurledLinkThumbnail { - if m != nil { - return m.Icon +func (x *UnfurledStatusCommunityLink) GetIcon() *UnfurledLinkThumbnail { + if x != nil { + return x.Icon } return nil } -func (m *UnfurledStatusCommunityLink) GetBanner() *UnfurledLinkThumbnail { - if m != nil { - return m.Banner +func (x *UnfurledStatusCommunityLink) GetBanner() *UnfurledLinkThumbnail { + if x != nil { + return x.Banner } return nil } type UnfurledStatusChannelLink struct { - ChannelUuid string `protobuf:"bytes,1,opt,name=channel_uuid,json=channelUuid,proto3" json:"channel_uuid,omitempty"` - Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"` - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` - Community *UnfurledStatusCommunityLink `protobuf:"bytes,6,opt,name=community,proto3" json:"community,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelUuid string `protobuf:"bytes,1,opt,name=channel_uuid,json=channelUuid,proto3" json:"channel_uuid,omitempty"` + Emoji string `protobuf:"bytes,2,opt,name=emoji,proto3" json:"emoji,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` + Community *UnfurledStatusCommunityLink `protobuf:"bytes,6,opt,name=community,proto3" json:"community,omitempty"` } -func (m *UnfurledStatusChannelLink) Reset() { *m = UnfurledStatusChannelLink{} } -func (m *UnfurledStatusChannelLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledStatusChannelLink) ProtoMessage() {} +func (x *UnfurledStatusChannelLink) Reset() { + *x = UnfurledStatusChannelLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledStatusChannelLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledStatusChannelLink) ProtoMessage() {} + +func (x *UnfurledStatusChannelLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledStatusChannelLink.ProtoReflect.Descriptor instead. func (*UnfurledStatusChannelLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{15} + return file_chat_message_proto_rawDescGZIP(), []int{15} } -func (m *UnfurledStatusChannelLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledStatusChannelLink.Unmarshal(m, b) -} -func (m *UnfurledStatusChannelLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledStatusChannelLink.Marshal(b, m, deterministic) -} -func (m *UnfurledStatusChannelLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledStatusChannelLink.Merge(m, src) -} -func (m *UnfurledStatusChannelLink) XXX_Size() int { - return xxx_messageInfo_UnfurledStatusChannelLink.Size(m) -} -func (m *UnfurledStatusChannelLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledStatusChannelLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledStatusChannelLink proto.InternalMessageInfo - -func (m *UnfurledStatusChannelLink) GetChannelUuid() string { - if m != nil { - return m.ChannelUuid +func (x *UnfurledStatusChannelLink) GetChannelUuid() string { + if x != nil { + return x.ChannelUuid } return "" } -func (m *UnfurledStatusChannelLink) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *UnfurledStatusChannelLink) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *UnfurledStatusChannelLink) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *UnfurledStatusChannelLink) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *UnfurledStatusChannelLink) GetDescription() string { - if m != nil { - return m.Description +func (x *UnfurledStatusChannelLink) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *UnfurledStatusChannelLink) GetColor() string { - if m != nil { - return m.Color +func (x *UnfurledStatusChannelLink) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *UnfurledStatusChannelLink) GetCommunity() *UnfurledStatusCommunityLink { - if m != nil { - return m.Community +func (x *UnfurledStatusChannelLink) GetCommunity() *UnfurledStatusCommunityLink { + if x != nil { + return x.Community } return nil } type UnfurledStatusLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` - // Types that are valid to be assigned to Payload: + // Types that are assignable to Payload: // // *UnfurledStatusLink_Contact // *UnfurledStatusLink_Community // *UnfurledStatusLink_Channel - Payload isUnfurledStatusLink_Payload `protobuf_oneof:"payload"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload isUnfurledStatusLink_Payload `protobuf_oneof:"payload"` } -func (m *UnfurledStatusLink) Reset() { *m = UnfurledStatusLink{} } -func (m *UnfurledStatusLink) String() string { return proto.CompactTextString(m) } -func (*UnfurledStatusLink) ProtoMessage() {} +func (x *UnfurledStatusLink) Reset() { + *x = UnfurledStatusLink{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledStatusLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledStatusLink) ProtoMessage() {} + +func (x *UnfurledStatusLink) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledStatusLink.ProtoReflect.Descriptor instead. func (*UnfurledStatusLink) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{16} + return file_chat_message_proto_rawDescGZIP(), []int{16} } -func (m *UnfurledStatusLink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledStatusLink.Unmarshal(m, b) -} -func (m *UnfurledStatusLink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledStatusLink.Marshal(b, m, deterministic) -} -func (m *UnfurledStatusLink) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledStatusLink.Merge(m, src) -} -func (m *UnfurledStatusLink) XXX_Size() int { - return xxx_messageInfo_UnfurledStatusLink.Size(m) -} -func (m *UnfurledStatusLink) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledStatusLink.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledStatusLink proto.InternalMessageInfo - -func (m *UnfurledStatusLink) GetUrl() string { - if m != nil { - return m.Url +func (x *UnfurledStatusLink) GetUrl() string { + if x != nil { + return x.Url } return "" } +func (m *UnfurledStatusLink) GetPayload() isUnfurledStatusLink_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *UnfurledStatusLink) GetContact() *UnfurledStatusContactLink { + if x, ok := x.GetPayload().(*UnfurledStatusLink_Contact); ok { + return x.Contact + } + return nil +} + +func (x *UnfurledStatusLink) GetCommunity() *UnfurledStatusCommunityLink { + if x, ok := x.GetPayload().(*UnfurledStatusLink_Community); ok { + return x.Community + } + return nil +} + +func (x *UnfurledStatusLink) GetChannel() *UnfurledStatusChannelLink { + if x, ok := x.GetPayload().(*UnfurledStatusLink_Channel); ok { + return x.Channel + } + return nil +} + type isUnfurledStatusLink_Payload interface { isUnfurledStatusLink_Payload() } @@ -1433,84 +1672,59 @@ func (*UnfurledStatusLink_Community) isUnfurledStatusLink_Payload() {} func (*UnfurledStatusLink_Channel) isUnfurledStatusLink_Payload() {} -func (m *UnfurledStatusLink) GetPayload() isUnfurledStatusLink_Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *UnfurledStatusLink) GetContact() *UnfurledStatusContactLink { - if x, ok := m.GetPayload().(*UnfurledStatusLink_Contact); ok { - return x.Contact - } - return nil -} - -func (m *UnfurledStatusLink) GetCommunity() *UnfurledStatusCommunityLink { - if x, ok := m.GetPayload().(*UnfurledStatusLink_Community); ok { - return x.Community - } - return nil -} - -func (m *UnfurledStatusLink) GetChannel() *UnfurledStatusChannelLink { - if x, ok := m.GetPayload().(*UnfurledStatusLink_Channel); ok { - return x.Channel - } - return nil -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*UnfurledStatusLink) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*UnfurledStatusLink_Contact)(nil), - (*UnfurledStatusLink_Community)(nil), - (*UnfurledStatusLink_Channel)(nil), - } -} - // Create a wrapper around repeated property for proper unmarshalling type UnfurledStatusLinks struct { - UnfurledStatusLinks []*UnfurledStatusLink `protobuf:"bytes,1,rep,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UnfurledStatusLinks []*UnfurledStatusLink `protobuf:"bytes,1,rep,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"` } -func (m *UnfurledStatusLinks) Reset() { *m = UnfurledStatusLinks{} } -func (m *UnfurledStatusLinks) String() string { return proto.CompactTextString(m) } -func (*UnfurledStatusLinks) ProtoMessage() {} +func (x *UnfurledStatusLinks) Reset() { + *x = UnfurledStatusLinks{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnfurledStatusLinks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnfurledStatusLinks) ProtoMessage() {} + +func (x *UnfurledStatusLinks) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnfurledStatusLinks.ProtoReflect.Descriptor instead. func (*UnfurledStatusLinks) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{17} + return file_chat_message_proto_rawDescGZIP(), []int{17} } -func (m *UnfurledStatusLinks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UnfurledStatusLinks.Unmarshal(m, b) -} -func (m *UnfurledStatusLinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UnfurledStatusLinks.Marshal(b, m, deterministic) -} -func (m *UnfurledStatusLinks) XXX_Merge(src proto.Message) { - xxx_messageInfo_UnfurledStatusLinks.Merge(m, src) -} -func (m *UnfurledStatusLinks) XXX_Size() int { - return xxx_messageInfo_UnfurledStatusLinks.Size(m) -} -func (m *UnfurledStatusLinks) XXX_DiscardUnknown() { - xxx_messageInfo_UnfurledStatusLinks.DiscardUnknown(m) -} - -var xxx_messageInfo_UnfurledStatusLinks proto.InternalMessageInfo - -func (m *UnfurledStatusLinks) GetUnfurledStatusLinks() []*UnfurledStatusLink { - if m != nil { - return m.UnfurledStatusLinks +func (x *UnfurledStatusLinks) GetUnfurledStatusLinks() []*UnfurledStatusLink { + if x != nil { + return x.UnfurledStatusLinks } return nil } type ChatMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // Unix timestamps in milliseconds, currently not used as we use whisper as @@ -1532,7 +1746,7 @@ type ChatMessage struct { MessageType MessageType `protobuf:"varint,7,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` // The type of the content of the message ContentType ChatMessage_ContentType `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"` - // Types that are valid to be assigned to Payload: + // Types that are assignable to Payload: // // *ChatMessage_Sticker // *ChatMessage_Image @@ -1542,99 +1756,197 @@ type ChatMessage struct { // *ChatMessage_BridgeMessage Payload isChatMessage_Payload `protobuf_oneof:"payload"` // Grant for community chat messages - Grant []byte `protobuf:"bytes,13,opt,name=grant,proto3" json:"grant,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Marked as deprecated in chat_message.proto. + Grant []byte `protobuf:"bytes,13,opt,name=grant,proto3" json:"grant,omitempty"` // Message author's display name, introduced in version 1 DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"` UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"` Shard *Shard `protobuf:"bytes,17,opt,name=shard,proto3" json:"shard,omitempty"` UnfurledStatusLinks *UnfurledStatusLinks `protobuf:"bytes,18,opt,name=unfurled_status_links,json=unfurledStatusLinks,proto3" json:"unfurled_status_links,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ChatMessage) Reset() { *m = ChatMessage{} } -func (m *ChatMessage) String() string { return proto.CompactTextString(m) } -func (*ChatMessage) ProtoMessage() {} +func (x *ChatMessage) Reset() { + *x = ChatMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_chat_message_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChatMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChatMessage) ProtoMessage() {} + +func (x *ChatMessage) ProtoReflect() protoreflect.Message { + mi := &file_chat_message_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_263952f55fd35689, []int{18} + return file_chat_message_proto_rawDescGZIP(), []int{18} } -func (m *ChatMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChatMessage.Unmarshal(m, b) -} -func (m *ChatMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChatMessage.Marshal(b, m, deterministic) -} -func (m *ChatMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChatMessage.Merge(m, src) -} -func (m *ChatMessage) XXX_Size() int { - return xxx_messageInfo_ChatMessage.Size(m) -} -func (m *ChatMessage) XXX_DiscardUnknown() { - xxx_messageInfo_ChatMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_ChatMessage proto.InternalMessageInfo - -func (m *ChatMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ChatMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ChatMessage) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *ChatMessage) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *ChatMessage) GetText() string { - if m != nil { - return m.Text +func (x *ChatMessage) GetText() string { + if x != nil { + return x.Text } return "" } -func (m *ChatMessage) GetResponseTo() string { - if m != nil { - return m.ResponseTo +func (x *ChatMessage) GetResponseTo() string { + if x != nil { + return x.ResponseTo } return "" } -func (m *ChatMessage) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ChatMessage) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ChatMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *ChatMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *ChatMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *ChatMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *ChatMessage) GetContentType() ChatMessage_ContentType { - if m != nil { - return m.ContentType +func (x *ChatMessage) GetContentType() ChatMessage_ContentType { + if x != nil { + return x.ContentType } return ChatMessage_UNKNOWN_CONTENT_TYPE } +func (m *ChatMessage) GetPayload() isChatMessage_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (x *ChatMessage) GetSticker() *StickerMessage { + if x, ok := x.GetPayload().(*ChatMessage_Sticker); ok { + return x.Sticker + } + return nil +} + +func (x *ChatMessage) GetImage() *ImageMessage { + if x, ok := x.GetPayload().(*ChatMessage_Image); ok { + return x.Image + } + return nil +} + +func (x *ChatMessage) GetAudio() *AudioMessage { + if x, ok := x.GetPayload().(*ChatMessage_Audio); ok { + return x.Audio + } + return nil +} + +func (x *ChatMessage) GetCommunity() []byte { + if x, ok := x.GetPayload().(*ChatMessage_Community); ok { + return x.Community + } + return nil +} + +func (x *ChatMessage) GetDiscordMessage() *DiscordMessage { + if x, ok := x.GetPayload().(*ChatMessage_DiscordMessage); ok { + return x.DiscordMessage + } + return nil +} + +func (x *ChatMessage) GetBridgeMessage() *BridgeMessage { + if x, ok := x.GetPayload().(*ChatMessage_BridgeMessage); ok { + return x.BridgeMessage + } + return nil +} + +// Deprecated: Marked as deprecated in chat_message.proto. +func (x *ChatMessage) GetGrant() []byte { + if x != nil { + return x.Grant + } + return nil +} + +func (x *ChatMessage) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *ChatMessage) GetContactRequestPropagatedState() *ContactRequestPropagatedState { + if x != nil { + return x.ContactRequestPropagatedState + } + return nil +} + +func (x *ChatMessage) GetUnfurledLinks() []*UnfurledLink { + if x != nil { + return x.UnfurledLinks + } + return nil +} + +func (x *ChatMessage) GetShard() *Shard { + if x != nil { + return x.Shard + } + return nil +} + +func (x *ChatMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks { + if x != nil { + return x.UnfurledStatusLinks + } + return nil +} + type isChatMessage_Payload interface { isChatMessage_Payload() } @@ -1675,101 +1987,674 @@ func (*ChatMessage_DiscordMessage) isChatMessage_Payload() {} func (*ChatMessage_BridgeMessage) isChatMessage_Payload() {} -func (m *ChatMessage) GetPayload() isChatMessage_Payload { - if m != nil { - return m.Payload - } - return nil +var File_chat_message_proto protoreflect.FileDescriptor + +var file_chat_message_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, + 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x38, 0x0a, 0x0e, 0x53, 0x74, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x63, + 0x6b, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, + 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x6c, 0x62, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x10, 0x61, 0x6c, 0x62, 0x75, 0x6d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x34, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x73, 0x22, 0x35, 0x0a, 0x09, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x41, 0x55, 0x44, + 0x49, 0x4f, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x41, 0x43, + 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4d, 0x52, 0x10, 0x02, 0x22, 0x9b, 0x03, 0x0a, 0x0b, + 0x45, 0x64, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x75, 0x6e, 0x66, 0x75, 0x72, + 0x6c, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, + 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0d, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, + 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x51, 0x0a, 0x15, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, + 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, + 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x13, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x61, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0x4d, 0x0a, 0x16, + 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x4d, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0xd5, 0x02, 0x0a, 0x0e, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x64, 0x69, + 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x45, 0x64, 0x69, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x09, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x44, 0x0a, + 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, + 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, + 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x55, 0x72, 0x6c, 0x22, 0x6f, 0x0a, 0x17, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0xf4, 0x01, + 0x0a, 0x18, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, + 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x55, 0x72, 0x6c, 0x22, 0xe5, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, + 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44, 0x22, 0x5f, 0x0a, 0x15, + 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x68, 0x75, 0x6d, + 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd8, 0x02, + 0x0a, 0x0c, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, 0x75, 0x6d, + 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, + 0x69, 0x6c, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, + 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, + 0x0a, 0x10, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, + 0x61, 0x69, 0x6c, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, + 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x1f, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x01, 0x22, 0xb4, 0x01, 0x0a, 0x19, 0x55, 0x6e, 0x66, + 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x69, 0x63, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, + 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, + 0xae, 0x02, 0x0a, 0x1b, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, + 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, + 0x6c, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, + 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x22, 0xf4, 0x01, 0x0a, 0x19, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x75, 0x69, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x22, 0xfa, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x66, 0x75, + 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x3f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, + 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x12, 0x45, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x09, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, + 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x67, 0x0a, 0x13, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x50, 0x0a, 0x15, 0x75, + 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6c, + 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x13, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, + 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0xad, 0x0b, + 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0c, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, + 0x69, 0x63, 0x6b, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x2e, 0x0a, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f, + 0x12, 0x1e, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x12, 0x43, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x72, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x70, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, + 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, + 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0d, 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, + 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x51, 0x0a, 0x15, + 0x75, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x66, 0x75, 0x72, 0x6c, 0x65, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x13, 0x75, 0x6e, 0x66, 0x75, + 0x72, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x22, + 0xd0, 0x03, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x45, 0x58, + 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x49, + 0x43, 0x4b, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x10, 0x04, 0x12, 0x17, 0x0a, + 0x13, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, + 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, + 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, + 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x41, + 0x55, 0x44, 0x49, 0x4f, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, + 0x49, 0x54, 0x59, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x47, 0x41, 0x50, 0x10, 0x0a, 0x12, 0x13, 0x0a, + 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, + 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x52, 0x44, 0x5f, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x44, 0x45, 0x4e, 0x54, + 0x49, 0x54, 0x59, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, + 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x49, 0x4e, 0x4e, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, + 0x41, 0x47, 0x45, 0x10, 0x0e, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x53, + 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, + 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, + 0x54, 0x45, 0x44, 0x10, 0x10, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4d, 0x55, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x11, 0x12, 0x12, + 0x0a, 0x0e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x10, 0x12, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0d, 0x5a, + 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } -func (m *ChatMessage) GetSticker() *StickerMessage { - if x, ok := m.GetPayload().(*ChatMessage_Sticker); ok { - return x.Sticker - } - return nil +var ( + file_chat_message_proto_rawDescOnce sync.Once + file_chat_message_proto_rawDescData = file_chat_message_proto_rawDesc +) + +func file_chat_message_proto_rawDescGZIP() []byte { + file_chat_message_proto_rawDescOnce.Do(func() { + file_chat_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_chat_message_proto_rawDescData) + }) + return file_chat_message_proto_rawDescData } -func (m *ChatMessage) GetImage() *ImageMessage { - if x, ok := m.GetPayload().(*ChatMessage_Image); ok { - return x.Image - } - return nil +var file_chat_message_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_chat_message_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_chat_message_proto_goTypes = []interface{}{ + (AudioMessage_AudioType)(0), // 0: protobuf.AudioMessage.AudioType + (UnfurledLink_LinkType)(0), // 1: protobuf.UnfurledLink.LinkType + (ChatMessage_ContentType)(0), // 2: protobuf.ChatMessage.ContentType + (*StickerMessage)(nil), // 3: protobuf.StickerMessage + (*ImageMessage)(nil), // 4: protobuf.ImageMessage + (*AudioMessage)(nil), // 5: protobuf.AudioMessage + (*EditMessage)(nil), // 6: protobuf.EditMessage + (*DeleteMessage)(nil), // 7: protobuf.DeleteMessage + (*SyncDeleteForMeMessage)(nil), // 8: protobuf.SyncDeleteForMeMessage + (*DiscordMessage)(nil), // 9: protobuf.DiscordMessage + (*DiscordMessageAuthor)(nil), // 10: protobuf.DiscordMessageAuthor + (*DiscordMessageReference)(nil), // 11: protobuf.DiscordMessageReference + (*DiscordMessageAttachment)(nil), // 12: protobuf.DiscordMessageAttachment + (*BridgeMessage)(nil), // 13: protobuf.BridgeMessage + (*UnfurledLinkThumbnail)(nil), // 14: protobuf.UnfurledLinkThumbnail + (*UnfurledLink)(nil), // 15: protobuf.UnfurledLink + (*UnfurledStatusContactLink)(nil), // 16: protobuf.UnfurledStatusContactLink + (*UnfurledStatusCommunityLink)(nil), // 17: protobuf.UnfurledStatusCommunityLink + (*UnfurledStatusChannelLink)(nil), // 18: protobuf.UnfurledStatusChannelLink + (*UnfurledStatusLink)(nil), // 19: protobuf.UnfurledStatusLink + (*UnfurledStatusLinks)(nil), // 20: protobuf.UnfurledStatusLinks + (*ChatMessage)(nil), // 21: protobuf.ChatMessage + (ImageFormat)(0), // 22: protobuf.ImageFormat + (MessageType)(0), // 23: protobuf.MessageType + (*ContactRequestPropagatedState)(nil), // 24: protobuf.ContactRequestPropagatedState + (*Shard)(nil), // 25: protobuf.Shard +} +var file_chat_message_proto_depIdxs = []int32{ + 22, // 0: protobuf.ImageMessage.format:type_name -> protobuf.ImageFormat + 0, // 1: protobuf.AudioMessage.type:type_name -> protobuf.AudioMessage.AudioType + 23, // 2: protobuf.EditMessage.message_type:type_name -> protobuf.MessageType + 2, // 3: protobuf.EditMessage.content_type:type_name -> protobuf.ChatMessage.ContentType + 15, // 4: protobuf.EditMessage.unfurled_links:type_name -> protobuf.UnfurledLink + 20, // 5: protobuf.EditMessage.unfurled_status_links:type_name -> protobuf.UnfurledStatusLinks + 23, // 6: protobuf.DeleteMessage.message_type:type_name -> protobuf.MessageType + 10, // 7: protobuf.DiscordMessage.author:type_name -> protobuf.DiscordMessageAuthor + 11, // 8: protobuf.DiscordMessage.reference:type_name -> protobuf.DiscordMessageReference + 12, // 9: protobuf.DiscordMessage.attachments:type_name -> protobuf.DiscordMessageAttachment + 1, // 10: protobuf.UnfurledLink.type:type_name -> protobuf.UnfurledLink.LinkType + 14, // 11: protobuf.UnfurledStatusContactLink.icon:type_name -> protobuf.UnfurledLinkThumbnail + 14, // 12: protobuf.UnfurledStatusCommunityLink.icon:type_name -> protobuf.UnfurledLinkThumbnail + 14, // 13: protobuf.UnfurledStatusCommunityLink.banner:type_name -> protobuf.UnfurledLinkThumbnail + 17, // 14: protobuf.UnfurledStatusChannelLink.community:type_name -> protobuf.UnfurledStatusCommunityLink + 16, // 15: protobuf.UnfurledStatusLink.contact:type_name -> protobuf.UnfurledStatusContactLink + 17, // 16: protobuf.UnfurledStatusLink.community:type_name -> protobuf.UnfurledStatusCommunityLink + 18, // 17: protobuf.UnfurledStatusLink.channel:type_name -> protobuf.UnfurledStatusChannelLink + 19, // 18: protobuf.UnfurledStatusLinks.unfurled_status_links:type_name -> protobuf.UnfurledStatusLink + 23, // 19: protobuf.ChatMessage.message_type:type_name -> protobuf.MessageType + 2, // 20: protobuf.ChatMessage.content_type:type_name -> protobuf.ChatMessage.ContentType + 3, // 21: protobuf.ChatMessage.sticker:type_name -> protobuf.StickerMessage + 4, // 22: protobuf.ChatMessage.image:type_name -> protobuf.ImageMessage + 5, // 23: protobuf.ChatMessage.audio:type_name -> protobuf.AudioMessage + 9, // 24: protobuf.ChatMessage.discord_message:type_name -> protobuf.DiscordMessage + 13, // 25: protobuf.ChatMessage.bridge_message:type_name -> protobuf.BridgeMessage + 24, // 26: protobuf.ChatMessage.contact_request_propagated_state:type_name -> protobuf.ContactRequestPropagatedState + 15, // 27: protobuf.ChatMessage.unfurled_links:type_name -> protobuf.UnfurledLink + 25, // 28: protobuf.ChatMessage.shard:type_name -> protobuf.Shard + 20, // 29: protobuf.ChatMessage.unfurled_status_links:type_name -> protobuf.UnfurledStatusLinks + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } -func (m *ChatMessage) GetAudio() *AudioMessage { - if x, ok := m.GetPayload().(*ChatMessage_Audio); ok { - return x.Audio +func init() { file_chat_message_proto_init() } +func file_chat_message_proto_init() { + if File_chat_message_proto != nil { + return } - return nil -} - -func (m *ChatMessage) GetCommunity() []byte { - if x, ok := m.GetPayload().(*ChatMessage_Community); ok { - return x.Community + file_enums_proto_init() + file_contact_proto_init() + file_shard_proto_init() + if !protoimpl.UnsafeEnabled { + file_chat_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StickerMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImageMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AudioMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EditMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncDeleteForMeMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageAuthor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscordMessageAttachment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BridgeMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledLinkThumbnail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledStatusContactLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledStatusCommunityLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledStatusChannelLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledStatusLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnfurledStatusLinks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_chat_message_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChatMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return nil -} - -func (m *ChatMessage) GetDiscordMessage() *DiscordMessage { - if x, ok := m.GetPayload().(*ChatMessage_DiscordMessage); ok { - return x.DiscordMessage + file_chat_message_proto_msgTypes[16].OneofWrappers = []interface{}{ + (*UnfurledStatusLink_Contact)(nil), + (*UnfurledStatusLink_Community)(nil), + (*UnfurledStatusLink_Channel)(nil), } - return nil -} - -func (m *ChatMessage) GetBridgeMessage() *BridgeMessage { - if x, ok := m.GetPayload().(*ChatMessage_BridgeMessage); ok { - return x.BridgeMessage - } - return nil -} - -// Deprecated: Do not use. -func (m *ChatMessage) GetGrant() []byte { - if m != nil { - return m.Grant - } - return nil -} - -func (m *ChatMessage) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *ChatMessage) GetContactRequestPropagatedState() *ContactRequestPropagatedState { - if m != nil { - return m.ContactRequestPropagatedState - } - return nil -} - -func (m *ChatMessage) GetUnfurledLinks() []*UnfurledLink { - if m != nil { - return m.UnfurledLinks - } - return nil -} - -func (m *ChatMessage) GetShard() *Shard { - if m != nil { - return m.Shard - } - return nil -} - -func (m *ChatMessage) GetUnfurledStatusLinks() *UnfurledStatusLinks { - if m != nil { - return m.UnfurledStatusLinks - } - return nil -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*ChatMessage) XXX_OneofWrappers() []interface{} { - return []interface{}{ + file_chat_message_proto_msgTypes[18].OneofWrappers = []interface{}{ (*ChatMessage_Sticker)(nil), (*ChatMessage_Image)(nil), (*ChatMessage_Audio)(nil), @@ -1777,160 +2662,23 @@ func (*ChatMessage) XXX_OneofWrappers() []interface{} { (*ChatMessage_DiscordMessage)(nil), (*ChatMessage_BridgeMessage)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.AudioMessage_AudioType", AudioMessage_AudioType_name, AudioMessage_AudioType_value) - proto.RegisterEnum("protobuf.UnfurledLink_LinkType", UnfurledLink_LinkType_name, UnfurledLink_LinkType_value) - proto.RegisterEnum("protobuf.ChatMessage_ContentType", ChatMessage_ContentType_name, ChatMessage_ContentType_value) - proto.RegisterType((*StickerMessage)(nil), "protobuf.StickerMessage") - proto.RegisterType((*ImageMessage)(nil), "protobuf.ImageMessage") - proto.RegisterType((*AudioMessage)(nil), "protobuf.AudioMessage") - proto.RegisterType((*EditMessage)(nil), "protobuf.EditMessage") - proto.RegisterType((*DeleteMessage)(nil), "protobuf.DeleteMessage") - proto.RegisterType((*SyncDeleteForMeMessage)(nil), "protobuf.SyncDeleteForMeMessage") - proto.RegisterType((*DiscordMessage)(nil), "protobuf.DiscordMessage") - proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor") - proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference") - proto.RegisterType((*DiscordMessageAttachment)(nil), "protobuf.DiscordMessageAttachment") - proto.RegisterType((*BridgeMessage)(nil), "protobuf.BridgeMessage") - proto.RegisterType((*UnfurledLinkThumbnail)(nil), "protobuf.UnfurledLinkThumbnail") - proto.RegisterType((*UnfurledLink)(nil), "protobuf.UnfurledLink") - proto.RegisterType((*UnfurledStatusContactLink)(nil), "protobuf.UnfurledStatusContactLink") - proto.RegisterType((*UnfurledStatusCommunityLink)(nil), "protobuf.UnfurledStatusCommunityLink") - proto.RegisterType((*UnfurledStatusChannelLink)(nil), "protobuf.UnfurledStatusChannelLink") - proto.RegisterType((*UnfurledStatusLink)(nil), "protobuf.UnfurledStatusLink") - proto.RegisterType((*UnfurledStatusLinks)(nil), "protobuf.UnfurledStatusLinks") - proto.RegisterType((*ChatMessage)(nil), "protobuf.ChatMessage") -} - -func init() { - proto.RegisterFile("chat_message.proto", fileDescriptor_263952f55fd35689) -} - -var fileDescriptor_263952f55fd35689 = []byte{ - // 1958 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x72, 0xdb, 0x5a, - 0x15, 0x8e, 0xff, 0xe3, 0x25, 0xdb, 0xd1, 0xd9, 0x4d, 0x53, 0xb7, 0x34, 0x6d, 0xaa, 0xf6, 0x4c, - 0xc3, 0x00, 0x61, 0x26, 0x3d, 0xc0, 0x99, 0x61, 0x98, 0x83, 0x62, 0xab, 0x8d, 0x68, 0xed, 0xf8, - 0x6c, 0xcb, 0x3d, 0x94, 0x1b, 0x8d, 0x2c, 0xed, 0xc4, 0x22, 0xb6, 0x64, 0xf4, 0x03, 0x98, 0x57, - 0xe1, 0x19, 0x80, 0x1b, 0x86, 0xc7, 0x60, 0xb8, 0xe1, 0x11, 0xe0, 0x09, 0xb8, 0xe2, 0x8a, 0xd9, - 0x3f, 0xfa, 0x73, 0xec, 0xe4, 0xb4, 0xc3, 0x95, 0xf7, 0x5a, 0x7b, 0xad, 0xa5, 0xf5, 0xb7, 0xd7, - 0xfe, 0xb6, 0x01, 0xd9, 0x33, 0x2b, 0x32, 0x17, 0x24, 0x0c, 0xad, 0x2b, 0x72, 0xb2, 0x0c, 0xfc, - 0xc8, 0x47, 0xbb, 0xec, 0x67, 0x1a, 0x5f, 0x3e, 0x92, 0x88, 0x17, 0x2f, 0x42, 0xce, 0x7e, 0xd4, - 0xb6, 0x7d, 0x2f, 0xb2, 0xec, 0x48, 0x90, 0x52, 0x38, 0xb3, 0x02, 0x87, 0x13, 0xca, 0x97, 0xd0, - 0x19, 0x47, 0xae, 0x7d, 0x4d, 0x82, 0x01, 0x37, 0x85, 0x10, 0x54, 0x67, 0x56, 0x38, 0xeb, 0x96, - 0x8e, 0x4a, 0xc7, 0x4d, 0xcc, 0xd6, 0x94, 0xb7, 0xb4, 0xec, 0xeb, 0x6e, 0xf9, 0xa8, 0x74, 0x5c, - 0xc3, 0x6c, 0xad, 0xfc, 0xbd, 0x04, 0x2d, 0x7d, 0x61, 0x5d, 0x91, 0x44, 0xb1, 0x0b, 0x8d, 0xa5, - 0xb5, 0x9a, 0xfb, 0x96, 0xc3, 0x74, 0x5b, 0x38, 0x21, 0xd1, 0x0f, 0xa0, 0x7e, 0xe9, 0x07, 0x0b, - 0x2b, 0x62, 0x06, 0x3a, 0xa7, 0xf7, 0x4f, 0x12, 0x47, 0x4f, 0x98, 0x85, 0xd7, 0x6c, 0x13, 0x0b, - 0x21, 0xf4, 0x10, 0x76, 0xad, 0xf9, 0x34, 0x5e, 0x98, 0xae, 0xd3, 0xad, 0x30, 0x2f, 0x1a, 0x8c, - 0xd6, 0x1d, 0xb4, 0x0f, 0xb5, 0xdf, 0xb9, 0x4e, 0x34, 0xeb, 0x56, 0x8f, 0x4a, 0xc7, 0x6d, 0xcc, - 0x09, 0x74, 0x00, 0xf5, 0x19, 0x71, 0xaf, 0x66, 0x51, 0xb7, 0xc6, 0xd8, 0x82, 0x42, 0xdf, 0x07, - 0x24, 0x0c, 0xd1, 0xaf, 0x84, 0xa6, 0xed, 0xc7, 0x5e, 0xd4, 0xad, 0x33, 0x19, 0x99, 0x9b, 0x64, - 0x1b, 0x3d, 0xca, 0x57, 0xfe, 0x56, 0x82, 0x96, 0x1a, 0x3b, 0xae, 0x7f, 0x77, 0x40, 0x5f, 0x40, - 0x35, 0x5a, 0x2d, 0x89, 0x08, 0xe7, 0x28, 0x0b, 0x27, 0xaf, 0xcf, 0x09, 0x63, 0xb5, 0x24, 0x98, - 0x49, 0xa3, 0xa7, 0x20, 0x39, 0x71, 0x60, 0x45, 0xae, 0xef, 0x99, 0x8b, 0x90, 0x85, 0x56, 0xc5, - 0x90, 0xb0, 0x06, 0xa1, 0xf2, 0x23, 0x68, 0xa6, 0x3a, 0xe8, 0x00, 0xd0, 0x64, 0xf8, 0x76, 0x78, - 0xf1, 0xcd, 0xd0, 0x54, 0x27, 0x7d, 0xfd, 0xc2, 0x34, 0x3e, 0x8c, 0x34, 0x79, 0x07, 0x35, 0xa0, - 0xa2, 0xaa, 0x3d, 0xb9, 0xc4, 0x16, 0x03, 0x2c, 0x97, 0x95, 0x3f, 0x56, 0x40, 0xd2, 0x1c, 0x37, - 0x4a, 0xfc, 0xde, 0x87, 0x9a, 0x3d, 0xf7, 0xed, 0x6b, 0xe6, 0x75, 0x15, 0x73, 0x82, 0xd6, 0x30, - 0x22, 0xbf, 0xe7, 0x25, 0x68, 0x62, 0xb6, 0x46, 0x0f, 0xa0, 0xc1, 0xda, 0x28, 0x4d, 0x74, 0x9d, - 0x92, 0xba, 0x83, 0x0e, 0x01, 0x44, 0x6b, 0xd1, 0xbd, 0x2a, 0xdb, 0x6b, 0x0a, 0x8e, 0xee, 0xa0, - 0x2e, 0xd4, 0xae, 0x02, 0xcb, 0xe3, 0xf9, 0x6e, 0x9d, 0x95, 0xbb, 0x25, 0xcc, 0x19, 0xe8, 0x4b, - 0x68, 0x25, 0x8a, 0x2c, 0x43, 0xf5, 0xf5, 0x82, 0x0b, 0x27, 0x59, 0x5a, 0xa4, 0x45, 0x46, 0xa0, - 0x3e, 0xb4, 0x68, 0x9f, 0x12, 0x2f, 0xe2, 0x9a, 0x0d, 0xa6, 0xf9, 0x2c, 0xd3, 0xec, 0xcd, 0xac, - 0x24, 0xc4, 0x93, 0x1e, 0x97, 0xe4, 0x56, 0xec, 0x8c, 0x40, 0x3f, 0x83, 0x4e, 0xec, 0x5d, 0xc6, - 0xc1, 0x9c, 0x38, 0xe6, 0xdc, 0xf5, 0xae, 0xc3, 0xee, 0xee, 0x51, 0xe5, 0x58, 0x3a, 0x3d, 0xc8, - 0xec, 0x4c, 0xc4, 0xfe, 0x3b, 0xd7, 0xbb, 0xc6, 0xed, 0x38, 0x47, 0x85, 0xe8, 0x6b, 0xb8, 0x9f, - 0xaa, 0x87, 0x91, 0x15, 0xc5, 0xa1, 0xb0, 0xd2, 0x3c, 0x2a, 0x1d, 0x4b, 0xa7, 0x87, 0x37, 0xad, - 0x8c, 0x99, 0x14, 0xd3, 0xc6, 0xf7, 0xe2, 0x9b, 0x4c, 0xe5, 0x1f, 0x25, 0x68, 0xf7, 0xc9, 0x9c, - 0x44, 0xe4, 0xf6, 0xfa, 0xe4, 0x6a, 0x51, 0xbe, 0xa5, 0x16, 0x95, 0xad, 0xb5, 0xa8, 0xde, 0x55, - 0x8b, 0xda, 0xb7, 0xae, 0xc5, 0x21, 0x80, 0xc3, 0x5c, 0x76, 0xcc, 0xe9, 0x8a, 0xd5, 0xb0, 0x89, - 0x9b, 0x82, 0x73, 0xb6, 0x52, 0x06, 0x70, 0x30, 0x5e, 0x79, 0x36, 0x8f, 0xea, 0xb5, 0x1f, 0x0c, - 0xee, 0x08, 0xad, 0x18, 0x41, 0x79, 0x2d, 0x02, 0xe5, 0x9f, 0x65, 0xe8, 0xf4, 0xdd, 0xd0, 0xf6, - 0x03, 0x27, 0xb1, 0xd3, 0x81, 0xb2, 0xeb, 0x88, 0x11, 0x54, 0x76, 0x1d, 0xd6, 0xbc, 0xc9, 0x81, - 0x6b, 0x8a, 0xe3, 0xf4, 0x18, 0x9a, 0x91, 0xbb, 0x20, 0x61, 0x64, 0x2d, 0x96, 0x49, 0x5a, 0x52, - 0x06, 0x3a, 0x86, 0xbd, 0x94, 0xa0, 0x87, 0x83, 0x24, 0x6d, 0xbc, 0xce, 0xa6, 0xc7, 0x5c, 0x74, - 0x10, 0xcb, 0x50, 0x13, 0x27, 0x24, 0xfa, 0x31, 0xd4, 0xad, 0x38, 0x9a, 0xf9, 0x01, 0x4b, 0x81, - 0x74, 0xfa, 0x24, 0x4b, 0x5d, 0xd1, 0x5f, 0x95, 0x49, 0x61, 0x21, 0x8d, 0xbe, 0x82, 0x66, 0x40, - 0x2e, 0x49, 0x40, 0x3c, 0x9b, 0xf7, 0xb1, 0x94, 0xef, 0xe3, 0xa2, 0x2a, 0x4e, 0x04, 0x71, 0xa6, - 0x83, 0xfa, 0x20, 0x59, 0x51, 0x64, 0xd9, 0xb3, 0x05, 0xf1, 0xa2, 0xa4, 0x85, 0x95, 0xad, 0x5f, - 0x4f, 0x45, 0x71, 0x5e, 0x4d, 0xf9, 0x77, 0x09, 0xf6, 0x37, 0xf9, 0xb9, 0x29, 0xbb, 0x9e, 0xb5, - 0x48, 0xb3, 0x4b, 0xd7, 0xe8, 0x05, 0xb4, 0x1d, 0x37, 0xb4, 0x03, 0x77, 0xe1, 0x7a, 0x56, 0xe4, - 0x07, 0x22, 0xc3, 0x45, 0x26, 0x7a, 0x04, 0xbb, 0x9e, 0x6b, 0x5f, 0x33, 0x6d, 0x9e, 0xde, 0x94, - 0xa6, 0xf5, 0xb1, 0x7e, 0x6b, 0x45, 0x56, 0x30, 0x09, 0xe6, 0x22, 0xb3, 0x19, 0x03, 0x9d, 0x00, - 0xe2, 0x04, 0x1b, 0xc1, 0x23, 0x31, 0x67, 0xeb, 0x6c, 0xce, 0x6e, 0xd8, 0xa1, 0x5f, 0x9a, 0xfb, - 0xb6, 0x35, 0xa7, 0xc6, 0x1a, 0xfc, 0x4b, 0x09, 0xad, 0xf8, 0xf0, 0x60, 0x4b, 0x52, 0xa9, 0x13, - 0x69, 0xa3, 0x89, 0x88, 0x73, 0x67, 0xe7, 0x31, 0x34, 0xed, 0x99, 0xe5, 0x79, 0x64, 0xae, 0xa7, - 0x7d, 0x99, 0x32, 0x68, 0x63, 0x5c, 0xc5, 0xee, 0xdc, 0xd1, 0xd3, 0x6b, 0x48, 0x90, 0xca, 0x7f, - 0x4a, 0xd0, 0xdd, 0x56, 0x83, 0x1b, 0xd9, 0x2d, 0xb8, 0xb0, 0xde, 0xfc, 0x48, 0x86, 0x4a, 0x1c, - 0xcc, 0xc5, 0x07, 0xe8, 0x92, 0x46, 0x7a, 0xe9, 0xce, 0xc9, 0x30, 0x97, 0xd3, 0x84, 0xa6, 0x55, - 0xa1, 0xeb, 0xb1, 0xfb, 0x07, 0x72, 0xb6, 0x8a, 0x48, 0xc8, 0xf2, 0x5a, 0xc5, 0x45, 0x26, 0x3a, - 0x82, 0xfc, 0x4c, 0x14, 0xe7, 0xb7, 0x30, 0x26, 0x73, 0x57, 0x5b, 0xa3, 0x78, 0xb5, 0xe5, 0xf3, - 0xbc, 0xbb, 0x96, 0xe7, 0x7f, 0x95, 0xa0, 0x7d, 0x16, 0xb8, 0x4e, 0x76, 0xe7, 0x3f, 0x01, 0x98, - 0x32, 0x06, 0xf3, 0x96, 0xc7, 0x9c, 0xe3, 0x50, 0x6b, 0x71, 0x48, 0x82, 0x61, 0xd6, 0x5d, 0x29, - 0x4d, 0x75, 0xe9, 0x5a, 0x65, 0xb5, 0x16, 0x09, 0xc8, 0x71, 0xe8, 0xad, 0x4e, 0x29, 0xbd, 0x2f, - 0xb2, 0x20, 0xa8, 0x5b, 0xce, 0x6b, 0x2e, 0xd3, 0xfd, 0x64, 0x6a, 0xa5, 0x0c, 0x3a, 0x11, 0x96, - 0x56, 0x40, 0xbc, 0xe4, 0x12, 0xd1, 0xfb, 0xa2, 0x91, 0xd6, 0xd9, 0x8a, 0x09, 0xf7, 0xf3, 0x97, - 0x84, 0x31, 0x8b, 0x17, 0x53, 0xcf, 0x72, 0xe7, 0xb7, 0x20, 0x82, 0x14, 0x98, 0x94, 0x37, 0x03, - 0x93, 0x4a, 0x1e, 0x98, 0x28, 0x7f, 0x29, 0x43, 0x2b, 0xff, 0x85, 0xa4, 0x0b, 0x4a, 0x59, 0x17, - 0xec, 0x43, 0x2d, 0x72, 0xa3, 0x79, 0x92, 0x36, 0x4e, 0xd0, 0xca, 0x3a, 0x84, 0x1e, 0xc0, 0x25, - 0x85, 0x0c, 0x22, 0x69, 0x79, 0x16, 0xfa, 0x1e, 0x7c, 0x16, 0x25, 0xfe, 0x9a, 0x89, 0xb3, 0xec, - 0x6a, 0xc0, 0x72, 0xba, 0x91, 0x1c, 0xaa, 0x97, 0xb0, 0x97, 0x09, 0x73, 0xff, 0x39, 0x82, 0xea, - 0xa4, 0xec, 0x6f, 0x58, 0x20, 0xdf, 0x85, 0x4c, 0xd9, 0x14, 0x21, 0x71, 0x1c, 0x95, 0x19, 0x38, - 0xe7, 0xa0, 0xeb, 0x95, 0x18, 0xd5, 0xfc, 0xfe, 0x7e, 0xba, 0xf9, 0xde, 0x3d, 0x61, 0x79, 0x4d, - 0xa1, 0x91, 0xf2, 0x14, 0x76, 0x13, 0x0e, 0xda, 0x85, 0xea, 0x3b, 0x7d, 0xf8, 0x56, 0xde, 0x41, - 0x4d, 0xa8, 0xe9, 0x03, 0xf5, 0x8d, 0x26, 0x97, 0x94, 0xbf, 0x96, 0xe0, 0x61, 0xf1, 0xca, 0xed, - 0x71, 0x50, 0xcb, 0xd2, 0x77, 0x08, 0xb0, 0x8c, 0xa7, 0x73, 0xd7, 0x36, 0xaf, 0xc9, 0x4a, 0x94, - 0xa6, 0xc9, 0x39, 0x6f, 0xc9, 0x0a, 0x3d, 0x83, 0x96, 0xe3, 0x86, 0xcb, 0xb9, 0xb5, 0x32, 0x73, - 0x73, 0x4e, 0x12, 0x3c, 0xd6, 0x8c, 0x77, 0x27, 0xf6, 0x15, 0x54, 0x5d, 0xdb, 0xf7, 0x58, 0x2e, - 0xa5, 0x6d, 0x71, 0xa5, 0xad, 0x82, 0x99, 0xb0, 0xf2, 0xe7, 0x32, 0x7c, 0x67, 0xdd, 0xed, 0xc5, - 0x22, 0xf6, 0xdc, 0x68, 0xc5, 0x1c, 0x7f, 0x46, 0x41, 0x8f, 0x60, 0x98, 0x6e, 0xd2, 0x55, 0x52, - 0xca, 0xd3, 0x9d, 0xff, 0x8f, 0xf3, 0xcf, 0xa1, 0xbd, 0x20, 0x8b, 0x29, 0x09, 0x12, 0x10, 0xcc, - 0xf1, 0x73, 0x4b, 0x30, 0x19, 0x00, 0x66, 0x97, 0xb7, 0x3f, 0xf7, 0x03, 0x71, 0xac, 0x38, 0x91, - 0xc6, 0xdd, 0xf8, 0x88, 0xb8, 0xd1, 0x4f, 0xa0, 0x3e, 0xa5, 0x63, 0x34, 0x60, 0x33, 0xe4, 0x5b, - 0xa8, 0x09, 0x71, 0x3a, 0x59, 0xd7, 0xeb, 0xcc, 0xe7, 0x71, 0x9a, 0x2e, 0x4e, 0x9a, 0x71, 0x9c, - 0x0e, 0x59, 0x49, 0xf0, 0x26, 0xb1, 0xcb, 0x0e, 0x22, 0x59, 0xf8, 0xbf, 0x76, 0x93, 0x73, 0xc3, - 0x88, 0x1b, 0x49, 0xac, 0xdc, 0x99, 0xc4, 0xea, 0xcd, 0x24, 0x6e, 0xce, 0x4f, 0x0f, 0x9a, 0x69, - 0xb9, 0x04, 0x4e, 0xf8, 0x7c, 0x1b, 0x4c, 0x2c, 0x14, 0x1f, 0x67, 0x7a, 0xca, 0x7f, 0x4b, 0x80, - 0x6e, 0x22, 0xca, 0x0d, 0x63, 0xe1, 0x2b, 0x3e, 0xfc, 0x2c, 0x9b, 0x03, 0x79, 0xe9, 0xf4, 0xf9, - 0xf6, 0x6f, 0xa5, 0xe7, 0xe3, 0x7c, 0x07, 0x27, 0x5a, 0x48, 0xcb, 0xbb, 0x5b, 0xf9, 0x08, 0x77, - 0xcf, 0x77, 0x72, 0x0e, 0x33, 0x3f, 0x78, 0xd6, 0xc5, 0x81, 0xd8, 0xee, 0x47, 0x56, 0x3f, 0xe6, - 0x07, 0x27, 0xcf, 0x9a, 0xe9, 0x28, 0x55, 0xae, 0xe0, 0xde, 0x06, 0x34, 0x8d, 0x46, 0xdb, 0xb0, - 0x78, 0x89, 0xc1, 0xa1, 0xc7, 0xb7, 0x61, 0xf1, 0xcd, 0x50, 0xfc, 0x4f, 0x12, 0x48, 0xb9, 0x57, - 0xc4, 0x16, 0xb4, 0x5a, 0xc0, 0x95, 0x65, 0xb6, 0x93, 0xc3, 0x95, 0xc9, 0x33, 0xaa, 0x92, 0x7b, - 0x46, 0x3d, 0x05, 0x29, 0x20, 0xe1, 0xd2, 0xf7, 0x42, 0x62, 0x46, 0xbe, 0x68, 0x1d, 0x48, 0x58, - 0x86, 0x4f, 0x5f, 0xb4, 0xc4, 0x0b, 0x79, 0xeb, 0x89, 0x3b, 0x8b, 0x78, 0x21, 0x6b, 0xbb, 0x1c, - 0xec, 0xaf, 0x17, 0x60, 0xff, 0x3a, 0x7a, 0x6f, 0x7c, 0xf2, 0x4b, 0x6a, 0xf7, 0x93, 0x5e, 0x52, - 0x5f, 0x40, 0x23, 0xe4, 0xff, 0x0c, 0x88, 0xc7, 0x4f, 0x37, 0x33, 0x50, 0xfc, 0xcb, 0x80, 0x96, - 0x55, 0x88, 0xa2, 0x13, 0xa8, 0xb1, 0xc7, 0x76, 0x17, 0x98, 0xce, 0xc1, 0xda, 0x4b, 0x3f, 0xd3, - 0xe0, 0x62, 0x54, 0xde, 0xa2, 0x4f, 0xde, 0xae, 0xb4, 0x2e, 0x9f, 0x7f, 0x4a, 0x53, 0x79, 0x26, - 0x86, 0x9e, 0xe4, 0xdb, 0xb7, 0x45, 0xa7, 0x65, 0xb1, 0x2f, 0x7b, 0xb0, 0xe7, 0x70, 0x60, 0x96, - 0xfc, 0x37, 0xd2, 0xb5, 0xd7, 0xbd, 0x2f, 0x22, 0xb7, 0xf3, 0x1d, 0xdc, 0x71, 0x8a, 0xaf, 0x8f, - 0x9f, 0x43, 0x87, 0x63, 0x98, 0xd4, 0x86, 0xc3, 0x6c, 0x3c, 0xc8, 0x6c, 0x14, 0x60, 0xd0, 0xf9, - 0x0e, 0x6e, 0x4f, 0x0b, 0xb8, 0x28, 0x7d, 0x94, 0xb5, 0xd7, 0x1f, 0x65, 0xeb, 0x93, 0xa8, 0x73, - 0x73, 0x12, 0x2d, 0xe1, 0x48, 0x9c, 0x56, 0x33, 0x20, 0xbf, 0x89, 0x49, 0x18, 0x99, 0xcb, 0xc0, - 0x5f, 0x5a, 0x57, 0x56, 0x24, 0x8e, 0x02, 0xe9, 0xee, 0x31, 0x87, 0x5e, 0xe6, 0x6a, 0xca, 0x35, - 0x30, 0x57, 0x18, 0xa5, 0xf2, 0xb4, 0xff, 0x09, 0x3e, 0xb4, 0x6f, 0xdb, 0xde, 0xf0, 0x6a, 0x96, - 0x3f, 0xe6, 0xd5, 0xfc, 0x39, 0xd4, 0xd8, 0x7f, 0x4a, 0xdd, 0xcf, 0x98, 0x57, 0x7b, 0xb9, 0x46, - 0xa1, 0x6c, 0xcc, 0x77, 0xb7, 0x3f, 0xae, 0xd1, 0xa7, 0x3f, 0xae, 0x2b, 0x20, 0xf5, 0x0a, 0xb8, - 0x76, 0x3f, 0xf9, 0xd3, 0xa4, 0x77, 0x31, 0x34, 0xb4, 0xa1, 0x91, 0xfc, 0x6d, 0xd2, 0x01, 0x30, - 0xb4, 0x5f, 0x1a, 0xe6, 0xe8, 0x9d, 0xaa, 0x0f, 0xe5, 0x12, 0x92, 0xa0, 0x31, 0x36, 0xf4, 0xde, - 0x5b, 0x0d, 0xcb, 0x65, 0x04, 0x50, 0x1f, 0x1b, 0xaa, 0x31, 0x19, 0xcb, 0x15, 0x0a, 0x3a, 0xb4, - 0xc1, 0xc5, 0x2f, 0x74, 0xb9, 0x8a, 0x1e, 0xc0, 0x3d, 0x03, 0xab, 0xc3, 0xb1, 0xda, 0x33, 0xf4, - 0x0b, 0x6a, 0x71, 0x30, 0x50, 0x87, 0x7d, 0xb9, 0x86, 0x8e, 0xe1, 0xc5, 0xf8, 0xc3, 0xd8, 0xd0, - 0x06, 0xe6, 0x40, 0x1b, 0x8f, 0xd5, 0x37, 0x5a, 0xfa, 0xb5, 0x11, 0xd6, 0xdf, 0xab, 0x86, 0x66, - 0xbe, 0xc1, 0x17, 0x93, 0x91, 0x5c, 0xcf, 0x20, 0x4c, 0x83, 0x2e, 0xd9, 0x1f, 0x39, 0xf2, 0x2e, - 0x6a, 0x43, 0x93, 0x1a, 0x9b, 0x0c, 0x75, 0xe3, 0x83, 0xdc, 0x44, 0x07, 0x80, 0xd6, 0xcc, 0xbd, - 0x51, 0x47, 0x32, 0xa0, 0x7b, 0xb0, 0x47, 0xed, 0xaa, 0x3d, 0xc3, 0xc4, 0xda, 0xd7, 0x13, 0x6d, - 0x6c, 0xc8, 0x12, 0x65, 0xf6, 0xf5, 0x71, 0xef, 0x02, 0xf7, 0x13, 0x69, 0xb9, 0x85, 0x1e, 0xc2, - 0x7d, 0xbd, 0xaf, 0x0d, 0x0d, 0xdd, 0xf8, 0x60, 0xbe, 0xd7, 0xb0, 0xfe, 0x5a, 0xef, 0xa9, 0xd4, - 0x67, 0xb9, 0x8d, 0x9e, 0xc1, 0xe1, 0x9a, 0xf1, 0x91, 0x3e, 0x1c, 0x6a, 0x99, 0x76, 0x07, 0xbd, - 0x80, 0xa3, 0x35, 0x91, 0xc1, 0xc4, 0x98, 0xa8, 0xef, 0x4c, 0xed, 0x3d, 0x8d, 0x69, 0xac, 0x0d, - 0x0d, 0x79, 0x6f, 0x43, 0xd0, 0x05, 0x29, 0xb5, 0xd7, 0xd3, 0x46, 0x86, 0xd6, 0x97, 0x65, 0xf4, - 0x12, 0x9e, 0xdf, 0x26, 0x89, 0xb5, 0xc1, 0xc5, 0x7b, 0xad, 0x2f, 0x7f, 0x86, 0x10, 0x74, 0xce, - 0xb0, 0xde, 0xa7, 0x02, 0xc2, 0x19, 0x94, 0xbb, 0x18, 0xce, 0xda, 0xbf, 0x92, 0x4e, 0x7e, 0xf8, - 0xd3, 0xa4, 0x2b, 0xa6, 0x75, 0xb6, 0x7a, 0xf5, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xb4, - 0xbd, 0x0d, 0xfb, 0x14, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_chat_message_proto_rawDesc, + NumEnums: 3, + NumMessages: 19, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_chat_message_proto_goTypes, + DependencyIndexes: file_chat_message_proto_depIdxs, + EnumInfos: file_chat_message_proto_enumTypes, + MessageInfos: file_chat_message_proto_msgTypes, + }.Build() + File_chat_message_proto = out.File + file_chat_message_proto_rawDesc = nil + file_chat_message_proto_goTypes = nil + file_chat_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.proto index 251418ad..13ec66a1 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/chat_message.proto @@ -137,6 +137,7 @@ message UnfurledLink { uint32 thumbnail_width = 5; uint32 thumbnail_height = 6; LinkType type = 7; + bytes favicon_payload = 8; enum LinkType { LINK = 0; diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/command.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/command.pb.go index 8864b4b7..3257dc63 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/command.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/command.pb.go @@ -1,435 +1,630 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: command.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type RequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - Contract string `protobuf:"bytes,3,opt,name=contract,proto3" json:"contract,omitempty"` - ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Contract string `protobuf:"bytes,3,opt,name=contract,proto3" json:"contract,omitempty"` + ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *RequestAddressForTransaction) Reset() { *m = RequestAddressForTransaction{} } -func (m *RequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*RequestAddressForTransaction) ProtoMessage() {} +func (x *RequestAddressForTransaction) Reset() { + *x = RequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestAddressForTransaction) ProtoMessage() {} + +func (x *RequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*RequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{0} + return file_command_proto_rawDescGZIP(), []int{0} } -func (m *RequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestAddressForTransaction.Unmarshal(m, b) -} -func (m *RequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *RequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestAddressForTransaction.Merge(m, src) -} -func (m *RequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_RequestAddressForTransaction.Size(m) -} -func (m *RequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_RequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestAddressForTransaction proto.InternalMessageInfo - -func (m *RequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestAddressForTransaction) GetValue() string { - if m != nil { - return m.Value +func (x *RequestAddressForTransaction) GetValue() string { + if x != nil { + return x.Value } return "" } -func (m *RequestAddressForTransaction) GetContract() string { - if m != nil { - return m.Contract +func (x *RequestAddressForTransaction) GetContract() string { + if x != nil { + return x.Contract } return "" } -func (m *RequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *RequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type AcceptRequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + ChatId string `protobuf:"bytes,4,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *AcceptRequestAddressForTransaction) Reset() { *m = AcceptRequestAddressForTransaction{} } -func (m *AcceptRequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*AcceptRequestAddressForTransaction) ProtoMessage() {} +func (x *AcceptRequestAddressForTransaction) Reset() { + *x = AcceptRequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptRequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptRequestAddressForTransaction) ProtoMessage() {} + +func (x *AcceptRequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptRequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*AcceptRequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{1} + return file_command_proto_rawDescGZIP(), []int{1} } -func (m *AcceptRequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Unmarshal(m, b) -} -func (m *AcceptRequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *AcceptRequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptRequestAddressForTransaction.Merge(m, src) -} -func (m *AcceptRequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_AcceptRequestAddressForTransaction.Size(m) -} -func (m *AcceptRequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptRequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptRequestAddressForTransaction proto.InternalMessageInfo - -func (m *AcceptRequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptRequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *AcceptRequestAddressForTransaction) GetId() string { - if m != nil { - return m.Id +func (x *AcceptRequestAddressForTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptRequestAddressForTransaction) GetAddress() string { - if m != nil { - return m.Address +func (x *AcceptRequestAddressForTransaction) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *AcceptRequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *AcceptRequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type DeclineRequestAddressForTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *DeclineRequestAddressForTransaction) Reset() { *m = DeclineRequestAddressForTransaction{} } -func (m *DeclineRequestAddressForTransaction) String() string { return proto.CompactTextString(m) } -func (*DeclineRequestAddressForTransaction) ProtoMessage() {} +func (x *DeclineRequestAddressForTransaction) Reset() { + *x = DeclineRequestAddressForTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineRequestAddressForTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineRequestAddressForTransaction) ProtoMessage() {} + +func (x *DeclineRequestAddressForTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineRequestAddressForTransaction.ProtoReflect.Descriptor instead. func (*DeclineRequestAddressForTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{2} + return file_command_proto_rawDescGZIP(), []int{2} } -func (m *DeclineRequestAddressForTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Unmarshal(m, b) -} -func (m *DeclineRequestAddressForTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Marshal(b, m, deterministic) -} -func (m *DeclineRequestAddressForTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineRequestAddressForTransaction.Merge(m, src) -} -func (m *DeclineRequestAddressForTransaction) XXX_Size() int { - return xxx_messageInfo_DeclineRequestAddressForTransaction.Size(m) -} -func (m *DeclineRequestAddressForTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineRequestAddressForTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineRequestAddressForTransaction proto.InternalMessageInfo - -func (m *DeclineRequestAddressForTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineRequestAddressForTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineRequestAddressForTransaction) GetId() string { - if m != nil { - return m.Id +func (x *DeclineRequestAddressForTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DeclineRequestAddressForTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeclineRequestAddressForTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type DeclineRequestTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *DeclineRequestTransaction) Reset() { *m = DeclineRequestTransaction{} } -func (m *DeclineRequestTransaction) String() string { return proto.CompactTextString(m) } -func (*DeclineRequestTransaction) ProtoMessage() {} +func (x *DeclineRequestTransaction) Reset() { + *x = DeclineRequestTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineRequestTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineRequestTransaction) ProtoMessage() {} + +func (x *DeclineRequestTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineRequestTransaction.ProtoReflect.Descriptor instead. func (*DeclineRequestTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{3} + return file_command_proto_rawDescGZIP(), []int{3} } -func (m *DeclineRequestTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineRequestTransaction.Unmarshal(m, b) -} -func (m *DeclineRequestTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineRequestTransaction.Marshal(b, m, deterministic) -} -func (m *DeclineRequestTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineRequestTransaction.Merge(m, src) -} -func (m *DeclineRequestTransaction) XXX_Size() int { - return xxx_messageInfo_DeclineRequestTransaction.Size(m) -} -func (m *DeclineRequestTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineRequestTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineRequestTransaction proto.InternalMessageInfo - -func (m *DeclineRequestTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineRequestTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineRequestTransaction) GetId() string { - if m != nil { - return m.Id +func (x *DeclineRequestTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *DeclineRequestTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *DeclineRequestTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type RequestTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` - Contract string `protobuf:"bytes,4,opt,name=contract,proto3" json:"contract,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Contract string `protobuf:"bytes,4,opt,name=contract,proto3" json:"contract,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *RequestTransaction) Reset() { *m = RequestTransaction{} } -func (m *RequestTransaction) String() string { return proto.CompactTextString(m) } -func (*RequestTransaction) ProtoMessage() {} +func (x *RequestTransaction) Reset() { + *x = RequestTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestTransaction) ProtoMessage() {} + +func (x *RequestTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestTransaction.ProtoReflect.Descriptor instead. func (*RequestTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{4} + return file_command_proto_rawDescGZIP(), []int{4} } -func (m *RequestTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestTransaction.Unmarshal(m, b) -} -func (m *RequestTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestTransaction.Marshal(b, m, deterministic) -} -func (m *RequestTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestTransaction.Merge(m, src) -} -func (m *RequestTransaction) XXX_Size() int { - return xxx_messageInfo_RequestTransaction.Size(m) -} -func (m *RequestTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_RequestTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestTransaction proto.InternalMessageInfo - -func (m *RequestTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestTransaction) GetAddress() string { - if m != nil { - return m.Address +func (x *RequestTransaction) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *RequestTransaction) GetValue() string { - if m != nil { - return m.Value +func (x *RequestTransaction) GetValue() string { + if x != nil { + return x.Value } return "" } -func (m *RequestTransaction) GetContract() string { - if m != nil { - return m.Contract +func (x *RequestTransaction) GetContract() string { + if x != nil { + return x.Contract } return "" } -func (m *RequestTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *RequestTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } type SendTransaction struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - TransactionHash string `protobuf:"bytes,3,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + TransactionHash string `protobuf:"bytes,3,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` + Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` } -func (m *SendTransaction) Reset() { *m = SendTransaction{} } -func (m *SendTransaction) String() string { return proto.CompactTextString(m) } -func (*SendTransaction) ProtoMessage() {} +func (x *SendTransaction) Reset() { + *x = SendTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_command_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendTransaction) ProtoMessage() {} + +func (x *SendTransaction) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendTransaction.ProtoReflect.Descriptor instead. func (*SendTransaction) Descriptor() ([]byte, []int) { - return fileDescriptor_213c0bb044472049, []int{5} + return file_command_proto_rawDescGZIP(), []int{5} } -func (m *SendTransaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendTransaction.Unmarshal(m, b) -} -func (m *SendTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendTransaction.Marshal(b, m, deterministic) -} -func (m *SendTransaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendTransaction.Merge(m, src) -} -func (m *SendTransaction) XXX_Size() int { - return xxx_messageInfo_SendTransaction.Size(m) -} -func (m *SendTransaction) XXX_DiscardUnknown() { - xxx_messageInfo_SendTransaction.DiscardUnknown(m) -} - -var xxx_messageInfo_SendTransaction proto.InternalMessageInfo - -func (m *SendTransaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SendTransaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SendTransaction) GetId() string { - if m != nil { - return m.Id +func (x *SendTransaction) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SendTransaction) GetTransactionHash() string { - if m != nil { - return m.TransactionHash +func (x *SendTransaction) GetTransactionHash() string { + if x != nil { + return x.TransactionHash } return "" } -func (m *SendTransaction) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *SendTransaction) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *SendTransaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SendTransaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func init() { - proto.RegisterType((*RequestAddressForTransaction)(nil), "protobuf.RequestAddressForTransaction") - proto.RegisterType((*AcceptRequestAddressForTransaction)(nil), "protobuf.AcceptRequestAddressForTransaction") - proto.RegisterType((*DeclineRequestAddressForTransaction)(nil), "protobuf.DeclineRequestAddressForTransaction") - proto.RegisterType((*DeclineRequestTransaction)(nil), "protobuf.DeclineRequestTransaction") - proto.RegisterType((*RequestTransaction)(nil), "protobuf.RequestTransaction") - proto.RegisterType((*SendTransaction)(nil), "protobuf.SendTransaction") +var File_command_proto protoreflect.FileDescriptor + +var file_command_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x7f, 0x0a, 0x1c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x7d, 0x0a, 0x22, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x23, 0x44, 0x65, 0x63, + 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, + 0x5a, 0x0a, 0x19, 0x44, 0x65, 0x63, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x12, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0x99, 0x01, + 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("command.proto", fileDescriptor_213c0bb044472049) +var ( + file_command_proto_rawDescOnce sync.Once + file_command_proto_rawDescData = file_command_proto_rawDesc +) + +func file_command_proto_rawDescGZIP() []byte { + file_command_proto_rawDescOnce.Do(func() { + file_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_command_proto_rawDescData) + }) + return file_command_proto_rawDescData } -var fileDescriptor_213c0bb044472049 = []byte{ - // 301 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0x3d, 0x4f, 0xf3, 0x30, - 0x10, 0xc7, 0x95, 0x97, 0xbe, 0xdd, 0xf3, 0x94, 0x22, 0x0b, 0x89, 0x80, 0x3a, 0x54, 0x61, 0x29, - 0x4b, 0x19, 0x18, 0x99, 0x8a, 0x10, 0x82, 0x35, 0x30, 0x75, 0xa9, 0xdc, 0xb3, 0x21, 0x16, 0xa9, - 0x5d, 0x6c, 0x87, 0x0d, 0xf1, 0x11, 0x98, 0xf9, 0xb6, 0xa8, 0x4e, 0xda, 0x26, 0x43, 0x24, 0x40, - 0x9d, 0xec, 0xff, 0x9d, 0xee, 0xfe, 0x3f, 0xdf, 0x19, 0xfa, 0xa8, 0x96, 0x4b, 0x2a, 0xd9, 0x64, - 0xa5, 0x95, 0x55, 0xa4, 0xeb, 0x8e, 0x45, 0xfe, 0x14, 0x7f, 0xc0, 0x30, 0xe1, 0xaf, 0x39, 0x37, - 0x76, 0xca, 0x98, 0xe6, 0xc6, 0xdc, 0x2a, 0xfd, 0xa8, 0xa9, 0x34, 0x14, 0xad, 0x50, 0x92, 0x1c, - 0x41, 0x0b, 0x33, 0x85, 0x2f, 0x91, 0x37, 0xf2, 0xc6, 0x61, 0x52, 0x88, 0x75, 0xf4, 0x8d, 0x66, - 0x39, 0x8f, 0xfc, 0x91, 0x37, 0xee, 0x25, 0x85, 0x20, 0xa7, 0xd0, 0x45, 0x25, 0xad, 0xa6, 0x68, - 0xa3, 0xc0, 0x25, 0xb6, 0x9a, 0x1c, 0x43, 0x07, 0x53, 0x6a, 0xe7, 0x82, 0x45, 0xa1, 0x4b, 0xb5, - 0xd7, 0xf2, 0x9e, 0xc5, 0xef, 0x10, 0x4f, 0x11, 0xf9, 0xca, 0xfe, 0x01, 0xe3, 0x00, 0x7c, 0xc1, - 0x4a, 0x06, 0x5f, 0x30, 0x12, 0x41, 0x87, 0x16, 0xe5, 0xa5, 0xff, 0x46, 0x36, 0xdb, 0x33, 0x38, - 0xbb, 0xe1, 0x98, 0x09, 0xc9, 0xf7, 0xe0, 0x5f, 0x71, 0x09, 0x6a, 0x2e, 0x33, 0x38, 0xa9, 0xbb, - 0xec, 0xb1, 0xf7, 0xa7, 0x07, 0xe4, 0xc7, 0x5d, 0x2b, 0x13, 0xf2, 0xeb, 0x13, 0xda, 0xae, 0x34, - 0x68, 0x5a, 0x69, 0xd8, 0xbc, 0xd2, 0x56, 0x8d, 0xe8, 0xcb, 0x83, 0xc1, 0x03, 0x97, 0xec, 0xf7, - 0x8f, 0x3c, 0x87, 0x43, 0xbb, 0x2b, 0x9a, 0xa7, 0xd4, 0xa4, 0x25, 0xcf, 0xa0, 0x12, 0xbf, 0xa3, - 0x26, 0x25, 0x43, 0xe8, 0x19, 0xf1, 0x2c, 0xa9, 0xcd, 0x35, 0x77, 0x68, 0xff, 0x93, 0x5d, 0xa0, - 0x91, 0xed, 0xba, 0x3f, 0xfb, 0x37, 0xb9, 0xb8, 0xda, 0x7c, 0xff, 0x45, 0xdb, 0xdd, 0x2e, 0xbf, - 0x03, 0x00, 0x00, 0xff, 0xff, 0x88, 0x09, 0x02, 0x5a, 0x20, 0x03, 0x00, 0x00, +var file_command_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_command_proto_goTypes = []interface{}{ + (*RequestAddressForTransaction)(nil), // 0: protobuf.RequestAddressForTransaction + (*AcceptRequestAddressForTransaction)(nil), // 1: protobuf.AcceptRequestAddressForTransaction + (*DeclineRequestAddressForTransaction)(nil), // 2: protobuf.DeclineRequestAddressForTransaction + (*DeclineRequestTransaction)(nil), // 3: protobuf.DeclineRequestTransaction + (*RequestTransaction)(nil), // 4: protobuf.RequestTransaction + (*SendTransaction)(nil), // 5: protobuf.SendTransaction +} +var file_command_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_command_proto_init() } +func file_command_proto_init() { + if File_command_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptRequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineRequestAddressForTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineRequestTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendTransaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_command_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_command_proto_goTypes, + DependencyIndexes: file_command_proto_depIdxs, + MessageInfos: file_command_proto_msgTypes, + }.Build() + File_command_proto = out.File + file_command_proto_rawDesc = nil + file_command_proto_goTypes = nil + file_command_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/communities.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/communities.pb.go index c0c3381c..c32c21c5 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/communities.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/communities.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: communities.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityMember_Roles int32 @@ -29,57 +29,148 @@ const ( CommunityMember_ROLE_TOKEN_MASTER CommunityMember_Roles = 5 ) -var CommunityMember_Roles_name = map[int32]string{ - 0: "ROLE_NONE", - 1: "ROLE_OWNER", - 4: "ROLE_ADMIN", - 5: "ROLE_TOKEN_MASTER", -} +// Enum value maps for CommunityMember_Roles. +var ( + CommunityMember_Roles_name = map[int32]string{ + 0: "ROLE_NONE", + 1: "ROLE_OWNER", + 4: "ROLE_ADMIN", + 5: "ROLE_TOKEN_MASTER", + } + CommunityMember_Roles_value = map[string]int32{ + "ROLE_NONE": 0, + "ROLE_OWNER": 1, + "ROLE_ADMIN": 4, + "ROLE_TOKEN_MASTER": 5, + } +) -var CommunityMember_Roles_value = map[string]int32{ - "ROLE_NONE": 0, - "ROLE_OWNER": 1, - "ROLE_ADMIN": 4, - "ROLE_TOKEN_MASTER": 5, +func (x CommunityMember_Roles) Enum() *CommunityMember_Roles { + p := new(CommunityMember_Roles) + *p = x + return p } func (x CommunityMember_Roles) String() string { - return proto.EnumName(CommunityMember_Roles_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityMember_Roles) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[0].Descriptor() +} + +func (CommunityMember_Roles) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[0] +} + +func (x CommunityMember_Roles) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityMember_Roles.Descriptor instead. func (CommunityMember_Roles) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{1, 0} + return file_communities_proto_rawDescGZIP(), []int{1, 0} +} + +type CommunityMember_ChannelRole int32 + +const ( + // We make POSTER the first role to be the default one. + // This is for backwards compatibility. Older protobufs won't have this field and will default to 0. + CommunityMember_CHANNEL_ROLE_POSTER CommunityMember_ChannelRole = 0 + CommunityMember_CHANNEL_ROLE_VIEWER CommunityMember_ChannelRole = 1 +) + +// Enum value maps for CommunityMember_ChannelRole. +var ( + CommunityMember_ChannelRole_name = map[int32]string{ + 0: "CHANNEL_ROLE_POSTER", + 1: "CHANNEL_ROLE_VIEWER", + } + CommunityMember_ChannelRole_value = map[string]int32{ + "CHANNEL_ROLE_POSTER": 0, + "CHANNEL_ROLE_VIEWER": 1, + } +) + +func (x CommunityMember_ChannelRole) Enum() *CommunityMember_ChannelRole { + p := new(CommunityMember_ChannelRole) + *p = x + return p +} + +func (x CommunityMember_ChannelRole) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CommunityMember_ChannelRole) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[1].Descriptor() +} + +func (CommunityMember_ChannelRole) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[1] +} + +func (x CommunityMember_ChannelRole) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityMember_ChannelRole.Descriptor instead. +func (CommunityMember_ChannelRole) EnumDescriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{1, 1} } type CommunityPermissions_Access int32 const ( - CommunityPermissions_UNKNOWN_ACCESS CommunityPermissions_Access = 0 - CommunityPermissions_AUTO_ACCEPT CommunityPermissions_Access = 1 - CommunityPermissions_INVITATION_ONLY CommunityPermissions_Access = 2 // Deprecated: Do not use. + CommunityPermissions_UNKNOWN_ACCESS CommunityPermissions_Access = 0 + CommunityPermissions_AUTO_ACCEPT CommunityPermissions_Access = 1 + // Deprecated: Marked as deprecated in communities.proto. + CommunityPermissions_INVITATION_ONLY CommunityPermissions_Access = 2 CommunityPermissions_MANUAL_ACCEPT CommunityPermissions_Access = 3 ) -var CommunityPermissions_Access_name = map[int32]string{ - 0: "UNKNOWN_ACCESS", - 1: "AUTO_ACCEPT", - 2: "INVITATION_ONLY", - 3: "MANUAL_ACCEPT", -} +// Enum value maps for CommunityPermissions_Access. +var ( + CommunityPermissions_Access_name = map[int32]string{ + 0: "UNKNOWN_ACCESS", + 1: "AUTO_ACCEPT", + 2: "INVITATION_ONLY", + 3: "MANUAL_ACCEPT", + } + CommunityPermissions_Access_value = map[string]int32{ + "UNKNOWN_ACCESS": 0, + "AUTO_ACCEPT": 1, + "INVITATION_ONLY": 2, + "MANUAL_ACCEPT": 3, + } +) -var CommunityPermissions_Access_value = map[string]int32{ - "UNKNOWN_ACCESS": 0, - "AUTO_ACCEPT": 1, - "INVITATION_ONLY": 2, - "MANUAL_ACCEPT": 3, +func (x CommunityPermissions_Access) Enum() *CommunityPermissions_Access { + p := new(CommunityPermissions_Access) + *p = x + return p } func (x CommunityPermissions_Access) String() string { - return proto.EnumName(CommunityPermissions_Access_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityPermissions_Access) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[2].Descriptor() +} + +func (CommunityPermissions_Access) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[2] +} + +func (x CommunityPermissions_Access) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityPermissions_Access.Descriptor instead. func (CommunityPermissions_Access) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{3, 0} + return file_communities_proto_rawDescGZIP(), []int{3, 0} } type CommunityTokenPermission_Type int32 @@ -94,1120 +185,1358 @@ const ( CommunityTokenPermission_BECOME_TOKEN_OWNER CommunityTokenPermission_Type = 6 ) -var CommunityTokenPermission_Type_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_PERMISSION", - 1: "BECOME_ADMIN", - 2: "BECOME_MEMBER", - 3: "CAN_VIEW_CHANNEL", - 4: "CAN_VIEW_AND_POST_CHANNEL", - 5: "BECOME_TOKEN_MASTER", - 6: "BECOME_TOKEN_OWNER", -} +// Enum value maps for CommunityTokenPermission_Type. +var ( + CommunityTokenPermission_Type_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_PERMISSION", + 1: "BECOME_ADMIN", + 2: "BECOME_MEMBER", + 3: "CAN_VIEW_CHANNEL", + 4: "CAN_VIEW_AND_POST_CHANNEL", + 5: "BECOME_TOKEN_MASTER", + 6: "BECOME_TOKEN_OWNER", + } + CommunityTokenPermission_Type_value = map[string]int32{ + "UNKNOWN_TOKEN_PERMISSION": 0, + "BECOME_ADMIN": 1, + "BECOME_MEMBER": 2, + "CAN_VIEW_CHANNEL": 3, + "CAN_VIEW_AND_POST_CHANNEL": 4, + "BECOME_TOKEN_MASTER": 5, + "BECOME_TOKEN_OWNER": 6, + } +) -var CommunityTokenPermission_Type_value = map[string]int32{ - "UNKNOWN_TOKEN_PERMISSION": 0, - "BECOME_ADMIN": 1, - "BECOME_MEMBER": 2, - "CAN_VIEW_CHANNEL": 3, - "CAN_VIEW_AND_POST_CHANNEL": 4, - "BECOME_TOKEN_MASTER": 5, - "BECOME_TOKEN_OWNER": 6, +func (x CommunityTokenPermission_Type) Enum() *CommunityTokenPermission_Type { + p := new(CommunityTokenPermission_Type) + *p = x + return p } func (x CommunityTokenPermission_Type) String() string { - return proto.EnumName(CommunityTokenPermission_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityTokenPermission_Type) Descriptor() protoreflect.EnumDescriptor { + return file_communities_proto_enumTypes[3].Descriptor() +} + +func (CommunityTokenPermission_Type) Type() protoreflect.EnumType { + return &file_communities_proto_enumTypes[3] +} + +func (x CommunityTokenPermission_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityTokenPermission_Type.Descriptor instead. func (CommunityTokenPermission_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{5, 0} + return file_communities_proto_rawDescGZIP(), []int{5, 0} } type Grant struct { - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *Grant) Reset() { *m = Grant{} } -func (m *Grant) String() string { return proto.CompactTextString(m) } -func (*Grant) ProtoMessage() {} +func (x *Grant) Reset() { + *x = Grant{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Grant) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Grant) ProtoMessage() {} + +func (x *Grant) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Grant.ProtoReflect.Descriptor instead. func (*Grant) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{0} + return file_communities_proto_rawDescGZIP(), []int{0} } -func (m *Grant) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Grant.Unmarshal(m, b) -} -func (m *Grant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Grant.Marshal(b, m, deterministic) -} -func (m *Grant) XXX_Merge(src proto.Message) { - xxx_messageInfo_Grant.Merge(m, src) -} -func (m *Grant) XXX_Size() int { - return xxx_messageInfo_Grant.Size(m) -} -func (m *Grant) XXX_DiscardUnknown() { - xxx_messageInfo_Grant.DiscardUnknown(m) -} - -var xxx_messageInfo_Grant proto.InternalMessageInfo - -func (m *Grant) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *Grant) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *Grant) GetMemberId() []byte { - if m != nil { - return m.MemberId +func (x *Grant) GetMemberId() []byte { + if x != nil { + return x.MemberId } return nil } -func (m *Grant) GetChatId() string { - if m != nil { - return m.ChatId +func (x *Grant) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *Grant) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *Grant) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type CommunityMember struct { - Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` // Deprecated: Do not use. - LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` + // Deprecated: Marked as deprecated in communities.proto. + RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` + LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"` + ChannelRole CommunityMember_ChannelRole `protobuf:"varint,4,opt,name=channel_role,json=channelRole,proto3,enum=protobuf.CommunityMember_ChannelRole" json:"channel_role,omitempty"` } -func (m *CommunityMember) Reset() { *m = CommunityMember{} } -func (m *CommunityMember) String() string { return proto.CompactTextString(m) } -func (*CommunityMember) ProtoMessage() {} +func (x *CommunityMember) Reset() { + *x = CommunityMember{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityMember) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityMember) ProtoMessage() {} + +func (x *CommunityMember) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityMember.ProtoReflect.Descriptor instead. func (*CommunityMember) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{1} + return file_communities_proto_rawDescGZIP(), []int{1} } -func (m *CommunityMember) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityMember.Unmarshal(m, b) -} -func (m *CommunityMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityMember.Marshal(b, m, deterministic) -} -func (m *CommunityMember) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityMember.Merge(m, src) -} -func (m *CommunityMember) XXX_Size() int { - return xxx_messageInfo_CommunityMember.Size(m) -} -func (m *CommunityMember) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityMember.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityMember proto.InternalMessageInfo - -func (m *CommunityMember) GetRoles() []CommunityMember_Roles { - if m != nil { - return m.Roles +func (x *CommunityMember) GetRoles() []CommunityMember_Roles { + if x != nil { + return x.Roles } return nil } -// Deprecated: Do not use. -func (m *CommunityMember) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +// Deprecated: Marked as deprecated in communities.proto. +func (x *CommunityMember) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } -func (m *CommunityMember) GetLastUpdateClock() uint64 { - if m != nil { - return m.LastUpdateClock +func (x *CommunityMember) GetLastUpdateClock() uint64 { + if x != nil { + return x.LastUpdateClock } return 0 } +func (x *CommunityMember) GetChannelRole() CommunityMember_ChannelRole { + if x != nil { + return x.ChannelRole + } + return CommunityMember_CHANNEL_ROLE_POSTER +} + type CommunityTokenMetadata struct { - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` - TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` - Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` + TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"` + Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"` } -func (m *CommunityTokenMetadata) Reset() { *m = CommunityTokenMetadata{} } -func (m *CommunityTokenMetadata) String() string { return proto.CompactTextString(m) } -func (*CommunityTokenMetadata) ProtoMessage() {} +func (x *CommunityTokenMetadata) Reset() { + *x = CommunityTokenMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityTokenMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityTokenMetadata) ProtoMessage() {} + +func (x *CommunityTokenMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityTokenMetadata.ProtoReflect.Descriptor instead. func (*CommunityTokenMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{2} + return file_communities_proto_rawDescGZIP(), []int{2} } -func (m *CommunityTokenMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityTokenMetadata.Unmarshal(m, b) -} -func (m *CommunityTokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityTokenMetadata.Marshal(b, m, deterministic) -} -func (m *CommunityTokenMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityTokenMetadata.Merge(m, src) -} -func (m *CommunityTokenMetadata) XXX_Size() int { - return xxx_messageInfo_CommunityTokenMetadata.Size(m) -} -func (m *CommunityTokenMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityTokenMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityTokenMetadata proto.InternalMessageInfo - -func (m *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { - if m != nil { - return m.ContractAddresses +func (x *CommunityTokenMetadata) GetContractAddresses() map[uint64]string { + if x != nil { + return x.ContractAddresses } return nil } -func (m *CommunityTokenMetadata) GetDescription() string { - if m != nil { - return m.Description +func (x *CommunityTokenMetadata) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *CommunityTokenMetadata) GetImage() string { - if m != nil { - return m.Image +func (x *CommunityTokenMetadata) GetImage() string { + if x != nil { + return x.Image } return "" } -func (m *CommunityTokenMetadata) GetTokenType() CommunityTokenType { - if m != nil { - return m.TokenType +func (x *CommunityTokenMetadata) GetTokenType() CommunityTokenType { + if x != nil { + return x.TokenType } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (m *CommunityTokenMetadata) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *CommunityTokenMetadata) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *CommunityTokenMetadata) GetName() string { - if m != nil { - return m.Name +func (x *CommunityTokenMetadata) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CommunityTokenMetadata) GetDecimals() uint32 { - if m != nil { - return m.Decimals +func (x *CommunityTokenMetadata) GetDecimals() uint32 { + if x != nil { + return x.Decimals } return 0 } type CommunityPermissions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + EnsOnly bool `protobuf:"varint,1,opt,name=ens_only,json=ensOnly,proto3" json:"ens_only,omitempty"` // https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants - Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` - Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"` + Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"` } -func (m *CommunityPermissions) Reset() { *m = CommunityPermissions{} } -func (m *CommunityPermissions) String() string { return proto.CompactTextString(m) } -func (*CommunityPermissions) ProtoMessage() {} +func (x *CommunityPermissions) Reset() { + *x = CommunityPermissions{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityPermissions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPermissions) ProtoMessage() {} + +func (x *CommunityPermissions) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPermissions.ProtoReflect.Descriptor instead. func (*CommunityPermissions) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{3} + return file_communities_proto_rawDescGZIP(), []int{3} } -func (m *CommunityPermissions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityPermissions.Unmarshal(m, b) -} -func (m *CommunityPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityPermissions.Marshal(b, m, deterministic) -} -func (m *CommunityPermissions) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityPermissions.Merge(m, src) -} -func (m *CommunityPermissions) XXX_Size() int { - return xxx_messageInfo_CommunityPermissions.Size(m) -} -func (m *CommunityPermissions) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityPermissions.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityPermissions proto.InternalMessageInfo - -func (m *CommunityPermissions) GetEnsOnly() bool { - if m != nil { - return m.EnsOnly +func (x *CommunityPermissions) GetEnsOnly() bool { + if x != nil { + return x.EnsOnly } return false } -func (m *CommunityPermissions) GetPrivate() bool { - if m != nil { - return m.Private +func (x *CommunityPermissions) GetPrivate() bool { + if x != nil { + return x.Private } return false } -func (m *CommunityPermissions) GetAccess() CommunityPermissions_Access { - if m != nil { - return m.Access +func (x *CommunityPermissions) GetAccess() CommunityPermissions_Access { + if x != nil { + return x.Access } return CommunityPermissions_UNKNOWN_ACCESS } type TokenCriteria struct { - ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` - TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` - EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` - Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + // Deprecated: Marked as deprecated in communities.proto. + Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"` + EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"` + Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"` + AmountInWei string `protobuf:"bytes,9,opt,name=amountInWei,proto3" json:"amountInWei,omitempty"` } -func (m *TokenCriteria) Reset() { *m = TokenCriteria{} } -func (m *TokenCriteria) String() string { return proto.CompactTextString(m) } -func (*TokenCriteria) ProtoMessage() {} +func (x *TokenCriteria) Reset() { + *x = TokenCriteria{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenCriteria) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenCriteria) ProtoMessage() {} + +func (x *TokenCriteria) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenCriteria.ProtoReflect.Descriptor instead. func (*TokenCriteria) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{4} + return file_communities_proto_rawDescGZIP(), []int{4} } -func (m *TokenCriteria) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TokenCriteria.Unmarshal(m, b) -} -func (m *TokenCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TokenCriteria.Marshal(b, m, deterministic) -} -func (m *TokenCriteria) XXX_Merge(src proto.Message) { - xxx_messageInfo_TokenCriteria.Merge(m, src) -} -func (m *TokenCriteria) XXX_Size() int { - return xxx_messageInfo_TokenCriteria.Size(m) -} -func (m *TokenCriteria) XXX_DiscardUnknown() { - xxx_messageInfo_TokenCriteria.DiscardUnknown(m) -} - -var xxx_messageInfo_TokenCriteria proto.InternalMessageInfo - -func (m *TokenCriteria) GetContractAddresses() map[uint64]string { - if m != nil { - return m.ContractAddresses +func (x *TokenCriteria) GetContractAddresses() map[uint64]string { + if x != nil { + return x.ContractAddresses } return nil } -func (m *TokenCriteria) GetType() CommunityTokenType { - if m != nil { - return m.Type +func (x *TokenCriteria) GetType() CommunityTokenType { + if x != nil { + return x.Type } return CommunityTokenType_UNKNOWN_TOKEN_TYPE } -func (m *TokenCriteria) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *TokenCriteria) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *TokenCriteria) GetName() string { - if m != nil { - return m.Name +func (x *TokenCriteria) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *TokenCriteria) GetAmount() string { - if m != nil { - return m.Amount +// Deprecated: Marked as deprecated in communities.proto. +func (x *TokenCriteria) GetAmount() string { + if x != nil { + return x.Amount } return "" } -func (m *TokenCriteria) GetTokenIds() []uint64 { - if m != nil { - return m.TokenIds +func (x *TokenCriteria) GetTokenIds() []uint64 { + if x != nil { + return x.TokenIds } return nil } -func (m *TokenCriteria) GetEnsPattern() string { - if m != nil { - return m.EnsPattern +func (x *TokenCriteria) GetEnsPattern() string { + if x != nil { + return x.EnsPattern } return "" } -func (m *TokenCriteria) GetDecimals() uint64 { - if m != nil { - return m.Decimals +func (x *TokenCriteria) GetDecimals() uint64 { + if x != nil { + return x.Decimals } return 0 } -type CommunityTokenPermission struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` - TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` - ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` - IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CommunityTokenPermission) Reset() { *m = CommunityTokenPermission{} } -func (m *CommunityTokenPermission) String() string { return proto.CompactTextString(m) } -func (*CommunityTokenPermission) ProtoMessage() {} -func (*CommunityTokenPermission) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{5} -} - -func (m *CommunityTokenPermission) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityTokenPermission.Unmarshal(m, b) -} -func (m *CommunityTokenPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityTokenPermission.Marshal(b, m, deterministic) -} -func (m *CommunityTokenPermission) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityTokenPermission.Merge(m, src) -} -func (m *CommunityTokenPermission) XXX_Size() int { - return xxx_messageInfo_CommunityTokenPermission.Size(m) -} -func (m *CommunityTokenPermission) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityTokenPermission.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityTokenPermission proto.InternalMessageInfo - -func (m *CommunityTokenPermission) GetId() string { - if m != nil { - return m.Id +func (x *TokenCriteria) GetAmountInWei() string { + if x != nil { + return x.AmountInWei } return "" } -func (m *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { - if m != nil { - return m.Type +type CommunityTokenPermission struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"` + TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"` + ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"` + IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` +} + +func (x *CommunityTokenPermission) Reset() { + *x = CommunityTokenPermission{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityTokenPermission) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityTokenPermission) ProtoMessage() {} + +func (x *CommunityTokenPermission) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityTokenPermission.ProtoReflect.Descriptor instead. +func (*CommunityTokenPermission) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{5} +} + +func (x *CommunityTokenPermission) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CommunityTokenPermission) GetType() CommunityTokenPermission_Type { + if x != nil { + return x.Type } return CommunityTokenPermission_UNKNOWN_TOKEN_PERMISSION } -func (m *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { - if m != nil { - return m.TokenCriteria +func (x *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria { + if x != nil { + return x.TokenCriteria } return nil } -func (m *CommunityTokenPermission) GetChatIds() []string { - if m != nil { - return m.ChatIds +func (x *CommunityTokenPermission) GetChatIds() []string { + if x != nil { + return x.ChatIds } return nil } -func (m *CommunityTokenPermission) GetIsPrivate() bool { - if m != nil { - return m.IsPrivate +func (x *CommunityTokenPermission) GetIsPrivate() bool { + if x != nil { + return x.IsPrivate } return false } type CommunityDescription struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` - Identity *ChatIdentity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"` - Chats map[string]*CommunityChat `protobuf:"bytes,6,rep,name=chats,proto3" json:"chats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - BanList []string `protobuf:"bytes,7,rep,name=ban_list,json=banList,proto3" json:"ban_list,omitempty"` - Categories map[string]*CommunityCategory `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ArchiveMagnetlinkClock uint64 `protobuf:"varint,9,opt,name=archive_magnetlink_clock,json=archiveMagnetlinkClock,proto3" json:"archive_magnetlink_clock,omitempty"` - AdminSettings *CommunityAdminSettings `protobuf:"bytes,10,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` - IntroMessage string `protobuf:"bytes,11,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` - OutroMessage string `protobuf:"bytes,12,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` - Encrypted bool `protobuf:"varint,13,opt,name=encrypted,proto3" json:"encrypted,omitempty"` // Deprecated: Do not use. + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"` + Chats map[string]*CommunityChat `protobuf:"bytes,6,rep,name=chats,proto3" json:"chats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Deprecated: Marked as deprecated in communities.proto. + BanList []string `protobuf:"bytes,7,rep,name=ban_list,json=banList,proto3" json:"ban_list,omitempty"` + Categories map[string]*CommunityCategory `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ArchiveMagnetlinkClock uint64 `protobuf:"varint,9,opt,name=archive_magnetlink_clock,json=archiveMagnetlinkClock,proto3" json:"archive_magnetlink_clock,omitempty"` + AdminSettings *CommunityAdminSettings `protobuf:"bytes,10,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` + IntroMessage string `protobuf:"bytes,11,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` + OutroMessage string `protobuf:"bytes,12,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` + // Deprecated: Marked as deprecated in communities.proto. + Encrypted bool `protobuf:"varint,13,opt,name=encrypted,proto3" json:"encrypted,omitempty"` Tags []string `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"` TokenPermissions map[string]*CommunityTokenPermission `protobuf:"bytes,15,rep,name=token_permissions,json=tokenPermissions,proto3" json:"token_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` CommunityTokensMetadata []*CommunityTokenMetadata `protobuf:"bytes,16,rep,name=community_tokens_metadata,json=communityTokensMetadata,proto3" json:"community_tokens_metadata,omitempty"` ActiveMembersCount uint64 `protobuf:"varint,17,opt,name=active_members_count,json=activeMembersCount,proto3" json:"active_members_count,omitempty"` ID string `protobuf:"bytes,18,opt,name=ID,proto3" json:"ID,omitempty"` + BannedMembers map[string]*CommunityBanInfo `protobuf:"bytes,19,rep,name=banned_members,json=bannedMembers,proto3" json:"banned_members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // key is hash ratchet key_id + seq_no - PrivateData map[string][]byte `protobuf:"bytes,100,rep,name=privateData,proto3" json:"privateData,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + PrivateData map[string][]byte `protobuf:"bytes,100,rep,name=privateData,proto3" json:"privateData,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CommunityDescription) Reset() { *m = CommunityDescription{} } -func (m *CommunityDescription) String() string { return proto.CompactTextString(m) } -func (*CommunityDescription) ProtoMessage() {} +func (x *CommunityDescription) Reset() { + *x = CommunityDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityDescription) ProtoMessage() {} + +func (x *CommunityDescription) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityDescription.ProtoReflect.Descriptor instead. func (*CommunityDescription) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{6} + return file_communities_proto_rawDescGZIP(), []int{6} } -func (m *CommunityDescription) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityDescription.Unmarshal(m, b) -} -func (m *CommunityDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityDescription.Marshal(b, m, deterministic) -} -func (m *CommunityDescription) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityDescription.Merge(m, src) -} -func (m *CommunityDescription) XXX_Size() int { - return xxx_messageInfo_CommunityDescription.Size(m) -} -func (m *CommunityDescription) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityDescription.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityDescription proto.InternalMessageInfo - -func (m *CommunityDescription) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityDescription) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityDescription) GetMembers() map[string]*CommunityMember { - if m != nil { - return m.Members +func (x *CommunityDescription) GetMembers() map[string]*CommunityMember { + if x != nil { + return x.Members } return nil } -func (m *CommunityDescription) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityDescription) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityDescription) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityDescription) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityDescription) GetChats() map[string]*CommunityChat { - if m != nil { - return m.Chats +func (x *CommunityDescription) GetChats() map[string]*CommunityChat { + if x != nil { + return x.Chats } return nil } -func (m *CommunityDescription) GetBanList() []string { - if m != nil { - return m.BanList +// Deprecated: Marked as deprecated in communities.proto. +func (x *CommunityDescription) GetBanList() []string { + if x != nil { + return x.BanList } return nil } -func (m *CommunityDescription) GetCategories() map[string]*CommunityCategory { - if m != nil { - return m.Categories +func (x *CommunityDescription) GetCategories() map[string]*CommunityCategory { + if x != nil { + return x.Categories } return nil } -func (m *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { - if m != nil { - return m.ArchiveMagnetlinkClock +func (x *CommunityDescription) GetArchiveMagnetlinkClock() uint64 { + if x != nil { + return x.ArchiveMagnetlinkClock } return 0 } -func (m *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { - if m != nil { - return m.AdminSettings +func (x *CommunityDescription) GetAdminSettings() *CommunityAdminSettings { + if x != nil { + return x.AdminSettings } return nil } -func (m *CommunityDescription) GetIntroMessage() string { - if m != nil { - return m.IntroMessage +func (x *CommunityDescription) GetIntroMessage() string { + if x != nil { + return x.IntroMessage } return "" } -func (m *CommunityDescription) GetOutroMessage() string { - if m != nil { - return m.OutroMessage +func (x *CommunityDescription) GetOutroMessage() string { + if x != nil { + return x.OutroMessage } return "" } -// Deprecated: Do not use. -func (m *CommunityDescription) GetEncrypted() bool { - if m != nil { - return m.Encrypted +// Deprecated: Marked as deprecated in communities.proto. +func (x *CommunityDescription) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } -func (m *CommunityDescription) GetTags() []string { - if m != nil { - return m.Tags +func (x *CommunityDescription) GetTags() []string { + if x != nil { + return x.Tags } return nil } -func (m *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { - if m != nil { - return m.TokenPermissions +func (x *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission { + if x != nil { + return x.TokenPermissions } return nil } -func (m *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { - if m != nil { - return m.CommunityTokensMetadata +func (x *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata { + if x != nil { + return x.CommunityTokensMetadata } return nil } -func (m *CommunityDescription) GetActiveMembersCount() uint64 { - if m != nil { - return m.ActiveMembersCount +func (x *CommunityDescription) GetActiveMembersCount() uint64 { + if x != nil { + return x.ActiveMembersCount } return 0 } -func (m *CommunityDescription) GetID() string { - if m != nil { - return m.ID +func (x *CommunityDescription) GetID() string { + if x != nil { + return x.ID } return "" } -func (m *CommunityDescription) GetPrivateData() map[string][]byte { - if m != nil { - return m.PrivateData +func (x *CommunityDescription) GetBannedMembers() map[string]*CommunityBanInfo { + if x != nil { + return x.BannedMembers } return nil } +func (x *CommunityDescription) GetPrivateData() map[string][]byte { + if x != nil { + return x.PrivateData + } + return nil +} + +type CommunityBanInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeleteAllMessages bool `protobuf:"varint,1,opt,name=delete_all_messages,json=deleteAllMessages,proto3" json:"delete_all_messages,omitempty"` +} + +func (x *CommunityBanInfo) Reset() { + *x = CommunityBanInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityBanInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityBanInfo) ProtoMessage() {} + +func (x *CommunityBanInfo) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityBanInfo.ProtoReflect.Descriptor instead. +func (*CommunityBanInfo) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{7} +} + +func (x *CommunityBanInfo) GetDeleteAllMessages() bool { + if x != nil { + return x.DeleteAllMessages + } + return false +} + type CommunityAdminSettings struct { - PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"` } -func (m *CommunityAdminSettings) Reset() { *m = CommunityAdminSettings{} } -func (m *CommunityAdminSettings) String() string { return proto.CompactTextString(m) } -func (*CommunityAdminSettings) ProtoMessage() {} +func (x *CommunityAdminSettings) Reset() { + *x = CommunityAdminSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityAdminSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityAdminSettings) ProtoMessage() {} + +func (x *CommunityAdminSettings) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityAdminSettings.ProtoReflect.Descriptor instead. func (*CommunityAdminSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{7} + return file_communities_proto_rawDescGZIP(), []int{8} } -func (m *CommunityAdminSettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityAdminSettings.Unmarshal(m, b) -} -func (m *CommunityAdminSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityAdminSettings.Marshal(b, m, deterministic) -} -func (m *CommunityAdminSettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityAdminSettings.Merge(m, src) -} -func (m *CommunityAdminSettings) XXX_Size() int { - return xxx_messageInfo_CommunityAdminSettings.Size(m) -} -func (m *CommunityAdminSettings) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityAdminSettings.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityAdminSettings proto.InternalMessageInfo - -func (m *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { - if m != nil { - return m.PinMessageAllMembersEnabled +func (x *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool { + if x != nil { + return x.PinMessageAllMembersEnabled } return false } type CommunityChat struct { - Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` - CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` + CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"` + ViewersCanPostReactions bool `protobuf:"varint,6,opt,name=viewers_can_post_reactions,json=viewersCanPostReactions,proto3" json:"viewers_can_post_reactions,omitempty"` + HideIfPermissionsNotMet bool `protobuf:"varint,7,opt,name=hide_if_permissions_not_met,json=hideIfPermissionsNotMet,proto3" json:"hide_if_permissions_not_met,omitempty"` } -func (m *CommunityChat) Reset() { *m = CommunityChat{} } -func (m *CommunityChat) String() string { return proto.CompactTextString(m) } -func (*CommunityChat) ProtoMessage() {} +func (x *CommunityChat) Reset() { + *x = CommunityChat{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityChat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityChat) ProtoMessage() {} + +func (x *CommunityChat) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityChat.ProtoReflect.Descriptor instead. func (*CommunityChat) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{8} + return file_communities_proto_rawDescGZIP(), []int{9} } -func (m *CommunityChat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityChat.Unmarshal(m, b) -} -func (m *CommunityChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityChat.Marshal(b, m, deterministic) -} -func (m *CommunityChat) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityChat.Merge(m, src) -} -func (m *CommunityChat) XXX_Size() int { - return xxx_messageInfo_CommunityChat.Size(m) -} -func (m *CommunityChat) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityChat.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityChat proto.InternalMessageInfo - -func (m *CommunityChat) GetMembers() map[string]*CommunityMember { - if m != nil { - return m.Members +func (x *CommunityChat) GetMembers() map[string]*CommunityMember { + if x != nil { + return x.Members } return nil } -func (m *CommunityChat) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityChat) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityChat) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityChat) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityChat) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CommunityChat) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CommunityChat) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CommunityChat) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } +func (x *CommunityChat) GetViewersCanPostReactions() bool { + if x != nil { + return x.ViewersCanPostReactions + } + return false +} + +func (x *CommunityChat) GetHideIfPermissionsNotMet() bool { + if x != nil { + return x.HideIfPermissionsNotMet + } + return false +} + type CommunityCategory struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` } -func (m *CommunityCategory) Reset() { *m = CommunityCategory{} } -func (m *CommunityCategory) String() string { return proto.CompactTextString(m) } -func (*CommunityCategory) ProtoMessage() {} +func (x *CommunityCategory) Reset() { + *x = CommunityCategory{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityCategory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityCategory) ProtoMessage() {} + +func (x *CommunityCategory) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityCategory.ProtoReflect.Descriptor instead. func (*CommunityCategory) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{9} + return file_communities_proto_rawDescGZIP(), []int{10} } -func (m *CommunityCategory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityCategory.Unmarshal(m, b) -} -func (m *CommunityCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityCategory.Marshal(b, m, deterministic) -} -func (m *CommunityCategory) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityCategory.Merge(m, src) -} -func (m *CommunityCategory) XXX_Size() int { - return xxx_messageInfo_CommunityCategory.Size(m) -} -func (m *CommunityCategory) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityCategory.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityCategory proto.InternalMessageInfo - -func (m *CommunityCategory) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CommunityCategory) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CommunityCategory) GetName() string { - if m != nil { - return m.Name +func (x *CommunityCategory) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CommunityCategory) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CommunityCategory) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } type RevealedAccount struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` - IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ChainIds []uint64 `protobuf:"varint,3,rep,packed,name=chain_ids,json=chainIds,proto3" json:"chain_ids,omitempty"` + IsAirdropAddress bool `protobuf:"varint,4,opt,name=isAirdropAddress,proto3" json:"isAirdropAddress,omitempty"` } -func (m *RevealedAccount) Reset() { *m = RevealedAccount{} } -func (m *RevealedAccount) String() string { return proto.CompactTextString(m) } -func (*RevealedAccount) ProtoMessage() {} +func (x *RevealedAccount) Reset() { + *x = RevealedAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevealedAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevealedAccount) ProtoMessage() {} + +func (x *RevealedAccount) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevealedAccount.ProtoReflect.Descriptor instead. func (*RevealedAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{10} + return file_communities_proto_rawDescGZIP(), []int{11} } -func (m *RevealedAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RevealedAccount.Unmarshal(m, b) -} -func (m *RevealedAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RevealedAccount.Marshal(b, m, deterministic) -} -func (m *RevealedAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_RevealedAccount.Merge(m, src) -} -func (m *RevealedAccount) XXX_Size() int { - return xxx_messageInfo_RevealedAccount.Size(m) -} -func (m *RevealedAccount) XXX_DiscardUnknown() { - xxx_messageInfo_RevealedAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_RevealedAccount proto.InternalMessageInfo - -func (m *RevealedAccount) GetAddress() string { - if m != nil { - return m.Address +func (x *RevealedAccount) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *RevealedAccount) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *RevealedAccount) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *RevealedAccount) GetChainIds() []uint64 { - if m != nil { - return m.ChainIds +func (x *RevealedAccount) GetChainIds() []uint64 { + if x != nil { + return x.ChainIds } return nil } -func (m *RevealedAccount) GetIsAirdropAddress() bool { - if m != nil { - return m.IsAirdropAddress +func (x *RevealedAccount) GetIsAirdropAddress() bool { + if x != nil { + return x.IsAirdropAddress } return false } type CommunityRequestToJoin struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,6,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *CommunityRequestToJoin) Reset() { *m = CommunityRequestToJoin{} } -func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToJoin) ProtoMessage() {} +func (x *CommunityRequestToJoin) Reset() { + *x = CommunityRequestToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToJoin) ProtoMessage() {} + +func (x *CommunityRequestToJoin) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToJoin.ProtoReflect.Descriptor instead. func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{11} + return file_communities_proto_rawDescGZIP(), []int{12} } -func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToJoin.Unmarshal(m, b) -} -func (m *CommunityRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToJoin.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToJoin.Merge(m, src) -} -func (m *CommunityRequestToJoin) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToJoin.Size(m) -} -func (m *CommunityRequestToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToJoin proto.InternalMessageInfo - -func (m *CommunityRequestToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *CommunityRequestToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *CommunityRequestToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *CommunityRequestToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *CommunityRequestToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityRequestToJoin) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *CommunityRequestToJoin) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +func (x *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } type CommunityEditSharedAddresses struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *CommunityEditSharedAddresses) Reset() { *m = CommunityEditSharedAddresses{} } -func (m *CommunityEditSharedAddresses) String() string { return proto.CompactTextString(m) } -func (*CommunityEditSharedAddresses) ProtoMessage() {} +func (x *CommunityEditSharedAddresses) Reset() { + *x = CommunityEditSharedAddresses{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEditSharedAddresses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEditSharedAddresses) ProtoMessage() {} + +func (x *CommunityEditSharedAddresses) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEditSharedAddresses.ProtoReflect.Descriptor instead. func (*CommunityEditSharedAddresses) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{12} + return file_communities_proto_rawDescGZIP(), []int{13} } -func (m *CommunityEditSharedAddresses) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEditSharedAddresses.Unmarshal(m, b) -} -func (m *CommunityEditSharedAddresses) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEditSharedAddresses.Marshal(b, m, deterministic) -} -func (m *CommunityEditSharedAddresses) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEditSharedAddresses.Merge(m, src) -} -func (m *CommunityEditSharedAddresses) XXX_Size() int { - return xxx_messageInfo_CommunityEditSharedAddresses.Size(m) -} -func (m *CommunityEditSharedAddresses) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEditSharedAddresses.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEditSharedAddresses proto.InternalMessageInfo - -func (m *CommunityEditSharedAddresses) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityEditSharedAddresses) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityEditSharedAddresses) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityEditSharedAddresses) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityEditSharedAddresses) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +func (x *CommunityEditSharedAddresses) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } type CommunityCancelRequestToJoin struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } -func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelRequestToJoin{} } -func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) } -func (*CommunityCancelRequestToJoin) ProtoMessage() {} +func (x *CommunityCancelRequestToJoin) Reset() { + *x = CommunityCancelRequestToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityCancelRequestToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityCancelRequestToJoin) ProtoMessage() {} + +func (x *CommunityCancelRequestToJoin) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityCancelRequestToJoin.ProtoReflect.Descriptor instead. func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{13} + return file_communities_proto_rawDescGZIP(), []int{14} } -func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityCancelRequestToJoin.Unmarshal(m, b) -} -func (m *CommunityCancelRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityCancelRequestToJoin.Marshal(b, m, deterministic) -} -func (m *CommunityCancelRequestToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityCancelRequestToJoin.Merge(m, src) -} -func (m *CommunityCancelRequestToJoin) XXX_Size() int { - return xxx_messageInfo_CommunityCancelRequestToJoin.Size(m) -} -func (m *CommunityCancelRequestToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityCancelRequestToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityCancelRequestToJoin proto.InternalMessageInfo - -func (m *CommunityCancelRequestToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityCancelRequestToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityCancelRequestToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *CommunityCancelRequestToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *CommunityCancelRequestToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *CommunityCancelRequestToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *CommunityCancelRequestToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityCancelRequestToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityCancelRequestToJoin) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *CommunityCancelRequestToJoin) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } type CommunityUserKicked struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` } -func (m *CommunityUserKicked) Reset() { *m = CommunityUserKicked{} } -func (m *CommunityUserKicked) String() string { return proto.CompactTextString(m) } -func (*CommunityUserKicked) ProtoMessage() {} +func (x *CommunityUserKicked) Reset() { + *x = CommunityUserKicked{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityUserKicked) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityUserKicked) ProtoMessage() {} + +func (x *CommunityUserKicked) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityUserKicked.ProtoReflect.Descriptor instead. func (*CommunityUserKicked) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{14} + return file_communities_proto_rawDescGZIP(), []int{15} } -func (m *CommunityUserKicked) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityUserKicked.Unmarshal(m, b) -} -func (m *CommunityUserKicked) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityUserKicked.Marshal(b, m, deterministic) -} -func (m *CommunityUserKicked) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityUserKicked.Merge(m, src) -} -func (m *CommunityUserKicked) XXX_Size() int { - return xxx_messageInfo_CommunityUserKicked.Size(m) -} -func (m *CommunityUserKicked) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityUserKicked.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityUserKicked proto.InternalMessageInfo - -func (m *CommunityUserKicked) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityUserKicked) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityUserKicked) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityUserKicked) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } type CommunityRequestToJoinResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"` Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"` @@ -1216,680 +1545,1940 @@ type CommunityRequestToJoinResponse struct { MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` ProtectedTopicPrivateKey []byte `protobuf:"bytes,7,opt,name=protected_topic_private_key,json=protectedTopicPrivateKey,proto3" json:"protected_topic_private_key,omitempty"` Shard *Shard `protobuf:"bytes,8,opt,name=shard,proto3" json:"shard,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} } -func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToJoinResponse) ProtoMessage() {} +func (x *CommunityRequestToJoinResponse) Reset() { + *x = CommunityRequestToJoinResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToJoinResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToJoinResponse) ProtoMessage() {} + +func (x *CommunityRequestToJoinResponse) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToJoinResponse.ProtoReflect.Descriptor instead. func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{15} + return file_communities_proto_rawDescGZIP(), []int{16} } -func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToJoinResponse.Unmarshal(m, b) -} -func (m *CommunityRequestToJoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToJoinResponse.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToJoinResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToJoinResponse.Merge(m, src) -} -func (m *CommunityRequestToJoinResponse) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToJoinResponse.Size(m) -} -func (m *CommunityRequestToJoinResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToJoinResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToJoinResponse proto.InternalMessageInfo - -func (m *CommunityRequestToJoinResponse) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToJoinResponse) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { - if m != nil { - return m.Community +func (x *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription { + if x != nil { + return x.Community } return nil } -func (m *CommunityRequestToJoinResponse) GetAccepted() bool { - if m != nil { - return m.Accepted +func (x *CommunityRequestToJoinResponse) GetAccepted() bool { + if x != nil { + return x.Accepted } return false } -func (m *CommunityRequestToJoinResponse) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *CommunityRequestToJoinResponse) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *CommunityRequestToJoinResponse) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToJoinResponse) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityRequestToJoinResponse) GetMagnetUri() string { - if m != nil { - return m.MagnetUri +func (x *CommunityRequestToJoinResponse) GetMagnetUri() string { + if x != nil { + return x.MagnetUri } return "" } -func (m *CommunityRequestToJoinResponse) GetProtectedTopicPrivateKey() []byte { - if m != nil { - return m.ProtectedTopicPrivateKey +func (x *CommunityRequestToJoinResponse) GetProtectedTopicPrivateKey() []byte { + if x != nil { + return x.ProtectedTopicPrivateKey } return nil } -func (m *CommunityRequestToJoinResponse) GetShard() *Shard { - if m != nil { - return m.Shard +func (x *CommunityRequestToJoinResponse) GetShard() *Shard { + if x != nil { + return x.Shard } return nil } type CommunityRequestToLeave struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` } -func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave{} } -func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } -func (*CommunityRequestToLeave) ProtoMessage() {} +func (x *CommunityRequestToLeave) Reset() { + *x = CommunityRequestToLeave{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityRequestToLeave) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityRequestToLeave) ProtoMessage() {} + +func (x *CommunityRequestToLeave) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityRequestToLeave.ProtoReflect.Descriptor instead. func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{16} + return file_communities_proto_rawDescGZIP(), []int{17} } -func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityRequestToLeave.Unmarshal(m, b) -} -func (m *CommunityRequestToLeave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityRequestToLeave.Marshal(b, m, deterministic) -} -func (m *CommunityRequestToLeave) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityRequestToLeave.Merge(m, src) -} -func (m *CommunityRequestToLeave) XXX_Size() int { - return xxx_messageInfo_CommunityRequestToLeave.Size(m) -} -func (m *CommunityRequestToLeave) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityRequestToLeave.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityRequestToLeave proto.InternalMessageInfo - -func (m *CommunityRequestToLeave) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityRequestToLeave) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityRequestToLeave) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityRequestToLeave) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } type CommunityMessageArchiveMagnetlink struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` } -func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMessageArchiveMagnetlink{} } -func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } -func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} +func (x *CommunityMessageArchiveMagnetlink) Reset() { + *x = CommunityMessageArchiveMagnetlink{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityMessageArchiveMagnetlink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} + +func (x *CommunityMessageArchiveMagnetlink) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityMessageArchiveMagnetlink.ProtoReflect.Descriptor instead. func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{17} + return file_communities_proto_rawDescGZIP(), []int{18} } -func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Unmarshal(m, b) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Marshal(b, m, deterministic) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityMessageArchiveMagnetlink.Merge(m, src) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_Size() int { - return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Size(m) -} -func (m *CommunityMessageArchiveMagnetlink) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityMessageArchiveMagnetlink.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityMessageArchiveMagnetlink proto.InternalMessageInfo - -func (m *CommunityMessageArchiveMagnetlink) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityMessageArchiveMagnetlink) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { - if m != nil { - return m.MagnetUri +func (x *CommunityMessageArchiveMagnetlink) GetMagnetUri() string { + if x != nil { + return x.MagnetUri } return "" } type WakuMessage struct { - Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` - Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` - Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` - Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` - ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` + Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` + Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"` + Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` + ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"` } -func (m *WakuMessage) Reset() { *m = WakuMessage{} } -func (m *WakuMessage) String() string { return proto.CompactTextString(m) } -func (*WakuMessage) ProtoMessage() {} +func (x *WakuMessage) Reset() { + *x = WakuMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessage) ProtoMessage() {} + +func (x *WakuMessage) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessage.ProtoReflect.Descriptor instead. func (*WakuMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{18} + return file_communities_proto_rawDescGZIP(), []int{19} } -func (m *WakuMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessage.Unmarshal(m, b) -} -func (m *WakuMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessage.Marshal(b, m, deterministic) -} -func (m *WakuMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessage.Merge(m, src) -} -func (m *WakuMessage) XXX_Size() int { - return xxx_messageInfo_WakuMessage.Size(m) -} -func (m *WakuMessage) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessage proto.InternalMessageInfo - -func (m *WakuMessage) GetSig() []byte { - if m != nil { - return m.Sig +func (x *WakuMessage) GetSig() []byte { + if x != nil { + return x.Sig } return nil } -func (m *WakuMessage) GetTimestamp() uint64 { - if m != nil { - return m.Timestamp +func (x *WakuMessage) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *WakuMessage) GetTopic() []byte { - if m != nil { - return m.Topic +func (x *WakuMessage) GetTopic() []byte { + if x != nil { + return x.Topic } return nil } -func (m *WakuMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *WakuMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *WakuMessage) GetPadding() []byte { - if m != nil { - return m.Padding +func (x *WakuMessage) GetPadding() []byte { + if x != nil { + return x.Padding } return nil } -func (m *WakuMessage) GetHash() []byte { - if m != nil { - return m.Hash +func (x *WakuMessage) GetHash() []byte { + if x != nil { + return x.Hash } return nil } -func (m *WakuMessage) GetThirdPartyId() string { - if m != nil { - return m.ThirdPartyId +func (x *WakuMessage) GetThirdPartyId() string { + if x != nil { + return x.ThirdPartyId } return "" } type WakuMessageArchiveMetadata struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` - To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` - ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"` + To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"` + ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"` } -func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMetadata{} } -func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveMetadata) ProtoMessage() {} +func (x *WakuMessageArchiveMetadata) Reset() { + *x = WakuMessageArchiveMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveMetadata) ProtoMessage() {} + +func (x *WakuMessageArchiveMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveMetadata.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{19} + return file_communities_proto_rawDescGZIP(), []int{20} } -func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveMetadata.Unmarshal(m, b) -} -func (m *WakuMessageArchiveMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveMetadata.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveMetadata.Merge(m, src) -} -func (m *WakuMessageArchiveMetadata) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveMetadata.Size(m) -} -func (m *WakuMessageArchiveMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveMetadata proto.InternalMessageInfo - -func (m *WakuMessageArchiveMetadata) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchiveMetadata) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchiveMetadata) GetFrom() uint64 { - if m != nil { - return m.From +func (x *WakuMessageArchiveMetadata) GetFrom() uint64 { + if x != nil { + return x.From } return 0 } -func (m *WakuMessageArchiveMetadata) GetTo() uint64 { - if m != nil { - return m.To +func (x *WakuMessageArchiveMetadata) GetTo() uint64 { + if x != nil { + return x.To } return 0 } -func (m *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { - if m != nil { - return m.ContentTopic +func (x *WakuMessageArchiveMetadata) GetContentTopic() [][]byte { + if x != nil { + return x.ContentTopic } return nil } type WakuMessageArchive struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"` } -func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} } -func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchive) ProtoMessage() {} +func (x *WakuMessageArchive) Reset() { + *x = WakuMessageArchive{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchive) ProtoMessage() {} + +func (x *WakuMessageArchive) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchive.ProtoReflect.Descriptor instead. func (*WakuMessageArchive) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{20} + return file_communities_proto_rawDescGZIP(), []int{21} } -func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchive.Unmarshal(m, b) -} -func (m *WakuMessageArchive) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchive.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchive) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchive.Merge(m, src) -} -func (m *WakuMessageArchive) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchive.Size(m) -} -func (m *WakuMessageArchive) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchive.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchive proto.InternalMessageInfo - -func (m *WakuMessageArchive) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchive) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { - if m != nil { - return m.Metadata +func (x *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata { + if x != nil { + return x.Metadata } return nil } -func (m *WakuMessageArchive) GetMessages() []*WakuMessage { - if m != nil { - return m.Messages +func (x *WakuMessageArchive) GetMessages() []*WakuMessage { + if x != nil { + return x.Messages } return nil } type WakuMessageArchiveIndexMetadata struct { - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` - Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"` } -func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArchiveIndexMetadata{} } -func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} +func (x *WakuMessageArchiveIndexMetadata) Reset() { + *x = WakuMessageArchiveIndexMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveIndexMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} + +func (x *WakuMessageArchiveIndexMetadata) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveIndexMetadata.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{21} + return file_communities_proto_rawDescGZIP(), []int{22} } -func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Unmarshal(m, b) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveIndexMetadata.Merge(m, src) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Size(m) -} -func (m *WakuMessageArchiveIndexMetadata) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveIndexMetadata.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveIndexMetadata proto.InternalMessageInfo - -func (m *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *WakuMessageArchiveIndexMetadata) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { - if m != nil { - return m.Metadata +func (x *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata { + if x != nil { + return x.Metadata } return nil } -func (m *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { - if m != nil { - return m.Offset +func (x *WakuMessageArchiveIndexMetadata) GetOffset() uint64 { + if x != nil { + return x.Offset } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetSize() uint64 { - if m != nil { - return m.Size +func (x *WakuMessageArchiveIndexMetadata) GetSize() uint64 { + if x != nil { + return x.Size } return 0 } -func (m *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { - if m != nil { - return m.Padding +func (x *WakuMessageArchiveIndexMetadata) GetPadding() uint64 { + if x != nil { + return x.Padding } return 0 } type WakuMessageArchiveIndex struct { - Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex{} } -func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } -func (*WakuMessageArchiveIndex) ProtoMessage() {} +func (x *WakuMessageArchiveIndex) Reset() { + *x = WakuMessageArchiveIndex{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WakuMessageArchiveIndex) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WakuMessageArchiveIndex) ProtoMessage() {} + +func (x *WakuMessageArchiveIndex) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WakuMessageArchiveIndex.ProtoReflect.Descriptor instead. func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{22} + return file_communities_proto_rawDescGZIP(), []int{23} } -func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WakuMessageArchiveIndex.Unmarshal(m, b) -} -func (m *WakuMessageArchiveIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WakuMessageArchiveIndex.Marshal(b, m, deterministic) -} -func (m *WakuMessageArchiveIndex) XXX_Merge(src proto.Message) { - xxx_messageInfo_WakuMessageArchiveIndex.Merge(m, src) -} -func (m *WakuMessageArchiveIndex) XXX_Size() int { - return xxx_messageInfo_WakuMessageArchiveIndex.Size(m) -} -func (m *WakuMessageArchiveIndex) XXX_DiscardUnknown() { - xxx_messageInfo_WakuMessageArchiveIndex.DiscardUnknown(m) -} - -var xxx_messageInfo_WakuMessageArchiveIndex proto.InternalMessageInfo - -func (m *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { - if m != nil { - return m.Archives +func (x *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata { + if x != nil { + return x.Archives } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityMember_Roles", CommunityMember_Roles_name, CommunityMember_Roles_value) - proto.RegisterEnum("protobuf.CommunityPermissions_Access", CommunityPermissions_Access_name, CommunityPermissions_Access_value) - proto.RegisterEnum("protobuf.CommunityTokenPermission_Type", CommunityTokenPermission_Type_name, CommunityTokenPermission_Type_value) - proto.RegisterType((*Grant)(nil), "protobuf.Grant") - proto.RegisterType((*CommunityMember)(nil), "protobuf.CommunityMember") - proto.RegisterType((*CommunityTokenMetadata)(nil), "protobuf.CommunityTokenMetadata") - proto.RegisterMapType((map[uint64]string)(nil), "protobuf.CommunityTokenMetadata.ContractAddressesEntry") - proto.RegisterType((*CommunityPermissions)(nil), "protobuf.CommunityPermissions") - proto.RegisterType((*TokenCriteria)(nil), "protobuf.TokenCriteria") - proto.RegisterMapType((map[uint64]string)(nil), "protobuf.TokenCriteria.ContractAddressesEntry") - proto.RegisterType((*CommunityTokenPermission)(nil), "protobuf.CommunityTokenPermission") - proto.RegisterType((*CommunityDescription)(nil), "protobuf.CommunityDescription") - proto.RegisterMapType((map[string]*CommunityCategory)(nil), "protobuf.CommunityDescription.CategoriesEntry") - proto.RegisterMapType((map[string]*CommunityChat)(nil), "protobuf.CommunityDescription.ChatsEntry") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityDescription.MembersEntry") - proto.RegisterMapType((map[string][]byte)(nil), "protobuf.CommunityDescription.PrivateDataEntry") - proto.RegisterMapType((map[string]*CommunityTokenPermission)(nil), "protobuf.CommunityDescription.TokenPermissionsEntry") - proto.RegisterType((*CommunityAdminSettings)(nil), "protobuf.CommunityAdminSettings") - proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry") - proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory") - proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount") - proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") - proto.RegisterType((*CommunityEditSharedAddresses)(nil), "protobuf.CommunityEditSharedAddresses") - proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin") - proto.RegisterType((*CommunityUserKicked)(nil), "protobuf.CommunityUserKicked") - proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse") - proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave") - proto.RegisterType((*CommunityMessageArchiveMagnetlink)(nil), "protobuf.CommunityMessageArchiveMagnetlink") - proto.RegisterType((*WakuMessage)(nil), "protobuf.WakuMessage") - proto.RegisterType((*WakuMessageArchiveMetadata)(nil), "protobuf.WakuMessageArchiveMetadata") - proto.RegisterType((*WakuMessageArchive)(nil), "protobuf.WakuMessageArchive") - proto.RegisterType((*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndexMetadata") - proto.RegisterType((*WakuMessageArchiveIndex)(nil), "protobuf.WakuMessageArchiveIndex") - proto.RegisterMapType((map[string]*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndex.ArchivesEntry") +type CommunityPublicStorenodesInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Signature of the payload field + Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` + // Marshaled CommunityStorenodes + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func init() { - proto.RegisterFile("communities.proto", fileDescriptor_f937943d74c1cd8b) +func (x *CommunityPublicStorenodesInfo) Reset() { + *x = CommunityPublicStorenodesInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -var fileDescriptor_f937943d74c1cd8b = []byte{ - // 2181 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x51, 0x73, 0x23, 0x47, - 0x11, 0xce, 0x6a, 0x25, 0x5b, 0x6a, 0x49, 0xb6, 0x3c, 0xb9, 0xb3, 0xf7, 0x7c, 0x97, 0x9c, 0x6e, - 0x21, 0x85, 0x73, 0x14, 0xba, 0xc4, 0x40, 0x71, 0x95, 0x90, 0x4b, 0x74, 0xb2, 0x38, 0x94, 0xb3, - 0x56, 0xce, 0x58, 0xce, 0x91, 0x14, 0xb0, 0x35, 0xde, 0x1d, 0xdb, 0x53, 0x96, 0x76, 0xc5, 0xce, - 0xc8, 0x85, 0x78, 0xe0, 0x01, 0xf8, 0x05, 0xf0, 0x4c, 0xf1, 0xc0, 0x3b, 0xfc, 0x04, 0x1e, 0xa8, - 0xe2, 0x31, 0xef, 0xfc, 0x00, 0xde, 0xf9, 0x09, 0xd4, 0xcc, 0xec, 0xae, 0x76, 0x25, 0xf9, 0x7c, - 0x49, 0xa0, 0x8a, 0x27, 0x6d, 0xf7, 0xf4, 0xf4, 0xf4, 0x74, 0x7f, 0xdd, 0xd3, 0x2d, 0xd8, 0xf2, - 0xc2, 0xf1, 0x78, 0x1a, 0x30, 0xc1, 0x28, 0x6f, 0x4d, 0xa2, 0x50, 0x84, 0xa8, 0xac, 0x7e, 0x4e, - 0xa7, 0x67, 0xbb, 0xaf, 0x7b, 0x17, 0x44, 0xb8, 0xcc, 0xa7, 0x81, 0x60, 0x62, 0xa6, 0x97, 0x77, - 0xab, 0x34, 0x98, 0x8e, 0x79, 0x42, 0xf0, 0x0b, 0x12, 0xf9, 0x9a, 0xb0, 0xaf, 0xa0, 0xf4, 0x2c, - 0x22, 0x81, 0x40, 0x0f, 0xa0, 0x96, 0xa8, 0x9d, 0xb9, 0xcc, 0xb7, 0x8c, 0xa6, 0xb1, 0x57, 0xc3, - 0xd5, 0x94, 0xd7, 0xf3, 0xd1, 0x5d, 0xa8, 0x8c, 0xe9, 0xf8, 0x94, 0x46, 0x72, 0xbd, 0xa0, 0xd6, - 0xcb, 0x9a, 0xd1, 0xf3, 0xd1, 0x0e, 0xac, 0xc7, 0x27, 0x5b, 0x66, 0xd3, 0xd8, 0xab, 0xe0, 0x35, - 0x49, 0xf6, 0x7c, 0x74, 0x0b, 0x4a, 0xde, 0x28, 0xf4, 0x2e, 0xad, 0x62, 0xd3, 0xd8, 0x2b, 0x62, - 0x4d, 0xd8, 0xff, 0x28, 0xc0, 0x66, 0x27, 0xd1, 0xdd, 0x57, 0x4a, 0xd0, 0xf7, 0xa1, 0x14, 0x85, - 0x23, 0xca, 0x2d, 0xa3, 0x69, 0xee, 0x6d, 0xec, 0xdf, 0x6f, 0x25, 0x97, 0x6a, 0x2d, 0x48, 0xb6, - 0xb0, 0x14, 0xc3, 0x5a, 0x1a, 0x7d, 0x0c, 0x5b, 0x11, 0xbd, 0xa2, 0x64, 0x44, 0x7d, 0x97, 0x78, - 0x5e, 0x38, 0x0d, 0x04, 0xb7, 0x0a, 0x4d, 0x73, 0xaf, 0xba, 0x7f, 0x67, 0xae, 0x02, 0xc7, 0x22, - 0x6d, 0x2d, 0xf1, 0xb4, 0x60, 0x19, 0xb8, 0x11, 0xe5, 0x99, 0x1c, 0x3d, 0x84, 0xad, 0x11, 0xe1, - 0xc2, 0x9d, 0x4e, 0x7c, 0x22, 0xa8, 0xab, 0x0d, 0x37, 0x95, 0xe1, 0x9b, 0x72, 0xe1, 0x44, 0xf1, - 0x3b, 0xea, 0x0a, 0xbf, 0x35, 0xa0, 0xa4, 0x0c, 0x41, 0x75, 0xa8, 0xe0, 0xc1, 0x61, 0xd7, 0x75, - 0x06, 0x4e, 0xb7, 0xf1, 0x1a, 0xda, 0x00, 0x50, 0xe4, 0xe0, 0x85, 0xd3, 0xc5, 0x0d, 0x23, 0xa5, - 0xdb, 0x07, 0xfd, 0x9e, 0xd3, 0x28, 0xa2, 0xdb, 0xb0, 0xa5, 0xe8, 0xe1, 0xe0, 0x79, 0xd7, 0x71, - 0xfb, 0xed, 0xe3, 0x61, 0x17, 0x37, 0x4a, 0x76, 0xb1, 0x5c, 0x68, 0x14, 0xec, 0x62, 0xd9, 0x6c, - 0x98, 0x0f, 0xb5, 0x40, 0xbf, 0xed, 0xb4, 0x9f, 0x75, 0xdd, 0x93, 0xe3, 0x2e, 0x3e, 0x7e, 0x78, - 0x5b, 0xb3, 0x06, 0x07, 0x5d, 0xdc, 0x1e, 0x76, 0xdd, 0xce, 0xc0, 0x19, 0x76, 0x9d, 0xa1, 0xfd, - 0x1b, 0x13, 0xb6, 0x53, 0xf7, 0x0c, 0xc3, 0x4b, 0x1a, 0xf4, 0xa9, 0x20, 0x3e, 0x11, 0x04, 0x9d, - 0x01, 0xf2, 0xc2, 0x40, 0x44, 0xc4, 0x13, 0x2e, 0xf1, 0xfd, 0x88, 0x72, 0x1e, 0x3b, 0xb7, 0xba, - 0xff, 0x83, 0x15, 0xce, 0xcd, 0xed, 0x6e, 0x75, 0xe2, 0xad, 0xed, 0x64, 0x67, 0x37, 0x10, 0xd1, - 0x0c, 0x6f, 0x79, 0x8b, 0x7c, 0xd4, 0x84, 0xaa, 0x4f, 0xb9, 0x17, 0xb1, 0x89, 0x60, 0x61, 0xa0, - 0x90, 0x51, 0xc1, 0x59, 0x96, 0xc4, 0x00, 0x1b, 0x93, 0x73, 0x1a, 0x43, 0x43, 0x13, 0xe8, 0x3d, - 0xa8, 0x08, 0x79, 0xe4, 0x70, 0x36, 0xa1, 0x0a, 0x1d, 0x1b, 0xfb, 0xf7, 0xae, 0x33, 0x4b, 0xca, - 0xe0, 0xb9, 0x38, 0xda, 0x86, 0x35, 0x3e, 0x1b, 0x9f, 0x86, 0x23, 0xab, 0xa4, 0xd1, 0xa6, 0x29, - 0x84, 0xa0, 0x18, 0x90, 0x31, 0xb5, 0xd6, 0x14, 0x57, 0x7d, 0xa3, 0x5d, 0x28, 0xfb, 0xd4, 0x63, - 0x63, 0x32, 0xe2, 0xd6, 0x7a, 0xd3, 0xd8, 0xab, 0xe3, 0x94, 0xde, 0x3d, 0x90, 0xde, 0x5b, 0x75, - 0x51, 0xd4, 0x00, 0xf3, 0x92, 0xce, 0x54, 0x1e, 0x14, 0xb1, 0xfc, 0x94, 0xb7, 0xb8, 0x22, 0xa3, - 0x29, 0x8d, 0x6f, 0xa8, 0x89, 0xf7, 0x0a, 0x8f, 0x0d, 0xfb, 0x5f, 0x06, 0xdc, 0x4a, 0xed, 0x3d, - 0xa2, 0xd1, 0x98, 0x71, 0xce, 0xc2, 0x80, 0xa3, 0x3b, 0x50, 0xa6, 0x01, 0x77, 0xc3, 0x60, 0xa4, - 0x35, 0x95, 0xf1, 0x3a, 0x0d, 0xf8, 0x20, 0x18, 0xcd, 0x90, 0x05, 0xeb, 0x93, 0x88, 0x5d, 0x11, - 0xa1, 0xf5, 0x95, 0x71, 0x42, 0xa2, 0x0f, 0x60, 0x8d, 0x78, 0x1e, 0xe5, 0x5c, 0xb9, 0x6b, 0x63, - 0xff, 0xad, 0x15, 0x4e, 0xc9, 0x1c, 0xd2, 0x6a, 0x2b, 0x61, 0x1c, 0x6f, 0xb2, 0x3f, 0x83, 0x35, - 0xcd, 0x41, 0x08, 0x36, 0x4e, 0x9c, 0xe7, 0xce, 0xe0, 0x85, 0xe3, 0xb6, 0x3b, 0x9d, 0xee, 0xf1, - 0x71, 0xe3, 0x35, 0xb4, 0x09, 0xd5, 0xf6, 0xc9, 0x70, 0xa0, 0x18, 0x47, 0xc3, 0x86, 0x81, 0x76, - 0x60, 0xb3, 0xe7, 0x7c, 0xda, 0x1b, 0xb6, 0x87, 0xbd, 0x81, 0xe3, 0x0e, 0x9c, 0xc3, 0xcf, 0x1a, - 0x85, 0xdd, 0x42, 0xd9, 0x40, 0x5b, 0x50, 0xef, 0xb7, 0x9d, 0x93, 0xf6, 0x61, 0x22, 0x6b, 0xda, - 0xbf, 0x33, 0xa1, 0xae, 0xc2, 0xd1, 0x89, 0x98, 0xa0, 0x11, 0x23, 0xe8, 0x67, 0x2f, 0xc1, 0x58, - 0x6b, 0x6e, 0x77, 0x6e, 0xd3, 0x97, 0x80, 0xd6, 0x3b, 0x50, 0x14, 0x12, 0x1d, 0x85, 0x57, 0x40, - 0x87, 0x92, 0xcc, 0x00, 0xc3, 0x5c, 0x09, 0x8c, 0x62, 0x06, 0x18, 0xdb, 0xb0, 0x46, 0xc6, 0x32, - 0xf1, 0x13, 0x10, 0x69, 0x4a, 0x16, 0x3a, 0x85, 0x34, 0x97, 0xf9, 0xdc, 0x5a, 0x6b, 0x9a, 0x7b, - 0x45, 0x5c, 0x56, 0x8c, 0x9e, 0xcf, 0xd1, 0x7d, 0xa8, 0xca, 0x90, 0x4e, 0x88, 0x10, 0x34, 0x0a, - 0x14, 0xa0, 0x2a, 0x18, 0x68, 0xc0, 0x8f, 0x34, 0x27, 0x07, 0xb7, 0xb2, 0x42, 0xcf, 0x7f, 0x1b, - 0x6e, 0x7f, 0x30, 0xc1, 0xca, 0x3b, 0x60, 0x0e, 0x07, 0xb4, 0x01, 0x85, 0xb8, 0x7c, 0x57, 0x70, - 0x81, 0xf9, 0xe8, 0xfd, 0x9c, 0x0b, 0xbf, 0x75, 0x9d, 0x0b, 0xe7, 0x1a, 0x5a, 0x19, 0x6f, 0x3e, - 0x81, 0x0d, 0xed, 0x09, 0x2f, 0x8e, 0x9d, 0x65, 0xaa, 0xd0, 0xee, 0x5c, 0x13, 0x5a, 0x5c, 0x17, - 0x39, 0x78, 0xdc, 0x81, 0x72, 0xfc, 0x2a, 0x70, 0xab, 0xd8, 0x34, 0xf7, 0x2a, 0x78, 0x5d, 0x3f, - 0x0b, 0x1c, 0xbd, 0x01, 0xc0, 0xb8, 0x9b, 0xa4, 0x40, 0x49, 0xa5, 0x40, 0x85, 0xf1, 0x23, 0xcd, - 0xb0, 0xff, 0x6a, 0x40, 0x51, 0x65, 0xfa, 0x3d, 0xb0, 0x12, 0x10, 0xeb, 0x82, 0x79, 0xd4, 0xc5, - 0xfd, 0xde, 0xf1, 0x71, 0x6f, 0xe0, 0x34, 0x5e, 0x43, 0x0d, 0xa8, 0x3d, 0xed, 0x76, 0x06, 0xfd, - 0xa4, 0xba, 0x2a, 0xd8, 0xc6, 0x9c, 0x7e, 0xb7, 0xff, 0xb4, 0x8b, 0x1b, 0x05, 0x74, 0x0b, 0x1a, - 0x9d, 0xb6, 0xe3, 0x7e, 0xda, 0xeb, 0xbe, 0x70, 0x3b, 0x3f, 0x6e, 0x3b, 0x4e, 0xf7, 0xb0, 0x61, - 0xa2, 0x37, 0xe0, 0x4e, 0xca, 0x6d, 0x3b, 0x07, 0xee, 0xd1, 0xe0, 0x78, 0x98, 0x2e, 0x17, 0xd1, - 0x0e, 0xbc, 0x1e, 0xeb, 0xc9, 0xd7, 0x69, 0xb4, 0x0d, 0x28, 0xb7, 0xa0, 0xcb, 0xfc, 0x9a, 0xfd, - 0xc7, 0x6a, 0xa6, 0x08, 0x1c, 0xe4, 0xab, 0x9f, 0x7e, 0x48, 0x8c, 0xcc, 0x0b, 0x88, 0xba, 0xb0, - 0xae, 0x1f, 0xcf, 0xe4, 0xb1, 0xfa, 0xf6, 0x8a, 0xd0, 0x64, 0xd4, 0xb4, 0xf4, 0xdb, 0x17, 0xe7, - 0x4a, 0xb2, 0x17, 0x7d, 0x04, 0xd5, 0xc9, 0xbc, 0x16, 0x28, 0xd0, 0x57, 0xf7, 0xdf, 0x7c, 0x79, - 0xc5, 0xc0, 0xd9, 0x2d, 0x68, 0x1f, 0xca, 0x49, 0xbb, 0xa0, 0xc2, 0x50, 0xdd, 0xdf, 0xce, 0x6c, - 0x57, 0xd1, 0xd2, 0xab, 0x38, 0x95, 0x43, 0x1f, 0x42, 0x49, 0xc6, 0x51, 0x67, 0x47, 0x75, 0xff, - 0xed, 0x1b, 0x4c, 0x97, 0x5a, 0x62, 0xc3, 0xf5, 0x3e, 0x09, 0x8c, 0x53, 0x12, 0xb8, 0x23, 0xc6, - 0x85, 0xb5, 0xae, 0x81, 0x71, 0x4a, 0x82, 0x43, 0xc6, 0x05, 0x72, 0x00, 0x3c, 0x22, 0xe8, 0x79, - 0x18, 0x31, 0x2a, 0x33, 0x68, 0xa1, 0x94, 0xac, 0x3e, 0x20, 0xdd, 0xa0, 0x4f, 0xc9, 0x68, 0x40, - 0x8f, 0xc1, 0x22, 0x91, 0x77, 0xc1, 0xae, 0xa8, 0x3b, 0x26, 0xe7, 0x01, 0x15, 0x23, 0x16, 0x5c, - 0xc6, 0x4f, 0x7b, 0x45, 0x45, 0x64, 0x3b, 0x5e, 0xef, 0xa7, 0xcb, 0xea, 0x85, 0x47, 0xcf, 0x60, - 0x83, 0xf8, 0x63, 0x16, 0xb8, 0x9c, 0x0a, 0xc1, 0x82, 0x73, 0x6e, 0x81, 0xf2, 0x4f, 0x73, 0x85, - 0x35, 0x6d, 0x29, 0x78, 0x1c, 0xcb, 0xe1, 0x3a, 0xc9, 0x92, 0xe8, 0x1b, 0x50, 0x67, 0x81, 0x88, - 0x42, 0x77, 0x4c, 0x39, 0x97, 0xef, 0x60, 0x55, 0xa5, 0x67, 0x4d, 0x31, 0xfb, 0x9a, 0x27, 0x85, - 0xc2, 0x69, 0x56, 0xa8, 0xa6, 0x85, 0x14, 0x33, 0x11, 0x6a, 0x42, 0x85, 0x06, 0x5e, 0x34, 0x9b, - 0x08, 0xea, 0x5b, 0x75, 0x99, 0x34, 0xaa, 0x93, 0x99, 0x33, 0x65, 0xa1, 0x13, 0xe4, 0x9c, 0x5b, - 0x1b, 0xca, 0xab, 0xea, 0x1b, 0x11, 0xd8, 0xd2, 0x69, 0x9c, 0x85, 0xca, 0xa6, 0xf2, 0xec, 0xf7, - 0x6e, 0xf0, 0xec, 0x42, 0x71, 0x88, 0xfd, 0xdb, 0x10, 0x0b, 0x6c, 0xf4, 0x53, 0xb8, 0x33, 0xef, - 0x1f, 0xd5, 0x2a, 0x77, 0xc7, 0x71, 0x2f, 0x61, 0x35, 0xd4, 0x51, 0xcd, 0x9b, 0x7a, 0x0e, 0xbc, - 0xe3, 0xe5, 0xf8, 0x3c, 0x6d, 0x65, 0xde, 0x81, 0x5b, 0xc4, 0x13, 0x2a, 0x84, 0x1a, 0xf7, 0xae, - 0x6a, 0xd8, 0xac, 0x2d, 0x15, 0x3f, 0xa4, 0xd7, 0xe2, 0x04, 0xe9, 0xa8, 0x1a, 0xbe, 0x01, 0x85, - 0xde, 0x81, 0x85, 0x74, 0x19, 0xec, 0x1d, 0xa0, 0x4f, 0xa0, 0x1a, 0xd7, 0x9a, 0x03, 0x69, 0x91, - 0xaf, 0x2c, 0x7a, 0x74, 0xc3, 0xe5, 0x8f, 0xe6, 0x3b, 0xf4, 0xbd, 0xb3, 0x3a, 0x76, 0x4f, 0xa0, - 0x96, 0xcd, 0xc9, 0x6c, 0x09, 0xaf, 0xe8, 0x12, 0xfe, 0x28, 0x5b, 0xc2, 0x73, 0xed, 0xe8, 0x42, - 0x47, 0x9b, 0xa9, 0xee, 0xbb, 0x9f, 0x00, 0xcc, 0xf3, 0x65, 0x85, 0xd2, 0xef, 0xe4, 0x95, 0xee, - 0xac, 0x50, 0x2a, 0xf7, 0x67, 0x55, 0x7e, 0x0e, 0x9b, 0x0b, 0x19, 0xb2, 0x42, 0xef, 0xbb, 0x79, - 0xbd, 0x77, 0x57, 0xe9, 0xd5, 0x4a, 0x66, 0x59, 0xdd, 0xe7, 0x70, 0x7b, 0x25, 0x46, 0x56, 0x9c, - 0xf0, 0x38, 0x7f, 0x82, 0x7d, 0xf3, 0x5b, 0x94, 0x3d, 0xe8, 0x09, 0x34, 0x16, 0xe3, 0xb1, 0xe2, - 0x8c, 0xdc, 0xab, 0x59, 0xcb, 0xbe, 0x9a, 0x3f, 0xcf, 0x34, 0xca, 0xb9, 0x6c, 0x45, 0x07, 0x70, - 0x7f, 0xc2, 0x82, 0x24, 0xef, 0x5c, 0x32, 0x1a, 0xa5, 0x30, 0xa3, 0x01, 0x39, 0x1d, 0x51, 0x3f, - 0x6e, 0xde, 0xee, 0x4e, 0x58, 0x10, 0x67, 0x62, 0x7b, 0x34, 0x4a, 0x83, 0xaf, 0x44, 0xec, 0x7f, - 0x16, 0xa0, 0x9e, 0x8b, 0x00, 0x7a, 0x32, 0x2f, 0xf1, 0xba, 0x23, 0xfa, 0xe6, 0x35, 0xb1, 0x7a, - 0xb5, 0xda, 0x5e, 0xf8, 0x7a, 0xb5, 0xdd, 0x7c, 0xc5, 0xda, 0x7e, 0x1f, 0xaa, 0x71, 0xf5, 0x54, - 0x83, 0xa0, 0x6e, 0x98, 0x92, 0x82, 0x2a, 0xe7, 0xc0, 0x5d, 0x28, 0x4f, 0x42, 0xce, 0x54, 0xb3, - 0x2f, 0x1f, 0x8c, 0x12, 0x4e, 0xe9, 0xff, 0x51, 0x4e, 0xd8, 0x3e, 0x6c, 0x2d, 0x81, 0x70, 0xd1, - 0x50, 0x63, 0xc9, 0xd0, 0xa4, 0xe7, 0x2b, 0xe4, 0x87, 0x81, 0xd4, 0x78, 0x33, 0x6f, 0xbc, 0xfd, - 0x7b, 0x03, 0x36, 0x17, 0xe6, 0x44, 0xd9, 0xa6, 0xc7, 0x7d, 0x6d, 0x7c, 0x40, 0x42, 0xa2, 0x7b, - 0x50, 0xe1, 0xec, 0x3c, 0x20, 0x62, 0x1a, 0x25, 0x68, 0x9b, 0x33, 0x64, 0x0f, 0xe9, 0x5d, 0x10, - 0xa6, 0x7b, 0x48, 0x53, 0xf7, 0x90, 0x8a, 0x21, 0x7b, 0x9f, 0x87, 0xd0, 0x60, 0xbc, 0xcd, 0x22, - 0x3f, 0x0a, 0x27, 0x71, 0x1f, 0xa8, 0xfc, 0x5c, 0xc6, 0x4b, 0x7c, 0xfb, 0xdf, 0x46, 0x06, 0xb7, - 0x98, 0xfe, 0x62, 0x4a, 0xb9, 0x18, 0x86, 0x1f, 0x87, 0xec, 0xba, 0xc6, 0x22, 0x9e, 0x39, 0x32, - 0x37, 0x97, 0x33, 0x87, 0x23, 0x2f, 0x7f, 0xed, 0x90, 0xbe, 0x38, 0xfd, 0x17, 0x97, 0xa7, 0xff, - 0x07, 0x50, 0xf3, 0x19, 0x9f, 0x8c, 0xc8, 0x4c, 0xab, 0x2e, 0xc5, 0x63, 0x9e, 0xe6, 0x29, 0xf5, - 0x3f, 0x5a, 0x35, 0x89, 0xaf, 0xdd, 0x30, 0x89, 0x2f, 0x4f, 0xe1, 0xf6, 0x9f, 0x0c, 0xb8, 0x97, - 0x5e, 0xb9, 0xeb, 0x33, 0x71, 0x7c, 0x41, 0x22, 0xea, 0xcf, 0xc7, 0x82, 0xd5, 0x17, 0x5f, 0xbc, - 0x44, 0x61, 0xf9, 0x12, 0x2b, 0x2d, 0x34, 0xbf, 0xbc, 0x85, 0x7f, 0xc9, 0x5a, 0xd8, 0x21, 0x81, - 0x47, 0x47, 0xff, 0xd7, 0xa1, 0xb1, 0x1d, 0x78, 0x3d, 0xb5, 0xf7, 0x84, 0xd3, 0xe8, 0x39, 0xf3, - 0x2e, 0xa9, 0xff, 0x95, 0x1d, 0x69, 0x7f, 0x51, 0x80, 0x37, 0x57, 0xa3, 0x12, 0x53, 0x3e, 0x09, - 0x03, 0x4e, 0xaf, 0xd1, 0xfd, 0x43, 0xa8, 0xa4, 0x7a, 0x5e, 0x52, 0xd1, 0x32, 0xaf, 0x30, 0x9e, - 0x6f, 0x90, 0xd9, 0x2b, 0xa7, 0x5c, 0xd5, 0xfd, 0x98, 0x2a, 0x61, 0x52, 0x5a, 0x9e, 0x77, 0x1e, - 0x91, 0x40, 0xc4, 0x1e, 0xd2, 0xc4, 0xd2, 0x5d, 0x4a, 0xcb, 0xee, 0x7b, 0x03, 0x40, 0x37, 0x86, - 0xee, 0x34, 0x62, 0xf1, 0x3f, 0x07, 0x15, 0xcd, 0x39, 0x89, 0x18, 0xfa, 0x00, 0xee, 0x4a, 0xfb, - 0xa8, 0x27, 0xa8, 0xef, 0x8a, 0x70, 0xc2, 0xbc, 0x64, 0x6a, 0x71, 0x65, 0x69, 0x5b, 0x57, 0x0a, - 0xad, 0x54, 0x64, 0x28, 0x25, 0xe2, 0x87, 0xea, 0x39, 0x9d, 0xa1, 0xb7, 0xa0, 0xa4, 0xfe, 0x70, - 0x53, 0xb3, 0x60, 0x75, 0x7f, 0x73, 0x7e, 0x59, 0x89, 0x6a, 0x1f, 0xeb, 0x55, 0x1b, 0xc3, 0xce, - 0xb2, 0x3f, 0x0f, 0x29, 0xb9, 0xa2, 0x5f, 0x3d, 0x48, 0x3f, 0x81, 0x07, 0x99, 0x9a, 0xaa, 0x9f, - 0xad, 0xc5, 0x4e, 0xf7, 0x1a, 0xed, 0x79, 0x9f, 0x14, 0x16, 0x7c, 0x62, 0xff, 0xcd, 0x80, 0xea, - 0x0b, 0x72, 0x39, 0x4d, 0xda, 0xd2, 0x06, 0x98, 0x9c, 0x9d, 0xc7, 0x7f, 0x1a, 0xca, 0x4f, 0x59, - 0x1d, 0x05, 0x1b, 0x53, 0x2e, 0xc8, 0x78, 0xa2, 0xf6, 0x17, 0xf1, 0x9c, 0x21, 0x0f, 0x55, 0x9e, - 0x54, 0x41, 0xac, 0x61, 0x4d, 0xa8, 0xbf, 0x44, 0xc8, 0x6c, 0x14, 0x92, 0x04, 0xe5, 0x09, 0xa9, - 0x57, 0x7c, 0x9f, 0x05, 0xe7, 0x71, 0x00, 0x13, 0x52, 0xd6, 0xf8, 0x0b, 0xc2, 0x2f, 0x54, 0xd8, - 0x6a, 0x58, 0x7d, 0x23, 0x1b, 0x6a, 0xe2, 0x82, 0x45, 0xfe, 0x11, 0x89, 0xa4, 0x1f, 0xe2, 0x19, - 0x3d, 0xc7, 0xb3, 0x7f, 0x0d, 0xbb, 0x99, 0x0b, 0x24, 0x6e, 0x49, 0xfa, 0x4d, 0x0b, 0xd6, 0xaf, - 0x68, 0x24, 0xdf, 0x50, 0x75, 0xa7, 0x3a, 0x4e, 0x48, 0x79, 0xde, 0x59, 0x14, 0x8e, 0xe3, 0x2b, - 0xa9, 0x6f, 0xd9, 0x6b, 0x8a, 0x30, 0xfe, 0x9b, 0xb0, 0x20, 0x42, 0x79, 0xbe, 0x17, 0x06, 0x82, - 0x06, 0x42, 0x81, 0x41, 0x4d, 0xbe, 0x35, 0x9c, 0xe3, 0xd9, 0x7f, 0x36, 0x00, 0x2d, 0x1b, 0xf0, - 0x92, 0x83, 0x3f, 0x82, 0x72, 0xda, 0x4f, 0xeb, 0xbc, 0xc9, 0x74, 0x13, 0xd7, 0x5f, 0x05, 0xa7, - 0xbb, 0xd0, 0xbb, 0x52, 0x83, 0x92, 0x49, 0x6a, 0xde, 0xed, 0x95, 0x1a, 0x70, 0x2a, 0x66, 0xff, - 0xdd, 0x80, 0xfb, 0xcb, 0xba, 0x7b, 0x81, 0x4f, 0x7f, 0xf9, 0x0a, 0xbe, 0xfa, 0xfa, 0x26, 0x6f, - 0xc3, 0x5a, 0x78, 0x76, 0xc6, 0xa9, 0x88, 0xbd, 0x1b, 0x53, 0x32, 0x0a, 0x9c, 0xfd, 0x8a, 0xc6, - 0xff, 0x29, 0xab, 0xef, 0x45, 0x8c, 0x14, 0x53, 0x8c, 0xd8, 0x5f, 0x18, 0xb0, 0x73, 0xcd, 0x2d, - 0xd0, 0x73, 0x28, 0xc7, 0xd3, 0x5f, 0xd2, 0xa4, 0x3d, 0x7a, 0x99, 0x8d, 0x6a, 0x53, 0x2b, 0x26, - 0xe2, 0x7e, 0x2d, 0x55, 0xb0, 0x7b, 0x06, 0xf5, 0xdc, 0xd2, 0x8a, 0xf6, 0xe7, 0xc3, 0x7c, 0xfb, - 0xf3, 0xf6, 0x8d, 0x87, 0xa5, 0x5e, 0x99, 0xb7, 0x43, 0x4f, 0xeb, 0x9f, 0x57, 0x5b, 0x8f, 0xde, - 0x4f, 0x76, 0x9e, 0xae, 0xa9, 0xaf, 0xef, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x79, 0x47, 0x02, - 0xb9, 0x19, 0x18, 0x00, 0x00, +func (x *CommunityPublicStorenodesInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPublicStorenodesInfo) ProtoMessage() {} + +func (x *CommunityPublicStorenodesInfo) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPublicStorenodesInfo.ProtoReflect.Descriptor instead. +func (*CommunityPublicStorenodesInfo) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{24} +} + +func (x *CommunityPublicStorenodesInfo) GetSignature() []byte { + if x != nil { + return x.Signature + } + return nil +} + +func (x *CommunityPublicStorenodesInfo) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +type CommunityStorenodes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + Storenodes []*Storenode `protobuf:"bytes,3,rep,name=storenodes,proto3" json:"storenodes,omitempty"` + ChainId uint64 `protobuf:"varint,4,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` +} + +func (x *CommunityStorenodes) Reset() { + *x = CommunityStorenodes{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityStorenodes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityStorenodes) ProtoMessage() {} + +func (x *CommunityStorenodes) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityStorenodes.ProtoReflect.Descriptor instead. +func (*CommunityStorenodes) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{25} +} + +func (x *CommunityStorenodes) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +func (x *CommunityStorenodes) GetCommunityId() []byte { + if x != nil { + return x.CommunityId + } + return nil +} + +func (x *CommunityStorenodes) GetStorenodes() []*Storenode { + if x != nil { + return x.Storenodes + } + return nil +} + +func (x *CommunityStorenodes) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +type Storenode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + StorenodeId string `protobuf:"bytes,2,opt,name=storenode_id,json=storenodeId,proto3" json:"storenode_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"` + Fleet string `protobuf:"bytes,5,opt,name=fleet,proto3" json:"fleet,omitempty"` + Version uint32 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` + Removed bool `protobuf:"varint,7,opt,name=removed,proto3" json:"removed,omitempty"` + DeletedAt int64 `protobuf:"varint,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` +} + +func (x *Storenode) Reset() { + *x = Storenode{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Storenode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Storenode) ProtoMessage() {} + +func (x *Storenode) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Storenode.ProtoReflect.Descriptor instead. +func (*Storenode) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{26} +} + +func (x *Storenode) GetCommunityId() []byte { + if x != nil { + return x.CommunityId + } + return nil +} + +func (x *Storenode) GetStorenodeId() string { + if x != nil { + return x.StorenodeId + } + return "" +} + +func (x *Storenode) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Storenode) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *Storenode) GetFleet() string { + if x != nil { + return x.Fleet + } + return "" +} + +func (x *Storenode) GetVersion() uint32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *Storenode) GetRemoved() bool { + if x != nil { + return x.Removed + } + return false +} + +func (x *Storenode) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +type CommunityReevaluatePermissionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` +} + +func (x *CommunityReevaluatePermissionsRequest) Reset() { + *x = CommunityReevaluatePermissionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityReevaluatePermissionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityReevaluatePermissionsRequest) ProtoMessage() {} + +func (x *CommunityReevaluatePermissionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityReevaluatePermissionsRequest.ProtoReflect.Descriptor instead. +func (*CommunityReevaluatePermissionsRequest) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{27} +} + +func (x *CommunityReevaluatePermissionsRequest) GetCommunityId() []byte { + if x != nil { + return x.CommunityId + } + return nil +} + +type DeleteCommunityMemberMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` +} + +func (x *DeleteCommunityMemberMessage) Reset() { + *x = DeleteCommunityMemberMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommunityMemberMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommunityMemberMessage) ProtoMessage() {} + +func (x *DeleteCommunityMemberMessage) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCommunityMemberMessage.ProtoReflect.Descriptor instead. +func (*DeleteCommunityMemberMessage) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{28} +} + +func (x *DeleteCommunityMemberMessage) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeleteCommunityMemberMessage) GetChatId() string { + if x != nil { + return x.ChatId + } + return "" +} + +type DeleteCommunityMemberMessages struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + MemberId string `protobuf:"bytes,3,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"` + Messages []*DeleteCommunityMemberMessage `protobuf:"bytes,4,rep,name=messages,proto3" json:"messages,omitempty"` +} + +func (x *DeleteCommunityMemberMessages) Reset() { + *x = DeleteCommunityMemberMessages{} + if protoimpl.UnsafeEnabled { + mi := &file_communities_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteCommunityMemberMessages) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCommunityMemberMessages) ProtoMessage() {} + +func (x *DeleteCommunityMemberMessages) ProtoReflect() protoreflect.Message { + mi := &file_communities_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCommunityMemberMessages.ProtoReflect.Descriptor instead. +func (*DeleteCommunityMemberMessages) Descriptor() ([]byte, []int) { + return file_communities_proto_rawDescGZIP(), []int{29} +} + +func (x *DeleteCommunityMemberMessages) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +func (x *DeleteCommunityMemberMessages) GetCommunityId() []byte { + if x != nil { + return x.CommunityId + } + return nil +} + +func (x *DeleteCommunityMemberMessages) GetMemberId() string { + if x != nil { + return x.MemberId + } + return "" +} + +func (x *DeleteCommunityMemberMessages) GetMessages() []*DeleteCommunityMemberMessage { + if x != nil { + return x.Messages + } + return nil +} + +var File_communities_proto protoreflect.FileDescriptor + +var file_communities_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, + 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x76, 0x0a, 0x05, + 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xd1, 0x03, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x4a, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x72, 0x65, 0x76, 0x65, 0x61, + 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x6f, 0x6c, + 0x65, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, + 0x05, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x2a, 0x11, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, + 0x2a, 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x22, 0x3f, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x45, 0x52, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x56, 0x49, 0x45, 0x57, 0x45, 0x52, 0x10, 0x01, 0x22, 0x82, 0x03, 0x0a, 0x16, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x66, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x1a, 0x44, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x01, + 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, + 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x59, 0x0a, 0x06, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x55, 0x54, 0x4f, + 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x49, 0x4e, 0x56, + 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x41, 0x43, 0x43, + 0x45, 0x50, 0x54, 0x10, 0x03, 0x22, 0xaa, 0x03, 0x0a, 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, + 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x5d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x65, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x73, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x57, 0x65, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x57, 0x65, 0x69, 0x1a, 0x44, 0x0a, 0x16, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x93, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0e, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x52, 0x0d, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x19, 0x0a, 0x08, + 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, + 0x11, 0x0a, 0x0d, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x41, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x41, 0x4e, 0x5f, + 0x56, 0x49, 0x45, 0x57, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x45, 0x43, 0x4f, 0x4d, + 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x05, + 0x12, 0x16, 0x0a, 0x12, 0x42, 0x45, 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, + 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x06, 0x22, 0xd9, 0x0c, 0x0a, 0x14, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, + 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x32, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, + 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, + 0x63, 0x68, 0x61, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x08, 0x62, 0x61, 0x6e, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6e, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, + 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, + 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x47, + 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5c, 0x0a, 0x19, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x58, 0x0a, 0x0e, 0x62, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, + 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5a, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, + 0x15, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x42, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x42, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x70, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x70, 0x69, 0x6e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xd4, 0x03, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x43, 0x68, 0x61, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, + 0x1a, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x17, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6e, 0x50, 0x6f, 0x73, + 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x68, 0x69, + 0x64, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x17, 0x68, 0x69, 0x64, 0x65, 0x49, 0x66, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x4e, 0x6f, 0x74, 0x4d, 0x65, 0x74, 0x1a, 0x55, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x64, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, + 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x04, 0x52, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x2a, + 0x0a, 0x10, 0x69, 0x73, 0x41, 0x69, 0x72, 0x64, 0x72, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x41, 0x69, 0x72, 0x64, + 0x72, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x16, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, + 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, + 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, + 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, 0x65, 0x76, + 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x9f, 0x01, + 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x64, 0x69, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, + 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, + 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, + 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, + 0xae, 0x01, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x4e, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x55, 0x73, 0x65, + 0x72, 0x4b, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, + 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, + 0x22, 0xce, 0x02, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x1b, 0x70, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x22, 0x52, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x21, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, + 0x4d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x65, 0x74, 0x55, 0x72, 0x69, 0x22, + 0xbf, 0x01, 0x0a, 0x0b, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, + 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, + 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x22, 0x7e, 0x0a, 0x1a, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, + 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x22, 0x0a, + 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x1f, 0x57, 0x61, 0x6b, 0x75, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xce, 0x01, + 0x0a, 0x17, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x08, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x73, 0x1a, 0x66, 0x0a, 0x0d, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x57, 0x61, 0x6b, 0x75, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, + 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x6e, 0x6f, 0x64, + 0x65, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xe8, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, + 0x65, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x65, 0x65, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0x4a, 0x0a, 0x25, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, + 0x47, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x42, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_communities_proto_rawDescOnce sync.Once + file_communities_proto_rawDescData = file_communities_proto_rawDesc +) + +func file_communities_proto_rawDescGZIP() []byte { + file_communities_proto_rawDescOnce.Do(func() { + file_communities_proto_rawDescData = protoimpl.X.CompressGZIP(file_communities_proto_rawDescData) + }) + return file_communities_proto_rawDescData +} + +var file_communities_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_communities_proto_msgTypes = make([]protoimpl.MessageInfo, 40) +var file_communities_proto_goTypes = []interface{}{ + (CommunityMember_Roles)(0), // 0: protobuf.CommunityMember.Roles + (CommunityMember_ChannelRole)(0), // 1: protobuf.CommunityMember.ChannelRole + (CommunityPermissions_Access)(0), // 2: protobuf.CommunityPermissions.Access + (CommunityTokenPermission_Type)(0), // 3: protobuf.CommunityTokenPermission.Type + (*Grant)(nil), // 4: protobuf.Grant + (*CommunityMember)(nil), // 5: protobuf.CommunityMember + (*CommunityTokenMetadata)(nil), // 6: protobuf.CommunityTokenMetadata + (*CommunityPermissions)(nil), // 7: protobuf.CommunityPermissions + (*TokenCriteria)(nil), // 8: protobuf.TokenCriteria + (*CommunityTokenPermission)(nil), // 9: protobuf.CommunityTokenPermission + (*CommunityDescription)(nil), // 10: protobuf.CommunityDescription + (*CommunityBanInfo)(nil), // 11: protobuf.CommunityBanInfo + (*CommunityAdminSettings)(nil), // 12: protobuf.CommunityAdminSettings + (*CommunityChat)(nil), // 13: protobuf.CommunityChat + (*CommunityCategory)(nil), // 14: protobuf.CommunityCategory + (*RevealedAccount)(nil), // 15: protobuf.RevealedAccount + (*CommunityRequestToJoin)(nil), // 16: protobuf.CommunityRequestToJoin + (*CommunityEditSharedAddresses)(nil), // 17: protobuf.CommunityEditSharedAddresses + (*CommunityCancelRequestToJoin)(nil), // 18: protobuf.CommunityCancelRequestToJoin + (*CommunityUserKicked)(nil), // 19: protobuf.CommunityUserKicked + (*CommunityRequestToJoinResponse)(nil), // 20: protobuf.CommunityRequestToJoinResponse + (*CommunityRequestToLeave)(nil), // 21: protobuf.CommunityRequestToLeave + (*CommunityMessageArchiveMagnetlink)(nil), // 22: protobuf.CommunityMessageArchiveMagnetlink + (*WakuMessage)(nil), // 23: protobuf.WakuMessage + (*WakuMessageArchiveMetadata)(nil), // 24: protobuf.WakuMessageArchiveMetadata + (*WakuMessageArchive)(nil), // 25: protobuf.WakuMessageArchive + (*WakuMessageArchiveIndexMetadata)(nil), // 26: protobuf.WakuMessageArchiveIndexMetadata + (*WakuMessageArchiveIndex)(nil), // 27: protobuf.WakuMessageArchiveIndex + (*CommunityPublicStorenodesInfo)(nil), // 28: protobuf.CommunityPublicStorenodesInfo + (*CommunityStorenodes)(nil), // 29: protobuf.CommunityStorenodes + (*Storenode)(nil), // 30: protobuf.Storenode + (*CommunityReevaluatePermissionsRequest)(nil), // 31: protobuf.CommunityReevaluatePermissionsRequest + (*DeleteCommunityMemberMessage)(nil), // 32: protobuf.DeleteCommunityMemberMessage + (*DeleteCommunityMemberMessages)(nil), // 33: protobuf.DeleteCommunityMemberMessages + nil, // 34: protobuf.CommunityTokenMetadata.ContractAddressesEntry + nil, // 35: protobuf.TokenCriteria.ContractAddressesEntry + nil, // 36: protobuf.CommunityDescription.MembersEntry + nil, // 37: protobuf.CommunityDescription.ChatsEntry + nil, // 38: protobuf.CommunityDescription.CategoriesEntry + nil, // 39: protobuf.CommunityDescription.TokenPermissionsEntry + nil, // 40: protobuf.CommunityDescription.BannedMembersEntry + nil, // 41: protobuf.CommunityDescription.PrivateDataEntry + nil, // 42: protobuf.CommunityChat.MembersEntry + nil, // 43: protobuf.WakuMessageArchiveIndex.ArchivesEntry + (CommunityTokenType)(0), // 44: protobuf.CommunityTokenType + (*ChatIdentity)(nil), // 45: protobuf.ChatIdentity + (*Shard)(nil), // 46: protobuf.Shard +} +var file_communities_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityMember.roles:type_name -> protobuf.CommunityMember.Roles + 15, // 1: protobuf.CommunityMember.revealed_accounts:type_name -> protobuf.RevealedAccount + 1, // 2: protobuf.CommunityMember.channel_role:type_name -> protobuf.CommunityMember.ChannelRole + 34, // 3: protobuf.CommunityTokenMetadata.contract_addresses:type_name -> protobuf.CommunityTokenMetadata.ContractAddressesEntry + 44, // 4: protobuf.CommunityTokenMetadata.tokenType:type_name -> protobuf.CommunityTokenType + 2, // 5: protobuf.CommunityPermissions.access:type_name -> protobuf.CommunityPermissions.Access + 35, // 6: protobuf.TokenCriteria.contract_addresses:type_name -> protobuf.TokenCriteria.ContractAddressesEntry + 44, // 7: protobuf.TokenCriteria.type:type_name -> protobuf.CommunityTokenType + 3, // 8: protobuf.CommunityTokenPermission.type:type_name -> protobuf.CommunityTokenPermission.Type + 8, // 9: protobuf.CommunityTokenPermission.token_criteria:type_name -> protobuf.TokenCriteria + 36, // 10: protobuf.CommunityDescription.members:type_name -> protobuf.CommunityDescription.MembersEntry + 7, // 11: protobuf.CommunityDescription.permissions:type_name -> protobuf.CommunityPermissions + 45, // 12: protobuf.CommunityDescription.identity:type_name -> protobuf.ChatIdentity + 37, // 13: protobuf.CommunityDescription.chats:type_name -> protobuf.CommunityDescription.ChatsEntry + 38, // 14: protobuf.CommunityDescription.categories:type_name -> protobuf.CommunityDescription.CategoriesEntry + 12, // 15: protobuf.CommunityDescription.admin_settings:type_name -> protobuf.CommunityAdminSettings + 39, // 16: protobuf.CommunityDescription.token_permissions:type_name -> protobuf.CommunityDescription.TokenPermissionsEntry + 6, // 17: protobuf.CommunityDescription.community_tokens_metadata:type_name -> protobuf.CommunityTokenMetadata + 40, // 18: protobuf.CommunityDescription.banned_members:type_name -> protobuf.CommunityDescription.BannedMembersEntry + 41, // 19: protobuf.CommunityDescription.privateData:type_name -> protobuf.CommunityDescription.PrivateDataEntry + 42, // 20: protobuf.CommunityChat.members:type_name -> protobuf.CommunityChat.MembersEntry + 7, // 21: protobuf.CommunityChat.permissions:type_name -> protobuf.CommunityPermissions + 45, // 22: protobuf.CommunityChat.identity:type_name -> protobuf.ChatIdentity + 15, // 23: protobuf.CommunityRequestToJoin.revealed_accounts:type_name -> protobuf.RevealedAccount + 15, // 24: protobuf.CommunityEditSharedAddresses.revealed_accounts:type_name -> protobuf.RevealedAccount + 10, // 25: protobuf.CommunityRequestToJoinResponse.community:type_name -> protobuf.CommunityDescription + 46, // 26: protobuf.CommunityRequestToJoinResponse.shard:type_name -> protobuf.Shard + 24, // 27: protobuf.WakuMessageArchive.metadata:type_name -> protobuf.WakuMessageArchiveMetadata + 23, // 28: protobuf.WakuMessageArchive.messages:type_name -> protobuf.WakuMessage + 24, // 29: protobuf.WakuMessageArchiveIndexMetadata.metadata:type_name -> protobuf.WakuMessageArchiveMetadata + 43, // 30: protobuf.WakuMessageArchiveIndex.archives:type_name -> protobuf.WakuMessageArchiveIndex.ArchivesEntry + 30, // 31: protobuf.CommunityStorenodes.storenodes:type_name -> protobuf.Storenode + 32, // 32: protobuf.DeleteCommunityMemberMessages.messages:type_name -> protobuf.DeleteCommunityMemberMessage + 5, // 33: protobuf.CommunityDescription.MembersEntry.value:type_name -> protobuf.CommunityMember + 13, // 34: protobuf.CommunityDescription.ChatsEntry.value:type_name -> protobuf.CommunityChat + 14, // 35: protobuf.CommunityDescription.CategoriesEntry.value:type_name -> protobuf.CommunityCategory + 9, // 36: protobuf.CommunityDescription.TokenPermissionsEntry.value:type_name -> protobuf.CommunityTokenPermission + 11, // 37: protobuf.CommunityDescription.BannedMembersEntry.value:type_name -> protobuf.CommunityBanInfo + 5, // 38: protobuf.CommunityChat.MembersEntry.value:type_name -> protobuf.CommunityMember + 26, // 39: protobuf.WakuMessageArchiveIndex.ArchivesEntry.value:type_name -> protobuf.WakuMessageArchiveIndexMetadata + 40, // [40:40] is the sub-list for method output_type + 40, // [40:40] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name +} + +func init() { file_communities_proto_init() } +func file_communities_proto_init() { + if File_communities_proto != nil { + return + } + file_chat_identity_proto_init() + file_enums_proto_init() + file_shard_proto_init() + if !protoimpl.UnsafeEnabled { + file_communities_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Grant); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityMember); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityTokenMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPermissions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenCriteria); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityTokenPermission); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityBanInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityAdminSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityChat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityCategory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevealedAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEditSharedAddresses); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityCancelRequestToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityUserKicked); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToJoinResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityRequestToLeave); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityMessageArchiveMagnetlink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveIndexMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WakuMessageArchiveIndex); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPublicStorenodesInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityStorenodes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Storenode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityReevaluatePermissionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommunityMemberMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_communities_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteCommunityMemberMessages); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_communities_proto_rawDesc, + NumEnums: 4, + NumMessages: 40, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_communities_proto_goTypes, + DependencyIndexes: file_communities_proto_depIdxs, + EnumInfos: file_communities_proto_enumTypes, + MessageInfos: file_communities_proto_msgTypes, + }.Build() + File_communities_proto = out.File + file_communities_proto_rawDesc = nil + file_communities_proto_goTypes = nil + file_communities_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/communities.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/communities.proto index c69154fe..48d5565c 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/communities.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/communities.proto @@ -23,9 +23,16 @@ message CommunityMember { ROLE_ADMIN = 4; ROLE_TOKEN_MASTER = 5; } + enum ChannelRole { + // We make POSTER the first role to be the default one. + // This is for backwards compatibility. Older protobufs won't have this field and will default to 0. + CHANNEL_ROLE_POSTER = 0; + CHANNEL_ROLE_VIEWER = 1; + } repeated Roles roles = 1; repeated RevealedAccount revealed_accounts = 2 [deprecated = true]; uint64 last_update_clock = 3; + ChannelRole channel_role = 4; } message CommunityTokenMetadata { @@ -57,10 +64,11 @@ message TokenCriteria { CommunityTokenType type = 2; string symbol = 3; string name = 4; - string amount = 5; + string amount = 5 [deprecated = true]; repeated uint64 token_ids = 6; string ens_pattern = 7; uint64 decimals = 8; + string amountInWei = 9; } message CommunityTokenPermission { @@ -88,7 +96,7 @@ message CommunityDescription { CommunityPermissions permissions = 3; ChatIdentity identity = 5; map<string,CommunityChat> chats = 6; - repeated string ban_list = 7; + repeated string ban_list = 7 [deprecated = true]; map<string,CommunityCategory> categories = 8; uint64 archive_magnetlink_clock = 9; CommunityAdminSettings admin_settings = 10; @@ -100,11 +108,16 @@ message CommunityDescription { repeated CommunityTokenMetadata community_tokens_metadata = 16; uint64 active_members_count = 17; string ID = 18; + map<string,CommunityBanInfo>banned_members = 19; // key is hash ratchet key_id + seq_no map<string, bytes> privateData = 100; } +message CommunityBanInfo { + bool delete_all_messages = 1; +} + message CommunityAdminSettings { bool pin_message_all_members_enabled = 1; } @@ -115,6 +128,8 @@ message CommunityChat { ChatIdentity identity = 3; string category_id = 4; int32 position = 5; + bool viewers_can_post_reactions = 6; + bool hide_if_permissions_not_met = 7; } message CommunityCategory { @@ -213,3 +228,44 @@ message WakuMessageArchiveIndexMetadata { message WakuMessageArchiveIndex { map<string, WakuMessageArchiveIndexMetadata> archives = 1; } + +message CommunityPublicStorenodesInfo { + // Signature of the payload field + bytes signature = 1; + // Marshaled CommunityStorenodes + bytes payload = 2; +} + +message CommunityStorenodes { + uint64 clock = 1; + bytes community_id = 2; + repeated Storenode storenodes = 3; + uint64 chain_id = 4; +} + +message Storenode { + bytes community_id = 1; + string storenode_id = 2; + string name = 3; + string address = 4; + string fleet = 5; + uint32 version = 6; + bool removed = 7; + int64 deleted_at = 8; +} + +message CommunityReevaluatePermissionsRequest { + bytes community_id = 1; +} + +message DeleteCommunityMemberMessage { + string id = 1; + string chat_id = 2; +} + +message DeleteCommunityMemberMessages { + uint64 clock = 1; + bytes community_id = 2; + string member_id = 3; + repeated DeleteCommunityMemberMessage messages = 4; +} \ No newline at end of file diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/community_privileged_user_sync_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/community_privileged_user_sync_message.pb.go index f8cd1119..c1b24be1 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/community_privileged_user_sync_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/community_privileged_user_sync_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_privileged_user_sync_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityPrivilegedUserSyncMessage_EventType int32 @@ -29,135 +29,250 @@ const ( CommunityPrivilegedUserSyncMessage_CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN CommunityPrivilegedUserSyncMessage_EventType = 3 ) -var CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN", - 2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN", - 3: "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN", -} +// Enum value maps for CommunityPrivilegedUserSyncMessage_EventType. +var ( + CommunityPrivilegedUserSyncMessage_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN", + 2: "CONTROL_NODE_REJECT_REQUEST_TO_JOIN", + 3: "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN", + } + CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1, + "CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2, + "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN": 3, + } +) -var CommunityPrivilegedUserSyncMessage_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "CONTROL_NODE_ACCEPT_REQUEST_TO_JOIN": 1, - "CONTROL_NODE_REJECT_REQUEST_TO_JOIN": 2, - "CONTROL_NODE_ALL_SYNC_REQUESTS_TO_JOIN": 3, +func (x CommunityPrivilegedUserSyncMessage_EventType) Enum() *CommunityPrivilegedUserSyncMessage_EventType { + p := new(CommunityPrivilegedUserSyncMessage_EventType) + *p = x + return p } func (x CommunityPrivilegedUserSyncMessage_EventType) String() string { - return proto.EnumName(CommunityPrivilegedUserSyncMessage_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityPrivilegedUserSyncMessage_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_community_privileged_user_sync_message_proto_enumTypes[0].Descriptor() +} + +func (CommunityPrivilegedUserSyncMessage_EventType) Type() protoreflect.EnumType { + return &file_community_privileged_user_sync_message_proto_enumTypes[0] +} + +func (x CommunityPrivilegedUserSyncMessage_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityPrivilegedUserSyncMessage_EventType.Descriptor instead. func (CommunityPrivilegedUserSyncMessage_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_158595055b4cfee2, []int{0, 0} + return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0, 0} } type CommunityPrivilegedUserSyncMessage struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"` - CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - SyncRequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,5,rep,name=sync_requests_to_join,json=syncRequestsToJoin,proto3" json:"sync_requests_to_join,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Type CommunityPrivilegedUserSyncMessage_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityPrivilegedUserSyncMessage_EventType" json:"type,omitempty"` + CommunityId []byte `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + RequestToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,4,rep,name=request_to_join,json=requestToJoin,proto3" json:"request_to_join,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SyncRequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,5,rep,name=sync_requests_to_join,json=syncRequestsToJoin,proto3" json:"sync_requests_to_join,omitempty"` } -func (m *CommunityPrivilegedUserSyncMessage) Reset() { *m = CommunityPrivilegedUserSyncMessage{} } -func (m *CommunityPrivilegedUserSyncMessage) String() string { return proto.CompactTextString(m) } -func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {} +func (x *CommunityPrivilegedUserSyncMessage) Reset() { + *x = CommunityPrivilegedUserSyncMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_community_privileged_user_sync_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityPrivilegedUserSyncMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPrivilegedUserSyncMessage) ProtoMessage() {} + +func (x *CommunityPrivilegedUserSyncMessage) ProtoReflect() protoreflect.Message { + mi := &file_community_privileged_user_sync_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPrivilegedUserSyncMessage.ProtoReflect.Descriptor instead. func (*CommunityPrivilegedUserSyncMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_158595055b4cfee2, []int{0} + return file_community_privileged_user_sync_message_proto_rawDescGZIP(), []int{0} } -func (m *CommunityPrivilegedUserSyncMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Unmarshal(m, b) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Marshal(b, m, deterministic) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Merge(m, src) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_Size() int { - return xxx_messageInfo_CommunityPrivilegedUserSyncMessage.Size(m) -} -func (m *CommunityPrivilegedUserSyncMessage) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityPrivilegedUserSyncMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityPrivilegedUserSyncMessage proto.InternalMessageInfo - -func (m *CommunityPrivilegedUserSyncMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityPrivilegedUserSyncMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType { - if m != nil { - return m.Type +func (x *CommunityPrivilegedUserSyncMessage) GetType() CommunityPrivilegedUserSyncMessage_EventType { + if x != nil { + return x.Type } return CommunityPrivilegedUserSyncMessage_UNKNOWN } -func (m *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityPrivilegedUserSyncMessage) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.RequestToJoin +func (x *CommunityPrivilegedUserSyncMessage) GetRequestToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.RequestToJoin } return nil } -func (m *CommunityPrivilegedUserSyncMessage) GetSyncRequestsToJoin() []*SyncCommunityRequestsToJoin { - if m != nil { - return m.SyncRequestsToJoin +func (x *CommunityPrivilegedUserSyncMessage) GetSyncRequestsToJoin() []*SyncCommunityRequestsToJoin { + if x != nil { + return x.SyncRequestsToJoin } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityPrivilegedUserSyncMessage_EventType", CommunityPrivilegedUserSyncMessage_EventType_name, CommunityPrivilegedUserSyncMessage_EventType_value) - proto.RegisterType((*CommunityPrivilegedUserSyncMessage)(nil), "protobuf.CommunityPrivilegedUserSyncMessage") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry") +var File_community_privileged_user_sync_message_proto protoreflect.FileDescriptor + +var file_community_privileged_user_sync_message_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x70, 0x61, 0x69, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x04, 0x0a, 0x22, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x67, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x64, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, + 0x58, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x5f, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, + 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x12, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x1a, 0x62, 0x0a, 0x12, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, + 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x96, 0x01, + 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x5f, + 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, + 0x01, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, + 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, + 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53, + 0x59, 0x4e, 0x43, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_privileged_user_sync_message.proto", fileDescriptor_158595055b4cfee2) +var ( + file_community_privileged_user_sync_message_proto_rawDescOnce sync.Once + file_community_privileged_user_sync_message_proto_rawDescData = file_community_privileged_user_sync_message_proto_rawDesc +) + +func file_community_privileged_user_sync_message_proto_rawDescGZIP() []byte { + file_community_privileged_user_sync_message_proto_rawDescOnce.Do(func() { + file_community_privileged_user_sync_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_privileged_user_sync_message_proto_rawDescData) + }) + return file_community_privileged_user_sync_message_proto_rawDescData } -var fileDescriptor_158595055b4cfee2 = []byte{ - // 407 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x5f, 0xab, 0xd3, 0x30, - 0x18, 0xc6, 0xed, 0xda, 0xa9, 0x27, 0x3d, 0xd3, 0x19, 0x14, 0xca, 0xae, 0xea, 0x44, 0x2d, 0x22, - 0x15, 0x26, 0x1c, 0x44, 0x2f, 0x44, 0x6b, 0x2e, 0x4e, 0x9d, 0xed, 0x31, 0xed, 0xf0, 0xcf, 0x4d, - 0xd8, 0xba, 0x58, 0xe2, 0xb6, 0xa4, 0x26, 0xed, 0xa0, 0x5f, 0xc4, 0xef, 0xe8, 0xb7, 0x90, 0x35, - 0x6b, 0xe7, 0x98, 0x20, 0x5e, 0xf5, 0x7d, 0x9f, 0x3e, 0xf9, 0x3d, 0xbc, 0x0f, 0x78, 0x9a, 0x89, - 0xcd, 0xa6, 0xe2, 0xac, 0xac, 0x49, 0x21, 0xd9, 0x96, 0xad, 0x69, 0x4e, 0x97, 0xa4, 0x52, 0x54, - 0x12, 0x55, 0xf3, 0x8c, 0x6c, 0xa8, 0x52, 0xf3, 0x9c, 0xfa, 0x85, 0x14, 0xa5, 0x80, 0x37, 0x9b, - 0xcf, 0xa2, 0xfa, 0x36, 0xba, 0xd3, 0xbe, 0x63, 0x54, 0xe9, 0x9f, 0xa3, 0x41, 0x31, 0x67, 0x92, - 0xf1, 0x5c, 0xaf, 0xe3, 0x5f, 0x16, 0x18, 0x07, 0x2d, 0xfc, 0xaa, 0x63, 0xcf, 0x14, 0x95, 0x49, - 0xcd, 0xb3, 0x0f, 0x1a, 0x0c, 0xef, 0x82, 0x7e, 0xb6, 0x16, 0xd9, 0xca, 0x31, 0x5c, 0xc3, 0xb3, - 0xb0, 0x5e, 0x60, 0x08, 0xac, 0xb2, 0x2e, 0xa8, 0xd3, 0x73, 0x0d, 0xef, 0xd6, 0xe4, 0xc2, 0x6f, - 0x73, 0xfd, 0x7f, 0x13, 0x7d, 0xb4, 0xa5, 0xbc, 0x4c, 0xeb, 0x82, 0xe2, 0x86, 0x01, 0xef, 0x83, - 0xf3, 0xc3, 0x91, 0x6c, 0xe9, 0x98, 0xae, 0xe1, 0x9d, 0x63, 0xbb, 0xd3, 0x2e, 0x97, 0x30, 0x07, - 0xb7, 0x25, 0xfd, 0x51, 0x51, 0x55, 0x92, 0x52, 0x90, 0xef, 0x82, 0x71, 0xc7, 0x72, 0x4d, 0xcf, - 0x9e, 0xbc, 0xfe, 0xaf, 0x64, 0xac, 0x19, 0xa9, 0x08, 0x05, 0xe3, 0x88, 0x97, 0xb2, 0xc6, 0x03, - 0xf9, 0xa7, 0x06, 0x3f, 0x83, 0x7b, 0x4d, 0xad, 0x7b, 0x55, 0x75, 0x71, 0xfd, 0x26, 0xee, 0xe1, - 0x21, 0x6e, 0xc7, 0xed, 0x22, 0xf7, 0x60, 0xa5, 0x29, 0x18, 0xee, 0x18, 0xc7, 0xda, 0x68, 0x01, - 0xe0, 0x69, 0x3c, 0x1c, 0x02, 0x73, 0x45, 0xeb, 0xa6, 0xdb, 0x33, 0xbc, 0x1b, 0xe1, 0x05, 0xe8, - 0x6f, 0xe7, 0xeb, 0x4a, 0x57, 0x6b, 0x4f, 0xdc, 0xbf, 0x1c, 0x78, 0xc4, 0xc1, 0xda, 0xfe, 0xb2, - 0xf7, 0xc2, 0x18, 0xff, 0x34, 0xc0, 0x59, 0xd7, 0x2e, 0xb4, 0xc1, 0x8d, 0x59, 0xf4, 0x3e, 0x8a, - 0x3f, 0x45, 0xc3, 0x6b, 0xf0, 0x31, 0x78, 0x10, 0xc4, 0x51, 0x8a, 0xe3, 0x29, 0x89, 0xe2, 0x77, - 0x88, 0xbc, 0x09, 0x02, 0x74, 0x95, 0x12, 0x8c, 0x3e, 0xce, 0x50, 0x92, 0x92, 0x34, 0x26, 0x61, - 0x7c, 0x19, 0x0d, 0x8d, 0x13, 0x23, 0x46, 0x21, 0x0a, 0x4e, 0x8d, 0x3d, 0xf8, 0x04, 0x3c, 0x3a, - 0x26, 0x4e, 0xa7, 0x24, 0xf9, 0x12, 0x05, 0xad, 0x35, 0xe9, 0xbc, 0xe6, 0xdb, 0xc1, 0x57, 0xdb, - 0x7f, 0xf6, 0xaa, 0xbd, 0x64, 0x71, 0xbd, 0x99, 0x9e, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x83, - 0x24, 0x18, 0xbe, 0xdd, 0x02, 0x00, 0x00, +var file_community_privileged_user_sync_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_community_privileged_user_sync_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_community_privileged_user_sync_message_proto_goTypes = []interface{}{ + (CommunityPrivilegedUserSyncMessage_EventType)(0), // 0: protobuf.CommunityPrivilegedUserSyncMessage.EventType + (*CommunityPrivilegedUserSyncMessage)(nil), // 1: protobuf.CommunityPrivilegedUserSyncMessage + nil, // 2: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry + (*SyncCommunityRequestsToJoin)(nil), // 3: protobuf.SyncCommunityRequestsToJoin + (*CommunityRequestToJoin)(nil), // 4: protobuf.CommunityRequestToJoin +} +var file_community_privileged_user_sync_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityPrivilegedUserSyncMessage.type:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.EventType + 2, // 1: protobuf.CommunityPrivilegedUserSyncMessage.request_to_join:type_name -> protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry + 3, // 2: protobuf.CommunityPrivilegedUserSyncMessage.sync_requests_to_join:type_name -> protobuf.SyncCommunityRequestsToJoin + 4, // 3: protobuf.CommunityPrivilegedUserSyncMessage.RequestToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_community_privileged_user_sync_message_proto_init() } +func file_community_privileged_user_sync_message_proto_init() { + if File_community_privileged_user_sync_message_proto != nil { + return + } + file_communities_proto_init() + file_pairing_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_privileged_user_sync_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPrivilegedUserSyncMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_privileged_user_sync_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_privileged_user_sync_message_proto_goTypes, + DependencyIndexes: file_community_privileged_user_sync_message_proto_depIdxs, + EnumInfos: file_community_privileged_user_sync_message_proto_enumTypes, + MessageInfos: file_community_privileged_user_sync_message_proto_msgTypes, + }.Build() + File_community_privileged_user_sync_message_proto = out.File + file_community_privileged_user_sync_message_proto_rawDesc = nil + file_community_privileged_user_sync_message_proto_goTypes = nil + file_community_privileged_user_sync_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/community_shard_key.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/community_shard_key.pb.go index 60c1c350..1b2e6cbd 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/community_shard_key.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/community_shard_key.pb.go @@ -1,107 +1,177 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_shard_key.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityShardKey struct { - CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - PrivateKey []byte `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` - Shard *Shard `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + PrivateKey []byte `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` + Shard *Shard `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` } -func (m *CommunityShardKey) Reset() { *m = CommunityShardKey{} } -func (m *CommunityShardKey) String() string { return proto.CompactTextString(m) } -func (*CommunityShardKey) ProtoMessage() {} +func (x *CommunityShardKey) Reset() { + *x = CommunityShardKey{} + if protoimpl.UnsafeEnabled { + mi := &file_community_shard_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityShardKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityShardKey) ProtoMessage() {} + +func (x *CommunityShardKey) ProtoReflect() protoreflect.Message { + mi := &file_community_shard_key_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityShardKey.ProtoReflect.Descriptor instead. func (*CommunityShardKey) Descriptor() ([]byte, []int) { - return fileDescriptor_03da8310cde9b7b2, []int{0} + return file_community_shard_key_proto_rawDescGZIP(), []int{0} } -func (m *CommunityShardKey) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityShardKey.Unmarshal(m, b) -} -func (m *CommunityShardKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityShardKey.Marshal(b, m, deterministic) -} -func (m *CommunityShardKey) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityShardKey.Merge(m, src) -} -func (m *CommunityShardKey) XXX_Size() int { - return xxx_messageInfo_CommunityShardKey.Size(m) -} -func (m *CommunityShardKey) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityShardKey.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityShardKey proto.InternalMessageInfo - -func (m *CommunityShardKey) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityShardKey) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityShardKey) GetPrivateKey() []byte { - if m != nil { - return m.PrivateKey +func (x *CommunityShardKey) GetPrivateKey() []byte { + if x != nil { + return x.PrivateKey } return nil } -func (m *CommunityShardKey) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CommunityShardKey) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CommunityShardKey) GetShard() *Shard { - if m != nil { - return m.Shard +func (x *CommunityShardKey) GetShard() *Shard { + if x != nil { + return x.Shard } return nil } -func init() { - proto.RegisterType((*CommunityShardKey)(nil), "protobuf.CommunityShardKey") +var File_community_shard_key_proto protoreflect.FileDescriptor + +var file_community_shard_key_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x94, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x53, 0x68, 0x61, 0x72, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_shard_key.proto", fileDescriptor_03da8310cde9b7b2) +var ( + file_community_shard_key_proto_rawDescOnce sync.Once + file_community_shard_key_proto_rawDescData = file_community_shard_key_proto_rawDesc +) + +func file_community_shard_key_proto_rawDescGZIP() []byte { + file_community_shard_key_proto_rawDescOnce.Do(func() { + file_community_shard_key_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_shard_key_proto_rawDescData) + }) + return file_community_shard_key_proto_rawDescData } -var fileDescriptor_03da8310cde9b7b2 = []byte{ - // 173 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xce, 0xcf, 0xcd, - 0x2d, 0xcd, 0xcb, 0x2c, 0xa9, 0x8c, 0x2f, 0xce, 0x48, 0x2c, 0x4a, 0x89, 0xcf, 0x4e, 0xad, 0xd4, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x52, 0xdc, 0x60, 0x29, - 0x88, 0xb0, 0xd2, 0x14, 0x46, 0x2e, 0x41, 0x67, 0x98, 0xa6, 0x60, 0x90, 0x84, 0x77, 0x6a, 0xa5, - 0x90, 0x22, 0x17, 0x0f, 0xc2, 0xa4, 0xcc, 0x14, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x9e, 0x20, 0x6e, - 0xb8, 0x98, 0x67, 0x8a, 0x90, 0x3c, 0x17, 0x77, 0x41, 0x51, 0x66, 0x59, 0x62, 0x49, 0x2a, 0xc8, - 0x12, 0x09, 0x26, 0xb0, 0x0a, 0x2e, 0xa8, 0x10, 0xc8, 0x0c, 0x11, 0x2e, 0xd6, 0xe4, 0x9c, 0xfc, - 0xe4, 0x6c, 0x09, 0x66, 0x05, 0x46, 0x0d, 0x96, 0x20, 0x08, 0x47, 0x48, 0x95, 0x8b, 0x15, 0x6c, - 0xbd, 0x04, 0x8b, 0x02, 0xa3, 0x06, 0xb7, 0x11, 0xbf, 0x1e, 0xcc, 0x59, 0x7a, 0x60, 0xcb, 0x83, - 0x20, 0xb2, 0x4e, 0xbc, 0x51, 0xdc, 0x7a, 0xfa, 0xd6, 0x30, 0xb9, 0x24, 0x36, 0x30, 0xcb, 0x18, - 0x10, 0x00, 0x00, 0xff, 0xff, 0x7e, 0xda, 0x17, 0x6d, 0xe0, 0x00, 0x00, 0x00, +var file_community_shard_key_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_community_shard_key_proto_goTypes = []interface{}{ + (*CommunityShardKey)(nil), // 0: protobuf.CommunityShardKey + (*Shard)(nil), // 1: protobuf.Shard +} +var file_community_shard_key_proto_depIdxs = []int32{ + 1, // 0: protobuf.CommunityShardKey.shard:type_name -> protobuf.Shard + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_community_shard_key_proto_init() } +func file_community_shard_key_proto_init() { + if File_community_shard_key_proto != nil { + return + } + file_shard_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_shard_key_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityShardKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_shard_key_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_shard_key_proto_goTypes, + DependencyIndexes: file_community_shard_key_proto_depIdxs, + MessageInfos: file_community_shard_key_proto_msgTypes, + }.Build() + File_community_shard_key_proto = out.File + file_community_shard_key_proto_rawDesc = nil + file_community_shard_key_proto_goTypes = nil + file_community_shard_key_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.pb.go index a53e842b..dc5f6cc6 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: community_update.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type CommunityEvent_EventType int32 @@ -41,59 +41,87 @@ const ( CommunityEvent_COMMUNITY_MEMBER_BAN CommunityEvent_EventType = 15 CommunityEvent_COMMUNITY_MEMBER_UNBAN CommunityEvent_EventType = 16 CommunityEvent_COMMUNITY_TOKEN_ADD CommunityEvent_EventType = 17 + CommunityEvent_COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES CommunityEvent_EventType = 18 ) -var CommunityEvent_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "COMMUNITY_EDIT", - 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", - 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", - 4: "COMMUNITY_CATEGORY_CREATE", - 5: "COMMUNITY_CATEGORY_DELETE", - 6: "COMMUNITY_CATEGORY_EDIT", - 7: "COMMUNITY_CHANNEL_CREATE", - 8: "COMMUNITY_CHANNEL_DELETE", - 9: "COMMUNITY_CHANNEL_EDIT", - 10: "COMMUNITY_CATEGORY_REORDER", - 11: "COMMUNITY_CHANNEL_REORDER", - 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", - 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", - 14: "COMMUNITY_MEMBER_KICK", - 15: "COMMUNITY_MEMBER_BAN", - 16: "COMMUNITY_MEMBER_UNBAN", - 17: "COMMUNITY_TOKEN_ADD", -} +// Enum value maps for CommunityEvent_EventType. +var ( + CommunityEvent_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "COMMUNITY_EDIT", + 2: "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE", + 3: "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE", + 4: "COMMUNITY_CATEGORY_CREATE", + 5: "COMMUNITY_CATEGORY_DELETE", + 6: "COMMUNITY_CATEGORY_EDIT", + 7: "COMMUNITY_CHANNEL_CREATE", + 8: "COMMUNITY_CHANNEL_DELETE", + 9: "COMMUNITY_CHANNEL_EDIT", + 10: "COMMUNITY_CATEGORY_REORDER", + 11: "COMMUNITY_CHANNEL_REORDER", + 12: "COMMUNITY_REQUEST_TO_JOIN_ACCEPT", + 13: "COMMUNITY_REQUEST_TO_JOIN_REJECT", + 14: "COMMUNITY_MEMBER_KICK", + 15: "COMMUNITY_MEMBER_BAN", + 16: "COMMUNITY_MEMBER_UNBAN", + 17: "COMMUNITY_TOKEN_ADD", + 18: "COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES", + } + CommunityEvent_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "COMMUNITY_EDIT": 1, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, + "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, + "COMMUNITY_CATEGORY_CREATE": 4, + "COMMUNITY_CATEGORY_DELETE": 5, + "COMMUNITY_CATEGORY_EDIT": 6, + "COMMUNITY_CHANNEL_CREATE": 7, + "COMMUNITY_CHANNEL_DELETE": 8, + "COMMUNITY_CHANNEL_EDIT": 9, + "COMMUNITY_CATEGORY_REORDER": 10, + "COMMUNITY_CHANNEL_REORDER": 11, + "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, + "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, + "COMMUNITY_MEMBER_KICK": 14, + "COMMUNITY_MEMBER_BAN": 15, + "COMMUNITY_MEMBER_UNBAN": 16, + "COMMUNITY_TOKEN_ADD": 17, + "COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES": 18, + } +) -var CommunityEvent_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "COMMUNITY_EDIT": 1, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_CHANGE": 2, - "COMMUNITY_MEMBER_TOKEN_PERMISSION_DELETE": 3, - "COMMUNITY_CATEGORY_CREATE": 4, - "COMMUNITY_CATEGORY_DELETE": 5, - "COMMUNITY_CATEGORY_EDIT": 6, - "COMMUNITY_CHANNEL_CREATE": 7, - "COMMUNITY_CHANNEL_DELETE": 8, - "COMMUNITY_CHANNEL_EDIT": 9, - "COMMUNITY_CATEGORY_REORDER": 10, - "COMMUNITY_CHANNEL_REORDER": 11, - "COMMUNITY_REQUEST_TO_JOIN_ACCEPT": 12, - "COMMUNITY_REQUEST_TO_JOIN_REJECT": 13, - "COMMUNITY_MEMBER_KICK": 14, - "COMMUNITY_MEMBER_BAN": 15, - "COMMUNITY_MEMBER_UNBAN": 16, - "COMMUNITY_TOKEN_ADD": 17, +func (x CommunityEvent_EventType) Enum() *CommunityEvent_EventType { + p := new(CommunityEvent_EventType) + *p = x + return p } func (x CommunityEvent_EventType) String() string { - return proto.EnumName(CommunityEvent_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityEvent_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_community_update_proto_enumTypes[0].Descriptor() +} + +func (CommunityEvent_EventType) Type() protoreflect.EnumType { + return &file_community_update_proto_enumTypes[0] +} + +func (x CommunityEvent_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityEvent_EventType.Descriptor instead. func (CommunityEvent_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{0, 0} + return file_community_update_proto_rawDescGZIP(), []int{0, 0} } type CommunityEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + CommunityEventClock uint64 `protobuf:"varint,1,opt,name=community_event_clock,json=communityEventClock,proto3" json:"community_event_clock,omitempty"` Type CommunityEvent_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityEvent_EventType" json:"type,omitempty"` CommunityConfig *CommunityConfig `protobuf:"bytes,3,opt,name=community_config,json=communityConfig,proto3" json:"community_config,omitempty"` @@ -105,363 +133,399 @@ type CommunityEvent struct { RejectedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,9,rep,name=rejectedRequestsToJoin,proto3" json:"rejectedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` AcceptedRequestsToJoin map[string]*CommunityRequestToJoin `protobuf:"bytes,10,rep,name=acceptedRequestsToJoin,proto3" json:"acceptedRequestsToJoin,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` TokenMetadata *CommunityTokenMetadata `protobuf:"bytes,11,opt,name=token_metadata,json=tokenMetadata,proto3" json:"token_metadata,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *CommunityEvent) Reset() { *m = CommunityEvent{} } -func (m *CommunityEvent) String() string { return proto.CompactTextString(m) } -func (*CommunityEvent) ProtoMessage() {} +func (x *CommunityEvent) Reset() { + *x = CommunityEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEvent) ProtoMessage() {} + +func (x *CommunityEvent) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEvent.ProtoReflect.Descriptor instead. func (*CommunityEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{0} + return file_community_update_proto_rawDescGZIP(), []int{0} } -func (m *CommunityEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEvent.Unmarshal(m, b) -} -func (m *CommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEvent.Marshal(b, m, deterministic) -} -func (m *CommunityEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEvent.Merge(m, src) -} -func (m *CommunityEvent) XXX_Size() int { - return xxx_messageInfo_CommunityEvent.Size(m) -} -func (m *CommunityEvent) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEvent proto.InternalMessageInfo - -func (m *CommunityEvent) GetCommunityEventClock() uint64 { - if m != nil { - return m.CommunityEventClock +func (x *CommunityEvent) GetCommunityEventClock() uint64 { + if x != nil { + return x.CommunityEventClock } return 0 } -func (m *CommunityEvent) GetType() CommunityEvent_EventType { - if m != nil { - return m.Type +func (x *CommunityEvent) GetType() CommunityEvent_EventType { + if x != nil { + return x.Type } return CommunityEvent_UNKNOWN } -func (m *CommunityEvent) GetCommunityConfig() *CommunityConfig { - if m != nil { - return m.CommunityConfig +func (x *CommunityEvent) GetCommunityConfig() *CommunityConfig { + if x != nil { + return x.CommunityConfig } return nil } -func (m *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { - if m != nil { - return m.TokenPermission +func (x *CommunityEvent) GetTokenPermission() *CommunityTokenPermission { + if x != nil { + return x.TokenPermission } return nil } -func (m *CommunityEvent) GetCategoryData() *CategoryData { - if m != nil { - return m.CategoryData +func (x *CommunityEvent) GetCategoryData() *CategoryData { + if x != nil { + return x.CategoryData } return nil } -func (m *CommunityEvent) GetChannelData() *ChannelData { - if m != nil { - return m.ChannelData +func (x *CommunityEvent) GetChannelData() *ChannelData { + if x != nil { + return x.ChannelData } return nil } -func (m *CommunityEvent) GetMemberToAction() string { - if m != nil { - return m.MemberToAction +func (x *CommunityEvent) GetMemberToAction() string { + if x != nil { + return x.MemberToAction } return "" } -func (m *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { - if m != nil { - return m.MembersAdded +func (x *CommunityEvent) GetMembersAdded() map[string]*CommunityMember { + if x != nil { + return x.MembersAdded } return nil } -func (m *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.RejectedRequestsToJoin +func (x *CommunityEvent) GetRejectedRequestsToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.RejectedRequestsToJoin } return nil } -func (m *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { - if m != nil { - return m.AcceptedRequestsToJoin +func (x *CommunityEvent) GetAcceptedRequestsToJoin() map[string]*CommunityRequestToJoin { + if x != nil { + return x.AcceptedRequestsToJoin } return nil } -func (m *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { - if m != nil { - return m.TokenMetadata +func (x *CommunityEvent) GetTokenMetadata() *CommunityTokenMetadata { + if x != nil { + return x.TokenMetadata } return nil } type CommunityConfig struct { - Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` - Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` - AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` - IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` - OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Identity *ChatIdentity `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"` + Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"` + AdminSettings *CommunityAdminSettings `protobuf:"bytes,3,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"` + IntroMessage string `protobuf:"bytes,4,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"` + OutroMessage string `protobuf:"bytes,5,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"` + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` } -func (m *CommunityConfig) Reset() { *m = CommunityConfig{} } -func (m *CommunityConfig) String() string { return proto.CompactTextString(m) } -func (*CommunityConfig) ProtoMessage() {} +func (x *CommunityConfig) Reset() { + *x = CommunityConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityConfig) ProtoMessage() {} + +func (x *CommunityConfig) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityConfig.ProtoReflect.Descriptor instead. func (*CommunityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{1} + return file_community_update_proto_rawDescGZIP(), []int{1} } -func (m *CommunityConfig) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityConfig.Unmarshal(m, b) -} -func (m *CommunityConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityConfig.Marshal(b, m, deterministic) -} -func (m *CommunityConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityConfig.Merge(m, src) -} -func (m *CommunityConfig) XXX_Size() int { - return xxx_messageInfo_CommunityConfig.Size(m) -} -func (m *CommunityConfig) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityConfig.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityConfig proto.InternalMessageInfo - -func (m *CommunityConfig) GetIdentity() *ChatIdentity { - if m != nil { - return m.Identity +func (x *CommunityConfig) GetIdentity() *ChatIdentity { + if x != nil { + return x.Identity } return nil } -func (m *CommunityConfig) GetPermissions() *CommunityPermissions { - if m != nil { - return m.Permissions +func (x *CommunityConfig) GetPermissions() *CommunityPermissions { + if x != nil { + return x.Permissions } return nil } -func (m *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { - if m != nil { - return m.AdminSettings +func (x *CommunityConfig) GetAdminSettings() *CommunityAdminSettings { + if x != nil { + return x.AdminSettings } return nil } -func (m *CommunityConfig) GetIntroMessage() string { - if m != nil { - return m.IntroMessage +func (x *CommunityConfig) GetIntroMessage() string { + if x != nil { + return x.IntroMessage } return "" } -func (m *CommunityConfig) GetOutroMessage() string { - if m != nil { - return m.OutroMessage +func (x *CommunityConfig) GetOutroMessage() string { + if x != nil { + return x.OutroMessage } return "" } -func (m *CommunityConfig) GetTags() []string { - if m != nil { - return m.Tags +func (x *CommunityConfig) GetTags() []string { + if x != nil { + return x.Tags } return nil } type CategoryData struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` - Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ChannelsIds []string `protobuf:"bytes,3,rep,name=channels_ids,json=channelsIds,proto3" json:"channels_ids,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` } -func (m *CategoryData) Reset() { *m = CategoryData{} } -func (m *CategoryData) String() string { return proto.CompactTextString(m) } -func (*CategoryData) ProtoMessage() {} +func (x *CategoryData) Reset() { + *x = CategoryData{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryData) ProtoMessage() {} + +func (x *CategoryData) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryData.ProtoReflect.Descriptor instead. func (*CategoryData) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{2} + return file_community_update_proto_rawDescGZIP(), []int{2} } -func (m *CategoryData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CategoryData.Unmarshal(m, b) -} -func (m *CategoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CategoryData.Marshal(b, m, deterministic) -} -func (m *CategoryData) XXX_Merge(src proto.Message) { - xxx_messageInfo_CategoryData.Merge(m, src) -} -func (m *CategoryData) XXX_Size() int { - return xxx_messageInfo_CategoryData.Size(m) -} -func (m *CategoryData) XXX_DiscardUnknown() { - xxx_messageInfo_CategoryData.DiscardUnknown(m) -} - -var xxx_messageInfo_CategoryData proto.InternalMessageInfo - -func (m *CategoryData) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *CategoryData) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *CategoryData) GetName() string { - if m != nil { - return m.Name +func (x *CategoryData) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *CategoryData) GetChannelsIds() []string { - if m != nil { - return m.ChannelsIds +func (x *CategoryData) GetChannelsIds() []string { + if x != nil { + return x.ChannelsIds } return nil } -func (m *CategoryData) GetPosition() int32 { - if m != nil { - return m.Position +func (x *CategoryData) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } type ChannelData struct { - CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` - ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` - Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + ChannelId string `protobuf:"bytes,2,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + Channel *CommunityChat `protobuf:"bytes,4,opt,name=channel,proto3" json:"channel,omitempty"` } -func (m *ChannelData) Reset() { *m = ChannelData{} } -func (m *ChannelData) String() string { return proto.CompactTextString(m) } -func (*ChannelData) ProtoMessage() {} +func (x *ChannelData) Reset() { + *x = ChannelData{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChannelData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChannelData) ProtoMessage() {} + +func (x *ChannelData) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead. func (*ChannelData) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{3} + return file_community_update_proto_rawDescGZIP(), []int{3} } -func (m *ChannelData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChannelData.Unmarshal(m, b) -} -func (m *ChannelData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChannelData.Marshal(b, m, deterministic) -} -func (m *ChannelData) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChannelData.Merge(m, src) -} -func (m *ChannelData) XXX_Size() int { - return xxx_messageInfo_ChannelData.Size(m) -} -func (m *ChannelData) XXX_DiscardUnknown() { - xxx_messageInfo_ChannelData.DiscardUnknown(m) -} - -var xxx_messageInfo_ChannelData proto.InternalMessageInfo - -func (m *ChannelData) GetCategoryId() string { - if m != nil { - return m.CategoryId +func (x *ChannelData) GetCategoryId() string { + if x != nil { + return x.CategoryId } return "" } -func (m *ChannelData) GetChannelId() string { - if m != nil { - return m.ChannelId +func (x *ChannelData) GetChannelId() string { + if x != nil { + return x.ChannelId } return "" } -func (m *ChannelData) GetPosition() int32 { - if m != nil { - return m.Position +func (x *ChannelData) GetPosition() int32 { + if x != nil { + return x.Position } return 0 } -func (m *ChannelData) GetChannel() *CommunityChat { - if m != nil { - return m.Channel +func (x *ChannelData) GetChannel() *CommunityChat { + if x != nil { + return x.Channel } return nil } type SignedCommunityEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // Marshaled CommunityEvent - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *SignedCommunityEvent) Reset() { *m = SignedCommunityEvent{} } -func (m *SignedCommunityEvent) String() string { return proto.CompactTextString(m) } -func (*SignedCommunityEvent) ProtoMessage() {} +func (x *SignedCommunityEvent) Reset() { + *x = SignedCommunityEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedCommunityEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedCommunityEvent) ProtoMessage() {} + +func (x *SignedCommunityEvent) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignedCommunityEvent.ProtoReflect.Descriptor instead. func (*SignedCommunityEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{4} + return file_community_update_proto_rawDescGZIP(), []int{4} } -func (m *SignedCommunityEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SignedCommunityEvent.Unmarshal(m, b) -} -func (m *SignedCommunityEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SignedCommunityEvent.Marshal(b, m, deterministic) -} -func (m *SignedCommunityEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_SignedCommunityEvent.Merge(m, src) -} -func (m *SignedCommunityEvent) XXX_Size() int { - return xxx_messageInfo_SignedCommunityEvent.Size(m) -} -func (m *SignedCommunityEvent) XXX_DiscardUnknown() { - xxx_messageInfo_SignedCommunityEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_SignedCommunityEvent proto.InternalMessageInfo - -func (m *SignedCommunityEvent) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *SignedCommunityEvent) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *SignedCommunityEvent) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *SignedCommunityEvent) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } @@ -469,199 +533,483 @@ func (m *SignedCommunityEvent) GetPayload() []byte { // CommunityEventsMessage is a message used to propagate information // about community changes. type CommunityEventsMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` // Events base CommunityDescription with owner signature on top of which events were generated EventsBaseCommunityDescription []byte `protobuf:"bytes,2,opt,name=events_base_community_description,json=eventsBaseCommunityDescription,proto3" json:"events_base_community_description,omitempty"` // A list of admins events for the channel in bytes // Deprecated: use signed_events instead. - Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // Deprecated: Do not use. + // + // Deprecated: Marked as deprecated in community_update.proto. + Events [][]byte `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` // A list of signed community events - SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SignedEvents []*SignedCommunityEvent `protobuf:"bytes,4,rep,name=signed_events,json=signedEvents,proto3" json:"signed_events,omitempty"` } -func (m *CommunityEventsMessage) Reset() { *m = CommunityEventsMessage{} } -func (m *CommunityEventsMessage) String() string { return proto.CompactTextString(m) } -func (*CommunityEventsMessage) ProtoMessage() {} +func (x *CommunityEventsMessage) Reset() { + *x = CommunityEventsMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEventsMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEventsMessage) ProtoMessage() {} + +func (x *CommunityEventsMessage) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEventsMessage.ProtoReflect.Descriptor instead. func (*CommunityEventsMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{5} + return file_community_update_proto_rawDescGZIP(), []int{5} } -func (m *CommunityEventsMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEventsMessage.Unmarshal(m, b) -} -func (m *CommunityEventsMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEventsMessage.Marshal(b, m, deterministic) -} -func (m *CommunityEventsMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEventsMessage.Merge(m, src) -} -func (m *CommunityEventsMessage) XXX_Size() int { - return xxx_messageInfo_CommunityEventsMessage.Size(m) -} -func (m *CommunityEventsMessage) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEventsMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEventsMessage proto.InternalMessageInfo - -func (m *CommunityEventsMessage) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *CommunityEventsMessage) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { - if m != nil { - return m.EventsBaseCommunityDescription +func (x *CommunityEventsMessage) GetEventsBaseCommunityDescription() []byte { + if x != nil { + return x.EventsBaseCommunityDescription } return nil } -// Deprecated: Do not use. -func (m *CommunityEventsMessage) GetEvents() [][]byte { - if m != nil { - return m.Events +// Deprecated: Marked as deprecated in community_update.proto. +func (x *CommunityEventsMessage) GetEvents() [][]byte { + if x != nil { + return x.Events } return nil } -func (m *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { - if m != nil { - return m.SignedEvents +func (x *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { + if x != nil { + return x.SignedEvents } return nil } type CommunityEventsMessageRejected struct { - Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` } -func (m *CommunityEventsMessageRejected) Reset() { *m = CommunityEventsMessageRejected{} } -func (m *CommunityEventsMessageRejected) String() string { return proto.CompactTextString(m) } -func (*CommunityEventsMessageRejected) ProtoMessage() {} +func (x *CommunityEventsMessageRejected) Reset() { + *x = CommunityEventsMessageRejected{} + if protoimpl.UnsafeEnabled { + mi := &file_community_update_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityEventsMessageRejected) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityEventsMessageRejected) ProtoMessage() {} + +func (x *CommunityEventsMessageRejected) ProtoReflect() protoreflect.Message { + mi := &file_community_update_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityEventsMessageRejected.ProtoReflect.Descriptor instead. func (*CommunityEventsMessageRejected) Descriptor() ([]byte, []int) { - return fileDescriptor_52ed23dfc73918ab, []int{6} + return file_community_update_proto_rawDescGZIP(), []int{6} } -func (m *CommunityEventsMessageRejected) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityEventsMessageRejected.Unmarshal(m, b) -} -func (m *CommunityEventsMessageRejected) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityEventsMessageRejected.Marshal(b, m, deterministic) -} -func (m *CommunityEventsMessageRejected) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityEventsMessageRejected.Merge(m, src) -} -func (m *CommunityEventsMessageRejected) XXX_Size() int { - return xxx_messageInfo_CommunityEventsMessageRejected.Size(m) -} -func (m *CommunityEventsMessageRejected) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityEventsMessageRejected.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityEventsMessageRejected proto.InternalMessageInfo - -func (m *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { - if m != nil { - return m.Msg +func (x *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { + if x != nil { + return x.Msg } return nil } -func init() { - proto.RegisterEnum("protobuf.CommunityEvent_EventType", CommunityEvent_EventType_name, CommunityEvent_EventType_value) - proto.RegisterType((*CommunityEvent)(nil), "protobuf.CommunityEvent") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.AcceptedRequestsToJoinEntry") - proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityEvent.MembersAddedEntry") - proto.RegisterMapType((map[string]*CommunityRequestToJoin)(nil), "protobuf.CommunityEvent.RejectedRequestsToJoinEntry") - proto.RegisterType((*CommunityConfig)(nil), "protobuf.CommunityConfig") - proto.RegisterType((*CategoryData)(nil), "protobuf.CategoryData") - proto.RegisterType((*ChannelData)(nil), "protobuf.ChannelData") - proto.RegisterType((*SignedCommunityEvent)(nil), "protobuf.SignedCommunityEvent") - proto.RegisterType((*CommunityEventsMessage)(nil), "protobuf.CommunityEventsMessage") - proto.RegisterType((*CommunityEventsMessageRejected)(nil), "protobuf.CommunityEventsMessageRejected") +var File_community_update_proto protoreflect.FileDescriptor + +var file_community_update_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x0d, 0x0a, 0x0e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x4d, 0x0a, 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, + 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0c, 0x63, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x4e, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, + 0x6c, 0x0a, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x6c, 0x0a, + 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x16, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x47, 0x0a, 0x0e, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x5a, 0x0a, 0x11, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x41, + 0x64, 0x64, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x6b, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, + 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, 0x0a, + 0x1b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdd, 0x04, 0x0a, 0x09, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, + 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, + 0x4b, 0x45, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, + 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, + 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, + 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, + 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x06, + 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, + 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, + 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, + 0x45, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x52, 0x45, + 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, + 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x0c, 0x12, 0x24, 0x0a, + 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, + 0x54, 0x10, 0x0d, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x10, 0x0e, 0x12, 0x18, + 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x42, 0x41, 0x4e, 0x10, 0x0f, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x42, + 0x41, 0x4e, 0x10, 0x10, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, + 0x59, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x11, 0x12, 0x2b, 0x0a, + 0x27, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x10, 0x12, 0x22, 0xae, 0x02, 0x0a, 0x0f, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, + 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0d, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x72, 0x6f, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x0c, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x43, 0x68, 0x61, 0x74, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, + 0x4e, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0xe7, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x49, 0x0a, + 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x73, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x54, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x6d, + 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x42, + 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("community_update.proto", fileDescriptor_52ed23dfc73918ab) +var ( + file_community_update_proto_rawDescOnce sync.Once + file_community_update_proto_rawDescData = file_community_update_proto_rawDesc +) + +func file_community_update_proto_rawDescGZIP() []byte { + file_community_update_proto_rawDescOnce.Do(func() { + file_community_update_proto_rawDescData = protoimpl.X.CompressGZIP(file_community_update_proto_rawDescData) + }) + return file_community_update_proto_rawDescData } -var fileDescriptor_52ed23dfc73918ab = []byte{ - // 1095 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0xdb, 0x46, - 0x14, 0xad, 0x2c, 0xf9, 0xa1, 0xab, 0x87, 0xe9, 0x71, 0x6c, 0xd3, 0x4a, 0xe2, 0x2a, 0x6a, 0x17, - 0x42, 0x51, 0x38, 0xa8, 0x5a, 0x04, 0x41, 0xb3, 0xa9, 0x4c, 0x0d, 0x1c, 0xda, 0x11, 0xe5, 0x8e, - 0x69, 0x14, 0xc9, 0x86, 0x18, 0x93, 0x13, 0x99, 0xb5, 0x45, 0xaa, 0x9a, 0x51, 0x00, 0x6d, 0xfb, - 0x05, 0xfd, 0x80, 0x7e, 0x43, 0xd1, 0xbf, 0xea, 0x6f, 0x14, 0x9c, 0x21, 0x45, 0xd2, 0xa6, 0x9c, - 0x2e, 0xba, 0x91, 0x38, 0xf7, 0x9c, 0x7b, 0xce, 0xdc, 0x79, 0xf0, 0x12, 0xf6, 0xdd, 0x70, 0x32, - 0x99, 0x07, 0xbe, 0x58, 0x38, 0xf3, 0xa9, 0x47, 0x05, 0x3b, 0x9e, 0xce, 0x42, 0x11, 0xa2, 0x2d, - 0xf9, 0x77, 0x3d, 0xff, 0xd8, 0xda, 0x75, 0x6f, 0xa8, 0x70, 0x7c, 0x8f, 0x05, 0xc2, 0x17, 0x0b, - 0x05, 0xb7, 0x76, 0x92, 0x34, 0x9f, 0x71, 0x15, 0xea, 0xfc, 0xd1, 0x80, 0xa6, 0x91, 0x88, 0xe1, - 0x4f, 0x2c, 0x10, 0xa8, 0x07, 0x7b, 0xa9, 0x3c, 0x8b, 0x42, 0x8e, 0x7b, 0x17, 0xba, 0xb7, 0x7a, - 0xa9, 0x5d, 0xea, 0x56, 0xc8, 0xae, 0x9b, 0xa3, 0x1b, 0x11, 0x84, 0x5e, 0x41, 0x45, 0x2c, 0xa6, - 0x4c, 0x5f, 0x6b, 0x97, 0xba, 0xcd, 0x5e, 0xe7, 0x38, 0x99, 0xc7, 0x71, 0x5e, 0xfb, 0x58, 0xfe, - 0xda, 0x8b, 0x29, 0x23, 0x92, 0x8f, 0x06, 0xa0, 0xa5, 0x5e, 0x6e, 0x18, 0x7c, 0xf4, 0xc7, 0x7a, - 0xb9, 0x5d, 0xea, 0xd6, 0x7a, 0x87, 0x05, 0x1a, 0x86, 0x24, 0x90, 0x6d, 0x37, 0x1f, 0x40, 0x43, - 0xd0, 0x44, 0x78, 0xcb, 0x02, 0x67, 0xca, 0x66, 0x13, 0x9f, 0x73, 0x3f, 0x0c, 0xf4, 0x8a, 0x54, - 0x29, 0x9a, 0x89, 0x1d, 0x51, 0x2f, 0x96, 0x4c, 0xb2, 0x2d, 0xf2, 0x01, 0xf4, 0x06, 0x1a, 0x2e, - 0x15, 0x6c, 0x1c, 0xce, 0x16, 0x8e, 0x47, 0x05, 0xd5, 0xd7, 0xa5, 0xd6, 0x7e, 0x46, 0x2b, 0x86, - 0x07, 0x54, 0x50, 0x52, 0x77, 0x33, 0x23, 0xf4, 0x1a, 0xea, 0xee, 0x0d, 0x0d, 0x02, 0x76, 0xa7, - 0x72, 0x37, 0x64, 0xee, 0x5e, 0x26, 0x57, 0xa1, 0x32, 0xb5, 0xe6, 0xa6, 0x03, 0xd4, 0x05, 0x6d, - 0xc2, 0x26, 0xd7, 0x6c, 0xe6, 0x88, 0xd0, 0xa1, 0xae, 0x88, 0xaa, 0xd8, 0x6c, 0x97, 0xba, 0x55, - 0xd2, 0x54, 0x71, 0x3b, 0xec, 0xcb, 0x28, 0xb2, 0xa0, 0xae, 0x22, 0xbc, 0xef, 0x79, 0xcc, 0xd3, - 0xb7, 0xda, 0xe5, 0x6e, 0xad, 0xf7, 0xcd, 0xca, 0x55, 0x1f, 0x66, 0xc8, 0x38, 0x10, 0xb3, 0x05, - 0xc9, 0xe5, 0xa3, 0x3b, 0xd8, 0x9f, 0xb1, 0x5f, 0x99, 0x2b, 0x98, 0x47, 0xd8, 0x6f, 0x73, 0xc6, - 0x05, 0xb7, 0xc3, 0xb3, 0xd0, 0x0f, 0xf4, 0xaa, 0x54, 0xfe, 0x61, 0xa5, 0x32, 0x29, 0x4c, 0x53, - 0x1e, 0x2b, 0x34, 0x23, 0x37, 0xea, 0xba, 0x6c, 0xfa, 0xd0, 0x0d, 0x3e, 0xe3, 0xd6, 0x2f, 0x4c, - 0x8b, 0xdd, 0x8a, 0x35, 0xd1, 0x29, 0x34, 0xd5, 0xd9, 0x98, 0x30, 0x41, 0xe5, 0x8e, 0xd4, 0xe4, - 0x8e, 0xb4, 0x57, 0x9d, 0x8c, 0x61, 0xcc, 0x23, 0x0d, 0x91, 0x1d, 0xb6, 0x3e, 0xc0, 0xce, 0x83, - 0x75, 0x44, 0x1a, 0x94, 0x6f, 0xd9, 0x42, 0xde, 0x8c, 0x2a, 0x89, 0x1e, 0xd1, 0x4b, 0x58, 0xff, - 0x44, 0xef, 0xe6, 0xea, 0x2a, 0x14, 0x1f, 0x63, 0x25, 0x43, 0x14, 0xef, 0xc7, 0xb5, 0xd7, 0xa5, - 0xd6, 0x2d, 0x3c, 0x7d, 0x64, 0x25, 0x0b, 0x5c, 0x5e, 0xe5, 0x5d, 0x8a, 0x8a, 0x89, 0x85, 0x94, - 0xce, 0x3d, 0xb3, 0x47, 0x16, 0xf2, 0xff, 0x35, 0xeb, 0xfc, 0x5d, 0x81, 0xea, 0xf2, 0xd2, 0xa3, - 0x1a, 0x6c, 0x5e, 0x59, 0xe7, 0xd6, 0xe8, 0x17, 0x4b, 0xfb, 0x02, 0x21, 0x68, 0x1a, 0xa3, 0xe1, - 0xf0, 0xca, 0x32, 0xed, 0xf7, 0x0e, 0x1e, 0x98, 0xb6, 0x56, 0x42, 0xdf, 0x42, 0x37, 0x8d, 0x0d, - 0xf1, 0xf0, 0x04, 0x13, 0xc7, 0x1e, 0x9d, 0x63, 0xcb, 0xb9, 0xc0, 0x64, 0x68, 0x5e, 0x5e, 0x9a, - 0x23, 0xcb, 0x31, 0xde, 0xf6, 0xad, 0x53, 0xac, 0xad, 0xfd, 0x37, 0xf6, 0x00, 0xbf, 0xc3, 0x36, - 0xd6, 0xca, 0xe8, 0x39, 0x1c, 0xa6, 0x6c, 0xa3, 0x6f, 0xe3, 0xd3, 0x11, 0x79, 0xef, 0x18, 0x04, - 0xf7, 0x6d, 0xac, 0x55, 0x56, 0xc0, 0x71, 0xf6, 0x3a, 0x7a, 0x0a, 0x07, 0x05, 0xb0, 0x9c, 0xf6, - 0x06, 0x7a, 0x06, 0x7a, 0x06, 0x7c, 0xdb, 0xb7, 0x2c, 0xfc, 0x2e, 0x51, 0xde, 0x2c, 0x46, 0x63, - 0xe1, 0x2d, 0xd4, 0x82, 0xfd, 0x87, 0xa8, 0xd4, 0xad, 0xa2, 0x23, 0x68, 0x15, 0x98, 0x12, 0x3c, - 0x22, 0x03, 0x4c, 0x34, 0xb8, 0x37, 0xe7, 0x38, 0x37, 0x81, 0x6b, 0xe8, 0x6b, 0x68, 0xa7, 0x30, - 0xc1, 0x3f, 0x5f, 0xe1, 0x4b, 0xdb, 0xb1, 0x47, 0xce, 0xd9, 0xc8, 0xb4, 0x9c, 0xbe, 0x61, 0xe0, - 0x0b, 0x5b, 0xab, 0x3f, 0xce, 0x22, 0xf8, 0x0c, 0x1b, 0xb6, 0xd6, 0x40, 0x87, 0xb0, 0xf7, 0x60, - 0xad, 0xcf, 0x4d, 0xe3, 0x5c, 0x6b, 0x22, 0x1d, 0x9e, 0x3c, 0x80, 0x4e, 0xfa, 0x96, 0xb6, 0x9d, - 0xaf, 0x2d, 0x46, 0xae, 0xac, 0x08, 0xd3, 0xd0, 0x01, 0xec, 0xa6, 0x98, 0xda, 0xb5, 0xfe, 0x60, - 0xa0, 0xed, 0x74, 0xfe, 0x5a, 0x83, 0xed, 0x7b, 0xaf, 0x7c, 0xd4, 0x83, 0xad, 0xa4, 0x97, 0xc9, - 0x93, 0x99, 0x7f, 0x1b, 0xdf, 0x50, 0x61, 0xc6, 0x28, 0x59, 0xf2, 0xd0, 0x4f, 0x50, 0x4b, 0xfb, - 0x01, 0x8f, 0x0f, 0xef, 0x51, 0xc1, 0xe1, 0x4d, 0x5f, 0xfd, 0x9c, 0x64, 0x53, 0xa2, 0x77, 0x07, - 0xf5, 0x26, 0x7e, 0xe0, 0x70, 0x26, 0x84, 0x1f, 0x8c, 0x79, 0xdc, 0x9b, 0x8a, 0x6e, 0x40, 0x3f, - 0x22, 0x5e, 0xc6, 0x3c, 0xd2, 0xa0, 0xd9, 0x21, 0xfa, 0x0a, 0x1a, 0x7e, 0x20, 0x66, 0xa1, 0x33, - 0x61, 0x9c, 0xd3, 0x31, 0x93, 0xdd, 0xa9, 0x4a, 0xea, 0x32, 0x38, 0x54, 0xb1, 0x88, 0x14, 0xce, - 0xb3, 0xa4, 0x75, 0x45, 0x92, 0xc1, 0x84, 0x84, 0xa0, 0x22, 0xe8, 0x98, 0xeb, 0x1b, 0xed, 0x72, - 0xb7, 0x4a, 0xe4, 0x73, 0xe7, 0xf7, 0x12, 0xd4, 0xb3, 0x1d, 0x09, 0x7d, 0x09, 0xb5, 0x65, 0x03, - 0xf3, 0xbd, 0xf8, 0x2a, 0x43, 0x12, 0x32, 0xbd, 0x48, 0x25, 0xa0, 0x13, 0x75, 0xa1, 0xab, 0x44, - 0x3e, 0xa3, 0x17, 0xcb, 0xc6, 0xc5, 0x1d, 0xdf, 0x8b, 0x4a, 0x8d, 0x1c, 0x92, 0x0e, 0xc5, 0x4d, - 0x8f, 0xa3, 0x16, 0x6c, 0x4d, 0x43, 0xee, 0x8b, 0xa4, 0xbf, 0xae, 0x93, 0xe5, 0xb8, 0xf3, 0x67, - 0x09, 0x6a, 0x99, 0xd6, 0xf6, 0xf9, 0x39, 0x3c, 0x07, 0x48, 0x1a, 0xa5, 0xef, 0xc5, 0x33, 0xa9, - 0xc6, 0x11, 0xd3, 0xcb, 0x79, 0x95, 0xf3, 0x5e, 0xe8, 0x3b, 0xd8, 0x8c, 0x89, 0x71, 0x9b, 0x3f, - 0x28, 0xfa, 0x58, 0xb8, 0xa1, 0x82, 0x24, 0xbc, 0x8e, 0x05, 0x4f, 0x2e, 0xfd, 0x71, 0xc0, 0xbc, - 0x7b, 0x1f, 0x3b, 0xcf, 0xa0, 0xca, 0xfd, 0x71, 0x40, 0xc5, 0x7c, 0xc6, 0xe4, 0x24, 0xeb, 0x24, - 0x0d, 0x20, 0x1d, 0x36, 0xa7, 0x74, 0x71, 0x17, 0x52, 0x35, 0xc1, 0x3a, 0x49, 0x86, 0x9d, 0x7f, - 0x4a, 0xb0, 0x9f, 0x97, 0xe2, 0xc9, 0x16, 0x45, 0x0b, 0xb9, 0xfc, 0xa6, 0x89, 0x4b, 0xaf, 0x93, - 0xda, 0x32, 0x66, 0x7a, 0xc8, 0x84, 0x17, 0xf2, 0xc3, 0x8a, 0x3b, 0xd7, 0x94, 0x33, 0x27, 0xa5, - 0x7b, 0x8c, 0xbb, 0x33, 0x7f, 0x2a, 0xab, 0x56, 0x8e, 0x47, 0x8a, 0x78, 0x42, 0x39, 0x5b, 0xfa, - 0x0d, 0x52, 0x16, 0x6a, 0xc1, 0x86, 0x62, 0xc8, 0x0d, 0xab, 0x9f, 0xac, 0xe9, 0x25, 0x12, 0x47, - 0x90, 0x01, 0x0d, 0x2e, 0x8b, 0x76, 0x62, 0x4a, 0x45, 0x36, 0xd8, 0xcc, 0x1d, 0x28, 0x5a, 0x13, - 0x52, 0x57, 0x49, 0xaa, 0xaa, 0x8e, 0x0d, 0x47, 0xc5, 0x85, 0x26, 0x1d, 0x0b, 0xf5, 0xa0, 0x3c, - 0xe1, 0xe3, 0xf8, 0x5e, 0xb6, 0x57, 0x75, 0xef, 0x65, 0x5a, 0x44, 0x3e, 0x69, 0x7c, 0xa8, 0x1d, - 0xbf, 0x7c, 0x93, 0x50, 0xaf, 0x37, 0xe4, 0xd3, 0xf7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x92, - 0x1f, 0x8f, 0xf4, 0xd9, 0x0a, 0x00, 0x00, +var file_community_update_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_community_update_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_community_update_proto_goTypes = []interface{}{ + (CommunityEvent_EventType)(0), // 0: protobuf.CommunityEvent.EventType + (*CommunityEvent)(nil), // 1: protobuf.CommunityEvent + (*CommunityConfig)(nil), // 2: protobuf.CommunityConfig + (*CategoryData)(nil), // 3: protobuf.CategoryData + (*ChannelData)(nil), // 4: protobuf.ChannelData + (*SignedCommunityEvent)(nil), // 5: protobuf.SignedCommunityEvent + (*CommunityEventsMessage)(nil), // 6: protobuf.CommunityEventsMessage + (*CommunityEventsMessageRejected)(nil), // 7: protobuf.CommunityEventsMessageRejected + nil, // 8: protobuf.CommunityEvent.MembersAddedEntry + nil, // 9: protobuf.CommunityEvent.RejectedRequestsToJoinEntry + nil, // 10: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry + (*CommunityTokenPermission)(nil), // 11: protobuf.CommunityTokenPermission + (*CommunityTokenMetadata)(nil), // 12: protobuf.CommunityTokenMetadata + (*ChatIdentity)(nil), // 13: protobuf.ChatIdentity + (*CommunityPermissions)(nil), // 14: protobuf.CommunityPermissions + (*CommunityAdminSettings)(nil), // 15: protobuf.CommunityAdminSettings + (*CommunityChat)(nil), // 16: protobuf.CommunityChat + (*CommunityMember)(nil), // 17: protobuf.CommunityMember + (*CommunityRequestToJoin)(nil), // 18: protobuf.CommunityRequestToJoin +} +var file_community_update_proto_depIdxs = []int32{ + 0, // 0: protobuf.CommunityEvent.type:type_name -> protobuf.CommunityEvent.EventType + 2, // 1: protobuf.CommunityEvent.community_config:type_name -> protobuf.CommunityConfig + 11, // 2: protobuf.CommunityEvent.token_permission:type_name -> protobuf.CommunityTokenPermission + 3, // 3: protobuf.CommunityEvent.category_data:type_name -> protobuf.CategoryData + 4, // 4: protobuf.CommunityEvent.channel_data:type_name -> protobuf.ChannelData + 8, // 5: protobuf.CommunityEvent.membersAdded:type_name -> protobuf.CommunityEvent.MembersAddedEntry + 9, // 6: protobuf.CommunityEvent.rejectedRequestsToJoin:type_name -> protobuf.CommunityEvent.RejectedRequestsToJoinEntry + 10, // 7: protobuf.CommunityEvent.acceptedRequestsToJoin:type_name -> protobuf.CommunityEvent.AcceptedRequestsToJoinEntry + 12, // 8: protobuf.CommunityEvent.token_metadata:type_name -> protobuf.CommunityTokenMetadata + 13, // 9: protobuf.CommunityConfig.identity:type_name -> protobuf.ChatIdentity + 14, // 10: protobuf.CommunityConfig.permissions:type_name -> protobuf.CommunityPermissions + 15, // 11: protobuf.CommunityConfig.admin_settings:type_name -> protobuf.CommunityAdminSettings + 16, // 12: protobuf.ChannelData.channel:type_name -> protobuf.CommunityChat + 5, // 13: protobuf.CommunityEventsMessage.signed_events:type_name -> protobuf.SignedCommunityEvent + 6, // 14: protobuf.CommunityEventsMessageRejected.msg:type_name -> protobuf.CommunityEventsMessage + 17, // 15: protobuf.CommunityEvent.MembersAddedEntry.value:type_name -> protobuf.CommunityMember + 18, // 16: protobuf.CommunityEvent.RejectedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 18, // 17: protobuf.CommunityEvent.AcceptedRequestsToJoinEntry.value:type_name -> protobuf.CommunityRequestToJoin + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_community_update_proto_init() } +func file_community_update_proto_init() { + if File_community_update_proto != nil { + return + } + file_chat_identity_proto_init() + file_communities_proto_init() + if !protoimpl.UnsafeEnabled { + file_community_update_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChannelData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignedCommunityEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEventsMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_community_update_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityEventsMessageRejected); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_community_update_proto_rawDesc, + NumEnums: 1, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_community_update_proto_goTypes, + DependencyIndexes: file_community_update_proto_depIdxs, + EnumInfos: file_community_update_proto_enumTypes, + MessageInfos: file_community_update_proto_msgTypes, + }.Build() + File_community_update_proto = out.File + file_community_update_proto_rawDesc = nil + file_community_update_proto_goTypes = nil + file_community_update_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.proto index 892b8716..5d37c929 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/community_update.proto @@ -38,6 +38,7 @@ message CommunityEvent { COMMUNITY_MEMBER_BAN = 15; COMMUNITY_MEMBER_UNBAN = 16; COMMUNITY_TOKEN_ADD = 17; + COMMUNITY_DELETE_BANNED_MEMBER_MESSAGES = 18; } } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/contact.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/contact.pb.go index 8d4213ba..3eedcc00 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/contact.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/contact.pb.go @@ -1,89 +1,101 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: contact.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type ContactRequestPropagatedState struct { - LocalClock uint64 `protobuf:"varint,1,opt,name=local_clock,json=localClock,proto3" json:"local_clock,omitempty"` - LocalState uint64 `protobuf:"varint,2,opt,name=local_state,json=localState,proto3" json:"local_state,omitempty"` - RemoteClock uint64 `protobuf:"varint,3,opt,name=remote_clock,json=remoteClock,proto3" json:"remote_clock,omitempty"` - RemoteState uint64 `protobuf:"varint,4,opt,name=remote_state,json=remoteState,proto3" json:"remote_state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LocalClock uint64 `protobuf:"varint,1,opt,name=local_clock,json=localClock,proto3" json:"local_clock,omitempty"` + LocalState uint64 `protobuf:"varint,2,opt,name=local_state,json=localState,proto3" json:"local_state,omitempty"` + RemoteClock uint64 `protobuf:"varint,3,opt,name=remote_clock,json=remoteClock,proto3" json:"remote_clock,omitempty"` + RemoteState uint64 `protobuf:"varint,4,opt,name=remote_state,json=remoteState,proto3" json:"remote_state,omitempty"` } -func (m *ContactRequestPropagatedState) Reset() { *m = ContactRequestPropagatedState{} } -func (m *ContactRequestPropagatedState) String() string { return proto.CompactTextString(m) } -func (*ContactRequestPropagatedState) ProtoMessage() {} +func (x *ContactRequestPropagatedState) Reset() { + *x = ContactRequestPropagatedState{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactRequestPropagatedState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactRequestPropagatedState) ProtoMessage() {} + +func (x *ContactRequestPropagatedState) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactRequestPropagatedState.ProtoReflect.Descriptor instead. func (*ContactRequestPropagatedState) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{0} + return file_contact_proto_rawDescGZIP(), []int{0} } -func (m *ContactRequestPropagatedState) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactRequestPropagatedState.Unmarshal(m, b) -} -func (m *ContactRequestPropagatedState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactRequestPropagatedState.Marshal(b, m, deterministic) -} -func (m *ContactRequestPropagatedState) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactRequestPropagatedState.Merge(m, src) -} -func (m *ContactRequestPropagatedState) XXX_Size() int { - return xxx_messageInfo_ContactRequestPropagatedState.Size(m) -} -func (m *ContactRequestPropagatedState) XXX_DiscardUnknown() { - xxx_messageInfo_ContactRequestPropagatedState.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactRequestPropagatedState proto.InternalMessageInfo - -func (m *ContactRequestPropagatedState) GetLocalClock() uint64 { - if m != nil { - return m.LocalClock +func (x *ContactRequestPropagatedState) GetLocalClock() uint64 { + if x != nil { + return x.LocalClock } return 0 } -func (m *ContactRequestPropagatedState) GetLocalState() uint64 { - if m != nil { - return m.LocalState +func (x *ContactRequestPropagatedState) GetLocalState() uint64 { + if x != nil { + return x.LocalState } return 0 } -func (m *ContactRequestPropagatedState) GetRemoteClock() uint64 { - if m != nil { - return m.RemoteClock +func (x *ContactRequestPropagatedState) GetRemoteClock() uint64 { + if x != nil { + return x.RemoteClock } return 0 } -func (m *ContactRequestPropagatedState) GetRemoteState() uint64 { - if m != nil { - return m.RemoteState +func (x *ContactRequestPropagatedState) GetRemoteState() uint64 { + if x != nil { + return x.RemoteState } return 0 } type ContactUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` ProfileImage string `protobuf:"bytes,3,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` @@ -91,212 +103,346 @@ type ContactUpdate struct { ContactRequestClock uint64 `protobuf:"varint,5,opt,name=contact_request_clock,json=contactRequestClock,proto3" json:"contact_request_clock,omitempty"` ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,6,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"` PublicKey string `protobuf:"bytes,7,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ContactUpdate) Reset() { *m = ContactUpdate{} } -func (m *ContactUpdate) String() string { return proto.CompactTextString(m) } -func (*ContactUpdate) ProtoMessage() {} +func (x *ContactUpdate) Reset() { + *x = ContactUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactUpdate) ProtoMessage() {} + +func (x *ContactUpdate) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactUpdate.ProtoReflect.Descriptor instead. func (*ContactUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{1} + return file_contact_proto_rawDescGZIP(), []int{1} } -func (m *ContactUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactUpdate.Unmarshal(m, b) -} -func (m *ContactUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactUpdate.Marshal(b, m, deterministic) -} -func (m *ContactUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactUpdate.Merge(m, src) -} -func (m *ContactUpdate) XXX_Size() int { - return xxx_messageInfo_ContactUpdate.Size(m) -} -func (m *ContactUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_ContactUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactUpdate proto.InternalMessageInfo - -func (m *ContactUpdate) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *ContactUpdate) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *ContactUpdate) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *ContactUpdate) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *ContactUpdate) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *ContactUpdate) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *ContactUpdate) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *ContactUpdate) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *ContactUpdate) GetContactRequestClock() uint64 { - if m != nil { - return m.ContactRequestClock +func (x *ContactUpdate) GetContactRequestClock() uint64 { + if x != nil { + return x.ContactRequestClock } return 0 } -func (m *ContactUpdate) GetContactRequestPropagatedState() *ContactRequestPropagatedState { - if m != nil { - return m.ContactRequestPropagatedState +func (x *ContactUpdate) GetContactRequestPropagatedState() *ContactRequestPropagatedState { + if x != nil { + return x.ContactRequestPropagatedState } return nil } -func (m *ContactUpdate) GetPublicKey() string { - if m != nil { - return m.PublicKey +func (x *ContactUpdate) GetPublicKey() string { + if x != nil { + return x.PublicKey } return "" } type AcceptContactRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *AcceptContactRequest) Reset() { *m = AcceptContactRequest{} } -func (m *AcceptContactRequest) String() string { return proto.CompactTextString(m) } -func (*AcceptContactRequest) ProtoMessage() {} +func (x *AcceptContactRequest) Reset() { + *x = AcceptContactRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptContactRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptContactRequest) ProtoMessage() {} + +func (x *AcceptContactRequest) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptContactRequest.ProtoReflect.Descriptor instead. func (*AcceptContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{2} + return file_contact_proto_rawDescGZIP(), []int{2} } -func (m *AcceptContactRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptContactRequest.Unmarshal(m, b) -} -func (m *AcceptContactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptContactRequest.Marshal(b, m, deterministic) -} -func (m *AcceptContactRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptContactRequest.Merge(m, src) -} -func (m *AcceptContactRequest) XXX_Size() int { - return xxx_messageInfo_AcceptContactRequest.Size(m) -} -func (m *AcceptContactRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptContactRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptContactRequest proto.InternalMessageInfo - -func (m *AcceptContactRequest) GetId() string { - if m != nil { - return m.Id +func (x *AcceptContactRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptContactRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptContactRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type RetractContactRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *RetractContactRequest) Reset() { *m = RetractContactRequest{} } -func (m *RetractContactRequest) String() string { return proto.CompactTextString(m) } -func (*RetractContactRequest) ProtoMessage() {} +func (x *RetractContactRequest) Reset() { + *x = RetractContactRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RetractContactRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RetractContactRequest) ProtoMessage() {} + +func (x *RetractContactRequest) ProtoReflect() protoreflect.Message { + mi := &file_contact_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RetractContactRequest.ProtoReflect.Descriptor instead. func (*RetractContactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_a5036fff2565fb15, []int{3} + return file_contact_proto_rawDescGZIP(), []int{3} } -func (m *RetractContactRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RetractContactRequest.Unmarshal(m, b) -} -func (m *RetractContactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RetractContactRequest.Marshal(b, m, deterministic) -} -func (m *RetractContactRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RetractContactRequest.Merge(m, src) -} -func (m *RetractContactRequest) XXX_Size() int { - return xxx_messageInfo_RetractContactRequest.Size(m) -} -func (m *RetractContactRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RetractContactRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RetractContactRequest proto.InternalMessageInfo - -func (m *RetractContactRequest) GetId() string { - if m != nil { - return m.Id +func (x *RetractContactRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *RetractContactRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RetractContactRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func init() { - proto.RegisterType((*ContactRequestPropagatedState)(nil), "protobuf.ContactRequestPropagatedState") - proto.RegisterType((*ContactUpdate)(nil), "protobuf.ContactUpdate") - proto.RegisterType((*AcceptContactRequest)(nil), "protobuf.AcceptContactRequest") - proto.RegisterType((*RetractContactRequest)(nil), "protobuf.RetractContactRequest") +var File_contact_proto protoreflect.FileDescriptor + +var file_contact_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xa7, 0x01, 0x0a, 0x1d, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, + 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x22, 0xcd, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, + 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, + 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, + 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x70, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x22, 0x3c, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x22, 0x3d, 0x0a, 0x15, 0x52, 0x65, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("contact.proto", fileDescriptor_a5036fff2565fb15) +var ( + file_contact_proto_rawDescOnce sync.Once + file_contact_proto_rawDescData = file_contact_proto_rawDesc +) + +func file_contact_proto_rawDescGZIP() []byte { + file_contact_proto_rawDescOnce.Do(func() { + file_contact_proto_rawDescData = protoimpl.X.CompressGZIP(file_contact_proto_rawDescData) + }) + return file_contact_proto_rawDescData } -var fileDescriptor_a5036fff2565fb15 = []byte{ - // 348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x51, 0x3f, 0x4f, 0xfb, 0x30, - 0x14, 0x54, 0xf2, 0xeb, 0xbf, 0xbc, 0x34, 0xbf, 0x21, 0xb4, 0x52, 0x19, 0x2a, 0x4a, 0x18, 0xe8, - 0x14, 0xa4, 0x32, 0x02, 0x03, 0x74, 0x42, 0x48, 0x08, 0x19, 0xb1, 0xb0, 0x44, 0xae, 0xf3, 0x5a, - 0x45, 0x4d, 0x62, 0xe3, 0xb8, 0x43, 0x3f, 0x11, 0x9f, 0x86, 0xef, 0x84, 0x62, 0xbb, 0x34, 0x65, - 0xe8, 0xc0, 0x94, 0xf8, 0x7c, 0xef, 0x7c, 0x77, 0x0f, 0x02, 0xc6, 0x4b, 0x45, 0x99, 0x8a, 0x85, - 0xe4, 0x8a, 0x87, 0x3d, 0xfd, 0x59, 0x6c, 0x96, 0xd1, 0xa7, 0x03, 0xe3, 0xb9, 0xb9, 0x23, 0xf8, - 0xb1, 0xc1, 0x4a, 0xbd, 0x48, 0x2e, 0xe8, 0x8a, 0x2a, 0x4c, 0x5f, 0x15, 0x55, 0x18, 0x9e, 0x81, - 0x9f, 0x73, 0x46, 0xf3, 0x84, 0xe5, 0x9c, 0xad, 0x47, 0xce, 0xc4, 0x99, 0xb6, 0x08, 0x68, 0x68, - 0x5e, 0x23, 0x7b, 0x42, 0x55, 0xf3, 0x47, 0x6e, 0x83, 0x60, 0x14, 0xce, 0xa1, 0x2f, 0xb1, 0xe0, - 0x0a, 0xad, 0xc4, 0x3f, 0xcd, 0xf0, 0x0d, 0x66, 0x34, 0xf6, 0x14, 0x23, 0xd2, 0x6a, 0x52, 0xb4, - 0x4a, 0xf4, 0xe5, 0x42, 0x60, 0x9d, 0xbe, 0x89, 0xb4, 0xd6, 0x1d, 0x40, 0xbb, 0xe9, 0xc9, 0x1c, - 0xc2, 0x53, 0xe8, 0x61, 0x59, 0x25, 0x25, 0x2d, 0x8c, 0x17, 0x8f, 0x74, 0xb1, 0xac, 0x9e, 0x69, - 0x81, 0xe1, 0x05, 0x04, 0x42, 0xf2, 0x65, 0x96, 0x63, 0x92, 0x15, 0x74, 0x85, 0xda, 0x89, 0x47, - 0xfa, 0x16, 0x7c, 0xac, 0xb1, 0xda, 0x4a, 0x9a, 0x55, 0x22, 0xa7, 0x5b, 0xa3, 0xd1, 0xd2, 0x1c, - 0xdf, 0x62, 0x5a, 0x67, 0x06, 0x43, 0xdb, 0x67, 0x22, 0x4d, 0x69, 0x36, 0x59, 0x5b, 0x1b, 0x39, - 0x61, 0x07, 0x85, 0x9a, 0x84, 0x02, 0x26, 0xbf, 0x67, 0xc4, 0x4f, 0xd3, 0x36, 0x75, 0x67, 0xe2, - 0x4c, 0xfd, 0xd9, 0x65, 0xbc, 0xdb, 0x4e, 0x7c, 0x74, 0x33, 0x64, 0xcc, 0x8e, 0x2e, 0x6e, 0x0c, - 0x20, 0x36, 0x8b, 0x3c, 0x63, 0xc9, 0x1a, 0xb7, 0xa3, 0xae, 0x8e, 0xe1, 0x19, 0xe4, 0x09, 0xb7, - 0xd1, 0x2d, 0x0c, 0xee, 0x19, 0x43, 0xa1, 0x0e, 0x1f, 0x09, 0xff, 0x83, 0x9b, 0xa5, 0xba, 0x52, - 0x8f, 0xb8, 0x59, 0xba, 0x6f, 0xd9, 0x6d, 0xb4, 0x1c, 0xdd, 0xc1, 0x90, 0xa0, 0x92, 0x94, 0xfd, - 0x69, 0xfc, 0x21, 0x78, 0xf7, 0xe3, 0xab, 0x9b, 0x5d, 0xce, 0x45, 0x47, 0xff, 0x5d, 0x7f, 0x07, - 0x00, 0x00, 0xff, 0xff, 0xec, 0x6f, 0x01, 0xce, 0xa7, 0x02, 0x00, 0x00, +var file_contact_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_contact_proto_goTypes = []interface{}{ + (*ContactRequestPropagatedState)(nil), // 0: protobuf.ContactRequestPropagatedState + (*ContactUpdate)(nil), // 1: protobuf.ContactUpdate + (*AcceptContactRequest)(nil), // 2: protobuf.AcceptContactRequest + (*RetractContactRequest)(nil), // 3: protobuf.RetractContactRequest +} +var file_contact_proto_depIdxs = []int32{ + 0, // 0: protobuf.ContactUpdate.contact_request_propagated_state:type_name -> protobuf.ContactRequestPropagatedState + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_contact_proto_init() } +func file_contact_proto_init() { + if File_contact_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_contact_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactRequestPropagatedState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptContactRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RetractContactRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_contact_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_contact_proto_goTypes, + DependencyIndexes: file_contact_proto_depIdxs, + MessageInfos: file_contact_proto_msgTypes, + }.Build() + File_contact_proto = out.File + file_contact_proto_rawDesc = nil + file_contact_proto_goTypes = nil + file_contact_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/contact_verification.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/contact_verification.pb.go index db844291..44c129dc 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/contact_verification.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/contact_verification.pb.go @@ -1,245 +1,380 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: contact_verification.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type RequestContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Challenge string `protobuf:"bytes,3,opt,name=challenge,proto3" json:"challenge,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Challenge string `protobuf:"bytes,3,opt,name=challenge,proto3" json:"challenge,omitempty"` } -func (m *RequestContactVerification) Reset() { *m = RequestContactVerification{} } -func (m *RequestContactVerification) String() string { return proto.CompactTextString(m) } -func (*RequestContactVerification) ProtoMessage() {} +func (x *RequestContactVerification) Reset() { + *x = RequestContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestContactVerification) ProtoMessage() {} + +func (x *RequestContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestContactVerification.ProtoReflect.Descriptor instead. func (*RequestContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{0} + return file_contact_verification_proto_rawDescGZIP(), []int{0} } -func (m *RequestContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RequestContactVerification.Unmarshal(m, b) -} -func (m *RequestContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RequestContactVerification.Marshal(b, m, deterministic) -} -func (m *RequestContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_RequestContactVerification.Merge(m, src) -} -func (m *RequestContactVerification) XXX_Size() int { - return xxx_messageInfo_RequestContactVerification.Size(m) -} -func (m *RequestContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_RequestContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_RequestContactVerification proto.InternalMessageInfo - -func (m *RequestContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *RequestContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *RequestContactVerification) GetChallenge() string { - if m != nil { - return m.Challenge +func (x *RequestContactVerification) GetChallenge() string { + if x != nil { + return x.Challenge } return "" } type AcceptContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Response string `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"` } -func (m *AcceptContactVerification) Reset() { *m = AcceptContactVerification{} } -func (m *AcceptContactVerification) String() string { return proto.CompactTextString(m) } -func (*AcceptContactVerification) ProtoMessage() {} +func (x *AcceptContactVerification) Reset() { + *x = AcceptContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AcceptContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcceptContactVerification) ProtoMessage() {} + +func (x *AcceptContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AcceptContactVerification.ProtoReflect.Descriptor instead. func (*AcceptContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{1} + return file_contact_verification_proto_rawDescGZIP(), []int{1} } -func (m *AcceptContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AcceptContactVerification.Unmarshal(m, b) -} -func (m *AcceptContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AcceptContactVerification.Marshal(b, m, deterministic) -} -func (m *AcceptContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_AcceptContactVerification.Merge(m, src) -} -func (m *AcceptContactVerification) XXX_Size() int { - return xxx_messageInfo_AcceptContactVerification.Size(m) -} -func (m *AcceptContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_AcceptContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_AcceptContactVerification proto.InternalMessageInfo - -func (m *AcceptContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *AcceptContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *AcceptContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *AcceptContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *AcceptContactVerification) GetResponse() string { - if m != nil { - return m.Response +func (x *AcceptContactVerification) GetResponse() string { + if x != nil { + return x.Response } return "" } type DeclineContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeclineContactVerification) Reset() { *m = DeclineContactVerification{} } -func (m *DeclineContactVerification) String() string { return proto.CompactTextString(m) } -func (*DeclineContactVerification) ProtoMessage() {} +func (x *DeclineContactVerification) Reset() { + *x = DeclineContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclineContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclineContactVerification) ProtoMessage() {} + +func (x *DeclineContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclineContactVerification.ProtoReflect.Descriptor instead. func (*DeclineContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{2} + return file_contact_verification_proto_rawDescGZIP(), []int{2} } -func (m *DeclineContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeclineContactVerification.Unmarshal(m, b) -} -func (m *DeclineContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeclineContactVerification.Marshal(b, m, deterministic) -} -func (m *DeclineContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeclineContactVerification.Merge(m, src) -} -func (m *DeclineContactVerification) XXX_Size() int { - return xxx_messageInfo_DeclineContactVerification.Size(m) -} -func (m *DeclineContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_DeclineContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_DeclineContactVerification proto.InternalMessageInfo - -func (m *DeclineContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *DeclineContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *DeclineContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *DeclineContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } type CancelContactVerification struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *CancelContactVerification) Reset() { *m = CancelContactVerification{} } -func (m *CancelContactVerification) String() string { return proto.CompactTextString(m) } -func (*CancelContactVerification) ProtoMessage() {} +func (x *CancelContactVerification) Reset() { + *x = CancelContactVerification{} + if protoimpl.UnsafeEnabled { + mi := &file_contact_verification_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelContactVerification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelContactVerification) ProtoMessage() {} + +func (x *CancelContactVerification) ProtoReflect() protoreflect.Message { + mi := &file_contact_verification_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelContactVerification.ProtoReflect.Descriptor instead. func (*CancelContactVerification) Descriptor() ([]byte, []int) { - return fileDescriptor_d6997df64de39454, []int{3} + return file_contact_verification_proto_rawDescGZIP(), []int{3} } -func (m *CancelContactVerification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelContactVerification.Unmarshal(m, b) -} -func (m *CancelContactVerification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelContactVerification.Marshal(b, m, deterministic) -} -func (m *CancelContactVerification) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelContactVerification.Merge(m, src) -} -func (m *CancelContactVerification) XXX_Size() int { - return xxx_messageInfo_CancelContactVerification.Size(m) -} -func (m *CancelContactVerification) XXX_DiscardUnknown() { - xxx_messageInfo_CancelContactVerification.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelContactVerification proto.InternalMessageInfo - -func (m *CancelContactVerification) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *CancelContactVerification) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *CancelContactVerification) GetId() string { - if m != nil { - return m.Id +func (x *CancelContactVerification) GetId() string { + if x != nil { + return x.Id } return "" } -func init() { - proto.RegisterType((*RequestContactVerification)(nil), "protobuf.RequestContactVerification") - proto.RegisterType((*AcceptContactVerification)(nil), "protobuf.AcceptContactVerification") - proto.RegisterType((*DeclineContactVerification)(nil), "protobuf.DeclineContactVerification") - proto.RegisterType((*CancelContactVerification)(nil), "protobuf.CancelContactVerification") +var File_contact_verification_proto protoreflect.FileDescriptor + +var file_contact_verification_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x50, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x22, 0x5d, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x0a, 0x1a, 0x44, 0x65, 0x63, 0x6c, 0x69, + 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x19, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x42, 0x0d, + 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("contact_verification.proto", fileDescriptor_d6997df64de39454) +var ( + file_contact_verification_proto_rawDescOnce sync.Once + file_contact_verification_proto_rawDescData = file_contact_verification_proto_rawDesc +) + +func file_contact_verification_proto_rawDescGZIP() []byte { + file_contact_verification_proto_rawDescOnce.Do(func() { + file_contact_verification_proto_rawDescData = protoimpl.X.CompressGZIP(file_contact_verification_proto_rawDescData) + }) + return file_contact_verification_proto_rawDescData } -var fileDescriptor_d6997df64de39454 = []byte{ - // 194 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0xce, 0xcf, 0x2b, - 0x49, 0x4c, 0x2e, 0x89, 0x2f, 0x4b, 0x2d, 0xca, 0x4c, 0xcb, 0x4c, 0x4e, 0x2c, 0xc9, 0xcc, 0xcf, - 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0x01, 0x5c, - 0x52, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0xce, 0x10, 0xe5, 0x61, 0x48, 0xaa, 0x85, 0x44, - 0xb8, 0x58, 0x93, 0x73, 0xf2, 0x93, 0xb3, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x20, 0x1c, - 0x21, 0x19, 0x2e, 0xce, 0xe4, 0x8c, 0xc4, 0x9c, 0x9c, 0xd4, 0xbc, 0xf4, 0x54, 0x09, 0x66, 0x05, - 0x46, 0x0d, 0xce, 0x20, 0x84, 0x80, 0x52, 0x2c, 0x97, 0xa4, 0x63, 0x72, 0x72, 0x6a, 0x01, 0x09, - 0x06, 0xf2, 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x81, 0x4d, 0x62, 0xca, 0x4c, 0x11, 0x92, 0xe2, - 0xe2, 0x28, 0x4a, 0x2d, 0x2e, 0xc8, 0xcf, 0x2b, 0x86, 0x99, 0x0f, 0xe7, 0x2b, 0x39, 0x71, 0x49, - 0xb9, 0xa4, 0x26, 0xe7, 0x64, 0xe6, 0xa5, 0x92, 0x6d, 0xbe, 0x92, 0x23, 0x97, 0xa4, 0x73, 0x62, - 0x5e, 0x72, 0x6a, 0x0e, 0xd9, 0x46, 0x38, 0xf1, 0x46, 0x71, 0xeb, 0xe9, 0x5b, 0xc3, 0x82, 0x31, - 0x89, 0x0d, 0xcc, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x2b, 0x89, 0x8f, 0x75, 0x01, - 0x00, 0x00, +var file_contact_verification_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_contact_verification_proto_goTypes = []interface{}{ + (*RequestContactVerification)(nil), // 0: protobuf.RequestContactVerification + (*AcceptContactVerification)(nil), // 1: protobuf.AcceptContactVerification + (*DeclineContactVerification)(nil), // 2: protobuf.DeclineContactVerification + (*CancelContactVerification)(nil), // 3: protobuf.CancelContactVerification +} +var file_contact_verification_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_contact_verification_proto_init() } +func file_contact_verification_proto_init() { + if File_contact_verification_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_contact_verification_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AcceptContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeclineContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_contact_verification_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelContactVerification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_contact_verification_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_contact_verification_proto_goTypes, + DependencyIndexes: file_contact_verification_proto_depIdxs, + MessageInfos: file_contact_verification_proto_msgTypes, + }.Build() + File_contact_verification_proto = out.File + file_contact_verification_proto_rawDesc = nil + file_contact_verification_proto_goTypes = nil + file_contact_verification_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/emoji_reaction.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/emoji_reaction.pb.go index f4df3ea1..cd33ee74 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/emoji_reaction.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/emoji_reaction.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: emoji_reaction.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type EmojiReaction_Type int32 @@ -32,35 +32,60 @@ const ( EmojiReaction_ANGRY EmojiReaction_Type = 6 ) -var EmojiReaction_Type_name = map[int32]string{ - 0: "UNKNOWN_EMOJI_REACTION_TYPE", - 1: "LOVE", - 2: "THUMBS_UP", - 3: "THUMBS_DOWN", - 4: "LAUGH", - 5: "SAD", - 6: "ANGRY", -} +// Enum value maps for EmojiReaction_Type. +var ( + EmojiReaction_Type_name = map[int32]string{ + 0: "UNKNOWN_EMOJI_REACTION_TYPE", + 1: "LOVE", + 2: "THUMBS_UP", + 3: "THUMBS_DOWN", + 4: "LAUGH", + 5: "SAD", + 6: "ANGRY", + } + EmojiReaction_Type_value = map[string]int32{ + "UNKNOWN_EMOJI_REACTION_TYPE": 0, + "LOVE": 1, + "THUMBS_UP": 2, + "THUMBS_DOWN": 3, + "LAUGH": 4, + "SAD": 5, + "ANGRY": 6, + } +) -var EmojiReaction_Type_value = map[string]int32{ - "UNKNOWN_EMOJI_REACTION_TYPE": 0, - "LOVE": 1, - "THUMBS_UP": 2, - "THUMBS_DOWN": 3, - "LAUGH": 4, - "SAD": 5, - "ANGRY": 6, +func (x EmojiReaction_Type) Enum() *EmojiReaction_Type { + p := new(EmojiReaction_Type) + *p = x + return p } func (x EmojiReaction_Type) String() string { - return proto.EnumName(EmojiReaction_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (EmojiReaction_Type) Descriptor() protoreflect.EnumDescriptor { + return file_emoji_reaction_proto_enumTypes[0].Descriptor() +} + +func (EmojiReaction_Type) Type() protoreflect.EnumType { + return &file_emoji_reaction_proto_enumTypes[0] +} + +func (x EmojiReaction_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EmojiReaction_Type.Descriptor instead. func (EmojiReaction_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0a088c907bbc7ed6, []int{0, 0} + return file_emoji_reaction_proto_rawDescGZIP(), []int{0, 0} } type EmojiReaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // clock Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // chat_id the ID of the chat the message belongs to, for query efficiency the chat_id is stored in the db even though the @@ -75,117 +100,192 @@ type EmojiReaction struct { // whether this is a rectraction of a previously sent emoji Retracted bool `protobuf:"varint,6,opt,name=retracted,proto3" json:"retracted,omitempty"` // Grant for organisation chat messages - Grant []byte `protobuf:"bytes,7,opt,name=grant,proto3" json:"grant,omitempty"` // Deprecated: Do not use. - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // + // Deprecated: Marked as deprecated in emoji_reaction.proto. + Grant []byte `protobuf:"bytes,7,opt,name=grant,proto3" json:"grant,omitempty"` } -func (m *EmojiReaction) Reset() { *m = EmojiReaction{} } -func (m *EmojiReaction) String() string { return proto.CompactTextString(m) } -func (*EmojiReaction) ProtoMessage() {} +func (x *EmojiReaction) Reset() { + *x = EmojiReaction{} + if protoimpl.UnsafeEnabled { + mi := &file_emoji_reaction_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EmojiReaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmojiReaction) ProtoMessage() {} + +func (x *EmojiReaction) ProtoReflect() protoreflect.Message { + mi := &file_emoji_reaction_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EmojiReaction.ProtoReflect.Descriptor instead. func (*EmojiReaction) Descriptor() ([]byte, []int) { - return fileDescriptor_0a088c907bbc7ed6, []int{0} + return file_emoji_reaction_proto_rawDescGZIP(), []int{0} } -func (m *EmojiReaction) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EmojiReaction.Unmarshal(m, b) -} -func (m *EmojiReaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EmojiReaction.Marshal(b, m, deterministic) -} -func (m *EmojiReaction) XXX_Merge(src proto.Message) { - xxx_messageInfo_EmojiReaction.Merge(m, src) -} -func (m *EmojiReaction) XXX_Size() int { - return xxx_messageInfo_EmojiReaction.Size(m) -} -func (m *EmojiReaction) XXX_DiscardUnknown() { - xxx_messageInfo_EmojiReaction.DiscardUnknown(m) -} - -var xxx_messageInfo_EmojiReaction proto.InternalMessageInfo - -func (m *EmojiReaction) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *EmojiReaction) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *EmojiReaction) GetChatId() string { - if m != nil { - return m.ChatId +func (x *EmojiReaction) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *EmojiReaction) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *EmojiReaction) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *EmojiReaction) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *EmojiReaction) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func (m *EmojiReaction) GetType() EmojiReaction_Type { - if m != nil { - return m.Type +func (x *EmojiReaction) GetType() EmojiReaction_Type { + if x != nil { + return x.Type } return EmojiReaction_UNKNOWN_EMOJI_REACTION_TYPE } -func (m *EmojiReaction) GetRetracted() bool { - if m != nil { - return m.Retracted +func (x *EmojiReaction) GetRetracted() bool { + if x != nil { + return x.Retracted } return false } -// Deprecated: Do not use. -func (m *EmojiReaction) GetGrant() []byte { - if m != nil { - return m.Grant +// Deprecated: Marked as deprecated in emoji_reaction.proto. +func (x *EmojiReaction) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func init() { - proto.RegisterEnum("protobuf.EmojiReaction_Type", EmojiReaction_Type_name, EmojiReaction_Type_value) - proto.RegisterType((*EmojiReaction)(nil), "protobuf.EmojiReaction") +var File_emoji_reaction_proto protoreflect.FileDescriptor + +var file_emoji_reaction_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x1a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x02, + 0x0a, 0x0d, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x38, 0x0a, + 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x22, 0x70, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x4d, 0x4f, 0x4a, 0x49, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, + 0x56, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x55, + 0x50, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x44, 0x4f, + 0x57, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x41, 0x55, 0x47, 0x48, 0x10, 0x04, 0x12, + 0x07, 0x0a, 0x03, 0x53, 0x41, 0x44, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4e, 0x47, 0x52, + 0x59, 0x10, 0x06, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("emoji_reaction.proto", fileDescriptor_0a088c907bbc7ed6) +var ( + file_emoji_reaction_proto_rawDescOnce sync.Once + file_emoji_reaction_proto_rawDescData = file_emoji_reaction_proto_rawDesc +) + +func file_emoji_reaction_proto_rawDescGZIP() []byte { + file_emoji_reaction_proto_rawDescOnce.Do(func() { + file_emoji_reaction_proto_rawDescData = protoimpl.X.CompressGZIP(file_emoji_reaction_proto_rawDescData) + }) + return file_emoji_reaction_proto_rawDescData } -var fileDescriptor_0a088c907bbc7ed6 = []byte{ - // 332 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x8f, 0x51, 0x4f, 0x82, 0x50, - 0x1c, 0xc5, 0xbb, 0x08, 0x28, 0x7f, 0xb4, 0xd8, 0x9d, 0x2d, 0x56, 0xb6, 0x98, 0x4f, 0x3c, 0x51, - 0xab, 0x97, 0xb6, 0x9e, 0x30, 0x99, 0x52, 0x0a, 0xee, 0x0a, 0x39, 0x7b, 0x61, 0x08, 0x37, 0xb3, - 0x42, 0x18, 0xe2, 0x83, 0x9f, 0xbb, 0x2f, 0xd0, 0xb8, 0xe8, 0x5c, 0x4f, 0xf7, 0x9e, 0xdf, 0x39, - 0x67, 0xf7, 0x5c, 0x68, 0xd3, 0x24, 0xfd, 0x5a, 0x05, 0x39, 0x0d, 0xa3, 0x62, 0x95, 0xae, 0x8d, - 0x2c, 0x4f, 0x8b, 0x14, 0x37, 0xd8, 0xb1, 0xd8, 0x7e, 0x5c, 0xca, 0x74, 0xbd, 0x4d, 0x36, 0x15, - 0xee, 0xfe, 0x72, 0xd0, 0xb2, 0xca, 0x3c, 0xd9, 0xc7, 0x71, 0x1b, 0x84, 0xe8, 0x27, 0x8d, 0xbe, - 0x55, 0xa4, 0x21, 0x9d, 0x27, 0x95, 0xc0, 0x17, 0x50, 0x8f, 0x3e, 0xc3, 0x22, 0x58, 0xc5, 0x2a, - 0xa7, 0x21, 0x5d, 0x22, 0x62, 0x29, 0xed, 0x18, 0x5f, 0x03, 0x24, 0x74, 0xb3, 0x09, 0x97, 0xb4, - 0xf4, 0x6a, 0xcc, 0x93, 0xf6, 0xc4, 0x8e, 0xf1, 0x23, 0x34, 0x0f, 0x76, 0xb1, 0xcb, 0xa8, 0xca, - 0x6b, 0x48, 0x3f, 0xbd, 0x3f, 0x37, 0x0e, 0x6b, 0x8c, 0x71, 0xe5, 0x7a, 0xbb, 0x8c, 0x12, 0x39, - 0x39, 0x0a, 0x7c, 0x07, 0x3c, 0x6b, 0x08, 0xac, 0xd1, 0x39, 0x36, 0xfe, 0xcd, 0x35, 0x58, 0x91, - 0x25, 0x71, 0x07, 0xa4, 0x9c, 0x16, 0x79, 0x18, 0x15, 0x34, 0x56, 0x45, 0x0d, 0xe9, 0x0d, 0x72, - 0x04, 0x58, 0x05, 0x61, 0x99, 0x87, 0xeb, 0x42, 0xad, 0x6b, 0x48, 0x6f, 0xf6, 0x38, 0x15, 0x91, - 0x0a, 0x74, 0x33, 0xe0, 0xd9, 0x8b, 0x37, 0x70, 0xe5, 0x3b, 0xaf, 0x8e, 0x3b, 0x73, 0x02, 0x6b, - 0xec, 0xbe, 0xd8, 0x01, 0xb1, 0xcc, 0x67, 0xcf, 0x76, 0x9d, 0xc0, 0x9b, 0x4f, 0x2c, 0xe5, 0x04, - 0x37, 0x80, 0x1f, 0xb9, 0x6f, 0x96, 0x82, 0x70, 0x0b, 0x24, 0x6f, 0xe8, 0x8f, 0x7b, 0xd3, 0xc0, - 0x9f, 0x28, 0x1c, 0x3e, 0x03, 0x79, 0x2f, 0xfb, 0xee, 0xcc, 0x51, 0x6a, 0x58, 0x02, 0x61, 0x64, - 0xfa, 0x83, 0xa1, 0xc2, 0xe3, 0x3a, 0xd4, 0xa6, 0x66, 0x5f, 0x11, 0x4a, 0x66, 0x3a, 0x03, 0x32, - 0x57, 0xc4, 0x5e, 0xeb, 0x5d, 0x36, 0x6e, 0x9f, 0x0e, 0x3f, 0x5a, 0x88, 0xec, 0xf6, 0xf0, 0x17, - 0x00, 0x00, 0xff, 0xff, 0x9a, 0x6c, 0xc6, 0xc0, 0xba, 0x01, 0x00, 0x00, +var file_emoji_reaction_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_emoji_reaction_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_emoji_reaction_proto_goTypes = []interface{}{ + (EmojiReaction_Type)(0), // 0: protobuf.EmojiReaction.Type + (*EmojiReaction)(nil), // 1: protobuf.EmojiReaction + (MessageType)(0), // 2: protobuf.MessageType +} +var file_emoji_reaction_proto_depIdxs = []int32{ + 2, // 0: protobuf.EmojiReaction.message_type:type_name -> protobuf.MessageType + 0, // 1: protobuf.EmojiReaction.type:type_name -> protobuf.EmojiReaction.Type + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_emoji_reaction_proto_init() } +func file_emoji_reaction_proto_init() { + if File_emoji_reaction_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_emoji_reaction_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EmojiReaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_emoji_reaction_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_emoji_reaction_proto_goTypes, + DependencyIndexes: file_emoji_reaction_proto_depIdxs, + EnumInfos: file_emoji_reaction_proto_enumTypes, + MessageInfos: file_emoji_reaction_proto_msgTypes, + }.Build() + File_emoji_reaction_proto = out.File + file_emoji_reaction_proto_rawDesc = nil + file_emoji_reaction_proto_goTypes = nil + file_emoji_reaction_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/enums.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/enums.pb.go index 381da356..3db853ac 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/enums.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/enums.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: enums.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MessageType int32 @@ -34,32 +34,53 @@ const ( MessageType_SYSTEM_MESSAGE_GAP MessageType = 6 ) -var MessageType_name = map[int32]string{ - 0: "UNKNOWN_MESSAGE_TYPE", - 1: "ONE_TO_ONE", - 2: "PUBLIC_GROUP", - 3: "PRIVATE_GROUP", - 4: "SYSTEM_MESSAGE_PRIVATE_GROUP", - 5: "COMMUNITY_CHAT", - 6: "SYSTEM_MESSAGE_GAP", -} +// Enum value maps for MessageType. +var ( + MessageType_name = map[int32]string{ + 0: "UNKNOWN_MESSAGE_TYPE", + 1: "ONE_TO_ONE", + 2: "PUBLIC_GROUP", + 3: "PRIVATE_GROUP", + 4: "SYSTEM_MESSAGE_PRIVATE_GROUP", + 5: "COMMUNITY_CHAT", + 6: "SYSTEM_MESSAGE_GAP", + } + MessageType_value = map[string]int32{ + "UNKNOWN_MESSAGE_TYPE": 0, + "ONE_TO_ONE": 1, + "PUBLIC_GROUP": 2, + "PRIVATE_GROUP": 3, + "SYSTEM_MESSAGE_PRIVATE_GROUP": 4, + "COMMUNITY_CHAT": 5, + "SYSTEM_MESSAGE_GAP": 6, + } +) -var MessageType_value = map[string]int32{ - "UNKNOWN_MESSAGE_TYPE": 0, - "ONE_TO_ONE": 1, - "PUBLIC_GROUP": 2, - "PRIVATE_GROUP": 3, - "SYSTEM_MESSAGE_PRIVATE_GROUP": 4, - "COMMUNITY_CHAT": 5, - "SYSTEM_MESSAGE_GAP": 6, +func (x MessageType) Enum() *MessageType { + p := new(MessageType) + *p = x + return p } func (x MessageType) String() string { - return proto.EnumName(MessageType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (MessageType) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[0].Descriptor() +} + +func (MessageType) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[0] +} + +func (x MessageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MessageType.Descriptor instead. func (MessageType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{0} + return file_enums_proto_rawDescGZIP(), []int{0} } type ImageFormat int32 @@ -73,28 +94,49 @@ const ( ImageFormat_GIF ImageFormat = 4 ) -var ImageFormat_name = map[int32]string{ - 0: "UNKNOWN_IMAGE_FORMAT", - 1: "PNG", - 2: "JPEG", - 3: "WEBP", - 4: "GIF", -} +// Enum value maps for ImageFormat. +var ( + ImageFormat_name = map[int32]string{ + 0: "UNKNOWN_IMAGE_FORMAT", + 1: "PNG", + 2: "JPEG", + 3: "WEBP", + 4: "GIF", + } + ImageFormat_value = map[string]int32{ + "UNKNOWN_IMAGE_FORMAT": 0, + "PNG": 1, + "JPEG": 2, + "WEBP": 3, + "GIF": 4, + } +) -var ImageFormat_value = map[string]int32{ - "UNKNOWN_IMAGE_FORMAT": 0, - "PNG": 1, - "JPEG": 2, - "WEBP": 3, - "GIF": 4, +func (x ImageFormat) Enum() *ImageFormat { + p := new(ImageFormat) + *p = x + return p } func (x ImageFormat) String() string { - return proto.EnumName(ImageFormat_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (ImageFormat) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[1].Descriptor() +} + +func (ImageFormat) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[1] +} + +func (x ImageFormat) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ImageFormat.Descriptor instead. func (ImageFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{1} + return file_enums_proto_rawDescGZIP(), []int{1} } type CommunityTokenType int32 @@ -106,57 +148,125 @@ const ( CommunityTokenType_ENS CommunityTokenType = 3 ) -var CommunityTokenType_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_TYPE", - 1: "ERC20", - 2: "ERC721", - 3: "ENS", -} +// Enum value maps for CommunityTokenType. +var ( + CommunityTokenType_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_TYPE", + 1: "ERC20", + 2: "ERC721", + 3: "ENS", + } + CommunityTokenType_value = map[string]int32{ + "UNKNOWN_TOKEN_TYPE": 0, + "ERC20": 1, + "ERC721": 2, + "ENS": 3, + } +) -var CommunityTokenType_value = map[string]int32{ - "UNKNOWN_TOKEN_TYPE": 0, - "ERC20": 1, - "ERC721": 2, - "ENS": 3, +func (x CommunityTokenType) Enum() *CommunityTokenType { + p := new(CommunityTokenType) + *p = x + return p } func (x CommunityTokenType) String() string { - return proto.EnumName(CommunityTokenType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (CommunityTokenType) Descriptor() protoreflect.EnumDescriptor { + return file_enums_proto_enumTypes[2].Descriptor() +} + +func (CommunityTokenType) Type() protoreflect.EnumType { + return &file_enums_proto_enumTypes[2] +} + +func (x CommunityTokenType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommunityTokenType.Descriptor instead. func (CommunityTokenType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_888b6bd9597961ff, []int{2} + return file_enums_proto_rawDescGZIP(), []int{2} } -func init() { - proto.RegisterEnum("protobuf.MessageType", MessageType_name, MessageType_value) - proto.RegisterEnum("protobuf.ImageFormat", ImageFormat_name, ImageFormat_value) - proto.RegisterEnum("protobuf.CommunityTokenType", CommunityTokenType_name, CommunityTokenType_value) +var File_enums_proto protoreflect.FileDescriptor + +var file_enums_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2a, 0xaa, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x4e, 0x45, 0x10, + 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, + 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x47, + 0x41, 0x50, 0x10, 0x06, 0x2a, 0x4d, 0x0a, 0x0b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, + 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, + 0x03, 0x50, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x50, 0x45, 0x47, 0x10, 0x02, + 0x12, 0x08, 0x0a, 0x04, 0x57, 0x45, 0x42, 0x50, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x49, + 0x46, 0x10, 0x04, 0x2a, 0x4c, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x43, 0x32, 0x30, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x45, 0x52, 0x43, 0x37, 0x32, 0x31, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x4e, 0x53, 0x10, + 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("enums.proto", fileDescriptor_888b6bd9597961ff) +var ( + file_enums_proto_rawDescOnce sync.Once + file_enums_proto_rawDescData = file_enums_proto_rawDesc +) + +func file_enums_proto_rawDescGZIP() []byte { + file_enums_proto_rawDescOnce.Do(func() { + file_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_enums_proto_rawDescData) + }) + return file_enums_proto_rawDescData } -var fileDescriptor_888b6bd9597961ff = []byte{ - // 302 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0x4b, 0x4f, 0xfa, 0x50, - 0x10, 0xc5, 0x29, 0xe5, 0xf5, 0x9f, 0xfe, 0x21, 0xe3, 0xc4, 0x10, 0x17, 0x2e, 0x5c, 0xb3, 0x40, - 0xc5, 0x85, 0x0b, 0x57, 0xa5, 0x19, 0x6a, 0x85, 0xfb, 0x48, 0x7b, 0x2b, 0xc1, 0x4d, 0x03, 0xc9, - 0x95, 0x18, 0x53, 0x4a, 0x78, 0x2c, 0xf8, 0x4a, 0x7e, 0x4a, 0x53, 0x22, 0x46, 0x5d, 0xcd, 0xc9, - 0xe4, 0xcc, 0x2f, 0x67, 0x0e, 0x78, 0x76, 0xb5, 0xcf, 0xb7, 0xfd, 0xf5, 0xa6, 0xd8, 0x15, 0xd4, - 0x3a, 0x8e, 0xc5, 0xfe, 0xb5, 0xf7, 0xe1, 0x80, 0x27, 0xec, 0x76, 0x3b, 0x5f, 0x5a, 0x73, 0x58, - 0x5b, 0xba, 0x80, 0xf3, 0x54, 0x8e, 0xa5, 0x9a, 0xca, 0x4c, 0x70, 0x92, 0xf8, 0x21, 0x67, 0x66, - 0xa6, 0x19, 0x2b, 0xd4, 0x01, 0x50, 0x92, 0x33, 0xa3, 0x32, 0x25, 0x19, 0x1d, 0x42, 0xf8, 0xaf, - 0xd3, 0xe1, 0x24, 0x0a, 0xb2, 0x30, 0x56, 0xa9, 0xc6, 0x2a, 0x9d, 0x41, 0x5b, 0xc7, 0xd1, 0xb3, - 0x6f, 0xf8, 0x6b, 0xe5, 0xd2, 0x15, 0x5c, 0x26, 0xb3, 0xc4, 0xb0, 0xf8, 0xa6, 0xfd, 0x76, 0xd4, - 0x88, 0xa0, 0x13, 0x28, 0x21, 0x52, 0x19, 0x99, 0x59, 0x16, 0x3c, 0xfa, 0x06, 0xeb, 0xd4, 0x05, - 0xfa, 0x73, 0x15, 0xfa, 0x1a, 0x1b, 0x3d, 0x01, 0x5e, 0x94, 0xcf, 0x97, 0x76, 0x54, 0x6c, 0xf2, - 0xf9, 0xee, 0x67, 0xd6, 0x48, 0x94, 0xae, 0x91, 0x8a, 0x85, 0x6f, 0xb0, 0x42, 0x4d, 0x70, 0xb5, - 0x0c, 0xd1, 0xa1, 0x16, 0xd4, 0x9e, 0x34, 0x87, 0x58, 0x2d, 0xd5, 0x94, 0x87, 0x65, 0xa6, 0x26, - 0xb8, 0x61, 0x34, 0xc2, 0x5a, 0x6f, 0x02, 0x14, 0x14, 0x79, 0xbe, 0x5f, 0xbd, 0xed, 0x0e, 0xa6, - 0x78, 0xb7, 0xab, 0x63, 0x03, 0x5d, 0xa0, 0x13, 0xd5, 0xa8, 0x31, 0xcb, 0xd3, 0xff, 0xff, 0xa0, - 0xce, 0x71, 0x30, 0xb8, 0x41, 0x87, 0x00, 0x1a, 0x1c, 0x07, 0xf7, 0x83, 0x5b, 0xac, 0x96, 0x34, - 0x96, 0x09, 0xba, 0xc3, 0xf6, 0x8b, 0xd7, 0xbf, 0x7e, 0x38, 0x15, 0xbb, 0x68, 0x1c, 0xd5, 0xdd, - 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa8, 0x34, 0x70, 0xdb, 0x78, 0x01, 0x00, 0x00, +var file_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_enums_proto_goTypes = []interface{}{ + (MessageType)(0), // 0: protobuf.MessageType + (ImageFormat)(0), // 1: protobuf.ImageFormat + (CommunityTokenType)(0), // 2: protobuf.CommunityTokenType +} +var file_enums_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_enums_proto_init() } +func file_enums_proto_init() { + if File_enums_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_enums_proto_rawDesc, + NumEnums: 3, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_enums_proto_goTypes, + DependencyIndexes: file_enums_proto_depIdxs, + EnumInfos: file_enums_proto_enumTypes, + }.Build() + File_enums_proto = out.File + file_enums_proto_rawDesc = nil + file_enums_proto_goTypes = nil + file_enums_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/group_chat_invitation.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/group_chat_invitation.pb.go index fffce089..ed1a98a2 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/group_chat_invitation.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/group_chat_invitation.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: group_chat_invitation.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type GroupChatInvitation_State int32 @@ -29,29 +29,54 @@ const ( GroupChatInvitation_APPROVED GroupChatInvitation_State = 3 ) -var GroupChatInvitation_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "REQUEST", - 2: "REJECTED", - 3: "APPROVED", -} +// Enum value maps for GroupChatInvitation_State. +var ( + GroupChatInvitation_State_name = map[int32]string{ + 0: "UNKNOWN", + 1: "REQUEST", + 2: "REJECTED", + 3: "APPROVED", + } + GroupChatInvitation_State_value = map[string]int32{ + "UNKNOWN": 0, + "REQUEST": 1, + "REJECTED": 2, + "APPROVED": 3, + } +) -var GroupChatInvitation_State_value = map[string]int32{ - "UNKNOWN": 0, - "REQUEST": 1, - "REJECTED": 2, - "APPROVED": 3, +func (x GroupChatInvitation_State) Enum() *GroupChatInvitation_State { + p := new(GroupChatInvitation_State) + *p = x + return p } func (x GroupChatInvitation_State) String() string { - return proto.EnumName(GroupChatInvitation_State_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (GroupChatInvitation_State) Descriptor() protoreflect.EnumDescriptor { + return file_group_chat_invitation_proto_enumTypes[0].Descriptor() +} + +func (GroupChatInvitation_State) Type() protoreflect.EnumType { + return &file_group_chat_invitation_proto_enumTypes[0] +} + +func (x GroupChatInvitation_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GroupChatInvitation_State.Descriptor instead. func (GroupChatInvitation_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a6a73333de6a8ebe, []int{0, 0} + return file_group_chat_invitation_proto_rawDescGZIP(), []int{0, 0} } type GroupChatInvitation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // clock Lamport timestamp of the chat message Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // chat_id the ID of the private group chat the message belongs to, for query efficiency the chat_id is stored in the db even though the @@ -59,90 +84,157 @@ type GroupChatInvitation struct { ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` IntroductionMessage string `protobuf:"bytes,3,opt,name=introduction_message,json=introductionMessage,proto3" json:"introduction_message,omitempty"` // state of invitation - State GroupChatInvitation_State `protobuf:"varint,4,opt,name=state,proto3,enum=protobuf.GroupChatInvitation_State" json:"state,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + State GroupChatInvitation_State `protobuf:"varint,4,opt,name=state,proto3,enum=protobuf.GroupChatInvitation_State" json:"state,omitempty"` } -func (m *GroupChatInvitation) Reset() { *m = GroupChatInvitation{} } -func (m *GroupChatInvitation) String() string { return proto.CompactTextString(m) } -func (*GroupChatInvitation) ProtoMessage() {} +func (x *GroupChatInvitation) Reset() { + *x = GroupChatInvitation{} + if protoimpl.UnsafeEnabled { + mi := &file_group_chat_invitation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GroupChatInvitation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupChatInvitation) ProtoMessage() {} + +func (x *GroupChatInvitation) ProtoReflect() protoreflect.Message { + mi := &file_group_chat_invitation_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupChatInvitation.ProtoReflect.Descriptor instead. func (*GroupChatInvitation) Descriptor() ([]byte, []int) { - return fileDescriptor_a6a73333de6a8ebe, []int{0} + return file_group_chat_invitation_proto_rawDescGZIP(), []int{0} } -func (m *GroupChatInvitation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GroupChatInvitation.Unmarshal(m, b) -} -func (m *GroupChatInvitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GroupChatInvitation.Marshal(b, m, deterministic) -} -func (m *GroupChatInvitation) XXX_Merge(src proto.Message) { - xxx_messageInfo_GroupChatInvitation.Merge(m, src) -} -func (m *GroupChatInvitation) XXX_Size() int { - return xxx_messageInfo_GroupChatInvitation.Size(m) -} -func (m *GroupChatInvitation) XXX_DiscardUnknown() { - xxx_messageInfo_GroupChatInvitation.DiscardUnknown(m) -} - -var xxx_messageInfo_GroupChatInvitation proto.InternalMessageInfo - -func (m *GroupChatInvitation) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *GroupChatInvitation) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *GroupChatInvitation) GetChatId() string { - if m != nil { - return m.ChatId +func (x *GroupChatInvitation) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *GroupChatInvitation) GetIntroductionMessage() string { - if m != nil { - return m.IntroductionMessage +func (x *GroupChatInvitation) GetIntroductionMessage() string { + if x != nil { + return x.IntroductionMessage } return "" } -func (m *GroupChatInvitation) GetState() GroupChatInvitation_State { - if m != nil { - return m.State +func (x *GroupChatInvitation) GetState() GroupChatInvitation_State { + if x != nil { + return x.State } return GroupChatInvitation_UNKNOWN } -func init() { - proto.RegisterEnum("protobuf.GroupChatInvitation_State", GroupChatInvitation_State_name, GroupChatInvitation_State_value) - proto.RegisterType((*GroupChatInvitation)(nil), "protobuf.GroupChatInvitation") +var File_group_chat_invitation_proto protoreflect.FileDescriptor + +var file_group_chat_invitation_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xf1, 0x01, 0x0a, 0x13, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x68, 0x61, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x31, + 0x0a, 0x14, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x68, 0x61, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3d, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, + 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -func init() { - proto.RegisterFile("group_chat_invitation.proto", fileDescriptor_a6a73333de6a8ebe) +var ( + file_group_chat_invitation_proto_rawDescOnce sync.Once + file_group_chat_invitation_proto_rawDescData = file_group_chat_invitation_proto_rawDesc +) + +func file_group_chat_invitation_proto_rawDescGZIP() []byte { + file_group_chat_invitation_proto_rawDescOnce.Do(func() { + file_group_chat_invitation_proto_rawDescData = protoimpl.X.CompressGZIP(file_group_chat_invitation_proto_rawDescData) + }) + return file_group_chat_invitation_proto_rawDescData } -var fileDescriptor_a6a73333de6a8ebe = []byte{ - // 243 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0xca, 0x2f, - 0x2d, 0x88, 0x4f, 0xce, 0x48, 0x2c, 0x89, 0xcf, 0xcc, 0x2b, 0xcb, 0x2c, 0x49, 0x2c, 0xc9, 0xcc, - 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0x1f, - 0x19, 0xb9, 0x84, 0xdd, 0x41, 0x2a, 0x9d, 0x33, 0x12, 0x4b, 0x3c, 0xe1, 0xea, 0x84, 0x44, 0xb8, - 0x58, 0x93, 0x73, 0xf2, 0x93, 0xb3, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x20, 0x1c, 0x21, - 0x71, 0x2e, 0x76, 0x88, 0x81, 0x29, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x6c, 0x20, 0xae, - 0x67, 0x8a, 0x90, 0x21, 0x97, 0x48, 0x66, 0x5e, 0x49, 0x51, 0x7e, 0x4a, 0x69, 0x32, 0x48, 0x7b, - 0x7c, 0x6e, 0x6a, 0x71, 0x71, 0x62, 0x7a, 0xaa, 0x04, 0x33, 0x58, 0x95, 0x30, 0xb2, 0x9c, 0x2f, - 0x44, 0x4a, 0xc8, 0x92, 0x8b, 0xb5, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0x82, 0x45, 0x81, 0x51, 0x83, - 0xcf, 0x48, 0x59, 0x0f, 0xe6, 0x26, 0x3d, 0x2c, 0xee, 0xd1, 0x0b, 0x06, 0x29, 0x0d, 0x82, 0xe8, - 0x50, 0xb2, 0xe5, 0x62, 0x05, 0xf3, 0x85, 0xb8, 0xb9, 0xd8, 0x43, 0xfd, 0xbc, 0xfd, 0xfc, 0xc3, - 0xfd, 0x04, 0x18, 0x40, 0x9c, 0x20, 0xd7, 0xc0, 0x50, 0xd7, 0xe0, 0x10, 0x01, 0x46, 0x21, 0x1e, - 0x2e, 0x8e, 0x20, 0x57, 0x2f, 0x57, 0xe7, 0x10, 0x57, 0x17, 0x01, 0x26, 0x10, 0xcf, 0x31, 0x20, - 0x20, 0xc8, 0x3f, 0xcc, 0xd5, 0x45, 0x80, 0xd9, 0x89, 0x37, 0x8a, 0x5b, 0x4f, 0xdf, 0x1a, 0x66, - 0x5d, 0x12, 0x1b, 0x98, 0x65, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x4c, 0x19, 0xcd, 0x32, - 0x01, 0x00, 0x00, +var file_group_chat_invitation_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_group_chat_invitation_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_group_chat_invitation_proto_goTypes = []interface{}{ + (GroupChatInvitation_State)(0), // 0: protobuf.GroupChatInvitation.State + (*GroupChatInvitation)(nil), // 1: protobuf.GroupChatInvitation +} +var file_group_chat_invitation_proto_depIdxs = []int32{ + 0, // 0: protobuf.GroupChatInvitation.state:type_name -> protobuf.GroupChatInvitation.State + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_group_chat_invitation_proto_init() } +func file_group_chat_invitation_proto_init() { + if File_group_chat_invitation_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_group_chat_invitation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GroupChatInvitation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_group_chat_invitation_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_group_chat_invitation_proto_goTypes, + DependencyIndexes: file_group_chat_invitation_proto_depIdxs, + EnumInfos: file_group_chat_invitation_proto_enumTypes, + MessageInfos: file_group_chat_invitation_proto_msgTypes, + }.Build() + File_group_chat_invitation_proto = out.File + file_group_chat_invitation_proto_rawDesc = nil + file_group_chat_invitation_proto_goTypes = nil + file_group_chat_invitation_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/membership_update_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/membership_update_message.pb.go index f49cfcd0..27cd0a0b 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/membership_update_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/membership_update_message.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: membership_update_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type MembershipUpdateEvent_EventType int32 @@ -35,41 +35,66 @@ const ( MembershipUpdateEvent_IMAGE_CHANGED MembershipUpdateEvent_EventType = 9 ) -var MembershipUpdateEvent_EventType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CHAT_CREATED", - 2: "NAME_CHANGED", - 3: "MEMBERS_ADDED", - 4: "MEMBER_JOINED", - 5: "MEMBER_REMOVED", - 6: "ADMINS_ADDED", - 7: "ADMIN_REMOVED", - 8: "COLOR_CHANGED", - 9: "IMAGE_CHANGED", -} +// Enum value maps for MembershipUpdateEvent_EventType. +var ( + MembershipUpdateEvent_EventType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CHAT_CREATED", + 2: "NAME_CHANGED", + 3: "MEMBERS_ADDED", + 4: "MEMBER_JOINED", + 5: "MEMBER_REMOVED", + 6: "ADMINS_ADDED", + 7: "ADMIN_REMOVED", + 8: "COLOR_CHANGED", + 9: "IMAGE_CHANGED", + } + MembershipUpdateEvent_EventType_value = map[string]int32{ + "UNKNOWN": 0, + "CHAT_CREATED": 1, + "NAME_CHANGED": 2, + "MEMBERS_ADDED": 3, + "MEMBER_JOINED": 4, + "MEMBER_REMOVED": 5, + "ADMINS_ADDED": 6, + "ADMIN_REMOVED": 7, + "COLOR_CHANGED": 8, + "IMAGE_CHANGED": 9, + } +) -var MembershipUpdateEvent_EventType_value = map[string]int32{ - "UNKNOWN": 0, - "CHAT_CREATED": 1, - "NAME_CHANGED": 2, - "MEMBERS_ADDED": 3, - "MEMBER_JOINED": 4, - "MEMBER_REMOVED": 5, - "ADMINS_ADDED": 6, - "ADMIN_REMOVED": 7, - "COLOR_CHANGED": 8, - "IMAGE_CHANGED": 9, +func (x MembershipUpdateEvent_EventType) Enum() *MembershipUpdateEvent_EventType { + p := new(MembershipUpdateEvent_EventType) + *p = x + return p } func (x MembershipUpdateEvent_EventType) String() string { - return proto.EnumName(MembershipUpdateEvent_EventType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (MembershipUpdateEvent_EventType) Descriptor() protoreflect.EnumDescriptor { + return file_membership_update_message_proto_enumTypes[0].Descriptor() +} + +func (MembershipUpdateEvent_EventType) Type() protoreflect.EnumType { + return &file_membership_update_message_proto_enumTypes[0] +} + +func (x MembershipUpdateEvent_EventType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MembershipUpdateEvent_EventType.Descriptor instead. func (MembershipUpdateEvent_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{0, 0} + return file_membership_update_message_proto_rawDescGZIP(), []int{0, 0} } type MembershipUpdateEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of the event Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // List of public keys of objects of the action @@ -81,75 +106,79 @@ type MembershipUpdateEvent struct { // Color of the chat for the CHAT_CREATED/COLOR_CHANGED event types Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"` // Chat image - Image []byte `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Image []byte `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"` } -func (m *MembershipUpdateEvent) Reset() { *m = MembershipUpdateEvent{} } -func (m *MembershipUpdateEvent) String() string { return proto.CompactTextString(m) } -func (*MembershipUpdateEvent) ProtoMessage() {} +func (x *MembershipUpdateEvent) Reset() { + *x = MembershipUpdateEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_membership_update_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipUpdateEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipUpdateEvent) ProtoMessage() {} + +func (x *MembershipUpdateEvent) ProtoReflect() protoreflect.Message { + mi := &file_membership_update_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipUpdateEvent.ProtoReflect.Descriptor instead. func (*MembershipUpdateEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{0} + return file_membership_update_message_proto_rawDescGZIP(), []int{0} } -func (m *MembershipUpdateEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MembershipUpdateEvent.Unmarshal(m, b) -} -func (m *MembershipUpdateEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MembershipUpdateEvent.Marshal(b, m, deterministic) -} -func (m *MembershipUpdateEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_MembershipUpdateEvent.Merge(m, src) -} -func (m *MembershipUpdateEvent) XXX_Size() int { - return xxx_messageInfo_MembershipUpdateEvent.Size(m) -} -func (m *MembershipUpdateEvent) XXX_DiscardUnknown() { - xxx_messageInfo_MembershipUpdateEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_MembershipUpdateEvent proto.InternalMessageInfo - -func (m *MembershipUpdateEvent) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *MembershipUpdateEvent) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *MembershipUpdateEvent) GetMembers() []string { - if m != nil { - return m.Members +func (x *MembershipUpdateEvent) GetMembers() []string { + if x != nil { + return x.Members } return nil } -func (m *MembershipUpdateEvent) GetName() string { - if m != nil { - return m.Name +func (x *MembershipUpdateEvent) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MembershipUpdateEvent) GetType() MembershipUpdateEvent_EventType { - if m != nil { - return m.Type +func (x *MembershipUpdateEvent) GetType() MembershipUpdateEvent_EventType { + if x != nil { + return x.Type } return MembershipUpdateEvent_UNKNOWN } -func (m *MembershipUpdateEvent) GetColor() string { - if m != nil { - return m.Color +func (x *MembershipUpdateEvent) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *MembershipUpdateEvent) GetImage() []byte { - if m != nil { - return m.Image +func (x *MembershipUpdateEvent) GetImage() []byte { + if x != nil { + return x.Image } return nil } @@ -158,6 +187,10 @@ func (m *MembershipUpdateEvent) GetImage() []byte { // about group membership changes. // For more information, see https://github.com/status-im/specs/blob/master/status-group-chats-spec.md. type MembershipUpdateMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The chat id of the private group chat ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // A list of events for this group chat, first x bytes are the signature, then is a @@ -165,51 +198,76 @@ type MembershipUpdateMessage struct { Events [][]byte `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` // An optional chat message // - // Types that are valid to be assigned to ChatEntity: + // Types that are assignable to ChatEntity: // // *MembershipUpdateMessage_Message // *MembershipUpdateMessage_EmojiReaction - ChatEntity isMembershipUpdateMessage_ChatEntity `protobuf_oneof:"chat_entity"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ChatEntity isMembershipUpdateMessage_ChatEntity `protobuf_oneof:"chat_entity"` } -func (m *MembershipUpdateMessage) Reset() { *m = MembershipUpdateMessage{} } -func (m *MembershipUpdateMessage) String() string { return proto.CompactTextString(m) } -func (*MembershipUpdateMessage) ProtoMessage() {} +func (x *MembershipUpdateMessage) Reset() { + *x = MembershipUpdateMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_membership_update_message_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipUpdateMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipUpdateMessage) ProtoMessage() {} + +func (x *MembershipUpdateMessage) ProtoReflect() protoreflect.Message { + mi := &file_membership_update_message_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipUpdateMessage.ProtoReflect.Descriptor instead. func (*MembershipUpdateMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_8d37dd0dc857a6be, []int{1} + return file_membership_update_message_proto_rawDescGZIP(), []int{1} } -func (m *MembershipUpdateMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MembershipUpdateMessage.Unmarshal(m, b) -} -func (m *MembershipUpdateMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MembershipUpdateMessage.Marshal(b, m, deterministic) -} -func (m *MembershipUpdateMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MembershipUpdateMessage.Merge(m, src) -} -func (m *MembershipUpdateMessage) XXX_Size() int { - return xxx_messageInfo_MembershipUpdateMessage.Size(m) -} -func (m *MembershipUpdateMessage) XXX_DiscardUnknown() { - xxx_messageInfo_MembershipUpdateMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_MembershipUpdateMessage proto.InternalMessageInfo - -func (m *MembershipUpdateMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *MembershipUpdateMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *MembershipUpdateMessage) GetEvents() [][]byte { +func (x *MembershipUpdateMessage) GetEvents() [][]byte { + if x != nil { + return x.Events + } + return nil +} + +func (m *MembershipUpdateMessage) GetChatEntity() isMembershipUpdateMessage_ChatEntity { if m != nil { - return m.Events + return m.ChatEntity + } + return nil +} + +func (x *MembershipUpdateMessage) GetMessage() *ChatMessage { + if x, ok := x.GetChatEntity().(*MembershipUpdateMessage_Message); ok { + return x.Message + } + return nil +} + +func (x *MembershipUpdateMessage) GetEmojiReaction() *EmojiReaction { + if x, ok := x.GetChatEntity().(*MembershipUpdateMessage_EmojiReaction); ok { + return x.EmojiReaction } return nil } @@ -230,73 +288,142 @@ func (*MembershipUpdateMessage_Message) isMembershipUpdateMessage_ChatEntity() { func (*MembershipUpdateMessage_EmojiReaction) isMembershipUpdateMessage_ChatEntity() {} -func (m *MembershipUpdateMessage) GetChatEntity() isMembershipUpdateMessage_ChatEntity { - if m != nil { - return m.ChatEntity - } - return nil +var File_membership_update_message_proto protoreflect.FileDescriptor + +var file_membership_update_message_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x12, 0x63, 0x68, 0x61, + 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x14, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x03, 0x0a, 0x15, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xc1, + 0x01, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x48, 0x41, + 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4e, + 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, + 0x0d, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x44, 0x4d, 0x49, 0x4e, + 0x53, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x4d, + 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x08, 0x12, + 0x11, 0x0a, 0x0d, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, + 0x10, 0x09, 0x22, 0xce, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x31, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x5f, 0x72, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x52, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *MembershipUpdateMessage) GetMessage() *ChatMessage { - if x, ok := m.GetChatEntity().(*MembershipUpdateMessage_Message); ok { - return x.Message - } - return nil +var ( + file_membership_update_message_proto_rawDescOnce sync.Once + file_membership_update_message_proto_rawDescData = file_membership_update_message_proto_rawDesc +) + +func file_membership_update_message_proto_rawDescGZIP() []byte { + file_membership_update_message_proto_rawDescOnce.Do(func() { + file_membership_update_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_membership_update_message_proto_rawDescData) + }) + return file_membership_update_message_proto_rawDescData } -func (m *MembershipUpdateMessage) GetEmojiReaction() *EmojiReaction { - if x, ok := m.GetChatEntity().(*MembershipUpdateMessage_EmojiReaction); ok { - return x.EmojiReaction - } - return nil +var file_membership_update_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_membership_update_message_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_membership_update_message_proto_goTypes = []interface{}{ + (MembershipUpdateEvent_EventType)(0), // 0: protobuf.MembershipUpdateEvent.EventType + (*MembershipUpdateEvent)(nil), // 1: protobuf.MembershipUpdateEvent + (*MembershipUpdateMessage)(nil), // 2: protobuf.MembershipUpdateMessage + (*ChatMessage)(nil), // 3: protobuf.ChatMessage + (*EmojiReaction)(nil), // 4: protobuf.EmojiReaction +} +var file_membership_update_message_proto_depIdxs = []int32{ + 0, // 0: protobuf.MembershipUpdateEvent.type:type_name -> protobuf.MembershipUpdateEvent.EventType + 3, // 1: protobuf.MembershipUpdateMessage.message:type_name -> protobuf.ChatMessage + 4, // 2: protobuf.MembershipUpdateMessage.emoji_reaction:type_name -> protobuf.EmojiReaction + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*MembershipUpdateMessage) XXX_OneofWrappers() []interface{} { - return []interface{}{ +func init() { file_membership_update_message_proto_init() } +func file_membership_update_message_proto_init() { + if File_membership_update_message_proto != nil { + return + } + file_chat_message_proto_init() + file_emoji_reaction_proto_init() + if !protoimpl.UnsafeEnabled { + file_membership_update_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipUpdateEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_membership_update_message_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipUpdateMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_membership_update_message_proto_msgTypes[1].OneofWrappers = []interface{}{ (*MembershipUpdateMessage_Message)(nil), (*MembershipUpdateMessage_EmojiReaction)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.MembershipUpdateEvent_EventType", MembershipUpdateEvent_EventType_name, MembershipUpdateEvent_EventType_value) - proto.RegisterType((*MembershipUpdateEvent)(nil), "protobuf.MembershipUpdateEvent") - proto.RegisterType((*MembershipUpdateMessage)(nil), "protobuf.MembershipUpdateMessage") -} - -func init() { - proto.RegisterFile("membership_update_message.proto", fileDescriptor_8d37dd0dc857a6be) -} - -var fileDescriptor_8d37dd0dc857a6be = []byte{ - // 443 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xd1, 0x8e, 0x93, 0x40, - 0x14, 0x2d, 0x5b, 0x4a, 0x97, 0x4b, 0xdb, 0xe0, 0xcd, 0xae, 0x25, 0xfb, 0x22, 0xe9, 0x13, 0xbe, - 0x60, 0xac, 0x8f, 0xc6, 0x44, 0x0a, 0x93, 0x6d, 0x55, 0x20, 0x19, 0xbb, 0x9a, 0xf8, 0x42, 0x68, - 0x3b, 0x6e, 0xd1, 0xa5, 0x90, 0x76, 0xd6, 0xa4, 0xbf, 0xe0, 0x5f, 0xf9, 0x03, 0x7e, 0x93, 0x99, - 0x01, 0x8a, 0x35, 0xbe, 0xc0, 0x9c, 0x73, 0xe7, 0x9c, 0x39, 0xcc, 0x01, 0x9e, 0xe5, 0x2c, 0x5f, - 0xb1, 0xfd, 0x61, 0x9b, 0x95, 0xc9, 0x63, 0xb9, 0x49, 0x39, 0x4b, 0x72, 0x76, 0x38, 0xa4, 0xf7, - 0xcc, 0x2d, 0xf7, 0x05, 0x2f, 0xf0, 0x52, 0xbe, 0x56, 0x8f, 0x5f, 0x6f, 0x70, 0xbd, 0x4d, 0xf9, - 0xf9, 0xf4, 0xe6, 0x8a, 0xe5, 0xc5, 0xb7, 0x2c, 0xd9, 0xb3, 0x74, 0xcd, 0xb3, 0x62, 0x57, 0xb1, - 0x93, 0x9f, 0x5d, 0xb8, 0x0e, 0x4f, 0xbe, 0x77, 0xd2, 0x96, 0xfc, 0x60, 0x3b, 0x8e, 0x57, 0xd0, - 0x5b, 0x3f, 0x14, 0xeb, 0xef, 0x96, 0x62, 0x2b, 0x8e, 0x4a, 0x2b, 0x80, 0x16, 0xf4, 0xeb, 0x18, - 0xd6, 0x85, 0xdd, 0x75, 0x74, 0xda, 0x40, 0x44, 0x50, 0x77, 0x69, 0xce, 0xac, 0xae, 0xad, 0x38, - 0x3a, 0x95, 0x6b, 0x7c, 0x03, 0x2a, 0x3f, 0x96, 0xcc, 0x52, 0x6d, 0xc5, 0x19, 0x4d, 0x9f, 0xbb, - 0x4d, 0x40, 0xf7, 0xbf, 0x47, 0xba, 0xf2, 0xb9, 0x3c, 0x96, 0x8c, 0x4a, 0x99, 0x8c, 0x50, 0x3c, - 0x14, 0x7b, 0xab, 0x27, 0x3d, 0x2b, 0x20, 0xd8, 0x2c, 0x4f, 0xef, 0x99, 0xa5, 0xd9, 0x8a, 0x33, - 0xa0, 0x15, 0x98, 0xfc, 0x52, 0x40, 0x3f, 0xe9, 0xd1, 0x80, 0xfe, 0x5d, 0xf4, 0x3e, 0x8a, 0x3f, - 0x47, 0x66, 0x07, 0x4d, 0x18, 0xf8, 0x73, 0x6f, 0x99, 0xf8, 0x94, 0x78, 0x4b, 0x12, 0x98, 0x8a, - 0x60, 0x22, 0x2f, 0x24, 0x89, 0x3f, 0xf7, 0xa2, 0x5b, 0x12, 0x98, 0x17, 0xf8, 0x04, 0x86, 0x21, - 0x09, 0x67, 0x84, 0x7e, 0x4c, 0xbc, 0x20, 0x20, 0x81, 0xd9, 0x6d, 0xa9, 0xe4, 0x5d, 0xbc, 0x88, - 0x48, 0x60, 0xaa, 0x88, 0x30, 0xaa, 0x29, 0x4a, 0xc2, 0xf8, 0x13, 0x09, 0xcc, 0x9e, 0xf0, 0xf2, - 0x82, 0x70, 0x11, 0x35, 0x42, 0x4d, 0x08, 0x25, 0x73, 0xda, 0xd4, 0x17, 0x94, 0x1f, 0x7f, 0x88, - 0xe9, 0xe9, 0xc4, 0x4b, 0x41, 0x2d, 0x42, 0xef, 0xb6, 0x0d, 0xa1, 0x4f, 0x7e, 0x2b, 0x30, 0xfe, - 0xf7, 0x66, 0xc2, 0xaa, 0x44, 0x1c, 0x43, 0x5f, 0x96, 0x9a, 0x6d, 0x64, 0x21, 0x3a, 0xd5, 0x04, - 0x5c, 0x6c, 0xf0, 0x29, 0x68, 0x4c, 0x7c, 0x77, 0x55, 0xc8, 0x80, 0xd6, 0x08, 0x5f, 0x8a, 0xa6, - 0xa4, 0x56, 0x56, 0x62, 0x4c, 0xaf, 0xdb, 0xeb, 0xf7, 0xb7, 0x29, 0xaf, 0x8d, 0xe7, 0x1d, 0xda, - 0xec, 0xc3, 0xb7, 0x30, 0x3a, 0xff, 0x49, 0x64, 0x71, 0xc6, 0x74, 0xdc, 0x2a, 0x89, 0x98, 0xd3, - 0x7a, 0x3c, 0xef, 0xd0, 0x21, 0xfb, 0x9b, 0x98, 0x0d, 0xc1, 0x90, 0x29, 0xd9, 0x8e, 0x67, 0xfc, - 0x38, 0x1b, 0x7e, 0x31, 0xdc, 0x17, 0xaf, 0x1b, 0xf1, 0x4a, 0x93, 0xab, 0x57, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0x1e, 0xc9, 0x99, 0x52, 0xca, 0x02, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_membership_update_message_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_membership_update_message_proto_goTypes, + DependencyIndexes: file_membership_update_message_proto_depIdxs, + EnumInfos: file_membership_update_message_proto_enumTypes, + MessageInfos: file_membership_update_message_proto_msgTypes, + }.Build() + File_membership_update_message_proto = out.File + file_membership_update_message_proto_rawDesc = nil + file_membership_update_message_proto_goTypes = nil + file_membership_update_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.pb.go index 6416c6e1..2eb243f2 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: pairing.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision int32 @@ -27,22 +27,43 @@ const ( SyncActivityCenterCommunityRequestDecision_DECLINED SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision = 1 ) -var SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_name = map[int32]string{ - 0: "ACCEPTED", - 1: "DECLINED", -} +// Enum value maps for SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision. +var ( + SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_name = map[int32]string{ + 0: "ACCEPTED", + 1: "DECLINED", + } + SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_value = map[string]int32{ + "ACCEPTED": 0, + "DECLINED": 1, + } +) -var SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_value = map[string]int32{ - "ACCEPTED": 0, - "DECLINED": 1, +func (x SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) Enum() *SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision { + p := new(SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) + *p = x + return p } func (x SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) String() string { - return proto.EnumName(SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[0].Descriptor() +} + +func (SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[0] +} + +func (x SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision.Descriptor instead. func (SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20, 0} + return file_pairing_proto_rawDescGZIP(), []int{20, 0} } type SyncTrustedUser_TrustStatus int32 @@ -53,24 +74,45 @@ const ( SyncTrustedUser_UNTRUSTWORTHY SyncTrustedUser_TrustStatus = 2 ) -var SyncTrustedUser_TrustStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "TRUSTED", - 2: "UNTRUSTWORTHY", -} +// Enum value maps for SyncTrustedUser_TrustStatus. +var ( + SyncTrustedUser_TrustStatus_name = map[int32]string{ + 0: "UNKNOWN", + 1: "TRUSTED", + 2: "UNTRUSTWORTHY", + } + SyncTrustedUser_TrustStatus_value = map[string]int32{ + "UNKNOWN": 0, + "TRUSTED": 1, + "UNTRUSTWORTHY": 2, + } +) -var SyncTrustedUser_TrustStatus_value = map[string]int32{ - "UNKNOWN": 0, - "TRUSTED": 1, - "UNTRUSTWORTHY": 2, +func (x SyncTrustedUser_TrustStatus) Enum() *SyncTrustedUser_TrustStatus { + p := new(SyncTrustedUser_TrustStatus) + *p = x + return p } func (x SyncTrustedUser_TrustStatus) String() string { - return proto.EnumName(SyncTrustedUser_TrustStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncTrustedUser_TrustStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[1].Descriptor() +} + +func (SyncTrustedUser_TrustStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[1] +} + +func (x SyncTrustedUser_TrustStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncTrustedUser_TrustStatus.Descriptor instead. func (SyncTrustedUser_TrustStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{31, 0} + return file_pairing_proto_rawDescGZIP(), []int{31, 0} } type SyncVerificationRequest_VerificationStatus int32 @@ -83,28 +125,49 @@ const ( SyncVerificationRequest_CANCELED SyncVerificationRequest_VerificationStatus = 4 ) -var SyncVerificationRequest_VerificationStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING", - 2: "ACCEPTED", - 3: "DECLINED", - 4: "CANCELED", -} +// Enum value maps for SyncVerificationRequest_VerificationStatus. +var ( + SyncVerificationRequest_VerificationStatus_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PENDING", + 2: "ACCEPTED", + 3: "DECLINED", + 4: "CANCELED", + } + SyncVerificationRequest_VerificationStatus_value = map[string]int32{ + "UNKNOWN": 0, + "PENDING": 1, + "ACCEPTED": 2, + "DECLINED": 3, + "CANCELED": 4, + } +) -var SyncVerificationRequest_VerificationStatus_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING": 1, - "ACCEPTED": 2, - "DECLINED": 3, - "CANCELED": 4, +func (x SyncVerificationRequest_VerificationStatus) Enum() *SyncVerificationRequest_VerificationStatus { + p := new(SyncVerificationRequest_VerificationStatus) + *p = x + return p } func (x SyncVerificationRequest_VerificationStatus) String() string { - return proto.EnumName(SyncVerificationRequest_VerificationStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncVerificationRequest_VerificationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[2].Descriptor() +} + +func (SyncVerificationRequest_VerificationStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[2] +} + +func (x SyncVerificationRequest_VerificationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncVerificationRequest_VerificationStatus.Descriptor instead. func (SyncVerificationRequest_VerificationStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{32, 0} + return file_pairing_proto_rawDescGZIP(), []int{32, 0} } type SyncContactRequestDecision_DecisionStatus int32 @@ -114,73 +177,106 @@ const ( SyncContactRequestDecision_DECLINED SyncContactRequestDecision_DecisionStatus = 1 ) -var SyncContactRequestDecision_DecisionStatus_name = map[int32]string{ - 0: "ACCEPTED", - 1: "DECLINED", -} +// Enum value maps for SyncContactRequestDecision_DecisionStatus. +var ( + SyncContactRequestDecision_DecisionStatus_name = map[int32]string{ + 0: "ACCEPTED", + 1: "DECLINED", + } + SyncContactRequestDecision_DecisionStatus_value = map[string]int32{ + "ACCEPTED": 0, + "DECLINED": 1, + } +) -var SyncContactRequestDecision_DecisionStatus_value = map[string]int32{ - "ACCEPTED": 0, - "DECLINED": 1, +func (x SyncContactRequestDecision_DecisionStatus) Enum() *SyncContactRequestDecision_DecisionStatus { + p := new(SyncContactRequestDecision_DecisionStatus) + *p = x + return p } func (x SyncContactRequestDecision_DecisionStatus) String() string { - return proto.EnumName(SyncContactRequestDecision_DecisionStatus_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncContactRequestDecision_DecisionStatus) Descriptor() protoreflect.EnumDescriptor { + return file_pairing_proto_enumTypes[3].Descriptor() +} + +func (SyncContactRequestDecision_DecisionStatus) Type() protoreflect.EnumType { + return &file_pairing_proto_enumTypes[3] +} + +func (x SyncContactRequestDecision_DecisionStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncContactRequestDecision_DecisionStatus.Descriptor instead. func (SyncContactRequestDecision_DecisionStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{33, 0} + return file_pairing_proto_rawDescGZIP(), []int{33, 0} } // `FetchingBackedUpDataDetails` is used to describe how many messages a single backup data structure consists of type FetchingBackedUpDataDetails struct { - DataNumber uint32 `protobuf:"varint,1,opt,name=data_number,json=dataNumber,proto3" json:"data_number,omitempty"` - TotalNumber uint32 `protobuf:"varint,2,opt,name=total_number,json=totalNumber,proto3" json:"total_number,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DataNumber uint32 `protobuf:"varint,1,opt,name=data_number,json=dataNumber,proto3" json:"data_number,omitempty"` + TotalNumber uint32 `protobuf:"varint,2,opt,name=total_number,json=totalNumber,proto3" json:"total_number,omitempty"` } -func (m *FetchingBackedUpDataDetails) Reset() { *m = FetchingBackedUpDataDetails{} } -func (m *FetchingBackedUpDataDetails) String() string { return proto.CompactTextString(m) } -func (*FetchingBackedUpDataDetails) ProtoMessage() {} +func (x *FetchingBackedUpDataDetails) Reset() { + *x = FetchingBackedUpDataDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FetchingBackedUpDataDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchingBackedUpDataDetails) ProtoMessage() {} + +func (x *FetchingBackedUpDataDetails) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FetchingBackedUpDataDetails.ProtoReflect.Descriptor instead. func (*FetchingBackedUpDataDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{0} + return file_pairing_proto_rawDescGZIP(), []int{0} } -func (m *FetchingBackedUpDataDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FetchingBackedUpDataDetails.Unmarshal(m, b) -} -func (m *FetchingBackedUpDataDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FetchingBackedUpDataDetails.Marshal(b, m, deterministic) -} -func (m *FetchingBackedUpDataDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_FetchingBackedUpDataDetails.Merge(m, src) -} -func (m *FetchingBackedUpDataDetails) XXX_Size() int { - return xxx_messageInfo_FetchingBackedUpDataDetails.Size(m) -} -func (m *FetchingBackedUpDataDetails) XXX_DiscardUnknown() { - xxx_messageInfo_FetchingBackedUpDataDetails.DiscardUnknown(m) -} - -var xxx_messageInfo_FetchingBackedUpDataDetails proto.InternalMessageInfo - -func (m *FetchingBackedUpDataDetails) GetDataNumber() uint32 { - if m != nil { - return m.DataNumber +func (x *FetchingBackedUpDataDetails) GetDataNumber() uint32 { + if x != nil { + return x.DataNumber } return 0 } -func (m *FetchingBackedUpDataDetails) GetTotalNumber() uint32 { - if m != nil { - return m.TotalNumber +func (x *FetchingBackedUpDataDetails) GetTotalNumber() uint32 { + if x != nil { + return x.TotalNumber } return 0 } type Backup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // this is what we already had @@ -199,149 +295,157 @@ type Backup struct { WatchOnlyAccountDetails *FetchingBackedUpDataDetails `protobuf:"bytes,14,opt,name=watchOnlyAccountDetails,proto3" json:"watchOnlyAccountDetails,omitempty"` Chats []*SyncChat `protobuf:"bytes,15,rep,name=chats,proto3" json:"chats,omitempty"` ChatsDetails *FetchingBackedUpDataDetails `protobuf:"bytes,16,opt,name=chatsDetails,proto3" json:"chatsDetails,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Backup) Reset() { *m = Backup{} } -func (m *Backup) String() string { return proto.CompactTextString(m) } -func (*Backup) ProtoMessage() {} +func (x *Backup) Reset() { + *x = Backup{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Backup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Backup) ProtoMessage() {} + +func (x *Backup) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Backup.ProtoReflect.Descriptor instead. func (*Backup) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{1} + return file_pairing_proto_rawDescGZIP(), []int{1} } -func (m *Backup) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Backup.Unmarshal(m, b) -} -func (m *Backup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Backup.Marshal(b, m, deterministic) -} -func (m *Backup) XXX_Merge(src proto.Message) { - xxx_messageInfo_Backup.Merge(m, src) -} -func (m *Backup) XXX_Size() int { - return xxx_messageInfo_Backup.Size(m) -} -func (m *Backup) XXX_DiscardUnknown() { - xxx_messageInfo_Backup.DiscardUnknown(m) -} - -var xxx_messageInfo_Backup proto.InternalMessageInfo - -func (m *Backup) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *Backup) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *Backup) GetId() string { - if m != nil { - return m.Id +func (x *Backup) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Backup) GetContacts() []*SyncInstallationContactV2 { - if m != nil { - return m.Contacts +func (x *Backup) GetContacts() []*SyncInstallationContactV2 { + if x != nil { + return x.Contacts } return nil } -func (m *Backup) GetCommunities() []*SyncInstallationCommunity { - if m != nil { - return m.Communities +func (x *Backup) GetCommunities() []*SyncInstallationCommunity { + if x != nil { + return x.Communities } return nil } -func (m *Backup) GetContactsDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.ContactsDetails +func (x *Backup) GetContactsDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.ContactsDetails } return nil } -func (m *Backup) GetCommunitiesDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.CommunitiesDetails +func (x *Backup) GetCommunitiesDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.CommunitiesDetails } return nil } -func (m *Backup) GetProfile() *BackedUpProfile { - if m != nil { - return m.Profile +func (x *Backup) GetProfile() *BackedUpProfile { + if x != nil { + return x.Profile } return nil } -func (m *Backup) GetProfileDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.ProfileDetails +func (x *Backup) GetProfileDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.ProfileDetails } return nil } -func (m *Backup) GetSetting() *SyncSetting { - if m != nil { - return m.Setting +func (x *Backup) GetSetting() *SyncSetting { + if x != nil { + return x.Setting } return nil } -func (m *Backup) GetSettingsDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.SettingsDetails +func (x *Backup) GetSettingsDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.SettingsDetails } return nil } -func (m *Backup) GetKeypair() *SyncKeypair { - if m != nil { - return m.Keypair +func (x *Backup) GetKeypair() *SyncKeypair { + if x != nil { + return x.Keypair } return nil } -func (m *Backup) GetKeypairDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.KeypairDetails +func (x *Backup) GetKeypairDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.KeypairDetails } return nil } -func (m *Backup) GetWatchOnlyAccount() *SyncAccount { - if m != nil { - return m.WatchOnlyAccount +func (x *Backup) GetWatchOnlyAccount() *SyncAccount { + if x != nil { + return x.WatchOnlyAccount } return nil } -func (m *Backup) GetWatchOnlyAccountDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.WatchOnlyAccountDetails +func (x *Backup) GetWatchOnlyAccountDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.WatchOnlyAccountDetails } return nil } -func (m *Backup) GetChats() []*SyncChat { - if m != nil { - return m.Chats +func (x *Backup) GetChats() []*SyncChat { + if x != nil { + return x.Chats } return nil } -func (m *Backup) GetChatsDetails() *FetchingBackedUpDataDetails { - if m != nil { - return m.ChatsDetails +func (x *Backup) GetChatsDetails() *FetchingBackedUpDataDetails { + if x != nil { + return x.ChatsDetails } return nil } type MultiAccount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Identicon string `protobuf:"bytes,3,opt,name=identicon,proto3" json:"identicon,omitempty"` @@ -352,502 +456,353 @@ type MultiAccount struct { Images []*MultiAccount_IdentityImage `protobuf:"bytes,8,rep,name=images,proto3" json:"images,omitempty"` CustomizationColor string `protobuf:"bytes,9,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` CustomizationColorClock uint64 `protobuf:"varint,10,opt,name=customization_color_clock,json=customizationColorClock,proto3" json:"customization_color_clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *MultiAccount) Reset() { *m = MultiAccount{} } -func (m *MultiAccount) String() string { return proto.CompactTextString(m) } -func (*MultiAccount) ProtoMessage() {} +func (x *MultiAccount) Reset() { + *x = MultiAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount) ProtoMessage() {} + +func (x *MultiAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount.ProtoReflect.Descriptor instead. func (*MultiAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2} + return file_pairing_proto_rawDescGZIP(), []int{2} } -func (m *MultiAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount.Unmarshal(m, b) -} -func (m *MultiAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount.Marshal(b, m, deterministic) -} -func (m *MultiAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount.Merge(m, src) -} -func (m *MultiAccount) XXX_Size() int { - return xxx_messageInfo_MultiAccount.Size(m) -} -func (m *MultiAccount) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount proto.InternalMessageInfo - -func (m *MultiAccount) GetName() string { - if m != nil { - return m.Name +func (x *MultiAccount) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MultiAccount) GetTimestamp() int64 { - if m != nil { - return m.Timestamp +func (x *MultiAccount) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } -func (m *MultiAccount) GetIdenticon() string { - if m != nil { - return m.Identicon +func (x *MultiAccount) GetIdenticon() string { + if x != nil { + return x.Identicon } return "" } -func (m *MultiAccount) GetColorHash() []*MultiAccount_ColorHash { - if m != nil { - return m.ColorHash +func (x *MultiAccount) GetColorHash() []*MultiAccount_ColorHash { + if x != nil { + return x.ColorHash } return nil } -func (m *MultiAccount) GetColorId() int64 { - if m != nil { - return m.ColorId +func (x *MultiAccount) GetColorId() int64 { + if x != nil { + return x.ColorId } return 0 } -func (m *MultiAccount) GetKeycardPairing() string { - if m != nil { - return m.KeycardPairing +func (x *MultiAccount) GetKeycardPairing() string { + if x != nil { + return x.KeycardPairing } return "" } -func (m *MultiAccount) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *MultiAccount) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *MultiAccount) GetImages() []*MultiAccount_IdentityImage { - if m != nil { - return m.Images +func (x *MultiAccount) GetImages() []*MultiAccount_IdentityImage { + if x != nil { + return x.Images } return nil } -func (m *MultiAccount) GetCustomizationColor() string { - if m != nil { - return m.CustomizationColor +func (x *MultiAccount) GetCustomizationColor() string { + if x != nil { + return x.CustomizationColor } return "" } -func (m *MultiAccount) GetCustomizationColorClock() uint64 { - if m != nil { - return m.CustomizationColorClock - } - return 0 -} - -type MultiAccount_ColorHash struct { - Index []int64 `protobuf:"varint,1,rep,packed,name=index,proto3" json:"index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MultiAccount_ColorHash) Reset() { *m = MultiAccount_ColorHash{} } -func (m *MultiAccount_ColorHash) String() string { return proto.CompactTextString(m) } -func (*MultiAccount_ColorHash) ProtoMessage() {} -func (*MultiAccount_ColorHash) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2, 0} -} - -func (m *MultiAccount_ColorHash) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount_ColorHash.Unmarshal(m, b) -} -func (m *MultiAccount_ColorHash) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount_ColorHash.Marshal(b, m, deterministic) -} -func (m *MultiAccount_ColorHash) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount_ColorHash.Merge(m, src) -} -func (m *MultiAccount_ColorHash) XXX_Size() int { - return xxx_messageInfo_MultiAccount_ColorHash.Size(m) -} -func (m *MultiAccount_ColorHash) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount_ColorHash.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount_ColorHash proto.InternalMessageInfo - -func (m *MultiAccount_ColorHash) GetIndex() []int64 { - if m != nil { - return m.Index - } - return nil -} - -type MultiAccount_IdentityImage struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` - Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` - Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` - Filesize int64 `protobuf:"varint,6,opt,name=filesize,proto3" json:"filesize,omitempty"` - ResizeTarget int64 `protobuf:"varint,7,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` - Clock uint64 `protobuf:"varint,8,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *MultiAccount_IdentityImage) Reset() { *m = MultiAccount_IdentityImage{} } -func (m *MultiAccount_IdentityImage) String() string { return proto.CompactTextString(m) } -func (*MultiAccount_IdentityImage) ProtoMessage() {} -func (*MultiAccount_IdentityImage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{2, 1} -} - -func (m *MultiAccount_IdentityImage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MultiAccount_IdentityImage.Unmarshal(m, b) -} -func (m *MultiAccount_IdentityImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MultiAccount_IdentityImage.Marshal(b, m, deterministic) -} -func (m *MultiAccount_IdentityImage) XXX_Merge(src proto.Message) { - xxx_messageInfo_MultiAccount_IdentityImage.Merge(m, src) -} -func (m *MultiAccount_IdentityImage) XXX_Size() int { - return xxx_messageInfo_MultiAccount_IdentityImage.Size(m) -} -func (m *MultiAccount_IdentityImage) XXX_DiscardUnknown() { - xxx_messageInfo_MultiAccount_IdentityImage.DiscardUnknown(m) -} - -var xxx_messageInfo_MultiAccount_IdentityImage proto.InternalMessageInfo - -func (m *MultiAccount_IdentityImage) GetKeyUid() string { - if m != nil { - return m.KeyUid - } - return "" -} - -func (m *MultiAccount_IdentityImage) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MultiAccount_IdentityImage) GetPayload() []byte { - if m != nil { - return m.Payload - } - return nil -} - -func (m *MultiAccount_IdentityImage) GetWidth() int64 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetHeight() int64 { - if m != nil { - return m.Height - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetFilesize() int64 { - if m != nil { - return m.Filesize - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetResizeTarget() int64 { - if m != nil { - return m.ResizeTarget - } - return 0 -} - -func (m *MultiAccount_IdentityImage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *MultiAccount) GetCustomizationColorClock() uint64 { + if x != nil { + return x.CustomizationColorClock } return 0 } type LocalPairingPayload struct { - Keys []*LocalPairingPayload_Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` - Multiaccount *MultiAccount `protobuf:"bytes,2,opt,name=multiaccount,proto3" json:"multiaccount,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - ChatKey string `protobuf:"bytes,4,opt,name=chatKey,proto3" json:"chatKey,omitempty"` - KeycardPairings string `protobuf:"bytes,5,opt,name=keycardPairings,proto3" json:"keycardPairings,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Keys []*LocalPairingPayload_Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` + Multiaccount *MultiAccount `protobuf:"bytes,2,opt,name=multiaccount,proto3" json:"multiaccount,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + ChatKey string `protobuf:"bytes,4,opt,name=chatKey,proto3" json:"chatKey,omitempty"` + KeycardPairings string `protobuf:"bytes,5,opt,name=keycardPairings,proto3" json:"keycardPairings,omitempty"` } -func (m *LocalPairingPayload) Reset() { *m = LocalPairingPayload{} } -func (m *LocalPairingPayload) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPayload) ProtoMessage() {} +func (x *LocalPairingPayload) Reset() { + *x = LocalPairingPayload{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPayload) ProtoMessage() {} + +func (x *LocalPairingPayload) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPayload.ProtoReflect.Descriptor instead. func (*LocalPairingPayload) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{3} + return file_pairing_proto_rawDescGZIP(), []int{3} } -func (m *LocalPairingPayload) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPayload.Unmarshal(m, b) -} -func (m *LocalPairingPayload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPayload.Marshal(b, m, deterministic) -} -func (m *LocalPairingPayload) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPayload.Merge(m, src) -} -func (m *LocalPairingPayload) XXX_Size() int { - return xxx_messageInfo_LocalPairingPayload.Size(m) -} -func (m *LocalPairingPayload) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPayload.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPayload proto.InternalMessageInfo - -func (m *LocalPairingPayload) GetKeys() []*LocalPairingPayload_Key { - if m != nil { - return m.Keys +func (x *LocalPairingPayload) GetKeys() []*LocalPairingPayload_Key { + if x != nil { + return x.Keys } return nil } -func (m *LocalPairingPayload) GetMultiaccount() *MultiAccount { - if m != nil { - return m.Multiaccount +func (x *LocalPairingPayload) GetMultiaccount() *MultiAccount { + if x != nil { + return x.Multiaccount } return nil } -func (m *LocalPairingPayload) GetPassword() string { - if m != nil { - return m.Password +func (x *LocalPairingPayload) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *LocalPairingPayload) GetChatKey() string { - if m != nil { - return m.ChatKey +func (x *LocalPairingPayload) GetChatKey() string { + if x != nil { + return x.ChatKey } return "" } -func (m *LocalPairingPayload) GetKeycardPairings() string { - if m != nil { - return m.KeycardPairings +func (x *LocalPairingPayload) GetKeycardPairings() string { + if x != nil { + return x.KeycardPairings } return "" } -type LocalPairingPayload_Key struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LocalPairingPayload_Key) Reset() { *m = LocalPairingPayload_Key{} } -func (m *LocalPairingPayload_Key) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPayload_Key) ProtoMessage() {} -func (*LocalPairingPayload_Key) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{3, 0} -} - -func (m *LocalPairingPayload_Key) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPayload_Key.Unmarshal(m, b) -} -func (m *LocalPairingPayload_Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPayload_Key.Marshal(b, m, deterministic) -} -func (m *LocalPairingPayload_Key) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPayload_Key.Merge(m, src) -} -func (m *LocalPairingPayload_Key) XXX_Size() int { - return xxx_messageInfo_LocalPairingPayload_Key.Size(m) -} -func (m *LocalPairingPayload_Key) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPayload_Key.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPayload_Key proto.InternalMessageInfo - -func (m *LocalPairingPayload_Key) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LocalPairingPayload_Key) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - type LocalPairingPeerHello struct { - PairingVersion int32 `protobuf:"varint,1,opt,name=pairing_version,json=pairingVersion,proto3" json:"pairing_version,omitempty"` - PeerId []byte `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` - DeviceName string `protobuf:"bytes,3,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"` - DeviceType string `protobuf:"bytes,4,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` - Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PairingVersion int32 `protobuf:"varint,1,opt,name=pairing_version,json=pairingVersion,proto3" json:"pairing_version,omitempty"` + PeerId []byte `protobuf:"bytes,2,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + DeviceName string `protobuf:"bytes,3,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"` + DeviceType string `protobuf:"bytes,4,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` + Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` } -func (m *LocalPairingPeerHello) Reset() { *m = LocalPairingPeerHello{} } -func (m *LocalPairingPeerHello) String() string { return proto.CompactTextString(m) } -func (*LocalPairingPeerHello) ProtoMessage() {} +func (x *LocalPairingPeerHello) Reset() { + *x = LocalPairingPeerHello{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPeerHello) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPeerHello) ProtoMessage() {} + +func (x *LocalPairingPeerHello) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPeerHello.ProtoReflect.Descriptor instead. func (*LocalPairingPeerHello) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{4} + return file_pairing_proto_rawDescGZIP(), []int{4} } -func (m *LocalPairingPeerHello) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LocalPairingPeerHello.Unmarshal(m, b) -} -func (m *LocalPairingPeerHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LocalPairingPeerHello.Marshal(b, m, deterministic) -} -func (m *LocalPairingPeerHello) XXX_Merge(src proto.Message) { - xxx_messageInfo_LocalPairingPeerHello.Merge(m, src) -} -func (m *LocalPairingPeerHello) XXX_Size() int { - return xxx_messageInfo_LocalPairingPeerHello.Size(m) -} -func (m *LocalPairingPeerHello) XXX_DiscardUnknown() { - xxx_messageInfo_LocalPairingPeerHello.DiscardUnknown(m) -} - -var xxx_messageInfo_LocalPairingPeerHello proto.InternalMessageInfo - -func (m *LocalPairingPeerHello) GetPairingVersion() int32 { - if m != nil { - return m.PairingVersion +func (x *LocalPairingPeerHello) GetPairingVersion() int32 { + if x != nil { + return x.PairingVersion } return 0 } -func (m *LocalPairingPeerHello) GetPeerId() []byte { - if m != nil { - return m.PeerId +func (x *LocalPairingPeerHello) GetPeerId() []byte { + if x != nil { + return x.PeerId } return nil } -func (m *LocalPairingPeerHello) GetDeviceName() string { - if m != nil { - return m.DeviceName +func (x *LocalPairingPeerHello) GetDeviceName() string { + if x != nil { + return x.DeviceName } return "" } -func (m *LocalPairingPeerHello) GetDeviceType() string { - if m != nil { - return m.DeviceType +func (x *LocalPairingPeerHello) GetDeviceType() string { + if x != nil { + return x.DeviceType } return "" } -func (m *LocalPairingPeerHello) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *LocalPairingPeerHello) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } type SyncPairInstallation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` DeviceType string `protobuf:"bytes,3,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` // following fields used for local pairing - Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Version uint32 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` } -func (m *SyncPairInstallation) Reset() { *m = SyncPairInstallation{} } -func (m *SyncPairInstallation) String() string { return proto.CompactTextString(m) } -func (*SyncPairInstallation) ProtoMessage() {} +func (x *SyncPairInstallation) Reset() { + *x = SyncPairInstallation{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncPairInstallation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncPairInstallation) ProtoMessage() {} + +func (x *SyncPairInstallation) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncPairInstallation.ProtoReflect.Descriptor instead. func (*SyncPairInstallation) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{5} + return file_pairing_proto_rawDescGZIP(), []int{5} } -func (m *SyncPairInstallation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncPairInstallation.Unmarshal(m, b) -} -func (m *SyncPairInstallation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncPairInstallation.Marshal(b, m, deterministic) -} -func (m *SyncPairInstallation) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncPairInstallation.Merge(m, src) -} -func (m *SyncPairInstallation) XXX_Size() int { - return xxx_messageInfo_SyncPairInstallation.Size(m) -} -func (m *SyncPairInstallation) XXX_DiscardUnknown() { - xxx_messageInfo_SyncPairInstallation.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncPairInstallation proto.InternalMessageInfo - -func (m *SyncPairInstallation) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncPairInstallation) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncPairInstallation) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *SyncPairInstallation) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *SyncPairInstallation) GetDeviceType() string { - if m != nil { - return m.DeviceType +func (x *SyncPairInstallation) GetDeviceType() string { + if x != nil { + return x.DeviceType } return "" } -func (m *SyncPairInstallation) GetName() string { - if m != nil { - return m.Name +func (x *SyncPairInstallation) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncPairInstallation) GetVersion() uint32 { - if m != nil { - return m.Version +func (x *SyncPairInstallation) GetVersion() uint32 { + if x != nil { + return x.Version } return 0 } type SyncInstallationContactV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + LastUpdatedLocally uint64 `protobuf:"varint,1,opt,name=last_updated_locally,json=lastUpdatedLocally,proto3" json:"last_updated_locally,omitempty"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` ProfileImage string `protobuf:"bytes,3,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` @@ -867,523 +822,577 @@ type SyncInstallationContactV2 struct { ContactRequestRemoteState int64 `protobuf:"varint,18,opt,name=contact_request_remote_state,json=contactRequestRemoteState,proto3" json:"contact_request_remote_state,omitempty"` ContactRequestRemoteClock int64 `protobuf:"varint,19,opt,name=contact_request_remote_clock,json=contactRequestRemoteClock,proto3" json:"contact_request_remote_clock,omitempty"` DisplayName string `protobuf:"bytes,20,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncInstallationContactV2) Reset() { *m = SyncInstallationContactV2{} } -func (m *SyncInstallationContactV2) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationContactV2) ProtoMessage() {} +func (x *SyncInstallationContactV2) Reset() { + *x = SyncInstallationContactV2{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationContactV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationContactV2) ProtoMessage() {} + +func (x *SyncInstallationContactV2) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationContactV2.ProtoReflect.Descriptor instead. func (*SyncInstallationContactV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{6} + return file_pairing_proto_rawDescGZIP(), []int{6} } -func (m *SyncInstallationContactV2) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationContactV2.Unmarshal(m, b) -} -func (m *SyncInstallationContactV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationContactV2.Marshal(b, m, deterministic) -} -func (m *SyncInstallationContactV2) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationContactV2.Merge(m, src) -} -func (m *SyncInstallationContactV2) XXX_Size() int { - return xxx_messageInfo_SyncInstallationContactV2.Size(m) -} -func (m *SyncInstallationContactV2) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationContactV2.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationContactV2 proto.InternalMessageInfo - -func (m *SyncInstallationContactV2) GetLastUpdatedLocally() uint64 { - if m != nil { - return m.LastUpdatedLocally +func (x *SyncInstallationContactV2) GetLastUpdatedLocally() uint64 { + if x != nil { + return x.LastUpdatedLocally } return 0 } -func (m *SyncInstallationContactV2) GetId() string { - if m != nil { - return m.Id +func (x *SyncInstallationContactV2) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SyncInstallationContactV2) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *SyncInstallationContactV2) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *SyncInstallationContactV2) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *SyncInstallationContactV2) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *SyncInstallationContactV2) GetLastUpdated() uint64 { - if m != nil { - return m.LastUpdated +func (x *SyncInstallationContactV2) GetLastUpdated() uint64 { + if x != nil { + return x.LastUpdated } return 0 } -func (m *SyncInstallationContactV2) GetSystemTags() []string { - if m != nil { - return m.SystemTags +func (x *SyncInstallationContactV2) GetSystemTags() []string { + if x != nil { + return x.SystemTags } return nil } -func (m *SyncInstallationContactV2) GetLocalNickname() string { - if m != nil { - return m.LocalNickname +func (x *SyncInstallationContactV2) GetLocalNickname() string { + if x != nil { + return x.LocalNickname } return "" } -func (m *SyncInstallationContactV2) GetAdded() bool { - if m != nil { - return m.Added +func (x *SyncInstallationContactV2) GetAdded() bool { + if x != nil { + return x.Added } return false } -func (m *SyncInstallationContactV2) GetBlocked() bool { - if m != nil { - return m.Blocked +func (x *SyncInstallationContactV2) GetBlocked() bool { + if x != nil { + return x.Blocked } return false } -func (m *SyncInstallationContactV2) GetMuted() bool { - if m != nil { - return m.Muted +func (x *SyncInstallationContactV2) GetMuted() bool { + if x != nil { + return x.Muted } return false } -func (m *SyncInstallationContactV2) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncInstallationContactV2) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncInstallationContactV2) GetHasAddedUs() bool { - if m != nil { - return m.HasAddedUs +func (x *SyncInstallationContactV2) GetHasAddedUs() bool { + if x != nil { + return x.HasAddedUs } return false } -func (m *SyncInstallationContactV2) GetVerificationStatus() int64 { - if m != nil { - return m.VerificationStatus +func (x *SyncInstallationContactV2) GetVerificationStatus() int64 { + if x != nil { + return x.VerificationStatus } return 0 } -func (m *SyncInstallationContactV2) GetTrustStatus() int64 { - if m != nil { - return m.TrustStatus +func (x *SyncInstallationContactV2) GetTrustStatus() int64 { + if x != nil { + return x.TrustStatus } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestLocalState() int64 { - if m != nil { - return m.ContactRequestLocalState +func (x *SyncInstallationContactV2) GetContactRequestLocalState() int64 { + if x != nil { + return x.ContactRequestLocalState } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestLocalClock() int64 { - if m != nil { - return m.ContactRequestLocalClock +func (x *SyncInstallationContactV2) GetContactRequestLocalClock() int64 { + if x != nil { + return x.ContactRequestLocalClock } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestRemoteState() int64 { - if m != nil { - return m.ContactRequestRemoteState +func (x *SyncInstallationContactV2) GetContactRequestRemoteState() int64 { + if x != nil { + return x.ContactRequestRemoteState } return 0 } -func (m *SyncInstallationContactV2) GetContactRequestRemoteClock() int64 { - if m != nil { - return m.ContactRequestRemoteClock +func (x *SyncInstallationContactV2) GetContactRequestRemoteClock() int64 { + if x != nil { + return x.ContactRequestRemoteClock } return 0 } -func (m *SyncInstallationContactV2) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *SyncInstallationContactV2) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } type SyncInstallationAccount struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - ProfileImage string `protobuf:"bytes,2,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` - LastUpdated uint64 `protobuf:"varint,3,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + ProfileImage string `protobuf:"bytes,2,opt,name=profile_image,json=profileImage,proto3" json:"profile_image,omitempty"` + LastUpdated uint64 `protobuf:"varint,3,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` } -func (m *SyncInstallationAccount) Reset() { *m = SyncInstallationAccount{} } -func (m *SyncInstallationAccount) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationAccount) ProtoMessage() {} +func (x *SyncInstallationAccount) Reset() { + *x = SyncInstallationAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationAccount) ProtoMessage() {} + +func (x *SyncInstallationAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationAccount.ProtoReflect.Descriptor instead. func (*SyncInstallationAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{7} + return file_pairing_proto_rawDescGZIP(), []int{7} } -func (m *SyncInstallationAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationAccount.Unmarshal(m, b) -} -func (m *SyncInstallationAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationAccount.Marshal(b, m, deterministic) -} -func (m *SyncInstallationAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationAccount.Merge(m, src) -} -func (m *SyncInstallationAccount) XXX_Size() int { - return xxx_messageInfo_SyncInstallationAccount.Size(m) -} -func (m *SyncInstallationAccount) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationAccount proto.InternalMessageInfo - -func (m *SyncInstallationAccount) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncInstallationAccount) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncInstallationAccount) GetProfileImage() string { - if m != nil { - return m.ProfileImage +func (x *SyncInstallationAccount) GetProfileImage() string { + if x != nil { + return x.ProfileImage } return "" } -func (m *SyncInstallationAccount) GetLastUpdated() uint64 { - if m != nil { - return m.LastUpdated +func (x *SyncInstallationAccount) GetLastUpdated() uint64 { + if x != nil { + return x.LastUpdated } return 0 } type SyncInstallationCommunity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` Id []byte `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // Don't sync private_key because we want to have only one control node - PrivateKey []byte `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` // Deprecated: Do not use. - Description []byte `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Joined bool `protobuf:"varint,5,opt,name=joined,proto3" json:"joined,omitempty"` - Verified bool `protobuf:"varint,6,opt,name=verified,proto3" json:"verified,omitempty"` - Muted bool `protobuf:"varint,7,opt,name=muted,proto3" json:"muted,omitempty"` - RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"` - Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"` - Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"` - Spectated bool `protobuf:"varint,11,opt,name=spectated,proto3" json:"spectated,omitempty"` - EncryptionKeys []byte `protobuf:"bytes,12,opt,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` - ControlNode *SyncCommunityControlNode `protobuf:"bytes,13,opt,name=control_node,json=controlNode,proto3" json:"control_node,omitempty"` - JoinedAt int64 `protobuf:"varint,14,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` - LastOpenedAt int64 `protobuf:"varint,15,opt,name=last_opened_at,json=lastOpenedAt,proto3" json:"last_opened_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // + // Deprecated: Marked as deprecated in pairing.proto. + PrivateKey []byte `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + Description []byte `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Joined bool `protobuf:"varint,5,opt,name=joined,proto3" json:"joined,omitempty"` + Verified bool `protobuf:"varint,6,opt,name=verified,proto3" json:"verified,omitempty"` + Muted bool `protobuf:"varint,7,opt,name=muted,proto3" json:"muted,omitempty"` + RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"` + Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"` + Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"` + Spectated bool `protobuf:"varint,11,opt,name=spectated,proto3" json:"spectated,omitempty"` + // Kept for backward compatibility + // + // Deprecated: Marked as deprecated in pairing.proto. + EncryptionKeysV1 []byte `protobuf:"bytes,12,opt,name=encryption_keys_v1,json=encryptionKeysV1,proto3" json:"encryption_keys_v1,omitempty"` + ControlNode *SyncCommunityControlNode `protobuf:"bytes,13,opt,name=control_node,json=controlNode,proto3" json:"control_node,omitempty"` + JoinedAt int64 `protobuf:"varint,14,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` + LastOpenedAt int64 `protobuf:"varint,15,opt,name=last_opened_at,json=lastOpenedAt,proto3" json:"last_opened_at,omitempty"` + EncryptionKeysV2 [][]byte `protobuf:"bytes,16,rep,name=encryption_keys_v2,json=encryptionKeysV2,proto3" json:"encryption_keys_v2,omitempty"` } -func (m *SyncInstallationCommunity) Reset() { *m = SyncInstallationCommunity{} } -func (m *SyncInstallationCommunity) String() string { return proto.CompactTextString(m) } -func (*SyncInstallationCommunity) ProtoMessage() {} +func (x *SyncInstallationCommunity) Reset() { + *x = SyncInstallationCommunity{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncInstallationCommunity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncInstallationCommunity) ProtoMessage() {} + +func (x *SyncInstallationCommunity) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncInstallationCommunity.ProtoReflect.Descriptor instead. func (*SyncInstallationCommunity) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{8} + return file_pairing_proto_rawDescGZIP(), []int{8} } -func (m *SyncInstallationCommunity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncInstallationCommunity.Unmarshal(m, b) -} -func (m *SyncInstallationCommunity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncInstallationCommunity.Marshal(b, m, deterministic) -} -func (m *SyncInstallationCommunity) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncInstallationCommunity.Merge(m, src) -} -func (m *SyncInstallationCommunity) XXX_Size() int { - return xxx_messageInfo_SyncInstallationCommunity.Size(m) -} -func (m *SyncInstallationCommunity) XXX_DiscardUnknown() { - xxx_messageInfo_SyncInstallationCommunity.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncInstallationCommunity proto.InternalMessageInfo - -func (m *SyncInstallationCommunity) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncInstallationCommunity) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncInstallationCommunity) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncInstallationCommunity) GetId() []byte { + if x != nil { + return x.Id } return nil } -// Deprecated: Do not use. -func (m *SyncInstallationCommunity) GetPrivateKey() []byte { - if m != nil { - return m.PrivateKey +// Deprecated: Marked as deprecated in pairing.proto. +func (x *SyncInstallationCommunity) GetPrivateKey() []byte { + if x != nil { + return x.PrivateKey } return nil } -func (m *SyncInstallationCommunity) GetDescription() []byte { - if m != nil { - return m.Description +func (x *SyncInstallationCommunity) GetDescription() []byte { + if x != nil { + return x.Description } return nil } -func (m *SyncInstallationCommunity) GetJoined() bool { - if m != nil { - return m.Joined +func (x *SyncInstallationCommunity) GetJoined() bool { + if x != nil { + return x.Joined } return false } -func (m *SyncInstallationCommunity) GetVerified() bool { - if m != nil { - return m.Verified +func (x *SyncInstallationCommunity) GetVerified() bool { + if x != nil { + return x.Verified } return false } -func (m *SyncInstallationCommunity) GetMuted() bool { - if m != nil { - return m.Muted +func (x *SyncInstallationCommunity) GetMuted() bool { + if x != nil { + return x.Muted } return false } -func (m *SyncInstallationCommunity) GetRequestsToJoin() []*SyncCommunityRequestsToJoin { - if m != nil { - return m.RequestsToJoin +func (x *SyncInstallationCommunity) GetRequestsToJoin() []*SyncCommunityRequestsToJoin { + if x != nil { + return x.RequestsToJoin } return nil } -func (m *SyncInstallationCommunity) GetSettings() *SyncCommunitySettings { - if m != nil { - return m.Settings +func (x *SyncInstallationCommunity) GetSettings() *SyncCommunitySettings { + if x != nil { + return x.Settings } return nil } -func (m *SyncInstallationCommunity) GetEncrypted() bool { - if m != nil { - return m.Encrypted +func (x *SyncInstallationCommunity) GetEncrypted() bool { + if x != nil { + return x.Encrypted } return false } -func (m *SyncInstallationCommunity) GetSpectated() bool { - if m != nil { - return m.Spectated +func (x *SyncInstallationCommunity) GetSpectated() bool { + if x != nil { + return x.Spectated } return false } -func (m *SyncInstallationCommunity) GetEncryptionKeys() []byte { - if m != nil { - return m.EncryptionKeys +// Deprecated: Marked as deprecated in pairing.proto. +func (x *SyncInstallationCommunity) GetEncryptionKeysV1() []byte { + if x != nil { + return x.EncryptionKeysV1 } return nil } -func (m *SyncInstallationCommunity) GetControlNode() *SyncCommunityControlNode { - if m != nil { - return m.ControlNode +func (x *SyncInstallationCommunity) GetControlNode() *SyncCommunityControlNode { + if x != nil { + return x.ControlNode } return nil } -func (m *SyncInstallationCommunity) GetJoinedAt() int64 { - if m != nil { - return m.JoinedAt +func (x *SyncInstallationCommunity) GetJoinedAt() int64 { + if x != nil { + return x.JoinedAt } return 0 } -func (m *SyncInstallationCommunity) GetLastOpenedAt() int64 { - if m != nil { - return m.LastOpenedAt +func (x *SyncInstallationCommunity) GetLastOpenedAt() int64 { + if x != nil { + return x.LastOpenedAt } return 0 } +func (x *SyncInstallationCommunity) GetEncryptionKeysV2() [][]byte { + if x != nil { + return x.EncryptionKeysV2 + } + return nil +} + type SyncCommunityRequestsToJoin struct { - Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` - EnsName string `protobuf:"bytes,4,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` - ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - CommunityId []byte `protobuf:"bytes,6,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - State uint64 `protobuf:"varint,7,opt,name=state,proto3" json:"state,omitempty"` - RevealedAccounts []*RevealedAccount `protobuf:"bytes,8,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"` + EnsName string `protobuf:"bytes,4,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"` + ChatId string `protobuf:"bytes,5,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + CommunityId []byte `protobuf:"bytes,6,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + State uint64 `protobuf:"varint,7,opt,name=state,proto3" json:"state,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,8,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` } -func (m *SyncCommunityRequestsToJoin) Reset() { *m = SyncCommunityRequestsToJoin{} } -func (m *SyncCommunityRequestsToJoin) String() string { return proto.CompactTextString(m) } -func (*SyncCommunityRequestsToJoin) ProtoMessage() {} +func (x *SyncCommunityRequestsToJoin) Reset() { + *x = SyncCommunityRequestsToJoin{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCommunityRequestsToJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCommunityRequestsToJoin) ProtoMessage() {} + +func (x *SyncCommunityRequestsToJoin) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCommunityRequestsToJoin.ProtoReflect.Descriptor instead. func (*SyncCommunityRequestsToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{9} + return file_pairing_proto_rawDescGZIP(), []int{9} } -func (m *SyncCommunityRequestsToJoin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Unmarshal(m, b) -} -func (m *SyncCommunityRequestsToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Marshal(b, m, deterministic) -} -func (m *SyncCommunityRequestsToJoin) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunityRequestsToJoin.Merge(m, src) -} -func (m *SyncCommunityRequestsToJoin) XXX_Size() int { - return xxx_messageInfo_SyncCommunityRequestsToJoin.Size(m) -} -func (m *SyncCommunityRequestsToJoin) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunityRequestsToJoin.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCommunityRequestsToJoin proto.InternalMessageInfo - -func (m *SyncCommunityRequestsToJoin) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncCommunityRequestsToJoin) GetId() []byte { + if x != nil { + return x.Id } return nil } -func (m *SyncCommunityRequestsToJoin) GetPublicKey() string { - if m != nil { - return m.PublicKey +func (x *SyncCommunityRequestsToJoin) GetPublicKey() string { + if x != nil { + return x.PublicKey } return "" } -func (m *SyncCommunityRequestsToJoin) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCommunityRequestsToJoin) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunityRequestsToJoin) GetEnsName() string { - if m != nil { - return m.EnsName +func (x *SyncCommunityRequestsToJoin) GetEnsName() string { + if x != nil { + return x.EnsName } return "" } -func (m *SyncCommunityRequestsToJoin) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SyncCommunityRequestsToJoin) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SyncCommunityRequestsToJoin) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *SyncCommunityRequestsToJoin) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *SyncCommunityRequestsToJoin) GetState() uint64 { - if m != nil { - return m.State +func (x *SyncCommunityRequestsToJoin) GetState() uint64 { + if x != nil { + return x.State } return 0 } -func (m *SyncCommunityRequestsToJoin) GetRevealedAccounts() []*RevealedAccount { - if m != nil { - return m.RevealedAccounts +func (x *SyncCommunityRequestsToJoin) GetRevealedAccounts() []*RevealedAccount { + if x != nil { + return x.RevealedAccounts } return nil } type SyncCommunityControlNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Lamport timestamp of control node change Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // The device id of the control node // Empty if there is no control node - InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` } -func (m *SyncCommunityControlNode) Reset() { *m = SyncCommunityControlNode{} } -func (m *SyncCommunityControlNode) String() string { return proto.CompactTextString(m) } -func (*SyncCommunityControlNode) ProtoMessage() {} +func (x *SyncCommunityControlNode) Reset() { + *x = SyncCommunityControlNode{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCommunityControlNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCommunityControlNode) ProtoMessage() {} + +func (x *SyncCommunityControlNode) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCommunityControlNode.ProtoReflect.Descriptor instead. func (*SyncCommunityControlNode) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{10} + return file_pairing_proto_rawDescGZIP(), []int{10} } -func (m *SyncCommunityControlNode) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunityControlNode.Unmarshal(m, b) -} -func (m *SyncCommunityControlNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunityControlNode.Marshal(b, m, deterministic) -} -func (m *SyncCommunityControlNode) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunityControlNode.Merge(m, src) -} -func (m *SyncCommunityControlNode) XXX_Size() int { - return xxx_messageInfo_SyncCommunityControlNode.Size(m) -} -func (m *SyncCommunityControlNode) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunityControlNode.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCommunityControlNode proto.InternalMessageInfo - -func (m *SyncCommunityControlNode) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCommunityControlNode) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunityControlNode) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *SyncCommunityControlNode) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } type SyncChat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` ChatType uint32 `protobuf:"varint,2,opt,name=chat_type,json=chatType,proto3" json:"chat_type,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` @@ -1391,1075 +1400,1199 @@ type SyncChat struct { Active bool `protobuf:"varint,5,opt,name=active,proto3" json:"active,omitempty"` Clock uint64 `protobuf:"varint,6,opt,name=clock,proto3" json:"clock,omitempty"` Muted bool `protobuf:"varint,7,opt,name=muted,proto3" json:"muted,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncChat) Reset() { *m = SyncChat{} } -func (m *SyncChat) String() string { return proto.CompactTextString(m) } -func (*SyncChat) ProtoMessage() {} +func (x *SyncChat) Reset() { + *x = SyncChat{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncChat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncChat) ProtoMessage() {} + +func (x *SyncChat) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncChat.ProtoReflect.Descriptor instead. func (*SyncChat) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{11} + return file_pairing_proto_rawDescGZIP(), []int{11} } -func (m *SyncChat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncChat.Unmarshal(m, b) -} -func (m *SyncChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncChat.Marshal(b, m, deterministic) -} -func (m *SyncChat) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncChat.Merge(m, src) -} -func (m *SyncChat) XXX_Size() int { - return xxx_messageInfo_SyncChat.Size(m) -} -func (m *SyncChat) XXX_DiscardUnknown() { - xxx_messageInfo_SyncChat.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncChat proto.InternalMessageInfo - -func (m *SyncChat) GetId() string { - if m != nil { - return m.Id +func (x *SyncChat) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SyncChat) GetChatType() uint32 { - if m != nil { - return m.ChatType +func (x *SyncChat) GetChatType() uint32 { + if x != nil { + return x.ChatType } return 0 } -func (m *SyncChat) GetName() string { - if m != nil { - return m.Name +func (x *SyncChat) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncChat) GetMembershipUpdateEvents() []*MembershipUpdateEvents { - if m != nil { - return m.MembershipUpdateEvents +func (x *SyncChat) GetMembershipUpdateEvents() []*MembershipUpdateEvents { + if x != nil { + return x.MembershipUpdateEvents } return nil } -func (m *SyncChat) GetActive() bool { - if m != nil { - return m.Active +func (x *SyncChat) GetActive() bool { + if x != nil { + return x.Active } return false } -func (m *SyncChat) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncChat) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncChat) GetMuted() bool { - if m != nil { - return m.Muted +func (x *SyncChat) GetMuted() bool { + if x != nil { + return x.Muted } return false } type MembershipUpdateEvents struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Type uint32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` - Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` - ChatId string `protobuf:"bytes,6,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - From string `protobuf:"bytes,7,opt,name=from,proto3" json:"from,omitempty"` - RawPayload []byte `protobuf:"bytes,8,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` - Color string `protobuf:"bytes,9,opt,name=color,proto3" json:"color,omitempty"` - Image []byte `protobuf:"bytes,10,opt,name=image,proto3" json:"image,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Type uint32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` + Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Signature []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"` + ChatId string `protobuf:"bytes,6,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + From string `protobuf:"bytes,7,opt,name=from,proto3" json:"from,omitempty"` + RawPayload []byte `protobuf:"bytes,8,opt,name=raw_payload,json=rawPayload,proto3" json:"raw_payload,omitempty"` + Color string `protobuf:"bytes,9,opt,name=color,proto3" json:"color,omitempty"` + Image []byte `protobuf:"bytes,10,opt,name=image,proto3" json:"image,omitempty"` } -func (m *MembershipUpdateEvents) Reset() { *m = MembershipUpdateEvents{} } -func (m *MembershipUpdateEvents) String() string { return proto.CompactTextString(m) } -func (*MembershipUpdateEvents) ProtoMessage() {} +func (x *MembershipUpdateEvents) Reset() { + *x = MembershipUpdateEvents{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MembershipUpdateEvents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MembershipUpdateEvents) ProtoMessage() {} + +func (x *MembershipUpdateEvents) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MembershipUpdateEvents.ProtoReflect.Descriptor instead. func (*MembershipUpdateEvents) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{12} + return file_pairing_proto_rawDescGZIP(), []int{12} } -func (m *MembershipUpdateEvents) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MembershipUpdateEvents.Unmarshal(m, b) -} -func (m *MembershipUpdateEvents) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_MembershipUpdateEvents.Marshal(b, m, deterministic) -} -func (m *MembershipUpdateEvents) XXX_Merge(src proto.Message) { - xxx_messageInfo_MembershipUpdateEvents.Merge(m, src) -} -func (m *MembershipUpdateEvents) XXX_Size() int { - return xxx_messageInfo_MembershipUpdateEvents.Size(m) -} -func (m *MembershipUpdateEvents) XXX_DiscardUnknown() { - xxx_messageInfo_MembershipUpdateEvents.DiscardUnknown(m) -} - -var xxx_messageInfo_MembershipUpdateEvents proto.InternalMessageInfo - -func (m *MembershipUpdateEvents) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *MembershipUpdateEvents) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *MembershipUpdateEvents) GetType() uint32 { - if m != nil { - return m.Type +func (x *MembershipUpdateEvents) GetType() uint32 { + if x != nil { + return x.Type } return 0 } -func (m *MembershipUpdateEvents) GetMembers() []string { - if m != nil { - return m.Members +func (x *MembershipUpdateEvents) GetMembers() []string { + if x != nil { + return x.Members } return nil } -func (m *MembershipUpdateEvents) GetName() string { - if m != nil { - return m.Name +func (x *MembershipUpdateEvents) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *MembershipUpdateEvents) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *MembershipUpdateEvents) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *MembershipUpdateEvents) GetChatId() string { - if m != nil { - return m.ChatId +func (x *MembershipUpdateEvents) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *MembershipUpdateEvents) GetFrom() string { - if m != nil { - return m.From +func (x *MembershipUpdateEvents) GetFrom() string { + if x != nil { + return x.From } return "" } -func (m *MembershipUpdateEvents) GetRawPayload() []byte { - if m != nil { - return m.RawPayload +func (x *MembershipUpdateEvents) GetRawPayload() []byte { + if x != nil { + return x.RawPayload } return nil } -func (m *MembershipUpdateEvents) GetColor() string { - if m != nil { - return m.Color +func (x *MembershipUpdateEvents) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *MembershipUpdateEvents) GetImage() []byte { - if m != nil { - return m.Image +func (x *MembershipUpdateEvents) GetImage() []byte { + if x != nil { + return x.Image } return nil } type SyncChatRemoved struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncChatRemoved) Reset() { *m = SyncChatRemoved{} } -func (m *SyncChatRemoved) String() string { return proto.CompactTextString(m) } -func (*SyncChatRemoved) ProtoMessage() {} +func (x *SyncChatRemoved) Reset() { + *x = SyncChatRemoved{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncChatRemoved) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncChatRemoved) ProtoMessage() {} + +func (x *SyncChatRemoved) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncChatRemoved.ProtoReflect.Descriptor instead. func (*SyncChatRemoved) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{13} + return file_pairing_proto_rawDescGZIP(), []int{13} } -func (m *SyncChatRemoved) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncChatRemoved.Unmarshal(m, b) -} -func (m *SyncChatRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncChatRemoved.Marshal(b, m, deterministic) -} -func (m *SyncChatRemoved) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncChatRemoved.Merge(m, src) -} -func (m *SyncChatRemoved) XXX_Size() int { - return xxx_messageInfo_SyncChatRemoved.Size(m) -} -func (m *SyncChatRemoved) XXX_DiscardUnknown() { - xxx_messageInfo_SyncChatRemoved.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncChatRemoved proto.InternalMessageInfo - -func (m *SyncChatRemoved) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncChatRemoved) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncChatRemoved) GetId() string { - if m != nil { - return m.Id +func (x *SyncChatRemoved) GetId() string { + if x != nil { + return x.Id } return "" } type SyncChatMessagesRead struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncChatMessagesRead) Reset() { *m = SyncChatMessagesRead{} } -func (m *SyncChatMessagesRead) String() string { return proto.CompactTextString(m) } -func (*SyncChatMessagesRead) ProtoMessage() {} +func (x *SyncChatMessagesRead) Reset() { + *x = SyncChatMessagesRead{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncChatMessagesRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncChatMessagesRead) ProtoMessage() {} + +func (x *SyncChatMessagesRead) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncChatMessagesRead.ProtoReflect.Descriptor instead. func (*SyncChatMessagesRead) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{14} + return file_pairing_proto_rawDescGZIP(), []int{14} } -func (m *SyncChatMessagesRead) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncChatMessagesRead.Unmarshal(m, b) -} -func (m *SyncChatMessagesRead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncChatMessagesRead.Marshal(b, m, deterministic) -} -func (m *SyncChatMessagesRead) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncChatMessagesRead.Merge(m, src) -} -func (m *SyncChatMessagesRead) XXX_Size() int { - return xxx_messageInfo_SyncChatMessagesRead.Size(m) -} -func (m *SyncChatMessagesRead) XXX_DiscardUnknown() { - xxx_messageInfo_SyncChatMessagesRead.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncChatMessagesRead proto.InternalMessageInfo - -func (m *SyncChatMessagesRead) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncChatMessagesRead) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncChatMessagesRead) GetId() string { - if m != nil { - return m.Id +func (x *SyncChatMessagesRead) GetId() string { + if x != nil { + return x.Id } return "" } type SyncActivityCenterRead struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterRead) Reset() { *m = SyncActivityCenterRead{} } -func (m *SyncActivityCenterRead) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterRead) ProtoMessage() {} +func (x *SyncActivityCenterRead) Reset() { + *x = SyncActivityCenterRead{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterRead) ProtoMessage() {} + +func (x *SyncActivityCenterRead) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterRead.ProtoReflect.Descriptor instead. func (*SyncActivityCenterRead) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{15} + return file_pairing_proto_rawDescGZIP(), []int{15} } -func (m *SyncActivityCenterRead) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterRead.Unmarshal(m, b) -} -func (m *SyncActivityCenterRead) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterRead.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterRead) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterRead.Merge(m, src) -} -func (m *SyncActivityCenterRead) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterRead.Size(m) -} -func (m *SyncActivityCenterRead) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterRead.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterRead proto.InternalMessageInfo - -func (m *SyncActivityCenterRead) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterRead) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterRead) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterRead) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterAccepted struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterAccepted) Reset() { *m = SyncActivityCenterAccepted{} } -func (m *SyncActivityCenterAccepted) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterAccepted) ProtoMessage() {} +func (x *SyncActivityCenterAccepted) Reset() { + *x = SyncActivityCenterAccepted{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterAccepted) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterAccepted) ProtoMessage() {} + +func (x *SyncActivityCenterAccepted) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterAccepted.ProtoReflect.Descriptor instead. func (*SyncActivityCenterAccepted) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{16} + return file_pairing_proto_rawDescGZIP(), []int{16} } -func (m *SyncActivityCenterAccepted) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterAccepted.Unmarshal(m, b) -} -func (m *SyncActivityCenterAccepted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterAccepted.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterAccepted) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterAccepted.Merge(m, src) -} -func (m *SyncActivityCenterAccepted) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterAccepted.Size(m) -} -func (m *SyncActivityCenterAccepted) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterAccepted.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterAccepted proto.InternalMessageInfo - -func (m *SyncActivityCenterAccepted) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterAccepted) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterAccepted) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterAccepted) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterDismissed struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterDismissed) Reset() { *m = SyncActivityCenterDismissed{} } -func (m *SyncActivityCenterDismissed) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterDismissed) ProtoMessage() {} +func (x *SyncActivityCenterDismissed) Reset() { + *x = SyncActivityCenterDismissed{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterDismissed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterDismissed) ProtoMessage() {} + +func (x *SyncActivityCenterDismissed) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterDismissed.ProtoReflect.Descriptor instead. func (*SyncActivityCenterDismissed) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{17} + return file_pairing_proto_rawDescGZIP(), []int{17} } -func (m *SyncActivityCenterDismissed) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterDismissed.Unmarshal(m, b) -} -func (m *SyncActivityCenterDismissed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterDismissed.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterDismissed) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterDismissed.Merge(m, src) -} -func (m *SyncActivityCenterDismissed) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterDismissed.Size(m) -} -func (m *SyncActivityCenterDismissed) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterDismissed.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterDismissed proto.InternalMessageInfo - -func (m *SyncActivityCenterDismissed) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterDismissed) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterDismissed) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterDismissed) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterDeleted struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterDeleted) Reset() { *m = SyncActivityCenterDeleted{} } -func (m *SyncActivityCenterDeleted) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterDeleted) ProtoMessage() {} +func (x *SyncActivityCenterDeleted) Reset() { + *x = SyncActivityCenterDeleted{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterDeleted) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterDeleted) ProtoMessage() {} + +func (x *SyncActivityCenterDeleted) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterDeleted.ProtoReflect.Descriptor instead. func (*SyncActivityCenterDeleted) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{18} + return file_pairing_proto_rawDescGZIP(), []int{18} } -func (m *SyncActivityCenterDeleted) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterDeleted.Unmarshal(m, b) -} -func (m *SyncActivityCenterDeleted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterDeleted.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterDeleted) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterDeleted.Merge(m, src) -} -func (m *SyncActivityCenterDeleted) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterDeleted.Size(m) -} -func (m *SyncActivityCenterDeleted) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterDeleted.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterDeleted proto.InternalMessageInfo - -func (m *SyncActivityCenterDeleted) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterDeleted) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterDeleted) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterDeleted) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterUnread struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Ids [][]byte `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"` } -func (m *SyncActivityCenterUnread) Reset() { *m = SyncActivityCenterUnread{} } -func (m *SyncActivityCenterUnread) String() string { return proto.CompactTextString(m) } -func (*SyncActivityCenterUnread) ProtoMessage() {} +func (x *SyncActivityCenterUnread) Reset() { + *x = SyncActivityCenterUnread{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncActivityCenterUnread) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncActivityCenterUnread) ProtoMessage() {} + +func (x *SyncActivityCenterUnread) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterUnread.ProtoReflect.Descriptor instead. func (*SyncActivityCenterUnread) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{19} + return file_pairing_proto_rawDescGZIP(), []int{19} } -func (m *SyncActivityCenterUnread) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterUnread.Unmarshal(m, b) -} -func (m *SyncActivityCenterUnread) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterUnread.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterUnread) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterUnread.Merge(m, src) -} -func (m *SyncActivityCenterUnread) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterUnread.Size(m) -} -func (m *SyncActivityCenterUnread) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterUnread.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterUnread proto.InternalMessageInfo - -func (m *SyncActivityCenterUnread) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterUnread) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterUnread) GetIds() [][]byte { - if m != nil { - return m.Ids +func (x *SyncActivityCenterUnread) GetIds() [][]byte { + if x != nil { + return x.Ids } return nil } type SyncActivityCenterCommunityRequestDecision struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id []byte `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - MembershipStatus uint32 `protobuf:"varint,3,opt,name=membership_status,json=membershipStatus,proto3" json:"membership_status,omitempty"` - Decision SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision `protobuf:"varint,4,opt,name=decision,proto3,enum=protobuf.SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision" json:"decision,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id []byte `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + MembershipStatus uint32 `protobuf:"varint,3,opt,name=membership_status,json=membershipStatus,proto3" json:"membership_status,omitempty"` + Decision SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision `protobuf:"varint,4,opt,name=decision,proto3,enum=protobuf.SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision" json:"decision,omitempty"` } -func (m *SyncActivityCenterCommunityRequestDecision) Reset() { - *m = SyncActivityCenterCommunityRequestDecision{} +func (x *SyncActivityCenterCommunityRequestDecision) Reset() { + *x = SyncActivityCenterCommunityRequestDecision{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *SyncActivityCenterCommunityRequestDecision) String() string { - return proto.CompactTextString(m) + +func (x *SyncActivityCenterCommunityRequestDecision) String() string { + return protoimpl.X.MessageStringOf(x) } + func (*SyncActivityCenterCommunityRequestDecision) ProtoMessage() {} + +func (x *SyncActivityCenterCommunityRequestDecision) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncActivityCenterCommunityRequestDecision.ProtoReflect.Descriptor instead. func (*SyncActivityCenterCommunityRequestDecision) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{20} + return file_pairing_proto_rawDescGZIP(), []int{20} } -func (m *SyncActivityCenterCommunityRequestDecision) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncActivityCenterCommunityRequestDecision.Unmarshal(m, b) -} -func (m *SyncActivityCenterCommunityRequestDecision) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncActivityCenterCommunityRequestDecision.Marshal(b, m, deterministic) -} -func (m *SyncActivityCenterCommunityRequestDecision) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncActivityCenterCommunityRequestDecision.Merge(m, src) -} -func (m *SyncActivityCenterCommunityRequestDecision) XXX_Size() int { - return xxx_messageInfo_SyncActivityCenterCommunityRequestDecision.Size(m) -} -func (m *SyncActivityCenterCommunityRequestDecision) XXX_DiscardUnknown() { - xxx_messageInfo_SyncActivityCenterCommunityRequestDecision.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncActivityCenterCommunityRequestDecision proto.InternalMessageInfo - -func (m *SyncActivityCenterCommunityRequestDecision) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncActivityCenterCommunityRequestDecision) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncActivityCenterCommunityRequestDecision) GetId() []byte { - if m != nil { - return m.Id +func (x *SyncActivityCenterCommunityRequestDecision) GetId() []byte { + if x != nil { + return x.Id } return nil } -func (m *SyncActivityCenterCommunityRequestDecision) GetMembershipStatus() uint32 { - if m != nil { - return m.MembershipStatus +func (x *SyncActivityCenterCommunityRequestDecision) GetMembershipStatus() uint32 { + if x != nil { + return x.MembershipStatus } return 0 } -func (m *SyncActivityCenterCommunityRequestDecision) GetDecision() SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision { - if m != nil { - return m.Decision +func (x *SyncActivityCenterCommunityRequestDecision) GetDecision() SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision { + if x != nil { + return x.Decision } return SyncActivityCenterCommunityRequestDecision_ACCEPTED } type SyncBookmark struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` - Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` - DeletedAt uint64 `protobuf:"varint,6,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + ImageUrl string `protobuf:"bytes,4,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` + DeletedAt uint64 `protobuf:"varint,6,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` } -func (m *SyncBookmark) Reset() { *m = SyncBookmark{} } -func (m *SyncBookmark) String() string { return proto.CompactTextString(m) } -func (*SyncBookmark) ProtoMessage() {} +func (x *SyncBookmark) Reset() { + *x = SyncBookmark{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncBookmark) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncBookmark) ProtoMessage() {} + +func (x *SyncBookmark) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncBookmark.ProtoReflect.Descriptor instead. func (*SyncBookmark) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{21} + return file_pairing_proto_rawDescGZIP(), []int{21} } -func (m *SyncBookmark) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncBookmark.Unmarshal(m, b) -} -func (m *SyncBookmark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncBookmark.Marshal(b, m, deterministic) -} -func (m *SyncBookmark) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncBookmark.Merge(m, src) -} -func (m *SyncBookmark) XXX_Size() int { - return xxx_messageInfo_SyncBookmark.Size(m) -} -func (m *SyncBookmark) XXX_DiscardUnknown() { - xxx_messageInfo_SyncBookmark.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncBookmark proto.InternalMessageInfo - -func (m *SyncBookmark) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncBookmark) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncBookmark) GetUrl() string { - if m != nil { - return m.Url +func (x *SyncBookmark) GetUrl() string { + if x != nil { + return x.Url } return "" } -func (m *SyncBookmark) GetName() string { - if m != nil { - return m.Name +func (x *SyncBookmark) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncBookmark) GetImageUrl() string { - if m != nil { - return m.ImageUrl +func (x *SyncBookmark) GetImageUrl() string { + if x != nil { + return x.ImageUrl } return "" } -func (m *SyncBookmark) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncBookmark) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncBookmark) GetDeletedAt() uint64 { - if m != nil { - return m.DeletedAt +func (x *SyncBookmark) GetDeletedAt() uint64 { + if x != nil { + return x.DeletedAt } return 0 } type SyncEnsUsernameDetail struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - Removed bool `protobuf:"varint,4,opt,name=removed,proto3" json:"removed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Removed bool `protobuf:"varint,4,opt,name=removed,proto3" json:"removed,omitempty"` } -func (m *SyncEnsUsernameDetail) Reset() { *m = SyncEnsUsernameDetail{} } -func (m *SyncEnsUsernameDetail) String() string { return proto.CompactTextString(m) } -func (*SyncEnsUsernameDetail) ProtoMessage() {} +func (x *SyncEnsUsernameDetail) Reset() { + *x = SyncEnsUsernameDetail{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncEnsUsernameDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncEnsUsernameDetail) ProtoMessage() {} + +func (x *SyncEnsUsernameDetail) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncEnsUsernameDetail.ProtoReflect.Descriptor instead. func (*SyncEnsUsernameDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{22} + return file_pairing_proto_rawDescGZIP(), []int{22} } -func (m *SyncEnsUsernameDetail) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncEnsUsernameDetail.Unmarshal(m, b) -} -func (m *SyncEnsUsernameDetail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncEnsUsernameDetail.Marshal(b, m, deterministic) -} -func (m *SyncEnsUsernameDetail) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncEnsUsernameDetail.Merge(m, src) -} -func (m *SyncEnsUsernameDetail) XXX_Size() int { - return xxx_messageInfo_SyncEnsUsernameDetail.Size(m) -} -func (m *SyncEnsUsernameDetail) XXX_DiscardUnknown() { - xxx_messageInfo_SyncEnsUsernameDetail.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncEnsUsernameDetail proto.InternalMessageInfo - -func (m *SyncEnsUsernameDetail) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncEnsUsernameDetail) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncEnsUsernameDetail) GetUsername() string { - if m != nil { - return m.Username +func (x *SyncEnsUsernameDetail) GetUsername() string { + if x != nil { + return x.Username } return "" } -func (m *SyncEnsUsernameDetail) GetChainId() uint64 { - if m != nil { - return m.ChainId +func (x *SyncEnsUsernameDetail) GetChainId() uint64 { + if x != nil { + return x.ChainId } return 0 } -func (m *SyncEnsUsernameDetail) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncEnsUsernameDetail) GetRemoved() bool { + if x != nil { + return x.Removed } return false } type SyncClearHistory struct { - ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - ClearedAt uint64 `protobuf:"varint,2,opt,name=cleared_at,json=clearedAt,proto3" json:"cleared_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + ClearedAt uint64 `protobuf:"varint,2,opt,name=cleared_at,json=clearedAt,proto3" json:"cleared_at,omitempty"` } -func (m *SyncClearHistory) Reset() { *m = SyncClearHistory{} } -func (m *SyncClearHistory) String() string { return proto.CompactTextString(m) } -func (*SyncClearHistory) ProtoMessage() {} +func (x *SyncClearHistory) Reset() { + *x = SyncClearHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncClearHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncClearHistory) ProtoMessage() {} + +func (x *SyncClearHistory) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncClearHistory.ProtoReflect.Descriptor instead. func (*SyncClearHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{23} + return file_pairing_proto_rawDescGZIP(), []int{23} } -func (m *SyncClearHistory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncClearHistory.Unmarshal(m, b) -} -func (m *SyncClearHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncClearHistory.Marshal(b, m, deterministic) -} -func (m *SyncClearHistory) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncClearHistory.Merge(m, src) -} -func (m *SyncClearHistory) XXX_Size() int { - return xxx_messageInfo_SyncClearHistory.Size(m) -} -func (m *SyncClearHistory) XXX_DiscardUnknown() { - xxx_messageInfo_SyncClearHistory.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncClearHistory proto.InternalMessageInfo - -func (m *SyncClearHistory) GetChatId() string { - if m != nil { - return m.ChatId +func (x *SyncClearHistory) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *SyncClearHistory) GetClearedAt() uint64 { - if m != nil { - return m.ClearedAt +func (x *SyncClearHistory) GetClearedAt() uint64 { + if x != nil { + return x.ClearedAt } return 0 } type SyncProfilePicture struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - Width uint32 `protobuf:"varint,3,opt,name=width,proto3" json:"width,omitempty"` - Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` - FileSize uint32 `protobuf:"varint,5,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` - ResizeTarget uint32 `protobuf:"varint,6,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` - Clock uint64 `protobuf:"varint,7,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Width uint32 `protobuf:"varint,3,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` + FileSize uint32 `protobuf:"varint,5,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` + ResizeTarget uint32 `protobuf:"varint,6,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` + Clock uint64 `protobuf:"varint,7,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *SyncProfilePicture) Reset() { *m = SyncProfilePicture{} } -func (m *SyncProfilePicture) String() string { return proto.CompactTextString(m) } -func (*SyncProfilePicture) ProtoMessage() {} +func (x *SyncProfilePicture) Reset() { + *x = SyncProfilePicture{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncProfilePicture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProfilePicture) ProtoMessage() {} + +func (x *SyncProfilePicture) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProfilePicture.ProtoReflect.Descriptor instead. func (*SyncProfilePicture) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{24} + return file_pairing_proto_rawDescGZIP(), []int{24} } -func (m *SyncProfilePicture) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncProfilePicture.Unmarshal(m, b) -} -func (m *SyncProfilePicture) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncProfilePicture.Marshal(b, m, deterministic) -} -func (m *SyncProfilePicture) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncProfilePicture.Merge(m, src) -} -func (m *SyncProfilePicture) XXX_Size() int { - return xxx_messageInfo_SyncProfilePicture.Size(m) -} -func (m *SyncProfilePicture) XXX_DiscardUnknown() { - xxx_messageInfo_SyncProfilePicture.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncProfilePicture proto.InternalMessageInfo - -func (m *SyncProfilePicture) GetName() string { - if m != nil { - return m.Name +func (x *SyncProfilePicture) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncProfilePicture) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *SyncProfilePicture) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *SyncProfilePicture) GetWidth() uint32 { - if m != nil { - return m.Width +func (x *SyncProfilePicture) GetWidth() uint32 { + if x != nil { + return x.Width } return 0 } -func (m *SyncProfilePicture) GetHeight() uint32 { - if m != nil { - return m.Height +func (x *SyncProfilePicture) GetHeight() uint32 { + if x != nil { + return x.Height } return 0 } -func (m *SyncProfilePicture) GetFileSize() uint32 { - if m != nil { - return m.FileSize +func (x *SyncProfilePicture) GetFileSize() uint32 { + if x != nil { + return x.FileSize } return 0 } -func (m *SyncProfilePicture) GetResizeTarget() uint32 { - if m != nil { - return m.ResizeTarget +func (x *SyncProfilePicture) GetResizeTarget() uint32 { + if x != nil { + return x.ResizeTarget } return 0 } -func (m *SyncProfilePicture) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncProfilePicture) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type SyncProfilePictures struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Pictures []*SyncProfilePicture `protobuf:"bytes,2,rep,name=pictures,proto3" json:"pictures,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Pictures []*SyncProfilePicture `protobuf:"bytes,2,rep,name=pictures,proto3" json:"pictures,omitempty"` } -func (m *SyncProfilePictures) Reset() { *m = SyncProfilePictures{} } -func (m *SyncProfilePictures) String() string { return proto.CompactTextString(m) } -func (*SyncProfilePictures) ProtoMessage() {} +func (x *SyncProfilePictures) Reset() { + *x = SyncProfilePictures{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncProfilePictures) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProfilePictures) ProtoMessage() {} + +func (x *SyncProfilePictures) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProfilePictures.ProtoReflect.Descriptor instead. func (*SyncProfilePictures) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{25} + return file_pairing_proto_rawDescGZIP(), []int{25} } -func (m *SyncProfilePictures) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncProfilePictures.Unmarshal(m, b) -} -func (m *SyncProfilePictures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncProfilePictures.Marshal(b, m, deterministic) -} -func (m *SyncProfilePictures) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncProfilePictures.Merge(m, src) -} -func (m *SyncProfilePictures) XXX_Size() int { - return xxx_messageInfo_SyncProfilePictures.Size(m) -} -func (m *SyncProfilePictures) XXX_DiscardUnknown() { - xxx_messageInfo_SyncProfilePictures.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncProfilePictures proto.InternalMessageInfo - -func (m *SyncProfilePictures) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncProfilePictures) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncProfilePictures) GetPictures() []*SyncProfilePicture { - if m != nil { - return m.Pictures +func (x *SyncProfilePictures) GetPictures() []*SyncProfilePicture { + if x != nil { + return x.Pictures } return nil } type SyncAccount struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - ColorId string `protobuf:"bytes,7,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` - Emoji string `protobuf:"bytes,8,opt,name=emoji,proto3" json:"emoji,omitempty"` - Wallet bool `protobuf:"varint,9,opt,name=wallet,proto3" json:"wallet,omitempty"` - Chat bool `protobuf:"varint,10,opt,name=chat,proto3" json:"chat,omitempty"` - Hidden bool `protobuf:"varint,11,opt,name=hidden,proto3" json:"hidden,omitempty"` - Removed bool `protobuf:"varint,12,opt,name=removed,proto3" json:"removed,omitempty"` - Position int64 `protobuf:"varint,13,opt,name=position,proto3" json:"position,omitempty"` - ProdPreferredChainIDs string `protobuf:"bytes,14,opt,name=prodPreferredChainIDs,proto3" json:"prodPreferredChainIDs,omitempty"` - TestPreferredChainIDs string `protobuf:"bytes,15,opt,name=testPreferredChainIDs,proto3" json:"testPreferredChainIDs,omitempty"` - Operable string `protobuf:"bytes,16,opt,name=operable,proto3" json:"operable,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Address []byte `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` + Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` + ColorId string `protobuf:"bytes,7,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` + Emoji string `protobuf:"bytes,8,opt,name=emoji,proto3" json:"emoji,omitempty"` + Wallet bool `protobuf:"varint,9,opt,name=wallet,proto3" json:"wallet,omitempty"` + Chat bool `protobuf:"varint,10,opt,name=chat,proto3" json:"chat,omitempty"` + Hidden bool `protobuf:"varint,11,opt,name=hidden,proto3" json:"hidden,omitempty"` + Removed bool `protobuf:"varint,12,opt,name=removed,proto3" json:"removed,omitempty"` + Position int64 `protobuf:"varint,13,opt,name=position,proto3" json:"position,omitempty"` + ProdPreferredChainIDs string `protobuf:"bytes,14,opt,name=prodPreferredChainIDs,proto3" json:"prodPreferredChainIDs,omitempty"` + TestPreferredChainIDs string `protobuf:"bytes,15,opt,name=testPreferredChainIDs,proto3" json:"testPreferredChainIDs,omitempty"` + Operable string `protobuf:"bytes,16,opt,name=operable,proto3" json:"operable,omitempty"` } -func (m *SyncAccount) Reset() { *m = SyncAccount{} } -func (m *SyncAccount) String() string { return proto.CompactTextString(m) } -func (*SyncAccount) ProtoMessage() {} +func (x *SyncAccount) Reset() { + *x = SyncAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccount) ProtoMessage() {} + +func (x *SyncAccount) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccount.ProtoReflect.Descriptor instead. func (*SyncAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{26} + return file_pairing_proto_rawDescGZIP(), []int{26} } -func (m *SyncAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccount.Unmarshal(m, b) -} -func (m *SyncAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccount.Marshal(b, m, deterministic) -} -func (m *SyncAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccount.Merge(m, src) -} -func (m *SyncAccount) XXX_Size() int { - return xxx_messageInfo_SyncAccount.Size(m) -} -func (m *SyncAccount) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccount proto.InternalMessageInfo - -func (m *SyncAccount) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncAccount) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncAccount) GetAddress() []byte { - if m != nil { - return m.Address +func (x *SyncAccount) GetAddress() []byte { + if x != nil { + return x.Address } return nil } -func (m *SyncAccount) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncAccount) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncAccount) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *SyncAccount) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *SyncAccount) GetPath() string { - if m != nil { - return m.Path +func (x *SyncAccount) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *SyncAccount) GetName() string { - if m != nil { - return m.Name +func (x *SyncAccount) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncAccount) GetColorId() string { - if m != nil { - return m.ColorId +func (x *SyncAccount) GetColorId() string { + if x != nil { + return x.ColorId } return "" } -func (m *SyncAccount) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *SyncAccount) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *SyncAccount) GetWallet() bool { - if m != nil { - return m.Wallet +func (x *SyncAccount) GetWallet() bool { + if x != nil { + return x.Wallet } return false } -func (m *SyncAccount) GetChat() bool { - if m != nil { - return m.Chat +func (x *SyncAccount) GetChat() bool { + if x != nil { + return x.Chat } return false } -func (m *SyncAccount) GetHidden() bool { - if m != nil { - return m.Hidden +func (x *SyncAccount) GetHidden() bool { + if x != nil { + return x.Hidden } return false } -func (m *SyncAccount) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncAccount) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncAccount) GetPosition() int64 { - if m != nil { - return m.Position +func (x *SyncAccount) GetPosition() int64 { + if x != nil { + return x.Position } return 0 } -func (m *SyncAccount) GetProdPreferredChainIDs() string { - if m != nil { - return m.ProdPreferredChainIDs +func (x *SyncAccount) GetProdPreferredChainIDs() string { + if x != nil { + return x.ProdPreferredChainIDs } return "" } -func (m *SyncAccount) GetTestPreferredChainIDs() string { - if m != nil { - return m.TestPreferredChainIDs +func (x *SyncAccount) GetTestPreferredChainIDs() string { + if x != nil { + return x.TestPreferredChainIDs } return "" } -func (m *SyncAccount) GetOperable() string { - if m != nil { - return m.Operable +func (x *SyncAccount) GetOperable() string { + if x != nil { + return x.Operable } return "" } type SyncKeypair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` KeyUid string `protobuf:"bytes,2,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` @@ -2471,109 +2604,113 @@ type SyncKeypair struct { Keycards []*SyncKeycard `protobuf:"bytes,9,rep,name=keycards,proto3" json:"keycards,omitempty"` Removed bool `protobuf:"varint,10,opt,name=removed,proto3" json:"removed,omitempty"` KeycardPairings []byte `protobuf:"bytes,11,opt,name=keycard_pairings,json=keycardPairings,proto3" json:"keycard_pairings,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *SyncKeypair) Reset() { *m = SyncKeypair{} } -func (m *SyncKeypair) String() string { return proto.CompactTextString(m) } -func (*SyncKeypair) ProtoMessage() {} +func (x *SyncKeypair) Reset() { + *x = SyncKeypair{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncKeypair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncKeypair) ProtoMessage() {} + +func (x *SyncKeypair) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncKeypair.ProtoReflect.Descriptor instead. func (*SyncKeypair) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{27} + return file_pairing_proto_rawDescGZIP(), []int{27} } -func (m *SyncKeypair) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncKeypair.Unmarshal(m, b) -} -func (m *SyncKeypair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncKeypair.Marshal(b, m, deterministic) -} -func (m *SyncKeypair) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncKeypair.Merge(m, src) -} -func (m *SyncKeypair) XXX_Size() int { - return xxx_messageInfo_SyncKeypair.Size(m) -} -func (m *SyncKeypair) XXX_DiscardUnknown() { - xxx_messageInfo_SyncKeypair.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncKeypair proto.InternalMessageInfo - -func (m *SyncKeypair) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncKeypair) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncKeypair) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncKeypair) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncKeypair) GetName() string { - if m != nil { - return m.Name +func (x *SyncKeypair) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncKeypair) GetType() string { - if m != nil { - return m.Type +func (x *SyncKeypair) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *SyncKeypair) GetDerivedFrom() string { - if m != nil { - return m.DerivedFrom +func (x *SyncKeypair) GetDerivedFrom() string { + if x != nil { + return x.DerivedFrom } return "" } -func (m *SyncKeypair) GetLastUsedDerivationIndex() uint64 { - if m != nil { - return m.LastUsedDerivationIndex +func (x *SyncKeypair) GetLastUsedDerivationIndex() uint64 { + if x != nil { + return x.LastUsedDerivationIndex } return 0 } -func (m *SyncKeypair) GetSyncedFrom() string { - if m != nil { - return m.SyncedFrom +func (x *SyncKeypair) GetSyncedFrom() string { + if x != nil { + return x.SyncedFrom } return "" } -func (m *SyncKeypair) GetAccounts() []*SyncAccount { - if m != nil { - return m.Accounts +func (x *SyncKeypair) GetAccounts() []*SyncAccount { + if x != nil { + return x.Accounts } return nil } -func (m *SyncKeypair) GetKeycards() []*SyncKeycard { - if m != nil { - return m.Keycards +func (x *SyncKeypair) GetKeycards() []*SyncKeycard { + if x != nil { + return x.Keycards } return nil } -func (m *SyncKeypair) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncKeypair) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncKeypair) GetKeycardPairings() []byte { - if m != nil { - return m.KeycardPairings +func (x *SyncKeypair) GetKeycardPairings() []byte { + if x != nil { + return x.KeycardPairings } return nil } @@ -2581,1296 +2718,2729 @@ func (m *SyncKeypair) GetKeycardPairings() []byte { // this message is used for syncing accounts positions only, for syncing any other info consider // `SyncAccount` or `SyncKeypair` message type SyncAccountsPositions struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Accounts []*SyncAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Accounts []*SyncAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` } -func (m *SyncAccountsPositions) Reset() { *m = SyncAccountsPositions{} } -func (m *SyncAccountsPositions) String() string { return proto.CompactTextString(m) } -func (*SyncAccountsPositions) ProtoMessage() {} +func (x *SyncAccountsPositions) Reset() { + *x = SyncAccountsPositions{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccountsPositions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccountsPositions) ProtoMessage() {} + +func (x *SyncAccountsPositions) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccountsPositions.ProtoReflect.Descriptor instead. func (*SyncAccountsPositions) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{28} + return file_pairing_proto_rawDescGZIP(), []int{28} } -func (m *SyncAccountsPositions) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccountsPositions.Unmarshal(m, b) -} -func (m *SyncAccountsPositions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccountsPositions.Marshal(b, m, deterministic) -} -func (m *SyncAccountsPositions) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccountsPositions.Merge(m, src) -} -func (m *SyncAccountsPositions) XXX_Size() int { - return xxx_messageInfo_SyncAccountsPositions.Size(m) -} -func (m *SyncAccountsPositions) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccountsPositions.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccountsPositions proto.InternalMessageInfo - -func (m *SyncAccountsPositions) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncAccountsPositions) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncAccountsPositions) GetAccounts() []*SyncAccount { - if m != nil { - return m.Accounts +func (x *SyncAccountsPositions) GetAccounts() []*SyncAccount { + if x != nil { + return x.Accounts } return nil } type SyncSavedAddress struct { - Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,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"` - ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` - Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` - IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` - Color string `protobuf:"bytes,11,opt,name=color,proto3" json:"color,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,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"` + ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` + Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` + IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` + Color string `protobuf:"bytes,11,opt,name=color,proto3" json:"color,omitempty"` } -func (m *SyncSavedAddress) Reset() { *m = SyncSavedAddress{} } -func (m *SyncSavedAddress) String() string { return proto.CompactTextString(m) } -func (*SyncSavedAddress) ProtoMessage() {} +func (x *SyncSavedAddress) Reset() { + *x = SyncSavedAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSavedAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSavedAddress) ProtoMessage() {} + +func (x *SyncSavedAddress) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSavedAddress.ProtoReflect.Descriptor instead. func (*SyncSavedAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{29} + return file_pairing_proto_rawDescGZIP(), []int{29} } -func (m *SyncSavedAddress) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSavedAddress.Unmarshal(m, b) -} -func (m *SyncSavedAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSavedAddress.Marshal(b, m, deterministic) -} -func (m *SyncSavedAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSavedAddress.Merge(m, src) -} -func (m *SyncSavedAddress) XXX_Size() int { - return xxx_messageInfo_SyncSavedAddress.Size(m) -} -func (m *SyncSavedAddress) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSavedAddress.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSavedAddress proto.InternalMessageInfo - -func (m *SyncSavedAddress) GetAddress() []byte { - if m != nil { - return m.Address +func (x *SyncSavedAddress) GetAddress() []byte { + if x != nil { + return x.Address } return nil } -func (m *SyncSavedAddress) GetName() string { - if m != nil { - return m.Name +func (x *SyncSavedAddress) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncSavedAddress) GetRemoved() bool { - if m != nil { - return m.Removed +func (x *SyncSavedAddress) GetRemoved() bool { + if x != nil { + return x.Removed } return false } -func (m *SyncSavedAddress) GetUpdateClock() uint64 { - if m != nil { - return m.UpdateClock +func (x *SyncSavedAddress) GetUpdateClock() uint64 { + if x != nil { + return x.UpdateClock } return 0 } -func (m *SyncSavedAddress) GetChainShortNames() string { - if m != nil { - return m.ChainShortNames +func (x *SyncSavedAddress) GetChainShortNames() string { + if x != nil { + return x.ChainShortNames } return "" } -func (m *SyncSavedAddress) GetEns() string { - if m != nil { - return m.Ens +func (x *SyncSavedAddress) GetEns() string { + if x != nil { + return x.Ens } return "" } -func (m *SyncSavedAddress) GetIsTest() bool { - if m != nil { - return m.IsTest +func (x *SyncSavedAddress) GetIsTest() bool { + if x != nil { + return x.IsTest } return false } -func (m *SyncSavedAddress) GetColor() string { - if m != nil { - return m.Color +func (x *SyncSavedAddress) GetColor() string { + if x != nil { + return x.Color } return "" } type SyncCommunitySettings struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - HistoryArchiveSupportEnabled bool `protobuf:"varint,3,opt,name=history_archive_support_enabled,json=historyArchiveSupportEnabled,proto3" json:"history_archive_support_enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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"` + HistoryArchiveSupportEnabled bool `protobuf:"varint,3,opt,name=history_archive_support_enabled,json=historyArchiveSupportEnabled,proto3" json:"history_archive_support_enabled,omitempty"` } -func (m *SyncCommunitySettings) Reset() { *m = SyncCommunitySettings{} } -func (m *SyncCommunitySettings) String() string { return proto.CompactTextString(m) } -func (*SyncCommunitySettings) ProtoMessage() {} +func (x *SyncCommunitySettings) Reset() { + *x = SyncCommunitySettings{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCommunitySettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCommunitySettings) ProtoMessage() {} + +func (x *SyncCommunitySettings) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCommunitySettings.ProtoReflect.Descriptor instead. func (*SyncCommunitySettings) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{30} + return file_pairing_proto_rawDescGZIP(), []int{30} } -func (m *SyncCommunitySettings) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCommunitySettings.Unmarshal(m, b) -} -func (m *SyncCommunitySettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCommunitySettings.Marshal(b, m, deterministic) -} -func (m *SyncCommunitySettings) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCommunitySettings.Merge(m, src) -} -func (m *SyncCommunitySettings) XXX_Size() int { - return xxx_messageInfo_SyncCommunitySettings.Size(m) -} -func (m *SyncCommunitySettings) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCommunitySettings.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCommunitySettings proto.InternalMessageInfo - -func (m *SyncCommunitySettings) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCommunitySettings) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCommunitySettings) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *SyncCommunitySettings) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *SyncCommunitySettings) GetHistoryArchiveSupportEnabled() bool { - if m != nil { - return m.HistoryArchiveSupportEnabled +func (x *SyncCommunitySettings) GetHistoryArchiveSupportEnabled() bool { + if x != nil { + return x.HistoryArchiveSupportEnabled } return false } type SyncTrustedUser struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Status SyncTrustedUser_TrustStatus `protobuf:"varint,3,opt,name=status,proto3,enum=protobuf.SyncTrustedUser_TrustStatus" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Status SyncTrustedUser_TrustStatus `protobuf:"varint,3,opt,name=status,proto3,enum=protobuf.SyncTrustedUser_TrustStatus" json:"status,omitempty"` } -func (m *SyncTrustedUser) Reset() { *m = SyncTrustedUser{} } -func (m *SyncTrustedUser) String() string { return proto.CompactTextString(m) } -func (*SyncTrustedUser) ProtoMessage() {} +func (x *SyncTrustedUser) Reset() { + *x = SyncTrustedUser{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncTrustedUser) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncTrustedUser) ProtoMessage() {} + +func (x *SyncTrustedUser) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncTrustedUser.ProtoReflect.Descriptor instead. func (*SyncTrustedUser) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{31} + return file_pairing_proto_rawDescGZIP(), []int{31} } -func (m *SyncTrustedUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncTrustedUser.Unmarshal(m, b) -} -func (m *SyncTrustedUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncTrustedUser.Marshal(b, m, deterministic) -} -func (m *SyncTrustedUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncTrustedUser.Merge(m, src) -} -func (m *SyncTrustedUser) XXX_Size() int { - return xxx_messageInfo_SyncTrustedUser.Size(m) -} -func (m *SyncTrustedUser) XXX_DiscardUnknown() { - xxx_messageInfo_SyncTrustedUser.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncTrustedUser proto.InternalMessageInfo - -func (m *SyncTrustedUser) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncTrustedUser) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncTrustedUser) GetId() string { - if m != nil { - return m.Id +func (x *SyncTrustedUser) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *SyncTrustedUser) GetStatus() SyncTrustedUser_TrustStatus { - if m != nil { - return m.Status +func (x *SyncTrustedUser) GetStatus() SyncTrustedUser_TrustStatus { + if x != nil { + return x.Status } return SyncTrustedUser_UNKNOWN } type SyncVerificationRequest struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` - To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` - Challenge string `protobuf:"bytes,4,opt,name=challenge,proto3" json:"challenge,omitempty"` - RequestedAt uint64 `protobuf:"varint,5,opt,name=requested_at,json=requestedAt,proto3" json:"requested_at,omitempty"` - Response string `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` - RepliedAt uint64 `protobuf:"varint,7,opt,name=replied_at,json=repliedAt,proto3" json:"replied_at,omitempty"` - VerificationStatus SyncVerificationRequest_VerificationStatus `protobuf:"varint,8,opt,name=verification_status,json=verificationStatus,proto3,enum=protobuf.SyncVerificationRequest_VerificationStatus" json:"verification_status,omitempty"` - Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` + To string `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"` + Challenge string `protobuf:"bytes,4,opt,name=challenge,proto3" json:"challenge,omitempty"` + RequestedAt uint64 `protobuf:"varint,5,opt,name=requested_at,json=requestedAt,proto3" json:"requested_at,omitempty"` + Response string `protobuf:"bytes,6,opt,name=response,proto3" json:"response,omitempty"` + RepliedAt uint64 `protobuf:"varint,7,opt,name=replied_at,json=repliedAt,proto3" json:"replied_at,omitempty"` + VerificationStatus SyncVerificationRequest_VerificationStatus `protobuf:"varint,8,opt,name=verification_status,json=verificationStatus,proto3,enum=protobuf.SyncVerificationRequest_VerificationStatus" json:"verification_status,omitempty"` + Id string `protobuf:"bytes,9,opt,name=id,proto3" json:"id,omitempty"` } -func (m *SyncVerificationRequest) Reset() { *m = SyncVerificationRequest{} } -func (m *SyncVerificationRequest) String() string { return proto.CompactTextString(m) } -func (*SyncVerificationRequest) ProtoMessage() {} +func (x *SyncVerificationRequest) Reset() { + *x = SyncVerificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncVerificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncVerificationRequest) ProtoMessage() {} + +func (x *SyncVerificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncVerificationRequest.ProtoReflect.Descriptor instead. func (*SyncVerificationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{32} + return file_pairing_proto_rawDescGZIP(), []int{32} } -func (m *SyncVerificationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncVerificationRequest.Unmarshal(m, b) -} -func (m *SyncVerificationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncVerificationRequest.Marshal(b, m, deterministic) -} -func (m *SyncVerificationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncVerificationRequest.Merge(m, src) -} -func (m *SyncVerificationRequest) XXX_Size() int { - return xxx_messageInfo_SyncVerificationRequest.Size(m) -} -func (m *SyncVerificationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SyncVerificationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncVerificationRequest proto.InternalMessageInfo - -func (m *SyncVerificationRequest) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncVerificationRequest) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncVerificationRequest) GetFrom() string { - if m != nil { - return m.From +func (x *SyncVerificationRequest) GetFrom() string { + if x != nil { + return x.From } return "" } -func (m *SyncVerificationRequest) GetTo() string { - if m != nil { - return m.To +func (x *SyncVerificationRequest) GetTo() string { + if x != nil { + return x.To } return "" } -func (m *SyncVerificationRequest) GetChallenge() string { - if m != nil { - return m.Challenge +func (x *SyncVerificationRequest) GetChallenge() string { + if x != nil { + return x.Challenge } return "" } -func (m *SyncVerificationRequest) GetRequestedAt() uint64 { - if m != nil { - return m.RequestedAt +func (x *SyncVerificationRequest) GetRequestedAt() uint64 { + if x != nil { + return x.RequestedAt } return 0 } -func (m *SyncVerificationRequest) GetResponse() string { - if m != nil { - return m.Response +func (x *SyncVerificationRequest) GetResponse() string { + if x != nil { + return x.Response } return "" } -func (m *SyncVerificationRequest) GetRepliedAt() uint64 { - if m != nil { - return m.RepliedAt +func (x *SyncVerificationRequest) GetRepliedAt() uint64 { + if x != nil { + return x.RepliedAt } return 0 } -func (m *SyncVerificationRequest) GetVerificationStatus() SyncVerificationRequest_VerificationStatus { - if m != nil { - return m.VerificationStatus +func (x *SyncVerificationRequest) GetVerificationStatus() SyncVerificationRequest_VerificationStatus { + if x != nil { + return x.VerificationStatus } return SyncVerificationRequest_UNKNOWN } -func (m *SyncVerificationRequest) GetId() string { - if m != nil { - return m.Id +func (x *SyncVerificationRequest) GetId() string { + if x != nil { + return x.Id } return "" } type SyncContactRequestDecision struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` - DecisionStatus SyncContactRequestDecision_DecisionStatus `protobuf:"varint,3,opt,name=decision_status,json=decisionStatus,proto3,enum=protobuf.SyncContactRequestDecision_DecisionStatus" json:"decision_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + RequestId string `protobuf:"bytes,2,opt,name=requestId,proto3" json:"requestId,omitempty"` + DecisionStatus SyncContactRequestDecision_DecisionStatus `protobuf:"varint,3,opt,name=decision_status,json=decisionStatus,proto3,enum=protobuf.SyncContactRequestDecision_DecisionStatus" json:"decision_status,omitempty"` } -func (m *SyncContactRequestDecision) Reset() { *m = SyncContactRequestDecision{} } -func (m *SyncContactRequestDecision) String() string { return proto.CompactTextString(m) } -func (*SyncContactRequestDecision) ProtoMessage() {} +func (x *SyncContactRequestDecision) Reset() { + *x = SyncContactRequestDecision{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncContactRequestDecision) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncContactRequestDecision) ProtoMessage() {} + +func (x *SyncContactRequestDecision) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncContactRequestDecision.ProtoReflect.Descriptor instead. func (*SyncContactRequestDecision) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{33} + return file_pairing_proto_rawDescGZIP(), []int{33} } -func (m *SyncContactRequestDecision) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncContactRequestDecision.Unmarshal(m, b) -} -func (m *SyncContactRequestDecision) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncContactRequestDecision.Marshal(b, m, deterministic) -} -func (m *SyncContactRequestDecision) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncContactRequestDecision.Merge(m, src) -} -func (m *SyncContactRequestDecision) XXX_Size() int { - return xxx_messageInfo_SyncContactRequestDecision.Size(m) -} -func (m *SyncContactRequestDecision) XXX_DiscardUnknown() { - xxx_messageInfo_SyncContactRequestDecision.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncContactRequestDecision proto.InternalMessageInfo - -func (m *SyncContactRequestDecision) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncContactRequestDecision) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncContactRequestDecision) GetRequestId() string { - if m != nil { - return m.RequestId +func (x *SyncContactRequestDecision) GetRequestId() string { + if x != nil { + return x.RequestId } return "" } -func (m *SyncContactRequestDecision) GetDecisionStatus() SyncContactRequestDecision_DecisionStatus { - if m != nil { - return m.DecisionStatus +func (x *SyncContactRequestDecision) GetDecisionStatus() SyncContactRequestDecision_DecisionStatus { + if x != nil { + return x.DecisionStatus } return SyncContactRequestDecision_ACCEPTED } // `BackedUpProfile` is used to describe profile of logged in user type BackedUpProfile struct { - KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - DisplayNameClock uint64 `protobuf:"varint,3,opt,name=display_name_clock,json=displayNameClock,proto3" json:"display_name_clock,omitempty"` - Pictures []*SyncProfilePicture `protobuf:"bytes,4,rep,name=pictures,proto3" json:"pictures,omitempty"` - SocialLinks *SyncSocialLinks `protobuf:"bytes,5,opt,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` - EnsUsernameDetails []*SyncEnsUsernameDetail `protobuf:"bytes,6,rep,name=ens_username_details,json=ensUsernameDetails,proto3" json:"ens_username_details,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + DisplayNameClock uint64 `protobuf:"varint,3,opt,name=display_name_clock,json=displayNameClock,proto3" json:"display_name_clock,omitempty"` + Pictures []*SyncProfilePicture `protobuf:"bytes,4,rep,name=pictures,proto3" json:"pictures,omitempty"` + SocialLinks *SyncSocialLinks `protobuf:"bytes,5,opt,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` + EnsUsernameDetails []*SyncEnsUsernameDetail `protobuf:"bytes,6,rep,name=ens_username_details,json=ensUsernameDetails,proto3" json:"ens_username_details,omitempty"` + ProfileShowcasePreferences *SyncProfileShowcasePreferences `protobuf:"bytes,7,opt,name=profile_showcase_preferences,json=profileShowcasePreferences,proto3" json:"profile_showcase_preferences,omitempty"` } -func (m *BackedUpProfile) Reset() { *m = BackedUpProfile{} } -func (m *BackedUpProfile) String() string { return proto.CompactTextString(m) } -func (*BackedUpProfile) ProtoMessage() {} +func (x *BackedUpProfile) Reset() { + *x = BackedUpProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BackedUpProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackedUpProfile) ProtoMessage() {} + +func (x *BackedUpProfile) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackedUpProfile.ProtoReflect.Descriptor instead. func (*BackedUpProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{34} + return file_pairing_proto_rawDescGZIP(), []int{34} } -func (m *BackedUpProfile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_BackedUpProfile.Unmarshal(m, b) -} -func (m *BackedUpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_BackedUpProfile.Marshal(b, m, deterministic) -} -func (m *BackedUpProfile) XXX_Merge(src proto.Message) { - xxx_messageInfo_BackedUpProfile.Merge(m, src) -} -func (m *BackedUpProfile) XXX_Size() int { - return xxx_messageInfo_BackedUpProfile.Size(m) -} -func (m *BackedUpProfile) XXX_DiscardUnknown() { - xxx_messageInfo_BackedUpProfile.DiscardUnknown(m) -} - -var xxx_messageInfo_BackedUpProfile proto.InternalMessageInfo - -func (m *BackedUpProfile) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *BackedUpProfile) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *BackedUpProfile) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *BackedUpProfile) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *BackedUpProfile) GetDisplayNameClock() uint64 { - if m != nil { - return m.DisplayNameClock +func (x *BackedUpProfile) GetDisplayNameClock() uint64 { + if x != nil { + return x.DisplayNameClock } return 0 } -func (m *BackedUpProfile) GetPictures() []*SyncProfilePicture { - if m != nil { - return m.Pictures +func (x *BackedUpProfile) GetPictures() []*SyncProfilePicture { + if x != nil { + return x.Pictures } return nil } -func (m *BackedUpProfile) GetSocialLinks() *SyncSocialLinks { - if m != nil { - return m.SocialLinks +func (x *BackedUpProfile) GetSocialLinks() *SyncSocialLinks { + if x != nil { + return x.SocialLinks } return nil } -func (m *BackedUpProfile) GetEnsUsernameDetails() []*SyncEnsUsernameDetail { - if m != nil { - return m.EnsUsernameDetails +func (x *BackedUpProfile) GetEnsUsernameDetails() []*SyncEnsUsernameDetail { + if x != nil { + return x.EnsUsernameDetails + } + return nil +} + +func (x *BackedUpProfile) GetProfileShowcasePreferences() *SyncProfileShowcasePreferences { + if x != nil { + return x.ProfileShowcasePreferences } return nil } type RawMessage struct { - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` - MessageType ApplicationMetadataMessage_Type `protobuf:"varint,2,opt,name=messageType,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"messageType,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + MessageType ApplicationMetadataMessage_Type `protobuf:"varint,2,opt,name=messageType,proto3,enum=protobuf.ApplicationMetadataMessage_Type" json:"messageType,omitempty"` } -func (m *RawMessage) Reset() { *m = RawMessage{} } -func (m *RawMessage) String() string { return proto.CompactTextString(m) } -func (*RawMessage) ProtoMessage() {} +func (x *RawMessage) Reset() { + *x = RawMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawMessage) ProtoMessage() {} + +func (x *RawMessage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawMessage.ProtoReflect.Descriptor instead. func (*RawMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{35} + return file_pairing_proto_rawDescGZIP(), []int{35} } -func (m *RawMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RawMessage.Unmarshal(m, b) -} -func (m *RawMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RawMessage.Marshal(b, m, deterministic) -} -func (m *RawMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_RawMessage.Merge(m, src) -} -func (m *RawMessage) XXX_Size() int { - return xxx_messageInfo_RawMessage.Size(m) -} -func (m *RawMessage) XXX_DiscardUnknown() { - xxx_messageInfo_RawMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_RawMessage proto.InternalMessageInfo - -func (m *RawMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *RawMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func (m *RawMessage) GetMessageType() ApplicationMetadataMessage_Type { - if m != nil { - return m.MessageType +func (x *RawMessage) GetMessageType() ApplicationMetadataMessage_Type { + if x != nil { + return x.MessageType } return ApplicationMetadataMessage_UNKNOWN } type SyncRawMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + RawMessages []*RawMessage `protobuf:"bytes,1,rep,name=rawMessages,proto3" json:"rawMessages,omitempty"` // we need these to be able to login - SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"` - SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"` + SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"` } -func (m *SyncRawMessage) Reset() { *m = SyncRawMessage{} } -func (m *SyncRawMessage) String() string { return proto.CompactTextString(m) } -func (*SyncRawMessage) ProtoMessage() {} +func (x *SyncRawMessage) Reset() { + *x = SyncRawMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncRawMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncRawMessage) ProtoMessage() {} + +func (x *SyncRawMessage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncRawMessage.ProtoReflect.Descriptor instead. func (*SyncRawMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{36} + return file_pairing_proto_rawDescGZIP(), []int{36} } -func (m *SyncRawMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncRawMessage.Unmarshal(m, b) -} -func (m *SyncRawMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncRawMessage.Marshal(b, m, deterministic) -} -func (m *SyncRawMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncRawMessage.Merge(m, src) -} -func (m *SyncRawMessage) XXX_Size() int { - return xxx_messageInfo_SyncRawMessage.Size(m) -} -func (m *SyncRawMessage) XXX_DiscardUnknown() { - xxx_messageInfo_SyncRawMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncRawMessage proto.InternalMessageInfo - -func (m *SyncRawMessage) GetRawMessages() []*RawMessage { - if m != nil { - return m.RawMessages +func (x *SyncRawMessage) GetRawMessages() []*RawMessage { + if x != nil { + return x.RawMessages } return nil } -func (m *SyncRawMessage) GetSubAccountsJsonBytes() []byte { - if m != nil { - return m.SubAccountsJsonBytes +func (x *SyncRawMessage) GetSubAccountsJsonBytes() []byte { + if x != nil { + return x.SubAccountsJsonBytes } return nil } -func (m *SyncRawMessage) GetSettingsJsonBytes() []byte { - if m != nil { - return m.SettingsJsonBytes +func (x *SyncRawMessage) GetSettingsJsonBytes() []byte { + if x != nil { + return x.SettingsJsonBytes } return nil } type SyncKeycard struct { - Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Locked bool `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"` - KeyUid string `protobuf:"bytes,4,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - Addresses [][]byte `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` - Position uint64 `protobuf:"varint,6,opt,name=position,proto3" json:"position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Locked bool `protobuf:"varint,3,opt,name=locked,proto3" json:"locked,omitempty"` + KeyUid string `protobuf:"bytes,4,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Addresses [][]byte `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` + Position uint64 `protobuf:"varint,6,opt,name=position,proto3" json:"position,omitempty"` } -func (m *SyncKeycard) Reset() { *m = SyncKeycard{} } -func (m *SyncKeycard) String() string { return proto.CompactTextString(m) } -func (*SyncKeycard) ProtoMessage() {} +func (x *SyncKeycard) Reset() { + *x = SyncKeycard{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncKeycard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncKeycard) ProtoMessage() {} + +func (x *SyncKeycard) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncKeycard.ProtoReflect.Descriptor instead. func (*SyncKeycard) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{37} + return file_pairing_proto_rawDescGZIP(), []int{37} } -func (m *SyncKeycard) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncKeycard.Unmarshal(m, b) -} -func (m *SyncKeycard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncKeycard.Marshal(b, m, deterministic) -} -func (m *SyncKeycard) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncKeycard.Merge(m, src) -} -func (m *SyncKeycard) XXX_Size() int { - return xxx_messageInfo_SyncKeycard.Size(m) -} -func (m *SyncKeycard) XXX_DiscardUnknown() { - xxx_messageInfo_SyncKeycard.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncKeycard proto.InternalMessageInfo - -func (m *SyncKeycard) GetUid() string { - if m != nil { - return m.Uid +func (x *SyncKeycard) GetUid() string { + if x != nil { + return x.Uid } return "" } -func (m *SyncKeycard) GetName() string { - if m != nil { - return m.Name +func (x *SyncKeycard) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *SyncKeycard) GetLocked() bool { - if m != nil { - return m.Locked +func (x *SyncKeycard) GetLocked() bool { + if x != nil { + return x.Locked } return false } -func (m *SyncKeycard) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncKeycard) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } -func (m *SyncKeycard) GetAddresses() [][]byte { - if m != nil { - return m.Addresses +func (x *SyncKeycard) GetAddresses() [][]byte { + if x != nil { + return x.Addresses } return nil } -func (m *SyncKeycard) GetPosition() uint64 { - if m != nil { - return m.Position +func (x *SyncKeycard) GetPosition() uint64 { + if x != nil { + return x.Position } return 0 } type SyncSocialLinks struct { - SocialLinks []*SocialLink `protobuf:"bytes,1,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` - Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SocialLinks []*SocialLink `protobuf:"bytes,1,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` + Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` } -func (m *SyncSocialLinks) Reset() { *m = SyncSocialLinks{} } -func (m *SyncSocialLinks) String() string { return proto.CompactTextString(m) } -func (*SyncSocialLinks) ProtoMessage() {} +func (x *SyncSocialLinks) Reset() { + *x = SyncSocialLinks{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSocialLinks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSocialLinks) ProtoMessage() {} + +func (x *SyncSocialLinks) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSocialLinks.ProtoReflect.Descriptor instead. func (*SyncSocialLinks) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{38} + return file_pairing_proto_rawDescGZIP(), []int{38} } -func (m *SyncSocialLinks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSocialLinks.Unmarshal(m, b) -} -func (m *SyncSocialLinks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSocialLinks.Marshal(b, m, deterministic) -} -func (m *SyncSocialLinks) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSocialLinks.Merge(m, src) -} -func (m *SyncSocialLinks) XXX_Size() int { - return xxx_messageInfo_SyncSocialLinks.Size(m) -} -func (m *SyncSocialLinks) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSocialLinks.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSocialLinks proto.InternalMessageInfo - -func (m *SyncSocialLinks) GetSocialLinks() []*SocialLink { - if m != nil { - return m.SocialLinks +func (x *SyncSocialLinks) GetSocialLinks() []*SocialLink { + if x != nil { + return x.SocialLinks } return nil } -func (m *SyncSocialLinks) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncSocialLinks) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } type SyncAccountCustomizationColor struct { - UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - CustomizationColor string `protobuf:"bytes,2,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` - KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UpdatedAt uint64 `protobuf:"varint,1,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CustomizationColor string `protobuf:"bytes,2,opt,name=customization_color,json=customizationColor,proto3" json:"customization_color,omitempty"` + KeyUid string `protobuf:"bytes,3,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` } -func (m *SyncAccountCustomizationColor) Reset() { *m = SyncAccountCustomizationColor{} } -func (m *SyncAccountCustomizationColor) String() string { return proto.CompactTextString(m) } -func (*SyncAccountCustomizationColor) ProtoMessage() {} +func (x *SyncAccountCustomizationColor) Reset() { + *x = SyncAccountCustomizationColor{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncAccountCustomizationColor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncAccountCustomizationColor) ProtoMessage() {} + +func (x *SyncAccountCustomizationColor) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncAccountCustomizationColor.ProtoReflect.Descriptor instead. func (*SyncAccountCustomizationColor) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{39} + return file_pairing_proto_rawDescGZIP(), []int{39} } -func (m *SyncAccountCustomizationColor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncAccountCustomizationColor.Unmarshal(m, b) -} -func (m *SyncAccountCustomizationColor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncAccountCustomizationColor.Marshal(b, m, deterministic) -} -func (m *SyncAccountCustomizationColor) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncAccountCustomizationColor.Merge(m, src) -} -func (m *SyncAccountCustomizationColor) XXX_Size() int { - return xxx_messageInfo_SyncAccountCustomizationColor.Size(m) -} -func (m *SyncAccountCustomizationColor) XXX_DiscardUnknown() { - xxx_messageInfo_SyncAccountCustomizationColor.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncAccountCustomizationColor proto.InternalMessageInfo - -func (m *SyncAccountCustomizationColor) GetUpdatedAt() uint64 { - if m != nil { - return m.UpdatedAt +func (x *SyncAccountCustomizationColor) GetUpdatedAt() uint64 { + if x != nil { + return x.UpdatedAt } return 0 } -func (m *SyncAccountCustomizationColor) GetCustomizationColor() string { - if m != nil { - return m.CustomizationColor +func (x *SyncAccountCustomizationColor) GetCustomizationColor() string { + if x != nil { + return x.CustomizationColor } return "" } -func (m *SyncAccountCustomizationColor) GetKeyUid() string { - if m != nil { - return m.KeyUid +func (x *SyncAccountCustomizationColor) GetKeyUid() string { + if x != nil { + return x.KeyUid } return "" } type TokenPreferences struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Position int64 `protobuf:"varint,2,opt,name=position,proto3" json:"position,omitempty"` - GroupPosition int64 `protobuf:"varint,3,opt,name=groupPosition,proto3" json:"groupPosition,omitempty"` - Visible bool `protobuf:"varint,4,opt,name=visible,proto3" json:"visible,omitempty"` - CommunityId string `protobuf:"bytes,5,opt,name=communityId,proto3" json:"communityId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Position int64 `protobuf:"varint,2,opt,name=position,proto3" json:"position,omitempty"` + GroupPosition int64 `protobuf:"varint,3,opt,name=groupPosition,proto3" json:"groupPosition,omitempty"` + Visible bool `protobuf:"varint,4,opt,name=visible,proto3" json:"visible,omitempty"` + CommunityId string `protobuf:"bytes,5,opt,name=communityId,proto3" json:"communityId,omitempty"` } -func (m *TokenPreferences) Reset() { *m = TokenPreferences{} } -func (m *TokenPreferences) String() string { return proto.CompactTextString(m) } -func (*TokenPreferences) ProtoMessage() {} +func (x *TokenPreferences) Reset() { + *x = TokenPreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenPreferences) ProtoMessage() {} + +func (x *TokenPreferences) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenPreferences.ProtoReflect.Descriptor instead. func (*TokenPreferences) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{40} + return file_pairing_proto_rawDescGZIP(), []int{40} } -func (m *TokenPreferences) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TokenPreferences.Unmarshal(m, b) -} -func (m *TokenPreferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TokenPreferences.Marshal(b, m, deterministic) -} -func (m *TokenPreferences) XXX_Merge(src proto.Message) { - xxx_messageInfo_TokenPreferences.Merge(m, src) -} -func (m *TokenPreferences) XXX_Size() int { - return xxx_messageInfo_TokenPreferences.Size(m) -} -func (m *TokenPreferences) XXX_DiscardUnknown() { - xxx_messageInfo_TokenPreferences.DiscardUnknown(m) -} - -var xxx_messageInfo_TokenPreferences proto.InternalMessageInfo - -func (m *TokenPreferences) GetKey() string { - if m != nil { - return m.Key +func (x *TokenPreferences) GetKey() string { + if x != nil { + return x.Key } return "" } -func (m *TokenPreferences) GetPosition() int64 { - if m != nil { - return m.Position +func (x *TokenPreferences) GetPosition() int64 { + if x != nil { + return x.Position } return 0 } -func (m *TokenPreferences) GetGroupPosition() int64 { - if m != nil { - return m.GroupPosition +func (x *TokenPreferences) GetGroupPosition() int64 { + if x != nil { + return x.GroupPosition } return 0 } -func (m *TokenPreferences) GetVisible() bool { - if m != nil { - return m.Visible +func (x *TokenPreferences) GetVisible() bool { + if x != nil { + return x.Visible } return false } -func (m *TokenPreferences) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *TokenPreferences) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } type SyncTokenPreferences struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Testnet bool `protobuf:"varint,2,opt,name=testnet,proto3" json:"testnet,omitempty"` - Preferences []*TokenPreferences `protobuf:"bytes,3,rep,name=preferences,proto3" json:"preferences,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Testnet bool `protobuf:"varint,2,opt,name=testnet,proto3" json:"testnet,omitempty"` + Preferences []*TokenPreferences `protobuf:"bytes,3,rep,name=preferences,proto3" json:"preferences,omitempty"` } -func (m *SyncTokenPreferences) Reset() { *m = SyncTokenPreferences{} } -func (m *SyncTokenPreferences) String() string { return proto.CompactTextString(m) } -func (*SyncTokenPreferences) ProtoMessage() {} +func (x *SyncTokenPreferences) Reset() { + *x = SyncTokenPreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncTokenPreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncTokenPreferences) ProtoMessage() {} + +func (x *SyncTokenPreferences) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncTokenPreferences.ProtoReflect.Descriptor instead. func (*SyncTokenPreferences) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{41} + return file_pairing_proto_rawDescGZIP(), []int{41} } -func (m *SyncTokenPreferences) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncTokenPreferences.Unmarshal(m, b) -} -func (m *SyncTokenPreferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncTokenPreferences.Marshal(b, m, deterministic) -} -func (m *SyncTokenPreferences) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncTokenPreferences.Merge(m, src) -} -func (m *SyncTokenPreferences) XXX_Size() int { - return xxx_messageInfo_SyncTokenPreferences.Size(m) -} -func (m *SyncTokenPreferences) XXX_DiscardUnknown() { - xxx_messageInfo_SyncTokenPreferences.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncTokenPreferences proto.InternalMessageInfo - -func (m *SyncTokenPreferences) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncTokenPreferences) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncTokenPreferences) GetTestnet() bool { - if m != nil { - return m.Testnet +func (x *SyncTokenPreferences) GetTestnet() bool { + if x != nil { + return x.Testnet } return false } -func (m *SyncTokenPreferences) GetPreferences() []*TokenPreferences { - if m != nil { - return m.Preferences +func (x *SyncTokenPreferences) GetPreferences() []*TokenPreferences { + if x != nil { + return x.Preferences } return nil } type CollectiblePreferences struct { - Type int64 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Position int64 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` - Visible bool `protobuf:"varint,4,opt,name=visible,proto3" json:"visible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type int64 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Position int64 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + Visible bool `protobuf:"varint,4,opt,name=visible,proto3" json:"visible,omitempty"` } -func (m *CollectiblePreferences) Reset() { *m = CollectiblePreferences{} } -func (m *CollectiblePreferences) String() string { return proto.CompactTextString(m) } -func (*CollectiblePreferences) ProtoMessage() {} +func (x *CollectiblePreferences) Reset() { + *x = CollectiblePreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CollectiblePreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollectiblePreferences) ProtoMessage() {} + +func (x *CollectiblePreferences) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollectiblePreferences.ProtoReflect.Descriptor instead. func (*CollectiblePreferences) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{42} + return file_pairing_proto_rawDescGZIP(), []int{42} } -func (m *CollectiblePreferences) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CollectiblePreferences.Unmarshal(m, b) -} -func (m *CollectiblePreferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CollectiblePreferences.Marshal(b, m, deterministic) -} -func (m *CollectiblePreferences) XXX_Merge(src proto.Message) { - xxx_messageInfo_CollectiblePreferences.Merge(m, src) -} -func (m *CollectiblePreferences) XXX_Size() int { - return xxx_messageInfo_CollectiblePreferences.Size(m) -} -func (m *CollectiblePreferences) XXX_DiscardUnknown() { - xxx_messageInfo_CollectiblePreferences.DiscardUnknown(m) -} - -var xxx_messageInfo_CollectiblePreferences proto.InternalMessageInfo - -func (m *CollectiblePreferences) GetType() int64 { - if m != nil { - return m.Type +func (x *CollectiblePreferences) GetType() int64 { + if x != nil { + return x.Type } return 0 } -func (m *CollectiblePreferences) GetKey() string { - if m != nil { - return m.Key +func (x *CollectiblePreferences) GetKey() string { + if x != nil { + return x.Key } return "" } -func (m *CollectiblePreferences) GetPosition() int64 { - if m != nil { - return m.Position +func (x *CollectiblePreferences) GetPosition() int64 { + if x != nil { + return x.Position } return 0 } -func (m *CollectiblePreferences) GetVisible() bool { - if m != nil { - return m.Visible +func (x *CollectiblePreferences) GetVisible() bool { + if x != nil { + return x.Visible } return false } type SyncCollectiblePreferences struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - Testnet bool `protobuf:"varint,2,opt,name=testnet,proto3" json:"testnet,omitempty"` - Preferences []*CollectiblePreferences `protobuf:"bytes,3,rep,name=preferences,proto3" json:"preferences,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Testnet bool `protobuf:"varint,2,opt,name=testnet,proto3" json:"testnet,omitempty"` + Preferences []*CollectiblePreferences `protobuf:"bytes,3,rep,name=preferences,proto3" json:"preferences,omitempty"` } -func (m *SyncCollectiblePreferences) Reset() { *m = SyncCollectiblePreferences{} } -func (m *SyncCollectiblePreferences) String() string { return proto.CompactTextString(m) } -func (*SyncCollectiblePreferences) ProtoMessage() {} +func (x *SyncCollectiblePreferences) Reset() { + *x = SyncCollectiblePreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncCollectiblePreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncCollectiblePreferences) ProtoMessage() {} + +func (x *SyncCollectiblePreferences) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncCollectiblePreferences.ProtoReflect.Descriptor instead. func (*SyncCollectiblePreferences) Descriptor() ([]byte, []int) { - return fileDescriptor_d61ab7221f0b5518, []int{43} + return file_pairing_proto_rawDescGZIP(), []int{43} } -func (m *SyncCollectiblePreferences) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncCollectiblePreferences.Unmarshal(m, b) -} -func (m *SyncCollectiblePreferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncCollectiblePreferences.Marshal(b, m, deterministic) -} -func (m *SyncCollectiblePreferences) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncCollectiblePreferences.Merge(m, src) -} -func (m *SyncCollectiblePreferences) XXX_Size() int { - return xxx_messageInfo_SyncCollectiblePreferences.Size(m) -} -func (m *SyncCollectiblePreferences) XXX_DiscardUnknown() { - xxx_messageInfo_SyncCollectiblePreferences.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncCollectiblePreferences proto.InternalMessageInfo - -func (m *SyncCollectiblePreferences) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *SyncCollectiblePreferences) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *SyncCollectiblePreferences) GetTestnet() bool { - if m != nil { - return m.Testnet +func (x *SyncCollectiblePreferences) GetTestnet() bool { + if x != nil { + return x.Testnet } return false } -func (m *SyncCollectiblePreferences) GetPreferences() []*CollectiblePreferences { - if m != nil { - return m.Preferences +func (x *SyncCollectiblePreferences) GetPreferences() []*CollectiblePreferences { + if x != nil { + return x.Preferences } return nil } -func init() { - proto.RegisterEnum("protobuf.SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision", SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_name, SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision_value) - proto.RegisterEnum("protobuf.SyncTrustedUser_TrustStatus", SyncTrustedUser_TrustStatus_name, SyncTrustedUser_TrustStatus_value) - proto.RegisterEnum("protobuf.SyncVerificationRequest_VerificationStatus", SyncVerificationRequest_VerificationStatus_name, SyncVerificationRequest_VerificationStatus_value) - proto.RegisterEnum("protobuf.SyncContactRequestDecision_DecisionStatus", SyncContactRequestDecision_DecisionStatus_name, SyncContactRequestDecision_DecisionStatus_value) - proto.RegisterType((*FetchingBackedUpDataDetails)(nil), "protobuf.FetchingBackedUpDataDetails") - proto.RegisterType((*Backup)(nil), "protobuf.Backup") - proto.RegisterType((*MultiAccount)(nil), "protobuf.MultiAccount") - proto.RegisterType((*MultiAccount_ColorHash)(nil), "protobuf.MultiAccount.ColorHash") - proto.RegisterType((*MultiAccount_IdentityImage)(nil), "protobuf.MultiAccount.IdentityImage") - proto.RegisterType((*LocalPairingPayload)(nil), "protobuf.LocalPairingPayload") - proto.RegisterType((*LocalPairingPayload_Key)(nil), "protobuf.LocalPairingPayload.Key") - proto.RegisterType((*LocalPairingPeerHello)(nil), "protobuf.LocalPairingPeerHello") - proto.RegisterType((*SyncPairInstallation)(nil), "protobuf.SyncPairInstallation") - proto.RegisterType((*SyncInstallationContactV2)(nil), "protobuf.SyncInstallationContactV2") - proto.RegisterType((*SyncInstallationAccount)(nil), "protobuf.SyncInstallationAccount") - proto.RegisterType((*SyncInstallationCommunity)(nil), "protobuf.SyncInstallationCommunity") - proto.RegisterType((*SyncCommunityRequestsToJoin)(nil), "protobuf.SyncCommunityRequestsToJoin") - proto.RegisterType((*SyncCommunityControlNode)(nil), "protobuf.SyncCommunityControlNode") - proto.RegisterType((*SyncChat)(nil), "protobuf.SyncChat") - proto.RegisterType((*MembershipUpdateEvents)(nil), "protobuf.MembershipUpdateEvents") - proto.RegisterType((*SyncChatRemoved)(nil), "protobuf.SyncChatRemoved") - proto.RegisterType((*SyncChatMessagesRead)(nil), "protobuf.SyncChatMessagesRead") - proto.RegisterType((*SyncActivityCenterRead)(nil), "protobuf.SyncActivityCenterRead") - proto.RegisterType((*SyncActivityCenterAccepted)(nil), "protobuf.SyncActivityCenterAccepted") - proto.RegisterType((*SyncActivityCenterDismissed)(nil), "protobuf.SyncActivityCenterDismissed") - proto.RegisterType((*SyncActivityCenterDeleted)(nil), "protobuf.SyncActivityCenterDeleted") - proto.RegisterType((*SyncActivityCenterUnread)(nil), "protobuf.SyncActivityCenterUnread") - proto.RegisterType((*SyncActivityCenterCommunityRequestDecision)(nil), "protobuf.SyncActivityCenterCommunityRequestDecision") - proto.RegisterType((*SyncBookmark)(nil), "protobuf.SyncBookmark") - proto.RegisterType((*SyncEnsUsernameDetail)(nil), "protobuf.SyncEnsUsernameDetail") - proto.RegisterType((*SyncClearHistory)(nil), "protobuf.SyncClearHistory") - proto.RegisterType((*SyncProfilePicture)(nil), "protobuf.SyncProfilePicture") - proto.RegisterType((*SyncProfilePictures)(nil), "protobuf.SyncProfilePictures") - proto.RegisterType((*SyncAccount)(nil), "protobuf.SyncAccount") - proto.RegisterType((*SyncKeypair)(nil), "protobuf.SyncKeypair") - proto.RegisterType((*SyncAccountsPositions)(nil), "protobuf.SyncAccountsPositions") - proto.RegisterType((*SyncSavedAddress)(nil), "protobuf.SyncSavedAddress") - proto.RegisterType((*SyncCommunitySettings)(nil), "protobuf.SyncCommunitySettings") - proto.RegisterType((*SyncTrustedUser)(nil), "protobuf.SyncTrustedUser") - proto.RegisterType((*SyncVerificationRequest)(nil), "protobuf.SyncVerificationRequest") - proto.RegisterType((*SyncContactRequestDecision)(nil), "protobuf.SyncContactRequestDecision") - proto.RegisterType((*BackedUpProfile)(nil), "protobuf.BackedUpProfile") - proto.RegisterType((*RawMessage)(nil), "protobuf.RawMessage") - proto.RegisterType((*SyncRawMessage)(nil), "protobuf.SyncRawMessage") - proto.RegisterType((*SyncKeycard)(nil), "protobuf.SyncKeycard") - proto.RegisterType((*SyncSocialLinks)(nil), "protobuf.SyncSocialLinks") - proto.RegisterType((*SyncAccountCustomizationColor)(nil), "protobuf.SyncAccountCustomizationColor") - proto.RegisterType((*TokenPreferences)(nil), "protobuf.TokenPreferences") - proto.RegisterType((*SyncTokenPreferences)(nil), "protobuf.SyncTokenPreferences") - proto.RegisterType((*CollectiblePreferences)(nil), "protobuf.CollectiblePreferences") - proto.RegisterType((*SyncCollectiblePreferences)(nil), "protobuf.SyncCollectiblePreferences") +type MultiAccount_ColorHash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index []int64 `protobuf:"varint,1,rep,packed,name=index,proto3" json:"index,omitempty"` } -func init() { - proto.RegisterFile("pairing.proto", fileDescriptor_d61ab7221f0b5518) +func (x *MultiAccount_ColorHash) Reset() { + *x = MultiAccount_ColorHash{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -var fileDescriptor_d61ab7221f0b5518 = []byte{ - // 3432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x5a, 0x5f, 0x6f, 0x1c, 0x47, - 0x72, 0xf7, 0xfe, 0xe1, 0x72, 0xb7, 0x76, 0xb9, 0x5c, 0xb5, 0x28, 0x69, 0x45, 0x49, 0x30, 0x35, - 0xb6, 0x61, 0xd9, 0x71, 0xe8, 0x84, 0x76, 0x62, 0xc3, 0x96, 0xe1, 0xac, 0x48, 0x3a, 0xa2, 0xfe, - 0x50, 0x4c, 0x93, 0x94, 0xed, 0x20, 0xc0, 0x78, 0x38, 0xd3, 0xe2, 0x8e, 0x39, 0x3b, 0x33, 0x99, - 0xee, 0x25, 0xb3, 0x7e, 0x08, 0x10, 0x20, 0x0f, 0x7e, 0xf4, 0x9b, 0xdf, 0x02, 0x23, 0x08, 0x82, - 0x20, 0x8f, 0xf7, 0x76, 0x5f, 0xe0, 0x70, 0x6f, 0x77, 0xef, 0x77, 0x5f, 0xe0, 0xbe, 0xc0, 0xbd, - 0x1d, 0x70, 0xe8, 0xea, 0x9e, 0x99, 0x9e, 0xdd, 0x19, 0x59, 0xc4, 0x3d, 0x71, 0xaa, 0xba, 0xba, - 0xbb, 0xba, 0xba, 0xaa, 0xfa, 0x57, 0xb5, 0x84, 0x95, 0xd8, 0xf1, 0x13, 0x3f, 0x3c, 0xdd, 0x8c, - 0x93, 0x48, 0x44, 0xa4, 0x8d, 0x7f, 0x4e, 0xa6, 0x2f, 0xd6, 0xaf, 0xba, 0x63, 0x47, 0xd8, 0xbe, - 0xc7, 0x42, 0xe1, 0x8b, 0x99, 0x1a, 0x5e, 0xbf, 0xca, 0x67, 0xa1, 0x6b, 0x73, 0x26, 0x84, 0x1f, - 0x9e, 0x72, 0xcd, 0xb4, 0x9c, 0x38, 0x0e, 0x7c, 0xd7, 0x11, 0x7e, 0x14, 0xda, 0x13, 0x26, 0x1c, - 0xcf, 0x11, 0x8e, 0x3d, 0x61, 0x9c, 0x3b, 0xa7, 0x4c, 0xcb, 0x5c, 0x71, 0xa3, 0xc9, 0x64, 0x1a, - 0xfa, 0xc2, 0x67, 0x7a, 0x9a, 0xe5, 0xc0, 0xad, 0x2f, 0x98, 0x70, 0xc7, 0x7e, 0x78, 0xfa, 0xc0, - 0x71, 0xcf, 0x98, 0x77, 0x1c, 0xef, 0x38, 0xc2, 0xd9, 0x61, 0xc2, 0xf1, 0x03, 0x4e, 0x5e, 0x87, - 0x2e, 0xae, 0x13, 0x4e, 0x27, 0x27, 0x2c, 0x19, 0xd6, 0x36, 0x6a, 0xf7, 0x56, 0x28, 0x48, 0xd6, - 0x3e, 0x72, 0xc8, 0x5d, 0xe8, 0x89, 0x48, 0x38, 0x41, 0x2a, 0x51, 0x47, 0x89, 0x2e, 0xf2, 0x94, - 0x88, 0xf5, 0xa7, 0x65, 0x68, 0xc9, 0xb5, 0xa7, 0x31, 0x59, 0x83, 0x25, 0x37, 0x88, 0xdc, 0x33, - 0x5c, 0xa8, 0x49, 0x15, 0x41, 0xfa, 0x50, 0xf7, 0x3d, 0x9c, 0xd9, 0xa1, 0x75, 0xdf, 0x23, 0x9f, - 0x43, 0xdb, 0x8d, 0x42, 0xe1, 0xb8, 0x82, 0x0f, 0x1b, 0x1b, 0x8d, 0x7b, 0xdd, 0xad, 0x37, 0x36, - 0x53, 0x8b, 0x6c, 0x1e, 0xce, 0x42, 0x77, 0x2f, 0xe4, 0xc2, 0x09, 0x02, 0x3c, 0xeb, 0xb6, 0x92, - 0x7c, 0xbe, 0x45, 0xb3, 0x49, 0x64, 0x17, 0xba, 0xc6, 0x49, 0x87, 0xcd, 0x9f, 0x5f, 0x43, 0x09, - 0xcf, 0xa8, 0x39, 0x8f, 0x3c, 0x83, 0xd5, 0x74, 0x49, 0x6d, 0x8f, 0xe1, 0xd2, 0x46, 0xed, 0x5e, - 0x77, 0xeb, 0xad, 0x7c, 0xa9, 0x97, 0x18, 0x8f, 0xce, 0xcf, 0x26, 0xc7, 0x40, 0x8c, 0xf5, 0xd3, - 0x35, 0x5b, 0x97, 0x59, 0xb3, 0x64, 0x01, 0xf2, 0x01, 0x2c, 0xc7, 0x49, 0xf4, 0xc2, 0x0f, 0xd8, - 0x70, 0x19, 0xd7, 0xba, 0x99, 0xaf, 0x95, 0xae, 0x71, 0xa0, 0x04, 0x68, 0x2a, 0x49, 0x9e, 0x42, - 0x5f, 0x7f, 0xa6, 0x7a, 0xb4, 0x2f, 0xa3, 0xc7, 0xdc, 0x64, 0xf2, 0x3e, 0x2c, 0x6b, 0x87, 0x1c, - 0x76, 0x70, 0x9d, 0x6b, 0x45, 0x73, 0x1f, 0xaa, 0x41, 0x9a, 0x4a, 0x49, 0xe3, 0xa6, 0x1e, 0x9c, - 0x2a, 0x00, 0x97, 0x32, 0xee, 0xdc, 0x6c, 0xa9, 0xc1, 0x19, 0x9b, 0xc9, 0x40, 0x1a, 0x76, 0xcb, - 0x34, 0x78, 0xac, 0x06, 0x69, 0x2a, 0x25, 0x2d, 0xa0, 0x3f, 0x53, 0x05, 0x7a, 0x97, 0xb2, 0x40, - 0x71, 0x32, 0x19, 0xc1, 0xe0, 0xc2, 0x11, 0xee, 0xf8, 0x59, 0x18, 0xcc, 0x46, 0xae, 0x1b, 0x4d, - 0x43, 0x31, 0x5c, 0x29, 0x53, 0x44, 0x0f, 0xd2, 0x05, 0x71, 0x62, 0xc3, 0x8d, 0x79, 0x5e, 0xaa, - 0x5a, 0xff, 0x32, 0xaa, 0x55, 0xad, 0x42, 0xee, 0xc1, 0x92, 0x4c, 0x28, 0x7c, 0xb8, 0x8a, 0x21, - 0x41, 0x8a, 0x8a, 0x6d, 0x8f, 0x1d, 0x41, 0x95, 0x00, 0xd9, 0x83, 0x1e, 0x7e, 0xa4, 0xfb, 0x0f, - 0x2e, 0xb3, 0x7f, 0x61, 0xaa, 0xf5, 0x7f, 0x4b, 0xd0, 0x7b, 0x3a, 0x0d, 0x84, 0x9f, 0x1e, 0x93, - 0x40, 0x33, 0x74, 0x26, 0x0c, 0x93, 0x40, 0x87, 0xe2, 0x37, 0xb9, 0x0d, 0x1d, 0xe1, 0x4f, 0x18, - 0x17, 0xce, 0x24, 0xc6, 0x54, 0xd0, 0xa0, 0x39, 0x43, 0x8e, 0xaa, 0x1c, 0xe8, 0x46, 0xe1, 0xb0, - 0x81, 0xd3, 0x72, 0x06, 0xf9, 0x1c, 0xc0, 0x8d, 0x82, 0x28, 0xb1, 0xc7, 0x0e, 0x1f, 0xeb, 0x68, - 0xdf, 0xc8, 0x35, 0x35, 0xf7, 0xde, 0xdc, 0x96, 0x82, 0x0f, 0x1d, 0x3e, 0xa6, 0x1d, 0x37, 0xfd, - 0x24, 0x37, 0x65, 0xc2, 0x91, 0x0b, 0xf8, 0x1e, 0x46, 0x78, 0x83, 0x2e, 0x23, 0xbd, 0xe7, 0x91, - 0xb7, 0x61, 0xf5, 0x8c, 0xcd, 0x5c, 0x27, 0xf1, 0x6c, 0x9d, 0xa3, 0x31, 0x5e, 0x3b, 0x78, 0xfd, - 0x92, 0x7d, 0xa0, 0xb8, 0xe4, 0x06, 0xba, 0x9f, 0x3d, 0xf5, 0x3d, 0x0c, 0xc2, 0x0e, 0x6d, 0x9d, - 0xb1, 0xd9, 0xb1, 0xef, 0x91, 0xfb, 0xd0, 0xf2, 0x27, 0xce, 0x29, 0x93, 0x01, 0x26, 0x35, 0x7b, - 0xb3, 0x42, 0xb3, 0x3d, 0x9d, 0xe4, 0xf7, 0xa4, 0x30, 0xd5, 0x73, 0xc8, 0xfb, 0x70, 0xd5, 0x9d, - 0x72, 0x11, 0x4d, 0xfc, 0xef, 0x54, 0x6a, 0x47, 0xc5, 0x30, 0xc6, 0x3a, 0x94, 0x14, 0x86, 0xf0, - 0x68, 0xe4, 0x13, 0xb8, 0x59, 0x32, 0xc1, 0x56, 0x69, 0x17, 0x30, 0xed, 0xde, 0x58, 0x9c, 0xb6, - 0x2d, 0x87, 0xd7, 0xef, 0x42, 0x27, 0xb3, 0x8f, 0xcc, 0xd5, 0x7e, 0xe8, 0xb1, 0x7f, 0x1b, 0xd6, - 0x36, 0x1a, 0xf7, 0x1a, 0x54, 0x11, 0xeb, 0xbf, 0xab, 0xc1, 0x4a, 0x41, 0x53, 0xf3, 0xe0, 0xb5, - 0xc2, 0xc1, 0xd3, 0x6b, 0xae, 0x1b, 0xd7, 0x3c, 0x84, 0xe5, 0xd8, 0x99, 0x05, 0x91, 0xe3, 0xe1, - 0x35, 0xf6, 0x68, 0x4a, 0xca, 0xed, 0x2e, 0x7c, 0x4f, 0xc8, 0xfb, 0x93, 0x17, 0xa0, 0x08, 0x72, - 0x1d, 0x5a, 0x63, 0xe6, 0x9f, 0x8e, 0x85, 0xbe, 0x17, 0x4d, 0x91, 0x75, 0x68, 0xcb, 0xec, 0xc3, - 0xfd, 0xef, 0x18, 0xde, 0x47, 0x83, 0x66, 0x34, 0x79, 0x03, 0x56, 0x12, 0xfc, 0xb2, 0x85, 0x93, - 0x9c, 0x32, 0x81, 0xf7, 0xd1, 0xa0, 0x3d, 0xc5, 0x3c, 0x42, 0x5e, 0xfe, 0x12, 0xb5, 0x8d, 0x97, - 0xc8, 0xfa, 0xb1, 0x0e, 0x57, 0x9f, 0x44, 0xae, 0x13, 0xe8, 0x5b, 0x3d, 0xd0, 0xca, 0xfd, 0x1d, - 0x34, 0xcf, 0xd8, 0x8c, 0xa3, 0x29, 0xba, 0x5b, 0x77, 0xf3, 0x1b, 0x2c, 0x11, 0xde, 0x7c, 0xcc, - 0x66, 0x14, 0xc5, 0xc9, 0x27, 0xd0, 0x9b, 0xc8, 0x2b, 0x76, 0x74, 0x3a, 0xa8, 0x63, 0x10, 0x5d, - 0x2f, 0x77, 0x00, 0x5a, 0x90, 0x95, 0x27, 0x8c, 0x1d, 0xce, 0x2f, 0xa2, 0xc4, 0xd3, 0x1e, 0x9f, - 0xd1, 0xd2, 0x8a, 0x32, 0xc2, 0x1e, 0xb3, 0x19, 0x5a, 0xab, 0x43, 0x53, 0x92, 0xdc, 0xcb, 0xdc, - 0x55, 0x2b, 0xa5, 0x9e, 0xac, 0x0e, 0x9d, 0x67, 0xaf, 0xff, 0x35, 0x34, 0xe4, 0x84, 0xb2, 0x58, - 0x24, 0xd0, 0x94, 0x2f, 0x3c, 0xaa, 0xdb, 0xa3, 0xf8, 0x6d, 0xfd, 0xb2, 0x06, 0xd7, 0x0a, 0x87, - 0x65, 0x2c, 0x79, 0xc8, 0x82, 0x20, 0x92, 0x11, 0xa2, 0x23, 0xc3, 0x3e, 0x67, 0x09, 0xf7, 0xa3, - 0x10, 0x17, 0x5b, 0xa2, 0x7d, 0xcd, 0x7e, 0xae, 0xb8, 0xd2, 0x51, 0x62, 0xc6, 0x30, 0xc8, 0xd4, - 0xca, 0x2d, 0x49, 0xee, 0x79, 0x08, 0x32, 0xd8, 0xb9, 0xef, 0x32, 0x1b, 0x55, 0x51, 0xa7, 0x05, - 0xc5, 0xda, 0x97, 0x0a, 0xe5, 0x02, 0x62, 0x16, 0x33, 0x7d, 0x66, 0x2d, 0x70, 0x34, 0x8b, 0x31, - 0x7b, 0x70, 0xff, 0x34, 0x74, 0xc4, 0x34, 0x61, 0x78, 0xe0, 0x1e, 0xcd, 0x19, 0xd6, 0xff, 0xd4, - 0x60, 0x4d, 0xe6, 0x37, 0xa9, 0xba, 0xf9, 0xec, 0x57, 0xc0, 0x91, 0xb7, 0x61, 0xd5, 0x37, 0xa4, - 0xec, 0x0c, 0x9b, 0xf4, 0x4d, 0x76, 0x41, 0x6f, 0x54, 0xab, 0xb1, 0xa0, 0x56, 0x6a, 0xdc, 0x66, - 0x31, 0x02, 0x52, 0x33, 0x2d, 0x21, 0x56, 0x4a, 0x49, 0xeb, 0x3f, 0x5a, 0x70, 0xb3, 0x12, 0xdd, - 0x90, 0xbf, 0x81, 0xb5, 0xc0, 0xe1, 0xc2, 0x9e, 0xc6, 0x9e, 0x23, 0x98, 0x67, 0x07, 0xf2, 0x32, - 0x82, 0x99, 0x56, 0x9d, 0xc8, 0xb1, 0x63, 0x35, 0xf4, 0x44, 0x8d, 0x2c, 0xc0, 0xaa, 0x37, 0x60, - 0x45, 0x3f, 0xda, 0x36, 0x26, 0x17, 0xad, 0x70, 0x4f, 0x33, 0x55, 0x34, 0xdf, 0x84, 0x36, 0x0b, - 0xb9, 0x6d, 0xa8, 0xbd, 0xcc, 0x42, 0x8e, 0xb7, 0x70, 0x17, 0x7a, 0xa6, 0x06, 0xa8, 0x7e, 0x93, - 0x76, 0x8d, 0x9d, 0xa5, 0x45, 0xf8, 0x8c, 0x0b, 0x36, 0xb1, 0x85, 0x73, 0x2a, 0x91, 0x4d, 0x43, - 0x5a, 0x44, 0xb1, 0x8e, 0x9c, 0x53, 0x4e, 0xde, 0x82, 0x3e, 0x2a, 0x6e, 0x87, 0xbe, 0x7b, 0x86, - 0x9b, 0xa8, 0x64, 0xb9, 0x82, 0xdc, 0x7d, 0xcd, 0x94, 0x17, 0xe3, 0x78, 0x1e, 0xf3, 0x30, 0xcf, - 0xb5, 0xa9, 0x22, 0xa4, 0xe9, 0x4e, 0xe4, 0x0d, 0x31, 0x0f, 0x13, 0x59, 0x9b, 0xa6, 0xa4, 0x94, - 0x9f, 0x4c, 0xa5, 0x4e, 0x5d, 0x25, 0x8f, 0x84, 0x94, 0x4f, 0xd8, 0x24, 0x3a, 0x67, 0x1e, 0xbe, - 0xec, 0x6d, 0x9a, 0x92, 0x64, 0x03, 0x7a, 0x63, 0x87, 0xdb, 0xb8, 0xac, 0x3d, 0xe5, 0xf8, 0x4e, - 0xb7, 0x29, 0x8c, 0x1d, 0x3e, 0x92, 0xac, 0x63, 0xcc, 0xbb, 0xe7, 0x2c, 0xf1, 0x5f, 0xa4, 0x88, - 0x9a, 0x0b, 0x47, 0x4c, 0xd5, 0x33, 0xdc, 0xa0, 0xc4, 0x1c, 0x3a, 0xc4, 0x11, 0x04, 0xc2, 0xc9, - 0x94, 0x8b, 0x54, 0x72, 0x15, 0x25, 0xbb, 0xc8, 0xd3, 0x22, 0x9f, 0xc1, 0x2d, 0x8d, 0x08, 0xed, - 0x84, 0xfd, 0xeb, 0x94, 0x71, 0xa1, 0x6e, 0x11, 0xa7, 0x30, 0x7c, 0x62, 0x1b, 0x74, 0xa8, 0x45, - 0xa8, 0x92, 0xc0, 0xcb, 0x94, 0xf3, 0x59, 0xf5, 0x74, 0xe5, 0xc3, 0x57, 0x2a, 0xa7, 0x63, 0x72, - 0x27, 0x9f, 0xc3, 0xed, 0xf9, 0xe9, 0xd2, 0x1c, 0x82, 0xe9, 0xed, 0x09, 0xce, 0xbf, 0x59, 0x9c, - 0x4f, 0x51, 0x42, 0xed, 0x5f, 0xbd, 0x80, 0x52, 0xe0, 0x6a, 0xf5, 0x02, 0x4a, 0x83, 0xbb, 0xd0, - 0xf3, 0x7c, 0x1e, 0x07, 0xce, 0x4c, 0xf9, 0xd7, 0x1a, 0x5e, 0x7d, 0x57, 0xf3, 0xa4, 0x8f, 0x59, - 0x17, 0x70, 0x63, 0x3e, 0x04, 0x52, 0xd4, 0x50, 0x1e, 0xac, 0x0b, 0x4e, 0x5d, 0x2f, 0x71, 0xea, - 0x79, 0xcf, 0x6d, 0x2c, 0x78, 0xae, 0xf5, 0x9b, 0x66, 0x59, 0xf0, 0xe9, 0xb2, 0xe0, 0x67, 0xeb, - 0x96, 0x9e, 0x0e, 0xb0, 0x6e, 0x9c, 0xf8, 0xe7, 0x8e, 0x60, 0xf6, 0x19, 0x9b, 0xa9, 0x07, 0xee, - 0x41, 0x7d, 0x58, 0xa3, 0xa0, 0xd9, 0x32, 0xe1, 0x6e, 0xc8, 0xa4, 0xc1, 0xdd, 0xc4, 0x8f, 0xe5, - 0x16, 0x18, 0x63, 0x3d, 0x6a, 0xb2, 0xe4, 0x9b, 0xf7, 0x6d, 0xe4, 0x87, 0x3a, 0xc2, 0xda, 0x54, - 0x53, 0xf2, 0x45, 0x50, 0x7e, 0xc7, 0x3c, 0x7c, 0xf3, 0xda, 0x34, 0xa3, 0xf3, 0x00, 0x58, 0x36, - 0x03, 0xe0, 0x19, 0x0c, 0xf4, 0x4d, 0x71, 0x5b, 0x44, 0xb6, 0x5c, 0x47, 0x83, 0x90, 0xb7, 0xe6, - 0x90, 0x5f, 0x56, 0x00, 0x69, 0xf1, 0xa3, 0xe8, 0x51, 0xe4, 0x87, 0xb4, 0x9f, 0x14, 0x68, 0xf2, - 0x29, 0xb4, 0x53, 0xd8, 0xad, 0x61, 0xfe, 0xeb, 0x15, 0x0b, 0x69, 0xbc, 0xcf, 0x69, 0x36, 0x41, - 0x26, 0x69, 0x16, 0xba, 0xc9, 0x2c, 0x16, 0x59, 0x00, 0xe7, 0x0c, 0x4c, 0xe1, 0x31, 0x73, 0x85, - 0x93, 0x87, 0x71, 0xce, 0x90, 0x39, 0x59, 0x8b, 0xca, 0x60, 0xc4, 0xb7, 0xb8, 0x87, 0x96, 0xeb, - 0xe7, 0xec, 0xc7, 0xf2, 0xc9, 0xdd, 0x85, 0x9e, 0x74, 0xc0, 0x24, 0x0a, 0xec, 0x30, 0xf2, 0x98, - 0x46, 0xe0, 0x56, 0x85, 0x96, 0xdb, 0x4a, 0x74, 0x3f, 0xf2, 0x98, 0x2c, 0xfd, 0x32, 0x82, 0xdc, - 0x82, 0x8e, 0xb2, 0xba, 0xed, 0x08, 0x1d, 0xf4, 0x6d, 0xc5, 0x18, 0x09, 0xf2, 0x26, 0xf4, 0xd1, - 0x9d, 0xa2, 0x98, 0x69, 0x09, 0x15, 0xec, 0xe8, 0x64, 0xcf, 0x90, 0x39, 0x12, 0x12, 0x4b, 0xdc, - 0x7a, 0x89, 0x6d, 0xb5, 0xf7, 0xd4, 0x32, 0xef, 0xb9, 0x03, 0x10, 0x4f, 0x4f, 0x02, 0xdf, 0x45, - 0xe7, 0x51, 0x6e, 0xdc, 0x51, 0x1c, 0xe9, 0x37, 0x99, 0x0b, 0x36, 0x4c, 0x17, 0x7c, 0x49, 0xba, - 0xbe, 0xa1, 0x40, 0x42, 0x8a, 0x69, 0x3b, 0xb4, 0x25, 0xc9, 0x3d, 0x4f, 0x46, 0x43, 0x5a, 0x44, - 0xce, 0xe4, 0x68, 0x4b, 0xb9, 0x60, 0xc6, 0xdb, 0x43, 0x77, 0x52, 0x49, 0x61, 0x59, 0x6d, 0x86, - 0x04, 0xf9, 0x02, 0xae, 0x24, 0xec, 0x9c, 0x39, 0x81, 0x3c, 0xb4, 0x8a, 0xca, 0x14, 0xd4, 0x1a, - 0x15, 0x27, 0xd5, 0x22, 0x59, 0x99, 0x93, 0x14, 0x19, 0xdc, 0xfa, 0x1a, 0x86, 0x55, 0xb7, 0xf0, - 0x17, 0x3e, 0xc9, 0xd6, 0x1f, 0x6a, 0xd0, 0x4e, 0x4b, 0x19, 0xc3, 0xc2, 0xea, 0x01, 0xbc, 0x05, - 0x1d, 0xb4, 0x08, 0xbe, 0xd6, 0xaa, 0x51, 0xd1, 0x96, 0x8c, 0xc2, 0x5b, 0xdd, 0x30, 0xde, 0xea, - 0xaf, 0xe0, 0xfa, 0x84, 0x4d, 0x4e, 0x58, 0xc2, 0xc7, 0x7e, 0xac, 0x32, 0xc5, 0xee, 0x39, 0x93, - 0xa7, 0x5e, 0x2c, 0x32, 0x4a, 0xe5, 0x68, 0xc5, 0x7c, 0x19, 0xe3, 0x8e, 0x2b, 0xfc, 0x73, 0x96, - 0xc6, 0xb8, 0xa2, 0xf2, 0xe3, 0xb7, 0xcc, 0xe3, 0x97, 0x46, 0xb7, 0xf5, 0x7d, 0x1d, 0xae, 0x97, - 0x6f, 0x5b, 0x61, 0x45, 0x02, 0x4d, 0xe3, 0xe8, 0xf8, 0x2d, 0xdf, 0x48, 0xad, 0x22, 0xb6, 0x5a, - 0x3a, 0x34, 0x25, 0x4b, 0xc1, 0xcb, 0x4b, 0x71, 0x96, 0xe9, 0x71, 0xad, 0x82, 0xc7, 0x11, 0x68, - 0xbe, 0x48, 0xa2, 0x89, 0x7e, 0xeb, 0xf1, 0x5b, 0x42, 0x85, 0xc4, 0xb9, 0xb0, 0xd3, 0x6a, 0xa0, - 0x8d, 0x8b, 0x41, 0xe2, 0x5c, 0x1c, 0xe4, 0x05, 0x81, 0x59, 0xeb, 0x28, 0x02, 0xab, 0x12, 0xcc, - 0xf3, 0x80, 0x13, 0x14, 0x61, 0x7d, 0x04, 0xab, 0x59, 0x01, 0xab, 0x9f, 0xf8, 0x57, 0x6a, 0x35, - 0x59, 0xf7, 0x15, 0x32, 0x94, 0x13, 0x9f, 0xaa, 0x56, 0x19, 0xa7, 0xcc, 0x79, 0xd5, 0xd9, 0xff, - 0x00, 0xd7, 0x55, 0x41, 0x2f, 0xfc, 0x73, 0xe9, 0xc7, 0x2c, 0x14, 0x2c, 0x79, 0xc9, 0xfc, 0x01, - 0x34, 0x7c, 0x8f, 0x0f, 0xeb, 0x1b, 0x8d, 0x7b, 0x3d, 0x2a, 0x3f, 0xad, 0x1d, 0x58, 0x5f, 0x5c, - 0x61, 0xe4, 0xba, 0x0c, 0x73, 0xe2, 0xab, 0xae, 0xb2, 0xab, 0x32, 0x4d, 0x71, 0x95, 0x1d, 0x9f, - 0x4f, 0x7c, 0xce, 0x2f, 0xb1, 0xcc, 0xb6, 0x7a, 0x02, 0xe7, 0x96, 0x61, 0x01, 0xbb, 0x8c, 0x2e, - 0x0f, 0x54, 0x70, 0x17, 0x17, 0x39, 0x0e, 0x93, 0xcb, 0x58, 0xe5, 0x7f, 0xeb, 0xf0, 0xee, 0xe2, - 0x22, 0xf3, 0x89, 0x74, 0x87, 0xb9, 0x3e, 0xaf, 0x86, 0xf1, 0xf3, 0xaf, 0xf3, 0x5f, 0xc1, 0x95, - 0x3c, 0x18, 0x53, 0x94, 0xd6, 0xc0, 0x50, 0x18, 0xe4, 0x03, 0x1a, 0xaa, 0x9d, 0x41, 0xdb, 0xd3, - 0xcb, 0x63, 0x00, 0xf4, 0xb7, 0x9e, 0xcd, 0x37, 0x71, 0x5e, 0x45, 0xb5, 0xcd, 0x3c, 0xd1, 0xa6, - 0x90, 0x29, 0x5d, 0x96, 0x66, 0x1b, 0x58, 0x1f, 0xc3, 0x7a, 0xb5, 0x1c, 0xe9, 0x41, 0x7b, 0xb4, - 0xbd, 0xbd, 0x7b, 0x70, 0xb4, 0xbb, 0x33, 0x78, 0x4d, 0x52, 0x3b, 0xbb, 0xdb, 0x4f, 0xf6, 0xf6, - 0x77, 0x77, 0x06, 0x35, 0xeb, 0xa7, 0x1a, 0xf4, 0xa4, 0x36, 0x0f, 0xa2, 0xe8, 0x6c, 0xe2, 0x24, - 0x67, 0xd5, 0x16, 0x9e, 0x26, 0x81, 0x76, 0x5c, 0xf9, 0x59, 0x9a, 0xed, 0x6e, 0x41, 0x07, 0xa3, - 0xc9, 0x96, 0xb2, 0x2a, 0xea, 0xdb, 0xc8, 0x38, 0x4e, 0x02, 0x13, 0x4b, 0x2f, 0x15, 0xb1, 0xf4, - 0x1d, 0x00, 0x4f, 0xf9, 0x88, 0x7c, 0x09, 0x55, 0xde, 0xea, 0x68, 0xce, 0x48, 0x58, 0xff, 0x0e, - 0xd7, 0xa4, 0x86, 0xbb, 0x21, 0x3f, 0xe6, 0x2c, 0x91, 0x1b, 0xa9, 0xbe, 0x50, 0x85, 0xaa, 0xeb, - 0xd0, 0x9e, 0x6a, 0x39, 0xad, 0x6f, 0x46, 0x63, 0x9b, 0x66, 0xec, 0xf8, 0x98, 0xfe, 0xd5, 0x2b, - 0xb8, 0x8c, 0xf4, 0x5e, 0x01, 0xea, 0x37, 0x0b, 0xea, 0x59, 0x8f, 0x60, 0x80, 0x11, 0x1e, 0x30, - 0x27, 0x79, 0xe8, 0x73, 0x11, 0x25, 0x33, 0x33, 0x51, 0xd5, 0x0a, 0x89, 0xea, 0x0e, 0x80, 0x2b, - 0x05, 0xd5, 0x59, 0xea, 0xea, 0x2c, 0x9a, 0x33, 0x12, 0xd6, 0xaf, 0x6b, 0x40, 0xb0, 0x90, 0x54, - 0xe0, 0xf2, 0xc0, 0x77, 0x31, 0xef, 0x95, 0xd5, 0xd0, 0x46, 0xa3, 0xa3, 0x5e, 0xd1, 0xe8, 0x50, - 0xbe, 0xb7, 0xd0, 0xe8, 0x68, 0x22, 0x3b, 0x6d, 0x74, 0xdc, 0x82, 0x0e, 0x82, 0x5b, 0xec, 0x74, - 0xa8, 0x82, 0x11, 0x3b, 0x1d, 0x87, 0xa5, 0x9d, 0x8e, 0x16, 0x0a, 0x54, 0x74, 0x3a, 0x96, 0xcd, - 0x4e, 0xc7, 0x18, 0xae, 0x2e, 0x9e, 0x84, 0x57, 0x37, 0x73, 0x3e, 0x86, 0x76, 0xac, 0x85, 0x30, - 0x52, 0xbb, 0x5b, 0xb7, 0x8b, 0x01, 0x51, 0x5c, 0x89, 0x66, 0xd2, 0xd6, 0x6f, 0x1b, 0xd0, 0x35, - 0xda, 0x9e, 0x15, 0xf7, 0x3e, 0x84, 0x65, 0xc7, 0xf3, 0x12, 0xc6, 0x79, 0x6a, 0x2f, 0x4d, 0x9a, - 0x2a, 0x35, 0x0a, 0x2a, 0x15, 0x01, 0x93, 0x02, 0xd2, 0x06, 0x60, 0x22, 0xd0, 0x8c, 0x1d, 0x31, - 0xd6, 0xe0, 0x07, 0xbf, 0xb3, 0x9b, 0x6a, 0x19, 0x37, 0x65, 0x36, 0xff, 0x96, 0x75, 0x37, 0x45, - 0x37, 0xff, 0xd6, 0x60, 0x89, 0x4d, 0xa2, 0x6f, 0x7d, 0x7c, 0x9d, 0x3a, 0x54, 0x11, 0xf2, 0xaa, - 0x2e, 0x9c, 0x20, 0x60, 0x42, 0x57, 0xa7, 0x9a, 0x92, 0x8b, 0x4b, 0x37, 0xd2, 0xd0, 0x16, 0xbf, - 0xf1, 0x5a, 0x7d, 0xcf, 0x63, 0xa1, 0x86, 0xb4, 0x9a, 0x7a, 0x49, 0x69, 0xba, 0x0e, 0xed, 0x38, - 0xe2, 0x3e, 0x16, 0x07, 0x2b, 0x0a, 0x78, 0xa6, 0x34, 0xf9, 0x10, 0xae, 0xc5, 0x49, 0xe4, 0x1d, - 0x24, 0xec, 0x05, 0x4b, 0x12, 0xe6, 0x6d, 0xa3, 0xf7, 0xef, 0xa8, 0xb2, 0xb4, 0x43, 0xcb, 0x07, - 0xe5, 0x2c, 0xc1, 0xb8, 0x58, 0x9c, 0xb5, 0xaa, 0x66, 0x95, 0x0e, 0x4a, 0x3d, 0xa2, 0x98, 0x25, - 0xce, 0x49, 0xa0, 0x2a, 0xd3, 0x0e, 0xcd, 0x68, 0xeb, 0x07, 0x7d, 0xa5, 0xba, 0xa5, 0x5e, 0x71, - 0xa5, 0xc6, 0xc5, 0xd5, 0x4b, 0x1b, 0x83, 0x8d, 0x62, 0xcf, 0xc9, 0xe8, 0xed, 0x28, 0x6c, 0x22, - 0xeb, 0x45, 0x96, 0xf8, 0xe7, 0xcc, 0xb3, 0x11, 0x3e, 0x2c, 0xe9, 0x7a, 0x51, 0xf1, 0xbe, 0x90, - 0x28, 0xe2, 0x53, 0x58, 0x57, 0x95, 0x1d, 0x67, 0x9e, 0x8d, 0x03, 0x1a, 0x20, 0x62, 0xe7, 0x52, - 0x25, 0xa3, 0x1b, 0x58, 0xe7, 0x71, 0xe6, 0xed, 0x64, 0xe3, 0x7b, 0x72, 0x58, 0x75, 0x2b, 0x42, - 0x37, 0x5d, 0x5e, 0x5d, 0x3e, 0x28, 0x16, 0xae, 0xfe, 0xb7, 0xd0, 0x9e, 0xc3, 0xb9, 0x15, 0xad, - 0xfc, 0x4c, 0x4c, 0x4e, 0xd1, 0x9d, 0x36, 0x59, 0x21, 0x35, 0x4a, 0x7f, 0x86, 0x90, 0xa3, 0x34, - 0x13, 0x33, 0x7d, 0x01, 0x8a, 0xbe, 0xf0, 0x0e, 0x0c, 0xe6, 0x9a, 0xcf, 0x1c, 0xfd, 0xa8, 0xb7, - 0xd0, 0xce, 0xb3, 0xbe, 0x51, 0x69, 0x36, 0xc5, 0xd8, 0x07, 0xda, 0x65, 0xaa, 0xa0, 0xa0, 0x79, - 0xb2, 0xfa, 0x2b, 0x9d, 0xcc, 0xfa, 0x63, 0x4d, 0x65, 0xd2, 0x43, 0xe7, 0x9c, 0x79, 0x23, 0x1d, - 0x9c, 0x46, 0xd8, 0xd6, 0x8a, 0x61, 0x5b, 0xd1, 0xfd, 0xad, 0x78, 0x44, 0xee, 0x42, 0x4f, 0x15, - 0xe7, 0xb6, 0x99, 0xab, 0xba, 0x8a, 0xa7, 0xba, 0x07, 0xef, 0xc2, 0x15, 0x95, 0xfd, 0xf9, 0x38, - 0x4a, 0x04, 0x96, 0x3c, 0x5c, 0x07, 0xe6, 0x2a, 0x0e, 0x1c, 0x4a, 0xbe, 0x2c, 0x7d, 0xb8, 0x7c, - 0xf0, 0x58, 0xc8, 0x35, 0x72, 0x94, 0x9f, 0xd2, 0x19, 0x7d, 0x6e, 0x4b, 0x57, 0xd7, 0x46, 0x6e, - 0xf9, 0xfc, 0x88, 0x71, 0x91, 0xc3, 0xcc, 0xae, 0x01, 0x33, 0x1f, 0x35, 0xdb, 0x8d, 0x41, 0xf3, - 0x51, 0xb3, 0xdd, 0x1c, 0x2c, 0x59, 0x3f, 0xd6, 0x94, 0x6d, 0x17, 0x6a, 0xdb, 0x0a, 0xdb, 0xce, - 0xd7, 0x57, 0xca, 0x02, 0x85, 0xfa, 0x6a, 0x17, 0x5e, 0x1f, 0xab, 0xb7, 0xc8, 0x76, 0x12, 0x77, - 0xec, 0x9f, 0x33, 0x9b, 0x4f, 0xe3, 0x58, 0x9e, 0x8b, 0x85, 0x32, 0xc4, 0x54, 0xae, 0x6b, 0xd3, - 0xdb, 0x5a, 0x6c, 0xa4, 0xa4, 0x0e, 0x95, 0xd0, 0xae, 0x92, 0xb1, 0x7e, 0x51, 0x53, 0xb8, 0xf7, - 0x28, 0x99, 0x72, 0xc1, 0x3c, 0xf9, 0xc0, 0xbe, 0xe2, 0x4f, 0xac, 0x9f, 0x41, 0xcb, 0x40, 0x40, - 0xfd, 0xf9, 0x7e, 0x80, 0xb1, 0xe0, 0xe6, 0x51, 0xde, 0xc1, 0xa2, 0x7a, 0x92, 0xf5, 0x09, 0x74, - 0x0d, 0x36, 0xe9, 0xc2, 0xf2, 0xf1, 0xfe, 0xe3, 0xfd, 0x67, 0x5f, 0xee, 0x0f, 0x5e, 0x93, 0xc4, - 0x11, 0x3d, 0x3e, 0x94, 0x70, 0xa5, 0x46, 0xae, 0xc0, 0xca, 0xf1, 0x3e, 0x92, 0x5f, 0x3e, 0xa3, - 0x47, 0x0f, 0xbf, 0x1e, 0xd4, 0xad, 0x9f, 0x1a, 0xaa, 0xc7, 0xf3, 0xdc, 0xe8, 0xa1, 0x69, 0xd8, - 0x54, 0x5d, 0xb7, 0x60, 0x80, 0xd6, 0x8d, 0xf2, 0xa1, 0x0f, 0x75, 0x11, 0xe9, 0x0c, 0x52, 0x17, - 0x91, 0xac, 0x4c, 0xdc, 0xb1, 0xcc, 0xc3, 0xe1, 0x69, 0x9a, 0x44, 0x72, 0x86, 0xbc, 0x12, 0x8d, - 0xab, 0xd4, 0xcb, 0xae, 0x5b, 0x97, 0x19, 0x6f, 0x84, 0xfd, 0xf6, 0x84, 0xf1, 0x38, 0x0a, 0x79, - 0xfa, 0x3c, 0x64, 0xb4, 0x7c, 0x69, 0x12, 0x16, 0x07, 0xbe, 0x9a, 0xac, 0x7c, 0xb3, 0xa3, 0x39, - 0x23, 0x41, 0x58, 0x79, 0xaf, 0xb0, 0x8d, 0x96, 0xfd, 0xb0, 0x68, 0xd9, 0x92, 0x53, 0x6f, 0x3e, - 0x5f, 0xe8, 0x26, 0x96, 0x76, 0x18, 0xd5, 0x1d, 0x76, 0xb2, 0xea, 0xe3, 0x2b, 0x20, 0x8b, 0x33, - 0x17, 0xee, 0xe2, 0x60, 0x77, 0x7f, 0x67, 0x6f, 0xff, 0x1f, 0x07, 0xb5, 0x02, 0x90, 0xac, 0x17, - 0x80, 0x64, 0x43, 0x52, 0xdb, 0xa3, 0xfd, 0xed, 0xdd, 0x27, 0xbb, 0x3b, 0x83, 0xa6, 0xf5, 0xfb, - 0x9a, 0x2a, 0x4b, 0xb6, 0x0b, 0xad, 0xbc, 0x9f, 0xc1, 0xdb, 0xb7, 0xa1, 0xa3, 0xed, 0xb9, 0x97, - 0x7a, 0x5a, 0xce, 0x20, 0xff, 0x02, 0xab, 0x29, 0xa2, 0xb5, 0x0b, 0x9e, 0xf7, 0xc1, 0x7c, 0x6b, - 0xa6, 0x6c, 0xcb, 0xcd, 0xf4, 0x43, 0x9b, 0xa7, 0xef, 0x15, 0x68, 0xeb, 0x3d, 0xe8, 0x17, 0x25, - 0x5e, 0x8a, 0x9a, 0x7f, 0x55, 0x87, 0xd5, 0xb9, 0xdf, 0xc5, 0xab, 0x81, 0xcf, 0x7c, 0xd3, 0xb2, - 0xbe, 0xd0, 0xb4, 0x24, 0xef, 0x01, 0x31, 0x45, 0x6c, 0xb3, 0x4f, 0x33, 0x30, 0x04, 0x55, 0x1e, - 0x33, 0x91, 0x54, 0xf3, 0x32, 0x48, 0x8a, 0xdc, 0x87, 0x1e, 0x8f, 0x5c, 0xdf, 0x09, 0xec, 0xc0, - 0x0f, 0xcf, 0xd2, 0x7f, 0x46, 0xb8, 0x39, 0xf7, 0x43, 0x3b, 0x4a, 0x3c, 0x91, 0x02, 0xb4, 0xcb, - 0x73, 0x82, 0xfc, 0x13, 0xac, 0xb1, 0x90, 0xdb, 0x29, 0x9a, 0xb6, 0xbd, 0xec, 0xdf, 0x0f, 0x1a, - 0x8b, 0x7d, 0xbc, 0x05, 0xb8, 0x4e, 0x09, 0x9b, 0x67, 0x71, 0x8b, 0x03, 0x50, 0xe7, 0x42, 0x17, - 0xce, 0x26, 0xe4, 0xad, 0x15, 0x21, 0xef, 0x63, 0xe8, 0xea, 0x7f, 0x44, 0x39, 0x4a, 0xfb, 0x0f, - 0xfd, 0xad, 0x77, 0xf2, 0x1d, 0x47, 0xf9, 0xbf, 0xae, 0x3c, 0xd5, 0xff, 0xb9, 0xa2, 0x17, 0xdd, - 0x94, 0x13, 0xa8, 0x39, 0xdb, 0xfa, 0xff, 0x1a, 0xf4, 0xa5, 0x8a, 0xc6, 0xce, 0x7f, 0x8f, 0xbd, - 0x84, 0xb4, 0x80, 0xd7, 0xbf, 0xd2, 0xad, 0x19, 0x2d, 0xa9, 0x6c, 0x90, 0x9a, 0x82, 0x64, 0x0b, - 0xd6, 0xf8, 0xf4, 0x24, 0x7d, 0x33, 0x1f, 0xf1, 0x28, 0x7c, 0x30, 0x13, 0x2c, 0x45, 0xa0, 0xa5, - 0x63, 0xe4, 0x3d, 0xb8, 0x92, 0x76, 0x34, 0xf3, 0x09, 0xea, 0xb7, 0xcc, 0xc5, 0x01, 0xeb, 0xbf, - 0x6a, 0x19, 0x52, 0x92, 0xcf, 0x35, 0x56, 0x62, 0x99, 0x8b, 0xc9, 0xcf, 0xd2, 0x77, 0xf2, 0x3a, - 0xb4, 0xf4, 0xef, 0x1c, 0xea, 0x15, 0xd0, 0x94, 0xe9, 0xa4, 0xcd, 0x82, 0x93, 0xde, 0x86, 0x8e, - 0x7e, 0x77, 0x99, 0x74, 0x0b, 0x59, 0x48, 0xe7, 0x8c, 0x02, 0xa4, 0x54, 0x90, 0x28, 0xa3, 0xad, - 0x6f, 0xd4, 0x0b, 0x62, 0x78, 0x0d, 0xf9, 0x68, 0xce, 0xcd, 0x16, 0xcc, 0x99, 0x0b, 0x17, 0x3d, - 0x2c, 0xcb, 0x0b, 0x75, 0xb3, 0xd2, 0xf8, 0xbe, 0x06, 0x77, 0x0c, 0x44, 0xb1, 0xbd, 0xf8, 0x93, - 0xf5, 0x1d, 0x80, 0xf4, 0x57, 0x2d, 0x47, 0xe8, 0xa4, 0xd2, 0xd1, 0x9c, 0x91, 0xa8, 0xfa, 0x09, - 0xbc, 0x5e, 0xf9, 0x13, 0x78, 0x55, 0xc5, 0x60, 0xfd, 0x77, 0x0d, 0x06, 0x47, 0xd1, 0x19, 0x0b, - 0x15, 0xdc, 0x65, 0xa1, 0xab, 0xb0, 0x82, 0xac, 0x1f, 0xf4, 0x95, 0x9c, 0xb1, 0x59, 0xc1, 0x5e, - 0xf5, 0x39, 0x08, 0xfe, 0x26, 0xac, 0x9c, 0x26, 0xd1, 0x34, 0x4e, 0x01, 0x16, 0xee, 0xd0, 0xa0, - 0x45, 0x26, 0xfe, 0xc8, 0xe7, 0x73, 0x5f, 0x62, 0x67, 0x5d, 0x8e, 0x6a, 0x92, 0x6c, 0x80, 0x09, - 0x04, 0x52, 0x48, 0x6b, 0xb0, 0xac, 0xff, 0xd4, 0xbf, 0x56, 0x2e, 0x28, 0x5a, 0x59, 0x38, 0x49, - 0x54, 0x13, 0x32, 0x55, 0xaf, 0xb6, 0x69, 0x4a, 0x92, 0xfb, 0xd0, 0x8d, 0xf3, 0xe9, 0xfa, 0x3f, - 0xa9, 0xd6, 0xf3, 0x6b, 0x9c, 0xdf, 0x80, 0x9a, 0xe2, 0x96, 0x80, 0xeb, 0xdb, 0x51, 0x10, 0x30, - 0x57, 0x48, 0xbd, 0x4d, 0x3d, 0x52, 0xa8, 0x5e, 0xc3, 0x93, 0x2b, 0xa8, 0xae, 0x8d, 0x58, 0x2f, - 0x37, 0x62, 0x63, 0xce, 0x88, 0x95, 0xe6, 0xb1, 0x7e, 0xc8, 0x5e, 0x9e, 0xd2, 0xad, 0x2f, 0x6b, - 0x82, 0x07, 0x65, 0x26, 0x30, 0xba, 0xb6, 0xe5, 0xdb, 0x14, 0x0c, 0xf1, 0x60, 0xe5, 0x9f, 0xbb, - 0x9b, 0xef, 0x7f, 0x9a, 0x4e, 0x39, 0x69, 0xe1, 0xd7, 0x07, 0x7f, 0x0e, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x0c, 0x5f, 0x36, 0xb3, 0x27, 0x00, 0x00, +func (x *MultiAccount_ColorHash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount_ColorHash) ProtoMessage() {} + +func (x *MultiAccount_ColorHash) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount_ColorHash.ProtoReflect.Descriptor instead. +func (*MultiAccount_ColorHash) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *MultiAccount_ColorHash) GetIndex() []int64 { + if x != nil { + return x.Index + } + return nil +} + +type MultiAccount_IdentityImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyUid string `protobuf:"bytes,1,opt,name=key_uid,json=keyUid,proto3" json:"key_uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"` + Width int64 `protobuf:"varint,4,opt,name=width,proto3" json:"width,omitempty"` + Height int64 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` + Filesize int64 `protobuf:"varint,6,opt,name=filesize,proto3" json:"filesize,omitempty"` + ResizeTarget int64 `protobuf:"varint,7,opt,name=resize_target,json=resizeTarget,proto3" json:"resize_target,omitempty"` + Clock uint64 `protobuf:"varint,8,opt,name=clock,proto3" json:"clock,omitempty"` +} + +func (x *MultiAccount_IdentityImage) Reset() { + *x = MultiAccount_IdentityImage{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MultiAccount_IdentityImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAccount_IdentityImage) ProtoMessage() {} + +func (x *MultiAccount_IdentityImage) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAccount_IdentityImage.ProtoReflect.Descriptor instead. +func (*MultiAccount_IdentityImage) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *MultiAccount_IdentityImage) GetKeyUid() string { + if x != nil { + return x.KeyUid + } + return "" +} + +func (x *MultiAccount_IdentityImage) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MultiAccount_IdentityImage) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MultiAccount_IdentityImage) GetWidth() int64 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetHeight() int64 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetFilesize() int64 { + if x != nil { + return x.Filesize + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetResizeTarget() int64 { + if x != nil { + return x.ResizeTarget + } + return 0 +} + +func (x *MultiAccount_IdentityImage) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +type LocalPairingPayload_Key struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *LocalPairingPayload_Key) Reset() { + *x = LocalPairingPayload_Key{} + if protoimpl.UnsafeEnabled { + mi := &file_pairing_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LocalPairingPayload_Key) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LocalPairingPayload_Key) ProtoMessage() {} + +func (x *LocalPairingPayload_Key) ProtoReflect() protoreflect.Message { + mi := &file_pairing_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LocalPairingPayload_Key.ProtoReflect.Descriptor instead. +func (*LocalPairingPayload_Key) Descriptor() ([]byte, []int) { + return file_pairing_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *LocalPairingPayload_Key) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LocalPairingPayload_Key) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +var File_pairing_proto protoreflect.FileDescriptor + +var file_pairing_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x1b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, + 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xfd, 0x07, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x32, 0x52, 0x08, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4f, + 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, + 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x55, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0e, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, + 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4f, 0x0a, 0x0f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x07, + 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, + 0x70, 0x61, 0x69, 0x72, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x12, 0x4d, 0x0a, + 0x0e, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, + 0x70, 0x44, 0x61, 0x74, 0x61, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0e, 0x6b, 0x65, + 0x79, 0x70, 0x61, 0x69, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x10, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x5f, 0x0a, 0x17, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x17, 0x77, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, + 0x6c, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x28, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, + 0x68, 0x61, 0x74, 0x52, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0c, 0x63, 0x68, + 0x61, 0x74, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x61, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x74, 0x73, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa8, 0x05, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, + 0x69, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x65, 0x79, + 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x6b, + 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, + 0x79, 0x55, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x1a, + 0x21, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x1a, 0xdb, 0x01, 0x0a, 0x0d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x5f, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x69, 0x7a, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x22, 0x97, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, + 0x67, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, + 0x3a, 0x0a, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0c, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x4b, + 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x74, 0x4b, 0x65, + 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x63, + 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x2d, 0x0a, 0x03, 0x4b, + 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x15, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x65, 0x72, 0x48, + 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, + 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, + 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, + 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, 0x50, + 0x61, 0x69, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x06, + 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x56, 0x32, 0x12, 0x30, 0x0a, 0x14, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x61, 0x67, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, + 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x68, 0x61, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x55, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, + 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, + 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x1c, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, + 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x77, 0x0a, 0x17, 0x53, 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x86, 0x05, 0x0a, 0x19, 0x53, + 0x79, 0x6e, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, + 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, + 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x12, + 0x4f, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x6a, + 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, 0x6f, 0x69, 0x6e, + 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, + 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x12, 0x65, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x76, 0x31, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, + 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, + 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4f, 0x70, 0x65, + 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x76, 0x32, 0x18, 0x10, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, + 0x73, 0x56, 0x32, 0x22, 0x97, 0x02, 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x54, 0x6f, 0x4a, + 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x73, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x73, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x65, + 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x76, 0x65, + 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x72, 0x65, 0x76, + 0x65, 0x61, 0x6c, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x59, 0x0a, + 0x18, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xe9, 0x01, 0x0a, 0x08, 0x53, 0x79, 0x6e, + 0x63, 0x43, 0x68, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x68, 0x61, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x16, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x16, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x77, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, + 0x37, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x68, 0x61, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, + 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x16, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x44, 0x0a, 0x1a, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x45, + 0x0a, 0x1b, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x65, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x43, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x42, 0x0a, 0x18, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0xa6, + 0x02, 0x0a, 0x2a, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x6b, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x38, 0x0a, + 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x41, + 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x43, + 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x22, 0xa0, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, + 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7e, 0x0a, 0x15, 0x53, 0x79, + 0x6e, 0x63, 0x45, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x10, 0x53, 0x79, + 0x6e, 0x63, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x65, 0x61, 0x72, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6c, 0x65, + 0x61, 0x72, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x12, 0x53, 0x79, 0x6e, 0x63, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, + 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, + 0x65, 0x73, 0x69, 0x7a, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x22, 0x68, 0x0a, 0x13, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, + 0x64, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x52, 0x08, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xd0, 0x03, 0x0a, 0x0b, + 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6b, + 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, + 0x79, 0x55, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x16, 0x0a, 0x06, + 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x77, 0x61, + 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, + 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x50, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x73, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x50, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x73, 0x12, 0x34, 0x0a, 0x15, + 0x74, 0x65, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, 0x65, 0x73, + 0x74, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, + 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x90, + 0x03, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, + 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x72, + 0x69, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x44, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x63, + 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x6b, 0x65, 0x79, + 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, + 0x64, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, + 0x73, 0x22, 0x60, 0x0a, 0x15, 0x53, 0x79, 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x31, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, + 0x6e, 0x63, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x22, 0xf6, 0x01, 0x0a, 0x10, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x61, 0x76, 0x65, + 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x6f, + 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, + 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x97, 0x01, 0x0a, + 0x15, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, + 0x45, 0x0a, 0x1f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, + 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x3a, 0x0a, 0x0b, 0x54, 0x72, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, + 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x54, 0x52, + 0x55, 0x53, 0x54, 0x57, 0x4f, 0x52, 0x54, 0x48, 0x59, 0x10, 0x02, 0x22, 0xa0, 0x03, 0x0a, 0x17, + 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, + 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, + 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x65, 0x0a, + 0x13, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x12, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x58, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, + 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0xdc, + 0x01, 0x0a, 0x1a, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x64, 0x12, 0x5c, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x0e, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0x2c, 0x0a, 0x0e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x22, 0xb2, 0x03, + 0x0a, 0x0f, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x70, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, + 0x12, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x08, 0x70, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6f, 0x63, 0x69, 0x61, + 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x65, 0x6e, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, + 0x63, 0x45, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x52, 0x12, 0x65, 0x6e, 0x73, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x6a, 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x1a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x22, 0x73, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0e, 0x53, 0x79, 0x6e, 0x63, + 0x52, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x72, 0x61, + 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x61, 0x77, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x72, 0x61, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x14, 0x73, 0x75, 0x62, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x4a, 0x73, 0x6f, + 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x11, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x4b, 0x65, 0x79, + 0x63, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x6f, 0x63, + 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x88, 0x01, 0x0a, 0x1d, 0x53, 0x79, 0x6e, 0x63, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x65, 0x79, + 0x5f, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x55, + 0x69, 0x64, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x14, 0x53, 0x79, 0x6e, 0x63, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x6e, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x65, 0x73, 0x74, 0x6e, 0x65, 0x74, + 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x74, + 0x0a, 0x16, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x6c, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x1a, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x65, 0x73, + 0x74, 0x6e, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x65, 0x73, 0x74, + 0x6e, 0x65, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_pairing_proto_rawDescOnce sync.Once + file_pairing_proto_rawDescData = file_pairing_proto_rawDesc +) + +func file_pairing_proto_rawDescGZIP() []byte { + file_pairing_proto_rawDescOnce.Do(func() { + file_pairing_proto_rawDescData = protoimpl.X.CompressGZIP(file_pairing_proto_rawDescData) + }) + return file_pairing_proto_rawDescData +} + +var file_pairing_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_pairing_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_pairing_proto_goTypes = []interface{}{ + (SyncActivityCenterCommunityRequestDecisionCommunityRequestDecision)(0), // 0: protobuf.SyncActivityCenterCommunityRequestDecision.community_request_decision + (SyncTrustedUser_TrustStatus)(0), // 1: protobuf.SyncTrustedUser.TrustStatus + (SyncVerificationRequest_VerificationStatus)(0), // 2: protobuf.SyncVerificationRequest.VerificationStatus + (SyncContactRequestDecision_DecisionStatus)(0), // 3: protobuf.SyncContactRequestDecision.DecisionStatus + (*FetchingBackedUpDataDetails)(nil), // 4: protobuf.FetchingBackedUpDataDetails + (*Backup)(nil), // 5: protobuf.Backup + (*MultiAccount)(nil), // 6: protobuf.MultiAccount + (*LocalPairingPayload)(nil), // 7: protobuf.LocalPairingPayload + (*LocalPairingPeerHello)(nil), // 8: protobuf.LocalPairingPeerHello + (*SyncPairInstallation)(nil), // 9: protobuf.SyncPairInstallation + (*SyncInstallationContactV2)(nil), // 10: protobuf.SyncInstallationContactV2 + (*SyncInstallationAccount)(nil), // 11: protobuf.SyncInstallationAccount + (*SyncInstallationCommunity)(nil), // 12: protobuf.SyncInstallationCommunity + (*SyncCommunityRequestsToJoin)(nil), // 13: protobuf.SyncCommunityRequestsToJoin + (*SyncCommunityControlNode)(nil), // 14: protobuf.SyncCommunityControlNode + (*SyncChat)(nil), // 15: protobuf.SyncChat + (*MembershipUpdateEvents)(nil), // 16: protobuf.MembershipUpdateEvents + (*SyncChatRemoved)(nil), // 17: protobuf.SyncChatRemoved + (*SyncChatMessagesRead)(nil), // 18: protobuf.SyncChatMessagesRead + (*SyncActivityCenterRead)(nil), // 19: protobuf.SyncActivityCenterRead + (*SyncActivityCenterAccepted)(nil), // 20: protobuf.SyncActivityCenterAccepted + (*SyncActivityCenterDismissed)(nil), // 21: protobuf.SyncActivityCenterDismissed + (*SyncActivityCenterDeleted)(nil), // 22: protobuf.SyncActivityCenterDeleted + (*SyncActivityCenterUnread)(nil), // 23: protobuf.SyncActivityCenterUnread + (*SyncActivityCenterCommunityRequestDecision)(nil), // 24: protobuf.SyncActivityCenterCommunityRequestDecision + (*SyncBookmark)(nil), // 25: protobuf.SyncBookmark + (*SyncEnsUsernameDetail)(nil), // 26: protobuf.SyncEnsUsernameDetail + (*SyncClearHistory)(nil), // 27: protobuf.SyncClearHistory + (*SyncProfilePicture)(nil), // 28: protobuf.SyncProfilePicture + (*SyncProfilePictures)(nil), // 29: protobuf.SyncProfilePictures + (*SyncAccount)(nil), // 30: protobuf.SyncAccount + (*SyncKeypair)(nil), // 31: protobuf.SyncKeypair + (*SyncAccountsPositions)(nil), // 32: protobuf.SyncAccountsPositions + (*SyncSavedAddress)(nil), // 33: protobuf.SyncSavedAddress + (*SyncCommunitySettings)(nil), // 34: protobuf.SyncCommunitySettings + (*SyncTrustedUser)(nil), // 35: protobuf.SyncTrustedUser + (*SyncVerificationRequest)(nil), // 36: protobuf.SyncVerificationRequest + (*SyncContactRequestDecision)(nil), // 37: protobuf.SyncContactRequestDecision + (*BackedUpProfile)(nil), // 38: protobuf.BackedUpProfile + (*RawMessage)(nil), // 39: protobuf.RawMessage + (*SyncRawMessage)(nil), // 40: protobuf.SyncRawMessage + (*SyncKeycard)(nil), // 41: protobuf.SyncKeycard + (*SyncSocialLinks)(nil), // 42: protobuf.SyncSocialLinks + (*SyncAccountCustomizationColor)(nil), // 43: protobuf.SyncAccountCustomizationColor + (*TokenPreferences)(nil), // 44: protobuf.TokenPreferences + (*SyncTokenPreferences)(nil), // 45: protobuf.SyncTokenPreferences + (*CollectiblePreferences)(nil), // 46: protobuf.CollectiblePreferences + (*SyncCollectiblePreferences)(nil), // 47: protobuf.SyncCollectiblePreferences + (*MultiAccount_ColorHash)(nil), // 48: protobuf.MultiAccount.ColorHash + (*MultiAccount_IdentityImage)(nil), // 49: protobuf.MultiAccount.IdentityImage + (*LocalPairingPayload_Key)(nil), // 50: protobuf.LocalPairingPayload.Key + (*SyncSetting)(nil), // 51: protobuf.SyncSetting + (*RevealedAccount)(nil), // 52: protobuf.RevealedAccount + (*SyncProfileShowcasePreferences)(nil), // 53: protobuf.SyncProfileShowcasePreferences + (ApplicationMetadataMessage_Type)(0), // 54: protobuf.ApplicationMetadataMessage.Type + (*SocialLink)(nil), // 55: protobuf.SocialLink +} +var file_pairing_proto_depIdxs = []int32{ + 10, // 0: protobuf.Backup.contacts:type_name -> protobuf.SyncInstallationContactV2 + 12, // 1: protobuf.Backup.communities:type_name -> protobuf.SyncInstallationCommunity + 4, // 2: protobuf.Backup.contactsDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 4, // 3: protobuf.Backup.communitiesDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 38, // 4: protobuf.Backup.profile:type_name -> protobuf.BackedUpProfile + 4, // 5: protobuf.Backup.profileDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 51, // 6: protobuf.Backup.setting:type_name -> protobuf.SyncSetting + 4, // 7: protobuf.Backup.settingsDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 31, // 8: protobuf.Backup.keypair:type_name -> protobuf.SyncKeypair + 4, // 9: protobuf.Backup.keypairDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 30, // 10: protobuf.Backup.watchOnlyAccount:type_name -> protobuf.SyncAccount + 4, // 11: protobuf.Backup.watchOnlyAccountDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 15, // 12: protobuf.Backup.chats:type_name -> protobuf.SyncChat + 4, // 13: protobuf.Backup.chatsDetails:type_name -> protobuf.FetchingBackedUpDataDetails + 48, // 14: protobuf.MultiAccount.color_hash:type_name -> protobuf.MultiAccount.ColorHash + 49, // 15: protobuf.MultiAccount.images:type_name -> protobuf.MultiAccount.IdentityImage + 50, // 16: protobuf.LocalPairingPayload.keys:type_name -> protobuf.LocalPairingPayload.Key + 6, // 17: protobuf.LocalPairingPayload.multiaccount:type_name -> protobuf.MultiAccount + 13, // 18: protobuf.SyncInstallationCommunity.requests_to_join:type_name -> protobuf.SyncCommunityRequestsToJoin + 34, // 19: protobuf.SyncInstallationCommunity.settings:type_name -> protobuf.SyncCommunitySettings + 14, // 20: protobuf.SyncInstallationCommunity.control_node:type_name -> protobuf.SyncCommunityControlNode + 52, // 21: protobuf.SyncCommunityRequestsToJoin.revealed_accounts:type_name -> protobuf.RevealedAccount + 16, // 22: protobuf.SyncChat.membershipUpdateEvents:type_name -> protobuf.MembershipUpdateEvents + 0, // 23: protobuf.SyncActivityCenterCommunityRequestDecision.decision:type_name -> protobuf.SyncActivityCenterCommunityRequestDecision.community_request_decision + 28, // 24: protobuf.SyncProfilePictures.pictures:type_name -> protobuf.SyncProfilePicture + 30, // 25: protobuf.SyncKeypair.accounts:type_name -> protobuf.SyncAccount + 41, // 26: protobuf.SyncKeypair.keycards:type_name -> protobuf.SyncKeycard + 30, // 27: protobuf.SyncAccountsPositions.accounts:type_name -> protobuf.SyncAccount + 1, // 28: protobuf.SyncTrustedUser.status:type_name -> protobuf.SyncTrustedUser.TrustStatus + 2, // 29: protobuf.SyncVerificationRequest.verification_status:type_name -> protobuf.SyncVerificationRequest.VerificationStatus + 3, // 30: protobuf.SyncContactRequestDecision.decision_status:type_name -> protobuf.SyncContactRequestDecision.DecisionStatus + 28, // 31: protobuf.BackedUpProfile.pictures:type_name -> protobuf.SyncProfilePicture + 42, // 32: protobuf.BackedUpProfile.social_links:type_name -> protobuf.SyncSocialLinks + 26, // 33: protobuf.BackedUpProfile.ens_username_details:type_name -> protobuf.SyncEnsUsernameDetail + 53, // 34: protobuf.BackedUpProfile.profile_showcase_preferences:type_name -> protobuf.SyncProfileShowcasePreferences + 54, // 35: protobuf.RawMessage.messageType:type_name -> protobuf.ApplicationMetadataMessage.Type + 39, // 36: protobuf.SyncRawMessage.rawMessages:type_name -> protobuf.RawMessage + 55, // 37: protobuf.SyncSocialLinks.social_links:type_name -> protobuf.SocialLink + 44, // 38: protobuf.SyncTokenPreferences.preferences:type_name -> protobuf.TokenPreferences + 46, // 39: protobuf.SyncCollectiblePreferences.preferences:type_name -> protobuf.CollectiblePreferences + 40, // [40:40] is the sub-list for method output_type + 40, // [40:40] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name +} + +func init() { file_pairing_proto_init() } +func file_pairing_proto_init() { + if File_pairing_proto != nil { + return + } + file_chat_identity_proto_init() + file_sync_settings_proto_init() + file_application_metadata_message_proto_init() + file_communities_proto_init() + file_profile_showcase_proto_init() + if !protoimpl.UnsafeEnabled { + file_pairing_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchingBackedUpDataDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Backup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPeerHello); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncPairInstallation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationContactV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncInstallationCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCommunityRequestsToJoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCommunityControlNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncChat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MembershipUpdateEvents); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncChatRemoved); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncChatMessagesRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterRead); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterAccepted); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterDismissed); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterDeleted); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterUnread); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncActivityCenterCommunityRequestDecision); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncBookmark); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncEnsUsernameDetail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncClearHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncProfilePicture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncProfilePictures); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncKeypair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccountsPositions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSavedAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCommunitySettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncTrustedUser); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncVerificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncContactRequestDecision); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BackedUpProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncRawMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncKeycard); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSocialLinks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncAccountCustomizationColor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenPreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncTokenPreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CollectiblePreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncCollectiblePreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount_ColorHash); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MultiAccount_IdentityImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pairing_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocalPairingPayload_Key); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pairing_proto_rawDesc, + NumEnums: 4, + NumMessages: 47, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pairing_proto_goTypes, + DependencyIndexes: file_pairing_proto_depIdxs, + EnumInfos: file_pairing_proto_enumTypes, + MessageInfos: file_pairing_proto_msgTypes, + }.Build() + File_pairing_proto = out.File + file_pairing_proto_rawDesc = nil + file_pairing_proto_goTypes = nil + file_pairing_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.proto index db7a111a..a613a7d8 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/pairing.proto @@ -4,6 +4,7 @@ import "chat_identity.proto"; import "sync_settings.proto"; import 'application_metadata_message.proto'; import 'communities.proto'; +import 'profile_showcase.proto'; option go_package = "./;protobuf"; package protobuf; @@ -135,10 +136,12 @@ message SyncInstallationCommunity { SyncCommunitySettings settings = 9; bool encrypted = 10; bool spectated = 11; - bytes encryption_keys = 12; + // Kept for backward compatibility + bytes encryption_keys_v1 = 12 [deprecated = true]; SyncCommunityControlNode control_node = 13; int64 joined_at = 14; int64 last_opened_at = 15; + repeated bytes encryption_keys_v2 = 16; } message SyncCommunityRequestsToJoin { @@ -376,6 +379,7 @@ message BackedUpProfile { repeated SyncProfilePicture pictures = 4; SyncSocialLinks social_links = 5; repeated SyncEnsUsernameDetail ens_username_details = 6; + SyncProfileShowcasePreferences profile_showcase_preferences = 7; } message RawMessage { @@ -436,4 +440,4 @@ message SyncCollectiblePreferences { uint64 clock = 1; bool testnet = 2; repeated CollectiblePreferences preferences = 3; -} \ No newline at end of file +} diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/pin_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/pin_message.pb.go index f1267b4b..b6c96412 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/pin_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/pin_message.pb.go @@ -1,117 +1,187 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: pin_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PinMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` Pinned bool `protobuf:"varint,4,opt,name=pinned,proto3" json:"pinned,omitempty"` // The type of message (public/one-to-one/private-group-chat) - MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MessageType MessageType `protobuf:"varint,5,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"` } -func (m *PinMessage) Reset() { *m = PinMessage{} } -func (m *PinMessage) String() string { return proto.CompactTextString(m) } -func (*PinMessage) ProtoMessage() {} +func (x *PinMessage) Reset() { + *x = PinMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_pin_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PinMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PinMessage) ProtoMessage() {} + +func (x *PinMessage) ProtoReflect() protoreflect.Message { + mi := &file_pin_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PinMessage.ProtoReflect.Descriptor instead. func (*PinMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_b3c2ad1be7128a0a, []int{0} + return file_pin_message_proto_rawDescGZIP(), []int{0} } -func (m *PinMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PinMessage.Unmarshal(m, b) -} -func (m *PinMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PinMessage.Marshal(b, m, deterministic) -} -func (m *PinMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_PinMessage.Merge(m, src) -} -func (m *PinMessage) XXX_Size() int { - return xxx_messageInfo_PinMessage.Size(m) -} -func (m *PinMessage) XXX_DiscardUnknown() { - xxx_messageInfo_PinMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_PinMessage proto.InternalMessageInfo - -func (m *PinMessage) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *PinMessage) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *PinMessage) GetMessageId() string { - if m != nil { - return m.MessageId +func (x *PinMessage) GetMessageId() string { + if x != nil { + return x.MessageId } return "" } -func (m *PinMessage) GetChatId() string { - if m != nil { - return m.ChatId +func (x *PinMessage) GetChatId() string { + if x != nil { + return x.ChatId } return "" } -func (m *PinMessage) GetPinned() bool { - if m != nil { - return m.Pinned +func (x *PinMessage) GetPinned() bool { + if x != nil { + return x.Pinned } return false } -func (m *PinMessage) GetMessageType() MessageType { - if m != nil { - return m.MessageType +func (x *PinMessage) GetMessageType() MessageType { + if x != nil { + return x.MessageType } return MessageType_UNKNOWN_MESSAGE_TYPE } -func init() { - proto.RegisterType((*PinMessage)(nil), "protobuf.PinMessage") +var File_pin_message_proto protoreflect.FileDescriptor + +var file_pin_message_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x70, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x0a, 0x50, + 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, + 0x38, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("pin_message.proto", fileDescriptor_b3c2ad1be7128a0a) +var ( + file_pin_message_proto_rawDescOnce sync.Once + file_pin_message_proto_rawDescData = file_pin_message_proto_rawDesc +) + +func file_pin_message_proto_rawDescGZIP() []byte { + file_pin_message_proto_rawDescOnce.Do(func() { + file_pin_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_pin_message_proto_rawDescData) + }) + return file_pin_message_proto_rawDescData } -var fileDescriptor_b3c2ad1be7128a0a = []byte{ - // 192 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2c, 0xc8, 0xcc, 0x8b, - 0xcf, 0x4d, 0x2d, 0x2e, 0x4e, 0x4c, 0x4f, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, - 0x53, 0x49, 0xa5, 0x69, 0x52, 0xdc, 0xa9, 0x79, 0xa5, 0xb9, 0xc5, 0x10, 0x61, 0xa5, 0x35, 0x8c, - 0x5c, 0x5c, 0x01, 0x99, 0x79, 0xbe, 0x10, 0xb5, 0x42, 0x22, 0x5c, 0xac, 0xc9, 0x39, 0xf9, 0xc9, - 0xd9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x2c, 0x41, 0x10, 0x8e, 0x90, 0x2c, 0x17, 0x17, 0xd4, 0xb0, - 0xf8, 0xcc, 0x14, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x4e, 0xa8, 0x88, 0x67, 0x8a, 0x90, - 0x38, 0x17, 0x7b, 0x72, 0x46, 0x62, 0x09, 0x48, 0x8e, 0x19, 0x2c, 0xc7, 0x06, 0xe2, 0x7a, 0xa6, - 0x08, 0x89, 0x71, 0xb1, 0x15, 0x64, 0xe6, 0xe5, 0xa5, 0xa6, 0x48, 0xb0, 0x28, 0x30, 0x6a, 0x70, - 0x04, 0x41, 0x79, 0x42, 0x16, 0x5c, 0x3c, 0x30, 0xf3, 0x4a, 0x2a, 0x0b, 0x52, 0x25, 0x58, 0x15, - 0x18, 0x35, 0xf8, 0x8c, 0x44, 0xf5, 0x60, 0x4e, 0xd4, 0x83, 0x3a, 0x27, 0xa4, 0xb2, 0x20, 0x35, - 0x88, 0x3b, 0x17, 0xc1, 0x71, 0xe2, 0x8d, 0xe2, 0xd6, 0xd3, 0xb7, 0x86, 0xa9, 0x4b, 0x62, 0x03, - 0xb3, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x78, 0x7a, 0xb9, 0x5d, 0xf0, 0x00, 0x00, 0x00, +var file_pin_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_pin_message_proto_goTypes = []interface{}{ + (*PinMessage)(nil), // 0: protobuf.PinMessage + (MessageType)(0), // 1: protobuf.MessageType +} +var file_pin_message_proto_depIdxs = []int32{ + 1, // 0: protobuf.PinMessage.message_type:type_name -> protobuf.MessageType + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_pin_message_proto_init() } +func file_pin_message_proto_init() { + if File_pin_message_proto != nil { + return + } + file_enums_proto_init() + if !protoimpl.UnsafeEnabled { + file_pin_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PinMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_pin_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pin_message_proto_goTypes, + DependencyIndexes: file_pin_message_proto_depIdxs, + MessageInfos: file_pin_message_proto_msgTypes, + }.Build() + File_pin_message_proto = out.File + file_pin_message_proto_rawDesc = nil + file_pin_message_proto_goTypes = nil + file_pin_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.pb.go index c5147ffc..24e2958c 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.pb.go @@ -1,567 +1,1809 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: profile_showcase.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +type ProfileShowcaseVisibility int32 + +const ( + ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE ProfileShowcaseVisibility = 0 + ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_IDVERIFIED_CONTACTS ProfileShowcaseVisibility = 1 + ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_CONTACTS ProfileShowcaseVisibility = 2 + ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_EVERYONE ProfileShowcaseVisibility = 3 +) + +// Enum value maps for ProfileShowcaseVisibility. +var ( + ProfileShowcaseVisibility_name = map[int32]string{ + 0: "PROFILE_SHOWCASE_VISIBILITY_NO_ONE", + 1: "PROFILE_SHOWCASE_VISIBILITY_IDVERIFIED_CONTACTS", + 2: "PROFILE_SHOWCASE_VISIBILITY_CONTACTS", + 3: "PROFILE_SHOWCASE_VISIBILITY_EVERYONE", + } + ProfileShowcaseVisibility_value = map[string]int32{ + "PROFILE_SHOWCASE_VISIBILITY_NO_ONE": 0, + "PROFILE_SHOWCASE_VISIBILITY_IDVERIFIED_CONTACTS": 1, + "PROFILE_SHOWCASE_VISIBILITY_CONTACTS": 2, + "PROFILE_SHOWCASE_VISIBILITY_EVERYONE": 3, + } +) + +func (x ProfileShowcaseVisibility) Enum() *ProfileShowcaseVisibility { + p := new(ProfileShowcaseVisibility) + *p = x + return p +} + +func (x ProfileShowcaseVisibility) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProfileShowcaseVisibility) Descriptor() protoreflect.EnumDescriptor { + return file_profile_showcase_proto_enumTypes[0].Descriptor() +} + +func (ProfileShowcaseVisibility) Type() protoreflect.EnumType { + return &file_profile_showcase_proto_enumTypes[0] +} + +func (x ProfileShowcaseVisibility) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProfileShowcaseVisibility.Descriptor instead. +func (ProfileShowcaseVisibility) EnumDescriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{0} +} type ProfileShowcaseCommunity struct { - CommunityId string `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId string `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` + Grant []byte `protobuf:"bytes,3,opt,name=grant,proto3" json:"grant,omitempty"` } -func (m *ProfileShowcaseCommunity) Reset() { *m = ProfileShowcaseCommunity{} } -func (m *ProfileShowcaseCommunity) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseCommunity) ProtoMessage() {} +func (x *ProfileShowcaseCommunity) Reset() { + *x = ProfileShowcaseCommunity{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseCommunity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseCommunity) ProtoMessage() {} + +func (x *ProfileShowcaseCommunity) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseCommunity.ProtoReflect.Descriptor instead. func (*ProfileShowcaseCommunity) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{0} + return file_profile_showcase_proto_rawDescGZIP(), []int{0} } -func (m *ProfileShowcaseCommunity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseCommunity.Unmarshal(m, b) -} -func (m *ProfileShowcaseCommunity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseCommunity.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseCommunity) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseCommunity.Merge(m, src) -} -func (m *ProfileShowcaseCommunity) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseCommunity.Size(m) -} -func (m *ProfileShowcaseCommunity) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseCommunity.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseCommunity proto.InternalMessageInfo - -func (m *ProfileShowcaseCommunity) GetCommunityId() string { - if m != nil { - return m.CommunityId +func (x *ProfileShowcaseCommunity) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *ProfileShowcaseCommunity) GetOrder() uint32 { - if m != nil { - return m.Order +func (x *ProfileShowcaseCommunity) GetOrder() uint32 { + if x != nil { + return x.Order } return 0 } +func (x *ProfileShowcaseCommunity) GetGrant() []byte { + if x != nil { + return x.Grant + } + return nil +} + type ProfileShowcaseAccount struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - ColorId string `protobuf:"bytes,3,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` - Emoji string `protobuf:"bytes,4,opt,name=emoji,proto3" json:"emoji,omitempty"` - Order uint32 `protobuf:"varint,5,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ColorId string `protobuf:"bytes,3,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` + Emoji string `protobuf:"bytes,4,opt,name=emoji,proto3" json:"emoji,omitempty"` + Order uint32 `protobuf:"varint,5,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ProfileShowcaseAccount) Reset() { *m = ProfileShowcaseAccount{} } -func (m *ProfileShowcaseAccount) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseAccount) ProtoMessage() {} +func (x *ProfileShowcaseAccount) Reset() { + *x = ProfileShowcaseAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseAccount) ProtoMessage() {} + +func (x *ProfileShowcaseAccount) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseAccount.ProtoReflect.Descriptor instead. func (*ProfileShowcaseAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{1} + return file_profile_showcase_proto_rawDescGZIP(), []int{1} } -func (m *ProfileShowcaseAccount) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseAccount.Unmarshal(m, b) -} -func (m *ProfileShowcaseAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseAccount.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseAccount.Merge(m, src) -} -func (m *ProfileShowcaseAccount) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseAccount.Size(m) -} -func (m *ProfileShowcaseAccount) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseAccount proto.InternalMessageInfo - -func (m *ProfileShowcaseAccount) GetAddress() string { - if m != nil { - return m.Address +func (x *ProfileShowcaseAccount) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *ProfileShowcaseAccount) GetName() string { - if m != nil { - return m.Name +func (x *ProfileShowcaseAccount) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ProfileShowcaseAccount) GetColorId() string { - if m != nil { - return m.ColorId +func (x *ProfileShowcaseAccount) GetColorId() string { + if x != nil { + return x.ColorId } return "" } -func (m *ProfileShowcaseAccount) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *ProfileShowcaseAccount) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *ProfileShowcaseAccount) GetOrder() uint32 { - if m != nil { - return m.Order +func (x *ProfileShowcaseAccount) GetOrder() uint32 { + if x != nil { + return x.Order } return 0 } type ProfileShowcaseCollectible struct { - Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` // Deprecated: Do not use. - Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` - ContractAddress string `protobuf:"bytes,3,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` - CommunityId string `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - ChainId uint64 `protobuf:"varint,5,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - TokenId string `protobuf:"bytes,6,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` - AccountAddress string `protobuf:"bytes,7,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Deprecated: Marked as deprecated in profile_showcase.proto. + Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` + Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` + ContractAddress string `protobuf:"bytes,3,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + CommunityId string `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + ChainId uint64 `protobuf:"varint,5,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + TokenId string `protobuf:"bytes,6,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + AccountAddress string `protobuf:"bytes,7,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` } -func (m *ProfileShowcaseCollectible) Reset() { *m = ProfileShowcaseCollectible{} } -func (m *ProfileShowcaseCollectible) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseCollectible) ProtoMessage() {} +func (x *ProfileShowcaseCollectible) Reset() { + *x = ProfileShowcaseCollectible{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseCollectible) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseCollectible) ProtoMessage() {} + +func (x *ProfileShowcaseCollectible) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseCollectible.ProtoReflect.Descriptor instead. func (*ProfileShowcaseCollectible) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{2} + return file_profile_showcase_proto_rawDescGZIP(), []int{2} } -func (m *ProfileShowcaseCollectible) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseCollectible.Unmarshal(m, b) -} -func (m *ProfileShowcaseCollectible) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseCollectible.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseCollectible) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseCollectible.Merge(m, src) -} -func (m *ProfileShowcaseCollectible) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseCollectible.Size(m) -} -func (m *ProfileShowcaseCollectible) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseCollectible.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseCollectible proto.InternalMessageInfo - -// Deprecated: Do not use. -func (m *ProfileShowcaseCollectible) GetUid() string { - if m != nil { - return m.Uid +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseCollectible) GetUid() string { + if x != nil { + return x.Uid } return "" } -func (m *ProfileShowcaseCollectible) GetOrder() uint32 { - if m != nil { - return m.Order +func (x *ProfileShowcaseCollectible) GetOrder() uint32 { + if x != nil { + return x.Order } return 0 } -func (m *ProfileShowcaseCollectible) GetContractAddress() string { - if m != nil { - return m.ContractAddress +func (x *ProfileShowcaseCollectible) GetContractAddress() string { + if x != nil { + return x.ContractAddress } return "" } -func (m *ProfileShowcaseCollectible) GetCommunityId() string { - if m != nil { - return m.CommunityId +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseCollectible) GetCommunityId() string { + if x != nil { + return x.CommunityId } return "" } -func (m *ProfileShowcaseCollectible) GetChainId() uint64 { - if m != nil { - return m.ChainId +func (x *ProfileShowcaseCollectible) GetChainId() uint64 { + if x != nil { + return x.ChainId } return 0 } -func (m *ProfileShowcaseCollectible) GetTokenId() string { - if m != nil { - return m.TokenId +func (x *ProfileShowcaseCollectible) GetTokenId() string { + if x != nil { + return x.TokenId } return "" } -func (m *ProfileShowcaseCollectible) GetAccountAddress() string { - if m != nil { - return m.AccountAddress +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseCollectible) GetAccountAddress() string { + if x != nil { + return x.AccountAddress } return "" } type ProfileShowcaseVerifiedToken struct { - Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` - Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` + Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` } -func (m *ProfileShowcaseVerifiedToken) Reset() { *m = ProfileShowcaseVerifiedToken{} } -func (m *ProfileShowcaseVerifiedToken) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseVerifiedToken) ProtoMessage() {} +func (x *ProfileShowcaseVerifiedToken) Reset() { + *x = ProfileShowcaseVerifiedToken{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseVerifiedToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseVerifiedToken) ProtoMessage() {} + +func (x *ProfileShowcaseVerifiedToken) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseVerifiedToken.ProtoReflect.Descriptor instead. func (*ProfileShowcaseVerifiedToken) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{3} + return file_profile_showcase_proto_rawDescGZIP(), []int{3} } -func (m *ProfileShowcaseVerifiedToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseVerifiedToken.Unmarshal(m, b) -} -func (m *ProfileShowcaseVerifiedToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseVerifiedToken.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseVerifiedToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseVerifiedToken.Merge(m, src) -} -func (m *ProfileShowcaseVerifiedToken) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseVerifiedToken.Size(m) -} -func (m *ProfileShowcaseVerifiedToken) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseVerifiedToken.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseVerifiedToken proto.InternalMessageInfo - -func (m *ProfileShowcaseVerifiedToken) GetSymbol() string { - if m != nil { - return m.Symbol +func (x *ProfileShowcaseVerifiedToken) GetSymbol() string { + if x != nil { + return x.Symbol } return "" } -func (m *ProfileShowcaseVerifiedToken) GetOrder() uint32 { - if m != nil { - return m.Order +func (x *ProfileShowcaseVerifiedToken) GetOrder() uint32 { + if x != nil { + return x.Order } return 0 } type ProfileShowcaseUnverifiedToken struct { - ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` - Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` - ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - CommunityId string `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` + ChainId uint64 `protobuf:"varint,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + CommunityId string `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` } -func (m *ProfileShowcaseUnverifiedToken) Reset() { *m = ProfileShowcaseUnverifiedToken{} } -func (m *ProfileShowcaseUnverifiedToken) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseUnverifiedToken) ProtoMessage() {} +func (x *ProfileShowcaseUnverifiedToken) Reset() { + *x = ProfileShowcaseUnverifiedToken{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseUnverifiedToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseUnverifiedToken) ProtoMessage() {} + +func (x *ProfileShowcaseUnverifiedToken) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseUnverifiedToken.ProtoReflect.Descriptor instead. func (*ProfileShowcaseUnverifiedToken) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{4} + return file_profile_showcase_proto_rawDescGZIP(), []int{4} } -func (m *ProfileShowcaseUnverifiedToken) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseUnverifiedToken.Unmarshal(m, b) -} -func (m *ProfileShowcaseUnverifiedToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseUnverifiedToken.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseUnverifiedToken) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseUnverifiedToken.Merge(m, src) -} -func (m *ProfileShowcaseUnverifiedToken) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseUnverifiedToken.Size(m) -} -func (m *ProfileShowcaseUnverifiedToken) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseUnverifiedToken.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseUnverifiedToken proto.InternalMessageInfo - -func (m *ProfileShowcaseUnverifiedToken) GetContractAddress() string { - if m != nil { - return m.ContractAddress +func (x *ProfileShowcaseUnverifiedToken) GetContractAddress() string { + if x != nil { + return x.ContractAddress } return "" } -func (m *ProfileShowcaseUnverifiedToken) GetOrder() uint32 { - if m != nil { - return m.Order +func (x *ProfileShowcaseUnverifiedToken) GetOrder() uint32 { + if x != nil { + return x.Order } return 0 } -func (m *ProfileShowcaseUnverifiedToken) GetChainId() uint64 { - if m != nil { - return m.ChainId +func (x *ProfileShowcaseUnverifiedToken) GetChainId() uint64 { + if x != nil { + return x.ChainId } return 0 } -func (m *ProfileShowcaseUnverifiedToken) GetCommunityId() string { - if m != nil { - return m.CommunityId +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseUnverifiedToken) GetCommunityId() string { + if x != nil { + return x.CommunityId + } + return "" +} + +type ProfileShowcaseSocialLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Order uint32 `protobuf:"varint,2,opt,name=order,proto3" json:"order,omitempty"` + Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"` +} + +func (x *ProfileShowcaseSocialLink) Reset() { + *x = ProfileShowcaseSocialLink{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseSocialLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseSocialLink) ProtoMessage() {} + +func (x *ProfileShowcaseSocialLink) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseSocialLink.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseSocialLink) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{5} +} + +func (x *ProfileShowcaseSocialLink) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ProfileShowcaseSocialLink) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +func (x *ProfileShowcaseSocialLink) GetText() string { + if x != nil { + return x.Text } return "" } type ProfileShowcaseEntries struct { - Communities []*ProfileShowcaseCommunity `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"` - Accounts []*ProfileShowcaseAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` - Collectibles []*ProfileShowcaseCollectible `protobuf:"bytes,3,rep,name=collectibles,proto3" json:"collectibles,omitempty"` - VerifiedTokens []*ProfileShowcaseVerifiedToken `protobuf:"bytes,4,rep,name=verifiedTokens,proto3" json:"verifiedTokens,omitempty"` - UnverifiedTokens []*ProfileShowcaseUnverifiedToken `protobuf:"bytes,5,rep,name=unverifiedTokens,proto3" json:"unverifiedTokens,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Communities []*ProfileShowcaseCommunity `protobuf:"bytes,1,rep,name=communities,proto3" json:"communities,omitempty"` + Accounts []*ProfileShowcaseAccount `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` + Collectibles []*ProfileShowcaseCollectible `protobuf:"bytes,3,rep,name=collectibles,proto3" json:"collectibles,omitempty"` + VerifiedTokens []*ProfileShowcaseVerifiedToken `protobuf:"bytes,4,rep,name=verified_tokens,json=verifiedTokens,proto3" json:"verified_tokens,omitempty"` + UnverifiedTokens []*ProfileShowcaseUnverifiedToken `protobuf:"bytes,5,rep,name=unverified_tokens,json=unverifiedTokens,proto3" json:"unverified_tokens,omitempty"` + SocialLinks []*ProfileShowcaseSocialLink `protobuf:"bytes,6,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` } -func (m *ProfileShowcaseEntries) Reset() { *m = ProfileShowcaseEntries{} } -func (m *ProfileShowcaseEntries) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseEntries) ProtoMessage() {} +func (x *ProfileShowcaseEntries) Reset() { + *x = ProfileShowcaseEntries{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseEntries) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseEntries) ProtoMessage() {} + +func (x *ProfileShowcaseEntries) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseEntries.ProtoReflect.Descriptor instead. func (*ProfileShowcaseEntries) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{5} + return file_profile_showcase_proto_rawDescGZIP(), []int{6} } -func (m *ProfileShowcaseEntries) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseEntries.Unmarshal(m, b) -} -func (m *ProfileShowcaseEntries) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseEntries.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseEntries) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseEntries.Merge(m, src) -} -func (m *ProfileShowcaseEntries) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseEntries.Size(m) -} -func (m *ProfileShowcaseEntries) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseEntries.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseEntries proto.InternalMessageInfo - -func (m *ProfileShowcaseEntries) GetCommunities() []*ProfileShowcaseCommunity { - if m != nil { - return m.Communities +func (x *ProfileShowcaseEntries) GetCommunities() []*ProfileShowcaseCommunity { + if x != nil { + return x.Communities } return nil } -func (m *ProfileShowcaseEntries) GetAccounts() []*ProfileShowcaseAccount { - if m != nil { - return m.Accounts +func (x *ProfileShowcaseEntries) GetAccounts() []*ProfileShowcaseAccount { + if x != nil { + return x.Accounts } return nil } -func (m *ProfileShowcaseEntries) GetCollectibles() []*ProfileShowcaseCollectible { - if m != nil { - return m.Collectibles +func (x *ProfileShowcaseEntries) GetCollectibles() []*ProfileShowcaseCollectible { + if x != nil { + return x.Collectibles } return nil } -func (m *ProfileShowcaseEntries) GetVerifiedTokens() []*ProfileShowcaseVerifiedToken { - if m != nil { - return m.VerifiedTokens +func (x *ProfileShowcaseEntries) GetVerifiedTokens() []*ProfileShowcaseVerifiedToken { + if x != nil { + return x.VerifiedTokens } return nil } -func (m *ProfileShowcaseEntries) GetUnverifiedTokens() []*ProfileShowcaseUnverifiedToken { - if m != nil { - return m.UnverifiedTokens +func (x *ProfileShowcaseEntries) GetUnverifiedTokens() []*ProfileShowcaseUnverifiedToken { + if x != nil { + return x.UnverifiedTokens + } + return nil +} + +func (x *ProfileShowcaseEntries) GetSocialLinks() []*ProfileShowcaseSocialLink { + if x != nil { + return x.SocialLinks } return nil } type ProfileShowcaseEntriesEncrypted struct { - EncryptedEntries []byte `protobuf:"bytes,1,opt,name=encrypted_entries,json=encryptedEntries,proto3" json:"encrypted_entries,omitempty"` - EncryptionKeys [][]byte `protobuf:"bytes,2,rep,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EncryptedEntries []byte `protobuf:"bytes,1,opt,name=encrypted_entries,json=encryptedEntries,proto3" json:"encrypted_entries,omitempty"` + EncryptionKeys [][]byte `protobuf:"bytes,2,rep,name=encryption_keys,json=encryptionKeys,proto3" json:"encryption_keys,omitempty"` } -func (m *ProfileShowcaseEntriesEncrypted) Reset() { *m = ProfileShowcaseEntriesEncrypted{} } -func (m *ProfileShowcaseEntriesEncrypted) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcaseEntriesEncrypted) ProtoMessage() {} +func (x *ProfileShowcaseEntriesEncrypted) Reset() { + *x = ProfileShowcaseEntriesEncrypted{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseEntriesEncrypted) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseEntriesEncrypted) ProtoMessage() {} + +func (x *ProfileShowcaseEntriesEncrypted) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseEntriesEncrypted.ProtoReflect.Descriptor instead. func (*ProfileShowcaseEntriesEncrypted) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{6} + return file_profile_showcase_proto_rawDescGZIP(), []int{7} } -func (m *ProfileShowcaseEntriesEncrypted) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcaseEntriesEncrypted.Unmarshal(m, b) -} -func (m *ProfileShowcaseEntriesEncrypted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcaseEntriesEncrypted.Marshal(b, m, deterministic) -} -func (m *ProfileShowcaseEntriesEncrypted) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcaseEntriesEncrypted.Merge(m, src) -} -func (m *ProfileShowcaseEntriesEncrypted) XXX_Size() int { - return xxx_messageInfo_ProfileShowcaseEntriesEncrypted.Size(m) -} -func (m *ProfileShowcaseEntriesEncrypted) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcaseEntriesEncrypted.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcaseEntriesEncrypted proto.InternalMessageInfo - -func (m *ProfileShowcaseEntriesEncrypted) GetEncryptedEntries() []byte { - if m != nil { - return m.EncryptedEntries +func (x *ProfileShowcaseEntriesEncrypted) GetEncryptedEntries() []byte { + if x != nil { + return x.EncryptedEntries } return nil } -func (m *ProfileShowcaseEntriesEncrypted) GetEncryptionKeys() [][]byte { - if m != nil { - return m.EncryptionKeys +func (x *ProfileShowcaseEntriesEncrypted) GetEncryptionKeys() [][]byte { + if x != nil { + return x.EncryptionKeys } return nil } type ProfileShowcase struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + ForEveryone *ProfileShowcaseEntries `protobuf:"bytes,1,opt,name=for_everyone,json=forEveryone,proto3" json:"for_everyone,omitempty"` ForContacts *ProfileShowcaseEntriesEncrypted `protobuf:"bytes,2,opt,name=for_contacts,json=forContacts,proto3" json:"for_contacts,omitempty"` ForIdVerifiedContacts *ProfileShowcaseEntriesEncrypted `protobuf:"bytes,3,opt,name=for_id_verified_contacts,json=forIdVerifiedContacts,proto3" json:"for_id_verified_contacts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ProfileShowcase) Reset() { *m = ProfileShowcase{} } -func (m *ProfileShowcase) String() string { return proto.CompactTextString(m) } -func (*ProfileShowcase) ProtoMessage() {} +func (x *ProfileShowcase) Reset() { + *x = ProfileShowcase{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcase) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcase) ProtoMessage() {} + +func (x *ProfileShowcase) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcase.ProtoReflect.Descriptor instead. func (*ProfileShowcase) Descriptor() ([]byte, []int) { - return fileDescriptor_5bcd51b424a05798, []int{7} + return file_profile_showcase_proto_rawDescGZIP(), []int{8} } -func (m *ProfileShowcase) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ProfileShowcase.Unmarshal(m, b) -} -func (m *ProfileShowcase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ProfileShowcase.Marshal(b, m, deterministic) -} -func (m *ProfileShowcase) XXX_Merge(src proto.Message) { - xxx_messageInfo_ProfileShowcase.Merge(m, src) -} -func (m *ProfileShowcase) XXX_Size() int { - return xxx_messageInfo_ProfileShowcase.Size(m) -} -func (m *ProfileShowcase) XXX_DiscardUnknown() { - xxx_messageInfo_ProfileShowcase.DiscardUnknown(m) -} - -var xxx_messageInfo_ProfileShowcase proto.InternalMessageInfo - -func (m *ProfileShowcase) GetForEveryone() *ProfileShowcaseEntries { - if m != nil { - return m.ForEveryone +func (x *ProfileShowcase) GetForEveryone() *ProfileShowcaseEntries { + if x != nil { + return x.ForEveryone } return nil } -func (m *ProfileShowcase) GetForContacts() *ProfileShowcaseEntriesEncrypted { - if m != nil { - return m.ForContacts +func (x *ProfileShowcase) GetForContacts() *ProfileShowcaseEntriesEncrypted { + if x != nil { + return x.ForContacts } return nil } -func (m *ProfileShowcase) GetForIdVerifiedContacts() *ProfileShowcaseEntriesEncrypted { - if m != nil { - return m.ForIdVerifiedContacts +func (x *ProfileShowcase) GetForIdVerifiedContacts() *ProfileShowcaseEntriesEncrypted { + if x != nil { + return x.ForIdVerifiedContacts } return nil } -func init() { - proto.RegisterType((*ProfileShowcaseCommunity)(nil), "protobuf.ProfileShowcaseCommunity") - proto.RegisterType((*ProfileShowcaseAccount)(nil), "protobuf.ProfileShowcaseAccount") - proto.RegisterType((*ProfileShowcaseCollectible)(nil), "protobuf.ProfileShowcaseCollectible") - proto.RegisterType((*ProfileShowcaseVerifiedToken)(nil), "protobuf.ProfileShowcaseVerifiedToken") - proto.RegisterType((*ProfileShowcaseUnverifiedToken)(nil), "protobuf.ProfileShowcaseUnverifiedToken") - proto.RegisterType((*ProfileShowcaseEntries)(nil), "protobuf.ProfileShowcaseEntries") - proto.RegisterType((*ProfileShowcaseEntriesEncrypted)(nil), "protobuf.ProfileShowcaseEntriesEncrypted") - proto.RegisterType((*ProfileShowcase)(nil), "protobuf.ProfileShowcase") +type ProfileShowcaseCommunityPreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommunityId string `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,2,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` + Order uint32 `protobuf:"varint,3,opt,name=order,proto3" json:"order,omitempty"` } -func init() { - proto.RegisterFile("profile_showcase.proto", fileDescriptor_5bcd51b424a05798) +func (x *ProfileShowcaseCommunityPreference) Reset() { + *x = ProfileShowcaseCommunityPreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -var fileDescriptor_5bcd51b424a05798 = []byte{ - // 596 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xc7, 0xe5, 0x38, 0x6d, 0xd3, 0x49, 0x9a, 0x84, 0x55, 0x89, 0x0c, 0x42, 0x10, 0x2c, 0x44, - 0x53, 0x21, 0x05, 0x09, 0x8e, 0x70, 0x69, 0x43, 0x24, 0x2a, 0x2a, 0x84, 0xb6, 0x85, 0x03, 0x17, - 0xcb, 0xb1, 0xd7, 0xea, 0x52, 0x67, 0x37, 0x5a, 0x3b, 0xad, 0xfc, 0x06, 0x1c, 0xe0, 0x19, 0x78, - 0x4a, 0xee, 0x68, 0xbf, 0x9c, 0xc4, 0x49, 0x5a, 0x71, 0xb2, 0x67, 0x77, 0xe6, 0x37, 0x33, 0xff, - 0x19, 0x1b, 0x7a, 0x33, 0xc1, 0x13, 0x9a, 0x92, 0x20, 0xbb, 0xe2, 0xb7, 0x51, 0x98, 0x91, 0xe1, - 0x4c, 0xf0, 0x9c, 0xa3, 0x86, 0x7a, 0x4c, 0xe6, 0x89, 0x7f, 0x01, 0xde, 0x17, 0xed, 0x73, 0x61, - 0x5c, 0x46, 0x7c, 0x3a, 0x9d, 0x33, 0x9a, 0x17, 0xe8, 0x39, 0xb4, 0x22, 0x6b, 0x04, 0x34, 0xf6, - 0x9c, 0xbe, 0x33, 0xd8, 0xc7, 0xcd, 0xf2, 0xec, 0x2c, 0x46, 0x87, 0xb0, 0xc3, 0x45, 0x4c, 0x84, - 0x57, 0xeb, 0x3b, 0x83, 0x03, 0xac, 0x0d, 0xff, 0xb7, 0x03, 0xbd, 0x0a, 0xf5, 0x24, 0x8a, 0xf8, - 0x9c, 0xe5, 0xc8, 0x83, 0xbd, 0x30, 0x8e, 0x05, 0xc9, 0x32, 0x83, 0xb3, 0x26, 0x42, 0x50, 0x67, - 0xe1, 0x94, 0x28, 0xd2, 0x3e, 0x56, 0xef, 0xe8, 0x11, 0x34, 0x22, 0x9e, 0x72, 0x21, 0xb3, 0xbb, - 0xda, 0x5d, 0xd9, 0x3a, 0x33, 0x99, 0xf2, 0x1f, 0xd4, 0xab, 0xab, 0x73, 0x6d, 0x2c, 0xea, 0xd9, - 0x59, 0xae, 0xe7, 0xaf, 0x03, 0x8f, 0xd7, 0xba, 0x4c, 0x53, 0x12, 0xe5, 0x74, 0x92, 0x12, 0x74, - 0x08, 0xee, 0xdc, 0xb6, 0x77, 0x5a, 0xf3, 0x1c, 0x2c, 0xcd, 0xcd, 0xad, 0xa1, 0x63, 0xe8, 0x46, - 0x9c, 0xe5, 0x22, 0x8c, 0xf2, 0xc0, 0x36, 0xa2, 0x2b, 0xeb, 0xd8, 0xf3, 0x13, 0xd3, 0x50, 0x55, - 0xbe, 0xfa, 0xba, 0x7c, 0xb2, 0xbf, 0xab, 0x90, 0x32, 0x79, 0x2d, 0x2b, 0xae, 0xe3, 0x3d, 0x65, - 0xeb, 0xab, 0x9c, 0x5f, 0x13, 0x75, 0xb5, 0xab, 0x5b, 0x57, 0xf6, 0x59, 0x8c, 0x8e, 0xa0, 0x13, - 0x6a, 0x39, 0xcb, 0x12, 0xf6, 0x94, 0x47, 0xdb, 0x1c, 0x9b, 0x0a, 0xfc, 0x73, 0x78, 0x52, 0x69, - 0xfb, 0x1b, 0x11, 0x34, 0xa1, 0x24, 0xbe, 0x94, 0x28, 0xd4, 0x83, 0xdd, 0xac, 0x98, 0x4e, 0x78, - 0x6a, 0x66, 0x61, 0xac, 0x2d, 0x53, 0xfd, 0xe3, 0xc0, 0xd3, 0x0a, 0xee, 0x2b, 0xbb, 0x59, 0x01, - 0x6e, 0x52, 0xc7, 0xd9, 0xac, 0xce, 0x66, 0x79, 0x97, 0x05, 0x71, 0x57, 0x05, 0xb9, 0x5f, 0x4e, - 0xff, 0x97, 0xbb, 0xb6, 0x77, 0x63, 0x96, 0x0b, 0x4a, 0x32, 0xf4, 0x01, 0x4a, 0x4f, 0x4a, 0x64, - 0x51, 0xee, 0xa0, 0xf9, 0xc6, 0x1f, 0xda, 0xef, 0x60, 0xb8, 0xed, 0x23, 0xc0, 0xcb, 0x61, 0xe8, - 0x3d, 0x34, 0x8c, 0xc4, 0x99, 0x57, 0x53, 0x88, 0xfe, 0x56, 0x84, 0xd9, 0x78, 0x5c, 0x46, 0xa0, - 0x8f, 0xb2, 0x83, 0x72, 0xed, 0xe4, 0xde, 0x48, 0xc2, 0x8b, 0x3b, 0x8a, 0x28, 0x9d, 0xf1, 0x4a, - 0x24, 0xfa, 0x0c, 0xed, 0x15, 0xe1, 0x33, 0xaf, 0xae, 0x58, 0x2f, 0xb7, 0xb2, 0x56, 0x06, 0x8f, - 0x2b, 0xd1, 0xe8, 0x12, 0xba, 0x73, 0x56, 0x21, 0xee, 0x28, 0xe2, 0x60, 0x2b, 0xb1, 0x32, 0x7b, - 0xbc, 0x46, 0xf0, 0x6f, 0xe1, 0xd9, 0xe6, 0x69, 0x8c, 0x59, 0x24, 0x8a, 0x59, 0x4e, 0x62, 0xf4, - 0x0a, 0x1e, 0x10, 0x6b, 0x04, 0x44, 0xdf, 0xaa, 0x8d, 0x69, 0xe1, 0x6e, 0x79, 0x61, 0x67, 0x78, - 0x04, 0x1d, 0x73, 0x46, 0x39, 0x0b, 0xae, 0x49, 0xa1, 0x87, 0xd0, 0xc2, 0xed, 0xc5, 0xf1, 0x27, - 0x52, 0x64, 0xfe, 0xcf, 0x1a, 0x74, 0x2a, 0x99, 0xd1, 0x08, 0x5a, 0x09, 0x17, 0x01, 0xb9, 0x21, - 0xa2, 0xe0, 0x8c, 0xa8, 0x24, 0x77, 0x8d, 0xcf, 0x24, 0xc5, 0xcd, 0x84, 0x8b, 0xb1, 0x09, 0x42, - 0xe7, 0x1a, 0x22, 0x77, 0x39, 0x8c, 0xd4, 0x0e, 0x48, 0xc8, 0xf1, 0x7d, 0x90, 0xb2, 0x5f, 0x45, - 0x1b, 0x99, 0x68, 0x34, 0x01, 0x2f, 0x51, 0xff, 0xb6, 0xc0, 0x0a, 0xb7, 0x20, 0xbb, 0xff, 0x4b, - 0x7e, 0x98, 0xc8, 0xdf, 0xa2, 0x1d, 0xb3, 0xcd, 0x71, 0x7a, 0xf0, 0xbd, 0x39, 0x7c, 0xfd, 0xce, - 0x52, 0x26, 0xbb, 0xea, 0xed, 0xed, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa2, 0x77, 0xf8, 0xf3, - 0x19, 0x06, 0x00, 0x00, +func (x *ProfileShowcaseCommunityPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseCommunityPreference) ProtoMessage() {} + +func (x *ProfileShowcaseCommunityPreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseCommunityPreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseCommunityPreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{9} +} + +func (x *ProfileShowcaseCommunityPreference) GetCommunityId() string { + if x != nil { + return x.CommunityId + } + return "" +} + +func (x *ProfileShowcaseCommunityPreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +func (x *ProfileShowcaseCommunityPreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +type ProfileShowcaseAccountPreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + ColorId string `protobuf:"bytes,3,opt,name=color_id,json=colorId,proto3" json:"color_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + Emoji string `protobuf:"bytes,4,opt,name=emoji,proto3" json:"emoji,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,5,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` + Order uint32 `protobuf:"varint,6,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *ProfileShowcaseAccountPreference) Reset() { + *x = ProfileShowcaseAccountPreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseAccountPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseAccountPreference) ProtoMessage() {} + +func (x *ProfileShowcaseAccountPreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseAccountPreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseAccountPreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{10} +} + +func (x *ProfileShowcaseAccountPreference) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseAccountPreference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseAccountPreference) GetColorId() string { + if x != nil { + return x.ColorId + } + return "" +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseAccountPreference) GetEmoji() string { + if x != nil { + return x.Emoji + } + return "" +} + +func (x *ProfileShowcaseAccountPreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +func (x *ProfileShowcaseAccountPreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +type ProfileShowcaseCollectiblePreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + ChainId uint64 `protobuf:"varint,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + TokenId string `protobuf:"bytes,3,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + CommunityId string `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + AccountAddress string `protobuf:"bytes,5,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,6,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` + Order uint32 `protobuf:"varint,7,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *ProfileShowcaseCollectiblePreference) Reset() { + *x = ProfileShowcaseCollectiblePreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseCollectiblePreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseCollectiblePreference) ProtoMessage() {} + +func (x *ProfileShowcaseCollectiblePreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseCollectiblePreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseCollectiblePreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{11} +} + +func (x *ProfileShowcaseCollectiblePreference) GetContractAddress() string { + if x != nil { + return x.ContractAddress + } + return "" +} + +func (x *ProfileShowcaseCollectiblePreference) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +func (x *ProfileShowcaseCollectiblePreference) GetTokenId() string { + if x != nil { + return x.TokenId + } + return "" +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseCollectiblePreference) GetCommunityId() string { + if x != nil { + return x.CommunityId + } + return "" +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseCollectiblePreference) GetAccountAddress() string { + if x != nil { + return x.AccountAddress + } + return "" +} + +func (x *ProfileShowcaseCollectiblePreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +func (x *ProfileShowcaseCollectiblePreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +type ProfileShowcaseVerifiedTokenPreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,2,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` + Order uint32 `protobuf:"varint,3,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *ProfileShowcaseVerifiedTokenPreference) Reset() { + *x = ProfileShowcaseVerifiedTokenPreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseVerifiedTokenPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseVerifiedTokenPreference) ProtoMessage() {} + +func (x *ProfileShowcaseVerifiedTokenPreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseVerifiedTokenPreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseVerifiedTokenPreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{12} +} + +func (x *ProfileShowcaseVerifiedTokenPreference) GetSymbol() string { + if x != nil { + return x.Symbol + } + return "" +} + +func (x *ProfileShowcaseVerifiedTokenPreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +func (x *ProfileShowcaseVerifiedTokenPreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +type ProfileShowcaseUnverifiedTokenPreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + ChainId uint64 `protobuf:"varint,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Deprecated: Marked as deprecated in profile_showcase.proto. + CommunityId string `protobuf:"bytes,3,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,4,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` + Order uint32 `protobuf:"varint,5,opt,name=order,proto3" json:"order,omitempty"` +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) Reset() { + *x = ProfileShowcaseUnverifiedTokenPreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseUnverifiedTokenPreference) ProtoMessage() {} + +func (x *ProfileShowcaseUnverifiedTokenPreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseUnverifiedTokenPreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseUnverifiedTokenPreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{13} +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) GetContractAddress() string { + if x != nil { + return x.ContractAddress + } + return "" +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +// Deprecated: Marked as deprecated in profile_showcase.proto. +func (x *ProfileShowcaseUnverifiedTokenPreference) GetCommunityId() string { + if x != nil { + return x.CommunityId + } + return "" +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +func (x *ProfileShowcaseUnverifiedTokenPreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +type ProfileShowcaseSocialLinkPreference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + Order uint32 `protobuf:"varint,3,opt,name=order,proto3" json:"order,omitempty"` + ShowcaseVisibility ProfileShowcaseVisibility `protobuf:"varint,4,opt,name=showcase_visibility,json=showcaseVisibility,proto3,enum=protobuf.ProfileShowcaseVisibility" json:"showcase_visibility,omitempty"` +} + +func (x *ProfileShowcaseSocialLinkPreference) Reset() { + *x = ProfileShowcaseSocialLinkPreference{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProfileShowcaseSocialLinkPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProfileShowcaseSocialLinkPreference) ProtoMessage() {} + +func (x *ProfileShowcaseSocialLinkPreference) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProfileShowcaseSocialLinkPreference.ProtoReflect.Descriptor instead. +func (*ProfileShowcaseSocialLinkPreference) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{14} +} + +func (x *ProfileShowcaseSocialLinkPreference) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ProfileShowcaseSocialLinkPreference) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *ProfileShowcaseSocialLinkPreference) GetOrder() uint32 { + if x != nil { + return x.Order + } + return 0 +} + +func (x *ProfileShowcaseSocialLinkPreference) GetShowcaseVisibility() ProfileShowcaseVisibility { + if x != nil { + return x.ShowcaseVisibility + } + return ProfileShowcaseVisibility_PROFILE_SHOWCASE_VISIBILITY_NO_ONE +} + +type SyncProfileShowcasePreferences struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + Communities []*ProfileShowcaseCommunityPreference `protobuf:"bytes,2,rep,name=communities,proto3" json:"communities,omitempty"` + Accounts []*ProfileShowcaseAccountPreference `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty"` + Collectibles []*ProfileShowcaseCollectiblePreference `protobuf:"bytes,4,rep,name=collectibles,proto3" json:"collectibles,omitempty"` + VerifiedTokens []*ProfileShowcaseVerifiedTokenPreference `protobuf:"bytes,5,rep,name=verified_tokens,json=verifiedTokens,proto3" json:"verified_tokens,omitempty"` + UnverifiedTokens []*ProfileShowcaseUnverifiedTokenPreference `protobuf:"bytes,6,rep,name=unverified_tokens,json=unverifiedTokens,proto3" json:"unverified_tokens,omitempty"` + SocialLinks []*ProfileShowcaseSocialLinkPreference `protobuf:"bytes,7,rep,name=social_links,json=socialLinks,proto3" json:"social_links,omitempty"` +} + +func (x *SyncProfileShowcasePreferences) Reset() { + *x = SyncProfileShowcasePreferences{} + if protoimpl.UnsafeEnabled { + mi := &file_profile_showcase_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncProfileShowcasePreferences) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProfileShowcasePreferences) ProtoMessage() {} + +func (x *SyncProfileShowcasePreferences) ProtoReflect() protoreflect.Message { + mi := &file_profile_showcase_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProfileShowcasePreferences.ProtoReflect.Descriptor instead. +func (*SyncProfileShowcasePreferences) Descriptor() ([]byte, []int) { + return file_profile_showcase_proto_rawDescGZIP(), []int{15} +} + +func (x *SyncProfileShowcasePreferences) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +func (x *SyncProfileShowcasePreferences) GetCommunities() []*ProfileShowcaseCommunityPreference { + if x != nil { + return x.Communities + } + return nil +} + +func (x *SyncProfileShowcasePreferences) GetAccounts() []*ProfileShowcaseAccountPreference { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *SyncProfileShowcasePreferences) GetCollectibles() []*ProfileShowcaseCollectiblePreference { + if x != nil { + return x.Collectibles + } + return nil +} + +func (x *SyncProfileShowcasePreferences) GetVerifiedTokens() []*ProfileShowcaseVerifiedTokenPreference { + if x != nil { + return x.VerifiedTokens + } + return nil +} + +func (x *SyncProfileShowcasePreferences) GetUnverifiedTokens() []*ProfileShowcaseUnverifiedTokenPreference { + if x != nil { + return x.UnverifiedTokens + } + return nil +} + +func (x *SyncProfileShowcasePreferences) GetSocialLinks() []*ProfileShowcaseSocialLinkPreference { + if x != nil { + return x.SocialLinks + } + return nil +} + +var File_profile_showcase_proto protoreflect.FileDescriptor + +var file_profile_showcase_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x22, 0x69, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x22, 0x8d, 0x01, + 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xfd, 0x01, + 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x03, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, + 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x4c, 0x0a, + 0x1c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x1e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x55, + 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, + 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x22, 0x57, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0xd6, 0x03, 0x0a, 0x16, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x08, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, + 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x62, 0x6c, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x11, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x10, 0x75, 0x6e, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x22, 0x77, 0x0a, 0x1f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x88, 0x02, 0x0a, + 0x0f, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x72, 0x79, 0x6f, 0x6e, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x45, 0x76, 0x65, + 0x72, 0x79, 0x6f, 0x6e, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, + 0x52, 0x15, 0x66, 0x6f, 0x72, 0x49, 0x64, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x22, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, + 0x64, 0x12, 0x54, 0x0a, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xf9, 0x01, + 0x0a, 0x20, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x54, 0x0a, + 0x13, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x12, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xc7, 0x02, 0x0a, 0x24, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x26, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x54, 0x0a, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x22, 0x83, 0x02, 0x0a, 0x28, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x13, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xb7, 0x01, 0x0a, 0x23, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x53, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x13, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x22, 0xb0, 0x04, 0x0a, 0x1e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4e, 0x0a, 0x0b, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x75, + 0x6e, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x0e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x11, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x10, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x50, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2a, 0xcc, 0x01, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, + 0x48, 0x4f, 0x57, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x5f, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x2f, 0x50, + 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x43, 0x41, 0x53, 0x45, 0x5f, + 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x44, 0x56, 0x45, 0x52, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x53, 0x10, 0x01, + 0x12, 0x28, 0x0a, 0x24, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x48, 0x4f, 0x57, + 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x43, 0x54, 0x53, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x52, + 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x56, + 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, + 0x4e, 0x45, 0x10, 0x03, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_profile_showcase_proto_rawDescOnce sync.Once + file_profile_showcase_proto_rawDescData = file_profile_showcase_proto_rawDesc +) + +func file_profile_showcase_proto_rawDescGZIP() []byte { + file_profile_showcase_proto_rawDescOnce.Do(func() { + file_profile_showcase_proto_rawDescData = protoimpl.X.CompressGZIP(file_profile_showcase_proto_rawDescData) + }) + return file_profile_showcase_proto_rawDescData +} + +var file_profile_showcase_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_profile_showcase_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_profile_showcase_proto_goTypes = []interface{}{ + (ProfileShowcaseVisibility)(0), // 0: protobuf.ProfileShowcaseVisibility + (*ProfileShowcaseCommunity)(nil), // 1: protobuf.ProfileShowcaseCommunity + (*ProfileShowcaseAccount)(nil), // 2: protobuf.ProfileShowcaseAccount + (*ProfileShowcaseCollectible)(nil), // 3: protobuf.ProfileShowcaseCollectible + (*ProfileShowcaseVerifiedToken)(nil), // 4: protobuf.ProfileShowcaseVerifiedToken + (*ProfileShowcaseUnverifiedToken)(nil), // 5: protobuf.ProfileShowcaseUnverifiedToken + (*ProfileShowcaseSocialLink)(nil), // 6: protobuf.ProfileShowcaseSocialLink + (*ProfileShowcaseEntries)(nil), // 7: protobuf.ProfileShowcaseEntries + (*ProfileShowcaseEntriesEncrypted)(nil), // 8: protobuf.ProfileShowcaseEntriesEncrypted + (*ProfileShowcase)(nil), // 9: protobuf.ProfileShowcase + (*ProfileShowcaseCommunityPreference)(nil), // 10: protobuf.ProfileShowcaseCommunityPreference + (*ProfileShowcaseAccountPreference)(nil), // 11: protobuf.ProfileShowcaseAccountPreference + (*ProfileShowcaseCollectiblePreference)(nil), // 12: protobuf.ProfileShowcaseCollectiblePreference + (*ProfileShowcaseVerifiedTokenPreference)(nil), // 13: protobuf.ProfileShowcaseVerifiedTokenPreference + (*ProfileShowcaseUnverifiedTokenPreference)(nil), // 14: protobuf.ProfileShowcaseUnverifiedTokenPreference + (*ProfileShowcaseSocialLinkPreference)(nil), // 15: protobuf.ProfileShowcaseSocialLinkPreference + (*SyncProfileShowcasePreferences)(nil), // 16: protobuf.SyncProfileShowcasePreferences +} +var file_profile_showcase_proto_depIdxs = []int32{ + 1, // 0: protobuf.ProfileShowcaseEntries.communities:type_name -> protobuf.ProfileShowcaseCommunity + 2, // 1: protobuf.ProfileShowcaseEntries.accounts:type_name -> protobuf.ProfileShowcaseAccount + 3, // 2: protobuf.ProfileShowcaseEntries.collectibles:type_name -> protobuf.ProfileShowcaseCollectible + 4, // 3: protobuf.ProfileShowcaseEntries.verified_tokens:type_name -> protobuf.ProfileShowcaseVerifiedToken + 5, // 4: protobuf.ProfileShowcaseEntries.unverified_tokens:type_name -> protobuf.ProfileShowcaseUnverifiedToken + 6, // 5: protobuf.ProfileShowcaseEntries.social_links:type_name -> protobuf.ProfileShowcaseSocialLink + 7, // 6: protobuf.ProfileShowcase.for_everyone:type_name -> protobuf.ProfileShowcaseEntries + 8, // 7: protobuf.ProfileShowcase.for_contacts:type_name -> protobuf.ProfileShowcaseEntriesEncrypted + 8, // 8: protobuf.ProfileShowcase.for_id_verified_contacts:type_name -> protobuf.ProfileShowcaseEntriesEncrypted + 0, // 9: protobuf.ProfileShowcaseCommunityPreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 0, // 10: protobuf.ProfileShowcaseAccountPreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 0, // 11: protobuf.ProfileShowcaseCollectiblePreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 0, // 12: protobuf.ProfileShowcaseVerifiedTokenPreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 0, // 13: protobuf.ProfileShowcaseUnverifiedTokenPreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 0, // 14: protobuf.ProfileShowcaseSocialLinkPreference.showcase_visibility:type_name -> protobuf.ProfileShowcaseVisibility + 10, // 15: protobuf.SyncProfileShowcasePreferences.communities:type_name -> protobuf.ProfileShowcaseCommunityPreference + 11, // 16: protobuf.SyncProfileShowcasePreferences.accounts:type_name -> protobuf.ProfileShowcaseAccountPreference + 12, // 17: protobuf.SyncProfileShowcasePreferences.collectibles:type_name -> protobuf.ProfileShowcaseCollectiblePreference + 13, // 18: protobuf.SyncProfileShowcasePreferences.verified_tokens:type_name -> protobuf.ProfileShowcaseVerifiedTokenPreference + 14, // 19: protobuf.SyncProfileShowcasePreferences.unverified_tokens:type_name -> protobuf.ProfileShowcaseUnverifiedTokenPreference + 15, // 20: protobuf.SyncProfileShowcasePreferences.social_links:type_name -> protobuf.ProfileShowcaseSocialLinkPreference + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name +} + +func init() { file_profile_showcase_proto_init() } +func file_profile_showcase_proto_init() { + if File_profile_showcase_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_profile_showcase_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseCollectible); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseVerifiedToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseUnverifiedToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseSocialLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseEntries); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseEntriesEncrypted); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcase); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseCommunityPreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseAccountPreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseCollectiblePreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseVerifiedTokenPreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseUnverifiedTokenPreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProfileShowcaseSocialLinkPreference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_profile_showcase_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncProfileShowcasePreferences); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_profile_showcase_proto_rawDesc, + NumEnums: 1, + NumMessages: 16, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_profile_showcase_proto_goTypes, + DependencyIndexes: file_profile_showcase_proto_depIdxs, + EnumInfos: file_profile_showcase_proto_enumTypes, + MessageInfos: file_profile_showcase_proto_msgTypes, + }.Build() + File_profile_showcase_proto = out.File + file_profile_showcase_proto_rawDesc = nil + file_profile_showcase_proto_goTypes = nil + file_profile_showcase_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.proto b/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.proto index 9b199729..e1d67daf 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.proto +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/profile_showcase.proto @@ -3,9 +3,12 @@ syntax = "proto3"; option go_package = "./;protobuf"; package protobuf; +// Profile showcase for a contact + message ProfileShowcaseCommunity { string community_id = 1; uint32 order = 2; + bytes grant = 3; } message ProfileShowcaseAccount { @@ -20,10 +23,10 @@ message ProfileShowcaseCollectible { string uid = 1 [deprecated = true]; uint32 order = 2; string contract_address = 3; - string community_id = 4; + string community_id = 4 [deprecated = true]; uint64 chain_id = 5; string token_id = 6; - string account_address = 7; + string account_address = 7 [deprecated = true]; } message ProfileShowcaseVerifiedToken { @@ -35,15 +38,22 @@ message ProfileShowcaseUnverifiedToken { string contract_address = 1; uint32 order = 2; uint64 chain_id = 3; - string community_id = 4; + string community_id = 4 [deprecated = true]; +} + +message ProfileShowcaseSocialLink { + string url = 1; + uint32 order = 2; + string text = 3; } message ProfileShowcaseEntries { repeated ProfileShowcaseCommunity communities = 1; repeated ProfileShowcaseAccount accounts = 2; repeated ProfileShowcaseCollectible collectibles = 3; - repeated ProfileShowcaseVerifiedToken verifiedTokens = 4; - repeated ProfileShowcaseUnverifiedToken unverifiedTokens = 5; + repeated ProfileShowcaseVerifiedToken verified_tokens = 4; + repeated ProfileShowcaseUnverifiedToken unverified_tokens = 5; + repeated ProfileShowcaseSocialLink social_links = 6; } message ProfileShowcaseEntriesEncrypted { @@ -56,3 +66,68 @@ message ProfileShowcase { ProfileShowcaseEntriesEncrypted for_contacts = 2; ProfileShowcaseEntriesEncrypted for_id_verified_contacts = 3; } + +// Profile showcase preferences + +enum ProfileShowcaseVisibility { + PROFILE_SHOWCASE_VISIBILITY_NO_ONE = 0; + PROFILE_SHOWCASE_VISIBILITY_IDVERIFIED_CONTACTS = 1; + PROFILE_SHOWCASE_VISIBILITY_CONTACTS = 2; + PROFILE_SHOWCASE_VISIBILITY_EVERYONE = 3; +} + +message ProfileShowcaseCommunityPreference { + string community_id = 1; + ProfileShowcaseVisibility showcase_visibility = 2; + uint32 order = 3; +} + +message ProfileShowcaseAccountPreference { + string address = 1; + string name = 2 [deprecated = true]; + string color_id = 3 [deprecated = true]; + string emoji = 4 [deprecated = true]; + ProfileShowcaseVisibility showcase_visibility = 5; + uint32 order = 6; +} + +message ProfileShowcaseCollectiblePreference { + string contract_address = 1; + uint64 chain_id = 2; + string token_id = 3; + string community_id = 4 [deprecated = true]; + string account_address = 5 [deprecated = true]; + ProfileShowcaseVisibility showcase_visibility = 6; + uint32 order = 7; +} + +message ProfileShowcaseVerifiedTokenPreference { + string symbol = 1; + ProfileShowcaseVisibility showcase_visibility = 2; + uint32 order = 3; +} + +message ProfileShowcaseUnverifiedTokenPreference { + string contract_address = 1; + uint64 chain_id = 2; + string community_id = 3 [deprecated = true]; + ProfileShowcaseVisibility showcase_visibility = 4; + uint32 order = 5; +} + +message ProfileShowcaseSocialLinkPreference { + string url = 1; + string text = 2; + uint32 order = 3; + ProfileShowcaseVisibility showcase_visibility = 4; +} + +message SyncProfileShowcasePreferences { + uint64 clock = 1; + repeated ProfileShowcaseCommunityPreference communities = 2; + repeated ProfileShowcaseAccountPreference accounts = 3; + repeated ProfileShowcaseCollectiblePreference collectibles = 4; + repeated ProfileShowcaseVerifiedTokenPreference verified_tokens = 5; + repeated ProfileShowcaseUnverifiedTokenPreference unverified_tokens = 6; + repeated ProfileShowcaseSocialLinkPreference social_links = 7; +} \ No newline at end of file diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/push_notifications.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/push_notifications.pb.go index 9221ff0a..21087190 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/push_notifications.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/push_notifications.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: push_notifications.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type PushNotificationRegistration_TokenType int32 @@ -28,24 +28,45 @@ const ( PushNotificationRegistration_FIREBASE_TOKEN PushNotificationRegistration_TokenType = 2 ) -var PushNotificationRegistration_TokenType_name = map[int32]string{ - 0: "UNKNOWN_TOKEN_TYPE", - 1: "APN_TOKEN", - 2: "FIREBASE_TOKEN", -} +// Enum value maps for PushNotificationRegistration_TokenType. +var ( + PushNotificationRegistration_TokenType_name = map[int32]string{ + 0: "UNKNOWN_TOKEN_TYPE", + 1: "APN_TOKEN", + 2: "FIREBASE_TOKEN", + } + PushNotificationRegistration_TokenType_value = map[string]int32{ + "UNKNOWN_TOKEN_TYPE": 0, + "APN_TOKEN": 1, + "FIREBASE_TOKEN": 2, + } +) -var PushNotificationRegistration_TokenType_value = map[string]int32{ - "UNKNOWN_TOKEN_TYPE": 0, - "APN_TOKEN": 1, - "FIREBASE_TOKEN": 2, +func (x PushNotificationRegistration_TokenType) Enum() *PushNotificationRegistration_TokenType { + p := new(PushNotificationRegistration_TokenType) + *p = x + return p } func (x PushNotificationRegistration_TokenType) String() string { - return proto.EnumName(PushNotificationRegistration_TokenType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationRegistration_TokenType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[0].Descriptor() +} + +func (PushNotificationRegistration_TokenType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[0] +} + +func (x PushNotificationRegistration_TokenType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationRegistration_TokenType.Descriptor instead. func (PushNotificationRegistration_TokenType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{0, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{0, 0} } type PushNotificationRegistrationResponse_ErrorType int32 @@ -58,28 +79,49 @@ const ( PushNotificationRegistrationResponse_INTERNAL_ERROR PushNotificationRegistrationResponse_ErrorType = 4 ) -var PushNotificationRegistrationResponse_ErrorType_name = map[int32]string{ - 0: "UNKNOWN_ERROR_TYPE", - 1: "MALFORMED_MESSAGE", - 2: "VERSION_MISMATCH", - 3: "UNSUPPORTED_TOKEN_TYPE", - 4: "INTERNAL_ERROR", -} +// Enum value maps for PushNotificationRegistrationResponse_ErrorType. +var ( + PushNotificationRegistrationResponse_ErrorType_name = map[int32]string{ + 0: "UNKNOWN_ERROR_TYPE", + 1: "MALFORMED_MESSAGE", + 2: "VERSION_MISMATCH", + 3: "UNSUPPORTED_TOKEN_TYPE", + 4: "INTERNAL_ERROR", + } + PushNotificationRegistrationResponse_ErrorType_value = map[string]int32{ + "UNKNOWN_ERROR_TYPE": 0, + "MALFORMED_MESSAGE": 1, + "VERSION_MISMATCH": 2, + "UNSUPPORTED_TOKEN_TYPE": 3, + "INTERNAL_ERROR": 4, + } +) -var PushNotificationRegistrationResponse_ErrorType_value = map[string]int32{ - "UNKNOWN_ERROR_TYPE": 0, - "MALFORMED_MESSAGE": 1, - "VERSION_MISMATCH": 2, - "UNSUPPORTED_TOKEN_TYPE": 3, - "INTERNAL_ERROR": 4, +func (x PushNotificationRegistrationResponse_ErrorType) Enum() *PushNotificationRegistrationResponse_ErrorType { + p := new(PushNotificationRegistrationResponse_ErrorType) + *p = x + return p } func (x PushNotificationRegistrationResponse_ErrorType) String() string { - return proto.EnumName(PushNotificationRegistrationResponse_ErrorType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationRegistrationResponse_ErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[1].Descriptor() +} + +func (PushNotificationRegistrationResponse_ErrorType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[1] +} + +func (x PushNotificationRegistrationResponse_ErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationRegistrationResponse_ErrorType.Descriptor instead. func (PushNotificationRegistrationResponse_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{1, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{1, 0} } type PushNotification_PushNotificationType int32 @@ -91,26 +133,47 @@ const ( PushNotification_REQUEST_TO_JOIN_COMMUNITY PushNotification_PushNotificationType = 3 ) -var PushNotification_PushNotificationType_name = map[int32]string{ - 0: "UNKNOWN_PUSH_NOTIFICATION_TYPE", - 1: "MESSAGE", - 2: "MENTION", - 3: "REQUEST_TO_JOIN_COMMUNITY", -} +// Enum value maps for PushNotification_PushNotificationType. +var ( + PushNotification_PushNotificationType_name = map[int32]string{ + 0: "UNKNOWN_PUSH_NOTIFICATION_TYPE", + 1: "MESSAGE", + 2: "MENTION", + 3: "REQUEST_TO_JOIN_COMMUNITY", + } + PushNotification_PushNotificationType_value = map[string]int32{ + "UNKNOWN_PUSH_NOTIFICATION_TYPE": 0, + "MESSAGE": 1, + "MENTION": 2, + "REQUEST_TO_JOIN_COMMUNITY": 3, + } +) -var PushNotification_PushNotificationType_value = map[string]int32{ - "UNKNOWN_PUSH_NOTIFICATION_TYPE": 0, - "MESSAGE": 1, - "MENTION": 2, - "REQUEST_TO_JOIN_COMMUNITY": 3, +func (x PushNotification_PushNotificationType) Enum() *PushNotification_PushNotificationType { + p := new(PushNotification_PushNotificationType) + *p = x + return p } func (x PushNotification_PushNotificationType) String() string { - return proto.EnumName(PushNotification_PushNotificationType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotification_PushNotificationType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[2].Descriptor() +} + +func (PushNotification_PushNotificationType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[2] +} + +func (x PushNotification_PushNotificationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotification_PushNotificationType.Descriptor instead. func (PushNotification_PushNotificationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{6, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{6, 0} } type PushNotificationReport_ErrorType int32 @@ -122,29 +185,54 @@ const ( PushNotificationReport_NOT_REGISTERED PushNotificationReport_ErrorType = 3 ) -var PushNotificationReport_ErrorType_name = map[int32]string{ - 0: "UNKNOWN_ERROR_TYPE", - 1: "WRONG_TOKEN", - 2: "INTERNAL_ERROR", - 3: "NOT_REGISTERED", -} +// Enum value maps for PushNotificationReport_ErrorType. +var ( + PushNotificationReport_ErrorType_name = map[int32]string{ + 0: "UNKNOWN_ERROR_TYPE", + 1: "WRONG_TOKEN", + 2: "INTERNAL_ERROR", + 3: "NOT_REGISTERED", + } + PushNotificationReport_ErrorType_value = map[string]int32{ + "UNKNOWN_ERROR_TYPE": 0, + "WRONG_TOKEN": 1, + "INTERNAL_ERROR": 2, + "NOT_REGISTERED": 3, + } +) -var PushNotificationReport_ErrorType_value = map[string]int32{ - "UNKNOWN_ERROR_TYPE": 0, - "WRONG_TOKEN": 1, - "INTERNAL_ERROR": 2, - "NOT_REGISTERED": 3, +func (x PushNotificationReport_ErrorType) Enum() *PushNotificationReport_ErrorType { + p := new(PushNotificationReport_ErrorType) + *p = x + return p } func (x PushNotificationReport_ErrorType) String() string { - return proto.EnumName(PushNotificationReport_ErrorType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (PushNotificationReport_ErrorType) Descriptor() protoreflect.EnumDescriptor { + return file_push_notifications_proto_enumTypes[3].Descriptor() +} + +func (PushNotificationReport_ErrorType) Type() protoreflect.EnumType { + return &file_push_notifications_proto_enumTypes[3] +} + +func (x PushNotificationReport_ErrorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushNotificationReport_ErrorType.Descriptor instead. func (PushNotificationReport_ErrorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{8, 0} + return file_push_notifications_proto_rawDescGZIP(), []int{8, 0} } type PushNotificationRegistration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + TokenType PushNotificationRegistration_TokenType `protobuf:"varint,1,opt,name=token_type,json=tokenType,proto3,enum=protobuf.PushNotificationRegistration_TokenType" json:"token_type,omitempty"` DeviceToken string `protobuf:"bytes,2,opt,name=device_token,json=deviceToken,proto3" json:"device_token,omitempty"` InstallationId string `protobuf:"bytes,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` @@ -160,757 +248,1109 @@ type PushNotificationRegistration struct { BlockMentions bool `protobuf:"varint,13,opt,name=block_mentions,json=blockMentions,proto3" json:"block_mentions,omitempty"` AllowedMentionsChatList [][]byte `protobuf:"bytes,14,rep,name=allowed_mentions_chat_list,json=allowedMentionsChatList,proto3" json:"allowed_mentions_chat_list,omitempty"` MutedChatList [][]byte `protobuf:"bytes,15,rep,name=muted_chat_list,json=mutedChatList,proto3" json:"muted_chat_list,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *PushNotificationRegistration) Reset() { *m = PushNotificationRegistration{} } -func (m *PushNotificationRegistration) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRegistration) ProtoMessage() {} +func (x *PushNotificationRegistration) Reset() { + *x = PushNotificationRegistration{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRegistration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRegistration) ProtoMessage() {} + +func (x *PushNotificationRegistration) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRegistration.ProtoReflect.Descriptor instead. func (*PushNotificationRegistration) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{0} + return file_push_notifications_proto_rawDescGZIP(), []int{0} } -func (m *PushNotificationRegistration) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRegistration.Unmarshal(m, b) -} -func (m *PushNotificationRegistration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRegistration.Marshal(b, m, deterministic) -} -func (m *PushNotificationRegistration) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRegistration.Merge(m, src) -} -func (m *PushNotificationRegistration) XXX_Size() int { - return xxx_messageInfo_PushNotificationRegistration.Size(m) -} -func (m *PushNotificationRegistration) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRegistration.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRegistration proto.InternalMessageInfo - -func (m *PushNotificationRegistration) GetTokenType() PushNotificationRegistration_TokenType { - if m != nil { - return m.TokenType +func (x *PushNotificationRegistration) GetTokenType() PushNotificationRegistration_TokenType { + if x != nil { + return x.TokenType } return PushNotificationRegistration_UNKNOWN_TOKEN_TYPE } -func (m *PushNotificationRegistration) GetDeviceToken() string { - if m != nil { - return m.DeviceToken +func (x *PushNotificationRegistration) GetDeviceToken() string { + if x != nil { + return x.DeviceToken } return "" } -func (m *PushNotificationRegistration) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationRegistration) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotificationRegistration) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotificationRegistration) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotificationRegistration) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *PushNotificationRegistration) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *PushNotificationRegistration) GetVersion() uint64 { - if m != nil { - return m.Version +func (x *PushNotificationRegistration) GetVersion() uint64 { + if x != nil { + return x.Version } return 0 } -func (m *PushNotificationRegistration) GetAllowedKeyList() [][]byte { - if m != nil { - return m.AllowedKeyList +func (x *PushNotificationRegistration) GetAllowedKeyList() [][]byte { + if x != nil { + return x.AllowedKeyList } return nil } -func (m *PushNotificationRegistration) GetBlockedChatList() [][]byte { - if m != nil { - return m.BlockedChatList +func (x *PushNotificationRegistration) GetBlockedChatList() [][]byte { + if x != nil { + return x.BlockedChatList } return nil } -func (m *PushNotificationRegistration) GetUnregister() bool { - if m != nil { - return m.Unregister +func (x *PushNotificationRegistration) GetUnregister() bool { + if x != nil { + return x.Unregister } return false } -func (m *PushNotificationRegistration) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *PushNotificationRegistration) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *PushNotificationRegistration) GetAllowFromContactsOnly() bool { - if m != nil { - return m.AllowFromContactsOnly +func (x *PushNotificationRegistration) GetAllowFromContactsOnly() bool { + if x != nil { + return x.AllowFromContactsOnly } return false } -func (m *PushNotificationRegistration) GetApnTopic() string { - if m != nil { - return m.ApnTopic +func (x *PushNotificationRegistration) GetApnTopic() string { + if x != nil { + return x.ApnTopic } return "" } -func (m *PushNotificationRegistration) GetBlockMentions() bool { - if m != nil { - return m.BlockMentions +func (x *PushNotificationRegistration) GetBlockMentions() bool { + if x != nil { + return x.BlockMentions } return false } -func (m *PushNotificationRegistration) GetAllowedMentionsChatList() [][]byte { - if m != nil { - return m.AllowedMentionsChatList +func (x *PushNotificationRegistration) GetAllowedMentionsChatList() [][]byte { + if x != nil { + return x.AllowedMentionsChatList } return nil } -func (m *PushNotificationRegistration) GetMutedChatList() [][]byte { - if m != nil { - return m.MutedChatList +func (x *PushNotificationRegistration) GetMutedChatList() [][]byte { + if x != nil { + return x.MutedChatList } return nil } type PushNotificationRegistrationResponse struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` - RequestId []byte `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` + RequestId []byte `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` } -func (m *PushNotificationRegistrationResponse) Reset() { *m = PushNotificationRegistrationResponse{} } -func (m *PushNotificationRegistrationResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRegistrationResponse) ProtoMessage() {} +func (x *PushNotificationRegistrationResponse) Reset() { + *x = PushNotificationRegistrationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRegistrationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRegistrationResponse) ProtoMessage() {} + +func (x *PushNotificationRegistrationResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRegistrationResponse.ProtoReflect.Descriptor instead. func (*PushNotificationRegistrationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{1} + return file_push_notifications_proto_rawDescGZIP(), []int{1} } -func (m *PushNotificationRegistrationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRegistrationResponse.Unmarshal(m, b) -} -func (m *PushNotificationRegistrationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRegistrationResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationRegistrationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRegistrationResponse.Merge(m, src) -} -func (m *PushNotificationRegistrationResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationRegistrationResponse.Size(m) -} -func (m *PushNotificationRegistrationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRegistrationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRegistrationResponse proto.InternalMessageInfo - -func (m *PushNotificationRegistrationResponse) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationRegistrationResponse) GetSuccess() bool { + if x != nil { + return x.Success } return false } -func (m *PushNotificationRegistrationResponse) GetError() PushNotificationRegistrationResponse_ErrorType { - if m != nil { - return m.Error +func (x *PushNotificationRegistrationResponse) GetError() PushNotificationRegistrationResponse_ErrorType { + if x != nil { + return x.Error } return PushNotificationRegistrationResponse_UNKNOWN_ERROR_TYPE } -func (m *PushNotificationRegistrationResponse) GetRequestId() []byte { - if m != nil { - return m.RequestId +func (x *PushNotificationRegistrationResponse) GetRequestId() []byte { + if x != nil { + return x.RequestId } return nil } type ContactCodeAdvertisement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + PushNotificationInfo []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=push_notification_info,json=pushNotificationInfo,proto3" json:"push_notification_info,omitempty"` ChatIdentity *ChatIdentity `protobuf:"bytes,2,opt,name=chat_identity,json=chatIdentity,proto3" json:"chat_identity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *ContactCodeAdvertisement) Reset() { *m = ContactCodeAdvertisement{} } -func (m *ContactCodeAdvertisement) String() string { return proto.CompactTextString(m) } -func (*ContactCodeAdvertisement) ProtoMessage() {} +func (x *ContactCodeAdvertisement) Reset() { + *x = ContactCodeAdvertisement{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContactCodeAdvertisement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContactCodeAdvertisement) ProtoMessage() {} + +func (x *ContactCodeAdvertisement) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ContactCodeAdvertisement.ProtoReflect.Descriptor instead. func (*ContactCodeAdvertisement) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{2} + return file_push_notifications_proto_rawDescGZIP(), []int{2} } -func (m *ContactCodeAdvertisement) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ContactCodeAdvertisement.Unmarshal(m, b) -} -func (m *ContactCodeAdvertisement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ContactCodeAdvertisement.Marshal(b, m, deterministic) -} -func (m *ContactCodeAdvertisement) XXX_Merge(src proto.Message) { - xxx_messageInfo_ContactCodeAdvertisement.Merge(m, src) -} -func (m *ContactCodeAdvertisement) XXX_Size() int { - return xxx_messageInfo_ContactCodeAdvertisement.Size(m) -} -func (m *ContactCodeAdvertisement) XXX_DiscardUnknown() { - xxx_messageInfo_ContactCodeAdvertisement.DiscardUnknown(m) -} - -var xxx_messageInfo_ContactCodeAdvertisement proto.InternalMessageInfo - -func (m *ContactCodeAdvertisement) GetPushNotificationInfo() []*PushNotificationQueryInfo { - if m != nil { - return m.PushNotificationInfo +func (x *ContactCodeAdvertisement) GetPushNotificationInfo() []*PushNotificationQueryInfo { + if x != nil { + return x.PushNotificationInfo } return nil } -func (m *ContactCodeAdvertisement) GetChatIdentity() *ChatIdentity { - if m != nil { - return m.ChatIdentity +func (x *ContactCodeAdvertisement) GetChatIdentity() *ChatIdentity { + if x != nil { + return x.ChatIdentity } return nil } type PushNotificationQuery struct { - PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublicKeys [][]byte `protobuf:"bytes,1,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"` } -func (m *PushNotificationQuery) Reset() { *m = PushNotificationQuery{} } -func (m *PushNotificationQuery) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQuery) ProtoMessage() {} +func (x *PushNotificationQuery) Reset() { + *x = PushNotificationQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQuery) ProtoMessage() {} + +func (x *PushNotificationQuery) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQuery.ProtoReflect.Descriptor instead. func (*PushNotificationQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{3} + return file_push_notifications_proto_rawDescGZIP(), []int{3} } -func (m *PushNotificationQuery) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQuery.Unmarshal(m, b) -} -func (m *PushNotificationQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQuery.Marshal(b, m, deterministic) -} -func (m *PushNotificationQuery) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQuery.Merge(m, src) -} -func (m *PushNotificationQuery) XXX_Size() int { - return xxx_messageInfo_PushNotificationQuery.Size(m) -} -func (m *PushNotificationQuery) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQuery.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQuery proto.InternalMessageInfo - -func (m *PushNotificationQuery) GetPublicKeys() [][]byte { - if m != nil { - return m.PublicKeys +func (x *PushNotificationQuery) GetPublicKeys() [][]byte { + if x != nil { + return x.PublicKeys } return nil } type PushNotificationQueryInfo struct { - AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - AllowedKeyList [][]byte `protobuf:"bytes,4,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"` - Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` - Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` - ServerPublicKey []byte `protobuf:"bytes,7,opt,name=server_public_key,json=serverPublicKey,proto3" json:"server_public_key,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + InstallationId string `protobuf:"bytes,2,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + AllowedKeyList [][]byte `protobuf:"bytes,4,rep,name=allowed_key_list,json=allowedKeyList,proto3" json:"allowed_key_list,omitempty"` + Grant []byte `protobuf:"bytes,5,opt,name=grant,proto3" json:"grant,omitempty"` + Version uint64 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` + ServerPublicKey []byte `protobuf:"bytes,7,opt,name=server_public_key,json=serverPublicKey,proto3" json:"server_public_key,omitempty"` } -func (m *PushNotificationQueryInfo) Reset() { *m = PushNotificationQueryInfo{} } -func (m *PushNotificationQueryInfo) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQueryInfo) ProtoMessage() {} +func (x *PushNotificationQueryInfo) Reset() { + *x = PushNotificationQueryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQueryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQueryInfo) ProtoMessage() {} + +func (x *PushNotificationQueryInfo) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQueryInfo.ProtoReflect.Descriptor instead. func (*PushNotificationQueryInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{4} + return file_push_notifications_proto_rawDescGZIP(), []int{4} } -func (m *PushNotificationQueryInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQueryInfo.Unmarshal(m, b) -} -func (m *PushNotificationQueryInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQueryInfo.Marshal(b, m, deterministic) -} -func (m *PushNotificationQueryInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQueryInfo.Merge(m, src) -} -func (m *PushNotificationQueryInfo) XXX_Size() int { - return xxx_messageInfo_PushNotificationQueryInfo.Size(m) -} -func (m *PushNotificationQueryInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQueryInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQueryInfo proto.InternalMessageInfo - -func (m *PushNotificationQueryInfo) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotificationQueryInfo) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotificationQueryInfo) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationQueryInfo) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotificationQueryInfo) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotificationQueryInfo) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotificationQueryInfo) GetAllowedKeyList() [][]byte { - if m != nil { - return m.AllowedKeyList +func (x *PushNotificationQueryInfo) GetAllowedKeyList() [][]byte { + if x != nil { + return x.AllowedKeyList } return nil } -func (m *PushNotificationQueryInfo) GetGrant() []byte { - if m != nil { - return m.Grant +func (x *PushNotificationQueryInfo) GetGrant() []byte { + if x != nil { + return x.Grant } return nil } -func (m *PushNotificationQueryInfo) GetVersion() uint64 { - if m != nil { - return m.Version +func (x *PushNotificationQueryInfo) GetVersion() uint64 { + if x != nil { + return x.Version } return 0 } -func (m *PushNotificationQueryInfo) GetServerPublicKey() []byte { - if m != nil { - return m.ServerPublicKey +func (x *PushNotificationQueryInfo) GetServerPublicKey() []byte { + if x != nil { + return x.ServerPublicKey } return nil } type PushNotificationQueryResponse struct { - Info []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"` - MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info []*PushNotificationQueryInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"` + MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"` } -func (m *PushNotificationQueryResponse) Reset() { *m = PushNotificationQueryResponse{} } -func (m *PushNotificationQueryResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationQueryResponse) ProtoMessage() {} +func (x *PushNotificationQueryResponse) Reset() { + *x = PushNotificationQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationQueryResponse) ProtoMessage() {} + +func (x *PushNotificationQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationQueryResponse.ProtoReflect.Descriptor instead. func (*PushNotificationQueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{5} + return file_push_notifications_proto_rawDescGZIP(), []int{5} } -func (m *PushNotificationQueryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationQueryResponse.Unmarshal(m, b) -} -func (m *PushNotificationQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationQueryResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationQueryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationQueryResponse.Merge(m, src) -} -func (m *PushNotificationQueryResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationQueryResponse.Size(m) -} -func (m *PushNotificationQueryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationQueryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationQueryResponse proto.InternalMessageInfo - -func (m *PushNotificationQueryResponse) GetInfo() []*PushNotificationQueryInfo { - if m != nil { - return m.Info +func (x *PushNotificationQueryResponse) GetInfo() []*PushNotificationQueryInfo { + if x != nil { + return x.Info } return nil } -func (m *PushNotificationQueryResponse) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationQueryResponse) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } -func (m *PushNotificationQueryResponse) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationQueryResponse) GetSuccess() bool { + if x != nil { + return x.Success } return false } type PushNotification struct { - AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - ChatId []byte `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` - Type PushNotification_PushNotificationType `protobuf:"varint,6,opt,name=type,proto3,enum=protobuf.PushNotification_PushNotificationType" json:"type,omitempty"` - Author []byte `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + ChatId []byte `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + Type PushNotification_PushNotificationType `protobuf:"varint,6,opt,name=type,proto3,enum=protobuf.PushNotification_PushNotificationType" json:"type,omitempty"` + Author []byte `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` } -func (m *PushNotification) Reset() { *m = PushNotification{} } -func (m *PushNotification) String() string { return proto.CompactTextString(m) } -func (*PushNotification) ProtoMessage() {} +func (x *PushNotification) Reset() { + *x = PushNotification{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotification) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotification) ProtoMessage() {} + +func (x *PushNotification) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotification.ProtoReflect.Descriptor instead. func (*PushNotification) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{6} + return file_push_notifications_proto_rawDescGZIP(), []int{6} } -func (m *PushNotification) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotification.Unmarshal(m, b) -} -func (m *PushNotification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotification.Marshal(b, m, deterministic) -} -func (m *PushNotification) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotification.Merge(m, src) -} -func (m *PushNotification) XXX_Size() int { - return xxx_messageInfo_PushNotification.Size(m) -} -func (m *PushNotification) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotification.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotification proto.InternalMessageInfo - -func (m *PushNotification) GetAccessToken() string { - if m != nil { - return m.AccessToken +func (x *PushNotification) GetAccessToken() string { + if x != nil { + return x.AccessToken } return "" } -func (m *PushNotification) GetChatId() []byte { - if m != nil { - return m.ChatId +func (x *PushNotification) GetChatId() []byte { + if x != nil { + return x.ChatId } return nil } -func (m *PushNotification) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotification) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotification) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotification) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } -func (m *PushNotification) GetMessage() []byte { - if m != nil { - return m.Message +func (x *PushNotification) GetMessage() []byte { + if x != nil { + return x.Message } return nil } -func (m *PushNotification) GetType() PushNotification_PushNotificationType { - if m != nil { - return m.Type +func (x *PushNotification) GetType() PushNotification_PushNotificationType { + if x != nil { + return x.Type } return PushNotification_UNKNOWN_PUSH_NOTIFICATION_TYPE } -func (m *PushNotification) GetAuthor() []byte { - if m != nil { - return m.Author +func (x *PushNotification) GetAuthor() []byte { + if x != nil { + return x.Author } return nil } type PushNotificationRequest struct { - Requests []*PushNotification `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` - MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Requests []*PushNotification `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + MessageId []byte `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` } -func (m *PushNotificationRequest) Reset() { *m = PushNotificationRequest{} } -func (m *PushNotificationRequest) String() string { return proto.CompactTextString(m) } -func (*PushNotificationRequest) ProtoMessage() {} +func (x *PushNotificationRequest) Reset() { + *x = PushNotificationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationRequest) ProtoMessage() {} + +func (x *PushNotificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationRequest.ProtoReflect.Descriptor instead. func (*PushNotificationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{7} + return file_push_notifications_proto_rawDescGZIP(), []int{7} } -func (m *PushNotificationRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationRequest.Unmarshal(m, b) -} -func (m *PushNotificationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationRequest.Marshal(b, m, deterministic) -} -func (m *PushNotificationRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationRequest.Merge(m, src) -} -func (m *PushNotificationRequest) XXX_Size() int { - return xxx_messageInfo_PushNotificationRequest.Size(m) -} -func (m *PushNotificationRequest) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationRequest proto.InternalMessageInfo - -func (m *PushNotificationRequest) GetRequests() []*PushNotification { - if m != nil { - return m.Requests +func (x *PushNotificationRequest) GetRequests() []*PushNotification { + if x != nil { + return x.Requests } return nil } -func (m *PushNotificationRequest) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationRequest) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } type PushNotificationReport struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Error PushNotificationReport_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationReport_ErrorType" json:"error,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Error PushNotificationReport_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationReport_ErrorType" json:"error,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + InstallationId string `protobuf:"bytes,4,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` } -func (m *PushNotificationReport) Reset() { *m = PushNotificationReport{} } -func (m *PushNotificationReport) String() string { return proto.CompactTextString(m) } -func (*PushNotificationReport) ProtoMessage() {} +func (x *PushNotificationReport) Reset() { + *x = PushNotificationReport{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationReport) ProtoMessage() {} + +func (x *PushNotificationReport) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationReport.ProtoReflect.Descriptor instead. func (*PushNotificationReport) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{8} + return file_push_notifications_proto_rawDescGZIP(), []int{8} } -func (m *PushNotificationReport) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationReport.Unmarshal(m, b) -} -func (m *PushNotificationReport) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationReport.Marshal(b, m, deterministic) -} -func (m *PushNotificationReport) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationReport.Merge(m, src) -} -func (m *PushNotificationReport) XXX_Size() int { - return xxx_messageInfo_PushNotificationReport.Size(m) -} -func (m *PushNotificationReport) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationReport.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationReport proto.InternalMessageInfo - -func (m *PushNotificationReport) GetSuccess() bool { - if m != nil { - return m.Success +func (x *PushNotificationReport) GetSuccess() bool { + if x != nil { + return x.Success } return false } -func (m *PushNotificationReport) GetError() PushNotificationReport_ErrorType { - if m != nil { - return m.Error +func (x *PushNotificationReport) GetError() PushNotificationReport_ErrorType { + if x != nil { + return x.Error } return PushNotificationReport_UNKNOWN_ERROR_TYPE } -func (m *PushNotificationReport) GetPublicKey() []byte { - if m != nil { - return m.PublicKey +func (x *PushNotificationReport) GetPublicKey() []byte { + if x != nil { + return x.PublicKey } return nil } -func (m *PushNotificationReport) GetInstallationId() string { - if m != nil { - return m.InstallationId +func (x *PushNotificationReport) GetInstallationId() string { + if x != nil { + return x.InstallationId } return "" } type PushNotificationResponse struct { - MessageId []byte `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` - Reports []*PushNotificationReport `protobuf:"bytes,2,rep,name=reports,proto3" json:"reports,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MessageId []byte `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + Reports []*PushNotificationReport `protobuf:"bytes,2,rep,name=reports,proto3" json:"reports,omitempty"` } -func (m *PushNotificationResponse) Reset() { *m = PushNotificationResponse{} } -func (m *PushNotificationResponse) String() string { return proto.CompactTextString(m) } -func (*PushNotificationResponse) ProtoMessage() {} +func (x *PushNotificationResponse) Reset() { + *x = PushNotificationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_push_notifications_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushNotificationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushNotificationResponse) ProtoMessage() {} + +func (x *PushNotificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_push_notifications_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushNotificationResponse.ProtoReflect.Descriptor instead. func (*PushNotificationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_200acd86044eaa5d, []int{9} + return file_push_notifications_proto_rawDescGZIP(), []int{9} } -func (m *PushNotificationResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushNotificationResponse.Unmarshal(m, b) -} -func (m *PushNotificationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PushNotificationResponse.Marshal(b, m, deterministic) -} -func (m *PushNotificationResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_PushNotificationResponse.Merge(m, src) -} -func (m *PushNotificationResponse) XXX_Size() int { - return xxx_messageInfo_PushNotificationResponse.Size(m) -} -func (m *PushNotificationResponse) XXX_DiscardUnknown() { - xxx_messageInfo_PushNotificationResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_PushNotificationResponse proto.InternalMessageInfo - -func (m *PushNotificationResponse) GetMessageId() []byte { - if m != nil { - return m.MessageId +func (x *PushNotificationResponse) GetMessageId() []byte { + if x != nil { + return x.MessageId } return nil } -func (m *PushNotificationResponse) GetReports() []*PushNotificationReport { - if m != nil { - return m.Reports +func (x *PushNotificationResponse) GetReports() []*PushNotificationReport { + if x != nil { + return x.Reports } return nil } -func init() { - proto.RegisterEnum("protobuf.PushNotificationRegistration_TokenType", PushNotificationRegistration_TokenType_name, PushNotificationRegistration_TokenType_value) - proto.RegisterEnum("protobuf.PushNotificationRegistrationResponse_ErrorType", PushNotificationRegistrationResponse_ErrorType_name, PushNotificationRegistrationResponse_ErrorType_value) - proto.RegisterEnum("protobuf.PushNotification_PushNotificationType", PushNotification_PushNotificationType_name, PushNotification_PushNotificationType_value) - proto.RegisterEnum("protobuf.PushNotificationReport_ErrorType", PushNotificationReport_ErrorType_name, PushNotificationReport_ErrorType_value) - proto.RegisterType((*PushNotificationRegistration)(nil), "protobuf.PushNotificationRegistration") - proto.RegisterType((*PushNotificationRegistrationResponse)(nil), "protobuf.PushNotificationRegistrationResponse") - proto.RegisterType((*ContactCodeAdvertisement)(nil), "protobuf.ContactCodeAdvertisement") - proto.RegisterType((*PushNotificationQuery)(nil), "protobuf.PushNotificationQuery") - proto.RegisterType((*PushNotificationQueryInfo)(nil), "protobuf.PushNotificationQueryInfo") - proto.RegisterType((*PushNotificationQueryResponse)(nil), "protobuf.PushNotificationQueryResponse") - proto.RegisterType((*PushNotification)(nil), "protobuf.PushNotification") - proto.RegisterType((*PushNotificationRequest)(nil), "protobuf.PushNotificationRequest") - proto.RegisterType((*PushNotificationReport)(nil), "protobuf.PushNotificationReport") - proto.RegisterType((*PushNotificationResponse)(nil), "protobuf.PushNotificationResponse") +var File_push_notifications_proto protoreflect.FileDescriptor + +var file_push_notifications_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x13, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc8, 0x05, 0x0a, 0x1c, 0x50, 0x75, + 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0a, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, + 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, + 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x43, 0x68, 0x61, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x6e, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x6e, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x6e, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x17, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x68, 0x61, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, + 0x61, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x09, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x01, + 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x49, 0x52, 0x45, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x4b, + 0x45, 0x4e, 0x10, 0x02, 0x22, 0xb2, 0x02, 0x0a, 0x24, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, + 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, + 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x53, + 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x22, 0xb2, 0x01, 0x0a, 0x18, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x16, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x70, 0x75, 0x73, + 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3b, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x52, 0x0c, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x38, + 0x0a, 0x15, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x8c, 0x02, 0x0a, 0x19, 0x50, 0x75, 0x73, + 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x75, 0x73, 0x68, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x82, 0x03, 0x0a, 0x10, + 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x68, 0x61, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x43, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, 0x73, 0x0a, 0x14, 0x50, + 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, + 0x55, 0x53, 0x48, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x03, + 0x22, 0x70, 0x0a, 0x17, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x22, 0x9a, 0x02, 0x0a, 0x16, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x5c, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x12, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x52, 0x4f, 0x4e, 0x47, 0x5f, + 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4e, + 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, + 0x75, 0x0a, 0x18, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) +var ( + file_push_notifications_proto_rawDescOnce sync.Once + file_push_notifications_proto_rawDescData = file_push_notifications_proto_rawDesc +) + +func file_push_notifications_proto_rawDescGZIP() []byte { + file_push_notifications_proto_rawDescOnce.Do(func() { + file_push_notifications_proto_rawDescData = protoimpl.X.CompressGZIP(file_push_notifications_proto_rawDescData) + }) + return file_push_notifications_proto_rawDescData } -var fileDescriptor_200acd86044eaa5d = []byte{ - // 1088 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5b, 0x4f, 0xe3, 0x46, - 0x14, 0xae, 0x93, 0x40, 0x92, 0x93, 0x2b, 0x53, 0x08, 0x5e, 0x5a, 0xb6, 0xa9, 0x7b, 0x8b, 0x78, - 0xc8, 0x56, 0x54, 0xea, 0xae, 0xca, 0x4b, 0xb3, 0xc1, 0xb0, 0x2e, 0xc4, 0xce, 0x4e, 0x9c, 0xae, - 0xa8, 0x2a, 0x8d, 0x4c, 0x32, 0x80, 0x45, 0xb0, 0x5d, 0xcf, 0x84, 0x2a, 0x6f, 0x55, 0x9f, 0xfb, - 0xd2, 0xd7, 0xfe, 0x8c, 0xfd, 0x15, 0xfd, 0x59, 0x95, 0xc7, 0xe3, 0x60, 0x48, 0xb8, 0x54, 0xda, - 0xa7, 0xf8, 0x7c, 0xe7, 0x32, 0x73, 0xce, 0xf9, 0xe6, 0x0b, 0xa8, 0xc1, 0x94, 0x5d, 0x10, 0xcf, - 0xe7, 0xee, 0x99, 0x3b, 0x72, 0xb8, 0xeb, 0x7b, 0xac, 0x1d, 0x84, 0x3e, 0xf7, 0x51, 0x41, 0xfc, - 0x9c, 0x4e, 0xcf, 0xb6, 0x3e, 0x1e, 0x5d, 0x38, 0x9c, 0xb8, 0x63, 0xea, 0x71, 0x97, 0xcf, 0x62, - 0xb7, 0xf6, 0xef, 0x0a, 0x7c, 0xda, 0x9f, 0xb2, 0x0b, 0x33, 0x95, 0x8a, 0xe9, 0xb9, 0xcb, 0x78, - 0x28, 0xbe, 0x91, 0x05, 0xc0, 0xfd, 0x4b, 0xea, 0x11, 0x3e, 0x0b, 0xa8, 0xaa, 0x34, 0x95, 0x56, - 0x75, 0xf7, 0xdb, 0x76, 0x52, 0xb4, 0xfd, 0x50, 0x6e, 0xdb, 0x8e, 0x12, 0xed, 0x59, 0x40, 0x71, - 0x91, 0x27, 0x9f, 0xe8, 0x73, 0x28, 0x8f, 0xe9, 0xb5, 0x3b, 0xa2, 0x44, 0x60, 0x6a, 0xa6, 0xa9, - 0xb4, 0x8a, 0xb8, 0x14, 0x63, 0x22, 0x03, 0x7d, 0x03, 0x35, 0xd7, 0x63, 0xdc, 0x99, 0x4c, 0x44, - 0x1d, 0xe2, 0x8e, 0xd5, 0xac, 0x88, 0xaa, 0xa6, 0x61, 0x63, 0x1c, 0xd5, 0x72, 0x46, 0x23, 0xca, - 0x98, 0xac, 0x95, 0x8b, 0x6b, 0xc5, 0x58, 0x5c, 0x4b, 0x85, 0x3c, 0xf5, 0x9c, 0xd3, 0x09, 0x1d, - 0xab, 0x2b, 0x4d, 0xa5, 0x55, 0xc0, 0x89, 0x19, 0x79, 0xae, 0x69, 0xc8, 0x5c, 0xdf, 0x53, 0x57, - 0x9b, 0x4a, 0x2b, 0x87, 0x13, 0x13, 0xb5, 0xa0, 0xee, 0x4c, 0x26, 0xfe, 0xef, 0x74, 0x4c, 0x2e, - 0xe9, 0x8c, 0x4c, 0x5c, 0xc6, 0xd5, 0x7c, 0x33, 0xdb, 0x2a, 0xe3, 0xaa, 0xc4, 0x8f, 0xe8, 0xec, - 0xd8, 0x65, 0x1c, 0xed, 0xc0, 0xda, 0xe9, 0xc4, 0x1f, 0x5d, 0xd2, 0x31, 0x11, 0xd3, 0x15, 0xa1, - 0x05, 0x11, 0x5a, 0x93, 0x8e, 0xee, 0x85, 0xc3, 0x45, 0xec, 0x73, 0x80, 0xa9, 0x17, 0x8a, 0xf9, - 0xd0, 0x50, 0x2d, 0x8a, 0xcb, 0xa4, 0x10, 0xb4, 0x0e, 0x2b, 0xe7, 0xa1, 0xe3, 0x71, 0x15, 0x9a, - 0x4a, 0xab, 0x8c, 0x63, 0x03, 0xbd, 0x04, 0x55, 0x9c, 0x49, 0xce, 0x42, 0xff, 0x8a, 0x8c, 0x7c, - 0x8f, 0x3b, 0x23, 0xce, 0x88, 0xef, 0x4d, 0x66, 0x6a, 0x49, 0xd4, 0xd8, 0x10, 0xfe, 0x83, 0xd0, - 0xbf, 0xea, 0x4a, 0xaf, 0xe5, 0x4d, 0x66, 0xe8, 0x13, 0x28, 0x3a, 0x81, 0x47, 0xb8, 0x1f, 0xb8, - 0x23, 0xb5, 0x2c, 0x06, 0x53, 0x70, 0x02, 0xcf, 0x8e, 0x6c, 0xf4, 0x15, 0x54, 0xc5, 0xf5, 0xc8, - 0x55, 0xc4, 0x06, 0xdf, 0x63, 0x6a, 0x45, 0xd4, 0xaa, 0x08, 0xb4, 0x27, 0x41, 0xb4, 0x07, 0x5b, - 0xc9, 0x20, 0x92, 0xc0, 0x54, 0x9f, 0x55, 0xd1, 0xe7, 0xa6, 0x8c, 0x48, 0x92, 0xe6, 0xfd, 0x7e, - 0x0d, 0xb5, 0xab, 0x29, 0xbf, 0x35, 0x99, 0x9a, 0xc8, 0xa8, 0x08, 0x38, 0x89, 0xd3, 0x0e, 0xa0, - 0x38, 0x27, 0x0a, 0x6a, 0x00, 0x1a, 0x9a, 0x47, 0xa6, 0xf5, 0xce, 0x24, 0xb6, 0x75, 0xa4, 0x9b, - 0xc4, 0x3e, 0xe9, 0xeb, 0xf5, 0x8f, 0x50, 0x05, 0x8a, 0x9d, 0xbe, 0xc4, 0xea, 0x0a, 0x42, 0x50, - 0x3d, 0x30, 0xb0, 0xfe, 0xba, 0x33, 0xd0, 0x25, 0x96, 0xd1, 0xde, 0x67, 0xe0, 0xcb, 0x87, 0xe8, - 0x88, 0x29, 0x0b, 0x7c, 0x8f, 0xd1, 0x68, 0xf1, 0x6c, 0x2a, 0x28, 0x22, 0xf8, 0x5c, 0xc0, 0x89, - 0x89, 0x4c, 0x58, 0xa1, 0x61, 0xe8, 0x87, 0x82, 0x94, 0xd5, 0xdd, 0x57, 0x4f, 0xe3, 0x79, 0x52, - 0xb8, 0xad, 0x47, 0xb9, 0x82, 0xef, 0x71, 0x19, 0xb4, 0x0d, 0x10, 0xd2, 0xdf, 0xa6, 0x94, 0xf1, - 0x84, 0xc3, 0x65, 0x5c, 0x94, 0x88, 0x31, 0xd6, 0xfe, 0x50, 0xa0, 0x38, 0xcf, 0x49, 0xb7, 0xae, - 0x63, 0x6c, 0xe1, 0xa4, 0xf5, 0x0d, 0x58, 0xeb, 0x75, 0x8e, 0x0f, 0x2c, 0xdc, 0xd3, 0xf7, 0x49, - 0x4f, 0x1f, 0x0c, 0x3a, 0x87, 0x7a, 0x5d, 0x41, 0xeb, 0x50, 0xff, 0x59, 0xc7, 0x03, 0xc3, 0x32, - 0x49, 0xcf, 0x18, 0xf4, 0x3a, 0x76, 0xf7, 0x4d, 0x3d, 0x83, 0xb6, 0xa0, 0x31, 0x34, 0x07, 0xc3, - 0x7e, 0xdf, 0xc2, 0xb6, 0xbe, 0x9f, 0x9e, 0x61, 0x36, 0x1a, 0x9a, 0x61, 0xda, 0x3a, 0x36, 0x3b, - 0xc7, 0xf1, 0x09, 0xf5, 0x9c, 0xf6, 0x5e, 0x01, 0x55, 0xd2, 0xa6, 0xeb, 0x8f, 0x69, 0x67, 0x7c, - 0x4d, 0x43, 0xee, 0x32, 0x1a, 0xad, 0x1b, 0x9d, 0x40, 0x63, 0x41, 0x57, 0x88, 0xeb, 0x9d, 0xf9, - 0xaa, 0xd2, 0xcc, 0xb6, 0x4a, 0xbb, 0x5f, 0xdc, 0x3f, 0x9f, 0xb7, 0x53, 0x1a, 0xce, 0x0c, 0xef, - 0xcc, 0xc7, 0xeb, 0xc1, 0x1d, 0x57, 0x84, 0xa2, 0x3d, 0xa8, 0xdc, 0x92, 0x23, 0x31, 0xf1, 0xd2, - 0x6e, 0xe3, 0xa6, 0x62, 0xc4, 0x0f, 0x43, 0x7a, 0x71, 0x79, 0x94, 0xb2, 0xb4, 0x57, 0xb0, 0xb1, - 0xf4, 0x3c, 0xf4, 0x19, 0x94, 0x82, 0xe9, 0xe9, 0xc4, 0x1d, 0x45, 0xef, 0x96, 0x89, 0x5b, 0x96, - 0x31, 0xc4, 0xd0, 0x11, 0x9d, 0x31, 0xed, 0xaf, 0x0c, 0x3c, 0xbb, 0xf7, 0xaa, 0x0b, 0x72, 0xa2, - 0x2c, 0xca, 0xc9, 0x12, 0x69, 0xca, 0x2c, 0x95, 0xa6, 0x6d, 0x80, 0x9b, 0xab, 0x24, 0xab, 0x9f, - 0xdf, 0x64, 0xa9, 0xc4, 0xe4, 0x96, 0x4a, 0xcc, 0x5c, 0x16, 0x56, 0xd2, 0xb2, 0x70, 0xbf, 0x78, - 0xed, 0xc0, 0x1a, 0xa3, 0xe1, 0x35, 0x0d, 0x49, 0xea, 0xfc, 0xbc, 0xc8, 0xad, 0xc5, 0x8e, 0x7e, - 0x72, 0x0b, 0xed, 0x6f, 0x05, 0xb6, 0x97, 0x8e, 0x63, 0xfe, 0x56, 0x5e, 0x42, 0xee, 0xff, 0x2e, - 0x5c, 0x24, 0x44, 0xfd, 0x5f, 0x51, 0xc6, 0x9c, 0x73, 0x9a, 0xcc, 0xa8, 0x8c, 0x8b, 0x12, 0x31, - 0xc6, 0xe9, 0x37, 0x98, 0xbd, 0xf5, 0x06, 0xb5, 0x3f, 0xb3, 0x50, 0xbf, 0x5b, 0xfc, 0x29, 0x9b, - 0xd9, 0x84, 0xbc, 0x64, 0x94, 0x3c, 0x6d, 0x35, 0xe6, 0xcc, 0x63, 0x9b, 0x58, 0xb2, 0xd1, 0xdc, - 0xd2, 0x8d, 0xaa, 0x90, 0x97, 0xf7, 0x97, 0xab, 0x48, 0x4c, 0xd4, 0x85, 0x9c, 0xf8, 0x77, 0x5c, - 0x15, 0xaa, 0xf1, 0xe2, 0xfe, 0x21, 0x2d, 0x00, 0x42, 0x2c, 0x44, 0x32, 0x6a, 0xc0, 0xaa, 0x33, - 0xe5, 0x17, 0x7e, 0x28, 0x97, 0x25, 0x2d, 0x8d, 0xc1, 0xfa, 0xb2, 0x2c, 0xa4, 0xc1, 0xf3, 0x44, - 0x2e, 0xfa, 0xc3, 0xc1, 0x1b, 0x62, 0x5a, 0xb6, 0x71, 0x60, 0x74, 0x3b, 0x76, 0xa4, 0x08, 0x52, - 0x3a, 0x4a, 0x90, 0xbf, 0x11, 0x0c, 0x61, 0x98, 0x91, 0xbb, 0x9e, 0x41, 0xdb, 0xf0, 0x0c, 0xeb, - 0x6f, 0x87, 0xfa, 0xc0, 0x26, 0xb6, 0x45, 0x7e, 0xb2, 0x0c, 0x93, 0x74, 0xad, 0x5e, 0x6f, 0x68, - 0x1a, 0xf6, 0x49, 0x3d, 0xab, 0x05, 0xb0, 0xb9, 0xa8, 0x78, 0x42, 0xb6, 0xd0, 0xf7, 0x50, 0x90, - 0x0a, 0xc6, 0x24, 0x2b, 0xb6, 0x1e, 0x90, 0xc9, 0x79, 0xec, 0x23, 0x84, 0xd0, 0xfe, 0xc9, 0x40, - 0x63, 0xf1, 0xc8, 0xc0, 0x0f, 0xf9, 0x03, 0x7a, 0xfd, 0xe3, 0x6d, 0xbd, 0xde, 0x79, 0x48, 0xaf, - 0xa3, 0x52, 0x4b, 0x15, 0xfa, 0x43, 0x90, 0x43, 0xfb, 0xf5, 0x29, 0x4a, 0x5e, 0x83, 0xd2, 0x3b, - 0x6c, 0x99, 0x87, 0xe9, 0xbf, 0xb1, 0x3b, 0x8a, 0x9c, 0x89, 0x30, 0xd3, 0xb2, 0x09, 0xd6, 0x0f, - 0x8d, 0x81, 0xad, 0x63, 0x7d, 0xbf, 0x9e, 0xd5, 0xa6, 0xa0, 0x2e, 0x36, 0x24, 0x5f, 0xe8, 0xed, - 0xb9, 0x2a, 0x77, 0x1f, 0xda, 0x0f, 0x90, 0x0f, 0x45, 0xef, 0x4c, 0xcd, 0x88, 0x6d, 0x35, 0x1f, - 0x1b, 0x12, 0x4e, 0x12, 0x5e, 0x57, 0x7e, 0x29, 0xb5, 0x5f, 0xec, 0x25, 0xe1, 0xa7, 0xab, 0xe2, - 0xeb, 0xbb, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x80, 0x64, 0xa2, 0x39, 0x6d, 0x0a, 0x00, 0x00, +var file_push_notifications_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_push_notifications_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_push_notifications_proto_goTypes = []interface{}{ + (PushNotificationRegistration_TokenType)(0), // 0: protobuf.PushNotificationRegistration.TokenType + (PushNotificationRegistrationResponse_ErrorType)(0), // 1: protobuf.PushNotificationRegistrationResponse.ErrorType + (PushNotification_PushNotificationType)(0), // 2: protobuf.PushNotification.PushNotificationType + (PushNotificationReport_ErrorType)(0), // 3: protobuf.PushNotificationReport.ErrorType + (*PushNotificationRegistration)(nil), // 4: protobuf.PushNotificationRegistration + (*PushNotificationRegistrationResponse)(nil), // 5: protobuf.PushNotificationRegistrationResponse + (*ContactCodeAdvertisement)(nil), // 6: protobuf.ContactCodeAdvertisement + (*PushNotificationQuery)(nil), // 7: protobuf.PushNotificationQuery + (*PushNotificationQueryInfo)(nil), // 8: protobuf.PushNotificationQueryInfo + (*PushNotificationQueryResponse)(nil), // 9: protobuf.PushNotificationQueryResponse + (*PushNotification)(nil), // 10: protobuf.PushNotification + (*PushNotificationRequest)(nil), // 11: protobuf.PushNotificationRequest + (*PushNotificationReport)(nil), // 12: protobuf.PushNotificationReport + (*PushNotificationResponse)(nil), // 13: protobuf.PushNotificationResponse + (*ChatIdentity)(nil), // 14: protobuf.ChatIdentity +} +var file_push_notifications_proto_depIdxs = []int32{ + 0, // 0: protobuf.PushNotificationRegistration.token_type:type_name -> protobuf.PushNotificationRegistration.TokenType + 1, // 1: protobuf.PushNotificationRegistrationResponse.error:type_name -> protobuf.PushNotificationRegistrationResponse.ErrorType + 8, // 2: protobuf.ContactCodeAdvertisement.push_notification_info:type_name -> protobuf.PushNotificationQueryInfo + 14, // 3: protobuf.ContactCodeAdvertisement.chat_identity:type_name -> protobuf.ChatIdentity + 8, // 4: protobuf.PushNotificationQueryResponse.info:type_name -> protobuf.PushNotificationQueryInfo + 2, // 5: protobuf.PushNotification.type:type_name -> protobuf.PushNotification.PushNotificationType + 10, // 6: protobuf.PushNotificationRequest.requests:type_name -> protobuf.PushNotification + 3, // 7: protobuf.PushNotificationReport.error:type_name -> protobuf.PushNotificationReport.ErrorType + 12, // 8: protobuf.PushNotificationResponse.reports:type_name -> protobuf.PushNotificationReport + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_push_notifications_proto_init() } +func file_push_notifications_proto_init() { + if File_push_notifications_proto != nil { + return + } + file_chat_identity_proto_init() + if !protoimpl.UnsafeEnabled { + file_push_notifications_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRegistration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRegistrationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ContactCodeAdvertisement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQueryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotification); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationReport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_push_notifications_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushNotificationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_push_notifications_proto_rawDesc, + NumEnums: 4, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_push_notifications_proto_goTypes, + DependencyIndexes: file_push_notifications_proto_depIdxs, + EnumInfos: file_push_notifications_proto_enumTypes, + MessageInfos: file_push_notifications_proto_msgTypes, + }.Build() + File_push_notifications_proto = out.File + file_push_notifications_proto_rawDesc = nil + file_push_notifications_proto_goTypes = nil + file_push_notifications_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/segment_message.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/segment_message.pb.go index ed2ee7da..04e2c827 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/segment_message.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/segment_message.pb.go @@ -1,26 +1,30 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: segment_message.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SegmentMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // hash of the entire original message EntireMessageHash []byte `protobuf:"bytes,1,opt,name=entire_message_hash,json=entireMessageHash,proto3" json:"entire_message_hash,omitempty"` // Index of this segment within the entire original message @@ -28,84 +32,147 @@ type SegmentMessage struct { // Total number of segments the entire original message is divided into SegmentsCount uint32 `protobuf:"varint,3,opt,name=segments_count,json=segmentsCount,proto3" json:"segments_count,omitempty"` // The payload data for this particular segment - Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *SegmentMessage) Reset() { *m = SegmentMessage{} } -func (m *SegmentMessage) String() string { return proto.CompactTextString(m) } -func (*SegmentMessage) ProtoMessage() {} +func (x *SegmentMessage) Reset() { + *x = SegmentMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_segment_message_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SegmentMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SegmentMessage) ProtoMessage() {} + +func (x *SegmentMessage) ProtoReflect() protoreflect.Message { + mi := &file_segment_message_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SegmentMessage.ProtoReflect.Descriptor instead. func (*SegmentMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_857302809a887a8b, []int{0} + return file_segment_message_proto_rawDescGZIP(), []int{0} } -func (m *SegmentMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SegmentMessage.Unmarshal(m, b) -} -func (m *SegmentMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SegmentMessage.Marshal(b, m, deterministic) -} -func (m *SegmentMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_SegmentMessage.Merge(m, src) -} -func (m *SegmentMessage) XXX_Size() int { - return xxx_messageInfo_SegmentMessage.Size(m) -} -func (m *SegmentMessage) XXX_DiscardUnknown() { - xxx_messageInfo_SegmentMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_SegmentMessage proto.InternalMessageInfo - -func (m *SegmentMessage) GetEntireMessageHash() []byte { - if m != nil { - return m.EntireMessageHash +func (x *SegmentMessage) GetEntireMessageHash() []byte { + if x != nil { + return x.EntireMessageHash } return nil } -func (m *SegmentMessage) GetIndex() uint32 { - if m != nil { - return m.Index +func (x *SegmentMessage) GetIndex() uint32 { + if x != nil { + return x.Index } return 0 } -func (m *SegmentMessage) GetSegmentsCount() uint32 { - if m != nil { - return m.SegmentsCount +func (x *SegmentMessage) GetSegmentsCount() uint32 { + if x != nil { + return x.SegmentsCount } return 0 } -func (m *SegmentMessage) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *SegmentMessage) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func init() { - proto.RegisterType((*SegmentMessage)(nil), "protobuf.SegmentMessage") +var File_segment_message_proto protoreflect.FileDescriptor + +var file_segment_message_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x22, 0x97, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x11, 0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, + 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } -func init() { - proto.RegisterFile("segment_message.proto", fileDescriptor_857302809a887a8b) +var ( + file_segment_message_proto_rawDescOnce sync.Once + file_segment_message_proto_rawDescData = file_segment_message_proto_rawDesc +) + +func file_segment_message_proto_rawDescGZIP() []byte { + file_segment_message_proto_rawDescOnce.Do(func() { + file_segment_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_segment_message_proto_rawDescData) + }) + return file_segment_message_proto_rawDescData } -var fileDescriptor_857302809a887a8b = []byte{ - // 169 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2d, 0x4e, 0x4d, 0xcf, - 0x4d, 0xcd, 0x2b, 0x89, 0xcf, 0x4d, 0x2d, 0x2e, 0x4e, 0x4c, 0x4f, 0xd5, 0x2b, 0x28, 0xca, 0x2f, - 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0xd3, 0x19, 0xb9, 0xf8, 0x82, 0x21, 0x6a, - 0x7c, 0x21, 0x4a, 0x84, 0xf4, 0xb8, 0x84, 0x53, 0xf3, 0x4a, 0x32, 0x8b, 0x52, 0x61, 0x9a, 0xe2, - 0x33, 0x12, 0x8b, 0x33, 0x24, 0x18, 0x15, 0x18, 0x35, 0x78, 0x82, 0x04, 0x21, 0x52, 0x50, 0xb5, - 0x1e, 0x89, 0xc5, 0x19, 0x42, 0x22, 0x5c, 0xac, 0x99, 0x79, 0x29, 0xa9, 0x15, 0x12, 0x4c, 0x0a, - 0x8c, 0x1a, 0xbc, 0x41, 0x10, 0x8e, 0x90, 0x2a, 0x17, 0x1f, 0xd4, 0xee, 0xe2, 0xf8, 0xe4, 0xfc, - 0xd2, 0xbc, 0x12, 0x09, 0x66, 0xb0, 0x34, 0x2f, 0x4c, 0xd4, 0x19, 0x24, 0x28, 0x24, 0xc1, 0xc5, - 0x5e, 0x90, 0x58, 0x99, 0x93, 0x9f, 0x98, 0x22, 0xc1, 0x02, 0xb6, 0x00, 0xc6, 0x75, 0xe2, 0x8d, - 0xe2, 0xd6, 0xd3, 0xb7, 0x86, 0x39, 0x34, 0x89, 0x0d, 0xcc, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, - 0xff, 0x12, 0x40, 0x55, 0x2e, 0xd2, 0x00, 0x00, 0x00, +var file_segment_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_segment_message_proto_goTypes = []interface{}{ + (*SegmentMessage)(nil), // 0: protobuf.SegmentMessage +} +var file_segment_message_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_segment_message_proto_init() } +func file_segment_message_proto_init() { + if File_segment_message_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_segment_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SegmentMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_segment_message_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_segment_message_proto_goTypes, + DependencyIndexes: file_segment_message_proto_depIdxs, + MessageInfos: file_segment_message_proto_msgTypes, + }.Build() + File_segment_message_proto = out.File + file_segment_message_proto_rawDesc = nil + file_segment_message_proto_goTypes = nil + file_segment_message_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/shard.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/shard.pb.go index 5b25fe7a..f7965d03 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/shard.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/shard.pb.go @@ -1,73 +1,85 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: shard.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Shard struct { - Cluster int32 `protobuf:"varint,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Index int32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cluster int32 `protobuf:"varint,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Index int32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` } -func (m *Shard) Reset() { *m = Shard{} } -func (m *Shard) String() string { return proto.CompactTextString(m) } -func (*Shard) ProtoMessage() {} +func (x *Shard) Reset() { + *x = Shard{} + if protoimpl.UnsafeEnabled { + mi := &file_shard_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Shard) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Shard) ProtoMessage() {} + +func (x *Shard) ProtoReflect() protoreflect.Message { + mi := &file_shard_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Shard.ProtoReflect.Descriptor instead. func (*Shard) Descriptor() ([]byte, []int) { - return fileDescriptor_319ea41e44cdc364, []int{0} + return file_shard_proto_rawDescGZIP(), []int{0} } -func (m *Shard) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Shard.Unmarshal(m, b) -} -func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Shard.Marshal(b, m, deterministic) -} -func (m *Shard) XXX_Merge(src proto.Message) { - xxx_messageInfo_Shard.Merge(m, src) -} -func (m *Shard) XXX_Size() int { - return xxx_messageInfo_Shard.Size(m) -} -func (m *Shard) XXX_DiscardUnknown() { - xxx_messageInfo_Shard.DiscardUnknown(m) -} - -var xxx_messageInfo_Shard proto.InternalMessageInfo - -func (m *Shard) GetCluster() int32 { - if m != nil { - return m.Cluster +func (x *Shard) GetCluster() int32 { + if x != nil { + return x.Cluster } return 0 } -func (m *Shard) GetIndex() int32 { - if m != nil { - return m.Index +func (x *Shard) GetIndex() int32 { + if x != nil { + return x.Index } return 0 } type PublicShardInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // clock Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` // community ID @@ -75,139 +87,238 @@ type PublicShardInfo struct { // shard information Shard *Shard `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` // if chainID > 0, the signer must be verified through the community contract - ChainId uint64 `protobuf:"varint,4,opt,name=chainId,proto3" json:"chainId,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ChainId uint64 `protobuf:"varint,4,opt,name=chainId,proto3" json:"chainId,omitempty"` } -func (m *PublicShardInfo) Reset() { *m = PublicShardInfo{} } -func (m *PublicShardInfo) String() string { return proto.CompactTextString(m) } -func (*PublicShardInfo) ProtoMessage() {} +func (x *PublicShardInfo) Reset() { + *x = PublicShardInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_shard_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PublicShardInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublicShardInfo) ProtoMessage() {} + +func (x *PublicShardInfo) ProtoReflect() protoreflect.Message { + mi := &file_shard_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublicShardInfo.ProtoReflect.Descriptor instead. func (*PublicShardInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_319ea41e44cdc364, []int{1} + return file_shard_proto_rawDescGZIP(), []int{1} } -func (m *PublicShardInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PublicShardInfo.Unmarshal(m, b) -} -func (m *PublicShardInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PublicShardInfo.Marshal(b, m, deterministic) -} -func (m *PublicShardInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_PublicShardInfo.Merge(m, src) -} -func (m *PublicShardInfo) XXX_Size() int { - return xxx_messageInfo_PublicShardInfo.Size(m) -} -func (m *PublicShardInfo) XXX_DiscardUnknown() { - xxx_messageInfo_PublicShardInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_PublicShardInfo proto.InternalMessageInfo - -func (m *PublicShardInfo) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *PublicShardInfo) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *PublicShardInfo) GetCommunityId() []byte { - if m != nil { - return m.CommunityId +func (x *PublicShardInfo) GetCommunityId() []byte { + if x != nil { + return x.CommunityId } return nil } -func (m *PublicShardInfo) GetShard() *Shard { - if m != nil { - return m.Shard +func (x *PublicShardInfo) GetShard() *Shard { + if x != nil { + return x.Shard } return nil } -func (m *PublicShardInfo) GetChainId() uint64 { - if m != nil { - return m.ChainId +func (x *PublicShardInfo) GetChainId() uint64 { + if x != nil { + return x.ChainId } return 0 } type CommunityPublicShardInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Signature of the payload field Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` // Marshaled PublicShardInfo - Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` } -func (m *CommunityPublicShardInfo) Reset() { *m = CommunityPublicShardInfo{} } -func (m *CommunityPublicShardInfo) String() string { return proto.CompactTextString(m) } -func (*CommunityPublicShardInfo) ProtoMessage() {} +func (x *CommunityPublicShardInfo) Reset() { + *x = CommunityPublicShardInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_shard_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunityPublicShardInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunityPublicShardInfo) ProtoMessage() {} + +func (x *CommunityPublicShardInfo) ProtoReflect() protoreflect.Message { + mi := &file_shard_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunityPublicShardInfo.ProtoReflect.Descriptor instead. func (*CommunityPublicShardInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_319ea41e44cdc364, []int{2} + return file_shard_proto_rawDescGZIP(), []int{2} } -func (m *CommunityPublicShardInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunityPublicShardInfo.Unmarshal(m, b) -} -func (m *CommunityPublicShardInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunityPublicShardInfo.Marshal(b, m, deterministic) -} -func (m *CommunityPublicShardInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunityPublicShardInfo.Merge(m, src) -} -func (m *CommunityPublicShardInfo) XXX_Size() int { - return xxx_messageInfo_CommunityPublicShardInfo.Size(m) -} -func (m *CommunityPublicShardInfo) XXX_DiscardUnknown() { - xxx_messageInfo_CommunityPublicShardInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunityPublicShardInfo proto.InternalMessageInfo - -func (m *CommunityPublicShardInfo) GetSignature() []byte { - if m != nil { - return m.Signature +func (x *CommunityPublicShardInfo) GetSignature() []byte { + if x != nil { + return x.Signature } return nil } -func (m *CommunityPublicShardInfo) GetPayload() []byte { - if m != nil { - return m.Payload +func (x *CommunityPublicShardInfo) GetPayload() []byte { + if x != nil { + return x.Payload } return nil } -func init() { - proto.RegisterType((*Shard)(nil), "protobuf.Shard") - proto.RegisterType((*PublicShardInfo)(nil), "protobuf.PublicShardInfo") - proto.RegisterType((*CommunityPublicShardInfo)(nil), "protobuf.CommunityPublicShardInfo") +var File_shard_proto protoreflect.FileDescriptor + +var file_shard_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x37, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x22, 0x8b, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x53, 0x68, 0x61, 0x72, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x52, + 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x53, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("shard.proto", fileDescriptor_319ea41e44cdc364) +var ( + file_shard_proto_rawDescOnce sync.Once + file_shard_proto_rawDescData = file_shard_proto_rawDesc +) + +func file_shard_proto_rawDescGZIP() []byte { + file_shard_proto_rawDescOnce.Do(func() { + file_shard_proto_rawDescData = protoimpl.X.CompressGZIP(file_shard_proto_rawDescData) + }) + return file_shard_proto_rawDescData } -var fileDescriptor_319ea41e44cdc364 = []byte{ - // 231 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x8e, 0x3d, 0x4f, 0x04, 0x21, - 0x10, 0x86, 0x83, 0x1e, 0x7e, 0x0c, 0x6b, 0x2e, 0x21, 0x16, 0x14, 0x16, 0xe7, 0x26, 0x26, 0x57, - 0x61, 0xa2, 0x85, 0x85, 0x9d, 0x56, 0xdb, 0x19, 0xec, 0x6c, 0x0c, 0x0b, 0x7b, 0x1e, 0x91, 0x83, - 0x0b, 0x0b, 0x89, 0xf7, 0x1b, 0xfc, 0xd3, 0x66, 0x67, 0x83, 0x26, 0x56, 0xf0, 0xbe, 0x03, 0xcf, - 0x3c, 0xc0, 0xc6, 0xad, 0x4e, 0x56, 0xee, 0x53, 0xcc, 0x91, 0x9f, 0xe1, 0xd1, 0x97, 0x4d, 0xfb, - 0x00, 0xf4, 0x75, 0x1a, 0x70, 0x01, 0xa7, 0xc6, 0x97, 0x31, 0x0f, 0x49, 0x90, 0x15, 0x59, 0x53, - 0x55, 0x23, 0xbf, 0x04, 0xea, 0x82, 0x1d, 0xbe, 0xc4, 0x11, 0xf6, 0x73, 0x68, 0xbf, 0x09, 0x2c, - 0x5f, 0x4a, 0xef, 0x9d, 0xc1, 0xff, 0x5d, 0xd8, 0xc4, 0xe9, 0xa5, 0xf1, 0xd1, 0x7c, 0x22, 0x61, - 0xa1, 0xe6, 0xc0, 0xaf, 0xa1, 0x31, 0x71, 0xb7, 0x2b, 0xc1, 0xe5, 0xc3, 0xbb, 0xb3, 0x88, 0x69, - 0x14, 0xfb, 0xed, 0x3a, 0xcb, 0x6f, 0x80, 0xa2, 0x9e, 0x38, 0x5e, 0x91, 0x35, 0xbb, 0x5b, 0xca, - 0xea, 0x27, 0x11, 0xae, 0xe6, 0x29, 0x3a, 0x6e, 0xb5, 0x0b, 0x9d, 0x15, 0x0b, 0xdc, 0x50, 0x63, - 0xab, 0x40, 0x3c, 0x57, 0xde, 0x7f, 0xab, 0x2b, 0x38, 0x1f, 0xdd, 0x47, 0xd0, 0xb9, 0xa4, 0x01, - 0xcd, 0x1a, 0xf5, 0x57, 0x4c, 0xcc, 0xbd, 0x3e, 0xf8, 0xa8, 0xab, 0x58, 0x8d, 0x4f, 0x17, 0x6f, - 0x4c, 0xde, 0x3e, 0x56, 0x93, 0xfe, 0x04, 0x6f, 0xf7, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa5, - 0xbd, 0x3b, 0xd5, 0x49, 0x01, 0x00, 0x00, +var file_shard_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_shard_proto_goTypes = []interface{}{ + (*Shard)(nil), // 0: protobuf.Shard + (*PublicShardInfo)(nil), // 1: protobuf.PublicShardInfo + (*CommunityPublicShardInfo)(nil), // 2: protobuf.CommunityPublicShardInfo +} +var file_shard_proto_depIdxs = []int32{ + 0, // 0: protobuf.PublicShardInfo.shard:type_name -> protobuf.Shard + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_shard_proto_init() } +func file_shard_proto_init() { + if File_shard_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_shard_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Shard); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_shard_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PublicShardInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_shard_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunityPublicShardInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_shard_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_shard_proto_goTypes, + DependencyIndexes: file_shard_proto_depIdxs, + MessageInfos: file_shard_proto_msgTypes, + }.Build() + File_shard_proto = out.File + file_shard_proto_rawDesc = nil + file_shard_proto_goTypes = nil + file_shard_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/status_update.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/status_update.pb.go index 399b7d5a..409302f8 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/status_update.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/status_update.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: status_update.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type StatusUpdate_StatusType int32 @@ -30,28 +30,49 @@ const ( StatusUpdate_INACTIVE StatusUpdate_StatusType = 4 ) -var StatusUpdate_StatusType_name = map[int32]string{ - 0: "UNKNOWN_STATUS_TYPE", - 1: "AUTOMATIC", - 2: "DO_NOT_DISTURB", - 3: "ALWAYS_ONLINE", - 4: "INACTIVE", -} +// Enum value maps for StatusUpdate_StatusType. +var ( + StatusUpdate_StatusType_name = map[int32]string{ + 0: "UNKNOWN_STATUS_TYPE", + 1: "AUTOMATIC", + 2: "DO_NOT_DISTURB", + 3: "ALWAYS_ONLINE", + 4: "INACTIVE", + } + StatusUpdate_StatusType_value = map[string]int32{ + "UNKNOWN_STATUS_TYPE": 0, + "AUTOMATIC": 1, + "DO_NOT_DISTURB": 2, + "ALWAYS_ONLINE": 3, + "INACTIVE": 4, + } +) -var StatusUpdate_StatusType_value = map[string]int32{ - "UNKNOWN_STATUS_TYPE": 0, - "AUTOMATIC": 1, - "DO_NOT_DISTURB": 2, - "ALWAYS_ONLINE": 3, - "INACTIVE": 4, +func (x StatusUpdate_StatusType) Enum() *StatusUpdate_StatusType { + p := new(StatusUpdate_StatusType) + *p = x + return p } func (x StatusUpdate_StatusType) String() string { - return proto.EnumName(StatusUpdate_StatusType_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (StatusUpdate_StatusType) Descriptor() protoreflect.EnumDescriptor { + return file_status_update_proto_enumTypes[0].Descriptor() +} + +func (StatusUpdate_StatusType) Type() protoreflect.EnumType { + return &file_status_update_proto_enumTypes[0] +} + +func (x StatusUpdate_StatusType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatusUpdate_StatusType.Descriptor instead. func (StatusUpdate_StatusType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_911acd91e62cd3d7, []int{0, 0} + return file_status_update_proto_rawDescGZIP(), []int{0, 0} } // Specs: @@ -66,85 +87,155 @@ func (StatusUpdate_StatusType) EnumDescriptor() ([]byte, []int) { // Display - Offline forever // Note: Only send pings if the user interacted with the app in the last x minutes. type StatusUpdate struct { - Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` - StatusType StatusUpdate_StatusType `protobuf:"varint,2,opt,name=status_type,json=statusType,proto3,enum=protobuf.StatusUpdate_StatusType" json:"status_type,omitempty"` - CustomText string `protobuf:"bytes,3,opt,name=custom_text,json=customText,proto3" json:"custom_text,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + StatusType StatusUpdate_StatusType `protobuf:"varint,2,opt,name=status_type,json=statusType,proto3,enum=protobuf.StatusUpdate_StatusType" json:"status_type,omitempty"` + CustomText string `protobuf:"bytes,3,opt,name=custom_text,json=customText,proto3" json:"custom_text,omitempty"` } -func (m *StatusUpdate) Reset() { *m = StatusUpdate{} } -func (m *StatusUpdate) String() string { return proto.CompactTextString(m) } -func (*StatusUpdate) ProtoMessage() {} +func (x *StatusUpdate) Reset() { + *x = StatusUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_status_update_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatusUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusUpdate) ProtoMessage() {} + +func (x *StatusUpdate) ProtoReflect() protoreflect.Message { + mi := &file_status_update_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatusUpdate.ProtoReflect.Descriptor instead. func (*StatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_911acd91e62cd3d7, []int{0} + return file_status_update_proto_rawDescGZIP(), []int{0} } -func (m *StatusUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StatusUpdate.Unmarshal(m, b) -} -func (m *StatusUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_StatusUpdate.Marshal(b, m, deterministic) -} -func (m *StatusUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_StatusUpdate.Merge(m, src) -} -func (m *StatusUpdate) XXX_Size() int { - return xxx_messageInfo_StatusUpdate.Size(m) -} -func (m *StatusUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_StatusUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_StatusUpdate proto.InternalMessageInfo - -func (m *StatusUpdate) GetClock() uint64 { - if m != nil { - return m.Clock +func (x *StatusUpdate) GetClock() uint64 { + if x != nil { + return x.Clock } return 0 } -func (m *StatusUpdate) GetStatusType() StatusUpdate_StatusType { - if m != nil { - return m.StatusType +func (x *StatusUpdate) GetStatusType() StatusUpdate_StatusType { + if x != nil { + return x.StatusType } return StatusUpdate_UNKNOWN_STATUS_TYPE } -func (m *StatusUpdate) GetCustomText() string { - if m != nil { - return m.CustomText +func (x *StatusUpdate) GetCustomText() string { + if x != nil { + return x.CustomText } return "" } -func init() { - proto.RegisterEnum("protobuf.StatusUpdate_StatusType", StatusUpdate_StatusType_name, StatusUpdate_StatusType_value) - proto.RegisterType((*StatusUpdate)(nil), "protobuf.StatusUpdate") +var File_status_update_proto protoreflect.FileDescriptor + +var file_status_update_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, + 0xf4, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x65, 0x78, 0x74, 0x22, 0x69, 0x0a, 0x0a, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, + 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, + 0x55, 0x52, 0x42, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x57, 0x41, 0x59, 0x53, 0x5f, + 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x10, 0x04, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("status_update.proto", fileDescriptor_911acd91e62cd3d7) +var ( + file_status_update_proto_rawDescOnce sync.Once + file_status_update_proto_rawDescData = file_status_update_proto_rawDesc +) + +func file_status_update_proto_rawDescGZIP() []byte { + file_status_update_proto_rawDescOnce.Do(func() { + file_status_update_proto_rawDescData = protoimpl.X.CompressGZIP(file_status_update_proto_rawDescData) + }) + return file_status_update_proto_rawDescData } -var fileDescriptor_911acd91e62cd3d7 = []byte{ - // 253 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8e, 0xc1, 0x4e, 0xc2, 0x40, - 0x10, 0x86, 0x5d, 0x40, 0x03, 0x53, 0x4a, 0xea, 0x60, 0x62, 0x6f, 0x56, 0x4e, 0x3d, 0xd5, 0x44, - 0x8f, 0x9e, 0xb6, 0xd0, 0x43, 0x23, 0x6e, 0x4d, 0x77, 0x56, 0x82, 0x97, 0x0d, 0xd4, 0x35, 0x31, - 0x6a, 0xda, 0xd8, 0x6d, 0x02, 0xef, 0xed, 0x03, 0x98, 0x14, 0x50, 0x4e, 0xf3, 0xff, 0x93, 0x6f, - 0xbe, 0x0c, 0x8c, 0x6b, 0xbb, 0xb2, 0x4d, 0xad, 0x9b, 0xea, 0x75, 0x65, 0x4d, 0x54, 0x7d, 0x97, - 0xb6, 0xc4, 0x7e, 0x3b, 0xd6, 0xcd, 0xdb, 0xe4, 0x87, 0xc1, 0x50, 0xb6, 0x84, 0x6a, 0x01, 0xbc, - 0x80, 0xd3, 0xe2, 0xb3, 0x2c, 0x3e, 0x7c, 0x16, 0xb0, 0xb0, 0x97, 0xef, 0x0a, 0xc6, 0xe0, 0xec, - 0x3d, 0x76, 0x5b, 0x19, 0xbf, 0x13, 0xb0, 0x70, 0x74, 0x7b, 0x1d, 0x1d, 0x34, 0xd1, 0xb1, 0x62, - 0x5f, 0x68, 0x5b, 0x99, 0x1c, 0xea, 0xbf, 0x8c, 0x57, 0xe0, 0x14, 0x4d, 0x6d, 0xcb, 0x2f, 0x6d, - 0xcd, 0xc6, 0xfa, 0xdd, 0x80, 0x85, 0x83, 0x1c, 0x76, 0x2b, 0x32, 0x1b, 0x3b, 0x79, 0x07, 0xf8, - 0x3f, 0xc5, 0x4b, 0x18, 0x2b, 0xf1, 0x20, 0xb2, 0x85, 0xd0, 0x92, 0x38, 0x29, 0xa9, 0x69, 0xf9, - 0x94, 0x78, 0x27, 0xe8, 0xc2, 0x80, 0x2b, 0xca, 0x1e, 0x39, 0xa5, 0x53, 0x8f, 0x21, 0xc2, 0x68, - 0x96, 0x69, 0x91, 0x91, 0x9e, 0xa5, 0x92, 0x54, 0x1e, 0x7b, 0x1d, 0x3c, 0x07, 0x97, 0xcf, 0x17, - 0x7c, 0x29, 0x75, 0x26, 0xe6, 0xa9, 0x48, 0xbc, 0x2e, 0x0e, 0xa1, 0x9f, 0x0a, 0x3e, 0xa5, 0xf4, - 0x39, 0xf1, 0x7a, 0xb1, 0xfb, 0xe2, 0x44, 0x37, 0xf7, 0x87, 0xf7, 0xd7, 0x67, 0x6d, 0xba, 0xfb, - 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xa1, 0x52, 0x1d, 0x2d, 0x01, 0x00, 0x00, +var file_status_update_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_status_update_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_status_update_proto_goTypes = []interface{}{ + (StatusUpdate_StatusType)(0), // 0: protobuf.StatusUpdate.StatusType + (*StatusUpdate)(nil), // 1: protobuf.StatusUpdate +} +var file_status_update_proto_depIdxs = []int32{ + 0, // 0: protobuf.StatusUpdate.status_type:type_name -> protobuf.StatusUpdate.StatusType + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_status_update_proto_init() } +func file_status_update_proto_init() { + if File_status_update_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_status_update_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatusUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_status_update_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_status_update_proto_goTypes, + DependencyIndexes: file_status_update_proto_depIdxs, + EnumInfos: file_status_update_proto_enumTypes, + MessageInfos: file_status_update_proto_msgTypes, + }.Build() + File_status_update_proto = out.File + file_status_update_proto_rawDesc = nil + file_status_update_proto_goTypes = nil + file_status_update_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/sync_settings.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/sync_settings.pb.go index 7eeb0340..9d1fba07 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/sync_settings.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/sync_settings.pb.go @@ -1,24 +1,24 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: sync_settings.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type SyncSetting_Type int32 @@ -45,110 +45,174 @@ const ( SyncSetting_DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD SyncSetting_Type = 21 ) -var SyncSetting_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CURRENCY", - 2: "GIF_RECENTS", - 3: "GIF_FAVOURITES", - 4: "MESSAGES_FROM_CONTACTS_ONLY", - 5: "PREFERRED_NAME", - 6: "PREVIEW_PRIVACY", - 7: "PROFILE_PICTURES_SHOW_TO", - 8: "PROFILE_PICTURES_VISIBILITY", - 9: "SEND_STATUS_UPDATES", - 10: "STICKERS_PACKS_INSTALLED", - 11: "STICKERS_PACKS_PENDING", - 12: "STICKERS_RECENT_STICKERS", - 13: "DISPLAY_NAME", - 14: "BIO", - 15: "MNEMONIC_REMOVED", - 18: "URL_UNFURLING_MODE", - 19: "SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS", - 20: "DISPLAY_ASSETS_BELOW_BALANCE", - 21: "DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD", -} +// Enum value maps for SyncSetting_Type. +var ( + SyncSetting_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CURRENCY", + 2: "GIF_RECENTS", + 3: "GIF_FAVOURITES", + 4: "MESSAGES_FROM_CONTACTS_ONLY", + 5: "PREFERRED_NAME", + 6: "PREVIEW_PRIVACY", + 7: "PROFILE_PICTURES_SHOW_TO", + 8: "PROFILE_PICTURES_VISIBILITY", + 9: "SEND_STATUS_UPDATES", + 10: "STICKERS_PACKS_INSTALLED", + 11: "STICKERS_PACKS_PENDING", + 12: "STICKERS_RECENT_STICKERS", + 13: "DISPLAY_NAME", + 14: "BIO", + 15: "MNEMONIC_REMOVED", + 18: "URL_UNFURLING_MODE", + 19: "SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS", + 20: "DISPLAY_ASSETS_BELOW_BALANCE", + 21: "DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD", + } + SyncSetting_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CURRENCY": 1, + "GIF_RECENTS": 2, + "GIF_FAVOURITES": 3, + "MESSAGES_FROM_CONTACTS_ONLY": 4, + "PREFERRED_NAME": 5, + "PREVIEW_PRIVACY": 6, + "PROFILE_PICTURES_SHOW_TO": 7, + "PROFILE_PICTURES_VISIBILITY": 8, + "SEND_STATUS_UPDATES": 9, + "STICKERS_PACKS_INSTALLED": 10, + "STICKERS_PACKS_PENDING": 11, + "STICKERS_RECENT_STICKERS": 12, + "DISPLAY_NAME": 13, + "BIO": 14, + "MNEMONIC_REMOVED": 15, + "URL_UNFURLING_MODE": 18, + "SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS": 19, + "DISPLAY_ASSETS_BELOW_BALANCE": 20, + "DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD": 21, + } +) -var SyncSetting_Type_value = map[string]int32{ - "UNKNOWN": 0, - "CURRENCY": 1, - "GIF_RECENTS": 2, - "GIF_FAVOURITES": 3, - "MESSAGES_FROM_CONTACTS_ONLY": 4, - "PREFERRED_NAME": 5, - "PREVIEW_PRIVACY": 6, - "PROFILE_PICTURES_SHOW_TO": 7, - "PROFILE_PICTURES_VISIBILITY": 8, - "SEND_STATUS_UPDATES": 9, - "STICKERS_PACKS_INSTALLED": 10, - "STICKERS_PACKS_PENDING": 11, - "STICKERS_RECENT_STICKERS": 12, - "DISPLAY_NAME": 13, - "BIO": 14, - "MNEMONIC_REMOVED": 15, - "URL_UNFURLING_MODE": 18, - "SHOW_COMMUNITY_ASSET_WHEN_SENDING_TOKENS": 19, - "DISPLAY_ASSETS_BELOW_BALANCE": 20, - "DISPLAY_ASSETS_BELOW_BALANCE_THRESHOLD": 21, +func (x SyncSetting_Type) Enum() *SyncSetting_Type { + p := new(SyncSetting_Type) + *p = x + return p } func (x SyncSetting_Type) String() string { - return proto.EnumName(SyncSetting_Type_name, int32(x)) + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } +func (SyncSetting_Type) Descriptor() protoreflect.EnumDescriptor { + return file_sync_settings_proto_enumTypes[0].Descriptor() +} + +func (SyncSetting_Type) Type() protoreflect.EnumType { + return &file_sync_settings_proto_enumTypes[0] +} + +func (x SyncSetting_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SyncSetting_Type.Descriptor instead. func (SyncSetting_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_e2f7a0bce2873c78, []int{0, 0} + return file_sync_settings_proto_rawDescGZIP(), []int{0, 0} } type SyncSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Type SyncSetting_Type `protobuf:"varint,1,opt,name=type,proto3,enum=protobuf.SyncSetting_Type" json:"type,omitempty"` Clock uint64 `protobuf:"varint,2,opt,name=clock,proto3" json:"clock,omitempty"` - // Types that are valid to be assigned to Value: + // Types that are assignable to Value: // // *SyncSetting_ValueString // *SyncSetting_ValueBytes // *SyncSetting_ValueBool // *SyncSetting_ValueInt64 - Value isSyncSetting_Value `protobuf_oneof:"value"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value isSyncSetting_Value `protobuf_oneof:"value"` } -func (m *SyncSetting) Reset() { *m = SyncSetting{} } -func (m *SyncSetting) String() string { return proto.CompactTextString(m) } -func (*SyncSetting) ProtoMessage() {} +func (x *SyncSetting) Reset() { + *x = SyncSetting{} + if protoimpl.UnsafeEnabled { + mi := &file_sync_settings_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncSetting) ProtoMessage() {} + +func (x *SyncSetting) ProtoReflect() protoreflect.Message { + mi := &file_sync_settings_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncSetting.ProtoReflect.Descriptor instead. func (*SyncSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_e2f7a0bce2873c78, []int{0} + return file_sync_settings_proto_rawDescGZIP(), []int{0} } -func (m *SyncSetting) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SyncSetting.Unmarshal(m, b) -} -func (m *SyncSetting) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SyncSetting.Marshal(b, m, deterministic) -} -func (m *SyncSetting) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncSetting.Merge(m, src) -} -func (m *SyncSetting) XXX_Size() int { - return xxx_messageInfo_SyncSetting.Size(m) -} -func (m *SyncSetting) XXX_DiscardUnknown() { - xxx_messageInfo_SyncSetting.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncSetting proto.InternalMessageInfo - -func (m *SyncSetting) GetType() SyncSetting_Type { - if m != nil { - return m.Type +func (x *SyncSetting) GetType() SyncSetting_Type { + if x != nil { + return x.Type } return SyncSetting_UNKNOWN } -func (m *SyncSetting) GetClock() uint64 { +func (x *SyncSetting) GetClock() uint64 { + if x != nil { + return x.Clock + } + return 0 +} + +func (m *SyncSetting) GetValue() isSyncSetting_Value { if m != nil { - return m.Clock + return m.Value + } + return nil +} + +func (x *SyncSetting) GetValueString() string { + if x, ok := x.GetValue().(*SyncSetting_ValueString); ok { + return x.ValueString + } + return "" +} + +func (x *SyncSetting) GetValueBytes() []byte { + if x, ok := x.GetValue().(*SyncSetting_ValueBytes); ok { + return x.ValueBytes + } + return nil +} + +func (x *SyncSetting) GetValueBool() bool { + if x, ok := x.GetValue().(*SyncSetting_ValueBool); ok { + return x.ValueBool + } + return false +} + +func (x *SyncSetting) GetValueInt64() int64 { + if x, ok := x.GetValue().(*SyncSetting_ValueInt64); ok { + return x.ValueInt64 } return 0 } @@ -181,98 +245,134 @@ func (*SyncSetting_ValueBool) isSyncSetting_Value() {} func (*SyncSetting_ValueInt64) isSyncSetting_Value() {} -func (m *SyncSetting) GetValue() isSyncSetting_Value { - if m != nil { - return m.Value - } - return nil +var File_sync_settings_proto protoreflect.FileDescriptor + +var file_sync_settings_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, + 0xa6, 0x06, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, + 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x21, + 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x74, 0x36, + 0x34, 0x22, 0xbb, 0x04, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x55, 0x52, 0x52, 0x45, + 0x4e, 0x43, 0x59, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x49, 0x46, 0x5f, 0x52, 0x45, 0x43, + 0x45, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x49, 0x46, 0x5f, 0x46, 0x41, + 0x56, 0x4f, 0x55, 0x52, 0x49, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x45, + 0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x41, 0x43, 0x54, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x50, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, + 0x43, 0x59, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x50, 0x49, 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x54, 0x4f, + 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x50, 0x49, + 0x43, 0x54, 0x55, 0x52, 0x45, 0x53, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, + 0x59, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x10, 0x09, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, + 0x49, 0x43, 0x4b, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x50, 0x45, 0x4e, + 0x44, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, + 0x52, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x49, 0x43, 0x4b, 0x45, + 0x52, 0x53, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, + 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x0d, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x49, 0x4f, 0x10, 0x0e, 0x12, + 0x14, 0x0a, 0x10, 0x4d, 0x4e, 0x45, 0x4d, 0x4f, 0x4e, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x4d, 0x4f, + 0x56, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x52, 0x4c, 0x5f, 0x55, 0x4e, 0x46, + 0x55, 0x52, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x12, 0x12, 0x2c, 0x0a, + 0x28, 0x53, 0x48, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x5f, + 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x57, 0x48, 0x45, 0x4e, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x49, + 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x13, 0x12, 0x20, 0x0a, 0x1c, 0x44, + 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x53, 0x5f, 0x42, 0x45, + 0x4c, 0x4f, 0x57, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x14, 0x12, 0x2a, 0x0a, + 0x26, 0x44, 0x49, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x53, 0x5f, + 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x48, + 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x15, 0x22, 0x04, 0x08, 0x10, 0x10, 0x10, 0x22, + 0x04, 0x08, 0x11, 0x10, 0x11, 0x2a, 0x0d, 0x45, 0x4e, 0x53, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x4e, + 0x41, 0x4d, 0x45, 0x53, 0x2a, 0x19, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x5f, 0x57, 0x41, + 0x54, 0x43, 0x48, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x42, + 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func (m *SyncSetting) GetValueString() string { - if x, ok := m.GetValue().(*SyncSetting_ValueString); ok { - return x.ValueString - } - return "" +var ( + file_sync_settings_proto_rawDescOnce sync.Once + file_sync_settings_proto_rawDescData = file_sync_settings_proto_rawDesc +) + +func file_sync_settings_proto_rawDescGZIP() []byte { + file_sync_settings_proto_rawDescOnce.Do(func() { + file_sync_settings_proto_rawDescData = protoimpl.X.CompressGZIP(file_sync_settings_proto_rawDescData) + }) + return file_sync_settings_proto_rawDescData } -func (m *SyncSetting) GetValueBytes() []byte { - if x, ok := m.GetValue().(*SyncSetting_ValueBytes); ok { - return x.ValueBytes - } - return nil +var file_sync_settings_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_sync_settings_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_sync_settings_proto_goTypes = []interface{}{ + (SyncSetting_Type)(0), // 0: protobuf.SyncSetting.Type + (*SyncSetting)(nil), // 1: protobuf.SyncSetting +} +var file_sync_settings_proto_depIdxs = []int32{ + 0, // 0: protobuf.SyncSetting.type:type_name -> protobuf.SyncSetting.Type + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } -func (m *SyncSetting) GetValueBool() bool { - if x, ok := m.GetValue().(*SyncSetting_ValueBool); ok { - return x.ValueBool +func init() { file_sync_settings_proto_init() } +func file_sync_settings_proto_init() { + if File_sync_settings_proto != nil { + return } - return false -} - -func (m *SyncSetting) GetValueInt64() int64 { - if x, ok := m.GetValue().(*SyncSetting_ValueInt64); ok { - return x.ValueInt64 + if !protoimpl.UnsafeEnabled { + file_sync_settings_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncSetting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - return 0 -} - -// XXX_OneofWrappers is for the internal use of the proto package. -func (*SyncSetting) XXX_OneofWrappers() []interface{} { - return []interface{}{ + file_sync_settings_proto_msgTypes[0].OneofWrappers = []interface{}{ (*SyncSetting_ValueString)(nil), (*SyncSetting_ValueBytes)(nil), (*SyncSetting_ValueBool)(nil), (*SyncSetting_ValueInt64)(nil), } -} - -func init() { - proto.RegisterEnum("protobuf.SyncSetting_Type", SyncSetting_Type_name, SyncSetting_Type_value) - proto.RegisterType((*SyncSetting)(nil), "protobuf.SyncSetting") -} - -func init() { - proto.RegisterFile("sync_settings.proto", fileDescriptor_e2f7a0bce2873c78) -} - -var fileDescriptor_e2f7a0bce2873c78 = []byte{ - // 601 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x5b, 0x6f, 0x1a, 0x3b, - 0x10, 0xc7, 0xd9, 0xb0, 0x5c, 0x62, 0x48, 0xe2, 0x98, 0x9c, 0x1c, 0x4e, 0x4e, 0xa4, 0x50, 0x2a, - 0x55, 0x28, 0xaa, 0xa8, 0xd4, 0x56, 0x7d, 0xe9, 0x93, 0xf1, 0x0e, 0xac, 0xc5, 0xae, 0xbd, 0xb2, - 0xbd, 0x20, 0xfa, 0x32, 0x6a, 0x10, 0x8d, 0xa2, 0x22, 0x88, 0x02, 0xa9, 0xc4, 0x17, 0xea, 0x97, - 0xe8, 0x97, 0xab, 0x76, 0xb7, 0xf4, 0x2a, 0xf5, 0xc9, 0x9e, 0xff, 0xfc, 0xe6, 0xe6, 0x0b, 0x69, - 0x6d, 0x76, 0xab, 0x39, 0x6e, 0x16, 0xdb, 0xed, 0xdd, 0xea, 0x76, 0xd3, 0xbf, 0x7f, 0x58, 0x6f, - 0xd7, 0xac, 0x9e, 0x2f, 0x37, 0x8f, 0x1f, 0xba, 0x9f, 0xab, 0xa4, 0x61, 0x77, 0xab, 0xb9, 0x2d, - 0x00, 0xd6, 0x27, 0xfe, 0x76, 0x77, 0xbf, 0x68, 0x7b, 0x1d, 0xaf, 0x77, 0xfc, 0xf2, 0xa2, 0xbf, - 0x07, 0xfb, 0x3f, 0x41, 0x7d, 0xb7, 0xbb, 0x5f, 0x98, 0x9c, 0x63, 0x67, 0xa4, 0x32, 0x5f, 0xae, - 0xe7, 0x1f, 0xdb, 0x07, 0x1d, 0xaf, 0xe7, 0x9b, 0xc2, 0x60, 0x4f, 0x49, 0xf3, 0xd3, 0xfb, 0xe5, - 0xe3, 0x02, 0x37, 0xdb, 0x87, 0xbb, 0xd5, 0x6d, 0xbb, 0xdc, 0xf1, 0x7a, 0x87, 0x61, 0xc9, 0x34, - 0x72, 0xd5, 0xe6, 0x22, 0x7b, 0x42, 0x0a, 0x13, 0x6f, 0x76, 0xdb, 0xc5, 0xa6, 0xed, 0x77, 0xbc, - 0x5e, 0x33, 0x2c, 0x19, 0x92, 0x8b, 0x83, 0x4c, 0x63, 0x57, 0x84, 0x7c, 0x43, 0xd6, 0xeb, 0x65, - 0xbb, 0xd2, 0xf1, 0x7a, 0xf5, 0xb0, 0x64, 0x0e, 0x0b, 0x62, 0xbd, 0x5e, 0xfe, 0xc8, 0x71, 0xb7, - 0xda, 0xbe, 0x79, 0xdd, 0xae, 0x76, 0xbc, 0x5e, 0xf9, 0x7b, 0x0e, 0x99, 0x69, 0xdd, 0x2f, 0x3e, - 0xf1, 0xb3, 0x86, 0x59, 0x83, 0xd4, 0x52, 0x35, 0x56, 0x7a, 0xaa, 0x68, 0x89, 0x35, 0x49, 0x5d, - 0xa4, 0xc6, 0x80, 0x12, 0x33, 0xea, 0xb1, 0x13, 0xd2, 0x18, 0xc9, 0x21, 0x1a, 0x10, 0xa0, 0x9c, - 0xa5, 0x07, 0x8c, 0x91, 0xe3, 0x4c, 0x18, 0xf2, 0x89, 0x4e, 0x8d, 0x74, 0x60, 0x69, 0x99, 0x5d, - 0x91, 0xff, 0x63, 0xb0, 0x96, 0x8f, 0xc0, 0xe2, 0xd0, 0xe8, 0x18, 0x85, 0x56, 0x8e, 0x0b, 0x67, - 0x51, 0xab, 0x68, 0x46, 0xfd, 0x2c, 0x28, 0x31, 0x30, 0x04, 0x63, 0x20, 0x40, 0xc5, 0x63, 0xa0, - 0x15, 0xd6, 0x22, 0x27, 0x89, 0x81, 0x89, 0x84, 0x29, 0x26, 0x46, 0x4e, 0xb8, 0x98, 0xd1, 0x2a, - 0xbb, 0x24, 0xed, 0xc4, 0xe8, 0xa1, 0x8c, 0x00, 0x13, 0x29, 0x5c, 0x6a, 0xc0, 0xa2, 0x0d, 0xf5, - 0x14, 0x9d, 0xa6, 0xb5, 0xac, 0xce, 0x1f, 0xde, 0x89, 0xb4, 0x72, 0x20, 0x23, 0xe9, 0x66, 0xb4, - 0xce, 0xfe, 0x25, 0x2d, 0x0b, 0x2a, 0x40, 0xeb, 0xb8, 0x4b, 0x2d, 0xa6, 0x49, 0xc0, 0xb3, 0x0e, - 0x0f, 0xb3, 0xbc, 0xd6, 0x49, 0x31, 0x06, 0x63, 0x31, 0xe1, 0x62, 0x6c, 0x51, 0x2a, 0xeb, 0x78, - 0x14, 0x41, 0x40, 0x09, 0xbb, 0x20, 0xe7, 0xbf, 0x79, 0x13, 0x50, 0x81, 0x54, 0x23, 0xda, 0xf8, - 0x25, 0xb2, 0x38, 0x05, 0xdc, 0xdb, 0xb4, 0xc9, 0x28, 0x69, 0x06, 0xd2, 0x26, 0x11, 0x9f, 0x15, - 0x63, 0x1d, 0xb1, 0x1a, 0x29, 0x0f, 0xa4, 0xa6, 0xc7, 0xec, 0x8c, 0xd0, 0x58, 0x41, 0xac, 0x95, - 0x14, 0x68, 0x20, 0xd6, 0x13, 0x08, 0xe8, 0x09, 0x3b, 0x27, 0x2c, 0x35, 0x11, 0xa6, 0x6a, 0x98, - 0x9a, 0x48, 0xaa, 0x11, 0xc6, 0x3a, 0x00, 0xca, 0xd8, 0x73, 0xd2, 0xcb, 0xe7, 0x14, 0x3a, 0x8e, - 0x53, 0x25, 0xdd, 0x0c, 0xb9, 0xb5, 0xe0, 0x70, 0x1a, 0x82, 0x42, 0x5b, 0x74, 0x83, 0x4e, 0x8f, - 0x41, 0x59, 0xda, 0x62, 0x1d, 0x72, 0xb9, 0x2f, 0x9b, 0x63, 0x16, 0x07, 0x10, 0xe9, 0x29, 0x0e, - 0x78, 0xc4, 0x95, 0x00, 0x7a, 0xc6, 0xae, 0xc9, 0xb3, 0xbf, 0x11, 0xe8, 0x42, 0x03, 0x36, 0xd4, - 0x51, 0x40, 0xff, 0xe9, 0xfa, 0x75, 0x4a, 0x69, 0xd7, 0xaf, 0x9f, 0xd2, 0xd3, 0xeb, 0x23, 0x50, - 0x16, 0x53, 0x0b, 0x26, 0x1b, 0xc7, 0x5e, 0xff, 0x27, 0x95, 0x88, 0xd2, 0x00, 0x70, 0xca, 0x9d, - 0x08, 0xb3, 0xdb, 0x44, 0x2e, 0x84, 0x4e, 0x95, 0x1b, 0xd4, 0x48, 0xa5, 0x78, 0x6d, 0x47, 0xef, - 0x1a, 0xfd, 0x17, 0x6f, 0xf7, 0xdf, 0xe1, 0xa6, 0x9a, 0xef, 0x5e, 0x7d, 0x0d, 0x00, 0x00, 0xff, - 0xff, 0x57, 0x49, 0x09, 0x47, 0x5f, 0x03, 0x00, 0x00, + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_sync_settings_proto_rawDesc, + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_sync_settings_proto_goTypes, + DependencyIndexes: file_sync_settings_proto_depIdxs, + EnumInfos: file_sync_settings_proto_enumTypes, + MessageInfos: file_sync_settings_proto_msgTypes, + }.Build() + File_sync_settings_proto = out.File + file_sync_settings_proto_rawDesc = nil + file_sync_settings_proto_goTypes = nil + file_sync_settings_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/protobuf/url_data.pb.go b/vendor/github.com/status-im/status-go/protocol/protobuf/url_data.pb.go index 5ce9fc21..d8a9ee00 100644 --- a/vendor/github.com/status-im/status-go/protocol/protobuf/url_data.pb.go +++ b/vendor/github.com/status-im/status-go/protocol/protobuf/url_data.pb.go @@ -1,310 +1,455 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.1 +// protoc v3.20.3 // source: url_data.proto package protobuf import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) type Community struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - MembersCount uint32 `protobuf:"varint,3,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` - Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` - TagIndices []uint32 `protobuf:"varint,5,rep,packed,name=tag_indices,json=tagIndices,proto3" json:"tag_indices,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + MembersCount uint32 `protobuf:"varint,3,opt,name=members_count,json=membersCount,proto3" json:"members_count,omitempty"` + Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` + TagIndices []uint32 `protobuf:"varint,5,rep,packed,name=tag_indices,json=tagIndices,proto3" json:"tag_indices,omitempty"` } -func (m *Community) Reset() { *m = Community{} } -func (m *Community) String() string { return proto.CompactTextString(m) } -func (*Community) ProtoMessage() {} +func (x *Community) Reset() { + *x = Community{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Community) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Community) ProtoMessage() {} + +func (x *Community) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Community.ProtoReflect.Descriptor instead. func (*Community) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{0} + return file_url_data_proto_rawDescGZIP(), []int{0} } -func (m *Community) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Community.Unmarshal(m, b) -} -func (m *Community) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Community.Marshal(b, m, deterministic) -} -func (m *Community) XXX_Merge(src proto.Message) { - xxx_messageInfo_Community.Merge(m, src) -} -func (m *Community) XXX_Size() int { - return xxx_messageInfo_Community.Size(m) -} -func (m *Community) XXX_DiscardUnknown() { - xxx_messageInfo_Community.DiscardUnknown(m) -} - -var xxx_messageInfo_Community proto.InternalMessageInfo - -func (m *Community) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Community) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Community) GetDescription() string { - if m != nil { - return m.Description +func (x *Community) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Community) GetMembersCount() uint32 { - if m != nil { - return m.MembersCount +func (x *Community) GetMembersCount() uint32 { + if x != nil { + return x.MembersCount } return 0 } -func (m *Community) GetColor() string { - if m != nil { - return m.Color +func (x *Community) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *Community) GetTagIndices() []uint32 { - if m != nil { - return m.TagIndices +func (x *Community) GetTagIndices() []uint32 { + if x != nil { + return x.TagIndices } return nil } type Channel struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Emoji string `protobuf:"bytes,3,opt,name=emoji,proto3" json:"emoji,omitempty"` - Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` - Community *Community `protobuf:"bytes,5,opt,name=community,proto3" json:"community,omitempty"` - Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Emoji string `protobuf:"bytes,3,opt,name=emoji,proto3" json:"emoji,omitempty"` + Color string `protobuf:"bytes,4,opt,name=color,proto3" json:"color,omitempty"` + Community *Community `protobuf:"bytes,5,opt,name=community,proto3" json:"community,omitempty"` + Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` } -func (m *Channel) Reset() { *m = Channel{} } -func (m *Channel) String() string { return proto.CompactTextString(m) } -func (*Channel) ProtoMessage() {} +func (x *Channel) Reset() { + *x = Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Channel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Channel) ProtoMessage() {} + +func (x *Channel) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Channel.ProtoReflect.Descriptor instead. func (*Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{1} + return file_url_data_proto_rawDescGZIP(), []int{1} } -func (m *Channel) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Channel.Unmarshal(m, b) -} -func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Channel.Marshal(b, m, deterministic) -} -func (m *Channel) XXX_Merge(src proto.Message) { - xxx_messageInfo_Channel.Merge(m, src) -} -func (m *Channel) XXX_Size() int { - return xxx_messageInfo_Channel.Size(m) -} -func (m *Channel) XXX_DiscardUnknown() { - xxx_messageInfo_Channel.DiscardUnknown(m) -} - -var xxx_messageInfo_Channel proto.InternalMessageInfo - -func (m *Channel) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Channel) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Channel) GetDescription() string { - if m != nil { - return m.Description +func (x *Channel) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Channel) GetEmoji() string { - if m != nil { - return m.Emoji +func (x *Channel) GetEmoji() string { + if x != nil { + return x.Emoji } return "" } -func (m *Channel) GetColor() string { - if m != nil { - return m.Color +func (x *Channel) GetColor() string { + if x != nil { + return x.Color } return "" } -func (m *Channel) GetCommunity() *Community { - if m != nil { - return m.Community +func (x *Channel) GetCommunity() *Community { + if x != nil { + return x.Community } return nil } -func (m *Channel) GetUuid() string { - if m != nil { - return m.Uuid +func (x *Channel) GetUuid() string { + if x != nil { + return x.Uuid } return "" } type User struct { - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` } -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} +func (x *User) Reset() { + *x = User{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{2} + return file_url_data_proto_rawDescGZIP(), []int{2} } -func (m *User) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_User.Unmarshal(m, b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_User.Marshal(b, m, deterministic) -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) -} -func (m *User) XXX_Size() int { - return xxx_messageInfo_User.Size(m) -} -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) -} - -var xxx_messageInfo_User proto.InternalMessageInfo - -func (m *User) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *User) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *User) GetDescription() string { - if m != nil { - return m.Description +func (x *User) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *User) GetColor() string { - if m != nil { - return m.Color +func (x *User) GetColor() string { + if x != nil { + return x.Color } return "" } type URLData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Community, Channel, or User - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - Shard *Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + Shard *Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` } -func (m *URLData) Reset() { *m = URLData{} } -func (m *URLData) String() string { return proto.CompactTextString(m) } -func (*URLData) ProtoMessage() {} +func (x *URLData) Reset() { + *x = URLData{} + if protoimpl.UnsafeEnabled { + mi := &file_url_data_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *URLData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*URLData) ProtoMessage() {} + +func (x *URLData) ProtoReflect() protoreflect.Message { + mi := &file_url_data_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use URLData.ProtoReflect.Descriptor instead. func (*URLData) Descriptor() ([]byte, []int) { - return fileDescriptor_5f1e15b5f0115710, []int{3} + return file_url_data_proto_rawDescGZIP(), []int{3} } -func (m *URLData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_URLData.Unmarshal(m, b) -} -func (m *URLData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_URLData.Marshal(b, m, deterministic) -} -func (m *URLData) XXX_Merge(src proto.Message) { - xxx_messageInfo_URLData.Merge(m, src) -} -func (m *URLData) XXX_Size() int { - return xxx_messageInfo_URLData.Size(m) -} -func (m *URLData) XXX_DiscardUnknown() { - xxx_messageInfo_URLData.DiscardUnknown(m) -} - -var xxx_messageInfo_URLData proto.InternalMessageInfo - -func (m *URLData) GetContent() []byte { - if m != nil { - return m.Content +func (x *URLData) GetContent() []byte { + if x != nil { + return x.Content } return nil } -func (m *URLData) GetShard() *Shard { - if m != nil { - return m.Shard +func (x *URLData) GetShard() *Shard { + if x != nil { + return x.Shard } return nil } -func init() { - proto.RegisterType((*Community)(nil), "protobuf.Community") - proto.RegisterType((*Channel)(nil), "protobuf.Channel") - proto.RegisterType((*User)(nil), "protobuf.User") - proto.RegisterType((*URLData)(nil), "protobuf.URLData") +var File_url_data_proto protoreflect.FileDescriptor + +var file_url_data_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x75, 0x72, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, 0x73, 0x68, 0x61, 0x72, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x67, 0x5f, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x61, 0x67, 0x49, + 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x6a, 0x69, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x61, 0x0a, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x4a, 0x0a, + 0x07, 0x55, 0x52, 0x4c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x3b, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -func init() { - proto.RegisterFile("url_data.proto", fileDescriptor_5f1e15b5f0115710) +var ( + file_url_data_proto_rawDescOnce sync.Once + file_url_data_proto_rawDescData = file_url_data_proto_rawDesc +) + +func file_url_data_proto_rawDescGZIP() []byte { + file_url_data_proto_rawDescOnce.Do(func() { + file_url_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_url_data_proto_rawDescData) + }) + return file_url_data_proto_rawDescData } -var fileDescriptor_5f1e15b5f0115710 = []byte{ - // 321 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xb1, 0x4e, 0xc3, 0x30, - 0x10, 0x40, 0x15, 0xda, 0xb4, 0xe4, 0xdc, 0x80, 0x64, 0x3a, 0x58, 0x2c, 0x84, 0x20, 0xa4, 0x4c, - 0x41, 0x94, 0x91, 0x8d, 0xb2, 0x80, 0x10, 0x83, 0x51, 0x17, 0x96, 0xc8, 0x4d, 0x4c, 0x6b, 0x14, - 0xdb, 0x95, 0xe3, 0x0c, 0xfd, 0x27, 0x7e, 0x82, 0x3f, 0x43, 0xb5, 0x1b, 0xc2, 0xc2, 0xd6, 0xc9, - 0x77, 0xef, 0x4e, 0xe7, 0xe7, 0x93, 0xe1, 0xa4, 0x35, 0x75, 0x51, 0x31, 0xcb, 0xf2, 0x8d, 0xd1, - 0x56, 0xe3, 0x63, 0x77, 0x2c, 0xdb, 0x8f, 0x73, 0xd4, 0xac, 0x99, 0xa9, 0x3c, 0x4e, 0xbf, 0x02, - 0x88, 0xe6, 0x5a, 0xca, 0x56, 0x09, 0xbb, 0xc5, 0x97, 0x30, 0xa9, 0x44, 0xb3, 0xa9, 0xd9, 0xb6, - 0x50, 0x4c, 0x72, 0x12, 0x24, 0x41, 0x16, 0x51, 0xb4, 0x67, 0xaf, 0x4c, 0x72, 0x9c, 0x00, 0xaa, - 0x78, 0x53, 0x1a, 0xb1, 0xb1, 0x42, 0x2b, 0x72, 0xb4, 0xef, 0xe8, 0x11, 0xbe, 0x82, 0x58, 0x72, - 0xb9, 0xe4, 0xa6, 0x29, 0x4a, 0xdd, 0x2a, 0x4b, 0x06, 0x49, 0x90, 0xc5, 0x74, 0xb2, 0x87, 0xf3, - 0x1d, 0xc3, 0x53, 0x08, 0x4b, 0x5d, 0x6b, 0x43, 0x86, 0x6e, 0x80, 0x4f, 0xf0, 0x05, 0x20, 0xcb, - 0x56, 0x85, 0x50, 0x95, 0x28, 0x79, 0x43, 0xc2, 0x64, 0x90, 0xc5, 0x14, 0x2c, 0x5b, 0x3d, 0x79, - 0x92, 0x7e, 0x07, 0x30, 0x9e, 0xaf, 0x99, 0x52, 0xbc, 0x3e, 0x8c, 0xec, 0x14, 0x42, 0x2e, 0xf5, - 0xa7, 0x70, 0x92, 0x11, 0xf5, 0xc9, 0x3f, 0x76, 0xb7, 0x10, 0x95, 0xdd, 0xaa, 0x48, 0x98, 0x04, - 0x19, 0x9a, 0x9d, 0xe5, 0xdd, 0x5a, 0xf3, 0xdf, 0x2d, 0xd2, 0xbe, 0x0b, 0x63, 0x18, 0xb6, 0xad, - 0xa8, 0xc8, 0xc8, 0xcd, 0x71, 0x71, 0xca, 0x60, 0xb8, 0x68, 0xb8, 0x39, 0x98, 0xbf, 0x37, 0x1d, - 0xfc, 0x31, 0x4d, 0x9f, 0x61, 0xbc, 0xa0, 0x2f, 0x8f, 0xcc, 0x32, 0x4c, 0x60, 0x5c, 0x6a, 0x65, - 0xb9, 0xb2, 0xee, 0x82, 0x09, 0xed, 0x52, 0x7c, 0x0d, 0xa1, 0xfb, 0x09, 0x6e, 0x2c, 0x9a, 0x9d, - 0xf6, 0x4f, 0x79, 0xdb, 0x61, 0xea, 0xab, 0x0f, 0xf1, 0x3b, 0xca, 0x6f, 0xee, 0xbb, 0xda, 0x72, - 0xe4, 0xa2, 0xbb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x71, 0x2e, 0xf3, 0xde, 0x60, 0x02, 0x00, - 0x00, +var file_url_data_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_url_data_proto_goTypes = []interface{}{ + (*Community)(nil), // 0: protobuf.Community + (*Channel)(nil), // 1: protobuf.Channel + (*User)(nil), // 2: protobuf.User + (*URLData)(nil), // 3: protobuf.URLData + (*Shard)(nil), // 4: protobuf.Shard +} +var file_url_data_proto_depIdxs = []int32{ + 0, // 0: protobuf.Channel.community:type_name -> protobuf.Community + 4, // 1: protobuf.URLData.shard:type_name -> protobuf.Shard + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_url_data_proto_init() } +func file_url_data_proto_init() { + if File_url_data_proto != nil { + return + } + file_shard_proto_init() + if !protoimpl.UnsafeEnabled { + file_url_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Community); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_url_data_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*URLData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_url_data_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_url_data_proto_goTypes, + DependencyIndexes: file_url_data_proto_depIdxs, + MessageInfos: file_url_data_proto_msgTypes, + }.Build() + File_url_data_proto = out.File + file_url_data_proto_rawDesc = nil + file_url_data_proto_goTypes = nil + file_url_data_proto_depIdxs = nil } diff --git a/vendor/github.com/status-im/status-go/protocol/pushnotificationclient/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/pushnotificationclient/migrations/migrations.go index 864f664c..94d84cbb 100644 --- a/vendor/github.com/status-im/status-go/protocol/pushnotificationclient/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/pushnotificationclient/migrations/migrations.go @@ -6,7 +6,7 @@ // 1597909626_add_server_type.up.sql (145B) // 1599053776_add_chat_id_and_type.down.sql (0) // 1599053776_add_chat_id_and_type.up.sql (264B) -// doc.go (382B) +// doc.go (402B) package migrations @@ -89,7 +89,7 @@ func _1593601729_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa, 0x95, 0x55, 0x64, 0x38, 0x40, 0x16, 0xbf, 0x8b, 0x1c, 0x18, 0xb4, 0xc5, 0x7f, 0xd0, 0xb8, 0xf0, 0x3c, 0xa2, 0x82, 0xf8, 0x8d, 0x5a, 0xd3, 0xb6, 0x6e, 0xa3, 0xb4, 0xc, 0x9, 0x33, 0x0}} return a, nil } @@ -109,7 +109,7 @@ func _1593601729_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x1e, 0x5, 0x35, 0x9, 0xb2, 0x2d, 0x6f, 0x33, 0x63, 0xa2, 0x7a, 0x5b, 0xd2, 0x2d, 0xcb, 0x79, 0x7e, 0x6, 0xb4, 0x9d, 0x35, 0xd8, 0x9b, 0x55, 0xe5, 0xf8, 0x44, 0xca, 0xa6, 0xf3, 0xd3}} return a, nil } @@ -129,7 +129,7 @@ func _1597909626_add_server_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -149,7 +149,7 @@ func _1597909626_add_server_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc8, 0x3f, 0xe0, 0xe7, 0x57, 0x0, 0x5d, 0x60, 0xf3, 0x55, 0x64, 0x71, 0x80, 0x3c, 0xca, 0x8, 0x61, 0xb5, 0x3c, 0xe, 0xa1, 0xe4, 0x61, 0xd1, 0x4e, 0xd8, 0xb2, 0x55, 0xdd, 0x87, 0x62, 0x9b}} return a, nil } @@ -169,7 +169,7 @@ func _1599053776_add_chat_id_and_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 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}} return a, nil } @@ -189,12 +189,12 @@ func _1599053776_add_chat_id_and_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7a, 0xf9, 0xc4, 0xa2, 0x96, 0x2e, 0xf9, 0x8f, 0x7, 0xf1, 0x1e, 0x73, 0x8a, 0xa6, 0x3a, 0x13, 0x4, 0x73, 0x82, 0x83, 0xb, 0xe3, 0xb5, 0x3b, 0x7e, 0xd, 0x23, 0xce, 0x98, 0xd4, 0xdc}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x3d\x6e\xec\x30\x0c\x84\x7b\x9d\x62\xb0\xcd\x36\xcf\x52\xf3\xaa\x74\x29\xd3\xe7\x02\x5c\x89\x96\x88\xb5\x24\x43\xa4\xf7\xe7\xf6\x81\x37\x01\xe2\x2e\xed\x87\xf9\x86\xc3\x10\xf0\x59\x44\x31\xcb\xc2\x10\x45\xe3\xc8\xaa\x34\x9e\xb8\x70\xa4\x4d\x19\xa7\x2c\x56\xb6\x8b\x8f\xbd\x06\x35\xb2\x4d\x27\xa9\xa1\x4a\x1e\x64\x1c\x6e\xff\x4f\x2e\x04\x44\x6a\x67\x43\xa1\x96\x16\x7e\x75\x29\xd4\x68\x98\xb4\x8c\xbb\x58\x01\x61\x1d\x3c\xcb\xc3\xe3\xdd\xb0\x30\xa9\xc1\x0a\xd9\x59\x61\x85\x11\x49\x79\xaf\x99\xfb\x40\xee\xd3\x45\x5a\x22\x23\xbf\xa3\x8f\xf9\x40\xf6\x85\x91\x96\x85\x13\xe6\xd1\xeb\xcb\x55\xaa\x8c\x24\x83\xa3\xf5\xf1\xfc\x07\x52\x65\x43\xa3\xca\xba\xfb\x85\x6e\x8c\xd6\x7f\xce\x83\x5a\xfa\xfb\x23\xdc\xfb\xb8\x2a\x48\xc1\x8f\x95\xa3\x71\xf2\xce\xad\x14\xaf\x94\x19\xdf\x39\xe9\x4d\x9d\x0b\x21\xf7\xb7\xcc\x8d\x77\xf3\xb8\x73\x5a\xaf\xf9\x90\xc4\xd4\xe1\x7d\xf8\x05\x3e\x77\xf8\xe0\xbe\x02\x00\x00\xff\xff\x4d\x1d\x5d\x50\x7e\x01\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x3d\x6a\x04\x31\x0c\x85\xfb\x39\xc5\x63\x9b\x6d\x32\x76\x02\x81\x40\x20\x45\xca\xf4\xb9\x80\xd6\xd6\xd8\x62\xc7\xf6\x60\x69\xff\x6e\x1f\x66\xb3\x90\xe9\xa2\xf2\x43\xdf\xd3\x93\xf7\xf8\xce\xa2\x98\x64\x66\x88\xa2\x72\x60\x55\xea\x37\x1c\x38\xd0\x49\x19\xbb\x24\x96\x4f\x07\x17\x5a\xf1\x6a\x64\x27\x1d\xa5\xf8\x22\xa9\x93\xb1\x3f\xbf\xee\x06\xef\x11\xa8\xee\x0d\x99\x6a\x9c\xf9\x9e\xa5\x50\xa3\x6e\x52\x13\x2e\x62\x19\x84\xa5\xf3\x24\x57\x87\x4f\xc3\xcc\xa4\x06\xcb\x64\x7b\x85\x65\x46\x20\xe5\x35\x66\x6a\x1d\xa9\x8d\x07\xa9\x91\x8c\xdc\x8a\xbe\xa6\x0d\x59\x1b\x06\x9a\x67\x8e\x98\x7a\x2b\x77\x57\xa9\x30\xa2\x74\x0e\xd6\xfa\xed\x09\xa4\xca\x86\x4a\x85\x75\xf5\x33\x9d\x19\xb5\x3d\xce\x83\x6a\xfc\xff\x23\x5c\x5a\x3f\x2a\x48\xc1\xd7\x85\x83\x71\x74\xc3\xb0\x50\x38\x52\x62\xfc\xee\x49\xab\x3a\x0c\xde\xa7\xf6\x9e\xb8\xf2\x6a\x6e\x7b\x8e\xa5\x45\x93\xc2\x1f\x2f\x6f\xcf\x8f\xc1\xb8\x1c\xd3\xc6\xc6\xd8\xe0\x9c\xff\x03\x2e\x35\x38\x3f\xfc\x04\x00\x00\xff\xff\xdd\xba\x79\x90\x92\x01\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -209,8 +209,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} + info := bindataFileInfo{name: "doc.go", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0x48, 0xd2, 0x42, 0xd0, 0x5f, 0xf4, 0x53, 0xfe, 0xa5, 0x44, 0xc, 0x8b, 0x6b, 0xed, 0xca, 0xc, 0xc0, 0xd8, 0x2e, 0x90, 0x87, 0x5b, 0x92, 0x6d, 0xa1, 0xf8, 0x15, 0x23, 0x96, 0xdb, 0x11}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/pushnotificationserver/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/pushnotificationserver/migrations/migrations.go index f374e8e4..01ce9c12 100644 --- a/vendor/github.com/status-im/status-go/protocol/pushnotificationserver/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/pushnotificationserver/migrations/migrations.go @@ -4,7 +4,7 @@ // 1593601728_initial_schema.up.sql (675B) // 1598419937_add_push_notifications_table.down.sql (51B) // 1598419937_add_push_notifications_table.up.sql (104B) -// doc.go (382B) +// doc.go (402B) package migrations @@ -87,7 +87,7 @@ func _1593601728_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0x8a, 0x61, 0x81, 0x57, 0x45, 0x9b, 0x97, 0x9b, 0x1f, 0xf6, 0x94, 0x8a, 0x20, 0xb3, 0x2b, 0xff, 0x69, 0x49, 0xf4, 0x58, 0xcc, 0xd0, 0x55, 0xcc, 0x9a, 0x8b, 0xb6, 0x7f, 0x29, 0x53, 0xc1}} return a, nil } @@ -107,7 +107,7 @@ func _1593601728_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x61, 0x90, 0x79, 0xd9, 0x14, 0x65, 0xe9, 0x96, 0x53, 0x17, 0x33, 0x54, 0xeb, 0x8b, 0x5d, 0x95, 0x99, 0x10, 0x36, 0x58, 0xdd, 0xb2, 0xbf, 0x45, 0xd9, 0xbb, 0xc4, 0x92, 0xe, 0xce, 0x2}} return a, nil } @@ -127,7 +127,7 @@ func _1598419937_add_push_notifications_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x98, 0xc8, 0x30, 0x45, 0x5b, 0xc5, 0x7d, 0x13, 0x5d, 0xe7, 0xc8, 0x23, 0x43, 0xf7, 0xdc, 0x9c, 0xe2, 0xdd, 0x63, 0xf0, 0xb7, 0x16, 0x40, 0xc, 0xda, 0xb9, 0x16, 0x70, 0x2b, 0x5a, 0x7e}} return a, nil } @@ -147,12 +147,12 @@ func _1598419937_add_push_notifications_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2, 0x3e, 0xef, 0xf, 0xc2, 0xdf, 0xbc, 0x99, 0x7a, 0xc2, 0xd3, 0x64, 0x4f, 0x4c, 0x7e, 0xfc, 0x2e, 0x8c, 0xa7, 0x54, 0xd3, 0x4d, 0x25, 0x98, 0x41, 0xbc, 0xea, 0xd7, 0x2, 0xc1, 0xd0, 0x52}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x3d\x6e\xec\x30\x0c\x84\x7b\x9d\x62\xb0\xcd\x36\xcf\x52\xf3\xaa\x74\x29\xd3\xe7\x02\x5c\x89\x96\x88\xb5\x24\x43\xa4\xf7\xe7\xf6\x81\x37\x01\xe2\x2e\xed\x87\xf9\x86\xc3\x10\xf0\x59\x44\x31\xcb\xc2\x10\x45\xe3\xc8\xaa\x34\x9e\xb8\x70\xa4\x4d\x19\xa7\x2c\x56\xb6\x8b\x8f\xbd\x06\x35\xb2\x4d\x27\xa9\xa1\x4a\x1e\x64\x1c\x6e\xff\x4f\x2e\x04\x44\x6a\x67\x43\xa1\x96\x16\x7e\x75\x29\xd4\x68\x98\xb4\x8c\xbb\x58\x01\x61\x1d\x3c\xcb\xc3\xe3\xdd\xb0\x30\xa9\xc1\x0a\xd9\x59\x61\x85\x11\x49\x79\xaf\x99\xfb\x40\xee\xd3\x45\x5a\x22\x23\xbf\xa3\x8f\xf9\x40\xf6\x85\x91\x96\x85\x13\xe6\xd1\xeb\xcb\x55\xaa\x8c\x24\x83\xa3\xf5\xf1\xfc\x07\x52\x65\x43\xa3\xca\xba\xfb\x85\x6e\x8c\xd6\x7f\xce\x83\x5a\xfa\xfb\x23\xdc\xfb\xb8\x2a\x48\xc1\x8f\x95\xa3\x71\xf2\xce\xad\x14\xaf\x94\x19\xdf\x39\xe9\x4d\x9d\x0b\x21\xf7\xb7\xcc\x8d\x77\xf3\xb8\x73\x5a\xaf\xf9\x90\xc4\xd4\xe1\x7d\xf8\x05\x3e\x77\xf8\xe0\xbe\x02\x00\x00\xff\xff\x4d\x1d\x5d\x50\x7e\x01\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x3d\x6a\x04\x31\x0c\x85\xfb\x39\xc5\x63\x9b\x6d\x32\x76\x02\x81\x40\x20\x45\xca\xf4\xb9\x80\xd6\xd6\xd8\x62\xc7\xf6\x60\x69\xff\x6e\x1f\x66\xb3\x90\xe9\xa2\xf2\x43\xdf\xd3\x93\xf7\xf8\xce\xa2\x98\x64\x66\x88\xa2\x72\x60\x55\xea\x37\x1c\x38\xd0\x49\x19\xbb\x24\x96\x4f\x07\x17\x5a\xf1\x6a\x64\x27\x1d\xa5\xf8\x22\xa9\x93\xb1\x3f\xbf\xee\x06\xef\x11\xa8\xee\x0d\x99\x6a\x9c\xf9\x9e\xa5\x50\xa3\x6e\x52\x13\x2e\x62\x19\x84\xa5\xf3\x24\x57\x87\x4f\xc3\xcc\xa4\x06\xcb\x64\x7b\x85\x65\x46\x20\xe5\x35\x66\x6a\x1d\xa9\x8d\x07\xa9\x91\x8c\xdc\x8a\xbe\xa6\x0d\x59\x1b\x06\x9a\x67\x8e\x98\x7a\x2b\x77\x57\xa9\x30\xa2\x74\x0e\xd6\xfa\xed\x09\xa4\xca\x86\x4a\x85\x75\xf5\x33\x9d\x19\xb5\x3d\xce\x83\x6a\xfc\xff\x23\x5c\x5a\x3f\x2a\x48\xc1\xd7\x85\x83\x71\x74\xc3\xb0\x50\x38\x52\x62\xfc\xee\x49\xab\x3a\x0c\xde\xa7\xf6\x9e\xb8\xf2\x6a\x6e\x7b\x8e\xa5\x45\x93\xc2\x1f\x2f\x6f\xcf\x8f\xc1\xb8\x1c\xd3\xc6\xc6\xd8\xe0\x9c\xff\x03\x2e\x35\x38\x3f\xfc\x04\x00\x00\xff\xff\xdd\xba\x79\x90\x92\x01\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -167,8 +167,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} + info := bindataFileInfo{name: "doc.go", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0x48, 0xd2, 0x42, 0xd0, 0x5f, 0xf4, 0x53, 0xfe, 0xa5, 0x44, 0xc, 0x8b, 0x6b, 0xed, 0xca, 0xc, 0xc0, 0xd8, 0x2e, 0x90, 0x87, 0x5b, 0x92, 0x6d, 0xa1, 0xf8, 0x15, 0x23, 0x96, 0xdb, 0x11}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/requests/ban_user_from_community.go b/vendor/github.com/status-im/status-go/protocol/requests/ban_user_from_community.go index efb46c04..ee4e7d68 100644 --- a/vendor/github.com/status-im/status-go/protocol/requests/ban_user_from_community.go +++ b/vendor/github.com/status-im/status-go/protocol/requests/ban_user_from_community.go @@ -10,8 +10,9 @@ var ErrBanUserFromCommunityInvalidCommunityID = errors.New("ban-user-from-commun var ErrBanUserFromCommunityInvalidUser = errors.New("ban-user-from-community: invalid user id") type BanUserFromCommunity struct { - CommunityID types.HexBytes `json:"communityId"` - User types.HexBytes `json:"user"` + CommunityID types.HexBytes `json:"communityId"` + User types.HexBytes `json:"user"` + DeleteAllMessages bool `json:"deleteAllMessages"` } func (b *BanUserFromCommunity) Validate() error { diff --git a/vendor/github.com/status-im/status-go/protocol/requests/community_member_messages.go b/vendor/github.com/status-im/status-go/protocol/requests/community_member_messages.go new file mode 100644 index 00000000..2ff8941e --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/requests/community_member_messages.go @@ -0,0 +1,25 @@ +package requests + +import ( + "errors" +) + +var ErrCommunityMemberMessagesCommunityID = errors.New("community member messages: invalid id") +var ErrCommunityMemberMessagesMemberPK = errors.New("community member messages: invalid member PK") + +type CommunityMemberMessages struct { + CommunityID string `json:"communityId"` + MemberPublicKey string `json:"memberPublicKey"` +} + +func (c *CommunityMemberMessages) Validate() error { + if len(c.CommunityID) == 0 { + return ErrCommunityMemberMessagesCommunityID + } + + if len(c.MemberPublicKey) == 0 { + return ErrCommunityMemberMessagesMemberPK + } + + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/requests/create_community_token_permission_request.go b/vendor/github.com/status-im/status-go/protocol/requests/create_community_token_permission_request.go index 10389feb..ca506981 100644 --- a/vendor/github.com/status-im/status-go/protocol/requests/create_community_token_permission_request.go +++ b/vendor/github.com/status-im/status-go/protocol/requests/create_community_token_permission_request.go @@ -2,7 +2,8 @@ package requests import ( "errors" - "strconv" + "math" + "math/big" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/protocol/protobuf" @@ -43,8 +44,9 @@ func (p *CreateCommunityTokenPermission) Validate() error { return ErrCreateCommunityTokenPermissionInvalidTokenCriteria } - floatAmount, _ := strconv.ParseFloat(c.Amount, 32) - if len(c.ContractAddresses) > 0 && floatAmount == 0 { + var amountBig = new(big.Int) + amountBig.SetString(c.AmountInWei, 10) + if len(c.ContractAddresses) > 0 && amountBig.Cmp(big.NewInt(0)) == 0 { return ErrCreateCommunityTokenPermissionInvalidTokenCriteria } } @@ -52,6 +54,32 @@ func (p *CreateCommunityTokenPermission) Validate() error { return nil } +func (p *CreateCommunityTokenPermission) FillDeprecatedAmount() { + + computeErc20AmountFunc := func(amountInWeis string, decimals uint64) string { + bigfloat := new(big.Float) + bigfloat.SetString(amountInWeis) + multiplier := big.NewFloat(math.Pow(10, float64(decimals))) + bigfloat.Quo(bigfloat, multiplier) + return bigfloat.String() + } + + for _, criteria := range p.TokenCriteria { + if criteria.AmountInWei == "" { + continue + } + // fill Amount to keep backward compatibility + // Amount format (deprecated): "0.123" + // AmountInWei format: "123000..000" + if criteria.Type == protobuf.CommunityTokenType_ERC20 { + criteria.Amount = computeErc20AmountFunc(criteria.AmountInWei, criteria.Decimals) + } else { + criteria.Amount = criteria.AmountInWei + } + + } +} + func (p *CreateCommunityTokenPermission) ToCommunityTokenPermission() protobuf.CommunityTokenPermission { return protobuf.CommunityTokenPermission{ Type: p.Type, diff --git a/vendor/github.com/status-im/status-go/protocol/requests/delete_community_member_messages.go b/vendor/github.com/status-im/status-go/protocol/requests/delete_community_member_messages.go new file mode 100644 index 00000000..813bbcd8 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/requests/delete_community_member_messages.go @@ -0,0 +1,54 @@ +package requests + +import ( + "errors" + + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/protobuf" +) + +var ErrDeleteCommunityMemberMessagesInvalidCommunityID = errors.New("delete-community-member-messages: invalid community id") +var ErrDeleteCommunityMemberMessagesInvalidMemberID = errors.New("delete-community-member-messages: invalid member id") +var ErrDeleteCommunityMemberMessagesInvalidData = errors.New("delete-community-member-messages: invalid data") +var ErrDeleteCommunityMemberMessagesInvalidDeleteAll = errors.New("delete-community-member-messages: invalid delete all setup") +var ErrDeleteCommunityMemberMessagesInvalidDeleteMessagesByID = errors.New("delete-community-member-messages: invalid delete messages by ID setups") +var ErrDeleteCommunityMemberMessagesInvalidMsgID = errors.New("delete-community-member-messages: invalid messages Id") +var ErrDeleteCommunityMemberMessagesInvalidMsgChatID = errors.New("delete-community-member-messages: invalid messages chatId") + +type DeleteCommunityMemberMessages struct { + CommunityID types.HexBytes `json:"communityId"` + MemberPubKey string `json:"memberPubKey"` + Messages []*protobuf.DeleteCommunityMemberMessage `json:"messages"` + DeleteAll bool `json:"deleteAll"` +} + +func (d *DeleteCommunityMemberMessages) Validate() error { + if len(d.CommunityID) == 0 { + return ErrDeleteCommunityMemberMessagesInvalidCommunityID + } + + if len(d.MemberPubKey) == 0 { + return ErrDeleteCommunityMemberMessagesInvalidMemberID + } + + if d.Messages != nil && len(d.Messages) > 0 && d.DeleteAll { + return ErrDeleteCommunityMemberMessagesInvalidDeleteAll + } + + if (d.Messages == nil || (d.Messages != nil && len(d.Messages) == 0)) && !d.DeleteAll { + return ErrDeleteCommunityMemberMessagesInvalidDeleteMessagesByID + } + + if d.Messages != nil { + for _, message := range d.Messages { + if len(message.Id) == 0 { + return ErrDeleteCommunityMemberMessagesInvalidMsgID + } + if len(message.ChatId) == 0 { + return ErrDeleteCommunityMemberMessagesInvalidMsgChatID + } + } + } + + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/requests/set_community_storenodes.go b/vendor/github.com/status-im/status-go/protocol/requests/set_community_storenodes.go new file mode 100644 index 00000000..6a8e0910 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/requests/set_community_storenodes.go @@ -0,0 +1,45 @@ +package requests + +import ( + "bytes" + "errors" + + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/storenodes" +) + +var ( + ErrSetCommunityStorenodesEmpty = errors.New("set-community-storenodes: empty payload") + ErrSetCommunityStorenodesTooMany = errors.New("set-community-storenodes: too many") + ErrSetCommunityStorenodesMismatch = errors.New("set-community-storenodes: communityId mismatch") + ErrSetCommunityStorenodesMissingCommunity = errors.New("set-community-storenodes: missing community") + ErrSetCommunityStorenodesBadVersion = errors.New("set-community-storenodes: bad version") +) + +type SetCommunityStorenodes struct { + CommunityID types.HexBytes `json:"communityId"` + Storenodes []storenodes.Storenode `json:"storenodes"` +} + +func (s *SetCommunityStorenodes) Validate() error { + if s == nil || len(s.Storenodes) == 0 { + return ErrSetCommunityStorenodesEmpty + } + if len(s.Storenodes) > 1 { + // TODO for now only allow one + return ErrSetCommunityStorenodesTooMany + } + if len(s.CommunityID) == 0 { + return ErrSetCommunityStorenodesMissingCommunity + } + for _, sn := range s.Storenodes { + if !bytes.Equal(sn.CommunityID, s.CommunityID) { + return ErrSetCommunityStorenodesMismatch + } + if sn.Version == 0 { + return ErrSetCommunityStorenodesBadVersion + } + // TODO validate address and other fields + } + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/requests/toggle_peer_syncing.go b/vendor/github.com/status-im/status-go/protocol/requests/toggle_peer_syncing.go new file mode 100644 index 00000000..7ee0b485 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/requests/toggle_peer_syncing.go @@ -0,0 +1,9 @@ +package requests + +type TogglePeerSyncingRequest struct { + Enabled bool `json:"enabled"` +} + +func (a *TogglePeerSyncingRequest) Validate() error { + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/storenodes/database.go b/vendor/github.com/status-im/status-go/protocol/storenodes/database.go new file mode 100644 index 00000000..baa70957 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/storenodes/database.go @@ -0,0 +1,191 @@ +package storenodes + +import ( + "bytes" + "database/sql" + "fmt" + "time" + + "github.com/status-im/status-go/eth-node/types" +) + +type Database struct { + db *sql.DB +} + +func NewDB(db *sql.DB) *Database { + return &Database{db: db} +} + +// syncSave will sync the storenodes in the DB from the snode slice +// - if a storenode is not in the provided list, it will be soft-deleted +// - if a storenode is in the provided list, it will be inserted or updated +func (d *Database) syncSave(communityID types.HexBytes, snode []Storenode, clock uint64) (err error) { + var tx *sql.Tx + tx, err = d.db.Begin() + if err != nil { + return err + } + defer func() { + if err == nil { + err = tx.Commit() + return + } + _ = tx.Rollback() + }() + + now := time.Now().Unix() + dbNodes, err := d.getByCommunityID(communityID, tx) + if err != nil { + return fmt.Errorf("getting storenodes by community id: %w", err) + } + // Soft-delete db nodes that are not in the provided list + for _, dbN := range dbNodes { + if find(dbN, snode) != nil { + continue + } + if clock != 0 && dbN.Clock >= clock { + continue + } + if err := d.softDelete(communityID, dbN.StorenodeID, now, tx); err != nil { + return fmt.Errorf("soft deleting existing storenodes: %w", err) + } + + } + // Insert or update the nodes in the provided list + for _, n := range snode { + // defensively validate the communityID + if len(n.CommunityID) == 0 || !bytes.Equal(communityID, n.CommunityID) { + err = fmt.Errorf("communityID mismatch %v != %v", communityID, n.CommunityID) + return err + } + dbN := find(n, dbNodes) + if dbN != nil && n.Clock != 0 && dbN.Clock >= n.Clock { + continue + } + if err := d.upsert(n, tx); err != nil { + return fmt.Errorf("upserting storenodes: %w", err) + } + } + // TODO for now only allow one storenode per community + count, err := d.countByCommunity(communityID, tx) + if err != nil { + return err + } + if count > 1 { + err = fmt.Errorf("only one storenode per community is allowed") + return err + } + return nil +} + +func (d *Database) getAll() ([]Storenode, error) { + rows, err := d.db.Query(` + SELECT community_id, storenode_id, name, address, fleet, version, clock, removed, deleted_at + FROM community_storenodes + WHERE removed = 0 + `) + if err != nil { + return nil, err + } + defer rows.Close() + return toStorenodes(rows) +} + +func (d *Database) getByCommunityID(communityID types.HexBytes, tx ...*sql.Tx) ([]Storenode, error) { + var rows *sql.Rows + var err error + q := ` + SELECT community_id, storenode_id, name, address, fleet, version, clock, removed, deleted_at + FROM community_storenodes + WHERE community_id = ? AND removed = 0 +` + if len(tx) > 0 { + rows, err = tx[0].Query(q, communityID) + } else { + rows, err = d.db.Query(q, communityID) + } + if err != nil { + return nil, err + } + defer rows.Close() + return toStorenodes(rows) +} + +func (d *Database) softDelete(communityID types.HexBytes, storenodeID string, deletedAt int64, tx *sql.Tx) error { + _, err := tx.Exec("UPDATE community_storenodes SET removed = 1, deleted_at = ? WHERE community_id = ? AND storenode_id = ?", deletedAt, communityID, storenodeID) + if err != nil { + return err + } + return nil +} + +func (d *Database) upsert(n Storenode, tx *sql.Tx) error { + _, err := tx.Exec(`INSERT OR REPLACE INTO community_storenodes( + community_id, + storenode_id, + name, + address, + fleet, + version, + clock, + removed, + deleted_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, + n.CommunityID, + n.StorenodeID, + n.Name, + n.Address, + n.Fleet, + n.Version, + n.Clock, + n.Removed, + n.DeletedAt, + ) + if err != nil { + return err + } + return nil +} + +func (d *Database) countByCommunity(communityID types.HexBytes, tx *sql.Tx) (int, error) { + var count int + err := tx.QueryRow(`SELECT COUNT(*) FROM community_storenodes WHERE community_id = ? AND removed = 0`, communityID).Scan(&count) + if err != nil { + return 0, err + } + return count, nil +} + +func toStorenodes(rows *sql.Rows) ([]Storenode, error) { + var result []Storenode + + for rows.Next() { + var m Storenode + if err := rows.Scan( + &m.CommunityID, + &m.StorenodeID, + &m.Name, + &m.Address, + &m.Fleet, + &m.Version, + &m.Clock, + &m.Removed, + &m.DeletedAt, + ); err != nil { + return nil, err + } + result = append(result, m) + } + + return result, nil +} + +func find(n Storenode, nodes []Storenode) *Storenode { + for i, node := range nodes { + if node.StorenodeID == n.StorenodeID && bytes.Equal(node.CommunityID, n.CommunityID) { + return &nodes[i] + } + } + return nil +} diff --git a/vendor/github.com/status-im/status-go/protocol/storenodes/doc.go b/vendor/github.com/status-im/status-go/protocol/storenodes/doc.go new file mode 100644 index 00000000..bb70b553 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/storenodes/doc.go @@ -0,0 +1,6 @@ +// package storenodes provides functionality to work with community specific storenodes +// Current limitations: +// - we support only one storenode per community +// - we assume that the storenode is always active +// - we don't support a way to regularly check connection similar to the `messenger_mailserver_cycle.go` +package storenodes diff --git a/vendor/github.com/status-im/status-go/protocol/storenodes/models.go b/vendor/github.com/status-im/status-go/protocol/storenodes/models.go new file mode 100644 index 00000000..d072aad4 --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/storenodes/models.go @@ -0,0 +1,69 @@ +package storenodes + +import ( + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/services/mailservers" +) + +// Storenode is a struct that represents a storenode, it is very closely related to `mailservers.Mailserver` +type Storenode struct { + CommunityID types.HexBytes `json:"community_id"` + StorenodeID string `json:"storenode_id"` + Name string `json:"name"` + Address string `json:"address"` + Fleet string `json:"fleet"` + Version uint `json:"version"` + Clock uint64 `json:"-"` // used to sync + Removed bool `json:"-"` + DeletedAt int64 `json:"-"` +} + +type Storenodes []Storenode + +func (m Storenodes) ToProtobuf() []*protobuf.Storenode { + result := make([]*protobuf.Storenode, 0, len(m)) + for _, n := range m { + + result = append(result, &protobuf.Storenode{ + CommunityId: n.CommunityID, + StorenodeId: n.StorenodeID, + Name: n.Name, + Address: n.Address, + Fleet: n.Fleet, + Version: uint32(n.Version), + Removed: n.Removed, + DeletedAt: n.DeletedAt, + }) + } + return result +} + +func FromProtobuf(storenodes []*protobuf.Storenode, clock uint64) Storenodes { + result := make(Storenodes, 0, len(storenodes)) + for _, s := range storenodes { + result = append(result, Storenode{ + CommunityID: s.CommunityId, + StorenodeID: s.StorenodeId, + Name: s.Name, + Address: s.Address, + Fleet: s.Fleet, + Version: uint(s.Version), + Removed: s.Removed, + DeletedAt: s.DeletedAt, + Clock: clock, + }) + } + return result +} + +func toMailserver(m Storenode) mailservers.Mailserver { + return mailservers.Mailserver{ + ID: m.StorenodeID, + Name: m.Name, + Custom: true, + Address: m.Address, + Fleet: m.Fleet, + Version: m.Version, + } +} diff --git a/vendor/github.com/status-im/status-go/protocol/storenodes/storenodes.go b/vendor/github.com/status-im/status-go/protocol/storenodes/storenodes.go new file mode 100644 index 00000000..db4c1bbd --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/storenodes/storenodes.go @@ -0,0 +1,114 @@ +package storenodes + +import ( + "errors" + "sync" + + "go.uber.org/zap" + + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/services/mailservers" +) + +var ( + ErrNotFound = errors.New("not found") +) + +// CommunityStorenodes has methods to handle the storenodes for a community +type CommunityStorenodes struct { + storenodesByCommunityIDMutex *sync.RWMutex + storenodesByCommunityID map[string]storenodesData + + storenodesDB *Database + logger *zap.Logger +} + +func NewCommunityStorenodes(storenodesDB *Database, logger *zap.Logger) *CommunityStorenodes { + if logger == nil { + logger = zap.NewNop() + } + return &CommunityStorenodes{ + storenodesByCommunityIDMutex: &sync.RWMutex{}, + storenodesByCommunityID: make(map[string]storenodesData), + storenodesDB: storenodesDB, + logger: logger.With(zap.Namespace("CommunityStorenodes")), + } +} + +type storenodesData struct { + storenodes []Storenode +} + +// GetStorenodeByCommunnityID returns the active storenode for a community +func (m *CommunityStorenodes) GetStorenodeByCommunnityID(communityID string) (mailservers.Mailserver, error) { + m.storenodesByCommunityIDMutex.RLock() + defer m.storenodesByCommunityIDMutex.RUnlock() + + msData, ok := m.storenodesByCommunityID[communityID] + if !ok || len(msData.storenodes) == 0 { + return mailservers.Mailserver{}, ErrNotFound + } + return toMailserver(msData.storenodes[0]), nil +} + +func (m *CommunityStorenodes) IsCommunityStoreNode(id string) bool { + m.storenodesByCommunityIDMutex.RLock() + defer m.storenodesByCommunityIDMutex.RUnlock() + + for _, data := range m.storenodesByCommunityID { + for _, snode := range data.storenodes { + if snode.StorenodeID == id { + return true + } + } + } + return false +} + +func (m *CommunityStorenodes) HasStorenodeSetup(communityID string) bool { + m.storenodesByCommunityIDMutex.RLock() + defer m.storenodesByCommunityIDMutex.RUnlock() + + msData, ok := m.storenodesByCommunityID[communityID] + return ok && len(msData.storenodes) > 0 +} + +// ReloadFromDB loads or reloads the mailservers from the database (on adding/deleting mailservers) +func (m *CommunityStorenodes) ReloadFromDB() error { + if m.storenodesDB == nil { + return nil + } + m.storenodesByCommunityIDMutex.Lock() + defer m.storenodesByCommunityIDMutex.Unlock() + dbNodes, err := m.storenodesDB.getAll() + if err != nil { + return err + } + // overwrite the in-memory storenodes + m.storenodesByCommunityID = make(map[string]storenodesData) + for _, node := range dbNodes { + communityID := node.CommunityID.String() + if _, ok := m.storenodesByCommunityID[communityID]; !ok { + m.storenodesByCommunityID[communityID] = storenodesData{} + } + data := m.storenodesByCommunityID[communityID] + data.storenodes = append(data.storenodes, node) + m.storenodesByCommunityID[communityID] = data + } + m.logger.Debug("loaded communities storenodes", zap.Int("count", len(dbNodes))) + return nil +} + +func (m *CommunityStorenodes) UpdateStorenodesInDB(communityID types.HexBytes, snodes []Storenode, clock uint64) error { + if err := m.storenodesDB.syncSave(communityID, snodes, clock); err != nil { + return err + } + if err := m.ReloadFromDB(); err != nil { + return err + } + return nil +} + +func (m *CommunityStorenodes) GetStorenodesFromDB(communityID types.HexBytes) ([]Storenode, error) { + return m.storenodesDB.getByCommunityID(communityID) +} diff --git a/vendor/github.com/status-im/status-go/protocol/transport/migrations/migrations.go b/vendor/github.com/status-im/status-go/protocol/transport/migrations/migrations.go index bc81e500..87885768 100644 --- a/vendor/github.com/status-im/status-go/protocol/transport/migrations/migrations.go +++ b/vendor/github.com/status-im/status-go/protocol/transport/migrations/migrations.go @@ -5,7 +5,7 @@ // 1616691080_add_wakuV2_keys.down.sql (24B) // 1616691080_add_wakuV2_keys.up.sql (111B) // 1634723014_add_wakuV2_keys.up.sql (125B) -// doc.go (373B) +// doc.go (393B) package sqlite @@ -88,7 +88,7 @@ func _1561059284_add_waku_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0x2a, 0x7e, 0x9, 0xa3, 0xdd, 0xc6, 0x3, 0xfa, 0xaa, 0x98, 0xa0, 0x26, 0x5e, 0x67, 0x43, 0xe6, 0x20, 0xfd, 0x10, 0xfd, 0x60, 0x89, 0x17, 0x13, 0x87, 0x1b, 0x44, 0x36, 0x79, 0xb6, 0x60}} return a, nil } @@ -108,7 +108,7 @@ func _1561059284_add_waku_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x5c, 0x8, 0x32, 0xef, 0x12, 0x88, 0x21, 0xd, 0x7a, 0x42, 0x4d, 0xe7, 0x2d, 0x6c, 0x99, 0xb6, 0x1, 0xf1, 0xba, 0x2c, 0x40, 0x8d, 0xa9, 0x4b, 0xe6, 0xc4, 0x21, 0xec, 0x47, 0x6b, 0xf7}} return a, nil } @@ -128,7 +128,7 @@ func _1616691080_add_wakuv2_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0xb6, 0x23, 0x70, 0xb8, 0x63, 0x18, 0x61, 0xea, 0x35, 0x6e, 0xae, 0xe9, 0x71, 0x89, 0xa, 0xa5, 0x72, 0xa2, 0x64, 0xaa, 0x45, 0x1, 0xf, 0xfc, 0xee, 0x1b, 0xd9, 0xd2, 0x27, 0xf4, 0xe2}} return a, nil } @@ -148,7 +148,7 @@ func _1616691080_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xf0, 0x97, 0x25, 0xfe, 0x96, 0x2c, 0xa8, 0x62, 0x4a, 0x71, 0x75, 0xff, 0x5f, 0x43, 0x1e, 0x71, 0x53, 0xf1, 0xde, 0xf, 0xcf, 0xcd, 0x87, 0x15, 0x61, 0x9d, 0x25, 0x2e, 0xaf, 0x18, 0x99}} return a, nil } @@ -168,12 +168,12 @@ func _1634723014_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} + info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xe1, 0x7a, 0x1e, 0x6, 0xad, 0x1b, 0x37, 0xdb, 0xea, 0x94, 0xaf, 0xe0, 0x7d, 0xc9, 0xd6, 0xda, 0x52, 0x71, 0x8a, 0x44, 0xb3, 0xa6, 0x7b, 0x1e, 0x90, 0xdb, 0x1e, 0x5a, 0xa, 0x40, 0x26}} return a, nil } -var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\x3d\x72\xeb\x30\x0c\x84\x7b\x9d\x62\xc7\x8d\x9b\x27\xb2\x79\x55\xba\x94\xe9\x73\x01\x98\x5a\x91\x18\x4b\xa4\x42\xc0\x7f\xb7\xcf\xc8\xe3\xc2\x5d\xda\x1d\x7c\x1f\x76\x63\xc4\x77\x51\xc3\xac\x0b\xa1\x86\xca\x44\x33\xe9\x0f\x9c\x98\xe4\x62\xc4\x21\xab\x97\xcb\x29\xa4\xb6\x46\x73\xf1\x8b\x8d\xba\xc6\x55\x73\x17\x67\xbc\xfe\x3f\x0c\x31\x22\x49\x3d\x3a\x8a\xd4\x69\xe1\xd3\x65\x30\x97\xee\x5a\x33\x6e\xea\x05\x82\xad\x73\xd6\x7b\xc0\xa7\x63\xa1\x98\xc3\x8b\xf8\xd1\xe0\x85\x48\x62\xdc\x35\x73\xeb\xc8\x6d\x3c\x69\x9d\xc4\x25\xec\xd1\xd7\xfc\x96\xec\x0d\x93\x2c\x0b\x27\xcc\xbd\xad\x4f\xd6\x64\x25\x26\xed\x4c\xde\xfa\xe3\x1f\xc4\x8c\x8e\x2a\x2b\x6d\xe7\x8b\x5c\x89\xda\x5e\xef\x21\x75\xfa\x7b\x11\x6e\xad\x9f\x0d\x62\xe0\x7d\x63\x72\x4e\x61\x18\x36\x49\x67\xc9\x84\xfd\x2c\xea\x1c\x86\x18\x73\xfb\xc8\xac\xdc\xa9\xf7\x8e\xe3\x76\xce\xaf\x2b\x8c\x0d\x21\xbc\xd4\xda\xaa\x85\xdc\x10\x86\xdf\x00\x00\x00\xff\xff\x21\xa5\x75\x05\x75\x01\x00\x00") +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x8f\xbd\x6a\xec\x30\x10\x85\x7b\x3f\xc5\x61\x9b\x6d\xae\xa5\x1b\x08\x04\x02\x29\x52\xa6\xcf\x0b\xcc\x4a\x63\x69\x58\x4b\x72\x34\xe3\xfd\x79\xfb\xe0\xc5\xc5\x76\x99\xf2\xc0\x77\xce\x37\xde\xe3\x3b\x8b\x62\x92\x99\x21\x8a\xca\x81\x55\xa9\xdf\x71\xe2\x40\xab\x32\x0e\x49\x2c\xaf\x27\x17\x5a\xf1\x6a\x64\xab\x8e\x52\x7c\x91\xd4\xc9\xd8\x5f\x5e\x0f\x83\xf7\x08\x54\x8f\x86\x4c\x35\xce\xfc\xe8\x52\xa8\x51\x37\xa9\x09\x57\xb1\x0c\xc2\xd2\x79\x92\x9b\xc3\xa7\x61\x66\x52\x83\x65\xb2\xa3\xc2\x32\x23\x90\xf2\x56\x33\xb5\x8e\xd4\xc6\x93\xd4\x48\x46\x6e\x8b\xbe\xa6\xa7\x64\x33\x0c\x34\xcf\x1c\x31\xf5\x56\x1e\xac\x52\x61\x44\xe9\x1c\xac\xf5\xfb\x3f\x90\x2a\x1b\x2a\x15\xd6\x8d\xcf\x74\x61\xd4\xb6\xcf\x83\x6a\xfc\xfb\x23\x5c\x5b\x3f\x2b\x48\xc1\xb7\x85\x83\x71\x74\xc3\xb0\x50\x38\x53\x62\xe8\xcf\x2c\xc6\xc3\xe0\x7d\x6a\xef\x89\x2b\x6f\xd4\xb3\xe3\x58\x5a\x34\x29\xfc\xf1\xf2\xf6\x7f\x3f\x8c\xcb\x39\xed\x24\xc6\x06\xe7\xf6\x39\x69\x55\x5d\x6a\x70\xc3\x6f\x00\x00\x00\xff\xff\xc5\xaf\x3c\xfb\x89\x01\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -188,8 +188,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1704739012, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x6a, 0xc1, 0xce, 0x94, 0xf6, 0xef, 0xf1, 0x97, 0x95, 0xb, 0x35, 0xaf, 0x5f, 0xe7, 0x5f, 0xac, 0x6e, 0xb8, 0xab, 0xba, 0xb5, 0x35, 0x97, 0x22, 0x36, 0x11, 0xce, 0x44, 0xfc, 0xfa, 0xac}} + info := bindataFileInfo{name: "doc.go", size: 393, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0x22, 0x63, 0x1, 0xf1, 0xb5, 0xd4, 0x48, 0xa8, 0x75, 0x3f, 0xa8, 0x3, 0x83, 0x19, 0x1, 0x27, 0xa2, 0xe8, 0x9, 0x94, 0x46, 0x61, 0xf, 0xcb, 0xb5, 0x5e, 0xbd, 0x35, 0xd5, 0x6e, 0x51}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/protocol/tt/logger.go b/vendor/github.com/status-im/status-go/protocol/tt/logger.go index ae4dad0d..61a7a51b 100644 --- a/vendor/github.com/status-im/status-go/protocol/tt/logger.go +++ b/vendor/github.com/status-im/status-go/protocol/tt/logger.go @@ -12,8 +12,7 @@ var registerOnce sync.Once // MustCreateTestLogger returns a logger based on the passed flags. func MustCreateTestLogger() *zap.Logger { - cfg := zap.NewDevelopmentConfig() - return MustCreateTestLoggerWithConfig(cfg) + return MustCreateTestLoggerWithConfig(loggerConfig()) } func MustCreateTestLoggerWithConfig(cfg zap.Config) *zap.Logger { diff --git a/vendor/github.com/status-im/status-go/protocol/tt/logger_config_dev.go b/vendor/github.com/status-im/status-go/protocol/tt/logger_config_dev.go new file mode 100644 index 00000000..8be578bf --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/tt/logger_config_dev.go @@ -0,0 +1,9 @@ +//go:build !test_silent + +package tt + +import "go.uber.org/zap" + +func loggerConfig() zap.Config { + return zap.NewDevelopmentConfig() +} diff --git a/vendor/github.com/status-im/status-go/protocol/tt/logger_config_silent.go b/vendor/github.com/status-im/status-go/protocol/tt/logger_config_silent.go new file mode 100644 index 00000000..99c7e80d --- /dev/null +++ b/vendor/github.com/status-im/status-go/protocol/tt/logger_config_silent.go @@ -0,0 +1,11 @@ +//go:build test_silent + +package tt + +import "go.uber.org/zap" + +func loggerConfig() zap.Config { + config := zap.NewProductionConfig() + config.Level = zap.NewAtomicLevelAt(zap.WarnLevel) + return config +} diff --git a/vendor/github.com/status-im/status-go/protocol/wakusync/profile_response.go b/vendor/github.com/status-im/status-go/protocol/wakusync/profile_response.go index 30ee6d3f..645e3226 100644 --- a/vendor/github.com/status-im/status-go/protocol/wakusync/profile_response.go +++ b/vendor/github.com/status-im/status-go/protocol/wakusync/profile_response.go @@ -7,10 +7,12 @@ import ( ) type BackedUpProfile struct { - DisplayName string `json:"displayName,omitempty"` - Images []images.IdentityImage `json:"images,omitempty"` - SocialLinks []*identity.SocialLink `json:"socialLinks,omitempty"` - EnsUsernameDetails []*ens.UsernameDetail `json:"ensUsernameDetails,omitempty"` + DisplayName string `json:"displayName,omitempty"` + Images []images.IdentityImage `json:"images,omitempty"` + // Deprecated: use social links from ProfileShowcasePreferences + SocialLinks []*identity.SocialLink `json:"socialLinks,omitempty"` + EnsUsernameDetails []*ens.UsernameDetail `json:"ensUsernameDetails,omitempty"` + ProfileShowcasePreferences identity.ProfileShowcasePreferences `json:"profile_showcase_preferences,omitempty"` } func (sfwr *WakuBackedUpDataResponse) SetDisplayName(displayName string) { @@ -21,6 +23,7 @@ func (sfwr *WakuBackedUpDataResponse) SetImages(images []images.IdentityImage) { sfwr.Profile.Images = images } +// Deprecated: use social links from ProfileShowcasePreferences func (sfwr *WakuBackedUpDataResponse) SetSocialLinks(socialLinks []*identity.SocialLink) { sfwr.Profile.SocialLinks = socialLinks } @@ -28,3 +31,7 @@ func (sfwr *WakuBackedUpDataResponse) SetSocialLinks(socialLinks []*identity.Soc func (sfwr *WakuBackedUpDataResponse) SetEnsUsernameDetails(ensUsernameDetails []*ens.UsernameDetail) { sfwr.Profile.EnsUsernameDetails = ensUsernameDetails } + +func (sfwr *WakuBackedUpDataResponse) SetProfileShowcasePreferences(profileShowcasePreferences *identity.ProfileShowcasePreferences) { + sfwr.Profile.ProfileShowcasePreferences = *profileShowcasePreferences +} diff --git a/vendor/github.com/status-im/status-go/rpc/chain/client.go b/vendor/github.com/status-im/status-go/rpc/chain/client.go index ee10524c..865b1c88 100644 --- a/vendor/github.com/status-im/status-go/rpc/chain/client.go +++ b/vendor/github.com/status-im/status-go/rpc/chain/client.go @@ -13,7 +13,7 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/ethclient" @@ -21,10 +21,6 @@ import ( "github.com/status-im/status-go/services/rpcstats" ) -type FeeHistory struct { - BaseFeePerGas []string `json:"baseFeePerGas"` -} - type BatchCallClient interface { BatchCallContext(ctx context.Context, b []rpc.BatchElem) error } @@ -38,8 +34,8 @@ type ClientInterface interface { FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) - FullTransactionByBlockNumberAndIndex(ctx context.Context, blockNumber *big.Int, index uint) (*FullTransaction, error) - GetBaseFeeFromBlock(blockNumber *big.Int) (string, error) + CallBlockHashByTransaction(ctx context.Context, blockNumber *big.Int, index uint) (common.Hash, error) + GetBaseFeeFromBlock(ctx context.Context, blockNumber *big.Int) (string, error) NetworkID() uint64 ToBigInt() *big.Int CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error) @@ -58,9 +54,11 @@ type ClientInterface interface { } type ClientWithFallback struct { - ChainID uint64 - main *ethclient.Client - fallback *ethclient.Client + ChainID uint64 + main *ethclient.Client + fallback *ethclient.Client + mainLimiter *RPCLimiter + fallbackLimiter *RPCLimiter mainRPC *rpc.Client fallbackRPC *rpc.Client @@ -70,6 +68,8 @@ type ClientWithFallback struct { IsConnected bool IsConnectedLock sync.RWMutex LastCheckedAt int64 + + circuitBreakerCmdName string } // Don't mark connection as failed if we get one of these errors @@ -94,13 +94,13 @@ var propagateErrors = []error{ } type CommandResult struct { - res1 any - res2 any - vmError error + res []any + err error } -func NewSimpleClient(main *rpc.Client, chainID uint64) *ClientWithFallback { - hystrix.ConfigureCommand(fmt.Sprintf("ethClient_%d", chainID), hystrix.CommandConfig{ +func NewSimpleClient(mainLimiter *RPCLimiter, main *rpc.Client, chainID uint64) *ClientWithFallback { + circuitBreakerCmdName := fmt.Sprintf("ethClient_%d", chainID) + hystrix.ConfigureCommand(circuitBreakerCmdName, hystrix.CommandConfig{ Timeout: 10000, MaxConcurrentRequests: 100, SleepWindow: 300000, @@ -108,18 +108,22 @@ func NewSimpleClient(main *rpc.Client, chainID uint64) *ClientWithFallback { }) return &ClientWithFallback{ - ChainID: chainID, - main: ethclient.NewClient(main), - fallback: nil, - mainRPC: main, - fallbackRPC: nil, - IsConnected: true, - LastCheckedAt: time.Now().Unix(), + ChainID: chainID, + main: ethclient.NewClient(main), + fallback: nil, + mainLimiter: mainLimiter, + fallbackLimiter: nil, + mainRPC: main, + fallbackRPC: nil, + IsConnected: true, + LastCheckedAt: time.Now().Unix(), + circuitBreakerCmdName: circuitBreakerCmdName, } } -func NewClient(main, fallback *rpc.Client, chainID uint64) *ClientWithFallback { - hystrix.ConfigureCommand(fmt.Sprintf("ethClient_%d", chainID), hystrix.CommandConfig{ +func NewClient(mainLimiter *RPCLimiter, main *rpc.Client, fallbackLimiter *RPCLimiter, fallback *rpc.Client, chainID uint64) *ClientWithFallback { + circuitBreakerCmdName := fmt.Sprintf("ethClient_%d", chainID) + hystrix.ConfigureCommand(circuitBreakerCmdName, hystrix.CommandConfig{ Timeout: 20000, MaxConcurrentRequests: 100, SleepWindow: 300000, @@ -131,13 +135,16 @@ func NewClient(main, fallback *rpc.Client, chainID uint64) *ClientWithFallback { fallbackEthClient = ethclient.NewClient(fallback) } return &ClientWithFallback{ - ChainID: chainID, - main: ethclient.NewClient(main), - fallback: fallbackEthClient, - mainRPC: main, - fallbackRPC: fallback, - IsConnected: true, - LastCheckedAt: time.Now().Unix(), + ChainID: chainID, + main: ethclient.NewClient(main), + fallback: fallbackEthClient, + mainLimiter: mainLimiter, + fallbackLimiter: fallbackLimiter, + mainRPC: main, + fallbackRPC: fallback, + IsConnected: true, + LastCheckedAt: time.Now().Unix(), + circuitBreakerCmdName: circuitBreakerCmdName, } } @@ -152,14 +159,22 @@ func isVMError(err error) bool { if strings.HasPrefix(err.Error(), "execution reverted") { return true } + if strings.Contains(err.Error(), core.ErrInsufficientFunds.Error()) { + return true + } for _, vmError := range propagateErrors { if err == vmError { return true } + } return false } +func isRPSLimitError(err error) bool { + return strings.Contains(err.Error(), "backoff_seconds") +} + func (c *ClientWithFallback) SetIsConnected(value bool) { c.IsConnectedLock.Lock() defer c.IsConnectedLock.Unlock() @@ -188,348 +203,290 @@ func (c *ClientWithFallback) GetIsConnected() bool { return c.IsConnected } -func (c *ClientWithFallback) makeCallNoReturn(main func() error, fallback func() error) error { +func (c *ClientWithFallback) makeCall(ctx context.Context, main func() ([]any, error), fallback func() ([]any, error)) ([]any, error) { resultChan := make(chan CommandResult, 1) c.LastCheckedAt = time.Now().Unix() - errChan := hystrix.Go(fmt.Sprintf("ethClient_%d", c.ChainID), func() error { - err := main() + errChan := hystrix.Go(c.circuitBreakerCmdName, func() error { + err := c.mainLimiter.WaitForRequestsAvailability(1) if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} - return nil - } - return err - } - c.SetIsConnected(true) - resultChan <- CommandResult{} - return nil - }, func(err error) error { - if c.fallback == nil { - c.SetIsConnected(false) return err } - err = fallback() - if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} - return nil - } - c.SetIsConnected(false) - return err - } - resultChan <- CommandResult{} - return nil - }) - - select { - case result := <-resultChan: - if result.vmError != nil { - return result.vmError - } - return nil - case err := <-errChan: - return err - } -} - -func (c *ClientWithFallback) makeCallSingleReturn(main func() (any, error), fallback func() (any, error), toggleIsConnected bool) (any, error) { - resultChan := make(chan CommandResult, 1) - errChan := hystrix.Go(fmt.Sprintf("ethClient_%d", c.ChainID), func() error { res, err := main() if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} + if isRPSLimitError(err) { + c.mainLimiter.ReduceLimit() + } else if isVMError(err) { + resultChan <- CommandResult{err: err} return nil } return err } - if toggleIsConnected { - c.SetIsConnected(true) - } - resultChan <- CommandResult{res1: res} + resultChan <- CommandResult{res: res} return nil }, func(err error) error { if c.fallback == nil { - if toggleIsConnected { - c.SetIsConnected(false) - } + return err + } + + err = c.fallbackLimiter.WaitForRequestsAvailability(1) + if err != nil { return err } res, err := fallback() if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} + if isRPSLimitError(err) { + c.fallbackLimiter.ReduceLimit() + } else if isVMError(err) { + resultChan <- CommandResult{err: err} return nil } - if toggleIsConnected { - c.SetIsConnected(false) - } return err } - if toggleIsConnected { - c.SetIsConnected(true) - } - resultChan <- CommandResult{res1: res} + resultChan <- CommandResult{res: res} return nil }) select { case result := <-resultChan: - if result.vmError != nil { - return nil, result.vmError + if result.err != nil { + return nil, result.err } - return result.res1, nil + return result.res, nil case err := <-errChan: return nil, err } } -func (c *ClientWithFallback) makeCallDoubleReturn(main func() (any, any, error), fallback func() (any, any, error)) (any, any, error) { - resultChan := make(chan CommandResult, 1) - c.LastCheckedAt = time.Now().Unix() - errChan := hystrix.Go(fmt.Sprintf("ethClient_%d", c.ChainID), func() error { - a, b, err := main() - if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} - return nil - } - return err - } - c.SetIsConnected(true) - resultChan <- CommandResult{res1: a, res2: b} - return nil - }, func(err error) error { - if c.fallback == nil { - c.SetIsConnected(false) - return err - } - - a, b, err := fallback() - if err != nil { - if isVMError(err) { - resultChan <- CommandResult{vmError: err} - return nil - } - c.SetIsConnected(false) - return err - } - c.SetIsConnected(true) - resultChan <- CommandResult{res1: a, res2: b} - return nil - }) - - select { - case result := <-resultChan: - if result.vmError != nil { - return nil, nil, result.vmError - } - return result.res1, result.res2, nil - case err := <-errChan: - return nil, nil, err - } -} - func (c *ClientWithFallback) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { rpcstats.CountCall("eth_BlockByHash") - block, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.BlockByHash(ctx, hash) }, - func() (any, error) { return c.fallback.BlockByHash(ctx, hash) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.BlockByHash(ctx, hash); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.BlockByHash(ctx, hash); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return block.(*types.Block), nil + return res[0].(*types.Block), nil } func (c *ClientWithFallback) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) { rpcstats.CountCall("eth_BlockByNumber") - block, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.BlockByNumber(ctx, number) }, - func() (any, error) { return c.fallback.BlockByNumber(ctx, number) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.BlockByNumber(ctx, number); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.BlockByNumber(ctx, number); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return block.(*types.Block), nil + return res[0].(*types.Block), nil } func (c *ClientWithFallback) BlockNumber(ctx context.Context) (uint64, error) { rpcstats.CountCall("eth_BlockNumber") - number, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.BlockNumber(ctx) }, - func() (any, error) { return c.fallback.BlockNumber(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.BlockNumber(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.BlockNumber(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return number.(uint64), nil + return res[0].(uint64), nil } func (c *ClientWithFallback) PeerCount(ctx context.Context) (uint64, error) { rpcstats.CountCall("eth_PeerCount") - peerCount, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PeerCount(ctx) }, - func() (any, error) { return c.fallback.PeerCount(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PeerCount(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PeerCount(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return peerCount.(uint64), nil + return res[0].(uint64), nil } func (c *ClientWithFallback) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) { rpcstats.CountCall("eth_HeaderByHash") - header, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.HeaderByHash(ctx, hash) }, - func() (any, error) { return c.fallback.HeaderByHash(ctx, hash) }, - false, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.HeaderByHash(ctx, hash); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.HeaderByHash(ctx, hash); return []any{a}, err }, ) if err != nil { return nil, err } - return header.(*types.Header), nil + return res[0].(*types.Header), nil } func (c *ClientWithFallback) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) { rpcstats.CountCall("eth_HeaderByNumber") - header, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.HeaderByNumber(ctx, number) }, - func() (any, error) { return c.fallback.HeaderByNumber(ctx, number) }, - false, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.HeaderByNumber(ctx, number); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.HeaderByNumber(ctx, number); return []any{a}, err }, ) if err != nil { return nil, err } - return header.(*types.Header), nil + return res[0].(*types.Header), nil } func (c *ClientWithFallback) TransactionByHash(ctx context.Context, hash common.Hash) (*types.Transaction, bool, error) { rpcstats.CountCall("eth_TransactionByHash") - tx, isPending, err := c.makeCallDoubleReturn( - func() (any, any, error) { return c.main.TransactionByHash(ctx, hash) }, - func() (any, any, error) { return c.fallback.TransactionByHash(ctx, hash) }, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, b, err := c.main.TransactionByHash(ctx, hash); return []any{a, b}, err }, + func() ([]any, error) { a, b, err := c.fallback.TransactionByHash(ctx, hash); return []any{a, b}, err }, ) if err != nil { return nil, false, err } - return tx.(*types.Transaction), isPending.(bool), nil + return res[0].(*types.Transaction), res[1].(bool), nil } func (c *ClientWithFallback) TransactionSender(ctx context.Context, tx *types.Transaction, block common.Hash, index uint) (common.Address, error) { rpcstats.CountCall("eth_TransactionSender") - address, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.TransactionSender(ctx, tx, block, index) }, - func() (any, error) { return c.fallback.TransactionSender(ctx, tx, block, index) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.TransactionSender(ctx, tx, block, index); return []any{a}, err }, + func() ([]any, error) { + a, err := c.fallback.TransactionSender(ctx, tx, block, index) + return []any{a}, err + }, ) - return address.(common.Address), err + c.toggleConnectionState(err) + + return res[0].(common.Address), err } func (c *ClientWithFallback) TransactionCount(ctx context.Context, blockHash common.Hash) (uint, error) { rpcstats.CountCall("eth_TransactionCount") - count, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.TransactionCount(ctx, blockHash) }, - func() (any, error) { return c.fallback.TransactionCount(ctx, blockHash) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.TransactionCount(ctx, blockHash); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.TransactionCount(ctx, blockHash); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return count.(uint), nil + return res[0].(uint), nil } func (c *ClientWithFallback) TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (*types.Transaction, error) { rpcstats.CountCall("eth_TransactionInBlock") - transactions, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.TransactionInBlock(ctx, blockHash, index) }, - func() (any, error) { return c.fallback.TransactionInBlock(ctx, blockHash, index) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { + a, err := c.main.TransactionInBlock(ctx, blockHash, index) + return []any{a}, err + }, + func() ([]any, error) { + a, err := c.fallback.TransactionInBlock(ctx, blockHash, index) + return []any{a}, err + }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return transactions.(*types.Transaction), nil + return res[0].(*types.Transaction), nil } func (c *ClientWithFallback) TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) { rpcstats.CountCall("eth_TransactionReceipt") - receipt, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.TransactionReceipt(ctx, txHash) }, - func() (any, error) { return c.fallback.TransactionReceipt(ctx, txHash) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.TransactionReceipt(ctx, txHash); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.TransactionReceipt(ctx, txHash); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return receipt.(*types.Receipt), nil + return res[0].(*types.Receipt), nil } func (c *ClientWithFallback) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error) { rpcstats.CountCall("eth_SyncProgress") - progress, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.SyncProgress(ctx) }, - func() (any, error) { return c.fallback.SyncProgress(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.SyncProgress(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.SyncProgress(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return progress.(*ethereum.SyncProgress), nil + return res[0].(*ethereum.SyncProgress), nil } func (c *ClientWithFallback) SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) (ethereum.Subscription, error) { rpcstats.CountCall("eth_SubscribeNewHead") - sub, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.SubscribeNewHead(ctx, ch) }, - func() (any, error) { return c.fallback.SubscribeNewHead(ctx, ch) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.SubscribeNewHead(ctx, ch); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.SubscribeNewHead(ctx, ch); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return sub.(ethereum.Subscription), nil + return res[0].(ethereum.Subscription), nil } func (c *ClientWithFallback) NetworkID() uint64 { @@ -539,326 +496,384 @@ func (c *ClientWithFallback) NetworkID() uint64 { func (c *ClientWithFallback) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) { rpcstats.CountCall("eth_BalanceAt") - balance, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.BalanceAt(ctx, account, blockNumber) }, - func() (any, error) { return c.fallback.BalanceAt(ctx, account, blockNumber) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.BalanceAt(ctx, account, blockNumber); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.BalanceAt(ctx, account, blockNumber); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return balance.(*big.Int), nil + return res[0].(*big.Int), nil } func (c *ClientWithFallback) StorageAt(ctx context.Context, account common.Address, key common.Hash, blockNumber *big.Int) ([]byte, error) { rpcstats.CountCall("eth_StorageAt") - storage, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.StorageAt(ctx, account, key, blockNumber) }, - func() (any, error) { return c.fallback.StorageAt(ctx, account, key, blockNumber) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { + a, err := c.main.StorageAt(ctx, account, key, blockNumber) + return []any{a}, err + }, + func() ([]any, error) { + a, err := c.fallback.StorageAt(ctx, account, key, blockNumber) + return []any{a}, err + }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return storage.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error) { rpcstats.CountCall("eth_CodeAt") - code, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.CodeAt(ctx, account, blockNumber) }, - func() (any, error) { return c.fallback.CodeAt(ctx, account, blockNumber) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.CodeAt(ctx, account, blockNumber); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.CodeAt(ctx, account, blockNumber); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return code.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error) { rpcstats.CountCall("eth_NonceAt") - nonce, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.NonceAt(ctx, account, blockNumber) }, - func() (any, error) { return c.fallback.NonceAt(ctx, account, blockNumber) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.NonceAt(ctx, account, blockNumber); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.NonceAt(ctx, account, blockNumber); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return nonce.(uint64), nil + return res[0].(uint64), nil } func (c *ClientWithFallback) FilterLogs(ctx context.Context, q ethereum.FilterQuery) ([]types.Log, error) { rpcstats.CountCall("eth_FilterLogs") - logs, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.FilterLogs(ctx, q) }, - func() (any, error) { return c.fallback.FilterLogs(ctx, q) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.FilterLogs(ctx, q); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.FilterLogs(ctx, q); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return logs.([]types.Log), nil + return res[0].([]types.Log), nil } func (c *ClientWithFallback) SubscribeFilterLogs(ctx context.Context, q ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error) { rpcstats.CountCall("eth_SubscribeFilterLogs") - sub, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.SubscribeFilterLogs(ctx, q, ch) }, - func() (any, error) { return c.fallback.SubscribeFilterLogs(ctx, q, ch) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.SubscribeFilterLogs(ctx, q, ch); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.SubscribeFilterLogs(ctx, q, ch); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return sub.(ethereum.Subscription), nil + return res[0].(ethereum.Subscription), nil } func (c *ClientWithFallback) PendingBalanceAt(ctx context.Context, account common.Address) (*big.Int, error) { rpcstats.CountCall("eth_PendingBalanceAt") - balance, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingBalanceAt(ctx, account) }, - func() (any, error) { return c.fallback.PendingBalanceAt(ctx, account) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingBalanceAt(ctx, account); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingBalanceAt(ctx, account); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return balance.(*big.Int), nil + return res[0].(*big.Int), nil } func (c *ClientWithFallback) PendingStorageAt(ctx context.Context, account common.Address, key common.Hash) ([]byte, error) { rpcstats.CountCall("eth_PendingStorageAt") - storage, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingStorageAt(ctx, account, key) }, - func() (any, error) { return c.fallback.PendingStorageAt(ctx, account, key) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingStorageAt(ctx, account, key); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingStorageAt(ctx, account, key); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return storage.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error) { rpcstats.CountCall("eth_PendingCodeAt") - code, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingCodeAt(ctx, account) }, - func() (any, error) { return c.fallback.PendingCodeAt(ctx, account) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingCodeAt(ctx, account); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingCodeAt(ctx, account); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return code.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) { rpcstats.CountCall("eth_PendingNonceAt") - nonce, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingNonceAt(ctx, account) }, - func() (any, error) { return c.fallback.PendingNonceAt(ctx, account) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingNonceAt(ctx, account); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingNonceAt(ctx, account); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return nonce.(uint64), nil + return res[0].(uint64), nil } func (c *ClientWithFallback) PendingTransactionCount(ctx context.Context) (uint, error) { rpcstats.CountCall("eth_PendingTransactionCount") - count, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingTransactionCount(ctx) }, - func() (any, error) { return c.fallback.PendingTransactionCount(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingTransactionCount(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingTransactionCount(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return count.(uint), nil + return res[0].(uint), nil } func (c *ClientWithFallback) CallContract(ctx context.Context, msg ethereum.CallMsg, blockNumber *big.Int) ([]byte, error) { rpcstats.CountCall("eth_CallContract_" + msg.To.String()) - data, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.CallContract(ctx, msg, blockNumber) }, - func() (any, error) { return c.fallback.CallContract(ctx, msg, blockNumber) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.CallContract(ctx, msg, blockNumber); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.CallContract(ctx, msg, blockNumber); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return data.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) CallContractAtHash(ctx context.Context, msg ethereum.CallMsg, blockHash common.Hash) ([]byte, error) { rpcstats.CountCall("eth_CallContractAtHash") - data, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.CallContractAtHash(ctx, msg, blockHash) }, - func() (any, error) { return c.fallback.CallContractAtHash(ctx, msg, blockHash) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.CallContractAtHash(ctx, msg, blockHash); return []any{a}, err }, + func() ([]any, error) { + a, err := c.fallback.CallContractAtHash(ctx, msg, blockHash) + return []any{a}, err + }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return data.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) PendingCallContract(ctx context.Context, msg ethereum.CallMsg) ([]byte, error) { rpcstats.CountCall("eth_PendingCallContract") - data, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.PendingCallContract(ctx, msg) }, - func() (any, error) { return c.fallback.PendingCallContract(ctx, msg) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.PendingCallContract(ctx, msg); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.PendingCallContract(ctx, msg); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return data.([]byte), nil + return res[0].([]byte), nil } func (c *ClientWithFallback) SuggestGasPrice(ctx context.Context) (*big.Int, error) { rpcstats.CountCall("eth_SuggestGasPrice") - gasPrice, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.SuggestGasPrice(ctx) }, - func() (any, error) { return c.fallback.SuggestGasPrice(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.SuggestGasPrice(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.SuggestGasPrice(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return gasPrice.(*big.Int), nil + return res[0].(*big.Int), nil } func (c *ClientWithFallback) SuggestGasTipCap(ctx context.Context) (*big.Int, error) { rpcstats.CountCall("eth_SuggestGasTipCap") - tip, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.SuggestGasTipCap(ctx) }, - func() (any, error) { return c.fallback.SuggestGasTipCap(ctx) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.SuggestGasTipCap(ctx); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.SuggestGasTipCap(ctx); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return tip.(*big.Int), nil + return res[0].(*big.Int), nil } func (c *ClientWithFallback) FeeHistory(ctx context.Context, blockCount uint64, lastBlock *big.Int, rewardPercentiles []float64) (*ethereum.FeeHistory, error) { rpcstats.CountCall("eth_FeeHistory") - feeHistory, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) }, - func() (any, error) { return c.fallback.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { + a, err := c.main.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) + return []any{a}, err + }, + func() ([]any, error) { + a, err := c.fallback.FeeHistory(ctx, blockCount, lastBlock, rewardPercentiles) + return []any{a}, err + }, ) + c.toggleConnectionState(err) + if err != nil { return nil, err } - return feeHistory.(*ethereum.FeeHistory), nil + return res[0].(*ethereum.FeeHistory), nil } func (c *ClientWithFallback) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64, error) { rpcstats.CountCall("eth_EstimateGas") - estimate, err := c.makeCallSingleReturn( - func() (any, error) { return c.main.EstimateGas(ctx, msg) }, - func() (any, error) { return c.fallback.EstimateGas(ctx, msg) }, - true, + res, err := c.makeCall( + ctx, + func() ([]any, error) { a, err := c.main.EstimateGas(ctx, msg); return []any{a}, err }, + func() ([]any, error) { a, err := c.fallback.EstimateGas(ctx, msg); return []any{a}, err }, ) + c.toggleConnectionState(err) + if err != nil { return 0, err } - return estimate.(uint64), nil + return res[0].(uint64), nil } func (c *ClientWithFallback) SendTransaction(ctx context.Context, tx *types.Transaction) error { rpcstats.CountCall("eth_SendTransaction") - return c.makeCallNoReturn( - func() error { return c.main.SendTransaction(ctx, tx) }, - func() error { return c.fallback.SendTransaction(ctx, tx) }, + _, err := c.makeCall( + ctx, + func() ([]any, error) { return nil, c.main.SendTransaction(ctx, tx) }, + func() ([]any, error) { return nil, c.fallback.SendTransaction(ctx, tx) }, ) + return err } func (c *ClientWithFallback) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error { rpcstats.CountCall("eth_CallContext") - return c.makeCallNoReturn( - func() error { return c.mainRPC.CallContext(ctx, result, method, args...) }, - func() error { return c.fallbackRPC.CallContext(ctx, result, method, args...) }, + _, err := c.makeCall( + ctx, + func() ([]any, error) { return nil, c.mainRPC.CallContext(ctx, result, method, args...) }, + func() ([]any, error) { return nil, c.fallbackRPC.CallContext(ctx, result, method, args...) }, ) + return err } func (c *ClientWithFallback) BatchCallContext(ctx context.Context, b []rpc.BatchElem) error { rpcstats.CountCall("eth_BatchCallContext") - return c.makeCallNoReturn( - func() error { return c.mainRPC.BatchCallContext(ctx, b) }, - func() error { return c.fallbackRPC.BatchCallContext(ctx, b) }, + _, err := c.makeCall( + ctx, + func() ([]any, error) { return nil, c.mainRPC.BatchCallContext(ctx, b) }, + func() ([]any, error) { return nil, c.fallbackRPC.BatchCallContext(ctx, b) }, ) + return err } func (c *ClientWithFallback) ToBigInt() *big.Int { return big.NewInt(int64(c.ChainID)) } -func (c *ClientWithFallback) GetBaseFeeFromBlock(blockNumber *big.Int) (string, error) { +func (c *ClientWithFallback) GetBaseFeeFromBlock(ctx context.Context, blockNumber *big.Int) (string, error) { rpcstats.CountCall("eth_GetBaseFeeFromBlock") - var feeHistory FeeHistory - err := c.mainRPC.Call(&feeHistory, "eth_feeHistory", "0x1", (*hexutil.Big)(blockNumber), nil) + + feeHistory, err := c.FeeHistory(ctx, 1, blockNumber, nil) + if err != nil { if err.Error() == "the method eth_feeHistory does not exist/is not available" { return "", nil @@ -867,8 +882,8 @@ func (c *ClientWithFallback) GetBaseFeeFromBlock(blockNumber *big.Int) (string, } var baseGasFee string = "" - if len(feeHistory.BaseFeePerGas) > 0 { - baseGasFee = feeHistory.BaseFeePerGas[0] + if len(feeHistory.BaseFee) > 0 { + baseGasFee = feeHistory.BaseFee[0].String() } return baseGasFee, err @@ -877,24 +892,28 @@ func (c *ClientWithFallback) GetBaseFeeFromBlock(blockNumber *big.Int) (string, // go-ethereum's `Transaction` items drop the blkHash obtained during the RPC call. // This function preserves the additional data. This is the cheapest way to obtain // the block hash for a given block number. -func (c *ClientWithFallback) FullTransactionByBlockNumberAndIndex(ctx context.Context, blockNumber *big.Int, index uint) (*FullTransaction, error) { +func (c *ClientWithFallback) CallBlockHashByTransaction(ctx context.Context, blockNumber *big.Int, index uint) (common.Hash, error) { rpcstats.CountCall("eth_FullTransactionByBlockNumberAndIndex") - tx, err := c.makeCallSingleReturn( - func() (any, error) { - return callFullTransactionByBlockNumberAndIndex(ctx, c.mainRPC, blockNumber, index) + res, err := c.makeCall( + ctx, + func() ([]any, error) { + a, err := callBlockHashByTransaction(ctx, c.mainRPC, blockNumber, index) + return []any{a}, err }, - func() (any, error) { - return callFullTransactionByBlockNumberAndIndex(ctx, c.fallbackRPC, blockNumber, index) + func() ([]any, error) { + a, err := callBlockHashByTransaction(ctx, c.fallbackRPC, blockNumber, index) + return []any{a}, err }, - true, ) + c.toggleConnectionState(err) + if err != nil { - return nil, err + return common.HexToHash(""), err } - return tx.(*FullTransaction), nil + return res[0].(common.Hash), nil } func (c *ClientWithFallback) GetWalletNotifier() func(chainId uint64, message string) { @@ -904,3 +923,13 @@ func (c *ClientWithFallback) GetWalletNotifier() func(chainId uint64, message st func (c *ClientWithFallback) SetWalletNotifier(notifier func(chainId uint64, message string)) { c.WalletNotifier = notifier } + +func (c *ClientWithFallback) toggleConnectionState(err error) { + connected := true + if err != nil { + if !isVMError(err) && err != ErrRequestsOverLimit { + connected = false + } + } + c.SetIsConnected(connected) +} diff --git a/vendor/github.com/status-im/status-go/rpc/chain/rpc.go b/vendor/github.com/status-im/status-go/rpc/chain/rpc.go index 9bb03b85..81d42245 100644 --- a/vendor/github.com/status-im/status-go/rpc/chain/rpc.go +++ b/vendor/github.com/status-im/status-go/rpc/chain/rpc.go @@ -3,8 +3,6 @@ package chain import ( "context" "encoding/json" - "errors" - "fmt" "math/big" "github.com/ethereum/go-ethereum" @@ -28,22 +26,17 @@ type TxExtraInfo struct { From *common.Address `json:"from,omitempty"` } -func callFullTransactionByBlockNumberAndIndex(ctx context.Context, rpc *rpc.Client, number *big.Int, index uint) (*FullTransaction, error) { +func callBlockHashByTransaction(ctx context.Context, rpc *rpc.Client, number *big.Int, index uint) (common.Hash, error) { var json *FullTransaction err := rpc.CallContext(ctx, &json, "eth_getTransactionByBlockNumberAndIndex", toBlockNumArg(number), hexutil.Uint64(index)) if err != nil { - return nil, err + return common.HexToHash(""), err } if json == nil { - return nil, ethereum.NotFound - } else if _, r, _ := json.Tx.RawSignatureValues(); r == nil { - return nil, fmt.Errorf("server returned transaction without signature") + return common.HexToHash(""), ethereum.NotFound } - if json.From != nil && json.BlockHash != nil { - setSenderFromServer(json.Tx, *json.From, *json.BlockHash) - } - return json, nil + return *json.BlockHash, nil } func (tx *FullTransaction) UnmarshalJSON(msg []byte) error { @@ -71,38 +64,3 @@ func toBlockNumArg(number *big.Int) string { } return hexutil.EncodeBig(number) } - -type senderFromServer struct { - addr common.Address - blockhash common.Hash -} - -var errNotCached = errors.New("sender not cached") - -//nolint:errcheck -func setSenderFromServer(tx *types.Transaction, addr common.Address, block common.Hash) { - // Use types.Sender for side-effect to store our signer into the cache. - types.Sender(&senderFromServer{addr, block}, tx) -} - -func (s *senderFromServer) Equal(other types.Signer) bool { - os, ok := other.(*senderFromServer) - return ok && os.blockhash == s.blockhash -} - -func (s *senderFromServer) Sender(tx *types.Transaction) (common.Address, error) { - if s.addr == (common.Address{}) { - return common.Address{}, errNotCached - } - return s.addr, nil -} - -func (s *senderFromServer) ChainID() *big.Int { - panic("can't sign with senderFromServer") -} -func (s *senderFromServer) Hash(tx *types.Transaction) common.Hash { - panic("can't sign with senderFromServer") -} -func (s *senderFromServer) SignatureValues(tx *types.Transaction, sig []byte) (R, S, V *big.Int, err error) { - panic("can't sign with senderFromServer") -} diff --git a/vendor/github.com/status-im/status-go/rpc/chain/rpc_limiter.go b/vendor/github.com/status-im/status-go/rpc/chain/rpc_limiter.go new file mode 100644 index 00000000..b0db5d23 --- /dev/null +++ b/vendor/github.com/status-im/status-go/rpc/chain/rpc_limiter.go @@ -0,0 +1,162 @@ +package chain + +import ( + "fmt" + "sync" + "time" + + "github.com/google/uuid" +) + +const ( + defaultMaxRequestsPerSecond = 100 + minRequestsPerSecond = 20 + requestsPerSecondStep = 10 + + tickerInterval = 1 * time.Second +) + +var ( + ErrRequestsOverLimit = fmt.Errorf("number of requests over limit") +) + +type callerOnWait struct { + requests int + ch chan bool +} + +type RPCLimiter struct { + uuid uuid.UUID + + maxRequestsPerSecond int + maxRequestsPerSecondMutex sync.RWMutex + + requestsMadeWithinSecond int + requestsMadeWithinSecondMutex sync.RWMutex + + callersOnWaitForRequests []callerOnWait + callersOnWaitForRequestsMutex sync.RWMutex + + quit chan bool +} + +func NewRPCLimiter() *RPCLimiter { + + limiter := RPCLimiter{ + uuid: uuid.New(), + maxRequestsPerSecond: defaultMaxRequestsPerSecond, + quit: make(chan bool), + } + + limiter.start() + + return &limiter +} + +func (rl *RPCLimiter) ReduceLimit() { + rl.maxRequestsPerSecondMutex.Lock() + defer rl.maxRequestsPerSecondMutex.Unlock() + if rl.maxRequestsPerSecond <= minRequestsPerSecond { + return + } + rl.maxRequestsPerSecond = rl.maxRequestsPerSecond - requestsPerSecondStep +} + +func (rl *RPCLimiter) start() { + ticker := time.NewTicker(tickerInterval) + go func() { + for { + select { + case <-ticker.C: + { + rl.requestsMadeWithinSecondMutex.Lock() + oldrequestsMadeWithinSecond := rl.requestsMadeWithinSecond + if rl.requestsMadeWithinSecond != 0 { + rl.requestsMadeWithinSecond = 0 + } + rl.requestsMadeWithinSecondMutex.Unlock() + if oldrequestsMadeWithinSecond == 0 { + continue + } + } + + rl.callersOnWaitForRequestsMutex.Lock() + numOfRequestsToMakeAvailable := rl.maxRequestsPerSecond + for { + if numOfRequestsToMakeAvailable == 0 || len(rl.callersOnWaitForRequests) == 0 { + break + } + + var index = -1 + for i := 0; i < len(rl.callersOnWaitForRequests); i++ { + if rl.callersOnWaitForRequests[i].requests <= numOfRequestsToMakeAvailable { + index = i + break + } + } + + if index == -1 { + break + } + + callerOnWait := rl.callersOnWaitForRequests[index] + numOfRequestsToMakeAvailable -= callerOnWait.requests + rl.callersOnWaitForRequests = append(rl.callersOnWaitForRequests[:index], rl.callersOnWaitForRequests[index+1:]...) + + callerOnWait.ch <- true + } + rl.callersOnWaitForRequestsMutex.Unlock() + + case <-rl.quit: + ticker.Stop() + return + } + } + }() +} + +func (rl *RPCLimiter) Stop() { + rl.quit <- true + close(rl.quit) + for _, callerOnWait := range rl.callersOnWaitForRequests { + close(callerOnWait.ch) + } + rl.callersOnWaitForRequests = nil +} + +func (rl *RPCLimiter) WaitForRequestsAvailability(requests int) error { + if requests > rl.maxRequestsPerSecond { + return ErrRequestsOverLimit + } + + { + rl.requestsMadeWithinSecondMutex.Lock() + if rl.requestsMadeWithinSecond+requests <= rl.maxRequestsPerSecond { + rl.requestsMadeWithinSecond += requests + rl.requestsMadeWithinSecondMutex.Unlock() + return nil + } + rl.requestsMadeWithinSecondMutex.Unlock() + } + + callerOnWait := callerOnWait{ + requests: requests, + ch: make(chan bool), + } + + { + rl.callersOnWaitForRequestsMutex.Lock() + rl.callersOnWaitForRequests = append(rl.callersOnWaitForRequests, callerOnWait) + rl.callersOnWaitForRequestsMutex.Unlock() + } + + <-callerOnWait.ch + + close(callerOnWait.ch) + + rl.requestsMadeWithinSecondMutex.Lock() + rl.requestsMadeWithinSecond += requests + rl.requestsMadeWithinSecondMutex.Unlock() + + return nil +} diff --git a/vendor/github.com/status-im/status-go/rpc/client.go b/vendor/github.com/status-im/status-go/rpc/client.go index c219dcdc..c404cf69 100644 --- a/vendor/github.com/status-im/status-go/rpc/client.go +++ b/vendor/github.com/status-im/status-go/rpc/client.go @@ -6,7 +6,9 @@ import ( "encoding/json" "errors" "fmt" + "net/url" "reflect" + "strings" "sync" "time" @@ -47,10 +49,12 @@ type Client struct { upstreamURL string UpstreamChainID uint64 - local *gethrpc.Client - upstream chain.ClientInterface - rpcClientsMutex sync.RWMutex - rpcClients map[uint64]chain.ClientInterface + local *gethrpc.Client + upstream chain.ClientInterface + rpcClientsMutex sync.RWMutex + rpcClients map[uint64]chain.ClientInterface + rpcLimiterMutex sync.RWMutex + limiterPerProvider map[string]*chain.RPCLimiter router *router NetworkManager *network.Manager @@ -81,11 +85,12 @@ func NewClient(client *gethrpc.Client, upstreamChainID uint64, upstream params.U } c := Client{ - local: client, - NetworkManager: networkManager, - handlers: make(map[string]Handler), - rpcClients: make(map[uint64]chain.ClientInterface), - log: log, + local: client, + NetworkManager: networkManager, + handlers: make(map[string]Handler), + rpcClients: make(map[uint64]chain.ClientInterface), + limiterPerProvider: make(map[string]*chain.RPCLimiter), + log: log, } if upstream.Enabled { @@ -96,7 +101,11 @@ func NewClient(client *gethrpc.Client, upstreamChainID uint64, upstream params.U if err != nil { return nil, fmt.Errorf("dial upstream server: %s", err) } - c.upstream = chain.NewSimpleClient(upstreamClient, upstreamChainID) + limiter, err := c.getRPCLimiter(c.upstreamURL) + if err != nil { + return nil, fmt.Errorf("get RPC limiter: %s", err) + } + c.upstream = chain.NewSimpleClient(limiter, upstreamClient, upstreamChainID) } c.router = newRouter(c.upstreamEnabled) @@ -112,6 +121,33 @@ func (c *Client) SetWalletNotifier(notifier func(chainID uint64, message string) c.walletNotifier = notifier } +func extractLastParamFromURL(inputURL string) (string, error) { + parsedURL, err := url.Parse(inputURL) + if err != nil { + return "", err + } + + pathSegments := strings.Split(parsedURL.Path, "/") + lastSegment := pathSegments[len(pathSegments)-1] + + return lastSegment, nil +} + +func (c *Client) getRPCLimiter(URL string) (*chain.RPCLimiter, error) { + apiKey, err := extractLastParamFromURL(URL) + if err != nil { + return nil, err + } + c.rpcLimiterMutex.Lock() + defer c.rpcLimiterMutex.Unlock() + if limiter, ok := c.limiterPerProvider[apiKey]; ok { + return limiter, nil + } + limiter := chain.NewRPCLimiter() + c.limiterPerProvider[apiKey] = limiter + return limiter, nil +} + func (c *Client) getClientUsingCache(chainID uint64) (chain.ClientInterface, error) { c.rpcClientsMutex.Lock() defer c.rpcClientsMutex.Unlock() @@ -135,15 +171,28 @@ func (c *Client) getClientUsingCache(chainID uint64) (chain.ClientInterface, err return nil, fmt.Errorf("dial upstream server: %s", err) } - var rpcFallbackClient *gethrpc.Client + rpcLimiter, err := c.getRPCLimiter(network.RPCURL) + if err != nil { + return nil, fmt.Errorf("get RPC limiter: %s", err) + } + + var ( + rpcFallbackClient *gethrpc.Client + rpcFallbackLimiter *chain.RPCLimiter + ) if len(network.FallbackURL) > 0 { rpcFallbackClient, err = gethrpc.Dial(network.FallbackURL) if err != nil { return nil, fmt.Errorf("dial upstream server: %s", err) } + + rpcFallbackLimiter, err = c.getRPCLimiter(network.FallbackURL) + if err != nil { + return nil, fmt.Errorf("get RPC fallback limiter: %s", err) + } } - client := chain.NewClient(rpcClient, rpcFallbackClient, chainID) + client := chain.NewClient(rpcLimiter, rpcClient, rpcFallbackLimiter, rpcFallbackClient, chainID) client.WalletNotifier = c.walletNotifier c.rpcClients[chainID] = client return client, nil @@ -199,8 +248,12 @@ func (c *Client) UpdateUpstreamURL(url string) error { if err != nil { return err } + rpcLimiter, err := c.getRPCLimiter(url) + if err != nil { + return err + } c.Lock() - c.upstream = chain.NewSimpleClient(rpcClient, c.UpstreamChainID) + c.upstream = chain.NewSimpleClient(rpcLimiter, rpcClient, c.UpstreamChainID) c.upstreamURL = url c.Unlock() diff --git a/vendor/github.com/status-im/status-go/rpc/network/network.go b/vendor/github.com/status-im/status-go/rpc/network/network.go index e84d67bc..5cd1f0e7 100644 --- a/vendor/github.com/status-im/status-go/rpc/network/network.go +++ b/vendor/github.com/status-im/status-go/rpc/network/network.go @@ -231,7 +231,7 @@ func (nm *Manager) GetAll() ([]*params.Network, error) { } func (nm *Manager) Get(onlyEnabled bool) ([]*params.Network, error) { - isSepoliaEnabled, err := nm.accountsDB.GetIsSepoliaEnabled() + isGoerliEnabled, err := nm.accountsDB.GetIsGoerliEnabled() if err != nil { return nil, err } @@ -248,7 +248,7 @@ func (nm *Manager) Get(onlyEnabled bool) ([]*params.Network, error) { var results []*params.Network for _, network := range networks { - if !isSepoliaEnabled { + if isGoerliEnabled { found := false for _, chainID := range SepoliaChainIDs { if network.ChainID == chainID { @@ -261,7 +261,7 @@ func (nm *Manager) Get(onlyEnabled bool) ([]*params.Network, error) { } } - if isSepoliaEnabled { + if !isGoerliEnabled { found := false for _, chainID := range GoerliChainIDs { diff --git a/vendor/github.com/status-im/status-go/server/handlers.go b/vendor/github.com/status-im/status-go/server/handlers.go index 57256e19..bd9e0ba1 100644 --- a/vendor/github.com/status-im/status-go/server/handlers.go +++ b/vendor/github.com/status-im/status-go/server/handlers.go @@ -34,6 +34,7 @@ const ( discordAuthorsPath = "/discord/authors" discordAttachmentsPath = basePath + "/discord/attachments" LinkPreviewThumbnailPath = "/link-preview/thumbnail" + LinkPreviewFaviconPath = "/link-preview/favicon" StatusLinkPreviewThumbnailPath = "/status-link-preview/thumbnail" communityTokenImagesPath = "/communityTokenImages" diff --git a/vendor/github.com/status-im/status-go/server/handlers_linkpreview.go b/vendor/github.com/status-im/status-go/server/handlers_linkpreview.go index a3af9728..c6f74de1 100644 --- a/vendor/github.com/status-im/status-go/server/handlers_linkpreview.go +++ b/vendor/github.com/status-im/status-go/server/handlers_linkpreview.go @@ -14,19 +14,27 @@ import ( "github.com/status-im/status-go/protocol/protobuf" ) -func getThumbnailPayload(db *sql.DB, logger *zap.Logger, msgID string, thumbnailURL string) ([]byte, error) { - var payload []byte - +func getUnfurledLinksFromDB(db *sql.DB, msgID string) ([]*protobuf.UnfurledLink, error) { var result []byte err := db.QueryRow(`SELECT unfurled_links FROM user_messages WHERE id = ?`, msgID).Scan(&result) if err != nil { - return payload, fmt.Errorf("could not find message with message-id '%s': %w", msgID, err) + return nil, fmt.Errorf("could not find message with message-id '%s': %w", msgID, err) } var links []*protobuf.UnfurledLink err = json.Unmarshal(result, &links) if err != nil { - return payload, fmt.Errorf("failed to unmarshal protobuf.UrlPreview: %w", err) + return nil, fmt.Errorf("failed to unmarshal protobuf.UrlPreview: %w", err) + } + return links, nil +} + +func getThumbnailPayload(db *sql.DB, msgID string, thumbnailURL string) ([]byte, error) { + var payload []byte + + var links, err = getUnfurledLinksFromDB(db, msgID) + if err != nil { + return nil, err } for _, p := range links { @@ -39,40 +47,82 @@ func getThumbnailPayload(db *sql.DB, logger *zap.Logger, msgID string, thumbnail return payload, nil } +func getFaviconPayload(db *sql.DB, msgID string, faviconURL string) ([]byte, error) { + var payload []byte + + var links, err = getUnfurledLinksFromDB(db, msgID) + if err != nil { + return nil, err + } + + for _, p := range links { + if p.Url == faviconURL { + payload = p.FaviconPayload + break + } + } + + return payload, nil +} + +func validateAndReturnImageParams(r *http.Request, w http.ResponseWriter, logger *zap.Logger) ImageParams { + params := r.URL.Query() + parsed := ParseImageParams(logger, params) + + if parsed.MessageID == "" { + http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest) + return ImageParams{} + } + + if parsed.URL == "" { + http.Error(w, "missing query parameter 'url'", http.StatusBadRequest) + return ImageParams{} + } + return parsed +} + +func getMimeTypeAndWriteImage(w http.ResponseWriter, logger *zap.Logger, imagePayload []byte) { + mimeType, err := images.GetMimeType(imagePayload) + if err != nil { + http.Error(w, "mime type not supported", http.StatusNotImplemented) + return + } + + w.Header().Set("Content-Type", "image/"+mimeType) + w.Header().Set("Cache-Control", "no-store") + + _, err = w.Write(imagePayload) + if err != nil { + logger.Error("failed to write response", zap.Error(err)) + } +} + +func checkForFetchImageError(err error, logger *zap.Logger, parsedImageParams ImageParams, w http.ResponseWriter, imageType string) { + if err != nil { + logger.Error("failed to get "+imageType, zap.String("msgID", parsedImageParams.MessageID)) + http.Error(w, "failed to get "+imageType, http.StatusInternalServerError) + return + } +} + func handleLinkPreviewThumbnail(db *sql.DB, logger *zap.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - params := r.URL.Query() - parsed := ParseImageParams(logger, params) - - if parsed.MessageID == "" { - http.Error(w, "missing query parameter 'message-id'", http.StatusBadRequest) - return + parsed := validateAndReturnImageParams(r, w, logger) + if parsed.URL != "" { + thumbnail, err := getThumbnailPayload(db, parsed.MessageID, parsed.URL) + checkForFetchImageError(err, logger, parsed, w, "thumbnail") + getMimeTypeAndWriteImage(w, logger, thumbnail) } + } +} - if parsed.URL == "" { - http.Error(w, "missing query parameter 'url'", http.StatusBadRequest) - return - } - - thumbnail, err := getThumbnailPayload(db, logger, parsed.MessageID, parsed.URL) - if err != nil { - logger.Error("failed to get thumbnail", zap.String("msgID", parsed.MessageID)) - http.Error(w, "failed to get thumbnail", http.StatusInternalServerError) - return - } - - mimeType, err := images.GetMimeType(thumbnail) - if err != nil { - http.Error(w, "mime type not supported", http.StatusNotImplemented) - return - } - - w.Header().Set("Content-Type", "image/"+mimeType) - w.Header().Set("Cache-Control", "no-store") - - _, err = w.Write(thumbnail) - if err != nil { - logger.Error("failed to write response", zap.Error(err)) +func handleLinkPreviewFavicon(db *sql.DB, logger *zap.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + parsed := validateAndReturnImageParams(r, w, logger) + if parsed.URL != "" { + favicon, err := getFaviconPayload(db, parsed.MessageID, parsed.URL) + checkForFetchImageError(err, logger, parsed, w, "favicon") + getMimeTypeAndWriteImage(w, logger, favicon) } } } diff --git a/vendor/github.com/status-im/status-go/server/server_media.go b/vendor/github.com/status-im/status-go/server/server_media.go index 7570ea9b..b30c7e44 100644 --- a/vendor/github.com/status-im/status-go/server/server_media.go +++ b/vendor/github.com/status-im/status-go/server/server_media.go @@ -52,6 +52,7 @@ func NewMediaServer(db *sql.DB, downloader *ipfs.Downloader, multiaccountsDB *mu imagesPath: handleImage(s.db, s.logger), ipfsPath: handleIPFS(s.downloader, s.logger), LinkPreviewThumbnailPath: handleLinkPreviewThumbnail(s.db, s.logger), + LinkPreviewFaviconPath: handleLinkPreviewFavicon(s.db, s.logger), StatusLinkPreviewThumbnailPath: handleStatusLinkPreviewThumbnail(s.db, s.logger), communityTokenImagesPath: handleCommunityTokenImages(s.db, s.logger), walletCommunityImagesPath: handleWalletCommunityImages(s.walletDB, s.logger), @@ -90,6 +91,13 @@ func (s *MediaServer) MakeStatusLinkPreviewThumbnailURL(msgID string, previewURL return u.String() } +func (s *MediaServer) MakeLinkPreviewFaviconURL(msgID string, previewURL string) string { + u := s.MakeBaseURL() + u.Path = LinkPreviewFaviconPath + u.RawQuery = url.Values{"message-id": {msgID}, "url": {previewURL}}.Encode() + return u.String() +} + func (s *MediaServer) MakeDiscordAuthorAvatarURL(authorID string) string { u := s.MakeBaseURL() u.Path = discordAuthorsPath diff --git a/vendor/github.com/status-im/status-go/services/accounts/settings.go b/vendor/github.com/status-im/status-go/services/accounts/settings.go index 3b1e2f60..e2d589fe 100644 --- a/vendor/github.com/status-im/status-go/services/accounts/settings.go +++ b/vendor/github.com/status-im/status-go/services/accounts/settings.go @@ -171,10 +171,12 @@ func (api *SettingsAPI) SetBio(bio string) error { return (*api.messenger).SetBio(bio) } +// Deprecated: use social links from ProfileShowcasePreferences func (api *SettingsAPI) GetSocialLinks() (identity.SocialLinks, error) { return api.db.GetSocialLinks() } +// Deprecated: use social links from ProfileShowcasePreferences func (api *SettingsAPI) AddOrReplaceSocialLinks(links identity.SocialLinks) error { for _, link := range links { if len(link.Text) == 0 { diff --git a/vendor/github.com/status-im/status-go/services/chat/api.go b/vendor/github.com/status-im/status-go/services/chat/api.go index 46ba12b9..3a6d8875 100644 --- a/vendor/github.com/status-im/status-go/services/chat/api.go +++ b/vendor/github.com/status-im/status-go/services/chat/api.go @@ -77,8 +77,14 @@ type Chat struct { FirstMessageTimestamp uint32 `json:"firstMessageTimestamp,omitempty"` Highlight bool `json:"highlight,omitempty"` PinnedMessages *PinnedMessages `json:"pinnedMessages,omitempty"` - CanPost bool `json:"canPost"` - Base64Image string `json:"image,omitempty"` + // Deprecated: CanPost is deprecated in favor of CanPostMessages/CanPostReactions/etc. + // For now CanPost will equal to CanPostMessages. + CanPost bool `json:"canPost"` + CanPostMessages bool `json:"canPostMessages"` + CanPostReactions bool `json:"canPostReactions"` + ViewersCanPostReactions bool `json:"viewersCanPostReactions"` + Base64Image string `json:"image,omitempty"` + HideIfPermissionsNotMet bool `json:"hideIfPermissionsNotMet,omitempty"` } type ChannelGroup struct { @@ -472,6 +478,9 @@ func (api *API) getCommunityByID(id string) (*communities.Community, error) { } func (chat *Chat) populateCommunityFields(community *communities.Community) error { + chat.CanPost = true + chat.CanPostMessages = true + chat.CanPostReactions = true if community == nil { return nil } @@ -482,18 +491,27 @@ func (chat *Chat) populateCommunityFields(community *communities.Community) erro return nil } - canPost, err := community.CanMemberIdentityPost(chat.ID) + canPostMessages, err := community.CanMemberIdentityPost(chat.ID, protobuf.ApplicationMetadataMessage_CHAT_MESSAGE) + if err != nil { + return err + } + + canPostReactions, err := community.CanMemberIdentityPost(chat.ID, protobuf.ApplicationMetadataMessage_EMOJI_REACTION) if err != nil { return err } chat.CategoryID = commChat.CategoryId + chat.HideIfPermissionsNotMet = commChat.HideIfPermissionsNotMet chat.Position = commChat.Position chat.Permissions = commChat.Permissions chat.Emoji = commChat.Identity.Emoji chat.Name = commChat.Identity.DisplayName chat.Description = commChat.Identity.Description - chat.CanPost = canPost + chat.CanPost = canPostMessages + chat.CanPostMessages = canPostMessages + chat.CanPostReactions = canPostReactions + chat.ViewersCanPostReactions = commChat.ViewersCanPostReactions return nil } diff --git a/vendor/github.com/status-im/status-go/services/communitytokens/api.go b/vendor/github.com/status-im/status-go/services/communitytokens/api.go index f794c09b..a379c38b 100644 --- a/vendor/github.com/status-im/status-go/services/communitytokens/api.go +++ b/vendor/github.com/status-im/status-go/services/communitytokens/api.go @@ -330,9 +330,8 @@ func (api *API) DeployAssets(ctx context.Context, chainID uint64, deploymentPara } // Returns gas units + 10% -func (api *API) DeployCollectiblesEstimate(ctx context.Context) (uint64, error) { - // TODO investigate why the code below does not return correct values - /*ethClient, err := api.s.manager.rpcClient.EthClient(420) +func (api *API) DeployCollectiblesEstimate(ctx context.Context, chainID uint64, fromAddress string) (uint64, error) { + ethClient, err := api.s.manager.rpcClient.EthClient(chainID) if err != nil { log.Error(err.Error()) return 0, err @@ -343,35 +342,63 @@ func (api *API) DeployCollectiblesEstimate(ctx context.Context) (uint64, error) return 0, err } - data, err := collectiblesABI.Pack("", "name", "SYMBOL", big.NewInt(20), true, false, "tokenUriwhcih is very long asdkfjlsdkjflk", + // use random parameters, they will not have impact on deployment results + data, err := collectiblesABI.Pack("" /*constructor name is empty*/, "name", "SYMBOL", big.NewInt(20), true, false, "tokenUri", common.HexToAddress("0x77b48394c650520012795a1a25696d7eb542d110"), common.HexToAddress("0x77b48394c650520012795a1a25696d7eb542d110")) if err != nil { return 0, err } callMsg := ethereum.CallMsg{ - From: common.HexToAddress("0x77b48394c650520012795a1a25696d7eb542d110"), + From: common.HexToAddress(fromAddress), To: nil, Value: big.NewInt(0), - Data: data, + Data: append(common.FromHex(collectibles.CollectiblesBin), data...), } estimate, err := ethClient.EstimateGas(ctx, callMsg) if err != nil { return 0, err } - return estimate + uint64(float32(estimate)*0.1), nil*/ - // TODO compute fee dynamically - // the code above returns too low fees, need to investigate - gasAmount := uint64(2500000) - return gasAmount + uint64(float32(gasAmount)*0.1), nil + finalEstimation := estimate + uint64(float32(estimate)*0.1) + log.Debug("Collectibles deployment gas estimation: ", finalEstimation) + return finalEstimation, nil } // Returns gas units + 10% -func (api *API) DeployAssetsEstimate(ctx context.Context) (uint64, error) { - // TODO compute fee dynamically - gasAmount := uint64(1500000) - return gasAmount + uint64(float32(gasAmount)*0.1), nil +func (api *API) DeployAssetsEstimate(ctx context.Context, chainID uint64, fromAddress string) (uint64, error) { + ethClient, err := api.s.manager.rpcClient.EthClient(chainID) + if err != nil { + log.Error(err.Error()) + return 0, err + } + + assetsABI, err := abi.JSON(strings.NewReader(assets.AssetsABI)) + if err != nil { + return 0, err + } + + // use random parameters, they will not have impact on deployment results + data, err := assetsABI.Pack("" /*constructor name is empty*/, "name", "SYMBOL", uint8(18), big.NewInt(20), "tokenUri", + common.HexToAddress("0x77b48394c650520012795a1a25696d7eb542d110"), common.HexToAddress("0x77b48394c650520012795a1a25696d7eb542d110")) + if err != nil { + return 0, err + } + + callMsg := ethereum.CallMsg{ + From: common.HexToAddress(fromAddress), + To: nil, + Value: big.NewInt(0), + Data: append(common.FromHex(assets.AssetsBin), data...), + } + estimate, err := ethClient.EstimateGas(ctx, callMsg) + if err != nil { + return 0, err + } + + finalEstimation := estimate + uint64(float32(estimate)*0.1) + log.Debug("Assets deployment gas estimation: ", finalEstimation) + return finalEstimation, nil } func (api *API) DeployOwnerTokenEstimate(ctx context.Context, chainID uint64, fromAddress string, diff --git a/vendor/github.com/status-im/status-go/services/ext/api.go b/vendor/github.com/status-im/status-go/services/ext/api.go index f4c80694..6e117404 100644 --- a/vendor/github.com/status-im/status-go/services/ext/api.go +++ b/vendor/github.com/status-im/status-go/services/ext/api.go @@ -31,6 +31,7 @@ import ( "github.com/status-im/status-go/protocol/communities/token" "github.com/status-im/status-go/protocol/discord" "github.com/status-im/status-go/protocol/encryption/multidevice" + "github.com/status-im/status-go/protocol/identity" "github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/pushnotificationclient" "github.com/status-im/status-go/protocol/requests" @@ -400,6 +401,11 @@ func (api *PublicAPI) JoinedCommunities(parent context.Context) ([]*communities. return api.service.messenger.JoinedCommunities() } +// IsDisplayNameDupeOfCommunityMember returns if any controlled or joined community has a member with provided display name +func (api *PublicAPI) IsDisplayNameDupeOfCommunityMember(name string) (bool, error) { + return api.service.messenger.IsDisplayNameDupeOfCommunityMember(name) +} + // CommunityTags return the list of possible community tags func (api *PublicAPI) CommunityTags(parent context.Context) map[string]string { return requests.TagsEmojies @@ -448,6 +454,16 @@ func (api *PublicAPI) SetCommunityShard(request *requests.SetCommunityShard) (*p return api.service.messenger.SetCommunityShard(request) } +// Sets the community storenodes for a community +func (api *PublicAPI) SetCommunityStorenodes(request *requests.SetCommunityStorenodes) (*protocol.MessengerResponse, error) { + return api.service.messenger.SetCommunityStorenodes(request) +} + +// Gets the community storenodes for a community +func (api *PublicAPI) GetCommunityStorenodes(id types.HexBytes) (*protocol.MessengerResponse, error) { + return api.service.messenger.GetCommunityStorenodes(id) +} + // ExportCommunity exports the private key of the community with given ID func (api *PublicAPI) ExportCommunity(id types.HexBytes) (types.HexBytes, error) { key, err := api.service.messenger.ExportCommunity(id) @@ -861,6 +877,10 @@ func (api *PublicAPI) DismissLatestContactRequestForContact(ctx context.Context, return api.service.messenger.DismissLatestContactRequestForContact(ctx, request) } +func (api *PublicAPI) GetLatestContactRequestForContact(ctx context.Context, contactID string) (*protocol.MessengerResponse, error) { + return api.service.messenger.GetLatestContactRequestForContact(contactID) +} + func (api *PublicAPI) RetractContactRequest(ctx context.Context, request *requests.RetractContactRequest) (*protocol.MessengerResponse, error) { return api.service.messenger.RetractContactRequest(request) } @@ -1348,11 +1368,11 @@ func (api *PublicAPI) DeleteActivityCenterNotifications(ctx context.Context, ids } func (api *PublicAPI) RequestAllHistoricMessages(forceFetchingBackup bool) (*protocol.MessengerResponse, error) { - return api.service.messenger.RequestAllHistoricMessages(forceFetchingBackup) + return api.service.messenger.RequestAllHistoricMessages(forceFetchingBackup, false) } func (api *PublicAPI) RequestAllHistoricMessagesWithRetries(forceFetchingBackup bool) (*protocol.MessengerResponse, error) { - return api.service.messenger.RequestAllHistoricMessagesWithRetries(forceFetchingBackup) + return api.service.messenger.RequestAllHistoricMessages(forceFetchingBackup, true) } func (api *PublicAPI) DisconnectActiveMailserver() { @@ -1479,6 +1499,10 @@ func (api *PublicAPI) ToggleUseMailservers(value bool) error { return api.service.messenger.ToggleUseMailservers(value) } +func (api *PublicAPI) TogglePeerSyncing(request *requests.TogglePeerSyncingRequest) error { + return api.service.messenger.TogglePeerSyncing(request) +} + func (api *PublicAPI) SetPinnedMailservers(pinnedMailservers map[string]string) error { return api.service.messenger.SetPinnedMailservers(pinnedMailservers) } @@ -1663,53 +1687,67 @@ func (api *PublicAPI) CreateTokenGatedCommunity() (*protocol.MessengerResponse, } // Set profile showcase preference for current user -func (api *PublicAPI) SetProfileShowcasePreferences(preferences *protocol.ProfileShowcasePreferences) error { - return api.service.messenger.SetProfileShowcasePreferences(preferences) +func (api *PublicAPI) SetProfileShowcasePreferences(preferences *identity.ProfileShowcasePreferences) error { + return api.service.messenger.SetProfileShowcasePreferences(preferences, true) } // Get all profile showcase preferences for current user -func (api *PublicAPI) GetProfileShowcasePreferences() (*protocol.ProfileShowcasePreferences, error) { +func (api *PublicAPI) GetProfileShowcasePreferences() (*identity.ProfileShowcasePreferences, error) { return api.service.messenger.GetProfileShowcasePreferences() } // Get profile showcase for a contact -func (api *PublicAPI) GetProfileShowcaseForContact(contactID string) (*protocol.ProfileShowcase, error) { - return api.service.messenger.GetProfileShowcaseForContact(contactID) +func (api *PublicAPI) GetProfileShowcaseForContact(contactID string, validate bool) (*identity.ProfileShowcase, error) { + return api.service.messenger.GetProfileShowcaseForContact(contactID, validate) } // Get profile showcase accounts by address -func (api *PublicAPI) GetProfileShowcaseAccountsByAddress(address string) ([]*protocol.ProfileShowcaseAccount, error) { +func (api *PublicAPI) GetProfileShowcaseAccountsByAddress(address string) ([]*identity.ProfileShowcaseAccount, error) { return api.service.messenger.GetProfileShowcaseAccountsByAddress(address) } +// Get profile showcase max social link entries count +func (api *PublicAPI) GetProfileShowcaseSocialLinksLimit() (int, error) { + return api.service.messenger.GetProfileShowcaseSocialLinksLimit() +} + +// Get profile showcase max entries count (excluding social links) +func (api *PublicAPI) GetProfileShowcaseEntriesLimit() (int, error) { + return api.service.messenger.GetProfileShowcaseEntriesLimit() +} + // Returns response with AC notification when owner token is received func (api *PublicAPI) RegisterOwnerTokenReceivedNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnerTokenReceived, false) + return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnerTokenReceived, false, "") } // Returns response with AC notification when setting signer is successful func (api *PublicAPI) RegisterReceivedOwnershipNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipReceived, false) + return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipReceived, false, "") } // Returns response with AC notification when community token is received -func (api *PublicAPI) RegisterReceivedCommunityTokenNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeCommunityTokenReceived, false) +func (api *PublicAPI) RegisterReceivedCommunityTokenNotification(communityID string, isFirst bool, tokenData string) (*protocol.MessengerResponse, error) { + activityType := protocol.ActivityCenterNotificationTypeCommunityTokenReceived + if isFirst { + activityType = protocol.ActivityCenterNotificationTypeFirstCommunityTokenReceived + } + return api.service.messenger.CreateResponseWithACNotification(communityID, activityType, false, tokenData) } // Returns response with AC notification when setting signer is failed func (api *PublicAPI) RegisterSetSignerFailedNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerFailed, false) + return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerFailed, false, "") } // Returns response with AC notification when setting signer is declined func (api *PublicAPI) RegisterSetSignerDeclinedNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerDeclined, true) + return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeSetSignerDeclined, true, "") } // Returns response with AC notification when ownership is lost func (api *PublicAPI) RegisterLostOwnershipNotification(communityID string) (*protocol.MessengerResponse, error) { - return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipLost, false) + return api.service.messenger.CreateResponseWithACNotification(communityID, protocol.ActivityCenterNotificationTypeOwnershipLost, false, "") } func (api *PublicAPI) PromoteSelfToControlMode(communityID string) error { @@ -1737,6 +1775,15 @@ func (api *PublicAPI) SetCustomizationColor(ctx context.Context, request *reques return api.service.messenger.SetCustomizationColor(ctx, request) } +func (api *PublicAPI) GetCommunityMemberAllMessages(request *requests.CommunityMemberMessages) ([]*common.Message, error) { + return api.service.messenger.GetCommunityMemberAllMessages(request) +} + +// Delete a specific community member messages or all community member messages (based on provided parameters) +func (api *PublicAPI) DeleteCommunityMemberMessages(request *requests.DeleteCommunityMemberMessages) (*protocol.MessengerResponse, error) { + return api.service.messenger.DeleteCommunityMemberMessages(request) +} + // ----- // HELPER // ----- diff --git a/vendor/github.com/status-im/status-go/services/ext/service.go b/vendor/github.com/status-im/status-go/services/ext/service.go index f0a8cf6a..d4ca5276 100644 --- a/vendor/github.com/status-im/status-go/services/ext/service.go +++ b/vendor/github.com/status-im/status-go/services/ext/service.go @@ -39,7 +39,6 @@ import ( "github.com/status-im/status-go/protocol" "github.com/status-im/status-go/protocol/anonmetrics" "github.com/status-im/status-go/protocol/common" - "github.com/status-im/status-go/protocol/common/shard" "github.com/status-im/status-go/protocol/communities" "github.com/status-im/status-go/protocol/communities/token" "github.com/status-im/status-go/protocol/protobuf" @@ -53,6 +52,7 @@ import ( "github.com/status-im/status-go/services/ext/mailservers" mailserversDB "github.com/status-im/status-go/services/mailservers" "github.com/status-im/status-go/services/wallet" + "github.com/status-im/status-go/services/wallet/collectibles" w_common "github.com/status-im/status-go/services/wallet/common" "github.com/status-im/status-go/services/wallet/thirdparty" "github.com/status-im/status-go/wakuv2" @@ -534,7 +534,30 @@ func (s *Service) GetCommunityID(tokenURI string) string { return "" } -func (s *Service) FillCollectibleMetadata(collectible *thirdparty.FullCollectibleData) error { +func (s *Service) FillCollectiblesMetadata(communityID string, cs []*thirdparty.FullCollectibleData) (bool, error) { + if s.messenger == nil { + return false, fmt.Errorf("messenger not ready") + } + + community, err := s.fetchCommunityInfoForCollectibles(communityID, collectibles.IDsFromAssets(cs)) + if err != nil { + return false, err + } + if community == nil { + return false, nil + } + + for _, collectible := range cs { + err := s.FillCollectibleMetadata(community, collectible) + if err != nil { + return true, err + } + } + + return true, nil +} + +func (s *Service) FillCollectibleMetadata(community *communities.Community, collectible *thirdparty.FullCollectibleData) error { if s.messenger == nil { return fmt.Errorf("messenger not ready") } @@ -550,18 +573,6 @@ func (s *Service) FillCollectibleMetadata(collectible *thirdparty.FullCollectibl return fmt.Errorf("invalid communityID") } - // FetchCommunityInfo should have been previously called once to ensure - // that the latest version of the CommunityDescription is available in the DB - community, err := s.fetchCommunity(communityID, false) - - if err != nil { - return err - } - - if community == nil { - return nil - } - tokenMetadata, err := s.fetchCommunityCollectibleMetadata(community, id.ContractID) if err != nil { @@ -636,47 +647,84 @@ func communityToInfo(community *communities.Community) *thirdparty.CommunityInfo } } -func (s *Service) FetchCommunityInfo(communityID string) (*thirdparty.CommunityInfo, error) { - community, err := s.fetchCommunity(communityID, true) +func (s *Service) fetchCommunityFromStoreNodes(communityID string) (*communities.Community, error) { + community, err := s.messenger.FetchCommunity(&protocol.FetchCommunityRequest{ + CommunityKey: communityID, + TryDatabase: false, + WaitForResponse: true, + }) if err != nil { return nil, err } - - return communityToInfo(community), nil + return community, nil } -func (s *Service) fetchCommunity(communityID string, fetchLatest bool) (*communities.Community, error) { +func (s *Service) GetCommunityInfoFromDB(communityID string) (*thirdparty.CommunityInfo, error) { + community, err := s.messenger.FindCommunityInfoFromDB(communityID) + return communityToInfo(community), err +} + +// Fetch latest community from store nodes. +func (s *Service) FetchCommunityInfo(communityID string) (*thirdparty.CommunityInfo, error) { if s.messenger == nil { return nil, fmt.Errorf("messenger not ready") } - // Try to fetch metadata from Messenger communities + community, err := s.messenger.FindCommunityInfoFromDB(communityID) + if err != nil && err != communities.ErrOrgNotFound { + return nil, err + } - // TODO: we need the shard information in the collectible to be able to retrieve info for - // communities that have specific shards - - if fetchLatest { - // Try to fetch the latest version of the Community - var shard *shard.Shard = nil // TODO: build this with info from token - // NOTE: The community returned by this function will be nil if - // the version we have in the DB is the latest available. - _, err := s.messenger.FetchCommunity(&protocol.FetchCommunityRequest{ - CommunityKey: communityID, - Shard: shard, - TryDatabase: false, - WaitForResponse: true, - }) + // Fetch latest version from store nodes + if community == nil || !community.IsControlNode() { + community, err = s.fetchCommunityFromStoreNodes(communityID) if err != nil { return nil, err } } - // Get the latest successfully fetched version of the Community + return communityToInfo(community), nil +} + +// Fetch latest community from store nodes only if any collectibles data is missing. +func (s *Service) fetchCommunityInfoForCollectibles(communityID string, ids []thirdparty.CollectibleUniqueID) (*communities.Community, error) { community, err := s.messenger.FindCommunityInfoFromDB(communityID) - if err != nil { + if err != nil && err != communities.ErrOrgNotFound { return nil, err } + if community == nil { + return s.fetchCommunityFromStoreNodes(communityID) + } + + if community.IsControlNode() { + return community, nil + } + + contractIDs := func() map[string]thirdparty.ContractID { + result := map[string]thirdparty.ContractID{} + for _, id := range ids { + result[id.HashKey()] = id.ContractID + } + return result + }() + + hasAllMetadata := true + for _, contractID := range contractIDs { + tokenMetadata, err := s.fetchCommunityCollectibleMetadata(community, contractID) + if err != nil { + return nil, err + } + if tokenMetadata == nil { + hasAllMetadata = false + break + } + } + + if !hasAllMetadata { + return s.fetchCommunityFromStoreNodes(communityID) + } + return community, nil } diff --git a/vendor/github.com/status-im/status-go/services/mailservers/database.go b/vendor/github.com/status-im/status-go/services/mailservers/database.go index 0a9e2e6a..383e8c8b 100644 --- a/vendor/github.com/status-im/status-go/services/mailservers/database.go +++ b/vendor/github.com/status-im/status-go/services/mailservers/database.go @@ -146,13 +146,16 @@ func (d *Database) Add(mailserver Mailserver) error { } func (d *Database) Mailservers() ([]Mailserver, error) { - var result []Mailserver - rows, err := d.db.Query(`SELECT id, name, address, password, fleet FROM mailservers`) if err != nil { return nil, err } defer rows.Close() + return toMailservers(rows) +} + +func toMailservers(rows *sql.Rows) ([]Mailserver, error) { + var result []Mailserver for rows.Next() { var ( @@ -198,7 +201,7 @@ func (d *Database) AddGaps(gaps []MailserverRequestGap) error { for _, gap := range gaps { - _, err := tx.Exec(`INSERT OR REPLACE INTO mailserver_request_gaps( + _, err = tx.Exec(`INSERT OR REPLACE INTO mailserver_request_gaps( id, chat_id, gap_from, diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/TODO.md b/vendor/github.com/status-im/status-go/services/wallet/activity/TODO.md deleted file mode 100644 index d1dc26ae..00000000 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/TODO.md +++ /dev/null @@ -1,103 +0,0 @@ -# Provide dynamic activity updates - -Task: https://github.com/status-im/status-desktop/issues/12120 - -## Intro - -In the current approach only static paginated filtering is possible because the filtering is done in SQL - -The updated requirements need to support dynamic updates of the current visualized filter - -## Plan - -- [ ] Required common (runtime/SQL) infrastructure - - [-] Refactor into a session based filter - - [-] Keep a mirror of identities for session - - [-] Capture events (new downloaded and pending first) - - [-] Have the simplest filter to handle new and updated and emit wallet event - - [ ] Handle update filter events in UX and alter the model (add/remove) -- [ ] Asses how the runtime filter grows in complexity/risk -- [ ] Quick prototype of SQL only filter if still make sense -- [ ] Refactor the async handling to fit the session based better (use channels and goroutine) - -## How to - -I see two ways: - -- Keep a **runtime** (go/nim) dynamic in memory filter that is in sync with the SQL filter and use the filter to process transactions updates and propagate to the current visualized model - - The filter will push changes to the in memory model based on the sorting and filtering criteria - - If the filter is completely in sync withe the SQL one, then the dynamic updates to the model should have the same content as fetched from scratch from the DB - - *Advantages* - - Less memory and performance requirements - - *Disadvantages* - - Two sources of truth for the filter - - With tests for each event this can be mitigated - - Complexity around the multi-transaction/sub-transaction relation - - If we miss doing equivalent changes in bot filters (SQL and runtime) the filter might not be in sync with the SQL one and have errors in update -- **Refresh SQL filter** on every transaction (or bulk) update to DB and compare with the current visualized filter to extract differences and push as change notifications - - This approach is more expensive in terms of memory and performance but will use only one source of truth implementation - - This way we know for sure that the updated model is in sync with a newly fetched one - - *Advantages* - - Less complexity and less risk to be out of sync with the SQL filter - - *Disadvantages* - - More memory and performance requirements - - The real improvement will be to do the postponed refactoring of the activity in DB - -## Requirements - -Expected filter states to be addressed - -- Filter is set -- No Filter -- Filter is cleared - - How about if only partially cleared? - -Expected dynamic events - -- **New transactions** - - Pending - - Downloaded (external) - - Multi-transactions? -- **Transaction changed state** - - Pending to confirmed (new transaction/removed transaction) - -Filter criteria - -- time interval: start-end -- activity type (send/receive/buy/swap/bridge/contract_deploy/mint) -- status (pending/failed/confirmed/finalized) -- addresses -- tokens -- multi-transaction filtering transaction - -## Implementation - -### SQL filter - -For new events - -- keep a mirror of identities on status-go side (optional session based) -- on update events fetch identities and check against the mirror if any is new -- for new entries send the notification with the transaction details -- keep pending changes (not added) - - remove entries that were processed for this session - -For update? - -- check if entry is in the mirror and propagate update event - -### Mirror filter - -For new events - -- keep a mirror of identities -- on update events pass them through the filter and if they pass send updates - - the filter checks criteria and available mirror interval to dismiss from mirror -- sub-transactions challenge - - TODO -- token challenges - - TODO - -For update? - -- check if entry is in the mirror and propagate update event \ No newline at end of file diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/activity.go b/vendor/github.com/status-im/status-go/services/wallet/activity/activity.go index 33157da6..a07d710f 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/activity.go +++ b/vendor/github.com/status-im/status-go/services/wallet/activity/activity.go @@ -52,7 +52,7 @@ const ( type Entry struct { payloadType PayloadType transaction *transfer.TransactionIdentity - id transfer.MultiTransactionIDType + id common.MultiTransactionIDType timestamp int64 activityType Type activityStatus Status @@ -68,30 +68,32 @@ type Entry struct { chainIDIn *common.ChainID transferType *TransferType contractAddress *eth.Address + communityID *string isNew bool // isNew is used to indicate if the entry is newer than session start (changed state also) } // Only used for JSON marshalling type EntryData struct { - PayloadType PayloadType `json:"payloadType"` - Transaction *transfer.TransactionIdentity `json:"transaction,omitempty"` - ID *transfer.MultiTransactionIDType `json:"id,omitempty"` - Timestamp *int64 `json:"timestamp,omitempty"` - ActivityType *Type `json:"activityType,omitempty"` - ActivityStatus *Status `json:"activityStatus,omitempty"` - AmountOut *hexutil.Big `json:"amountOut,omitempty"` - AmountIn *hexutil.Big `json:"amountIn,omitempty"` - TokenOut *Token `json:"tokenOut,omitempty"` - TokenIn *Token `json:"tokenIn,omitempty"` - SymbolOut *string `json:"symbolOut,omitempty"` - SymbolIn *string `json:"symbolIn,omitempty"` - Sender *eth.Address `json:"sender,omitempty"` - Recipient *eth.Address `json:"recipient,omitempty"` - ChainIDOut *common.ChainID `json:"chainIdOut,omitempty"` - ChainIDIn *common.ChainID `json:"chainIdIn,omitempty"` - TransferType *TransferType `json:"transferType,omitempty"` - ContractAddress *eth.Address `json:"contractAddress,omitempty"` + PayloadType PayloadType `json:"payloadType"` + Transaction *transfer.TransactionIdentity `json:"transaction,omitempty"` + ID *common.MultiTransactionIDType `json:"id,omitempty"` + Timestamp *int64 `json:"timestamp,omitempty"` + ActivityType *Type `json:"activityType,omitempty"` + ActivityStatus *Status `json:"activityStatus,omitempty"` + AmountOut *hexutil.Big `json:"amountOut,omitempty"` + AmountIn *hexutil.Big `json:"amountIn,omitempty"` + TokenOut *Token `json:"tokenOut,omitempty"` + TokenIn *Token `json:"tokenIn,omitempty"` + SymbolOut *string `json:"symbolOut,omitempty"` + SymbolIn *string `json:"symbolIn,omitempty"` + Sender *eth.Address `json:"sender,omitempty"` + Recipient *eth.Address `json:"recipient,omitempty"` + ChainIDOut *common.ChainID `json:"chainIdOut,omitempty"` + ChainIDIn *common.ChainID `json:"chainIdIn,omitempty"` + TransferType *TransferType `json:"transferType,omitempty"` + ContractAddress *eth.Address `json:"contractAddress,omitempty"` + CommunityID *string `json:"communityId,omitempty"` IsNew *bool `json:"isNew,omitempty"` @@ -116,6 +118,7 @@ func (e *Entry) MarshalJSON() ([]byte, error) { ChainIDIn: e.chainIDIn, TransferType: e.transferType, ContractAddress: e.contractAddress, + CommunityID: e.communityID, } if e.payloadType == MultiTransactionPT { @@ -162,6 +165,7 @@ func (e *Entry) UnmarshalJSON(data []byte) error { e.chainIDOut = aux.ChainIDOut e.chainIDIn = aux.ChainIDIn e.transferType = aux.TransferType + e.communityID = aux.CommunityID e.isNew = aux.IsNew != nil && *aux.IsNew @@ -192,7 +196,7 @@ func newActivityEntryWithTransaction(pending bool, transaction *transfer.Transac } } -func NewActivityEntryWithMultiTransaction(id transfer.MultiTransactionIDType, timestamp int64, activityType Type, activityStatus Status) Entry { +func NewActivityEntryWithMultiTransaction(id common.MultiTransactionIDType, timestamp int64, activityType Type, activityStatus Status) Entry { return Entry{ payloadType: MultiTransactionPT, id: id, @@ -510,14 +514,14 @@ func getActivityEntries(ctx context.Context, deps FilterDependencies, addresses dbPTrAmount := new(big.Int) var dbMtFromAmount, dbMtToAmount, contractType sql.NullString var tokenCode, fromTokenCode, toTokenCode sql.NullString - var methodHash sql.NullString + var methodHash, communityID sql.NullString var transferType *TransferType var communityMintEventDB sql.NullBool var communityMintEvent bool err := rows.Scan(&transferHash, &pendingHash, &chainID, &multiTxID, ×tamp, &dbMtType, &dbTrType, &fromAddress, &toAddressDB, &ownerAddressDB, &dbTrAmount, (*bigint.SQLBigIntBytes)(dbPTrAmount), &dbMtFromAmount, &dbMtToAmount, &aggregatedStatus, &aggregatedCount, &tokenAddress, &dbTokenID, &tokenCode, &fromTokenCode, &toTokenCode, &outChainIDDB, &inChainIDDB, &contractType, - &contractAddressDB, &methodHash, &communityMintEventDB) + &contractAddressDB, &methodHash, &communityMintEventDB, &communityID) if err != nil { return nil, err } @@ -656,7 +660,7 @@ func getActivityEntries(ctx context.Context, deps FilterDependencies, addresses *inChainID = common.ChainID(inChainIDDB.Int64) } - entry = NewActivityEntryWithMultiTransaction(transfer.MultiTransactionIDType(multiTxID.Int64), + entry = NewActivityEntryWithMultiTransaction(common.MultiTransactionIDType(multiTxID.Int64), timestamp, activityType, activityStatus) // Extract tokens @@ -676,6 +680,10 @@ func getActivityEntries(ctx context.Context, deps FilterDependencies, addresses return nil, errors.New("invalid row data") } + if communityID.Valid { + entry.communityID = common.NewAndSet(communityID.String) + } + // Complete common data entry.recipient = &toAddress entry.sender = &fromAddress diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/filter.go b/vendor/github.com/status-im/status-go/services/wallet/activity/filter.go index 3ef99203..0b7229c6 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/filter.go +++ b/vendor/github.com/status-im/status-go/services/wallet/activity/filter.go @@ -99,6 +99,18 @@ type Filter struct { FilterOutCollectibles bool `json:"filterOutCollectibles"` } +func (f *Filter) IsEmpty() bool { + return f.Period.StartTimestamp == NoLimitTimestampForPeriod && + f.Period.EndTimestamp == NoLimitTimestampForPeriod && + len(f.Types) == 0 && + len(f.Statuses) == 0 && + len(f.CounterpartyAddresses) == 0 && + len(f.Assets) == 0 && + len(f.Collectibles) == 0 && + !f.FilterOutAssets && + !f.FilterOutCollectibles +} + func GetRecipients(ctx context.Context, db *sql.DB, chainIDs []common.ChainID, addresses []eth.Address, offset int, limit int) (recipients []eth.Address, hasMore bool, err error) { filterAllAddresses := len(addresses) == 0 involvedAddresses := noEntriesInTmpTableSQLValues diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/filter.sql b/vendor/github.com/status-im/status-go/services/wallet/activity/filter.sql index a18dc845..336d707d 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/filter.sql +++ b/vendor/github.com/status-im/status-go/services/wallet/activity/filter.sql @@ -198,7 +198,10 @@ SELECT END AS agg_status, 1 AS agg_count, transfers.token_address AS token_address, - transfers.token_id AS token_id, + CASE + WHEN LENGTH(transfers.token_id) = 0 THEN X'00' + ELSE transfers.token_id + END AS tmp_token_id, NULL AS token_code, NULL AS from_token_code, NULL AS to_token_code, @@ -213,7 +216,12 @@ SELECT CASE WHEN transfers.tx_from_address = zeroAddress AND transfers.type = "erc20" THEN (SELECT 1 FROM json_each(transfers.receipt, '$.logs' ) WHERE json_extract( value, '$.topics[0]' ) = communityMintEvent) ELSE NULL - END AS community_mint_event + END AS community_mint_event, + CASE + WHEN transfers.type = 'erc20' THEN (SELECT community_id FROM tokens WHERE transfers.token_address = tokens.address AND transfers.network_id = tokens.network_id) + WHEN transfers.type = 'erc721' OR transfers.type = 'erc1155' THEN (SELECT community_id FROM collectible_data_cache WHERE transfers.token_address = collectible_data_cache.contract_address AND transfers.network_id = collectible_data_cache.chain_id) + ELSE NULL + END AS community_id FROM transfers CROSS JOIN filter_conditions @@ -323,7 +331,7 @@ WHERE AND ( ( transfers.network_id, - transfers.token_id, + tmp_token_id, transfers.token_address ) IN assets_erc721 ) @@ -373,7 +381,7 @@ SELECT statusPending AS agg_status, 1 AS agg_count, NULL AS token_address, - NULL AS token_id, + NULL AS tmp_token_id, pending_transactions.symbol AS token_code, NULL AS from_token_code, NULL AS to_token_code, @@ -382,7 +390,8 @@ SELECT pending_transactions.type AS type, NULL as contract_address, NULL AS method_hash, - NULL AS community_mint_event + NULL AS community_mint_event, + NULL AS community_id FROM pending_transactions CROSS JOIN filter_conditions @@ -465,7 +474,7 @@ SELECT END AS agg_status, COALESCE(tr_status.count, 0) + COALESCE(pending_status.count, 0) AS agg_count, NULL AS token_address, - NULL AS token_id, + NULL AS tmp_token_id, NULL AS token_code, multi_transactions.from_asset AS from_token_code, multi_transactions.to_asset AS to_token_code, @@ -474,7 +483,8 @@ SELECT NULL AS type, NULL as contract_address, NULL AS method_hash, - NULL AS community_mint_event + NULL AS community_mint_event, + NULL AS community_id FROM multi_transactions CROSS JOIN filter_conditions diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/service.go b/vendor/github.com/status-im/status-go/services/wallet/activity/service.go index 238094b5..9b86dd4b 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/service.go +++ b/vendor/github.com/status-im/status-go/services/wallet/activity/service.go @@ -68,9 +68,9 @@ type Service struct { subscriptions event.Subscription ch chan walletevent.Event // sessionsRWMutex is used to protect all sessions related members - sessionsRWMutex sync.RWMutex + sessionsRWMutex sync.RWMutex + debounceDuration time.Duration - // TODO #12120: sort out session dependencies pendingTracker *transactions.PendingTxTracker } @@ -87,6 +87,8 @@ func NewService(db *sql.DB, tokenManager token.ManagerInterface, collectibles co scheduler: async.NewMultiClientScheduler(), sessions: make(map[SessionID]*Session), + // here to be overwritten by tests + debounceDuration: 1 * time.Second, pendingTracker: pendingTracker, } diff --git a/vendor/github.com/status-im/status-go/services/wallet/activity/session.go b/vendor/github.com/status-im/status-go/services/wallet/activity/session.go index dd51282b..69aaaf2c 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/activity/session.go +++ b/vendor/github.com/status-im/status-go/services/wallet/activity/session.go @@ -4,8 +4,7 @@ import ( "context" "errors" "strconv" - - "golang.org/x/exp/slices" + "time" eth "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/event" @@ -22,14 +21,17 @@ const nilStr = "nil" type EntryIdentity struct { payloadType PayloadType transaction *transfer.TransactionIdentity - id transfer.MultiTransactionIDType + id common.MultiTransactionIDType } -// func (e EntryIdentity) same(a EntryIdentity) bool { -// return a.payloadType == e.payloadType && (a.transaction == e.transaction && (a.transaction == nil || (a.transaction.ChainID == e.transaction.ChainID && -// a.transaction.Hash == e.transaction.Hash && -// a.transaction.Address == e.transaction.Address))) && a.id == e.id -// } +func (e EntryIdentity) same(a EntryIdentity) bool { + return a.payloadType == e.payloadType && + ((a.transaction == nil && e.transaction == nil) || + (a.transaction.ChainID == e.transaction.ChainID && + a.transaction.Hash == e.transaction.Hash && + a.transaction.Address == e.transaction.Address)) && + a.id == e.id +} func (e EntryIdentity) key() string { txID := nilStr @@ -41,6 +43,13 @@ func (e EntryIdentity) key() string { type SessionID int32 +// Session stores state related to a filter session +// The user happy flow is: +// 1. StartFilterSession to get a new SessionID and client be notified by the current state +// 2. GetMoreForFilterSession anytime to get more entries after the first page +// 3. UpdateFilterForSession to update the filter and get the new state or clean the filter and get the newer entries +// 4. ResetFilterSession in case client receives SessionUpdate with HasNewOnTop = true to get the latest state +// 5. StopFilterSession to stop the session when no used (user changed from activity screens or changed addresses and chains) type Session struct { id SessionID @@ -53,15 +62,22 @@ type Session struct { // model is a mirror of the data model presentation has (sent by EventActivityFilteringDone) model []EntryIdentity + // noFilterModel is a mirror of the data model presentation has when filter is empty + noFilterModel map[string]EntryIdentity // new holds the new entries until user requests update by calling ResetFilterSession new []EntryIdentity } +type EntryUpdate struct { + Pos int `json:"pos"` + Entry *Entry `json:"entry"` +} + // SessionUpdate payload for EventActivitySessionUpdated type SessionUpdate struct { - HasNewEntries *bool `json:"hasNewEntries,omitempty"` - Removed []EntryIdentity `json:"removed,omitempty"` - Updated []Entry `json:"updated,omitempty"` + HasNewOnTop *bool `json:"hasNewOnTop,omitempty"` + New []*EntryUpdate `json:"new,omitempty"` + Removed []EntryIdentity `json:"removed,omitempty"` } type fullFilterParams struct { @@ -99,21 +115,44 @@ func (s *Service) internalFilter(f fullFilterParams, offset int, count int, proc }) } +// mirrorIdentities for update use +func mirrorIdentities(entries []Entry) []EntryIdentity { + model := make([]EntryIdentity, 0, len(entries)) + for _, a := range entries { + model = append(model, EntryIdentity{ + payloadType: a.payloadType, + transaction: a.transaction, + id: a.id, + }) + } + return model +} + +func (s *Service) internalFilterForSession(session *Session, firstPageCount int) { + s.internalFilter( + fullFilterParams{ + sessionID: session.id, + addresses: session.addresses, + allAddresses: session.allAddresses, + chainIDs: session.chainIDs, + filter: session.filter, + }, + 0, + firstPageCount, + func(entries []Entry) (offset int) { + s.sessionsRWMutex.Lock() + defer s.sessionsRWMutex.Unlock() + + session.model = mirrorIdentities(entries) + + return 0 + }, + ) +} + func (s *Service) StartFilterSession(addresses []eth.Address, allAddresses bool, chainIDs []common.ChainID, filter Filter, firstPageCount int) SessionID { sessionID := s.nextSessionID() - // TODO #12120: sort rest of the filters - // TODO #12120: prettyfy this - slices.SortFunc(addresses, func(a eth.Address, b eth.Address) bool { - return a.Hex() < b.Hex() - }) - slices.Sort(chainIDs) - slices.SortFunc(filter.CounterpartyAddresses, func(a eth.Address, b eth.Address) bool { - return a.Hex() < b.Hex() - }) - - s.sessionsRWMutex.Lock() - subscribeToEvents := len(s.sessions) == 0 session := &Session{ id: sessionID, @@ -124,6 +163,10 @@ func (s *Service) StartFilterSession(addresses []eth.Address, allAddresses bool, model: make([]EntryIdentity, 0, firstPageCount), } + + s.sessionsRWMutex.Lock() + subscribeToEvents := len(s.sessions) == 0 + s.sessions[sessionID] = session if subscribeToEvents { @@ -131,36 +174,81 @@ func (s *Service) StartFilterSession(addresses []eth.Address, allAddresses bool, } s.sessionsRWMutex.Unlock() - s.internalFilter( - fullFilterParams{ - sessionID: sessionID, - addresses: addresses, - allAddresses: allAddresses, - chainIDs: chainIDs, - filter: filter, - }, - 0, - firstPageCount, - func(entries []Entry) (offset int) { - // Mirror identities for update use - s.sessionsRWMutex.Lock() - defer s.sessionsRWMutex.Unlock() - - session.model = make([]EntryIdentity, 0, len(entries)) - for _, a := range entries { - session.model = append(session.model, EntryIdentity{ - payloadType: a.payloadType, - transaction: a.transaction, - id: a.id, - }) - } - return 0 - }, - ) + s.internalFilterForSession(session, firstPageCount) return sessionID } +// UpdateFilterForSession is to be called for updating the filter of a specific session +// After calling this method to set a filter all the incoming changes will be reported with +// Entry.isNew = true when filter is reset to empty +func (s *Service) UpdateFilterForSession(id SessionID, filter Filter, firstPageCount int) error { + s.sessionsRWMutex.RLock() + session, found := s.sessions[id] + if !found { + s.sessionsRWMutex.RUnlock() + return errors.New("session not found") + } + + prevFilterEmpty := session.filter.IsEmpty() + newFilerEmpty := filter.IsEmpty() + s.sessionsRWMutex.RUnlock() + + s.sessionsRWMutex.Lock() + + session.new = nil + + session.filter = filter + + if prevFilterEmpty && !newFilerEmpty { + // Session is moving from empty to non-empty filter + // Take a snapshot of the current model + session.noFilterModel = entryIdsToMap(session.model) + + session.model = make([]EntryIdentity, 0, firstPageCount) + + // In this case there is nothing to flag so we request the first page + s.internalFilterForSession(session, firstPageCount) + } else if !prevFilterEmpty && newFilerEmpty { + // Session is moving from non-empty to empty filter + // In this case we need to flag all the new entries that are not in the noFilterModel + s.internalFilter( + fullFilterParams{ + sessionID: session.id, + addresses: session.addresses, + allAddresses: session.allAddresses, + chainIDs: session.chainIDs, + filter: session.filter, + }, + 0, + firstPageCount, + func(entries []Entry) (offset int) { + s.sessionsRWMutex.Lock() + defer s.sessionsRWMutex.Unlock() + + // Mark new entries + for i, a := range entries { + _, found := session.noFilterModel[a.getIdentity().key()] + entries[i].isNew = !found + } + + // Mirror identities for update use + session.model = mirrorIdentities(entries) + session.noFilterModel = nil + return 0 + }, + ) + } else { + // Else act as a normal filter update + s.internalFilterForSession(session, firstPageCount) + } + s.sessionsRWMutex.Unlock() + + return nil +} + +// ResetFilterSession is to be called when SessionUpdate.HasNewOnTop == true to +// update client with the latest state including new on top entries func (s *Service) ResetFilterSession(id SessionID, firstPageCount int) error { session, found := s.sessions[id] if !found { @@ -189,15 +277,16 @@ func (s *Service) ResetFilterSession(id SessionID, firstPageCount int) error { } session.new = nil - // Mirror client identities for checking updates - session.model = make([]EntryIdentity, 0, len(entries)) - for _, a := range entries { - session.model = append(session.model, EntryIdentity{ - payloadType: a.payloadType, - transaction: a.transaction, - id: a.id, - }) + if session.noFilterModel != nil { + // Add reported new entries to mark them as seen + for _, a := range newMap { + session.noFilterModel[a.key()] = a + } } + + // Mirror client identities for checking updates + session.model = mirrorIdentities(entries) + return 0 }, ) @@ -248,55 +337,91 @@ func (s *Service) subscribeToEvents() { go s.processEvents() } -// TODO #12120: check that it exits on channel close +// processEvents runs only if more than one session is active func (s *Service) processEvents() { + eventCount := 0 + lastUpdate := time.Now().UnixMilli() for event := range s.ch { - // TODO #12120: process rest of the events - // TODO #12120: debounce for 1s - if event.Type == transactions.EventPendingTransactionUpdate { - for sessionID := range s.sessions { - session := s.sessions[sessionID] - activities, err := getActivityEntries(context.Background(), s.getDeps(), session.addresses, session.allAddresses, session.chainIDs, session.filter, 0, len(session.model)) - if err != nil { - log.Error("Error getting activity entries", "error", err) - continue - } - - s.sessionsRWMutex.RLock() - allData := append(session.model, session.new...) - new, _ /*removed*/ := findUpdates(allData, activities) - s.sessionsRWMutex.RUnlock() - - s.sessionsRWMutex.Lock() - lastProcessed := -1 - for i, idRes := range new { - if i-lastProcessed > 1 { - // The events are not continuous, therefore these are not on top but mixed between existing entries - break - } - lastProcessed = idRes.newPos - // TODO #12120: make it more generic to follow the detection function - // TODO #12120: hold the first few and only send mixed and removed - if session.new == nil { - session.new = make([]EntryIdentity, 0, len(new)) - } - session.new = append(session.new, idRes.id) - } - - // TODO #12120: mixed - - s.sessionsRWMutex.Unlock() - - go notify(s.eventFeed, sessionID, len(session.new) > 0) - } + if event.Type == transactions.EventPendingTransactionUpdate || + event.Type == transactions.EventPendingTransactionStatusChanged || + event.Type == transfer.EventNewTransfers { + eventCount++ + } + // debounce events updates + if eventCount > 0 && + (time.Duration(time.Now().UnixMilli()-lastUpdate)*time.Millisecond) >= s.debounceDuration { + s.detectNew(eventCount) + eventCount = 0 + lastUpdate = time.Now().UnixMilli() } } } -func notify(eventFeed *event.Feed, id SessionID, hasNewEntries bool) { - payload := SessionUpdate{} - if hasNewEntries { - payload.HasNewEntries = &hasNewEntries +func (s *Service) detectNew(changeCount int) { + for sessionID := range s.sessions { + session := s.sessions[sessionID] + + fetchLen := len(session.model) + changeCount + activities, err := getActivityEntries(context.Background(), s.getDeps(), session.addresses, session.allAddresses, session.chainIDs, session.filter, 0, fetchLen) + if err != nil { + log.Error("Error getting activity entries", "error", err) + continue + } + + s.sessionsRWMutex.RLock() + allData := append(session.new, session.model...) + new, _ /*removed*/ := findUpdates(allData, activities) + s.sessionsRWMutex.RUnlock() + + s.sessionsRWMutex.Lock() + lastProcessed := -1 + onTop := true + var mixed []*EntryUpdate + for i, idRes := range new { + // Detect on top + if onTop { + // mixedIdentityResult.newPos includes session.new, therefore compensate for it + if ((idRes.newPos - len(session.new)) - lastProcessed) > 1 { + // From now on the events are not on top and continuous but mixed between existing entries + onTop = false + mixed = make([]*EntryUpdate, 0, len(new)-i) + } + lastProcessed = idRes.newPos + } + + if onTop { + if session.new == nil { + session.new = make([]EntryIdentity, 0, len(new)) + } + session.new = append(session.new, idRes.id) + } else { + modelPos := idRes.newPos - len(session.new) + entry := activities[idRes.newPos] + entry.isNew = true + mixed = append(mixed, &EntryUpdate{ + Pos: modelPos, + Entry: &entry, + }) + // Insert in session model at modelPos index + session.model = append(session.model[:modelPos], append([]EntryIdentity{{payloadType: entry.payloadType, transaction: entry.transaction, id: entry.id}}, session.model[modelPos:]...)...) + } + } + + s.sessionsRWMutex.Unlock() + + if len(session.new) > 0 || len(mixed) > 0 { + go notify(s.eventFeed, sessionID, len(session.new) > 0, mixed) + } + } +} + +func notify(eventFeed *event.Feed, id SessionID, hasNewOnTop bool, mixed []*EntryUpdate) { + payload := SessionUpdate{ + New: mixed, + } + + if hasNewOnTop { + payload.HasNewOnTop = &hasNewOnTop } sendResponseEvent(eventFeed, (*int32)(&id), EventActivitySessionUpdated, payload, nil) @@ -305,6 +430,8 @@ func notify(eventFeed *event.Feed, id SessionID, hasNewEntries bool) { // unsubscribeFromEvents should be called with sessionsRWMutex locked for writing func (s *Service) unsubscribeFromEvents() { s.subscriptions.Unsubscribe() + close(s.ch) + s.ch = nil s.subscriptions = nil } @@ -369,6 +496,9 @@ func entriesToMap(entries []Entry) map[string]Entry { // // implementation assumes the order of each identity doesn't change from old state (identities) and new state (updated); we have either add or removed. func findUpdates(identities []EntryIdentity, updated []Entry) (new []mixedIdentityResult, removed []EntryIdentity) { + if len(updated) == 0 { + return + } idsMap := entryIdsToMap(identities) updatedMap := entriesToMap(updated) @@ -381,6 +511,10 @@ func findUpdates(identities []EntryIdentity, updated []Entry) (new []mixedIdenti id: id, }) } + + if len(identities) > 0 && entry.getIdentity().same(identities[len(identities)-1]) { + break + } } // Account for new entries diff --git a/vendor/github.com/status-im/status-go/services/wallet/api.go b/vendor/github.com/status-im/status-go/services/wallet/api.go index 2c7871cc..873c5ef2 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/api.go +++ b/vendor/github.com/status-im/status-go/services/wallet/api.go @@ -316,6 +316,10 @@ func (api *API) FetchBalancesByOwnerAndContractAddress(ctx context.Context, chai return api.s.collectiblesManager.FetchBalancesByOwnerAndContractAddress(ctx, chainID, ownerAddress, contractAddresses) } +func (api *API) GetCollectibleOwnership(id thirdparty.CollectibleUniqueID) ([]thirdparty.AccountBalance, error) { + return api.s.collectiblesManager.GetCollectibleOwnership(id) +} + func (api *API) RefetchOwnedCollectibles() error { log.Debug("wallet.api.RefetchOwnedCollectibles") @@ -342,6 +346,16 @@ func (api *API) GetCollectibleOwnersByContractAddress(ctx context.Context, chain return api.s.collectiblesManager.FetchCollectibleOwnersByContractAddress(ctx, chainID, contractAddress) } +func (api *API) SearchCollectibles(ctx context.Context, chainID wcommon.ChainID, text string, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error) { + log.Debug("call to SearchCollectibles") + return api.s.collectiblesManager.SearchCollectibles(ctx, chainID, text, cursor, limit, providerID) +} + +func (api *API) SearchCollections(ctx context.Context, chainID wcommon.ChainID, text string, cursor string, limit int, providerID string) (*thirdparty.CollectionDataContainer, error) { + log.Debug("call to SearchCollections") + return api.s.collectiblesManager.SearchCollections(ctx, chainID, text, cursor, limit, providerID) +} + /* Collectibles API End */ @@ -567,7 +581,7 @@ func (api *API) ProceedWithTransactionsSignatures(ctx context.Context, signature return api.s.transactionManager.ProceedWithTransactionsSignatures(ctx, signatures) } -func (api *API) GetMultiTransactions(ctx context.Context, transactionIDs []transfer.MultiTransactionIDType) ([]*transfer.MultiTransaction, error) { +func (api *API) GetMultiTransactions(ctx context.Context, transactionIDs []wcommon.MultiTransactionIDType) ([]*transfer.MultiTransaction, error) { log.Debug("wallet.api.GetMultiTransactions", "IDs.len", len(transactionIDs)) return api.s.transactionManager.GetMultiTransactions(ctx, transactionIDs) } @@ -582,6 +596,7 @@ func (api *API) FetchAllCurrencyFormats() (currency.FormatPerSymbol, error) { return api.s.currency.FetchAllCurrencyFormats() } +// @deprecated replaced by session APIs; see #12120 func (api *API) FilterActivityAsync(requestID int32, addresses []common.Address, allAddresses bool, chainIDs []wcommon.ChainID, filter activity.Filter, offset int, limit int) error { log.Debug("wallet.api.FilterActivityAsync", "requestID", requestID, "addr.count", len(addresses), "allAddresses", allAddresses, "chainIDs.count", len(chainIDs), "offset", offset, "limit", limit) @@ -589,6 +604,7 @@ func (api *API) FilterActivityAsync(requestID int32, addresses []common.Address, return nil } +// @deprecated replaced by session APIs; see #12120 func (api *API) CancelActivityFilterTask(requestID int32) error { log.Debug("wallet.api.CancelActivityFilterTask", "requestID", requestID) @@ -602,6 +618,12 @@ func (api *API) StartActivityFilterSession(addresses []common.Address, allAddres return api.s.activity.StartFilterSession(addresses, allAddresses, chainIDs, filter, firstPageCount), nil } +func (api *API) UpdateActivityFilterForSession(sessionID activity.SessionID, filter activity.Filter, firstPageCount int) error { + log.Debug("wallet.api.UpdateActivityFilterForSession", "sessionID", sessionID, "firstPageCount", firstPageCount) + + return api.s.activity.UpdateFilterForSession(sessionID, filter, firstPageCount) +} + func (api *API) ResetActivityFilterSession(id activity.SessionID, firstPageCount int) error { log.Debug("wallet.api.ResetActivityFilterSession", "id", id, "firstPageCount", firstPageCount) diff --git a/vendor/github.com/status-im/status-go/services/wallet/balance/balance_cache.go b/vendor/github.com/status-im/status-go/services/wallet/balance/balance_cache.go index 4d9bde8e..fd0bd757 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/balance/balance_cache.go +++ b/vendor/github.com/status-im/status-go/services/wallet/balance/balance_cache.go @@ -8,8 +8,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - - "github.com/status-im/status-go/rpc/chain" ) // Reader interface for reading balance at a specified address. @@ -17,7 +15,7 @@ type Reader interface { BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) - FullTransactionByBlockNumberAndIndex(ctx context.Context, blockNumber *big.Int, index uint) (*chain.FullTransaction, error) + CallBlockHashByTransaction(ctx context.Context, blockNumber *big.Int, index uint) (common.Hash, error) NetworkID() uint64 } diff --git a/vendor/github.com/status-im/status-go/services/wallet/bigint/sql_big_int.go b/vendor/github.com/status-im/status-go/services/wallet/bigint/sql_big_int.go index fd0f48b9..5c21aeed 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bigint/sql_big_int.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bigint/sql_big_int.go @@ -58,3 +58,36 @@ func (i *SQLBigIntBytes) Value() (driver.Value, error) { } return (*big.Int)(i).Bytes(), nil } + +type NilableSQLBigInt struct { + big.Int + isNil bool +} + +func (i *NilableSQLBigInt) IsNil() bool { + return i.isNil +} + +func (i *NilableSQLBigInt) SetNil() { + i.isNil = true +} + +// Scan implements interface. +func (i *NilableSQLBigInt) Scan(value interface{}) error { + if value == nil { + i.SetNil() + return nil + } + val, ok := value.(int64) + if !ok { + return errors.New("not an integer") + } + + i.SetInt64(val) + return nil +} + +// Not implemented, used only for scanning +func (i *NilableSQLBigInt) Value() (driver.Value, error) { + return nil, errors.New("NilableSQLBigInt.Value is not implemented") +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/bridge.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/bridge.go index da6a4cb1..9bc535ca 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/bridge.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/bridge.go @@ -106,4 +106,5 @@ type Bridge interface { Send(sendArgs *TransactionBridge, verifiedAccount *account.SelectedExtKey) (types.Hash, error) GetContractAddress(network *params.Network, token *token.Token) *common.Address BuildTransaction(sendArgs *TransactionBridge) (*ethTypes.Transaction, error) + BuildTx(fromNetwork, toNetwork *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, bonderFee *big.Int) (*ethTypes.Transaction, error) } diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/cbridge.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/cbridge.go index c86f3346..1e6db600 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/cbridge.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/cbridge.go @@ -288,6 +288,27 @@ func (s *CBridge) EstimateGas(fromNetwork *params.Network, toNetwork *params.Net return uint64(increasedEstimation), nil } +func (s *CBridge) BuildTx(fromNetwork, toNetwork *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, bonderFee *big.Int) (*ethTypes.Transaction, error) { + toAddr := types.Address(toAddress) + sendArgs := &TransactionBridge{ + CbridgeTx: &CBridgeTxArgs{ + SendTxArgs: transactions.SendTxArgs{ + From: types.Address(fromAddress), + To: &toAddr, + Value: (*hexutil.Big)(amountIn), + Data: types.HexBytes("0x0"), + }, + ChainID: toNetwork.ChainID, + Symbol: token.Symbol, + Recipient: toAddress, + Amount: (*hexutil.Big)(amountIn), + }, + ChainID: fromNetwork.ChainID, + } + + return s.BuildTransaction(sendArgs) +} + func (s *CBridge) GetContractAddress(network *params.Network, token *token.Token) *common.Address { transferConfig, err := s.getTransferConfig(network.IsTest) if err != nil { diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/erc1155_transfer.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/erc1155_transfer.go index 6916151c..5c684144 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/erc1155_transfer.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/erc1155_transfer.go @@ -13,7 +13,6 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" ethTypes "github.com/ethereum/go-ethereum/core/types" "github.com/status-im/status-go/account" - "github.com/status-im/status-go/contracts/community-tokens/collectibles" "github.com/status-im/status-go/contracts/ierc1155" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/params" @@ -59,7 +58,7 @@ func (s *ERC1155TransferBridge) EstimateGas(fromNetwork *params.Network, toNetwo var input []byte value := new(big.Int) - abi, err := abi.JSON(strings.NewReader(collectibles.CollectiblesMetaData.ABI)) + abi, err := abi.JSON(strings.NewReader(ierc1155.Ierc1155ABI)) if err != nil { return 0, err } @@ -102,6 +101,33 @@ func (s *ERC1155TransferBridge) EstimateGas(fromNetwork *params.Network, toNetwo return uint64(increasedEstimation), nil } +func (s *ERC1155TransferBridge) BuildTx(network, _ *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, _ *big.Int) (*ethTypes.Transaction, error) { + contractAddress := types.Address(token.Address) + + // We store ERC1155 Token ID using big.Int.String() in token.Symbol + tokenID, success := new(big.Int).SetString(token.Symbol, 10) + if !success { + return nil, fmt.Errorf("failed to convert ERC1155's Symbol %s to big.Int", token.Symbol) + } + + sendArgs := &TransactionBridge{ + ERC1155TransferTx: &ERC1155TransferTxArgs{ + SendTxArgs: transactions.SendTxArgs{ + From: types.Address(fromAddress), + To: &contractAddress, + Value: (*hexutil.Big)(amountIn), + Data: types.HexBytes("0x0"), + }, + TokenID: (*hexutil.Big)(tokenID), + Recipient: toAddress, + Amount: (*hexutil.Big)(amountIn), + }, + ChainID: network.ChainID, + } + + return s.BuildTransaction(sendArgs) +} + func (s *ERC1155TransferBridge) sendOrBuild(sendArgs *TransactionBridge, signerFn bind.SignerFn) (tx *ethTypes.Transaction, err error) { ethClient, err := s.rpcClient.EthClient(sendArgs.ChainID) if err != nil { diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/erc721_transfer.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/erc721_transfer.go index 1616f699..65717af9 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/erc721_transfer.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/erc721_transfer.go @@ -98,6 +98,32 @@ func (s *ERC721TransferBridge) EstimateGas(fromNetwork *params.Network, toNetwor return uint64(increasedEstimation), nil } +func (s *ERC721TransferBridge) BuildTx(network, _ *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, _ *big.Int) (*ethTypes.Transaction, error) { + contractAddress := types.Address(token.Address) + + // We store ERC721 Token ID using big.Int.String() in token.Symbol + tokenID, success := new(big.Int).SetString(token.Symbol, 10) + if !success { + return nil, fmt.Errorf("failed to convert ERC721's Symbol %s to big.Int", token.Symbol) + } + + sendArgs := &TransactionBridge{ + ERC721TransferTx: &ERC721TransferTxArgs{ + SendTxArgs: transactions.SendTxArgs{ + From: types.Address(fromAddress), + To: &contractAddress, + Value: (*hexutil.Big)(amountIn), + Data: types.HexBytes("0x0"), + }, + TokenID: (*hexutil.Big)(tokenID), + Recipient: toAddress, + }, + ChainID: network.ChainID, + } + + return s.BuildTransaction(sendArgs) +} + func (s *ERC721TransferBridge) sendOrBuild(sendArgs *TransactionBridge, signerFn bind.SignerFn) (tx *ethTypes.Transaction, err error) { ethClient, err := s.rpcClient.EthClient(sendArgs.ChainID) if err != nil { diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/hop.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/hop.go index c3e33ef6..ac56597a 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/hop.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/hop.go @@ -3,6 +3,7 @@ package bridge import ( "context" "errors" + "fmt" "math" "math/big" "strings" @@ -215,6 +216,28 @@ func (h *HopBridge) EstimateGas(fromNetwork *params.Network, toNetwork *params.N return uint64(increasedEstimation), nil } +func (h *HopBridge) BuildTx(fromNetwork, toNetwork *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, bonderFee *big.Int) (*ethTypes.Transaction, error) { + toAddr := types.Address(toAddress) + sendArgs := &TransactionBridge{ + HopTx: &HopTxArgs{ + SendTxArgs: transactions.SendTxArgs{ + From: types.Address(fromAddress), + To: &toAddr, + Value: (*hexutil.Big)(amountIn), + Data: types.HexBytes("0x0"), + }, + Symbol: token.Symbol, + Recipient: toAddress, + Amount: (*hexutil.Big)(amountIn), + BonderFee: (*hexutil.Big)(bonderFee), + ChainID: toNetwork.ChainID, + }, + ChainID: fromNetwork.ChainID, + } + + return h.BuildTransaction(sendArgs) +} + func (h *HopBridge) GetContractAddress(network *params.Network, token *token.Token) *common.Address { var address common.Address if network.Layer == 1 { @@ -229,10 +252,10 @@ func (h *HopBridge) GetContractAddress(network *params.Network, token *token.Tok func (h *HopBridge) sendOrBuild(sendArgs *TransactionBridge, signerFn bind.SignerFn) (tx *ethTypes.Transaction, err error) { fromNetwork := h.contractMaker.RPCClient.NetworkManager.Find(sendArgs.ChainID) if fromNetwork == nil { - return tx, err + return tx, fmt.Errorf("ChainID not supported %d", sendArgs.ChainID) } - nonce, err := h.transactor.NextNonce(h.contractMaker.RPCClient, sendArgs.ChainID, sendArgs.HopTx.From) + nonce, err := h.transactor.NextNonce(h.contractMaker.RPCClient, fromNetwork.ChainID, sendArgs.HopTx.From) if err != nil { return tx, err } @@ -292,22 +315,35 @@ func (h *HopBridge) swapAndSend(chainID uint64, hopArgs *HopTxArgs, signerFn bin return tx, err } + toNetwork := h.contractMaker.RPCClient.NetworkManager.Find(hopArgs.ChainID) + if toNetwork == nil { + return tx, err + } + txOpts := hopArgs.ToTransactOpts(signerFn) if token.IsNative() { txOpts.Value = (*big.Int)(hopArgs.Amount) } now := time.Now() deadline := big.NewInt(now.Unix() + 604800) + amountOutMin := big.NewInt(0) + destinationDeadline := big.NewInt(now.Unix() + 604800) + destinationAmountOutMin := big.NewInt(0) + + if toNetwork.Layer == 1 { + destinationDeadline = big.NewInt(0) + } + tx, err = ammWrapper.SwapAndSend( txOpts, - big.NewInt(int64(hopArgs.ChainID)), + new(big.Int).SetUint64(hopArgs.ChainID), hopArgs.Recipient, hopArgs.Amount.ToInt(), hopArgs.BonderFee.ToInt(), - big.NewInt(0), - deadline, - big.NewInt(0), + amountOutMin, deadline, + destinationAmountOutMin, + destinationDeadline, ) return tx, err diff --git a/vendor/github.com/status-im/status-go/services/wallet/bridge/transfer.go b/vendor/github.com/status-im/status-go/services/wallet/bridge/transfer.go index 07887936..ac320134 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/bridge/transfer.go +++ b/vendor/github.com/status-im/status-go/services/wallet/bridge/transfer.go @@ -8,6 +8,7 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ethTypes "github.com/ethereum/go-ethereum/core/types" "github.com/status-im/status-go/account" "github.com/status-im/status-go/contracts/ierc20" @@ -84,6 +85,21 @@ func (s *TransferBridge) EstimateGas(fromNetwork *params.Network, toNetwork *par return uint64(increasedEstimation), nil } +func (s *TransferBridge) BuildTx(network, _ *params.Network, fromAddress common.Address, toAddress common.Address, token *token.Token, amountIn *big.Int, bonderFee *big.Int) (*ethTypes.Transaction, error) { + toAddr := types.Address(toAddress) + sendArgs := &TransactionBridge{ + TransferTx: &transactions.SendTxArgs{ + From: types.Address(fromAddress), + To: &toAddr, + Value: (*hexutil.Big)(amountIn), + Data: types.HexBytes("0x0"), + }, + ChainID: network.ChainID, + } + + return s.BuildTransaction(sendArgs) +} + func (s *TransferBridge) Send(sendArgs *TransactionBridge, verifiedAccount *account.SelectedExtKey) (types.Hash, error) { return s.transactor.SendTransactionWithChainID(sendArgs.ChainID, *sendArgs.TransferTx, verifiedAccount) } diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/collectible_data_db.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/collectible_data_db.go index 01e942d5..6c0242b4 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/collectible_data_db.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/collectible_data_db.go @@ -203,6 +203,12 @@ func scanCollectiblesDataRow(row *sql.Row) (*thirdparty.CollectibleData, error) func (o *CollectibleDataDB) GetIDsNotInDB(ids []thirdparty.CollectibleUniqueID) ([]thirdparty.CollectibleUniqueID, error) { ret := make([]thirdparty.CollectibleUniqueID, 0, len(ids)) + idMap := make(map[string]thirdparty.CollectibleUniqueID, len(ids)) + + // Ensure we don't have duplicates + for _, id := range ids { + idMap[id.HashKey()] = id + } exists, err := o.db.Prepare(`SELECT EXISTS ( SELECT 1 FROM collectible_data_cache @@ -212,7 +218,7 @@ func (o *CollectibleDataDB) GetIDsNotInDB(ids []thirdparty.CollectibleUniqueID) return nil, err } - for _, id := range ids { + for _, id := range idMap { row := exists.QueryRow( id.ContractID.ChainID, id.ContractID.Address, diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/collection_data_db.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/collection_data_db.go index c24c88a5..c53ed300 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/collection_data_db.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/collection_data_db.go @@ -180,6 +180,12 @@ func scanCollectionsDataRow(row *sql.Row) (*thirdparty.CollectionData, error) { func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdparty.ContractID, error) { ret := make([]thirdparty.ContractID, 0, len(ids)) + idMap := make(map[string]thirdparty.ContractID, len(ids)) + + // Ensure we don't have duplicates + for _, id := range ids { + idMap[id.HashKey()] = id + } exists, err := o.db.Prepare(`SELECT EXISTS ( SELECT 1 FROM collection_data_cache @@ -189,7 +195,7 @@ func (o *CollectionDataDB) GetIDsNotInDB(ids []thirdparty.ContractID) ([]thirdpa return nil, err } - for _, id := range ids { + for _, id := range idMap { row := exists.QueryRow( id.ChainID, id.Address, diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/commands.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/commands.go index d0245b91..3375c8ce 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/commands.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/commands.go @@ -164,7 +164,7 @@ type loadOwnedCollectiblesCommand struct { ownedCollectiblesChangeCh chan<- OwnedCollectiblesChange // Not to be set by the caller - partialOwnership []thirdparty.CollectibleUniqueID + partialOwnership []thirdparty.CollectibleIDBalance err error } @@ -200,14 +200,18 @@ func (c *loadOwnedCollectiblesCommand) triggerEvent(eventType walletevent.EventT }) } -func ownedTokensToTokenBalancesPerContractAddress(ownership []thirdparty.CollectibleUniqueID) thirdparty.TokenBalancesPerContractAddress { +func ownedTokensToTokenBalancesPerContractAddress(ownership []thirdparty.CollectibleIDBalance) thirdparty.TokenBalancesPerContractAddress { ret := make(thirdparty.TokenBalancesPerContractAddress) - for _, id := range ownership { - balance := thirdparty.TokenBalance{ - TokenID: id.TokenID, - Balance: &bigint.BigInt{Int: big.NewInt(1)}, + for _, idBalance := range ownership { + balanceBigInt := idBalance.Balance + if balanceBigInt == nil { + balanceBigInt = &bigint.BigInt{Int: big.NewInt(1)} } - ret[id.ContractID.Address] = append(ret[id.ContractID.Address], balance) + balance := thirdparty.TokenBalance{ + TokenID: idBalance.ID.TokenID, + Balance: balanceBigInt, + } + ret[idBalance.ID.ContractID.Address] = append(ret[idBalance.ID.ContractID.Address], balance) } return ret } @@ -295,9 +299,6 @@ func (c *loadOwnedCollectiblesCommand) Run(parent context.Context) (err error) { // Normally, update the DB once we've finished fetching // If this is the first fetch, make partial updates to the client to get a better UX if initialFetch || finished { - // Token balances should come from the providers. For now we assume all balances are 1, which - // is only valid for ERC721. - // TODO (#13025): Fetch balances from the providers. balances := ownedTokensToTokenBalancesPerContractAddress(c.partialOwnership) updateMessage.Removed, updateMessage.Updated, updateMessage.Added, err = c.ownershipDB.Update(c.chainID, c.account, balances, start.Unix()) diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/controller.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/controller.go index a91fa590..89fa5179 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/controller.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/controller.go @@ -366,7 +366,7 @@ func (c *Controller) startSettingsWatcher() { } settingChangeCb := func(setting settings.SettingField, value interface{}) { - if setting.Equals(settings.TestNetworksEnabled) || setting.Equals(settings.IsSepoliaEnabled) { + if setting.Equals(settings.TestNetworksEnabled) || setting.Equals(settings.IsGoerliEnabled) { c.stopPeriodicalOwnershipFetch() err := c.startPeriodicalOwnershipFetch() if err != nil { diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/filter.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/filter.go index 9ed9f6be..33177a1e 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/filter.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/filter.go @@ -60,7 +60,7 @@ func filterOwnedCollectibles(ctx context.Context, db *sql.DB, chainIDs []wcommon return nil, errors.New("no chainIDs provided") } - q := sq.Select("ownership.chain_id,ownership.contract_address,ownership.token_id") + q := sq.Select("ownership.chain_id,ownership.contract_address,ownership.token_id").Distinct() q = q.From("collectibles_ownership_cache ownership"). LeftJoin(`collectible_data_cache data ON ownership.chain_id = data.chain_id AND diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/manager.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/manager.go index d05dcad7..f3d448f6 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/manager.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/manager.go @@ -8,15 +8,16 @@ import ( "math/big" "net/http" "strings" + "sync" "time" - "github.com/afex/hystrix-go/hystrix" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/log" + "github.com/status-im/status-go/circuitbreaker" "github.com/status-im/status-go/contracts/community-tokens/collectibles" + "github.com/status-im/status-go/contracts/ierc1155" "github.com/status-im/status-go/rpc" "github.com/status-im/status-go/server" "github.com/status-im/status-go/services/wallet/async" @@ -31,8 +32,6 @@ import ( const requestTimeout = 5 * time.Second const signalUpdatedCollectiblesDataPageSize = 10 -const hystrixContractOwnershipClientName = "contractOwnershipClient" - const EventCollectiblesConnectionStatusChanged walletevent.EventType = "wallet-collectible-status-changed" // ERC721 does not support function "TokenURI" if call @@ -52,12 +51,8 @@ type ManagerInterface interface { } type Manager struct { - rpcClient *rpc.Client - contractOwnershipProviders []thirdparty.CollectibleContractOwnershipProvider - accountOwnershipProviders []thirdparty.CollectibleAccountOwnershipProvider - collectibleDataProviders []thirdparty.CollectibleDataProvider - collectionDataProviders []thirdparty.CollectionDataProvider - collectibleProviders []thirdparty.CollectibleProvider + rpcClient *rpc.Client + providers thirdparty.CollectibleProviders httpClient *http.Client @@ -68,27 +63,19 @@ type Manager struct { mediaServer *server.MediaServer - statuses map[string]*connection.Status - statusNotifier *connection.StatusNotifier - feed *event.Feed + statuses map[string]*connection.Status + statusNotifier *connection.StatusNotifier + feed *event.Feed + circuitBreakers sync.Map } func NewManager( db *sql.DB, rpcClient *rpc.Client, communityManager *community.Manager, - contractOwnershipProviders []thirdparty.CollectibleContractOwnershipProvider, - accountOwnershipProviders []thirdparty.CollectibleAccountOwnershipProvider, - collectibleDataProviders []thirdparty.CollectibleDataProvider, - collectionDataProviders []thirdparty.CollectionDataProvider, + providers thirdparty.CollectibleProviders, mediaServer *server.MediaServer, feed *event.Feed) *Manager { - hystrix.ConfigureCommand(hystrixContractOwnershipClientName, hystrix.CommandConfig{ - Timeout: 10000, - MaxConcurrentRequests: 100, - SleepWindow: 300000, - ErrorPercentThreshold: 25, - }) ownershipDB := NewOwnershipDB(db) @@ -112,32 +99,9 @@ func NewManager( feed, ) - // Get list of all providers - collectibleProvidersMap := make(map[string]thirdparty.CollectibleProvider) - collectibleProviders := make([]thirdparty.CollectibleProvider, 0) - for _, provider := range contractOwnershipProviders { - collectibleProvidersMap[provider.ID()] = provider - } - for _, provider := range accountOwnershipProviders { - collectibleProvidersMap[provider.ID()] = provider - } - for _, provider := range collectibleDataProviders { - collectibleProvidersMap[provider.ID()] = provider - } - for _, provider := range collectionDataProviders { - collectibleProvidersMap[provider.ID()] = provider - } - for _, provider := range collectibleProvidersMap { - collectibleProviders = append(collectibleProviders, provider) - } - return &Manager{ - rpcClient: rpcClient, - contractOwnershipProviders: contractOwnershipProviders, - accountOwnershipProviders: accountOwnershipProviders, - collectibleDataProviders: collectibleDataProviders, - collectionDataProviders: collectionDataProviders, - collectibleProviders: collectibleProviders, + rpcClient: rpcClient, + providers: providers, httpClient: &http.Client{ Timeout: requestTimeout, }, @@ -160,35 +124,6 @@ func mapToList[K comparable, T any](m map[K]T) []T { return list } -func makeContractOwnershipCall(main func() (any, error), fallback func() (any, error)) (any, error) { - resultChan := make(chan any, 1) - errChan := hystrix.Go(hystrixContractOwnershipClientName, func() error { - res, err := main() - if err != nil { - return err - } - resultChan <- res - return nil - }, func(err error) error { - if fallback == nil { - return err - } - - res, err := fallback() - if err != nil { - return err - } - resultChan <- res - return nil - }) - select { - case result := <-resultChan: - return result, nil - case err := <-errChan: - return nil, err - } -} - func (o *Manager) doContentTypeRequest(ctx context.Context, url string) (string, error) { req, err := http.NewRequestWithContext(ctx, http.MethodHead, url, nil) if err != nil { @@ -253,67 +188,169 @@ func (o *Manager) FetchBalancesByOwnerAndContractAddress(ctx context.Context, ch func (o *Manager) FetchAllAssetsByOwnerAndContractAddress(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, contractAddresses []common.Address, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error) { defer o.checkConnectionStatus(chainID) - anyProviderAvailable := false - for _, provider := range o.accountOwnershipProviders { + cmd := circuitbreaker.Command{} + for _, provider := range o.providers.AccountOwnershipProviders { if !provider.IsChainSupported(chainID) { continue } - anyProviderAvailable = true if providerID != thirdparty.FetchFromAnyProvider && providerID != provider.ID() { continue } - assetContainer, err := provider.FetchAllAssetsByOwnerAndContractAddress(ctx, chainID, owner, contractAddresses, cursor, limit) - if err != nil { - log.Error("FetchAllAssetsByOwnerAndContractAddress failed for", "provider", provider.ID(), "chainID", chainID, "err", err) - continue - } - - _, err = o.processFullCollectibleData(ctx, assetContainer.Items, true) - if err != nil { - return nil, err - } - - return assetContainer, nil + provider := provider + f := circuitbreaker.NewFunctor( + func() ([]interface{}, error) { + assetContainer, err := provider.FetchAllAssetsByOwnerAndContractAddress(ctx, chainID, owner, contractAddresses, cursor, limit) + if err != nil { + log.Error("FetchAllAssetsByOwnerAndContractAddress failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + } + return []interface{}{assetContainer}, err + }, + ) + cmd.Add(f) } - if anyProviderAvailable { - return nil, ErrAllProvidersFailedForChainID + if cmd.IsEmpty() { + return nil, ErrNoProvidersAvailableForChainID } - return nil, ErrNoProvidersAvailableForChainID + + cmdRes := o.getCircuitBreaker(chainID).Execute(cmd) + if cmdRes.Error() != nil { + log.Error("FetchAllAssetsByOwnerAndContractAddress failed for", "chainID", chainID, "err", cmdRes.Error()) + return nil, cmdRes.Error() + } + + assetContainer := cmdRes.Result()[0].(*thirdparty.FullCollectibleDataContainer) + _, err := o.processFullCollectibleData(ctx, assetContainer.Items, true) + if err != nil { + return nil, err + } + + return assetContainer, nil } func (o *Manager) FetchAllAssetsByOwner(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error) { defer o.checkConnectionStatus(chainID) - anyProviderAvailable := false - for _, provider := range o.accountOwnershipProviders { + cmd := circuitbreaker.Command{} + for _, provider := range o.providers.AccountOwnershipProviders { if !provider.IsChainSupported(chainID) { continue } - anyProviderAvailable = true if providerID != thirdparty.FetchFromAnyProvider && providerID != provider.ID() { continue } - assetContainer, err := provider.FetchAllAssetsByOwner(ctx, chainID, owner, cursor, limit) - if err != nil { - log.Error("FetchAllAssetsByOwner failed for", "provider", provider.ID(), "chainID", chainID, "err", err) - continue - } - - _, err = o.processFullCollectibleData(ctx, assetContainer.Items, true) - if err != nil { - return nil, err - } - - return assetContainer, nil + provider := provider + f := circuitbreaker.NewFunctor( + func() ([]interface{}, error) { + assetContainer, err := provider.FetchAllAssetsByOwner(ctx, chainID, owner, cursor, limit) + if err != nil { + log.Error("FetchAllAssetsByOwner failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + } + return []interface{}{assetContainer}, err + }, + ) + cmd.Add(f) } - if anyProviderAvailable { - return nil, ErrAllProvidersFailedForChainID + if cmd.IsEmpty() { + return nil, ErrNoProvidersAvailableForChainID + } + + cmdRes := o.getCircuitBreaker(chainID).Execute(cmd) + if cmdRes.Error() != nil { + log.Error("FetchAllAssetsByOwner failed for", "chainID", chainID, "err", cmdRes.Error()) + return nil, cmdRes.Error() + } + + assetContainer := cmdRes.Result()[0].(*thirdparty.FullCollectibleDataContainer) + _, err := o.processFullCollectibleData(ctx, assetContainer.Items, true) + if err != nil { + return nil, err + } + + return assetContainer, nil +} + +func (o *Manager) FetchERC1155Balances(ctx context.Context, owner common.Address, chainID walletCommon.ChainID, contractAddress common.Address, tokenIDs []*bigint.BigInt) ([]*bigint.BigInt, error) { + if len(tokenIDs) == 0 { + return nil, nil + } + + backend, err := o.rpcClient.EthClient(uint64(chainID)) + if err != nil { + return nil, err + } + + caller, err := ierc1155.NewIerc1155Caller(contractAddress, backend) + if err != nil { + return nil, err + } + + owners := make([]common.Address, len(tokenIDs)) + ids := make([]*big.Int, len(tokenIDs)) + for i, tokenID := range tokenIDs { + owners[i] = owner + ids[i] = tokenID.Int + } + + balances, err := caller.BalanceOfBatch(&bind.CallOpts{ + Context: ctx, + }, owners, ids) + + if err != nil { + return nil, err + } + + bigIntBalances := make([]*bigint.BigInt, len(balances)) + for i, balance := range balances { + bigIntBalances[i] = &bigint.BigInt{Int: balance} + } + + return bigIntBalances, err +} + +func (o *Manager) fillMissingBalances(ctx context.Context, owner common.Address, collectibles []*thirdparty.FullCollectibleData) { + collectiblesByChainIDAndContractAddress := thirdparty.GroupCollectiblesByChainIDAndContractAddress(collectibles) + + for chainID, collectiblesByContract := range collectiblesByChainIDAndContractAddress { + for contractAddress, contractCollectibles := range collectiblesByContract { + collectiblesToFetchPerTokenID := make(map[string]*thirdparty.FullCollectibleData) + + for _, collectible := range contractCollectibles { + if collectible.AccountBalance == nil { + switch getContractType(*collectible) { + case walletCommon.ContractTypeERC1155: + collectiblesToFetchPerTokenID[collectible.CollectibleData.ID.TokenID.String()] = collectible + default: + // Any other type of collectible is non-fungible, balance is 1 + collectible.AccountBalance = &bigint.BigInt{Int: big.NewInt(1)} + } + } + } + + if len(collectiblesToFetchPerTokenID) == 0 { + continue + } + + tokenIDs := make([]*bigint.BigInt, 0, len(collectiblesToFetchPerTokenID)) + for _, c := range collectiblesToFetchPerTokenID { + tokenIDs = append(tokenIDs, c.CollectibleData.ID.TokenID) + } + + balances, err := o.FetchERC1155Balances(ctx, owner, chainID, contractAddress, tokenIDs) + if err != nil { + log.Error("FetchERC1155Balances failed", "chainID", chainID, "contractAddress", contractAddress, "err", err) + continue + } + + for i := range balances { + collectible := collectiblesToFetchPerTokenID[tokenIDs[i].String()] + collectible.AccountBalance = balances[i] + } + } } - return nil, ErrNoProvidersAvailableForChainID } func (o *Manager) FetchCollectibleOwnershipByOwner(ctx context.Context, chainID walletCommon.ChainID, owner common.Address, cursor string, limit int, providerID string) (*thirdparty.CollectibleOwnershipContainer, error) { @@ -324,7 +361,15 @@ func (o *Manager) FetchCollectibleOwnershipByOwner(ctx context.Context, chainID return nil, err } + // Some providers do not give us the balances for ERC1155 tokens, so we need to fetch them separately. + collectibles := make([]*thirdparty.FullCollectibleData, 0, len(assetContainer.Items)) + for i := range assetContainer.Items { + collectibles = append(collectibles, &assetContainer.Items[i]) + } + o.fillMissingBalances(ctx, owner, collectibles) + ret := assetContainer.ToOwnershipContainer() + return &ret, nil } @@ -332,50 +377,81 @@ func (o *Manager) FetchCollectibleOwnershipByOwner(ctx context.Context, chainID // If asyncFetch is true, empty metadata will be returned for any missing collectibles and an EventCollectiblesDataUpdated will be sent when the data is ready. // If asyncFetch is false, it will wait for all collectibles' metadata to be retrieved before returning. func (o *Manager) FetchAssetsByCollectibleUniqueID(ctx context.Context, uniqueIDs []thirdparty.CollectibleUniqueID, asyncFetch bool) ([]thirdparty.FullCollectibleData, error) { - missingIDs, err := o.collectiblesDataDB.GetIDsNotInDB(uniqueIDs) + err := o.FetchMissingAssetsByCollectibleUniqueID(ctx, uniqueIDs, asyncFetch) if err != nil { return nil, err } - missingIDsPerChainID := thirdparty.GroupCollectibleUIDsByChainID(missingIDs) + return o.getCacheFullCollectibleData(uniqueIDs) +} - group := async.NewGroup(ctx) - group.Add(func(ctx context.Context) error { - for chainID, idsToFetch := range missingIDsPerChainID { - defer o.checkConnectionStatus(chainID) - - for _, provider := range o.collectibleDataProviders { - if !provider.IsChainSupported(chainID) { - continue - } - - fetchedAssets, err := provider.FetchAssetsByCollectibleUniqueID(ctx, idsToFetch) - if err != nil { - log.Error("FetchAssetsByCollectibleUniqueID failed for", "provider", provider.ID(), "chainID", chainID, "err", err) - continue - } - - updatedCollectibles, err := o.processFullCollectibleData(ctx, fetchedAssets, asyncFetch) - if err != nil { - log.Error("processFullCollectibleData failed for", "provider", provider.ID(), "chainID", chainID, "len(fetchedAssets)", len(fetchedAssets), "err", err) - return err - } - - if asyncFetch { - o.signalUpdatedCollectiblesData(updatedCollectibles) - } - break - } - } - - return nil - }) - - if !asyncFetch { - group.Wait() +func (o *Manager) FetchMissingAssetsByCollectibleUniqueID(ctx context.Context, uniqueIDs []thirdparty.CollectibleUniqueID, asyncFetch bool) error { + missingIDs, err := o.collectiblesDataDB.GetIDsNotInDB(uniqueIDs) + if err != nil { + return err } - return o.getCacheFullCollectibleData(uniqueIDs) + missingIDsPerChainID := thirdparty.GroupCollectibleUIDsByChainID(missingIDs) + + // Atomic group stores the error from the first failed command and stops other commands on error + group := async.NewAtomicGroup(ctx) + for chainID, idsToFetch := range missingIDsPerChainID { + group.Add(func(ctx context.Context) error { + defer o.checkConnectionStatus(chainID) + + fetchedAssets, err := o.fetchMissingAssetsForChainByCollectibleUniqueID(ctx, chainID, idsToFetch) + if err != nil { + log.Error("FetchMissingAssetsByCollectibleUniqueID failed for", "chainID", chainID, "ids", idsToFetch, "err", err) + return err + } + + updatedCollectibles, err := o.processFullCollectibleData(ctx, fetchedAssets, asyncFetch) + if err != nil { + log.Error("processFullCollectibleData failed for", "chainID", chainID, "len(fetchedAssets)", len(fetchedAssets), "err", err) + return err + } + + o.signalUpdatedCollectiblesData(updatedCollectibles) + return nil + }) + } + + if asyncFetch { + group.Wait() + return group.Error() + } + + return nil +} + +func (o *Manager) fetchMissingAssetsForChainByCollectibleUniqueID(ctx context.Context, chainID walletCommon.ChainID, idsToFetch []thirdparty.CollectibleUniqueID) ([]thirdparty.FullCollectibleData, error) { + cmd := circuitbreaker.Command{} + for _, provider := range o.providers.CollectibleDataProviders { + if !provider.IsChainSupported(chainID) { + continue + } + + provider := provider + cmd.Add(circuitbreaker.NewFunctor(func() ([]any, error) { + fetchedAssets, err := provider.FetchAssetsByCollectibleUniqueID(ctx, idsToFetch) + if err != nil { + log.Error("fetchMissingAssetsForChainByCollectibleUniqueID failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + } + + return []any{fetchedAssets}, err + })) + } + + if cmd.IsEmpty() { + return nil, ErrNoProvidersAvailableForChainID // lets not stop the group if no providers are available for the chain + } + + cmdRes := o.getCircuitBreaker(chainID).Execute(cmd) + if cmdRes.Error() != nil { + log.Error("fetchMissingAssetsForChainByCollectibleUniqueID failed for", "chainID", chainID, "err", cmdRes.Error()) + return nil, cmdRes.Error() + } + return cmdRes.Result()[0].([]thirdparty.FullCollectibleData), cmdRes.Error() } func (o *Manager) FetchCollectionsDataByContractID(ctx context.Context, ids []thirdparty.ContractID) ([]thirdparty.CollectionData, error) { @@ -386,27 +462,49 @@ func (o *Manager) FetchCollectionsDataByContractID(ctx context.Context, ids []th missingIDsPerChainID := thirdparty.GroupContractIDsByChainID(missingIDs) + // Atomic group stores the error from the first failed command and stops other commands on error + group := async.NewAtomicGroup(ctx) for chainID, idsToFetch := range missingIDsPerChainID { - defer o.checkConnectionStatus(chainID) + group.Add(func(ctx context.Context) error { + defer o.checkConnectionStatus(chainID) - for _, provider := range o.collectionDataProviders { - if !provider.IsChainSupported(chainID) { - continue + cmd := circuitbreaker.Command{} + for _, provider := range o.providers.CollectionDataProviders { + if !provider.IsChainSupported(chainID) { + continue + } + + provider := provider + cmd.Add(circuitbreaker.NewFunctor(func() ([]any, error) { + fetchedCollections, err := provider.FetchCollectionsDataByContractID(ctx, idsToFetch) + return []any{fetchedCollections}, err + })) } - fetchedCollections, err := provider.FetchCollectionsDataByContractID(ctx, idsToFetch) - if err != nil { - log.Error("FetchCollectionsDataByContractID failed for", "provider", provider.ID(), "chainID", chainID, "err", err) - continue + if cmd.IsEmpty() { + return nil } + cmdRes := o.getCircuitBreaker(chainID).Execute(cmd) + if cmdRes.Error() != nil { + log.Error("FetchCollectionsDataByContractID failed for", "chainID", chainID, "err", cmdRes.Error()) + return cmdRes.Error() + } + + fetchedCollections := cmdRes.Result()[0].([]thirdparty.CollectionData) err = o.processCollectionData(ctx, fetchedCollections) if err != nil { - return nil, err + return err } - break - } + return err + }) + } + + group.Wait() + + if group.Error() != nil { + return nil, group.Error() } data, err := o.collectionsDataDB.GetData(ids) @@ -417,55 +515,39 @@ func (o *Manager) FetchCollectionsDataByContractID(ctx context.Context, ids []th return mapToList(data), nil } -func (o *Manager) getContractOwnershipProviders(chainID walletCommon.ChainID) (mainProvider thirdparty.CollectibleContractOwnershipProvider, fallbackProvider thirdparty.CollectibleContractOwnershipProvider) { - mainProvider = nil - fallbackProvider = nil - - for _, provider := range o.contractOwnershipProviders { - if provider.IsChainSupported(chainID) { - if mainProvider == nil { - // First provider found - mainProvider = provider - continue - } - // Second provider found - fallbackProvider = provider - break - } - } - return -} - -func getCollectibleOwnersByContractAddressFunc(ctx context.Context, chainID walletCommon.ChainID, contractAddress common.Address, provider thirdparty.CollectibleContractOwnershipProvider) func() (any, error) { - if provider == nil { - return nil - } - return func() (any, error) { - res, err := provider.FetchCollectibleOwnersByContractAddress(ctx, chainID, contractAddress) - if err != nil { - log.Error("FetchCollectibleOwnersByContractAddress failed for", "provider", provider.ID(), "chainID", chainID, "err", err) - } - return res, err - } +func (o *Manager) GetCollectibleOwnership(id thirdparty.CollectibleUniqueID) ([]thirdparty.AccountBalance, error) { + return o.ownershipDB.GetOwnership(id) } func (o *Manager) FetchCollectibleOwnersByContractAddress(ctx context.Context, chainID walletCommon.ChainID, contractAddress common.Address) (*thirdparty.CollectibleContractOwnership, error) { defer o.checkConnectionStatus(chainID) - mainProvider, fallbackProvider := o.getContractOwnershipProviders(chainID) - if mainProvider == nil { + cmd := circuitbreaker.Command{} + for _, provider := range o.providers.ContractOwnershipProviders { + if !provider.IsChainSupported(chainID) { + continue + } + + provider := provider + cmd.Add(circuitbreaker.NewFunctor(func() ([]any, error) { + res, err := provider.FetchCollectibleOwnersByContractAddress(ctx, chainID, contractAddress) + if err != nil { + log.Error("FetchCollectibleOwnersByContractAddress failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + } + return []any{res}, err + })) + } + + if cmd.IsEmpty() { return nil, ErrNoProvidersAvailableForChainID } - mainFn := getCollectibleOwnersByContractAddressFunc(ctx, chainID, contractAddress, mainProvider) - fallbackFn := getCollectibleOwnersByContractAddressFunc(ctx, chainID, contractAddress, fallbackProvider) - - owners, err := makeContractOwnershipCall(mainFn, fallbackFn) - if err != nil { - return nil, err + cmdRes := o.getCircuitBreaker(chainID).Execute(cmd) + if cmdRes.Error() != nil { + log.Error("FetchCollectibleOwnersByContractAddress failed for", "chainID", chainID, "err", cmdRes.Error()) + return nil, cmdRes.Error() } - - return owners.(*thirdparty.CollectibleContractOwnership), nil + return cmdRes.Result()[0].(*thirdparty.CollectibleContractOwnership), cmdRes.Error() } func (o *Manager) fetchTokenURI(ctx context.Context, id thirdparty.CollectibleUniqueID) (string, error) { @@ -646,25 +728,16 @@ func (o *Manager) fillCommunityID(asset *thirdparty.FullCollectibleData) error { } func (o *Manager) fetchCommunityAssets(communityID string, communityAssets []*thirdparty.FullCollectibleData) error { - communityInfo, err := o.communityManager.FetchCommunityInfo(communityID) + communityFound, err := o.communityManager.FillCollectiblesMetadata(communityID, communityAssets) + if err != nil { + log.Error("FillCollectiblesMetadata failed", "communityID", communityID, "err", err) + } else if !communityFound { + log.Warn("fetchCommunityAssets community not found", "communityID", communityID) + } // If the community is found, we update the DB. // If the community is not found, we only insert new entries to the DB (don't replace what is already there). - allowUpdate := false - if err != nil { - log.Error("fetchCommunityInfo failed", "communityID", communityID, "err", err) - } else if communityInfo == nil { - log.Warn("fetchCommunityAssets community not found", "communityID", communityID) - } else { - for _, communityAsset := range communityAssets { - err := o.communityManager.FillCollectibleMetadata(communityAsset) - if err != nil { - log.Error("FillCollectibleMetadata failed", "communityID", communityID, "err", err) - return err - } - } - allowUpdate = true - } + allowUpdate := communityFound collectiblesData := make([]thirdparty.CollectibleData, 0, len(communityAssets)) collectionsData := make([]thirdparty.CollectionData, 0, len(communityAssets)) @@ -827,7 +900,7 @@ func (o *Manager) ResetConnectionStatus() { } func (o *Manager) checkConnectionStatus(chainID walletCommon.ChainID) { - for _, provider := range o.collectibleProviders { + for _, provider := range o.providers.GetProviderList() { if provider.IsChainSupported(chainID) && provider.IsConnected() { o.statuses[chainID.String()].SetIsConnected(true) return @@ -868,3 +941,89 @@ func (o *Manager) signalUpdatedCollectiblesData(ids []thirdparty.CollectibleUniq o.feed.Send(event) } } + +func (o *Manager) getCircuitBreaker(chainID walletCommon.ChainID) *circuitbreaker.CircuitBreaker { + cb, ok := o.circuitBreakers.Load(chainID.String()) + if !ok { + cb = circuitbreaker.NewCircuitBreaker(circuitbreaker.Config{ + CommandName: chainID.String(), + Timeout: 10000, + MaxConcurrentRequests: 100, + RequestVolumeThreshold: 25, + SleepWindow: 300000, + ErrorPercentThreshold: 25, + }) + o.circuitBreakers.Store(chainID.String(), cb) + } + return cb.(*circuitbreaker.CircuitBreaker) +} + +func (o *Manager) SearchCollectibles(ctx context.Context, chainID walletCommon.ChainID, text string, cursor string, limit int, providerID string) (*thirdparty.FullCollectibleDataContainer, error) { + defer o.checkConnectionStatus(chainID) + + anyProviderAvailable := false + for _, provider := range o.providers.SearchProviders { + if !provider.IsChainSupported(chainID) { + continue + } + anyProviderAvailable = true + if providerID != thirdparty.FetchFromAnyProvider && providerID != provider.ID() { + continue + } + + // TODO (#13951): Be smarter about how we handle the user-entered string + collections := []common.Address{} + + container, err := provider.SearchCollectibles(ctx, chainID, collections, text, cursor, limit) + if err != nil { + log.Error("FetchAllAssetsByOwner failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + continue + } + + _, err = o.processFullCollectibleData(ctx, container.Items, true) + if err != nil { + return nil, err + } + + return container, nil + } + + if anyProviderAvailable { + return nil, ErrAllProvidersFailedForChainID + } + return nil, ErrNoProvidersAvailableForChainID +} + +func (o *Manager) SearchCollections(ctx context.Context, chainID walletCommon.ChainID, query string, cursor string, limit int, providerID string) (*thirdparty.CollectionDataContainer, error) { + defer o.checkConnectionStatus(chainID) + + anyProviderAvailable := false + for _, provider := range o.providers.SearchProviders { + if !provider.IsChainSupported(chainID) { + continue + } + anyProviderAvailable = true + if providerID != thirdparty.FetchFromAnyProvider && providerID != provider.ID() { + continue + } + + // TODO (#13951): Be smarter about how we handle the user-entered string + container, err := provider.SearchCollections(ctx, chainID, query, cursor, limit) + if err != nil { + log.Error("FetchAllAssetsByOwner failed for", "provider", provider.ID(), "chainID", chainID, "err", err) + continue + } + + err = o.processCollectionData(ctx, container.Items) + if err != nil { + return nil, err + } + + return container, nil + } + + if anyProviderAvailable { + return nil, ErrAllProvidersFailedForChainID + } + return nil, ErrNoProvidersAvailableForChainID +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/ownership_db.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/ownership_db.go index b732cac8..50e5b65e 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/ownership_db.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/ownership_db.go @@ -5,6 +5,7 @@ import ( "fmt" "math" "math/big" + "sync" "github.com/ethereum/go-ethereum/common" @@ -20,6 +21,7 @@ const InvalidTimestamp = int64(-1) type OwnershipDB struct { db *sql.DB + mu sync.Mutex } func NewOwnershipDB(sqlDb *sql.DB) *OwnershipDB { @@ -300,7 +302,6 @@ func updateAddressOwnershipTimestamp(creator sqlite.StatementCreator, ownerAddre // Returns the list of added/removed IDs when comparing the given list of IDs with the ones in the DB. // Call before Update for the result to be useful. func (o *OwnershipDB) GetIDsNotInDB( - chainID w_common.ChainID, ownerAddress common.Address, newIDs []thirdparty.CollectibleUniqueID) ([]thirdparty.CollectibleUniqueID, error) { ret := make([]thirdparty.CollectibleUniqueID, 0, len(newIDs)) @@ -333,7 +334,36 @@ func (o *OwnershipDB) GetIDsNotInDB( return ret, nil } +func (o *OwnershipDB) GetIsFirstOfCollection(onwerAddress common.Address, newIDs []thirdparty.CollectibleUniqueID) (map[thirdparty.CollectibleUniqueID]bool, error) { + ret := make(map[thirdparty.CollectibleUniqueID]bool) + + exists, err := o.db.Prepare(`SELECT count(*) FROM collectibles_ownership_cache + WHERE chain_id=? AND contract_address=? AND owner_address=?`) + if err != nil { + return nil, err + } + + for _, id := range newIDs { + row := exists.QueryRow( + id.ContractID.ChainID, + id.ContractID.Address, + onwerAddress, + ) + var count int + err = row.Scan(&count) + if err != nil { + return nil, err + } + ret[id] = count <= 1 + } + return ret, nil +} + func (o *OwnershipDB) Update(chainID w_common.ChainID, ownerAddress common.Address, balances thirdparty.TokenBalancesPerContractAddress, timestamp int64) (removedIDs, updatedIDs, insertedIDs []thirdparty.CollectibleUniqueID, err error) { + // Ensure all steps are done atomically + o.mu.Lock() + defer o.mu.Unlock() + err = insertTmpOwnership(o.db, chainID, ownerAddress, balances) if err != nil { return @@ -367,7 +397,7 @@ func (o *OwnershipDB) Update(chainID w_common.ChainID, ownerAddress common.Addre } func (o *OwnershipDB) GetOwnedCollectibles(chainIDs []w_common.ChainID, ownerAddresses []common.Address, offset int, limit int) ([]thirdparty.CollectibleUniqueID, error) { - query, args, err := sqlx.In(fmt.Sprintf(`SELECT %s + query, args, err := sqlx.In(fmt.Sprintf(`SELECT DISTINCT %s FROM collectibles_ownership_cache WHERE chain_id IN (?) AND owner_address IN (?) LIMIT ? OFFSET ?`, selectOwnershipColumns), chainIDs, ownerAddresses, limit, offset) diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/service.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/service.go index 3b33f6aa..1c891136 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/service.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/service.go @@ -61,6 +61,11 @@ const ( FetchTypeFetchIfCacheOld ) +type TxHashData struct { + Hash common.Hash + TxID common.Hash +} + type FetchCriteria struct { FetchType FetchType `json:"fetch_type"` MaxCacheAgeSeconds int64 `json:"max_cache_age_seconds"` @@ -415,8 +420,8 @@ func (s *Service) onOwnedCollectiblesChange(ownedCollectiblesChange OwnedCollect switch ownedCollectiblesChange.changeType { case OwnedCollectiblesChangeTypeAdded, OwnedCollectiblesChangeTypeUpdated: // For recently added/updated collectibles, try to find a matching transfer - s.lookupTransferForCollectibles(ownedCollectiblesChange.ownedCollectibles) - s.notifyCommunityCollectiblesReceived(ownedCollectiblesChange.ownedCollectibles) + hashMap := s.lookupTransferForCollectibles(ownedCollectiblesChange.ownedCollectibles) + s.notifyCommunityCollectiblesReceived(ownedCollectiblesChange.ownedCollectibles, hashMap) } } @@ -437,7 +442,7 @@ func (s *Service) onCollectiblesTransfer(account common.Address, chainID walletC } } -func (s *Service) lookupTransferForCollectibles(ownedCollectibles OwnedCollectibles) { +func (s *Service) lookupTransferForCollectibles(ownedCollectibles OwnedCollectibles) map[thirdparty.CollectibleUniqueID]TxHashData { // There are some limitations to this approach: // - Collectibles ownership and transfers are not in sync and might represent the state at different moments. // - We have no way of knowing if the latest collectible transfer we've detected is actually the latest one, so the timestamp we @@ -445,6 +450,9 @@ func (s *Service) lookupTransferForCollectibles(ownedCollectibles OwnedCollectib // - There might be detected transfers that are temporarily not reflected in the collectibles ownership. // - For ERC721 tokens we should only look for incoming transfers. For ERC1155 tokens we should look for both incoming and outgoing transfers. // We need to get the contract standard for each collectible to know which approach to take. + + result := make(map[thirdparty.CollectibleUniqueID]TxHashData) + for _, id := range ownedCollectibles.ids { transfer, err := s.transferDB.GetLatestCollectibleTransfer(ownedCollectibles.account, id) if err != nil { @@ -452,17 +460,27 @@ func (s *Service) lookupTransferForCollectibles(ownedCollectibles OwnedCollectib continue } if transfer != nil { + result[id] = TxHashData{ + Hash: transfer.Transaction.Hash(), + TxID: transfer.ID, + } err = s.manager.SetCollectibleTransferID(ownedCollectibles.account, id, transfer.ID, false) if err != nil { log.Error("Error setting transfer ID for collectible", "error", err) } } } + return result } -func (s *Service) notifyCommunityCollectiblesReceived(ownedCollectibles OwnedCollectibles) { +func (s *Service) notifyCommunityCollectiblesReceived(ownedCollectibles OwnedCollectibles, hashMap map[thirdparty.CollectibleUniqueID]TxHashData) { ctx := context.Background() + firstCollectibles, err := s.ownershipDB.GetIsFirstOfCollection(ownedCollectibles.account, ownedCollectibles.ids) + if err != nil { + return + } + collectiblesData, err := s.manager.FetchAssetsByCollectibleUniqueID(ctx, ownedCollectibles.ids, false) if err != nil { log.Error("Error fetching collectibles data", "error", err) @@ -475,7 +493,47 @@ func (s *Service) notifyCommunityCollectiblesReceived(ownedCollectibles OwnedCol return } - encodedMessage, err := json.Marshal(communityCollectibles) + type CollectibleGroup struct { + contractID thirdparty.ContractID + txHash string + } + + groups := make(map[CollectibleGroup]Collectible) + for _, collectible := range communityCollectibles { + txHash := "" + for key, value := range hashMap { + if key.Same(&collectible.ID) { + collectible.LatestTxHash = value.TxID.Hex() + txHash = value.Hash.Hex() + break + } + } + + for id, value := range firstCollectibles { + if value && id.Same(&collectible.ID) { + collectible.IsFirst = true + break + } + } + + group := CollectibleGroup{ + contractID: collectible.ID.ContractID, + txHash: txHash, + } + _, ok := groups[group] + if !ok { + collectible.ReceivedAmount = float64(0) + } + collectible.ReceivedAmount = collectible.ReceivedAmount + 1 + groups[group] = collectible + } + + groupedCommunityCollectibles := make([]Collectible, 0, len(groups)) + for _, collectible := range groups { + groupedCommunityCollectibles = append(groupedCommunityCollectibles, collectible) + } + + encodedMessage, err := json.Marshal(groupedCommunityCollectibles) if err != nil { return } diff --git a/vendor/github.com/status-im/status-go/services/wallet/collectibles/types.go b/vendor/github.com/status-im/status-go/services/wallet/collectibles/types.go index 8860fdf8..6d0ef39c 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/collectibles/types.go +++ b/vendor/github.com/status-im/status-go/services/wallet/collectibles/types.go @@ -15,6 +15,9 @@ type Collectible struct { CollectionData *CollectionData `json:"collection_data,omitempty"` CommunityData *CommunityData `json:"community_data,omitempty"` Ownership []thirdparty.AccountBalance `json:"ownership,omitempty"` + IsFirst bool `json:"is_first,omitempty"` + LatestTxHash string `json:"latest_tx_hash,omitempty"` + ReceivedAmount float64 `json:"received_amount,omitempty"` } type CollectibleData struct { @@ -167,10 +170,12 @@ func fullCollectiblesDataToCommunityHeader(data []thirdparty.FullCollectibleData ID: collectibleID, ContractType: getContractType(c), CollectibleData: &CollectibleData{ - Name: c.CollectibleData.Name, + Name: c.CollectibleData.Name, + ImageURL: &c.CollectibleData.ImageURL, }, CommunityData: &communityData, Ownership: c.Ownership, + IsFirst: c.CollectibleData.IsFirst, } res = append(res, header) @@ -196,3 +201,11 @@ func communityInfoToData(communityID string, community *thirdparty.CommunityInfo return ret } + +func IDsFromAssets(assets []*thirdparty.FullCollectibleData) []thirdparty.CollectibleUniqueID { + result := make([]thirdparty.CollectibleUniqueID, len(assets)) + for i, asset := range assets { + result[i] = asset.CollectibleData.ID + } + return result +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/common/const.go b/vendor/github.com/status-im/status-go/services/wallet/common/const.go index 31bc1c7c..49b7f9ab 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/common/const.go +++ b/vendor/github.com/status-im/status-go/services/wallet/common/const.go @@ -5,6 +5,12 @@ import ( "time" ) +type MultiTransactionIDType int64 + +const ( + NoMultiTransactionID = MultiTransactionIDType(0) +) + type ChainID uint64 const ( diff --git a/vendor/github.com/status-im/status-go/services/wallet/community/manager.go b/vendor/github.com/status-im/status-go/services/wallet/community/manager.go index 58afcede..853ea11b 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/community/manager.go +++ b/vendor/github.com/status-im/status-go/services/wallet/community/manager.go @@ -58,16 +58,33 @@ func (cm *Manager) GetCommunityID(tokenURI string) string { return cm.communityInfoProvider.GetCommunityID(tokenURI) } -func (cm *Manager) FillCollectibleMetadata(c *thirdparty.FullCollectibleData) error { - return cm.communityInfoProvider.FillCollectibleMetadata(c) +func (cm *Manager) FillCollectiblesMetadata(communityID string, cs []*thirdparty.FullCollectibleData) (bool, error) { + communityFound, err := cm.communityInfoProvider.FillCollectiblesMetadata(communityID, cs) + if err != nil { + return communityFound, err + } + + if communityFound { + // Update local community data cache + community, err := cm.communityInfoProvider.GetCommunityInfoFromDB(communityID) + if err != nil { + log.Error("GetCommunityInfoFromDB failed", "communityID", communityID, "err", err) + return communityFound, err + } + err = cm.setCommunityInfo(communityID, community) + if err != nil { + log.Error("SetCommunityInfo failed", "communityID", community) + } + } + return communityFound, nil } func (cm *Manager) setCommunityInfo(id string, c *thirdparty.CommunityInfo) (err error) { return cm.db.SetCommunityInfo(id, c) } -func (cm *Manager) FetchCommunityInfo(communityID string) (*thirdparty.CommunityInfo, error) { - communityInfo, err := cm.communityInfoProvider.FetchCommunityInfo(communityID) +func (cm *Manager) fetchCommunityInfo(communityID string, fetcher func() (*thirdparty.CommunityInfo, error)) (*thirdparty.CommunityInfo, error) { + communityInfo, err := fetcher() if err != nil { dbErr := cm.setCommunityInfo(communityID, nil) if dbErr != nil { @@ -79,6 +96,12 @@ func (cm *Manager) FetchCommunityInfo(communityID string) (*thirdparty.Community return communityInfo, err } +func (cm *Manager) FetchCommunityInfo(communityID string) (*thirdparty.CommunityInfo, error) { + return cm.fetchCommunityInfo(communityID, func() (*thirdparty.CommunityInfo, error) { + return cm.communityInfoProvider.FetchCommunityInfo(communityID) + }) +} + func (cm *Manager) FetchCommunityMetadataAsync(communityID string) { go func() { communityInfo, err := cm.FetchCommunityMetadata(communityID) diff --git a/vendor/github.com/status-im/status-go/services/wallet/fees.go b/vendor/github.com/status-im/status-go/services/wallet/fees.go index 7cdb3bfb..9b0e65d8 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/fees.go +++ b/vendor/github.com/status-im/status-go/services/wallet/fees.go @@ -7,8 +7,11 @@ import ( "sort" "strings" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/consensus/misc" + ethTypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" + gaspriceoracle "github.com/status-im/status-go/contracts/gas-price-oracle" "github.com/status-im/status-go/rpc" ) @@ -27,6 +30,7 @@ type SuggestedFees struct { MaxFeePerGasLow *big.Float `json:"maxFeePerGasLow"` MaxFeePerGasMedium *big.Float `json:"maxFeePerGasMedium"` MaxFeePerGasHigh *big.Float `json:"maxFeePerGasHigh"` + L1GasFee *big.Float `json:"l1GasFee"` EIP1559Enabled bool `json:"eip1559Enabled"` } @@ -251,3 +255,35 @@ func (f *FeeManager) getFeeHistorySorted(chainID uint64) ([]*big.Int, error) { sort.Slice(fees, func(i, j int) bool { return fees[i].Cmp(fees[j]) < 0 }) return fees, nil } + +func (f *FeeManager) getL1Fee(ctx context.Context, chainID uint64, tx *ethTypes.Transaction) (uint64, error) { + + ethClient, err := f.RPCClient.EthClient(chainID) + if err != nil { + return 0, err + } + + contractAddress, err := gaspriceoracle.ContractAddress(chainID) + if err != nil { + return 0, err + } + + contract, err := gaspriceoracle.NewGaspriceoracleCaller(contractAddress, ethClient) + if err != nil { + return 0, err + } + + callOpt := &bind.CallOpts{} + + data, err := tx.MarshalBinary() + if err != nil { + return 0, err + } + + result, err := contract.GetL1Fee(callOpt, data) + if err != nil { + return 0, err + } + + return result.Uint64(), nil +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/on_ramp.go b/vendor/github.com/status-im/status-go/services/wallet/on_ramp.go index de74ebf4..0185f794 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/on_ramp.go +++ b/vendor/github.com/status-im/status-go/services/wallet/on_ramp.go @@ -120,7 +120,7 @@ func (c *CryptoOnRampManager) getFromStaticDataSource() ([]byte, error) { "description": "Global crypto to fiat flow", "fees": "0.49%% - 2.9%%", "logoUrl": "%s", - "siteUrl": "https://buy.ramp.network/?hostApiKey=zrtf9u2uqebeyzcs37fu5857tktr3eg9w5tffove&swapAsset=DAI,ETH,USDC,USDT", + "siteUrl": "https://ramp.network/buy?hostApiKey=zrtf9u2uqebeyzcs37fu5857tktr3eg9w5tffove&swapAsset=DAI,ETH,USDC,USDT", "hostname": "ramp.network" }, { diff --git a/vendor/github.com/status-im/status-go/services/wallet/persistence.go b/vendor/github.com/status-im/status-go/services/wallet/persistence.go index 51b48530..06bc2905 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/persistence.go +++ b/vendor/github.com/status-im/status-go/services/wallet/persistence.go @@ -33,7 +33,7 @@ func (p *Persistence) SaveTokens(tokens map[common.Address][]Token) (err error) for address, addressTokens := range tokens { for _, t := range addressTokens { for chainID, b := range t.BalancesPerChain { - if b.HasError || b.Balance.Cmp(big.NewFloat(0)) == 0 { + if b.HasError { continue } _, err = tx.Exec(`INSERT INTO token_balances(user_address,token_name,token_symbol,token_address,token_decimals,token_description,token_url,balance,raw_balance,chain_id) VALUES (?,?,?,?,?,?,?,?,?,?)`, address.Hex(), t.Name, t.Symbol, b.Address.Hex(), t.Decimals, t.Description, t.AssetWebsiteURL, b.Balance.String(), b.RawBalance, chainID) diff --git a/vendor/github.com/status-im/status-go/services/wallet/reader.go b/vendor/github.com/status-im/status-go/services/wallet/reader.go index 50453aa1..1cd1c17b 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/reader.go +++ b/vendor/github.com/status-im/status-go/services/wallet/reader.go @@ -5,7 +5,6 @@ import ( "math" "math/big" "sync" - "sync/atomic" "time" "github.com/ethereum/go-ethereum/common" @@ -19,9 +18,8 @@ import ( "github.com/status-im/status-go/services/wallet/community" "github.com/status-im/status-go/services/wallet/market" "github.com/status-im/status-go/services/wallet/thirdparty" - "github.com/status-im/status-go/services/wallet/transfer" - "github.com/status-im/status-go/services/wallet/token" + "github.com/status-im/status-go/services/wallet/transfer" "github.com/status-im/status-go/services/wallet/walletevent" ) @@ -51,14 +49,14 @@ func belongsToMandatoryTokens(symbol string) bool { func NewReader(rpcClient *rpc.Client, tokenManager *token.Manager, marketManager *market.Manager, communityManager *community.Manager, accountsDB *accounts.Database, persistence *Persistence, walletFeed *event.Feed) *Reader { return &Reader{ - rpcClient: rpcClient, - tokenManager: tokenManager, - marketManager: marketManager, - communityManager: communityManager, - accountsDB: accountsDB, - persistence: persistence, - walletFeed: walletFeed, - lastWalletTokenUpdateTimestamp: atomic.Int64{}, + rpcClient: rpcClient, + tokenManager: tokenManager, + marketManager: marketManager, + communityManager: communityManager, + accountsDB: accountsDB, + persistence: persistence, + walletFeed: walletFeed, + refreshBalanceCache: true, } } @@ -72,7 +70,7 @@ type Reader struct { walletFeed *event.Feed cancel context.CancelFunc walletEventsWatcher *walletevent.Watcher - lastWalletTokenUpdateTimestamp atomic.Int64 + lastWalletTokenUpdateTimestamp sync.Map reloadDelayTimer *time.Timer refreshBalanceCache bool rw sync.RWMutex @@ -91,11 +89,12 @@ type TokenMarketValues struct { } type ChainBalance struct { - RawBalance string `json:"rawBalance"` - Balance *big.Float `json:"balance"` - Address common.Address `json:"address"` - ChainID uint64 `json:"chainId"` - HasError bool `json:"hasError"` + RawBalance string `json:"rawBalance"` + Balance *big.Float `json:"balance"` + Balance1DayAgo string `json:"balance1DayAgo"` + Address common.Address `json:"address"` + ChainID uint64 `json:"chainId"` + HasError bool `json:"hasError"` } type Token struct { @@ -184,7 +183,7 @@ func (r *Reader) Stop() { r.cancelDelayedWalletReload() - r.lastWalletTokenUpdateTimestamp.Store(0) + r.lastWalletTokenUpdateTimestamp = sync.Map{} } func (r *Reader) triggerWalletReload() { @@ -221,13 +220,18 @@ func (r *Reader) startWalletEventsWatcher() { return } - timecheck := r.lastWalletTokenUpdateTimestamp.Load() - activityReloadMarginSeconds - if event.At > timecheck { - r.triggerDelayedWalletReload() - } + for _, address := range event.Accounts { + timestamp, ok := r.lastWalletTokenUpdateTimestamp.Load(address) + timecheck := int64(0) + if ok { + timecheck = timestamp.(int64) - activityReloadMarginSeconds + } - if transfer.IsTransferDetectionEvent(event.Type) { - r.invalidateBalanceCache() + if !ok || event.At > timecheck { + r.triggerDelayedWalletReload() + r.invalidateBalanceCache() + break + } } } @@ -243,11 +247,42 @@ func (r *Reader) stopWalletEventsWatcher() { } } -func (r *Reader) isBalanceCacheValid() bool { +func (r *Reader) tokensCachedForAddresses(addresses []common.Address) bool { + for _, address := range addresses { + cachedTokens, err := r.GetCachedWalletTokensWithoutMarketData() + if err != nil { + return false + } + + _, ok := cachedTokens[address] + if !ok { + return false + } + } + + return true +} + +func (r *Reader) isCacheTimestampValidForAddress(address common.Address) bool { + _, ok := r.lastWalletTokenUpdateTimestamp.Load(address) + return ok +} + +func (r *Reader) areCacheTimestampsValid(addresses []common.Address) bool { + for _, address := range addresses { + if !r.isCacheTimestampValidForAddress(address) { + return false + } + } + + return true +} + +func (r *Reader) isBalanceCacheValid(addresses []common.Address) bool { r.rw.RLock() defer r.rw.RUnlock() - return !r.refreshBalanceCache + return !r.refreshBalanceCache && r.tokensCachedForAddresses(addresses) && r.areCacheTimestampsValid(addresses) } func (r *Reader) balanceRefreshed() { @@ -265,7 +300,7 @@ func (r *Reader) invalidateBalanceCache() { } func (r *Reader) FetchOrGetCachedWalletBalances(ctx context.Context, addresses []common.Address) (map[common.Address][]Token, error) { - if !r.isBalanceCacheValid() { + if !r.isBalanceCacheValid(addresses) { balances, err := r.GetWalletTokenBalances(ctx, addresses) if err != nil { return nil, err @@ -276,20 +311,6 @@ func (r *Reader) FetchOrGetCachedWalletBalances(ctx context.Context, addresses [ } tokens, err := r.getWalletTokenBalances(ctx, addresses, false) - - addressWithoutCachedBalances := false - for _, address := range addresses { - if _, ok := tokens[address]; !ok { - addressWithoutCachedBalances = true - break - } - } - - // there should be at least ETH balance - if addressWithoutCachedBalances { - return r.GetWalletTokenBalances(ctx, addresses) - } - return tokens, err } @@ -339,37 +360,49 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. verifiedTokens, unverifiedTokens := splitVerifiedTokens(allTokens) + cachedBalancesPerChain := map[common.Address]map[common.Address]map[uint64]string{} updateAnyway := false - cachedBalancesPerChain := map[common.Address]map[common.Address]map[uint64]ChainBalance{} if !updateBalances { - for address, tokens := range cachedTokens { - if _, ok := cachedBalancesPerChain[address]; !ok { - cachedBalancesPerChain[address] = map[common.Address]map[uint64]ChainBalance{} + cacheCheck: + for _, address := range addresses { + if res, ok := cachedTokens[address]; !ok || len(res) == 0 { + updateAnyway = true + break } + networkFound := map[uint64]bool{} + for _, token := range cachedTokens[address] { + for _, chain := range chainIDs { + if _, ok := token.BalancesPerChain[chain]; ok { + networkFound[chain] = true + } + } + } + + for _, chain := range chainIDs { + if !networkFound[chain] { + updateAnyway = true + break cacheCheck + } + } + } + } + + if !updateBalances && !updateAnyway { + for address, tokens := range cachedTokens { for _, token := range tokens { for _, balance := range token.BalancesPerChain { + if _, ok := cachedBalancesPerChain[address]; !ok { + cachedBalancesPerChain[address] = map[common.Address]map[uint64]string{} + } if _, ok := cachedBalancesPerChain[address][balance.Address]; !ok { - cachedBalancesPerChain[address][balance.Address] = map[uint64]ChainBalance{} + cachedBalancesPerChain[address][balance.Address] = map[uint64]string{} } - cachedBalancesPerChain[address][balance.Address][balance.ChainID] = balance + cachedBalancesPerChain[address][balance.Address][balance.ChainID] = balance.RawBalance } } } - - for _, address := range addresses { - for _, tokenList := range [][]*token.Token{verifiedTokens, unverifiedTokens} { - for _, tokens := range getTokenBySymbols(tokenList) { - for _, token := range tokens { - if _, ok := cachedBalancesPerChain[address][token.Address][token.ChainID]; !ok { - updateAnyway = true - break - } - } - } - } - } } var latestBalances map[uint64]map[common.Address]map[common.Address]*hexutil.Big @@ -385,7 +418,7 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. } result := make(map[common.Address][]Token) - communities := make(map[string]bool) + dayAgoTimestamp := time.Now().Add(-24 * time.Hour).Unix() for _, address := range addresses { for _, tokenList := range [][]*token.Token{verifiedTokens, unverifiedTokens} { @@ -395,19 +428,22 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. isVisible := false for _, token := range tokens { var balance *big.Float - hexBalance := &hexutil.Big{} + hexBalance := &big.Int{} if latestBalances != nil { - hexBalance = latestBalances[token.ChainID][address][token.Address] - balance = big.NewFloat(0.0) - if hexBalance != nil { - balance = new(big.Float).Quo( - new(big.Float).SetInt(hexBalance.ToInt()), - big.NewFloat(math.Pow(10, float64(decimals))), - ) - } + hexBalance = latestBalances[token.ChainID][address][token.Address].ToInt() } else { - balance = cachedBalancesPerChain[address][token.Address][token.ChainID].Balance + if cachedRawBalance, ok := cachedBalancesPerChain[address][token.Address][token.ChainID]; ok { + hexBalance, _ = new(big.Int).SetString(cachedRawBalance, 10) + } } + balance = big.NewFloat(0.0) + if hexBalance != nil { + balance = new(big.Float).Quo( + new(big.Float).SetInt(hexBalance), + big.NewFloat(math.Pow(10, float64(decimals))), + ) + } + hasError := false if client, ok := clients[token.ChainID]; ok { hasError = err != nil || !client.GetIsConnected() @@ -416,11 +452,12 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. isVisible = balance.Cmp(big.NewFloat(0.0)) > 0 || r.isCachedToken(cachedTokens, address, token.Symbol, token.ChainID) } balancesPerChain[token.ChainID] = ChainBalance{ - RawBalance: hexBalance.ToInt().String(), - Balance: balance, - Address: token.Address, - ChainID: token.ChainID, - HasError: hasError, + RawBalance: hexBalance.String(), + Balance: balance, + Balance1DayAgo: "0", + Address: token.Address, + ChainID: token.ChainID, + HasError: hasError, } } @@ -428,6 +465,17 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. continue } + for _, balance := range balancesPerChain { + balance1DayAgo, err := r.tokenManager.GetTokenHistoricalBalance(address, balance.ChainID, symbol, dayAgoTimestamp) + if err != nil { + return nil, err + } + if balance1DayAgo != nil { + balance.Balance1DayAgo = balance1DayAgo.String() + balancesPerChain[balance.ChainID] = balance + } + } + walletToken := Token{ Name: tokens[0].Name, Symbol: symbol, @@ -439,20 +487,12 @@ func (r *Reader) getWalletTokenBalances(ctx context.Context, addresses []common. Image: tokens[0].Image, } - if walletToken.CommunityData != nil { - communities[walletToken.CommunityData.ID] = true - } - result[address] = append(result[address], walletToken) } } } - r.lastWalletTokenUpdateTimestamp.Store(time.Now().Unix()) - - for communityID := range communities { - r.communityManager.FetchCommunityMetadataAsync(communityID) - } + r.updateTokenUpdateTimestamp(addresses) return result, r.persistence.SaveTokens(result) } @@ -618,8 +658,6 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address) return nil, err } - communities := make(map[string]bool) - for address, tokens := range result { for index, token := range tokens { marketValuesPerCurrency := make(map[string]TokenMarketValues) @@ -640,10 +678,6 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address) } } - if token.CommunityData != nil { - communities[token.CommunityData.ID] = true - } - if _, ok := tokenDetails[token.Symbol]; !ok { continue } @@ -655,11 +689,7 @@ func (r *Reader) GetWalletToken(ctx context.Context, addresses []common.Address) } } - r.lastWalletTokenUpdateTimestamp.Store(time.Now().Unix()) - - for communityID := range communities { - r.communityManager.FetchCommunityMetadataAsync(communityID) - } + r.updateTokenUpdateTimestamp(addresses) return result, r.persistence.SaveTokens(result) } @@ -684,3 +714,9 @@ func (r *Reader) isCachedToken(cachedTokens map[common.Address][]Token, address func (r *Reader) GetCachedWalletTokensWithoutMarketData() (map[common.Address][]Token, error) { return r.persistence.GetTokens() } + +func (r *Reader) updateTokenUpdateTimestamp(addresses []common.Address) { + for _, address := range addresses { + r.lastWalletTokenUpdateTimestamp.Store(address, time.Now().Unix()) + } +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/router.go b/vendor/github.com/status-im/status-go/services/wallet/router.go index 4adfd82d..46a1fa29 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/router.go +++ b/vendor/github.com/status-im/status-go/services/wallet/router.go @@ -16,7 +16,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/status-im/status-go/contracts" - "github.com/status-im/status-go/contracts/ierc1155" + gaspriceoracle "github.com/status-im/status-go/contracts/gas-price-oracle" "github.com/status-im/status-go/contracts/ierc20" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/params" @@ -136,7 +136,7 @@ func (s SendType) isAvailableFor(network *params.Network) bool { return true } - if network.ChainID == 1 || network.ChainID == 5 { + if network.ChainID == 1 || network.ChainID == 5 || network.ChainID == 11155111 { return true } @@ -451,27 +451,28 @@ type Router struct { rpcClient *rpc.Client } -func (r *Router) requireApproval(ctx context.Context, sendType SendType, bridge bridge.Bridge, account common.Address, network *params.Network, token *token.Token, amountIn *big.Int) (bool, *big.Int, uint64, *common.Address, error) { - if sendType == ERC721Transfer { - return false, nil, 0, nil, nil +func (r *Router) requireApproval(ctx context.Context, sendType SendType, bridge bridge.Bridge, account common.Address, network *params.Network, token *token.Token, amountIn *big.Int) ( + bool, *big.Int, uint64, uint64, *common.Address, error) { + if sendType.IsCollectiblesTransfer() { + return false, nil, 0, 0, nil, nil } if token.IsNative() { - return false, nil, 0, nil, nil + return false, nil, 0, 0, nil, nil } contractMaker, err := contracts.NewContractMaker(r.rpcClient) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } bridgeAddress := bridge.GetContractAddress(network, token) if bridgeAddress == nil { - return false, nil, 0, nil, nil + return false, nil, 0, 0, nil, nil } contract, err := contractMaker.NewERC20(network.ChainID, token.Address) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } allowance, err := contract.Allowance(&bind.CallOpts{ @@ -479,26 +480,26 @@ func (r *Router) requireApproval(ctx context.Context, sendType SendType, bridge }, account, *bridgeAddress) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } if allowance.Cmp(amountIn) >= 0 { - return false, nil, 0, nil, nil + return false, nil, 0, 0, nil, nil } ethClient, err := r.rpcClient.EthClient(network.ChainID) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } erc20ABI, err := abi.JSON(strings.NewReader(ierc20.IERC20ABI)) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } data, err := erc20ABI.Pack("approve", bridgeAddress, amountIn) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } estimate, err := ethClient.EstimateGas(context.Background(), ethereum.CallMsg{ @@ -508,11 +509,25 @@ func (r *Router) requireApproval(ctx context.Context, sendType SendType, bridge Data: data, }) if err != nil { - return false, nil, 0, nil, err + return false, nil, 0, 0, nil, err } - return true, amountIn, estimate, bridgeAddress, nil + // fetching l1 fee + oracleContractAddress, err := gaspriceoracle.ContractAddress(network.ChainID) + if err != nil { + return false, nil, 0, 0, nil, err + } + oracleContract, err := gaspriceoracle.NewGaspriceoracleCaller(oracleContractAddress, ethClient) + if err != nil { + return false, nil, 0, 0, nil, err + } + + callOpt := &bind.CallOpts{} + + l1Fee, _ := oracleContract.GetL1Fee(callOpt, data) + + return true, amountIn, estimate, l1Fee.Uint64(), bridgeAddress, nil } func (r *Router) getBalance(ctx context.Context, network *params.Network, token *token.Token, account common.Address) (*big.Int, error) { @@ -525,24 +540,27 @@ func (r *Router) getBalance(ctx context.Context, network *params.Network, token } func (r *Router) getERC1155Balance(ctx context.Context, network *params.Network, token *token.Token, account common.Address) (*big.Int, error) { - client, err := r.s.rpcClient.EthClient(network.ChainID) - if err != nil { - return nil, err - } - tokenID, success := new(big.Int).SetString(token.Symbol, 10) if !success { return nil, errors.New("failed to convert token symbol to big.Int") } - caller, err := ierc1155.NewIerc1155Caller(token.Address, client) + balances, err := r.s.collectiblesManager.FetchERC1155Balances( + ctx, + account, + walletCommon.ChainID(network.ChainID), + token.Address, + []*bigint.BigInt{&bigint.BigInt{Int: tokenID}}, + ) if err != nil { return nil, err } - return caller.BalanceOf(&bind.CallOpts{ - Context: ctx, - }, account, tokenID) + if len(balances) != 1 || balances[0] == nil { + return nil, errors.New("invalid ERC1155 balance fetch response") + } + + return balances[0].Int, nil } func (r *Router) suggestedRoutes( @@ -572,7 +590,6 @@ func (r *Router) suggestedRoutes( if err != nil { return nil, err } - var ( group = async.NewAtomicGroup(ctx) mu sync.Mutex @@ -658,7 +675,6 @@ func (r *Router) suggestedRoutes( if len(preferedChainIDs) > 0 && !containsNetworkChainID(dest, preferedChainIDs) { continue } - if containsNetworkChainID(dest, disabledToChaindIDs) { continue } @@ -692,31 +708,45 @@ func (r *Router) suggestedRoutes( gasLimit = sendType.EstimateGas(r.s, network, addrFrom, tokenID) } + approvalRequired, approvalAmountRequired, approvalGasLimit, l1ApprovalFee, approvalContractAddress, err := r.requireApproval(ctx, sendType, bridge, addrFrom, network, token, amountIn) + if err != nil { + continue + } + + tx, err := bridge.BuildTx(network, dest, addrFrom, addrTo, token, amountIn, bonderFees) + if err != nil { + continue + } + + l1GasFeeWei, _ := r.s.feesManager.getL1Fee(ctx, network.ChainID, tx) + l1GasFeeWei += l1ApprovalFee + gasFees.L1GasFee = weiToGwei(big.NewInt(int64(l1GasFeeWei))) + requiredNativeBalance := new(big.Int).Mul(gweiToWei(maxFees), big.NewInt(int64(gasLimit))) + requiredNativeBalance.Add(requiredNativeBalance, new(big.Int).Mul(gweiToWei(maxFees), big.NewInt(int64(approvalGasLimit)))) + requiredNativeBalance.Add(requiredNativeBalance, big.NewInt(int64(l1GasFeeWei))) // add l1Fee to requiredNativeBalance, in case of L1 chain l1Fee is 0 + + if nativeBalance.Cmp(requiredNativeBalance) <= 0 { + continue + } + // Removed the required fees from maxAMount in case of native token tx if token.IsNative() { maxAmountIn = (*hexutil.Big)(new(big.Int).Sub(maxAmountIn.ToInt(), requiredNativeBalance)) } - if nativeBalance.Cmp(requiredNativeBalance) <= 0 { - continue - } - approvalRequired, approvalAmountRequired, approvalGasLimit, approvalContractAddress, err := r.requireApproval(ctx, sendType, bridge, addrFrom, network, token, amountIn) - if err != nil { - continue - } + + ethPrice := big.NewFloat(prices["ETH"]) + approvalGasFees := new(big.Float).Mul(gweiToEth(maxFees), big.NewFloat((float64(approvalGasLimit)))) approvalGasCost := new(big.Float) - approvalGasCost.Mul( - approvalGasFees, - big.NewFloat(prices["ETH"]), - ) + approvalGasCost.Mul(approvalGasFees, ethPrice) + + l1GasCost := new(big.Float) + l1GasCost.Mul(gasFees.L1GasFee, ethPrice) gasCost := new(big.Float) - gasCost.Mul( - new(big.Float).Mul(gweiToEth(maxFees), big.NewFloat((float64(gasLimit)))), - big.NewFloat(prices["ETH"]), - ) + gasCost.Mul(new(big.Float).Mul(gweiToEth(maxFees), big.NewFloat(float64(gasLimit))), ethPrice) tokenFeesAsFloat := new(big.Float).Quo( new(big.Float).SetInt(tokenFees), @@ -728,6 +758,7 @@ func (r *Router) suggestedRoutes( cost := new(big.Float) cost.Add(tokenCost, gasCost) cost.Add(cost, approvalGasCost) + cost.Add(cost, l1GasCost) mu.Lock() candidates = append(candidates, &Path{ BridgeName: bridge.Name(), diff --git a/vendor/github.com/status-im/status-go/services/wallet/saved_addresses.go b/vendor/github.com/status-im/status-go/services/wallet/saved_addresses.go index 2465681d..02a6e487 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/saved_addresses.go +++ b/vendor/github.com/status-im/status-go/services/wallet/saved_addresses.go @@ -2,6 +2,7 @@ package wallet import ( "database/sql" + "encoding/json" "fmt" "time" @@ -31,6 +32,32 @@ func (s *SavedAddress) ID() string { return fmt.Sprintf("%s-%t", s.Address.Hex(), s.IsTest) } +func (s *SavedAddress) MarshalJSON() ([]byte, error) { + item := struct { + Address common.Address `json:"address"` + MixedcaseAddress string `json:"mixedcaseAddress"` + Name string `json:"name"` + ChainShortNames string `json:"chainShortNames"` + ENSName string `json:"ens"` + ColorID multiAccCommon.CustomizationColor `json:"colorId"` + IsTest bool `json:"isTest"` + CreatedAt int64 `json:"createdAt"` + Removed bool `json:"removed"` + }{ + Address: s.Address, + MixedcaseAddress: s.Address.Hex(), + Name: s.Name, + ChainShortNames: s.ChainShortNames, + ENSName: s.ENSName, + ColorID: s.ColorID, + IsTest: s.IsTest, + CreatedAt: s.CreatedAt, + Removed: s.Removed, + } + + return json.Marshal(item) +} + type SavedAddressesManager struct { db *sql.DB } diff --git a/vendor/github.com/status-im/status-go/services/wallet/service.go b/vendor/github.com/status-im/status-go/services/wallet/service.go index 5cac16bc..c57c4ad4 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/service.go +++ b/vendor/github.com/status-im/status-go/services/wallet/service.go @@ -121,7 +121,7 @@ func NewService( raribleClient := rarible.NewClient(config.WalletConfig.RaribleMainnetAPIKey, config.WalletConfig.RaribleTestnetAPIKey) alchemyClient := alchemy.NewClient(config.WalletConfig.AlchemyAPIKeys) - // Try OpenSea, Infura, Alchemy in that order + // Collectible providers in priority order (i.e. provider N+1 will be tried only if provider N fails) contractOwnershipProviders := []thirdparty.CollectibleContractOwnershipProvider{ raribleClient, alchemyClient, @@ -145,7 +145,26 @@ func NewService( openseaV2Client, } - collectiblesManager := collectibles.NewManager(db, rpcClient, communityManager, contractOwnershipProviders, accountOwnershipProviders, collectibleDataProviders, collectionDataProviders, mediaServer, feed) + collectibleSearchProviders := []thirdparty.CollectibleSearchProvider{ + raribleClient, + } + + collectibleProviders := thirdparty.CollectibleProviders{ + ContractOwnershipProviders: contractOwnershipProviders, + AccountOwnershipProviders: accountOwnershipProviders, + CollectibleDataProviders: collectibleDataProviders, + CollectionDataProviders: collectionDataProviders, + SearchProviders: collectibleSearchProviders, + } + + collectiblesManager := collectibles.NewManager( + db, + rpcClient, + communityManager, + collectibleProviders, + mediaServer, + feed, + ) collectibles := collectibles.NewService(db, feed, accountsDB, accountFeed, settingsFeed, communityManager, rpcClient.NetworkManager, collectiblesManager) activity := activity.NewService(db, tokenManager, collectiblesManager, feed, pendingTxManager) diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client.go index bb95c6f5..871f57a5 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client.go @@ -33,8 +33,6 @@ func getBaseURL(chainID walletCommon.ChainID) (string, error) { return "https://eth-sepolia.g.alchemy.com", nil case walletCommon.OptimismMainnet: return "https://opt-mainnet.g.alchemy.com", nil - case walletCommon.OptimismGoerli: - return "https://opt-goerli.g.alchemy.com", nil case walletCommon.OptimismSepolia: return "https://opt-sepolia.g.alchemy.com", nil case walletCommon.ArbitrumMainnet: @@ -129,14 +127,13 @@ func (o *Client) doPostWithJSON(ctx context.Context, url string, payload any) (* } func (o *Client) doWithRetries(req *http.Request) (*http.Response, error) { - b := backoff.ExponentialBackOff{ - InitialInterval: time.Millisecond * 1000, - RandomizationFactor: 0.1, - Multiplier: 1.5, - MaxInterval: time.Second * 32, - MaxElapsedTime: time.Second * 128, - Clock: backoff.SystemClock, - } + b := backoff.NewExponentialBackOff() + b.InitialInterval = time.Millisecond * 1000 + b.RandomizationFactor = 0.1 + b.Multiplier = 1.5 + b.MaxInterval = time.Second * 32 + b.MaxElapsedTime = time.Second * 70 + b.Reset() op := func() (*http.Response, error) { @@ -151,12 +148,13 @@ func (o *Client) doWithRetries(req *http.Request) (*http.Response, error) { err = fmt.Errorf("unsuccessful request: %d %s", resp.StatusCode, http.StatusText(resp.StatusCode)) if resp.StatusCode == http.StatusTooManyRequests { + log.Error("doWithRetries failed with http.StatusTooManyRequests", "provider", o.ID(), "elapsed time", b.GetElapsedTime(), "next backoff", b.NextBackOff()) return nil, err } return nil, backoff.Permanent(err) } - return backoff.RetryWithData(op, &b) + return backoff.RetryWithData(op, b) } func (o *Client) FetchCollectibleOwnersByContractAddress(ctx context.Context, chainID walletCommon.ChainID, contractAddress common.Address) (*thirdparty.CollectibleContractOwnership, error) { diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client_test_data.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client_test_data.go index a5469e98..dfc7c09b 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client_test_data.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/client_test_data.go @@ -87,7 +87,7 @@ const ownedCollectiblesJSON = `{ }, "owners": null, "timeLastUpdated": "2024-01-03T19:11:04.681Z", - "balance": "1", + "balance": "15", "acquiredAt": { "blockTimestamp": null, "blockNumber": null diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/types.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/types.go index 19b30af1..e184657b 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/types.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/alchemy/types.go @@ -133,6 +133,7 @@ type Asset struct { Image Image `json:"image"` Raw Raw `json:"raw"` TokenURI string `json:"tokenUri"` + Balance *bigint.BigInt `json:"balance,omitempty"` } type OwnedNFTList struct { @@ -216,6 +217,7 @@ func (c *Asset) toCommon(id thirdparty.CollectibleUniqueID) thirdparty.FullColle return thirdparty.FullCollectibleData{ CollectibleData: c.toCollectiblesData(id), CollectionData: &contractData, + AccountBalance: c.Balance, } } diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/coingecko/client.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/coingecko/client.go index 0d7aa6f0..b5339906 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/coingecko/client.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/coingecko/client.go @@ -14,45 +14,52 @@ import ( ) var coinGeckoMapping = map[string]string{ - "STT": "status", - "SNT": "status", - "ETH": "ethereum", - "AST": "airswap", - "AMB": "", - "ABT": "arcblock", - "ATM": "", - "BNB": "binancecoin", - "BLT": "bloom", - "CDT": "", - "COMP": "compound-coin", - "EDG": "edgeless", - "ELF": "", - "ENG": "enigma", - "EOS": "eos", - "GEN": "daostack", - "MANA": "decentraland-wormhole", - "LEND": "ethlend", - "LRC": "loopring", - "MET": "metronome", - "POLY": "polymath", - "PPT": "populous", - "SAN": "santiment-network-token", - "DNT": "district0x", - "SPN": "sapien", - "USDS": "stableusd", - "STX": "stox", - "SUB": "substratum", - "PAY": "tenx", - "GRT": "the-graph", - "TNT": "tierion", - "TRX": "tron", - "TGT": "", - "RARE": "superrare", - "UNI": "uniswap", - "USDC": "usd-coin", - "USDP": "paxos-standard", - "VRS": "", - "TIME": "", + "STT": "status", + "SNT": "status", + "ETH": "ethereum", + "AST": "airswap", + "AMB": "", + "ABT": "arcblock", + "ATM": "", + "BNB": "binancecoin", + "BLT": "bloom", + "CDT": "", + "COMP": "compound-coin", + "EDG": "edgeless", + "ELF": "", + "ENG": "enigma", + "EOS": "eos", + "GEN": "daostack", + "MANA": "decentraland-wormhole", + "LEND": "ethlend", + "LRC": "loopring", + "MET": "metronome", + "POLY": "polymath", + "PPT": "populous", + "SAN": "santiment-network-token", + "DNT": "district0x", + "SPN": "sapien", + "USDS": "stableusd", + "STX": "stox", + "SUB": "substratum", + "PAY": "tenx", + "GRT": "the-graph", + "TNT": "tierion", + "TRX": "tron", + "TGT": "", + "RARE": "superrare", + "UNI": "uniswap", + "USDC": "usd-coin", + "USDP": "paxos-standard", + "VRS": "", + "TIME": "", + "USDT": "tether", + "SHIB": "shiba-inu", + "LINK": "chainlink", + "MATIC": "matic-network", + "DAI": "dai", + "ARB": "arbitrum", + "OP": "optimism", } const baseURL = "https://api.coingecko.com/api/v3/" @@ -150,6 +157,7 @@ func (c *Client) mapSymbolsToIds(symbols []string) ([]string, error) { ids = append(ids, token.ID) } } + ids = utils.RemoveDuplicates(ids) return ids, nil } @@ -182,7 +190,7 @@ func (c *Client) FetchPrices(symbols []string, currencies []string) (map[string] prices := make(map[string]map[string]float64) err = json.Unmarshal(body, &prices) if err != nil { - return nil, err + return nil, fmt.Errorf("%s - %s", err, string(body)) } result := make(map[string]map[string]float64) @@ -240,7 +248,7 @@ func (c *Client) FetchTokenMarketValues(symbols []string, currency string) (map[ var marketValues []GeckoMarketValues err = json.Unmarshal(body, &marketValues) if err != nil { - return nil, err + return nil, fmt.Errorf("%s - %s", err, string(body)) } result := make(map[string]thirdparty.TokenMarketValues) diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/collectible_types.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/collectible_types.go index 2d0b563f..0bf7d554 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/collectible_types.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/collectible_types.go @@ -97,6 +97,45 @@ func GroupContractIDsByChainID(ids []ContractID) map[w_common.ChainID][]Contract return ret } +func GroupCollectiblesByChainID(collectibles []*FullCollectibleData) map[w_common.ChainID][]*FullCollectibleData { + ret := make(map[w_common.ChainID][]*FullCollectibleData) + + for i, collectible := range collectibles { + chainID := collectible.CollectibleData.ID.ContractID.ChainID + if _, ok := ret[chainID]; !ok { + ret[chainID] = make([]*FullCollectibleData, 0, len(collectibles)) + } + ret[chainID] = append(ret[chainID], collectibles[i]) + } + + return ret +} + +func GroupCollectiblesByContractAddress(collectibles []*FullCollectibleData) map[common.Address][]*FullCollectibleData { + ret := make(map[common.Address][]*FullCollectibleData) + + for i, collectible := range collectibles { + contractAddress := collectible.CollectibleData.ID.ContractID.Address + if _, ok := ret[contractAddress]; !ok { + ret[contractAddress] = make([]*FullCollectibleData, 0, len(collectibles)) + } + ret[contractAddress] = append(ret[contractAddress], collectibles[i]) + } + + return ret +} + +func GroupCollectiblesByChainIDAndContractAddress(collectibles []*FullCollectibleData) map[w_common.ChainID]map[common.Address][]*FullCollectibleData { + ret := make(map[w_common.ChainID]map[common.Address][]*FullCollectibleData) + + collectiblesByChainID := GroupCollectiblesByChainID(collectibles) + for chainID, chainCollectibles := range collectiblesByChainID { + ret[chainID] = GroupCollectiblesByContractAddress(chainCollectibles) + } + + return ret +} + type CollectionTrait struct { Min float64 `json:"min"` Max float64 `json:"max"` @@ -138,6 +177,7 @@ type CollectibleData struct { Traits []CollectibleTrait `json:"traits"` BackgroundColor string `json:"background_color"` TokenURI string `json:"token_uri"` + IsFirst bool `json:"is_first"` } // Community-related collectible info. Present only for collectibles minted in a community. @@ -152,7 +192,8 @@ type FullCollectibleData struct { CollectionData *CollectionData CommunityInfo *CommunityInfo CollectibleCommunityInfo *CollectibleCommunityInfo - Ownership []AccountBalance + Ownership []AccountBalance // This is a list of all the owners of the collectible + AccountBalance *bigint.BigInt // This is the balance of the collectible for the requested account } type CollectiblesContainer[T any] struct { @@ -162,29 +203,38 @@ type CollectiblesContainer[T any] struct { Provider string } -type CollectibleOwnershipContainer CollectiblesContainer[CollectibleUniqueID] +type CollectibleOwnershipContainer CollectiblesContainer[CollectibleIDBalance] type CollectionDataContainer CollectiblesContainer[CollectionData] type CollectibleDataContainer CollectiblesContainer[CollectibleData] type FullCollectibleDataContainer CollectiblesContainer[FullCollectibleData] // Tried to find a way to make this generic, but couldn't, so the code below is duplicated somewhere else -func collectibleItemsToIDs(items []FullCollectibleData) []CollectibleUniqueID { - ret := make([]CollectibleUniqueID, 0, len(items)) +func collectibleItemsToBalances(items []FullCollectibleData) []CollectibleIDBalance { + ret := make([]CollectibleIDBalance, 0, len(items)) for _, item := range items { - ret = append(ret, item.CollectibleData.ID) + balance := CollectibleIDBalance{ + ID: item.CollectibleData.ID, + Balance: item.AccountBalance, + } + ret = append(ret, balance) } return ret } func (c *FullCollectibleDataContainer) ToOwnershipContainer() CollectibleOwnershipContainer { return CollectibleOwnershipContainer{ - Items: collectibleItemsToIDs(c.Items), + Items: collectibleItemsToBalances(c.Items), NextCursor: c.NextCursor, PreviousCursor: c.PreviousCursor, Provider: c.Provider, } } +type CollectibleIDBalance struct { + ID CollectibleUniqueID `json:"id"` + Balance *bigint.BigInt `json:"balance"` +} + type TokenBalance struct { TokenID *bigint.BigInt `json:"tokenId"` Balance *bigint.BigInt `json:"balance"` @@ -228,3 +278,44 @@ type CollectionDataProvider interface { CollectibleProvider FetchCollectionsDataByContractID(ctx context.Context, ids []ContractID) ([]CollectionData, error) } + +type CollectibleSearchProvider interface { + CollectibleProvider + SearchCollections(ctx context.Context, chainID w_common.ChainID, text string, cursor string, limit int) (*CollectionDataContainer, error) + SearchCollectibles(ctx context.Context, chainID w_common.ChainID, collections []common.Address, text string, cursor string, limit int) (*FullCollectibleDataContainer, error) +} + +type CollectibleProviders struct { + ContractOwnershipProviders []CollectibleContractOwnershipProvider + AccountOwnershipProviders []CollectibleAccountOwnershipProvider + CollectibleDataProviders []CollectibleDataProvider + CollectionDataProviders []CollectionDataProvider + SearchProviders []CollectibleSearchProvider +} + +func (p *CollectibleProviders) GetProviderList() []CollectibleProvider { + ret := make([]CollectibleProvider, 0) + + uniqueProviders := make(map[string]CollectibleProvider) + for _, provider := range p.ContractOwnershipProviders { + uniqueProviders[provider.ID()] = provider + } + for _, provider := range p.AccountOwnershipProviders { + uniqueProviders[provider.ID()] = provider + } + for _, provider := range p.CollectibleDataProviders { + uniqueProviders[provider.ID()] = provider + } + for _, provider := range p.CollectionDataProviders { + uniqueProviders[provider.ID()] = provider + } + for _, provider := range p.SearchProviders { + uniqueProviders[provider.ID()] = provider + } + + for _, provider := range uniqueProviders { + ret = append(ret, provider) + } + + return ret +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/community_types.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/community_types.go index 3c065aad..31be20b9 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/community_types.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/community_types.go @@ -9,9 +9,10 @@ type CommunityInfo struct { } type CommunityInfoProvider interface { + GetCommunityInfoFromDB(communityID string) (*CommunityInfo, error) FetchCommunityInfo(communityID string) (*CommunityInfo, error) // Collectible-related methods GetCommunityID(tokenURI string) string - FillCollectibleMetadata(collectible *FullCollectibleData) error + FillCollectiblesMetadata(communityID string, cs []*FullCollectibleData) (bool, error) } diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/cryptocompare/client.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/cryptocompare/client.go index aeaa7459..15bb0b85 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/cryptocompare/client.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/cryptocompare/client.go @@ -71,7 +71,7 @@ func (c *Client) FetchPrices(symbols []string, currencies []string) (map[string] prices := make(map[string]map[string]float64) err = json.Unmarshal(body, &prices) if err != nil { - return nil, err + return nil, fmt.Errorf("%s - %s", err, string(body)) } for _, symbol := range smbls { @@ -132,8 +132,12 @@ func (c *Client) FetchTokenMarketValues(symbols []string, currency string) (map[ container := MarketValuesContainer{} err = json.Unmarshal(body, &container) + + if len(container.Raw) == 0 { + return nil, fmt.Errorf("no data found - %s", string(body)) + } if err != nil { - return item, err + return nil, fmt.Errorf("%s - %s", err, string(body)) } for _, symbol := range smbls { diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/opensea/client_v2.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/opensea/client_v2.go index 4700f075..b6f462d6 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/opensea/client_v2.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/opensea/client_v2.go @@ -157,7 +157,9 @@ func (o *ClientV2) fetchAssets(ctx context.Context, chainID walletCommon.ChainID body, err := o.client.doGetRequest(ctx, url, o.apiKey) if err != nil { - o.connectionStatus.SetIsConnected(false) + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } return nil, err } o.connectionStatus.SetIsConnected(true) @@ -274,7 +276,9 @@ func (o *ClientV2) fetchCollectionDataBySlug(ctx context.Context, chainID wallet body, err := o.client.doGetRequest(ctx, url, o.apiKey) if err != nil { - o.connectionStatus.SetIsConnected(false) + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } return nil, err } o.connectionStatus.SetIsConnected(true) diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/client.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/client.go index a97e487d..fc5fb611 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/client.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/client.go @@ -24,6 +24,8 @@ import ( const ownedNFTLimit = 100 const collectionOwnershipLimit = 50 const nftMetadataBatchLimit = 50 +const searchCollectiblesLimit = 1000 +const searchCollectionsLimit = 1000 func (o *Client) ID() string { return RaribleID @@ -42,7 +44,7 @@ func getBaseURL(chainID walletCommon.ChainID) (string, error) { switch uint64(chainID) { case walletCommon.EthereumMainnet, walletCommon.ArbitrumMainnet: return "https://api.rarible.org", nil - case walletCommon.EthereumGoerli, walletCommon.ArbitrumSepolia: + case walletCommon.ArbitrumSepolia: return "https://testnet-api.rarible.org", nil } @@ -143,14 +145,13 @@ func (o *Client) doPostWithJSON(ctx context.Context, url string, payload any, ap } func (o *Client) doWithRetries(req *http.Request, apiKey string) (*http.Response, error) { - b := backoff.ExponentialBackOff{ - InitialInterval: time.Millisecond * 1000, - RandomizationFactor: 0.1, - Multiplier: 1.5, - MaxInterval: time.Second * 32, - MaxElapsedTime: time.Second * 128, - Clock: backoff.SystemClock, - } + b := backoff.NewExponentialBackOff() + b.InitialInterval = time.Millisecond * 1000 + b.RandomizationFactor = 0.1 + b.Multiplier = 1.5 + b.MaxInterval = time.Second * 32 + b.MaxElapsedTime = time.Second * 70 + b.Reset() req.Header.Set("X-API-KEY", apiKey) @@ -167,12 +168,13 @@ func (o *Client) doWithRetries(req *http.Request, apiKey string) (*http.Response err = fmt.Errorf("unsuccessful request: %d %s", resp.StatusCode, http.StatusText(resp.StatusCode)) if resp.StatusCode == http.StatusTooManyRequests { + log.Error("doWithRetries failed with http.StatusTooManyRequests", "provider", o.ID(), "elapsed time", b.GetElapsedTime(), "next backoff", b.NextBackOff()) return nil, err } return nil, backoff.Permanent(err) } - return backoff.RetryWithData(op, &b) + return backoff.RetryWithData(op, b) } func (o *Client) FetchCollectibleOwnersByContractAddress(ctx context.Context, chainID walletCommon.ChainID, contractAddress common.Address) (*thirdparty.CollectibleContractOwnership, error) { @@ -197,7 +199,9 @@ func (o *Client) FetchCollectibleOwnersByContractAddress(ctx context.Context, ch resp, err := o.doQuery(ctx, url, o.getAPIKey(chainID)) if err != nil { - o.connectionStatus.SetIsConnected(false) + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } return nil, err } o.connectionStatus.SetIsConnected(true) @@ -258,7 +262,9 @@ func (o *Client) FetchAllAssetsByOwner(ctx context.Context, chainID walletCommon resp, err := o.doQuery(ctx, url, o.getAPIKey(chainID)) if err != nil { - o.connectionStatus.SetIsConnected(false) + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } return nil, err } o.connectionStatus.SetIsConnected(true) @@ -398,7 +404,9 @@ func (o *Client) FetchCollectionsDataByContractID(ctx context.Context, contractI resp, err := o.doQuery(ctx, url, o.getAPIKey(contractID.ChainID)) if err != nil { - o.connectionStatus.SetIsConnected(false) + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } return nil, err } o.connectionStatus.SetIsConnected(true) @@ -426,3 +434,184 @@ func (o *Client) FetchCollectionsDataByContractID(ctx context.Context, contractI return ret, nil } + +func (o *Client) searchCollectibles(ctx context.Context, chainID walletCommon.ChainID, collections []common.Address, fullText CollectibleFilterFullText, sort CollectibleFilterContainerSort, cursor string, limit int) (*thirdparty.FullCollectibleDataContainer, error) { + baseURL, err := getItemBaseURL(chainID) + if err != nil { + return nil, err + } + + url := fmt.Sprintf("%s/search", baseURL) + + ret := &thirdparty.FullCollectibleDataContainer{ + Provider: o.ID(), + Items: make([]thirdparty.FullCollectibleData, 0), + PreviousCursor: cursor, + NextCursor: "", + } + + if fullText.Text == "" { + return ret, nil + } + + tmpLimit := searchCollectiblesLimit + if limit > thirdparty.FetchNoLimit && limit < tmpLimit { + tmpLimit = limit + } + + blockchainString := chainIDToChainString(chainID) + + filterContainer := CollectibleFilterContainer{ + Cursor: cursor, + Limit: tmpLimit, + Filter: CollectibleFilter{ + Blockchains: []string{blockchainString}, + Deleted: false, + FullText: fullText, + }, + Sort: sort, + } + + for _, collection := range collections { + filterContainer.Filter.Collections = append(filterContainer.Filter.Collections, fmt.Sprintf("%s:%s", blockchainString, collection.String())) + } + + for { + resp, err := o.doPostWithJSON(ctx, url, filterContainer, o.getAPIKey(chainID)) + if err != nil { + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } + return nil, err + } + o.connectionStatus.SetIsConnected(true) + + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + // if Json is not returned there must be an error + if !json.Valid(body) { + return nil, fmt.Errorf("invalid json: %s", string(body)) + } + + var collectibles CollectiblesContainer + err = json.Unmarshal(body, &collectibles) + if err != nil { + return nil, err + } + + ret.Items = append(ret.Items, raribleToCollectiblesData(collectibles.Collectibles, chainID.IsMainnet())...) + ret.NextCursor = collectibles.Continuation + + if len(ret.NextCursor) == 0 { + break + } + + filterContainer.Cursor = ret.NextCursor + + if limit != thirdparty.FetchNoLimit && len(ret.Items) >= limit { + break + } + } + + return ret, nil +} + +func (o *Client) searchCollections(ctx context.Context, chainID walletCommon.ChainID, text string, cursor string, limit int) (*thirdparty.CollectionDataContainer, error) { + baseURL, err := getCollectionBaseURL(chainID) + if err != nil { + return nil, err + } + + url := fmt.Sprintf("%s/search", baseURL) + + ret := &thirdparty.CollectionDataContainer{ + Provider: o.ID(), + Items: make([]thirdparty.CollectionData, 0), + PreviousCursor: cursor, + NextCursor: "", + } + + if text == "" { + return ret, nil + } + + tmpLimit := searchCollectionsLimit + if limit > thirdparty.FetchNoLimit && limit < tmpLimit { + tmpLimit = limit + } + + filterContainer := CollectionFilterContainer{ + Cursor: cursor, + Limit: tmpLimit, + Filter: CollectionFilter{ + Blockchains: []string{chainIDToChainString(chainID)}, + Text: text, + }, + } + + for { + resp, err := o.doPostWithJSON(ctx, url, filterContainer, o.getAPIKey(chainID)) + if err != nil { + if ctx.Err() == nil { + o.connectionStatus.SetIsConnected(false) + } + return nil, err + } + o.connectionStatus.SetIsConnected(true) + + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + // if Json is not returned there must be an error + if !json.Valid(body) { + return nil, fmt.Errorf("invalid json: %s", string(body)) + } + + var collections CollectionsContainer + err = json.Unmarshal(body, &collections) + if err != nil { + return nil, err + } + + ret.Items = append(ret.Items, raribleToCollectionsData(collections.Collections, chainID.IsMainnet())...) + ret.NextCursor = collections.Continuation + + if len(ret.NextCursor) == 0 { + break + } + + filterContainer.Cursor = ret.NextCursor + + if limit != thirdparty.FetchNoLimit && len(ret.Items) >= limit { + break + } + } + + return ret, nil +} + +func (o *Client) SearchCollections(ctx context.Context, chainID walletCommon.ChainID, text string, cursor string, limit int) (*thirdparty.CollectionDataContainer, error) { + return o.searchCollections(ctx, chainID, text, cursor, limit) +} + +func (o *Client) SearchCollectibles(ctx context.Context, chainID walletCommon.ChainID, collections []common.Address, text string, cursor string, limit int) (*thirdparty.FullCollectibleDataContainer, error) { + fullText := CollectibleFilterFullText{ + Text: text, + Fields: []string{ + CollectibleFilterFullTextFieldName, + }, + } + + sort := CollectibleFilterContainerSortRelevance + + return o.searchCollectibles(ctx, chainID, collections, fullText, sort, cursor, limit) +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/types.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/types.go index baaa7446..4337957f 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/types.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/rarible/types.go @@ -110,6 +110,51 @@ type BatchTokenIDs struct { IDs []string `json:"ids"` } +type CollectibleFilterFullTextField = string + +const ( + CollectibleFilterFullTextFieldName = "NAME" + CollectibleFilterFullTextFieldDescription = "DESCRIPTION" +) + +type CollectibleFilterFullText struct { + Text string `json:"text"` + Fields []CollectibleFilterFullTextField `json:"fields"` +} + +type CollectibleFilter struct { + Blockchains []string `json:"blockchains"` + Collections []string `json:"collections,omitempty"` + Deleted bool `json:"deleted"` + FullText CollectibleFilterFullText `json:"fullText"` +} + +type CollectibleFilterContainerSort = string + +const ( + CollectibleFilterContainerSortRelevance = "RELEVANCE" + CollectibleFilterContainerSortLatest = "LATEST" + CollectibleFilterContainerSortEarliest = "EARLIEST" +) + +type CollectibleFilterContainer struct { + Limit int `json:"size"` + Cursor string `json:"continuation"` + Filter CollectibleFilter `json:"filter"` + Sort CollectibleFilterContainerSort `json:"sort"` +} + +type CollectionFilter struct { + Blockchains []string `json:"blockchains"` + Text string `json:"text"` +} + +type CollectionFilterContainer struct { + Limit int `json:"size"` + Cursor string `json:"continuation"` + Filter CollectionFilter `json:"filter"` +} + type CollectiblesContainer struct { Continuation string `json:"continuation"` Collectibles []Collectible `json:"items"` @@ -157,6 +202,11 @@ func (st *AttributeValue) UnmarshalJSON(b []byte) error { return nil } +type CollectionsContainer struct { + Continuation string `json:"continuation"` + Collections []Collection `json:"collections"` +} + type Collection struct { ID string `json:"id"` Blockchain string `json:"blockchain"` @@ -247,6 +297,19 @@ func raribleToCollectiblesData(l []Collectible, isMainnet bool) []thirdparty.Ful return ret } +func raribleToCollectionsData(l []Collection, isMainnet bool) []thirdparty.CollectionData { + ret := make([]thirdparty.CollectionData, 0, len(l)) + for _, c := range l { + id, err := raribleContractIDToUniqueID(c.ID, isMainnet) + if err != nil { + continue + } + item := c.toCommon(id) + ret = append(ret, item) + } + return ret +} + func (c *Collection) toCommon(id thirdparty.ContractID) thirdparty.CollectionData { ret := thirdparty.CollectionData{ ID: id, diff --git a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/utils/symbols.go b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/utils/symbols.go index fbec1746..d97fd148 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/thirdparty/utils/symbols.go +++ b/vendor/github.com/status-im/status-go/services/wallet/thirdparty/utils/symbols.go @@ -13,6 +13,18 @@ func RenameSymbols(symbols []string) (renames []string) { return } +func RemoveDuplicates(strings []string) []string { + uniqueStrings := make(map[string]bool) + var uniqueSlice []string + for _, str := range strings { + if !uniqueStrings[str] { + uniqueStrings[str] = true + uniqueSlice = append(uniqueSlice, str) + } + } + return uniqueSlice +} + func GetRealSymbol(symbol string) string { if val, ok := renameMapping[strings.ToUpper(symbol)]; ok { return val diff --git a/vendor/github.com/status-im/status-go/services/wallet/token/token.go b/vendor/github.com/status-im/status-go/services/wallet/token/token.go index cbd167fe..8dbdb14e 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/token/token.go +++ b/vendor/github.com/status-im/status-go/services/wallet/token/token.go @@ -30,6 +30,7 @@ import ( "github.com/status-im/status-go/services/communitytokens" "github.com/status-im/status-go/services/utils" "github.com/status-im/status-go/services/wallet/async" + "github.com/status-im/status-go/services/wallet/bigint" "github.com/status-im/status-go/services/wallet/community" "github.com/status-im/status-go/services/wallet/walletevent" ) @@ -62,14 +63,10 @@ type Token struct { } type ReceivedToken struct { - Address common.Address `json:"address"` - Name string `json:"name"` - Symbol string `json:"symbol"` - Image string `json:"image,omitempty"` - ChainID uint64 `json:"chainId"` - CommunityData *community.Data `json:"community_data,omitempty"` - Balance *big.Int `json:"balance"` - TxHash common.Hash `json:"txHash"` + Token + Amount float64 `json:"amount"` + TxHash common.Hash `json:"txHash"` + IsFirst bool `json:"isFirst"` } func (t *Token) IsNative() bool { @@ -316,20 +313,20 @@ func (tm *Manager) FindOrCreateTokenByAddress(ctx context.Context, chainID uint6 return token } -func (tm *Manager) MarkAsPreviouslyOwnedToken(token *Token, owner common.Address) error { +func (tm *Manager) MarkAsPreviouslyOwnedToken(token *Token, owner common.Address) (bool, error) { if token == nil { - return errors.New("token is nil") + return false, errors.New("token is nil") } if (owner == common.Address{}) { - return errors.New("owner is nil") + return false, errors.New("owner is nil") } count := 0 err := tm.db.QueryRow(`SELECT EXISTS(SELECT 1 FROM token_balances WHERE user_address = ? AND token_address = ? AND chain_id = ?)`, owner.Hex(), token.Address.Hex(), token.ChainID).Scan(&count) if err != nil || count > 0 { - return err + return false, err } _, err = tm.db.Exec(`INSERT INTO token_balances(user_address,token_name,token_symbol,token_address,token_decimals,chain_id,token_decimals,raw_balance,balance) VALUES (?,?,?,?,?,?,?,?,?)`, owner.Hex(), token.Name, token.Symbol, token.Address.Hex(), token.Decimals, token.ChainID, 0, "0", "0") - return err + return true, err } func (tm *Manager) discoverTokenCommunityID(ctx context.Context, token *Token, address common.Address) { @@ -809,7 +806,7 @@ func (tm *Manager) GetBalancesAtByChain(parent context.Context, clients map[uint return response, group.Error() } -func (tm *Manager) SignalCommunityTokenReceived(address common.Address, txHash common.Hash, value *big.Int, t *Token) { +func (tm *Manager) SignalCommunityTokenReceived(address common.Address, txHash common.Hash, value *big.Int, t *Token, isFirst bool) { if tm.walletFeed == nil || t == nil || t.CommunityData == nil { return } @@ -826,15 +823,14 @@ func (tm *Manager) SignalCommunityTokenReceived(address common.Address, txHash c } } + floatAmount, _ := new(big.Float).Quo(new(big.Float).SetInt(value), new(big.Float).SetInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(t.Decimals)), nil))).Float64() + t.Image = tm.mediaServer.MakeCommunityTokenImagesURL(t.CommunityData.ID, t.ChainID, t.Symbol) + receivedToken := ReceivedToken{ - Address: t.Address, - Name: t.Name, - Symbol: t.Symbol, - Image: t.Image, - ChainID: t.ChainID, - CommunityData: t.CommunityData, - Balance: value, - TxHash: txHash, + Token: *t, + Amount: floatAmount, + TxHash: txHash, + IsFirst: isFirst, } encodedMessage, err := json.Marshal(receivedToken) @@ -869,3 +865,14 @@ func (tm *Manager) fillCommunityData(token *Token) error { } return nil } + +func (tm *Manager) GetTokenHistoricalBalance(account common.Address, chainID uint64, symbol string, timestamp int64) (*big.Int, error) { + var balance big.Int + err := tm.db.QueryRow("SELECT balance FROM balance_history WHERE currency = ? AND chain_id = ? AND address = ? AND timestamp < ? order by timestamp DESC LIMIT 1", symbol, chainID, account, timestamp).Scan((*bigint.SQLBigIntBytes)(&balance)) + if err == sql.ErrNoRows { + return nil, nil + } else if err != nil { + return nil, err + } + return &balance, nil +} diff --git a/vendor/github.com/status-im/status-go/services/wallet/token/tokenstore.go b/vendor/github.com/status-im/status-go/services/wallet/token/tokenstore.go index 7b5ed899..ab3965dc 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/token/tokenstore.go +++ b/vendor/github.com/status-im/status-go/services/wallet/token/tokenstore.go @@ -15,6 +15,7 @@ type store interface { var tokenPeg = map[string]string{ "aUSDC": "USD", "DAI": "USD", + "EUROC": "EUR", "SAI": "USD", "sUSD": "USD", "PAXG": "XAU", @@ -776,6 +777,14 @@ func newDefaultStore() *DefaultStore { ChainID: 1, TokenListID: "status", }, + &Token{ + Address: common.HexToAddress("0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c"), + Name: "Euro Coin", + Symbol: "EUROC", + Decimals: 6, + ChainID: 1, + TokenListID: "status", + }, &Token{ Address: common.HexToAddress("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), Name: "USD Coin", @@ -1729,7 +1738,23 @@ func newDefaultStore() *DefaultStore { TokenListID: "status", }, &Token{ - Address: common.HexToAddress("0x44a739916D41eC0226d98F83BE5364B69078DA41"), + Address: common.HexToAddress("0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4"), + Name: "Euro Coin", + Symbol: "EUROC", + Decimals: 6, + ChainID: 11155111, + TokenListID: "status", + }, + &Token{ + Address: common.HexToAddress("0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"), + Name: "USD Coin", + Symbol: "USDC", + Decimals: 6, + ChainID: 11155111, + TokenListID: "status", + }, + &Token{ + Address: common.HexToAddress("0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d"), Name: "USD Coin", Symbol: "USDC", Decimals: 6, @@ -1737,7 +1762,7 @@ func newDefaultStore() *DefaultStore { TokenListID: "status", }, &Token{ - Address: common.HexToAddress("0x44a739916D41eC0226d98F83BE5364B69078DA41"), + Address: common.HexToAddress("0x5fd84259d66Cd46123540766Be93DFE6D43130D7"), Name: "USD Coin", Symbol: "USDC", Decimals: 6, diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/block_ranges_sequential_dao.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/block_ranges_sequential_dao.go index a24279bf..5036ca59 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/block_ranges_sequential_dao.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/block_ranges_sequential_dao.go @@ -10,7 +10,8 @@ import ( ) type BlockRangeDAOer interface { - getBlockRange(chainID uint64, address common.Address) (blockRange *ethTokensBlockRanges, err error) + getBlockRange(chainID uint64, address common.Address) (blockRange *ethTokensBlockRanges, exists bool, err error) + getBlockRanges(chainID uint64, addresses []common.Address) (blockRanges map[common.Address]*ethTokensBlockRanges, err error) upsertRange(chainID uint64, account common.Address, newBlockRange *ethTokensBlockRanges) (err error) updateTokenRange(chainID uint64, account common.Address, newBlockRange *BlockRange) (err error) upsertEthRange(chainID uint64, account common.Address, newBlockRange *BlockRange) (err error) @@ -27,7 +28,7 @@ type BlockRange struct { } func NewBlockRange() *BlockRange { - return &BlockRange{Start: &big.Int{}, FirstKnown: &big.Int{}, LastKnown: &big.Int{}} + return &BlockRange{Start: nil, FirstKnown: nil, LastKnown: nil} } type ethTokensBlockRanges struct { @@ -40,8 +41,48 @@ func newEthTokensBlockRanges() *ethTokensBlockRanges { return ðTokensBlockRanges{eth: NewBlockRange(), tokens: NewBlockRange()} } -func (b *BlockRangeSequentialDAO) getBlockRange(chainID uint64, address common.Address) (blockRange *ethTokensBlockRanges, err error) { - query := `SELECT blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash FROM blocks_ranges_sequential +func scanRanges(rows *sql.Rows) (map[common.Address]*ethTokensBlockRanges, error) { + blockRanges := make(map[common.Address]*ethTokensBlockRanges) + for rows.Next() { + efk := &bigint.NilableSQLBigInt{} + elk := &bigint.NilableSQLBigInt{} + es := &bigint.NilableSQLBigInt{} + tfk := &bigint.NilableSQLBigInt{} + tlk := &bigint.NilableSQLBigInt{} + ts := &bigint.NilableSQLBigInt{} + addressB := []byte{} + blockRange := newEthTokensBlockRanges() + err := rows.Scan(&addressB, es, efk, elk, ts, tfk, tlk, &blockRange.balanceCheckHash) + if err != nil { + return nil, err + } + address := common.BytesToAddress(addressB) + blockRanges[address] = blockRange + + if !es.IsNil() { + blockRanges[address].eth.Start = big.NewInt(es.Int64()) + } + if !efk.IsNil() { + blockRanges[address].eth.FirstKnown = big.NewInt(efk.Int64()) + } + if !elk.IsNil() { + blockRanges[address].eth.LastKnown = big.NewInt(elk.Int64()) + } + if !ts.IsNil() { + blockRanges[address].tokens.Start = big.NewInt(ts.Int64()) + } + if !tfk.IsNil() { + blockRanges[address].tokens.FirstKnown = big.NewInt(tfk.Int64()) + } + if !tlk.IsNil() { + blockRanges[address].tokens.LastKnown = big.NewInt(tlk.Int64()) + } + } + return blockRanges, nil +} + +func (b *BlockRangeSequentialDAO) getBlockRange(chainID uint64, address common.Address) (blockRange *ethTokensBlockRanges, exists bool, err error) { + query := `SELECT address, blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash FROM blocks_ranges_sequential WHERE address = ? AND network_id = ?` @@ -51,25 +92,45 @@ func (b *BlockRangeSequentialDAO) getBlockRange(chainID uint64, address common.A } defer rows.Close() - blockRange = ðTokensBlockRanges{} - if rows.Next() { - blockRange = newEthTokensBlockRanges() - err = rows.Scan((*bigint.SQLBigInt)(blockRange.eth.Start), - (*bigint.SQLBigInt)(blockRange.eth.FirstKnown), - (*bigint.SQLBigInt)(blockRange.eth.LastKnown), - (*bigint.SQLBigInt)(blockRange.tokens.Start), - (*bigint.SQLBigInt)(blockRange.tokens.FirstKnown), - (*bigint.SQLBigInt)(blockRange.tokens.LastKnown), - &blockRange.balanceCheckHash, - ) - if err != nil { - return nil, err - } - - return blockRange, nil + ranges, err := scanRanges(rows) + if err != nil { + return nil, false, err } - return blockRange, nil + blockRange, exists = ranges[address] + if !exists { + blockRange = newEthTokensBlockRanges() + } + + return blockRange, exists, nil +} + +func (b *BlockRangeSequentialDAO) getBlockRanges(chainID uint64, addresses []common.Address) (blockRanges map[common.Address]*ethTokensBlockRanges, err error) { + blockRanges = make(map[common.Address]*ethTokensBlockRanges) + addressesPlaceholder := "" + for i := 0; i < len(addresses); i++ { + addressesPlaceholder += "?" + if i < len(addresses)-1 { + addressesPlaceholder += "," + } + } + + query := "SELECT address, blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash FROM blocks_ranges_sequential WHERE address IN (" + + addressesPlaceholder + ") AND network_id = ?" + + params := []interface{}{} + for _, address := range addresses { + params = append(params, address) + } + params = append(params, chainID) + + rows, err := b.db.Query(query, params...) + if err != nil { + return + } + defer rows.Close() + + return scanRanges(rows) } func (b *BlockRangeSequentialDAO) deleteRange(account common.Address) error { @@ -85,7 +146,7 @@ func (b *BlockRangeSequentialDAO) deleteRange(account common.Address) error { } func (b *BlockRangeSequentialDAO) upsertRange(chainID uint64, account common.Address, newBlockRange *ethTokensBlockRanges) (err error) { - ethTokensBlockRange, err := b.getBlockRange(chainID, account) + ethTokensBlockRange, exists, err := b.getBlockRange(chainID, account) if err != nil { return err } @@ -93,18 +154,38 @@ func (b *BlockRangeSequentialDAO) upsertRange(chainID uint64, account common.Add ethBlockRange := prepareUpdatedBlockRange(ethTokensBlockRange.eth, newBlockRange.eth) tokensBlockRange := prepareUpdatedBlockRange(ethTokensBlockRange.tokens, newBlockRange.tokens) - log.Debug("update eth and tokens blocks range", "account", account, "chainID", chainID, - "eth.start", ethBlockRange.Start, "eth.first", ethBlockRange.FirstKnown, "eth.last", ethBlockRange.LastKnown, - "tokens.start", tokensBlockRange.Start, "tokens.first", ethBlockRange.FirstKnown, "eth.last", ethBlockRange.LastKnown, "hash", newBlockRange.balanceCheckHash) + log.Debug("upsert eth and tokens blocks range", + "account", account, "chainID", chainID, + "eth.start", ethBlockRange.Start, + "eth.first", ethBlockRange.FirstKnown, + "eth.last", ethBlockRange.LastKnown, + "tokens.first", tokensBlockRange.FirstKnown, + "tokens.last", tokensBlockRange.LastKnown, + "hash", newBlockRange.balanceCheckHash) + + var query *sql.Stmt + + if exists { + query, err = b.db.Prepare(`UPDATE blocks_ranges_sequential SET + blk_start = ?, + blk_first = ?, + blk_last = ?, + token_blk_start = ?, + token_blk_first = ?, + token_blk_last = ?, + balance_check_hash = ? + WHERE network_id = ? AND address = ?`) + + } else { + query, err = b.db.Prepare(`INSERT INTO blocks_ranges_sequential + (blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash, network_id, address) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`) + } - upsert, err := b.db.Prepare(`REPLACE INTO blocks_ranges_sequential - (network_id, address, blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`) if err != nil { return err } - - _, err = upsert.Exec(chainID, account, (*bigint.SQLBigInt)(ethBlockRange.Start), (*bigint.SQLBigInt)(ethBlockRange.FirstKnown), (*bigint.SQLBigInt)(ethBlockRange.LastKnown), - (*bigint.SQLBigInt)(tokensBlockRange.Start), (*bigint.SQLBigInt)(tokensBlockRange.FirstKnown), (*bigint.SQLBigInt)(tokensBlockRange.LastKnown), newBlockRange.balanceCheckHash) + _, err = query.Exec((*bigint.SQLBigInt)(ethBlockRange.Start), (*bigint.SQLBigInt)(ethBlockRange.FirstKnown), (*bigint.SQLBigInt)(ethBlockRange.LastKnown), + (*bigint.SQLBigInt)(tokensBlockRange.Start), (*bigint.SQLBigInt)(tokensBlockRange.FirstKnown), (*bigint.SQLBigInt)(tokensBlockRange.LastKnown), newBlockRange.balanceCheckHash, chainID, account) return err } @@ -112,28 +193,36 @@ func (b *BlockRangeSequentialDAO) upsertRange(chainID uint64, account common.Add func (b *BlockRangeSequentialDAO) upsertEthRange(chainID uint64, account common.Address, newBlockRange *BlockRange) (err error) { - ethTokensBlockRange, err := b.getBlockRange(chainID, account) + ethTokensBlockRange, exists, err := b.getBlockRange(chainID, account) if err != nil { return err } blockRange := prepareUpdatedBlockRange(ethTokensBlockRange.eth, newBlockRange) - log.Debug("update eth blocks range", "account", account, "chainID", chainID, - "start", blockRange.Start, "first", blockRange.FirstKnown, "last", blockRange.LastKnown, "old hash", ethTokensBlockRange.balanceCheckHash) + log.Debug("upsert eth blocks range", "account", account, "chainID", chainID, + "start", blockRange.Start, + "first", blockRange.FirstKnown, + "last", blockRange.LastKnown, + "old hash", ethTokensBlockRange.balanceCheckHash) + + var query *sql.Stmt + + if exists { + query, err = b.db.Prepare(`UPDATE blocks_ranges_sequential SET + blk_start = ?, + blk_first = ?, + blk_last = ? + WHERE network_id = ? AND address = ?`) + } else { + query, err = b.db.Prepare(`INSERT INTO blocks_ranges_sequential + (blk_start, blk_first, blk_last, network_id, address) VALUES (?, ?, ?, ?, ?)`) + } - upsert, err := b.db.Prepare(`REPLACE INTO blocks_ranges_sequential - (network_id, address, blk_start, blk_first, blk_last, token_blk_start, token_blk_first, token_blk_last, balance_check_hash) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`) if err != nil { return err } - - if ethTokensBlockRange.tokens == nil { - ethTokensBlockRange.tokens = NewBlockRange() - } - - _, err = upsert.Exec(chainID, account, (*bigint.SQLBigInt)(blockRange.Start), (*bigint.SQLBigInt)(blockRange.FirstKnown), (*bigint.SQLBigInt)(blockRange.LastKnown), - (*bigint.SQLBigInt)(ethTokensBlockRange.tokens.Start), (*bigint.SQLBigInt)(ethTokensBlockRange.tokens.FirstKnown), (*bigint.SQLBigInt)(ethTokensBlockRange.tokens.LastKnown), ethTokensBlockRange.balanceCheckHash) + _, err = query.Exec((*bigint.SQLBigInt)(blockRange.Start), (*bigint.SQLBigInt)(blockRange.FirstKnown), (*bigint.SQLBigInt)(blockRange.LastKnown), chainID, account) return err } @@ -141,15 +230,16 @@ func (b *BlockRangeSequentialDAO) upsertEthRange(chainID uint64, account common. func (b *BlockRangeSequentialDAO) updateTokenRange(chainID uint64, account common.Address, newBlockRange *BlockRange) (err error) { - ethTokensBlockRange, err := b.getBlockRange(chainID, account) + ethTokensBlockRange, _, err := b.getBlockRange(chainID, account) if err != nil { return err } blockRange := prepareUpdatedBlockRange(ethTokensBlockRange.tokens, newBlockRange) - log.Debug("update tokens blocks range", "account", account, "chainID", chainID, - "start", blockRange.Start, "first", blockRange.FirstKnown, "last", blockRange.LastKnown, "old hash", ethTokensBlockRange.balanceCheckHash) + log.Debug("update tokens blocks range", + "first", blockRange.FirstKnown, + "last", blockRange.LastKnown) update, err := b.db.Prepare(`UPDATE blocks_ranges_sequential SET token_blk_start = ?, token_blk_first = ?, token_blk_last = ? WHERE network_id = ? AND address = ?`) if err != nil { @@ -163,31 +253,26 @@ func (b *BlockRangeSequentialDAO) updateTokenRange(chainID uint64, account commo } func prepareUpdatedBlockRange(blockRange, newBlockRange *BlockRange) *BlockRange { - // Update existing range - if blockRange != nil { - if newBlockRange != nil { - // Ovewrite start block if there was not any or if new one is older, because it can be precised only - // to a greater value, because no history can be before some block that is considered - // as a start of history, but due to concurrent block range checks, a newer greater block - // can be found that matches criteria of a start block (nonce is zero, balances are equal) - if newBlockRange.Start != nil && (blockRange.Start == nil || blockRange.Start.Cmp(newBlockRange.Start) < 0) { - blockRange.Start = newBlockRange.Start - } - - // Overwrite first known block if there was not any or if new one is older - if (blockRange.FirstKnown == nil && newBlockRange.FirstKnown != nil) || - (blockRange.FirstKnown != nil && newBlockRange.FirstKnown != nil && blockRange.FirstKnown.Cmp(newBlockRange.FirstKnown) > 0) { - blockRange.FirstKnown = newBlockRange.FirstKnown - } - - // Overwrite last known block if there was not any or if new one is newer - if (blockRange.LastKnown == nil && newBlockRange.LastKnown != nil) || - (blockRange.LastKnown != nil && newBlockRange.LastKnown != nil && blockRange.LastKnown.Cmp(newBlockRange.LastKnown) < 0) { - blockRange.LastKnown = newBlockRange.LastKnown - } + if newBlockRange != nil { + // Ovewrite start block if there was not any or if new one is older, because it can be precised only + // to a greater value, because no history can be before some block that is considered + // as a start of history, but due to concurrent block range checks, a newer greater block + // can be found that matches criteria of a start block (nonce is zero, balances are equal) + if newBlockRange.Start != nil && (blockRange.Start == nil || blockRange.Start.Cmp(newBlockRange.Start) < 0) { + blockRange.Start = newBlockRange.Start + } + + // Overwrite first known block if there was not any or if new one is older + if (blockRange.FirstKnown == nil && newBlockRange.FirstKnown != nil) || + (blockRange.FirstKnown != nil && newBlockRange.FirstKnown != nil && blockRange.FirstKnown.Cmp(newBlockRange.FirstKnown) > 0) { + blockRange.FirstKnown = newBlockRange.FirstKnown + } + + // Overwrite last known block if there was not any or if new one is newer + if (blockRange.LastKnown == nil && newBlockRange.LastKnown != nil) || + (blockRange.LastKnown != nil && newBlockRange.LastKnown != nil && blockRange.LastKnown.Cmp(newBlockRange.LastKnown) < 0) { + blockRange.LastKnown = newBlockRange.LastKnown } - } else { - blockRange = newBlockRange } return blockRange diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/commands.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/commands.go index 49864667..27671719 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/commands.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/commands.go @@ -322,6 +322,20 @@ func (c *transfersCommand) saveAndConfirmPending(allTransfers []Transfer, blockN return resErr } +func externalTransactionOrError(err error, mTID int64) bool { + if err == sql.ErrNoRows { + // External transaction downloaded, ignore it + return true + } else if err != nil { + log.Warn("GetOwnedMultiTransactionID", "error", err) + return true + } else if mTID <= 0 { + // Existing external transaction, ignore it + return true + } + return false +} + func (c *transfersCommand) confirmPendingTransactions(tx *sql.Tx, allTransfers []Transfer) (notifyFunctions []func()) { notifyFunctions = make([]func(), 0) @@ -335,16 +349,11 @@ func (c *transfersCommand) confirmPendingTransactions(tx *sql.Tx, allTransfers [ continue } else { // Outside transaction, already confirmed by another duplicate or not yet downloaded - existingMTID, err := GetOwnedMultiTransactionID(tx, chainID, tr.ID, tr.Address) - if err == sql.ErrNoRows || existingMTID == 0 { - // Outside transaction, ignore it - continue - } else if err != nil { - log.Warn("GetOwnedMultiTransactionID", "error", err) + existingMTID, err := GetOwnedMultiTransactionID(tx, chainID, txHash, tr.Address) + if externalTransactionOrError(err, existingMTID) { continue } mTID = w_common.NewAndSet(existingMTID) - } } else if err != nil { log.Warn("GetOwnedPendingStatus", "error", err) @@ -352,7 +361,7 @@ func (c *transfersCommand) confirmPendingTransactions(tx *sql.Tx, allTransfers [ } if mTID != nil { - allTransfers[i].MultiTransactionID = MultiTransactionIDType(*mTID) + allTransfers[i].MultiTransactionID = w_common.MultiTransactionIDType(*mTID) } if txType != nil && *txType == transactions.WalletTransfer { notify, err := c.pendingTxManager.DeleteBySQLTx(tx, chainID, txHash) @@ -366,7 +375,7 @@ func (c *transfersCommand) confirmPendingTransactions(tx *sql.Tx, allTransfers [ } // Mark all subTxs of a given Tx with the same multiTxID -func setMultiTxID(tx Transaction, multiTxID MultiTransactionIDType) { +func setMultiTxID(tx Transaction, multiTxID w_common.MultiTransactionIDType) { for _, subTx := range tx { subTx.MultiTransactionID = multiTxID } @@ -378,11 +387,11 @@ func (c *transfersCommand) markMultiTxTokensAsPreviouslyOwned(ctx context.Contex } if len(multiTransaction.ToAsset) > 0 && multiTransaction.ToNetworkID > 0 { token := c.tokenManager.GetToken(multiTransaction.ToNetworkID, multiTransaction.ToAsset) - _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, ownerAddress) + _, _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, ownerAddress) } if len(multiTransaction.FromAsset) > 0 && multiTransaction.FromNetworkID > 0 { token := c.tokenManager.GetToken(multiTransaction.FromNetworkID, multiTransaction.FromAsset) - _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, ownerAddress) + _, _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, ownerAddress) } } @@ -422,7 +431,7 @@ func (c *transfersCommand) checkAndProcessBridgeMultiTx(ctx context.Context, tx } if multiTransaction != nil { - setMultiTxID(tx, MultiTransactionIDType(multiTransaction.ID)) + setMultiTxID(tx, multiTransaction.ID) c.markMultiTxTokensAsPreviouslyOwned(ctx, multiTransaction, subTx.Address) return true, nil } @@ -439,11 +448,12 @@ func (c *transfersCommand) processUnknownErc20CommunityTransactions(ctx context. // Find token in db or if this is a community token, find its metadata token := c.tokenManager.FindOrCreateTokenByAddress(ctx, tx.NetworkID, *tx.Transaction.To()) if token != nil { + isFirst := false if token.Verified || token.CommunityData != nil { - _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, tx.Address) + isFirst, _ = c.tokenManager.MarkAsPreviouslyOwnedToken(token, tx.Address) } if token.CommunityData != nil { - go c.tokenManager.SignalCommunityTokenReceived(tx.Address, tx.ID, tx.Transaction.Value(), token) + go c.tokenManager.SignalCommunityTokenReceived(tx.Address, tx.ID, tx.TokenValue, token, isFirst) } } } diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/commands_sequential.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/commands_sequential.go index ba9bbad4..30f38f16 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/commands_sequential.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/commands_sequential.go @@ -67,7 +67,7 @@ func (c *findNewBlocksCommand) detectTransfers(parent context.Context, accounts tokenAddresses = append(tokenAddresses, token.Address) } } - log.Info("findNewBlocksCommand detectTransfers", "cnt", len(tokenAddresses), "addresses", tokenAddresses) + log.Debug("findNewBlocksCommand detectTransfers", "cnt", len(tokenAddresses)) ctx, cancel := context.WithTimeout(parent, requestTimeout) defer cancel() @@ -79,22 +79,12 @@ func (c *findNewBlocksCommand) detectTransfers(parent context.Context, accounts addressesToCheck := []common.Address{} for idx, account := range accounts { - blockRange, err := c.blockRangeDAO.getBlockRange(c.chainClient.NetworkID(), account) + blockRange, _, err := c.blockRangeDAO.getBlockRange(c.chainClient.NetworkID(), account) if err != nil { - log.Error("findNewBlocksCommand can't block range", "error", err, "account", account, "chain", c.chainClient.NetworkID()) + log.Error("findNewBlocksCommand can't get block range", "error", err, "account", account, "chain", c.chainClient.NetworkID()) return nil, nil, err } - if blockRange.eth == nil { - blockRange.eth = NewBlockRange() - blockRange.tokens = NewBlockRange() - } - if blockRange.eth.FirstKnown == nil { - blockRange.eth.FirstKnown = blockNum - } - if blockRange.eth.LastKnown == nil { - blockRange.eth.LastKnown = blockNum - } checkHash := common.BytesToHash(hashes[idx][:]) log.Debug("findNewBlocksCommand comparing hashes", "account", account, "network", c.chainClient.NetworkID(), "old hash", blockRange.balanceCheckHash, "new hash", checkHash.String()) if checkHash.String() != blockRange.balanceCheckHash { @@ -118,7 +108,7 @@ func (c *findNewBlocksCommand) detectNonceChange(parent context.Context, to *big for _, account := range accounts { var oldNonce *int64 - blockRange, err := c.blockRangeDAO.getBlockRange(c.chainClient.NetworkID(), account) + blockRange, _, err := c.blockRangeDAO.getBlockRange(c.chainClient.NetworkID(), account) if err != nil { log.Error("findNewBlocksCommand can't get block range", "error", err, "account", account, "chain", c.chainClient.NetworkID()) return nil, err @@ -126,12 +116,16 @@ func (c *findNewBlocksCommand) detectNonceChange(parent context.Context, to *big lastNonceInfo, ok := c.lastNonces[account] if !ok || lastNonceInfo.blockNumber.Cmp(blockRange.eth.LastKnown) != 0 { - log.Info("Fetching old nonce", "at", blockRange.eth.LastKnown, "acc", account) - - oldNonce, err = c.balanceCacher.NonceAt(parent, c.chainClient, account, blockRange.eth.LastKnown) - if err != nil { - log.Error("findNewBlocksCommand can't get nonce", "error", err, "account", account, "chain", c.chainClient.NetworkID()) - return nil, err + log.Debug("Fetching old nonce", "at", blockRange.eth.LastKnown, "acc", account) + if blockRange.eth.LastKnown == nil { + blockRange.eth.LastKnown = big.NewInt(0) + oldNonce = new(int64) // At 0 block nonce is 0 + } else { + oldNonce, err = c.balanceCacher.NonceAt(parent, c.chainClient, account, blockRange.eth.LastKnown) + if err != nil { + log.Error("findNewBlocksCommand can't get nonce", "error", err, "account", account, "chain", c.chainClient.NetworkID()) + return nil, err + } } } else { oldNonce = lastNonceInfo.nonce @@ -143,7 +137,7 @@ func (c *findNewBlocksCommand) detectNonceChange(parent context.Context, to *big return nil, err } - log.Info("Comparing nonces", "oldNonce", *oldNonce, "newNonce", *newNonce, "to", to, "acc", account) + log.Debug("Comparing nonces", "oldNonce", *oldNonce, "newNonce", *newNonce, "to", to, "acc", account) if *newNonce != *oldNonce { addressesWithChange[account] = blockRange.eth.LastKnown @@ -207,7 +201,7 @@ func (c *findNewBlocksCommand) Run(parent context.Context) error { c.blockChainState.SetLastBlockNumber(c.chainClient.NetworkID(), headNum.Uint64()) if len(accountsWithDetectedChanges) != 0 { - log.Debug("findNewBlocksCommand detected accounts with changes, proceeding", "accounts", accountsWithDetectedChanges) + log.Debug("findNewBlocksCommand detected accounts with changes, proceeding", "accounts", accountsWithDetectedChanges, "from", c.fromBlockNumber) err = c.findAndSaveEthBlocks(parent, c.fromBlockNumber, headNum, accountsToCheck) if err != nil { return err @@ -241,10 +235,15 @@ func (c *findNewBlocksCommand) Run(parent context.Context) error { } if len(accountsWithDetectedChanges) != 0 || c.iteration%c.logsCheckIntervalIterations == 0 { - err = c.findAndSaveTokenBlocks(parent, c.fromBlockNumber, headNum) + from := c.fromBlockNumber + if c.logsCheckLastKnownBlock != nil { + from = c.logsCheckLastKnownBlock + } + err = c.findAndSaveTokenBlocks(parent, from, headNum) if err != nil { return err } + c.logsCheckLastKnownBlock = headNum } c.fromBlockNumber = headNum c.iteration++ @@ -335,11 +334,11 @@ func (c *findNewBlocksCommand) findAndSaveTokenBlocks(parent context.Context, fr return c.markTokenBlockRangeChecked(c.accounts, fromNum, headNum) } -func (c *findNewBlocksCommand) markTokenBlockRangeChecked(accounts []common.Address, from, to *big.Int) error { +func (c *findBlocksCommand) markTokenBlockRangeChecked(accounts []common.Address, from, to *big.Int) error { log.Debug("markTokenBlockRangeChecked", "chain", c.chainClient.NetworkID(), "from", from.Uint64(), "to", to.Uint64()) for _, account := range accounts { - err := c.blockRangeDAO.updateTokenRange(c.chainClient.NetworkID(), account, &BlockRange{LastKnown: to}) + err := c.blockRangeDAO.updateTokenRange(c.chainClient.NetworkID(), account, &BlockRange{FirstKnown: from, LastKnown: to}) if err != nil { log.Error("findNewBlocksCommand upsertTokenRange", "error", err) return err @@ -435,6 +434,7 @@ type findBlocksCommand struct { transactionManager *TransactionManager tokenManager *token.Manager fromBlockNumber *big.Int + logsCheckLastKnownBlock *big.Int toBlockNumber *big.Int blocksLoadedCh chan<- []*DBHeader defaultNodeBlockChunkSize int @@ -529,7 +529,7 @@ func (c *findBlocksCommand) ERC20ScanByBalance(parent context.Context, account c } func (c *findBlocksCommand) checkERC20Tail(parent context.Context, account common.Address) ([]*DBHeader, error) { - log.Info("checkERC20Tail", "account", account, "to block", c.startBlockNumber, "from", c.resFromBlock.Number) + log.Debug("checkERC20Tail", "account", account, "to block", c.startBlockNumber, "from", c.resFromBlock.Number) tokens, err := c.tokenManager.GetTokens(c.chainClient.NetworkID()) if err != nil { return nil, err @@ -650,6 +650,10 @@ func (c *findBlocksCommand) Run(parent context.Context) (err error) { } if c.reachedETHHistoryStart { + err = c.markTokenBlockRangeChecked([]common.Address{account}, big.NewInt(0), to) + if err != nil { + break + } log.Debug("findBlocksCommand reached first ETH transfer and checked erc20 tail", "chain", c.chainClient.NetworkID(), "account", account) break } @@ -659,6 +663,11 @@ func (c *findBlocksCommand) Run(parent context.Context) (err error) { break } + err = c.markTokenBlockRangeChecked([]common.Address{account}, c.resFromBlock.Number, to) + if err != nil { + break + } + // if we have found first ETH block and we have not reached the start of ETH history yet if c.startBlockNumber != nil && c.fromBlockNumber.Cmp(from) == -1 { log.Debug("ERC20 tail should be checked", "initial from", c.fromBlockNumber, "actual from", from, "first ETH block", c.startBlockNumber) @@ -746,7 +755,7 @@ func (c *findBlocksCommand) checkRange(parent context.Context, from *big.Int, to func loadBlockRangeInfo(chainID uint64, account common.Address, blockDAO BlockRangeDAOer) ( *ethTokensBlockRanges, error) { - blockRange, err := blockDAO.getBlockRange(chainID, account) + blockRange, _, err := blockDAO.getBlockRange(chainID, account) if err != nil { log.Error("failed to load block ranges from database", "chain", chainID, "account", account, "error", err) @@ -759,8 +768,9 @@ func loadBlockRangeInfo(chainID uint64, account common.Address, blockDAO BlockRa // Returns if all blocks are loaded, which means that start block (beginning of account history) // has been found and all block headers saved to the DB func areAllHistoryBlocksLoaded(blockInfo *BlockRange) bool { - if blockInfo != nil && blockInfo.FirstKnown != nil && blockInfo.Start != nil && - blockInfo.Start.Cmp(blockInfo.FirstKnown) >= 0 { + if blockInfo != nil && blockInfo.FirstKnown != nil && + ((blockInfo.Start != nil && blockInfo.Start.Cmp(blockInfo.FirstKnown) >= 0) || + blockInfo.FirstKnown.Cmp(zero) == 0) { return true } @@ -770,7 +780,7 @@ func areAllHistoryBlocksLoaded(blockInfo *BlockRange) bool { func areAllHistoryBlocksLoadedForAddress(blockRangeDAO BlockRangeDAOer, chainID uint64, address common.Address) (bool, error) { - blockRange, err := blockRangeDAO.getBlockRange(chainID, address) + blockRange, _, err := blockRangeDAO.getBlockRange(chainID, address) if err != nil { log.Error("findBlocksCommand getBlockRange", "error", err) return false, err @@ -964,12 +974,33 @@ func (c *loadBlocksAndTransfersCommand) Run(parent context.Context) (err error) finiteGroup.Wait() }() - fromNum := big.NewInt(0) - headNum, err := getHeadBlockNumber(ctx, c.chainClient) + blockRanges, err := c.blockRangeDAO.getBlockRanges(c.chainClient.NetworkID(), c.accounts) if err != nil { return err } + firstScan := false + var headNum *big.Int + for _, address := range c.accounts { + blockRange, ok := blockRanges[address] + if !ok || blockRange.tokens.LastKnown == nil { + firstScan = true + break + } + + if headNum == nil || blockRange.tokens.LastKnown.Cmp(headNum) < 0 { + headNum = blockRange.tokens.LastKnown + } + } + + fromNum := big.NewInt(0) + if firstScan { + headNum, err = getHeadBlockNumber(ctx, c.chainClient) + if err != nil { + return err + } + } + // It will start loadTransfersCommand which will run until all transfers from DB are loaded or any one failed to load err = c.startFetchingTransfersForLoadedBlocks(finiteGroup) if err != nil { @@ -1046,14 +1077,13 @@ func (c *loadBlocksAndTransfersCommand) fetchHistoryBlocksForAccount(group *asyn } ranges := [][]*big.Int{} - // There are 2 history intervals: // 1) from 0 to FirstKnown // 2) from LastKnown to `toNum`` (head) // If we blockRange is nil, we need to load all blocks from `fromNum` to `toNum` // As current implementation checks ETH first then tokens, tokens ranges maybe behind ETH ranges in // cases when block searching was interrupted, so we use tokens ranges - if blockRange != nil && blockRange.tokens != nil { + if blockRange.tokens.LastKnown != nil || blockRange.tokens.FirstKnown != nil { if blockRange.tokens.LastKnown != nil && toNum.Cmp(blockRange.tokens.LastKnown) > 0 { ranges = append(ranges, []*big.Int{blockRange.tokens.LastKnown, toNum}) } @@ -1083,6 +1113,7 @@ func (c *loadBlocksAndTransfersCommand) fetchHistoryBlocksForAccount(group *asyn } for _, rangeItem := range ranges { + log.Debug("range item", "r", rangeItem, "n", c.chainClient.NetworkID(), "a", account) fbc := &findBlocksCommand{ accounts: []common.Address{account}, db: c.db, diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/concurrent.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/concurrent.go index 7183eff0..78bac025 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/concurrent.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/concurrent.go @@ -183,11 +183,11 @@ func checkRangesWithStartBlock(parent context.Context, client balance.Reader, ca return err } // Obtain block hash from first transaction - firstTransaction, err := client.FullTransactionByBlockNumberAndIndex(ctx, to, 0) + blockHash, err := client.CallBlockHashByTransaction(ctx, to, 0) if err != nil { return err } - c.PushHeader(toDBHeader(header, *firstTransaction.BlockHash, account)) + c.PushHeader(toDBHeader(header, blockHash, account)) return nil } mid := new(big.Int).Add(from, to) diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/controller.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/controller.go index 4ac717d5..14d1051d 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/controller.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/controller.go @@ -150,8 +150,8 @@ func (c *Controller) startAccountWatcher(chainIDs []uint64) { c.accWatcher = accountsevent.NewWatcher(c.accountsDB, c.accountFeed, func(changedAddresses []common.Address, eventType accountsevent.EventType, currentAddresses []common.Address) { c.onAccountsChanged(changedAddresses, eventType, currentAddresses, chainIDs) }) - c.accWatcher.Start() } + c.accWatcher.Start() } func (c *Controller) onAccountsChanged(changedAddresses []common.Address, eventType accountsevent.EventType, currentAddresses []common.Address, chainIDs []uint64) { diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/database.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/database.go index b4445203..6ee58efa 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/database.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/database.go @@ -444,7 +444,7 @@ type transferDBFields struct { log *types.Log transferType w_common.Type baseGasFees string - multiTransactionID MultiTransactionIDType + multiTransactionID w_common.MultiTransactionIDType receiptStatus *uint64 receiptType *uint8 txHash *common.Hash @@ -492,7 +492,9 @@ func updateOrInsertTransfersDBFields(creator statementCreator, transfers []trans log.Error("can't save transfer", "b-hash", t.blockHash, "b-n", t.blockNumber, "a", t.address, "h", t.id) return err } + } + for _, t := range transfers { err = removeGasOnlyEthTransfer(creator, t) if err != nil { log.Error("can't remove gas only eth transfer", "b-hash", t.blockHash, "b-n", t.blockNumber, "a", t.address, "h", t.id, "err", err) @@ -503,18 +505,40 @@ func updateOrInsertTransfersDBFields(creator statementCreator, transfers []trans } func removeGasOnlyEthTransfer(creator statementCreator, t transferDBFields) error { - if t.transferType != w_common.EthTransfer { - query, err := creator.Prepare(`DELETE FROM transfers WHERE tx_hash = ? AND address = ? AND network_id = ? - AND account_nonce = ? AND type = 'eth' AND amount_padded128hex = '00000000000000000000000000000000'`) + if t.transferType == w_common.EthTransfer { + countQuery, err := creator.Prepare(`SELECT COUNT(*) FROM transfers WHERE tx_hash = ?`) + if err != nil { + return err + } + defer countQuery.Close() + + var count int + err = countQuery.QueryRow(t.txHash).Scan(&count) if err != nil { return err } - _, err = query.Exec(t.txHash, t.address, t.chainID, t.txNonce) - if err != nil { - return err + // If there's only one (or none), return without deleting + if count <= 1 { + log.Debug("Only one or no transfer found with the same tx_hash, skipping deletion.") + return nil } } + query, err := creator.Prepare(`DELETE FROM transfers WHERE tx_hash = ? AND address = ? AND network_id = ? AND account_nonce = ? AND type = 'eth' AND amount_padded128hex = '00000000000000000000000000000000'`) + if err != nil { + return err + } + defer query.Close() + + res, err := query.Exec(t.txHash, t.address, t.chainID, t.txNonce) + if err != nil { + return err + } + count, err := res.RowsAffected() + if err != nil { + return err + } + log.Debug("removeGasOnlyEthTransfer row deleted ", count) return nil } @@ -538,8 +562,8 @@ func markBlocksAsLoaded(chainID uint64, creator statementCreator, address common } // GetOwnedMultiTransactionID returns sql.ErrNoRows if no transaction is found for the given identity -func GetOwnedMultiTransactionID(tx *sql.Tx, chainID w_common.ChainID, id common.Hash, address common.Address) (mTID int64, err error) { - row := tx.QueryRow(`SELECT COALESCE(multi_transaction_id, 0) FROM transfers WHERE network_id = ? AND hash = ? AND address = ?`, chainID, id, address) +func GetOwnedMultiTransactionID(tx *sql.Tx, chainID w_common.ChainID, hash common.Hash, address common.Address) (mTID int64, err error) { + row := tx.QueryRow(`SELECT COALESCE(multi_transaction_id, 0) FROM transfers WHERE network_id = ? AND tx_hash = ? AND address = ?`, chainID, hash, address) err = row.Scan(&mTID) if err != nil { return 0, err diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/downloader.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/downloader.go index 75e6cc51..7aca3036 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/downloader.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/downloader.go @@ -63,7 +63,7 @@ type Transfer struct { TokenValue *big.Int `json:"tokenValue"` BaseGasFees string // Internal field that is used to track multi-transaction transfers. - MultiTransactionID MultiTransactionIDType `json:"multi_transaction_id"` + MultiTransactionID w_common.MultiTransactionIDType `json:"multi_transaction_id"` } // ETHDownloader downloads regular eth transfers and tokens transfers. @@ -109,7 +109,7 @@ func getTransferByHash(ctx context.Context, client chain.ClientInterface, signer return nil, err } - baseGasFee, err := client.GetBaseFeeFromBlock(big.NewInt(int64(transactionLog.BlockNumber))) + baseGasFee, err := client.GetBaseFeeFromBlock(ctx, big.NewInt(int64(transactionLog.BlockNumber))) if err != nil { return nil, err } @@ -288,7 +288,7 @@ func (d *ETHDownloader) getTransfersInBlock(ctx context.Context, blk *types.Bloc Receipt: receipt, Log: nil, BaseGasFees: blk.BaseFee().String(), - MultiTransactionID: NoMultiTransactionID}) + MultiTransactionID: w_common.NoMultiTransactionID}) } } } @@ -416,7 +416,7 @@ func (d *ETHDownloader) subTransactionsFromPreloaded(preloadedTx *PreloadedTrans Transaction: tx, Receipt: receipt, Timestamp: blk.Time(), - MultiTransactionID: NoMultiTransactionID, + MultiTransactionID: w_common.NoMultiTransactionID, } rst = append(rst, transfer) @@ -451,7 +451,7 @@ func (d *ETHDownloader) subTransactionsFromTransactionData(address, from common. Transaction: tx, Receipt: receipt, Timestamp: blk.Time(), - MultiTransactionID: NoMultiTransactionID, + MultiTransactionID: w_common.NoMultiTransactionID, } rst = append(rst, transfer) diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/testutils.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/testutils.go index a6f5819e..dbe90e9c 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/testutils.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/testutils.go @@ -27,7 +27,7 @@ type TestTransaction struct { Success bool Nonce uint64 Contract eth_common.Address - MultiTransactionID MultiTransactionIDType + MultiTransactionID common.MultiTransactionIDType } type TestTransfer struct { @@ -38,7 +38,7 @@ type TestTransfer struct { } type TestMultiTransaction struct { - MultiTransactionID MultiTransactionIDType + MultiTransactionID common.MultiTransactionIDType MultiTransactionType MultiTransactionType FromAddress eth_common.Address ToAddress eth_common.Address @@ -78,7 +78,7 @@ func generateTestTransaction(seed int) TestTransaction { Nonce: uint64(seed), // In practice this is last20Bytes(Keccak256(RLP(From, nonce))) Contract: eth_common.HexToAddress(fmt.Sprintf("0x4%d", seed)), - MultiTransactionID: NoMultiTransactionID, + MultiTransactionID: common.NoMultiTransactionID, } } @@ -161,6 +161,11 @@ var TestCollectibles = []TestCollectible{ TokenID: big.NewInt(1), ChainID: 1, }, + TestCollectible{ // TokenID (big.Int) value 0 might be problematic if not handled properly + TokenAddress: eth_common.HexToAddress("0x97a04fda4d97c6e3547d66b572e29f4a4ff4ABCD"), + TokenID: big.NewInt(0), + ChainID: 420, + }, TestCollectible{ TokenAddress: eth_common.HexToAddress("0x1dea7a3e04849840c0eb15fd26a55f6c40c4a69b"), TokenID: big.NewInt(11), @@ -362,7 +367,7 @@ func InsertTestPendingTransaction(tb testing.TB, db *sql.DB, tr *TestTransfer) { require.NoError(tb, err) } -func InsertTestMultiTransaction(tb testing.TB, db *sql.DB, tr *TestMultiTransaction) MultiTransactionIDType { +func InsertTestMultiTransaction(tb testing.TB, db *sql.DB, tr *TestMultiTransaction) common.MultiTransactionIDType { fromTokenType := tr.FromToken if tr.FromToken == "" { fromTokenType = testutils.EthSymbol @@ -381,7 +386,7 @@ func InsertTestMultiTransaction(tb testing.TB, db *sql.DB, tr *TestMultiTransact require.NoError(tb, err) rowID, err := result.LastInsertId() require.NoError(tb, err) - tr.MultiTransactionID = MultiTransactionIDType(rowID) + tr.MultiTransactionID = common.MultiTransactionIDType(rowID) return tr.MultiTransactionID } diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager.go index 4ef3df35..0731c598 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager.go @@ -21,11 +21,7 @@ import ( "github.com/status-im/status-go/transactions" ) -type MultiTransactionIDType int64 - const ( - NoMultiTransactionID = MultiTransactionIDType(0) - // EventMTTransactionUpdate is emitted when a multi-transaction is updated (added or deleted) EventMTTransactionUpdate walletevent.EventType = "multi-transaction-update" ) @@ -38,6 +34,7 @@ type SignatureDetails struct { type TransactionDescription struct { chainID uint64 + from common.Address builtTx *ethTypes.Transaction signature []byte } @@ -89,19 +86,19 @@ const ( ) type MultiTransaction struct { - ID uint `json:"id"` - Timestamp uint64 `json:"timestamp"` - FromNetworkID uint64 `json:"fromNetworkID"` - ToNetworkID uint64 `json:"toNetworkID"` - FromTxHash common.Hash `json:"fromTxHash"` - ToTxHash common.Hash `json:"toTxHash"` - FromAddress common.Address `json:"fromAddress"` - ToAddress common.Address `json:"toAddress"` - FromAsset string `json:"fromAsset"` - ToAsset string `json:"toAsset"` - FromAmount *hexutil.Big `json:"fromAmount"` - ToAmount *hexutil.Big `json:"toAmount"` - Type MultiTransactionType `json:"type"` + ID wallet_common.MultiTransactionIDType `json:"id"` + Timestamp uint64 `json:"timestamp"` + FromNetworkID uint64 `json:"fromNetworkID"` + ToNetworkID uint64 `json:"toNetworkID"` + FromTxHash common.Hash `json:"fromTxHash"` + ToTxHash common.Hash `json:"toTxHash"` + FromAddress common.Address `json:"fromAddress"` + ToAddress common.Address `json:"toAddress"` + FromAsset string `json:"fromAsset"` + ToAsset string `json:"toAsset"` + FromAmount *hexutil.Big `json:"fromAmount"` + ToAmount *hexutil.Big `json:"toAmount"` + Type MultiTransactionType `json:"type"` CrossTxID string } @@ -226,21 +223,5 @@ func (tm *TransactionManager) BuildRawTransaction(chainID uint64, sendArgs trans } func (tm *TransactionManager) SendTransactionWithSignature(chainID uint64, txType transactions.PendingTrxType, sendArgs transactions.SendTxArgs, signature []byte) (hash types.Hash, err error) { - hash, err = tm.transactor.BuildTransactionAndSendWithSignature(chainID, sendArgs, signature) - if err != nil { - return hash, err - } - - err = tm.pendingTracker.TrackPendingTransaction( - wallet_common.ChainID(chainID), - common.Hash(hash), - common.Address(sendArgs.From), - txType, - transactions.AutoDelete, - ) - if err != nil { - return hash, err - } - - return hash, nil + return tm.transactor.BuildTransactionAndSendWithSignature(chainID, sendArgs, signature) } diff --git a/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager_multitransaction.go b/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager_multitransaction.go index 729e5010..768678bb 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager_multitransaction.go +++ b/vendor/github.com/status-im/status-go/services/wallet/transfer/transaction_manager_multitransaction.go @@ -19,7 +19,6 @@ import ( "github.com/status-im/status-go/account" "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/types" - "github.com/status-im/status-go/services/wallet/bigint" "github.com/status-im/status-go/services/wallet/bridge" wallet_common "github.com/status-im/status-go/services/wallet/common" "github.com/status-im/status-go/services/wallet/walletevent" @@ -90,11 +89,11 @@ func getMultiTransactionTimestamp(multiTransaction *MultiTransaction) uint64 { } // insertMultiTransaction inserts a multi transaction into the database and updates multi-transaction ID and timestamp -func insertMultiTransaction(db *sql.DB, multiTransaction *MultiTransaction) (MultiTransactionIDType, error) { +func insertMultiTransaction(db *sql.DB, multiTransaction *MultiTransaction) (wallet_common.MultiTransactionIDType, error) { insert, err := db.Prepare(fmt.Sprintf(`INSERT INTO multi_transactions (%s) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, multiTransactionColumns)) if err != nil { - return NoMultiTransactionID, err + return wallet_common.NoMultiTransactionID, err } timestamp := getMultiTransactionTimestamp(multiTransaction) result, err := insert.Exec( @@ -113,22 +112,22 @@ func insertMultiTransaction(db *sql.DB, multiTransaction *MultiTransaction) (Mul timestamp, ) if err != nil { - return NoMultiTransactionID, err + return wallet_common.NoMultiTransactionID, err } defer insert.Close() multiTransactionID, err := result.LastInsertId() multiTransaction.Timestamp = timestamp - multiTransaction.ID = uint(multiTransactionID) + multiTransaction.ID = wallet_common.MultiTransactionIDType(multiTransactionID) - return MultiTransactionIDType(multiTransactionID), err + return wallet_common.MultiTransactionIDType(multiTransactionID), err } -func (tm *TransactionManager) InsertMultiTransaction(multiTransaction *MultiTransaction) (MultiTransactionIDType, error) { +func (tm *TransactionManager) InsertMultiTransaction(multiTransaction *MultiTransaction) (wallet_common.MultiTransactionIDType, error) { return tm.insertMultiTransactionAndNotify(tm.db, multiTransaction, nil) } -func (tm *TransactionManager) insertMultiTransactionAndNotify(db *sql.DB, multiTransaction *MultiTransaction, chainIDs []uint64) (MultiTransactionIDType, error) { +func (tm *TransactionManager) insertMultiTransactionAndNotify(db *sql.DB, multiTransaction *MultiTransaction, chainIDs []uint64) (wallet_common.MultiTransactionIDType, error) { id, err := insertMultiTransaction(db, multiTransaction) if err != nil { publishMultiTransactionUpdatedEvent(db, multiTransaction, tm.eventFeed, chainIDs) @@ -156,7 +155,7 @@ func publishMultiTransactionUpdatedEvent(db *sql.DB, multiTransaction *MultiTran } func updateMultiTransaction(db *sql.DB, multiTransaction *MultiTransaction) error { - if MultiTransactionIDType(multiTransaction.ID) == NoMultiTransactionID { + if multiTransaction.ID == wallet_common.NoMultiTransactionID { return fmt.Errorf("no multitransaction ID") } @@ -211,7 +210,7 @@ func (tm *TransactionManager) CreateMultiTransactionFromCommand(ctx context.Cont return nil, err } - multiTransaction.ID = uint(multiTransactionID) + multiTransaction.ID = multiTransactionID if password == "" { acc, err := tm.accountsDB.GetAccountByAddress(types.Address(multiTransaction.FromAddress)) if err != nil { @@ -244,11 +243,6 @@ func (tm *TransactionManager) CreateMultiTransactionFromCommand(ctx context.Cont return nil, err } - err = tm.storePendingTransactions(multiTransaction, hashes, data) - if err != nil { - return nil, err - } - return &MultiTransactionCommandResult{ ID: int64(multiTransactionID), Hashes: hashes, @@ -292,64 +286,26 @@ func (tm *TransactionManager) ProceedWithTransactionsSignatures(ctx context.Cont // send transactions hashes := make(map[uint64][]types.Hash) for _, desc := range tm.transactionsForKeycardSingning { - hash, err := tm.transactor.AddSignatureToTransactionAndSend(desc.chainID, desc.builtTx, desc.signature) + hash, err := tm.transactor.AddSignatureToTransactionAndSend( + desc.chainID, + desc.from, + tm.multiTransactionForKeycardSigning.FromAsset, + tm.multiTransactionForKeycardSigning.ID, + desc.builtTx, + desc.signature, + ) if err != nil { return nil, err } hashes[desc.chainID] = append(hashes[desc.chainID], hash) } - err := tm.storePendingTransactions(tm.multiTransactionForKeycardSigning, hashes, tm.transactionsBridgeData) - if err != nil { - return nil, err - } - return &MultiTransactionCommandResult{ ID: int64(tm.multiTransactionForKeycardSigning.ID), Hashes: hashes, }, nil } -func (tm *TransactionManager) storePendingTransactions(multiTransaction *MultiTransaction, - hashes map[uint64][]types.Hash, data []*bridge.TransactionBridge) error { - - txs := createPendingTransactions(hashes, data, multiTransaction) - for _, tx := range txs { - err := tm.pendingTracker.StoreAndTrackPendingTx(tx) - if err != nil { - return err - } - } - return nil -} - -func createPendingTransactions(hashes map[uint64][]types.Hash, data []*bridge.TransactionBridge, - multiTransaction *MultiTransaction) []*transactions.PendingTransaction { - - txs := make([]*transactions.PendingTransaction, 0) - for _, tx := range data { - for _, hash := range hashes[tx.ChainID] { - pendingTransaction := &transactions.PendingTransaction{ - Hash: common.Hash(hash), - Timestamp: uint64(time.Now().Unix()), - Value: bigint.BigInt{Int: multiTransaction.FromAmount.ToInt()}, - From: common.Address(tx.From()), - To: common.Address(tx.To()), - Data: tx.Data().String(), - Type: transactions.WalletTransfer, - ChainID: wallet_common.ChainID(tx.ChainID), - MultiTransactionID: int64(multiTransaction.ID), - Symbol: multiTransaction.FromAsset, - AutoDelete: new(bool), - } - // Transaction downloader will delete pending transaction as soon as it is confirmed - *pendingTransaction.AutoDelete = false - txs = append(txs, pendingTransaction) - } - } - return txs -} - func multiTransactionFromCommand(command *MultiTransactionCommand) *MultiTransaction { log.Info("Creating multi transaction", "command", command) @@ -380,6 +336,7 @@ func (tm *TransactionManager) buildTransactions(bridges map[string]bridge.Bridge txHash := signer.Hash(builtTx) tm.transactionsForKeycardSingning[txHash] = &TransactionDescription{ + from: common.Address(bridgeTx.From()), chainID: bridgeTx.ChainID, builtTx: builtTx, } @@ -403,6 +360,27 @@ func (tm *TransactionManager) sendTransactions(multiTransaction *MultiTransactio hashes := make(map[uint64][]types.Hash) for _, tx := range data { + if tx.TransferTx != nil { + tx.TransferTx.MultiTransactionID = multiTransaction.ID + tx.TransferTx.Symbol = multiTransaction.FromAsset + } + if tx.HopTx != nil { + tx.HopTx.MultiTransactionID = multiTransaction.ID + tx.HopTx.Symbol = multiTransaction.FromAsset + } + if tx.CbridgeTx != nil { + tx.CbridgeTx.MultiTransactionID = multiTransaction.ID + tx.CbridgeTx.Symbol = multiTransaction.FromAsset + } + if tx.ERC721TransferTx != nil { + tx.ERC721TransferTx.MultiTransactionID = multiTransaction.ID + tx.ERC721TransferTx.Symbol = multiTransaction.FromAsset + } + if tx.ERC1155TransferTx != nil { + tx.ERC1155TransferTx.MultiTransactionID = multiTransaction.ID + tx.ERC1155TransferTx.Symbol = multiTransaction.FromAsset + } + hash, err := bridges[tx.BridgeName].Send(tx, selectedAccount) if err != nil { return nil, err @@ -412,7 +390,7 @@ func (tm *TransactionManager) sendTransactions(multiTransaction *MultiTransactio return hashes, nil } -func (tm *TransactionManager) GetMultiTransactions(ctx context.Context, ids []MultiTransactionIDType) ([]*MultiTransaction, error) { +func (tm *TransactionManager) GetMultiTransactions(ctx context.Context, ids []wallet_common.MultiTransactionIDType) ([]*MultiTransaction, error) { placeholders := make([]string, len(ids)) args := make([]interface{}, len(ids)) for i, v := range ids { diff --git a/vendor/github.com/status-im/status-go/services/wallet/walletevent/events.go b/vendor/github.com/status-im/status-go/services/wallet/walletevent/events.go index f3d93108..e4e4986f 100644 --- a/vendor/github.com/status-im/status-go/services/wallet/walletevent/events.go +++ b/vendor/github.com/status-im/status-go/services/wallet/walletevent/events.go @@ -1,6 +1,7 @@ package walletevent import ( + "encoding/json" "math/big" "strings" @@ -31,3 +32,16 @@ type Event struct { // For Internal events only, not serialized EventParams interface{} } + +func GetPayload[T any](e Event) (*T, error) { + var payload T + err := json.Unmarshal([]byte(e.Message), &payload) + if err != nil { + return nil, err + } + return &payload, nil +} + +func ExtractPayload[T any](e Event, payload *T) error { + return json.Unmarshal([]byte(e.Message), payload) +} diff --git a/vendor/github.com/status-im/status-go/static/bindata.go b/vendor/github.com/status-im/status-go/static/bindata.go index fadd2489..2227ff2a 100644 --- a/vendor/github.com/status-im/status-go/static/bindata.go +++ b/vendor/github.com/status-im/status-go/static/bindata.go @@ -103,7 +103,7 @@ func emojisTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x28, 0xc, 0x22, 0x34, 0xa1, 0xeb, 0x8, 0x8d, 0xef, 0x38, 0x1b, 0xd8, 0xc2, 0x1a, 0x6d, 0xa2, 0x62, 0xad, 0x43, 0xfc, 0x1c, 0x38, 0xda, 0x8c, 0x3f, 0x34, 0xa, 0x8c, 0x6f, 0x5d, 0xd8}} return a, nil } @@ -123,7 +123,7 @@ func ConfigReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0x44, 0x2b, 0x13, 0x14, 0x34, 0xa, 0x66, 0x62, 0x1b, 0xc6, 0x4a, 0x2c, 0x7d, 0x4d, 0x89, 0xfb, 0xc9, 0x69, 0xe4, 0x18, 0x5f, 0x3, 0x98, 0x6d, 0x3c, 0x9e, 0xa8, 0xcd, 0x53, 0x5d, 0x75}} return a, nil } @@ -143,7 +143,7 @@ func ConfigCliAnonMetricNodeClientJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xdf, 0xcd, 0xc8, 0x92, 0x1d, 0x63, 0x5e, 0xe1, 0xf9, 0x7f, 0xed, 0xf2, 0x68, 0x6b, 0x20, 0xff, 0x1d, 0x3b, 0xc9, 0x7b, 0xb9, 0x6a, 0xba, 0xd3, 0xbd, 0xf7, 0x48, 0x7b, 0x5a, 0x52, 0x79}} return a, nil } @@ -163,7 +163,7 @@ func ConfigCliAnonMetricNodeServerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf0, 0x2f, 0x97, 0xab, 0x77, 0x61, 0x93, 0x9d, 0x1f, 0x33, 0x18, 0x72, 0xad, 0xce, 0xa3, 0x35, 0xa9, 0x44, 0xbf, 0x29, 0xa8, 0xea, 0x21, 0xb7, 0x22, 0x7f, 0x7d, 0x3a, 0x6b, 0x55, 0x3c, 0x66}} return a, nil } @@ -183,7 +183,7 @@ func ConfigCliFleetEthProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x4f, 0x86, 0x8b, 0x6e, 0x2, 0x27, 0xa3, 0x37, 0x27, 0x74, 0x51, 0xf0, 0x97, 0x5b, 0x64, 0x8e, 0xbd, 0x29, 0xba, 0x75, 0x2d, 0x75, 0x78, 0x46, 0xb9, 0x56, 0x6, 0xb1, 0xf9, 0x85, 0xdd}} return a, nil } @@ -203,7 +203,7 @@ func ConfigCliFleetEthStagingJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0xac, 0xc9, 0x61, 0x97, 0x42, 0x0, 0x3a, 0xfc, 0x78, 0x11, 0xa1, 0xc7, 0x55, 0x71, 0x46, 0x72, 0x3e, 0x52, 0xb0, 0x89, 0x69, 0x7f, 0x8f, 0xf1, 0x26, 0x44, 0xc5, 0xfc, 0x20, 0x9f, 0xa1}} return a, nil } @@ -223,7 +223,7 @@ func ConfigCliFleetShardsTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-shards.test.json", size: 1301, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-shards.test.json", size: 1301, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x40, 0x4, 0x2b, 0xe9, 0x2e, 0xa1, 0x7, 0x42, 0xb8, 0x5e, 0x54, 0x8c, 0x84, 0xd1, 0xd6, 0xd6, 0xc3, 0x72, 0x19, 0xa3, 0x9f, 0xa4, 0x72, 0xd2, 0xc5, 0xa6, 0xde, 0xcf, 0x5c, 0xc7, 0xcb, 0x9a}} return a, nil } @@ -243,7 +243,7 @@ func ConfigCliFleetStatusProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1528, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1528, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x13, 0x36, 0xdc, 0x13, 0x80, 0xd6, 0xd1, 0xfe, 0xf1, 0x4a, 0xba, 0xa6, 0xdc, 0xb5, 0xe1, 0xc1, 0x17, 0x77, 0x96, 0xf, 0x45, 0x96, 0x87, 0x5e, 0x67, 0xd2, 0xbf, 0xb, 0xc6, 0x79, 0xc7, 0x6f}} return a, nil } @@ -263,7 +263,7 @@ func ConfigCliFleetStatusTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2c, 0xfb, 0x4f, 0x90, 0xa5, 0xb, 0x87, 0xcf, 0xc2, 0x61, 0xdb, 0x22, 0x86, 0xef, 0x4a, 0xcf, 0xba, 0xe8, 0x2c, 0x12, 0x3d, 0x44, 0xa, 0x59, 0x4a, 0xd6, 0xd8, 0xa4, 0xe7, 0x49, 0x91}} return a, nil } @@ -283,7 +283,7 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x17, 0x9c, 0x2f, 0x31, 0x55, 0x27, 0x32, 0x2b, 0x23, 0xec, 0xde, 0xb0, 0x22, 0x28, 0x14, 0x33, 0x4f, 0xd2, 0x1d, 0x14, 0x2, 0x17, 0x6f, 0x76, 0x60, 0x94, 0x59, 0x4d, 0xcb, 0x5c, 0xbd, 0x29}} return a, nil } @@ -303,7 +303,7 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1704727094, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1138, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x99, 0x5c, 0x53, 0x41, 0xbc, 0x7b, 0xe, 0x41, 0x43, 0x59, 0x22, 0x59, 0xbf, 0xc, 0x1f, 0xca, 0xf0, 0x6a, 0x65, 0xa7, 0x85, 0x22, 0x35, 0x13, 0x22, 0xc2, 0x55, 0x55, 0xcc, 0xda, 0x8}} return a, nil } @@ -323,7 +323,7 @@ func ConfigCliLesEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xee, 0x27, 0xa7, 0x74, 0xa0, 0x46, 0xa1, 0x41, 0xed, 0x4d, 0x16, 0x5b, 0xf3, 0xf0, 0x7c, 0xc8, 0x2f, 0x6f, 0x47, 0xa4, 0xbb, 0x5f, 0x43, 0x33, 0xd, 0x9, 0x9d, 0xea, 0x9e, 0x15, 0xee}} return a, nil } @@ -343,7 +343,7 @@ func ConfigCliMailserverEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xec, 0x81, 0x8b, 0x99, 0xb6, 0xdb, 0xc0, 0x8b, 0x46, 0x97, 0x96, 0xc7, 0x58, 0x30, 0x33, 0xef, 0x54, 0x25, 0x87, 0x7b, 0xb9, 0x94, 0x6b, 0x18, 0xa4, 0x5b, 0x58, 0x67, 0x7c, 0x44, 0xa6}} return a, nil } @@ -363,7 +363,7 @@ func ConfigStatusChainGenesisJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1704726857, 0)} + info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xf0, 0xc, 0x1, 0x95, 0x65, 0x6, 0x55, 0x48, 0x8f, 0x83, 0xa0, 0xb4, 0x81, 0xda, 0xad, 0x30, 0x6d, 0xb2, 0x78, 0x1b, 0x26, 0x4, 0x13, 0x12, 0x9, 0x6, 0xae, 0x3a, 0x2c, 0x1, 0x71}} return a, nil } @@ -383,7 +383,7 @@ func keysBootnodeKey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x31, 0xcf, 0x27, 0xd4, 0x96, 0x2e, 0x32, 0xcd, 0x58, 0x96, 0x2a, 0xe5, 0x8c, 0xa0, 0xf1, 0x73, 0x1f, 0xd6, 0xd6, 0x8b, 0xb, 0x73, 0xd3, 0x2c, 0x84, 0x1a, 0x56, 0xa4, 0x74, 0xb6, 0x95, 0x20}} return a, nil } @@ -403,7 +403,7 @@ func keysFirebaseauthkey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe, 0x69, 0x23, 0x64, 0x7d, 0xf9, 0x14, 0x37, 0x6f, 0x2b, 0x1, 0xf0, 0xb0, 0xa4, 0xb2, 0xd0, 0x18, 0xcd, 0xf9, 0xeb, 0x57, 0xa3, 0xfd, 0x79, 0x25, 0xa7, 0x9c, 0x3, 0xce, 0x26, 0xec, 0xe1}} return a, nil } @@ -423,7 +423,7 @@ func keysTestAccount1StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xba, 0x35, 0x1, 0x2b, 0x9d, 0xad, 0xf0, 0x2d, 0x3c, 0x4d, 0x6, 0xb5, 0x22, 0x2, 0x47, 0xd4, 0x1c, 0xf4, 0x31, 0x2f, 0xb, 0x5b, 0x27, 0x5d, 0x43, 0x97, 0x58, 0x2d, 0xf0, 0xe1, 0xbe}} return a, nil } @@ -443,7 +443,7 @@ func keysTestAccount1Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0x43, 0xc2, 0xf4, 0x8c, 0xc6, 0x64, 0x25, 0x8c, 0x7, 0x8c, 0xa8, 0x89, 0x2b, 0x7b, 0x9b, 0x4f, 0x81, 0xcb, 0xce, 0x3d, 0xef, 0x82, 0x9c, 0x27, 0x27, 0xa9, 0xc5, 0x46, 0x70, 0x30, 0x38}} return a, nil } @@ -463,7 +463,7 @@ func keysTestAccount2StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0xf8, 0x5c, 0xe9, 0x92, 0x96, 0x2d, 0x88, 0x2b, 0x8e, 0x42, 0x3f, 0xa4, 0x93, 0x6c, 0xad, 0xe9, 0xc0, 0x1b, 0x8a, 0x8, 0x8c, 0x5e, 0x7a, 0x84, 0xa2, 0xf, 0x9f, 0x77, 0x58, 0x2c, 0x2c}} return a, nil } @@ -483,7 +483,7 @@ func keysTestAccount2Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x72, 0xd5, 0x95, 0x5c, 0x5a, 0x99, 0x9d, 0x2f, 0x21, 0x83, 0xd7, 0x10, 0x17, 0x4a, 0x3d, 0x65, 0xc9, 0x26, 0x1a, 0x2c, 0x9d, 0x65, 0x63, 0xd2, 0xa0, 0xfc, 0x7c, 0x0, 0x87, 0x38, 0x9f}} return a, nil } @@ -503,7 +503,7 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1704726859, 0)} + info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x40, 0x56, 0xc1, 0x5e, 0x10, 0x6e, 0x28, 0x15, 0x3, 0x4e, 0xc4, 0xc4, 0x71, 0x4d, 0x16, 0x99, 0xcc, 0x1b, 0x63, 0xee, 0x10, 0x20, 0xe4, 0x59, 0x52, 0x3f, 0xc0, 0xad, 0x15, 0x13, 0x72}} return a, nil } diff --git a/vendor/github.com/status-im/status-go/static/static.go b/vendor/github.com/status-im/status-go/static/static.go index 7e0e22ce..ba69e007 100644 --- a/vendor/github.com/status-im/status-go/static/static.go +++ b/vendor/github.com/status-im/status-go/static/static.go @@ -1,4 +1,4 @@ // Package static embeds static (JS, HTML) resources right into the binaries package static -//go:generate go-bindata -pkg static -o bindata.go emojis.txt ../config/... ./keys +//go:generate go-bindata -modtime=1700000000 -pkg static -o bindata.go emojis.txt ../config/... ./keys diff --git a/vendor/github.com/status-im/status-go/transactions/pendingtxtracker.go b/vendor/github.com/status-im/status-go/transactions/pendingtxtracker.go index fd6fc616..d5340fac 100644 --- a/vendor/github.com/status-im/status-go/transactions/pendingtxtracker.go +++ b/vendor/github.com/status-im/status-go/transactions/pendingtxtracker.go @@ -21,6 +21,7 @@ import ( "github.com/status-im/status-go/services/rpcfilters" "github.com/status-im/status-go/services/wallet/bigint" "github.com/status-im/status-go/services/wallet/common" + wallet_common "github.com/status-im/status-go/services/wallet/common" "github.com/status-im/status-go/services/wallet/walletevent" ) @@ -55,7 +56,6 @@ const ( Keep AutoDeleteType = false ) -// TODO #12120: unify it with TransactionIdentity type TxIdentity struct { ChainID common.ChainID `json:"chainId"` Hash eth.Hash `json:"hash"` @@ -406,19 +406,20 @@ const ( ) type PendingTransaction struct { - Hash eth.Hash `json:"hash"` - Timestamp uint64 `json:"timestamp"` - Value bigint.BigInt `json:"value"` - From eth.Address `json:"from"` - To eth.Address `json:"to"` - Data string `json:"data"` - Symbol string `json:"symbol"` - GasPrice bigint.BigInt `json:"gasPrice"` - GasLimit bigint.BigInt `json:"gasLimit"` - Type PendingTrxType `json:"type"` - AdditionalData string `json:"additionalData"` - ChainID common.ChainID `json:"network_id"` - MultiTransactionID int64 `json:"multi_transaction_id"` + Hash eth.Hash `json:"hash"` + Timestamp uint64 `json:"timestamp"` + Value bigint.BigInt `json:"value"` + From eth.Address `json:"from"` + To eth.Address `json:"to"` + Data string `json:"data"` + Symbol string `json:"symbol"` + GasPrice bigint.BigInt `json:"gasPrice"` + GasLimit bigint.BigInt `json:"gasLimit"` + Type PendingTrxType `json:"type"` + AdditionalData string `json:"additionalData"` + ChainID common.ChainID `json:"network_id"` + MultiTransactionID wallet_common.MultiTransactionIDType `json:"multi_transaction_id"` + Nonce uint64 `json:"nonce"` // nil will insert the default value (Pending) in DB Status *TxStatus `json:"status,omitempty"` @@ -428,7 +429,7 @@ type PendingTransaction struct { const selectFromPending = `SELECT hash, timestamp, value, from_address, to_address, data, symbol, gas_price, gas_limit, type, additional_data, - network_id, COALESCE(multi_transaction_id, 0), status, auto_delete + network_id, COALESCE(multi_transaction_id, 0), status, auto_delete, nonce FROM pending_transactions ` @@ -457,6 +458,7 @@ func rowsToTransactions(rows *sql.Rows) (transactions []*PendingTransaction, err &transaction.MultiTransactionID, transaction.Status, transaction.AutoDelete, + &transaction.Nonce, ) if err != nil { return nil, err @@ -468,6 +470,9 @@ func rowsToTransactions(rows *sql.Rows) (transactions []*PendingTransaction, err } func (tm *PendingTxTracker) GetAllPending() ([]*PendingTransaction, error) { + if tm.db == nil { + return nil, errors.New("database is not initialized") + } rows, err := tm.db.Query(selectFromPending+"WHERE status = ?", Pending) if err != nil { return nil, err @@ -518,6 +523,23 @@ func (tm *PendingTxTracker) GetPendingEntry(chainID common.ChainID, hash eth.Has return trs[0], nil } +func (tm *PendingTxTracker) GetPendingTxForSuggestedNonce(chainID common.ChainID, address eth.Address, nonce uint64) (pendingTx uint64, err error) { + err = tm.db.QueryRow(` + SELECT + COUNT(nonce) + FROM + pending_transactions + WHERE + network_id = ? + AND + from_address = ? + AND + nonce >= ?`, + chainID, address, nonce). + Scan(&pendingTx) + return +} + // StoreAndTrackPendingTx store the details of a pending transaction and track it until it is mined func (tm *PendingTxTracker) StoreAndTrackPendingTx(transaction *PendingTransaction) error { err := tm.addPending(transaction) @@ -531,14 +553,67 @@ func (tm *PendingTxTracker) StoreAndTrackPendingTx(transaction *PendingTransacti } func (tm *PendingTxTracker) addPending(transaction *PendingTransaction) error { - insert, err := tm.db.Prepare(`INSERT OR REPLACE INTO pending_transactions - (network_id, hash, timestamp, value, from_address, to_address, - data, symbol, gas_price, gas_limit, type, additional_data, multi_transaction_id, status, auto_delete) - VALUES - (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?)`) + var notifyFn func() + tx, err := tm.db.Begin() if err != nil { return err } + defer func() { + if err == nil { + err = tx.Commit() + if notifyFn != nil { + notifyFn() + } + return + } + _ = tx.Rollback() + }() + + exists := true + var hash eth.Hash + + err = tx.QueryRow(` + SELECT hash + FROM + pending_transactions + WHERE + network_id = ? + AND + from_address = ? + AND + nonce = ? + `, + transaction.ChainID, + transaction.From, + transaction.Nonce). + Scan(&hash) + if err != nil { + if err == sql.ErrNoRows { + exists = false + } else { + return err + } + } + + if exists { + notifyFn, err = tm.DeleteBySQLTx(tx, transaction.ChainID, hash) + if err != nil && err != ErrStillPending { + return err + } + } + + // TODO: maybe we should think of making (network_id, from_address, nonce) as primary key instead (network_id, hash) ???? + insert, err := tx.Prepare(`INSERT OR REPLACE INTO pending_transactions + (network_id, hash, timestamp, value, from_address, to_address, + data, symbol, gas_price, gas_limit, type, additional_data, multi_transaction_id, status, + auto_delete, nonce) + VALUES + (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?)`) + if err != nil { + return err + } + defer insert.Close() + _, err = insert.Exec( transaction.ChainID, transaction.Hash, @@ -555,6 +630,7 @@ func (tm *PendingTxTracker) addPending(transaction *PendingTransaction) error { transaction.MultiTransactionID, transaction.Status, transaction.AutoDelete, + transaction.Nonce, ) // Notify listeners of new pending transaction (used in activity history) if err == nil { diff --git a/vendor/github.com/status-im/status-go/transactions/testhelpers.go b/vendor/github.com/status-im/status-go/transactions/testhelpers.go index f4481f95..14e2ff92 100644 --- a/vendor/github.com/status-im/status-go/transactions/testhelpers.go +++ b/vendor/github.com/status-im/status-go/transactions/testhelpers.go @@ -82,6 +82,27 @@ func GenerateTestPendingTransactions(start int, count int) []PendingTransaction return txs } +// groupSliceInMap groups a slice of S into a map[K][]N using the getKeyValue function to extract the key and new value for each entry +func groupSliceInMap[S any, K comparable, N any](s []S, getKeyValue func(entry S, i int) (K, N)) map[K][]N { + m := make(map[K][]N) + for i, x := range s { + k, v := getKeyValue(x, i) + m[k] = append(m[k], v) + } + return m +} + +func keysInMap[K comparable, V any](m map[K]V) (res []K) { + if len(m) > 0 { + res = make([]K, 0, len(m)) + } + + for k := range m { + res = append(res, k) + } + return +} + type TestTxSummary struct { failStatus bool DontConfirm bool @@ -89,30 +110,53 @@ type TestTxSummary struct { Timestamp int } +type summaryTxPair struct { + summary TestTxSummary + tx PendingTransaction + answered bool +} + func MockTestTransactions(t *testing.T, chainClient *MockChainClient, testTxs []TestTxSummary) []PendingTransaction { - txs := GenerateTestPendingTransactions(0, len(testTxs)) - - for txIdx := range txs { - tx := &txs[txIdx] - if testTxs[txIdx].Timestamp > 0 { - tx.Timestamp = uint64(testTxs[txIdx].Timestamp) + genTxs := GenerateTestPendingTransactions(0, len(testTxs)) + for i, tx := range testTxs { + if tx.Timestamp > 0 { + genTxs[i].Timestamp = uint64(tx.Timestamp) } + } - // Mock the first call to getTransactionByHash - chainClient.SetAvailableClients([]common.ChainID{tx.ChainID}) - cl := chainClient.Clients[tx.ChainID] + grouped := groupSliceInMap(genTxs, func(tx PendingTransaction, i int) (common.ChainID, summaryTxPair) { + return tx.ChainID, summaryTxPair{ + summary: testTxs[i], + tx: tx, + } + }) + + chains := keysInMap(grouped) + chainClient.SetAvailableClients(chains) + + for chainID, chainSummaries := range grouped { + // Mock the one call to getTransactionReceipt + // It is expected that pending transactions manager will call out of order, therefore match based on hash + cl := chainClient.Clients[chainID] call := cl.On("BatchCallContext", mock.Anything, mock.MatchedBy(func(b []rpc.BatchElem) bool { - ok := len(b) == len(testTxs) - for i := range b { - ok = ok && b[i].Method == GetTransactionReceiptRPCName && b[i].Args[0] == tx.Hash + if len(b) > len(chainSummaries) { + return false } - return ok + for i := range b { + for _, sum := range chainSummaries { + tx := &sum.tx + if sum.answered { + continue + } + require.Equal(t, GetTransactionReceiptRPCName, b[i].Method) + if tx.Hash == b[i].Args[0].(eth.Hash) { + sum.answered = true + return true + } + } + } + return false })).Return(nil) - if testTxs[txIdx].DontConfirm { - call = call.Times(0) - } else { - call = call.Once() - } call.Run(func(args mock.Arguments) { elems := args.Get(1).([]rpc.BatchElem) @@ -121,19 +165,24 @@ func MockTestTransactions(t *testing.T, chainClient *MockChainClient, testTxs [] require.True(t, ok) require.NotNil(t, receiptWrapper) // Simulate parsing of eth_getTransactionReceipt response - if !testTxs[i].DontConfirm { - status := types.ReceiptStatusSuccessful - if testTxs[i].failStatus { - status = types.ReceiptStatusFailed - } + for _, sum := range chainSummaries { + tx := &sum.tx + if tx.Hash == elems[i].Args[0].(eth.Hash) { + if !sum.summary.DontConfirm { + status := types.ReceiptStatusSuccessful + if sum.summary.failStatus { + status = types.ReceiptStatusFailed + } - receiptWrapper.Receipt = &types.Receipt{ - BlockNumber: new(big.Int).SetUint64(1), - Status: status, + receiptWrapper.Receipt = &types.Receipt{ + BlockNumber: new(big.Int).SetUint64(1), + Status: status, + } + } } } } }) } - return txs + return genTxs } diff --git a/vendor/github.com/status-im/status-go/transactions/transactor.go b/vendor/github.com/status-im/status-go/transactions/transactor.go index 2cb9c9a0..7327d7f0 100644 --- a/vendor/github.com/status-im/status-go/transactions/transactor.go +++ b/vendor/github.com/status-im/status-go/transactions/transactor.go @@ -19,6 +19,8 @@ import ( "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/params" "github.com/status-im/status-go/rpc" + "github.com/status-im/status-go/services/wallet/bigint" + wallet_common "github.com/status-im/status-go/services/wallet/common" ) const ( @@ -46,6 +48,7 @@ func (e *ErrBadNonce) Error() string { // It uses upstream to propagate transactions to the Ethereum network. type Transactor struct { rpcWrapper *rpcWrapper + pendingTracker *PendingTxTracker sendTxTimeout time.Duration rpcCallTimeout time.Duration networkID uint64 @@ -60,6 +63,11 @@ func NewTransactor() *Transactor { } } +// SetPendingTracker sets a pending tracker. +func (t *Transactor) SetPendingTracker(tracker *PendingTxTracker) { + t.pendingTracker = tracker +} + // SetNetworkID selects a correct network. func (t *Transactor) SetNetworkID(networkID uint64) { t.networkID = networkID @@ -78,7 +86,26 @@ func (t *Transactor) SetRPC(rpcClient *rpc.Client, timeout time.Duration) { func (t *Transactor) NextNonce(rpcClient *rpc.Client, chainID uint64, from types.Address) (uint64, error) { wrapper := newRPCWrapper(rpcClient, chainID) ctx := context.Background() - return wrapper.PendingNonceAt(ctx, common.Address(from)) + nonce, err := wrapper.PendingNonceAt(ctx, common.Address(from)) + if err != nil { + return 0, err + } + + // We need to take into consideration all pending transactions in case of Optimism, cause the network returns always + // the nonce of last executed tx + 1 for the next nonce value. + if chainID == wallet_common.OptimismMainnet || + chainID == wallet_common.OptimismSepolia || + chainID == wallet_common.OptimismGoerli { + if t.pendingTracker != nil { + countOfPendingTXs, err := t.pendingTracker.GetPendingTxForSuggestedNonce(wallet_common.ChainID(chainID), common.Address(from), nonce) + if err != nil { + return 0, err + } + return nonce + countOfPendingTXs, nil + } + } + + return nonce, err } func (t *Transactor) EstimateGas(network *params.Network, from common.Address, to common.Address, value *big.Int, input []byte) (uint64, error) { @@ -141,25 +168,64 @@ func (t *Transactor) SendRawTransaction(chainID uint64, rawTx string) error { return rpcWrapper.SendRawTransaction(ctx, rawTx) } -func (t *Transactor) SendTransactionWithSignature(tx *gethtypes.Transaction) (hash types.Hash, err error) { - rpcWrapper := newRPCWrapper(t.rpcWrapper.RPCClient, tx.ChainId().Uint64()) +func createPendingTransactions(from common.Address, symbol string, chainID uint64, multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) (pTx *PendingTransaction) { + pTx = &PendingTransaction{ + Hash: tx.Hash(), + Timestamp: uint64(time.Now().Unix()), + Value: bigint.BigInt{Int: tx.Value()}, + From: from, + To: *tx.To(), + Nonce: tx.Nonce(), + Data: string(tx.Data()), + Type: WalletTransfer, + ChainID: wallet_common.ChainID(chainID), + MultiTransactionID: multiTransactionID, + Symbol: symbol, + AutoDelete: new(bool), + } + // Transaction downloader will delete pending transaction as soon as it is confirmed + *pTx.AutoDelete = false + return +} + +func (t *Transactor) sendTransaction(rpcWrapper *rpcWrapper, from common.Address, symbol string, + multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) (hash types.Hash, err error) { ctx, cancel := context.WithTimeout(context.Background(), t.rpcCallTimeout) defer cancel() if err := rpcWrapper.SendTransaction(ctx, tx); err != nil { return hash, err } + + if t.pendingTracker != nil { + + tx := createPendingTransactions(from, symbol, rpcWrapper.chainID, multiTransactionID, tx) + + err := t.pendingTracker.StoreAndTrackPendingTx(tx) + if err != nil { + return hash, err + } + } + return types.Hash(tx.Hash()), nil } -func (t *Transactor) AddSignatureToTransactionAndSend(chainID uint64, tx *gethtypes.Transaction, sig []byte) (hash types.Hash, err error) { +func (t *Transactor) SendTransactionWithSignature(from common.Address, symbol string, + multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction) (hash types.Hash, err error) { + rpcWrapper := newRPCWrapper(t.rpcWrapper.RPCClient, tx.ChainId().Uint64()) + + return t.sendTransaction(rpcWrapper, from, symbol, multiTransactionID, tx) +} + +func (t *Transactor) AddSignatureToTransactionAndSend(chainID uint64, from common.Address, symbol string, + multiTransactionID wallet_common.MultiTransactionIDType, tx *gethtypes.Transaction, sig []byte) (hash types.Hash, err error) { txWithSignature, err := t.AddSignatureToTransaction(chainID, tx, sig) if err != nil { return hash, err } - return t.SendTransactionWithSignature(txWithSignature) + return t.SendTransactionWithSignature(from, symbol, multiTransactionID, txWithSignature) } // BuildTransactionAndSendWithSignature receive a transaction and a signature, serialize them together and propage it to the network. @@ -171,7 +237,7 @@ func (t *Transactor) BuildTransactionAndSendWithSignature(chainID uint64, args S return hash, err } - hash, err = t.SendTransactionWithSignature(txWithSignature) + hash, err = t.SendTransactionWithSignature(common.Address(args.From), args.Symbol, args.MultiTransactionID, txWithSignature) return hash, err } @@ -378,13 +444,8 @@ func (t *Transactor) validateAndPropagate(rpcWrapper *rpcWrapper, selectedAccoun if err != nil { return hash, err } - ctx, cancel := context.WithTimeout(context.Background(), t.rpcCallTimeout) - defer cancel() - if err := rpcWrapper.SendTransaction(ctx, signedTx); err != nil { - return hash, err - } - return types.Hash(signedTx.Hash()), nil + return t.sendTransaction(rpcWrapper, common.Address(args.From), args.Symbol, args.MultiTransactionID, signedTx) } func (t *Transactor) buildTransaction(args SendTxArgs) *gethtypes.Transaction { diff --git a/vendor/github.com/status-im/status-go/transactions/types.go b/vendor/github.com/status-im/status-go/transactions/types.go index 30705d0e..cab66189 100644 --- a/vendor/github.com/status-im/status-go/transactions/types.go +++ b/vendor/github.com/status-im/status-go/transactions/types.go @@ -12,6 +12,7 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/status-im/status-go/eth-node/types" + wallet_common "github.com/status-im/status-go/services/wallet/common" ) var ( @@ -53,6 +54,10 @@ type SendTxArgs struct { // see `vendor/github.com/ethereum/go-ethereum/internal/ethapi/api.go:1107` Input types.HexBytes `json:"input"` Data types.HexBytes `json:"data"` + + // additional data + MultiTransactionID wallet_common.MultiTransactionIDType + Symbol string } // Valid checks whether this structure is filled in correctly. diff --git a/vendor/github.com/status-im/status-go/wakuv2/config.go b/vendor/github.com/status-im/status-go/wakuv2/config.go index b08555d7..dd838bdb 100644 --- a/vendor/github.com/status-im/status-go/wakuv2/config.go +++ b/vendor/github.com/status-im/status-go/wakuv2/config.go @@ -19,6 +19,10 @@ package wakuv2 import ( + "errors" + + "go.uber.org/zap" + "github.com/waku-org/go-waku/waku/v2/protocol/relay" "github.com/status-im/status-go/protocol/common/shard" @@ -28,32 +32,52 @@ import ( "github.com/status-im/status-go/wakuv2/common" ) +var ( + ErrBadLightClientConfig = errors.New("either peer exchange server or discv5 must be disabled, and the peer exchange client must be enabled") + ErrBadFullNodeConfig = errors.New("peer exchange server and discv5 must be enabled, and the peer exchange client must be disabled") +) + // Config represents the configuration state of a waku node. type Config struct { - MaxMessageSize uint32 `toml:",omitempty"` - Host string `toml:",omitempty"` - Port int `toml:",omitempty"` - PeerExchange bool `toml:",omitempty"` - KeepAliveInterval int `toml:",omitempty"` - MinPeersForRelay int `toml:",omitempty"` - MinPeersForFilter int `toml:",omitempty"` - LightClient bool `toml:",omitempty"` - WakuNodes []string `toml:",omitempty"` - Rendezvous bool `toml:",omitempty"` - DiscV5BootstrapNodes []string `toml:",omitempty"` - Nameserver string `toml:",omitempty"` - Resolver ethdisc.Resolver `toml:",omitempty"` - EnableDiscV5 bool `toml:",omitempty"` - DiscoveryLimit int `toml:",omitempty"` - AutoUpdate bool `toml:",omitempty"` - UDPPort int `toml:",omitempty"` - EnableStore bool `toml:",omitempty"` - StoreCapacity int `toml:",omitempty"` - StoreSeconds int `toml:",omitempty"` - TelemetryServerURL string `toml:",omitempty"` - DefaultShardPubsubTopic string `toml:",omitempty"` - UseShardAsDefaultTopic bool `toml:",omitempty"` - ClusterID uint16 `toml:",omitempty"` + MaxMessageSize uint32 `toml:",omitempty"` // Maximal message length allowed by the waku node + Host string `toml:",omitempty"` + Port int `toml:",omitempty"` + EnablePeerExchangeServer bool `toml:",omitempty"` // PeerExchange server makes sense only when discv5 is running locally as it will have a cache of peers that it can respond to in case a PeerExchange request comes from the PeerExchangeClient + EnablePeerExchangeClient bool `toml:",omitempty"` + KeepAliveInterval int `toml:",omitempty"` + MinPeersForRelay int `toml:",omitempty"` // Indicates the minimum number of peers required for using Relay Protocol + MinPeersForFilter int `toml:",omitempty"` // Indicates the minimum number of peers required for using Filter Protocol + LightClient bool `toml:",omitempty"` // Indicates if the node is a light client + WakuNodes []string `toml:",omitempty"` + Rendezvous bool `toml:",omitempty"` + DiscV5BootstrapNodes []string `toml:",omitempty"` + Nameserver string `toml:",omitempty"` // Optional nameserver to use for dns discovery + Resolver ethdisc.Resolver `toml:",omitempty"` // Optional resolver to use for dns discovery + EnableDiscV5 bool `toml:",omitempty"` // Indicates whether discv5 is enabled or not + DiscoveryLimit int `toml:",omitempty"` // Indicates the number of nodes to discover with peer exchange client + AutoUpdate bool `toml:",omitempty"` + UDPPort int `toml:",omitempty"` + EnableStore bool `toml:",omitempty"` + StoreCapacity int `toml:",omitempty"` + StoreSeconds int `toml:",omitempty"` + TelemetryServerURL string `toml:",omitempty"` + DefaultShardPubsubTopic string `toml:",omitempty"` // Pubsub topic to be used by default for messages that do not have a topic assigned (depending whether sharding is used or not) + UseShardAsDefaultTopic bool `toml:",omitempty"` + ClusterID uint16 `toml:",omitempty"` + EnableConfirmations bool `toml:",omitempty"` // Enable sending message confirmations + SkipPublishToTopic bool `toml:",omitempty"` // Used in testing +} + +func (c *Config) Validate(logger *zap.Logger) error { + if c.LightClient && (c.EnablePeerExchangeServer || c.EnableDiscV5 || !c.EnablePeerExchangeClient) { + logger.Warn("bad configuration for a light client", zap.Error(ErrBadLightClientConfig)) + return nil + } + if !c.LightClient && (!c.EnablePeerExchangeServer || !c.EnableDiscV5 || c.EnablePeerExchangeClient) { + logger.Warn("bad configuration for a full node", zap.Error(ErrBadFullNodeConfig)) + return nil + } + return nil } var DefaultConfig = Config{ diff --git a/vendor/github.com/status-im/status-go/wakuv2/filter_manager.go b/vendor/github.com/status-im/status-go/wakuv2/filter_manager.go index ff6f9b2c..eb661d84 100644 --- a/vendor/github.com/status-im/status-go/wakuv2/filter_manager.go +++ b/vendor/github.com/status-im/status-go/wakuv2/filter_manager.go @@ -60,11 +60,11 @@ type FilterManager struct { getFilter func(string) *common.Filter onNewEnvelopes func(env *protocol.Envelope) error logger *zap.Logger - settings settings + config *Config node *node.WakuNode } -func newFilterManager(ctx context.Context, logger *zap.Logger, getFilterFn func(string) *common.Filter, settings settings, onNewEnvelopes func(env *protocol.Envelope) error, node *node.WakuNode) *FilterManager { +func newFilterManager(ctx context.Context, logger *zap.Logger, getFilterFn func(string) *common.Filter, config *Config, onNewEnvelopes func(env *protocol.Envelope) error, node *node.WakuNode) *FilterManager { // This fn is being mocked in test mgr := new(FilterManager) mgr.ctx = ctx @@ -73,7 +73,7 @@ func newFilterManager(ctx context.Context, logger *zap.Logger, getFilterFn func( mgr.onNewEnvelopes = onNewEnvelopes mgr.filterSubs = make(FilterSubs) mgr.eventChan = make(chan FilterEvent, 100) - mgr.settings = settings + mgr.config = config mgr.node = node mgr.isFilterSubAlive = func(sub *subscription.SubscriptionDetails) error { ctx, cancel := context.WithTimeout(ctx, pingTimeout) @@ -242,7 +242,7 @@ func (mgr *FilterManager) pingPeers() { } } logger.Debug("filter ping peers", zap.Int("len", len(subs)), zap.Int("len(nilSubs)", nilSubsCnt)) - if len(subs) < mgr.settings.MinPeersForFilter { + if len(subs) < mgr.config.MinPeersForFilter { // Trigger full resubscribe logger.Debug("filter ping peers not enough subs") go func(filterID string) { @@ -290,15 +290,15 @@ func (mgr *FilterManager) resubscribe(filterID string) { mgr.logger.Error("resubscribe filter not found", zap.String("filterId", filterID)) return } - if len(subs) > mgr.settings.MinPeersForFilter { + if len(subs) > mgr.config.MinPeersForFilter { mgr.logger.Error("filter resubscribe too many subs", zap.String("filterId", filterID), zap.Int("len", len(subs))) } - if len(subs) == mgr.settings.MinPeersForFilter { + if len(subs) == mgr.config.MinPeersForFilter { // do nothing return } mgr.logger.Debug("filter resubscribe subs count:", zap.String("filterId", filterID), zap.Int("len", len(subs))) - for i := len(subs); i < mgr.settings.MinPeersForFilter; i++ { + for i := len(subs); i < mgr.config.MinPeersForFilter; i++ { mgr.logger.Debug("filter check not passed, try subscribing to peers", zap.String("filterId", filterID)) // Create sub placeholder in order to avoid potentially too many subs diff --git a/vendor/github.com/status-im/status-go/wakuv2/waku.go b/vendor/github.com/status-im/status-go/wakuv2/waku.go index 3df9c1e3..60fc25fa 100644 --- a/vendor/github.com/status-im/status-go/wakuv2/waku.go +++ b/vendor/github.com/status-im/status-go/wakuv2/waku.go @@ -32,6 +32,7 @@ import ( "sync" "time" + "github.com/jellydator/ttlcache/v3" "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/p2p/protocol/identify" "github.com/multiformats/go-multiaddr" @@ -62,8 +63,6 @@ import ( "github.com/waku-org/go-waku/waku/v2/protocol/peer_exchange" "github.com/waku-org/go-waku/waku/v2/protocol/relay" - ethdisc "github.com/ethereum/go-ethereum/p2p/dnsdisc" - "github.com/status-im/status-go/connection" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/timesource" @@ -80,22 +79,7 @@ const messageQueueLimit = 1024 const requestTimeout = 30 * time.Second const bootnodesQueryBackoffMs = 200 const bootnodesMaxRetries = 7 - -type settings struct { - LightClient bool // Indicates if the node is a light client - MinPeersForRelay int // Indicates the minimum number of peers required for using Relay Protocol - MinPeersForFilter int // Indicates the minimum number of peers required for using Filter Protocol - MaxMsgSize uint32 // Maximal message length allowed by the waku node - EnableConfirmations bool // Enable sending message confirmations - PeerExchange bool // Enable peer exchange - DiscoveryLimit int // Indicates the number of nodes to discover - Nameserver string // Optional nameserver to use for dns discovery - Resolver ethdisc.Resolver // Optional resolver to use for dns discovery - EnableDiscV5 bool // Indicates whether discv5 is enabled or not - DefaultPubsubTopic string // Pubsub topic to be used by default for messages that do not have a topic assigned (depending whether sharding is used or not) - Options []node.WakuNodeOption - SkipPublishToTopic bool // used in testing -} +const cacheTTL = 20 * time.Minute type ITelemetryClient interface { PushReceivedEnvelope(*protocol.Envelope) @@ -119,9 +103,9 @@ type Waku struct { symKeys map[string][]byte // Symmetric key storage keyMu sync.RWMutex // Mutex associated with key stores - envelopes map[gethcommon.Hash]*common.ReceivedMessage // Pool of envelopes currently tracked by this node - expirations map[uint32]mapset.Set // Message expiration pool - poolMu sync.RWMutex // Mutex to sync the message and expiration pools + envelopeCache *ttlcache.Cache[gethcommon.Hash, *common.ReceivedMessage] // Pool of envelopes currently tracked by this node + expirations map[uint32]mapset.Set // Message expiration pool + poolMu sync.RWMutex // Mutex to sync the message and expiration pools bandwidthCounter *metrics.BandwidthCounter @@ -133,9 +117,8 @@ type Waku struct { cancel context.CancelFunc wg sync.WaitGroup - cfg *Config - settings settings // Holds configuration settings that can be dynamically changed - settingsMu sync.RWMutex // Mutex to sync the settings access + cfg *Config + options []node.WakuNodeOption envelopeFeed event.Feed @@ -174,6 +157,12 @@ func (w *Waku) SetStatusTelemetryClient(client ITelemetryClient) { w.statusTelemetryClient = client } +func newTTLCache() *ttlcache.Cache[gethcommon.Hash, *common.ReceivedMessage] { + cache := ttlcache.New[gethcommon.Hash, *common.ReceivedMessage](ttlcache.WithTTL[gethcommon.Hash, *common.ReceivedMessage](cacheTTL)) + go cache.Start() + return cache +} + // New creates a WakuV2 client ready to communicate through the LibP2P network. func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *sql.DB, ts *timesource.NTPTimeSource, onHistoricMessagesRequestFailed func([]byte, peer.ID, error), onPeerStats func(types.ConnStatus)) (*Waku, error) { var err error @@ -189,6 +178,9 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s } cfg = setDefaults(cfg) + if err = cfg.Validate(logger); err != nil { + return nil, err + } logger.Info("starting wakuv2 with config", zap.Any("config", cfg)) @@ -199,7 +191,7 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s cfg: cfg, privateKeys: make(map[string]*ecdsa.PrivateKey), symKeys: make(map[string][]byte), - envelopes: make(map[gethcommon.Hash]*common.ReceivedMessage), + envelopeCache: newTTLCache(), expirations: make(map[uint32]mapset.Set), msgQueue: make(chan *common.ReceivedMessage, messageQueueLimit), sendQueue: make(chan *protocol.Envelope, 1000), @@ -219,20 +211,7 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s onPeerStats: onPeerStats, } - waku.settings = settings{ - MaxMsgSize: cfg.MaxMessageSize, - LightClient: cfg.LightClient, - MinPeersForRelay: cfg.MinPeersForRelay, - MinPeersForFilter: cfg.MinPeersForFilter, - PeerExchange: cfg.PeerExchange, - DiscoveryLimit: cfg.DiscoveryLimit, - Nameserver: cfg.Nameserver, - Resolver: cfg.Resolver, - EnableDiscV5: cfg.EnableDiscV5, - } - - waku.settings.DefaultPubsubTopic = cfg.DefaultShardPubsubTopic - waku.filters = common.NewFilters(waku.settings.DefaultPubsubTopic, waku.logger) + waku.filters = common.NewFilters(waku.cfg.DefaultShardPubsubTopic, waku.logger) waku.bandwidthCounter = metrics.NewBandwidthCounter() var privateKey *ecdsa.PrivateKey @@ -279,7 +258,6 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s logger.Error("failed to get bootstrap nodes", zap.Error(err)) return nil, err } - opts = append(opts, node.WithDiscoveryV5(uint(cfg.UDPPort), bootnodes, cfg.AutoUpdate)) } @@ -287,14 +265,14 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s opts = append(opts, node.WithWakuFilterLightNode()) } else { relayOpts := []pubsub.Option{ - pubsub.WithMaxMessageSize(int(waku.settings.MaxMsgSize)), + pubsub.WithMaxMessageSize(int(waku.cfg.MaxMessageSize)), } if waku.logger.Level() == zap.DebugLevel { relayOpts = append(relayOpts, pubsub.WithEventTracer(waku)) } - opts = append(opts, node.WithWakuRelayAndMinPeers(waku.settings.MinPeersForRelay, relayOpts...)) + opts = append(opts, node.WithWakuRelayAndMinPeers(waku.cfg.MinPeersForRelay, relayOpts...)) } if cfg.EnableStore { @@ -321,7 +299,7 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s } } - waku.settings.Options = opts + waku.options = opts waku.logger.Info("setup the go-waku node successfully") return waku, nil @@ -389,10 +367,8 @@ func (w *Waku) dnsDiscover(ctx context.Context, enrtreeAddress string, apply fnA discNodes, ok := w.dnsAddressCache[enrtreeAddress] if !ok { - w.settingsMu.RLock() - nameserver := w.settings.Nameserver - resolver := w.settings.Resolver - w.settingsMu.RUnlock() + nameserver := w.cfg.Nameserver + resolver := w.cfg.Resolver var opts []dnsdisc.DNSDiscoveryOption if nameserver != "" { @@ -422,19 +398,19 @@ func (w *Waku) dnsDiscover(ctx context.Context, enrtreeAddress string, apply fnA wg.Wait() } -func (w *Waku) addWakuV2Peers(ctx context.Context, cfg *Config) error { +func (w *Waku) discoverAndConnectPeers() error { fnApply := func(d dnsdisc.DiscoveredNode, wg *sync.WaitGroup) { defer wg.Done() if len(d.PeerInfo.Addrs) != 0 { - go w.identifyAndConnect(ctx, w.settings.LightClient, d.PeerInfo) + go w.identifyAndConnect(w.ctx, w.cfg.LightClient, d.PeerInfo) } } - for _, addrString := range cfg.WakuNodes { + for _, addrString := range w.cfg.WakuNodes { addrString := addrString if strings.HasPrefix(addrString, "enrtree://") { // Use DNS Discovery - go w.dnsDiscover(ctx, addrString, fnApply) + go w.dnsDiscover(w.ctx, addrString, fnApply) } else { // It is a normal multiaddress addr, err := multiaddr.NewMultiaddr(addrString) @@ -449,7 +425,7 @@ func (w *Waku) addWakuV2Peers(ctx context.Context, cfg *Config) error { continue } - go w.identifyAndConnect(ctx, cfg.LightClient, *peerInfo) + go w.identifyAndConnect(w.ctx, w.cfg.LightClient, *peerInfo) } } @@ -538,10 +514,8 @@ func (w *Waku) GetStats() types.StatsSummary { func (w *Waku) runPeerExchangeLoop() { defer w.wg.Done() - if !w.settings.PeerExchange || !w.settings.LightClient { - // Currently peer exchange is only used for full nodes - // TODO: should it be used for lightpush? or lightpush nodes - // are only going to be selected from a specific set of peers? + if !w.cfg.EnablePeerExchangeClient { + // Currently peer exchange client is only used for light nodes return } @@ -556,9 +530,9 @@ func (w *Waku) runPeerExchangeLoop() { case <-ticker.C: w.logger.Info("Running peer exchange loop") - connectedPeers := w.node.Host().Network().Peers() + availablePeers := w.node.Host().Peerstore().Peers() peersWithRelay := 0 - for _, p := range connectedPeers { + for _, p := range availablePeers { supportedProtocols, err := w.node.Host().Peerstore().SupportsProtocols(p, relay.WakuRelayID_v200) if err != nil { continue @@ -568,42 +542,24 @@ func (w *Waku) runPeerExchangeLoop() { } } - peersToDiscover := w.settings.DiscoveryLimit - peersWithRelay + peersToDiscover := w.cfg.DiscoveryLimit - peersWithRelay if peersToDiscover <= 0 { continue } // We select only the nodes discovered via DNS Discovery that support peer exchange w.dnsAddressCacheLock.RLock() - var withThesePeers []peer.ID for _, record := range w.dnsAddressCache { for _, discoveredNode := range record { if len(discoveredNode.PeerInfo.Addrs) == 0 { continue } + go w.identifyAndConnect(w.ctx, true, discoveredNode.PeerInfo) - // Obtaining peer ID - peerIDString := discoveredNode.PeerID.String() - - peerID, err := peer.Decode(peerIDString) - if err != nil { - w.logger.Warn("couldnt decode peerID", zap.String("peerIDString", peerIDString)) - continue // Couldnt decode the peerID for some reason? - } - - supportsProtocol, _ := w.node.Host().Peerstore().SupportsProtocols(peerID, peer_exchange.PeerExchangeID_v20alpha1) - if len(supportsProtocol) != 0 { - withThesePeers = append(withThesePeers, peerID) - } } } w.dnsAddressCacheLock.RUnlock() - - if len(withThesePeers) == 0 { - continue // No peers with peer exchange have been discovered via DNS Discovery so far, skip this iteration - } - - err := w.node.PeerExchange().Request(w.ctx, peersToDiscover, peer_exchange.WithAutomaticPeerSelection(withThesePeers...)) + err := w.node.PeerExchange().Request(w.ctx, peersToDiscover, peer_exchange.WithAutomaticPeerSelection()) if err != nil { w.logger.Error("couldnt request peers via peer exchange", zap.Error(err)) } @@ -613,7 +569,7 @@ func (w *Waku) runPeerExchangeLoop() { func (w *Waku) getPubsubTopic(topic string) string { if topic == "" || !w.cfg.UseShardAsDefaultTopic { - topic = w.settings.DefaultPubsubTopic + topic = w.cfg.DefaultShardPubsubTopic } return topic } @@ -631,7 +587,7 @@ func (w *Waku) unsubscribeFromPubsubTopicWithWakuRelay(topic string) error { } func (w *Waku) subscribeToPubsubTopicWithWakuRelay(topic string, pubkey *ecdsa.PublicKey) error { - if w.settings.LightClient { + if w.cfg.LightClient { return errors.New("only available for full nodes") } @@ -680,16 +636,7 @@ func (w *Waku) subscribeToPubsubTopicWithWakuRelay(topic string, pubkey *ecdsa.P // MaxMessageSize returns the maximum accepted message size. func (w *Waku) MaxMessageSize() uint32 { - w.settingsMu.RLock() - defer w.settingsMu.RUnlock() - return w.settings.MaxMsgSize -} - -// ConfirmationsEnabled returns true if message confirmations are enabled. -func (w *Waku) ConfirmationsEnabled() bool { - w.settingsMu.RLock() - defer w.settingsMu.RUnlock() - return w.settings.EnableConfirmations + return w.cfg.MaxMessageSize } // CurrentTime returns current time. @@ -969,7 +916,7 @@ func (w *Waku) Subscribe(f *common.Filter) (string, error) { return id, err } - if w.settings.LightClient { + if w.cfg.LightClient { w.filterManager.eventChan <- FilterEvent{eventType: FilterEventAdded, filterID: id} } @@ -983,7 +930,7 @@ func (w *Waku) Unsubscribe(ctx context.Context, id string) error { return fmt.Errorf("failed to unsubscribe: invalid ID '%s'", id) } - if w.settings.LightClient { + if w.cfg.LightClient { w.filterManager.eventChan <- FilterEvent{eventType: FilterEventRemoved, filterID: id} } @@ -1017,7 +964,7 @@ func (w *Waku) UnsubscribeMany(ids []string) error { } func (w *Waku) SkipPublishToTopic(value bool) { - w.settings.SkipPublishToTopic = value + w.cfg.SkipPublishToTopic = value } func (w *Waku) broadcast() { @@ -1026,12 +973,12 @@ func (w *Waku) broadcast() { case envelope := <-w.sendQueue: logger := w.logger.With(zap.String("envelopeHash", hexutil.Encode(envelope.Hash())), zap.String("pubsubTopic", envelope.PubsubTopic()), zap.String("contentTopic", envelope.Message().ContentTopic), zap.Int64("timestamp", envelope.Message().GetTimestamp())) var fn publishFn - if w.settings.SkipPublishToTopic { + if w.cfg.SkipPublishToTopic { // For now only used in testing to simulate going offline fn = func(env *protocol.Envelope, logger *zap.Logger) error { return errors.New("test send failure") } - } else if w.settings.LightClient { + } else if w.cfg.LightClient { fn = func(env *protocol.Envelope, logger *zap.Logger) error { logger.Info("publishing message via lightpush") _, err := w.node.Lightpush().Publish(w.ctx, env.Message(), lightpush.WithPubSubTopic(env.PubsubTopic())) @@ -1096,7 +1043,7 @@ func (w *Waku) Send(pubsubTopic string, msg *pb.WakuMessage) ([]byte, error) { w.sendQueue <- envelope w.poolMu.Lock() - _, alreadyCached := w.envelopes[gethcommon.BytesToHash(envelope.Hash())] + alreadyCached := w.envelopeCache.Has(gethcommon.BytesToHash(envelope.Hash())) w.poolMu.Unlock() if !alreadyCached { recvMessage := common.NewReceivedMessage(envelope, common.RelayedMessageType) @@ -1188,7 +1135,7 @@ func (w *Waku) Start() error { } var err error - if w.node, err = node.New(w.settings.Options...); err != nil { + if w.node, err = node.New(w.options...); err != nil { return fmt.Errorf("failed to create a go-waku node: %v", err) } @@ -1208,7 +1155,7 @@ func (w *Waku) Start() error { w.identifyService = idService - if err = w.addWakuV2Peers(w.ctx, w.cfg); err != nil { + if err = w.discoverAndConnectPeers(); err != nil { return fmt.Errorf("failed to add wakuv2 peers: %v", err) } @@ -1219,7 +1166,7 @@ func (w *Waku) Start() error { } } - if w.cfg.PeerExchange { + if w.cfg.EnablePeerExchangeServer { err := w.node.PeerExchange().Start(w.ctx) if err != nil { return err @@ -1243,9 +1190,7 @@ func (w *Waku) Start() error { zap.Int("peersCount", len(latestConnStatus.Peers)), zap.Any("stats", latestConnStatus)) for k, subs := range w.connStatusSubscriptions { - if subs.Active() { - subs.C <- latestConnStatus - } else { + if !subs.Send(latestConnStatus) { delete(w.connStatusSubscriptions, k) } } @@ -1278,12 +1223,12 @@ func (w *Waku) Start() error { go w.telemetryBandwidthStats(w.cfg.TelemetryServerURL) go w.runPeerExchangeLoop() - if w.settings.LightClient { + if w.cfg.LightClient { // Create FilterManager that will main peer connectivity // for installed filters w.filterManager = newFilterManager(w.ctx, w.logger, func(id string) *common.Filter { return w.GetFilter(id) }, - w.settings, + w.cfg, func(env *protocol.Envelope) error { return w.OnNewEnvelopes(env, common.RelayedMessageType, false) }, w.node) @@ -1311,7 +1256,7 @@ func (w *Waku) Start() error { } func (w *Waku) setupRelaySubscriptions() error { - if w.settings.LightClient { + if w.cfg.LightClient { return nil } @@ -1330,7 +1275,7 @@ func (w *Waku) setupRelaySubscriptions() error { } } - err := w.subscribeToPubsubTopicWithWakuRelay(w.settings.DefaultPubsubTopic, nil) + err := w.subscribeToPubsubTopicWithWakuRelay(w.cfg.DefaultShardPubsubTopic, nil) if err != nil { return err } @@ -1343,6 +1288,8 @@ func (w *Waku) setupRelaySubscriptions() error { func (w *Waku) Stop() error { w.cancel() + w.envelopeCache.Stop() + err := w.identifyService.Close() if err != nil { return err @@ -1407,21 +1354,19 @@ func (w *Waku) OnNewEnvelopes(envelope *protocol.Envelope, msgType common.Messag // addEnvelope adds an envelope to the envelope map, used for sending func (w *Waku) addEnvelope(envelope *common.ReceivedMessage) { - hash := envelope.Hash() - w.poolMu.Lock() - w.envelopes[hash] = envelope + w.envelopeCache.Set(envelope.Hash(), envelope, ttlcache.DefaultTTL) w.poolMu.Unlock() } func (w *Waku) add(recvMessage *common.ReceivedMessage, processImmediately bool) (bool, error) { common.EnvelopesReceivedCounter.Inc() - hash := recvMessage.Hash() - w.poolMu.Lock() - envelope, alreadyCached := w.envelopes[hash] + envelope := w.envelopeCache.Get(recvMessage.Hash()) + alreadyCached := envelope != nil w.poolMu.Unlock() + if !alreadyCached { recvMessage.Processed.Store(false) w.addEnvelope(recvMessage) @@ -1438,7 +1383,7 @@ func (w *Waku) add(recvMessage *common.ReceivedMessage, processImmediately bool) common.EnvelopesSizeMeter.Observe(float64(len(recvMessage.Envelope.Message().Payload))) } - if !alreadyCached || !envelope.Processed.Load() { + if !alreadyCached || !envelope.Value().Processed.Load() { if processImmediately { logger.Debug("immediately processing envelope") w.processReceivedMessage(recvMessage) @@ -1507,24 +1452,18 @@ func (w *Waku) processReceivedMessage(e *common.ReceivedMessage) { }) } -// Envelopes retrieves all the messages currently pooled by the node. -func (w *Waku) Envelopes() []*common.ReceivedMessage { - w.poolMu.RLock() - defer w.poolMu.RUnlock() - - all := make([]*common.ReceivedMessage, 0, len(w.envelopes)) - for _, envelope := range w.envelopes { - all = append(all, envelope) - } - return all -} - // GetEnvelope retrieves an envelope from the message queue by its hash. // It returns nil if the envelope can not be found. func (w *Waku) GetEnvelope(hash gethcommon.Hash) *common.ReceivedMessage { w.poolMu.RLock() defer w.poolMu.RUnlock() - return w.envelopes[hash] + + envelope := w.envelopeCache.Get(hash) + if envelope == nil { + return nil + } + + return envelope.Value() } // isEnvelopeCached checks if envelope with specific hash has already been received and cached. @@ -1532,14 +1471,15 @@ func (w *Waku) IsEnvelopeCached(hash gethcommon.Hash) bool { w.poolMu.Lock() defer w.poolMu.Unlock() - _, exist := w.envelopes[hash] - return exist + return w.envelopeCache.Has(hash) } func (w *Waku) ClearEnvelopesCache() { w.poolMu.Lock() defer w.poolMu.Unlock() - w.envelopes = make(map[gethcommon.Hash]*common.ReceivedMessage) + + w.envelopeCache.Stop() + w.envelopeCache = newTTLCache() } func (w *Waku) PeerCount() int { @@ -1562,7 +1502,7 @@ func (w *Waku) ListenAddresses() []string { func (w *Waku) SubscribeToPubsubTopic(topic string, pubkey *ecdsa.PublicKey) error { topic = w.getPubsubTopic(topic) - if !w.settings.LightClient { + if !w.cfg.LightClient { err := w.subscribeToPubsubTopicWithWakuRelay(topic, pubkey) if err != nil { return err @@ -1574,7 +1514,7 @@ func (w *Waku) SubscribeToPubsubTopic(topic string, pubkey *ecdsa.PublicKey) err func (w *Waku) UnsubscribeFromPubsubTopic(topic string) error { topic = w.getPubsubTopic(topic) - if !w.settings.LightClient { + if !w.cfg.LightClient { err := w.unsubscribeFromPubsubTopicWithWakuRelay(topic) if err != nil { return err @@ -1644,7 +1584,7 @@ func (w *Waku) ConnectionChanged(state connection.State) { // It backs off exponentially until maxRetries, at which point it restarts from 0 // It also restarts if there's a connection change signalled from the client func (w *Waku) seedBootnodesForDiscV5() { - if !w.settings.EnableDiscV5 || w.node.DiscV5() == nil { + if !w.cfg.EnableDiscV5 || w.node.DiscV5() == nil { w.wg.Done() return } @@ -1874,7 +1814,7 @@ func FormatPeerStats(wakuNode *node.WakuNode, peers node.PeerStats) map[string]t for _, addr := range peerInfo.Addrs { wakuV2Peer.Addresses = append(wakuV2Peer.Addresses, addr.Encapsulate(hostInfo).String()) } - p[k.Pretty()] = wakuV2Peer + p[k.String()] = wakuV2Peer } return p } @@ -1886,3 +1826,7 @@ func formatConnStatus(wakuNode *node.WakuNode, c node.ConnStatus) types.ConnStat Peers: FormatPeerStats(wakuNode, c.Peers), } } + +func (w *Waku) StoreNode() store.Store { + return w.node.Store() +} diff --git a/vendor/github.com/status-im/status-go/walletdatabase/migrations/bindata.go b/vendor/github.com/status-im/status-go/walletdatabase/migrations/bindata.go index b916924e..a6a71992 100644 --- a/vendor/github.com/status-im/status-go/walletdatabase/migrations/bindata.go +++ b/vendor/github.com/status-im/status-go/walletdatabase/migrations/bindata.go @@ -22,7 +22,9 @@ // 1705664490_add_balance_check_fields_blocks_ranges_sequential.up.sql (84B) // 1706531789_remove_gasfee-only-eth-transfers.up.sql (627B) // 1707160323_add_contract_type_table.up.sql (282B) -// doc.go (74B) +// 1708089811_add_nullable_fiesl_blocks_ranges.up.sql (450B) +// 1710189541_add_nonce_to_pending_transactions.up.sql (54B) +// doc.go (94B) package migrations @@ -105,7 +107,7 @@ func _1691753758_initialUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1691753758_initial.up.sql", size: 5738, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0x25, 0x31, 0xc8, 0x27, 0x3, 0x6b, 0x9f, 0x15, 0x42, 0x2f, 0x85, 0xfb, 0xe3, 0x6, 0xea, 0xf7, 0x97, 0x12, 0x56, 0x3c, 0x9a, 0x5b, 0x1a, 0xca, 0xb1, 0x23, 0xfa, 0xcd, 0x57, 0x25, 0x5c}} return a, nil } @@ -125,7 +127,7 @@ func _1692701329_add_collectibles_and_collections_data_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1692701329_add_collectibles_and_collections_data_cache.up.sql", size: 1808, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1692701329_add_collectibles_and_collections_data_cache.up.sql", size: 1808, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x51, 0xf4, 0x2b, 0x92, 0xde, 0x59, 0x65, 0xd8, 0x9b, 0x57, 0xe0, 0xfd, 0x7b, 0x12, 0xb, 0x29, 0x6e, 0x9d, 0xb5, 0x90, 0xe, 0xfa, 0x12, 0x97, 0xd, 0x61, 0x60, 0x7f, 0x32, 0x1d, 0xc3}} return a, nil } @@ -145,7 +147,7 @@ func _1692701339_add_scope_to_pendingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1692701339_add_scope_to_pending.up.sql", size: 576, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1692701339_add_scope_to_pending.up.sql", size: 576, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x8a, 0x5e, 0xe2, 0x63, 0x15, 0x37, 0xba, 0x55, 0x18, 0xf3, 0xcc, 0xe0, 0x5, 0x84, 0xe1, 0x5b, 0xe8, 0x1, 0x32, 0x6b, 0x9f, 0x7d, 0x9f, 0xd9, 0x23, 0x6c, 0xa9, 0xb5, 0xdc, 0xf4, 0x93}} return a, nil } @@ -165,7 +167,7 @@ func _1694540071_add_collectibles_ownership_update_timestampUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1694540071_add_collectibles_ownership_update_timestamp.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1694540071_add_collectibles_ownership_update_timestamp.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x45, 0xc7, 0xce, 0x79, 0x63, 0xbc, 0x6f, 0x83, 0x5f, 0xe2, 0x3, 0x56, 0xcc, 0x5, 0x2f, 0x85, 0xda, 0x7e, 0xea, 0xf5, 0xd2, 0xac, 0x19, 0xd4, 0xd8, 0x5e, 0xdd, 0xed, 0xe2, 0xa9, 0x97}} return a, nil } @@ -185,7 +187,7 @@ func _1694692748_add_raw_balance_to_token_balancesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1694692748_add_raw_balance_to_token_balances.up.sql", size: 165, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1694692748_add_raw_balance_to_token_balances.up.sql", size: 165, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0xe0, 0x5b, 0x42, 0xf0, 0x96, 0xa5, 0xf5, 0xed, 0xc0, 0x97, 0x88, 0xb0, 0x6d, 0xfe, 0x7d, 0x97, 0x2e, 0x17, 0xd2, 0x16, 0xbc, 0x2a, 0xf2, 0xcc, 0x67, 0x9e, 0xc5, 0x47, 0xf6, 0x69, 0x1}} return a, nil } @@ -205,7 +207,7 @@ func _1695133989_add_community_id_to_collectibles_and_collections_data_cacheUpSq return nil, err } - info := bindataFileInfo{name: "1695133989_add_community_id_to_collectibles_and_collections_data_cache.up.sql", size: 275, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1695133989_add_community_id_to_collectibles_and_collections_data_cache.up.sql", size: 275, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x2, 0xa, 0x7f, 0x4b, 0xd1, 0x3, 0xd0, 0x3, 0x29, 0x84, 0x31, 0xed, 0x49, 0x4f, 0xb1, 0x2d, 0xd7, 0x80, 0x41, 0x5b, 0xfa, 0x6, 0xae, 0xb4, 0xf6, 0x6b, 0x49, 0xee, 0x57, 0x33, 0x76}} return a, nil } @@ -225,7 +227,7 @@ func _1695932536_balance_history_v2UpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1695932536_balance_history_v2.up.sql", size: 653, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1695932536_balance_history_v2.up.sql", size: 653, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x37, 0xf4, 0x14, 0x91, 0xf6, 0x5f, 0xc4, 0x9b, 0xb7, 0x83, 0x32, 0x72, 0xbe, 0x82, 0x42, 0x39, 0xa4, 0x3b, 0xc9, 0x78, 0x3d, 0xca, 0xd4, 0xbf, 0xfc, 0x7a, 0x33, 0x1e, 0xcd, 0x9e, 0xe4, 0x85}} return a, nil } @@ -245,7 +247,7 @@ func _1696853635_input_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1696853635_input_data.up.sql", size: 23140, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1696853635_input_data.up.sql", size: 23140, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x89, 0x30, 0x33, 0x33, 0x55, 0xc5, 0x57, 0x2b, 0xaf, 0xef, 0x3d, 0x8d, 0x2a, 0xaa, 0x5c, 0x32, 0xd1, 0xf4, 0xd, 0x4a, 0xd0, 0x33, 0x4a, 0xe8, 0xf6, 0x8, 0x6b, 0x65, 0xcc, 0xba, 0xed, 0x42}} return a, nil } @@ -265,7 +267,7 @@ func _1698117918_add_community_id_to_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698117918_add_community_id_to_tokens.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1698117918_add_community_id_to_tokens.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x82, 0xdb, 0xde, 0x3, 0x3, 0xc, 0x67, 0xf3, 0x54, 0xc4, 0xad, 0xd6, 0xce, 0x56, 0xfb, 0xc1, 0x87, 0xd7, 0xda, 0xab, 0xec, 0x1, 0xe1, 0x7d, 0xb3, 0x63, 0xd6, 0xe5, 0x5d, 0x1c, 0x15}} return a, nil } @@ -285,7 +287,7 @@ func _1698257443_add_community_metadata_to_wallet_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1698257443_add_community_metadata_to_wallet_db.up.sql", size: 323, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1698257443_add_community_metadata_to_wallet_db.up.sql", size: 323, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x22, 0xd3, 0x4, 0x25, 0xfa, 0x23, 0x1, 0x48, 0x83, 0x26, 0x20, 0xf2, 0x3d, 0xbc, 0xc1, 0xa7, 0x7c, 0x27, 0x7c, 0x1d, 0x63, 0x3, 0xa, 0xd0, 0xce, 0x47, 0x86, 0xdc, 0xa1, 0x3c, 0x2, 0x1c}} return a, nil } @@ -305,7 +307,7 @@ func _1699987075_add_timestamp_and_state_to_community_data_cacheUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1699987075_add_timestamp_and_state_to_community_data_cache.up.sql", size: 865, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1699987075_add_timestamp_and_state_to_community_data_cache.up.sql", size: 865, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xee, 0x37, 0xf9, 0x7f, 0x9e, 0xfe, 0x93, 0x66, 0x2b, 0xd, 0x57, 0xf4, 0x89, 0x6c, 0x51, 0xfd, 0x14, 0xe9, 0xcd, 0xab, 0x65, 0xe7, 0xa7, 0x83, 0x7e, 0xe0, 0x5c, 0x14, 0x49, 0xf3, 0xe5}} return a, nil } @@ -325,7 +327,7 @@ func _1700414564_add_wallet_connect_pairings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1700414564_add_wallet_connect_pairings_table.up.sql", size: 439, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1700414564_add_wallet_connect_pairings_table.up.sql", size: 439, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x77, 0x5e, 0x19, 0x62, 0x3c, 0x3a, 0x81, 0x16, 0xa0, 0x95, 0x35, 0x62, 0xab, 0x5e, 0x2b, 0xea, 0x11, 0x71, 0x11, 0xd0, 0x9, 0xab, 0x9c, 0xab, 0xf2, 0xdd, 0x5f, 0x88, 0x83, 0x9a, 0x93}} return a, nil } @@ -345,7 +347,7 @@ func _1701101493_add_token_blocks_rangeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1701101493_add_token_blocks_range.up.sql", size: 469, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1701101493_add_token_blocks_range.up.sql", size: 469, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x37, 0xfb, 0x1a, 0x6c, 0x8c, 0xa8, 0x1e, 0xa2, 0xa5, 0x1f, 0x90, 0x73, 0x3e, 0x31, 0x5f, 0x48, 0x1e, 0x9a, 0x37, 0x27, 0x1c, 0xc, 0x67, 0x1, 0xcd, 0xec, 0x85, 0x4c, 0x1c, 0x26, 0x52}} return a, nil } @@ -365,7 +367,7 @@ func _1702467441_wallet_connect_sessions_instead_of_pairingsUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1702467441_wallet_connect_sessions_instead_of_pairings.up.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1702467441_wallet_connect_sessions_instead_of_pairings.up.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x5f, 0x0, 0x60, 0x6, 0x28, 0x76, 0x61, 0x39, 0xdc, 0xa1, 0x84, 0x80, 0x46, 0x8a, 0xe4, 0x42, 0xb5, 0x1f, 0x18, 0x14, 0x23, 0x46, 0xb9, 0x51, 0xf, 0x62, 0xac, 0xc, 0x7, 0x98, 0xe}} return a, nil } @@ -385,7 +387,7 @@ func _1702577524_add_community_collections_and_collectibles_images_cacheUpSql() return nil, err } - info := bindataFileInfo{name: "1702577524_add_community_collections_and_collectibles_images_cache.up.sql", size: 210, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1702577524_add_community_collections_and_collectibles_images_cache.up.sql", size: 210, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x1b, 0x32, 0x2c, 0xfa, 0x11, 0x5e, 0x5e, 0x5d, 0xef, 0x92, 0xa0, 0x29, 0x52, 0xbf, 0x6e, 0xe3, 0x30, 0xe4, 0xdf, 0xdc, 0x5, 0xbe, 0xd1, 0xf8, 0x3e, 0xd9, 0x9b, 0xd6, 0x9b, 0x95, 0x96}} return a, nil } @@ -405,7 +407,7 @@ func _1702867707_add_balance_to_collectibles_ownership_cacheUpSql() (*asset, err return nil, err } - info := bindataFileInfo{name: "1702867707_add_balance_to_collectibles_ownership_cache.up.sql", size: 289, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1702867707_add_balance_to_collectibles_ownership_cache.up.sql", size: 289, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0x63, 0x30, 0x11, 0x22, 0xb9, 0xee, 0xae, 0xb8, 0xc4, 0xe6, 0xd3, 0x7, 0xc, 0xe6, 0xa3, 0x72, 0x8c, 0x6, 0x9d, 0x6c, 0x97, 0x8f, 0xb2, 0xd0, 0x37, 0x69, 0x69, 0x6, 0x7f, 0x67, 0x94}} return a, nil } @@ -425,7 +427,7 @@ func _1703686612_add_color_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1703686612_add_color_to_saved_addresses.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1703686612_add_color_to_saved_addresses.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x6e, 0x8d, 0xc0, 0x49, 0xc, 0xb, 0x66, 0xa0, 0x77, 0x32, 0x76, 0xa8, 0xd0, 0x40, 0xce, 0x67, 0xa, 0x9e, 0x23, 0x36, 0xe, 0xc3, 0xd3, 0x9d, 0xe2, 0xde, 0x60, 0x19, 0xba, 0x44, 0xf1}} return a, nil } @@ -445,7 +447,7 @@ func _1704701942_remove_favourite_and_change_primary_key_for_saved_addressesUpSq return nil, err } - info := bindataFileInfo{name: "1704701942_remove_favourite_and_change_primary_key_for_saved_addresses.up.sql", size: 894, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1704701942_remove_favourite_and_change_primary_key_for_saved_addresses.up.sql", size: 894, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0xd3, 0xcf, 0x90, 0xb2, 0xa, 0x23, 0x41, 0x8a, 0xa5, 0x90, 0x7b, 0x34, 0xec, 0x3b, 0x3f, 0xa9, 0xb1, 0x95, 0xf3, 0x2a, 0xdf, 0xbb, 0x53, 0x57, 0x27, 0x2b, 0x12, 0x84, 0xf4, 0x83, 0xda}} return a, nil } @@ -465,7 +467,7 @@ func _1704913491_add_type_and_tx_timestamp_to_collectibles_ownership_cacheUpSql( return nil, err } - info := bindataFileInfo{name: "1704913491_add_type_and_tx_timestamp_to_collectibles_ownership_cache.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1704913491_add_type_and_tx_timestamp_to_collectibles_ownership_cache.up.sql", size: 73, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa2, 0xf0, 0x71, 0xb5, 0xaf, 0x22, 0xac, 0x77, 0xdb, 0x6f, 0x62, 0x27, 0x12, 0x46, 0x60, 0x3, 0x59, 0x43, 0x6f, 0x1, 0xdc, 0xe8, 0x6e, 0x89, 0xa5, 0x77, 0x37, 0x36, 0xd9, 0x4e, 0x6d, 0x9b}} return a, nil } @@ -485,7 +487,7 @@ func _1705664490_add_balance_check_fields_blocks_ranges_sequentialUpSql() (*asse return nil, err } - info := bindataFileInfo{name: "1705664490_add_balance_check_fields_blocks_ranges_sequential.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1705664490_add_balance_check_fields_blocks_ranges_sequential.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x49, 0x9, 0xd9, 0x83, 0x3d, 0xd8, 0xb7, 0x4f, 0x8f, 0xc2, 0xa2, 0xd1, 0xb, 0x57, 0x1f, 0x5, 0x39, 0x55, 0xfb, 0x6e, 0x32, 0x9e, 0x19, 0x3d, 0x3c, 0x77, 0xa2, 0xc4, 0xf4, 0x53, 0x35}} return a, nil } @@ -505,7 +507,7 @@ func _1706531789_remove_gasfeeOnlyEthTransfersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1706531789_remove_gasfee-only-eth-transfers.up.sql", size: 627, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 0)} + info := bindataFileInfo{name: "1706531789_remove_gasfee-only-eth-transfers.up.sql", size: 627, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x8c, 0x37, 0xd3, 0x2a, 0xf, 0x1a, 0x8, 0xe9, 0xa7, 0x1f, 0x5a, 0x10, 0xa7, 0x4c, 0x36, 0x4f, 0xc6, 0xdc, 0xeb, 0x79, 0x90, 0xe7, 0xcd, 0x4a, 0xef, 0xb7, 0x3, 0x6e, 0x88, 0x6f, 0x79}} return a, nil } @@ -525,12 +527,52 @@ func _1707160323_add_contract_type_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1707160323_add_contract_type_table.up.sql", size: 282, mode: os.FileMode(0644), modTime: time.Unix(1707160521, 0)} + info := bindataFileInfo{name: "1707160323_add_contract_type_table.up.sql", size: 282, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x45, 0x99, 0xd9, 0x86, 0x72, 0x37, 0x97, 0xfc, 0xa7, 0xbb, 0xe3, 0x86, 0xf1, 0xfd, 0x77, 0x31, 0x91, 0xcb, 0xa4, 0x2c, 0x5b, 0xaa, 0x4b, 0xa2, 0x7f, 0x8a, 0x2c, 0x7a, 0xda, 0x20, 0x7a, 0x97}} 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 __1708089811_add_nullable_fiesl_blocks_rangesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\xd0\x41\x6b\xc3\x20\x18\xc6\xf1\xbb\x9f\xe2\xa1\xa7\x16\xfa\x0d\x7a\xb2\x8d\x6b\x65\x99\x29\xce\xac\xeb\x49\x4c\xe2\x96\xa0\x18\xa6\x96\x7d\xfd\xb1\x43\x08\x3b\x2c\x39\xbf\xbf\x97\x3f\x3c\x85\xac\xae\x50\xf4\x58\x32\x34\x7e\x6c\x5d\xd2\xd1\x84\x4f\x9b\x74\xb2\x5f\x0f\x1b\xf2\x60\xfc\x81\x90\x93\x64\x54\xb1\x15\x87\x2d\x01\x82\xcd\xdf\x63\x74\x7a\xe8\x50\x8b\x57\x7e\x16\xac\xc0\x91\x9f\xb9\x50\x10\x95\x82\xa8\xcb\x72\x4f\x00\xd3\x75\xd1\xa6\x84\x37\x2a\x4f\x17\x2a\xff\xdc\x1a\xef\x74\xca\x26\xe6\xe9\xb1\x60\x4f\xb4\x2e\x15\xc2\xc3\xfb\x09\x7c\x0c\x31\x2d\x02\x6f\xfe\xbf\xe7\xd1\xd9\xa0\x57\x3b\x33\x5b\xac\xcd\x6c\xa9\xd9\x18\x6f\x42\x6b\x75\xdb\xdb\xd6\xe9\xde\xa4\x1e\x8a\xbd\xcf\x6e\xb3\xf9\x55\x57\xc9\x5f\xa8\xbc\xe3\x99\xdd\xb1\x9d\xb7\xdc\x4f\x83\xed\xc8\x0e\x37\xae\x2e\x55\xad\x20\xab\x1b\x2f\x0e\xe4\x27\x00\x00\xff\xff\xd3\xb5\x4d\x6e\xc2\x01\x00\x00") + +func _1708089811_add_nullable_fiesl_blocks_rangesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1708089811_add_nullable_fiesl_blocks_rangesUpSql, + "1708089811_add_nullable_fiesl_blocks_ranges.up.sql", + ) +} + +func _1708089811_add_nullable_fiesl_blocks_rangesUpSql() (*asset, error) { + bytes, err := _1708089811_add_nullable_fiesl_blocks_rangesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1708089811_add_nullable_fiesl_blocks_ranges.up.sql", size: 450, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0xec, 0x7c, 0xd7, 0x99, 0x36, 0xa3, 0xb5, 0xc, 0xaa, 0x59, 0x40, 0x4c, 0x69, 0xc6, 0x62, 0x6e, 0x10, 0x6a, 0x2b, 0xc7, 0x37, 0x24, 0xad, 0x39, 0x9b, 0xe6, 0xeb, 0xbf, 0xb6, 0x32, 0x24}} + return a, nil +} + +var __1710189541_add_nonce_to_pending_transactionsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x28\x48\xcd\x4b\xc9\xcc\x4b\x8f\x2f\x29\x4a\xcc\x2b\x4e\x4c\x2e\xc9\xcc\xcf\x2b\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\xc8\xcb\xcf\x4b\x4e\x55\xf0\xf4\x0b\xb1\x06\x04\x00\x00\xff\xff\x87\x1f\x38\x0b\x36\x00\x00\x00") + +func _1710189541_add_nonce_to_pending_transactionsUpSqlBytes() ([]byte, error) { + return bindataRead( + __1710189541_add_nonce_to_pending_transactionsUpSql, + "1710189541_add_nonce_to_pending_transactions.up.sql", + ) +} + +func _1710189541_add_nonce_to_pending_transactionsUpSql() (*asset, error) { + bytes, err := _1710189541_add_nonce_to_pending_transactionsUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1710189541_add_nonce_to_pending_transactions.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x2e, 0x35, 0x7c, 0xf, 0x9, 0x63, 0x64, 0x4d, 0xdf, 0x8f, 0x99, 0x96, 0x66, 0xda, 0x81, 0x56, 0x84, 0x3b, 0xbf, 0x88, 0xf9, 0xb0, 0x7d, 0x9f, 0x87, 0x74, 0xa9, 0xb, 0x9a, 0x70, 0xcb}} + return a, nil +} + +var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xcb\x41\x0e\x02\x31\x08\x05\xd0\x7d\x4f\xf1\x2f\x00\xe8\xca\xc4\xc4\xc3\xa0\x43\x08\x19\x5b\xc6\x96\xfb\xc7\x4d\xdf\xfe\x5d\xfa\x39\xd5\x0d\xeb\xf7\x6d\x4d\xc4\xf3\xe9\x36\x6c\x6a\x19\x3c\xe9\x1d\xe3\xd0\x52\x50\xcf\xa3\xa2\xdb\xeb\xfe\xb8\x6d\xa0\xeb\x74\xf4\xf0\xa9\x15\x39\x16\x28\xc1\x2c\x7b\xb0\x27\x58\xda\x3f\x00\x00\xff\xff\x57\xd4\xd5\x90\x5e\x00\x00\x00") func docGoBytes() ([]byte, error) { return bindataRead( @@ -545,8 +587,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1707132935, 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}} + info := bindataFileInfo{name: "doc.go", size: 94, mode: os.FileMode(0644), modTime: time.Unix(1700000000, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x81, 0x21, 0x7a, 0x87, 0xd2, 0xef, 0xcc, 0x25, 0x5e, 0x95, 0x3f, 0x25, 0x79, 0xf7, 0x18, 0xaf, 0x57, 0xe7, 0x1e, 0x58, 0x50, 0xbb, 0xea, 0x27, 0x98, 0x89, 0xe1, 0x9f, 0x5c, 0xf6, 0x0}} return a, nil } @@ -663,6 +705,8 @@ var _bindata = map[string]func() (*asset, error){ "1705664490_add_balance_check_fields_blocks_ranges_sequential.up.sql": _1705664490_add_balance_check_fields_blocks_ranges_sequentialUpSql, "1706531789_remove_gasfee-only-eth-transfers.up.sql": _1706531789_remove_gasfeeOnlyEthTransfersUpSql, "1707160323_add_contract_type_table.up.sql": _1707160323_add_contract_type_tableUpSql, + "1708089811_add_nullable_fiesl_blocks_ranges.up.sql": _1708089811_add_nullable_fiesl_blocks_rangesUpSql, + "1710189541_add_nonce_to_pending_transactions.up.sql": _1710189541_add_nonce_to_pending_transactionsUpSql, "doc.go": docGo, } @@ -734,6 +778,8 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1705664490_add_balance_check_fields_blocks_ranges_sequential.up.sql": {_1705664490_add_balance_check_fields_blocks_ranges_sequentialUpSql, map[string]*bintree{}}, "1706531789_remove_gasfee-only-eth-transfers.up.sql": {_1706531789_remove_gasfeeOnlyEthTransfersUpSql, map[string]*bintree{}}, "1707160323_add_contract_type_table.up.sql": {_1707160323_add_contract_type_tableUpSql, map[string]*bintree{}}, + "1708089811_add_nullable_fiesl_blocks_ranges.up.sql": {_1708089811_add_nullable_fiesl_blocks_rangesUpSql, map[string]*bintree{}}, + "1710189541_add_nonce_to_pending_transactions.up.sql": {_1710189541_add_nonce_to_pending_transactionsUpSql, map[string]*bintree{}}, "doc.go": {docGo, map[string]*bintree{}}, }} diff --git a/vendor/github.com/waku-org/go-waku/waku/v2/discv5/discover.go b/vendor/github.com/waku-org/go-waku/waku/v2/discv5/discover.go index dd9a462a..582e46d2 100644 --- a/vendor/github.com/waku-org/go-waku/waku/v2/discv5/discover.go +++ b/vendor/github.com/waku-org/go-waku/waku/v2/discv5/discover.go @@ -178,6 +178,7 @@ func (d *DiscoveryV5) listen(ctx context.Context) error { } + d.params.udpPort = uint(d.udpAddr.Port) d.localnode.SetFallbackUDP(d.udpAddr.Port) listener, err := discover.ListenV5(ctx, conn, d.localnode, d.config) diff --git a/vendor/github.com/waku-org/go-waku/waku/v2/protocol/enr/localnode.go b/vendor/github.com/waku-org/go-waku/waku/v2/protocol/enr/localnode.go index 08f98c3d..a297d54c 100644 --- a/vendor/github.com/waku-org/go-waku/waku/v2/protocol/enr/localnode.go +++ b/vendor/github.com/waku-org/go-waku/waku/v2/protocol/enr/localnode.go @@ -79,6 +79,10 @@ func WithIP(ipAddr *net.TCPAddr) ENROption { func WithUDPPort(udpPort uint) ENROption { return func(localnode *enode.LocalNode) (err error) { + if udpPort == 0 { + return nil + } + if udpPort > math.MaxUint16 { return errors.New("invalid udp port number") } diff --git a/vendor/github.com/waku-org/go-waku/waku/v2/utils/multiaddr.go b/vendor/github.com/waku-org/go-waku/waku/v2/utils/multiaddr.go index 53740344..8ba7630c 100644 --- a/vendor/github.com/waku-org/go-waku/waku/v2/utils/multiaddr.go +++ b/vendor/github.com/waku-org/go-waku/waku/v2/utils/multiaddr.go @@ -17,15 +17,15 @@ func EncapsulatePeerID(peerID peer.ID, addrs ...multiaddr.Multiaddr) []multiaddr return result } -func MultiAddrSet(addr ...multiaddr.Multiaddr) map[multiaddr.Multiaddr]struct{} { - r := make(map[multiaddr.Multiaddr]struct{}) +func MultiAddrSet(addr ...multiaddr.Multiaddr) map[string]multiaddr.Multiaddr { + r := make(map[string]multiaddr.Multiaddr) for _, a := range addr { - r[a] = struct{}{} + r[a.String()] = a } return r } -func MultiAddrSetEquals(m1 map[multiaddr.Multiaddr]struct{}, m2 map[multiaddr.Multiaddr]struct{}) bool { +func MultiAddrSetEquals(m1 map[string]multiaddr.Multiaddr, m2 map[string]multiaddr.Multiaddr) bool { if len(m1) != len(m2) { return false } @@ -40,10 +40,10 @@ func MultiAddrSetEquals(m1 map[multiaddr.Multiaddr]struct{}, m2 map[multiaddr.Mu return true } -func MultiAddrFromSet(m map[multiaddr.Multiaddr]struct{}) []multiaddr.Multiaddr { +func MultiAddrFromSet(m map[string]multiaddr.Multiaddr) []multiaddr.Multiaddr { var r []multiaddr.Multiaddr - for k := range m { - r = append(r, k) + for _, v := range m { + r = append(r, v) } return r } diff --git a/vendor/modules.txt b/vendor/modules.txt index 9bafbd0b..48420ab6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -561,7 +561,7 @@ github.com/jackpal/go-nat-pmp # github.com/jbenet/go-temp-err-catcher v0.1.0 ## explicit; go 1.13 github.com/jbenet/go-temp-err-catcher -# github.com/jellydator/ttlcache/v3 v3.1.0 +# github.com/jellydator/ttlcache/v3 v3.2.0 ## explicit; go 1.18 github.com/jellydator/ttlcache/v3 # github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a @@ -1285,7 +1285,7 @@ github.com/status-im/mvds/transport ## explicit; go 1.18 github.com/status-im/rendezvous github.com/status-im/rendezvous/protocol -# github.com/status-im/status-go v0.174.7-0.20240222013825-0aeaf82915d8 +# github.com/status-im/status-go v0.177.1-0.20240502181839-d59ff96b54fa ## explicit; go 1.19 github.com/status-im/status-go/account github.com/status-im/status-go/account/generator @@ -1296,6 +1296,7 @@ github.com/status-im/status-go/appdatabase github.com/status-im/status-go/appdatabase/migrations github.com/status-im/status-go/appdatabase/migrationsprevnodecfg github.com/status-im/status-go/appmetrics +github.com/status-im/status-go/circuitbreaker github.com/status-im/status-go/common github.com/status-im/status-go/common/dbsetup github.com/status-im/status-go/connection @@ -1310,6 +1311,7 @@ github.com/status-im/status-go/contracts/community-tokens/ownertoken github.com/status-im/status-go/contracts/community-tokens/registry github.com/status-im/status-go/contracts/directory github.com/status-im/status-go/contracts/ethscan +github.com/status-im/status-go/contracts/gas-price-oracle github.com/status-im/status-go/contracts/hop github.com/status-im/status-go/contracts/hop/bridge github.com/status-im/status-go/contracts/hop/swap @@ -1384,6 +1386,7 @@ github.com/status-im/status-go/protocol/pushnotificationserver github.com/status-im/status-go/protocol/pushnotificationserver/migrations github.com/status-im/status-go/protocol/requests github.com/status-im/status-go/protocol/sqlite +github.com/status-im/status-go/protocol/storenodes github.com/status-im/status-go/protocol/transport github.com/status-im/status-go/protocol/transport/migrations github.com/status-im/status-go/protocol/tt @@ -1548,7 +1551,7 @@ github.com/waku-org/go-discover/discover/v5wire github.com/waku-org/go-libp2p-rendezvous github.com/waku-org/go-libp2p-rendezvous/db github.com/waku-org/go-libp2p-rendezvous/pb -# github.com/waku-org/go-waku v0.8.1-0.20240220211751-9bb2c8e39680 +# github.com/waku-org/go-waku v0.8.1-0.20240322182925-dd81e1d46971 ## explicit; go 1.19 github.com/waku-org/go-waku/logging github.com/waku-org/go-waku/waku/persistence