diff --git a/go.mod b/go.mod index 626cd306b..057d0e666 100644 --- a/go.mod +++ b/go.mod @@ -64,7 +64,7 @@ require ( go.uber.org/zap v1.24.0 golang.org/x/crypto v0.7.0 golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb - google.golang.org/protobuf v1.30.1-0.20230508203708-b8fc77060104 + google.golang.org/protobuf v1.30.1-0.20230508203708-b8fc77060104 // indirect gopkg.in/go-playground/assert.v1 v1.2.1 // indirect gopkg.in/go-playground/validator.v9 v9.31.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 diff --git a/protocol/communities/community.go b/protocol/communities/community.go index 3b421610b..cdac7996f 100644 --- a/protocol/communities/community.go +++ b/protocol/communities/community.go @@ -468,8 +468,8 @@ type CommunityChanges struct { CategoriesAdded map[string]*protobuf.CommunityCategory `json:"categoriesAdded"` CategoriesModified map[string]*protobuf.CommunityCategory `json:"categoriesModified"` - MemberWalletsRemoved []string `json:"memberWalletsRemoved"` - MemberWalletsAdded map[string][]string `json:"memberWalletsAdded"` + MemberWalletsRemoved []string `json:"memberWalletsRemoved"` + MemberWalletsAdded map[string][]*protobuf.RevealedAccount `json:"memberWalletsAdded"` // ShouldMemberJoin indicates whether the user should join this community // automatically @@ -1829,7 +1829,7 @@ func (o *Community) AllowsAllMembersToPinMessage() bool { return o.config.CommunityDescription.AdminSettings != nil && o.config.CommunityDescription.AdminSettings.PinMessageAllMembersEnabled } -func (o *Community) AddMemberWallet(memberID string, addresses []string) (*CommunityChanges, error) { +func (o *Community) AddMemberRevealedAccounts(memberID string, accounts []*protobuf.RevealedAccount) (*CommunityChanges, error) { o.mutex.Lock() defer o.mutex.Unlock() @@ -1841,11 +1841,11 @@ func (o *Community) AddMemberWallet(memberID string, addresses []string) (*Commu return nil, ErrMemberNotFound } - o.config.CommunityDescription.Members[memberID].WalletAccounts = addresses + o.config.CommunityDescription.Members[memberID].RevealedAccounts = accounts o.increaseClock() changes := o.emptyCommunityChanges() - changes.MemberWalletsAdded[memberID] = o.config.CommunityDescription.Members[memberID].WalletAccounts + changes.MemberWalletsAdded[memberID] = o.config.CommunityDescription.Members[memberID].RevealedAccounts return changes, nil } @@ -1881,7 +1881,7 @@ func emptyCommunityChanges() *CommunityChanges { CategoriesModified: make(map[string]*protobuf.CommunityCategory), MemberWalletsRemoved: []string{}, - MemberWalletsAdded: make(map[string][]string), + MemberWalletsAdded: make(map[string][]*protobuf.RevealedAccount), } } diff --git a/protocol/communities/manager.go b/protocol/communities/manager.go index fe6f72c14..868b3aa08 100644 --- a/protocol/communities/manager.go +++ b/protocol/communities/manager.go @@ -39,6 +39,7 @@ import ( "github.com/status-im/status-go/protocol/protobuf" "github.com/status-im/status-go/protocol/requests" "github.com/status-im/status-go/protocol/transport" + walletcommon "github.com/status-im/status-go/services/wallet/common" "github.com/status-im/status-go/services/wallet/thirdparty/opensea" "github.com/status-im/status-go/services/wallet/token" "github.com/status-im/status-go/signal" @@ -127,7 +128,8 @@ type managerOptions struct { } type TokenManager interface { - GetBalancesByChain(ctx context.Context, accounts, tokens []gethcommon.Address) (map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, error) + GetBalancesByChain(ctx context.Context, accounts, tokens []gethcommon.Address, chainIDs []uint64) (map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, error) + GetAllChainIDs() ([]uint64, error) } type DefaultTokenManager struct { @@ -138,7 +140,9 @@ func NewDefaultTokenManager(tm *token.Manager) *DefaultTokenManager { return &DefaultTokenManager{tokenManager: tm} } -func (m *DefaultTokenManager) GetBalancesByChain(ctx context.Context, accounts, tokenAddresses []gethcommon.Address) (map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, error) { +type BalancesByChain = map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big + +func (m *DefaultTokenManager) GetAllChainIDs() ([]uint64, error) { networks, err := m.tokenManager.RPCClient.NetworkManager.Get(false) if err != nil { return nil, err @@ -148,7 +152,10 @@ func (m *DefaultTokenManager) GetBalancesByChain(ctx context.Context, accounts, for _, network := range networks { chainIDs = append(chainIDs, network.ChainID) } + return chainIDs, nil +} +func (m *DefaultTokenManager) GetBalancesByChain(ctx context.Context, accounts, tokenAddresses []gethcommon.Address, chainIDs []uint64) (BalancesByChain, error) { clients, err := m.tokenManager.RPCClient.EthClients(chainIDs) if err != nil { return nil, err @@ -652,12 +659,9 @@ func (m *Manager) checkMemberPermissions(communityID types.HexBytes) error { continue } - walletAddresses := make([]gethcommon.Address, 0) - for _, walletAddress := range member.WalletAccounts { - walletAddresses = append(walletAddresses, gethcommon.HexToAddress(walletAddress)) - } + accountsAndChainIDs := revealedAccountsToAccountsAndChainIDsCombination(member.RevealedAccounts) - permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, walletAddresses, true) + permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, accountsAndChainIDs, true) if err != nil { return err } @@ -1313,7 +1317,13 @@ func (m *Manager) CheckPermissionToJoin(id []byte, addresses []gethcommon.Addres becomeMemberPermissions := community.TokenPermissionsByType(protobuf.CommunityTokenPermission_BECOME_MEMBER) - hasPermission, err := m.checkPermissionToJoin(becomeMemberPermissions, addresses, false) + allChainIDs, err := m.tokenManager.GetAllChainIDs() + if err != nil { + return nil, err + } + + accountsAndChainIDs := combineAddressesAndChainIDs(addresses, allChainIDs) + hasPermission, err := m.checkPermissionToJoin(becomeMemberPermissions, accountsAndChainIDs, false) if err != nil { return nil, err } @@ -1333,20 +1343,17 @@ func (m *Manager) AcceptRequestToJoin(request *requests.AcceptRequestToJoinCommu } becomeMemberPermissions := community.TokenPermissionsByType(protobuf.CommunityTokenPermission_BECOME_MEMBER) - addressesToAdd := make([]string, 0) + revealedAccounts := make([]*protobuf.RevealedAccount, 0) if len(becomeMemberPermissions) > 0 { - revealedAddresses, err := m.persistence.GetRequestToJoinRevealedAddresses(dbRequest.ID) + revealedAccounts, err = m.persistence.GetRequestToJoinRevealedAddresses(dbRequest.ID) if err != nil { return nil, err } - walletAddresses := make([]gethcommon.Address, 0) - for _, walletAddress := range revealedAddresses { - walletAddresses = append(walletAddresses, gethcommon.HexToAddress(walletAddress)) - } + accountsAndChainIDs := revealedAccountsToAccountsAndChainIDsCombination(revealedAccounts) - permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, walletAddresses, true) + permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, accountsAndChainIDs, true) if err != nil { return nil, err } @@ -1355,8 +1362,6 @@ func (m *Manager) AcceptRequestToJoin(request *requests.AcceptRequestToJoinCommu if !hasPermission { return community, ErrNoPermissionToJoin } - - addressesToAdd = append(addressesToAdd, revealedAddresses...) } pk, err := common.HexToPubkey(dbRequest.PublicKey) @@ -1369,7 +1374,7 @@ func (m *Manager) AcceptRequestToJoin(request *requests.AcceptRequestToJoinCommu return nil, err } - _, err = community.AddMemberWallet(dbRequest.PublicKey, addressesToAdd) + _, err = community.AddMemberRevealedAccounts(dbRequest.PublicKey, revealedAccounts) if err != nil { return nil, err } @@ -1479,12 +1484,12 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request } requestToJoin := &RequestToJoin{ - PublicKey: common.PubkeyToHex(signer), - Clock: request.Clock, - ENSName: request.EnsName, - CommunityID: request.CommunityId, - State: RequestToJoinStatePending, - RevealedAddresses: request.RevealedAddresses, + PublicKey: common.PubkeyToHex(signer), + Clock: request.Clock, + ENSName: request.EnsName, + CommunityID: request.CommunityId, + State: RequestToJoinStatePending, + RevealedAccounts: request.RevealedAccounts, } requestToJoin.CalculateID() @@ -1511,7 +1516,7 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request if len(becomeMemberPermissions) > 0 { // we have token permissions but requester hasn't revealed // any addresses - if len(request.RevealedAddresses) == 0 { + if len(request.RevealedAccounts) == 0 { err = m.markRequestToJoinAsCanceled(signer, community) if err != nil { return nil, err @@ -1521,17 +1526,17 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request } // verify if revealed addresses indeed belong to requester - for address, signature := range request.RevealedAddresses { + for _, revealedAccount := range request.RevealedAccounts { recoverParams := account.RecoverParams{ Message: types.EncodeHex(crypto.Keccak256(crypto.CompressPubkey(signer), community.ID(), requestToJoin.ID)), - Signature: types.EncodeHex(signature), + Signature: types.EncodeHex(revealedAccount.Signature), } recovered, err := m.accountsManager.Recover(recoverParams) if err != nil { return nil, err } - if recovered.Hex() != address { + if recovered.Hex() != revealedAccount.Address { // if ownership of only one wallet address cannot be verified, // we mark the request as cancelled and stop err = m.markRequestToJoinAsCanceled(signer, community) @@ -1543,14 +1548,11 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request } } + accountsAndChainIDs := revealedAccountsToAccountsAndChainIDsCombination(request.RevealedAccounts) + // provided wallet addresses seem to be legit, so let's check // if the necessary token permission funds exist - verifiedAddresses := make([]gethcommon.Address, 0) - for walletAddress := range request.RevealedAddresses { - verifiedAddresses = append(verifiedAddresses, gethcommon.HexToAddress(walletAddress)) - } - - permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, verifiedAddresses, true) + permissionResponse, err := m.checkPermissionToJoin(becomeMemberPermissions, accountsAndChainIDs, true) if err != nil { return nil, err } @@ -1585,58 +1587,124 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request } type CheckPermissionToJoinResponse struct { - Satisfied bool `json:"satisfied"` - Permissions map[string]*CheckPermissionToJoinResult `json:"permissions"` + Satisfied bool `json:"satisfied"` + Permissions map[string]*CheckPermissionToJoinResult `json:"permissions"` + ValidCombinations []*AccountChainIDsCombination `json:"validCombinations"` } type CheckPermissionToJoinResult struct { Criteria []bool `json:"criteria"` } +type AccountChainIDsCombination struct { + Address gethcommon.Address `json:"address"` + ChainIDs []uint64 `json:"chainIds"` +} + func (c *CheckPermissionToJoinResponse) calculateSatisfied() { if len(c.Permissions) == 0 { c.Satisfied = true return } + c.Satisfied = false for _, p := range c.Permissions { - c.Satisfied = true + satisfied := true for _, criteria := range p.Criteria { if !criteria { - c.Satisfied = false + satisfied = false break } } + if satisfied { + c.Satisfied = true + } } } +func calculateChainIDsSet(accountsAndChainIDs []*AccountChainIDsCombination, requirementsChainIDs map[uint64]bool) []uint64 { + + revealedAccountsChainIDs := make([]uint64, 0) + revealedAccountsChainIDsMap := make(map[uint64]bool) + + // we want all chainIDs provided by revealed addresses that also exist + // in the token requirements + for _, accountAndChainIDs := range accountsAndChainIDs { + for _, chainID := range accountAndChainIDs.ChainIDs { + if requirementsChainIDs[chainID] && !revealedAccountsChainIDsMap[chainID] { + revealedAccountsChainIDsMap[chainID] = true + revealedAccountsChainIDs = append(revealedAccountsChainIDs, chainID) + } + } + } + return revealedAccountsChainIDs +} + // checkPermissionToJoin will retrieve balances and check whether the user has // permission to join the community, if shortcircuit is true, it will stop as soon // as we know the answer -func (m *Manager) checkPermissionToJoin(permissions []*protobuf.CommunityTokenPermission, walletAddresses []gethcommon.Address, shortcircuit bool) (*CheckPermissionToJoinResponse, error) { +func (m *Manager) checkPermissionToJoin(permissions []*protobuf.CommunityTokenPermission, accountsAndChainIDs []*AccountChainIDsCombination, shortcircuit bool) (*CheckPermissionToJoinResponse, error) { + response := &CheckPermissionToJoinResponse{ - Permissions: make(map[string]*CheckPermissionToJoinResult), + Satisfied: false, + Permissions: make(map[string]*CheckPermissionToJoinResult), + ValidCombinations: make([]*AccountChainIDsCombination, 0), } - erc20TokenRequirements, erc721TokenRequirements := extractTokenRequirements(permissions) + erc20TokenRequirements, erc721TokenRequirements, _ := ExtractTokenCriteria(permissions) - // find owned ERC721 tokens required by community's permissions - ownedERC721Tokens, err := m.getOwnedERC721Tokens(walletAddresses, erc721TokenRequirements) - if err != nil { - return response, err + erc20ChainIDsMap := make(map[uint64]bool) + erc721ChainIDsMap := make(map[uint64]bool) + + erc20TokenAddresses := make([]gethcommon.Address, 0) + accounts := make([]gethcommon.Address, 0) + + for _, accountAndChainIDs := range accountsAndChainIDs { + accounts = append(accounts, accountAndChainIDs.Address) } - // find owned ERC20 token balances required by community's permissions - ownedERC20Tokens, err := m.getAccumulatedTokenBalances(walletAddresses, erc20TokenRequirements) - if err != nil { - return response, err + // figure out chain IDs we're interested in + for chainID, tokens := range erc20TokenRequirements { + erc20ChainIDsMap[chainID] = true + for contractAddress := range tokens { + erc20TokenAddresses = append(erc20TokenAddresses, gethcommon.HexToAddress(contractAddress)) + } } - ownedENSNames, err := m.getOwnedENS(walletAddresses) - if err != nil { - return response, err + for chainID := range erc721TokenRequirements { + erc721ChainIDsMap[chainID] = true } + chainIDsForERC20 := calculateChainIDsSet(accountsAndChainIDs, erc20ChainIDsMap) + chainIDsForERC721 := calculateChainIDsSet(accountsAndChainIDs, erc721ChainIDsMap) + + // if there are no chain IDs that match token criteria chain IDs + // we aren't able to check balances on selected networks + if len(erc20ChainIDsMap) > 0 && len(chainIDsForERC20) == 0 { + return nil, errors.New("no chain IDs found to check token funds on") + } + + ownedERC20TokenBalances := make(map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, 0) + if len(chainIDsForERC20) > 0 { + // this only returns balances for the networks we're actually interested in + balances, err := m.tokenManager.GetBalancesByChain(context.Background(), accounts, erc20TokenAddresses, chainIDsForERC20) + if err != nil { + return nil, err + } + ownedERC20TokenBalances = balances + } + + ownedERC721Tokens := make(CollectiblesByChain) + if len(chainIDsForERC721) > 0 { + collectibles, err := m.GetOwnedERC721Tokens(accounts, erc721TokenRequirements, chainIDsForERC721) + if err != nil { + return nil, err + } + ownedERC721Tokens = collectibles + } + + accountsChainIDsCombinations := make(map[gethcommon.Address]map[uint64]bool) + for _, tokenPermission := range permissions { permissionRequirementsMet := true @@ -1649,63 +1717,131 @@ func (m *Manager) checkPermissionToJoin(permissions []*protobuf.CommunityTokenPe tokenRequirementMet := false - // check NFTs if tokenRequirement.Type == protobuf.CommunityTokenType_ERC721 { if len(ownedERC721Tokens) == 0 { response.Permissions[tokenPermission.Id].Criteria = append(response.Permissions[tokenPermission.Id].Criteria, false) continue } - contractAddressesLoop: + chainIDLoopERC721: for chainID, address := range tokenRequirement.ContractAddresses { - addr := strings.ToLower(address) - if _, exists := ownedERC721Tokens[chainID][addr]; !exists { - response.Permissions[tokenPermission.Id].Criteria = append(response.Permissions[tokenPermission.Id].Criteria, false) - continue + if _, exists := ownedERC721Tokens[chainID]; !exists || len(ownedERC721Tokens[chainID]) == 0 { + continue chainIDLoopERC721 } - if len(tokenRequirement.TokenIds) == 0 { - // no NFT with specific tokenId needs to be owned, - tokenRequirementMet = true - break contractAddressesLoop - } + for account := range ownedERC721Tokens[chainID] { + if _, exists := ownedERC721Tokens[chainID][account]; !exists { + continue + } - tokenIDsLoop: - for _, tokenID := range tokenRequirement.TokenIds { - tokenIDBigInt := new(big.Int).SetUint64(tokenID) - for _, asset := range ownedERC721Tokens[chainID][addr] { - if asset.TokenID.Cmp(tokenIDBigInt) == 0 { + if _, exists := ownedERC721Tokens[chainID][account][strings.ToLower(address)]; exists { + + if _, exists := accountsChainIDsCombinations[account]; !exists { + accountsChainIDsCombinations[account] = make(map[uint64]bool) + } + + if len(tokenRequirement.TokenIds) == 0 { + // no specific tokenId of this collection is needed tokenRequirementMet = true - break tokenIDsLoop + accountsChainIDsCombinations[account][chainID] = true + break chainIDLoopERC721 + } + + tokenIDsLoop: + for _, tokenID := range tokenRequirement.TokenIds { + tokenIDBigInt := new(big.Int).SetUint64(tokenID) + + for _, asset := range ownedERC721Tokens[chainID][account][strings.ToLower(address)] { + if asset.TokenID.Cmp(tokenIDBigInt) == 0 { + tokenRequirementMet = true + accountsChainIDsCombinations[account][chainID] = true + break tokenIDsLoop + } + } } } } } } else if tokenRequirement.Type == protobuf.CommunityTokenType_ERC20 { - if len(ownedERC20Tokens) == 0 { + if len(ownedERC20TokenBalances) == 0 { response.Permissions[tokenPermission.Id].Criteria = append(response.Permissions[tokenPermission.Id].Criteria, false) continue } - amount, _ := strconv.ParseFloat(tokenRequirement.Amount, 32) - if ownedERC20Tokens[tokenRequirement.Symbol].Cmp(big.NewFloat(amount)) != -1 { - tokenRequirementMet = true - } - } else if tokenRequirement.Type == protobuf.CommunityTokenType_ENS { - if len(ownedENSNames) == 0 { - response.Permissions[tokenPermission.Id].Criteria = append(response.Permissions[tokenPermission.Id].Criteria, false) - continue - } - if !strings.HasPrefix(tokenRequirement.EnsPattern, "*.") { - for _, ownedENS := range ownedENSNames { - if ownedENS == tokenRequirement.EnsPattern { + + accumulatedBalance := new(big.Float) + + chainIDLoopERC20: + for chainID, address := range tokenRequirement.ContractAddresses { + if _, exists := ownedERC20TokenBalances[chainID]; !exists || len(ownedERC20TokenBalances[chainID]) == 0 { + continue chainIDLoopERC20 + } + contractAddress := gethcommon.HexToAddress(address) + for account := range ownedERC20TokenBalances[chainID] { + if _, exists := ownedERC20TokenBalances[chainID][account][contractAddress]; !exists { + continue + } + + 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 { + // account has balance > 0 on this chain for this token, so let's add it the chain IDs + accountsChainIDsCombinations[account][chainID] = true + } + + // check if adding current chain account balance to accumulated balance + // satisfies required amount + prevBalance := accumulatedBalance + accumulatedBalance.Add(prevBalance, accountChainBalance) + + requiredAmount, err := strconv.ParseFloat(tokenRequirement.Amount, 32) + if err != nil { + return nil, err + } + + if accumulatedBalance.Cmp(big.NewFloat(requiredAmount)) != -1 { tokenRequirementMet = true + if shortcircuit { + break chainIDLoopERC20 + } } } - } else { - parentName := tokenRequirement.EnsPattern[2:] - for _, ownedENS := range ownedENSNames { - if strings.HasSuffix(ownedENS, parentName) { - tokenRequirementMet = true + } + + } else if tokenRequirement.Type == protobuf.CommunityTokenType_ENS { + + for _, account := range accounts { + ownedENSNames, err := m.getOwnedENS([]gethcommon.Address{account}) + if err != nil { + return nil, err + } + + if _, exists := accountsChainIDsCombinations[account]; !exists { + accountsChainIDsCombinations[account] = make(map[uint64]bool) + } + + if !strings.HasPrefix(tokenRequirement.EnsPattern, "*.") { + for _, ownedENS := range ownedENSNames { + if ownedENS == tokenRequirement.EnsPattern { + tokenRequirementMet = true + accountsChainIDsCombinations[account][walletcommon.EthereumMainnet] = true + } + } + } else { + parentName := tokenRequirement.EnsPattern[2:] + for _, ownedENS := range ownedENSNames { + if strings.HasSuffix(ownedENS, parentName) { + tokenRequirementMet = true + accountsChainIDsCombinations[account][walletcommon.EthereumMainnet] = true + } } } } @@ -1723,55 +1859,45 @@ func (m *Manager) checkPermissionToJoin(permissions []*protobuf.CommunityTokenPe } } + // attach valid account and chainID combinations to response + for account, chainIDs := range accountsChainIDsCombinations { + combination := &AccountChainIDsCombination{ + Address: account, + } + for chainID := range chainIDs { + combination.ChainIDs = append(combination.ChainIDs, chainID) + } + response.ValidCombinations = append(response.ValidCombinations, combination) + } + response.calculateSatisfied() return response, nil } -func extractTokenRequirements(permissions []*protobuf.CommunityTokenPermission) (map[uint64]map[string]*protobuf.TokenCriteria, map[uint64]map[string]*protobuf.TokenCriteria) { - erc20TokenRequirementsByChain := make(map[uint64]map[string]*protobuf.TokenCriteria) - erc721TokenRequirementsByChain := make(map[uint64]map[string]*protobuf.TokenCriteria) - for _, tokenPermission := range permissions { - for _, tokenRequirement := range tokenPermission.TokenCriteria { - isERC721 := tokenRequirement.Type == protobuf.CommunityTokenType_ERC721 - isERC20 := tokenRequirement.Type == protobuf.CommunityTokenType_ERC20 - for chainID, contractAddress := range tokenRequirement.ContractAddresses { +type CollectiblesByChain = map[uint64]map[gethcommon.Address]map[string][]opensea.Asset - _, existsERC721 := erc721TokenRequirementsByChain[chainID] - - if isERC721 && !existsERC721 { - erc721TokenRequirementsByChain[chainID] = make(map[string]*protobuf.TokenCriteria) - } - _, existsERC20 := erc20TokenRequirementsByChain[chainID] - - if isERC20 && !existsERC20 { - erc20TokenRequirementsByChain[chainID] = make(map[string]*protobuf.TokenCriteria) - } - - _, existsERC721 = erc721TokenRequirementsByChain[chainID][contractAddress] - if isERC721 && !existsERC721 { - erc721TokenRequirementsByChain[chainID][strings.ToLower(contractAddress)] = tokenRequirement - } - - _, existsERC20 = erc20TokenRequirementsByChain[chainID][contractAddress] - if isERC20 && !existsERC20 { - erc20TokenRequirementsByChain[chainID][strings.ToLower(contractAddress)] = tokenRequirement - } - } - } - } - return erc20TokenRequirementsByChain, erc721TokenRequirementsByChain -} - -func (m *Manager) getOwnedERC721Tokens(walletAddresses []gethcommon.Address, tokenRequirements map[uint64]map[string]*protobuf.TokenCriteria) (map[uint64]map[string][]opensea.Asset, error) { +func (m *Manager) GetOwnedERC721Tokens(walletAddresses []gethcommon.Address, tokenRequirements map[uint64]map[string]*protobuf.TokenCriteria, chainIDs []uint64) (CollectiblesByChain, error) { if m.walletConfig == nil || m.walletConfig.OpenseaAPIKey == "" { return nil, errors.New("no opensea client") } - ownedERC721Tokens := make(map[uint64]map[string][]opensea.Asset) + ownedERC721Tokens := make(map[uint64]map[gethcommon.Address]map[string][]opensea.Asset) for chainID, erc721Tokens := range tokenRequirements { + + skipChain := true + for _, cID := range chainIDs { + if chainID == cID { + skipChain = false + } + } + + if skipChain { + continue + } + client, err := m.openseaClientBuilder.NewOpenseaClient(chainID, m.walletConfig.OpenseaAPIKey, nil) if err != nil { return nil, err @@ -1783,7 +1909,7 @@ func (m *Manager) getOwnedERC721Tokens(walletAddresses []gethcommon.Address, tok } if _, exists := ownedERC721Tokens[chainID]; !exists { - ownedERC721Tokens[chainID] = make(map[string][]opensea.Asset) + ownedERC721Tokens[chainID] = make(map[gethcommon.Address]map[string][]opensea.Asset) } for _, owner := range walletAddresses { @@ -1793,52 +1919,25 @@ func (m *Manager) getOwnedERC721Tokens(walletAddresses []gethcommon.Address, tok return nil, err } + if len(assets.Assets) == 0 { + continue + } + + if _, exists := ownedERC721Tokens[chainID][owner]; !exists { + ownedERC721Tokens[chainID][owner] = make(map[string][]opensea.Asset, 0) + } + for _, asset := range assets.Assets { - if _, exists := ownedERC721Tokens[chainID][asset.Contract.Address]; !exists { - ownedERC721Tokens[chainID][asset.Contract.Address] = make([]opensea.Asset, 0) + if _, exists := ownedERC721Tokens[chainID][owner][asset.Contract.Address]; !exists { + ownedERC721Tokens[chainID][owner][asset.Contract.Address] = make([]opensea.Asset, 0) } - ownedERC721Tokens[chainID][asset.Contract.Address] = append(ownedERC721Tokens[chainID][asset.Contract.Address], asset) + ownedERC721Tokens[chainID][owner][asset.Contract.Address] = append(ownedERC721Tokens[chainID][owner][asset.Contract.Address], asset) } } } return ownedERC721Tokens, nil } -func (m *Manager) getAccumulatedTokenBalances(accounts []gethcommon.Address, tokenRequirements map[uint64]map[string]*protobuf.TokenCriteria) (map[string]*big.Float, error) { - - tokenAddresses := make([]gethcommon.Address, 0) - for _, tokens := range tokenRequirements { - for contractAddress := range tokens { - tokenAddresses = append(tokenAddresses, gethcommon.HexToAddress(contractAddress)) - } - } - - balancesByChain, err := m.tokenManager.GetBalancesByChain(context.Background(), accounts, tokenAddresses) - if err != nil { - return nil, err - } - - accumulatedBalances := make(map[string]*big.Float) - for chainID, accounts := range balancesByChain { - for _, contracts := range accounts { - for contract, value := range contracts { - if token, exists := tokenRequirements[chainID][strings.ToLower(contract.Hex())]; exists { - if _, exists := accumulatedBalances[token.Symbol]; !exists { - accumulatedBalances[token.Symbol] = new(big.Float) - } - balance := new(big.Float).Quo( - new(big.Float).SetInt(value.ToInt()), - big.NewFloat(math.Pow(10, float64(token.Decimals))), - ) - prevBalance := accumulatedBalances[token.Symbol] - accumulatedBalances[token.Symbol].Add(prevBalance, balance) - } - } - } - } - return accumulatedBalances, nil -} - func (m *Manager) getOwnedENS(addresses []gethcommon.Address) ([]string, error) { ownedENS := make([]string, 0) if m.ensVerifier == nil { @@ -2279,13 +2378,13 @@ func (m *Manager) RequestToJoin(requester *ecdsa.PublicKey, request *requests.Re clock := uint64(time.Now().Unix()) requestToJoin := &RequestToJoin{ - PublicKey: common.PubkeyToHex(requester), - Clock: clock, - ENSName: request.ENSName, - CommunityID: request.CommunityID, - State: RequestToJoinStatePending, - Our: true, - RevealedAddresses: make(map[string][]byte), + PublicKey: common.PubkeyToHex(requester), + Clock: clock, + ENSName: request.ENSName, + CommunityID: request.CommunityID, + State: RequestToJoinStatePending, + Our: true, + RevealedAccounts: make([]*protobuf.RevealedAccount, 0), } requestToJoin.CalculateID() @@ -3502,3 +3601,25 @@ func (m *Manager) UpdateCommunity(c *Community) error { m.publish(&Subscription{Community: c}) return nil } + +func combineAddressesAndChainIDs(addresses []gethcommon.Address, chainIDs []uint64) []*AccountChainIDsCombination { + combinations := make([]*AccountChainIDsCombination, 0) + for _, address := range addresses { + combinations = append(combinations, &AccountChainIDsCombination{ + Address: address, + ChainIDs: chainIDs, + }) + } + return combinations +} + +func revealedAccountsToAccountsAndChainIDsCombination(revealedAccounts []*protobuf.RevealedAccount) []*AccountChainIDsCombination { + accountsAndChainIDs := make([]*AccountChainIDsCombination, 0) + for _, revealedAccount := range revealedAccounts { + accountsAndChainIDs = append(accountsAndChainIDs, &AccountChainIDsCombination{ + Address: gethcommon.HexToAddress(revealedAccount.Address), + ChainIDs: revealedAccount.ChainIds, + }) + } + return accountsAndChainIDs +} diff --git a/protocol/communities/manager_test.go b/protocol/communities/manager_test.go index 05477b8fa..97613d8e0 100644 --- a/protocol/communities/manager_test.go +++ b/protocol/communities/manager_test.go @@ -102,7 +102,11 @@ func (m *testTokenManager) setResponse(chainID uint64, walletAddress, tokenAddre } -func (m *testTokenManager) GetBalancesByChain(ctx context.Context, accounts, tokenAddresses []gethcommon.Address) (map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, error) { +func (m *testTokenManager) GetAllChainIDs() ([]uint64, error) { + return []uint64{5}, nil +} + +func (m *testTokenManager) GetBalancesByChain(ctx context.Context, accounts, tokenAddresses []gethcommon.Address, chainIDs []uint64) (map[uint64]map[gethcommon.Address]map[gethcommon.Address]*hexutil.Big, error) { return m.response, nil } @@ -154,18 +158,22 @@ func (s *ManagerSuite) TestRetrieveTokens() { }, } - wallets := []gethcommon.Address{gethcommon.HexToAddress("0xD6b912e09E797D291E8D0eA3D3D17F8000e01c32")} - + accountChainIDsCombination := []*AccountChainIDsCombination{ + &AccountChainIDsCombination{ + Address: gethcommon.HexToAddress("0xD6b912e09E797D291E8D0eA3D3D17F8000e01c32"), + ChainIDs: []uint64{chainID}, + }, + } // Set response to exactly the right one - tm.setResponse(chainID, wallets[0], gethcommon.HexToAddress(contractAddresses[chainID]), int64(1*math.Pow(10, float64(decimals)))) - resp, err := m.checkPermissionToJoin(permissions, wallets, false) + tm.setResponse(chainID, accountChainIDsCombination[0].Address, gethcommon.HexToAddress(contractAddresses[chainID]), int64(1*math.Pow(10, float64(decimals)))) + resp, err := m.checkPermissionToJoin(permissions, accountChainIDsCombination, false) s.Require().NoError(err) s.Require().NotNil(resp) s.Require().True(resp.Satisfied) // Set response to 0 - tm.setResponse(chainID, wallets[0], gethcommon.HexToAddress(contractAddresses[chainID]), 0) - resp, err = m.checkPermissionToJoin(permissions, wallets, false) + tm.setResponse(chainID, accountChainIDsCombination[0].Address, gethcommon.HexToAddress(contractAddresses[chainID]), 0) + resp, err = m.checkPermissionToJoin(permissions, accountChainIDsCombination, false) s.Require().NoError(err) s.Require().NotNil(resp) s.Require().False(resp.Satisfied) diff --git a/protocol/communities/persistence.go b/protocol/communities/persistence.go index b623be857..7c1f779ca 100644 --- a/protocol/communities/persistence.go +++ b/protocol/communities/persistence.go @@ -6,6 +6,8 @@ import ( "database/sql" "errors" "fmt" + "strconv" + "strings" "github.com/golang/protobuf/proto" "go.uber.org/zap" @@ -336,16 +338,23 @@ func (p *Persistence) SaveRequestToJoinRevealedAddresses(request *RequestToJoin) _ = tx.Rollback() }() - query := `INSERT OR REPLACE INTO communities_requests_to_join_revealed_addresses (request_id, address) VALUES (?, ?)` + query := `INSERT OR REPLACE INTO communities_requests_to_join_revealed_addresses (request_id, address, chain_ids) VALUES (?, ?, ?)` stmt, err := tx.Prepare(query) if err != nil { return } defer stmt.Close() - for address := range request.RevealedAddresses { + for _, account := range request.RevealedAccounts { + + var chainIDs []string + for _, ID := range account.ChainIds { + chainIDs = append(chainIDs, strconv.Itoa(int(ID))) + } + _, err = stmt.Exec( request.ID, - address, + account.Address, + strings.Join(chainIDs, ","), ) if err != nil { return @@ -354,9 +363,9 @@ func (p *Persistence) SaveRequestToJoinRevealedAddresses(request *RequestToJoin) return } -func (p *Persistence) GetRequestToJoinRevealedAddresses(requestID []byte) ([]string, error) { - revealedAddresses := make([]string, 0) - rows, err := p.db.Query(`SELECT address FROM communities_requests_to_join_revealed_addresses WHERE request_id = ?`, requestID) +func (p *Persistence) GetRequestToJoinRevealedAddresses(requestID []byte) ([]*protobuf.RevealedAccount, error) { + revealedAccounts := make([]*protobuf.RevealedAccount, 0) + rows, err := p.db.Query(`SELECT address, chain_ids FROM communities_requests_to_join_revealed_addresses WHERE request_id = ?`, requestID) if err != nil { return nil, err } @@ -364,13 +373,30 @@ func (p *Persistence) GetRequestToJoinRevealedAddresses(requestID []byte) ([]str for rows.Next() { address := "" - err := rows.Scan(&address) + chainIDsStr := "" + err := rows.Scan(&address, &chainIDsStr) if err != nil { return nil, err } - revealedAddresses = append(revealedAddresses, address) + + chainIDs := make([]uint64, 0) + for _, chainIDstr := range strings.Split(chainIDsStr, ",") { + if chainIDstr != "" { + chainID, err := strconv.Atoi(chainIDstr) + if err != nil { + return nil, err + } + chainIDs = append(chainIDs, uint64(chainID)) + } + } + + revealedAccount := &protobuf.RevealedAccount{ + Address: address, + ChainIds: chainIDs, + } + revealedAccounts = append(revealedAccounts, revealedAccount) } - return revealedAddresses, nil + return revealedAccounts, nil } func (p *Persistence) SaveRequestToLeave(request *RequestToLeave) error { diff --git a/protocol/communities/request_to_join.go b/protocol/communities/request_to_join.go index 046c2d746..9d0ba1dff 100644 --- a/protocol/communities/request_to_join.go +++ b/protocol/communities/request_to_join.go @@ -19,16 +19,16 @@ const ( ) type RequestToJoin struct { - ID types.HexBytes `json:"id"` - PublicKey string `json:"publicKey"` - Clock uint64 `json:"clock"` - ENSName string `json:"ensName,omitempty"` - ChatID string `json:"chatId"` - CommunityID types.HexBytes `json:"communityId"` - State RequestToJoinState `json:"state"` - Our bool `json:"our"` - RevealedAddresses map[string][]byte `json:"revealedAddresses,omitempty"` - Deleted bool `json:"deleted"` + ID types.HexBytes `json:"id"` + PublicKey string `json:"publicKey"` + Clock uint64 `json:"clock"` + ENSName string `json:"ensName,omitempty"` + ChatID string `json:"chatId"` + CommunityID types.HexBytes `json:"communityId"` + State RequestToJoinState `json:"state"` + Our bool `json:"our"` + Deleted bool `json:"deleted"` + RevealedAccounts []*protobuf.RevealedAccount `json:"revealedAccounts,omitempty"` } func (r *RequestToJoin) CalculateID() { @@ -37,14 +37,14 @@ func (r *RequestToJoin) CalculateID() { func (r *RequestToJoin) ToSyncProtobuf() *protobuf.SyncCommunityRequestsToJoin { return &protobuf.SyncCommunityRequestsToJoin{ - Id: r.ID, - PublicKey: r.PublicKey, - Clock: r.Clock, - EnsName: r.ENSName, - ChatId: r.ChatID, - CommunityId: r.CommunityID, - State: uint64(r.State), - RevealedAddresses: r.RevealedAddresses, + Id: r.ID, + PublicKey: r.PublicKey, + Clock: r.Clock, + EnsName: r.ENSName, + ChatId: r.ChatID, + CommunityId: r.CommunityID, + State: uint64(r.State), + RevealedAccounts: r.RevealedAccounts, } } @@ -56,7 +56,7 @@ func (r *RequestToJoin) InitFromSyncProtobuf(proto *protobuf.SyncCommunityReques r.ChatID = proto.ChatId r.CommunityID = proto.CommunityId r.State = RequestToJoinState(proto.State) - r.RevealedAddresses = proto.RevealedAddresses + r.RevealedAccounts = proto.RevealedAccounts } func (r *RequestToJoin) Empty() bool { diff --git a/protocol/communities/utils.go b/protocol/communities/utils.go index 785fc0ead..bd9df755b 100644 --- a/protocol/communities/utils.go +++ b/protocol/communities/utils.go @@ -2,12 +2,58 @@ package communities import ( "fmt" + "strings" "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/protobuf" ) func CalculateRequestID(publicKey string, communityID types.HexBytes) types.HexBytes { idString := fmt.Sprintf("%s-%s", publicKey, communityID) return crypto.Keccak256([]byte(idString)) } + +func ExtractTokenCriteria(permissions []*protobuf.CommunityTokenPermission) (erc20TokenCriteria map[uint64]map[string]*protobuf.TokenCriteria, erc721TokenCriteria map[uint64]map[string]*protobuf.TokenCriteria, ensTokenCriteria []string) { + erc20TokenCriteria = make(map[uint64]map[string]*protobuf.TokenCriteria) + erc721TokenCriteria = make(map[uint64]map[string]*protobuf.TokenCriteria) + ensTokenCriteria = make([]string, 0) + + for _, tokenPermission := range permissions { + for _, tokenRequirement := range tokenPermission.TokenCriteria { + + isERC721 := tokenRequirement.Type == protobuf.CommunityTokenType_ERC721 + isERC20 := tokenRequirement.Type == protobuf.CommunityTokenType_ERC20 + isENS := tokenRequirement.Type == protobuf.CommunityTokenType_ENS + + for chainID, contractAddress := range tokenRequirement.ContractAddresses { + + _, existsERC721 := erc721TokenCriteria[chainID] + + if isERC721 && !existsERC721 { + erc721TokenCriteria[chainID] = make(map[string]*protobuf.TokenCriteria) + } + _, existsERC20 := erc20TokenCriteria[chainID] + + if isERC20 && !existsERC20 { + erc20TokenCriteria[chainID] = make(map[string]*protobuf.TokenCriteria) + } + + _, existsERC721 = erc721TokenCriteria[chainID][contractAddress] + if isERC721 && !existsERC721 { + erc721TokenCriteria[chainID][strings.ToLower(contractAddress)] = tokenRequirement + } + + _, existsERC20 = erc20TokenCriteria[chainID][contractAddress] + if isERC20 && !existsERC20 { + erc20TokenCriteria[chainID][strings.ToLower(contractAddress)] = tokenRequirement + } + + if isENS { + ensTokenCriteria = append(ensTokenCriteria, tokenRequirement.EnsPattern) + } + } + } + } + return +} diff --git a/protocol/communities_messenger_test.go b/protocol/communities_messenger_test.go index e904e302c..932b80b05 100644 --- a/protocol/communities_messenger_test.go +++ b/protocol/communities_messenger_test.go @@ -3443,11 +3443,11 @@ func (s *MessengerCommunitiesSuite) TestCommunityBanUserRequesToJoin() { s.Require().NoError(err) requestToJoinProto := &protobuf.CommunityRequestToJoin{ - Clock: rtj.Clock, - EnsName: rtj.ENSName, - DisplayName: displayName, - CommunityId: community.ID(), - RevealedAddresses: make(map[string][]byte), + Clock: rtj.Clock, + EnsName: rtj.ENSName, + DisplayName: displayName, + CommunityId: community.ID(), + RevealedAccounts: make([]*protobuf.RevealedAccount, 0), } s.Require().NoError(err) diff --git a/protocol/messenger_communities.go b/protocol/messenger_communities.go index 9ddb9f6e8..af7f88c72 100644 --- a/protocol/messenger_communities.go +++ b/protocol/messenger_communities.go @@ -14,6 +14,7 @@ import ( "golang.org/x/time/rate" + gethcommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/ethclient" @@ -24,7 +25,6 @@ import ( "github.com/meirf/gopart" - gethcommon "github.com/ethereum/go-ethereum/common" "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" @@ -606,20 +606,25 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun } requestToJoinProto := &protobuf.CommunityRequestToJoin{ - Clock: requestToJoin.Clock, - EnsName: requestToJoin.ENSName, - DisplayName: displayName, - CommunityId: community.ID(), - RevealedAddresses: make(map[string][]byte), + Clock: requestToJoin.Clock, + EnsName: requestToJoin.ENSName, + DisplayName: displayName, + CommunityId: community.ID(), + RevealedAccounts: make([]*protobuf.RevealedAccount, 0), } // find wallet accounts and attach wallet addresses and // signatures to request if request.Password != "" { + walletAccounts, err := m.settings.GetAccounts() if err != nil { return nil, err } + + revealedAccounts := make(map[gethcommon.Address]*protobuf.RevealedAccount) + revealedAddresses := make([]gethcommon.Address, 0) + for _, walletAccount := range walletAccounts { if !walletAccount.Chat && walletAccount.Type != accounts.AccountTypeWatch { verifiedAccount, err := m.accountsManager.GetVerifiedWalletAccount(m.settings, walletAccount.Address.Hex(), request.Password) @@ -637,9 +642,29 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun if err != nil { return nil, err } - requestToJoinProto.RevealedAddresses[verifiedAccount.Address.Hex()] = signatureBytes + + revealedAddress := gethcommon.HexToAddress(verifiedAccount.Address.Hex()) + revealedAddresses = append(revealedAddresses, revealedAddress) + revealedAccounts[revealedAddress] = &protobuf.RevealedAccount{ + Address: verifiedAccount.Address.Hex(), + Signature: signatureBytes, + ChainIds: make([]uint64, 0), + } } } + + response, err := m.communitiesManager.CheckPermissionToJoin(community.ID(), revealedAddresses) + if err != nil { + return nil, err + } + + for _, accountAndChainIDs := range response.ValidCombinations { + revealedAccounts[accountAndChainIDs.Address].ChainIds = accountAndChainIDs.ChainIDs + } + + for _, revealedAccount := range revealedAccounts { + requestToJoinProto.RevealedAccounts = append(requestToJoinProto.RevealedAccounts, revealedAccount) + } } payload, err := proto.Marshal(requestToJoinProto) diff --git a/protocol/migrations/migrations.go b/protocol/migrations/migrations.go index 84f0105b5..8665e0a29 100644 --- a/protocol/migrations/migrations.go +++ b/protocol/migrations/migrations.go @@ -91,6 +91,7 @@ // 1684174617_add_url_previews_to_user_messages.up.sql (58B) // 1684175608_add_token_balances.up.sql (467B) // 1684979808_sync_activity_center_notifications.up.sql (169B) +// 1685964183_add_chainids_to_revealed_addresses.up.sql (88B) // README.md (554B) // doc.go (850B) @@ -176,7 +177,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(1645429416, 0)} + info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -196,7 +197,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(1645429416, 0)} + info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -216,7 +217,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(1645429416, 0)} + info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -236,7 +237,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(1645429416, 0)} + info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -256,7 +257,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(1645429416, 0)} + info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -276,7 +277,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(1645429416, 0)} + info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -296,7 +297,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(1645429416, 0)} + info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -316,7 +317,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(1645429416, 0)} + info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -336,7 +337,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(1645429416, 0)} + info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -356,7 +357,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(1645429416, 0)} + info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -376,7 +377,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(1645429416, 0)} + info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -396,7 +397,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(1645429416, 0)} + info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -416,7 +417,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(1645429416, 0)} + info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -436,7 +437,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(1645429416, 0)} + info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -456,7 +457,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(1645429416, 0)} + info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -476,7 +477,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(1645429416, 0)} + info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -496,7 +497,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(1645429416, 0)} + info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -516,7 +517,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(1645429416, 0)} + info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -536,7 +537,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(1645429416, 0)} + info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -556,7 +557,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(1645429416, 0)} + info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -576,7 +577,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(1645429416, 0)} + info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -596,7 +597,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(1645429416, 0)} + info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -616,7 +617,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(1645429416, 0)} + info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -636,7 +637,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(1645666387, 0)} + info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -656,7 +657,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(1645666387, 0)} + info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -676,7 +677,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(1645666387, 0)} + info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -696,7 +697,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(1645666387, 0)} + info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -716,7 +717,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(1645666387, 0)} + info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -736,7 +737,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(1645666387, 0)} + info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -756,7 +757,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(1645666387, 0)} + info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -776,7 +777,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(1645666387, 0)} + info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -796,7 +797,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(1645666387, 0)} + info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -816,7 +817,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(1645666387, 0)} + info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -836,7 +837,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(1645666387, 0)} + info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -856,7 +857,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(1645666387, 0)} + info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -876,7 +877,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(1645666387, 0)} + info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -896,7 +897,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(1645666387, 0)} + info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -916,7 +917,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(1645666387, 0)} + info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -936,7 +937,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(1645666387, 0)} + info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -956,7 +957,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(1645666387, 0)} + info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -976,7 +977,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(1645666387, 0)} + info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -996,7 +997,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(1645666387, 0)} + info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1016,7 +1017,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(1645666387, 0)} + info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1036,7 +1037,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(1645666387, 0)} + info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1056,7 +1057,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(1645666387, 0)} + info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1076,7 +1077,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(1645666387, 0)} + info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1096,7 +1097,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(1645666387, 0)} + info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1116,7 +1117,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(1645666387, 0)} + info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1136,7 +1137,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(1645666387, 0)} + info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1156,7 +1157,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(1675323803, 0)} + info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1176,7 +1177,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(1675323803, 0)} + info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1196,7 +1197,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(1675323803, 0)} + info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1216,7 +1217,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(1675323803, 0)} + info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1236,7 +1237,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(1675323803, 0)} + info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1256,7 +1257,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(1675323803, 0)} + info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1276,7 +1277,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(1675323803, 0)} + info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1296,7 +1297,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(1675323803, 0)} + info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1316,7 +1317,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(1675323803, 0)} + info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1336,7 +1337,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(1675323803, 0)} + info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1356,7 +1357,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(1675323803, 0)} + info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1376,7 +1377,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(1675323803, 0)} + info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1396,7 +1397,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(1675323803, 0)} + info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1416,7 +1417,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(1675323803, 0)} + info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1436,7 +1437,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(1675323803, 0)} + info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1456,7 +1457,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(1675323803, 0)} + info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1476,7 +1477,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(1675323803, 0)} + info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1496,7 +1497,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(1675323803, 0)} + info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1516,7 +1517,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(1675323803, 0)} + info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1536,7 +1537,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(1675323803, 0)} + info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1556,7 +1557,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(1675323803, 0)} + info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1576,7 +1577,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(1675323904, 0)} + info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1596,7 +1597,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(1675323904, 0)} + info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1616,7 +1617,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(1677122376, 0)} + info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1636,7 +1637,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(1675323904, 0)} + info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1656,7 +1657,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(1677468108, 0)} + info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1676,7 +1677,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(1677468108, 0)} + info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1696,7 +1697,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(1677564198, 0)} + info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1716,7 +1717,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(1679051421, 0)} + info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1736,7 +1737,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(1679302848, 0)} + info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1756,7 +1757,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(1679652393, 0)} + info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1776,7 +1777,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(1680000580, 0)} + info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1796,7 +1797,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(1680260624, 0)} + info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1816,7 +1817,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(1680260624, 0)} + info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1836,7 +1837,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(1681955252, 0)} + info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1856,7 +1857,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(1682560340, 0)} + info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1876,7 +1877,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(1683172161, 0)} + info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1896,7 +1897,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(1683811675, 0)} + info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1916,7 +1917,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(1683810836, 0)} + info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -1936,7 +1937,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(1684505071, 0)} + info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0664), modTime: time.Unix(1685964136, 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 } @@ -1956,7 +1957,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(1684755650, 0)} + info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0664), modTime: time.Unix(1685964136, 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 } @@ -1976,11 +1977,31 @@ 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(1686047555, 0)} + info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1686553047, 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 } +var __1685964183_add_chainids_to_revealed_addressesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x04\xc0\x41\x0a\x42\x21\x10\x06\xe0\xfd\x3b\xc5\xdc\xa3\x95\xf5\xdc\x59\x41\x4c\xd0\x6e\x10\xe7\x87\x26\x52\xc9\xd1\xce\xff\xbe\x90\x38\x3e\x88\xc3\x39\x45\x2a\xbd\xd6\xd5\x6c\x1a\x5c\x06\x7e\x0b\x3e\x5d\x66\x97\x4f\xb7\x26\x03\x7f\xe4\x2f\x54\xb2\xea\x80\x3b\x9c\xc2\xbe\xd3\xe5\x9e\x9e\xd7\x1b\x95\x77\xb6\x26\xa6\x4e\x1c\x5f\x7c\xda\xb6\x23\x00\x00\xff\xff\x9e\xc9\xd7\x81\x58\x00\x00\x00") + +func _1685964183_add_chainids_to_revealed_addressesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1685964183_add_chainids_to_revealed_addressesUpSql, + "1685964183_add_chainids_to_revealed_addresses.up.sql", + ) +} + +func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) { + bytes, err := _1685964183_add_chainids_to_revealed_addressesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1686553047, 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 +} + 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) { @@ -1996,7 +2017,7 @@ func readmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)} + info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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 } @@ -2016,7 +2037,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1645429416, 0)} + info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1685952633, 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}} return a, nil } @@ -2294,6 +2315,8 @@ var _bindata = map[string]func() (*asset, error){ "1684979808_sync_activity_center_notifications.up.sql": _1684979808_sync_activity_center_notificationsUpSql, + "1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql, + "README.md": readmeMd, "doc.go": docGo, @@ -2431,6 +2454,7 @@ var _bintree = &bintree{nil, 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{}}, + "1685964183_add_chainids_to_revealed_addresses.up.sql": &bintree{_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}}, "README.md": &bintree{readmeMd, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}}, }} diff --git a/protocol/migrations/sqlite/1685964183_add_chainids_to_revealed_addresses.up.sql b/protocol/migrations/sqlite/1685964183_add_chainids_to_revealed_addresses.up.sql new file mode 100644 index 000000000..d42fede77 --- /dev/null +++ b/protocol/migrations/sqlite/1685964183_add_chainids_to_revealed_addresses.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE communities_requests_to_join_revealed_addresses ADD COLUMN chain_ids TEXT; + diff --git a/protocol/protobuf/communities.pb.go b/protocol/protobuf/communities.pb.go index 2dcc5eb1c..1a0642f0a 100644 --- a/protocol/protobuf/communities.pb.go +++ b/protocol/protobuf/communities.pb.go @@ -175,7 +175,7 @@ func (m *Grant) GetClock() uint64 { type CommunityMember struct { Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"` - WalletAccounts []string `protobuf:"bytes,2,rep,name=wallet_accounts,json=walletAccounts,proto3" json:"wallet_accounts,omitempty"` + RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -213,9 +213,9 @@ func (m *CommunityMember) GetRoles() []CommunityMember_Roles { return nil } -func (m *CommunityMember) GetWalletAccounts() []string { +func (m *CommunityMember) GetRevealedAccounts() []*RevealedAccount { if m != nil { - return m.WalletAccounts + return m.RevealedAccounts } return nil } @@ -908,23 +908,78 @@ func (m *CommunityInvitation) GetPublicKey() []byte { return nil } +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"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RevealedAccount) Reset() { *m = RevealedAccount{} } +func (m *RevealedAccount) String() string { return proto.CompactTextString(m) } +func (*RevealedAccount) ProtoMessage() {} +func (*RevealedAccount) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []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 + } + return "" +} + +func (m *RevealedAccount) GetSignature() []byte { + if m != nil { + return m.Signature + } + return nil +} + +func (m *RevealedAccount) GetChainIds() []uint64 { + if m != nil { + return m.ChainIds + } + return nil +} + 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"` - RevealedAddresses map[string][]byte `protobuf:"bytes,6,rep,name=revealed_addresses,json=revealedAddresses,proto3" json:"revealed_addresses,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:"-"` + 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:"-"` } func (m *CommunityRequestToJoin) Reset() { *m = CommunityRequestToJoin{} } func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) } func (*CommunityRequestToJoin) ProtoMessage() {} func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{11} + return fileDescriptor_f937943d74c1cd8b, []int{12} } func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error { @@ -980,9 +1035,9 @@ func (m *CommunityRequestToJoin) GetDisplayName() string { return "" } -func (m *CommunityRequestToJoin) GetRevealedAddresses() map[string][]byte { +func (m *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount { if m != nil { - return m.RevealedAddresses + return m.RevealedAccounts } return nil } @@ -1002,7 +1057,7 @@ func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelReq func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) } func (*CommunityCancelRequestToJoin) ProtoMessage() {} func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{12} + return fileDescriptor_f937943d74c1cd8b, []int{13} } func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error { @@ -1074,7 +1129,7 @@ func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequest func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) } func (*CommunityRequestToJoinResponse) ProtoMessage() {} func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{13} + return fileDescriptor_f937943d74c1cd8b, []int{14} } func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error { @@ -1149,7 +1204,7 @@ func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } func (*CommunityRequestToLeave) ProtoMessage() {} func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{14} + return fileDescriptor_f937943d74c1cd8b, []int{15} } func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { @@ -1196,7 +1251,7 @@ func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMess func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{15} + return fileDescriptor_f937943d74c1cd8b, []int{16} } func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { @@ -1248,7 +1303,7 @@ func (m *WakuMessage) Reset() { *m = WakuMessage{} } func (m *WakuMessage) String() string { return proto.CompactTextString(m) } func (*WakuMessage) ProtoMessage() {} func (*WakuMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{16} + return fileDescriptor_f937943d74c1cd8b, []int{17} } func (m *WakuMessage) XXX_Unmarshal(b []byte) error { @@ -1332,7 +1387,7 @@ func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMe func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveMetadata) ProtoMessage() {} func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{17} + return fileDescriptor_f937943d74c1cd8b, []int{18} } func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { @@ -1394,7 +1449,7 @@ func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} } func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchive) ProtoMessage() {} func (*WakuMessageArchive) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{18} + return fileDescriptor_f937943d74c1cd8b, []int{19} } func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { @@ -1451,7 +1506,7 @@ func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArch func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{19} + return fileDescriptor_f937943d74c1cd8b, []int{20} } func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { @@ -1518,7 +1573,7 @@ func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveIndex) ProtoMessage() {} func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{20} + return fileDescriptor_f937943d74c1cd8b, []int{21} } func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { @@ -1568,8 +1623,8 @@ func init() { proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry") proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory") proto.RegisterType((*CommunityInvitation)(nil), "protobuf.CommunityInvitation") + proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount") proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") - proto.RegisterMapType((map[string][]byte)(nil), "protobuf.CommunityRequestToJoin.RevealedAddressesEntry") proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin") proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse") proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave") @@ -1587,126 +1642,127 @@ func init() { } var fileDescriptor_f937943d74c1cd8b = []byte{ - // 1927 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x5f, 0x6f, 0x23, 0x49, - 0x11, 0xdf, 0xf1, 0x9f, 0xc4, 0x2e, 0xff, 0x89, 0xd3, 0xbb, 0x49, 0x26, 0xd9, 0xdd, 0x4b, 0x76, - 0x00, 0x5d, 0x4e, 0x08, 0xef, 0x9d, 0x0f, 0xc4, 0xea, 0x0e, 0xee, 0xce, 0x9b, 0x58, 0x8b, 0xd9, - 0xd8, 0xce, 0x75, 0x1c, 0x8e, 0x3b, 0x01, 0xa3, 0xce, 0x4c, 0xc7, 0x69, 0x65, 0x3c, 0x63, 0xa6, - 0xdb, 0x01, 0xf3, 0xc0, 0x13, 0x1f, 0x82, 0x77, 0x5e, 0x11, 0x5f, 0x81, 0x07, 0x5e, 0x11, 0x8f, - 0x48, 0xbc, 0xf1, 0x84, 0xf8, 0x04, 0x3c, 0xa3, 0xee, 0x9e, 0x19, 0xcf, 0x38, 0x76, 0xb2, 0x68, - 0x41, 0xe2, 0xc9, 0x53, 0xd5, 0x55, 0xd5, 0xd5, 0x55, 0xbf, 0xae, 0xae, 0x32, 0x6c, 0x3a, 0xc1, - 0x78, 0x3c, 0xf5, 0x99, 0x60, 0x94, 0x37, 0x27, 0x61, 0x20, 0x02, 0x54, 0x52, 0x3f, 0x17, 0xd3, - 0xcb, 0xbd, 0x87, 0xce, 0x15, 0x11, 0x36, 0x73, 0xa9, 0x2f, 0x98, 0x98, 0xe9, 0xe5, 0xbd, 0x0a, - 0xf5, 0xa7, 0xe3, 0x48, 0xd6, 0xba, 0x81, 0xe2, 0xab, 0x90, 0xf8, 0x02, 0x3d, 0x83, 0x6a, 0x6c, - 0x69, 0x66, 0x33, 0xd7, 0x34, 0x0e, 0x8c, 0xc3, 0x2a, 0xae, 0x24, 0xbc, 0xae, 0x8b, 0x1e, 0x43, - 0x79, 0x4c, 0xc7, 0x17, 0x34, 0x94, 0xeb, 0x39, 0xb5, 0x5e, 0xd2, 0x8c, 0xae, 0x8b, 0x76, 0x60, - 0x3d, 0xda, 0xcc, 0xcc, 0x1f, 0x18, 0x87, 0x65, 0xbc, 0x26, 0xc9, 0xae, 0x8b, 0x1e, 0x41, 0xd1, - 0xf1, 0x02, 0xe7, 0xda, 0x2c, 0x1c, 0x18, 0x87, 0x05, 0xac, 0x09, 0xeb, 0xcf, 0x06, 0x6c, 0x1c, - 0xc5, 0xb6, 0x7b, 0xca, 0x08, 0xfa, 0x0e, 0x14, 0xc3, 0xc0, 0xa3, 0xdc, 0x34, 0x0e, 0xf2, 0x87, - 0xf5, 0xd6, 0x7e, 0x33, 0x3e, 0x47, 0x73, 0x41, 0xb2, 0x89, 0xa5, 0x18, 0xd6, 0xd2, 0xe8, 0x5d, - 0xd8, 0xf8, 0x05, 0xf1, 0x3c, 0x2a, 0x6c, 0xe2, 0x38, 0xc1, 0xd4, 0x17, 0xdc, 0xcc, 0x1d, 0xe4, - 0x0f, 0xcb, 0xb8, 0xae, 0xd9, 0xed, 0x88, 0x6b, 0x7d, 0x09, 0x45, 0xa5, 0x88, 0x1a, 0x50, 0x3d, - 0xef, 0xbf, 0xee, 0x0f, 0xbe, 0xe8, 0xdb, 0x78, 0x70, 0xd2, 0x69, 0x3c, 0x40, 0x55, 0x28, 0xc9, - 0x2f, 0xbb, 0x7d, 0x72, 0xd2, 0x30, 0xd0, 0x16, 0x6c, 0x2a, 0xaa, 0xd7, 0xee, 0xb7, 0x5f, 0x75, - 0xec, 0xf3, 0xb3, 0x0e, 0x3e, 0x6b, 0xe4, 0xd0, 0x2e, 0x6c, 0x69, 0xf6, 0xe0, 0xb8, 0x83, 0xdb, - 0xc3, 0x8e, 0x7d, 0x34, 0xe8, 0x0f, 0x3b, 0xfd, 0x61, 0x23, 0x6f, 0xfd, 0x23, 0x07, 0xdb, 0x89, - 0x93, 0xc3, 0xe0, 0x9a, 0xfa, 0x3d, 0x2a, 0x88, 0x4b, 0x04, 0x41, 0x97, 0x80, 0x9c, 0xc0, 0x17, - 0x21, 0x71, 0x84, 0x4d, 0x5c, 0x37, 0xa4, 0x9c, 0x47, 0x47, 0xac, 0xb4, 0xbe, 0xbb, 0xe4, 0x88, - 0x19, 0xed, 0xe6, 0x51, 0xa4, 0xda, 0x8e, 0x35, 0x3b, 0xbe, 0x08, 0x67, 0x78, 0xd3, 0x59, 0xe4, - 0xa3, 0x03, 0xa8, 0xb8, 0x94, 0x3b, 0x21, 0x9b, 0x08, 0x16, 0xf8, 0x2a, 0x3f, 0x65, 0x9c, 0x66, - 0xc9, 0x4c, 0xb0, 0x31, 0x19, 0xd1, 0x28, 0x41, 0x9a, 0x40, 0x1f, 0x41, 0x59, 0xc8, 0x2d, 0x87, - 0xb3, 0x09, 0x55, 0x39, 0xaa, 0xb7, 0x9e, 0xac, 0x72, 0x4b, 0xca, 0xe0, 0xb9, 0x38, 0xda, 0x86, - 0x35, 0x3e, 0x1b, 0x5f, 0x04, 0x9e, 0x59, 0xd4, 0x39, 0xd7, 0x14, 0x42, 0x50, 0xf0, 0xc9, 0x98, - 0x9a, 0x6b, 0x8a, 0xab, 0xbe, 0xf7, 0x8e, 0x65, 0x84, 0x96, 0x1d, 0x06, 0x35, 0x20, 0x7f, 0x4d, - 0x67, 0x0a, 0x71, 0x05, 0x2c, 0x3f, 0xa5, 0xa7, 0x37, 0xc4, 0x9b, 0xd2, 0xe8, 0x14, 0x9a, 0xf8, - 0x28, 0xf7, 0xc2, 0xb0, 0xfe, 0x6e, 0xc0, 0xa3, 0xc4, 0xa7, 0x53, 0x1a, 0x8e, 0x19, 0xe7, 0x2c, - 0xf0, 0x39, 0xda, 0x85, 0x12, 0xf5, 0xb9, 0x1d, 0xf8, 0x9e, 0xb6, 0x54, 0xc2, 0xeb, 0xd4, 0xe7, - 0x03, 0xdf, 0x9b, 0x21, 0x13, 0xd6, 0x27, 0x21, 0xbb, 0x21, 0x42, 0xdb, 0x2b, 0xe1, 0x98, 0x44, - 0xdf, 0x87, 0x35, 0xe2, 0x38, 0x94, 0x73, 0x15, 0x92, 0x7a, 0xeb, 0x1b, 0x4b, 0x0e, 0x9e, 0xda, - 0xa4, 0xd9, 0x56, 0xc2, 0x38, 0x52, 0xb2, 0x86, 0xb0, 0xa6, 0x39, 0x08, 0x41, 0x3d, 0x46, 0x54, - 0xfb, 0xe8, 0xa8, 0x73, 0x76, 0xd6, 0x78, 0x80, 0x36, 0xa1, 0xd6, 0x1f, 0xd8, 0xbd, 0x4e, 0xef, - 0x65, 0x07, 0x9f, 0xfd, 0xa0, 0x7b, 0xda, 0x30, 0xd0, 0x43, 0xd8, 0xe8, 0xf6, 0x7f, 0xd4, 0x1d, - 0xb6, 0x87, 0xdd, 0x41, 0xdf, 0x1e, 0xf4, 0x4f, 0xbe, 0x6c, 0xe4, 0x50, 0x1d, 0x60, 0xd0, 0xb7, - 0x71, 0xe7, 0xf3, 0xf3, 0xce, 0x99, 0xc4, 0xd2, 0x6f, 0xf2, 0x50, 0x53, 0xd1, 0x3e, 0x0a, 0x99, - 0xa0, 0x21, 0x23, 0xe8, 0xa7, 0x77, 0x40, 0xa8, 0x39, 0x77, 0x39, 0xa3, 0xf4, 0x1f, 0x20, 0xe7, - 0x7d, 0x28, 0x08, 0x99, 0xfc, 0xdc, 0x1b, 0x24, 0x5f, 0x49, 0xa6, 0xf2, 0x9e, 0x5f, 0x9a, 0xf7, - 0xc2, 0x3c, 0xef, 0x52, 0x96, 0x8c, 0xe5, 0x05, 0x8c, 0x31, 0xa2, 0x29, 0x59, 0x4d, 0x14, 0x90, - 0x6c, 0xe6, 0x72, 0x73, 0xed, 0x20, 0x7f, 0x58, 0xc0, 0x25, 0xc5, 0xe8, 0xba, 0x1c, 0xed, 0x43, - 0x45, 0x66, 0x73, 0x42, 0x84, 0xa0, 0xa1, 0x6f, 0xae, 0x2b, 0x4d, 0xa0, 0x3e, 0x3f, 0xd5, 0x1c, - 0xb4, 0x07, 0x25, 0x97, 0x3a, 0x6c, 0x4c, 0x3c, 0x6e, 0x96, 0x14, 0x70, 0x12, 0xfa, 0xbf, 0x84, - 0xb4, 0xdf, 0xe7, 0xc0, 0xcc, 0x06, 0x60, 0x8e, 0x04, 0x54, 0x87, 0x5c, 0x54, 0x23, 0xcb, 0x38, - 0xc7, 0x5c, 0xf4, 0x71, 0x26, 0x84, 0xef, 0xae, 0x0a, 0xe1, 0xdc, 0x42, 0x33, 0x15, 0xcd, 0x4f, - 0xa0, 0xae, 0x23, 0xe1, 0x44, 0xb9, 0x33, 0xf3, 0x2a, 0xb5, 0x3b, 0x2b, 0x52, 0x8b, 0x6b, 0x22, - 0x03, 0x8f, 0x5d, 0x28, 0x45, 0xa5, 0x97, 0x9b, 0x05, 0x55, 0xf9, 0xd6, 0x75, 0xed, 0xe5, 0xe8, - 0x29, 0x00, 0xe3, 0x76, 0x8c, 0xfe, 0xa2, 0x42, 0x7f, 0x99, 0xf1, 0x53, 0xcd, 0xb0, 0xba, 0x50, - 0x50, 0xf7, 0xf8, 0x09, 0x98, 0x31, 0x7c, 0x87, 0x83, 0xd7, 0x9d, 0xbe, 0x7d, 0xda, 0xc1, 0xbd, - 0xee, 0xd9, 0x59, 0x77, 0xd0, 0x6f, 0x3c, 0x90, 0xe5, 0xf2, 0x65, 0xe7, 0x68, 0xd0, 0xeb, 0xd8, - 0xed, 0xe3, 0x5e, 0xb7, 0xdf, 0x30, 0x24, 0xb4, 0x23, 0x8e, 0x86, 0x77, 0x23, 0x67, 0xfd, 0xab, - 0x9c, 0xba, 0x98, 0xc7, 0xd9, 0xaa, 0xa3, 0xeb, 0xbf, 0x91, 0xaa, 0xff, 0xa8, 0x03, 0xeb, 0xfa, - 0xe9, 0xd0, 0xc5, 0xba, 0xd2, 0xfa, 0xe6, 0x92, 0x98, 0xa5, 0xcc, 0x34, 0x75, 0xe5, 0x8f, 0x40, - 0x1c, 0xeb, 0xa2, 0xcf, 0xa0, 0x32, 0x99, 0xdf, 0x4f, 0x85, 0xc6, 0x4a, 0xeb, 0x9d, 0xbb, 0x6f, - 0x31, 0x4e, 0xab, 0xa0, 0x16, 0x94, 0xe2, 0xf7, 0x51, 0xc5, 0xa7, 0xd2, 0xda, 0x4e, 0xa9, 0xab, - 0x30, 0xea, 0x55, 0x9c, 0xc8, 0xa1, 0x4f, 0xa1, 0x28, 0x03, 0xac, 0x61, 0x5b, 0x69, 0xbd, 0x77, - 0x8f, 0xeb, 0xd2, 0x4a, 0xe4, 0xb8, 0xd6, 0x93, 0x19, 0xbb, 0x20, 0xbe, 0xed, 0x31, 0x2e, 0xcc, - 0x75, 0x9d, 0xb1, 0x0b, 0xe2, 0x9f, 0x30, 0x2e, 0x50, 0x1f, 0xc0, 0x21, 0x82, 0x8e, 0x82, 0x90, - 0x51, 0x09, 0xed, 0x85, 0x3b, 0xbe, 0x7c, 0x83, 0x44, 0x41, 0xef, 0x92, 0xb2, 0x80, 0x5e, 0x80, - 0x49, 0x42, 0xe7, 0x8a, 0xdd, 0x50, 0x7b, 0x4c, 0x46, 0x3e, 0x15, 0x1e, 0xf3, 0xaf, 0x6d, 0x9d, - 0x91, 0xb2, 0xca, 0xc8, 0x76, 0xb4, 0xde, 0x4b, 0x96, 0x8f, 0x54, 0x8a, 0x5e, 0x41, 0x9d, 0xb8, - 0x63, 0xe6, 0xdb, 0x9c, 0x0a, 0xc1, 0xfc, 0x11, 0x37, 0x41, 0xc5, 0xe7, 0x60, 0x89, 0x37, 0x6d, - 0x29, 0x78, 0x16, 0xc9, 0xe1, 0x1a, 0x49, 0x93, 0xe8, 0x6b, 0x50, 0x63, 0xbe, 0x08, 0x03, 0x7b, - 0x4c, 0x39, 0x97, 0xef, 0x4f, 0x45, 0xdd, 0x9b, 0xaa, 0x62, 0xf6, 0x34, 0x4f, 0x0a, 0x05, 0xd3, - 0xb4, 0x50, 0x55, 0x0b, 0x29, 0x66, 0x2c, 0xf4, 0x04, 0xca, 0xd4, 0x77, 0xc2, 0xd9, 0x44, 0x50, - 0xd7, 0xac, 0x69, 0x34, 0x27, 0x0c, 0x59, 0x7d, 0x04, 0x19, 0x71, 0xb3, 0xae, 0x22, 0xaa, 0xbe, - 0x11, 0x81, 0x4d, 0x7d, 0xb7, 0xd2, 0x30, 0xd9, 0x50, 0x51, 0xfd, 0xf6, 0x3d, 0x51, 0x5d, 0xb8, - 0xb1, 0x51, 0x6c, 0x1b, 0x62, 0x81, 0x8d, 0x7e, 0x02, 0xbb, 0xf3, 0xce, 0x49, 0xad, 0x72, 0x7b, - 0x1c, 0xbd, 0xdf, 0x66, 0x43, 0x6d, 0x75, 0x70, 0xdf, 0x3b, 0x8f, 0x77, 0x9c, 0x0c, 0x9f, 0x27, - 0xed, 0xc3, 0xfb, 0xf0, 0x88, 0x38, 0x42, 0xa5, 0x4f, 0x63, 0xde, 0x56, 0xdd, 0x8c, 0xb9, 0xa9, - 0x72, 0x87, 0xf4, 0x5a, 0x74, 0x39, 0x8e, 0xe4, 0xca, 0xde, 0x39, 0x54, 0xd3, 0x97, 0x25, 0x5d, - 0xf4, 0xca, 0xba, 0xe8, 0x3d, 0x4f, 0x17, 0xbd, 0x4a, 0x6b, 0x77, 0x65, 0xa3, 0x95, 0xaa, 0x87, - 0x7b, 0x9f, 0x03, 0xcc, 0x81, 0xbc, 0xc4, 0xe8, 0xb7, 0xb2, 0x46, 0x77, 0x96, 0x18, 0x95, 0xfa, - 0x69, 0x93, 0x5f, 0xc1, 0xc6, 0x02, 0x74, 0x97, 0xd8, 0xfd, 0x20, 0x6b, 0xf7, 0xf1, 0x32, 0xbb, - 0xda, 0xc8, 0x2c, 0x6d, 0x7b, 0x04, 0x5b, 0x4b, 0x13, 0xb8, 0x64, 0x87, 0x17, 0xd9, 0x1d, 0xac, - 0xfb, 0xab, 0x77, 0xfa, 0x9d, 0xf8, 0x59, 0xaa, 0xf3, 0xcb, 0x5c, 0x03, 0x74, 0x0c, 0xfb, 0x13, - 0xe6, 0xc7, 0x80, 0xb6, 0x89, 0xe7, 0x25, 0x39, 0xa4, 0x3e, 0xb9, 0xf0, 0xa8, 0x1b, 0x75, 0x2a, - 0x8f, 0x27, 0xcc, 0x8f, 0x20, 0xde, 0xf6, 0xbc, 0x24, 0x79, 0x4a, 0xc4, 0xfa, 0x5b, 0x0e, 0x6a, - 0x99, 0x08, 0xa2, 0x4f, 0xe6, 0xb5, 0x53, 0xf7, 0x00, 0x5f, 0x5f, 0x11, 0xeb, 0x37, 0x2b, 0x9a, - 0xb9, 0xb7, 0x2b, 0x9a, 0xf9, 0x37, 0x2c, 0x9a, 0xfb, 0x50, 0x89, 0xca, 0x92, 0x9a, 0x2f, 0x74, - 0x8b, 0x10, 0x57, 0x2a, 0x39, 0x5e, 0xec, 0x41, 0x69, 0x12, 0x70, 0xa6, 0xba, 0x57, 0x59, 0x89, - 0x8b, 0x38, 0xa1, 0xff, 0x47, 0x98, 0xb6, 0x5c, 0xd8, 0xbc, 0x05, 0xa2, 0x45, 0x47, 0x8d, 0x5b, - 0x8e, 0xc6, 0x5d, 0x4e, 0x2e, 0xd5, 0xe5, 0xa4, 0x9d, 0xcf, 0x67, 0x9d, 0xb7, 0x7e, 0x6b, 0xc0, - 0xc3, 0x64, 0x9b, 0xae, 0x7f, 0xc3, 0x04, 0x51, 0x2f, 0xe3, 0x87, 0xb0, 0x35, 0x2f, 0x1c, 0xe9, - 0xde, 0x5d, 0xcf, 0x5e, 0x8f, 0x9c, 0x15, 0xcf, 0xe9, 0x48, 0x0e, 0x6c, 0xd1, 0x00, 0xa6, 0x89, - 0xd5, 0xd3, 0xd7, 0x53, 0x80, 0xc9, 0xf4, 0xc2, 0x63, 0x8e, 0x2d, 0xe3, 0x55, 0x50, 0x3a, 0x65, - 0xcd, 0x79, 0x4d, 0x67, 0xd6, 0x5f, 0xd3, 0x73, 0x0b, 0xa6, 0x3f, 0x9f, 0x52, 0x2e, 0x86, 0xc1, - 0x0f, 0x03, 0xb6, 0xea, 0xdd, 0x8e, 0xda, 0xec, 0xd4, 0xf9, 0x65, 0x9b, 0xdd, 0x97, 0x21, 0x58, - 0xe9, 0xc3, 0xe2, 0x68, 0x59, 0xb8, 0x3d, 0x5a, 0x3e, 0x83, 0xaa, 0xcb, 0xf8, 0xc4, 0x23, 0x33, - 0x6d, 0xba, 0x18, 0x4d, 0x2f, 0x9a, 0xa7, 0xcc, 0x5f, 0x02, 0x0a, 0xe9, 0x0d, 0x25, 0x1e, 0x75, - 0x53, 0x4d, 0xf0, 0xda, 0xca, 0x39, 0x2a, 0x73, 0x9a, 0x26, 0x8e, 0x54, 0x17, 0xbb, 0xe1, 0x70, - 0x91, 0x2f, 0xbb, 0xc7, 0xe5, 0xc2, 0x4b, 0x40, 0x97, 0xe9, 0x1e, 0xab, 0x69, 0x64, 0xfd, 0xc1, - 0x80, 0x27, 0x29, 0x68, 0xf9, 0x0e, 0xf5, 0xfe, 0xaf, 0xc3, 0x6b, 0xfd, 0xd3, 0x80, 0x77, 0x96, - 0xc7, 0x0e, 0x53, 0x3e, 0x09, 0x7c, 0x4e, 0x57, 0xb8, 0xfc, 0x3d, 0x28, 0x27, 0x5b, 0xdd, 0x51, - 0x4b, 0x52, 0x18, 0xc6, 0x73, 0x05, 0x79, 0x6f, 0xe4, 0x30, 0xa5, 0x1e, 0xf4, 0xbc, 0x2a, 0x86, - 0x09, 0x3d, 0x87, 0x7a, 0x21, 0x0d, 0xf5, 0xc5, 0xe3, 0x16, 0x6f, 0x1f, 0xf7, 0x29, 0x80, 0xee, - 0x75, 0xec, 0x69, 0xc8, 0xa2, 0x21, 0xb4, 0xac, 0x39, 0xe7, 0x21, 0xb3, 0x30, 0xec, 0xdc, 0x3e, - 0xe9, 0x09, 0x25, 0x37, 0xab, 0x8e, 0xb8, 0xb8, 0x65, 0xee, 0xd6, 0x96, 0xd6, 0x8f, 0xe1, 0x59, - 0xaa, 0xce, 0xe8, 0x52, 0xbe, 0xd8, 0x56, 0xad, 0xb0, 0x9e, 0xf5, 0x36, 0xb7, 0xe8, 0xed, 0x1f, - 0x0d, 0xa8, 0x7c, 0x41, 0xae, 0xa7, 0x71, 0x0f, 0xd4, 0x80, 0x3c, 0x67, 0xa3, 0xa8, 0x46, 0xc8, - 0x4f, 0xd9, 0x15, 0x09, 0x36, 0xa6, 0x5c, 0x90, 0xf1, 0x44, 0xe9, 0x17, 0xf0, 0x9c, 0x21, 0x37, - 0x15, 0xc1, 0x84, 0x39, 0x2a, 0xbc, 0x55, 0xac, 0x09, 0x35, 0x13, 0x93, 0x99, 0x17, 0x90, 0x18, - 0x2f, 0x31, 0xa9, 0x57, 0x5c, 0x97, 0xf9, 0xa3, 0x28, 0xb4, 0x31, 0x29, 0xeb, 0xde, 0x15, 0xe1, - 0x57, 0x2a, 0xa0, 0x55, 0xac, 0xbe, 0x91, 0x05, 0x55, 0x71, 0xc5, 0x42, 0xf7, 0x94, 0x84, 0x32, - 0x0e, 0xd1, 0xa4, 0x96, 0xe1, 0x59, 0xbf, 0x86, 0xbd, 0xd4, 0x01, 0xe2, 0xb0, 0xc4, 0x0d, 0x8e, - 0x09, 0xeb, 0x37, 0x34, 0xe4, 0x71, 0xdd, 0xab, 0xe1, 0x98, 0x94, 0xfb, 0x5d, 0x86, 0xc1, 0x38, - 0x3a, 0x92, 0xfa, 0x96, 0x83, 0x97, 0x08, 0xd4, 0x51, 0x0a, 0x38, 0x27, 0x02, 0xb9, 0xbf, 0x1c, - 0x68, 0xa9, 0x2f, 0x86, 0xea, 0x90, 0x72, 0xfe, 0xa9, 0xe2, 0x0c, 0xcf, 0xfa, 0x9d, 0x01, 0xe8, - 0xb6, 0x03, 0x77, 0x6c, 0xfc, 0x19, 0x94, 0x92, 0x06, 0x4e, 0x23, 0x3a, 0xf5, 0xc2, 0xae, 0x3e, - 0x0a, 0x4e, 0xb4, 0xd0, 0x07, 0xd2, 0x82, 0x92, 0xe1, 0xd1, 0x30, 0xb7, 0xb5, 0xd4, 0x02, 0x4e, - 0xc4, 0xac, 0x3f, 0x19, 0xb0, 0x7f, 0xdb, 0x76, 0xd7, 0x77, 0xe9, 0x2f, 0xdf, 0x20, 0x56, 0x6f, - 0xef, 0xf2, 0x36, 0xac, 0x05, 0x97, 0x97, 0x9c, 0x8a, 0x28, 0xba, 0x11, 0x25, 0xb3, 0xc0, 0xd9, - 0xaf, 0x68, 0xf4, 0xf7, 0x9d, 0xfa, 0x5e, 0xc4, 0x48, 0x21, 0xc1, 0x88, 0xf5, 0x17, 0x03, 0x76, - 0x56, 0x9c, 0x02, 0xbd, 0x86, 0x52, 0x34, 0x6a, 0xc4, 0x8d, 0xcb, 0xf3, 0xbb, 0x7c, 0x54, 0x4a, - 0xcd, 0x88, 0x88, 0xea, 0x75, 0x62, 0x60, 0xef, 0x12, 0x6a, 0x99, 0xa5, 0x25, 0xd5, 0xf9, 0xd3, - 0x6c, 0x4b, 0xf0, 0xde, 0xbd, 0x9b, 0x25, 0x51, 0x99, 0x17, 0xf2, 0x97, 0xb5, 0xaf, 0x2a, 0xcd, - 0xe7, 0x1f, 0xc7, 0x9a, 0x17, 0x6b, 0xea, 0xeb, 0xc3, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x50, - 0x24, 0xc4, 0xac, 0x77, 0x15, 0x00, 0x00, + // 1948 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0x23, 0x47, + 0x15, 0xcf, 0xe8, 0x8f, 0x2d, 0x3d, 0x49, 0x5e, 0xb9, 0x77, 0x6d, 0x8f, 0xbd, 0xbb, 0xb1, 0x76, + 0x80, 0xc2, 0x29, 0x0a, 0x6d, 0xe2, 0x40, 0xb1, 0x95, 0x40, 0x12, 0xad, 0x2d, 0x16, 0xb1, 0x96, + 0xe4, 0xb4, 0x65, 0x42, 0x52, 0xc0, 0x54, 0x7b, 0xa6, 0x2d, 0x77, 0x59, 0x9a, 0x11, 0xd3, 0x2d, + 0x17, 0xe2, 0xc0, 0x89, 0x0f, 0xc1, 0x9d, 0x2b, 0xc5, 0x57, 0xe0, 0xc0, 0x9d, 0x3b, 0x37, 0x4e, + 0x14, 0x55, 0x5c, 0x38, 0x71, 0xa6, 0xfa, 0xcf, 0x8c, 0x66, 0x64, 0xc9, 0xde, 0x54, 0xa0, 0x8a, + 0x93, 0xe6, 0xbd, 0x7e, 0xfd, 0x5e, 0xbf, 0xf7, 0x7e, 0xfd, 0xfa, 0x3d, 0xc1, 0xa6, 0x17, 0x8e, + 0xc7, 0xd3, 0x80, 0x09, 0x46, 0x79, 0x73, 0x12, 0x85, 0x22, 0x44, 0x25, 0xf5, 0x73, 0x31, 0xbd, + 0xdc, 0x7b, 0xe8, 0x5d, 0x11, 0xe1, 0x32, 0x9f, 0x06, 0x82, 0x89, 0x99, 0x5e, 0xde, 0xab, 0xd0, + 0x60, 0x3a, 0x36, 0xb2, 0xce, 0x0d, 0x14, 0x5f, 0x45, 0x24, 0x10, 0xe8, 0x19, 0x54, 0x63, 0x4d, + 0x33, 0x97, 0xf9, 0xb6, 0xd5, 0xb0, 0x0e, 0xaa, 0xb8, 0x92, 0xf0, 0x3a, 0x3e, 0x7a, 0x0c, 0xe5, + 0x31, 0x1d, 0x5f, 0xd0, 0x48, 0xae, 0xe7, 0xd4, 0x7a, 0x49, 0x33, 0x3a, 0x3e, 0xda, 0x81, 0x75, + 0x63, 0xcc, 0xce, 0x37, 0xac, 0x83, 0x32, 0x5e, 0x93, 0x64, 0xc7, 0x47, 0x8f, 0xa0, 0xe8, 0x8d, + 0x42, 0xef, 0xda, 0x2e, 0x34, 0xac, 0x83, 0x02, 0xd6, 0x84, 0xf3, 0x4f, 0x0b, 0x1e, 0x1c, 0xc5, + 0xba, 0xbb, 0x4a, 0x09, 0xfa, 0x2e, 0x14, 0xa3, 0x70, 0x44, 0xb9, 0x6d, 0x35, 0xf2, 0x07, 0x1b, + 0x87, 0xfb, 0xcd, 0xd8, 0x8f, 0xe6, 0x82, 0x64, 0x13, 0x4b, 0x31, 0xac, 0xa5, 0xd1, 0x0f, 0x61, + 0x33, 0xa2, 0x37, 0x94, 0x8c, 0xa8, 0xef, 0x12, 0xcf, 0x0b, 0xa7, 0x81, 0xe0, 0x76, 0xae, 0x91, + 0x3f, 0xa8, 0x1c, 0xee, 0xce, 0x55, 0x60, 0x23, 0xd2, 0xd2, 0x12, 0xb8, 0x1e, 0x65, 0x19, 0xdc, + 0xf9, 0x1c, 0x8a, 0x4a, 0x2f, 0xaa, 0x43, 0xf5, 0xbc, 0xf7, 0xba, 0xd7, 0xff, 0xac, 0xe7, 0xe2, + 0xfe, 0x49, 0xbb, 0xfe, 0x16, 0xaa, 0x42, 0x49, 0x7e, 0xb9, 0xad, 0x93, 0x93, 0xba, 0x85, 0xb6, + 0x60, 0x53, 0x51, 0xdd, 0x56, 0xaf, 0xf5, 0xaa, 0xed, 0x9e, 0x9f, 0xb5, 0xf1, 0x59, 0x3d, 0x87, + 0x76, 0x61, 0x4b, 0xb3, 0xfb, 0xc7, 0x6d, 0xdc, 0x1a, 0xb4, 0xdd, 0xa3, 0x7e, 0x6f, 0xd0, 0xee, + 0x0d, 0xea, 0x79, 0xe7, 0xef, 0x39, 0xd8, 0x4e, 0x7c, 0x18, 0x84, 0xd7, 0x34, 0xe8, 0x52, 0x41, + 0x7c, 0x22, 0x08, 0xba, 0x04, 0xe4, 0x85, 0x81, 0x88, 0x88, 0x27, 0x5c, 0xe2, 0xfb, 0x11, 0xe5, + 0xdc, 0x44, 0xa0, 0x72, 0xf8, 0xbd, 0x25, 0x11, 0xc8, 0xec, 0x6e, 0x1e, 0x99, 0xad, 0xad, 0x78, + 0x67, 0x3b, 0x10, 0xd1, 0x0c, 0x6f, 0x7a, 0x8b, 0x7c, 0xd4, 0x80, 0x8a, 0x4f, 0xb9, 0x17, 0xb1, + 0x89, 0x60, 0x61, 0xa0, 0xd2, 0x57, 0xc6, 0x69, 0x96, 0x4c, 0x14, 0x1b, 0x93, 0x21, 0x35, 0xf9, + 0xd3, 0x04, 0xfa, 0x00, 0xca, 0x42, 0x9a, 0x1c, 0xcc, 0x26, 0x54, 0xa5, 0x70, 0xe3, 0xf0, 0xc9, + 0xaa, 0x63, 0x49, 0x19, 0x3c, 0x17, 0x47, 0xdb, 0xb0, 0xc6, 0x67, 0xe3, 0x8b, 0x70, 0x64, 0x17, + 0x35, 0x24, 0x34, 0x85, 0x10, 0x14, 0x02, 0x32, 0xa6, 0xf6, 0x9a, 0xe2, 0xaa, 0xef, 0xbd, 0x63, + 0x19, 0xa1, 0x65, 0xce, 0xa0, 0x3a, 0xe4, 0xaf, 0xe9, 0x4c, 0x01, 0xb2, 0x80, 0xe5, 0xa7, 0x3c, + 0xe9, 0x0d, 0x19, 0x4d, 0xa9, 0xf1, 0x42, 0x13, 0x1f, 0xe4, 0x5e, 0x58, 0xce, 0xdf, 0x2c, 0x78, + 0x94, 0x9c, 0xe9, 0x94, 0x46, 0x63, 0xc6, 0x39, 0x0b, 0x03, 0x8e, 0x76, 0xa1, 0x44, 0x03, 0xee, + 0x86, 0xc1, 0x48, 0x6b, 0x2a, 0xe1, 0x75, 0x1a, 0xf0, 0x7e, 0x30, 0x9a, 0x21, 0x1b, 0xd6, 0x27, + 0x11, 0xbb, 0x21, 0x42, 0xeb, 0x2b, 0xe1, 0x98, 0x44, 0x3f, 0x80, 0x35, 0xe2, 0x79, 0x94, 0x73, + 0x15, 0x92, 0x8d, 0xc3, 0x6f, 0x2c, 0x71, 0x3c, 0x65, 0xa4, 0xd9, 0x52, 0xc2, 0xd8, 0x6c, 0x72, + 0x06, 0xb0, 0xa6, 0x39, 0x08, 0xc1, 0x46, 0x8c, 0xa8, 0xd6, 0xd1, 0x51, 0xfb, 0xec, 0xac, 0xfe, + 0x16, 0xda, 0x84, 0x5a, 0xaf, 0xef, 0x76, 0xdb, 0xdd, 0x97, 0x6d, 0x7c, 0xf6, 0xa3, 0xce, 0x69, + 0xdd, 0x42, 0x0f, 0xe1, 0x41, 0xa7, 0xf7, 0x93, 0xce, 0xa0, 0x35, 0xe8, 0xf4, 0x7b, 0x6e, 0xbf, + 0x77, 0xf2, 0x79, 0x3d, 0x87, 0x36, 0x00, 0xfa, 0x3d, 0x17, 0xb7, 0x3f, 0x3d, 0x6f, 0x9f, 0x49, + 0x2c, 0xfd, 0x36, 0x0f, 0x35, 0x15, 0xed, 0xa3, 0x88, 0x09, 0x1a, 0x31, 0x82, 0x7e, 0x7e, 0x07, + 0x84, 0x9a, 0xf3, 0x23, 0x67, 0x36, 0x7d, 0x09, 0xe4, 0xbc, 0x0b, 0x05, 0x21, 0x93, 0x9f, 0x7b, + 0x83, 0xe4, 0x2b, 0xc9, 0x54, 0xde, 0xf3, 0x4b, 0xf3, 0x5e, 0x98, 0xe7, 0x5d, 0xca, 0x92, 0xb1, + 0xbc, 0x80, 0x31, 0x46, 0x34, 0x25, 0x8b, 0x8d, 0x02, 0x92, 0xcb, 0x7c, 0x6e, 0xaf, 0x35, 0xf2, + 0x07, 0x05, 0x5c, 0x52, 0x8c, 0x8e, 0xcf, 0xd1, 0x3e, 0x54, 0x64, 0x36, 0x27, 0x44, 0x08, 0x1a, + 0x05, 0xf6, 0xba, 0xda, 0x09, 0x34, 0xe0, 0xa7, 0x9a, 0x83, 0xf6, 0xa0, 0xe4, 0x53, 0x8f, 0x8d, + 0xc9, 0x88, 0xdb, 0x25, 0x05, 0x9c, 0x84, 0xfe, 0x2f, 0x21, 0xed, 0x0f, 0x39, 0xb0, 0xb3, 0x01, + 0x98, 0x23, 0x01, 0x6d, 0x40, 0xce, 0x94, 0xd0, 0x32, 0xce, 0x31, 0x1f, 0x7d, 0x98, 0x09, 0xe1, + 0x37, 0x57, 0x85, 0x70, 0xae, 0xa1, 0x99, 0x8a, 0xe6, 0x47, 0xb0, 0xa1, 0x23, 0xe1, 0x99, 0xdc, + 0xd9, 0x79, 0x95, 0xda, 0x9d, 0x15, 0xa9, 0xc5, 0x35, 0x91, 0x81, 0xc7, 0x2e, 0x94, 0x4c, 0x65, + 0xe6, 0x76, 0xa1, 0x91, 0x3f, 0x28, 0xe3, 0x75, 0x5d, 0x9a, 0x39, 0x7a, 0x0a, 0xc0, 0xb8, 0x1b, + 0xa3, 0xbf, 0xa8, 0xd0, 0x5f, 0x66, 0xfc, 0x54, 0x33, 0x9c, 0x0e, 0x14, 0xd4, 0x3d, 0x7e, 0x02, + 0x76, 0x0c, 0xdf, 0x41, 0xff, 0x75, 0xbb, 0xe7, 0x9e, 0xb6, 0x71, 0xb7, 0x73, 0x76, 0xd6, 0xe9, + 0xf7, 0xea, 0x6f, 0xc9, 0x72, 0xf9, 0xb2, 0x7d, 0xd4, 0xef, 0xb6, 0xdd, 0xd6, 0x71, 0xb7, 0xd3, + 0xab, 0x5b, 0x12, 0xda, 0x86, 0xa3, 0xe1, 0x5d, 0xcf, 0x39, 0xff, 0x2e, 0xa7, 0x2e, 0xe6, 0x71, + 0xb6, 0xea, 0xe8, 0xe7, 0xc1, 0x4a, 0x3d, 0x0f, 0xa8, 0x0d, 0xeb, 0xfa, 0x65, 0x89, 0x2b, 0xf9, + 0xb7, 0x96, 0xc4, 0x2c, 0xa5, 0xa6, 0xa9, 0x1f, 0x06, 0x03, 0xe2, 0x78, 0x2f, 0xfa, 0x04, 0x2a, + 0x93, 0xf9, 0xfd, 0x54, 0x68, 0xac, 0x1c, 0xbe, 0x7d, 0xf7, 0x2d, 0xc6, 0xe9, 0x2d, 0xe8, 0x10, + 0x4a, 0xf1, 0xf3, 0xa9, 0xe2, 0x53, 0x39, 0xdc, 0x4e, 0x6d, 0x57, 0x61, 0xd4, 0xab, 0x38, 0x91, + 0x43, 0x1f, 0x43, 0x51, 0x06, 0x58, 0xc3, 0xb6, 0x72, 0xf8, 0xce, 0x3d, 0x47, 0x97, 0x5a, 0xcc, + 0xc1, 0xf5, 0x3e, 0x99, 0xb1, 0x0b, 0x12, 0xb8, 0x23, 0xc6, 0x85, 0xbd, 0xae, 0x33, 0x76, 0x41, + 0x82, 0x13, 0xc6, 0x05, 0xea, 0x01, 0x78, 0x44, 0xd0, 0x61, 0x18, 0x31, 0x2a, 0xa1, 0xbd, 0x70, + 0xc7, 0x97, 0x1b, 0x48, 0x36, 0x68, 0x2b, 0x29, 0x0d, 0xe8, 0x05, 0xd8, 0x24, 0xf2, 0xae, 0xd8, + 0x0d, 0x75, 0xc7, 0x64, 0x18, 0x50, 0x31, 0x62, 0xc1, 0xb5, 0xab, 0x33, 0x52, 0x56, 0x19, 0xd9, + 0x36, 0xeb, 0xdd, 0x64, 0xf9, 0x48, 0xa5, 0xe8, 0x15, 0x6c, 0x10, 0x7f, 0xcc, 0x02, 0x97, 0x53, + 0x21, 0x58, 0x30, 0xe4, 0x36, 0xa8, 0xf8, 0x34, 0x96, 0x9c, 0xa6, 0x25, 0x05, 0xcf, 0x8c, 0x1c, + 0xae, 0x91, 0x34, 0x89, 0xbe, 0x06, 0x35, 0x16, 0x88, 0x28, 0x74, 0xc7, 0x94, 0x73, 0xf9, 0xfe, + 0x54, 0xd4, 0xbd, 0xa9, 0x2a, 0x66, 0x57, 0xf3, 0xa4, 0x50, 0x38, 0x4d, 0x0b, 0x55, 0xb5, 0x90, + 0x62, 0xc6, 0x42, 0x4f, 0xa0, 0x4c, 0x03, 0x2f, 0x9a, 0x4d, 0x04, 0xf5, 0xed, 0x9a, 0x46, 0x73, + 0xc2, 0x90, 0xd5, 0x47, 0x90, 0x21, 0xb7, 0x37, 0x54, 0x44, 0xd5, 0x37, 0x22, 0xb0, 0xa9, 0xef, + 0x56, 0x1a, 0x26, 0x0f, 0x54, 0x54, 0xbf, 0x73, 0x4f, 0x54, 0x17, 0x6e, 0xac, 0x89, 0x6d, 0x5d, + 0x2c, 0xb0, 0xd1, 0xcf, 0x60, 0x77, 0xde, 0x58, 0xa9, 0x55, 0xee, 0x8e, 0xcd, 0xfb, 0x6d, 0xd7, + 0x95, 0xa9, 0xc6, 0x7d, 0xef, 0x3c, 0xde, 0xf1, 0x32, 0x7c, 0x9e, 0xb4, 0x0f, 0xef, 0xc2, 0x23, + 0xe2, 0x09, 0x95, 0x3e, 0x8d, 0x79, 0x57, 0x75, 0x33, 0xf6, 0xa6, 0xca, 0x1d, 0xd2, 0x6b, 0xe6, + 0x72, 0x1c, 0xc9, 0x95, 0xbd, 0x73, 0xa8, 0xa6, 0x2f, 0x4b, 0xba, 0xe8, 0x95, 0x75, 0xd1, 0x7b, + 0x9e, 0x2e, 0x7a, 0x99, 0x26, 0x6a, 0xa1, 0x0f, 0x4b, 0xd5, 0xc3, 0xbd, 0x4f, 0x01, 0xe6, 0x40, + 0x5e, 0xa2, 0xf4, 0xdb, 0x59, 0xa5, 0x3b, 0x4b, 0x94, 0xca, 0xfd, 0x69, 0x95, 0x5f, 0xc0, 0x83, + 0x05, 0xe8, 0x2e, 0xd1, 0xfb, 0x5e, 0x56, 0xef, 0xe3, 0x65, 0x7a, 0xb5, 0x92, 0x59, 0x5a, 0xf7, + 0x10, 0xb6, 0x96, 0x26, 0x70, 0x89, 0x85, 0x17, 0x59, 0x0b, 0xce, 0xfd, 0xd5, 0x3b, 0xfd, 0x4e, + 0xfc, 0x22, 0xd5, 0xf9, 0x65, 0xae, 0x01, 0x3a, 0x86, 0xfd, 0x09, 0x0b, 0x62, 0x40, 0xbb, 0x64, + 0x34, 0x4a, 0x72, 0x48, 0x03, 0x72, 0x31, 0xa2, 0xbe, 0xe9, 0x54, 0x1e, 0x4f, 0x58, 0x60, 0x20, + 0xde, 0x1a, 0x8d, 0x92, 0xe4, 0x29, 0x11, 0xe7, 0xaf, 0x39, 0xa8, 0x65, 0x22, 0x88, 0x3e, 0x9a, + 0xd7, 0x4e, 0xdd, 0x03, 0x7c, 0x7d, 0x45, 0xac, 0xdf, 0xac, 0x68, 0xe6, 0xbe, 0x5a, 0xd1, 0xcc, + 0xbf, 0x61, 0xd1, 0xdc, 0x87, 0x8a, 0x29, 0x4b, 0x6a, 0xfc, 0xd0, 0x2d, 0x42, 0x5c, 0xa9, 0xe4, + 0xf4, 0xb1, 0x07, 0xa5, 0x49, 0xc8, 0x99, 0xea, 0x5e, 0x65, 0x25, 0x2e, 0xe2, 0x84, 0xfe, 0x1f, + 0x61, 0xda, 0xf1, 0x61, 0xf3, 0x16, 0x88, 0x16, 0x0f, 0x6a, 0xdd, 0x3a, 0x68, 0xdc, 0xe5, 0xe4, + 0x52, 0x5d, 0x4e, 0xfa, 0xf0, 0xf9, 0xec, 0xe1, 0x9d, 0xdf, 0x59, 0xf0, 0x30, 0x31, 0xd3, 0x09, + 0x6e, 0x98, 0x20, 0xea, 0x65, 0x7c, 0x1f, 0xb6, 0xe6, 0x85, 0x23, 0xdd, 0xbb, 0xeb, 0xd1, 0xec, + 0x91, 0xb7, 0xe2, 0x39, 0x1d, 0xca, 0x79, 0xce, 0xcc, 0x67, 0x9a, 0x58, 0x3d, 0x9c, 0x3d, 0x05, + 0x98, 0x4c, 0x2f, 0x46, 0xcc, 0x73, 0x65, 0xbc, 0x0a, 0x6a, 0x4f, 0x59, 0x73, 0x5e, 0xd3, 0x99, + 0x73, 0x09, 0x0f, 0x16, 0xe6, 0x26, 0xd9, 0x2d, 0x9b, 0x1e, 0xd3, 0xb8, 0x1e, 0x93, 0xb2, 0xfa, + 0x72, 0x36, 0x0c, 0x88, 0x98, 0x46, 0xd4, 0x98, 0x9f, 0x33, 0x64, 0x3f, 0xe7, 0x5d, 0x11, 0xa6, + 0xfb, 0xb9, 0xbc, 0xee, 0xe7, 0x14, 0xa3, 0xe3, 0x73, 0xe7, 0x5f, 0x56, 0xea, 0x96, 0x60, 0xfa, + 0xcb, 0x29, 0xe5, 0x62, 0x10, 0xfe, 0x38, 0x64, 0xab, 0xfa, 0x03, 0xd3, 0xce, 0xa7, 0xe2, 0x2c, + 0xdb, 0xf9, 0x9e, 0x0c, 0xf5, 0x4a, 0x5f, 0x17, 0x27, 0xdc, 0xc2, 0xed, 0x09, 0xf7, 0x19, 0x54, + 0x7d, 0xc6, 0x27, 0x23, 0x32, 0xd3, 0xaa, 0x8b, 0x66, 0x4a, 0xd2, 0x3c, 0xa5, 0x7e, 0xe9, 0xb4, + 0xb9, 0xf6, 0xe5, 0xa7, 0xcd, 0x3f, 0x5a, 0xf0, 0x24, 0x05, 0xae, 0xc0, 0xa3, 0xa3, 0xff, 0x6b, + 0xc7, 0x9d, 0x7f, 0x58, 0xf0, 0xf6, 0xf2, 0x1c, 0x61, 0xca, 0x27, 0x61, 0xc0, 0xe9, 0x8a, 0x23, + 0x7f, 0x1f, 0xca, 0x89, 0xa9, 0x3b, 0xaa, 0x49, 0x0a, 0xc5, 0x78, 0xbe, 0x41, 0xde, 0x1c, 0x39, + 0x4e, 0xa9, 0x27, 0x3d, 0xaf, 0xca, 0x61, 0x42, 0xcf, 0xc1, 0x5e, 0x48, 0x83, 0x7d, 0xd1, 0xdd, + 0xe2, 0x6d, 0x77, 0x9f, 0x02, 0xe8, 0x6e, 0xc7, 0x9d, 0x46, 0xcc, 0x8c, 0xa1, 0x65, 0xcd, 0x39, + 0x8f, 0x98, 0x83, 0x61, 0xe7, 0xb6, 0xa7, 0x27, 0x94, 0xdc, 0xac, 0x72, 0x71, 0xd1, 0x64, 0xee, + 0x96, 0x49, 0xe7, 0xa7, 0xf0, 0x2c, 0x55, 0x69, 0x74, 0x31, 0x5f, 0x6c, 0xac, 0x56, 0x68, 0xcf, + 0x9e, 0x36, 0xb7, 0x78, 0xda, 0x3f, 0x59, 0x50, 0xf9, 0x8c, 0x5c, 0x4f, 0xe3, 0x2e, 0xa8, 0x0e, + 0x79, 0xce, 0x86, 0xa6, 0x4a, 0xc8, 0x4f, 0x79, 0x33, 0x05, 0x1b, 0x53, 0x2e, 0xc8, 0x78, 0xa2, + 0xf6, 0x17, 0xf0, 0x9c, 0x21, 0x8d, 0x8a, 0x70, 0xc2, 0x3c, 0x15, 0xde, 0x2a, 0xd6, 0x84, 0x9a, + 0x8a, 0xc9, 0x6c, 0x14, 0x92, 0x18, 0x2f, 0x31, 0xa9, 0x57, 0x7c, 0x9f, 0x05, 0x43, 0x13, 0xda, + 0x98, 0x94, 0x95, 0xef, 0x8a, 0xf0, 0x2b, 0x15, 0xd0, 0x2a, 0x56, 0xdf, 0xc8, 0x81, 0xaa, 0xb8, + 0x62, 0x91, 0x7f, 0x4a, 0x22, 0x19, 0x07, 0x33, 0xab, 0x65, 0x78, 0xce, 0x6f, 0x60, 0x2f, 0xe5, + 0x40, 0x1c, 0x96, 0xb8, 0xc5, 0xb1, 0x61, 0xfd, 0x86, 0x46, 0x3c, 0xae, 0x7c, 0x35, 0x1c, 0x93, + 0xd2, 0xde, 0x65, 0x14, 0x8e, 0x8d, 0x4b, 0xea, 0x5b, 0x8e, 0x5e, 0x22, 0x54, 0xae, 0x14, 0x70, + 0x4e, 0x84, 0xd2, 0xbe, 0x1c, 0x69, 0x69, 0x20, 0x06, 0xca, 0x49, 0x39, 0x01, 0x55, 0x71, 0x86, + 0xe7, 0xfc, 0xde, 0x02, 0x74, 0xfb, 0x00, 0x77, 0x18, 0xfe, 0x04, 0x4a, 0x49, 0x0b, 0xa7, 0x11, + 0x9d, 0x7a, 0x63, 0x57, 0xbb, 0x82, 0x93, 0x5d, 0xe8, 0x3d, 0xa9, 0x41, 0xc9, 0x70, 0x33, 0xce, + 0x6d, 0x2d, 0xd5, 0x80, 0x13, 0x31, 0xe7, 0xcf, 0x16, 0xec, 0xdf, 0xd6, 0xdd, 0x09, 0x7c, 0xfa, + 0xab, 0x37, 0x88, 0xd5, 0x57, 0x3f, 0xf2, 0x36, 0xac, 0x85, 0x97, 0x97, 0x9c, 0x0a, 0x13, 0x5d, + 0x43, 0xc9, 0x2c, 0x70, 0xf6, 0x6b, 0x6a, 0xfe, 0xdf, 0x53, 0xdf, 0x8b, 0x18, 0x29, 0x24, 0x18, + 0x71, 0xfe, 0x62, 0xc1, 0xce, 0x0a, 0x2f, 0xd0, 0x6b, 0x28, 0x99, 0x61, 0x23, 0x6e, 0x5d, 0x9e, + 0xdf, 0x75, 0x46, 0xb5, 0xa9, 0x69, 0x08, 0xd3, 0xc5, 0x24, 0x0a, 0xf6, 0x2e, 0xa1, 0x96, 0x59, + 0x5a, 0xd2, 0x14, 0x7c, 0x9c, 0x6d, 0x0a, 0xde, 0xb9, 0xd7, 0x58, 0x12, 0x95, 0x79, 0x93, 0xf0, + 0xb2, 0xf6, 0x45, 0xa5, 0xf9, 0xfc, 0xc3, 0x78, 0xe7, 0xc5, 0x9a, 0xfa, 0x7a, 0xff, 0x3f, 0x01, + 0x00, 0x00, 0xff, 0xff, 0xa3, 0xdc, 0xeb, 0x96, 0x98, 0x15, 0x00, 0x00, } diff --git a/protocol/protobuf/communities.proto b/protocol/protobuf/communities.proto index 7191b1b95..c165b42ca 100644 --- a/protocol/protobuf/communities.proto +++ b/protocol/protobuf/communities.proto @@ -21,7 +21,7 @@ message CommunityMember { ROLE_MODERATE_CONTENT = 3; } repeated Roles roles = 1; - repeated string wallet_accounts = 2; + repeated RevealedAccount revealed_accounts = 2; } message CommunityTokenMetadata { @@ -117,13 +117,19 @@ message CommunityInvitation { bytes public_key = 4; } +message RevealedAccount { + string address = 1; + bytes signature = 2; + repeated uint64 chain_ids = 3; +} + message CommunityRequestToJoin { uint64 clock = 1; string ens_name = 2; string chat_id = 3; bytes community_id = 4; string display_name = 5; - map revealed_addresses = 6; + repeated RevealedAccount revealed_accounts = 6; } message CommunityCancelRequestToJoin { diff --git a/protocol/protobuf/pairing.pb.go b/protocol/protobuf/pairing.pb.go index 2c0c8f197..e34a36f1c 100644 --- a/protocol/protobuf/pairing.pb.go +++ b/protocol/protobuf/pairing.pb.go @@ -1448,17 +1448,17 @@ func (m *SyncCommunity) GetEncryptionKeys() []byte { } 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"` - RevealedAddresses map[string][]byte `protobuf:"bytes,8,rep,name=revealed_addresses,json=revealedAddresses,proto3" json:"revealed_addresses,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:"-"` + 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:"-"` } func (m *SyncCommunityRequestsToJoin) Reset() { *m = SyncCommunityRequestsToJoin{} } @@ -1535,9 +1535,9 @@ func (m *SyncCommunityRequestsToJoin) GetState() uint64 { return 0 } -func (m *SyncCommunityRequestsToJoin) GetRevealedAddresses() map[string][]byte { +func (m *SyncCommunityRequestsToJoin) GetRevealedAccounts() []*RevealedAccount { if m != nil { - return m.RevealedAddresses + return m.RevealedAccounts } return nil } @@ -3419,7 +3419,6 @@ func init() { proto.RegisterType((*SyncInstallationPublicChat)(nil), "protobuf.SyncInstallationPublicChat") proto.RegisterType((*SyncCommunity)(nil), "protobuf.SyncCommunity") proto.RegisterType((*SyncCommunityRequestsToJoin)(nil), "protobuf.SyncCommunityRequestsToJoin") - proto.RegisterMapType((map[string][]byte)(nil), "protobuf.SyncCommunityRequestsToJoin.RevealedAddressesEntry") proto.RegisterType((*SyncInstallation)(nil), "protobuf.SyncInstallation") proto.RegisterType((*SyncChatRemoved)(nil), "protobuf.SyncChatRemoved") proto.RegisterType((*SyncChatMessagesRead)(nil), "protobuf.SyncChatMessagesRead") @@ -3455,226 +3454,225 @@ func init() { } var fileDescriptor_d61ab7221f0b5518 = []byte{ - // 3535 bytes of a gzipped FileDescriptorProto + // 3506 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4d, 0x73, 0x23, 0x49, - 0x56, 0x53, 0x92, 0xac, 0x8f, 0x27, 0x59, 0x2e, 0x67, 0x7b, 0xba, 0xd5, 0xee, 0x9e, 0xed, 0xee, - 0x9a, 0x9d, 0xd8, 0x86, 0x18, 0x3c, 0xd0, 0x03, 0xec, 0xee, 0x7c, 0xc4, 0xa0, 0x96, 0x34, 0xd3, - 0x1e, 0x77, 0xcb, 0x26, 0x6d, 0xcf, 0xb0, 0x04, 0x11, 0x45, 0x76, 0x55, 0xb6, 0x55, 0xeb, 0x52, - 0x95, 0xa8, 0x4c, 0xd9, 0x68, 0x0f, 0x04, 0x6c, 0x04, 0x67, 0x08, 0x2e, 0xcc, 0x71, 0xce, 0x04, - 0x27, 0x22, 0x38, 0x10, 0xc1, 0x81, 0x13, 0xc1, 0x9d, 0x23, 0xfc, 0x02, 0x82, 0x0b, 0x37, 0x8e, - 0x44, 0xbe, 0xcc, 0xfa, 0xd2, 0x47, 0x63, 0x07, 0x27, 0x4e, 0xce, 0xf7, 0xf2, 0xe5, 0xcb, 0x57, - 0xf9, 0xbe, 0x9f, 0x0c, 0xdb, 0x33, 0x16, 0x24, 0x41, 0x74, 0x71, 0x30, 0x4b, 0x62, 0x19, 0x93, - 0x26, 0xfe, 0x79, 0x3d, 0x7f, 0xb3, 0x7f, 0xc7, 0x9b, 0x30, 0xe9, 0x06, 0x3e, 0x8f, 0x64, 0x20, - 0x17, 0x7a, 0x7b, 0xff, 0x8e, 0x58, 0x44, 0x9e, 0x2b, 0xb8, 0x94, 0x41, 0x74, 0x21, 0x0c, 0xd2, - 0x61, 0xb3, 0x59, 0x18, 0x78, 0x4c, 0x06, 0x71, 0xe4, 0x4e, 0xb9, 0x64, 0x3e, 0x93, 0xcc, 0x9d, - 0x72, 0x21, 0xd8, 0x05, 0xd7, 0x34, 0x0e, 0x83, 0x07, 0x5f, 0x72, 0xe9, 0x4d, 0x82, 0xe8, 0xe2, - 0x39, 0xf3, 0x2e, 0xb9, 0x7f, 0x3e, 0x1b, 0x32, 0xc9, 0x86, 0x5c, 0xb2, 0x20, 0x14, 0xe4, 0x11, - 0xb4, 0xf1, 0x50, 0x34, 0x9f, 0xbe, 0xe6, 0x49, 0xcf, 0x7a, 0x6c, 0x3d, 0xdd, 0xa6, 0xa0, 0x50, - 0x63, 0xc4, 0x90, 0x27, 0xd0, 0x91, 0xb1, 0x64, 0x61, 0x4a, 0x51, 0x41, 0x8a, 0x36, 0xe2, 0x34, - 0x89, 0xf3, 0x97, 0x0d, 0xa8, 0x2b, 0xde, 0xf3, 0x19, 0xd9, 0x83, 0x2d, 0x2f, 0x8c, 0xbd, 0x4b, - 0x64, 0x54, 0xa3, 0x1a, 0x20, 0x5d, 0xa8, 0x04, 0x3e, 0x9e, 0x6c, 0xd1, 0x4a, 0xe0, 0x93, 0x2f, - 0xa0, 0xe9, 0xc5, 0x91, 0x64, 0x9e, 0x14, 0xbd, 0xea, 0xe3, 0xea, 0xd3, 0xf6, 0xb3, 0xf7, 0x0f, - 0xd2, 0xcf, 0x3f, 0x38, 0x5d, 0x44, 0xde, 0x61, 0x24, 0x24, 0x0b, 0x43, 0xfc, 0xb0, 0x81, 0xa6, - 0xfc, 0xe6, 0x19, 0xcd, 0x0e, 0x91, 0x9f, 0x42, 0xdb, 0x8b, 0xa7, 0xd3, 0x79, 0x14, 0xc8, 0x80, - 0x8b, 0x5e, 0x0d, 0x79, 0xdc, 0x2b, 0xf3, 0x18, 0x18, 0x82, 0x05, 0x2d, 0xd2, 0x92, 0x63, 0xd8, - 0x49, 0xd9, 0x98, 0x37, 0xe8, 0x6d, 0x3d, 0xb6, 0x9e, 0xb6, 0x9f, 0x7d, 0x90, 0x1f, 0x7f, 0xcb, - 0x83, 0xd1, 0xe5, 0xd3, 0xe4, 0x1c, 0x48, 0x81, 0x7f, 0xca, 0xb3, 0x7e, 0x1b, 0x9e, 0x6b, 0x18, - 0x90, 0x8f, 0xa1, 0x31, 0x4b, 0xe2, 0x37, 0x41, 0xc8, 0x7b, 0x0d, 0xe4, 0x75, 0x3f, 0xe7, 0x95, - 0xf2, 0x38, 0xd1, 0x04, 0x34, 0xa5, 0x24, 0xaf, 0xa0, 0x6b, 0x96, 0xa9, 0x1c, 0xcd, 0xdb, 0xc8, - 0xb1, 0x74, 0x98, 0x7c, 0x04, 0x0d, 0x63, 0x71, 0xbd, 0x16, 0xf2, 0x79, 0xb7, 0xfc, 0xc4, 0xa7, - 0x7a, 0x93, 0xa6, 0x54, 0xea, 0x71, 0x53, 0x13, 0x4d, 0x05, 0x80, 0x5b, 0x3d, 0xee, 0xd2, 0x69, - 0xf2, 0x29, 0xb4, 0xdf, 0xcc, 0xc3, 0xf0, 0x88, 0x2f, 0x94, 0xb7, 0xf4, 0xda, 0xcb, 0x2f, 0xa1, - 0xa4, 0x30, 0x9b, 0x5f, 0xce, 0xc3, 0x90, 0x16, 0xa9, 0x95, 0x66, 0x0a, 0x60, 0x2a, 0x50, 0xe7, - 0x56, 0x9a, 0x59, 0x65, 0x40, 0xfa, 0x60, 0x5f, 0x33, 0xe9, 0x4d, 0x8e, 0xa3, 0x70, 0xd1, 0xf7, - 0xbc, 0x78, 0x1e, 0xc9, 0xde, 0xf6, 0xba, 0xe7, 0x31, 0x9b, 0x74, 0x85, 0x9c, 0xb8, 0x70, 0x6f, - 0x19, 0x97, 0x8a, 0xd7, 0xbd, 0x8d, 0x78, 0x9b, 0xb8, 0x38, 0xff, 0x59, 0x83, 0xce, 0xab, 0x79, - 0x28, 0x83, 0xf4, 0x46, 0x02, 0xb5, 0x88, 0x4d, 0x39, 0xfa, 0x65, 0x8b, 0xe2, 0x9a, 0x3c, 0x84, - 0x96, 0x0c, 0xa6, 0x5c, 0x48, 0x36, 0x9d, 0xa1, 0x77, 0x56, 0x69, 0x8e, 0x50, 0xbb, 0x3a, 0x06, - 0x79, 0x71, 0xd4, 0xab, 0xe2, 0xb1, 0x1c, 0x41, 0xbe, 0x00, 0xf0, 0xe2, 0x30, 0x4e, 0xdc, 0x09, - 0x13, 0x13, 0xe3, 0x80, 0x8f, 0x73, 0xa1, 0x8b, 0x77, 0x1f, 0x0c, 0x14, 0xe1, 0x0b, 0x26, 0x26, - 0xb4, 0xe5, 0xa5, 0x4b, 0x72, 0x5f, 0xc5, 0x00, 0xc5, 0x20, 0xf0, 0xd1, 0x01, 0xab, 0xb4, 0x81, - 0xf0, 0xa1, 0x4f, 0x7e, 0x04, 0x3b, 0x97, 0x7c, 0xe1, 0xb1, 0xc4, 0x77, 0x4d, 0x8c, 0x44, 0x77, - 0x6a, 0xd1, 0xae, 0x41, 0x9f, 0x68, 0x2c, 0xb9, 0x07, 0x8d, 0x4b, 0xbe, 0x70, 0xe7, 0x81, 0x8f, - 0x3e, 0xd2, 0xa2, 0xf5, 0x4b, 0xbe, 0x38, 0x0f, 0x7c, 0xf2, 0x19, 0xd4, 0x83, 0x29, 0xbb, 0xe0, - 0xca, 0xfe, 0x95, 0x64, 0x3f, 0xdc, 0x20, 0xd9, 0xa1, 0x09, 0xb2, 0x87, 0x8a, 0x98, 0x9a, 0x33, - 0xe4, 0x23, 0xb8, 0xe3, 0xcd, 0x85, 0x8c, 0xa7, 0xc1, 0x2f, 0x74, 0x68, 0x45, 0xc1, 0xd0, 0x05, - 0x5a, 0x94, 0x94, 0xb6, 0xf0, 0xd3, 0xf6, 0x9f, 0x40, 0x2b, 0xfb, 0x46, 0x15, 0x02, 0x83, 0xc8, - 0xe7, 0x7f, 0xdc, 0xb3, 0x1e, 0x57, 0x9f, 0x56, 0xa9, 0x06, 0xf6, 0xff, 0xcd, 0x82, 0xed, 0xd2, - 0x6d, 0x45, 0xe1, 0xad, 0x92, 0xf0, 0xa9, 0xaa, 0x2a, 0x05, 0x55, 0xf5, 0xa0, 0x31, 0x63, 0x8b, - 0x30, 0x66, 0x3e, 0xaa, 0xa2, 0x43, 0x53, 0x50, 0x5d, 0x77, 0x1d, 0xf8, 0x52, 0xe9, 0x40, 0x3d, - 0xa2, 0x06, 0xc8, 0x5d, 0xa8, 0x4f, 0x78, 0x70, 0x31, 0x91, 0xe6, 0x6d, 0x0d, 0x44, 0xf6, 0xa1, - 0xa9, 0x1c, 0x5c, 0x04, 0xbf, 0xe0, 0xf8, 0xa6, 0x55, 0x9a, 0xc1, 0xe4, 0x7d, 0xd8, 0x4e, 0x70, - 0xe5, 0x4a, 0x96, 0x5c, 0x70, 0x89, 0x6f, 0x5a, 0xa5, 0x1d, 0x8d, 0x3c, 0x43, 0x5c, 0x1e, 0xe0, - 0x9b, 0x85, 0x00, 0xef, 0xfc, 0xab, 0x05, 0x77, 0x5e, 0xc6, 0x1e, 0x0b, 0x8d, 0x66, 0x4e, 0x8c, - 0x70, 0xbf, 0x05, 0xb5, 0x4b, 0xbe, 0x10, 0xf8, 0x14, 0xed, 0x67, 0x4f, 0x72, 0x2d, 0xac, 0x21, - 0x3e, 0x38, 0xe2, 0x0b, 0x8a, 0xe4, 0xe4, 0x13, 0xe8, 0x4c, 0x95, 0x9a, 0x98, 0xf1, 0xae, 0x0a, - 0xfa, 0xc4, 0xdd, 0xf5, 0x4a, 0xa4, 0x25, 0x5a, 0xf5, 0x85, 0x33, 0x26, 0xc4, 0x75, 0x9c, 0xf8, - 0xc6, 0x6a, 0x33, 0x78, 0xff, 0xd7, 0xa0, 0x7a, 0xc4, 0x17, 0x6b, 0x7d, 0x81, 0x40, 0x4d, 0x25, - 0x3d, 0xbc, 0xaa, 0x43, 0x71, 0xed, 0xfc, 0x83, 0x05, 0xef, 0x96, 0x04, 0xe5, 0x3c, 0x79, 0xc1, - 0xc3, 0x30, 0x56, 0x16, 0x6a, 0x2c, 0xd3, 0xbd, 0xe2, 0x89, 0x08, 0xe2, 0x08, 0x99, 0x6d, 0xd1, - 0xae, 0x41, 0x7f, 0xa3, 0xb1, 0x4a, 0xc9, 0x33, 0xce, 0xd1, 0xc8, 0x35, 0xe7, 0xba, 0x02, 0x0f, - 0x7d, 0xcc, 0xbb, 0xfc, 0x2a, 0xf0, 0xb8, 0x8b, 0xa2, 0x68, 0x49, 0x41, 0xa3, 0xc6, 0x4a, 0xa0, - 0x9c, 0x40, 0x2e, 0x66, 0x1c, 0xb5, 0x9b, 0x11, 0x9c, 0x2d, 0x66, 0xe8, 0xbd, 0x22, 0xb8, 0x88, - 0x98, 0x9c, 0x27, 0x1c, 0xb5, 0xdc, 0xa1, 0x39, 0xc2, 0xf9, 0xde, 0x02, 0x5b, 0x89, 0x5d, 0xcc, - 0xa4, 0x1b, 0xb2, 0xf3, 0x8f, 0x60, 0x27, 0x28, 0x50, 0xb9, 0x59, 0xaa, 0xee, 0x16, 0xd1, 0x25, - 0x99, 0x51, 0xa4, 0xea, 0x8a, 0x48, 0xe9, 0xc3, 0xd6, 0xca, 0x96, 0x9b, 0x3e, 0xd1, 0x16, 0x96, - 0x0e, 0x29, 0xe8, 0xfc, 0x87, 0x05, 0xf7, 0x36, 0x24, 0xfb, 0x1b, 0xd6, 0x11, 0xef, 0xc3, 0xb6, - 0xc9, 0x58, 0x2e, 0xba, 0xae, 0x11, 0xa9, 0x63, 0x90, 0xda, 0xcf, 0xee, 0x43, 0x93, 0x47, 0xc2, - 0x2d, 0x08, 0xd6, 0xe0, 0x91, 0xc0, 0x37, 0x7e, 0x02, 0x9d, 0x90, 0x09, 0xe9, 0xce, 0x67, 0x3e, - 0x93, 0x5c, 0xc7, 0xa1, 0x1a, 0x6d, 0x2b, 0xdc, 0xb9, 0x46, 0xa9, 0x6f, 0x16, 0x0b, 0x21, 0xf9, - 0xd4, 0x95, 0xec, 0x42, 0xa5, 0xf5, 0xaa, 0xfa, 0x66, 0x8d, 0x3a, 0x63, 0x17, 0x82, 0x7c, 0x00, - 0xdd, 0x50, 0xd9, 0x88, 0x1b, 0x05, 0xde, 0x25, 0x5e, 0xa2, 0x43, 0xd1, 0x36, 0x62, 0xc7, 0x06, - 0xe9, 0xfc, 0x59, 0x1d, 0xee, 0x6f, 0xac, 0x6c, 0xc8, 0xaf, 0xc3, 0x5e, 0x51, 0x10, 0x17, 0xcf, - 0x86, 0x0b, 0xf3, 0xf5, 0xa4, 0x20, 0xd0, 0x4b, 0xbd, 0xf3, 0xff, 0xf8, 0x29, 0x94, 0x6e, 0x99, - 0xef, 0x73, 0x1f, 0x03, 0x6a, 0x93, 0x6a, 0x40, 0xd9, 0xc9, 0x6b, 0xa5, 0x64, 0xee, 0x63, 0xc9, - 0xd0, 0xa4, 0x29, 0xa8, 0xe8, 0xa7, 0x73, 0x25, 0x53, 0x5b, 0xd3, 0x23, 0xa0, 0xe8, 0x13, 0x3e, - 0x8d, 0xaf, 0xb8, 0x8f, 0x19, 0xbd, 0x49, 0x53, 0x90, 0x3c, 0x86, 0xce, 0x84, 0x09, 0x17, 0xd9, - 0xba, 0x73, 0x81, 0xb9, 0xb9, 0x49, 0x61, 0xc2, 0x44, 0x5f, 0xa1, 0xce, 0x31, 0xc0, 0x5f, 0xf1, - 0x24, 0x78, 0x93, 0x96, 0xce, 0x42, 0x32, 0x39, 0xd7, 0xa9, 0xb7, 0x4a, 0x49, 0x71, 0xeb, 0x14, - 0x77, 0xb0, 0x08, 0x4e, 0xe6, 0x42, 0xa6, 0x94, 0x3b, 0x48, 0xd9, 0x46, 0x9c, 0x21, 0xf9, 0x1c, - 0x1e, 0x98, 0xca, 0xd0, 0x4d, 0xf8, 0x1f, 0xcd, 0xb9, 0x90, 0x5a, 0x8b, 0x78, 0x84, 0xf7, 0x6c, - 0x3c, 0xd1, 0x33, 0x24, 0x54, 0x53, 0xa0, 0x32, 0xd5, 0x79, 0xbe, 0xf9, 0xb8, 0x76, 0x83, 0xdd, - 0x8d, 0xc7, 0x07, 0xe8, 0x19, 0x5f, 0xc0, 0xc3, 0xe5, 0xe3, 0xea, 0x39, 0x24, 0x37, 0xd7, 0x13, - 0x3c, 0x7f, 0xbf, 0x7c, 0x9e, 0x22, 0x85, 0xbe, 0x7f, 0x33, 0x03, 0x2d, 0xc0, 0x9d, 0xcd, 0x0c, - 0xb4, 0x04, 0x4f, 0xa0, 0xe3, 0x07, 0x62, 0x16, 0xb2, 0x85, 0xb6, 0xaf, 0x3d, 0x54, 0x7d, 0xdb, - 0xe0, 0x94, 0x8d, 0x39, 0xd7, 0xab, 0xfe, 0x9e, 0x96, 0x27, 0xeb, 0xfd, 0x7d, 0xc5, 0xa8, 0x2b, - 0x6b, 0x8c, 0x7a, 0xd9, 0x72, 0xab, 0x2b, 0x96, 0xeb, 0x3c, 0x87, 0xfd, 0xe5, 0x8b, 0x4f, 0xe6, - 0xaf, 0xc3, 0xc0, 0x1b, 0x4c, 0xd8, 0x0d, 0x63, 0x8d, 0xf3, 0xf7, 0x55, 0xd8, 0x2e, 0xb5, 0x15, - 0xff, 0xeb, 0xb9, 0x0e, 0x3a, 0xe6, 0x23, 0x68, 0xcf, 0x92, 0xe0, 0x8a, 0x49, 0xee, 0x5e, 0xf2, - 0x85, 0xc9, 0xde, 0x60, 0x50, 0x2a, 0x1b, 0x3d, 0x56, 0x51, 0x55, 0x78, 0x49, 0x30, 0x53, 0x72, - 0xa1, 0x5f, 0x76, 0x68, 0x11, 0xa5, 0x92, 0xf9, 0xcf, 0xe3, 0x20, 0x32, 0x5e, 0xd9, 0xa4, 0x06, - 0x52, 0xa9, 0x4e, 0xdb, 0x2a, 0xf7, 0x31, 0x99, 0x37, 0x69, 0x06, 0xe7, 0x4e, 0xd3, 0x28, 0x3a, - 0xcd, 0x31, 0xd8, 0x46, 0xbb, 0xc2, 0x95, 0xb1, 0xab, 0xf8, 0x98, 0x0a, 0xe9, 0x83, 0x4d, 0xcd, - 0x93, 0x21, 0x3f, 0x8b, 0xbf, 0x8e, 0x83, 0x88, 0x76, 0x93, 0x12, 0x4c, 0x3e, 0x85, 0x66, 0x5a, - 0xb2, 0x9b, 0x16, 0xe1, 0xd1, 0x06, 0x46, 0xa6, 0x57, 0x10, 0x34, 0x3b, 0xa0, 0x32, 0x18, 0x8f, - 0xbc, 0x64, 0x31, 0x93, 0x99, 0xd3, 0xe7, 0x08, 0xcc, 0x6f, 0x33, 0xee, 0x49, 0x96, 0xbb, 0x7e, - 0x8e, 0x50, 0x49, 0xcb, 0x90, 0x2a, 0x07, 0xc6, 0x22, 0xa3, 0x83, 0x2f, 0xd7, 0xcd, 0xd1, 0x47, - 0x7c, 0x21, 0x9c, 0x5f, 0x56, 0xe1, 0xc1, 0x5b, 0xbe, 0xc8, 0xe8, 0xcb, 0xca, 0xf4, 0xf5, 0x1e, - 0xc0, 0x0c, 0x6d, 0x03, 0xd5, 0xa5, 0xf5, 0xdf, 0xd2, 0x18, 0xa5, 0xad, 0x4c, 0xe9, 0xd5, 0xa2, - 0xd2, 0xdf, 0x12, 0x58, 0xef, 0x41, 0xc3, 0xf4, 0xf3, 0xa8, 0xbd, 0x16, 0xad, 0x2b, 0xf0, 0xd0, - 0x57, 0x76, 0x9b, 0xb6, 0x7d, 0x0b, 0xb5, 0x5b, 0xd7, 0x8a, 0xcf, 0x70, 0x87, 0xa8, 0x44, 0xed, - 0xbe, 0x0d, 0x7d, 0x19, 0x02, 0xe4, 0x12, 0x48, 0xc2, 0xaf, 0x38, 0x0b, 0xb9, 0xaf, 0x82, 0x5c, - 0xc2, 0x85, 0xc8, 0x0a, 0xdd, 0xcf, 0x6e, 0xa4, 0xc6, 0x03, 0x6a, 0xce, 0xf7, 0xd3, 0xe3, 0xa3, - 0x48, 0x26, 0x0b, 0xba, 0x9b, 0x2c, 0xe3, 0xf7, 0x87, 0x70, 0x77, 0x3d, 0x31, 0xb1, 0xa1, 0xaa, - 0x5e, 0x48, 0x17, 0x51, 0x6a, 0xa9, 0xc4, 0xbd, 0x62, 0xe1, 0x9c, 0x1b, 0xeb, 0xd7, 0xc0, 0x27, - 0x95, 0x9f, 0x58, 0xce, 0x5f, 0x55, 0xc0, 0x5e, 0xf6, 0x40, 0xf2, 0x79, 0x61, 0x0a, 0xb0, 0x52, - 0x20, 0x6e, 0xc8, 0x95, 0x85, 0x19, 0xc0, 0x57, 0xd0, 0x31, 0x8a, 0x52, 0x0f, 0x2a, 0x7a, 0x95, - 0xe5, 0x4a, 0x7f, 0xb3, 0xcb, 0xd3, 0xf6, 0x2c, 0x5b, 0xab, 0x1e, 0xb3, 0x91, 0x16, 0x9a, 0x55, - 0x34, 0xe1, 0xb7, 0x88, 0x91, 0xd6, 0x9c, 0xe9, 0x89, 0xff, 0xc3, 0x24, 0xc2, 0xf9, 0x31, 0xec, - 0xe0, 0xae, 0x12, 0xc8, 0xa4, 0xae, 0x9b, 0x85, 0xa2, 0xcf, 0x60, 0x2f, 0x3d, 0xf8, 0x4a, 0xcf, - 0x7a, 0x04, 0xe5, 0xec, 0xa6, 0xa7, 0x7f, 0x07, 0xee, 0xea, 0xe6, 0x54, 0x06, 0x57, 0x81, 0x5c, - 0x0c, 0x78, 0x24, 0x79, 0xf2, 0x96, 0xf3, 0x36, 0x54, 0x03, 0x5f, 0x3f, 0x6f, 0x87, 0xaa, 0xa5, - 0x33, 0xd4, 0xe1, 0xb4, 0xcc, 0xa1, 0xef, 0x79, 0x1c, 0xfd, 0xf6, 0xa6, 0x5c, 0x46, 0xda, 0x2f, - 0xcb, 0x5c, 0x86, 0x81, 0x98, 0x06, 0x42, 0xdc, 0x82, 0x8d, 0x0b, 0xef, 0xaf, 0xb2, 0x19, 0xc7, - 0xb2, 0x94, 0xc2, 0xb9, 0x72, 0xeb, 0xb4, 0xb8, 0x62, 0xd2, 0xf0, 0x6c, 0x19, 0x4c, 0x5f, 0x2a, - 0x07, 0x56, 0x35, 0x83, 0xe0, 0x3c, 0xc2, 0xa7, 0x6a, 0xd2, 0xc6, 0x84, 0x89, 0x53, 0xce, 0x23, - 0xe7, 0x2f, 0x2c, 0x78, 0xf4, 0xf6, 0x1b, 0x04, 0x09, 0xe1, 0x3d, 0x66, 0xb6, 0x5d, 0x0f, 0xf7, - 0xdd, 0xa8, 0x48, 0x60, 0xec, 0xfb, 0xe9, 0xf2, 0x7c, 0x60, 0x13, 0x47, 0xfa, 0x80, 0x6d, 0xbe, - 0xcd, 0xf9, 0xc7, 0x16, 0xfc, 0xe0, 0xed, 0xe7, 0x57, 0xa2, 0xda, 0x4a, 0xab, 0x5f, 0x2b, 0xb6, - 0xfa, 0x6f, 0x60, 0xb7, 0x28, 0x6e, 0x5e, 0xde, 0x77, 0x9f, 0xfd, 0xf4, 0xa6, 0x22, 0x1f, 0x14, - 0x01, 0xd5, 0x0d, 0x50, 0x3b, 0x5a, 0xc2, 0x14, 0x63, 0x61, 0xad, 0x14, 0x0b, 0x09, 0xd4, 0x12, - 0xce, 0xd2, 0xfc, 0x86, 0x6b, 0x25, 0xb2, 0x9f, 0x5a, 0x83, 0x49, 0x6f, 0x39, 0x42, 0xe5, 0x3e, - 0x66, 0x2c, 0xce, 0xa4, 0xb8, 0x0c, 0x56, 0xa5, 0xa1, 0x99, 0x81, 0x62, 0x97, 0xda, 0xa1, 0x29, - 0xa8, 0x32, 0x29, 0x9b, 0xcb, 0x49, 0xd6, 0xcc, 0x1b, 0x48, 0xb7, 0xbe, 0xb3, 0x70, 0x91, 0xce, - 0x4e, 0x31, 0x1b, 0x75, 0x54, 0xeb, 0x3b, 0x0b, 0x17, 0xc6, 0xc7, 0x56, 0x02, 0x76, 0x5b, 0x57, - 0x38, 0xc5, 0x80, 0xfd, 0x06, 0x76, 0xa7, 0x7c, 0xfa, 0x9a, 0x27, 0x62, 0x12, 0xcc, 0xd2, 0x62, - 0xb1, 0x73, 0xcb, 0x87, 0x7c, 0x95, 0x71, 0xd0, 0xa5, 0x25, 0xb5, 0xa7, 0x4b, 0x18, 0xf2, 0x4b, - 0x2b, 0x2f, 0x17, 0xd7, 0x55, 0xb2, 0xdb, 0x78, 0xe5, 0xf3, 0x1b, 0x5f, 0x99, 0x76, 0x22, 0x2b, - 0x95, 0x6f, 0x56, 0xf1, 0xad, 0x6e, 0xa9, 0x67, 0xf6, 0x79, 0xc8, 0x95, 0x06, 0xba, 0xda, 0x65, - 0x0c, 0xb8, 0xe4, 0x6c, 0x3b, 0x4b, 0xce, 0xe6, 0xfc, 0x97, 0x05, 0xf6, 0xb2, 0xb5, 0x10, 0x80, - 0xfa, 0x38, 0x56, 0x2b, 0xfb, 0x1d, 0xb2, 0x03, 0xed, 0x31, 0xbf, 0x3e, 0x8e, 0xf8, 0x59, 0x7c, - 0x1c, 0x71, 0xdb, 0x22, 0xf7, 0xe0, 0xce, 0x98, 0x5f, 0x9f, 0xe8, 0xa2, 0xe9, 0xab, 0x24, 0x9e, - 0xcf, 0x54, 0xf0, 0xb3, 0x2b, 0xa4, 0x0d, 0x8d, 0x57, 0x3c, 0x52, 0x4c, 0xec, 0x2a, 0x69, 0xc1, - 0x16, 0x55, 0x0a, 0xb3, 0x6b, 0x84, 0x40, 0x77, 0x50, 0x2a, 0x55, 0xed, 0x2d, 0xc5, 0x24, 0x8b, - 0xc4, 0x87, 0xd1, 0x55, 0x20, 0xf1, 0x72, 0xbb, 0x4e, 0xf6, 0xc0, 0x5e, 0x4e, 0x94, 0x76, 0x83, - 0xfc, 0x00, 0xf6, 0x33, 0x6c, 0xae, 0x92, 0x74, 0xbf, 0x49, 0xee, 0xc0, 0x4e, 0xb6, 0x7f, 0x14, - 0xa8, 0x4e, 0xc5, 0x6e, 0xe9, 0x3b, 0x56, 0x1e, 0xcc, 0x06, 0xe7, 0xcf, 0x2d, 0xb0, 0x97, 0x15, - 0x4b, 0x7a, 0xb0, 0xb7, 0x8c, 0x3b, 0xf4, 0x43, 0xf5, 0x02, 0x0f, 0xe0, 0xde, 0xf2, 0xce, 0x09, - 0x8f, 0xfc, 0x20, 0xba, 0xb0, 0x2d, 0xf2, 0x10, 0x7a, 0xcb, 0x9b, 0x69, 0xf4, 0xb5, 0x2b, 0xeb, - 0x76, 0x87, 0xdc, 0x0b, 0x55, 0xc5, 0x68, 0x57, 0x9d, 0x3f, 0xb5, 0xe0, 0xfe, 0x46, 0x6d, 0xab, - 0xe7, 0x3c, 0x8f, 0x2e, 0xa3, 0xf8, 0x3a, 0xb2, 0xdf, 0x51, 0x40, 0x7e, 0x67, 0x07, 0x9a, 0x85, - 0x3b, 0x3a, 0xd0, 0xcc, 0x79, 0x92, 0x6d, 0x68, 0x0d, 0x58, 0xe4, 0xf1, 0x30, 0xe4, 0xbe, 0x5d, - 0x53, 0xe7, 0xce, 0x54, 0x63, 0xc4, 0x7d, 0x7b, 0x8b, 0xec, 0xc2, 0xf6, 0x79, 0x84, 0xe0, 0xb7, - 0x71, 0x22, 0x27, 0x0b, 0xbb, 0xee, 0x7c, 0x6f, 0x41, 0x47, 0xd9, 0xe3, 0xf3, 0x38, 0xbe, 0x9c, - 0xb2, 0xe4, 0x72, 0x73, 0xa8, 0x9f, 0x27, 0xa1, 0x49, 0x5c, 0x6a, 0x99, 0x8d, 0x17, 0xaa, 0x85, - 0xf1, 0xc2, 0x03, 0x68, 0x61, 0x6b, 0xe0, 0x2a, 0x5a, 0x1d, 0x54, 0x9a, 0x88, 0x38, 0x4f, 0xc2, - 0x62, 0x8f, 0xb8, 0x55, 0xee, 0x11, 0xdf, 0x03, 0x30, 0xc6, 0xaa, 0x2c, 0xb4, 0xae, 0x2d, 0xd4, - 0x60, 0xfa, 0xd2, 0xf9, 0x13, 0x78, 0x57, 0x49, 0x38, 0x8a, 0xc4, 0xb9, 0xe0, 0x89, 0xba, 0x48, - 0x0f, 0x56, 0x37, 0x88, 0xba, 0x0f, 0xcd, 0xb9, 0xa1, 0x33, 0xf2, 0x66, 0x30, 0xce, 0x39, 0x27, - 0x2c, 0xc0, 0xb1, 0x8a, 0xae, 0x19, 0x1b, 0x08, 0x1f, 0x96, 0x5a, 0xd8, 0x5a, 0x49, 0x3c, 0xe7, - 0x6b, 0x5d, 0x2e, 0x0d, 0x42, 0xce, 0x92, 0x17, 0x81, 0x90, 0x71, 0xb2, 0x28, 0x06, 0x4f, 0xab, - 0x14, 0x3c, 0xdf, 0x03, 0xf0, 0x14, 0xa1, 0xfe, 0x16, 0x13, 0xdc, 0x0d, 0xa6, 0x2f, 0x9d, 0x7f, - 0xb1, 0x80, 0x28, 0x66, 0xe6, 0xc7, 0x82, 0x93, 0xc0, 0x93, 0xf3, 0x84, 0xaf, 0x1d, 0x82, 0x15, - 0xa6, 0x8c, 0x95, 0x0d, 0x53, 0xc6, 0x2a, 0xce, 0x70, 0x56, 0xa6, 0x8c, 0x35, 0x44, 0xa7, 0x53, - 0xc6, 0x07, 0xd0, 0xc2, 0xa6, 0x0d, 0xc7, 0x8c, 0x7a, 0xea, 0x83, 0x63, 0xc6, 0xd3, 0xb5, 0x63, - 0xc6, 0x3a, 0x12, 0x6c, 0x18, 0x33, 0x36, 0x8a, 0x63, 0xc6, 0x09, 0xdc, 0x59, 0xfd, 0x12, 0xb1, - 0x79, 0x92, 0xfa, 0x13, 0x68, 0xce, 0x0c, 0x91, 0x29, 0x0f, 0x1f, 0x96, 0x43, 0x62, 0x99, 0x13, - 0xcd, 0xa8, 0x9d, 0xbf, 0xad, 0x40, 0xbb, 0x30, 0xc2, 0xdf, 0xa0, 0xf7, 0x1e, 0x34, 0x4c, 0x01, - 0x9e, 0xbe, 0x97, 0x01, 0x8b, 0x22, 0x55, 0x4b, 0x22, 0x95, 0xdb, 0x0b, 0xdd, 0xec, 0x15, 0xda, - 0x0b, 0x02, 0xb5, 0x19, 0x93, 0x13, 0xd3, 0x2a, 0xe0, 0x3a, 0xd3, 0x54, 0xbd, 0xa0, 0xa9, 0xe2, - 0xf4, 0x5c, 0x0f, 0x59, 0xb2, 0xe9, 0xf9, 0x1e, 0x6c, 0xf1, 0x69, 0xfc, 0xf3, 0x00, 0x73, 0x5f, - 0x8b, 0x6a, 0x40, 0xa9, 0xea, 0x9a, 0x85, 0x21, 0x97, 0x66, 0xea, 0x62, 0x20, 0xc5, 0x5c, 0x99, - 0x91, 0x69, 0xbf, 0x70, 0x8d, 0x6a, 0x0d, 0x7c, 0x9f, 0x47, 0xa6, 0xed, 0x32, 0xd0, 0xe6, 0x91, - 0x8b, 0xf3, 0x9d, 0x79, 0xae, 0xf4, 0x97, 0x97, 0xf5, 0xcf, 0x55, 0x78, 0x94, 0xca, 0xda, 0x89, - 0x77, 0xb5, 0x3c, 0x90, 0x2d, 0x0c, 0x3e, 0x71, 0x8d, 0x33, 0x06, 0x9e, 0x04, 0x57, 0xdc, 0x77, - 0xdf, 0x24, 0xf1, 0xd4, 0xbc, 0x52, 0xdb, 0xe0, 0xbe, 0x4c, 0xe2, 0x29, 0xf9, 0x14, 0xf6, 0xf5, - 0x34, 0x40, 0x70, 0xdf, 0xc5, 0x0d, 0x33, 0xd4, 0xc4, 0x91, 0xbc, 0x76, 0xf4, 0x7b, 0x38, 0x1b, - 0x10, 0xdc, 0x1f, 0x66, 0xfb, 0x87, 0x6a, 0x5b, 0x4f, 0xb8, 0x22, 0x2f, 0x65, 0xaf, 0x1f, 0x16, - 0x34, 0x0a, 0xb9, 0xff, 0x06, 0x56, 0x1d, 0xca, 0x22, 0xd2, 0x86, 0x6b, 0xc3, 0x4f, 0x3e, 0x19, - 0x99, 0x33, 0xd7, 0x55, 0x7e, 0xe1, 0x47, 0x2a, 0xf2, 0x11, 0xbe, 0x03, 0xfe, 0xa0, 0x65, 0xad, - 0xfb, 0xdd, 0xc8, 0xd0, 0xd2, 0x94, 0x4a, 0x5d, 0x6b, 0x7e, 0xf9, 0x48, 0xed, 0x78, 0xf5, 0x84, - 0xda, 0xa5, 0x19, 0x99, 0xf3, 0xdf, 0x96, 0x0e, 0x21, 0xa7, 0xec, 0x2a, 0xeb, 0xdc, 0x8a, 0xf6, - 0x6a, 0x95, 0xed, 0x75, 0xdd, 0x6f, 0x0e, 0x0f, 0xa1, 0xf5, 0x86, 0x5d, 0xc5, 0xf3, 0x24, 0x90, - 0x5a, 0x35, 0x4d, 0x9a, 0x23, 0xde, 0x12, 0x5b, 0x9f, 0x40, 0x47, 0xe7, 0x7a, 0xb7, 0xe8, 0xc2, - 0x6d, 0x8d, 0xd3, 0xc3, 0xa2, 0x5f, 0x85, 0x5d, 0x1d, 0x14, 0xc5, 0x24, 0x4e, 0x24, 0xf6, 0xcd, - 0xc2, 0xd8, 0xeb, 0x0e, 0x6e, 0x9c, 0x2a, 0xbc, 0xea, 0x9f, 0x85, 0xca, 0x03, 0x3c, 0x12, 0xa6, - 0x60, 0x53, 0x4b, 0x65, 0x47, 0x81, 0x70, 0x25, 0x17, 0xa9, 0xd9, 0xd6, 0x03, 0x71, 0xc6, 0x85, - 0xfc, 0xba, 0xd6, 0xac, 0xd9, 0x5b, 0xce, 0x5f, 0x5b, 0x3a, 0x7a, 0xaf, 0x8c, 0x1e, 0x36, 0x98, - 0xe5, 0x72, 0x5d, 0x57, 0x59, 0xad, 0xeb, 0x46, 0xf0, 0x68, 0xa2, 0xc3, 0xb0, 0xcb, 0x12, 0x6f, - 0x12, 0x5c, 0x71, 0x57, 0xcc, 0x67, 0x33, 0x25, 0x3b, 0x8f, 0xd8, 0xeb, 0xd0, 0x8c, 0x9d, 0x9a, - 0xf4, 0xa1, 0x21, 0xeb, 0x6b, 0xaa, 0x53, 0x4d, 0x34, 0xd2, 0x34, 0xce, 0xdf, 0x59, 0xda, 0x18, - 0x4c, 0x7a, 0x54, 0xb9, 0xe5, 0x86, 0x93, 0xee, 0xcf, 0xa1, 0x6e, 0x4a, 0x3b, 0x5d, 0x96, 0x2f, - 0x8d, 0x6b, 0x0a, 0x0c, 0x0f, 0xce, 0xf2, 0xa1, 0x24, 0x35, 0x87, 0x9c, 0x4f, 0xa0, 0x5d, 0x40, - 0x63, 0x9a, 0x1f, 0x1f, 0x8d, 0x8f, 0xbf, 0x1d, 0xeb, 0x34, 0x7f, 0x46, 0xcf, 0x4f, 0xcf, 0x46, - 0x43, 0xdb, 0xc2, 0x74, 0x3d, 0x46, 0xf0, 0xdb, 0x63, 0x7a, 0xf6, 0xe2, 0x67, 0x76, 0xc5, 0xf9, - 0xbe, 0xaa, 0xc7, 0x76, 0xc5, 0x72, 0xc1, 0x54, 0x41, 0x1b, 0x84, 0x27, 0x50, 0x43, 0xff, 0x31, - 0xc6, 0xa4, 0xd6, 0xea, 0x83, 0x64, 0x6c, 0x1c, 0xbc, 0x22, 0x63, 0x65, 0x5c, 0xde, 0x44, 0x85, - 0xa0, 0xe8, 0x22, 0xf5, 0xf1, 0x1c, 0xa1, 0x54, 0x62, 0x06, 0x4d, 0x3a, 0xa9, 0x99, 0x69, 0x74, - 0x86, 0xeb, 0xe3, 0xef, 0x3c, 0x09, 0x17, 0xb3, 0x38, 0x12, 0x69, 0x64, 0xcc, 0x60, 0x15, 0x64, - 0x55, 0xe5, 0x1e, 0xe8, 0xc3, 0xda, 0xfe, 0x5a, 0x06, 0xd3, 0x97, 0x84, 0xaf, 0x1f, 0xff, 0x36, - 0xf1, 0x65, 0x7f, 0xb3, 0xfc, 0xb2, 0x6b, 0xbe, 0xfa, 0x60, 0x4d, 0x99, 0xbc, 0x6e, 0x68, 0xac, - 0x75, 0xd8, 0xca, 0x1a, 0xef, 0xdf, 0x03, 0xb2, 0xa1, 0xe4, 0x2a, 0xea, 0xe2, 0x64, 0x34, 0x1e, - 0x1e, 0x8e, 0xbf, 0x32, 0x25, 0xd7, 0x60, 0x30, 0x3a, 0x51, 0x9a, 0xd1, 0x25, 0xd7, 0x68, 0xf0, - 0xf2, 0x70, 0x3c, 0x1a, 0xda, 0x55, 0x05, 0x0d, 0xfa, 0xe3, 0xc1, 0xe8, 0xe5, 0x68, 0x68, 0xd7, - 0x9c, 0x7f, 0xb7, 0x74, 0x47, 0x5e, 0x2e, 0x79, 0x87, 0xdc, 0x0b, 0xc4, 0xe6, 0x9f, 0x7d, 0x1e, - 0x42, 0xcb, 0xbc, 0xe7, 0x61, 0x6a, 0x69, 0x39, 0x82, 0xfc, 0x01, 0xec, 0xf8, 0xe6, 0xbc, 0x5b, - 0xb2, 0xbc, 0x8f, 0x97, 0x67, 0x1b, 0xeb, 0xae, 0x3c, 0x48, 0x17, 0xe6, 0x79, 0xba, 0x7e, 0x09, - 0x76, 0x3e, 0x84, 0x6e, 0x99, 0xa2, 0xf4, 0xb1, 0xef, 0x94, 0x3e, 0xd6, 0x72, 0xfe, 0xb9, 0x02, - 0x3b, 0x4b, 0xff, 0xf2, 0xb0, 0x39, 0xe7, 0x2f, 0xcf, 0xa1, 0x2b, 0x2b, 0x73, 0x68, 0xf2, 0x21, - 0x90, 0x22, 0x89, 0x5b, 0x1c, 0xe8, 0xd9, 0x05, 0x42, 0x1d, 0xab, 0x8a, 0x45, 0x44, 0xed, 0x36, - 0x45, 0x04, 0xf9, 0x0c, 0x3a, 0x22, 0xf6, 0x02, 0x16, 0xba, 0x61, 0x10, 0x5d, 0xa6, 0xff, 0x67, - 0xb2, 0xf4, 0xdf, 0x0b, 0xa7, 0x48, 0xf1, 0x52, 0x11, 0xd0, 0xb6, 0xc8, 0x01, 0xf2, 0xbb, 0xb0, - 0xc7, 0x23, 0xe1, 0xa6, 0x85, 0xa4, 0xeb, 0x67, 0xff, 0x59, 0x52, 0x5d, 0x1d, 0xb3, 0xae, 0x54, - 0xaa, 0x94, 0xf0, 0x65, 0x94, 0x70, 0x04, 0x00, 0x65, 0xd7, 0x69, 0x3f, 0x5b, 0xa8, 0xf6, 0xac, - 0x72, 0xb5, 0x77, 0x04, 0x6d, 0xd3, 0x08, 0xab, 0x86, 0x0c, 0x9f, 0xb0, 0xfb, 0xec, 0x57, 0xf2, - 0x1b, 0xfb, 0xf9, 0xbf, 0x1d, 0xbd, 0x32, 0xff, 0x75, 0x64, 0x98, 0x1e, 0x60, 0xe7, 0x5f, 0x3c, - 0xed, 0xfc, 0x8d, 0x05, 0x5d, 0x25, 0x62, 0xe1, 0xe6, 0xdf, 0x86, 0x76, 0x92, 0x41, 0xe9, 0x70, - 0x64, 0x2f, 0xe7, 0x9f, 0x93, 0xd2, 0x22, 0x21, 0x79, 0x06, 0x7b, 0x62, 0xfe, 0xda, 0xe4, 0x58, - 0xf1, 0xb5, 0x88, 0xa3, 0xe7, 0x0b, 0xc9, 0xd3, 0xe2, 0x6b, 0xed, 0x1e, 0xf9, 0x10, 0x76, 0xd3, - 0x81, 0x73, 0x7e, 0x40, 0x4f, 0xe1, 0x57, 0x37, 0x9c, 0xef, 0xac, 0xac, 0x90, 0x51, 0x79, 0x14, - 0x9b, 0x90, 0xcc, 0xc4, 0xd4, 0x72, 0x6d, 0xa6, 0xbc, 0x0b, 0x75, 0xf3, 0xd3, 0x95, 0xce, 0x02, - 0x06, 0x2a, 0x1a, 0x69, 0xad, 0x64, 0xa4, 0x0f, 0xa1, 0x95, 0x4f, 0x6e, 0xb7, 0x70, 0x98, 0x95, - 0x23, 0x72, 0x7f, 0xad, 0x17, 0x8b, 0xdf, 0x7f, 0xaa, 0xc0, 0x6e, 0x41, 0x34, 0xd5, 0xcd, 0xc7, - 0x11, 0xf9, 0x04, 0xea, 0x0c, 0x57, 0x28, 0x63, 0xf7, 0x99, 0xb3, 0xb6, 0x30, 0xd0, 0xc4, 0x07, - 0xfa, 0x0f, 0x35, 0x27, 0xc8, 0x0f, 0x61, 0x3b, 0x0e, 0x7d, 0x43, 0x72, 0x9e, 0xe5, 0x9b, 0x32, - 0xd2, 0x54, 0x2b, 0x0a, 0x32, 0xe3, 0xd1, 0x0d, 0xb5, 0x47, 0x4a, 0xa5, 0xf2, 0x6f, 0xdd, 0x48, - 0xb7, 0x0b, 0xdb, 0x47, 0xa3, 0x9f, 0x0d, 0xfa, 0x74, 0xe8, 0xf6, 0x87, 0x43, 0x74, 0x6d, 0x02, - 0xdd, 0xfe, 0x60, 0x70, 0x7c, 0x3e, 0x3e, 0x3b, 0x35, 0x38, 0x4b, 0xb5, 0xd2, 0x29, 0xd9, 0x70, - 0xf4, 0x72, 0xa4, 0x03, 0xde, 0x1e, 0xd8, 0x19, 0x21, 0x1d, 0xbd, 0x3a, 0xfe, 0x06, 0x03, 0x1f, - 0x40, 0xfd, 0xe5, 0xf1, 0xe0, 0x48, 0x85, 0x3d, 0x15, 0x25, 0xce, 0xc7, 0x06, 0xda, 0x22, 0x3b, - 0xd0, 0x3e, 0x3f, 0x1c, 0xba, 0xe7, 0x27, 0xc3, 0xbe, 0x62, 0x50, 0x27, 0x36, 0x74, 0xc6, 0xfd, - 0x57, 0x23, 0x77, 0xf0, 0xa2, 0x3f, 0xfe, 0x6a, 0x34, 0xb4, 0x1b, 0xce, 0x1f, 0xea, 0xf4, 0x5b, - 0x70, 0x39, 0xf2, 0xe3, 0x25, 0x1f, 0x5d, 0xb1, 0xc5, 0x9c, 0xb8, 0xec, 0x9e, 0x99, 0x92, 0x2a, - 0x05, 0x25, 0x3d, 0xdf, 0xfe, 0xfd, 0xf6, 0xc1, 0x47, 0x9f, 0xa6, 0x87, 0x5f, 0xd7, 0x71, 0xf5, - 0xf1, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x54, 0xc8, 0x8b, 0xec, 0x27, 0x00, 0x00, + 0x56, 0x53, 0x92, 0xac, 0x8f, 0x27, 0x59, 0x2e, 0x67, 0x7b, 0xa6, 0xd5, 0xee, 0x9e, 0xed, 0xee, + 0x9a, 0x9d, 0xd8, 0x86, 0x18, 0x3c, 0xd0, 0x03, 0x2c, 0x3b, 0x1f, 0x31, 0xa8, 0x25, 0xcd, 0xb4, + 0xdb, 0x6d, 0xd9, 0xa4, 0xed, 0x19, 0x96, 0x20, 0xa2, 0x48, 0x57, 0xa5, 0xad, 0x5a, 0x97, 0xaa, + 0x44, 0x65, 0xca, 0x46, 0x7b, 0x20, 0x80, 0x08, 0xce, 0x10, 0x5c, 0x76, 0x8e, 0x73, 0x26, 0x38, + 0x11, 0xc1, 0x81, 0x08, 0x0e, 0x9c, 0x08, 0xee, 0x1c, 0xe1, 0x17, 0x10, 0x5c, 0xb8, 0x71, 0x24, + 0xf2, 0x65, 0x56, 0xa9, 0x4a, 0x1f, 0xc6, 0x0e, 0x4e, 0x7b, 0x72, 0xbe, 0x97, 0x2f, 0x5f, 0xbe, + 0xca, 0xf7, 0xfd, 0x64, 0xd8, 0x9c, 0xb0, 0x20, 0x09, 0xa2, 0xcb, 0xbd, 0x49, 0x12, 0xcb, 0x98, + 0xd4, 0xf1, 0xcf, 0xf9, 0xf4, 0x62, 0xf7, 0x81, 0x37, 0x62, 0xd2, 0x0d, 0x7c, 0x1e, 0xc9, 0x40, + 0xce, 0xf4, 0xf6, 0xee, 0x03, 0x31, 0x8b, 0x3c, 0x57, 0x70, 0x29, 0x83, 0xe8, 0x52, 0x18, 0xa4, + 0xc3, 0x26, 0x93, 0x30, 0xf0, 0x98, 0x0c, 0xe2, 0xc8, 0x1d, 0x73, 0xc9, 0x7c, 0x26, 0x99, 0x3b, + 0xe6, 0x42, 0xb0, 0x4b, 0x6e, 0x68, 0xb6, 0xbd, 0x78, 0x3c, 0x9e, 0x46, 0x81, 0x0c, 0xb8, 0x39, + 0xe6, 0x30, 0x78, 0xfc, 0x15, 0x97, 0xde, 0x28, 0x88, 0x2e, 0x5f, 0x31, 0xef, 0x8a, 0xfb, 0x67, + 0x93, 0x3e, 0x93, 0xac, 0xcf, 0x25, 0x0b, 0x42, 0x41, 0x9e, 0x42, 0x13, 0xf9, 0x44, 0xd3, 0xf1, + 0x39, 0x4f, 0x3a, 0xd6, 0x33, 0xeb, 0xc5, 0x26, 0x05, 0x85, 0x1a, 0x22, 0x86, 0x3c, 0x87, 0x96, + 0x8c, 0x25, 0x0b, 0x53, 0x8a, 0x12, 0x52, 0x34, 0x11, 0xa7, 0x49, 0x9c, 0xbf, 0xae, 0x41, 0x55, + 0xf1, 0x9e, 0x4e, 0xc8, 0x0e, 0x6c, 0x78, 0x61, 0xec, 0x5d, 0x21, 0xa3, 0x0a, 0xd5, 0x00, 0x69, + 0x43, 0x29, 0xf0, 0xf1, 0x64, 0x83, 0x96, 0x02, 0x9f, 0x7c, 0x09, 0x75, 0x2f, 0x8e, 0x24, 0xf3, + 0xa4, 0xe8, 0x94, 0x9f, 0x95, 0x5f, 0x34, 0x5f, 0x7e, 0xb0, 0x97, 0xbe, 0xc8, 0xde, 0xc9, 0x2c, + 0xf2, 0xf6, 0x23, 0x21, 0x59, 0x18, 0xe2, 0xb7, 0xf6, 0x34, 0xe5, 0x37, 0x2f, 0x69, 0x76, 0x88, + 0xfc, 0x04, 0x9a, 0xb9, 0x2f, 0xed, 0x54, 0x90, 0xc7, 0xc3, 0x22, 0x8f, 0x9e, 0x21, 0x98, 0xd1, + 0x3c, 0x2d, 0x39, 0x82, 0xad, 0x94, 0x8d, 0x79, 0x83, 0xce, 0xc6, 0x33, 0xeb, 0x45, 0xf3, 0xe5, + 0x87, 0xf3, 0xe3, 0xb7, 0x3c, 0x18, 0x5d, 0x3c, 0x4d, 0xce, 0x80, 0xe4, 0xf8, 0xa7, 0x3c, 0xab, + 0xf7, 0xe1, 0xb9, 0x82, 0x01, 0xf9, 0x04, 0x6a, 0x93, 0x24, 0xbe, 0x08, 0x42, 0xde, 0xa9, 0x21, + 0xaf, 0x47, 0x73, 0x5e, 0x29, 0x8f, 0x63, 0x4d, 0x40, 0x53, 0x4a, 0x72, 0x08, 0x6d, 0xb3, 0x4c, + 0xe5, 0xa8, 0xdf, 0x47, 0x8e, 0x85, 0xc3, 0xe4, 0x63, 0xa8, 0x19, 0x23, 0xec, 0x34, 0x90, 0xcf, + 0xbb, 0xc5, 0x27, 0x3e, 0xd1, 0x9b, 0x34, 0xa5, 0x52, 0x8f, 0x9b, 0x5a, 0x6d, 0x2a, 0x00, 0xdc, + 0xeb, 0x71, 0x17, 0x4e, 0x93, 0xcf, 0xa0, 0x79, 0x31, 0x0d, 0xc3, 0x03, 0x3e, 0x53, 0x0e, 0xd4, + 0x69, 0x2e, 0xbe, 0x84, 0x92, 0xc2, 0x6c, 0x7e, 0x35, 0x0d, 0x43, 0x9a, 0xa7, 0x56, 0x9a, 0xc9, + 0x81, 0xa9, 0x40, 0xad, 0x7b, 0x69, 0x66, 0x99, 0x01, 0xe9, 0x82, 0x7d, 0xc3, 0xa4, 0x37, 0x3a, + 0x8a, 0xc2, 0x59, 0xd7, 0xf3, 0xe2, 0x69, 0x24, 0x3b, 0x9b, 0xab, 0x9e, 0xc7, 0x6c, 0xd2, 0x25, + 0x72, 0xe2, 0xc2, 0xc3, 0x45, 0x5c, 0x2a, 0x5e, 0xfb, 0x3e, 0xe2, 0xad, 0xe3, 0xe2, 0xfc, 0x57, + 0x05, 0x5a, 0x87, 0xd3, 0x50, 0x06, 0xe9, 0x8d, 0x04, 0x2a, 0x11, 0x1b, 0x73, 0xf4, 0xcb, 0x06, + 0xc5, 0x35, 0x79, 0x02, 0x0d, 0x19, 0x8c, 0xb9, 0x90, 0x6c, 0x3c, 0x41, 0xef, 0x2c, 0xd3, 0x39, + 0x42, 0xed, 0xea, 0xb0, 0xe4, 0xc5, 0x51, 0xa7, 0x8c, 0xc7, 0xe6, 0x08, 0xf2, 0x25, 0x80, 0x17, + 0x87, 0x71, 0xe2, 0x8e, 0x98, 0x18, 0x19, 0x07, 0x7c, 0x36, 0x17, 0x3a, 0x7f, 0xf7, 0x5e, 0x4f, + 0x11, 0xbe, 0x66, 0x62, 0x44, 0x1b, 0x5e, 0xba, 0x24, 0x8f, 0x54, 0x0c, 0x50, 0x0c, 0x02, 0x1f, + 0x1d, 0xb0, 0x4c, 0x6b, 0x08, 0xef, 0xfb, 0xe4, 0x47, 0xb0, 0x75, 0xc5, 0x67, 0x1e, 0x4b, 0x7c, + 0xd7, 0x84, 0x4d, 0x74, 0xa7, 0x06, 0x6d, 0x1b, 0xf4, 0xb1, 0xc6, 0x92, 0x87, 0x50, 0xbb, 0xe2, + 0x33, 0x77, 0x1a, 0xf8, 0xe8, 0x23, 0x0d, 0x5a, 0xbd, 0xe2, 0xb3, 0xb3, 0xc0, 0x27, 0x9f, 0x43, + 0x35, 0x18, 0xb3, 0x4b, 0xae, 0xec, 0x5f, 0x49, 0xf6, 0xc3, 0x35, 0x92, 0xed, 0x9b, 0xb8, 0xbb, + 0xaf, 0x88, 0xa9, 0x39, 0x43, 0x3e, 0x86, 0x07, 0xde, 0x54, 0xc8, 0x78, 0x1c, 0xfc, 0x5c, 0x47, + 0x5b, 0x14, 0x0c, 0x5d, 0xa0, 0x41, 0x49, 0x61, 0x0b, 0x3f, 0x6d, 0xf7, 0x39, 0x34, 0xb2, 0x6f, + 0x54, 0x21, 0x30, 0x88, 0x7c, 0xfe, 0x27, 0x1d, 0xeb, 0x59, 0xf9, 0x45, 0x99, 0x6a, 0x60, 0xf7, + 0xdf, 0x2d, 0xd8, 0x2c, 0xdc, 0x96, 0x17, 0xde, 0x2a, 0x08, 0x9f, 0xaa, 0xaa, 0x94, 0x53, 0x55, + 0x07, 0x6a, 0x13, 0x36, 0x0b, 0x63, 0xe6, 0xa3, 0x2a, 0x5a, 0x34, 0x05, 0xd5, 0x75, 0x37, 0x81, + 0x2f, 0x95, 0x0e, 0xd4, 0x23, 0x6a, 0x80, 0xbc, 0x07, 0xd5, 0x11, 0x0f, 0x2e, 0x47, 0xd2, 0xbc, + 0xad, 0x81, 0xc8, 0x2e, 0xd4, 0x95, 0x83, 0x8b, 0xe0, 0xe7, 0x1c, 0xdf, 0xb4, 0x4c, 0x33, 0x98, + 0x7c, 0x00, 0x9b, 0x09, 0xae, 0x5c, 0xc9, 0x92, 0x4b, 0x2e, 0xf1, 0x4d, 0xcb, 0xb4, 0xa5, 0x91, + 0xa7, 0x88, 0x9b, 0x07, 0xf8, 0x7a, 0x2e, 0xc0, 0x3b, 0xff, 0x66, 0xc1, 0x83, 0xb7, 0xb1, 0xc7, + 0x42, 0xa3, 0x99, 0x63, 0x23, 0xdc, 0x6f, 0x41, 0xe5, 0x8a, 0xcf, 0x04, 0x3e, 0x45, 0xf3, 0xe5, + 0xf3, 0xb9, 0x16, 0x56, 0x10, 0xef, 0x1d, 0xf0, 0x19, 0x45, 0x72, 0xf2, 0x29, 0xb4, 0xc6, 0x4a, + 0x4d, 0xcc, 0x78, 0x57, 0x09, 0x7d, 0xe2, 0xbd, 0xd5, 0x4a, 0xa4, 0x05, 0x5a, 0xf5, 0x85, 0x13, + 0x26, 0xc4, 0x4d, 0x9c, 0xf8, 0xc6, 0x6a, 0x33, 0x78, 0xf7, 0xd7, 0xa0, 0x7c, 0xc0, 0x67, 0x2b, + 0x7d, 0x81, 0x40, 0x45, 0x25, 0x3d, 0xbc, 0xaa, 0x45, 0x71, 0xed, 0xfc, 0xa3, 0x05, 0xef, 0x16, + 0x04, 0xe5, 0x3c, 0x79, 0xcd, 0xc3, 0x30, 0x56, 0x16, 0x6a, 0x2c, 0xd3, 0xbd, 0xe6, 0x89, 0x08, + 0xe2, 0x08, 0x99, 0x6d, 0xd0, 0xb6, 0x41, 0x7f, 0xa3, 0xb1, 0x4a, 0xc9, 0x13, 0xce, 0xd1, 0xc8, + 0x35, 0xe7, 0xaa, 0x02, 0xf7, 0x7d, 0xcc, 0xbb, 0xfc, 0x3a, 0xf0, 0xb8, 0x8b, 0xa2, 0x68, 0x49, + 0x41, 0xa3, 0x86, 0x4a, 0xa0, 0x39, 0x81, 0x9c, 0x4d, 0x38, 0x6a, 0x37, 0x23, 0x38, 0x9d, 0x4d, + 0xd0, 0x7b, 0x45, 0x70, 0x19, 0x31, 0x39, 0x4d, 0x38, 0x6a, 0xb9, 0x45, 0xe7, 0x08, 0xe7, 0x7b, + 0x0b, 0x6c, 0x25, 0x76, 0x3e, 0x93, 0xae, 0xc9, 0xce, 0x3f, 0x82, 0xad, 0x20, 0x47, 0xe5, 0x66, + 0xa9, 0xba, 0x9d, 0x47, 0x17, 0x64, 0x46, 0x91, 0xca, 0x4b, 0x22, 0xa5, 0x0f, 0x5b, 0x29, 0x5a, + 0x6e, 0xfa, 0x44, 0x1b, 0x58, 0x3a, 0xa4, 0xa0, 0xf3, 0x9f, 0x16, 0x3c, 0x5c, 0x93, 0xec, 0xef, + 0x58, 0x47, 0x7c, 0x00, 0x9b, 0x26, 0x63, 0xb9, 0xe8, 0xba, 0x46, 0xa4, 0x96, 0x41, 0x6a, 0x3f, + 0x7b, 0x04, 0x75, 0x1e, 0x09, 0x37, 0x27, 0x58, 0x8d, 0x47, 0x02, 0xdf, 0xf8, 0x39, 0xb4, 0x42, + 0x26, 0xa4, 0x3b, 0x9d, 0xf8, 0x4c, 0x72, 0x1d, 0x87, 0x2a, 0xb4, 0xa9, 0x70, 0x67, 0x1a, 0xa5, + 0xbe, 0x59, 0xcc, 0x84, 0xe4, 0x63, 0x57, 0xb2, 0x4b, 0x95, 0xd6, 0xcb, 0xea, 0x9b, 0x35, 0xea, + 0x94, 0x5d, 0x0a, 0xf2, 0x21, 0xb4, 0x43, 0x65, 0x23, 0x6e, 0x14, 0x78, 0x57, 0x78, 0x89, 0x0e, + 0x45, 0x9b, 0x88, 0x1d, 0x1a, 0xa4, 0xf3, 0xe7, 0x55, 0x78, 0xb4, 0xb6, 0xb2, 0x21, 0xbf, 0x0e, + 0x3b, 0x79, 0x41, 0x5c, 0x3c, 0x1b, 0xce, 0xcc, 0xd7, 0x93, 0x9c, 0x40, 0x6f, 0xf5, 0xce, 0x2f, + 0xf1, 0x53, 0x28, 0xdd, 0x32, 0xdf, 0xe7, 0x3e, 0x06, 0xd4, 0x3a, 0xd5, 0x80, 0xb2, 0x93, 0x73, + 0xa5, 0x64, 0xee, 0x63, 0xc9, 0x50, 0xa7, 0x29, 0xa8, 0xe8, 0xc7, 0x53, 0x25, 0x53, 0x53, 0xd3, + 0x23, 0xa0, 0xe8, 0x13, 0x3e, 0x8e, 0xaf, 0xb9, 0x8f, 0x19, 0xbd, 0x4e, 0x53, 0x90, 0x3c, 0x83, + 0xd6, 0x88, 0x09, 0x17, 0xd9, 0xba, 0x53, 0x81, 0xb9, 0xb9, 0x4e, 0x61, 0xc4, 0x44, 0x57, 0xa1, + 0xce, 0x30, 0xc0, 0x5f, 0xf3, 0x24, 0xb8, 0x48, 0xab, 0x69, 0x21, 0x99, 0x9c, 0xea, 0xd4, 0x5b, + 0xa6, 0x24, 0xbf, 0x75, 0x82, 0x3b, 0x58, 0x04, 0x27, 0x53, 0x21, 0x53, 0xca, 0x2d, 0xa4, 0x6c, + 0x22, 0xce, 0x90, 0x7c, 0x01, 0x8f, 0x4d, 0x65, 0xe8, 0x26, 0xfc, 0x8f, 0xa7, 0x5c, 0x48, 0xad, + 0x45, 0x3c, 0xc2, 0x3b, 0x36, 0x9e, 0xe8, 0x18, 0x12, 0xaa, 0x29, 0x50, 0x99, 0xea, 0x3c, 0x5f, + 0x7f, 0x5c, 0xbb, 0xc1, 0xf6, 0xda, 0xe3, 0x3d, 0xf4, 0x8c, 0x2f, 0xe1, 0xc9, 0xe2, 0x71, 0xf5, + 0x1c, 0x92, 0x9b, 0xeb, 0x09, 0x9e, 0x7f, 0x54, 0x3c, 0x4f, 0x91, 0x42, 0xdf, 0xbf, 0x9e, 0x81, + 0x16, 0xe0, 0xc1, 0x7a, 0x06, 0x5a, 0x82, 0xe7, 0xd0, 0xf2, 0x03, 0x31, 0x09, 0xd9, 0x4c, 0xdb, + 0xd7, 0x0e, 0xaa, 0xbe, 0x69, 0x70, 0xca, 0xc6, 0x9c, 0x9b, 0x65, 0x7f, 0x4f, 0xcb, 0x93, 0xd5, + 0xfe, 0xbe, 0x64, 0xd4, 0xa5, 0x15, 0x46, 0xbd, 0x68, 0xb9, 0xe5, 0x25, 0xcb, 0x75, 0x5e, 0xc1, + 0xee, 0xe2, 0xc5, 0xc7, 0xd3, 0xf3, 0x30, 0xf0, 0x7a, 0x23, 0x76, 0xc7, 0x58, 0xe3, 0xfc, 0x43, + 0x19, 0x36, 0x0b, 0x6d, 0xc5, 0xff, 0x79, 0xae, 0x85, 0x8e, 0xf9, 0x14, 0x9a, 0x93, 0x24, 0xb8, + 0x66, 0x92, 0xbb, 0x57, 0x7c, 0x66, 0xb2, 0x37, 0x18, 0x94, 0xca, 0x46, 0xcf, 0x54, 0x54, 0x15, + 0x5e, 0x12, 0x4c, 0x94, 0x5c, 0xe8, 0x97, 0x2d, 0x9a, 0x47, 0xa9, 0x64, 0xfe, 0xb3, 0x38, 0x88, + 0x8c, 0x57, 0xd6, 0xa9, 0x81, 0x54, 0xaa, 0xd3, 0xb6, 0xca, 0x7d, 0x4c, 0xe6, 0x75, 0x9a, 0xc1, + 0x73, 0xa7, 0xa9, 0xe5, 0x9d, 0xe6, 0x08, 0x6c, 0xa3, 0x5d, 0xe1, 0xca, 0xd8, 0x55, 0x7c, 0x4c, + 0x85, 0xf4, 0xe1, 0xba, 0xe6, 0xc9, 0x90, 0x9f, 0xc6, 0x6f, 0xe2, 0x20, 0xa2, 0xed, 0xa4, 0x00, + 0x93, 0xcf, 0xa0, 0x9e, 0x96, 0xec, 0xa6, 0x45, 0x78, 0xba, 0x86, 0x91, 0xe9, 0x15, 0x04, 0xcd, + 0x0e, 0xa8, 0x0c, 0xc6, 0x23, 0x2f, 0x99, 0x4d, 0x64, 0xe6, 0xf4, 0x73, 0x04, 0xe6, 0xb7, 0x09, + 0xf7, 0x24, 0x9b, 0xbb, 0xfe, 0x1c, 0xa1, 0x92, 0x96, 0x21, 0x55, 0x0e, 0x8c, 0x45, 0x46, 0x0b, + 0x5f, 0xae, 0x3d, 0x47, 0x1f, 0xf0, 0x99, 0x70, 0x7e, 0x51, 0x82, 0xc7, 0xb7, 0x7c, 0x91, 0xd1, + 0x97, 0x95, 0xe9, 0xeb, 0x7d, 0x80, 0x09, 0xda, 0x06, 0xaa, 0x4b, 0xeb, 0xbf, 0xa1, 0x31, 0x4a, + 0x5b, 0x99, 0xd2, 0xcb, 0x79, 0xa5, 0xdf, 0x12, 0x58, 0x1f, 0x42, 0xcd, 0xb4, 0xf8, 0xa8, 0xbd, + 0x06, 0xad, 0x2a, 0x70, 0xdf, 0x57, 0x76, 0x9b, 0xb6, 0x7d, 0x33, 0xb5, 0x5b, 0xd5, 0x8a, 0xcf, + 0x70, 0xfb, 0xa8, 0x44, 0xed, 0xbe, 0x35, 0x7d, 0x19, 0x02, 0xe4, 0x2b, 0xd8, 0x4e, 0xf8, 0x35, + 0x67, 0x21, 0xf7, 0x5d, 0x53, 0xf5, 0xa4, 0x75, 0x6e, 0xae, 0x33, 0xa2, 0x86, 0x24, 0x6b, 0x42, + 0x92, 0x22, 0x42, 0x38, 0x7f, 0x53, 0x02, 0x7b, 0xd1, 0x2d, 0xc8, 0x17, 0xb9, 0xd6, 0x7c, 0xa9, + 0x6a, 0x5b, 0x93, 0xc0, 0x72, 0x8d, 0xf9, 0xd7, 0xd0, 0x32, 0xaf, 0xa7, 0xbe, 0x52, 0x74, 0x4a, + 0x8b, 0xe5, 0xf7, 0x7a, 0x3f, 0xa4, 0xcd, 0x49, 0xb6, 0x56, 0x8d, 0x5f, 0x2d, 0xad, 0xfe, 0xca, + 0x68, 0x57, 0xb7, 0x88, 0x91, 0x7e, 0x62, 0x7a, 0xe2, 0xff, 0x31, 0x1e, 0x70, 0x7e, 0x0c, 0x5b, + 0xb8, 0xab, 0x04, 0x32, 0xf9, 0xe4, 0x6e, 0xf1, 0xe1, 0x73, 0xd8, 0x49, 0x0f, 0x1e, 0xea, 0x99, + 0x8c, 0xa0, 0x9c, 0xdd, 0xf5, 0xf4, 0xef, 0xc2, 0x7b, 0xba, 0x63, 0x94, 0xc1, 0x75, 0x20, 0x67, + 0x3d, 0x1e, 0x49, 0x9e, 0xdc, 0x72, 0xde, 0x86, 0x72, 0xe0, 0xeb, 0xe7, 0x6d, 0x51, 0xb5, 0x74, + 0xfa, 0x3a, 0xc6, 0x15, 0x39, 0x74, 0x3d, 0x8f, 0xa3, 0x33, 0xdd, 0x95, 0xcb, 0x40, 0x3b, 0x4b, + 0x91, 0x4b, 0x3f, 0x10, 0xe3, 0x40, 0x88, 0x7b, 0xb0, 0x71, 0xe1, 0x83, 0x65, 0x36, 0xc3, 0x58, + 0x16, 0xf2, 0x2a, 0x57, 0xbe, 0x96, 0x56, 0x3c, 0x4c, 0x1a, 0x9e, 0x0d, 0x83, 0xe9, 0x4a, 0xe5, + 0x55, 0x2a, 0x91, 0x0b, 0xce, 0x23, 0x7c, 0xaa, 0x3a, 0xad, 0x8d, 0x98, 0x38, 0xe1, 0x3c, 0x72, + 0xfe, 0xca, 0x82, 0xa7, 0xb7, 0xdf, 0x20, 0x48, 0x08, 0xef, 0x33, 0xb3, 0xed, 0x7a, 0xb8, 0xef, + 0x46, 0x79, 0x02, 0x63, 0xdf, 0x2f, 0x16, 0x9b, 0xf6, 0x75, 0x1c, 0xe9, 0x63, 0xb6, 0xfe, 0x36, + 0xe7, 0x9f, 0x1a, 0xf0, 0x83, 0xdb, 0xcf, 0x2f, 0x85, 0x9a, 0xa5, 0xfe, 0xbb, 0x92, 0xef, 0xbf, + 0x2f, 0x60, 0x3b, 0x2f, 0xee, 0xbc, 0xe6, 0x6e, 0xbf, 0xfc, 0xc9, 0x5d, 0x45, 0xde, 0xcb, 0x03, + 0xaa, 0x44, 0xa7, 0x76, 0xb4, 0x80, 0xc9, 0x07, 0xa8, 0x4a, 0x21, 0x40, 0x11, 0xa8, 0x24, 0x9c, + 0xa5, 0x49, 0x07, 0xd7, 0x4a, 0x64, 0x3f, 0xb5, 0x06, 0x93, 0x73, 0xe6, 0x08, 0x95, 0x90, 0x98, + 0xb1, 0x38, 0x93, 0x77, 0x32, 0x58, 0xd5, 0x6b, 0x66, 0x56, 0x89, 0xad, 0x63, 0x8b, 0xa6, 0xa0, + 0x4a, 0x6f, 0x6c, 0x2a, 0x47, 0x59, 0x87, 0x6d, 0x20, 0xdd, 0x8f, 0x4e, 0xc2, 0x59, 0x3a, 0xe3, + 0xc4, 0x14, 0xd1, 0x52, 0xfd, 0xe8, 0x24, 0x9c, 0x19, 0x1f, 0x5b, 0x8a, 0xa2, 0x4d, 0x5d, 0x76, + 0xe4, 0xa3, 0xe8, 0x05, 0x6c, 0x8f, 0xf9, 0xf8, 0x9c, 0x27, 0x62, 0x14, 0x4c, 0xd2, 0x0a, 0xae, + 0x75, 0xcf, 0x87, 0x3c, 0xcc, 0x38, 0xe8, 0x7a, 0x8f, 0xda, 0xe3, 0x05, 0x0c, 0xf9, 0x0b, 0x6b, + 0x5e, 0xc3, 0xad, 0x2a, 0x2f, 0x37, 0xf1, 0xca, 0x57, 0x77, 0xbe, 0x32, 0x6d, 0x0f, 0x96, 0xca, + 0xd1, 0xac, 0x0c, 0x5b, 0xde, 0x52, 0xcf, 0xec, 0xf3, 0x90, 0x2b, 0x0d, 0xb4, 0xb5, 0xcb, 0x18, + 0x70, 0xc1, 0xd9, 0xb6, 0x16, 0x9c, 0xcd, 0xf9, 0x6f, 0x0b, 0xec, 0x45, 0x6b, 0x21, 0x00, 0xd5, + 0x61, 0xac, 0x56, 0xf6, 0x3b, 0x64, 0x0b, 0x9a, 0x43, 0x7e, 0x73, 0x14, 0xf1, 0xd3, 0xf8, 0x28, + 0xe2, 0xb6, 0x45, 0x1e, 0xc2, 0x83, 0x21, 0xbf, 0x39, 0xd6, 0x95, 0xcc, 0xd7, 0x49, 0x3c, 0x9d, + 0xa8, 0xe0, 0x67, 0x97, 0x48, 0x13, 0x6a, 0x87, 0x3c, 0x52, 0x4c, 0xec, 0x32, 0x69, 0xc0, 0x06, + 0x55, 0x0a, 0xb3, 0x2b, 0x84, 0x40, 0xbb, 0x57, 0xa8, 0x1f, 0xed, 0x0d, 0xc5, 0x24, 0x8b, 0xc4, + 0xfb, 0xd1, 0x75, 0x20, 0xf1, 0x72, 0xbb, 0x4a, 0x76, 0xc0, 0x5e, 0x4c, 0xd9, 0x76, 0x8d, 0xfc, + 0x00, 0x76, 0x33, 0xec, 0x5c, 0x25, 0xe9, 0x7e, 0x9d, 0x3c, 0x80, 0xad, 0x6c, 0xff, 0x20, 0x50, + 0xed, 0x83, 0xdd, 0xd0, 0x77, 0x2c, 0x3d, 0x98, 0x0d, 0xce, 0x5f, 0x5a, 0x60, 0x2f, 0x2a, 0x96, + 0x74, 0x60, 0x67, 0x11, 0xb7, 0xef, 0x87, 0xea, 0x05, 0x1e, 0xc3, 0xc3, 0xc5, 0x9d, 0x63, 0x1e, + 0xf9, 0x41, 0x74, 0x69, 0x5b, 0xe4, 0x09, 0x74, 0x16, 0x37, 0xd3, 0xe8, 0x6b, 0x97, 0x56, 0xed, + 0xf6, 0xb9, 0x17, 0xaa, 0x32, 0xce, 0x2e, 0x3b, 0x7f, 0x66, 0xc1, 0xa3, 0xb5, 0xda, 0x56, 0xcf, + 0x79, 0x16, 0x5d, 0x45, 0xf1, 0x4d, 0x64, 0xbf, 0xa3, 0x80, 0xf9, 0x9d, 0x2d, 0xa8, 0xe7, 0xee, + 0x68, 0x41, 0x7d, 0xce, 0x93, 0x6c, 0x42, 0xa3, 0xc7, 0x22, 0x8f, 0x87, 0x21, 0xf7, 0xed, 0x8a, + 0x3a, 0x77, 0xaa, 0xba, 0x15, 0xee, 0xdb, 0x1b, 0x64, 0x1b, 0x36, 0xcf, 0x22, 0x04, 0xbf, 0x8d, + 0x13, 0x39, 0x9a, 0xd9, 0x55, 0xe7, 0x7b, 0x0b, 0x5a, 0xca, 0x1e, 0x5f, 0xc5, 0xf1, 0xd5, 0x98, + 0x25, 0x57, 0xeb, 0x43, 0xfd, 0x34, 0x09, 0x4d, 0xe2, 0x52, 0xcb, 0xac, 0xe7, 0x2f, 0xe7, 0x7a, + 0xfe, 0xc7, 0xd0, 0xc0, 0x7a, 0xdd, 0x55, 0xb4, 0x3a, 0xa8, 0xd4, 0x11, 0x71, 0x96, 0x84, 0xf9, + 0xc6, 0x6d, 0xa3, 0xd8, 0xb8, 0xbd, 0x0f, 0x60, 0x8c, 0x55, 0x59, 0x68, 0x55, 0x5b, 0xa8, 0xc1, + 0x74, 0xa5, 0xf3, 0xa7, 0xf0, 0xae, 0x92, 0x70, 0x10, 0x89, 0x33, 0xc1, 0x13, 0x75, 0x91, 0x9e, + 0x76, 0xae, 0x11, 0x75, 0x17, 0xea, 0x53, 0x43, 0x67, 0xe4, 0xcd, 0x60, 0x1c, 0x3e, 0x8e, 0x58, + 0x80, 0xb3, 0x0e, 0x5d, 0xc8, 0xd5, 0x10, 0xde, 0x2f, 0xf4, 0x95, 0x95, 0x82, 0x78, 0xce, 0x1b, + 0x5d, 0x2e, 0xf5, 0x42, 0xce, 0x92, 0xd7, 0x81, 0x90, 0x71, 0x32, 0xcb, 0x07, 0x4f, 0xab, 0x10, + 0x3c, 0xdf, 0x07, 0xf0, 0x14, 0xa1, 0xfe, 0x16, 0x13, 0xdc, 0x0d, 0xa6, 0x2b, 0x9d, 0x7f, 0xb5, + 0x80, 0x28, 0x66, 0x66, 0x82, 0x7f, 0x1c, 0x78, 0x72, 0x9a, 0xf0, 0x95, 0x93, 0xa9, 0xdc, 0xe8, + 0xaf, 0xb4, 0x66, 0xf4, 0x57, 0xc6, 0xc1, 0xca, 0xd2, 0xe8, 0xaf, 0x82, 0xe8, 0x74, 0xf4, 0xf7, + 0x18, 0x1a, 0xd8, 0x49, 0xe1, 0xec, 0x4f, 0x8f, 0x62, 0x70, 0xf6, 0x77, 0xb2, 0x72, 0xf6, 0x57, + 0x45, 0x82, 0x35, 0xb3, 0xbf, 0x5a, 0x7e, 0xf6, 0x37, 0x82, 0x07, 0xcb, 0x5f, 0x22, 0xd6, 0x8f, + 0x37, 0x7f, 0x07, 0xea, 0x13, 0x43, 0x64, 0xca, 0xc3, 0x27, 0xc5, 0x90, 0x58, 0xe4, 0x44, 0x33, + 0x6a, 0xe7, 0xef, 0x4a, 0xd0, 0xcc, 0xcd, 0xd5, 0xd7, 0xe8, 0xbd, 0x03, 0x35, 0xe6, 0xfb, 0x09, + 0x17, 0x22, 0x7d, 0x2f, 0x03, 0xe6, 0x45, 0x2a, 0x17, 0x44, 0x2a, 0xd6, 0xfc, 0xba, 0x03, 0xcb, + 0xd5, 0xfc, 0x04, 0x2a, 0x13, 0x26, 0x47, 0xa6, 0x7e, 0xc7, 0x75, 0xa6, 0xa9, 0x6a, 0x4e, 0x53, + 0xf9, 0x91, 0xb6, 0x9e, 0x7c, 0x64, 0x23, 0xed, 0x1d, 0xd8, 0xe0, 0xe3, 0xf8, 0x67, 0x01, 0xe6, + 0xbe, 0x06, 0xd5, 0x80, 0x52, 0xd5, 0x0d, 0x0b, 0x43, 0x2e, 0xcd, 0x28, 0xc4, 0x40, 0x8a, 0xb9, + 0x32, 0x23, 0xd3, 0x13, 0xe1, 0x1a, 0xd5, 0x1a, 0xf8, 0x3e, 0x8f, 0x4c, 0x2f, 0x64, 0xa0, 0xf5, + 0x73, 0x10, 0xe7, 0x3b, 0xf3, 0x5c, 0xe9, 0xcf, 0x21, 0xab, 0x9f, 0x2b, 0xf7, 0x28, 0xa5, 0x95, + 0x63, 0xe8, 0x72, 0x71, 0x4a, 0x9a, 0x9b, 0x46, 0xe2, 0x1a, 0x1b, 0x7f, 0x9e, 0x04, 0xd7, 0xdc, + 0x77, 0x2f, 0x92, 0x78, 0x6c, 0x5e, 0xa9, 0x69, 0x70, 0x5f, 0x25, 0xf1, 0x98, 0x7c, 0x06, 0xbb, + 0xba, 0x45, 0x17, 0xdc, 0x77, 0x71, 0xc3, 0x4c, 0x1a, 0x71, 0x4e, 0xae, 0x1d, 0xfd, 0x21, 0x36, + 0xec, 0x82, 0xfb, 0xfd, 0x6c, 0x7f, 0x5f, 0x6d, 0xeb, 0xb1, 0x53, 0xe4, 0xa5, 0xec, 0xf5, 0xc3, + 0x82, 0x46, 0x21, 0xf7, 0xdf, 0xc0, 0xaa, 0x23, 0xdf, 0x06, 0xad, 0xf9, 0x1d, 0x26, 0x23, 0x73, + 0xa6, 0xba, 0xca, 0xcf, 0xfd, 0x72, 0x44, 0x3e, 0xc6, 0x77, 0xc0, 0x5f, 0x99, 0xac, 0x55, 0x3f, + 0xe6, 0x18, 0x5a, 0x9a, 0x52, 0xa9, 0x6b, 0xcd, 0xcf, 0x11, 0xa9, 0x1d, 0x2f, 0x9f, 0x50, 0xbb, + 0x34, 0x23, 0x73, 0xfe, 0xc7, 0xd2, 0x21, 0xe4, 0x84, 0x5d, 0x73, 0xbf, 0x6b, 0xac, 0x32, 0x67, + 0xaf, 0x56, 0xd1, 0x5e, 0x57, 0xfd, 0x10, 0xf0, 0x04, 0x1a, 0x17, 0xec, 0x3a, 0x9e, 0x26, 0x81, + 0xd4, 0xaa, 0xa9, 0xd3, 0x39, 0xe2, 0x96, 0xd8, 0xfa, 0x1c, 0x5a, 0x3a, 0xd7, 0xbb, 0x79, 0x17, + 0x6e, 0x6a, 0x9c, 0x9e, 0xe0, 0xfc, 0x2a, 0x6c, 0xeb, 0xa0, 0x28, 0x46, 0x71, 0x22, 0xb1, 0x99, + 0x15, 0xc6, 0x5e, 0xb7, 0x70, 0xe3, 0x44, 0xe1, 0x55, 0x53, 0x2b, 0x54, 0x1e, 0xe0, 0x91, 0x30, + 0x05, 0x9b, 0x5a, 0x2a, 0x3b, 0x0a, 0x84, 0x2b, 0xb9, 0x48, 0xcd, 0xb6, 0x1a, 0x88, 0x53, 0x2e, + 0xe4, 0x9b, 0x4a, 0xbd, 0x62, 0x6f, 0x38, 0xbf, 0xb0, 0x74, 0xf4, 0x5e, 0x9a, 0x07, 0xac, 0x31, + 0xcb, 0xc5, 0xba, 0xae, 0xb4, 0x5c, 0xd7, 0x0d, 0xe0, 0xe9, 0x48, 0x87, 0x61, 0x97, 0x25, 0xde, + 0x28, 0xb8, 0xe6, 0xae, 0x98, 0x4e, 0x26, 0x4a, 0x76, 0x1e, 0xb1, 0xf3, 0xd0, 0xcc, 0x82, 0xea, + 0xf4, 0x89, 0x21, 0xeb, 0x6a, 0xaa, 0x13, 0x4d, 0x34, 0xd0, 0x34, 0xce, 0xdf, 0x5b, 0xda, 0x18, + 0x4c, 0x7a, 0x54, 0xb9, 0xe5, 0x8e, 0xe3, 0xe7, 0x2f, 0xa0, 0x6a, 0x4a, 0x3b, 0x5d, 0x96, 0x2f, + 0xcc, 0x50, 0x72, 0x0c, 0xf7, 0x4e, 0xe7, 0x93, 0x42, 0x6a, 0x0e, 0x39, 0x9f, 0x42, 0x33, 0x87, + 0xc6, 0x34, 0x3f, 0x3c, 0x18, 0x1e, 0x7d, 0x3b, 0xd4, 0x69, 0xfe, 0x94, 0x9e, 0x9d, 0x9c, 0x0e, + 0xfa, 0xb6, 0x85, 0xe9, 0x7a, 0x88, 0xe0, 0xb7, 0x47, 0xf4, 0xf4, 0xf5, 0x4f, 0xed, 0x92, 0xf3, + 0x7d, 0x59, 0xcf, 0xd2, 0xf2, 0xe5, 0x82, 0xa9, 0x82, 0xd6, 0x08, 0x4f, 0xa0, 0x82, 0xfe, 0x63, + 0x8c, 0x49, 0xad, 0xd5, 0x07, 0xc9, 0xd8, 0x38, 0x78, 0x49, 0xc6, 0xca, 0xb8, 0xbc, 0x91, 0x0a, + 0x41, 0xd1, 0x65, 0xea, 0xe3, 0x73, 0x84, 0x52, 0x89, 0x99, 0xfe, 0xe8, 0xa4, 0x66, 0x46, 0xc4, + 0x19, 0xae, 0x8b, 0x3f, 0xbe, 0x24, 0x5c, 0x4c, 0xe2, 0x48, 0xa4, 0x91, 0x31, 0x83, 0x55, 0x90, + 0x55, 0x95, 0x7b, 0xa0, 0x0f, 0x6b, 0xfb, 0x6b, 0x18, 0x4c, 0x57, 0x12, 0xbe, 0x7a, 0x26, 0x5b, + 0xc7, 0x97, 0xfd, 0xcd, 0xe2, 0xcb, 0xae, 0xf8, 0xea, 0xbd, 0x15, 0x65, 0xf2, 0xaa, 0x49, 0xae, + 0xd6, 0x61, 0x23, 0x6b, 0xbc, 0x7f, 0x1f, 0xc8, 0x9a, 0x92, 0x2b, 0xaf, 0x8b, 0xe3, 0xc1, 0xb0, + 0xbf, 0x3f, 0xfc, 0xda, 0x94, 0x5c, 0xbd, 0xde, 0xe0, 0x58, 0x69, 0x46, 0x97, 0x5c, 0x83, 0xde, + 0xdb, 0xfd, 0xe1, 0xa0, 0x6f, 0x97, 0x15, 0xd4, 0xeb, 0x0e, 0x7b, 0x83, 0xb7, 0x83, 0xbe, 0x5d, + 0x71, 0xfe, 0xc3, 0xd2, 0x1d, 0x79, 0xb1, 0xe4, 0xed, 0x73, 0x2f, 0x10, 0xeb, 0x7f, 0x8b, 0x79, + 0x02, 0x0d, 0xf3, 0x9e, 0xfb, 0xa9, 0xa5, 0xcd, 0x11, 0xe4, 0x0f, 0x61, 0xcb, 0x37, 0xe7, 0xdd, + 0x82, 0xe5, 0x7d, 0xb2, 0x38, 0xdb, 0x58, 0x75, 0xe5, 0x5e, 0xba, 0x30, 0xcf, 0xd3, 0xf6, 0x0b, + 0xb0, 0xf3, 0x11, 0xb4, 0x8b, 0x14, 0x85, 0x8f, 0x7d, 0xa7, 0xf0, 0xb1, 0x96, 0xf3, 0x2f, 0x25, + 0xd8, 0x5a, 0xf8, 0x3f, 0x84, 0xf5, 0x39, 0x7f, 0x71, 0x38, 0x5c, 0x5a, 0x1a, 0x0e, 0x93, 0x8f, + 0x80, 0xe4, 0x49, 0xdc, 0xfc, 0x94, 0xcd, 0xce, 0x11, 0xea, 0x58, 0x95, 0x2f, 0x22, 0x2a, 0xf7, + 0x29, 0x22, 0xc8, 0xe7, 0xd0, 0x12, 0xb1, 0x17, 0xb0, 0xd0, 0x0d, 0x83, 0xe8, 0x2a, 0xfd, 0xe7, + 0x8f, 0x85, 0x7f, 0x29, 0x38, 0x41, 0x8a, 0xb7, 0x8a, 0x80, 0x36, 0xc5, 0x1c, 0x20, 0xbf, 0x07, + 0x3b, 0x3c, 0x12, 0x6e, 0x5a, 0x48, 0xba, 0x7e, 0xf6, 0xef, 0x1e, 0xe5, 0xe5, 0xd9, 0xe7, 0x52, + 0xa5, 0x4a, 0x09, 0x5f, 0x44, 0x09, 0x47, 0x00, 0x50, 0x76, 0x93, 0xf6, 0xb3, 0xb9, 0x6a, 0xcf, + 0x2a, 0x56, 0x7b, 0x07, 0xd0, 0x34, 0x8d, 0xb0, 0x6a, 0xc8, 0xf0, 0x09, 0xdb, 0x2f, 0x7f, 0x65, + 0x7e, 0x63, 0x77, 0xfe, 0xef, 0x41, 0x87, 0xe6, 0xbf, 0x83, 0x0c, 0xd3, 0x3d, 0xec, 0xfc, 0xf3, + 0xa7, 0x9d, 0xbf, 0xb5, 0xa0, 0xad, 0x44, 0xcc, 0xdd, 0xfc, 0xdb, 0xd0, 0x4c, 0x32, 0x28, 0x1d, + 0x8e, 0xec, 0xe4, 0x06, 0x8a, 0xd9, 0x26, 0xcd, 0x13, 0x92, 0x97, 0xb0, 0x23, 0xa6, 0xe7, 0xe9, + 0x54, 0xf1, 0x8d, 0x88, 0xa3, 0x57, 0x33, 0xc9, 0xd3, 0xe2, 0x6b, 0xe5, 0x1e, 0xf9, 0x08, 0xb6, + 0xd3, 0x29, 0xf0, 0xfc, 0x80, 0x1e, 0x8d, 0x2f, 0x6f, 0x38, 0xdf, 0x59, 0x59, 0x21, 0xa3, 0xf2, + 0x28, 0x36, 0x21, 0x99, 0x89, 0xa9, 0xe5, 0xca, 0x4c, 0xf9, 0x1e, 0x54, 0xcd, 0xef, 0x49, 0x3a, + 0x0b, 0x18, 0x28, 0x6f, 0xa4, 0x95, 0x82, 0x91, 0x3e, 0x81, 0x86, 0xc9, 0xbc, 0x5c, 0x99, 0x45, + 0x59, 0x15, 0x81, 0x19, 0x62, 0xee, 0xaf, 0xd5, 0x7c, 0xf1, 0xfb, 0xcf, 0x25, 0xd8, 0xce, 0x89, + 0xa6, 0xba, 0xf9, 0x38, 0x22, 0x9f, 0x42, 0x95, 0xe1, 0x0a, 0x65, 0x6c, 0xbf, 0x74, 0x56, 0x16, + 0x06, 0x9a, 0x78, 0x4f, 0xff, 0xa1, 0xe6, 0x04, 0xf9, 0x21, 0x6c, 0xc6, 0xa1, 0x6f, 0x48, 0xce, + 0xb2, 0x7c, 0x53, 0x44, 0x9a, 0x6a, 0x45, 0x41, 0x66, 0x3c, 0xba, 0xa6, 0xf6, 0x48, 0xa9, 0x54, + 0xfe, 0xad, 0x1a, 0xe9, 0xb6, 0x61, 0xf3, 0x60, 0xf0, 0xd3, 0x5e, 0x97, 0xf6, 0xdd, 0x6e, 0xbf, + 0x8f, 0xae, 0x4d, 0xa0, 0xdd, 0xed, 0xf5, 0x8e, 0xce, 0x86, 0xa7, 0x27, 0x06, 0x67, 0xa9, 0x56, + 0x3a, 0x25, 0xeb, 0x0f, 0xde, 0x0e, 0x74, 0xc0, 0xdb, 0x01, 0x3b, 0x23, 0xa4, 0x83, 0xc3, 0xa3, + 0x6f, 0x30, 0xf0, 0x01, 0x54, 0xdf, 0x1e, 0xf5, 0x0e, 0x54, 0xd8, 0x53, 0x51, 0xe2, 0x6c, 0x68, + 0xa0, 0x0d, 0xb2, 0x05, 0xcd, 0xb3, 0xfd, 0xbe, 0x7b, 0x76, 0xdc, 0xef, 0x2a, 0x06, 0x55, 0x62, + 0x43, 0x6b, 0xd8, 0x3d, 0x1c, 0xb8, 0xbd, 0xd7, 0xdd, 0xe1, 0xd7, 0x83, 0xbe, 0x5d, 0x73, 0xfe, + 0x48, 0xa7, 0xdf, 0x9c, 0xcb, 0x91, 0x1f, 0x2f, 0xf8, 0xe8, 0x92, 0x2d, 0xce, 0x89, 0x8b, 0xee, + 0x99, 0x29, 0xa9, 0x94, 0x53, 0xd2, 0xab, 0xcd, 0x3f, 0x68, 0xee, 0x7d, 0xfc, 0x59, 0x7a, 0xf8, + 0xbc, 0x8a, 0xab, 0x4f, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x21, 0x27, 0xe9, 0x7c, 0x94, 0x27, + 0x00, 0x00, } diff --git a/protocol/protobuf/pairing.proto b/protocol/protobuf/pairing.proto index 63d340449..415021e5a 100644 --- a/protocol/protobuf/pairing.proto +++ b/protocol/protobuf/pairing.proto @@ -3,6 +3,7 @@ syntax = "proto3"; import "chat_identity.proto"; import "sync_settings.proto"; import 'application_metadata_message.proto'; +import 'communities.proto'; option go_package = "./;protobuf"; package protobuf; @@ -154,7 +155,7 @@ message SyncCommunityRequestsToJoin { string chat_id = 5; bytes community_id = 6; uint64 state = 7; - map revealed_addresses = 8; + repeated RevealedAccount revealed_accounts = 8; } message SyncInstallation { diff --git a/static/bindata.go b/static/bindata.go index 01a351392..00a402239 100644 --- a/static/bindata.go +++ b/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(1669629376, 0)} + info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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(1644328579, 0)} + info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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(1630503875, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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(1630503875, 0)} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 3619, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 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(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2139, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 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 ConfigCliFleetStatusProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0644), modTime: time.Unix(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 2338, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0xea, 0x14, 0x57, 0xed, 0x60, 0x4d, 0xb6, 0x32, 0x7e, 0xd3, 0xbe, 0x1e, 0xc7, 0xfe, 0x42, 0xee, 0xfe, 0x10, 0xe4, 0x22, 0x64, 0xc1, 0xb9, 0xce, 0x34, 0xcd, 0xdd, 0xe3, 0x38, 0x43, 0xd3}} return a, nil } @@ -243,7 +243,7 @@ func ConfigCliFleetStatusTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0644), modTime: time.Unix(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 1457, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x9f, 0x8f, 0x25, 0x1f, 0x31, 0xbd, 0x72, 0x26, 0xb7, 0xd, 0x7e, 0xcb, 0xbb, 0x12, 0xef, 0x9f, 0x1a, 0x2e, 0xb, 0x96, 0x64, 0x7d, 0x52, 0x9e, 0x68, 0x13, 0x55, 0xd5, 0x88, 0x38, 0x7b}} return a, nil } @@ -263,7 +263,7 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 1264, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0xb9, 0x1c, 0x57, 0x50, 0xa9, 0x93, 0x70, 0xcd, 0xd7, 0x22, 0xee, 0x65, 0x72, 0x11, 0x71, 0xd3, 0x20, 0xd0, 0xf0, 0x4d, 0x53, 0x94, 0x44, 0x81, 0xbd, 0x11, 0xed, 0x5e, 0x72, 0x0, 0x12}} return a, nil } @@ -283,7 +283,7 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0644), modTime: time.Unix(1684838089, 0)} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 1264, mode: os.FileMode(0664), modTime: time.Unix(1686055892, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2c, 0x67, 0x1e, 0xd1, 0x98, 0x7b, 0xf3, 0x9f, 0x76, 0xa0, 0xbe, 0x67, 0x29, 0xdb, 0xd7, 0x3e, 0xb8, 0x7c, 0x65, 0x2d, 0x2, 0x84, 0xe0, 0xab, 0x8d, 0x3d, 0x4a, 0x53, 0xb4, 0xa7, 0x2e, 0xf0}} return a, nil } @@ -303,7 +303,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(1607354881, 0)} + info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -323,7 +323,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(1607354881, 0)} + info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -343,7 +343,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(1607354881, 0)} + info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -363,7 +363,7 @@ func keysBootnodeKey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -383,7 +383,7 @@ func keysFirebaseauthkey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -403,7 +403,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(1607354881, 0)} + info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -423,7 +423,7 @@ func keysTestAccount1Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -443,7 +443,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(1607354881, 0)} + info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -463,7 +463,7 @@ func keysTestAccount2Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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 } @@ -483,7 +483,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(1607354881, 0)} + info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 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/t/bindata.go b/t/bindata.go index a41442e83..d3635e1b9 100644 --- a/t/bindata.go +++ b/t/bindata.go @@ -86,7 +86,7 @@ func configPublicChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1683558704, 0)} + info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0x5d, 0xc0, 0xfe, 0x57, 0x50, 0x18, 0xec, 0x2d, 0x61, 0x1b, 0xa9, 0x81, 0x11, 0x5f, 0x77, 0xf7, 0xb6, 0x67, 0x82, 0x1, 0x40, 0x68, 0x9d, 0xc5, 0x41, 0xaf, 0xce, 0x43, 0x81, 0x92, 0x96}} return a, nil } @@ -106,7 +106,7 @@ func configStatusChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1683558704, 0)} + info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xb3, 0x61, 0x51, 0x70, 0x3c, 0x12, 0x3e, 0xf1, 0x1c, 0x81, 0xfb, 0x9a, 0x7c, 0xe3, 0x63, 0xd0, 0x8f, 0x12, 0xc5, 0x2d, 0xf4, 0xea, 0x27, 0x33, 0xef, 0xca, 0xf9, 0x3f, 0x72, 0x44, 0xbf}} return a, nil } @@ -126,7 +126,7 @@ func configTestDataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1683558704, 0)} + info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1685705602, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xce, 0x9d, 0x80, 0xf5, 0x87, 0xfa, 0x57, 0x1d, 0xa1, 0xd5, 0x7a, 0x10, 0x3, 0xac, 0xd7, 0xf4, 0x64, 0x32, 0x96, 0x2b, 0xb7, 0x21, 0xb7, 0xa6, 0x80, 0x40, 0xe9, 0x65, 0xe3, 0xd6, 0xbd, 0x40}} return a, nil }