status-go/protocol/protobuf/communities.pb.go

1713 lines
67 KiB
Go
Raw Normal View History

// Code generated by protoc-gen-go. DO NOT EDIT.
// source: communities.proto
package protobuf
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
2021-01-11 10:32:51 +00:00
type CommunityMember_Roles int32
const (
CommunityMember_UNKNOWN_ROLE CommunityMember_Roles = 0
CommunityMember_ROLE_ALL CommunityMember_Roles = 1
CommunityMember_ROLE_MANAGE_USERS CommunityMember_Roles = 2
CommunityMember_ROLE_MODERATE_CONTENT CommunityMember_Roles = 3
2021-01-11 10:32:51 +00:00
)
var CommunityMember_Roles_name = map[int32]string{
0: "UNKNOWN_ROLE",
1: "ROLE_ALL",
2: "ROLE_MANAGE_USERS",
3: "ROLE_MODERATE_CONTENT",
2021-01-11 10:32:51 +00:00
}
var CommunityMember_Roles_value = map[string]int32{
"UNKNOWN_ROLE": 0,
"ROLE_ALL": 1,
"ROLE_MANAGE_USERS": 2,
"ROLE_MODERATE_CONTENT": 3,
2021-01-11 10:32:51 +00:00
}
func (x CommunityMember_Roles) String() string {
return proto.EnumName(CommunityMember_Roles_name, int32(x))
}
func (CommunityMember_Roles) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{1, 0}
}
type CommunityPermissions_Access int32
const (
CommunityPermissions_UNKNOWN_ACCESS CommunityPermissions_Access = 0
CommunityPermissions_NO_MEMBERSHIP CommunityPermissions_Access = 1
CommunityPermissions_INVITATION_ONLY CommunityPermissions_Access = 2
CommunityPermissions_ON_REQUEST CommunityPermissions_Access = 3
)
var CommunityPermissions_Access_name = map[int32]string{
0: "UNKNOWN_ACCESS",
1: "NO_MEMBERSHIP",
2: "INVITATION_ONLY",
3: "ON_REQUEST",
}
var CommunityPermissions_Access_value = map[string]int32{
"UNKNOWN_ACCESS": 0,
"NO_MEMBERSHIP": 1,
"INVITATION_ONLY": 2,
"ON_REQUEST": 3,
}
func (x CommunityPermissions_Access) String() string {
return proto.EnumName(CommunityPermissions_Access_name, int32(x))
}
func (CommunityPermissions_Access) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{3, 0}
}
type CommunityTokenPermission_Type int32
const (
CommunityTokenPermission_UNKNOWN_TOKEN_PERMISSION CommunityTokenPermission_Type = 0
CommunityTokenPermission_BECOME_ADMIN CommunityTokenPermission_Type = 1
CommunityTokenPermission_BECOME_MEMBER CommunityTokenPermission_Type = 2
)
var CommunityTokenPermission_Type_name = map[int32]string{
0: "UNKNOWN_TOKEN_PERMISSION",
1: "BECOME_ADMIN",
2: "BECOME_MEMBER",
}
var CommunityTokenPermission_Type_value = map[string]int32{
"UNKNOWN_TOKEN_PERMISSION": 0,
"BECOME_ADMIN": 1,
"BECOME_MEMBER": 2,
}
func (x CommunityTokenPermission_Type) String() string {
return proto.EnumName(CommunityTokenPermission_Type_name, int32(x))
}
func (CommunityTokenPermission_Type) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{5, 0}
}
type Grant struct {
CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
MemberId []byte `protobuf:"bytes,2,opt,name=member_id,json=memberId,proto3" json:"member_id,omitempty"`
ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
Clock uint64 `protobuf:"varint,4,opt,name=clock,proto3" json:"clock,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Grant) Reset() { *m = Grant{} }
func (m *Grant) String() string { return proto.CompactTextString(m) }
func (*Grant) ProtoMessage() {}
func (*Grant) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{0}
}
func (m *Grant) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Grant.Unmarshal(m, b)
}
func (m *Grant) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Grant.Marshal(b, m, deterministic)
}
func (m *Grant) XXX_Merge(src proto.Message) {
xxx_messageInfo_Grant.Merge(m, src)
}
func (m *Grant) XXX_Size() int {
return xxx_messageInfo_Grant.Size(m)
}
func (m *Grant) XXX_DiscardUnknown() {
xxx_messageInfo_Grant.DiscardUnknown(m)
}
var xxx_messageInfo_Grant proto.InternalMessageInfo
func (m *Grant) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
func (m *Grant) GetMemberId() []byte {
if m != nil {
return m.MemberId
}
return nil
}
func (m *Grant) GetChatId() string {
if m != nil {
return m.ChatId
}
return ""
}
func (m *Grant) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
type CommunityMember struct {
2021-01-11 10:32:51 +00:00
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"`
2021-01-11 10:32:51 +00:00
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityMember) Reset() { *m = CommunityMember{} }
func (m *CommunityMember) String() string { return proto.CompactTextString(m) }
func (*CommunityMember) ProtoMessage() {}
func (*CommunityMember) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{1}
}
func (m *CommunityMember) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityMember.Unmarshal(m, b)
}
func (m *CommunityMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityMember.Marshal(b, m, deterministic)
}
func (m *CommunityMember) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityMember.Merge(m, src)
}
func (m *CommunityMember) XXX_Size() int {
return xxx_messageInfo_CommunityMember.Size(m)
}
func (m *CommunityMember) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityMember.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityMember proto.InternalMessageInfo
2021-01-11 10:32:51 +00:00
func (m *CommunityMember) GetRoles() []CommunityMember_Roles {
if m != nil {
return m.Roles
}
return nil
}
func (m *CommunityMember) GetWalletAccounts() []string {
if m != nil {
return m.WalletAccounts
}
return nil
}
type CommunityTokenMetadata struct {
ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"`
TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"`
Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"`
Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityTokenMetadata) Reset() { *m = CommunityTokenMetadata{} }
func (m *CommunityTokenMetadata) String() string { return proto.CompactTextString(m) }
func (*CommunityTokenMetadata) ProtoMessage() {}
func (*CommunityTokenMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{2}
}
func (m *CommunityTokenMetadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityTokenMetadata.Unmarshal(m, b)
}
func (m *CommunityTokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityTokenMetadata.Marshal(b, m, deterministic)
}
func (m *CommunityTokenMetadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityTokenMetadata.Merge(m, src)
}
func (m *CommunityTokenMetadata) XXX_Size() int {
return xxx_messageInfo_CommunityTokenMetadata.Size(m)
}
func (m *CommunityTokenMetadata) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityTokenMetadata.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityTokenMetadata proto.InternalMessageInfo
func (m *CommunityTokenMetadata) GetContractAddresses() map[uint64]string {
if m != nil {
return m.ContractAddresses
}
return nil
}
func (m *CommunityTokenMetadata) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
func (m *CommunityTokenMetadata) GetImage() string {
if m != nil {
return m.Image
}
return ""
}
func (m *CommunityTokenMetadata) GetTokenType() CommunityTokenType {
if m != nil {
return m.TokenType
}
return CommunityTokenType_UNKNOWN_TOKEN_TYPE
}
func (m *CommunityTokenMetadata) GetSymbol() string {
if m != nil {
return m.Symbol
}
return ""
}
func (m *CommunityTokenMetadata) GetName() string {
if m != nil {
return m.Name
}
return ""
}
type CommunityPermissions struct {
EnsOnly bool `protobuf:"varint,1,opt,name=ens_only,json=ensOnly,proto3" json:"ens_only,omitempty"`
// https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants
Private bool `protobuf:"varint,2,opt,name=private,proto3" json:"private,omitempty"`
Access CommunityPermissions_Access `protobuf:"varint,3,opt,name=access,proto3,enum=protobuf.CommunityPermissions_Access" json:"access,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityPermissions) Reset() { *m = CommunityPermissions{} }
func (m *CommunityPermissions) String() string { return proto.CompactTextString(m) }
func (*CommunityPermissions) ProtoMessage() {}
func (*CommunityPermissions) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{3}
}
func (m *CommunityPermissions) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityPermissions.Unmarshal(m, b)
}
func (m *CommunityPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityPermissions.Marshal(b, m, deterministic)
}
func (m *CommunityPermissions) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityPermissions.Merge(m, src)
}
func (m *CommunityPermissions) XXX_Size() int {
return xxx_messageInfo_CommunityPermissions.Size(m)
}
func (m *CommunityPermissions) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityPermissions.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityPermissions proto.InternalMessageInfo
func (m *CommunityPermissions) GetEnsOnly() bool {
if m != nil {
return m.EnsOnly
}
return false
}
func (m *CommunityPermissions) GetPrivate() bool {
if m != nil {
return m.Private
}
return false
}
func (m *CommunityPermissions) GetAccess() CommunityPermissions_Access {
if m != nil {
return m.Access
}
return CommunityPermissions_UNKNOWN_ACCESS
}
type TokenCriteria struct {
ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Type CommunityTokenType `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenType" json:"type,omitempty"`
Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"`
Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"`
TokenIds []uint64 `protobuf:"varint,6,rep,packed,name=token_ids,json=tokenIds,proto3" json:"token_ids,omitempty"`
EnsPattern string `protobuf:"bytes,7,opt,name=ens_pattern,json=ensPattern,proto3" json:"ens_pattern,omitempty"`
Decimals uint64 `protobuf:"varint,8,opt,name=decimals,proto3" json:"decimals,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TokenCriteria) Reset() { *m = TokenCriteria{} }
func (m *TokenCriteria) String() string { return proto.CompactTextString(m) }
func (*TokenCriteria) ProtoMessage() {}
func (*TokenCriteria) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{4}
}
func (m *TokenCriteria) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TokenCriteria.Unmarshal(m, b)
}
func (m *TokenCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TokenCriteria.Marshal(b, m, deterministic)
}
func (m *TokenCriteria) XXX_Merge(src proto.Message) {
xxx_messageInfo_TokenCriteria.Merge(m, src)
}
func (m *TokenCriteria) XXX_Size() int {
return xxx_messageInfo_TokenCriteria.Size(m)
}
func (m *TokenCriteria) XXX_DiscardUnknown() {
xxx_messageInfo_TokenCriteria.DiscardUnknown(m)
}
var xxx_messageInfo_TokenCriteria proto.InternalMessageInfo
func (m *TokenCriteria) GetContractAddresses() map[uint64]string {
if m != nil {
return m.ContractAddresses
}
return nil
}
func (m *TokenCriteria) GetType() CommunityTokenType {
if m != nil {
return m.Type
}
return CommunityTokenType_UNKNOWN_TOKEN_TYPE
}
func (m *TokenCriteria) GetSymbol() string {
if m != nil {
return m.Symbol
}
return ""
}
func (m *TokenCriteria) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *TokenCriteria) GetAmount() string {
if m != nil {
return m.Amount
}
return ""
}
func (m *TokenCriteria) GetTokenIds() []uint64 {
if m != nil {
return m.TokenIds
}
return nil
}
func (m *TokenCriteria) GetEnsPattern() string {
if m != nil {
return m.EnsPattern
}
return ""
}
func (m *TokenCriteria) GetDecimals() uint64 {
if m != nil {
return m.Decimals
}
return 0
}
type CommunityTokenPermission struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Type CommunityTokenPermission_Type `protobuf:"varint,2,opt,name=type,proto3,enum=protobuf.CommunityTokenPermission_Type" json:"type,omitempty"`
TokenCriteria []*TokenCriteria `protobuf:"bytes,3,rep,name=token_criteria,json=tokenCriteria,proto3" json:"token_criteria,omitempty"`
ChatIds []string `protobuf:"bytes,4,rep,name=chat_ids,json=chatIds,proto3" json:"chat_ids,omitempty"`
IsPrivate bool `protobuf:"varint,5,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityTokenPermission) Reset() { *m = CommunityTokenPermission{} }
func (m *CommunityTokenPermission) String() string { return proto.CompactTextString(m) }
func (*CommunityTokenPermission) ProtoMessage() {}
func (*CommunityTokenPermission) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{5}
}
func (m *CommunityTokenPermission) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityTokenPermission.Unmarshal(m, b)
}
func (m *CommunityTokenPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityTokenPermission.Marshal(b, m, deterministic)
}
func (m *CommunityTokenPermission) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityTokenPermission.Merge(m, src)
}
func (m *CommunityTokenPermission) XXX_Size() int {
return xxx_messageInfo_CommunityTokenPermission.Size(m)
}
func (m *CommunityTokenPermission) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityTokenPermission.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityTokenPermission proto.InternalMessageInfo
func (m *CommunityTokenPermission) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *CommunityTokenPermission) GetType() CommunityTokenPermission_Type {
if m != nil {
return m.Type
}
return CommunityTokenPermission_UNKNOWN_TOKEN_PERMISSION
}
func (m *CommunityTokenPermission) GetTokenCriteria() []*TokenCriteria {
if m != nil {
return m.TokenCriteria
}
return nil
}
func (m *CommunityTokenPermission) GetChatIds() []string {
if m != nil {
return m.ChatIds
}
return nil
}
func (m *CommunityTokenPermission) GetIsPrivate() bool {
if m != nil {
return m.IsPrivate
}
return false
}
type CommunityDescription struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
Members map[string]*CommunityMember `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Permissions *CommunityPermissions `protobuf:"bytes,3,opt,name=permissions,proto3" json:"permissions,omitempty"`
Identity *ChatIdentity `protobuf:"bytes,5,opt,name=identity,proto3" json:"identity,omitempty"`
Chats map[string]*CommunityChat `protobuf:"bytes,6,rep,name=chats,proto3" json:"chats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
BanList []string `protobuf:"bytes,7,rep,name=ban_list,json=banList,proto3" json:"ban_list,omitempty"`
Categories map[string]*CommunityCategory `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
ArchiveMagnetlinkClock uint64 `protobuf:"varint,9,opt,name=archive_magnetlink_clock,json=archiveMagnetlinkClock,proto3" json:"archive_magnetlink_clock,omitempty"`
AdminSettings *CommunityAdminSettings `protobuf:"bytes,10,opt,name=admin_settings,json=adminSettings,proto3" json:"admin_settings,omitempty"`
IntroMessage string `protobuf:"bytes,11,opt,name=intro_message,json=introMessage,proto3" json:"intro_message,omitempty"`
OutroMessage string `protobuf:"bytes,12,opt,name=outro_message,json=outroMessage,proto3" json:"outro_message,omitempty"`
Encrypted bool `protobuf:"varint,13,opt,name=encrypted,proto3" json:"encrypted,omitempty"`
Tags []string `protobuf:"bytes,14,rep,name=tags,proto3" json:"tags,omitempty"`
TokenPermissions map[string]*CommunityTokenPermission `protobuf:"bytes,15,rep,name=token_permissions,json=tokenPermissions,proto3" json:"token_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
CommunityTokensMetadata []*CommunityTokenMetadata `protobuf:"bytes,16,rep,name=community_tokens_metadata,json=communityTokensMetadata,proto3" json:"community_tokens_metadata,omitempty"`
ActiveMembersCount uint64 `protobuf:"varint,17,opt,name=active_members_count,json=activeMembersCount,proto3" json:"active_members_count,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityDescription) Reset() { *m = CommunityDescription{} }
func (m *CommunityDescription) String() string { return proto.CompactTextString(m) }
func (*CommunityDescription) ProtoMessage() {}
func (*CommunityDescription) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{6}
}
func (m *CommunityDescription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityDescription.Unmarshal(m, b)
}
func (m *CommunityDescription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityDescription.Marshal(b, m, deterministic)
}
func (m *CommunityDescription) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityDescription.Merge(m, src)
}
func (m *CommunityDescription) XXX_Size() int {
return xxx_messageInfo_CommunityDescription.Size(m)
}
func (m *CommunityDescription) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityDescription.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityDescription proto.InternalMessageInfo
func (m *CommunityDescription) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *CommunityDescription) GetMembers() map[string]*CommunityMember {
if m != nil {
return m.Members
}
return nil
}
func (m *CommunityDescription) GetPermissions() *CommunityPermissions {
if m != nil {
return m.Permissions
}
return nil
}
func (m *CommunityDescription) GetIdentity() *ChatIdentity {
if m != nil {
return m.Identity
}
return nil
}
func (m *CommunityDescription) GetChats() map[string]*CommunityChat {
if m != nil {
return m.Chats
}
return nil
}
func (m *CommunityDescription) GetBanList() []string {
if m != nil {
return m.BanList
}
return nil
}
func (m *CommunityDescription) GetCategories() map[string]*CommunityCategory {
if m != nil {
return m.Categories
}
return nil
}
func (m *CommunityDescription) GetArchiveMagnetlinkClock() uint64 {
if m != nil {
return m.ArchiveMagnetlinkClock
}
return 0
}
func (m *CommunityDescription) GetAdminSettings() *CommunityAdminSettings {
if m != nil {
return m.AdminSettings
}
return nil
}
func (m *CommunityDescription) GetIntroMessage() string {
if m != nil {
return m.IntroMessage
}
return ""
}
func (m *CommunityDescription) GetOutroMessage() string {
if m != nil {
return m.OutroMessage
}
return ""
}
2022-05-27 09:14:40 +00:00
func (m *CommunityDescription) GetEncrypted() bool {
if m != nil {
return m.Encrypted
}
return false
}
func (m *CommunityDescription) GetTags() []string {
if m != nil {
return m.Tags
}
return nil
}
func (m *CommunityDescription) GetTokenPermissions() map[string]*CommunityTokenPermission {
if m != nil {
return m.TokenPermissions
}
return nil
}
func (m *CommunityDescription) GetCommunityTokensMetadata() []*CommunityTokenMetadata {
if m != nil {
return m.CommunityTokensMetadata
}
return nil
}
func (m *CommunityDescription) GetActiveMembersCount() uint64 {
if m != nil {
return m.ActiveMembersCount
}
return 0
}
type CommunityAdminSettings struct {
PinMessageAllMembersEnabled bool `protobuf:"varint,1,opt,name=pin_message_all_members_enabled,json=pinMessageAllMembersEnabled,proto3" json:"pin_message_all_members_enabled,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityAdminSettings) Reset() { *m = CommunityAdminSettings{} }
func (m *CommunityAdminSettings) String() string { return proto.CompactTextString(m) }
func (*CommunityAdminSettings) ProtoMessage() {}
func (*CommunityAdminSettings) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{7}
}
func (m *CommunityAdminSettings) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityAdminSettings.Unmarshal(m, b)
}
func (m *CommunityAdminSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityAdminSettings.Marshal(b, m, deterministic)
}
func (m *CommunityAdminSettings) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityAdminSettings.Merge(m, src)
}
func (m *CommunityAdminSettings) XXX_Size() int {
return xxx_messageInfo_CommunityAdminSettings.Size(m)
}
func (m *CommunityAdminSettings) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityAdminSettings.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityAdminSettings proto.InternalMessageInfo
func (m *CommunityAdminSettings) GetPinMessageAllMembersEnabled() bool {
if m != nil {
return m.PinMessageAllMembersEnabled
}
return false
}
type CommunityChat struct {
Members map[string]*CommunityMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Permissions *CommunityPermissions `protobuf:"bytes,2,opt,name=permissions,proto3" json:"permissions,omitempty"`
Identity *ChatIdentity `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"`
CategoryId string `protobuf:"bytes,4,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"`
Position int32 `protobuf:"varint,5,opt,name=position,proto3" json:"position,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityChat) Reset() { *m = CommunityChat{} }
func (m *CommunityChat) String() string { return proto.CompactTextString(m) }
func (*CommunityChat) ProtoMessage() {}
func (*CommunityChat) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{8}
}
func (m *CommunityChat) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityChat.Unmarshal(m, b)
}
func (m *CommunityChat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityChat.Marshal(b, m, deterministic)
}
func (m *CommunityChat) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityChat.Merge(m, src)
}
func (m *CommunityChat) XXX_Size() int {
return xxx_messageInfo_CommunityChat.Size(m)
}
func (m *CommunityChat) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityChat.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityChat proto.InternalMessageInfo
func (m *CommunityChat) GetMembers() map[string]*CommunityMember {
if m != nil {
return m.Members
}
return nil
}
func (m *CommunityChat) GetPermissions() *CommunityPermissions {
if m != nil {
return m.Permissions
}
return nil
}
func (m *CommunityChat) GetIdentity() *ChatIdentity {
if m != nil {
return m.Identity
}
return nil
}
func (m *CommunityChat) GetCategoryId() string {
if m != nil {
return m.CategoryId
}
return ""
}
func (m *CommunityChat) GetPosition() int32 {
if m != nil {
return m.Position
}
return 0
}
type CommunityCategory struct {
CategoryId string `protobuf:"bytes,1,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityCategory) Reset() { *m = CommunityCategory{} }
func (m *CommunityCategory) String() string { return proto.CompactTextString(m) }
func (*CommunityCategory) ProtoMessage() {}
func (*CommunityCategory) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{9}
}
func (m *CommunityCategory) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityCategory.Unmarshal(m, b)
}
func (m *CommunityCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityCategory.Marshal(b, m, deterministic)
}
func (m *CommunityCategory) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityCategory.Merge(m, src)
}
func (m *CommunityCategory) XXX_Size() int {
return xxx_messageInfo_CommunityCategory.Size(m)
}
func (m *CommunityCategory) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityCategory.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityCategory proto.InternalMessageInfo
func (m *CommunityCategory) GetCategoryId() string {
if m != nil {
return m.CategoryId
}
return ""
}
func (m *CommunityCategory) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *CommunityCategory) GetPosition() int32 {
if m != nil {
return m.Position
}
return 0
}
type CommunityInvitation struct {
CommunityDescription []byte `protobuf:"bytes,1,opt,name=community_description,json=communityDescription,proto3" json:"community_description,omitempty"`
Grant []byte `protobuf:"bytes,2,opt,name=grant,proto3" json:"grant,omitempty"`
ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityInvitation) Reset() { *m = CommunityInvitation{} }
func (m *CommunityInvitation) String() string { return proto.CompactTextString(m) }
func (*CommunityInvitation) ProtoMessage() {}
func (*CommunityInvitation) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{10}
}
func (m *CommunityInvitation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityInvitation.Unmarshal(m, b)
}
func (m *CommunityInvitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityInvitation.Marshal(b, m, deterministic)
}
func (m *CommunityInvitation) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityInvitation.Merge(m, src)
}
func (m *CommunityInvitation) XXX_Size() int {
return xxx_messageInfo_CommunityInvitation.Size(m)
}
func (m *CommunityInvitation) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityInvitation.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityInvitation proto.InternalMessageInfo
func (m *CommunityInvitation) GetCommunityDescription() []byte {
if m != nil {
return m.CommunityDescription
}
return nil
}
func (m *CommunityInvitation) GetGrant() []byte {
if m != nil {
return m.Grant
}
return nil
}
func (m *CommunityInvitation) GetChatId() string {
if m != nil {
return m.ChatId
}
return ""
}
func (m *CommunityInvitation) GetPublicKey() []byte {
if m != nil {
return m.PublicKey
}
return nil
}
2021-01-11 10:32:51 +00:00
type CommunityRequestToJoin struct {
feat: add verified wallet accounts to community requests This commit extends the `CommunityRequestToJoin` with `RevealedAddresses` which represent wallet addresses and signatures provided by the sender, to proof a community owner ownership of those wallet addresses. **Note: This only works with keystore files maanged by status-go** At high level, the follwing happens: 1. User instructs Status to send a request to join to a community. By adding a password hash to the instruction, Status will try to unlock the users keystore and verify each wallet account. 2. For every verified wallet account, a signature is created for the following payload, using each wallet's private key ``` keccak256(chatkey + communityID + requestToJoinID) ``` A map of walletAddress->signature is then attached to the community request to join, which will be sent to the community owner 3. The owner node receives the request, and if the community requires users to hold tokens to become a member, it will check and verify whether the given wallet addresses are indeed owned by the sender. If any signature provided by the request cannot be recovered, the request is immediately declined by the owner. 4. The verified addresses are then added to the owner node's database such that, once the request should be accepted, the addresses can be used to check on chain whether they own the necessary funds to fulfill the community's permissions The checking of required funds is **not** part of this commit. It will be added in a follow-up commit.
2023-03-17 09:19:40 +00:00
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:"-"`
}
2021-01-11 10:32:51 +00:00
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}
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityRequestToJoin.Unmarshal(m, b)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityRequestToJoin.Marshal(b, m, deterministic)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityRequestToJoin.Merge(m, src)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) XXX_Size() int {
return xxx_messageInfo_CommunityRequestToJoin.Size(m)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityRequestToJoin.DiscardUnknown(m)
}
2021-01-11 10:32:51 +00:00
var xxx_messageInfo_CommunityRequestToJoin proto.InternalMessageInfo
func (m *CommunityRequestToJoin) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) GetEnsName() string {
if m != nil {
return m.EnsName
}
return ""
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) GetChatId() string {
if m != nil {
return m.ChatId
}
return ""
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoin) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
func (m *CommunityRequestToJoin) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
feat: add verified wallet accounts to community requests This commit extends the `CommunityRequestToJoin` with `RevealedAddresses` which represent wallet addresses and signatures provided by the sender, to proof a community owner ownership of those wallet addresses. **Note: This only works with keystore files maanged by status-go** At high level, the follwing happens: 1. User instructs Status to send a request to join to a community. By adding a password hash to the instruction, Status will try to unlock the users keystore and verify each wallet account. 2. For every verified wallet account, a signature is created for the following payload, using each wallet's private key ``` keccak256(chatkey + communityID + requestToJoinID) ``` A map of walletAddress->signature is then attached to the community request to join, which will be sent to the community owner 3. The owner node receives the request, and if the community requires users to hold tokens to become a member, it will check and verify whether the given wallet addresses are indeed owned by the sender. If any signature provided by the request cannot be recovered, the request is immediately declined by the owner. 4. The verified addresses are then added to the owner node's database such that, once the request should be accepted, the addresses can be used to check on chain whether they own the necessary funds to fulfill the community's permissions The checking of required funds is **not** part of this commit. It will be added in a follow-up commit.
2023-03-17 09:19:40 +00:00
func (m *CommunityRequestToJoin) GetRevealedAddresses() map[string][]byte {
if m != nil {
return m.RevealedAddresses
}
return nil
}
type CommunityCancelRequestToJoin struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"`
ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
CommunityId []byte `protobuf:"bytes,4,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelRequestToJoin{} }
func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) }
func (*CommunityCancelRequestToJoin) ProtoMessage() {}
func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{12}
}
func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityCancelRequestToJoin.Unmarshal(m, b)
}
func (m *CommunityCancelRequestToJoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityCancelRequestToJoin.Marshal(b, m, deterministic)
}
func (m *CommunityCancelRequestToJoin) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityCancelRequestToJoin.Merge(m, src)
}
func (m *CommunityCancelRequestToJoin) XXX_Size() int {
return xxx_messageInfo_CommunityCancelRequestToJoin.Size(m)
}
func (m *CommunityCancelRequestToJoin) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityCancelRequestToJoin.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityCancelRequestToJoin proto.InternalMessageInfo
func (m *CommunityCancelRequestToJoin) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *CommunityCancelRequestToJoin) GetEnsName() string {
if m != nil {
return m.EnsName
}
return ""
}
func (m *CommunityCancelRequestToJoin) GetChatId() string {
if m != nil {
return m.ChatId
}
return ""
}
func (m *CommunityCancelRequestToJoin) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
func (m *CommunityCancelRequestToJoin) GetDisplayName() string {
if m != nil {
return m.DisplayName
}
return ""
}
2021-01-11 10:32:51 +00:00
type CommunityRequestToJoinResponse struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"`
Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"`
Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"`
CommunityId []byte `protobuf:"bytes,5,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} }
func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToJoinResponse) ProtoMessage() {}
func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{13}
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityRequestToJoinResponse.Unmarshal(m, b)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityRequestToJoinResponse.Marshal(b, m, deterministic)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityRequestToJoinResponse.Merge(m, src)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) XXX_Size() int {
return xxx_messageInfo_CommunityRequestToJoinResponse.Size(m)
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityRequestToJoinResponse.DiscardUnknown(m)
}
2021-01-11 10:32:51 +00:00
var xxx_messageInfo_CommunityRequestToJoinResponse proto.InternalMessageInfo
func (m *CommunityRequestToJoinResponse) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) GetCommunity() *CommunityDescription {
if m != nil {
return m.Community
}
return nil
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) GetAccepted() bool {
if m != nil {
return m.Accepted
}
return false
}
2021-01-11 10:32:51 +00:00
func (m *CommunityRequestToJoinResponse) GetGrant() []byte {
if m != nil {
return m.Grant
}
return nil
}
func (m *CommunityRequestToJoinResponse) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
func (m *CommunityRequestToJoinResponse) GetMagnetUri() string {
if m != nil {
return m.MagnetUri
}
return ""
}
type CommunityRequestToLeave struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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}
}
func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityRequestToLeave.Unmarshal(m, b)
}
func (m *CommunityRequestToLeave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityRequestToLeave.Marshal(b, m, deterministic)
}
func (m *CommunityRequestToLeave) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityRequestToLeave.Merge(m, src)
}
func (m *CommunityRequestToLeave) XXX_Size() int {
return xxx_messageInfo_CommunityRequestToLeave.Size(m)
}
func (m *CommunityRequestToLeave) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityRequestToLeave.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityRequestToLeave proto.InternalMessageInfo
func (m *CommunityRequestToLeave) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *CommunityRequestToLeave) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
type CommunityMessageArchiveMagnetlink struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMessageArchiveMagnetlink{} }
func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) }
func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {}
func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{15}
}
func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Unmarshal(m, b)
}
func (m *CommunityMessageArchiveMagnetlink) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Marshal(b, m, deterministic)
}
func (m *CommunityMessageArchiveMagnetlink) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityMessageArchiveMagnetlink.Merge(m, src)
}
func (m *CommunityMessageArchiveMagnetlink) XXX_Size() int {
return xxx_messageInfo_CommunityMessageArchiveMagnetlink.Size(m)
}
func (m *CommunityMessageArchiveMagnetlink) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityMessageArchiveMagnetlink.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityMessageArchiveMagnetlink proto.InternalMessageInfo
func (m *CommunityMessageArchiveMagnetlink) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *CommunityMessageArchiveMagnetlink) GetMagnetUri() string {
if m != nil {
return m.MagnetUri
}
return ""
}
type WakuMessage struct {
Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"`
Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Topic []byte `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"`
Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"`
Padding []byte `protobuf:"bytes,5,opt,name=padding,proto3" json:"padding,omitempty"`
Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
ThirdPartyId string `protobuf:"bytes,7,opt,name=thirdPartyId,proto3" json:"thirdPartyId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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}
}
func (m *WakuMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WakuMessage.Unmarshal(m, b)
}
func (m *WakuMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WakuMessage.Marshal(b, m, deterministic)
}
func (m *WakuMessage) XXX_Merge(src proto.Message) {
xxx_messageInfo_WakuMessage.Merge(m, src)
}
func (m *WakuMessage) XXX_Size() int {
return xxx_messageInfo_WakuMessage.Size(m)
}
func (m *WakuMessage) XXX_DiscardUnknown() {
xxx_messageInfo_WakuMessage.DiscardUnknown(m)
}
var xxx_messageInfo_WakuMessage proto.InternalMessageInfo
func (m *WakuMessage) GetSig() []byte {
if m != nil {
return m.Sig
}
return nil
}
func (m *WakuMessage) GetTimestamp() uint64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *WakuMessage) GetTopic() []byte {
if m != nil {
return m.Topic
}
return nil
}
func (m *WakuMessage) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
func (m *WakuMessage) GetPadding() []byte {
if m != nil {
return m.Padding
}
return nil
}
func (m *WakuMessage) GetHash() []byte {
if m != nil {
return m.Hash
}
return nil
}
func (m *WakuMessage) GetThirdPartyId() string {
if m != nil {
return m.ThirdPartyId
}
return ""
}
type WakuMessageArchiveMetadata struct {
Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
From uint64 `protobuf:"varint,2,opt,name=from,proto3" json:"from,omitempty"`
To uint64 `protobuf:"varint,3,opt,name=to,proto3" json:"to,omitempty"`
ContentTopic [][]byte `protobuf:"bytes,4,rep,name=contentTopic,proto3" json:"contentTopic,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMetadata{} }
func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveMetadata) ProtoMessage() {}
func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{17}
}
func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WakuMessageArchiveMetadata.Unmarshal(m, b)
}
func (m *WakuMessageArchiveMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WakuMessageArchiveMetadata.Marshal(b, m, deterministic)
}
func (m *WakuMessageArchiveMetadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_WakuMessageArchiveMetadata.Merge(m, src)
}
func (m *WakuMessageArchiveMetadata) XXX_Size() int {
return xxx_messageInfo_WakuMessageArchiveMetadata.Size(m)
}
func (m *WakuMessageArchiveMetadata) XXX_DiscardUnknown() {
xxx_messageInfo_WakuMessageArchiveMetadata.DiscardUnknown(m)
}
var xxx_messageInfo_WakuMessageArchiveMetadata proto.InternalMessageInfo
func (m *WakuMessageArchiveMetadata) GetVersion() uint32 {
if m != nil {
return m.Version
}
return 0
}
func (m *WakuMessageArchiveMetadata) GetFrom() uint64 {
if m != nil {
return m.From
}
return 0
}
func (m *WakuMessageArchiveMetadata) GetTo() uint64 {
if m != nil {
return m.To
}
return 0
}
func (m *WakuMessageArchiveMetadata) GetContentTopic() [][]byte {
if m != nil {
return m.ContentTopic
}
return nil
}
type WakuMessageArchive struct {
Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
Messages []*WakuMessage `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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}
}
func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WakuMessageArchive.Unmarshal(m, b)
}
func (m *WakuMessageArchive) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WakuMessageArchive.Marshal(b, m, deterministic)
}
func (m *WakuMessageArchive) XXX_Merge(src proto.Message) {
xxx_messageInfo_WakuMessageArchive.Merge(m, src)
}
func (m *WakuMessageArchive) XXX_Size() int {
return xxx_messageInfo_WakuMessageArchive.Size(m)
}
func (m *WakuMessageArchive) XXX_DiscardUnknown() {
xxx_messageInfo_WakuMessageArchive.DiscardUnknown(m)
}
var xxx_messageInfo_WakuMessageArchive proto.InternalMessageInfo
func (m *WakuMessageArchive) GetVersion() uint32 {
if m != nil {
return m.Version
}
return 0
}
func (m *WakuMessageArchive) GetMetadata() *WakuMessageArchiveMetadata {
if m != nil {
return m.Metadata
}
return nil
}
func (m *WakuMessageArchive) GetMessages() []*WakuMessage {
if m != nil {
return m.Messages
}
return nil
}
type WakuMessageArchiveIndexMetadata struct {
Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
Metadata *WakuMessageArchiveMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
Offset uint64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
Size uint64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"`
Padding uint64 `protobuf:"varint,5,opt,name=padding,proto3" json:"padding,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArchiveIndexMetadata{} }
func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {}
func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{19}
}
func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Unmarshal(m, b)
}
func (m *WakuMessageArchiveIndexMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Marshal(b, m, deterministic)
}
func (m *WakuMessageArchiveIndexMetadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_WakuMessageArchiveIndexMetadata.Merge(m, src)
}
func (m *WakuMessageArchiveIndexMetadata) XXX_Size() int {
return xxx_messageInfo_WakuMessageArchiveIndexMetadata.Size(m)
}
func (m *WakuMessageArchiveIndexMetadata) XXX_DiscardUnknown() {
xxx_messageInfo_WakuMessageArchiveIndexMetadata.DiscardUnknown(m)
}
var xxx_messageInfo_WakuMessageArchiveIndexMetadata proto.InternalMessageInfo
func (m *WakuMessageArchiveIndexMetadata) GetVersion() uint32 {
if m != nil {
return m.Version
}
return 0
}
func (m *WakuMessageArchiveIndexMetadata) GetMetadata() *WakuMessageArchiveMetadata {
if m != nil {
return m.Metadata
}
return nil
}
func (m *WakuMessageArchiveIndexMetadata) GetOffset() uint64 {
if m != nil {
return m.Offset
}
return 0
}
func (m *WakuMessageArchiveIndexMetadata) GetSize() uint64 {
if m != nil {
return m.Size
}
return 0
}
func (m *WakuMessageArchiveIndexMetadata) GetPadding() uint64 {
if m != nil {
return m.Padding
}
return 0
}
type WakuMessageArchiveIndex struct {
Archives map[string]*WakuMessageArchiveIndexMetadata `protobuf:"bytes,1,rep,name=archives,proto3" json:"archives,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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}
}
func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WakuMessageArchiveIndex.Unmarshal(m, b)
}
func (m *WakuMessageArchiveIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WakuMessageArchiveIndex.Marshal(b, m, deterministic)
}
func (m *WakuMessageArchiveIndex) XXX_Merge(src proto.Message) {
xxx_messageInfo_WakuMessageArchiveIndex.Merge(m, src)
}
func (m *WakuMessageArchiveIndex) XXX_Size() int {
return xxx_messageInfo_WakuMessageArchiveIndex.Size(m)
}
func (m *WakuMessageArchiveIndex) XXX_DiscardUnknown() {
xxx_messageInfo_WakuMessageArchiveIndex.DiscardUnknown(m)
}
var xxx_messageInfo_WakuMessageArchiveIndex proto.InternalMessageInfo
func (m *WakuMessageArchiveIndex) GetArchives() map[string]*WakuMessageArchiveIndexMetadata {
if m != nil {
return m.Archives
}
return nil
}
func init() {
2021-01-11 10:32:51 +00:00
proto.RegisterEnum("protobuf.CommunityMember_Roles", CommunityMember_Roles_name, CommunityMember_Roles_value)
proto.RegisterEnum("protobuf.CommunityPermissions_Access", CommunityPermissions_Access_name, CommunityPermissions_Access_value)
proto.RegisterEnum("protobuf.CommunityTokenPermission_Type", CommunityTokenPermission_Type_name, CommunityTokenPermission_Type_value)
proto.RegisterType((*Grant)(nil), "protobuf.Grant")
proto.RegisterType((*CommunityMember)(nil), "protobuf.CommunityMember")
proto.RegisterType((*CommunityTokenMetadata)(nil), "protobuf.CommunityTokenMetadata")
proto.RegisterMapType((map[uint64]string)(nil), "protobuf.CommunityTokenMetadata.ContractAddressesEntry")
proto.RegisterType((*CommunityPermissions)(nil), "protobuf.CommunityPermissions")
proto.RegisterType((*TokenCriteria)(nil), "protobuf.TokenCriteria")
proto.RegisterMapType((map[uint64]string)(nil), "protobuf.TokenCriteria.ContractAddressesEntry")
proto.RegisterType((*CommunityTokenPermission)(nil), "protobuf.CommunityTokenPermission")
proto.RegisterType((*CommunityDescription)(nil), "protobuf.CommunityDescription")
proto.RegisterMapType((map[string]*CommunityCategory)(nil), "protobuf.CommunityDescription.CategoriesEntry")
proto.RegisterMapType((map[string]*CommunityChat)(nil), "protobuf.CommunityDescription.ChatsEntry")
proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityDescription.MembersEntry")
proto.RegisterMapType((map[string]*CommunityTokenPermission)(nil), "protobuf.CommunityDescription.TokenPermissionsEntry")
proto.RegisterType((*CommunityAdminSettings)(nil), "protobuf.CommunityAdminSettings")
proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat")
proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry")
proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory")
proto.RegisterType((*CommunityInvitation)(nil), "protobuf.CommunityInvitation")
2021-01-11 10:32:51 +00:00
proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin")
feat: add verified wallet accounts to community requests This commit extends the `CommunityRequestToJoin` with `RevealedAddresses` which represent wallet addresses and signatures provided by the sender, to proof a community owner ownership of those wallet addresses. **Note: This only works with keystore files maanged by status-go** At high level, the follwing happens: 1. User instructs Status to send a request to join to a community. By adding a password hash to the instruction, Status will try to unlock the users keystore and verify each wallet account. 2. For every verified wallet account, a signature is created for the following payload, using each wallet's private key ``` keccak256(chatkey + communityID + requestToJoinID) ``` A map of walletAddress->signature is then attached to the community request to join, which will be sent to the community owner 3. The owner node receives the request, and if the community requires users to hold tokens to become a member, it will check and verify whether the given wallet addresses are indeed owned by the sender. If any signature provided by the request cannot be recovered, the request is immediately declined by the owner. 4. The verified addresses are then added to the owner node's database such that, once the request should be accepted, the addresses can be used to check on chain whether they own the necessary funds to fulfill the community's permissions The checking of required funds is **not** part of this commit. It will be added in a follow-up commit.
2023-03-17 09:19:40 +00:00
proto.RegisterMapType((map[string][]byte)(nil), "protobuf.CommunityRequestToJoin.RevealedAddressesEntry")
proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin")
2021-01-11 10:32:51 +00:00
proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse")
proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave")
proto.RegisterType((*CommunityMessageArchiveMagnetlink)(nil), "protobuf.CommunityMessageArchiveMagnetlink")
proto.RegisterType((*WakuMessage)(nil), "protobuf.WakuMessage")
proto.RegisterType((*WakuMessageArchiveMetadata)(nil), "protobuf.WakuMessageArchiveMetadata")
proto.RegisterType((*WakuMessageArchive)(nil), "protobuf.WakuMessageArchive")
proto.RegisterType((*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndexMetadata")
proto.RegisterType((*WakuMessageArchiveIndex)(nil), "protobuf.WakuMessageArchiveIndex")
proto.RegisterMapType((map[string]*WakuMessageArchiveIndexMetadata)(nil), "protobuf.WakuMessageArchiveIndex.ArchivesEntry")
}
func init() {
proto.RegisterFile("communities.proto", fileDescriptor_f937943d74c1cd8b)
}
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,
}